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,
}
},
}),