diff --git a/.diffex/extensions/prompt-url-widget.ts b/.diffex/extensions/prompt-url-widget.ts index b2de3f94b..0fb462138 100644 --- a/.diffex/extensions/prompt-url-widget.ts +++ b/.diffex/extensions/prompt-url-widget.ts @@ -217,9 +217,9 @@ export default function promptUrlWidgetExtension(pi: ExtensionAPI) { }); }; - pi.on("before_agent_start", async (event, ctx) => { - if (!ctx.hasUI) return; - const match = extractPromptMatch(event.prompt); + pi.on("message_start", async (event, ctx) => { + if (!ctx.hasUI || event.message.role !== "user") return; + const match = extractPromptMatch(getUserText(event.message.content)); if (!match) { return; } @@ -231,7 +231,7 @@ export default function promptUrlWidgetExtension(pi: ExtensionAPI) { rebuildFromSession(ctx); }); - const getUserText = (content: string | { type: string; text?: string }[] | undefined): string => { + function getUserText(content: string | { type: string; text?: string }[] | undefined): string { if (!content) return ""; if (typeof content === "string") return content; return ( @@ -240,7 +240,7 @@ export default function promptUrlWidgetExtension(pi: ExtensionAPI) { .map((block) => block.text) .join("\n") ?? "" ); - }; + } const rebuildFromSession = (ctx: ExtensionContext) => { if (!ctx.hasUI) return; diff --git a/packages/coding-agent/test/suite/subagent-registration.test.ts b/packages/coding-agent/test/suite/subagent-registration.test.ts index 3c0f0d3da..9ab6ca8f4 100644 --- a/packages/coding-agent/test/suite/subagent-registration.test.ts +++ b/packages/coding-agent/test/suite/subagent-registration.test.ts @@ -41,7 +41,7 @@ const INCOMPATIBLE_PARENT_HOOKS = [ "message_end", ] as const; type IncompatibleParentHook = (typeof INCOMPATIBLE_PARENT_HOOKS)[number]; -type ObservationParentHook = "agent_start" | "after_provider_response" | "tool_execution_start"; +type ObservationParentHook = "agent_start" | "after_provider_response" | "message_start" | "tool_execution_start"; function registerParentHook(api: ExtensionAPI, hook: IncompatibleParentHook | ObservationParentHook): void { switch (hook) { @@ -81,6 +81,9 @@ function registerParentHook(api: ExtensionAPI, hook: IncompatibleParentHook | Ob case "after_provider_response": api.on("after_provider_response", () => {}); break; + case "message_start": + api.on("message_start", () => {}); + break; case "tool_execution_start": api.on("tool_execution_start", () => {}); break; @@ -389,6 +392,7 @@ describe("root subagent tool registration", () => { const observed = await createPolicyRoot(harness, [ "agent_start", "after_provider_response", + "message_start", "tool_execution_start", ]); await getActiveTool(observed.session, "spawn_agent").execute("spawn", { name: "worker", task: "task" });