@deepseek-harness-tui/dsh-tui 0.13.0 → 0.14.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +85 -5
- package/assets/claude-girl/claude-girl-happy.png +0 -0
- package/assets/claude-girl/claude-girl.png +0 -0
- package/assets/codex-girl/codex-girl-happy.png +0 -0
- package/assets/codex-girl/codex-girl.png +0 -0
- package/bin/dsh-tui.js +104 -18
- package/cordis.patch.yml +2 -0
- package/cordis.yml +2 -0
- package/guide/dsh-tui-guide/SKILL.md +4 -2
- package/guide/dsh-tui-guide/claude-backend.en.md +203 -0
- package/guide/dsh-tui-guide/claude-backend.md +161 -0
- package/guide/dsh-tui-guide/codex-backend.en.md +297 -0
- package/guide/dsh-tui-guide/codex-backend.md +257 -0
- package/guide/dsh-tui-guide/configuration.en.md +9 -2
- package/guide/dsh-tui-guide/configuration.md +9 -2
- package/guide/dsh-tui-guide/interaction.en.md +169 -27
- package/guide/dsh-tui-guide/interaction.md +115 -17
- package/guide/dsh-tui-guide/themes.en.md +24 -2
- package/guide/dsh-tui-guide/themes.md +21 -2
- package/guide/dsh-tui-guide/user-guide.en.md +38 -23
- package/guide/dsh-tui-guide/user-guide.md +22 -11
- package/guide/dsh-tui-guide/vscode.en.md +1 -0
- package/guide/dsh-tui-guide/vscode.md +1 -0
- package/lib/settings.json +139 -6
- package/lib/types/adapter/channel/state.d.ts.map +1 -1
- package/lib/types/adapter/channel/state.js +1 -0
- package/lib/types/adapter/channel/ui-policy.d.ts +17 -2
- package/lib/types/adapter/channel/ui-policy.d.ts.map +1 -1
- package/lib/types/adapter/channel/ui-policy.js +29 -0
- package/lib/types/adapter/channel/ui.d.ts.map +1 -1
- package/lib/types/adapter/channel/ui.js +45 -5
- package/lib/types/adapter/ports/channel-catalog.d.ts +7 -0
- package/lib/types/adapter/ports/channel-catalog.d.ts.map +1 -1
- package/lib/types/adapter/ports/channel-display.d.ts +7 -1
- package/lib/types/adapter/ports/channel-display.d.ts.map +1 -1
- package/lib/types/adapter/ports/channel-session.d.ts +5 -0
- package/lib/types/adapter/ports/channel-session.d.ts.map +1 -1
- package/lib/types/adapter/ports/channel-settings.d.ts +20 -0
- package/lib/types/adapter/ports/channel-settings.d.ts.map +1 -1
- package/lib/types/adapter/ports/channel-ui.d.ts +183 -6
- package/lib/types/adapter/ports/channel-ui.d.ts.map +1 -1
- package/lib/types/adapter/ports/channel-view.d.ts +477 -13
- package/lib/types/adapter/ports/channel-view.d.ts.map +1 -1
- package/lib/types/agent/backend.d.ts +168 -0
- package/lib/types/agent/backend.d.ts.map +1 -0
- package/lib/types/agent/backend.js +1 -0
- package/lib/types/agent/capabilities.d.ts +461 -0
- package/lib/types/agent/capabilities.d.ts.map +1 -0
- package/lib/types/agent/capabilities.js +1 -0
- package/lib/types/agent/events.d.ts +733 -0
- package/lib/types/agent/events.d.ts.map +1 -0
- package/lib/types/agent/events.js +2 -0
- package/lib/types/agent/index.d.ts +8 -0
- package/lib/types/agent/index.d.ts.map +1 -0
- package/lib/types/agent/index.js +7 -0
- package/lib/types/agent/messages.d.ts +52 -0
- package/lib/types/agent/messages.d.ts.map +1 -0
- package/lib/types/agent/messages.js +91 -0
- package/lib/types/agent/presentation.d.ts +29 -0
- package/lib/types/agent/presentation.d.ts.map +1 -0
- package/lib/types/agent/presentation.js +4 -0
- package/lib/types/agent/refs.d.ts +30 -0
- package/lib/types/agent/refs.d.ts.map +1 -0
- package/lib/types/agent/refs.js +39 -0
- package/lib/types/agent/session.d.ts +78 -0
- package/lib/types/agent/session.d.ts.map +1 -0
- package/lib/types/agent/session.js +1 -0
- package/lib/types/backends/claude/activity.d.ts +53 -0
- package/lib/types/backends/claude/activity.d.ts.map +1 -0
- package/lib/types/backends/claude/activity.js +103 -0
- package/lib/types/backends/claude/auth.d.ts +245 -0
- package/lib/types/backends/claude/auth.d.ts.map +1 -0
- package/lib/types/backends/claude/auth.js +503 -0
- package/lib/types/backends/claude/backend.d.ts +32 -0
- package/lib/types/backends/claude/backend.d.ts.map +1 -0
- package/lib/types/backends/claude/backend.js +296 -0
- package/lib/types/backends/claude/catalog.d.ts +17 -0
- package/lib/types/backends/claude/catalog.d.ts.map +1 -0
- package/lib/types/backends/claude/catalog.js +94 -0
- package/lib/types/backends/claude/channels.d.ts +63 -0
- package/lib/types/backends/claude/channels.d.ts.map +1 -0
- package/lib/types/backends/claude/channels.js +275 -0
- package/lib/types/backends/claude/contract.d.ts +37 -0
- package/lib/types/backends/claude/contract.d.ts.map +1 -0
- package/lib/types/backends/claude/contract.js +46 -0
- package/lib/types/backends/claude/controls.d.ts +134 -0
- package/lib/types/backends/claude/controls.d.ts.map +1 -0
- package/lib/types/backends/claude/controls.js +425 -0
- package/lib/types/backends/claude/dialogs.d.ts +62 -0
- package/lib/types/backends/claude/dialogs.d.ts.map +1 -0
- package/lib/types/backends/claude/dialogs.js +253 -0
- package/lib/types/backends/claude/flag-settings.d.ts +12 -0
- package/lib/types/backends/claude/flag-settings.d.ts.map +1 -0
- package/lib/types/backends/claude/flag-settings.js +49 -0
- package/lib/types/backends/claude/images.d.ts +49 -0
- package/lib/types/backends/claude/images.d.ts.map +1 -0
- package/lib/types/backends/claude/images.js +94 -0
- package/lib/types/backends/claude/index.d.ts +5 -0
- package/lib/types/backends/claude/index.d.ts.map +1 -0
- package/lib/types/backends/claude/index.js +4 -0
- package/lib/types/backends/claude/install.d.ts +15 -0
- package/lib/types/backends/claude/install.d.ts.map +1 -0
- package/lib/types/backends/claude/install.js +91 -0
- package/lib/types/backends/claude/modelEnv.d.ts +64 -0
- package/lib/types/backends/claude/modelEnv.d.ts.map +1 -0
- package/lib/types/backends/claude/modelEnv.js +199 -0
- package/lib/types/backends/claude/narrow.d.ts +10 -0
- package/lib/types/backends/claude/narrow.d.ts.map +1 -0
- package/lib/types/backends/claude/narrow.js +8 -0
- package/lib/types/backends/claude/older-history.d.ts +16 -0
- package/lib/types/backends/claude/older-history.d.ts.map +1 -0
- package/lib/types/backends/claude/older-history.js +101 -0
- package/lib/types/backends/claude/options.d.ts +181 -0
- package/lib/types/backends/claude/options.d.ts.map +1 -0
- package/lib/types/backends/claude/options.js +208 -0
- package/lib/types/backends/claude/permissions.d.ts +83 -0
- package/lib/types/backends/claude/permissions.d.ts.map +1 -0
- package/lib/types/backends/claude/permissions.js +331 -0
- package/lib/types/backends/claude/prefs.d.ts +55 -0
- package/lib/types/backends/claude/prefs.d.ts.map +1 -0
- package/lib/types/backends/claude/prefs.js +150 -0
- package/lib/types/backends/claude/process.d.ts +19 -0
- package/lib/types/backends/claude/process.d.ts.map +1 -0
- package/lib/types/backends/claude/process.js +156 -0
- package/lib/types/backends/claude/replay.d.ts +129 -0
- package/lib/types/backends/claude/replay.d.ts.map +1 -0
- package/lib/types/backends/claude/replay.js +505 -0
- package/lib/types/backends/claude/sdk-warnings.d.ts +23 -0
- package/lib/types/backends/claude/sdk-warnings.d.ts.map +1 -0
- package/lib/types/backends/claude/sdk-warnings.js +55 -0
- package/lib/types/backends/claude/sdk.d.ts +12 -0
- package/lib/types/backends/claude/sdk.d.ts.map +1 -0
- package/lib/types/backends/claude/sdk.js +34 -0
- package/lib/types/backends/claude/send-message.d.ts +54 -0
- package/lib/types/backends/claude/send-message.d.ts.map +1 -0
- package/lib/types/backends/claude/send-message.js +65 -0
- package/lib/types/backends/claude/session/auth.d.ts +47 -0
- package/lib/types/backends/claude/session/auth.d.ts.map +1 -0
- package/lib/types/backends/claude/session/auth.js +226 -0
- package/lib/types/backends/claude/session/channels.d.ts +82 -0
- package/lib/types/backends/claude/session/channels.d.ts.map +1 -0
- package/lib/types/backends/claude/session/channels.js +45 -0
- package/lib/types/backends/claude/session/input.d.ts +16 -0
- package/lib/types/backends/claude/session/input.d.ts.map +1 -0
- package/lib/types/backends/claude/session/input.js +64 -0
- package/lib/types/backends/claude/session/lifecycle.d.ts +6 -0
- package/lib/types/backends/claude/session/lifecycle.d.ts.map +1 -0
- package/lib/types/backends/claude/session/lifecycle.js +852 -0
- package/lib/types/backends/claude/session/store.d.ts +17 -0
- package/lib/types/backends/claude/session/store.d.ts.map +1 -0
- package/lib/types/backends/claude/session/store.js +122 -0
- package/lib/types/backends/claude/session/subagents.d.ts +13 -0
- package/lib/types/backends/claude/session/subagents.d.ts.map +1 -0
- package/lib/types/backends/claude/session/subagents.js +77 -0
- package/lib/types/backends/claude/session/types.d.ts +89 -0
- package/lib/types/backends/claude/session/types.d.ts.map +1 -0
- package/lib/types/backends/claude/session/types.js +1 -0
- package/lib/types/backends/claude/session.d.ts +4 -0
- package/lib/types/backends/claude/session.d.ts.map +1 -0
- package/lib/types/backends/claude/session.js +2 -0
- package/lib/types/backends/claude/side-query.d.ts +34 -0
- package/lib/types/backends/claude/side-query.d.ts.map +1 -0
- package/lib/types/backends/claude/side-query.js +116 -0
- package/lib/types/backends/claude/task-output.d.ts +13 -0
- package/lib/types/backends/claude/task-output.d.ts.map +1 -0
- package/lib/types/backends/claude/task-output.js +101 -0
- package/lib/types/backends/claude/tools.d.ts +45 -0
- package/lib/types/backends/claude/tools.d.ts.map +1 -0
- package/lib/types/backends/claude/tools.js +231 -0
- package/lib/types/backends/claude/transcript-file.d.ts +41 -0
- package/lib/types/backends/claude/transcript-file.d.ts.map +1 -0
- package/lib/types/backends/claude/transcript-file.js +195 -0
- package/lib/types/backends/claude/translate/attempts.d.ts +33 -0
- package/lib/types/backends/claude/translate/attempts.d.ts.map +1 -0
- package/lib/types/backends/claude/translate/attempts.js +243 -0
- package/lib/types/backends/claude/translate/content.d.ts +33 -0
- package/lib/types/backends/claude/translate/content.d.ts.map +1 -0
- package/lib/types/backends/claude/translate/content.js +91 -0
- package/lib/types/backends/claude/translate/core.d.ts +76 -0
- package/lib/types/backends/claude/translate/core.d.ts.map +1 -0
- package/lib/types/backends/claude/translate/core.js +447 -0
- package/lib/types/backends/claude/translate/events.d.ts +9 -0
- package/lib/types/backends/claude/translate/events.d.ts.map +1 -0
- package/lib/types/backends/claude/translate/events.js +77 -0
- package/lib/types/backends/claude/translate/lanes.d.ts +31 -0
- package/lib/types/backends/claude/translate/lanes.d.ts.map +1 -0
- package/lib/types/backends/claude/translate/lanes.js +177 -0
- package/lib/types/backends/claude/translate/messages.d.ts +36 -0
- package/lib/types/backends/claude/translate/messages.d.ts.map +1 -0
- package/lib/types/backends/claude/translate/messages.js +202 -0
- package/lib/types/backends/claude/translate/system.d.ts +40 -0
- package/lib/types/backends/claude/translate/system.d.ts.map +1 -0
- package/lib/types/backends/claude/translate/system.js +399 -0
- package/lib/types/backends/claude/translate/tasks.d.ts +19 -0
- package/lib/types/backends/claude/translate/tasks.d.ts.map +1 -0
- package/lib/types/backends/claude/translate/tasks.js +159 -0
- package/lib/types/backends/claude/translate/types.d.ts +114 -0
- package/lib/types/backends/claude/translate/types.d.ts.map +1 -0
- package/lib/types/backends/claude/translate/types.js +1 -0
- package/lib/types/backends/claude/translate.d.ts +9 -0
- package/lib/types/backends/claude/translate.d.ts.map +1 -0
- package/lib/types/backends/claude/translate.js +6 -0
- package/lib/types/backends/codex/auth/external-tokens.d.ts +66 -0
- package/lib/types/backends/codex/auth/external-tokens.d.ts.map +1 -0
- package/lib/types/backends/codex/auth/external-tokens.js +325 -0
- package/lib/types/backends/codex/auth/route.d.ts +14 -0
- package/lib/types/backends/codex/auth/route.d.ts.map +1 -0
- package/lib/types/backends/codex/auth/route.js +52 -0
- package/lib/types/backends/codex/auth/status.d.ts +16 -0
- package/lib/types/backends/codex/auth/status.d.ts.map +1 -0
- package/lib/types/backends/codex/auth/status.js +115 -0
- package/lib/types/backends/codex/backend.d.ts +58 -0
- package/lib/types/backends/codex/backend.d.ts.map +1 -0
- package/lib/types/backends/codex/backend.js +201 -0
- package/lib/types/backends/codex/catalog.d.ts +17 -0
- package/lib/types/backends/codex/catalog.d.ts.map +1 -0
- package/lib/types/backends/codex/catalog.js +128 -0
- package/lib/types/backends/codex/channels.d.ts +59 -0
- package/lib/types/backends/codex/channels.d.ts.map +1 -0
- package/lib/types/backends/codex/channels.js +274 -0
- package/lib/types/backends/codex/contract.d.ts +46 -0
- package/lib/types/backends/codex/contract.d.ts.map +1 -0
- package/lib/types/backends/codex/contract.js +80 -0
- package/lib/types/backends/codex/detect.d.ts +14 -0
- package/lib/types/backends/codex/detect.d.ts.map +1 -0
- package/lib/types/backends/codex/detect.js +90 -0
- package/lib/types/backends/codex/index.d.ts +6 -0
- package/lib/types/backends/codex/index.d.ts.map +1 -0
- package/lib/types/backends/codex/index.js +5 -0
- package/lib/types/backends/codex/modes.d.ts +16 -0
- package/lib/types/backends/codex/modes.d.ts.map +1 -0
- package/lib/types/backends/codex/modes.js +49 -0
- package/lib/types/backends/codex/narrow.d.ts +20 -0
- package/lib/types/backends/codex/narrow.d.ts.map +1 -0
- package/lib/types/backends/codex/narrow.js +18 -0
- package/lib/types/backends/codex/prefs.d.ts +42 -0
- package/lib/types/backends/codex/prefs.d.ts.map +1 -0
- package/lib/types/backends/codex/prefs.js +124 -0
- package/lib/types/backends/codex/protocol/index.d.ts +149 -0
- package/lib/types/backends/codex/protocol/index.d.ts.map +1 -0
- package/lib/types/backends/codex/protocol/index.js +130 -0
- package/lib/types/backends/codex/rpc/binary.d.ts +35 -0
- package/lib/types/backends/codex/rpc/binary.d.ts.map +1 -0
- package/lib/types/backends/codex/rpc/binary.js +174 -0
- package/lib/types/backends/codex/rpc/client.d.ts +72 -0
- package/lib/types/backends/codex/rpc/client.d.ts.map +1 -0
- package/lib/types/backends/codex/rpc/client.js +214 -0
- package/lib/types/backends/codex/rpc/hub.d.ts +105 -0
- package/lib/types/backends/codex/rpc/hub.d.ts.map +1 -0
- package/lib/types/backends/codex/rpc/hub.js +532 -0
- package/lib/types/backends/codex/rpc/transport.d.ts +39 -0
- package/lib/types/backends/codex/rpc/transport.d.ts.map +1 -0
- package/lib/types/backends/codex/rpc/transport.js +212 -0
- package/lib/types/backends/codex/session/activity.d.ts +18 -0
- package/lib/types/backends/codex/session/activity.d.ts.map +1 -0
- package/lib/types/backends/codex/session/activity.js +108 -0
- package/lib/types/backends/codex/session/approvals.d.ts +39 -0
- package/lib/types/backends/codex/session/approvals.d.ts.map +1 -0
- package/lib/types/backends/codex/session/approvals.js +477 -0
- package/lib/types/backends/codex/session/commands.d.ts +37 -0
- package/lib/types/backends/codex/session/commands.d.ts.map +1 -0
- package/lib/types/backends/codex/session/commands.js +141 -0
- package/lib/types/backends/codex/session/controls.d.ts +37 -0
- package/lib/types/backends/codex/session/controls.d.ts.map +1 -0
- package/lib/types/backends/codex/session/controls.js +303 -0
- package/lib/types/backends/codex/session/goals.d.ts +25 -0
- package/lib/types/backends/codex/session/goals.d.ts.map +1 -0
- package/lib/types/backends/codex/session/goals.js +97 -0
- package/lib/types/backends/codex/session/history.d.ts +52 -0
- package/lib/types/backends/codex/session/history.d.ts.map +1 -0
- package/lib/types/backends/codex/session/history.js +196 -0
- package/lib/types/backends/codex/session/images.d.ts +17 -0
- package/lib/types/backends/codex/session/images.d.ts.map +1 -0
- package/lib/types/backends/codex/session/images.js +138 -0
- package/lib/types/backends/codex/session/input.d.ts +75 -0
- package/lib/types/backends/codex/session/input.d.ts.map +1 -0
- package/lib/types/backends/codex/session/input.js +294 -0
- package/lib/types/backends/codex/session/plan-review.d.ts +19 -0
- package/lib/types/backends/codex/session/plan-review.d.ts.map +1 -0
- package/lib/types/backends/codex/session/plan-review.js +48 -0
- package/lib/types/backends/codex/session/prompts.d.ts +7 -0
- package/lib/types/backends/codex/session/prompts.d.ts.map +1 -0
- package/lib/types/backends/codex/session/prompts.js +47 -0
- package/lib/types/backends/codex/session/session.d.ts +12 -0
- package/lib/types/backends/codex/session/session.d.ts.map +1 -0
- package/lib/types/backends/codex/session/session.js +871 -0
- package/lib/types/backends/codex/session/side-query.d.ts +25 -0
- package/lib/types/backends/codex/session/side-query.d.ts.map +1 -0
- package/lib/types/backends/codex/session/side-query.js +121 -0
- package/lib/types/backends/codex/session/state.d.ts +57 -0
- package/lib/types/backends/codex/session/state.d.ts.map +1 -0
- package/lib/types/backends/codex/session/state.js +1 -0
- package/lib/types/backends/codex/session/subagents.d.ts +28 -0
- package/lib/types/backends/codex/session/subagents.d.ts.map +1 -0
- package/lib/types/backends/codex/session/subagents.js +286 -0
- package/lib/types/backends/codex/session/tasks.d.ts +25 -0
- package/lib/types/backends/codex/session/tasks.d.ts.map +1 -0
- package/lib/types/backends/codex/session/tasks.js +207 -0
- package/lib/types/backends/codex/session/tool-output.d.ts +9 -0
- package/lib/types/backends/codex/session/tool-output.d.ts.map +1 -0
- package/lib/types/backends/codex/session/tool-output.js +29 -0
- package/lib/types/backends/codex/translate/commands.d.ts +30 -0
- package/lib/types/backends/codex/translate/commands.d.ts.map +1 -0
- package/lib/types/backends/codex/translate/commands.js +103 -0
- package/lib/types/backends/codex/translate/events.d.ts +9 -0
- package/lib/types/backends/codex/translate/events.d.ts.map +1 -0
- package/lib/types/backends/codex/translate/events.js +71 -0
- package/lib/types/backends/codex/translate/items.d.ts +112 -0
- package/lib/types/backends/codex/translate/items.d.ts.map +1 -0
- package/lib/types/backends/codex/translate/items.js +375 -0
- package/lib/types/backends/codex/translate/live.d.ts +39 -0
- package/lib/types/backends/codex/translate/live.d.ts.map +1 -0
- package/lib/types/backends/codex/translate/live.js +315 -0
- package/lib/types/backends/codex/translate/notices.d.ts +27 -0
- package/lib/types/backends/codex/translate/notices.d.ts.map +1 -0
- package/lib/types/backends/codex/translate/notices.js +99 -0
- package/lib/types/backends/codex/translate/presentation.d.ts +49 -0
- package/lib/types/backends/codex/translate/presentation.d.ts.map +1 -0
- package/lib/types/backends/codex/translate/presentation.js +237 -0
- package/lib/types/backends/codex/translate/replay.d.ts +18 -0
- package/lib/types/backends/codex/translate/replay.d.ts.map +1 -0
- package/lib/types/backends/codex/translate/replay.js +33 -0
- package/lib/types/backends/codex/translate/usage.d.ts +29 -0
- package/lib/types/backends/codex/translate/usage.d.ts.map +1 -0
- package/lib/types/backends/codex/translate/usage.js +65 -0
- package/lib/types/backends/shared/atomic-file.d.ts +4 -0
- package/lib/types/backends/shared/atomic-file.d.ts.map +1 -0
- package/lib/types/backends/shared/atomic-file.js +52 -0
- package/lib/types/backends/shared/channel-tokens.d.ts +29 -0
- package/lib/types/backends/shared/channel-tokens.d.ts.map +1 -0
- package/lib/types/backends/shared/channel-tokens.js +161 -0
- package/lib/types/backends/shared/display-path.d.ts +3 -0
- package/lib/types/backends/shared/display-path.d.ts.map +1 -0
- package/lib/types/backends/shared/display-path.js +12 -0
- package/lib/types/branding.d.ts +92 -0
- package/lib/types/branding.d.ts.map +1 -0
- package/lib/types/branding.js +117 -0
- package/lib/types/channel/activity.d.ts +53 -0
- package/lib/types/channel/activity.d.ts.map +1 -0
- package/lib/types/channel/activity.js +955 -0
- package/lib/types/channel/capabilities.d.ts +24 -0
- package/lib/types/channel/capabilities.d.ts.map +1 -0
- package/lib/types/channel/capabilities.js +57 -0
- package/lib/types/channel/channel-slug.d.ts +9 -0
- package/lib/types/channel/channel-slug.d.ts.map +1 -0
- package/lib/types/channel/channel-slug.js +15 -0
- package/lib/types/channel/channel-wizard.d.ts +30 -0
- package/lib/types/channel/channel-wizard.d.ts.map +1 -0
- package/lib/types/channel/channel-wizard.js +226 -0
- package/lib/types/channel/elicitation.d.ts +135 -0
- package/lib/types/channel/elicitation.d.ts.map +1 -0
- package/lib/types/channel/elicitation.js +360 -0
- package/lib/types/channel/goal-command.d.ts +49 -0
- package/lib/types/channel/goal-command.d.ts.map +1 -0
- package/lib/types/channel/goal-command.js +72 -0
- package/lib/types/channel/history-restore.d.ts +16 -0
- package/lib/types/channel/history-restore.d.ts.map +1 -0
- package/lib/types/channel/history-restore.js +214 -0
- package/lib/types/channel/interaction.d.ts +38 -0
- package/lib/types/channel/interaction.d.ts.map +1 -0
- package/lib/types/channel/interaction.js +110 -0
- package/lib/types/channel/job-format.d.ts +6 -0
- package/lib/types/channel/job-format.d.ts.map +1 -0
- package/lib/types/channel/job-format.js +12 -0
- package/lib/types/channel/live-output.d.ts +35 -0
- package/lib/types/channel/live-output.d.ts.map +1 -0
- package/lib/types/channel/live-output.js +74 -0
- package/lib/types/channel/model-capabilities.d.ts +10 -0
- package/lib/types/channel/model-capabilities.d.ts.map +1 -0
- package/lib/types/channel/model-capabilities.js +51 -0
- package/lib/types/channel/permissions.d.ts +155 -0
- package/lib/types/channel/permissions.d.ts.map +1 -0
- package/lib/types/channel/permissions.js +188 -0
- package/lib/types/channel/projection.d.ts +110 -0
- package/lib/types/channel/projection.d.ts.map +1 -0
- package/lib/types/channel/projection.js +1521 -0
- package/lib/types/channel/question-record.d.ts +76 -0
- package/lib/types/channel/question-record.d.ts.map +1 -0
- package/lib/types/channel/question-record.js +109 -0
- package/lib/types/channel/questions.d.ts +204 -0
- package/lib/types/channel/questions.d.ts.map +1 -0
- package/lib/types/channel/questions.js +286 -0
- package/lib/types/channel/sanitize.d.ts +49 -0
- package/lib/types/channel/sanitize.d.ts.map +1 -0
- package/lib/types/channel/sanitize.js +88 -0
- package/lib/types/channel/selection-record.d.ts +18 -0
- package/lib/types/channel/selection-record.d.ts.map +1 -0
- package/lib/types/channel/selection-record.js +45 -0
- package/lib/types/channel/side-prompts.d.ts +59 -0
- package/lib/types/channel/side-prompts.d.ts.map +1 -0
- package/lib/types/channel/side-prompts.js +127 -0
- package/lib/types/channel/transcript.d.ts +17 -0
- package/lib/types/channel/transcript.d.ts.map +1 -0
- package/lib/types/channel/transcript.js +19 -0
- package/lib/types/channel/usage.d.ts +48 -0
- package/lib/types/channel/usage.d.ts.map +1 -0
- package/lib/types/channel/usage.js +143 -0
- package/lib/types/commands.d.ts +147 -0
- package/lib/types/commands.d.ts.map +1 -1
- package/lib/types/commands.js +196 -2
- package/lib/types/components/AgentMessageComposer.d.ts +50 -0
- package/lib/types/components/AgentMessageComposer.d.ts.map +1 -0
- package/lib/types/components/AgentMessageComposer.js +159 -0
- package/lib/types/components/BtwPanel.d.ts +13 -12
- package/lib/types/components/BtwPanel.d.ts.map +1 -1
- package/lib/types/components/BtwPanel.js +35 -24
- package/lib/types/components/ChannelPicker.d.ts +40 -0
- package/lib/types/components/ChannelPicker.d.ts.map +1 -0
- package/lib/types/components/ChannelPicker.js +26 -0
- package/lib/types/components/Chat/JobCard.d.ts +29 -31
- package/lib/types/components/Chat/JobCard.d.ts.map +1 -1
- package/lib/types/components/Chat/JobCard.js +31 -112
- package/lib/types/components/Chat/SubagentMessage.d.ts +4 -1
- package/lib/types/components/Chat/SubagentMessage.d.ts.map +1 -1
- package/lib/types/components/Chat/SubagentMessage.js +10 -3
- package/lib/types/components/ClaudeGirl.d.ts +27 -0
- package/lib/types/components/ClaudeGirl.d.ts.map +1 -0
- package/lib/types/components/ClaudeGirl.js +30 -0
- package/lib/types/components/CodeBlockFrame.d.ts +19 -0
- package/lib/types/components/CodeBlockFrame.d.ts.map +1 -0
- package/lib/types/components/CodeBlockFrame.js +138 -0
- package/lib/types/components/CommandSuggestions.d.ts +10 -1
- package/lib/types/components/CommandSuggestions.d.ts.map +1 -1
- package/lib/types/components/CommandSuggestions.js +20 -3
- package/lib/types/components/ContextBarView.d.ts +2 -2
- package/lib/types/components/ContextBarView.d.ts.map +1 -1
- package/lib/types/components/ContextBarView.js +18 -8
- package/lib/types/components/EffortChargeGlyph.d.ts +1 -1
- package/lib/types/components/EffortChargeGlyph.d.ts.map +1 -1
- package/lib/types/components/EffortChargeGlyph.js +3 -4
- package/lib/types/components/EffortInputBorder.d.ts +1 -2
- package/lib/types/components/EffortInputBorder.d.ts.map +1 -1
- package/lib/types/components/EffortInputBorder.js +7 -4
- package/lib/types/components/EffortSlider.d.ts +5 -1
- package/lib/types/components/EffortSlider.d.ts.map +1 -1
- package/lib/types/components/EffortSlider.js +2 -2
- package/lib/types/components/EffortTierBadge.d.ts +1 -2
- package/lib/types/components/EffortTierBadge.d.ts.map +1 -1
- package/lib/types/components/EffortTierBadge.js +8 -5
- package/lib/types/components/GoalTodoPanel.d.ts +2 -1
- package/lib/types/components/GoalTodoPanel.d.ts.map +1 -1
- package/lib/types/components/GoalTodoPanel.js +11 -5
- package/lib/types/components/InlineMathParagraph.js +1 -1
- package/lib/types/components/JobsPanel.d.ts +8 -9
- package/lib/types/components/JobsPanel.d.ts.map +1 -1
- package/lib/types/components/JobsPanel.js +72 -13
- package/lib/types/components/KernelPicker.d.ts +28 -0
- package/lib/types/components/KernelPicker.d.ts.map +1 -0
- package/lib/types/components/KernelPicker.js +37 -0
- package/lib/types/components/LogoV2.d.ts +7 -1
- package/lib/types/components/LogoV2.d.ts.map +1 -1
- package/lib/types/components/LogoV2.js +120 -24
- package/lib/types/components/Markdown.d.ts +2 -1
- package/lib/types/components/Markdown.d.ts.map +1 -1
- package/lib/types/components/Markdown.js +37 -8
- package/lib/types/components/MathBlock.d.ts.map +1 -1
- package/lib/types/components/MathBlock.js +3 -1
- package/lib/types/components/MermaidDiagram.d.ts.map +1 -1
- package/lib/types/components/MermaidDiagram.js +7 -5
- package/lib/types/components/MessageList.d.ts +21 -3
- package/lib/types/components/MessageList.d.ts.map +1 -1
- package/lib/types/components/MessageList.js +62 -42
- package/lib/types/components/ModePicker.d.ts +20 -0
- package/lib/types/components/ModePicker.d.ts.map +1 -0
- package/lib/types/components/ModePicker.js +17 -0
- package/lib/types/components/PromptInput.d.ts +2 -2
- package/lib/types/components/PromptInput.d.ts.map +1 -1
- package/lib/types/components/PromptInput.js +308 -55
- package/lib/types/components/SdkInstallWizard.d.ts +44 -0
- package/lib/types/components/SdkInstallWizard.d.ts.map +1 -0
- package/lib/types/components/SdkInstallWizard.js +18 -0
- package/lib/types/components/SearchBox.d.ts +7 -8
- package/lib/types/components/SearchBox.d.ts.map +1 -1
- package/lib/types/components/SearchBox.js +18 -9
- package/lib/types/components/SplitDiffView.d.ts.map +1 -1
- package/lib/types/components/SplitDiffView.js +113 -6
- package/lib/types/components/StarPrompt.d.ts.map +1 -1
- package/lib/types/components/StarPrompt.js +5 -3
- package/lib/types/components/StreamingMarkdown.d.ts.map +1 -1
- package/lib/types/components/StreamingMarkdown.js +6 -4
- package/lib/types/components/SubagentCard.d.ts +2 -1
- package/lib/types/components/SubagentCard.d.ts.map +1 -1
- package/lib/types/components/SubagentCard.js +25 -18
- package/lib/types/components/SubagentDashboard.d.ts +10 -6
- package/lib/types/components/SubagentDashboard.d.ts.map +1 -1
- package/lib/types/components/SubagentDashboard.js +32 -21
- package/lib/types/components/SubagentDetailScene.d.ts +16 -1
- package/lib/types/components/SubagentDetailScene.d.ts.map +1 -1
- package/lib/types/components/SubagentDetailScene.js +196 -45
- package/lib/types/components/SyntaxText.d.ts.map +1 -1
- package/lib/types/components/SyntaxText.js +4 -1
- package/lib/types/components/TurnInterruptedRow.d.ts +3 -1
- package/lib/types/components/TurnInterruptedRow.d.ts.map +1 -1
- package/lib/types/components/TurnInterruptedRow.js +6 -3
- package/lib/types/components/TurnUsageRow.d.ts +24 -0
- package/lib/types/components/TurnUsageRow.d.ts.map +1 -0
- package/lib/types/components/TurnUsageRow.js +46 -0
- package/lib/types/components/WorkingSpinner.d.ts +2 -1
- package/lib/types/components/WorkingSpinner.d.ts.map +1 -1
- package/lib/types/components/WorkingSpinner.js +21 -4
- package/lib/types/components/approvals/ApprovalPanel.d.ts +36 -13
- package/lib/types/components/approvals/ApprovalPanel.d.ts.map +1 -1
- package/lib/types/components/approvals/ApprovalPanel.js +173 -25
- package/lib/types/components/claudeGirlSprite.d.ts +18 -0
- package/lib/types/components/claudeGirlSprite.d.ts.map +1 -0
- package/lib/types/components/claudeGirlSprite.js +48 -0
- package/lib/types/components/design-system/ThemeProvider.d.ts.map +1 -1
- package/lib/types/components/design-system/ThemeProvider.js +46 -13
- package/lib/types/components/design-system/ThemedText.d.ts +3 -1
- package/lib/types/components/design-system/ThemedText.d.ts.map +1 -1
- package/lib/types/components/design-system/ThemedText.js +2 -2
- package/lib/types/components/diffPatch.d.ts +55 -0
- package/lib/types/components/diffPatch.d.ts.map +1 -0
- package/lib/types/components/diffPatch.js +142 -0
- package/lib/types/components/kernelCatalog.d.ts +48 -0
- package/lib/types/components/kernelCatalog.d.ts.map +1 -0
- package/lib/types/components/kernelCatalog.js +53 -0
- package/lib/types/components/launchpadActions.d.ts +13 -6
- package/lib/types/components/launchpadActions.d.ts.map +1 -1
- package/lib/types/components/launchpadActions.js +26 -4
- package/lib/types/components/launchpadParams.d.ts +101 -0
- package/lib/types/components/launchpadParams.d.ts.map +1 -0
- package/lib/types/components/launchpadParams.js +171 -0
- package/lib/types/components/maidPortrait.d.ts +37 -5
- package/lib/types/components/maidPortrait.d.ts.map +1 -1
- package/lib/types/components/maidPortrait.js +73 -54
- package/lib/types/components/messages/AgentMessageFlow.d.ts +20 -0
- package/lib/types/components/messages/AgentMessageFlow.d.ts.map +1 -0
- package/lib/types/components/messages/AgentMessageFlow.js +37 -0
- package/lib/types/components/messages/AssistantThinkingMessage.d.ts +6 -1
- package/lib/types/components/messages/AssistantThinkingMessage.d.ts.map +1 -1
- package/lib/types/components/messages/AssistantThinkingMessage.js +29 -5
- package/lib/types/components/messages/AssistantToolUseMessage.d.ts +11 -2
- package/lib/types/components/messages/AssistantToolUseMessage.d.ts.map +1 -1
- package/lib/types/components/messages/AssistantToolUseMessage.js +289 -36
- package/lib/types/components/messages/TranscriptLeaves.d.ts +85 -0
- package/lib/types/components/messages/TranscriptLeaves.d.ts.map +1 -0
- package/lib/types/components/messages/TranscriptLeaves.js +74 -0
- package/lib/types/components/messages/agentTeam.d.ts +69 -0
- package/lib/types/components/messages/agentTeam.d.ts.map +1 -0
- package/lib/types/components/messages/agentTeam.js +53 -0
- package/lib/types/components/messages/liveOutputLines.d.ts +33 -0
- package/lib/types/components/messages/liveOutputLines.d.ts.map +1 -0
- package/lib/types/components/messages/liveOutputLines.js +100 -0
- package/lib/types/components/messages/subagentTranscript.d.ts +146 -0
- package/lib/types/components/messages/subagentTranscript.d.ts.map +1 -0
- package/lib/types/components/messages/subagentTranscript.js +304 -0
- package/lib/types/components/questions/AskUserQuestionPanel.d.ts +16 -1
- package/lib/types/components/questions/AskUserQuestionPanel.d.ts.map +1 -1
- package/lib/types/components/questions/AskUserQuestionPanel.js +76 -6
- package/lib/types/components/questions/PlanReviewPanel.d.ts +8 -3
- package/lib/types/components/questions/PlanReviewPanel.d.ts.map +1 -1
- package/lib/types/components/questions/PlanReviewPanel.js +11 -6
- package/lib/types/components/questions/ProviderModelEditor.d.ts +12 -0
- package/lib/types/components/questions/ProviderModelEditor.d.ts.map +1 -0
- package/lib/types/components/questions/ProviderModelEditor.js +266 -0
- package/lib/types/components/shimmer.d.ts +26 -0
- package/lib/types/components/shimmer.d.ts.map +1 -1
- package/lib/types/components/shimmer.js +26 -0
- package/lib/types/components/sidePanel/InfoPanel.d.ts.map +1 -1
- package/lib/types/components/sidePanel/InfoPanel.js +13 -8
- package/lib/types/components/sidePanel/PanelBar.d.ts +0 -24
- package/lib/types/components/sidePanel/PanelBar.d.ts.map +1 -1
- package/lib/types/components/sidePanel/PanelBar.js +55 -77
- package/lib/types/components/sidePanel/PanelStore.d.ts +3 -1
- package/lib/types/components/sidePanel/PanelStore.d.ts.map +1 -1
- package/lib/types/components/sidePanel/PanelStore.js +8 -4
- package/lib/types/components/sidePanel/SidePanelColumn.d.ts +3 -10
- package/lib/types/components/sidePanel/SidePanelColumn.d.ts.map +1 -1
- package/lib/types/components/sidePanel/SidePanelColumn.js +9 -12
- package/lib/types/components/sidePanel/TrajectoryPanel.d.ts.map +1 -1
- package/lib/types/components/sidePanel/TrajectoryPanel.js +78 -14
- package/lib/types/components/sidePanel/agentViewStore.d.ts +20 -0
- package/lib/types/components/sidePanel/agentViewStore.d.ts.map +1 -0
- package/lib/types/components/sidePanel/agentViewStore.js +26 -0
- package/lib/types/components/sidePanel/btw/BtwComposer.d.ts +50 -0
- package/lib/types/components/sidePanel/btw/BtwComposer.d.ts.map +1 -0
- package/lib/types/components/sidePanel/btw/BtwComposer.js +45 -0
- package/lib/types/components/sidePanel/btw/BtwPanelAdapter.d.ts +13 -0
- package/lib/types/components/sidePanel/btw/BtwPanelAdapter.d.ts.map +1 -0
- package/lib/types/components/sidePanel/btw/BtwPanelAdapter.js +147 -0
- package/lib/types/components/sidePanel/btw/BtwThreadScene.d.ts +14 -0
- package/lib/types/components/sidePanel/btw/BtwThreadScene.d.ts.map +1 -0
- package/lib/types/components/sidePanel/btw/BtwThreadScene.js +131 -0
- package/lib/types/components/sidePanel/btw/BtwThreadView.d.ts +30 -0
- package/lib/types/components/sidePanel/btw/BtwThreadView.d.ts.map +1 -0
- package/lib/types/components/sidePanel/btw/BtwThreadView.js +87 -0
- package/lib/types/components/sidePanel/btw/threads.d.ts +111 -0
- package/lib/types/components/sidePanel/btw/threads.d.ts.map +1 -0
- package/lib/types/components/sidePanel/btw/threads.js +302 -0
- package/lib/types/components/sidePanel/builtinPanels.d.ts.map +1 -1
- package/lib/types/components/sidePanel/builtinPanels.js +70 -30
- package/lib/types/components/sidePanel/companion/CompanionPanel.d.ts +4 -46
- package/lib/types/components/sidePanel/companion/CompanionPanel.d.ts.map +1 -1
- package/lib/types/components/sidePanel/companion/CompanionPanel.js +19 -55
- package/lib/types/components/sidePanel/companion/mood.d.ts +32 -0
- package/lib/types/components/sidePanel/companion/mood.d.ts.map +1 -1
- package/lib/types/components/sidePanel/companion/mood.js +44 -0
- package/lib/types/components/sidePanel/companion/skins.d.ts +34 -0
- package/lib/types/components/sidePanel/companion/skins.d.ts.map +1 -1
- package/lib/types/components/sidePanel/companion/skins.js +203 -29
- package/lib/types/components/splashFonts.d.ts +17 -9
- package/lib/types/components/splashFonts.d.ts.map +1 -1
- package/lib/types/components/splashFonts.js +119 -15
- package/lib/types/components/splashLayout.d.ts.map +1 -1
- package/lib/types/components/splashLayout.js +3 -1
- package/lib/types/components/subagentDetailMemory.d.ts +17 -0
- package/lib/types/components/subagentDetailMemory.d.ts.map +1 -0
- package/lib/types/components/subagentDetailMemory.js +28 -0
- package/lib/types/components/trajectory/Inspector.d.ts.map +1 -1
- package/lib/types/components/trajectory/Inspector.js +9 -0
- package/lib/types/components/trajectory/Ledger.d.ts.map +1 -1
- package/lib/types/components/trajectory/Ledger.js +7 -1
- package/lib/types/components/trajectory/scope.d.ts +64 -0
- package/lib/types/components/trajectory/scope.d.ts.map +1 -0
- package/lib/types/components/trajectory/scope.js +88 -0
- package/lib/types/components/trajectory/useTrajectoryScope.d.ts +42 -0
- package/lib/types/components/trajectory/useTrajectoryScope.d.ts.map +1 -0
- package/lib/types/components/trajectory/useTrajectoryScope.js +86 -0
- package/lib/types/customTheme.d.ts +4 -6
- package/lib/types/customTheme.d.ts.map +1 -1
- package/lib/types/customTheme.js +6 -8
- package/lib/types/dsh-adapter/approvals.d.ts +18 -5
- package/lib/types/dsh-adapter/approvals.d.ts.map +1 -1
- package/lib/types/dsh-adapter/approvals.js +17 -4
- package/lib/types/dsh-adapter/backend/session.d.ts +64 -0
- package/lib/types/dsh-adapter/backend/session.d.ts.map +1 -0
- package/lib/types/dsh-adapter/backend/session.js +291 -0
- package/lib/types/dsh-adapter/backend/translate.d.ts +58 -0
- package/lib/types/dsh-adapter/backend/translate.d.ts.map +1 -0
- package/lib/types/dsh-adapter/backend/translate.js +467 -0
- package/lib/types/dsh-adapter/backends.d.ts +49 -0
- package/lib/types/dsh-adapter/backends.d.ts.map +1 -0
- package/lib/types/dsh-adapter/backends.js +124 -0
- package/lib/types/dsh-adapter/channel/action-readiness.d.ts +16 -0
- package/lib/types/dsh-adapter/channel/action-readiness.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/action-readiness.js +109 -0
- package/lib/types/dsh-adapter/channel/agent-view-projection.d.ts +2 -2
- package/lib/types/dsh-adapter/channel/agent-view-projection.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/background-action.d.ts +2 -2
- package/lib/types/dsh-adapter/channel/background-action.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/background-action.js +7 -5
- package/lib/types/dsh-adapter/channel/binding-events.d.ts +19 -9
- package/lib/types/dsh-adapter/channel/binding-events.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/binding-events.js +58 -135
- package/lib/types/dsh-adapter/channel/binding.d.ts +61 -14
- package/lib/types/dsh-adapter/channel/binding.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/binding.js +102 -35
- package/lib/types/dsh-adapter/channel/command-completions.d.ts +3 -0
- package/lib/types/dsh-adapter/channel/command-completions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/command-completions.js +33 -4
- package/lib/types/dsh-adapter/channel/compaction.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/compaction.js +3 -2
- package/lib/types/dsh-adapter/channel/composer-images.d.ts +5 -0
- package/lib/types/dsh-adapter/channel/composer-images.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/composer-images.js +4 -3
- package/lib/types/dsh-adapter/channel/core/actions.d.ts +39 -0
- package/lib/types/dsh-adapter/channel/core/actions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/core/actions.js +152 -0
- package/lib/types/dsh-adapter/channel/core/binding-feed.d.ts +145 -0
- package/lib/types/dsh-adapter/channel/core/binding-feed.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/core/binding-feed.js +289 -0
- package/lib/types/dsh-adapter/channel/core/compose.d.ts +217 -0
- package/lib/types/dsh-adapter/channel/core/compose.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/core/compose.js +938 -0
- package/lib/types/dsh-adapter/channel/core/files.d.ts +57 -0
- package/lib/types/dsh-adapter/channel/core/files.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/core/files.js +45 -0
- package/lib/types/dsh-adapter/channel/core/host.d.ts +55 -0
- package/lib/types/dsh-adapter/channel/core/host.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/core/host.js +116 -0
- package/lib/types/dsh-adapter/channel/core/local-actions.d.ts +46 -0
- package/lib/types/dsh-adapter/channel/core/local-actions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/core/local-actions.js +117 -0
- package/lib/types/dsh-adapter/channel/core/local-images.d.ts +20 -0
- package/lib/types/dsh-adapter/channel/core/local-images.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/core/local-images.js +147 -0
- package/lib/types/dsh-adapter/channel/core/reports.d.ts +12 -0
- package/lib/types/dsh-adapter/channel/core/reports.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/core/reports.js +77 -0
- package/lib/types/dsh-adapter/channel/core/session-controls.d.ts +39 -0
- package/lib/types/dsh-adapter/channel/core/session-controls.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/core/session-controls.js +219 -0
- package/lib/types/dsh-adapter/channel/core/session-switch.d.ts +174 -0
- package/lib/types/dsh-adapter/channel/core/session-switch.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/core/session-switch.js +390 -0
- package/lib/types/dsh-adapter/channel/core/sessions.d.ts +40 -0
- package/lib/types/dsh-adapter/channel/core/sessions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/core/sessions.js +268 -0
- package/lib/types/dsh-adapter/channel/decisions.d.ts +4 -3
- package/lib/types/dsh-adapter/channel/decisions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/decisions.js +4 -4
- package/lib/types/dsh-adapter/channel/emitter.d.ts +15 -2
- package/lib/types/dsh-adapter/channel/emitter.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/emitter.js +5 -3
- package/lib/types/dsh-adapter/channel/extensions.d.ts +36 -0
- package/lib/types/dsh-adapter/channel/extensions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/extensions.js +714 -0
- package/lib/types/dsh-adapter/channel/ide-selection.d.ts +1 -10
- package/lib/types/dsh-adapter/channel/ide-selection.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/ide-selection.js +4 -46
- package/lib/types/dsh-adapter/channel/input-actions.d.ts +27 -4
- package/lib/types/dsh-adapter/channel/input-actions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/input-actions.js +240 -21
- package/lib/types/dsh-adapter/channel/input-delivery.d.ts +21 -5
- package/lib/types/dsh-adapter/channel/input-delivery.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/input-delivery.js +65 -27
- package/lib/types/dsh-adapter/channel/local-actions.d.ts +10 -32
- package/lib/types/dsh-adapter/channel/local-actions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/local-actions.js +10 -78
- package/lib/types/dsh-adapter/channel/local-fs.d.ts +3 -0
- package/lib/types/dsh-adapter/channel/local-fs.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/local-fs.js +46 -0
- package/lib/types/dsh-adapter/channel/mode-actions.d.ts +3 -3
- package/lib/types/dsh-adapter/channel/mode-actions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/mode-permission-actions.d.ts +2 -2
- package/lib/types/dsh-adapter/channel/mode-permission-actions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/model-actions.d.ts +3 -3
- package/lib/types/dsh-adapter/channel/model-actions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/model-actions.js +38 -5
- package/lib/types/dsh-adapter/channel/model-switch.d.ts +2 -2
- package/lib/types/dsh-adapter/channel/model-switch.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/model-switch.js +9 -6
- package/lib/types/dsh-adapter/channel/preferences.d.ts +1 -1
- package/lib/types/dsh-adapter/channel/preferences.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/preferences.js +16 -0
- package/lib/types/dsh-adapter/channel/projection.d.ts +16 -13
- package/lib/types/dsh-adapter/channel/projection.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/projection.js +38 -1143
- package/lib/types/dsh-adapter/channel/question-record.d.ts +3 -75
- package/lib/types/dsh-adapter/channel/question-record.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/question-record.js +3 -107
- package/lib/types/dsh-adapter/channel/session-activity.d.ts +9 -0
- package/lib/types/dsh-adapter/channel/session-activity.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/session-activity.js +42 -0
- package/lib/types/dsh-adapter/channel/session-adoption.d.ts +4 -4
- package/lib/types/dsh-adapter/channel/session-adoption.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/session-adoption.js +3 -1
- package/lib/types/dsh-adapter/channel/session-fork.d.ts +1 -1
- package/lib/types/dsh-adapter/channel/session-fork.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/session-fork.js +2 -1
- package/lib/types/dsh-adapter/channel/session-live-adoption.d.ts +7 -3
- package/lib/types/dsh-adapter/channel/session-live-adoption.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/session-live-adoption.js +1 -1
- package/lib/types/dsh-adapter/channel/session-metadata.d.ts +2 -9
- package/lib/types/dsh-adapter/channel/session-metadata.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/session-reset.d.ts +1 -1
- package/lib/types/dsh-adapter/channel/session-reset.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/session-reset.js +4 -0
- package/lib/types/dsh-adapter/channel/session-resume.d.ts +5 -10
- package/lib/types/dsh-adapter/channel/session-resume.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/session-resume.js +74 -113
- package/lib/types/dsh-adapter/channel/session-rewind.d.ts +4 -4
- package/lib/types/dsh-adapter/channel/session-rewind.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/session-rewind.js +7 -6
- package/lib/types/dsh-adapter/channel/session-tree-actions.d.ts +4 -4
- package/lib/types/dsh-adapter/channel/session-tree-actions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/session-tree-actions.js +8 -7
- package/lib/types/dsh-adapter/channel/settings-host.d.ts +1 -1
- package/lib/types/dsh-adapter/channel/settings-host.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/settings-host.js +8 -0
- package/lib/types/dsh-adapter/channel/skill-catalog.d.ts +5 -1
- package/lib/types/dsh-adapter/channel/skill-catalog.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/skill-catalog.js +2 -2
- package/lib/types/dsh-adapter/channel/state.d.ts +72 -1
- package/lib/types/dsh-adapter/channel/state.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/state.js +7 -3
- package/lib/types/dsh-adapter/channel/subagent-projection.d.ts +58 -3
- package/lib/types/dsh-adapter/channel/subagent-projection.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/subagent-projection.js +153 -9
- package/lib/types/dsh-adapter/channel/subagent-transcript.d.ts +114 -0
- package/lib/types/dsh-adapter/channel/subagent-transcript.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/subagent-transcript.js +279 -0
- package/lib/types/dsh-adapter/channel/transcript.d.ts +7 -15
- package/lib/types/dsh-adapter/channel/transcript.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/transcript.js +17 -21
- package/lib/types/dsh-adapter/channel/types.d.ts +16 -7
- package/lib/types/dsh-adapter/channel/types.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/usage.d.ts +3 -23
- package/lib/types/dsh-adapter/channel/usage.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/usage.js +5 -111
- package/lib/types/dsh-adapter/channel/workspace-actions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/workspace-actions.js +2 -1
- package/lib/types/dsh-adapter/channel.d.ts +17 -8
- package/lib/types/dsh-adapter/channel.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel.js +24 -1059
- package/lib/types/dsh-adapter/context-occupancy.d.ts +6 -1
- package/lib/types/dsh-adapter/context-occupancy.d.ts.map +1 -1
- package/lib/types/dsh-adapter/context-occupancy.js +6 -1
- package/lib/types/dsh-adapter/decision-guard.d.ts +24 -0
- package/lib/types/dsh-adapter/decision-guard.d.ts.map +1 -1
- package/lib/types/dsh-adapter/decision-guard.js +44 -0
- package/lib/types/dsh-adapter/extension-events.d.ts +4 -1
- package/lib/types/dsh-adapter/extension-events.d.ts.map +1 -1
- package/lib/types/dsh-adapter/extension-events.js +22 -10
- package/lib/types/dsh-adapter/index.d.ts +41 -3
- package/lib/types/dsh-adapter/index.d.ts.map +1 -1
- package/lib/types/dsh-adapter/index.js +28 -1
- package/lib/types/dsh-adapter/jobs.d.ts +5 -3
- package/lib/types/dsh-adapter/jobs.d.ts.map +1 -1
- package/lib/types/dsh-adapter/jobs.js +53 -14
- package/lib/types/dsh-adapter/migrate/parse/jsonl.d.ts +1 -16
- package/lib/types/dsh-adapter/migrate/parse/jsonl.d.ts.map +1 -1
- package/lib/types/dsh-adapter/migrate/parse/jsonl.js +3 -29
- package/lib/types/dsh-adapter/oauth-credential-source.d.ts +34 -0
- package/lib/types/dsh-adapter/oauth-credential-source.d.ts.map +1 -0
- package/lib/types/dsh-adapter/oauth-credential-source.js +66 -0
- package/lib/types/dsh-adapter/plugin.d.ts +38 -2
- package/lib/types/dsh-adapter/plugin.d.ts.map +1 -1
- package/lib/types/dsh-adapter/plugin.js +546 -110
- package/lib/types/dsh-adapter/provider-model-capabilities.d.ts +10 -0
- package/lib/types/dsh-adapter/provider-model-capabilities.d.ts.map +1 -0
- package/lib/types/dsh-adapter/provider-model-capabilities.js +80 -0
- package/lib/types/dsh-adapter/providerWizard.d.ts +8 -2
- package/lib/types/dsh-adapter/providerWizard.d.ts.map +1 -1
- package/lib/types/dsh-adapter/providerWizard.js +118 -52
- package/lib/types/dsh-adapter/questions.d.ts +29 -124
- package/lib/types/dsh-adapter/questions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/questions.js +33 -267
- package/lib/types/dsh-adapter/recap.d.ts +3 -15
- package/lib/types/dsh-adapter/recap.d.ts.map +1 -1
- package/lib/types/dsh-adapter/recap.js +3 -46
- package/lib/types/dsh-adapter/sanitize.d.ts +4 -44
- package/lib/types/dsh-adapter/sanitize.d.ts.map +1 -1
- package/lib/types/dsh-adapter/sanitize.js +4 -84
- package/lib/types/dsh-adapter/session-mount-heartbeat.d.ts +3 -1
- package/lib/types/dsh-adapter/session-mount-heartbeat.d.ts.map +1 -1
- package/lib/types/dsh-adapter/session-mount-heartbeat.js +4 -2
- package/lib/types/dsh-adapter/sessions/digest.d.ts +18 -3
- package/lib/types/dsh-adapter/sessions/digest.d.ts.map +1 -1
- package/lib/types/dsh-adapter/sessions/digest.js +60 -27
- package/lib/types/dsh-adapter/sessions/list.d.ts.map +1 -1
- package/lib/types/dsh-adapter/sessions/list.js +6 -4
- package/lib/types/dsh-adapter/sessions/recovery.d.ts +2 -2
- package/lib/types/dsh-adapter/sessions/recovery.d.ts.map +1 -1
- package/lib/types/dsh-adapter/sessions/recovery.js +23 -14
- package/lib/types/dsh-adapter/sessions/store.d.ts +2 -0
- package/lib/types/dsh-adapter/sessions/store.d.ts.map +1 -1
- package/lib/types/dsh-adapter/sessions/store.js +1 -0
- package/lib/types/dsh-adapter/sessions/types.d.ts +2 -0
- package/lib/types/dsh-adapter/sessions/types.d.ts.map +1 -1
- package/lib/types/dsh-adapter/sideQuestion.d.ts.map +1 -1
- package/lib/types/dsh-adapter/sideQuestion.js +3 -13
- package/lib/types/dsh-adapter/subagents.d.ts.map +1 -1
- package/lib/types/dsh-adapter/subagents.js +7 -0
- package/lib/types/dsh-adapter/themes.d.ts +1 -1
- package/lib/types/dsh-adapter/themes.d.ts.map +1 -1
- package/lib/types/dsh-adapter/trajectory/agent-source.d.ts +84 -0
- package/lib/types/dsh-adapter/trajectory/agent-source.d.ts.map +1 -0
- package/lib/types/dsh-adapter/trajectory/agent-source.js +601 -0
- package/lib/types/dsh-adapter/trajectory/guards.d.ts +31 -1
- package/lib/types/dsh-adapter/trajectory/guards.d.ts.map +1 -1
- package/lib/types/dsh-adapter/trajectory/guards.js +28 -0
- package/lib/types/dsh-adapter/trajectory/index.d.ts +3 -1
- package/lib/types/dsh-adapter/trajectory/index.d.ts.map +1 -1
- package/lib/types/dsh-adapter/trajectory/index.js +1 -0
- package/lib/types/dsh-adapter/trajectory/inspect.d.ts +7 -0
- package/lib/types/dsh-adapter/trajectory/inspect.d.ts.map +1 -1
- package/lib/types/dsh-adapter/trajectory/inspect.js +70 -2
- package/lib/types/dsh-adapter/trajectory/projection.d.ts +4 -0
- package/lib/types/dsh-adapter/trajectory/projection.d.ts.map +1 -1
- package/lib/types/dsh-adapter/trajectory/projection.js +36 -0
- package/lib/types/dsh-adapter/trajectory/types.d.ts +13 -0
- package/lib/types/dsh-adapter/trajectory/types.d.ts.map +1 -1
- package/lib/types/effortPrefs.d.ts +7 -0
- package/lib/types/effortPrefs.d.ts.map +1 -1
- package/lib/types/effortPrefs.js +11 -2
- package/lib/types/handoffAck.d.ts +57 -0
- package/lib/types/handoffAck.d.ts.map +1 -0
- package/lib/types/handoffAck.js +154 -0
- package/lib/types/handoffEvents.d.ts +52 -0
- package/lib/types/handoffEvents.d.ts.map +1 -0
- package/lib/types/handoffEvents.js +128 -0
- package/lib/types/i18n.d.ts +3189 -68
- package/lib/types/i18n.d.ts.map +1 -1
- package/lib/types/i18n.js +855 -9
- package/lib/types/ink/colorize.d.ts.map +1 -1
- package/lib/types/ink/colorize.js +8 -2
- package/lib/types/ink/components/AlternateScreen.d.ts +12 -1
- package/lib/types/ink/components/AlternateScreen.d.ts.map +1 -1
- package/lib/types/ink/components/AlternateScreen.js +25 -4
- package/lib/types/ink/components/App.d.ts +5 -1
- package/lib/types/ink/components/App.d.ts.map +1 -1
- package/lib/types/ink/components/App.js +52 -5
- package/lib/types/ink/components/Image.d.ts +8 -1
- package/lib/types/ink/components/Image.d.ts.map +1 -1
- package/lib/types/ink/components/Image.js +2 -2
- package/lib/types/ink/components/Text.d.ts +8 -1
- package/lib/types/ink/components/Text.d.ts.map +1 -1
- package/lib/types/ink/components/Text.js +11 -1
- package/lib/types/ink/dom.d.ts.map +1 -1
- package/lib/types/ink/dom.js +75 -3
- package/lib/types/ink/hooks/use-input.d.ts.map +1 -1
- package/lib/types/ink/hooks/use-input.js +9 -4
- package/lib/types/ink/ink.d.ts.map +1 -1
- package/lib/types/ink/ink.js +8 -2
- package/lib/types/ink/kitty-graphics.d.ts +7 -2
- package/lib/types/ink/kitty-graphics.d.ts.map +1 -1
- package/lib/types/ink/kitty-graphics.js +15 -7
- package/lib/types/ink/node-cache.d.ts +15 -1
- package/lib/types/ink/node-cache.d.ts.map +1 -1
- package/lib/types/ink/node-cache.js +4 -1
- package/lib/types/ink/output.d.ts.map +1 -1
- package/lib/types/ink/output.js +2 -0
- package/lib/types/ink/parse-keypress.d.ts +13 -0
- package/lib/types/ink/parse-keypress.d.ts.map +1 -1
- package/lib/types/ink/parse-keypress.js +438 -19
- package/lib/types/ink/reconciler.d.ts.map +1 -1
- package/lib/types/ink/reconciler.js +9 -0
- package/lib/types/ink/render-node-to-output.d.ts.map +1 -1
- package/lib/types/ink/render-node-to-output.js +200 -4
- package/lib/types/ink/render-stats.d.ts +35 -0
- package/lib/types/ink/render-stats.d.ts.map +1 -0
- package/lib/types/ink/render-stats.js +53 -0
- package/lib/types/ink/sixel-codec.d.ts +11 -1
- package/lib/types/ink/sixel-codec.d.ts.map +1 -1
- package/lib/types/ink/sixel-codec.js +10 -3
- package/lib/types/ink/sixel-graphics.js +2 -2
- package/lib/types/ink/styles.d.ts +46 -0
- package/lib/types/ink/styles.d.ts.map +1 -1
- package/lib/types/ink/terminal-image.d.ts +7 -0
- package/lib/types/ink/terminal-image.d.ts.map +1 -1
- package/lib/types/ink/terminal-querier.d.ts +1 -1
- package/lib/types/ink/terminal-querier.js +4 -4
- package/lib/types/ink/text-decoration.d.ts +49 -0
- package/lib/types/ink/text-decoration.d.ts.map +1 -0
- package/lib/types/ink/text-decoration.js +235 -0
- package/lib/types/ink/update-overflow-guard.d.ts +9 -0
- package/lib/types/ink/update-overflow-guard.d.ts.map +1 -1
- package/lib/types/ink/update-overflow-guard.js +41 -0
- package/lib/types/ink/wrap-text.d.ts.map +1 -1
- package/lib/types/ink/wrap-text.js +5 -1
- package/lib/types/kernelPrefs.d.ts +51 -0
- package/lib/types/kernelPrefs.d.ts.map +1 -0
- package/lib/types/kernelPrefs.js +126 -0
- package/lib/types/modelRecents.d.ts +10 -2
- package/lib/types/modelRecents.d.ts.map +1 -1
- package/lib/types/modelRecents.js +20 -7
- package/lib/types/screens/AgentTranscriptScene.d.ts +42 -0
- package/lib/types/screens/AgentTranscriptScene.d.ts.map +1 -0
- package/lib/types/screens/AgentTranscriptScene.js +269 -0
- package/lib/types/screens/Chat.d.ts +45 -7
- package/lib/types/screens/Chat.d.ts.map +1 -1
- package/lib/types/screens/Chat.js +625 -113
- package/lib/types/screens/Launchpad.d.ts +24 -7
- package/lib/types/screens/Launchpad.d.ts.map +1 -1
- package/lib/types/screens/Launchpad.js +147 -28
- package/lib/types/screens/SessionSupervisor.d.ts +3 -3
- package/lib/types/screens/SessionSupervisor.d.ts.map +1 -1
- package/lib/types/screens/SessionSupervisor.js +69 -5
- package/lib/types/screens/Settings.d.ts.map +1 -1
- package/lib/types/screens/Settings.js +211 -7
- package/lib/types/screens/StatusLine.d.ts +40 -1
- package/lib/types/screens/StatusLine.d.ts.map +1 -1
- package/lib/types/screens/StatusLine.js +131 -19
- package/lib/types/screens/StatusMetrics.d.ts +53 -17
- package/lib/types/screens/StatusMetrics.d.ts.map +1 -1
- package/lib/types/screens/StatusMetrics.js +141 -30
- package/lib/types/screens/TrajectoryScene.d.ts.map +1 -1
- package/lib/types/screens/TrajectoryScene.js +74 -12
- package/lib/types/screens/chat/backendCommands.d.ts +37 -0
- package/lib/types/screens/chat/backendCommands.d.ts.map +1 -0
- package/lib/types/screens/chat/backendCommands.js +51 -0
- package/lib/types/screens/chat/useBackendChannels.d.ts +20 -0
- package/lib/types/screens/chat/useBackendChannels.d.ts.map +1 -0
- package/lib/types/screens/chat/useBackendChannels.js +117 -0
- package/lib/types/screens/chat/useKernelPicker.d.ts +23 -0
- package/lib/types/screens/chat/useKernelPicker.d.ts.map +1 -0
- package/lib/types/screens/chat/useKernelPicker.js +72 -0
- package/lib/types/screens/chatOverlay.d.ts +32 -2
- package/lib/types/screens/chatOverlay.d.ts.map +1 -1
- package/lib/types/screens/chatOverlay.js +9 -0
- package/lib/types/screens/sessionSupervisor/useForeignSessions.d.ts.map +1 -1
- package/lib/types/screens/sessionSupervisor/useForeignSessions.js +5 -1
- package/lib/types/screens/sessionSupervisor/useSessionSupervisor.d.ts +14 -0
- package/lib/types/screens/sessionSupervisor/useSessionSupervisor.d.ts.map +1 -1
- package/lib/types/screens/sessionSupervisor/useSessionSupervisor.js +97 -22
- package/lib/types/sessionHistory.d.ts +18 -1
- package/lib/types/sessionHistory.d.ts.map +1 -1
- package/lib/types/sessionHistory.js +46 -4
- package/lib/types/sessionPins.d.ts +7 -0
- package/lib/types/sessionPins.d.ts.map +1 -1
- package/lib/types/sessionPins.js +9 -0
- package/lib/types/sessions/resumeFailure.d.ts.map +1 -1
- package/lib/types/sessions/resumeFailure.js +2 -1
- package/lib/types/settings/definitions.d.ts +74 -0
- package/lib/types/settings/definitions.d.ts.map +1 -1
- package/lib/types/settings/definitions.js +50 -4
- package/lib/types/terminal-utils/hyperlink.d.ts +2 -2
- package/lib/types/terminal-utils/hyperlink.d.ts.map +1 -1
- package/lib/types/terminal-utils/hyperlink.js +21 -4
- package/lib/types/terminal-utils/markdown.d.ts +34 -6
- package/lib/types/terminal-utils/markdown.d.ts.map +1 -1
- package/lib/types/terminal-utils/markdown.js +257 -66
- package/lib/types/theme.d.ts +49 -8
- package/lib/types/theme.d.ts.map +1 -1
- package/lib/types/theme.js +514 -18
- package/lib/types/tips.js +2 -2
- package/lib/types/trajectory/effortIgnition.d.ts +25 -7
- package/lib/types/trajectory/effortIgnition.d.ts.map +1 -1
- package/lib/types/trajectory/effortIgnition.js +106 -34
- package/lib/types/trajectory/window.d.ts +26 -0
- package/lib/types/trajectory/window.d.ts.map +1 -0
- package/lib/types/trajectory/window.js +27 -0
- package/lib/types/tuiDisplayPrefs.d.ts +38 -1
- package/lib/types/tuiDisplayPrefs.d.ts.map +1 -1
- package/lib/types/tuiDisplayPrefs.js +45 -1
- package/lib/types/update.d.ts +88 -3
- package/lib/types/update.d.ts.map +1 -1
- package/lib/types/update.js +285 -18
- package/lib/types/utils/crashDetail.d.ts +56 -0
- package/lib/types/utils/crashDetail.d.ts.map +1 -0
- package/lib/types/utils/crashDetail.js +175 -0
- package/lib/types/utils/imageResize.d.ts +9 -23
- package/lib/types/utils/imageResize.d.ts.map +1 -1
- package/lib/types/utils/imageResize.js +24 -20
- package/lib/types/utils/inputPaste.d.ts +9 -8
- package/lib/types/utils/inputPaste.d.ts.map +1 -1
- package/lib/types/utils/inputPaste.js +53 -16
- package/lib/types/utils/jsonl.d.ts +24 -0
- package/lib/types/utils/jsonl.d.ts.map +1 -0
- package/lib/types/utils/jsonl.js +36 -0
- package/package.json +18 -2
|
@@ -0,0 +1,505 @@
|
|
|
1
|
+
import { transcriptImages } from './images.js';
|
|
2
|
+
import { arr, num, rec, str } from './narrow.js';
|
|
3
|
+
import { COMMAND_TAG, createClaudeTranslator, INTERRUPT_ECHO, LOCAL_COMMAND_TAG, userText } from './translate.js';
|
|
4
|
+
/** The tool names the CLI uses for a subagent launch (current, legacy). */
|
|
5
|
+
const AGENT_TOOLS = new Set(['Agent', 'Task']);
|
|
6
|
+
const BASH_OUTPUT_TAG = /^<bash-(stdout|stderr)>/u;
|
|
7
|
+
const BASH_INPUT = /^<bash-input>([\s\S]*?)<\/bash-input>/u;
|
|
8
|
+
const TASK_NOTIFICATION = /^<task-notification>/u;
|
|
9
|
+
/** A background subagent's launch acknowledgement (not its end). */
|
|
10
|
+
const ASYNC_LAUNCH = /^Async agent launched/u;
|
|
11
|
+
/** Nested subagent transcripts followed at most this deep (a corrupted
|
|
12
|
+
* store cannot recurse without bound). */
|
|
13
|
+
const MAX_NESTING = 8;
|
|
14
|
+
/** `/name args` of a recorded slash-command echo. */
|
|
15
|
+
function commandLine(text) {
|
|
16
|
+
const name = /<command-name>([\s\S]*?)<\/command-name>/u.exec(text)?.[1]?.trim();
|
|
17
|
+
if (name === undefined || name === '')
|
|
18
|
+
return undefined;
|
|
19
|
+
const args = /<command-args>([\s\S]*?)<\/command-args>/u.exec(text)?.[1]?.trim() ?? '';
|
|
20
|
+
const slash = name.startsWith('/') ? name : `/${name}`;
|
|
21
|
+
return args === '' ? slash : `${slash} ${args}`;
|
|
22
|
+
}
|
|
23
|
+
function classifyUser(message) {
|
|
24
|
+
const content = rec(message.message)?.content;
|
|
25
|
+
if (arr(content).some(block => rec(block)?.type === 'tool_result'))
|
|
26
|
+
return { kind: 'results' };
|
|
27
|
+
const raw = userText(content) ?? '';
|
|
28
|
+
const text = raw.trim();
|
|
29
|
+
if (message.isCompactSummary === true)
|
|
30
|
+
return { kind: 'summary', text };
|
|
31
|
+
if (message.is_meta === true || message.isMeta === true)
|
|
32
|
+
return { kind: 'hidden', why: 'meta' };
|
|
33
|
+
// An image-only prompt is a prompt (its row shows the images).
|
|
34
|
+
if (text === '' && arr(content).some(block => rec(block)?.type === 'image'))
|
|
35
|
+
return { kind: 'prompt', text: '', queued: message.isQueuedCommand === true };
|
|
36
|
+
if (text === '')
|
|
37
|
+
return { kind: 'hidden', why: 'empty' };
|
|
38
|
+
if (text.startsWith(INTERRUPT_ECHO))
|
|
39
|
+
return { kind: 'interrupt' };
|
|
40
|
+
const origin = str(rec(message.origin)?.kind);
|
|
41
|
+
if ((origin !== undefined && origin !== 'human') || TASK_NOTIFICATION.test(text))
|
|
42
|
+
return { kind: 'notification' };
|
|
43
|
+
if (LOCAL_COMMAND_TAG.test(text))
|
|
44
|
+
return { kind: 'hidden', why: 'local output' };
|
|
45
|
+
// Command output sent on to the model: its own turn (the translator shows
|
|
46
|
+
// it as its output row, never a bubble).
|
|
47
|
+
if (BASH_OUTPUT_TAG.test(text))
|
|
48
|
+
return { kind: 'prompt', text: raw, queued: false };
|
|
49
|
+
if (COMMAND_TAG.test(text)) {
|
|
50
|
+
const line = commandLine(text);
|
|
51
|
+
// `/compact` never shows its own row (live hides it too); its summary
|
|
52
|
+
// is the compaction's row.
|
|
53
|
+
if (line === undefined || line === '/compact' || line.startsWith('/compact '))
|
|
54
|
+
return { kind: 'hidden', why: 'command echo' };
|
|
55
|
+
return { kind: 'prompt', text: line, queued: message.isQueuedCommand === true };
|
|
56
|
+
}
|
|
57
|
+
const bash = BASH_INPUT.exec(text);
|
|
58
|
+
if (bash !== null)
|
|
59
|
+
return { kind: 'prompt', text: `!${bash[1].trim()}`, queued: false };
|
|
60
|
+
return { kind: 'prompt', text: raw, queued: message.isQueuedCommand === true };
|
|
61
|
+
}
|
|
62
|
+
/** The report inside a foreground subagent's hand-back result (the frame
|
|
63
|
+
* stripped, the indentation removed). */
|
|
64
|
+
function handBackReport(text) {
|
|
65
|
+
const marker = text.indexOf('The report follows:');
|
|
66
|
+
let body = marker === -1 ? text : text.slice(marker + 'The report follows:'.length);
|
|
67
|
+
body = body.replace(/\n?agentId: [\s\S]*$/u, '').replace(/<usage>[\s\S]*?<\/usage>/gu, '');
|
|
68
|
+
return body.split('\n').map(line => line.replace(/^ {2}/u, '')).join('\n').trim();
|
|
69
|
+
}
|
|
70
|
+
/** `<usage>subagent_tokens: N …</usage>` of a hand-back result. */
|
|
71
|
+
function handBackUsage(text) {
|
|
72
|
+
const usage = /<usage>([\s\S]*?)<\/usage>/u.exec(text)?.[1];
|
|
73
|
+
if (usage === undefined)
|
|
74
|
+
return undefined;
|
|
75
|
+
const field = (name) => {
|
|
76
|
+
const value = Number(new RegExp(`${name}:\\s*(\\d+)`, 'u').exec(usage)?.[1]);
|
|
77
|
+
return Number.isFinite(value) ? value : undefined;
|
|
78
|
+
};
|
|
79
|
+
const total = field('subagent_tokens') ?? field('total_tokens');
|
|
80
|
+
const toolUses = field('tool_uses');
|
|
81
|
+
const durationMs = field('duration_ms');
|
|
82
|
+
return total === undefined && toolUses === undefined ? undefined : { ...(total === undefined ? {} : { total }), ...(toolUses === undefined ? {} : { toolUses }), ...(durationMs === undefined ? {} : { durationMs }) };
|
|
83
|
+
}
|
|
84
|
+
/** What a foreground subagent's recorded result says about its end. */
|
|
85
|
+
function resultOutcome(block) {
|
|
86
|
+
const text = userText(block.content) ?? (typeof block.content === 'string' ? block.content : '');
|
|
87
|
+
if (block.is_error === true)
|
|
88
|
+
return { status: 'failed', ...(text === '' ? {} : { summary: text }) };
|
|
89
|
+
if (text.startsWith(INTERRUPT_ECHO))
|
|
90
|
+
return { status: 'cancelled' };
|
|
91
|
+
const usage = handBackUsage(text);
|
|
92
|
+
const summary = handBackReport(text);
|
|
93
|
+
return { status: 'completed', ...(summary === '' ? {} : { summary }), ...(usage === undefined ? {} : { usage }) };
|
|
94
|
+
}
|
|
95
|
+
/** A `<task-notification>` prompt's fields. */
|
|
96
|
+
function notificationOf(text) {
|
|
97
|
+
const tag = (name) => new RegExp(`<${name}>([\\s\\S]*?)</${name}>`, 'u').exec(text)?.[1]?.trim();
|
|
98
|
+
const taskId = tag('task-id');
|
|
99
|
+
const callId = tag('tool-use-id');
|
|
100
|
+
const status = tag('status');
|
|
101
|
+
const summary = tag('summary') ?? tag('result');
|
|
102
|
+
return { ...(taskId === undefined ? {} : { taskId }), ...(callId === undefined ? {} : { callId }), ...(status === undefined ? {} : { status }), ...(summary === undefined ? {} : { summary }) };
|
|
103
|
+
}
|
|
104
|
+
/** Replay one transcript chain. */
|
|
105
|
+
export function replayClaudeTranscript(messages, options) {
|
|
106
|
+
const debug = options.debug ?? (() => undefined);
|
|
107
|
+
let clock = 0;
|
|
108
|
+
const translator = createClaudeTranslator({ cwd: options.cwd, userRows: 'lifecycle', now: () => clock, debug });
|
|
109
|
+
const out = [];
|
|
110
|
+
/** The open turn saw `[Request interrupted …]`: it closes as aborted. */
|
|
111
|
+
let interrupted = false;
|
|
112
|
+
let model;
|
|
113
|
+
/** API message ids whose thinking count was already replayed. */
|
|
114
|
+
const counted = new Set();
|
|
115
|
+
/** Subagents launched by a call whose end has not been replayed yet. */
|
|
116
|
+
const launched = new Map();
|
|
117
|
+
/** Subagent transcripts already attached to a delegation (a healed child
|
|
118
|
+
* must not attach twice; the same transcript is reachable under both its
|
|
119
|
+
* delegating call id and its own agent id). */
|
|
120
|
+
const claimed = new Set();
|
|
121
|
+
/** Every transcript once, by its own agent id (the map also keys them by
|
|
122
|
+
* their delegating call). */
|
|
123
|
+
const uniqueTranscripts = [];
|
|
124
|
+
for (const transcript of options.subagents?.values() ?? []) {
|
|
125
|
+
if (uniqueTranscripts.some(seen => seen.agentId === transcript.agentId))
|
|
126
|
+
continue;
|
|
127
|
+
uniqueTranscripts.push(transcript);
|
|
128
|
+
}
|
|
129
|
+
/** Recorded hand-back results name the child they return (`agentId: <id>` —
|
|
130
|
+
* the same line handBackReport strips): an exact, falsifiable attribution
|
|
131
|
+
* channel for a child whose own metadata never recorded the call id. */
|
|
132
|
+
const childOfResult = new Map();
|
|
133
|
+
const indexHandBackIds = (source) => {
|
|
134
|
+
for (const raw of source) {
|
|
135
|
+
const message = rec(raw);
|
|
136
|
+
if (message === undefined || message.type !== 'user')
|
|
137
|
+
continue;
|
|
138
|
+
for (const block of arr(rec(message.message)?.content).map(rec)) {
|
|
139
|
+
if (block?.type !== 'tool_result')
|
|
140
|
+
continue;
|
|
141
|
+
const callId = str(block.tool_use_id);
|
|
142
|
+
if (callId === undefined)
|
|
143
|
+
continue;
|
|
144
|
+
const text = userText(block.content) ?? (typeof block.content === 'string' ? block.content : '');
|
|
145
|
+
const child = /(?:^|\n)agentId: ([^\s\n]+)/u.exec(text)?.[1];
|
|
146
|
+
if (child !== undefined)
|
|
147
|
+
childOfResult.set(callId, child);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
};
|
|
151
|
+
indexHandBackIds(messages);
|
|
152
|
+
for (const transcript of uniqueTranscripts)
|
|
153
|
+
indexHandBackIds(transcript.messages);
|
|
154
|
+
/** The unclaimed transcript of an exact child id, if the store kept it. */
|
|
155
|
+
const unclaimedByAgentId = (agentId) => {
|
|
156
|
+
if (claimed.has(agentId))
|
|
157
|
+
return undefined;
|
|
158
|
+
return uniqueTranscripts.find(seen => seen.agentId === agentId);
|
|
159
|
+
};
|
|
160
|
+
const unclaimedCandidatesOf = (delegatorId) => uniqueTranscripts.filter(seen => !claimed.has(seen.agentId) && (delegatorId === undefined ? seen.parentAgentId == null : seen.parentAgentId === delegatorId));
|
|
161
|
+
const promptOfTranscript = (transcript) => {
|
|
162
|
+
const firstUser = transcript.messages.map(rec).find(message => message?.type === 'user');
|
|
163
|
+
return userText(rec(firstUser?.message)?.content);
|
|
164
|
+
};
|
|
165
|
+
const childForPrompt = (delegatorId, prompt) => {
|
|
166
|
+
if (prompt === undefined)
|
|
167
|
+
return undefined;
|
|
168
|
+
const matches = unclaimedCandidatesOf(delegatorId).filter(transcript => promptOfTranscript(transcript) === prompt);
|
|
169
|
+
return matches.length === 1 ? matches[0] : undefined;
|
|
170
|
+
};
|
|
171
|
+
const closeTurn = () => {
|
|
172
|
+
if (!translator.turnOpen) {
|
|
173
|
+
interrupted = false;
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
out.push(...translator.forceCloseTurn(interrupted ? { kind: 'aborted' } : { kind: 'completed' }));
|
|
177
|
+
interrupted = false;
|
|
178
|
+
};
|
|
179
|
+
const endSubagent = (callId, outcome) => {
|
|
180
|
+
const agent = launched.get(callId);
|
|
181
|
+
if (agent === undefined)
|
|
182
|
+
return;
|
|
183
|
+
launched.delete(callId);
|
|
184
|
+
out.push({
|
|
185
|
+
type: 'subagent.end',
|
|
186
|
+
agentId: agent.agentId,
|
|
187
|
+
status: outcome.status,
|
|
188
|
+
...(outcome.summary === undefined ? {} : { summary: outcome.summary }),
|
|
189
|
+
...(outcome.usage === undefined ? {} : { usage: outcome.usage }),
|
|
190
|
+
time: clock,
|
|
191
|
+
});
|
|
192
|
+
};
|
|
193
|
+
const assistant = (message) => {
|
|
194
|
+
const body = rec(message.message);
|
|
195
|
+
const id = str(body?.id);
|
|
196
|
+
const messageModel = str(body?.model);
|
|
197
|
+
if (messageModel !== undefined && messageModel !== '' && messageModel !== '<synthetic>')
|
|
198
|
+
model = messageModel;
|
|
199
|
+
out.push(...translator.translate({ type: 'assistant', message: body, uuid: message.uuid, parent_tool_use_id: null }));
|
|
200
|
+
const blocks = arr(body?.content).map(rec);
|
|
201
|
+
// The count row the live `thinking_tokens` estimate produces, from the
|
|
202
|
+
// API's own count (once per API message: every block entry repeats it).
|
|
203
|
+
if (id !== undefined && !counted.has(id) && blocks.some(block => block?.type === 'thinking' && (str(block.thinking) ?? '') === '')) {
|
|
204
|
+
counted.add(id);
|
|
205
|
+
const thinking = num(rec(rec(body?.usage)?.output_tokens_details)?.thinking_tokens);
|
|
206
|
+
if (thinking !== undefined && thinking > 0)
|
|
207
|
+
out.push(...translator.translate({ type: 'system', subtype: 'thinking_tokens', estimated_tokens: thinking }));
|
|
208
|
+
}
|
|
209
|
+
delegations(blocks, 0, undefined);
|
|
210
|
+
};
|
|
211
|
+
/**
|
|
212
|
+
* The `Agent` calls among some assistant blocks (of the main chain, or of
|
|
213
|
+
* a subagent's own transcript — a nested delegation): each one launched a
|
|
214
|
+
* subagent (the translator pre-created it from the call); when the
|
|
215
|
+
* session kept that subagent's transcript, its own id completes it and its
|
|
216
|
+
* messages follow as its lane. `delegatorId` is the agent whose transcript
|
|
217
|
+
* the calls sit in (undefined = the main chain) — a transcript whose call
|
|
218
|
+
* attribution is missing requires a matching child prompt.
|
|
219
|
+
*/
|
|
220
|
+
const delegations = (blocks, depth, delegatorId) => {
|
|
221
|
+
for (const block of blocks) {
|
|
222
|
+
if (block?.type !== 'tool_use')
|
|
223
|
+
continue;
|
|
224
|
+
const callId = str(block.id);
|
|
225
|
+
const name = str(block.name);
|
|
226
|
+
if (callId === undefined || name === undefined || !AGENT_TOOLS.has(name) || launched.has(callId))
|
|
227
|
+
continue;
|
|
228
|
+
const input = rec(block.input);
|
|
229
|
+
const background = input?.run_in_background === true;
|
|
230
|
+
const byCall = depth < MAX_NESTING ? options.subagents?.get(callId) : undefined;
|
|
231
|
+
let transcript = byCall !== undefined && !claimed.has(byCall.agentId) ? byCall : undefined;
|
|
232
|
+
let via = transcript !== undefined ? 'call id' : undefined;
|
|
233
|
+
if (transcript === undefined && depth < MAX_NESTING) {
|
|
234
|
+
// The recorded hand-back names the child.
|
|
235
|
+
const named = childOfResult.get(callId);
|
|
236
|
+
transcript = named === undefined ? undefined : unclaimedByAgentId(named);
|
|
237
|
+
if (transcript !== undefined)
|
|
238
|
+
via = 'hand-back agent id';
|
|
239
|
+
else {
|
|
240
|
+
// The prompt must match the transcript and identify one child.
|
|
241
|
+
transcript = childForPrompt(delegatorId, str(input?.prompt));
|
|
242
|
+
if (transcript !== undefined)
|
|
243
|
+
via = 'unique prompt match';
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
if (via !== undefined && transcript !== byCall)
|
|
247
|
+
debug(`claude replay: subagent transcript attached by ${via}`);
|
|
248
|
+
launched.set(callId, { agentId: transcript?.agentId ?? callId, background });
|
|
249
|
+
if (transcript === undefined)
|
|
250
|
+
continue;
|
|
251
|
+
claimed.add(transcript.agentId);
|
|
252
|
+
// The recorded parent_agent_id wins; else the transcript the
|
|
253
|
+
// delegating call sits in (undefined = the main chain). depth is
|
|
254
|
+
// always emitted: a main-chain delegation is a depth-1 spawn, and the
|
|
255
|
+
// roster treats depth 1 as a main-loop child (parents are never
|
|
256
|
+
// inferred from a deeper depth).
|
|
257
|
+
const parentAgentId = transcript.parentAgentId ?? delegatorId;
|
|
258
|
+
out.push({
|
|
259
|
+
type: 'subagent.start',
|
|
260
|
+
agentId: transcript.agentId,
|
|
261
|
+
parentCallId: callId,
|
|
262
|
+
description: str(input?.description) ?? '',
|
|
263
|
+
...(str(input?.subagent_type) === undefined ? {} : { kind: str(input?.subagent_type) }),
|
|
264
|
+
background,
|
|
265
|
+
depth: depth + 1,
|
|
266
|
+
...(parentAgentId === undefined ? {} : { parentAgentId }),
|
|
267
|
+
time: clock,
|
|
268
|
+
});
|
|
269
|
+
lane(callId, transcript, depth + 1);
|
|
270
|
+
}
|
|
271
|
+
};
|
|
272
|
+
/** A subagent's own messages, as the live lane delivered them; the
|
|
273
|
+
* subagents IT delegated to end from its own results. */
|
|
274
|
+
const lane = (callId, transcript, depth) => {
|
|
275
|
+
for (const raw of transcript.messages) {
|
|
276
|
+
const message = rec(raw);
|
|
277
|
+
if (message === undefined || (message.type !== 'assistant' && message.type !== 'user'))
|
|
278
|
+
continue;
|
|
279
|
+
const time = Date.parse(str(message.timestamp) ?? '');
|
|
280
|
+
if (Number.isFinite(time))
|
|
281
|
+
clock = time;
|
|
282
|
+
out.push(...translator.translate({ ...message, parent_tool_use_id: callId }));
|
|
283
|
+
const content = arr(rec(message.message)?.content).map(rec);
|
|
284
|
+
if (message.type === 'assistant') {
|
|
285
|
+
delegations(content, depth, transcript.agentId);
|
|
286
|
+
continue;
|
|
287
|
+
}
|
|
288
|
+
const structured = rec(message.tool_use_result ?? message.toolUseResult);
|
|
289
|
+
for (const block of content)
|
|
290
|
+
endFromResult(block, structured);
|
|
291
|
+
}
|
|
292
|
+
};
|
|
293
|
+
/** A recorded tool result that ends the subagent its call launched (a
|
|
294
|
+
* background one's result only acknowledges the launch). */
|
|
295
|
+
const endFromResult = (block, structured) => {
|
|
296
|
+
if (block?.type !== 'tool_result')
|
|
297
|
+
return;
|
|
298
|
+
const callId = str(block.tool_use_id);
|
|
299
|
+
const agent = callId === undefined ? undefined : launched.get(callId);
|
|
300
|
+
if (callId === undefined || agent === undefined)
|
|
301
|
+
return;
|
|
302
|
+
const text = userText(block.content) ?? (typeof block.content === 'string' ? block.content : '');
|
|
303
|
+
if (agent.background || ASYNC_LAUNCH.test(text) || structured?.status === 'async_launched' || structured?.isAsync === true) {
|
|
304
|
+
agent.background = true;
|
|
305
|
+
return;
|
|
306
|
+
}
|
|
307
|
+
endSubagent(callId, resultOutcome(block));
|
|
308
|
+
};
|
|
309
|
+
const user = (message) => {
|
|
310
|
+
const uuid = str(message.uuid) ?? `replay-${translator.seqNumber + 1}`;
|
|
311
|
+
const kind = classifyUser(message);
|
|
312
|
+
switch (kind.kind) {
|
|
313
|
+
case 'results': {
|
|
314
|
+
// The raw transcript file keeps the structured result the read API
|
|
315
|
+
// drops (richer cards when "load earlier" replays it).
|
|
316
|
+
const structured = message.tool_use_result ?? message.toolUseResult;
|
|
317
|
+
out.push(...translator.translate({ type: 'user', uuid, message: message.message, parent_tool_use_id: null, ...(structured === undefined ? {} : { tool_use_result: structured }) }));
|
|
318
|
+
// A background subagent's result only acknowledges the launch; its
|
|
319
|
+
// end is the notification naming it.
|
|
320
|
+
for (const raw of arr(rec(message.message)?.content))
|
|
321
|
+
endFromResult(rec(raw), rec(structured));
|
|
322
|
+
return;
|
|
323
|
+
}
|
|
324
|
+
case 'summary':
|
|
325
|
+
closeTurn();
|
|
326
|
+
out.push(...translator.translate({ type: 'system', subtype: 'compact_boundary', compact_metadata: {} }));
|
|
327
|
+
out.push(...translator.translate({ type: 'user', uuid, isSynthetic: true, message: { role: 'user', content: kind.text }, parent_tool_use_id: null }));
|
|
328
|
+
return;
|
|
329
|
+
case 'prompt':
|
|
330
|
+
// A prompt folded into a running turn joins it; any other prompt
|
|
331
|
+
// starts the next turn.
|
|
332
|
+
if (!kind.queued)
|
|
333
|
+
closeTurn();
|
|
334
|
+
// Images sent with it: lazy facades over the base64 the transcript
|
|
335
|
+
// holds (nothing decoded until shown).
|
|
336
|
+
translator.registerInput(uuid, kind.text, 'turn', transcriptImages(rec(message.message)?.content, uuid));
|
|
337
|
+
out.push(...translator.translate({ type: 'command_lifecycle', command_uuid: uuid, state: 'started' }));
|
|
338
|
+
return;
|
|
339
|
+
case 'interrupt':
|
|
340
|
+
interrupted = true;
|
|
341
|
+
return;
|
|
342
|
+
case 'notification': {
|
|
343
|
+
// The notification a background subagent's end was reported with.
|
|
344
|
+
const notice = notificationOf(userText(rec(message.message)?.content) ?? '');
|
|
345
|
+
const callId = notice.callId !== undefined && launched.has(notice.callId)
|
|
346
|
+
? notice.callId
|
|
347
|
+
: [...launched].find(([, agent]) => agent.agentId === notice.taskId)?.[0];
|
|
348
|
+
if (callId !== undefined) {
|
|
349
|
+
const status = notice.status === 'completed' ? 'completed' : notice.status === 'failed' ? 'failed' : notice.status === 'stopped' || notice.status === 'killed' ? 'cancelled' : 'unknown';
|
|
350
|
+
endSubagent(callId, { status, ...(notice.summary === undefined ? {} : { summary: notice.summary }) });
|
|
351
|
+
}
|
|
352
|
+
closeTurn();
|
|
353
|
+
out.push(...translator.openNotificationTurn());
|
|
354
|
+
return;
|
|
355
|
+
}
|
|
356
|
+
case 'hidden':
|
|
357
|
+
debug(`claude replay: ${kind.why} user message not projected`);
|
|
358
|
+
return;
|
|
359
|
+
default: {
|
|
360
|
+
const unknown = kind;
|
|
361
|
+
return unknown;
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
};
|
|
365
|
+
// A chain that begins at a compaction (the boundary entry, then the
|
|
366
|
+
// summary) has older history on disk.
|
|
367
|
+
const first = rec(messages[0]);
|
|
368
|
+
const second = rec(messages[1]);
|
|
369
|
+
const compactedFrom = first?.isCompactSummary === true
|
|
370
|
+
? str(first.uuid)
|
|
371
|
+
: first?.type === 'system' && second?.isCompactSummary === true ? str(first.uuid) : undefined;
|
|
372
|
+
for (const raw of messages) {
|
|
373
|
+
const message = rec(raw);
|
|
374
|
+
if (message === undefined)
|
|
375
|
+
continue;
|
|
376
|
+
const time = Date.parse(str(message.timestamp) ?? '');
|
|
377
|
+
if (Number.isFinite(time))
|
|
378
|
+
clock = time;
|
|
379
|
+
// Subagent traffic never interleaves with the main transcript.
|
|
380
|
+
if ((message.parent_tool_use_id !== undefined && message.parent_tool_use_id !== null) || message.isSidechain === true)
|
|
381
|
+
continue;
|
|
382
|
+
switch (message.type) {
|
|
383
|
+
case 'assistant':
|
|
384
|
+
assistant(message);
|
|
385
|
+
break;
|
|
386
|
+
case 'user':
|
|
387
|
+
user(message);
|
|
388
|
+
break;
|
|
389
|
+
default:
|
|
390
|
+
// System entries reach the read API without their subtype; the one
|
|
391
|
+
// that matters (a compact boundary) is replayed from the summary
|
|
392
|
+
// that follows it.
|
|
393
|
+
break;
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
closeTurn();
|
|
397
|
+
// No recorded end (a nested delegation included): the CLI that ran it is
|
|
398
|
+
// gone, its state is unknown.
|
|
399
|
+
for (const callId of [...launched.keys()])
|
|
400
|
+
endSubagent(callId, { status: 'unknown' });
|
|
401
|
+
if (options.title !== undefined && options.title !== '')
|
|
402
|
+
out.push({ type: 'session.title', title: options.title, source: 'auto' });
|
|
403
|
+
if (model !== undefined)
|
|
404
|
+
out.push({ type: 'model.changed', model, source: 'resume' });
|
|
405
|
+
const tasks = translator.taskSeeds();
|
|
406
|
+
return {
|
|
407
|
+
events: out,
|
|
408
|
+
start: { turn: translator.turnNumber, seq: translator.seqNumber, ...(model === undefined ? {} : { model }) },
|
|
409
|
+
...(tasks.length === 0 ? {} : { tasks }),
|
|
410
|
+
...(compactedFrom === undefined ? {} : { compactedFrom }),
|
|
411
|
+
};
|
|
412
|
+
}
|
|
413
|
+
export function replayClaudeSubagentLane(agentId, messages, options) {
|
|
414
|
+
const debug = options.debug ?? (() => undefined);
|
|
415
|
+
let clock = 0;
|
|
416
|
+
let seq = 0;
|
|
417
|
+
const translator = createClaudeTranslator({ cwd: options.cwd, userRows: 'lifecycle', now: () => clock, debug });
|
|
418
|
+
const events = [];
|
|
419
|
+
const uuids = [];
|
|
420
|
+
let parentAgentId = null;
|
|
421
|
+
const nextSeq = () => { seq += 1; return seq; };
|
|
422
|
+
for (const raw of messages) {
|
|
423
|
+
const message = rec(raw);
|
|
424
|
+
if (message === undefined || (message.type !== 'assistant' && message.type !== 'user'))
|
|
425
|
+
continue;
|
|
426
|
+
const uuid = str(message.uuid);
|
|
427
|
+
if (uuid !== undefined)
|
|
428
|
+
uuids.push(uuid);
|
|
429
|
+
if (typeof message.parent_agent_id === 'string')
|
|
430
|
+
parentAgentId = message.parent_agent_id;
|
|
431
|
+
const time = Date.parse(str(message.timestamp) ?? '');
|
|
432
|
+
if (Number.isFinite(time))
|
|
433
|
+
clock = time;
|
|
434
|
+
if (message.type === 'assistant') {
|
|
435
|
+
const body = rec(message.message);
|
|
436
|
+
const blocks = arr(body?.content).map(rec);
|
|
437
|
+
// Count/signature-only thinking (the API returns signatures, not
|
|
438
|
+
// bodies, unless summaries are enabled) becomes a marker block the
|
|
439
|
+
// transcript view renders as an honest "body unavailable" row.
|
|
440
|
+
if (blocks.some(block => block?.type === 'thinking' && (str(block?.thinking) ?? '') === '')) {
|
|
441
|
+
const tokens = num(rec(rec(body?.usage)?.output_tokens_details)?.thinking_tokens);
|
|
442
|
+
events.push({
|
|
443
|
+
type: 'assistant.message',
|
|
444
|
+
seq: nextSeq(),
|
|
445
|
+
anchor: str(body?.id) ?? uuid ?? `lane-${seq}`,
|
|
446
|
+
attemptId: str(body?.id) ?? uuid ?? `lane-${seq}`,
|
|
447
|
+
time: clock,
|
|
448
|
+
blocks: [tokens !== undefined && tokens > 0 ? { type: 'reasoning-tokens', text: String(tokens) } : { type: 'reasoning-signature', text: '' }],
|
|
449
|
+
canonical: false,
|
|
450
|
+
parentCallId: agentId,
|
|
451
|
+
});
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
events.push(...translator.translate({ ...message, parent_tool_use_id: agentId }));
|
|
455
|
+
}
|
|
456
|
+
return { events, parentAgentId, uuids };
|
|
457
|
+
}
|
|
458
|
+
/**
|
|
459
|
+
* The uuid of the chain entry right before `anchor` — where a conversation
|
|
460
|
+
* rewind cuts (`forkSession({upToMessageId})` keeps it, inclusive). Undefined
|
|
461
|
+
* when `anchor` is not in the chain or is its first entry (nothing precedes
|
|
462
|
+
* it: there is no conversation to rewind to).
|
|
463
|
+
*/
|
|
464
|
+
export function rewindCutPoint(messages, anchor) {
|
|
465
|
+
const index = messages.findIndex(message => rec(message)?.uuid === anchor);
|
|
466
|
+
if (index <= 0)
|
|
467
|
+
return undefined;
|
|
468
|
+
return str(rec(messages[index - 1])?.uuid);
|
|
469
|
+
}
|
|
470
|
+
/** The trailing exchanges of a chain, for the browser's preview (newest last). */
|
|
471
|
+
export function previewEntries(messages, limit) {
|
|
472
|
+
const entries = [];
|
|
473
|
+
/** The API message the last assistant entry came from (one entry per
|
|
474
|
+
* block on disk: their text joins into one exchange). */
|
|
475
|
+
let lastAssistantId;
|
|
476
|
+
for (const raw of messages) {
|
|
477
|
+
const message = rec(raw);
|
|
478
|
+
if (message === undefined || (message.parent_tool_use_id !== undefined && message.parent_tool_use_id !== null))
|
|
479
|
+
continue;
|
|
480
|
+
const at = Date.parse(str(message.timestamp) ?? '');
|
|
481
|
+
const time = Number.isFinite(at) ? at : undefined;
|
|
482
|
+
if (message.type === 'user') {
|
|
483
|
+
const kind = classifyUser(message);
|
|
484
|
+
if (kind.kind !== 'prompt')
|
|
485
|
+
continue;
|
|
486
|
+
entries.push({ role: 'user', text: kind.text.trim(), at: time });
|
|
487
|
+
lastAssistantId = undefined;
|
|
488
|
+
continue;
|
|
489
|
+
}
|
|
490
|
+
if (message.type !== 'assistant')
|
|
491
|
+
continue;
|
|
492
|
+
const body = rec(message.message);
|
|
493
|
+
const text = arr(body?.content).flatMap(block => rec(block)?.type === 'text' ? [str(rec(block)?.text) ?? ''] : []).join('').trim();
|
|
494
|
+
if (text === '')
|
|
495
|
+
continue;
|
|
496
|
+
const id = str(body?.id);
|
|
497
|
+
const last = entries.at(-1);
|
|
498
|
+
if (last !== undefined && last.role === 'assistant' && id !== undefined && id === lastAssistantId)
|
|
499
|
+
last.text = `${last.text}\n${text}`;
|
|
500
|
+
else
|
|
501
|
+
entries.push({ role: 'assistant', text, at: time });
|
|
502
|
+
lastAssistantId = id;
|
|
503
|
+
}
|
|
504
|
+
return entries.slice(-limit);
|
|
505
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Startup-warning filter for the Claude Agent SDK (a deliberate-integration
|
|
3
|
+
* note, not a bug): this profile pre-approves the todo-panel tool family
|
|
4
|
+
* additively via `allowedTools` (see options.ts) and can start a session in
|
|
5
|
+
* the remembered `bypassPermissions` mode. In both cases the SDK calls
|
|
6
|
+
* `process.emitWarning(msg, { code: 'CLAUDE_SDK_CAN_USE_TOOL_SHADOWED' })`
|
|
7
|
+
* to say canUseTool is shadowed for those calls. That choice is ours and
|
|
8
|
+
* intentional — the per-boot stderr warning only alarms the user (it reads
|
|
9
|
+
* like a defect, and it surfaced verbatim in a user crash report).
|
|
10
|
+
*
|
|
11
|
+
* Suppression mechanism, chosen from a probed Node 24 fact: the default
|
|
12
|
+
* warning printer is itself a `warning` listener (listenerCount is >= 1 on a
|
|
13
|
+
* bare boot) and keeps printing even when user listeners are added, so
|
|
14
|
+
* listening cannot filter. The one reliable lever is not emitting the
|
|
15
|
+
* warning at all: wrap `process.emitWarning` and drop exactly that code,
|
|
16
|
+
* forwarding everything else to the original untouched (node keeps its own
|
|
17
|
+
* native formatting for passthrough warnings).
|
|
18
|
+
*
|
|
19
|
+
* @module dsh-tui/backends/claude/sdk-warnings
|
|
20
|
+
*/
|
|
21
|
+
/** Whether one warning code is the SDK's canUseTool-shadow notice. */
|
|
22
|
+
export declare function isSuppressedSdkWarningCode(code: string | undefined): boolean;
|
|
23
|
+
//# sourceMappingURL=sdk-warnings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sdk-warnings.d.ts","sourceRoot":"","sources":["../../../../src/backends/claude/sdk-warnings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAOH,sEAAsE;AACtE,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAE5E"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Startup-warning filter for the Claude Agent SDK (a deliberate-integration
|
|
3
|
+
* note, not a bug): this profile pre-approves the todo-panel tool family
|
|
4
|
+
* additively via `allowedTools` (see options.ts) and can start a session in
|
|
5
|
+
* the remembered `bypassPermissions` mode. In both cases the SDK calls
|
|
6
|
+
* `process.emitWarning(msg, { code: 'CLAUDE_SDK_CAN_USE_TOOL_SHADOWED' })`
|
|
7
|
+
* to say canUseTool is shadowed for those calls. That choice is ours and
|
|
8
|
+
* intentional — the per-boot stderr warning only alarms the user (it reads
|
|
9
|
+
* like a defect, and it surfaced verbatim in a user crash report).
|
|
10
|
+
*
|
|
11
|
+
* Suppression mechanism, chosen from a probed Node 24 fact: the default
|
|
12
|
+
* warning printer is itself a `warning` listener (listenerCount is >= 1 on a
|
|
13
|
+
* bare boot) and keeps printing even when user listeners are added, so
|
|
14
|
+
* listening cannot filter. The one reliable lever is not emitting the
|
|
15
|
+
* warning at all: wrap `process.emitWarning` and drop exactly that code,
|
|
16
|
+
* forwarding everything else to the original untouched (node keeps its own
|
|
17
|
+
* native formatting for passthrough warnings).
|
|
18
|
+
*
|
|
19
|
+
* @module dsh-tui/backends/claude/sdk-warnings
|
|
20
|
+
*/
|
|
21
|
+
/** Marker the wrapper sets, so tests and double loads can recognize it. */
|
|
22
|
+
const FILTER_MARKER = '__dshTuiSdkWarningFilter';
|
|
23
|
+
const SUPPRESSED_WARNING_CODES = new Set(['CLAUDE_SDK_CAN_USE_TOOL_SHADOWED']);
|
|
24
|
+
/** Whether one warning code is the SDK's canUseTool-shadow notice. */
|
|
25
|
+
export function isSuppressedSdkWarningCode(code) {
|
|
26
|
+
return code !== undefined && SUPPRESSED_WARNING_CODES.has(code);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* The code argument of one emitWarning call, both shapes the SDK and node
|
|
30
|
+
* core use: `(warning, { code })` and `(warning, type, code[, ctor])`.
|
|
31
|
+
*/
|
|
32
|
+
function emitWarningCode(arg1, arg2) {
|
|
33
|
+
if (typeof arg1 === 'object' && arg1 !== null) {
|
|
34
|
+
const code = arg1.code;
|
|
35
|
+
return typeof code === 'string' ? code : undefined;
|
|
36
|
+
}
|
|
37
|
+
if (typeof arg2 === 'string')
|
|
38
|
+
return arg2;
|
|
39
|
+
return undefined;
|
|
40
|
+
}
|
|
41
|
+
// Runs before the first query() construction (options.ts is in that import
|
|
42
|
+
// chain). Idempotent across double loads via a global marker.
|
|
43
|
+
// eslint-disable-next-line custom-rules/no-top-level-side-effects
|
|
44
|
+
const globalScope = globalThis;
|
|
45
|
+
if (!globalScope[FILTER_MARKER]) {
|
|
46
|
+
globalScope[FILTER_MARKER] = true;
|
|
47
|
+
const original = process.emitWarning.bind(process);
|
|
48
|
+
const patched = ((warning, arg1, arg2, arg3) => {
|
|
49
|
+
if (isSuppressedSdkWarningCode(emitWarningCode(arg1, arg2)))
|
|
50
|
+
return;
|
|
51
|
+
return original(warning, arg1, arg2, arg3);
|
|
52
|
+
});
|
|
53
|
+
Object.defineProperty(patched, FILTER_MARKER, { value: true });
|
|
54
|
+
process.emitWarning = patched;
|
|
55
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type * as ClaudeSdk from '@anthropic-ai/claude-agent-sdk';
|
|
2
|
+
/** The SDK's session-store read/write API: the catalog, the
|
|
3
|
+
* resume replay, fork and conversation rewind. */
|
|
4
|
+
export type ClaudeSessionStoreSdk = Pick<typeof ClaudeSdk, 'listSessions' | 'getSessionInfo' | 'getSessionMessages' | 'listSubagents' | 'getSubagentMessages' | 'renameSession' | 'deleteSession' | 'forkSession'>;
|
|
5
|
+
/** The SDK surface this backend calls: a structural subset, so tests can
|
|
6
|
+
* hand the session a fake module without the real CLI. */
|
|
7
|
+
export type ClaudeSdkModule = Pick<typeof ClaudeSdk, 'query' | 'resolveSettings' | 'filterEscalatingDefaultMode'> & ClaudeSessionStoreSdk;
|
|
8
|
+
/** Import the SDK once per process; a failed import is retried next time. */
|
|
9
|
+
export declare function loadClaudeSdk(): Promise<ClaudeSdkModule>;
|
|
10
|
+
/** The installed SDK version, or undefined when it cannot be read. */
|
|
11
|
+
export declare function installedSdkVersion(): string | undefined;
|
|
12
|
+
//# sourceMappingURL=sdk.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../../../../src/backends/claude/sdk.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,KAAK,SAAS,MAAM,gCAAgC,CAAA;AAEhE;mDACmD;AACnD,MAAM,MAAM,qBAAqB,GAAG,IAAI,CAAC,OAAO,SAAS,EACrD,cAAc,GAAG,gBAAgB,GAAG,oBAAoB,GAAG,eAAe,GAAG,qBAAqB,GAClG,eAAe,GAAG,eAAe,GAAG,aAAa,CAAC,CAAA;AAEtD;2DAC2D;AAC3D,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,SAAS,EAAE,OAAO,GAAG,iBAAiB,GAAG,6BAA6B,CAAC,GAAG,qBAAqB,CAAA;AAOzI,6EAA6E;AAC7E,wBAAgB,aAAa,IAAI,OAAO,CAAC,eAAe,CAAC,CAMxD;AAED,sEAAsE;AACtE,wBAAgB,mBAAmB,IAAI,MAAM,GAAG,SAAS,CASxD"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Loader for the optional `@anthropic-ai/claude-agent-sdk` peer.
|
|
3
|
+
* The package is an optional peer dependency: a DSH-only install never has
|
|
4
|
+
* it, so it is only ever reached through a dynamic `import()` whose
|
|
5
|
+
* specifier is not a string literal — bundlers, `verify:package` and the bun
|
|
6
|
+
* package check never try to resolve it statically, and loading dsh-tui
|
|
7
|
+
* without it costs nothing until the Claude backend is selected.
|
|
8
|
+
*/
|
|
9
|
+
import { readFileSync } from 'node:fs';
|
|
10
|
+
import { createRequire } from 'node:module';
|
|
11
|
+
import { dirname, join } from 'node:path';
|
|
12
|
+
/** Assembled at runtime on purpose (see the module comment). */
|
|
13
|
+
const SDK_SPECIFIER = ['@anthropic-ai', 'claude-agent-sdk'].join('/');
|
|
14
|
+
let loading;
|
|
15
|
+
/** Import the SDK once per process; a failed import is retried next time. */
|
|
16
|
+
export function loadClaudeSdk() {
|
|
17
|
+
loading ??= import(SDK_SPECIFIER).catch((error) => {
|
|
18
|
+
loading = undefined;
|
|
19
|
+
throw error;
|
|
20
|
+
});
|
|
21
|
+
return loading;
|
|
22
|
+
}
|
|
23
|
+
/** The installed SDK version, or undefined when it cannot be read. */
|
|
24
|
+
export function installedSdkVersion() {
|
|
25
|
+
try {
|
|
26
|
+
const entry = createRequire(import.meta.url).resolve(SDK_SPECIFIER);
|
|
27
|
+
const manifest = JSON.parse(readFileSync(join(dirname(entry), 'package.json'), 'utf8'));
|
|
28
|
+
const version = typeof manifest === 'object' && manifest !== null ? manifest.version : undefined;
|
|
29
|
+
return typeof version === 'string' ? version : undefined;
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
return undefined;
|
|
33
|
+
}
|
|
34
|
+
}
|