fix: Glow im Broker-Modus + Tab-URL in user_message

- handleBrokerMessage: 'round' schaltet notifyGlow(true), 'done'/'error'
  schalten notifyGlow(false). Vorher wurde Glow nur im direct-Modus
  (agent.ts) gesteuert — im Broker-Modus blieb er immer aus.
- ExtUserMessage: url?-Feld ergänzt.
- user_message an Broker: aktuelle Tab-URL wird mitgeschickt, damit
  der Broker kontextspezifische Prompts einbauen kann.
This commit is contained in:
2026-08-10 09:18:20 +02:00
parent ebe7dc72f1
commit 1239abd048
2 changed files with 22 additions and 4 deletions
+20 -4
View File
@@ -152,14 +152,22 @@ async function handleBrokerMessage(msg: BrokerMessage): Promise<void> {
switch (msg.type) { switch (msg.type) {
case 'welcome': case 'welcome':
case 'text_delta': case 'text_delta':
case 'round':
case 'done':
case 'error':
case 'approval_request': case 'approval_request':
case 'tool_result_event': case 'tool_result_event':
case 'mcp_status': case 'mcp_status':
sendToPanel(msg); sendToPanel(msg);
break; break;
case 'round':
// Agent läuft — Glow einschalten
notifyGlow(true);
sendToPanel(msg);
break;
case 'done':
case 'error':
// Agent fertig — Glow ausschalten
notifyGlow(false);
sendToPanel(msg);
break;
case 'tool_call': case 'tool_call':
await executeForBroker(msg.callId, msg.name, msg.input); await executeForBroker(msg.callId, msg.name, msg.input);
break; break;
@@ -1662,7 +1670,15 @@ chrome.runtime.onConnect.addListener((port) => {
sendToPanel({ type: 'log', level: 'warn', sendToPanel({ type: 'log', level: 'warn',
text: `${msg.images.length} Bild(er) ignoriert: Bildanhänge gehen nur im Antrieb "direct".` }); text: `${msg.images.length} Bild(er) ignoriert: Bildanhänge gehen nur im Antrieb "direct".` });
} }
sendToBroker({ type: 'user_message', text: msg.text, maxRounds: msg.maxRounds ?? cfg.maxRounds } satisfies ExtUserMessage); // Aktuelle Tab-URL mitschicken — der Broker baut daraus den Kontext (z.B. Mercedes-Wissen).
let tabUrl: string | undefined;
try {
const id = await currentTabId();
if (typeof id === 'number') {
tabUrl = (await chrome.tabs.get(id).catch(() => null))?.url;
}
} catch { /* ok */ }
sendToBroker({ type: 'user_message', text: msg.text, maxRounds: msg.maxRounds ?? cfg.maxRounds, url: tabUrl } satisfies ExtUserMessage);
} }
break; break;
} }
+2
View File
@@ -24,6 +24,8 @@ export interface ExtUserMessage {
text: string; text: string;
chatId?: string; chatId?: string;
maxRounds?: number; maxRounds?: number;
/** URL des Ziel-Tabs — damit der Broker kontextspezifische Prompts einbauen kann. */
url?: string;
} }
/** Tool execution result (extension ran a browser tool) */ /** Tool execution result (extension ran a browser tool) */