@deepseek-harness-tui/dsh-tui 0.13.0 → 0.14.0
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
package/lib/types/update.js
CHANGED
|
@@ -7,6 +7,12 @@ import { fileURLToPath } from 'node:url';
|
|
|
7
7
|
import { gte, gt, lt, valid } from 'semver';
|
|
8
8
|
import { shellQuote } from './utils/shellQuote.js';
|
|
9
9
|
import { DATA_DIR } from './utils/paths.js';
|
|
10
|
+
import { stripResumeArgs } from './sessionHistory.js';
|
|
11
|
+
import { KERNEL_SWITCH_HANDOFF_ENV, isKernelId, kernelDisplayName } from './kernelPrefs.js';
|
|
12
|
+
import { classifyReplacementOutcome, formatHandoffNotice, handoffEventTag, writeHandoffStage } from './handoffEvents.js';
|
|
13
|
+
import { HANDOFF_ACK_FD_ENV, HANDOFF_ATTEMPT_ENV, HANDOFF_SCREEN_ENV, parseHandoffAckLine } from './handoffAck.js';
|
|
14
|
+
import { DISABLE_KITTY_KEYBOARD, DISABLE_MODIFY_OTHER_KEYS, DISABLE_WIN32_INPUT_MODE } from './ink/termio/csi.js';
|
|
15
|
+
import { DBP, DFE, DISABLE_MOUSE_TRACKING, EXIT_ALT_SCREEN, SHOW_CURSOR } from './ink/termio/dec.js';
|
|
10
16
|
// Re-exported for scripts/verify-update.mjs and the bin launcher, which reads
|
|
11
17
|
// the compiled copy at lib/types/utils/shellQuote.js.
|
|
12
18
|
export { shellQuote };
|
|
@@ -62,6 +68,75 @@ function writeRestartLine(line) {
|
|
|
62
68
|
export function logRestartEvent(event, data) {
|
|
63
69
|
writeRestartLine(`${event}${data === undefined ? '' : ` ${JSON.stringify(data)}`}`);
|
|
64
70
|
}
|
|
71
|
+
const LAST_RUN_FILE = join(DATA_DIR, 'last-run.json');
|
|
72
|
+
/** Windows rename retry cell (kernelPrefs writeKernelPrefs precedent). */
|
|
73
|
+
const lastRunWaitCell = new Int32Array(new SharedArrayBuffer(4));
|
|
74
|
+
/**
|
|
75
|
+
* Stamp the last-run record atomically (tmp + rename, so the launcher's read
|
|
76
|
+
* never sees half a file). Best effort, never throws: a failed stamp only
|
|
77
|
+
* degrades the launcher's retry to its legacy sniffing path.
|
|
78
|
+
* @param record - Identity without updatedAt (stamped here, one clock).
|
|
79
|
+
* @param file - Path override (verify scripts point at a temp dir).
|
|
80
|
+
*/
|
|
81
|
+
export function writeLastRunRecord(record, file = LAST_RUN_FILE) {
|
|
82
|
+
const temporary = join(dirname(file), `.last-run.${process.pid}.${Date.now()}.tmp`);
|
|
83
|
+
try {
|
|
84
|
+
mkdirSync(dirname(file), { recursive: true });
|
|
85
|
+
const updatedAt = Date.now();
|
|
86
|
+
writeFileSync(temporary, `${JSON.stringify({ ...record, updatedAt }, null, 2)}\n`, { encoding: 'utf8', flag: 'wx', mode: 0o600 });
|
|
87
|
+
for (let attempt = 0;; attempt++) {
|
|
88
|
+
try {
|
|
89
|
+
renameSync(temporary, file);
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
const code = typeof error === 'object' && error !== null ? String(error.code) : '';
|
|
94
|
+
if (process.platform !== 'win32' || attempt >= 7 || (code !== 'EPERM' && code !== 'EBUSY'))
|
|
95
|
+
throw error;
|
|
96
|
+
Atomics.wait(lastRunWaitCell, 0, 0, 2 ** attempt);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
try {
|
|
102
|
+
rmSync(temporary, { force: true });
|
|
103
|
+
}
|
|
104
|
+
catch {
|
|
105
|
+
// The previous record stays; no safe remedy.
|
|
106
|
+
}
|
|
107
|
+
writeRestartLine(`last-run record write failed (${error instanceof Error ? error.message : String(error)})`);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Read the last-run record; unreadable/invalid/missing yields undefined (the
|
|
112
|
+
* caller falls back to its legacy behavior). Never throws.
|
|
113
|
+
* @param file - Path override (verify scripts point at a temp dir).
|
|
114
|
+
*/
|
|
115
|
+
export function readLastRunRecord(file = LAST_RUN_FILE) {
|
|
116
|
+
try {
|
|
117
|
+
const parsed = JSON.parse(readFileSync(file, 'utf8'));
|
|
118
|
+
if (parsed === null || typeof parsed !== 'object' || Array.isArray(parsed))
|
|
119
|
+
return undefined;
|
|
120
|
+
const record = parsed;
|
|
121
|
+
if (!isKernelId(record.backendId))
|
|
122
|
+
return undefined;
|
|
123
|
+
if (typeof record.sessionId !== 'string' || typeof record.cwd !== 'string' || typeof record.attemptId !== 'string')
|
|
124
|
+
return undefined;
|
|
125
|
+
if (typeof record.updatedAt !== 'number' || !Number.isFinite(record.updatedAt))
|
|
126
|
+
return undefined;
|
|
127
|
+
return {
|
|
128
|
+
backendId: record.backendId,
|
|
129
|
+
sessionId: record.sessionId,
|
|
130
|
+
cwd: record.cwd,
|
|
131
|
+
attemptId: record.attemptId,
|
|
132
|
+
updatedAt: record.updatedAt,
|
|
133
|
+
...(typeof record.pid === 'number' ? { pid: record.pid } : {}),
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
catch {
|
|
137
|
+
return undefined;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
65
140
|
/** Start a fresh, clearly delimited /restart attempt block in the log. */
|
|
66
141
|
export function beginRestartAttempt(sessionId) {
|
|
67
142
|
try {
|
|
@@ -94,6 +169,30 @@ export function writeHandoffNotice(text) {
|
|
|
94
169
|
process.stderr.write(text);
|
|
95
170
|
}
|
|
96
171
|
}
|
|
172
|
+
/**
|
|
173
|
+
* Hand the terminal back after a kernel-switch replacement that cannot clean
|
|
174
|
+
* up after itself: one that died before its first frame (this process still
|
|
175
|
+
* holds the alternate screen) or one killed by a signal. Besides leaving the
|
|
176
|
+
* alternate screen it turns off the input modes the replacement may already
|
|
177
|
+
* have enabled; each reset is harmless if the mode was never on. Written
|
|
178
|
+
* synchronously to fd 1 so the failure notice that follows lands on the main
|
|
179
|
+
* screen.
|
|
180
|
+
*/
|
|
181
|
+
export function restoreHandoffScreen() {
|
|
182
|
+
const reset = DISABLE_MOUSE_TRACKING + DISABLE_MODIFY_OTHER_KEYS + DISABLE_KITTY_KEYBOARD
|
|
183
|
+
+ DISABLE_WIN32_INPUT_MODE + DFE + DBP + SHOW_CURSOR + EXIT_ALT_SCREEN + '\r\n';
|
|
184
|
+
try {
|
|
185
|
+
writeFileSync(1, reset);
|
|
186
|
+
}
|
|
187
|
+
catch {
|
|
188
|
+
try {
|
|
189
|
+
process.stdout.write(reset);
|
|
190
|
+
}
|
|
191
|
+
catch {
|
|
192
|
+
// Even a dead stdout must not block the exit path.
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
97
196
|
/** Read the version from either the compiled package or the source checkout. */
|
|
98
197
|
export function installedTuiVersion() {
|
|
99
198
|
const here = dirname(fileURLToPath(import.meta.url));
|
|
@@ -1579,9 +1678,10 @@ export async function updateTui(profile, targetVersion) {
|
|
|
1579
1678
|
* other profile would leave the running install untouched.
|
|
1580
1679
|
* @param targetVersion - Exact version returned by the preflight registry
|
|
1581
1680
|
* check, or undefined when that check failed and pnpm should resolve latest.
|
|
1681
|
+
* @param kernel - The kernel this process runs (TuiRestartOptions.kernel).
|
|
1582
1682
|
* @returns Exit codes for the update run and the replacement process.
|
|
1583
1683
|
*/
|
|
1584
|
-
export async function updateTuiAndRestart(sessionId, profile, targetVersion) {
|
|
1684
|
+
export async function updateTuiAndRestart(sessionId, profile, targetVersion, kernel) {
|
|
1585
1685
|
const outcome = await updateTui(profile, targetVersion);
|
|
1586
1686
|
const { updatedFrom } = outcome;
|
|
1587
1687
|
if (outcome.code !== 0)
|
|
@@ -1596,6 +1696,7 @@ export async function updateTuiAndRestart(sessionId, profile, targetVersion) {
|
|
|
1596
1696
|
const restartCode = await restartTui(sessionId, {
|
|
1597
1697
|
env: { [UPDATED_FROM_ENV]: updatedFrom },
|
|
1598
1698
|
kind: 'update',
|
|
1699
|
+
...(kernel === undefined ? {} : { kernel }),
|
|
1599
1700
|
});
|
|
1600
1701
|
return { updateCode: 0, restartCode };
|
|
1601
1702
|
}
|
|
@@ -1688,10 +1789,58 @@ export function detachHandoffStdin(stdin = process.stdin) {
|
|
|
1688
1789
|
stdin.pause();
|
|
1689
1790
|
stdin.unref();
|
|
1690
1791
|
}
|
|
1792
|
+
/**
|
|
1793
|
+
* The replacement's env, pure: the resume marker, the /restart child stamp,
|
|
1794
|
+
* the caller's extra markers and the kernel-switch overrides. Exported for
|
|
1795
|
+
* scripts/verify-launchpad, which feeds it through the boot resolver.
|
|
1796
|
+
*/
|
|
1797
|
+
export function restartChildEnv(parentEnv, sessionId, kind, options) {
|
|
1798
|
+
const childEnv = {
|
|
1799
|
+
...parentEnv,
|
|
1800
|
+
// The replacement resumes the current session through the launcher
|
|
1801
|
+
// contract (DSH_TUI_RESUME_SESSION; see src/sessionHistory.ts).
|
|
1802
|
+
DSH_TUI_RESUME_SESSION: sessionId,
|
|
1803
|
+
// Marks the replacement so its own boot logs to restart.log without
|
|
1804
|
+
// noisy logging on every ordinary launch (/restart only).
|
|
1805
|
+
...(kind === 'restart' ? { [RESTART_CHILD_ENV]: '1' } : {}),
|
|
1806
|
+
...options.env,
|
|
1807
|
+
};
|
|
1808
|
+
// A stale handoff override never leaks into a plain replacement: the var is
|
|
1809
|
+
// one-shot (consumed at this process's own boot), and a child that is NOT
|
|
1810
|
+
// switching kernels keeps this process's kernel by config/env/memory as
|
|
1811
|
+
// usual.
|
|
1812
|
+
delete childEnv[KERNEL_SWITCH_HANDOFF_ENV];
|
|
1813
|
+
// Same for the alt-screen handoff markers: a replacement must not adopt a
|
|
1814
|
+
// screen or ACK pipe from an earlier attempt. restartTui sets them again
|
|
1815
|
+
// when it opens a handoff.
|
|
1816
|
+
delete childEnv[HANDOFF_SCREEN_ENV];
|
|
1817
|
+
delete childEnv[HANDOFF_ACK_FD_ENV];
|
|
1818
|
+
delete childEnv[HANDOFF_ATTEMPT_ENV];
|
|
1819
|
+
if (options.backend === undefined && options.kernel !== undefined)
|
|
1820
|
+
childEnv[KERNEL_SWITCH_HANDOFF_ENV] = options.kernel;
|
|
1821
|
+
if (options.backend !== undefined) {
|
|
1822
|
+
childEnv.DSH_TUI_BACKEND = options.backend;
|
|
1823
|
+
// DSH_TUI_BACKEND alone loses to a Config row (config > env > memory),
|
|
1824
|
+
// so the switch also sets the one-shot variable that ranks above config.
|
|
1825
|
+
childEnv[KERNEL_SWITCH_HANDOFF_ENV] = options.backend;
|
|
1826
|
+
// A kernel switch never resumes: the id of THIS backend's session means
|
|
1827
|
+
// nothing to the next one, and an inherited marker (this process may
|
|
1828
|
+
// itself be a /restart child) would send the new kernel looking for it —
|
|
1829
|
+
// deleted outright, not blanked (the launcher row maps '' to
|
|
1830
|
+
// config.sessionId='', not to "absent").
|
|
1831
|
+
delete childEnv.DSH_TUI_RESUME_SESSION;
|
|
1832
|
+
}
|
|
1833
|
+
return childEnv;
|
|
1834
|
+
}
|
|
1691
1835
|
export async function restartTui(sessionId, options = {}) {
|
|
1692
1836
|
const kind = options.kind ?? 'restart';
|
|
1693
|
-
const tag = kind === 'update' ? 'update-restart' : 'restart';
|
|
1694
|
-
|
|
1837
|
+
const tag = options.backend !== undefined ? 'backend-switch' : kind === 'update' ? 'update-restart' : 'restart';
|
|
1838
|
+
// A kernel switch must not hand the replacement THIS kernel's resume
|
|
1839
|
+
// flags: an inherited `--resume <id>` in argv would send the new kernel
|
|
1840
|
+
// looking for a session that belongs to the kernel it just left — the
|
|
1841
|
+
// same reason DSH_TUI_RESUME_SESSION is deleted below.
|
|
1842
|
+
const appArgs = process.argv.slice(1);
|
|
1843
|
+
const argv = [...process.execArgv, ...(options.backend === undefined ? appArgs : stripResumeArgs(appArgs))];
|
|
1695
1844
|
logRestartEvent(`${tag}: spawning replacement`, {
|
|
1696
1845
|
node: process.execPath,
|
|
1697
1846
|
argv,
|
|
@@ -1703,25 +1852,84 @@ export async function restartTui(sessionId, options = {}) {
|
|
|
1703
1852
|
dshHome: process.env.DSH_HOME ?? null,
|
|
1704
1853
|
});
|
|
1705
1854
|
const startedAt = Date.now();
|
|
1855
|
+
// Fullscreen kernel switch: keep the alternate screen until the replacement
|
|
1856
|
+
// reports its first flushed frame on the ACK pipe (see handoffScreen).
|
|
1857
|
+
const handoff = options.handoffScreen === 'alt' && options.backend !== undefined;
|
|
1858
|
+
const attemptId = handoff ? 'hs-' + Date.now().toString(16) + '-' + Math.random().toString(16).slice(2, 8) : undefined;
|
|
1859
|
+
// Ctrl+C while the replacement boots reaches this process too: same process
|
|
1860
|
+
// group, and nothing has the terminal in raw mode yet. Dying here would
|
|
1861
|
+
// leave behind the alternate screen this process still holds; the
|
|
1862
|
+
// replacement gets the same signal, and its close below restores the screen.
|
|
1863
|
+
const ignoreInterrupt = () => { };
|
|
1864
|
+
if (handoff)
|
|
1865
|
+
process.on('SIGINT', ignoreInterrupt);
|
|
1866
|
+
// "Starting X…" goes out before the spawn, waiting for the write callback
|
|
1867
|
+
// so it lands before the replacement draws anything.
|
|
1868
|
+
if (options.backend !== undefined) {
|
|
1869
|
+
await writeHandoffStage(process.stdout, formatHandoffNotice('stage-start', { name: kernelDisplayName(options.backend), color: process.stdout.isTTY === true }) + '\n');
|
|
1870
|
+
logRestartEvent(handoffEventTag('stage-start'), { backend: options.backend, ...(attemptId === undefined ? {} : { attemptId }) });
|
|
1871
|
+
}
|
|
1706
1872
|
return new Promise(resolve => {
|
|
1873
|
+
const childEnv = restartChildEnv(process.env, sessionId, kind, options);
|
|
1874
|
+
if (handoff) {
|
|
1875
|
+
// stdio[3] is the ACK pipe; the env tells the replacement its fd and the attempt id.
|
|
1876
|
+
childEnv[HANDOFF_SCREEN_ENV] = 'alt';
|
|
1877
|
+
childEnv[HANDOFF_ACK_FD_ENV] = '3';
|
|
1878
|
+
childEnv[HANDOFF_ATTEMPT_ENV] = attemptId;
|
|
1879
|
+
logRestartEvent('handoff: alt-screen bracket held for the replacement', { attemptId });
|
|
1880
|
+
}
|
|
1707
1881
|
const child = spawn(process.execPath, argv, {
|
|
1708
|
-
env:
|
|
1709
|
-
...process.env,
|
|
1710
|
-
// The replacement resumes the current session through the launcher
|
|
1711
|
-
// contract (DSH_TUI_RESUME_SESSION; see src/sessionHistory.ts).
|
|
1712
|
-
DSH_TUI_RESUME_SESSION: sessionId,
|
|
1713
|
-
// Marks the replacement so its own boot logs to restart.log without
|
|
1714
|
-
// noisy logging on every ordinary launch (/restart only).
|
|
1715
|
-
...(kind === 'restart' ? { [RESTART_CHILD_ENV]: '1' } : {}),
|
|
1716
|
-
...options.env,
|
|
1717
|
-
},
|
|
1882
|
+
env: childEnv,
|
|
1718
1883
|
// stdin/stdout stay inherited so the replacement owns the console the
|
|
1719
1884
|
// moment it boots; stderr is captured so a boot failure is reportable
|
|
1720
1885
|
// through THIS process (the terminal may already be mid-handoff when
|
|
1721
|
-
// the child dies, and a raw inherit write can vanish).
|
|
1722
|
-
|
|
1886
|
+
// the child dies, and a raw inherit write can vanish). fd 3 is the
|
|
1887
|
+
// one-way ACK pipe (replacement → supervisor): adopted / first frame.
|
|
1888
|
+
stdio: handoff ? ['inherit', 'inherit', 'pipe', 'pipe'] : ['inherit', 'inherit', 'pipe'],
|
|
1723
1889
|
});
|
|
1724
|
-
|
|
1890
|
+
let ackAdoptedAt;
|
|
1891
|
+
let ackReadyAt;
|
|
1892
|
+
const ackStream = handoff ? (child.stdio[3] ?? undefined) : undefined;
|
|
1893
|
+
if (ackStream !== undefined) {
|
|
1894
|
+
ackStream.setEncoding('utf8');
|
|
1895
|
+
let pending = '';
|
|
1896
|
+
ackStream.on('data', (chunk) => {
|
|
1897
|
+
pending += chunk;
|
|
1898
|
+
for (;;) {
|
|
1899
|
+
const newline = pending.indexOf('\n');
|
|
1900
|
+
if (newline < 0)
|
|
1901
|
+
break;
|
|
1902
|
+
const line = pending.slice(0, newline);
|
|
1903
|
+
pending = pending.slice(newline + 1);
|
|
1904
|
+
const ack = parseHandoffAckLine(line);
|
|
1905
|
+
if (ack === null || ack.attemptId !== attemptId)
|
|
1906
|
+
continue;
|
|
1907
|
+
if (ack.kind === 'adopted' && ackAdoptedAt === undefined) {
|
|
1908
|
+
ackAdoptedAt = Date.now();
|
|
1909
|
+
logRestartEvent('handoff/screen-adopted', { attemptId, backend: options.backend });
|
|
1910
|
+
}
|
|
1911
|
+
if (ack.kind === 'ready' && ackReadyAt === undefined) {
|
|
1912
|
+
ackReadyAt = Date.now();
|
|
1913
|
+
// ready means the replacement's first frame was flushed, not just
|
|
1914
|
+
// that it mounted or is still alive.
|
|
1915
|
+
logRestartEvent(handoffEventTag('first-frame'), { attemptId, backend: options.backend, elapsedMs: ackReadyAt - startedAt });
|
|
1916
|
+
}
|
|
1917
|
+
}
|
|
1918
|
+
});
|
|
1919
|
+
ackStream.on('error', () => {
|
|
1920
|
+
// The supervisor outlives the pipe by contract; a broken pipe here
|
|
1921
|
+
// means the replacement never speaks the protocol (e.g. an older
|
|
1922
|
+
// build) — the close handler's no-ready branch still restores the
|
|
1923
|
+
// screen, so the bracket can never be orphaned.
|
|
1924
|
+
});
|
|
1925
|
+
const ackWatch = setTimeout(() => {
|
|
1926
|
+
if (ackReadyAt === undefined) {
|
|
1927
|
+
logRestartEvent('handoff/first-frame watch', { attemptId, note: 'no first-frame ACK within 30s (diagnosis only, never a success/failure fact)' });
|
|
1928
|
+
}
|
|
1929
|
+
}, 30000);
|
|
1930
|
+
ackWatch.unref();
|
|
1931
|
+
}
|
|
1932
|
+
logRestartEvent(`${tag}: replacement spawned`, { childPid: child.pid, ...(options.backend === undefined ? {} : { backend: options.backend }) });
|
|
1725
1933
|
// Handoff watchdog (field evidence 2026-08-24: restarted TUI mounts but
|
|
1726
1934
|
// takes no input). Two jobs, both diagnosis-grade:
|
|
1727
1935
|
// 1. SAMPLE this process's stdin state every second — if anything
|
|
@@ -1777,19 +1985,78 @@ export async function restartTui(sessionId, options = {}) {
|
|
|
1777
1985
|
timer.unref();
|
|
1778
1986
|
child.once('error', error => {
|
|
1779
1987
|
clearTimeout(timer);
|
|
1988
|
+
process.removeListener('SIGINT', ignoreInterrupt);
|
|
1780
1989
|
logRestartEvent(`${tag}: spawn error`, { message: error.message });
|
|
1781
|
-
|
|
1990
|
+
if (options.backend !== undefined) {
|
|
1991
|
+
// Nothing took the screen over: restore it before the notice.
|
|
1992
|
+
if (handoff)
|
|
1993
|
+
restoreHandoffScreen();
|
|
1994
|
+
// A spawn failure is a failed switch (yellow, with the safe-mode hint),
|
|
1995
|
+
// not a crash.
|
|
1996
|
+
logRestartEvent(handoffEventTag('failed'), { reason: 'spawn-error', message: error.message });
|
|
1997
|
+
writeHandoffNotice(formatHandoffNotice('failed', {
|
|
1998
|
+
name: kernelDisplayName(options.backend),
|
|
1999
|
+
reason: 'spawn-error',
|
|
2000
|
+
safeHint: true,
|
|
2001
|
+
color: process.stderr.isTTY === true,
|
|
2002
|
+
}) + `\n${error.message}\n`);
|
|
2003
|
+
}
|
|
2004
|
+
else {
|
|
2005
|
+
writeHandoffNotice(`dsh-tui: failed to spawn the restart: ${error.message}\n`);
|
|
2006
|
+
}
|
|
1782
2007
|
resolve(127);
|
|
1783
2008
|
});
|
|
1784
2009
|
child.once('close', (code, signal) => {
|
|
1785
2010
|
clearTimeout(timer);
|
|
2011
|
+
process.removeListener('SIGINT', ignoreInterrupt);
|
|
1786
2012
|
const elapsedMs = Date.now() - startedAt;
|
|
1787
2013
|
logRestartEvent(`${tag}: replacement exited`, {
|
|
1788
2014
|
code: code ?? null,
|
|
1789
2015
|
signal: signal ?? null,
|
|
1790
2016
|
elapsedMs,
|
|
1791
2017
|
});
|
|
1792
|
-
if (
|
|
2018
|
+
if (options.backend !== undefined) {
|
|
2019
|
+
// Kernel switch outcome: success is quiet (restart.log only), a
|
|
2020
|
+
// replacement that never came up is a yellow failure with the session
|
|
2021
|
+
// kept and the safe-mode hint, and a later nonzero exit is a red
|
|
2022
|
+
// crash. With the ACK pipe the first frame decides which of the two
|
|
2023
|
+
// failures it was; see classifyReplacementOutcome.
|
|
2024
|
+
const outcome = classifyReplacementOutcome({
|
|
2025
|
+
closed: true, code, signal, elapsedMs,
|
|
2026
|
+
...(handoff ? { firstFrameAcked: ackReadyAt !== undefined } : {}),
|
|
2027
|
+
});
|
|
2028
|
+
logRestartEvent(handoffEventTag(outcome.kind), {
|
|
2029
|
+
...(outcome.kind === 'crashed' ? { code: outcome.code } : outcome.kind === 'failed' ? { reason: outcome.reason } : {}),
|
|
2030
|
+
...(attemptId === undefined ? {} : { attemptId }),
|
|
2031
|
+
});
|
|
2032
|
+
if (outcome.kind === 'failed') {
|
|
2033
|
+
// Before ready this process still holds the alternate screen:
|
|
2034
|
+
// restore it first so the notice lands on the main screen. After
|
|
2035
|
+
// ready the replacement's own exit cleanup closed it.
|
|
2036
|
+
if (handoff && ackReadyAt === undefined)
|
|
2037
|
+
restoreHandoffScreen();
|
|
2038
|
+
const suffix = childStderr.trim() === '' ? '' : `\n${childStderr.trimEnd()}`;
|
|
2039
|
+
writeHandoffNotice(formatHandoffNotice('failed', {
|
|
2040
|
+
name: kernelDisplayName(options.backend),
|
|
2041
|
+
reason: outcome.reason,
|
|
2042
|
+
safeHint: true,
|
|
2043
|
+
color: process.stderr.isTTY === true,
|
|
2044
|
+
}) + `${suffix}\n`);
|
|
2045
|
+
}
|
|
2046
|
+
else if (outcome.kind === 'crashed') {
|
|
2047
|
+
// A signal death after the first frame skipped the replacement's
|
|
2048
|
+
// own exit cleanup, so the screen and input modes are still its.
|
|
2049
|
+
if (handoff && signal !== null)
|
|
2050
|
+
restoreHandoffScreen();
|
|
2051
|
+
writeHandoffNotice('\n' + formatHandoffNotice('crashed', {
|
|
2052
|
+
name: kernelDisplayName(options.backend),
|
|
2053
|
+
code: outcome.code,
|
|
2054
|
+
safeHint: true,
|
|
2055
|
+
color: process.stderr.isTTY === true,
|
|
2056
|
+
}) + '\n');
|
|
2057
|
+
}
|
|
2058
|
+
}
|
|
2059
|
+
else if (elapsedMs < 4000) {
|
|
1793
2060
|
// Fast death: the TUI never came up. Synchronous stderr write —
|
|
1794
2061
|
// process.exit() right after an async stream write skips the flush,
|
|
1795
2062
|
// and a vanished diagnosis is indistinguishable from silent failure.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/** One serialized level: the crash itself or a link of its `.cause` chain. */
|
|
2
|
+
export interface CrashDetailLevel {
|
|
3
|
+
/** Constructor name (`TypeError`), or the JS typeof for non-Errors. */
|
|
4
|
+
readonly name: string;
|
|
5
|
+
readonly message: string;
|
|
6
|
+
/** Raw multi-frame stack when this level is an Error that carries one. */
|
|
7
|
+
readonly stack?: string;
|
|
8
|
+
}
|
|
9
|
+
/** Full crash serialization: the error, its cause chain, and React extras. */
|
|
10
|
+
export interface CrashDetail {
|
|
11
|
+
readonly message: string;
|
|
12
|
+
/** Head-level stack (=== levels[0].stack). */
|
|
13
|
+
readonly stack?: string;
|
|
14
|
+
/** The error followed by every `.cause` link, outermost first. */
|
|
15
|
+
readonly levels: readonly CrashDetailLevel[];
|
|
16
|
+
/** React component tree trace when attached to the error object. */
|
|
17
|
+
readonly componentStack?: string;
|
|
18
|
+
/** React production digest when attached to the error object. */
|
|
19
|
+
readonly digest?: string;
|
|
20
|
+
/** `${name}: ${message}` one-liner for logs that must stay one line. */
|
|
21
|
+
readonly summary: string;
|
|
22
|
+
/** Full multi-line block crash.log stores after its header line. */
|
|
23
|
+
readonly text: string;
|
|
24
|
+
}
|
|
25
|
+
/** Stand-in text for a value whose own string conversion throws. */
|
|
26
|
+
export declare const UNSERIALIZABLE = "[unserializable value]";
|
|
27
|
+
/**
|
|
28
|
+
* Serialize an unknown crash value: head message + stack, the `.cause` chain
|
|
29
|
+
* level by level, and componentStack / digest when attached. Never throws and
|
|
30
|
+
* never loops — the crash path's own diagnostics must not become a second
|
|
31
|
+
* crash. Exported for scripts/verify-crash-detail.
|
|
32
|
+
*/
|
|
33
|
+
export declare function serializeCrashDetail(error: unknown): CrashDetail;
|
|
34
|
+
/**
|
|
35
|
+
* Crash detail built from literals only, for when serializing or logging
|
|
36
|
+
* the real one failed. It never touches the thrown value, so it cannot throw.
|
|
37
|
+
*/
|
|
38
|
+
export declare function unserializableCrashDetail(): CrashDetail;
|
|
39
|
+
/**
|
|
40
|
+
* The crash.log line: restart.log's `<UTC ISO> pid=<pid>` header style
|
|
41
|
+
* (writeRestartLine precedent, src/update.ts) followed by the detail block.
|
|
42
|
+
* @param detail - Serialized crash (serializeCrashDetail).
|
|
43
|
+
* @param at - Timestamp of the crash (injected so the format stays testable).
|
|
44
|
+
* @param pid - Process id (injected so the format stays testable).
|
|
45
|
+
*/
|
|
46
|
+
export declare function formatCrashLogLine(detail: CrashDetail, at: Date, pid: number): string;
|
|
47
|
+
/**
|
|
48
|
+
* Append the crash detail to `<dir>/crash.log` (default `~/.dsh-tui`,
|
|
49
|
+
* DATA_DIR — same home-dir resolution as restart.log, never a hard-coded
|
|
50
|
+
* path). Every failure is swallowed: post-mortem diagnostics must never take
|
|
51
|
+
* the exit path down (mouse-debug.log precedent).
|
|
52
|
+
* @param detail - Serialized crash (serializeCrashDetail).
|
|
53
|
+
* @param dir - Data directory override (verify scripts point at a temp dir).
|
|
54
|
+
*/
|
|
55
|
+
export declare function appendCrashLog(detail: CrashDetail, dir?: string): void;
|
|
56
|
+
//# sourceMappingURL=crashDetail.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crashDetail.d.ts","sourceRoot":"","sources":["../../../src/utils/crashDetail.ts"],"names":[],"mappings":"AAeA,8EAA8E;AAC9E,MAAM,WAAW,gBAAgB;IAC/B,uEAAuE;IACvE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,0EAA0E;IAC1E,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,8EAA8E;AAC9E,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,8CAA8C;IAC9C,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,kEAAkE;IAClE,QAAQ,CAAC,MAAM,EAAE,SAAS,gBAAgB,EAAE,CAAA;IAC5C,oEAAoE;IACpE,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;IAChC,iEAAiE;IACjE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,wEAAwE;IACxE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,oEAAoE;IACpE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AAUD,oEAAoE;AACpE,eAAO,MAAM,cAAc,2BAA2B,CAAA;AA+DtD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,CAsChE;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,IAAI,WAAW,CAYvD;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAErF;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,GAAE,MAAiB,GAAG,IAAI,CAShF"}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Crash serialization for the exit funnel (src/dsh-adapter/plugin.ts).
|
|
3
|
+
*
|
|
4
|
+
* A message-only crash line (`Minified React error #185`) loses the stack,
|
|
5
|
+
* the `.cause` chain and the React extras (componentStack, digest) that a
|
|
6
|
+
* production build still carries. These helpers serialize all of it and
|
|
7
|
+
* append it to ~/.dsh-tui/crash.log.
|
|
8
|
+
*
|
|
9
|
+
* Dependency-free (node builtins and paths only) so verify scripts can load
|
|
10
|
+
* it without the plugin graph.
|
|
11
|
+
*/
|
|
12
|
+
import { appendFileSync, mkdirSync } from 'node:fs';
|
|
13
|
+
import { join } from 'node:path';
|
|
14
|
+
import { DATA_DIR } from './paths.js';
|
|
15
|
+
/** A pathological (self- or mutually-referring) cause chain must not loop. */
|
|
16
|
+
const MAX_CAUSE_LEVELS = 8;
|
|
17
|
+
/** Cap the serialized block so huge synthetic stacks cannot grow crash.log unbounded. */
|
|
18
|
+
const MAX_TEXT_CHARS = 32 * 1024;
|
|
19
|
+
const isRecord = (value) => typeof value === 'object' && value !== null;
|
|
20
|
+
/** Stand-in text for a value whose own string conversion throws. */
|
|
21
|
+
export const UNSERIALIZABLE = '[unserializable value]';
|
|
22
|
+
/**
|
|
23
|
+
* Read one property of a value that may throw on access (a getter or a Proxy
|
|
24
|
+
* trap); a throw reads as undefined. The crash funnel runs after the exit
|
|
25
|
+
* latch is set, so an exception escaping from here would skip the cleanup
|
|
26
|
+
* that follows it.
|
|
27
|
+
*/
|
|
28
|
+
function safeProp(record, key) {
|
|
29
|
+
try {
|
|
30
|
+
return record[key];
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return undefined;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/** instanceof through a maybe-hostile value: a Proxy can trap
|
|
37
|
+
* getPrototypeOf too, and that must degrade the same way as a property read. */
|
|
38
|
+
function safeInstanceOfError(value) {
|
|
39
|
+
try {
|
|
40
|
+
return value instanceof Error;
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Three-tier stringify: String(value), then Object.prototype.toString.call
|
|
48
|
+
* (itself re-wrapped — a Symbol.toStringTag getter can throw too), then the
|
|
49
|
+
* fixed literal. Never throws.
|
|
50
|
+
*/
|
|
51
|
+
function safeString(value) {
|
|
52
|
+
try {
|
|
53
|
+
return String(value);
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
// Fall through to the second conversion.
|
|
57
|
+
}
|
|
58
|
+
try {
|
|
59
|
+
return Object.prototype.toString.call(value);
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
// Fall through to the fixed literal.
|
|
63
|
+
}
|
|
64
|
+
return UNSERIALIZABLE;
|
|
65
|
+
}
|
|
66
|
+
function serializeLevel(error) {
|
|
67
|
+
if (safeInstanceOfError(error) && isRecord(error)) {
|
|
68
|
+
const rawName = safeProp(error, 'name');
|
|
69
|
+
const rawStack = safeProp(error, 'stack');
|
|
70
|
+
const rawMessage = safeProp(error, 'message');
|
|
71
|
+
const name = typeof rawName === 'string' && rawName !== '' ? rawName : 'Error';
|
|
72
|
+
const stack = typeof rawStack === 'string' && rawStack !== '' ? rawStack : undefined;
|
|
73
|
+
// A non-string message still stringifies (a hostile Error can carry 42);
|
|
74
|
+
// only a THROWING conversion degrades to the fixed literal.
|
|
75
|
+
const message = typeof rawMessage === 'string' ? rawMessage : safeString(rawMessage);
|
|
76
|
+
return { name, message, ...(stack === undefined ? {} : { stack }) };
|
|
77
|
+
}
|
|
78
|
+
return { name: typeof error, message: safeString(error) };
|
|
79
|
+
}
|
|
80
|
+
/** Indent every line of a (multi-frame) block for the text serialization. */
|
|
81
|
+
const indentBlock = (block) => block.replace(/^/gm, ' ');
|
|
82
|
+
/**
|
|
83
|
+
* Serialize an unknown crash value: head message + stack, the `.cause` chain
|
|
84
|
+
* level by level, and componentStack / digest when attached. Never throws and
|
|
85
|
+
* never loops — the crash path's own diagnostics must not become a second
|
|
86
|
+
* crash. Exported for scripts/verify-crash-detail.
|
|
87
|
+
*/
|
|
88
|
+
export function serializeCrashDetail(error) {
|
|
89
|
+
const levels = [serializeLevel(error)];
|
|
90
|
+
// Follow .cause links (ES2022 Error cause + manually attached ones); the
|
|
91
|
+
// seen-set stops self/mutual references, the cap stops absurd chains.
|
|
92
|
+
const seen = new Set([error]);
|
|
93
|
+
let current = isRecord(error) ? safeProp(error, 'cause') : undefined;
|
|
94
|
+
while (levels.length < MAX_CAUSE_LEVELS && current !== undefined && current !== null && !seen.has(current)) {
|
|
95
|
+
seen.add(current);
|
|
96
|
+
levels.push(serializeLevel(current));
|
|
97
|
+
current = isRecord(current) ? safeProp(current, 'cause') : undefined;
|
|
98
|
+
}
|
|
99
|
+
const head = levels[0];
|
|
100
|
+
const rawComponentStack = isRecord(error) ? safeProp(error, 'componentStack') : undefined;
|
|
101
|
+
const rawDigest = isRecord(error) ? safeProp(error, 'digest') : undefined;
|
|
102
|
+
const componentStack = typeof rawComponentStack === 'string' && rawComponentStack !== ''
|
|
103
|
+
? rawComponentStack
|
|
104
|
+
: undefined;
|
|
105
|
+
const digest = typeof rawDigest === 'string' && rawDigest !== '' ? rawDigest : undefined;
|
|
106
|
+
const summary = safeInstanceOfError(error) ? `${head.name}: ${head.message}` : head.message;
|
|
107
|
+
const lines = [`dsh-tui crashed: ${summary}`];
|
|
108
|
+
levels.forEach((level, index) => {
|
|
109
|
+
lines.push(`level ${index}${index === 0 ? '' : ' (cause)'}: ${level.name}: ${level.message}`);
|
|
110
|
+
if (level.stack !== undefined)
|
|
111
|
+
lines.push(' stack:', indentBlock(level.stack));
|
|
112
|
+
});
|
|
113
|
+
if (componentStack !== undefined)
|
|
114
|
+
lines.push('componentStack:', indentBlock(componentStack));
|
|
115
|
+
if (digest !== undefined)
|
|
116
|
+
lines.push(`digest: ${digest}`);
|
|
117
|
+
let text = lines.join('\n');
|
|
118
|
+
if (text.length > MAX_TEXT_CHARS)
|
|
119
|
+
text = `${text.slice(0, MAX_TEXT_CHARS)}\n...(truncated)`;
|
|
120
|
+
return {
|
|
121
|
+
message: head.message,
|
|
122
|
+
...(head.stack === undefined ? {} : { stack: head.stack }),
|
|
123
|
+
levels,
|
|
124
|
+
...(componentStack === undefined ? {} : { componentStack }),
|
|
125
|
+
...(digest === undefined ? {} : { digest }),
|
|
126
|
+
summary,
|
|
127
|
+
text,
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Crash detail built from literals only, for when serializing or logging
|
|
132
|
+
* the real one failed. It never touches the thrown value, so it cannot throw.
|
|
133
|
+
*/
|
|
134
|
+
export function unserializableCrashDetail() {
|
|
135
|
+
const text = [
|
|
136
|
+
`dsh-tui crashed: ${UNSERIALIZABLE}`,
|
|
137
|
+
`level 0: Error: ${UNSERIALIZABLE}`,
|
|
138
|
+
'(crash detail serialization failed; every property of the thrown value was left unread)',
|
|
139
|
+
].join('\n');
|
|
140
|
+
return {
|
|
141
|
+
message: UNSERIALIZABLE,
|
|
142
|
+
levels: [{ name: 'Error', message: UNSERIALIZABLE }],
|
|
143
|
+
summary: `Error: ${UNSERIALIZABLE}`,
|
|
144
|
+
text,
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* The crash.log line: restart.log's `<UTC ISO> pid=<pid>` header style
|
|
149
|
+
* (writeRestartLine precedent, src/update.ts) followed by the detail block.
|
|
150
|
+
* @param detail - Serialized crash (serializeCrashDetail).
|
|
151
|
+
* @param at - Timestamp of the crash (injected so the format stays testable).
|
|
152
|
+
* @param pid - Process id (injected so the format stays testable).
|
|
153
|
+
*/
|
|
154
|
+
export function formatCrashLogLine(detail, at, pid) {
|
|
155
|
+
return `${at.toISOString()} pid=${pid} ${detail.text}\n`;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Append the crash detail to `<dir>/crash.log` (default `~/.dsh-tui`,
|
|
159
|
+
* DATA_DIR — same home-dir resolution as restart.log, never a hard-coded
|
|
160
|
+
* path). Every failure is swallowed: post-mortem diagnostics must never take
|
|
161
|
+
* the exit path down (mouse-debug.log precedent).
|
|
162
|
+
* @param detail - Serialized crash (serializeCrashDetail).
|
|
163
|
+
* @param dir - Data directory override (verify scripts point at a temp dir).
|
|
164
|
+
*/
|
|
165
|
+
export function appendCrashLog(detail, dir = DATA_DIR) {
|
|
166
|
+
try {
|
|
167
|
+
mkdirSync(dir, { recursive: true });
|
|
168
|
+
// 0600 on creation: the stack can mirror message content (mouse-debug.log
|
|
169
|
+
// and history.jsonl precedent, see scripts/verify-data-file-perms).
|
|
170
|
+
appendFileSync(join(dir, 'crash.log'), formatCrashLogLine(detail, new Date(), process.pid), { mode: 0o600 });
|
|
171
|
+
}
|
|
172
|
+
catch {
|
|
173
|
+
// Post-mortem only — see doc comment.
|
|
174
|
+
}
|
|
175
|
+
}
|
|
@@ -1,30 +1,16 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Inbound image adaptation for the composer's staging gate.
|
|
3
|
-
*
|
|
4
|
-
* The upstream attachment store admits images by media type, byte budget,
|
|
5
|
-
* pixel budget and a per-side dimension cap (`maxImageDimension`). Two kinds
|
|
6
|
-
* of paste used to fail with no user-side recourse: one that exceeds the
|
|
7
|
-
* dimension cap, and one whose format the deployment does not accept. This
|
|
8
|
-
* module measures the bytes BEFORE staging and produces an admissible pair
|
|
9
|
-
* (bytes + media type) through sharp — an optionalDependency, absent on
|
|
10
|
-
* minimal installs, which must degrade with a clear error, not a crash.
|
|
11
|
-
*
|
|
12
|
-
* Sizing probe is pure byte inspection (PNG/JPEG/WebP/GIF). Formats the
|
|
13
|
-
* probe cannot identify return null and MUST be forced through an actual
|
|
14
|
-
* decode for measurement — the #432 review gap was letting an
|
|
15
|
-
* "unrecognized but under the byte cap" image through, where a
|
|
16
|
-
* large-resolution small-byte WebP/GIF would sail past the probe and be
|
|
17
|
-
* rejected by upstream afterwards.
|
|
18
|
-
*
|
|
19
|
-
* The single entry point is {@link adaptImageForAdmission}: it decides
|
|
20
|
-
* whether anything has to change (resample, re-encode, or both) and reports
|
|
21
|
-
* exactly what it did, so the caller can tell the user instead of silently
|
|
22
|
-
* rewriting their image.
|
|
23
|
-
*/
|
|
24
1
|
export interface ImageSizeProbe {
|
|
25
2
|
readonly width: number;
|
|
26
3
|
readonly height: number;
|
|
27
4
|
}
|
|
5
|
+
/**
|
|
6
|
+
* The image media type the encoded bytes actually are, from the magic
|
|
7
|
+
* bytes alone (the same signatures {@link probeImageSize} dispatches on):
|
|
8
|
+
* PNG, JPEG, WebP (RIFF/WEBP) or GIF; anything else is undefined and the
|
|
9
|
+
* caller keeps its own label (those bytes take the decode-or-refuse path
|
|
10
|
+
* anyway). Used to keep a renamed file from travelling under a label its
|
|
11
|
+
* content contradicts.
|
|
12
|
+
*/
|
|
13
|
+
export declare function sniffImageMediaType(bytes: Uint8Array): 'image/png' | 'image/jpeg' | 'image/webp' | 'image/gif' | undefined;
|
|
28
14
|
/**
|
|
29
15
|
* Measure intrinsic pixel dimensions from the encoded bytes alone — no
|
|
30
16
|
* decode, no dependencies. Recognizes PNG / JPEG / WebP (VP8X, VP8,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"imageResize.d.ts","sourceRoot":"","sources":["../../../src/utils/imageResize.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"imageResize.d.ts","sourceRoot":"","sources":["../../../src/utils/imageResize.ts"],"names":[],"mappings":"AAyBA,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACxB;AAiFD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,GAAG,YAAY,GAAG,YAAY,GAAG,WAAW,GAAG,SAAS,CAO1H;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,UAAU,GAAG,cAAc,GAAG,IAAI,CAevE;AAED,iEAAiE;AACjE,MAAM,WAAW,YAAY;IAC3B,+DAA+D;IAC/D,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAA;IAClC,wCAAwC;IACxC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;CAChC;AAED,2EAA2E;AAC3E,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAIzF;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,YAAY,GAAG,cAAc,CAW1F;AAqCD,MAAM,MAAM,YAAY,GACpB;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;CAAE,GAC9B;IACA,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;IACxB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;IACzB,4EAA4E;IAC5E,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,sDAAsD;IACtD,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,sEAAsE;IACtE,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;CAC5B,GACC;IACA;;;qDAGiD;IACjD,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAA;IAC5B,QAAQ,CAAC,MAAM,EAAE,eAAe,GAAG,eAAe,GAAG,sBAAsB,CAAA;IAC3E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACxB,CAAA;AAcH;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,UAAU,EACjB,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,YAAY,EACpB,kBAAkB,EAAE,SAAS,MAAM,EAAE,GACpC,OAAO,CAAC,YAAY,CAAC,CAuDvB"}
|