From d357bc58f5428a73cc2d6a407e2d07721fb42ba9 Mon Sep 17 00:00:00 2001 From: Matteo Benedetto Date: Mon, 10 Aug 2026 16:27:40 +0200 Subject: [PATCH] feat: combina il testo del campo editor con la trascrizione audio (F12) Quando l'utente scrive testo nel campo input prima di avviare la registrazione, il flusso /agy:record ora legge il testo via ctx.ui.getEditorText() e lo include nel prompt di interpretazione inviato a Gemini, insieme alla trascrizione audio. Il testo viene svuotato dopo (setEditorText('')) per evitare reinvii duplicati. Nessun testo nel campo = comportamento invariato. --- extensions/index.ts | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/extensions/index.ts b/extensions/index.ts index f452ed5..5060160 100644 --- a/extensions/index.ts +++ b/extensions/index.ts @@ -1754,14 +1754,21 @@ export default function agyExtension(pi: ExtensionAPI) { } const transcript = tr.text; + // Legge il testo scritto a mano nel campo editor prima della registrazione + // e lo combina con la trascrizione audio (comportamento "multimodale"). + const editorText = (ctx.ui.getEditorText?.() ?? "").trim(); + // Interpreta con Gemini (testo) usando il contesto della conversazione ctx.ui.notify("Interpretazione con Gemini...", "info"); const context = getConversationContext(ctx); const res = await executeAgy({ prompt: `Ecco la trascrizione di un messaggio vocale dell'utente:\n\n${transcript}` + + (editorText + ? `\n\nTesto scritto dall'utente nel campo di input (da combinare con la voce):\n${editorText}` + : "") + `\n\nContesto della conversazione:\n${context || "(nessuno)"}` + - `\n\nRestituisci la trascrizione corretta e una breve interpretazione/risposta.`, + `\n\nRestituisci la trascrizione corretta e una breve interpretazione/risposta che integri sia la voce sia il testo scritto dell'utente.`, stateless: true, model: "Gemini 3.6 Flash (Medium)", yolo: true, @@ -1770,6 +1777,16 @@ export default function agyExtension(pi: ExtensionAPI) { const finalText = res.text.trim() || transcript; + // Il testo dell'editor รจ stato consumato nel messaggio vocale: lo svuota + // per evitare che venga reinviato due volte. + if (editorText) { + try { + ctx.ui.setEditorText?.(""); + } catch { + /* ignora */ + } + } + // Inserisci il risultato come prompt su pi if (ctx.isIdle()) { pi.sendUserMessage(finalText);