fix: make tool progress live-only (#38217)

This commit is contained in:
Kit Langton 2026-07-22 10:40:07 -04:00 committed by GitHub
commit 5a9ed4d350
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
24 changed files with 337 additions and 89 deletions

View file

@ -837,8 +837,9 @@ export function createSubagentTracker(input: SubagentTrackerInput): SubagentTrac
? {
status: "error",
input: part && part.state.status !== "streaming" ? part.state.input : {},
structured: part && part.state.status !== "streaming" ? part.state.structured : {},
content: part && part.state.status !== "streaming" ? part.state.content : [],
structured:
event.data.metadata ?? (part && part.state.status !== "streaming" ? part.state.structured : {}),
content: event.data.content ?? (part && part.state.status !== "streaming" ? part.state.content : []),
error: event.data.error,
result: event.data.result,
}
@ -957,15 +958,16 @@ export function createSubagentTracker(input: SubagentTrackerInput): SubagentTrac
if (pendingCalls.has(key)) pendingCalls.set(key, event.data.input)
return
}
if (event.type === "session.tool.failed") {
pendingCalls.delete(sourceKey(event.data.assistantMessageID, event.data.callID))
if (
event.type !== "session.tool.progress" &&
event.type !== "session.tool.success" &&
event.type !== "session.tool.failed"
)
return
}
if (event.type !== "session.tool.progress" && event.type !== "session.tool.success") return
const key = sourceKey(event.data.assistantMessageID, event.data.callID)
const pending = pendingCalls.get(key)
if (event.type === "session.tool.success") pendingCalls.delete(key)
const found = childSessionID(record(event.data.structured))
if (event.type !== "session.tool.progress") pendingCalls.delete(key)
const found = childSessionID(record(event.type === "session.tool.failed" ? event.data.metadata : event.data.structured))
if (!found) return
const child = admitChild(found.sessionID)
if (!child) return

View file

@ -1084,8 +1084,9 @@ export async function createSessionTransport(input: StreamInput): Promise<Sessio
? {
status: "error",
input: part && part.state.status !== "streaming" ? part.state.input : {},
structured: part && part.state.status !== "streaming" ? part.state.structured : {},
content: part && part.state.status !== "streaming" ? part.state.content : [],
structured:
event.data.metadata ?? (part && part.state.status !== "streaming" ? part.state.structured : {}),
content: event.data.content ?? (part && part.state.status !== "streaming" ? part.state.content : []),
error: event.data.error,
result: event.data.result,
}