Tool Call Semantics Alignment

Nucleic-Session: B5E370C3-4764-47E1-95D3-A36B4AAB8AC6
This commit is contained in:
Nucleic
2026-06-26 20:25:24 -07:00
parent 8d8be78a6a
commit e674508e59
@@ -15,9 +15,21 @@ struct TranscriptRow: View {
case .thinking(let text):
ThinkingRow(text: text)
case .tool(let group):
ToolGroupRow(group: group)
case .orchestration(let group):
OrchestrationCard(group: group)
// A lone subagent spawn reads as its own gold subagent card (type, task, status, and
// its nested activity on expand); every other tool is a plain collapsible card.
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):
InfoLine(icon: "play.circle", text: "Session started · \(modelLabel(model))", detail: cwd)
case .usage(let usage):