@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,5 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { JobRow } from '../../dsh-adapter/channel.js';
|
|
3
|
+
import type { BackgroundJobOutputLine } from '../../adapter/ports/channel-view.js';
|
|
3
4
|
/**
|
|
4
5
|
* Producer progress as the design system's bar: `n/m` draws a 5-cell
|
|
5
6
|
* sub-cell-accurate `ProgressBar` (same primitive the rest of the TUI uses)
|
|
@@ -9,41 +10,38 @@ import type { JobRow } from '../../dsh-adapter/channel.js';
|
|
|
9
10
|
export declare function JobProgress({ progress }: {
|
|
10
11
|
progress: string;
|
|
11
12
|
}): React.ReactNode;
|
|
13
|
+
/** One rendered waterfall row: a wrapped piece of an output line, or a gap
|
|
14
|
+
* banner standing on its own row. */
|
|
15
|
+
interface WaterfallRow {
|
|
16
|
+
key: string;
|
|
17
|
+
text: string;
|
|
18
|
+
gap?: true;
|
|
19
|
+
}
|
|
12
20
|
/**
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
* row of empty gutters. Settled jobs fold to the header line alone (a
|
|
19
|
-
* failed/killed job keeps one detail line); the `/jobs` panel holds the
|
|
20
|
-
* fuller view the card clicks to.
|
|
21
|
-
*
|
|
22
|
-
* The waterfall is MIRRORED, never polled: the harness job registry's read
|
|
23
|
-
* is consuming and reserved for the owning agent, so the card shows the
|
|
24
|
-
* tail of the agent's own job_output results as they stream through the
|
|
25
|
-
* transcript.
|
|
26
|
-
*
|
|
27
|
-
* `rail` marks the card as a member of a job GROUP (see JobGroupRow): the
|
|
28
|
-
* card gets a 2-cell chain column on its left, and `rail.open` / `rail.close`
|
|
29
|
-
* round its ends (`╭` on the first line, `╰` on the last) so the run reads as
|
|
30
|
-
* one bracket from the first card to the last — the group's summary line stays
|
|
31
|
-
* OUTSIDE it. A lone card renders as before.
|
|
32
|
-
*
|
|
33
|
-
* The rail is drawn per line, which means this component owns the card's
|
|
34
|
-
* HEIGHT: the label is pre-wrapped against an explicit column width (so the
|
|
35
|
-
* wrap count is known, not guessed from the flex result), and the rail column
|
|
36
|
-
* paints exactly that many glyphs. Both use ink's own `wrapText`/`stringWidth`,
|
|
37
|
-
* so the pre-wrap breaks where the renderer would have broken.
|
|
21
|
+
* The waterfall window: every entry is WRAPPED at the card width FIRST, then
|
|
22
|
+
* the last `budget` VISUAL rows are kept. A 400-cell JSON line therefore
|
|
23
|
+
* shows its ending folded over the rows instead of a clipped head — and the
|
|
24
|
+
* window still costs a constant number of rows, which is what the
|
|
25
|
+
* transcript's virtualization measures.
|
|
38
26
|
*/
|
|
39
|
-
export declare function
|
|
27
|
+
export declare function jobOutputRows(entries: readonly BackgroundJobOutputLine[], width: number, budget: number): WaterfallRow[];
|
|
28
|
+
/** Command content shares normalization and wrapping with the full jobs panel. */
|
|
29
|
+
export declare function jobCommandRows(text: string, width: number, expanded: boolean): string[];
|
|
30
|
+
/** The renderer draws the continuous section edge across all content rows. */
|
|
31
|
+
export declare function JobSection({ rows, color, onToggle, children }: {
|
|
32
|
+
rows: readonly string[];
|
|
33
|
+
color: 'accent' | 'success';
|
|
34
|
+
onToggle?: () => void;
|
|
35
|
+
children?: React.ReactNode;
|
|
36
|
+
}): React.ReactNode;
|
|
37
|
+
/** Transcript job card: command folding is independent of the fixed output tail. */
|
|
38
|
+
export declare function JobCard({ job, marginTopOnTurn, onClick, onWatchOutput, expanded, onToggle }: {
|
|
40
39
|
job: JobRow;
|
|
41
40
|
marginTopOnTurn: boolean;
|
|
42
41
|
onClick?(): void;
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
close?: boolean;
|
|
47
|
-
} | undefined;
|
|
42
|
+
expanded?: boolean;
|
|
43
|
+
onToggle?: () => void;
|
|
44
|
+
onWatchOutput?: (id: string) => () => void;
|
|
48
45
|
}): React.ReactNode;
|
|
46
|
+
export {};
|
|
49
47
|
//# sourceMappingURL=JobCard.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JobCard.d.ts","sourceRoot":"","sources":["../../../../src/components/Chat/JobCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAA;
|
|
1
|
+
{"version":3,"file":"JobCard.d.ts","sourceRoot":"","sources":["../../../../src/components/Chat/JobCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAA;AAC1D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAA;AAiClF;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,KAAK,CAAC,SAAS,CAa/E;AAED;sCACsC;AACtC,UAAU,YAAY;IACpB,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,IAAI,CAAA;CACX;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,SAAS,uBAAuB,EAAE,EAC3C,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,YAAY,EAAE,CAiBhB;AACD,kFAAkF;AAClF,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,MAAM,EAAE,CAQvF;AAED,8EAA8E;AAC9E,wBAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE;IAC9D,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;IACvB,KAAK,EAAE,QAAQ,GAAG,SAAS,CAAA;IAC3B,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC3B,GAAG,KAAK,CAAC,SAAS,CAOlB;AACD,oFAAoF;AACpF,wBAAgB,OAAO,CAAC,EAAE,GAAG,EAAE,eAAe,EAAE,OAAO,EAAE,aAAa,EAAE,QAAgB,EAAE,QAAQ,EAAE,EAAE;IACpG,GAAG,EAAE,MAAM,CAAA;IACX,eAAe,EAAE,OAAO,CAAA;IACxB,OAAO,CAAC,IAAI,IAAI,CAAA;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB,aAAa,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,IAAI,CAAA;CAC3C,GAAG,KAAK,CAAC,SAAS,CAmClB"}
|
|
@@ -1,16 +1,14 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import { Box, Text, useAnimationFrame, useTerminalSize } from '../../ui.js';
|
|
4
4
|
import { formatJobDuration } from '../../dsh-adapter/jobs.js';
|
|
5
5
|
import { t } from '../../i18n.js';
|
|
6
6
|
import wrapText from '../../ink/wrap-text.js';
|
|
7
|
-
import { stringWidth } from '../../ink/stringWidth.js';
|
|
8
7
|
import { isMinimalUiMode } from '../../minimalUiMode.js';
|
|
9
8
|
import { ProgressBar } from '../design-system/ProgressBar.js';
|
|
10
9
|
/** The waterfall window mirrors the subagent card: a constant-height region. */
|
|
11
|
-
const WATERFALL_ROWS =
|
|
12
|
-
|
|
13
|
-
const WATERFALL_GUTTER = 4;
|
|
10
|
+
const WATERFALL_ROWS = 2;
|
|
11
|
+
const COMMAND_MARK = process.platform === 'win32' ? '>' : '❯';
|
|
14
12
|
/** Static status marker — deliberately NOT the animated activity-indicator
|
|
15
13
|
* preset: a background job is parked work, and reusing the main spinner
|
|
16
14
|
* language for every card reads as clutter. ● = live background work
|
|
@@ -54,135 +52,56 @@ export function JobProgress({ progress }) {
|
|
|
54
52
|
* window still costs a constant number of rows, which is what the
|
|
55
53
|
* transcript's virtualization measures.
|
|
56
54
|
*/
|
|
57
|
-
function
|
|
55
|
+
export function jobOutputRows(entries, width, budget) {
|
|
58
56
|
const rows = [];
|
|
59
57
|
// One cell of slack: a line that lands exactly on the boundary is re-wrapped
|
|
60
58
|
// by ink's own renderer, which would silently double that row's height.
|
|
61
59
|
const textWidth = Math.max(1, width - 1);
|
|
62
60
|
for (let index = entries.length - 1; index >= 0 && rows.length < budget; index--) {
|
|
63
61
|
const entry = entries[index];
|
|
64
|
-
|
|
65
|
-
rows.unshift({ key: `gap-${index}`, text: '', gap: true });
|
|
66
|
-
continue;
|
|
67
|
-
}
|
|
68
|
-
const wrapped = wrapText(entry.line.text, textWidth, 'wrap').split('\n');
|
|
62
|
+
const wrapped = wrapText(entry.text, textWidth, 'wrap').split('\n');
|
|
69
63
|
for (let row = wrapped.length - 1; row >= 0 && rows.length < budget; row--) {
|
|
70
64
|
rows.unshift({
|
|
71
65
|
key: `${index}-${row}`,
|
|
72
66
|
text: wrapped[row] ?? '',
|
|
73
|
-
...(entry.line.channel === undefined ? {} : { channel: entry.line.channel }),
|
|
74
67
|
});
|
|
75
68
|
}
|
|
69
|
+
if (entry.gapBefore === true && rows.length < budget)
|
|
70
|
+
rows.unshift({ key: `gap-${index}`, text: '', gap: true });
|
|
76
71
|
}
|
|
77
72
|
return rows;
|
|
78
73
|
}
|
|
79
|
-
/**
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
* one bracket from the first card to the last — the group's summary line stays
|
|
98
|
-
* OUTSIDE it. A lone card renders as before.
|
|
99
|
-
*
|
|
100
|
-
* The rail is drawn per line, which means this component owns the card's
|
|
101
|
-
* HEIGHT: the label is pre-wrapped against an explicit column width (so the
|
|
102
|
-
* wrap count is known, not guessed from the flex result), and the rail column
|
|
103
|
-
* paints exactly that many glyphs. Both use ink's own `wrapText`/`stringWidth`,
|
|
104
|
-
* so the pre-wrap breaks where the renderer would have broken.
|
|
105
|
-
*/
|
|
106
|
-
export function JobCard({ job, marginTopOnTurn, onClick, rail }) {
|
|
74
|
+
/** Command content shares normalization and wrapping with the full jobs panel. */
|
|
75
|
+
export function jobCommandRows(text, width, expanded) {
|
|
76
|
+
const command = text.trim();
|
|
77
|
+
const script = command.replace(/^(?:pwsh|powershell)(?:\.exe)?\s+(?:(?:-(?:NoProfile|NoLogo|NonInteractive)|-ExecutionPolicy\s+\S+)\s+)*-Command\s+/i, '');
|
|
78
|
+
const body = (script === command ? script : script.replace(/^(['"])([\s\S]*)\1$/, '$2')).replace(/\r\n?/g, '\n').trim();
|
|
79
|
+
const source = body.split('\n').filter((line, index, lines) => line.trim() !== '' || index === 0 || lines[index - 1]?.trim() !== '').join('\n');
|
|
80
|
+
const shown = expanded ? source : source.split('\n')[0];
|
|
81
|
+
const rows = wrapText(COMMAND_MARK + ' ' + shown, Math.max(1, width), 'wrap').split('\n');
|
|
82
|
+
return expanded ? rows : rows.slice(0, 1);
|
|
83
|
+
}
|
|
84
|
+
/** The renderer draws the continuous section edge across all content rows. */
|
|
85
|
+
export function JobSection({ rows, color, onToggle, children }) {
|
|
86
|
+
if (rows.length === 0 && children === undefined)
|
|
87
|
+
return null;
|
|
88
|
+
return _jsx(Box, { flexDirection: "column", borderStyle: "single", borderTop: false, borderBottom: false, borderRight: false, borderLeft: true, borderColor: color, paddingLeft: 1, onClick: onToggle === undefined ? undefined : event => { event.stopImmediatePropagation(); onToggle(); }, children: children === undefined ? rows.map((line, index) => _jsx(Text, { dimColor: true, wrap: "truncate-end", children: line === '' ? ' ' : line }, index)) : children });
|
|
89
|
+
}
|
|
90
|
+
/** Transcript job card: command folding is independent of the fixed output tail. */
|
|
91
|
+
export function JobCard({ job, marginTopOnTurn, onClick, onWatchOutput, expanded = false, onToggle }) {
|
|
107
92
|
const settled = job.status === 'completed' || job.status === 'failed' || job.status === 'killed';
|
|
108
|
-
|
|
109
|
-
// 约定)。1s tick 只驱动运行时长跳动——状态标是静态的(见 statusInfo)。
|
|
93
|
+
React.useEffect(() => (settled || onWatchOutput === undefined ? undefined : onWatchOutput(job.id)), [settled, onWatchOutput, job.id]);
|
|
110
94
|
const [viewportRef] = useAnimationFrame(settled ? null : 1000);
|
|
111
95
|
const { columns } = useTerminalSize();
|
|
112
96
|
const info = statusInfo(job.status);
|
|
113
97
|
const [hovered, setHovered] = React.useState(false);
|
|
114
|
-
const
|
|
115
|
-
const
|
|
116
|
-
const
|
|
117
|
-
|
|
118
|
-
// 1-cell gutter. Every width below is measured against that, or the rows
|
|
119
|
-
// would wrap a second time inside ink and the card would grow past the
|
|
120
|
-
// height the rail was painted for.
|
|
121
|
-
const rowWidth = Math.max(20, cardColumns - WATERFALL_GUTTER - (grouped ? 2 : 0));
|
|
122
|
-
// Waterfall entries: gap banners interleave as their own rows, then the
|
|
123
|
-
// window keeps the LAST WATERFALL_ROWS entries so a banner never pushes a
|
|
124
|
-
// fresher line out — the card stays constant-height.
|
|
125
|
-
const waterfall = [];
|
|
126
|
-
for (const line of settled ? [] : job.outputLines) {
|
|
127
|
-
if (line.gapBefore === true)
|
|
128
|
-
waterfall.push({ kind: 'gap' });
|
|
129
|
-
waterfall.push({ kind: 'line', line });
|
|
130
|
-
}
|
|
131
|
-
const activity = waterfallWindow(waterfall, rowWidth, WATERFALL_ROWS);
|
|
132
|
-
// A settled job's terminal detail ('exit code: 0') rides the header; a
|
|
133
|
-
// failed/killed one also keeps it as the explanatory tail line.
|
|
98
|
+
const contentWidth = Math.max(1, columns - 2);
|
|
99
|
+
const commandRows = jobCommandRows(job.label, contentWidth, expanded);
|
|
100
|
+
const output = jobOutputRows(job.outputLines, Math.max(1, contentWidth - 1), WATERFALL_ROWS);
|
|
101
|
+
const outputRows = output.map((entry, index) => (index === 0 ? '≡ ' : '') + (entry.gap === true ? t('jobs-output-gap') : entry.text));
|
|
134
102
|
const headerDetail = job.detail !== undefined && job.detail !== '' ? job.detail : undefined;
|
|
135
103
|
const headerName = `${t('jobs-card-prefix')}${job.id}`;
|
|
136
104
|
const duration = formatJobDuration(job);
|
|
137
|
-
// Only a LIVE job carries a progress chip; a settled one has dropped it, so
|
|
138
|
-
// reserving width for it unconditionally would clip the label for nothing.
|
|
139
105
|
const liveProgress = settled || job.progress === undefined || job.progress === '' ? undefined : job.progress;
|
|
140
|
-
|
|
141
|
-
// before the render: measure every fixed column and pre-wrap the label into
|
|
142
|
-
// whatever is left. The label column is then given that width EXPLICITLY —
|
|
143
|
-
// never a flex leftover — so the pre-wrapped line count is exactly what the
|
|
144
|
-
// renderer paints (both sides use ink's own wrapText/stringWidth, so the
|
|
145
|
-
// breaks match the ones a plain wrapping Text would have chosen).
|
|
146
|
-
const railBody = settled && job.status !== 'completed' && headerDetail !== undefined;
|
|
147
|
-
const fixedWidths = [
|
|
148
|
-
stringWidth(info.glyph),
|
|
149
|
-
stringWidth(headerName),
|
|
150
|
-
stringWidth(job.kind),
|
|
151
|
-
...(liveProgress === undefined ? [] : [12]),
|
|
152
|
-
stringWidth(duration),
|
|
153
|
-
...(headerDetail === undefined ? [] : [stringWidth(headerDetail)]),
|
|
154
|
-
stringWidth(info.label),
|
|
155
|
-
];
|
|
156
|
-
// One gap between each pair of columns: (fixed + label) - 1 = fixed count.
|
|
157
|
-
const labelWidth = Math.max(8, cardColumns - (grouped ? 2 : 0) - fixedWidths.reduce((sum, width) => sum + width, 0) - fixedWidths.length);
|
|
158
|
-
// wrapText returns the wrapped STRING (newline separated), so the line
|
|
159
|
-
// count comes straight out of it.
|
|
160
|
-
const labelLines = grouped ? wrapText(job.label, labelWidth, 'wrap').split('\n') : undefined;
|
|
161
|
-
const contentLines = (labelLines?.length ?? 1) + activity.length + (railBody ? 1 : 0);
|
|
162
|
-
const railGlyphs = [];
|
|
163
|
-
if (grouped) {
|
|
164
|
-
for (let index = 0; index < contentLines; index++) {
|
|
165
|
-
const opens = index === 0 && rail?.open === true;
|
|
166
|
-
const closes = index === contentLines - 1 && rail?.close === true;
|
|
167
|
-
railGlyphs.push(opens ? '╭' : closes ? '╰' : '│');
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
// 点击打开 /jobs 面板;hover 不刷整行背景(转录视觉保持安静),只把
|
|
171
|
-
// 状态 glyph 提亮为品牌色作为可点指示。无外层缩进:任务卡是上方工具
|
|
172
|
-
// 调用(run_in_background 卡)的延续,与工具卡通栏左对齐;子代理卡才
|
|
173
|
-
// 是嵌套子实体、保留缩进。瀑布的 ` │ ` 槽自带两格,正好与工具卡正文
|
|
174
|
-
// 的 ` ⎿ ` 槽位一致。
|
|
175
|
-
//
|
|
176
|
-
// 成组时的竖线不在 body 里:继续中的成员把 body 包进一个只有左边框的
|
|
177
|
-
// Box(见下方 bordered),边框覆盖整张卡的每一行——标签折行出的续行也
|
|
178
|
-
// 有线,链条不断。收口的尾成员用 `└ ` 字形 + 2 格空槽,两者都把正文
|
|
179
|
-
// 落在第 2 列。
|
|
180
|
-
const body = (_jsxs(_Fragment, { children: [_jsxs(Box, { flexDirection: "row", gap: 1, children: [_jsx(Box, { flexShrink: 0, children: _jsx(Text, { color: hovered && clickable ? 'accent' : info.color, children: info.glyph }) }), _jsx(Box, { flexShrink: 0, children: _jsx(Text, { bold: true, color: hovered && clickable ? 'accent' : undefined, children: headerName }) }), _jsx(Box, { flexShrink: 0, children: _jsx(Text, { dimColor: true, children: job.kind }) }), labelLines === undefined ? (_jsx(Box, { flexGrow: 1, flexShrink: 1, children: _jsx(Text, { children: job.label }) })) : (_jsx(Box, { width: labelWidth, flexShrink: 0, flexDirection: "column", children: labelLines.map((line, index) => _jsx(Text, { children: line }, index)) })), liveProgress !== undefined && (_jsx(Box, { width: 12, flexShrink: 0, children: _jsx(JobProgress, { progress: liveProgress }) })), _jsx(Box, { flexShrink: 0, children: _jsx(Text, { dimColor: true, children: duration }) }), headerDetail !== undefined && _jsx(Box, { flexShrink: 0, children: _jsx(Text, { dimColor: true, wrap: "truncate-end", children: headerDetail }) }), _jsx(Box, { flexShrink: 0, children: _jsx(Text, { color: info.color, children: info.label }) })] }), !settled && activity.length > 0 && activity.map(entry => (
|
|
181
|
-
// key 不含 time(同 SubagentMessage 的约定):内容更新走 in-place
|
|
182
|
-
// diff,避免每个 tick 都 unmount+mount。瀑布只在有镜像输出时出现
|
|
183
|
-
// (后台任务静默是常态——无输出时卡片就是头行,不摆空 gutter)。
|
|
184
|
-
// Rows are pre-wrapped to the row width, so truncate is a belt-and-braces
|
|
185
|
-
// guard against a re-wrap (which would break the constant height).
|
|
186
|
-
entry.gap === true ? (_jsx(Text, { dimColor: true, italic: true, wrap: "truncate", children: ` · ${t('jobs-output-gap')}` }, entry.key)) : (_jsx(Text, { color: entry.channel === 'stderr' ? 'error' : undefined, dimColor: entry.channel !== 'stderr', wrap: "truncate", children: ` │ ${entry.text}` }, entry.key)))), railBody && (_jsx(Text, { dimColor: true, children: ` └ ${headerDetail}` }))] }));
|
|
187
|
-
return _jsx(Box, { flexDirection: "column", marginTop: marginTopOnTurn ? 1 : 0, ref: viewportRef, onClick: onClick, onMouseEnter: clickable ? () => setHovered(true) : undefined, onMouseLeave: clickable ? () => setHovered(false) : undefined, children: grouped ? (_jsxs(Box, { flexDirection: "row", children: [_jsx(Box, { width: 1, flexShrink: 0, children: _jsx(Text, { color: "inactive", children: railGlyphs.join('\n') }) }), _jsx(Box, { flexDirection: "column", flexGrow: 1, paddingLeft: 1, children: body })] })) : body });
|
|
106
|
+
return _jsxs(Box, { flexDirection: "column", marginTop: marginTopOnTurn ? 1 : 0, ref: viewportRef, onClick: onToggle === undefined ? undefined : event => { event.stopImmediatePropagation(); onToggle(); }, onMouseEnter: () => setHovered(true), onMouseLeave: () => setHovered(false), children: [_jsxs(Box, { flexDirection: "row", gap: 1, height: 1, overflow: "hidden", onClick: onClick === undefined ? undefined : event => { event.stopImmediatePropagation(); onClick(); }, children: [_jsx(Box, { flexShrink: 0, children: _jsx(Text, { color: hovered ? 'accent' : info.color, children: info.glyph }) }), _jsx(Box, { flexShrink: 0, children: _jsx(Text, { bold: true, color: hovered ? 'accent' : undefined, children: headerName }) }), _jsx(Box, { flexShrink: 0, children: _jsx(Text, { dimColor: true, children: job.kind }) }), liveProgress !== undefined && _jsx(Box, { width: 12, flexShrink: 0, children: _jsx(JobProgress, { progress: liveProgress }) }), _jsx(Box, { flexShrink: 0, children: _jsx(Text, { dimColor: true, children: duration }) }), headerDetail !== undefined && _jsx(Box, { flexShrink: 0, children: _jsx(Text, { dimColor: true, wrap: "truncate-end", children: headerDetail }) }), _jsx(Box, { flexShrink: 0, children: _jsx(Text, { color: info.color, children: info.label }) })] }), _jsx(JobSection, { rows: commandRows, color: "accent" }), _jsx(JobSection, { rows: outputRows, color: "success" })] });
|
|
188
107
|
}
|
|
@@ -10,11 +10,14 @@ import type { ClickEvent } from '../../ink/events/click-event.js';
|
|
|
10
10
|
* working-activity preset (`/activity`), so the indicator follows the same
|
|
11
11
|
* setting as the main spinner.
|
|
12
12
|
*/
|
|
13
|
-
export declare function SubagentMessage({ subagent, marginTopOnTurn, activityFrames, onClick }: {
|
|
13
|
+
export declare function SubagentMessage({ subagent, marginTopOnTurn, activityFrames, onClick, onOpenView }: {
|
|
14
14
|
subagent: SubagentRow;
|
|
15
15
|
marginTopOnTurn: boolean;
|
|
16
16
|
activityFrames?: string;
|
|
17
17
|
isExpanded: boolean;
|
|
18
18
|
onClick?(event: ClickEvent): void;
|
|
19
|
+
/** 在主屏打开子代理转录:与卡片点击(→ 详情)并列的独立动作;拦截冒泡,
|
|
20
|
+
* 普通正文点击与选区不受影响。 */
|
|
21
|
+
onOpenView?(): void;
|
|
19
22
|
}): React.ReactNode;
|
|
20
23
|
//# sourceMappingURL=SubagentMessage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SubagentMessage.d.ts","sourceRoot":"","sources":["../../../../src/components/Chat/SubagentMessage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAO/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAA;
|
|
1
|
+
{"version":3,"file":"SubagentMessage.d.ts","sourceRoot":"","sources":["../../../../src/components/Chat/SubagentMessage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAA;AAO/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAA;AA2CjE;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAE,cAAc,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE;IAClG,QAAQ,EAAE,WAAW,CAAA;IACrB,eAAe,EAAE,OAAO,CAAA;IACxB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,UAAU,EAAE,OAAO,CAAA;IACnB,OAAO,CAAC,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAAA;IACjC;yBACqB;IACrB,UAAU,CAAC,IAAI,IAAI,CAAA;CACpB,GAAG,KAAK,CAAC,SAAS,CAyGlB"}
|
|
@@ -26,6 +26,9 @@ function status(row) {
|
|
|
26
26
|
return { glyph: minimalUi ? '×' : '🔴', label: t('subagent-status-failed'), color: minimalUi ? undefined : 'error' };
|
|
27
27
|
if (row.status === 'cancelled')
|
|
28
28
|
return { glyph: minimalUi ? '×' : '🔴', label: t('subagent-status-cancelled'), color: minimalUi ? undefined : 'error' };
|
|
29
|
+
// No end was ever reported (the run's process is gone): settled, unknown.
|
|
30
|
+
if (row.status === 'unknown')
|
|
31
|
+
return { glyph: minimalUi ? '·' : '⚪', label: t('subagent-status-unknown'), color: minimalUi ? undefined : 'subtle' };
|
|
29
32
|
return { glyph: minimalUi ? '·' : '🟡', label: t('subagent-status-running'), color: minimalUi ? undefined : 'warning' };
|
|
30
33
|
}
|
|
31
34
|
/** Hard single-line clip by display width — a wrapped waterfall row would
|
|
@@ -57,8 +60,8 @@ function clipLine(text, maxWidth) {
|
|
|
57
60
|
* working-activity preset (`/activity`), so the indicator follows the same
|
|
58
61
|
* setting as the main spinner.
|
|
59
62
|
*/
|
|
60
|
-
export function SubagentMessage({ subagent, marginTopOnTurn, activityFrames, onClick }) {
|
|
61
|
-
const settled = subagent.status === 'completed' || subagent.status === 'failed' || subagent.status === 'cancelled';
|
|
63
|
+
export function SubagentMessage({ subagent, marginTopOnTurn, activityFrames, onClick, onOpenView }) {
|
|
64
|
+
const settled = subagent.status === 'completed' || subagent.status === 'failed' || subagent.status === 'cancelled' || subagent.status === 'unknown';
|
|
62
65
|
// 动画订阅仅限运行中的卡片:settled 后传 null 退出共享 clock(keepAlive
|
|
63
66
|
// 归零 → interval 清除),否则历史里的每张完成卡片都以 120ms 永久驱动
|
|
64
67
|
// React commit。viewportRef 必须挂到根节点——useTerminalViewport 初始
|
|
@@ -79,5 +82,9 @@ export function SubagentMessage({ subagent, marginTopOnTurn, activityFrames, onC
|
|
|
79
82
|
const rowWidth = Math.max(20, (columns ?? 80) - WATERFALL_GUTTER);
|
|
80
83
|
// 点击打开详情场景;hover 不刷整行背景(转录视觉保持安静),只把状态
|
|
81
84
|
// glyph 提亮为品牌色作为可点指示。
|
|
82
|
-
return _jsxs(Box, { flexDirection: "column", marginTop: marginTopOnTurn ? 1 : 0, paddingLeft: 2, ref: viewportRef, onClick: onClick, onMouseEnter: clickable ? () => setHovered(true) : undefined, onMouseLeave: clickable ? () => setHovered(false) : undefined, children: [_jsxs(Box, { flexDirection: "row", gap: 1, children: [_jsx(Text, { color: hovered && clickable ? 'accent' : info.color, children: settled ? info.glyph : ` ${runningGlyph}` }), _jsx(Text, { bold: true, color: hovered && clickable ? 'accent' : undefined, children: `${t('subagent-card-prefix')}${subagent.description}` }), _jsx(Text, { dimColor: true, children: "\u00B7" }), _jsx(Text, { children: subagent.model ?? subagent.provider ?? 'default' }), subagent.effort && _jsxs(_Fragment, { children: [_jsx(Text, { dimColor: true, children: "\u00B7" }), _jsx(Text, { dimColor: true, children: subagent.effort })] }), _jsx(Text, { dimColor: true, children: "\u00B7" }), _jsx(Text, { dimColor: true, children: duration(elapsed) }), _jsx(Text, { dimColor: true, children: "\u00B7" }), _jsx(Text, { dimColor: true, children: tokens(subagent) }), _jsx(Text, { dimColor: true, children: "\u00B7" }), _jsxs(Text, { dimColor: true, children: [subagent.toolCalls.length, " tools"] }), _jsx(Text, { dimColor: true, children: "\u00B7" }), _jsx(Text, { color: info.color, children: info.label })
|
|
85
|
+
return _jsxs(Box, { flexDirection: "column", marginTop: marginTopOnTurn ? 1 : 0, paddingLeft: 2, ref: viewportRef, onClick: onClick, onMouseEnter: clickable ? () => setHovered(true) : undefined, onMouseLeave: clickable ? () => setHovered(false) : undefined, children: [_jsxs(Box, { flexDirection: "row", gap: 1, children: [_jsx(Text, { color: hovered && clickable ? 'accent' : info.color, children: settled ? info.glyph : ` ${runningGlyph}` }), _jsx(Text, { bold: true, color: hovered && clickable ? 'accent' : undefined, children: `${t('subagent-card-prefix')}${subagent.description}` }), _jsx(Text, { dimColor: true, children: "\u00B7" }), _jsx(Text, { children: subagent.model ?? subagent.provider ?? 'default' }), subagent.effort && _jsxs(_Fragment, { children: [_jsx(Text, { dimColor: true, children: "\u00B7" }), _jsx(Text, { dimColor: true, children: subagent.effort })] }), _jsx(Text, { dimColor: true, children: "\u00B7" }), _jsx(Text, { dimColor: true, children: duration(elapsed) }), _jsx(Text, { dimColor: true, children: "\u00B7" }), _jsx(Text, { dimColor: true, children: tokens(subagent) }), _jsx(Text, { dimColor: true, children: "\u00B7" }), _jsxs(Text, { dimColor: true, children: [subagent.toolCalls.length, " tools"] }), _jsx(Text, { dimColor: true, children: "\u00B7" }), _jsx(Text, { color: info.color, children: info.label }), onOpenView !== undefined && (_jsx(Box, { flexShrink: 0, marginLeft: 1, onClick: (event) => {
|
|
86
|
+
// 拦截冒泡:这一格是「主屏查看」,不是卡片点击(→详情)。
|
|
87
|
+
event.stopImmediatePropagation();
|
|
88
|
+
onOpenView();
|
|
89
|
+
}, onMouseEnter: () => setHovered(true), onMouseLeave: () => setHovered(false), children: _jsx(Text, { color: hovered ? 'accent' : 'subtle', children: '⤢' }) }))] }), !settled && (lastRunning ?? previousDone) !== undefined && (_jsx(Text, { wrap: "truncate", children: lastRunning !== undefined ? (_jsxs(_Fragment, { children: [previousDone !== undefined && (_jsxs(_Fragment, { children: [_jsx(Text, { dimColor: true, children: ' · ' }), _jsx(Text, { color: "success", children: "\u2713" }), _jsx(Text, { color: toolNameColor(previousDone.name), children: previousDone.name }), _jsx(Text, { dimColor: true, children: ' · ' })] })), lastRunning.argsPreview === undefined && (_jsx(Text, { color: toolNameColor(lastRunning.name), children: lastRunning.name })), lastRunning.argsPreview !== undefined && (_jsxs(_Fragment, { children: [_jsx(Text, { color: toolNameColor(lastRunning.name), children: lastRunning.name }), _jsx(Text, { dimColor: true, children: ` (${clipLine(lastRunning.argsPreview.replace(/\s+/g, ' ').trim(), Math.max(10, rowWidth - lastRunning.name.length - 6))})` })] }))] })) : (previousDone !== undefined && (_jsxs(_Fragment, { children: [_jsx(Text, { dimColor: true, children: ' · ' }), _jsx(Text, { color: "success", children: "\u2713" }), _jsx(Text, { color: toolNameColor(previousDone.name), children: previousDone.name }), previousDone.argsPreview !== undefined && (_jsx(Text, { dimColor: true, children: ` (${clipLine(previousDone.argsPreview.replace(/\s+/g, ' ').trim(), Math.max(10, rowWidth - previousDone.name.length - 6))})` }))] }))) })), !settled && Array.from({ length: WATERFALL_ROWS }, (_, index) => (_jsx(Text, { dimColor: true, wrap: "truncate", children: ` │ ${clipLine(activity[index] ?? '', rowWidth)}` }, `${subagent.agentId}-wf-${index}`))), settled && subagent.status === 'failed' && subagent.error && (_jsx(Text, { color: "error", wrap: "truncate", children: ` └ ${clipLine(subagent.error, rowWidth)}` }))] });
|
|
83
90
|
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* The Claude girl portrait(Claude 娘)that stands in for the header's pixel
|
|
4
|
+
* whale while the claude brand is active (`branding.ts` — the cc kernel):
|
|
5
|
+
* a 30×30 true-color sprite in `claudeGirlSprite.ts`, rendered with the same
|
|
6
|
+
* half-block technique as the whale and the whale girl — one `▀`/`▄` cell
|
|
7
|
+
* packs two sprite rows, so the portrait shows at 30 columns × 15 rows.
|
|
8
|
+
* A static portrait by design: the whale's idle planner and click-hearts
|
|
9
|
+
* stay whale-only, exactly like the whale-girl mode.
|
|
10
|
+
*/
|
|
11
|
+
/** Pre-rendered ANSI rows, computed once at module load. */
|
|
12
|
+
export declare const CLAUDE_GIRL_ROWS: readonly string[];
|
|
13
|
+
/**
|
|
14
|
+
* The portrait's center column when it fills the whale's 40-column box
|
|
15
|
+
* (indented (40−30)/2 = 5, so the art spans columns 5..34 → center 19.5 —
|
|
16
|
+
* same metrics as the whale girl, both sprites are 30 columns).
|
|
17
|
+
*/
|
|
18
|
+
export declare const CLAUDE_GIRL_CENTER = 19.5;
|
|
19
|
+
/**
|
|
20
|
+
* The Claude girl as an Ink component: 15 rows × 30 columns. `width` pins
|
|
21
|
+
* the box (the header passes the whale's 40-column box so the neighbouring
|
|
22
|
+
* text column never shifts) and centers the portrait inside it.
|
|
23
|
+
*/
|
|
24
|
+
export declare function ClaudeGirlArt({ width }: {
|
|
25
|
+
width?: number;
|
|
26
|
+
}): React.ReactNode;
|
|
27
|
+
//# sourceMappingURL=ClaudeGirl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ClaudeGirl.d.ts","sourceRoot":"","sources":["../../../src/components/ClaudeGirl.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAKzB;;;;;;;;GAQG;AAEH,4DAA4D;AAC5D,eAAO,MAAM,gBAAgB,EAAE,SAAS,MAAM,EAI7C,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,OAAO,CAAA;AAEtC;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,KAAK,CAAC,SAAS,CAW5E"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Text } from '../ui.js';
|
|
3
|
+
import { renderCellRows } from './Whale.js';
|
|
4
|
+
import { CLAUDE_GIRL_COLS, CLAUDE_GIRL_SPRITE, CLAUDE_GIRL_SPRITE_ROWS } from './claudeGirlSprite.js';
|
|
5
|
+
/**
|
|
6
|
+
* The Claude girl portrait(Claude 娘)that stands in for the header's pixel
|
|
7
|
+
* whale while the claude brand is active (`branding.ts` — the cc kernel):
|
|
8
|
+
* a 30×30 true-color sprite in `claudeGirlSprite.ts`, rendered with the same
|
|
9
|
+
* half-block technique as the whale and the whale girl — one `▀`/`▄` cell
|
|
10
|
+
* packs two sprite rows, so the portrait shows at 30 columns × 15 rows.
|
|
11
|
+
* A static portrait by design: the whale's idle planner and click-hearts
|
|
12
|
+
* stay whale-only, exactly like the whale-girl mode.
|
|
13
|
+
*/
|
|
14
|
+
/** Pre-rendered ANSI rows, computed once at module load. */
|
|
15
|
+
export const CLAUDE_GIRL_ROWS = renderCellRows(CLAUDE_GIRL_COLS, CLAUDE_GIRL_SPRITE_ROWS, (x, y) => CLAUDE_GIRL_SPRITE[y]?.[x] ?? undefined);
|
|
16
|
+
/**
|
|
17
|
+
* The portrait's center column when it fills the whale's 40-column box
|
|
18
|
+
* (indented (40−30)/2 = 5, so the art spans columns 5..34 → center 19.5 —
|
|
19
|
+
* same metrics as the whale girl, both sprites are 30 columns).
|
|
20
|
+
*/
|
|
21
|
+
export const CLAUDE_GIRL_CENTER = 19.5;
|
|
22
|
+
/**
|
|
23
|
+
* The Claude girl as an Ink component: 15 rows × 30 columns. `width` pins
|
|
24
|
+
* the box (the header passes the whale's 40-column box so the neighbouring
|
|
25
|
+
* text column never shifts) and centers the portrait inside it.
|
|
26
|
+
*/
|
|
27
|
+
export function ClaudeGirlArt({ width }) {
|
|
28
|
+
const pad = width === undefined ? 0 : Math.max(0, Math.floor((width - CLAUDE_GIRL_COLS) / 2));
|
|
29
|
+
return (_jsx(Box, { flexDirection: "column", flexShrink: 0, width: width, children: CLAUDE_GIRL_ROWS.map((row, index) => (_jsxs(Text, { wrap: "truncate-end", children: [pad > 0 ? ' '.repeat(pad) : '', row] }, index))) }));
|
|
30
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { Tokens } from 'marked';
|
|
3
|
+
import type { CliHighlight } from '../terminal-utils/cliHighlight.js';
|
|
4
|
+
/**
|
|
5
|
+
* Which frame engine renders code fences. `typed` is the default;
|
|
6
|
+
* `DSH_TUI_CODE_FRAME=hybrid` selects the component layout.
|
|
7
|
+
*/
|
|
8
|
+
export declare function codeFrameEngine(): 'typed' | 'hybrid';
|
|
9
|
+
type Props = {
|
|
10
|
+
token: Tokens.Code;
|
|
11
|
+
highlight: CliHighlight | null;
|
|
12
|
+
/** Dim the body (thinking blocks); decorations stay theme-muted. */
|
|
13
|
+
dimColor?: boolean;
|
|
14
|
+
/** Override terminal width (useful for testing). */
|
|
15
|
+
forceWidth?: number;
|
|
16
|
+
};
|
|
17
|
+
export declare function CodeBlockFrame({ token, highlight, dimColor, forceWidth }: Props): React.ReactNode;
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=CodeBlockFrame.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CodeBlockFrame.d.ts","sourceRoot":"","sources":["../../../src/components/CodeBlockFrame.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AASpC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAA;AAqCrE;;;GAGG;AACH,wBAAgB,eAAe,IAAI,OAAO,GAAG,QAAQ,CAEpD;AAED,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,MAAM,CAAC,IAAI,CAAA;IAClB,SAAS,EAAE,YAAY,GAAG,IAAI,CAAA;IAC9B,oEAAoE;IACpE,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,oDAAoD;IACpD,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,wBAAgB,cAAc,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,QAAgB,EAAE,UAAU,EAAE,EAAE,KAAK,GAAG,KAAK,CAAC,SAAS,CAwFzG"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { Box, NoSelect, Text } from '../ui.js';
|
|
4
|
+
import { useTerminalSize } from '../ink/hooks/use-terminal-size.js';
|
|
5
|
+
import { colorize } from '../ink/colorize.js';
|
|
6
|
+
import { getTheme } from '../theme.js';
|
|
7
|
+
import { useTheme } from './design-system/ThemeProvider.js';
|
|
8
|
+
import { codeLanguageTag, formatCodeBody, formatToken } from '../terminal-utils/markdown.js';
|
|
9
|
+
import { getCodeFrameStyle, subscribeCodeFrameStyle } from '../tuiDisplayPrefs.js';
|
|
10
|
+
/**
|
|
11
|
+
* A fenced code block rendered as a light frame:
|
|
12
|
+
*
|
|
13
|
+
* ┌─ ts ─────────────────
|
|
14
|
+
* │ const answer = await agent.run()
|
|
15
|
+
* │ return answer
|
|
16
|
+
*
|
|
17
|
+
* The top edge carries only the corner, the language label and a subtle
|
|
18
|
+
* divider; every body row gets the rail and one column of padding. No
|
|
19
|
+
* right wall or bottom edge, so a block costs no extra rows.
|
|
20
|
+
*
|
|
21
|
+
* Two engines draw the same frame:
|
|
22
|
+
*
|
|
23
|
+
* - typed (default): one ink-text leaf. The header row and the per-row
|
|
24
|
+
* rail are Text decoration, so a block adds no Yoga nodes and streams
|
|
25
|
+
* like a plain ANSI string.
|
|
26
|
+
* - hybrid (DSH_TUI_CODE_FRAME=hybrid): header and rail as NoSelect boxes
|
|
27
|
+
* around the body Text (~7 Yoga nodes per block). Kept as a fallback
|
|
28
|
+
* that can be switched on without a code change.
|
|
29
|
+
*
|
|
30
|
+
* Header and rail are excluded from selection, the body is selectable.
|
|
31
|
+
* Below a net body width of 8 the block falls back to the plain ANSI
|
|
32
|
+
* fence, where a frame would only squeeze the code.
|
|
33
|
+
*/
|
|
34
|
+
/** Same viewport slack MarkdownTable/MermaidDiagram keep for gutters and
|
|
35
|
+
* message insets: the content column is the terminal width minus this. */
|
|
36
|
+
const SAFETY_MARGIN = 4;
|
|
37
|
+
/** Content column width that earns the full-width dash header. */
|
|
38
|
+
const WIDE_HEADER_MIN_COLUMNS = 56;
|
|
39
|
+
/** Below this NET body width the frame falls back to the ANSI fence. */
|
|
40
|
+
const MIN_NET_BODY_WIDTH = 8;
|
|
41
|
+
/** Rail column + the single padding column. */
|
|
42
|
+
const FRAME_OVERHEAD = 2;
|
|
43
|
+
/**
|
|
44
|
+
* Which frame engine renders code fences. `typed` is the default;
|
|
45
|
+
* `DSH_TUI_CODE_FRAME=hybrid` selects the component layout.
|
|
46
|
+
*/
|
|
47
|
+
export function codeFrameEngine() {
|
|
48
|
+
return process.env.DSH_TUI_CODE_FRAME === 'hybrid' ? 'hybrid' : 'typed';
|
|
49
|
+
}
|
|
50
|
+
export function CodeBlockFrame({ token, highlight, dimColor = false, forceWidth }) {
|
|
51
|
+
const { columns } = useTerminalSize();
|
|
52
|
+
// Live setting (settings `dsh-tui.codeFrameStyle`): read at render
|
|
53
|
+
// time so settled blocks re-render when the style flips; the store
|
|
54
|
+
// mirrors both the /settings edit and cordis.yml.
|
|
55
|
+
const frameStyle = React.useSyncExternalStore(subscribeCodeFrameStyle, getCodeFrameStyle);
|
|
56
|
+
const [themeName] = useTheme();
|
|
57
|
+
const theme = getTheme(themeName);
|
|
58
|
+
// Theme values are raw color strings; the ink-level border props take the
|
|
59
|
+
// Color type directly (NoSelect is not theme-aware like ThemedBox).
|
|
60
|
+
const subtle = theme.subtle;
|
|
61
|
+
const width = Math.max(0, forceWidth ?? columns);
|
|
62
|
+
const contentWidth = width - SAFETY_MARGIN;
|
|
63
|
+
const label = codeLanguageTag(token) || 'code';
|
|
64
|
+
const body = formatCodeBody(token, highlight);
|
|
65
|
+
// The narrow fallback and the hybrid engine return early, so these
|
|
66
|
+
// memos run before every branch.
|
|
67
|
+
const headerText = React.useMemo(() => {
|
|
68
|
+
// The wide frame keeps one space before the divider run; the narrow
|
|
69
|
+
// label stays tight (`┌─ ts`), matching the hybrid header's noSelect
|
|
70
|
+
// columns.
|
|
71
|
+
const wide = contentWidth >= WIDE_HEADER_MIN_COLUMNS;
|
|
72
|
+
return colorize('┌─ ' + label + (wide ? ' ' : ''), theme.subtle, 'foreground');
|
|
73
|
+
}, [label, theme.subtle, contentWidth]);
|
|
74
|
+
const headerFill = React.useMemo(() => {
|
|
75
|
+
if (contentWidth < WIDE_HEADER_MIN_COLUMNS)
|
|
76
|
+
return undefined;
|
|
77
|
+
return colorize('─', theme.subtle, 'foreground');
|
|
78
|
+
}, [theme.subtle, contentWidth]);
|
|
79
|
+
// Keyed on emptiness, not the body: a streaming fence keeps one
|
|
80
|
+
// decoration object while its text grows.
|
|
81
|
+
const emptyBody = body === '';
|
|
82
|
+
const decoration = React.useMemo(() => {
|
|
83
|
+
if (emptyBody) {
|
|
84
|
+
// An empty fence shows just the header row.
|
|
85
|
+
return { header: headerText, headerFill };
|
|
86
|
+
}
|
|
87
|
+
return {
|
|
88
|
+
header: headerText,
|
|
89
|
+
headerFill,
|
|
90
|
+
prefix: {
|
|
91
|
+
// The rail is excluded from selection; the padding column is not.
|
|
92
|
+
text: colorize('│', theme.subtle, 'foreground') + ' ',
|
|
93
|
+
width: FRAME_OVERHEAD,
|
|
94
|
+
noSelect: 1,
|
|
95
|
+
},
|
|
96
|
+
};
|
|
97
|
+
}, [headerText, headerFill, emptyBody, theme.subtle]);
|
|
98
|
+
if (contentWidth - FRAME_OVERHEAD < MIN_NET_BODY_WIDTH) {
|
|
99
|
+
// Too narrow to frame: the plain ANSI fence.
|
|
100
|
+
return _jsx(Text, { dimColor: dimColor, children: formatToken(token, 0, null, null, highlight).trimEnd() });
|
|
101
|
+
}
|
|
102
|
+
if (frameStyle === 'full') {
|
|
103
|
+
// The closed form is structural by nature (the right wall must
|
|
104
|
+
// follow the content column and stay continuous across wrapped
|
|
105
|
+
// rows), so it rides the hybrid layout with the wall and bottom
|
|
106
|
+
// edge added - regardless of the typed/hybrid engine switch.
|
|
107
|
+
return (_jsx(CodeBlockFrameFull, { contentWidth: contentWidth, label: label, body: body, subtle: subtle, themeSubtle: theme.subtle, dimColor: dimColor }));
|
|
108
|
+
}
|
|
109
|
+
if (codeFrameEngine() === 'hybrid') {
|
|
110
|
+
return (_jsx(CodeBlockFrameHybrid, { contentWidth: contentWidth, label: label, body: body, subtle: subtle, themeSubtle: theme.subtle, dimColor: dimColor }));
|
|
111
|
+
}
|
|
112
|
+
// Typed engine: one ink-text leaf whose paint carries the frame.
|
|
113
|
+
return (_jsx(Text, { dimColor: dimColor, decoration: decoration, children: body }));
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* The `full` style: the hybrid layout with the box closed - a right wall
|
|
117
|
+
* (a layout border, so it stays continuous across wrapped rows and
|
|
118
|
+
* follows the content column) and a bottom edge under the whole block.
|
|
119
|
+
* Header/rail/wall/bottom stay NoSelect; the body (and its padding
|
|
120
|
+
* column) stay selectable - the same copy contract as the light frame.
|
|
121
|
+
*/
|
|
122
|
+
function CodeBlockFrameFull({ contentWidth, label, body, subtle, themeSubtle, dimColor, }) {
|
|
123
|
+
return (_jsxs(Box, { flexDirection: "column", width: "100%", children: [_jsx(NoSelect, { borderStyle: "single", borderTop: true, borderLeft: true, borderRight: true, borderBottom: false, borderColor: subtle, borderText: {
|
|
124
|
+
content: colorize(' ' + label + ' ', themeSubtle, 'foreground'),
|
|
125
|
+
position: 'top',
|
|
126
|
+
align: 'start',
|
|
127
|
+
offset: 1,
|
|
128
|
+
} }), _jsxs(Box, { flexDirection: "row", children: [_jsx(NoSelect, { borderStyle: "single", borderLeft: true, borderTop: false, borderRight: false, borderBottom: false, borderColor: subtle }), _jsx(Box, { paddingLeft: 1, flexGrow: 1, children: _jsx(Text, { dimColor: dimColor, children: body }) }), _jsx(NoSelect, { borderStyle: "single", borderRight: true, borderTop: false, borderLeft: false, borderBottom: false, borderColor: subtle })] }), _jsx(NoSelect, { borderStyle: "single", borderLeft: true, borderRight: true, borderBottom: true, borderTop: false, borderColor: subtle })] }));
|
|
129
|
+
}
|
|
130
|
+
/** The component layout behind DSH_TUI_CODE_FRAME=hybrid. */
|
|
131
|
+
function CodeBlockFrameHybrid({ contentWidth, label, body, subtle, themeSubtle, dimColor, }) {
|
|
132
|
+
return (_jsxs(Box, { flexDirection: "column", width: "100%", children: [contentWidth >= WIDE_HEADER_MIN_COLUMNS ? (_jsx(NoSelect, { borderStyle: "single", borderTop: true, borderLeft: true, borderRight: false, borderBottom: false, borderColor: subtle, borderText: {
|
|
133
|
+
content: colorize(' ' + label + ' ', themeSubtle, 'foreground'),
|
|
134
|
+
position: 'top',
|
|
135
|
+
align: 'start',
|
|
136
|
+
offset: 1,
|
|
137
|
+
} })) : (_jsx(NoSelect, { children: _jsx(Text, { color: "subtle", children: '┌─ ' + label }) })), _jsxs(Box, { flexDirection: "row", children: [_jsx(NoSelect, { borderStyle: "single", borderLeft: true, borderTop: false, borderRight: false, borderBottom: false, borderColor: subtle }), _jsx(Box, { paddingLeft: 1, children: _jsx(Text, { dimColor: dimColor, children: body }) })] })] }));
|
|
138
|
+
}
|
|
@@ -9,14 +9,21 @@ import type { LocalCommand } from '../commands.js';
|
|
|
9
9
|
* ╭─ 命令 · 共 12 项 ──────────────────────╮
|
|
10
10
|
* │ ❯ compact Summarize earlier turns… │ ← 选中:❯ + 加粗 + suggestion 色
|
|
11
11
|
* │ compare Compare selected messages … │ ← 名字里命中输入的段提亮
|
|
12
|
+
* │ new Start a new conversation │ ← 灰区整行 subtle,不提亮命中
|
|
12
13
|
* │ ↑2 · ↓3 │ ← 仅当列表被窗口裁剪
|
|
13
14
|
* ╰─────────────────────────────────────────╯
|
|
14
15
|
*
|
|
15
16
|
* 未选中行整体 dim,唯独名字里匹配当前查询 token 的前缀以正常亮度提亮
|
|
16
17
|
* (bold 与 dim 在终端互斥,故提亮用非 dim 而非加粗);选中行整行
|
|
17
18
|
* suggestion 色、名字加粗、前置 ❯ 指针。
|
|
19
|
+
*
|
|
20
|
+
* issue #1072:回合运行中(`holdFrom` 有值)命令按「对当前对话的影响」分区——
|
|
21
|
+
* 不影响对话的留在上方用原样式,会被门禁拦下 / 会打断或替换对话 / 会 steer 的
|
|
22
|
+
* 沉底为灰区(主题 `subtle`,不做命中提亮,但仍可选中执行,该门禁的门禁、
|
|
23
|
+
* 该 steer 的 steer)。分区只是稳定重排:命令索引空间(`selectedIndex` /
|
|
24
|
+
* `onPick`)与窗口数学都不变,灰区只靠颜色区分,不额外占显示行。
|
|
18
25
|
*/
|
|
19
|
-
export declare function CommandSuggestions({ commands, selectedIndex, columns, query, accent, onPick, onWheelStep, }: {
|
|
26
|
+
export declare function CommandSuggestions({ commands, selectedIndex, columns, query, accent, holdFrom, onPick, onWheelStep, }: {
|
|
20
27
|
commands: readonly (LocalCommand & {
|
|
21
28
|
descriptionKey?: string;
|
|
22
29
|
})[];
|
|
@@ -25,6 +32,8 @@ export declare function CommandSuggestions({ commands, selectedIndex, columns, q
|
|
|
25
32
|
/** 原始 `/…` 输入;其最后一段 token 用于名字前缀高亮。 */
|
|
26
33
|
query?: string;
|
|
27
34
|
accent?: keyof Theme | Color;
|
|
35
|
+
/** 索引 ≥ 该值的条目属于「影响当前对话」灰区;undefined = 全部正常区。 */
|
|
36
|
+
holdFrom?: number;
|
|
28
37
|
/** 鼠标点击行(fullscreen):上报过滤后列表的绝对索引(与键盘
|
|
29
38
|
* selectedIndex 同一索引空间),接受路径由 PromptInput 复用。 */
|
|
30
39
|
onPick?: (index: number) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommandSuggestions.d.ts","sourceRoot":"","sources":["../../../src/components/CommandSuggestions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAMlD
|
|
1
|
+
{"version":3,"file":"CommandSuggestions.d.ts","sourceRoot":"","sources":["../../../src/components/CommandSuggestions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAMlD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,QAAQ,EACR,aAAa,EACb,OAAO,EACP,KAAU,EACV,MAAM,EACN,QAAQ,EACR,MAAM,EACN,WAAW,GACZ,EAAE;IACD,QAAQ,EAAE,SAAS,CAAC,YAAY,GAAG;QAAE,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,EAAE,CAAA;IACjE,aAAa,EAAE,MAAM,CAAA;IACrB,OAAO,EAAE,MAAM,CAAA;IACf,uCAAuC;IACvC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,KAAK,GAAG,KAAK,CAAA;IAC5B,gDAAgD;IAChD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;sDACkD;IAClD,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAChC,iCAAiC;IACjC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAA;CACrC,GAAG,KAAK,CAAC,SAAS,CAkGlB"}
|