Tool Call Semantics Alignment
Nucleic-Session: B5E370C3-4764-47E1-95D3-A36B4AAB8AC6
This commit is contained in:
@@ -15,9 +15,21 @@ struct TranscriptRow: View {
|
|||||||
case .thinking(let text):
|
case .thinking(let text):
|
||||||
ThinkingRow(text: text)
|
ThinkingRow(text: text)
|
||||||
case .tool(let group):
|
case .tool(let group):
|
||||||
ToolGroupRow(group: group)
|
// A lone subagent spawn reads as its own gold subagent card (type, task, status, and
|
||||||
case .orchestration(let group):
|
// its nested activity on expand); every other tool is a plain collapsible card.
|
||||||
OrchestrationCard(group: group)
|
if group.isOrchestration {
|
||||||
|
SubagentCard(group: group)
|
||||||
|
} else {
|
||||||
|
ToolCallCard(group: group)
|
||||||
|
}
|
||||||
|
case .toolBlock(let groups):
|
||||||
|
// A run made entirely of subagent spawns is a multi-agent fan-out — the gold
|
||||||
|
// orchestration card; any other run is one contiguous tool block.
|
||||||
|
if groups.allSatisfy(\.isOrchestration) {
|
||||||
|
OrchestrationCard(groups: groups)
|
||||||
|
} else {
|
||||||
|
ToolBlockCard(groups: groups)
|
||||||
|
}
|
||||||
case .sessionStarted(let model, let cwd):
|
case .sessionStarted(let model, let cwd):
|
||||||
InfoLine(icon: "play.circle", text: "Session started · \(modelLabel(model))", detail: cwd)
|
InfoLine(icon: "play.circle", text: "Session started · \(modelLabel(model))", detail: cwd)
|
||||||
case .usage(let usage):
|
case .usage(let usage):
|
||||||
|
|||||||
Reference in New Issue
Block a user