diff --git a/NucleicRemote/NucleicRemote/Views/Transcript/SandboxToolDisplay.swift b/NucleicRemote/NucleicRemote/Views/Transcript/SandboxToolDisplay.swift index 004bdc0..89228e3 100644 --- a/NucleicRemote/NucleicRemote/Views/Transcript/SandboxToolDisplay.swift +++ b/NucleicRemote/NucleicRemote/Views/Transcript/SandboxToolDisplay.swift @@ -2,9 +2,10 @@ import Foundation import NucleicProtocol /// Presentation for Nucleic's own sandbox-escape tools — the macOS/Linux VM pair, their -/// computer-use siblings, and `linux_container` — so a remote transcript reads the same way the -/// Mac's does: "macOS VM · $ swift build" rather than the raw `mcp__nucleic__mac_vm_exec` wire -/// name followed by a JSON gist. +/// computer-use siblings, and `linux_container` — plus the shell tool, whose wire name is still +/// Claude Code's `Bash` but which runs nash (the Nucleic agent shell) — so a remote transcript +/// reads the same way the Mac's does: "macOS VM · $ swift build" rather than the raw +/// `mcp__nucleic__mac_vm_exec` wire name followed by a JSON gist. /// /// The mobile echo of `NucleicCore/SandboxToolDisplay.swift`, trimmed to what this app shows (a /// label, a glyph, a one-line body — iOS has no per-tool working row or tool-block verb). It @@ -27,6 +28,9 @@ enum SandboxToolDisplay { /// file doesn't speak for, so the caller keeps the tool name unchanged. static func label(for toolName: String) -> String? { switch bareName(toolName) { + // The wire name is Claude Code's, but the shell behind it is nash. + case "Bash": "Nash" + case "BashOutput": "Nash output" case "mac_vm_exec", "mac_vm_control": "macOS VM" case "mac_vm_computer", "mac_vm_computer_batch": "macOS VM screen" case "mac_vm_clear_notifications": "macOS VM notifications"