diff --git a/src/background/index.ts b/src/background/index.ts index 4cdff50..bb53e8c 100644 --- a/src/background/index.ts +++ b/src/background/index.ts @@ -152,14 +152,22 @@ async function handleBrokerMessage(msg: BrokerMessage): Promise { switch (msg.type) { case 'welcome': case 'text_delta': - case 'round': - case 'done': - case 'error': case 'approval_request': case 'tool_result_event': case 'mcp_status': sendToPanel(msg); 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': await executeForBroker(msg.callId, msg.name, msg.input); break; @@ -1662,7 +1670,15 @@ chrome.runtime.onConnect.addListener((port) => { sendToPanel({ type: 'log', level: 'warn', 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; } diff --git a/src/shared/protocol.ts b/src/shared/protocol.ts index 04b8e56..436d405 100644 --- a/src/shared/protocol.ts +++ b/src/shared/protocol.ts @@ -24,6 +24,8 @@ export interface ExtUserMessage { text: string; chatId?: string; maxRounds?: number; + /** URL des Ziel-Tabs — damit der Broker kontextspezifische Prompts einbauen kann. */ + url?: string; } /** Tool execution result (extension ran a browser tool) */