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.
This commit is contained in:
2026-08-10 16:27:40 +02:00
parent 2cf9079ac8
commit d357bc58f5
+18 -1
View File
@@ -1754,14 +1754,21 @@ export default function agyExtension(pi: ExtensionAPI) {
} }
const transcript = tr.text; 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 // Interpreta con Gemini (testo) usando il contesto della conversazione
ctx.ui.notify("Interpretazione con Gemini...", "info"); ctx.ui.notify("Interpretazione con Gemini...", "info");
const context = getConversationContext(ctx); const context = getConversationContext(ctx);
const res = await executeAgy({ const res = await executeAgy({
prompt: prompt:
`Ecco la trascrizione di un messaggio vocale dell'utente:\n\n${transcript}` + `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\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, stateless: true,
model: "Gemini 3.6 Flash (Medium)", model: "Gemini 3.6 Flash (Medium)",
yolo: true, yolo: true,
@@ -1770,6 +1777,16 @@ export default function agyExtension(pi: ExtensionAPI) {
const finalText = res.text.trim() || transcript; 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 // Inserisci il risultato come prompt su pi
if (ctx.isIdle()) { if (ctx.isIdle()) {
pi.sendUserMessage(finalText); pi.sendUserMessage(finalText);