@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
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import { Box, Text, useInput, ScrollBox, useTerminalSize, useAnimationFrame } from '../ui.js';
|
|
4
|
-
import { formatJobDuration } from '../dsh-adapter/jobs.js';
|
|
5
|
-
import { JobProgress } from './Chat/JobCard.js';
|
|
4
|
+
import { formatJobDuration, JOBS_MAX_OUTPUT_LINES } from '../dsh-adapter/jobs.js';
|
|
5
|
+
import { JobProgress, JobSection, jobCommandRows } from './Chat/JobCard.js';
|
|
6
6
|
import { Markdown } from './Markdown.js';
|
|
7
7
|
import { t } from '../i18n.js';
|
|
8
8
|
import { Divider } from './design-system/Divider.js';
|
|
@@ -74,17 +74,25 @@ function renderOutputRuns(job) {
|
|
|
74
74
|
flush();
|
|
75
75
|
return runs;
|
|
76
76
|
}
|
|
77
|
-
function JobRowLine({ job, focused, armed, columns, onFocus }) {
|
|
77
|
+
function JobRowLine({ job, focused, armed, columns, onFocus, expanded, onToggle, width }) {
|
|
78
78
|
const info = statusInfo(job.status);
|
|
79
79
|
const duration = formatJobDuration(job);
|
|
80
80
|
const live = !isTerminalStatus(job.status);
|
|
81
81
|
const progress = live && job.progress !== undefined && job.progress !== '' ? job.progress : undefined;
|
|
82
|
-
|
|
82
|
+
const labelRows = jobCommandRows(job.label, width - 2, expanded);
|
|
83
|
+
const command = job.command !== undefined && job.command !== '' ? job.command : job.label;
|
|
84
|
+
const commandRows = focused ? jobCommandRows(command, width - 2, expanded) : [];
|
|
85
|
+
return (_jsxs(Box, { flexDirection: "column", onClick: onFocus, children: [_jsxs(Box, { flexDirection: "row", gap: 1, children: [_jsxs(Box, { width: 2, flexShrink: 0, children: [_jsx(Text, { color: focused ? 'accent' : undefined, children: focused ? '❯' : ' ' }), _jsx(Text, { color: info.color, children: info.glyph })] }), _jsx(Box, { width: columns.idWidth, flexShrink: 0, children: _jsx(Text, { bold: focused, color: focused ? 'accent' : undefined, wrap: "truncate-end", children: job.id }) }), _jsx(Box, { flexGrow: 1, flexShrink: 1, children: _jsx(Text, { bold: focused, wrap: columns.labelWrap && expanded ? 'wrap' : 'truncate-end', children: job.label }) }), columns.showProgress && (_jsx(Box, { width: 11, flexShrink: 0, justifyContent: "flex-end", children: progress !== undefined ? _jsx(JobProgress, { progress: progress }) : _jsx(Text, { children: " " }) })), armed === true ? (_jsx(Text, { bold: true, color: "error", wrap: "truncate-end", children: t('jobs-kill-armed') })) : (_jsxs(_Fragment, { children: [columns.showDuration && (_jsx(Box, { width: 6, flexShrink: 0, justifyContent: "flex-end", children: _jsx(Text, { dimColor: true, children: duration }) })), columns.showStatus && (_jsx(Box, { width: columns.statusWidth, flexShrink: 0, justifyContent: "flex-end", children: _jsx(Text, { color: info.color, wrap: "truncate-end", children: info.label }) }))] }))] }), (!columns.labelWrap || focused) && (_jsx(JobSection, { rows: focused ? commandRows : labelRows, color: "accent", onToggle: onToggle })), focused && (_jsxs(Box, { flexDirection: "column", paddingLeft: 4, children: [_jsxs(Box, { flexDirection: "row", gap: 1, children: [_jsx(Box, { width: 7, flexShrink: 0, children: _jsx(Text, { dimColor: true, children: t('jobs-panel-started') }) }), _jsx(Text, { dimColor: true, children: timeOf(job.startedAt)
|
|
83
86
|
+ (job.finishedAt !== undefined ? ` · ${t('jobs-panel-finished')} ${timeOf(job.finishedAt)}` : '')
|
|
84
|
-
+ (job.lastOutputAt !== undefined ? ` · ${t('jobs-panel-output-at')} ${timeOf(job.lastOutputAt)}` : '') })] }), (job.outputTotalBytes !== undefined || job.outputDropped === true) && (_jsxs(Box, { flexDirection: "row", gap: 1, children: [_jsx(Box, { width: 7, flexShrink: 0, children: _jsx(Text, { dimColor: true, children: t('jobs-panel-output') }) }), _jsx(Text, { dimColor: true, children: (job.outputTotalBytes !== undefined ? formatBytes(job.outputTotalBytes) : '')
|
|
87
|
+
+ (job.lastOutputAt !== undefined ? ` · ${t('jobs-panel-output-at')} ${timeOf(job.lastOutputAt)}` : '') })] }), (job.outputTotalBytes !== undefined || job.outputDropped === true || (job.outputLines?.length ?? 0) >= JOBS_MAX_OUTPUT_LINES) && (_jsxs(Box, { flexDirection: "row", gap: 1, children: [_jsx(Box, { width: 7, flexShrink: 0, children: _jsx(Text, { dimColor: true, children: t('jobs-panel-output') }) }), _jsx(Text, { dimColor: true, children: (job.outputTotalBytes !== undefined ? formatBytes(job.outputTotalBytes) : '')
|
|
85
88
|
+ (job.outputDropped === true
|
|
86
89
|
? `${job.outputTotalBytes !== undefined ? ' · ' : ''}${t('jobs-output-dropped')}`
|
|
87
|
-
: '')
|
|
90
|
+
: '')
|
|
91
|
+
// At the retention cap the visible tail is provably partial:
|
|
92
|
+
// say so instead of letting it read as the whole stream.
|
|
93
|
+
+ ((job.outputLines?.length ?? 0) >= JOBS_MAX_OUTPUT_LINES
|
|
94
|
+
? `${job.outputTotalBytes !== undefined || job.outputDropped === true ? ' · ' : ''}${t('jobs-output-retained-tail', { n: job.outputLines?.length ?? 0 })}`
|
|
95
|
+
: '') })] })), job.lastProgress !== undefined && (_jsxs(Box, { flexDirection: "row", gap: 1, children: [_jsx(Box, { width: 7, flexShrink: 0, children: _jsx(Text, { dimColor: true, children: t('jobs-progress-latest') }) }), _jsxs(Text, { dimColor: true, children: [job.lastProgress, job.lastProgressAt !== undefined ? ` · ${t('jobs-progress-updated-at', { time: timeOf(job.lastProgressAt) })}` : '', ` · ${t('jobs-progress-source', { source: job.kind })}`] })] })), job.spillPaths !== undefined && job.spillPaths.length > 0 && (_jsx(Box, { paddingLeft: 8, children: _jsx(Text, { dimColor: true, children: t('jobs-output-spill', { path: job.spillPaths[job.spillPaths.length - 1] ?? '' }) }) })), (job.outputLines?.length ?? 0) > 0 ? (_jsx(JobSection, { rows: [], color: "success", children: _jsxs(Box, { flexDirection: "row", children: [_jsx(Box, { width: 2, flexShrink: 0, children: _jsx(Text, { dimColor: true, children: "\u2261 " }) }), _jsx(Box, { flexDirection: "column", flexGrow: 1, children: renderOutputRuns(job).map((run, runIndex) => (_jsxs(Box, { flexDirection: "column", marginTop: runIndex === 0 ? 0 : 1, children: [run.kind === 'gap' && (_jsx(Text, { dimColor: true, italic: true, children: t('jobs-output-gap') })), run.kind === 'markdown' && (_jsx(Markdown, { cacheTokens: true, children: run.text })), run.kind === 'stderr' && (_jsx(Text, { dimColor: true, children: run.text })), run.kind === 'log' && (_jsx(Text, { dimColor: true, italic: true, children: run.text }))] }, `${job.id}-run-${runIndex}`))) })] }) })) : (_jsx(Text, { dimColor: true, children: t('jobs-panel-no-output-yet') })), _jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { dimColor: true, bold: true, children: t('jobs-timeline') }), (job.timeline?.length ?? 0) === 0 ? (_jsx(Text, { dimColor: true, italic: true, children: t('jobs-timeline-events-unavailable') })) : (_jsxs(_Fragment, { children: [(job.gapCount ?? 0) > 0 && (_jsx(Text, { dimColor: true, italic: true, children: t('jobs-timeline-gap-count', { n: job.gapCount ?? 0 }) })), (job.timeline?.length ?? 0) > JOBS_TIMELINE_DISPLAY && (_jsx(Text, { dimColor: true, children: `… +${(job.timeline?.length ?? 0) - JOBS_TIMELINE_DISPLAY}` })), (job.timeline ?? []).slice(-JOBS_TIMELINE_DISPLAY).map((event, index) => (_jsx(Text, { dimColor: true, children: timelineLine(event) }, index)))] }))] })] }))] }));
|
|
88
96
|
}
|
|
89
97
|
/** HH:MM:SS wall-clock of an epoch ms value (locale-independent). */
|
|
90
98
|
function timeOf(ms) {
|
|
@@ -92,6 +100,30 @@ function timeOf(ms) {
|
|
|
92
100
|
const pad = (value) => String(value).padStart(2, '0');
|
|
93
101
|
return `${pad(date.getHours())}:${pad(date.getMinutes())}:${pad(date.getSeconds())}`;
|
|
94
102
|
}
|
|
103
|
+
/** The rendered form of one timeline observation: `HH:MM:SS <what>`.
|
|
104
|
+
* Progress keeps the producer's own line verbatim (never re-parsed into a
|
|
105
|
+
* percentage); an output drain names its byte advance and channel when the
|
|
106
|
+
* kernel labelled one. */
|
|
107
|
+
function timelineLine(event) {
|
|
108
|
+
const time = timeOf(event.at);
|
|
109
|
+
switch (event.kind) {
|
|
110
|
+
case 'started':
|
|
111
|
+
return `${time} ${t('jobs-timeline-started')}`;
|
|
112
|
+
case 'progress':
|
|
113
|
+
return `${time} ${t('jobs-timeline-progress')} ${event.text ?? ''}`;
|
|
114
|
+
case 'output':
|
|
115
|
+
return `${time} ${event.channel === 'stderr' ? 'stderr' : event.channel === 'log' ? 'log' : t('jobs-timeline-output')}${event.bytes === undefined ? '' : ` +${formatBytes(event.bytes)}`}`;
|
|
116
|
+
case 'gap':
|
|
117
|
+
return `${time} ${t('jobs-timeline-gap')}`;
|
|
118
|
+
case 'stopping':
|
|
119
|
+
return `${time} ${t('jobs-status-stopping')}`;
|
|
120
|
+
case 'settled':
|
|
121
|
+
return `${time} ${t('jobs-timeline-settled')}${event.text === undefined || event.text === '' ? '' : ` · ${event.text}`}`;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
/** Latest timeline slice shown in the focused detail: enough to read the
|
|
125
|
+
* recent shape of the job without the block swallowing the panel. */
|
|
126
|
+
const JOBS_TIMELINE_DISPLAY = 8;
|
|
95
127
|
/**
|
|
96
128
|
* `/jobs` overlay panel — every background job of the current session with
|
|
97
129
|
* live status, elapsed/total duration and terminal detail (exit code).
|
|
@@ -99,8 +131,19 @@ function timeOf(ms) {
|
|
|
99
131
|
* row expands a detail block (full label, start/finish times, mirrored
|
|
100
132
|
* output tail). The panel is the deep view behind the transcript job cards.
|
|
101
133
|
*/
|
|
102
|
-
export function JobsPanel({ jobs, onClose, onKill, onSendToChat, initialFocusId, focusRequest, variant = 'default', focused = true, visible = true }) {
|
|
134
|
+
export function JobsPanel({ jobs, onClose, onKill, onSendToChat, initialFocusId, focusRequest, variant = 'default', focused = true, visible = true, onWatchOutput }) {
|
|
103
135
|
const panelMode = variant === 'panel';
|
|
136
|
+
const [expandedJobs, setExpandedJobs] = React.useState(new Set());
|
|
137
|
+
const toggleDetails = (id) => {
|
|
138
|
+
setExpandedJobs(previous => {
|
|
139
|
+
const next = new Set(previous);
|
|
140
|
+
if (next.has(id))
|
|
141
|
+
next.delete(id);
|
|
142
|
+
else
|
|
143
|
+
next.add(id);
|
|
144
|
+
return next;
|
|
145
|
+
});
|
|
146
|
+
};
|
|
104
147
|
const [focusIndex, setFocusIndex] = React.useState(() => {
|
|
105
148
|
if (initialFocusId === undefined)
|
|
106
149
|
return 0;
|
|
@@ -163,6 +206,12 @@ export function JobsPanel({ jobs, onClose, onKill, onSendToChat, initialFocusId,
|
|
|
163
206
|
// eslint-disable-next-line react-hooks/exhaustive-deps -- mount-only scroll placement
|
|
164
207
|
}, []);
|
|
165
208
|
const focus = Math.min(focusIndex, Math.max(0, jobs.length - 1));
|
|
209
|
+
// The focused job's detail shows its output: keep that tail fresh while
|
|
210
|
+
// the panel is open and visible (a hidden side-panel instance keeps its
|
|
211
|
+
// state but reads nothing; a settled job is read once more, then left
|
|
212
|
+
// alone).
|
|
213
|
+
const focusedId = jobs[focus]?.id;
|
|
214
|
+
React.useEffect(() => (focusedId === undefined || onWatchOutput === undefined || !visible ? undefined : onWatchOutput(focusedId)), [focusedId, onWatchOutput, visible]);
|
|
166
215
|
// The armed confirmation decays after 4s so a stray later `k` never kills.
|
|
167
216
|
React.useEffect(() => {
|
|
168
217
|
if (killArmed === undefined)
|
|
@@ -170,10 +219,7 @@ export function JobsPanel({ jobs, onClose, onKill, onSendToChat, initialFocusId,
|
|
|
170
219
|
const timer = setTimeout(() => setKillArmed(undefined), 4000);
|
|
171
220
|
return () => clearTimeout(timer);
|
|
172
221
|
}, [killArmed]);
|
|
173
|
-
// Full-screen
|
|
174
|
-
// delta is isActive, which is always true in default mode). In panel mode
|
|
175
|
-
// this stays registered-but-inactive so the hook order never changes; the
|
|
176
|
-
// host dispatcher (usePanelInput) owns the keys instead.
|
|
222
|
+
// Full-screen input stays registered but inactive when the panel dispatcher owns keys.
|
|
177
223
|
useInput((input, key, event) => {
|
|
178
224
|
if (panelMode)
|
|
179
225
|
return;
|
|
@@ -210,6 +256,13 @@ export function JobsPanel({ jobs, onClose, onKill, onSendToChat, initialFocusId,
|
|
|
210
256
|
}
|
|
211
257
|
return;
|
|
212
258
|
}
|
|
259
|
+
if (input === 'e' && !key.ctrl && !key.meta) {
|
|
260
|
+
event.stopImmediatePropagation();
|
|
261
|
+
setKillArmed(undefined);
|
|
262
|
+
if (focusedId !== undefined)
|
|
263
|
+
toggleDetails(focusedId);
|
|
264
|
+
return;
|
|
265
|
+
}
|
|
213
266
|
// Enter on a live job does nothing extra (the card/panel IS the view);
|
|
214
267
|
// keep the key consumed while the panel owns the keyboard.
|
|
215
268
|
if (isPlainReturnInput(input, key)) {
|
|
@@ -250,6 +303,12 @@ export function JobsPanel({ jobs, onClose, onKill, onSendToChat, initialFocusId,
|
|
|
250
303
|
}
|
|
251
304
|
return true;
|
|
252
305
|
}
|
|
306
|
+
if (input === 'e' && !key.ctrl && !key.meta) {
|
|
307
|
+
setKillArmed(undefined);
|
|
308
|
+
if (focusedId !== undefined)
|
|
309
|
+
toggleDetails(focusedId);
|
|
310
|
+
return true;
|
|
311
|
+
}
|
|
253
312
|
// 's' = Send to Chat:焦点任务附为下一次提交的上下文(chip 在输入框
|
|
254
313
|
// 上方,Esc 可撤)。未接通道时让出。
|
|
255
314
|
if (input === 's') {
|
|
@@ -285,7 +344,7 @@ export function JobsPanel({ jobs, onClose, onKill, onSendToChat, initialFocusId,
|
|
|
285
344
|
// one left/right cell, no title divider / exit button / hint footer
|
|
286
345
|
// (PanelBar + the host hint row already carry that chrome), the summary
|
|
287
346
|
// line kept but tightened for narrow widths.
|
|
288
|
-
return (_jsxs(Box, { flexDirection: "column", paddingLeft: 1, paddingRight: 1, paddingTop: 0, flexGrow: 1, ref: clockRef, children: [_jsxs(Box, { flexDirection: "row", gap: 1, marginTop: 0, marginBottom: 1, children: [_jsxs(Text, { children: [_jsx(Text, { color: "accent", children: running }), _jsxs(Text, { dimColor: true, children: [" ", t('jobs-panel-count-running')] })] }), (terminalColumns >= 34 || failed > 0) && (_jsxs(Text, { children: [_jsx(Text, { color: failed > 0 ? 'error' : 'success', children: failed > 0 ? failed : completed }), _jsxs(Text, { dimColor: true, children: [" ", failed > 0 ? t('jobs-panel-count-failed') : t('jobs-panel-count-completed')] })] }))] }), _jsx(Box, { flexDirection: "column", maxHeight: Math.max(6, rows - 4), marginTop: 0, children: _jsx(ScrollBox, { ref: scrollRef, flexDirection: "column", flexGrow: 1, children: jobs.length === 0 ? (_jsxs(Box, { flexDirection: "column", alignItems: "center", marginTop: 2, children: [_jsx(Text, { dimColor: true, children: '○' }), _jsx(Text, { dimColor: true, children: t('jobs-panel-empty') })] })) : (jobs.map((job, index) => (_jsx(JobRowLine, { job: job, focused: index === focus, armed: killArmed === job.id, columns: rowColumns, onFocus: () => { setKillArmed(undefined); setFocusIndex(index); } }, job.id)))) }) })] }));
|
|
347
|
+
return (_jsxs(Box, { flexDirection: "column", paddingLeft: 1, paddingRight: 1, paddingTop: 0, flexGrow: 1, ref: clockRef, children: [_jsxs(Box, { flexDirection: "row", gap: 1, marginTop: 0, marginBottom: 1, children: [_jsxs(Text, { children: [_jsx(Text, { color: "accent", children: running }), _jsxs(Text, { dimColor: true, children: [" ", t('jobs-panel-count-running')] })] }), (terminalColumns >= 34 || failed > 0) && (_jsxs(Text, { children: [_jsx(Text, { color: failed > 0 ? 'error' : 'success', children: failed > 0 ? failed : completed }), _jsxs(Text, { dimColor: true, children: [" ", failed > 0 ? t('jobs-panel-count-failed') : t('jobs-panel-count-completed')] })] }))] }), _jsx(Box, { flexDirection: "column", maxHeight: Math.max(6, rows - 4), marginTop: 0, children: _jsx(ScrollBox, { ref: scrollRef, flexDirection: "column", flexGrow: 1, children: jobs.length === 0 ? (_jsxs(Box, { flexDirection: "column", alignItems: "center", marginTop: 2, children: [_jsx(Text, { dimColor: true, children: '○' }), _jsx(Text, { dimColor: true, children: t('jobs-panel-empty') })] })) : (jobs.map((job, index) => (_jsx(JobRowLine, { job: job, focused: index === focus, armed: killArmed === job.id, columns: rowColumns, expanded: expandedJobs.has(job.id), width: terminalColumns - (panelMode ? 2 : 4), onToggle: () => { setKillArmed(undefined); setFocusIndex(index); toggleDetails(job.id); }, onFocus: () => { setKillArmed(undefined); setFocusIndex(index); } }, job.id)))) }) })] }));
|
|
289
348
|
}
|
|
290
|
-
return (_jsxs(Box, { flexDirection: "column", paddingX: 2, paddingY: 1, ref: clockRef, children: [_jsx(Divider, { color: "accent", title: t('jobs-panel-title') }), _jsxs(Box, { flexDirection: "row", gap: 3, marginTop: 1, marginBottom: 1, children: [_jsxs(Text, { children: [_jsx(Text, { color: "accent", children: running }), _jsxs(Text, { dimColor: true, children: [" ", t('jobs-panel-count-running')] })] }), _jsxs(Text, { children: [_jsx(Text, { color: "success", children: completed }), _jsxs(Text, { dimColor: true, children: [" ", t('jobs-panel-count-completed')] })] }), failed > 0 && (_jsxs(Text, { children: [_jsx(Text, { color: "error", children: failed }), _jsxs(Text, { dimColor: true, children: [" ", t('jobs-panel-count-failed')] })] })), _jsx(Box, { flexGrow: 1 }), _jsx(ExitButton, { onClick: () => onClose?.() })] }), _jsx(Box, { flexDirection: "column", maxHeight: Math.max(10, rows - 10), marginTop: 1, children: _jsx(ScrollBox, { ref: scrollRef, flexDirection: "column", flexGrow: 1, children: jobs.length === 0 ? (_jsxs(Box, { flexDirection: "column", alignItems: "center", marginTop: Math.max(2, Math.floor((rows - 16) / 3)), children: [_jsx(Text, { dimColor: true, children: '○' }), _jsx(Text, { dimColor: true, children: t('jobs-panel-empty') }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: t('jobs-panel-empty-hint') }) })] })) : (jobs.map((job, index) => (_jsx(JobRowLine, { job: job, focused: index === focus, armed: killArmed === job.id, columns: rowColumns, onFocus: () => { setKillArmed(undefined); setFocusIndex(index); } }, job.id)))) }) }), _jsx(Divider, { color: "subtle", title: "" }), _jsx(Box, { marginTop: 0, children: _jsx(Text, { dimColor: true, children: t('jobs-panel-hint') }) })] }));
|
|
349
|
+
return (_jsxs(Box, { flexDirection: "column", paddingX: 2, paddingY: 1, ref: clockRef, children: [_jsx(Divider, { color: "accent", title: t('jobs-panel-title') }), _jsxs(Box, { flexDirection: "row", gap: 3, marginTop: 1, marginBottom: 1, children: [_jsxs(Text, { children: [_jsx(Text, { color: "accent", children: running }), _jsxs(Text, { dimColor: true, children: [" ", t('jobs-panel-count-running')] })] }), _jsxs(Text, { children: [_jsx(Text, { color: "success", children: completed }), _jsxs(Text, { dimColor: true, children: [" ", t('jobs-panel-count-completed')] })] }), failed > 0 && (_jsxs(Text, { children: [_jsx(Text, { color: "error", children: failed }), _jsxs(Text, { dimColor: true, children: [" ", t('jobs-panel-count-failed')] })] })), _jsx(Box, { flexGrow: 1 }), _jsx(ExitButton, { onClick: () => onClose?.() })] }), _jsx(Box, { flexDirection: "column", maxHeight: Math.max(10, rows - 10), marginTop: 1, children: _jsx(ScrollBox, { ref: scrollRef, flexDirection: "column", flexGrow: 1, children: jobs.length === 0 ? (_jsxs(Box, { flexDirection: "column", alignItems: "center", marginTop: Math.max(2, Math.floor((rows - 16) / 3)), children: [_jsx(Text, { dimColor: true, children: '○' }), _jsx(Text, { dimColor: true, children: t('jobs-panel-empty') }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: t('jobs-panel-empty-hint') }) })] })) : (jobs.map((job, index) => (_jsx(JobRowLine, { job: job, focused: index === focus, armed: killArmed === job.id, columns: rowColumns, expanded: expandedJobs.has(job.id), width: terminalColumns - (panelMode ? 2 : 4), onToggle: () => { setKillArmed(undefined); setFocusIndex(index); toggleDetails(job.id); }, onFocus: () => { setKillArmed(undefined); setFocusIndex(index); } }, job.id)))) }) }), _jsx(Divider, { color: "subtle", title: "" }), _jsx(Box, { marginTop: 0, children: _jsx(Text, { dimColor: true, children: t('jobs-panel-hint') }) })] }));
|
|
291
350
|
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type KernelOption } from './kernelCatalog.js';
|
|
3
|
+
/**
|
|
4
|
+
* 内核选择器(launchpad 的「内核」入口、/kernel 与右下角内核区三条入口共用
|
|
5
|
+
* 同一个浮层)——一行一个内核:名字 + 副标题(版本 / 置灰原因),当前内核打
|
|
6
|
+
* 勾,不可选的置灰。
|
|
7
|
+
*
|
|
8
|
+
* 视觉照 ModePicker(Pane color=permission + 标题 + 行列表 + Enter/Esc 提示行,
|
|
9
|
+
* 第五版那套 picker 的统一姿态);键盘归宿主(Chat 的 overlay 分支):↑/↓ 移
|
|
10
|
+
* 焦点、Enter 走确认路径、Esc 关掉,本组件不碰 useInput。
|
|
11
|
+
*
|
|
12
|
+
* 行是 ListItem,但 **styled=false**:文本样式由这里自己画。原因是不可选行
|
|
13
|
+
* 必须变暗,而 ListItem 的 disabled 会把 ❯ 焦点指针一起吞掉(renderIndicator
|
|
14
|
+
* 在 disabled 时只画一格空格)——那样键盘走上来就看不见自己在哪一行了。
|
|
15
|
+
* 于是禁用态用 dimColor 表达、指针留给 isFocused,两者互不干扰。
|
|
16
|
+
*
|
|
17
|
+
* 鼠标契约照仓库规矩:给了 onPick 行才可点(ListItem 的 hover 底色随之出现),
|
|
18
|
+
* 点击回的是**行号**——宿主把它喂给与键盘 Enter 完全相同的那条确认路径。
|
|
19
|
+
*/
|
|
20
|
+
export declare function KernelPicker({ options, focusIndex, pinned, onPick }: {
|
|
21
|
+
options: readonly KernelOption[];
|
|
22
|
+
focusIndex: number;
|
|
23
|
+
/** 启动参数锁定了内核:多画一行提示 */
|
|
24
|
+
pinned?: boolean;
|
|
25
|
+
/** 鼠标点行(落到 Chat 同一条确认路径) */
|
|
26
|
+
onPick?: (index: number) => void;
|
|
27
|
+
}): React.ReactNode;
|
|
28
|
+
//# sourceMappingURL=KernelPicker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KernelPicker.d.ts","sourceRoot":"","sources":["../../../src/components/KernelPicker.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAMzB,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEtE;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,YAAY,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;IACpE,OAAO,EAAE,SAAS,YAAY,EAAE,CAAA;IAChC,UAAU,EAAE,MAAM,CAAA;IAClB,uBAAuB;IACvB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,4BAA4B;IAC5B,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CACjC,GAAG,KAAK,CAAC,SAAS,CAiDlB"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { t } from '../i18n.js';
|
|
3
|
+
import { Box, Text } from '../ui.js';
|
|
4
|
+
import { Pane } from './design-system/Pane.js';
|
|
5
|
+
import { ListItem } from './design-system/ListItem.js';
|
|
6
|
+
import { HintLine } from './design-system/HintLine.js';
|
|
7
|
+
import { kernelSubtitle } from './kernelCatalog.js';
|
|
8
|
+
/**
|
|
9
|
+
* 内核选择器(launchpad 的「内核」入口、/kernel 与右下角内核区三条入口共用
|
|
10
|
+
* 同一个浮层)——一行一个内核:名字 + 副标题(版本 / 置灰原因),当前内核打
|
|
11
|
+
* 勾,不可选的置灰。
|
|
12
|
+
*
|
|
13
|
+
* 视觉照 ModePicker(Pane color=permission + 标题 + 行列表 + Enter/Esc 提示行,
|
|
14
|
+
* 第五版那套 picker 的统一姿态);键盘归宿主(Chat 的 overlay 分支):↑/↓ 移
|
|
15
|
+
* 焦点、Enter 走确认路径、Esc 关掉,本组件不碰 useInput。
|
|
16
|
+
*
|
|
17
|
+
* 行是 ListItem,但 **styled=false**:文本样式由这里自己画。原因是不可选行
|
|
18
|
+
* 必须变暗,而 ListItem 的 disabled 会把 ❯ 焦点指针一起吞掉(renderIndicator
|
|
19
|
+
* 在 disabled 时只画一格空格)——那样键盘走上来就看不见自己在哪一行了。
|
|
20
|
+
* 于是禁用态用 dimColor 表达、指针留给 isFocused,两者互不干扰。
|
|
21
|
+
*
|
|
22
|
+
* 鼠标契约照仓库规矩:给了 onPick 行才可点(ListItem 的 hover 底色随之出现),
|
|
23
|
+
* 点击回的是**行号**——宿主把它喂给与键盘 Enter 完全相同的那条确认路径。
|
|
24
|
+
*/
|
|
25
|
+
export function KernelPicker({ options, focusIndex, pinned, onPick }) {
|
|
26
|
+
return (_jsx(Pane, { color: "permission", children: _jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: "remember", bold: true, children: t('kernel-picker-title') }) }), options.map((option, index) => {
|
|
27
|
+
const focused = index === focusIndex;
|
|
28
|
+
const subtitle = kernelSubtitle(option, key => t(key));
|
|
29
|
+
return (_jsx(ListItem, { isFocused: focused, isSelected: option.current, description: subtitle, styled: false, onClick: onPick === undefined ? undefined : () => onPick(index), children: _jsx(Text
|
|
30
|
+
// 不可选 = 变暗(**始终**变暗,焦点落上来也只是多一个 ❯ 指针,
|
|
31
|
+
// 不把「这一行选不了」这件事照亮成可选的假象)。
|
|
32
|
+
, {
|
|
33
|
+
// 不可选 = 变暗(**始终**变暗,焦点落上来也只是多一个 ❯ 指针,
|
|
34
|
+
// 不把「这一行选不了」这件事照亮成可选的假象)。
|
|
35
|
+
dimColor: !option.selectable, color: option.current ? 'success' : focused && option.selectable ? 'suggestion' : undefined, bold: focused && option.selectable, wrap: "truncate-end", children: t(option.labelKey) }) }, option.id));
|
|
36
|
+
}), pinned === true && (_jsx(Box, { paddingLeft: 2, children: _jsx(Text, { dimColor: true, wrap: "wrap", children: t('kernel-pinned-hint') }) })), _jsx(Text, { dimColor: true, italic: true, children: _jsx(HintLine, { text: t('hint-confirm-exit') }) })] }) }));
|
|
37
|
+
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { type Tip } from '../tips.js';
|
|
3
3
|
import { type UpstreamDriftSummary } from '../dsh-adapter/contract.js';
|
|
4
|
+
import { type Brand } from '../branding.js';
|
|
4
5
|
import { type SplashEgg } from './splashEggs.js';
|
|
5
6
|
import { type WhaleIntroId } from './whaleFrames.js';
|
|
6
7
|
/**
|
|
@@ -31,7 +32,7 @@ import { type WhaleIntroId } from './whaleFrames.js';
|
|
|
31
32
|
* with a clickable "star us on GitHub" line whose indent is recomputed from
|
|
32
33
|
* its own width.
|
|
33
34
|
*/
|
|
34
|
-
export declare function LogoV2({ model, effort, cwd, skipIntro, intro, tip, fontId, whale, whaleIdle, whaleGirl, starred, starReveal, onStarClick, working, drift, egg, starChance, align, chrome, arrangement, companionSkin, }: {
|
|
35
|
+
export declare function LogoV2({ model, effort, cwd, skipIntro, intro, tip, fontId, whale, whaleIdle, whaleGirl, brand, starred, starReveal, onStarClick, working, drift, egg, starChance, align, chrome, arrangement, companionSkin, }: {
|
|
35
36
|
/** 模型/effort/工作目录只画在 full 形态里;minimal(落地页)不传也行。 */
|
|
36
37
|
model?: string;
|
|
37
38
|
effort?: string | undefined;
|
|
@@ -63,6 +64,11 @@ export declare function LogoV2({ model, effort, cwd, skipIntro, intro, tip, font
|
|
|
63
64
|
* replaced with better art) takes the slot. Both forms are static, so
|
|
64
65
|
* `whaleIdle` only animates the whale. */
|
|
65
66
|
whaleGirl?: boolean;
|
|
67
|
+
/** 品牌档(当前后端 → `brandOfProvider`,见 `branding.ts`):claude 时
|
|
68
|
+
* 大字词换 `CLAUDE`/`CODE`、配色换橙阶、立绘槽固定 Claude 娘(不看
|
|
69
|
+
* whaleGirl 设置——鲸鱼与鲸鱼娘是 DeepSeek 品牌资产)。测试缝:缺省
|
|
70
|
+
* `deepseek`,行为与品牌化之前逐字节一致。 */
|
|
71
|
+
brand?: Brand;
|
|
66
72
|
/** 本次会话已经 star 过:彩蛋标题换成「捡到一颗小星星啦」,不再重复求。 */
|
|
67
73
|
starred?: boolean;
|
|
68
74
|
/** 彩蛋渐显的测试缝:`instant` 时三行一次画全(静态渲染夹具用;真机不传)。 */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LogoV2.d.ts","sourceRoot":"","sources":["../../../src/components/LogoV2.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAiB,KAAK,GAAG,EAAE,MAAM,YAAY,CAAA;AACpD,OAAO,EAAoD,KAAK,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;
|
|
1
|
+
{"version":3,"file":"LogoV2.d.ts","sourceRoot":"","sources":["../../../src/components/LogoV2.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAiB,KAAK,GAAG,EAAE,MAAM,YAAY,CAAA;AACpD,OAAO,EAAoD,KAAK,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AAMxH,OAAO,EAAqC,KAAK,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAM9E,OAAO,EAAiC,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAU/E,OAAO,EAA+E,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAA;AA+CjI;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,MAAM,CAAC,EACrB,KAAU,EACV,MAAM,EACN,GAAQ,EACR,SAAiB,EACjB,KAAK,EACL,GAAG,EACH,MAAM,EACN,KAAY,EACZ,SAAgB,EAChB,SAAiB,EACjB,KAAkB,EAClB,OAAe,EACf,UAAU,EACV,WAAW,EACX,OAAe,EACf,KAAK,EACL,GAAG,EACH,UAAU,EACV,KAAe,EACf,MAAe,EACf,WAAmB,EACnB,aAAa,GACd,EAAE;IACD,mDAAmD;IACnD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,iFAAiF;IACjF,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,4EAA4E;IAC5E,KAAK,CAAC,EAAE,YAAY,CAAA;IACpB;0CACsC;IACtC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC3B,6EAA6E;IAC7E,GAAG,CAAC,EAAE,GAAG,CAAA;IACT;;qCAEiC;IACjC,GAAG,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;IACtB;oEACgE;IAChE,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,mFAAmF;IACnF,KAAK,CAAC,EAAE,OAAO,CAAA;IACf;;;;;;;8CAO0C;IAC1C,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;;mCAG+B;IAC/B,KAAK,CAAC,EAAE,KAAK,CAAA;IACb,4CAA4C;IAC5C,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,gDAAgD;IAChD,UAAU,CAAC,EAAE,SAAS,CAAA;IACtB;sCACkC;IAClC,WAAW,CAAC,EAAE,MAAM,IAAI,CAAA;IACxB;;;4CAGwC;IACxC,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;;mCAG+B;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB;2EACuE;IACvE,KAAK,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAA;IACnC;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAA;IAC1B;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAC3B;;;;;OAKG;IACH,WAAW,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAA;IAC9B;wDACoD;IACpD,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB,GAAG,KAAK,CAAC,SAAS,CAujBlB"}
|
|
@@ -7,20 +7,22 @@ import { readFileSync } from 'node:fs';
|
|
|
7
7
|
import { dirname, join } from 'node:path';
|
|
8
8
|
import { fileURLToPath } from 'node:url';
|
|
9
9
|
import { Box, Text, useAnimationFrame, useTerminalImages, useTerminalSize } from '../ui.js';
|
|
10
|
-
import { getTheme } from '../theme.js';
|
|
10
|
+
import { getTheme, isLightThemeActive } from '../theme.js';
|
|
11
|
+
import { BRAND_SPLASH_WORDS, BRAND_TAGLINE } from '../branding.js';
|
|
11
12
|
import { useTheme } from './design-system/ThemeProvider.js';
|
|
12
|
-
import { parseRGB } from './Spinner/spinnerUtils.js';
|
|
13
|
-
import { renderBigText } from './bigfont.js';
|
|
13
|
+
import { interpolateColor, parseRGB } from './Spinner/spinnerUtils.js';
|
|
14
|
+
import { paintedWidth, renderBigText } from './bigfont.js';
|
|
14
15
|
import { COLUMN_GAP, WHALE_BOX_WIDTH, resolveSplashLayout } from './splashLayout.js';
|
|
15
16
|
import { withTagline, pickSplashFont, splashFontById } from './splashFonts.js';
|
|
16
17
|
import { pickSplashEgg, splashStarLine } from './splashEggs.js';
|
|
17
18
|
import { isHistoricMilestone, markStarAsked, pendingStarMilestone, recordLaunch, STAR_MILESTONES, usageSnapshot } from '../usageStats.js';
|
|
18
19
|
import { effectiveComboDisplay } from '../utils/keymap.js';
|
|
19
20
|
import { stringWidth } from '../ink/stringWidth.js';
|
|
20
|
-
import { BRAND, FLASH, ICE, PALE, sweep } from './shimmer.js';
|
|
21
|
+
import { BRAND, EMBER, EMBER_BRIGHT, EMBER_FLASH, EMBER_LIGHT, EMBER_PALE, EMBER_PAPER_FLASH, FLASH, ICE, LAVENDER, LAVENDER_BRIGHT, LAVENDER_FLASH, LAVENDER_LIGHT, LAVENDER_PALE, LAVENDER_PAPER, LAVENDER_PAPER_FLASH, LAVENDER_SOFT, PALE, sweep } from './shimmer.js';
|
|
21
22
|
import { STANDARD_FRAME_INDEX, WhaleArt } from './Whale.js';
|
|
22
23
|
import { WhaleGirlArt } from './WhaleGirl.js';
|
|
23
|
-
import {
|
|
24
|
+
import { ClaudeGirlArt } from './ClaudeGirl.js';
|
|
25
|
+
import { MAID_BOX_CENTER, MaidPortrait, portraitAssetsOf, useMaidPortraits } from './maidPortrait.js';
|
|
24
26
|
import { SplashMascot, useSplashMascotSkin } from './sidePanel/companion/SplashMascot.js';
|
|
25
27
|
import { OPENING_SEQUENCES, pickOpeningSequence, WHALE_FRAME_INDEX } from './whaleFrames.js';
|
|
26
28
|
import { RESTING_POSE } from './whaleLayers.js';
|
|
@@ -88,7 +90,7 @@ function capitalize(text) {
|
|
|
88
90
|
* with a clickable "star us on GitHub" line whose indent is recomputed from
|
|
89
91
|
* its own width.
|
|
90
92
|
*/
|
|
91
|
-
export function LogoV2({ model = '', effort, cwd = '', skipIntro = false, intro, tip, fontId, whale = true, whaleIdle = true, whaleGirl = false, starred = false, starReveal, onStarClick, working = false, drift, egg, starChance, align = 'start', chrome = 'full', arrangement = 'row', companionSkin, }) {
|
|
93
|
+
export function LogoV2({ model = '', effort, cwd = '', skipIntro = false, intro, tip, fontId, whale = true, whaleIdle = true, whaleGirl = false, brand = 'deepseek', starred = false, starReveal, onStarClick, working = false, drift, egg, starChance, align = 'start', chrome = 'full', arrangement = 'row', companionSkin, }) {
|
|
92
94
|
// One intro per logo mount: the production path rolls (startup splash
|
|
93
95
|
// and each /deepseek replay roll independently), the `intro` seam pins
|
|
94
96
|
// a specific animation for probes.
|
|
@@ -165,10 +167,18 @@ export function LogoV2({ model = '', effort, cwd = '', skipIntro = false, intro,
|
|
|
165
167
|
// 按天轮换的大字字体:同一天内恒定、隔天换一款;`fontId`(设置项)可 pin 住一款。
|
|
166
168
|
const [dailyFont] = React.useState(() => pickSplashFont());
|
|
167
169
|
const font = fontId === undefined ? dailyFont : splashFontById(fontId);
|
|
170
|
+
// 品牌词(`branding.ts`):claude 内核换 `CLAUDE`/`CODE`、codex 内核换
|
|
171
|
+
// `CODEX`/`HARNESS`——字身不变、**两行同字距**(用户点名「间隙一致」:
|
|
172
|
+
// 等宽契约靠两行字距互补,字数差大的词对间隙观感差很多),块宽以默认
|
|
173
|
+
// 词对紧解为预算。窄终端阶梯阈值跟着当天真实标题宽度走,与彩蛋共用
|
|
174
|
+
// `withTagline`。
|
|
175
|
+
const words = BRAND_SPLASH_WORDS[brand];
|
|
176
|
+
const brandFont = brand !== 'deepseek' ? withTagline(font, words.top, words.bottom, { uniform: true }) : font;
|
|
168
177
|
// 节日彩蛋:本地日期整天恒定,每次 mount 只判一次(照 pickSplashFont 的写法)。
|
|
169
|
-
//
|
|
178
|
+
// 只换下排词——上排钉在品牌词上(deepseek 的 `DEEPSEEK` / claude 的 `CLAUDE`
|
|
179
|
+
// / codex 的 `CODEX`)。
|
|
170
180
|
const [dailyEgg] = React.useState(() => (egg === undefined ? pickSplashEgg() : egg));
|
|
171
|
-
const titleFont = dailyEgg === null ?
|
|
181
|
+
const titleFont = dailyEgg === null ? brandFont : withTagline(font, brand === 'deepseek' ? font.tagline.top : words.top, dailyEgg.bottom, brand === 'deepseek' ? undefined : { uniform: true });
|
|
172
182
|
// 窄终端阶梯:鲸鱼 + 大字 → 纯大字 → 纯鲸鱼 → 一行纯文字(阈值随字体字身宽度变)。
|
|
173
183
|
const splash = resolveSplashLayout(columns, { whale, font: titleFont });
|
|
174
184
|
/**
|
|
@@ -188,12 +198,18 @@ export function LogoV2({ model = '', effort, cwd = '', skipIntro = false, intro,
|
|
|
188
198
|
// 女仆娘档优先走**真图**(Kitty/Sixel 终端图像协议,见 `maidPortrait.tsx`);
|
|
189
199
|
// 协议不可用(内联模式、终端不支持)或资产解码失败时,回落到字符画版
|
|
190
200
|
// 女仆娘(`WhaleGirl.tsx` 半块精灵——作者占位,之后会换更好看的)。
|
|
201
|
+
// 品牌档(`branding.ts`)的立绘槽固定各自的娘(同一套盒几何):claude =
|
|
202
|
+
// Claude 娘(真图 `assets/claude-girl/`,回落 `ClaudeGirl.tsx`);codex =
|
|
203
|
+
// 淡紫恶魔精灵(真图 `assets/codex-girl/`,回落 `WhaleGirl.tsx`)——都不看
|
|
204
|
+
// whaleGirl 设置。像素鲸鱼、鲸鱼娘与 deepy/鲸娘皮肤是 DeepSeek 品牌的资产。
|
|
191
205
|
// 两种形态都是静态立绘:闲置动画与点击爱心仍是鲸鱼专属。
|
|
192
206
|
// `maidImageActive` 只在「真图画出来了」时为真。
|
|
193
|
-
const
|
|
194
|
-
const
|
|
207
|
+
const claudeArt = brand === 'claude';
|
|
208
|
+
const portraitMode = whaleGirl || brand !== 'deepseek';
|
|
209
|
+
const imagesAvailable = useTerminalImages(portraitMode);
|
|
210
|
+
const portraits = useMaidPortraits(portraitMode && imagesAvailable, portraitAssetsOf(brand));
|
|
195
211
|
const maidSource = portraits?.normal;
|
|
196
|
-
const maidImageActive =
|
|
212
|
+
const maidImageActive = portraitMode && imagesAvailable && maidSource !== undefined;
|
|
197
213
|
// 点一下她 → 换成「高兴鲸娘」几秒(自动回安静版;第一个任务后定格、
|
|
198
214
|
// 不再响应,与鲸鱼的规则一致)。定时器在卸载/重挂时清掉。
|
|
199
215
|
const [maidHappy, setMaidHappy] = React.useState(false);
|
|
@@ -230,7 +246,7 @@ export function LogoV2({ model = '', effort, cwd = '', skipIntro = false, intro,
|
|
|
230
246
|
React.useEffect(() => {
|
|
231
247
|
// 女仆娘档(真图或字符画)与吉祥物档(SplashMascot 自带节拍器)都
|
|
232
248
|
// 不需要鲸鱼的闲置规划器:那两条路径里分层鲸根本没画。
|
|
233
|
-
if (!settled || !whaleIdle || !showWhale || whaleFrozen ||
|
|
249
|
+
if (!settled || !whaleIdle || !showWhale || whaleFrozen || portraitMode || mascotSkin !== undefined) {
|
|
234
250
|
setIdlePose(null);
|
|
235
251
|
tickRef.current = null;
|
|
236
252
|
return;
|
|
@@ -261,7 +277,7 @@ export function LogoV2({ model = '', effort, cwd = '', skipIntro = false, intro,
|
|
|
261
277
|
if (timer !== undefined)
|
|
262
278
|
clearTimeout(timer);
|
|
263
279
|
};
|
|
264
|
-
}, [settled, whaleIdle, showWhale, working, whaleFrozen,
|
|
280
|
+
}, [settled, whaleIdle, showWhale, working, whaleFrozen, portraitMode]);
|
|
265
281
|
// Render priority: the layered planner pose owns the settled header while
|
|
266
282
|
// it runs (hearts and blinks compose over the body planes). Otherwise a
|
|
267
283
|
// click heart plays as whole heart frames over the intro — or over the
|
|
@@ -274,7 +290,14 @@ export function LogoV2({ model = '', effort, cwd = '', skipIntro = false, intro,
|
|
|
274
290
|
// Frozen clock for the settled header: t=0 parks every sweep highlight
|
|
275
291
|
// off-screen, leaving the static gradient behind.
|
|
276
292
|
const t = settled ? 0 : time;
|
|
277
|
-
|
|
293
|
+
// 品牌欢迎语(claude 档专用文案;deepseek 沿用 i18n 的 `logo-tagline`)。
|
|
294
|
+
// 英文是两行(\n 分隔)——渲染与居中都按行处理,见下方 welcomeWidth/渲染。
|
|
295
|
+
const brandTagline = BRAND_TAGLINE[brand];
|
|
296
|
+
const tagline = brand !== 'deepseek'
|
|
297
|
+
? (getLang() === 'zh' ? brandTagline.zh : brandTagline.en)
|
|
298
|
+
: tr('logo-tagline');
|
|
299
|
+
/** 欢迎语逐行拆开(单行文案就是一元素)。 */
|
|
300
|
+
const taglineLines = tagline.split('\n');
|
|
278
301
|
// 求 star 改由**本机用量里程碑**触发(累计启动次数 / 累计在线时长),不再每次随机:
|
|
279
302
|
// 跨档时只报最高那一档、每档只报一次(`usageStats` 记账)。`starChance` 退化成测试缝
|
|
280
303
|
// ——0 关掉、非 0 强开(强开时用最高那档的文案)。`DSH_TUI_STAR_LINE=1`
|
|
@@ -336,22 +359,89 @@ export function LogoV2({ model = '', effort, cwd = '', skipIntro = false, intro,
|
|
|
336
359
|
// the width the line ACTUALLY shows: the star easter egg renders a longer
|
|
337
360
|
// line than `logo-tagline`, so reusing the tagline's width would push it
|
|
338
361
|
// visibly off-center.
|
|
339
|
-
|
|
362
|
+
// 多行欢迎语取**最宽行**算宽(居中缩进以此为准,窄行再各自补半差)。
|
|
363
|
+
const welcomeWidth = starLine === null
|
|
364
|
+
? Math.max(...taglineLines.map(line => stringWidth(line)))
|
|
365
|
+
: starLine.width;
|
|
340
366
|
// 居中排版(落地页)交给父级的 `alignItems="center"`,缩进一律为 0;只有
|
|
341
367
|
// 转录区顶部那一版才需要"把标语钉在鲸鱼下方"。这条判据与根盒的
|
|
342
368
|
// `align` 走同一个开关,否则两种对齐会各偏一点。
|
|
343
369
|
const welcomePad = align === 'center'
|
|
344
370
|
? 0
|
|
345
371
|
: showWhale
|
|
346
|
-
? Math.max(0, Math.round((
|
|
372
|
+
? Math.max(0, Math.round((portraitMode ? MAID_BOX_CENTER : WHALE_CENTER) - welcomeWidth / 2))
|
|
347
373
|
: 2;
|
|
348
374
|
// 两行标题各自用字体声明的字距;下排再按 `bottomIndent` 居中——
|
|
349
375
|
// 两者一起保证画出来的列数相等(见 splashFonts 的 tagline 契约)。
|
|
350
|
-
// 节日彩蛋换的就是这里的两排词(`titleFont`
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
const
|
|
354
|
-
|
|
376
|
+
// 节日彩蛋换的就是这里的两排词(`titleFont` 已按当天词对重解字距)。
|
|
377
|
+
const { top: fontTop, bottom, topKerning, bottomKerning, bottomIndent } = titleFont.tagline;
|
|
378
|
+
// 品牌词对经 withTagline 重解后 fontTop 即品牌上排词(含彩蛋日的钉顶)。
|
|
379
|
+
const top = fontTop;
|
|
380
|
+
// 大字配色按字体/品牌解析(运行时 `palette`(扩展缝)最优先):
|
|
381
|
+
// - deepseek:主题 accent → activity → PALE 的蓝白阶(品牌化之前的行为);
|
|
382
|
+
// - claude:cc-bridge 校过的深橙 → 浅橙,两行同一对端点——第二行终点不再
|
|
383
|
+
// 落到写死的蓝白 PALE;
|
|
384
|
+
// - bevel(半立体)两个品牌都随基色派生亮/暗两档(提亮 / 压暖黑):字形
|
|
385
|
+
// 自带 █/▓ 明暗笔画,叠上主题色渐变才是"金属受光"。旧版写死的静态灰阶
|
|
386
|
+
// 在任何主题下都像没上色(用户反馈的"灰色字体")。
|
|
387
|
+
// claude 双主题的大字端点:深底 #D77757 → 淡橙;浅底(claude-paper)反向
|
|
388
|
+
// ——正色压深 #C96442、高光也变深(浅底上"亮"是加深)。bevel 的金属明暗
|
|
389
|
+
// 两档同样以当档基色派生。
|
|
390
|
+
const brandPaper = brand !== 'deepseek' && isLightThemeActive(themeName);
|
|
391
|
+
// 品牌大字色阶(跨两行三档,从左上到右下走完):claude 陶土橙、codex 薰衣草
|
|
392
|
+
// 紫;深底从亮档起步奔最亮收,浅底反向从深化档起步(浅底上"亮"是加深)。
|
|
393
|
+
// deepseek 不在表内——沿用主题 wordmark/tagline/PALE 的蓝白阶。
|
|
394
|
+
const brandLadder = brand === 'claude'
|
|
395
|
+
? (brandPaper
|
|
396
|
+
? { base: EMBER, start: EMBER, mid: EMBER_LIGHT, end: EMBER_BRIGHT, flash: EMBER_PAPER_FLASH }
|
|
397
|
+
: { base: EMBER_LIGHT, start: EMBER_LIGHT, mid: EMBER_BRIGHT, end: EMBER_PALE, flash: EMBER_FLASH })
|
|
398
|
+
: brand === 'codex'
|
|
399
|
+
? (brandPaper
|
|
400
|
+
? { base: LAVENDER_PAPER, start: LAVENDER_PAPER, mid: LAVENDER_LIGHT, end: LAVENDER, flash: LAVENDER_PAPER_FLASH }
|
|
401
|
+
: { base: LAVENDER_BRIGHT, start: LAVENDER_BRIGHT, mid: LAVENDER_SOFT, end: LAVENDER_PALE, flash: LAVENDER_FLASH })
|
|
402
|
+
: undefined;
|
|
403
|
+
const brandBase = brandLadder?.base ?? wordmarkRGB;
|
|
404
|
+
const bevelShade = titleFont.id === 'bevel'
|
|
405
|
+
? {
|
|
406
|
+
from: interpolateColor(brandBase, { r: 255, g: 255, b: 255 }, 0.45),
|
|
407
|
+
to: interpolateColor(brandBase, { r: 24, g: 18, b: 12 }, 0.55),
|
|
408
|
+
}
|
|
409
|
+
: undefined;
|
|
410
|
+
// 扫光高光同族:橙字上扫过蓝光会很脏;claude 深底暖阳高光、浅底深化高光。
|
|
411
|
+
const flash = brandLadder?.flash ?? FLASH;
|
|
412
|
+
// claude 渐变是**跨两行的三档色阶**(行一 起→中、行二 中→收),整幅从左
|
|
413
|
+
// 上到右下走完色阶。起点两轮提亮(用户反馈"还是暗"):深底直接从亮档
|
|
414
|
+
// #E68A69 起步 → #EFA97E → 奶油橙 #FBD6B0(官方正色 #D77757 明度中等、
|
|
415
|
+
// 压深底发闷,只留给浅底当起点);浅底 #D77757 → #E68A69 → #EFA97E。
|
|
416
|
+
const titleFrom = titleFont.palette?.from
|
|
417
|
+
?? bevelShade?.from
|
|
418
|
+
?? brandLadder?.start
|
|
419
|
+
?? wordmarkRGB;
|
|
420
|
+
const titleTopTo = titleFont.palette?.to
|
|
421
|
+
?? bevelShade?.to
|
|
422
|
+
?? brandLadder?.mid
|
|
423
|
+
?? taglineRGB;
|
|
424
|
+
const titleBottomFrom = titleFont.palette?.from
|
|
425
|
+
?? bevelShade?.from
|
|
426
|
+
?? brandLadder?.mid
|
|
427
|
+
?? taglineRGB;
|
|
428
|
+
const titleBottomTo = titleFont.palette?.to
|
|
429
|
+
?? bevelShade?.to
|
|
430
|
+
?? brandLadder?.end
|
|
431
|
+
?? PALE;
|
|
432
|
+
// 品牌档两行同字距后宽度不同,对齐按形态处理(用户定调):居中形态
|
|
433
|
+
// (落地页/启动页)窄行补半差,两行各自居中成金字塔;钉左形态(对话页
|
|
434
|
+
// 标题)两行左缘对齐。deepseek 档维持求解器的 bottomIndent(等宽契约)。
|
|
435
|
+
const uniformBrand = brand !== 'deepseek';
|
|
436
|
+
const centeredTitle = uniformBrand && align === 'center';
|
|
437
|
+
const topInk = paintedWidth(titleFont, top, topKerning);
|
|
438
|
+
const bottomInk = paintedWidth(titleFont, bottom, bottomKerning);
|
|
439
|
+
const topIndent = centeredTitle ? Math.max(0, Math.round((bottomInk - topInk) / 2)) : 0;
|
|
440
|
+
const bottomShift = centeredTitle
|
|
441
|
+
? Math.max(0, Math.round((topInk - bottomInk) / 2))
|
|
442
|
+
: (uniformBrand ? 0 : bottomIndent);
|
|
443
|
+
const bigDeepSeek = renderBigText(titleFont, top, t, titleFrom, titleTopTo, flash, 60, topKerning, topIndent);
|
|
444
|
+
const bigHarness = renderBigText(titleFont, bottom, t, titleBottomFrom, titleBottomTo, flash, 60, bottomKerning, bottomShift);
|
|
355
445
|
// 立绘槽位的**唯一真源**:文字列的实际行数。full = 词标 1 + 两排大字 +
|
|
356
446
|
// 两排之间空 1 行 + 模型/目录/提示 3 行;minimal = 只有两排大字 + 空行
|
|
357
447
|
//(信息行整块不画,见 chrome prop)。槽位与它等高,图片既不压过文字列
|
|
@@ -372,7 +462,7 @@ export function LogoV2({ model = '', effort, cwd = '', skipIntro = false, intro,
|
|
|
372
462
|
reactMaid();
|
|
373
463
|
return;
|
|
374
464
|
}
|
|
375
|
-
if (
|
|
465
|
+
if (portraitMode)
|
|
376
466
|
return;
|
|
377
467
|
if (settled && whaleIdle) {
|
|
378
468
|
pendingHeartRef.current = true;
|
|
@@ -382,9 +472,15 @@ export function LogoV2({ model = '', effort, cwd = '', skipIntro = false, intro,
|
|
|
382
472
|
setHeartSeq(0);
|
|
383
473
|
setHeartKey(k => k + 1);
|
|
384
474
|
}
|
|
385
|
-
}, children: _jsx(Box, { width: WHALE_BOX_WIDTH, flexDirection: "column", alignItems: "center", children: mascotSkin !== undefined ? (_jsx(SplashMascot, { skin: mascotSkin, active: !whaleFrozen && whaleIdle })) :
|
|
475
|
+
}, children: _jsx(Box, { width: WHALE_BOX_WIDTH, flexDirection: "column", alignItems: "center", children: brand === 'deepseek' && mascotSkin !== undefined ? (_jsx(SplashMascot, { skin: mascotSkin, active: !whaleFrozen && whaleIdle })) : portraitMode ? (_jsx(Box, { width: WHALE_BOX_WIDTH, height: textColumnRows, flexDirection: "row", justifyContent: "center", alignItems: "center", children: maidImageActive ? (_jsx(MaidPortrait, { source: maidHappy ? (portraits?.happy ?? maidSource) : maidSource, maxColumns: WHALE_BOX_WIDTH, maxRows: textColumnRows, presentation: "transcript" })) : (claudeArt ? _jsx(ClaudeGirlArt, { width: WHALE_BOX_WIDTH }) : _jsx(WhaleGirlArt, { width: WHALE_BOX_WIDTH })) })) : (_jsx(WhaleArt, { frameIndex: frameIndex, pose: settled && whaleIdle && !whaleFrozen ? (idlePose ?? RESTING_POSE) : undefined, width: WHALE_BOX_WIDTH })) }) })), (showBigTitle || showPlainTitle) && (_jsxs(Box, { flexDirection: "column", flexShrink: 1, children: [chrome !== 'minimal' && (_jsxs(Text, { wrap: "truncate-end", children: [sweep('✦ dsh-TUI', t, wordmarkRGB, wordmarkShimmerRGB, 60), _jsx(Text, { dimColor: true, children: ' v' + VERSION })] })), showBigTitle ? (_jsxs(_Fragment, { children: [bigDeepSeek.map((row, index) => (_jsx(Text, { wrap: "truncate-end", children: row.replace(/\s+$/u, '') }, `ds-${index}`))), _jsx(Box, { height: 1 }), bigHarness.map((row, index) => (_jsx(Text, { wrap: "truncate-end", children: row.replace(/\s+$/u, '') }, `h-${index}`)))] })) : (showPlainTitle && (_jsx(Text, { color: "accent", bold: true, wrap: "truncate-end", children: words.plain }))), chrome !== 'minimal' && (_jsxs(_Fragment, { children: [_jsxs(Text, { wrap: "truncate-end", children: [model, effort !== undefined && _jsx(Text, { dimColor: true, children: ' · ' + capitalize(effort) + ' effort' })] }), _jsx(Text, { dimColor: true, wrap: "truncate-end", children: cwd }), _jsxs(Text, { wrap: "truncate-end", children: [_jsx(Text, { dimColor: true, children: tr('logo-tip-prefix') }), getLang() === 'zh' ? randomTip.zh : randomTip.en, _jsx(Text, { dimColor: true, children: ' · /tips ' + tr('logo-tip-more') })] })] })), chrome !== 'minimal' && driftLine != null && (_jsxs(Text, { color: "warning", wrap: "wrap", children: ["\u26A0", ' ', tOr(`logo-drift-${driftLine.kind}`, `The dsh engine (${driftLine.versions.join(' / ')}) does not match the validated ${UPSTREAM_VALIDATED_VERSION}; reinstall via npm i -g @deepseek-ai/dsh@${UPSTREAM_VALIDATED_VERSION}.`, {
|
|
386
476
|
installed: driftLine.versions.join(' / '),
|
|
387
477
|
validated: UPSTREAM_VALIDATED_VERSION,
|
|
388
478
|
primary: UPSTREAM_VALIDATED_VERSION,
|
|
389
|
-
})] }))] }))] }), (chrome !== 'minimal' || starLine !== null) && (_jsx(Box, { flexDirection: "column", marginTop: 1, ...(starLine === null || onStarClick === undefined ? {} : { onClick: onStarClick }), children: starLine === null ? (
|
|
479
|
+
})] }))] }))] }), (chrome !== 'minimal' || starLine !== null) && (_jsx(Box, { flexDirection: "column", marginTop: 1, ...(starLine === null || onStarClick === undefined ? {} : { onClick: onStarClick }), children: starLine === null ? (
|
|
480
|
+
// 多行欢迎语(claude 品牌英文 slogan 是两行):`center` 版式交给
|
|
481
|
+
// 父级逐行居中;`start` 版式在立绘中线下**块内居中**——窄行补半差,
|
|
482
|
+
// 两行的中轴对齐而不是左缘对齐。
|
|
483
|
+
taglineLines.map(line => (_jsx(Box, { paddingLeft: align === 'center'
|
|
484
|
+
? 0
|
|
485
|
+
: welcomePad + Math.max(0, Math.round((welcomeWidth - stringWidth(line)) / 2)), children: _jsx(Text, { children: sweep(line, t, taglineRGB, flash, 60) }) }, line)))) : (_jsxs(_Fragment, { children: [_jsx(Box, { paddingLeft: welcomePad, children: _jsx(Text, { children: sweep(starLine.title, t, taglineRGB, flash, 60) }) }), revealed >= 1 && (_jsx(Box, { paddingLeft: welcomePad, children: _jsx(Text, { dimColor: true, children: starLine.stats }) })), revealed >= 2 && starred !== true && starLine.ask !== null && (_jsx(Box, { paddingLeft: welcomePad, children: _jsx(Text, { children: starLine.ask }) }))] })) }))] }));
|
|
390
486
|
}
|
|
@@ -29,7 +29,8 @@ type Props = {
|
|
|
29
29
|
* Tokens that render as their own layout node (a width-aware component)
|
|
30
30
|
* instead of joining the ANSI text run. StreamingMarkdown consults the same
|
|
31
31
|
* predicate: a standalone node has a fixed one-row gap to its neighbours
|
|
32
|
-
* rather than the newline-derived spacing of text blocks.
|
|
32
|
+
* rather than the newline-derived spacing of text blocks. Top-level
|
|
33
|
+
* fenced code is one too (CodeBlockFrame).
|
|
33
34
|
*/
|
|
34
35
|
export declare function isStandaloneToken(token: Token): boolean;
|
|
35
36
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Markdown.d.ts","sourceRoot":"","sources":["../../../src/components/Markdown.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAU,KAAK,KAAK,EAAe,MAAM,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"Markdown.d.ts","sourceRoot":"","sources":["../../../src/components/Markdown.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAU,KAAK,KAAK,EAAe,MAAM,QAAQ,CAAA;AAexD;;;;;;;;;;;GAWG;AAEH,KAAK,KAAK,GAAG;IACX,QAAQ,EAAE,MAAM,CAAA;IAChB,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,+CAA+C;IAC/C,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B,CAAA;AAiFD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAOvD;AAkHD;;;;;;;;;;GAUG;AACH,iBAAS,YAAY,CAAC,EAAE,QAAQ,EAAE,QAAgB,EAAE,WAAkB,EAAE,gBAAuB,EAAE,EAAE,KAAK,GAAG,KAAK,CAAC,SAAS,CAwCzH;AAED;;;GAGG;AACH,eAAO,MAAM,QAAQ,gDAOpB,CAAA"}
|