Certo, Obsidian é um aplicativo Electron que está rodando localmente. Ele usa armazenamento local, então a chave da API permanece no dispositivo do usuário.
Acontece que existe uma solução para o problema do CORS. Eu só testei no meu computador desktop até agora. Além disso, Discourse é ótimo!
O código que postei acima precisou ser modificado para:
import DiscoursePlugin from "./main";
import { requestUrl, TFile } from "obsidian";
//...
const response = await requestUrl({
url: url,
method: "POST",
contentType: "application/json",
body,
headers,
});
//...
A próxima questão será sobre permitir que os usuários solicitem chaves de API de usuário do aplicativo, mas isso é um problema separado.