diff --git a/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx b/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx index 1503e37d99e..1c91c6afcb0 100644 --- a/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx +++ b/packages/opencode/src/cli/cmd/tui/routes/session/index.tsx @@ -1367,7 +1367,7 @@ function ToolPart(props: { last: boolean; part: ToolPart; message: AssistantMess - + @@ -1647,11 +1647,16 @@ function Task(props: ToolProps) { const current = createMemo(() => props.metadata.summary?.findLast((x) => x.state.status !== "pending")) + const agentName = createMemo(() => { + const input = props.input as Record + return (input.subagent_type ?? input.agent ?? input.category ?? props.tool ?? "unknown") as string + }) + return ( - + navigate({ type: "session", sessionID: props.metadata.sessionId! }) @@ -1661,7 +1666,8 @@ function Task(props: ToolProps) { > - {props.input.description} ({props.metadata.summary?.length} toolcalls) + {props.input.description} + ({props.metadata.summary?.length} toolcalls) @@ -1680,10 +1686,10 @@ function Task(props: ToolProps) { - {Locale.titlecase(props.input.subagent_type ?? "unknown")} Task "{props.input.description}" + {Locale.titlecase(agentName())} Task "{props.input.description}" diff --git a/packages/opencode/src/tool/registry.ts b/packages/opencode/src/tool/registry.ts index db515284741..40e772882a2 100644 --- a/packages/opencode/src/tool/registry.ts +++ b/packages/opencode/src/tool/registry.ts @@ -63,11 +63,24 @@ export namespace ToolRegistry { parameters: z.object(def.args), description: def.description, execute: async (args, ctx) => { - const result = await def.execute(args as any, ctx) + let capturedTitle = "" + let capturedMetadata: Record = {} + const wrappedCtx = { + ...ctx, + metadata: (input: { title?: string; metadata?: Record }) => { + if (input.title) capturedTitle = input.title + if (input.metadata) capturedMetadata = { ...capturedMetadata, ...input.metadata } + return ctx.metadata(input) + }, + } + const result = await def.execute( + args as Record, + wrappedCtx as unknown as Parameters[1], + ) return { - title: "", + title: capturedTitle, output: result, - metadata: {}, + metadata: capturedMetadata, } }, }),