|
|
@@ -2548,10 +2548,8 @@ function WebSearch(props: ToolProps) {
|
|
|
function Subagent(props: ToolProps) {
|
|
|
const { navigate } = useRoute()
|
|
|
const data = useData()
|
|
|
- const input = createMemo(() => (typeof props.part.state.input === "string" ? {} : props.part.state.input))
|
|
|
- const metadata = createMemo(() => (props.part.state.status === "streaming" ? {} : props.part.state.structured))
|
|
|
- const sessionID = createMemo(() => stringValue(metadata().sessionID) ?? stringValue(metadata().sessionId))
|
|
|
- const description = createMemo(() => stringValue(input().description))
|
|
|
+ const sessionID = createMemo(() => stringValue(props.metadata.sessionID) ?? stringValue(props.metadata.sessionId))
|
|
|
+ const description = createMemo(() => stringValue(props.input.description))
|
|
|
const isRunning = createMemo(() => {
|
|
|
const id = sessionID()
|
|
|
return props.part.state.status === "running" || Boolean(id && data.session.status(id) === "running")
|
|
|
@@ -2569,16 +2567,23 @@ function Subagent(props: ToolProps) {
|
|
|
if (id) navigate({ type: "session", sessionID: id })
|
|
|
}}
|
|
|
status={
|
|
|
- input().background === true || metadata().status === "running" ? (
|
|
|
+ isBackgroundSubagent(props.metadata, props.part.state.status) ? (
|
|
|
<StatusBadge>Background</StatusBadge>
|
|
|
) : undefined
|
|
|
}
|
|
|
>
|
|
|
- {`${Locale.titlecase(stringValue(input().agent) ?? stringValue(input().subagent_type) ?? "General")} Subagent — ${description() ?? "Subagent"}`}
|
|
|
+ {`${Locale.titlecase(stringValue(props.input.agent) ?? stringValue(props.input.subagent_type) ?? "General")} Subagent — ${description() ?? "Subagent"}`}
|
|
|
</InlineTool>
|
|
|
)
|
|
|
}
|
|
|
|
|
|
+export function isBackgroundSubagent(
|
|
|
+ metadata: Record<string, unknown>,
|
|
|
+ status: SessionMessageAssistantTool["state"]["status"],
|
|
|
+) {
|
|
|
+ return status === "completed" && metadata.status === "running"
|
|
|
+}
|
|
|
+
|
|
|
export function formatSubagentRetry(attempt: number, message: string) {
|
|
|
return `Retrying (attempt ${attempt}) · ${message}`
|
|
|
}
|