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:
+18
-1
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user