@deepseek-harness-tui/dsh-tui 0.13.0 → 0.14.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +85 -5
- package/assets/claude-girl/claude-girl-happy.png +0 -0
- package/assets/claude-girl/claude-girl.png +0 -0
- package/assets/codex-girl/codex-girl-happy.png +0 -0
- package/assets/codex-girl/codex-girl.png +0 -0
- package/bin/dsh-tui.js +104 -18
- package/cordis.patch.yml +2 -0
- package/cordis.yml +2 -0
- package/guide/dsh-tui-guide/SKILL.md +4 -2
- package/guide/dsh-tui-guide/claude-backend.en.md +203 -0
- package/guide/dsh-tui-guide/claude-backend.md +161 -0
- package/guide/dsh-tui-guide/codex-backend.en.md +297 -0
- package/guide/dsh-tui-guide/codex-backend.md +257 -0
- package/guide/dsh-tui-guide/configuration.en.md +9 -2
- package/guide/dsh-tui-guide/configuration.md +9 -2
- package/guide/dsh-tui-guide/interaction.en.md +169 -27
- package/guide/dsh-tui-guide/interaction.md +115 -17
- package/guide/dsh-tui-guide/themes.en.md +24 -2
- package/guide/dsh-tui-guide/themes.md +21 -2
- package/guide/dsh-tui-guide/user-guide.en.md +38 -23
- package/guide/dsh-tui-guide/user-guide.md +22 -11
- package/guide/dsh-tui-guide/vscode.en.md +1 -0
- package/guide/dsh-tui-guide/vscode.md +1 -0
- package/lib/settings.json +139 -6
- package/lib/types/adapter/channel/state.d.ts.map +1 -1
- package/lib/types/adapter/channel/state.js +1 -0
- package/lib/types/adapter/channel/ui-policy.d.ts +17 -2
- package/lib/types/adapter/channel/ui-policy.d.ts.map +1 -1
- package/lib/types/adapter/channel/ui-policy.js +29 -0
- package/lib/types/adapter/channel/ui.d.ts.map +1 -1
- package/lib/types/adapter/channel/ui.js +45 -5
- package/lib/types/adapter/ports/channel-catalog.d.ts +7 -0
- package/lib/types/adapter/ports/channel-catalog.d.ts.map +1 -1
- package/lib/types/adapter/ports/channel-display.d.ts +7 -1
- package/lib/types/adapter/ports/channel-display.d.ts.map +1 -1
- package/lib/types/adapter/ports/channel-session.d.ts +5 -0
- package/lib/types/adapter/ports/channel-session.d.ts.map +1 -1
- package/lib/types/adapter/ports/channel-settings.d.ts +20 -0
- package/lib/types/adapter/ports/channel-settings.d.ts.map +1 -1
- package/lib/types/adapter/ports/channel-ui.d.ts +183 -6
- package/lib/types/adapter/ports/channel-ui.d.ts.map +1 -1
- package/lib/types/adapter/ports/channel-view.d.ts +477 -13
- package/lib/types/adapter/ports/channel-view.d.ts.map +1 -1
- package/lib/types/agent/backend.d.ts +168 -0
- package/lib/types/agent/backend.d.ts.map +1 -0
- package/lib/types/agent/backend.js +1 -0
- package/lib/types/agent/capabilities.d.ts +461 -0
- package/lib/types/agent/capabilities.d.ts.map +1 -0
- package/lib/types/agent/capabilities.js +1 -0
- package/lib/types/agent/events.d.ts +733 -0
- package/lib/types/agent/events.d.ts.map +1 -0
- package/lib/types/agent/events.js +2 -0
- package/lib/types/agent/index.d.ts +8 -0
- package/lib/types/agent/index.d.ts.map +1 -0
- package/lib/types/agent/index.js +7 -0
- package/lib/types/agent/messages.d.ts +52 -0
- package/lib/types/agent/messages.d.ts.map +1 -0
- package/lib/types/agent/messages.js +91 -0
- package/lib/types/agent/presentation.d.ts +29 -0
- package/lib/types/agent/presentation.d.ts.map +1 -0
- package/lib/types/agent/presentation.js +4 -0
- package/lib/types/agent/refs.d.ts +30 -0
- package/lib/types/agent/refs.d.ts.map +1 -0
- package/lib/types/agent/refs.js +39 -0
- package/lib/types/agent/session.d.ts +78 -0
- package/lib/types/agent/session.d.ts.map +1 -0
- package/lib/types/agent/session.js +1 -0
- package/lib/types/backends/claude/activity.d.ts +53 -0
- package/lib/types/backends/claude/activity.d.ts.map +1 -0
- package/lib/types/backends/claude/activity.js +103 -0
- package/lib/types/backends/claude/auth.d.ts +245 -0
- package/lib/types/backends/claude/auth.d.ts.map +1 -0
- package/lib/types/backends/claude/auth.js +503 -0
- package/lib/types/backends/claude/backend.d.ts +32 -0
- package/lib/types/backends/claude/backend.d.ts.map +1 -0
- package/lib/types/backends/claude/backend.js +296 -0
- package/lib/types/backends/claude/catalog.d.ts +17 -0
- package/lib/types/backends/claude/catalog.d.ts.map +1 -0
- package/lib/types/backends/claude/catalog.js +94 -0
- package/lib/types/backends/claude/channels.d.ts +63 -0
- package/lib/types/backends/claude/channels.d.ts.map +1 -0
- package/lib/types/backends/claude/channels.js +275 -0
- package/lib/types/backends/claude/contract.d.ts +37 -0
- package/lib/types/backends/claude/contract.d.ts.map +1 -0
- package/lib/types/backends/claude/contract.js +46 -0
- package/lib/types/backends/claude/controls.d.ts +134 -0
- package/lib/types/backends/claude/controls.d.ts.map +1 -0
- package/lib/types/backends/claude/controls.js +425 -0
- package/lib/types/backends/claude/dialogs.d.ts +62 -0
- package/lib/types/backends/claude/dialogs.d.ts.map +1 -0
- package/lib/types/backends/claude/dialogs.js +253 -0
- package/lib/types/backends/claude/flag-settings.d.ts +12 -0
- package/lib/types/backends/claude/flag-settings.d.ts.map +1 -0
- package/lib/types/backends/claude/flag-settings.js +49 -0
- package/lib/types/backends/claude/images.d.ts +49 -0
- package/lib/types/backends/claude/images.d.ts.map +1 -0
- package/lib/types/backends/claude/images.js +94 -0
- package/lib/types/backends/claude/index.d.ts +5 -0
- package/lib/types/backends/claude/index.d.ts.map +1 -0
- package/lib/types/backends/claude/index.js +4 -0
- package/lib/types/backends/claude/install.d.ts +15 -0
- package/lib/types/backends/claude/install.d.ts.map +1 -0
- package/lib/types/backends/claude/install.js +91 -0
- package/lib/types/backends/claude/modelEnv.d.ts +64 -0
- package/lib/types/backends/claude/modelEnv.d.ts.map +1 -0
- package/lib/types/backends/claude/modelEnv.js +199 -0
- package/lib/types/backends/claude/narrow.d.ts +10 -0
- package/lib/types/backends/claude/narrow.d.ts.map +1 -0
- package/lib/types/backends/claude/narrow.js +8 -0
- package/lib/types/backends/claude/older-history.d.ts +16 -0
- package/lib/types/backends/claude/older-history.d.ts.map +1 -0
- package/lib/types/backends/claude/older-history.js +101 -0
- package/lib/types/backends/claude/options.d.ts +181 -0
- package/lib/types/backends/claude/options.d.ts.map +1 -0
- package/lib/types/backends/claude/options.js +208 -0
- package/lib/types/backends/claude/permissions.d.ts +83 -0
- package/lib/types/backends/claude/permissions.d.ts.map +1 -0
- package/lib/types/backends/claude/permissions.js +331 -0
- package/lib/types/backends/claude/prefs.d.ts +55 -0
- package/lib/types/backends/claude/prefs.d.ts.map +1 -0
- package/lib/types/backends/claude/prefs.js +150 -0
- package/lib/types/backends/claude/process.d.ts +19 -0
- package/lib/types/backends/claude/process.d.ts.map +1 -0
- package/lib/types/backends/claude/process.js +156 -0
- package/lib/types/backends/claude/replay.d.ts +129 -0
- package/lib/types/backends/claude/replay.d.ts.map +1 -0
- package/lib/types/backends/claude/replay.js +505 -0
- package/lib/types/backends/claude/sdk-warnings.d.ts +23 -0
- package/lib/types/backends/claude/sdk-warnings.d.ts.map +1 -0
- package/lib/types/backends/claude/sdk-warnings.js +55 -0
- package/lib/types/backends/claude/sdk.d.ts +12 -0
- package/lib/types/backends/claude/sdk.d.ts.map +1 -0
- package/lib/types/backends/claude/sdk.js +34 -0
- package/lib/types/backends/claude/send-message.d.ts +54 -0
- package/lib/types/backends/claude/send-message.d.ts.map +1 -0
- package/lib/types/backends/claude/send-message.js +65 -0
- package/lib/types/backends/claude/session/auth.d.ts +47 -0
- package/lib/types/backends/claude/session/auth.d.ts.map +1 -0
- package/lib/types/backends/claude/session/auth.js +226 -0
- package/lib/types/backends/claude/session/channels.d.ts +82 -0
- package/lib/types/backends/claude/session/channels.d.ts.map +1 -0
- package/lib/types/backends/claude/session/channels.js +45 -0
- package/lib/types/backends/claude/session/input.d.ts +16 -0
- package/lib/types/backends/claude/session/input.d.ts.map +1 -0
- package/lib/types/backends/claude/session/input.js +64 -0
- package/lib/types/backends/claude/session/lifecycle.d.ts +6 -0
- package/lib/types/backends/claude/session/lifecycle.d.ts.map +1 -0
- package/lib/types/backends/claude/session/lifecycle.js +852 -0
- package/lib/types/backends/claude/session/store.d.ts +17 -0
- package/lib/types/backends/claude/session/store.d.ts.map +1 -0
- package/lib/types/backends/claude/session/store.js +122 -0
- package/lib/types/backends/claude/session/subagents.d.ts +13 -0
- package/lib/types/backends/claude/session/subagents.d.ts.map +1 -0
- package/lib/types/backends/claude/session/subagents.js +77 -0
- package/lib/types/backends/claude/session/types.d.ts +89 -0
- package/lib/types/backends/claude/session/types.d.ts.map +1 -0
- package/lib/types/backends/claude/session/types.js +1 -0
- package/lib/types/backends/claude/session.d.ts +4 -0
- package/lib/types/backends/claude/session.d.ts.map +1 -0
- package/lib/types/backends/claude/session.js +2 -0
- package/lib/types/backends/claude/side-query.d.ts +34 -0
- package/lib/types/backends/claude/side-query.d.ts.map +1 -0
- package/lib/types/backends/claude/side-query.js +116 -0
- package/lib/types/backends/claude/task-output.d.ts +13 -0
- package/lib/types/backends/claude/task-output.d.ts.map +1 -0
- package/lib/types/backends/claude/task-output.js +101 -0
- package/lib/types/backends/claude/tools.d.ts +45 -0
- package/lib/types/backends/claude/tools.d.ts.map +1 -0
- package/lib/types/backends/claude/tools.js +231 -0
- package/lib/types/backends/claude/transcript-file.d.ts +41 -0
- package/lib/types/backends/claude/transcript-file.d.ts.map +1 -0
- package/lib/types/backends/claude/transcript-file.js +195 -0
- package/lib/types/backends/claude/translate/attempts.d.ts +33 -0
- package/lib/types/backends/claude/translate/attempts.d.ts.map +1 -0
- package/lib/types/backends/claude/translate/attempts.js +243 -0
- package/lib/types/backends/claude/translate/content.d.ts +33 -0
- package/lib/types/backends/claude/translate/content.d.ts.map +1 -0
- package/lib/types/backends/claude/translate/content.js +91 -0
- package/lib/types/backends/claude/translate/core.d.ts +76 -0
- package/lib/types/backends/claude/translate/core.d.ts.map +1 -0
- package/lib/types/backends/claude/translate/core.js +447 -0
- package/lib/types/backends/claude/translate/events.d.ts +9 -0
- package/lib/types/backends/claude/translate/events.d.ts.map +1 -0
- package/lib/types/backends/claude/translate/events.js +77 -0
- package/lib/types/backends/claude/translate/lanes.d.ts +31 -0
- package/lib/types/backends/claude/translate/lanes.d.ts.map +1 -0
- package/lib/types/backends/claude/translate/lanes.js +177 -0
- package/lib/types/backends/claude/translate/messages.d.ts +36 -0
- package/lib/types/backends/claude/translate/messages.d.ts.map +1 -0
- package/lib/types/backends/claude/translate/messages.js +202 -0
- package/lib/types/backends/claude/translate/system.d.ts +40 -0
- package/lib/types/backends/claude/translate/system.d.ts.map +1 -0
- package/lib/types/backends/claude/translate/system.js +399 -0
- package/lib/types/backends/claude/translate/tasks.d.ts +19 -0
- package/lib/types/backends/claude/translate/tasks.d.ts.map +1 -0
- package/lib/types/backends/claude/translate/tasks.js +159 -0
- package/lib/types/backends/claude/translate/types.d.ts +114 -0
- package/lib/types/backends/claude/translate/types.d.ts.map +1 -0
- package/lib/types/backends/claude/translate/types.js +1 -0
- package/lib/types/backends/claude/translate.d.ts +9 -0
- package/lib/types/backends/claude/translate.d.ts.map +1 -0
- package/lib/types/backends/claude/translate.js +6 -0
- package/lib/types/backends/codex/auth/external-tokens.d.ts +66 -0
- package/lib/types/backends/codex/auth/external-tokens.d.ts.map +1 -0
- package/lib/types/backends/codex/auth/external-tokens.js +325 -0
- package/lib/types/backends/codex/auth/route.d.ts +14 -0
- package/lib/types/backends/codex/auth/route.d.ts.map +1 -0
- package/lib/types/backends/codex/auth/route.js +52 -0
- package/lib/types/backends/codex/auth/status.d.ts +16 -0
- package/lib/types/backends/codex/auth/status.d.ts.map +1 -0
- package/lib/types/backends/codex/auth/status.js +115 -0
- package/lib/types/backends/codex/backend.d.ts +58 -0
- package/lib/types/backends/codex/backend.d.ts.map +1 -0
- package/lib/types/backends/codex/backend.js +201 -0
- package/lib/types/backends/codex/catalog.d.ts +17 -0
- package/lib/types/backends/codex/catalog.d.ts.map +1 -0
- package/lib/types/backends/codex/catalog.js +128 -0
- package/lib/types/backends/codex/channels.d.ts +59 -0
- package/lib/types/backends/codex/channels.d.ts.map +1 -0
- package/lib/types/backends/codex/channels.js +274 -0
- package/lib/types/backends/codex/contract.d.ts +46 -0
- package/lib/types/backends/codex/contract.d.ts.map +1 -0
- package/lib/types/backends/codex/contract.js +80 -0
- package/lib/types/backends/codex/detect.d.ts +14 -0
- package/lib/types/backends/codex/detect.d.ts.map +1 -0
- package/lib/types/backends/codex/detect.js +90 -0
- package/lib/types/backends/codex/index.d.ts +6 -0
- package/lib/types/backends/codex/index.d.ts.map +1 -0
- package/lib/types/backends/codex/index.js +5 -0
- package/lib/types/backends/codex/modes.d.ts +16 -0
- package/lib/types/backends/codex/modes.d.ts.map +1 -0
- package/lib/types/backends/codex/modes.js +49 -0
- package/lib/types/backends/codex/narrow.d.ts +20 -0
- package/lib/types/backends/codex/narrow.d.ts.map +1 -0
- package/lib/types/backends/codex/narrow.js +18 -0
- package/lib/types/backends/codex/prefs.d.ts +42 -0
- package/lib/types/backends/codex/prefs.d.ts.map +1 -0
- package/lib/types/backends/codex/prefs.js +124 -0
- package/lib/types/backends/codex/protocol/index.d.ts +149 -0
- package/lib/types/backends/codex/protocol/index.d.ts.map +1 -0
- package/lib/types/backends/codex/protocol/index.js +130 -0
- package/lib/types/backends/codex/rpc/binary.d.ts +35 -0
- package/lib/types/backends/codex/rpc/binary.d.ts.map +1 -0
- package/lib/types/backends/codex/rpc/binary.js +174 -0
- package/lib/types/backends/codex/rpc/client.d.ts +72 -0
- package/lib/types/backends/codex/rpc/client.d.ts.map +1 -0
- package/lib/types/backends/codex/rpc/client.js +214 -0
- package/lib/types/backends/codex/rpc/hub.d.ts +105 -0
- package/lib/types/backends/codex/rpc/hub.d.ts.map +1 -0
- package/lib/types/backends/codex/rpc/hub.js +532 -0
- package/lib/types/backends/codex/rpc/transport.d.ts +39 -0
- package/lib/types/backends/codex/rpc/transport.d.ts.map +1 -0
- package/lib/types/backends/codex/rpc/transport.js +212 -0
- package/lib/types/backends/codex/session/activity.d.ts +18 -0
- package/lib/types/backends/codex/session/activity.d.ts.map +1 -0
- package/lib/types/backends/codex/session/activity.js +108 -0
- package/lib/types/backends/codex/session/approvals.d.ts +39 -0
- package/lib/types/backends/codex/session/approvals.d.ts.map +1 -0
- package/lib/types/backends/codex/session/approvals.js +477 -0
- package/lib/types/backends/codex/session/commands.d.ts +37 -0
- package/lib/types/backends/codex/session/commands.d.ts.map +1 -0
- package/lib/types/backends/codex/session/commands.js +141 -0
- package/lib/types/backends/codex/session/controls.d.ts +37 -0
- package/lib/types/backends/codex/session/controls.d.ts.map +1 -0
- package/lib/types/backends/codex/session/controls.js +303 -0
- package/lib/types/backends/codex/session/goals.d.ts +25 -0
- package/lib/types/backends/codex/session/goals.d.ts.map +1 -0
- package/lib/types/backends/codex/session/goals.js +97 -0
- package/lib/types/backends/codex/session/history.d.ts +52 -0
- package/lib/types/backends/codex/session/history.d.ts.map +1 -0
- package/lib/types/backends/codex/session/history.js +196 -0
- package/lib/types/backends/codex/session/images.d.ts +17 -0
- package/lib/types/backends/codex/session/images.d.ts.map +1 -0
- package/lib/types/backends/codex/session/images.js +138 -0
- package/lib/types/backends/codex/session/input.d.ts +75 -0
- package/lib/types/backends/codex/session/input.d.ts.map +1 -0
- package/lib/types/backends/codex/session/input.js +294 -0
- package/lib/types/backends/codex/session/plan-review.d.ts +19 -0
- package/lib/types/backends/codex/session/plan-review.d.ts.map +1 -0
- package/lib/types/backends/codex/session/plan-review.js +48 -0
- package/lib/types/backends/codex/session/prompts.d.ts +7 -0
- package/lib/types/backends/codex/session/prompts.d.ts.map +1 -0
- package/lib/types/backends/codex/session/prompts.js +47 -0
- package/lib/types/backends/codex/session/session.d.ts +12 -0
- package/lib/types/backends/codex/session/session.d.ts.map +1 -0
- package/lib/types/backends/codex/session/session.js +871 -0
- package/lib/types/backends/codex/session/side-query.d.ts +25 -0
- package/lib/types/backends/codex/session/side-query.d.ts.map +1 -0
- package/lib/types/backends/codex/session/side-query.js +121 -0
- package/lib/types/backends/codex/session/state.d.ts +57 -0
- package/lib/types/backends/codex/session/state.d.ts.map +1 -0
- package/lib/types/backends/codex/session/state.js +1 -0
- package/lib/types/backends/codex/session/subagents.d.ts +28 -0
- package/lib/types/backends/codex/session/subagents.d.ts.map +1 -0
- package/lib/types/backends/codex/session/subagents.js +286 -0
- package/lib/types/backends/codex/session/tasks.d.ts +25 -0
- package/lib/types/backends/codex/session/tasks.d.ts.map +1 -0
- package/lib/types/backends/codex/session/tasks.js +207 -0
- package/lib/types/backends/codex/session/tool-output.d.ts +9 -0
- package/lib/types/backends/codex/session/tool-output.d.ts.map +1 -0
- package/lib/types/backends/codex/session/tool-output.js +29 -0
- package/lib/types/backends/codex/translate/commands.d.ts +30 -0
- package/lib/types/backends/codex/translate/commands.d.ts.map +1 -0
- package/lib/types/backends/codex/translate/commands.js +103 -0
- package/lib/types/backends/codex/translate/events.d.ts +9 -0
- package/lib/types/backends/codex/translate/events.d.ts.map +1 -0
- package/lib/types/backends/codex/translate/events.js +71 -0
- package/lib/types/backends/codex/translate/items.d.ts +112 -0
- package/lib/types/backends/codex/translate/items.d.ts.map +1 -0
- package/lib/types/backends/codex/translate/items.js +375 -0
- package/lib/types/backends/codex/translate/live.d.ts +39 -0
- package/lib/types/backends/codex/translate/live.d.ts.map +1 -0
- package/lib/types/backends/codex/translate/live.js +315 -0
- package/lib/types/backends/codex/translate/notices.d.ts +27 -0
- package/lib/types/backends/codex/translate/notices.d.ts.map +1 -0
- package/lib/types/backends/codex/translate/notices.js +99 -0
- package/lib/types/backends/codex/translate/presentation.d.ts +49 -0
- package/lib/types/backends/codex/translate/presentation.d.ts.map +1 -0
- package/lib/types/backends/codex/translate/presentation.js +237 -0
- package/lib/types/backends/codex/translate/replay.d.ts +18 -0
- package/lib/types/backends/codex/translate/replay.d.ts.map +1 -0
- package/lib/types/backends/codex/translate/replay.js +33 -0
- package/lib/types/backends/codex/translate/usage.d.ts +29 -0
- package/lib/types/backends/codex/translate/usage.d.ts.map +1 -0
- package/lib/types/backends/codex/translate/usage.js +65 -0
- package/lib/types/backends/shared/atomic-file.d.ts +4 -0
- package/lib/types/backends/shared/atomic-file.d.ts.map +1 -0
- package/lib/types/backends/shared/atomic-file.js +52 -0
- package/lib/types/backends/shared/channel-tokens.d.ts +29 -0
- package/lib/types/backends/shared/channel-tokens.d.ts.map +1 -0
- package/lib/types/backends/shared/channel-tokens.js +161 -0
- package/lib/types/backends/shared/display-path.d.ts +3 -0
- package/lib/types/backends/shared/display-path.d.ts.map +1 -0
- package/lib/types/backends/shared/display-path.js +12 -0
- package/lib/types/branding.d.ts +92 -0
- package/lib/types/branding.d.ts.map +1 -0
- package/lib/types/branding.js +117 -0
- package/lib/types/channel/activity.d.ts +53 -0
- package/lib/types/channel/activity.d.ts.map +1 -0
- package/lib/types/channel/activity.js +955 -0
- package/lib/types/channel/capabilities.d.ts +24 -0
- package/lib/types/channel/capabilities.d.ts.map +1 -0
- package/lib/types/channel/capabilities.js +57 -0
- package/lib/types/channel/channel-slug.d.ts +9 -0
- package/lib/types/channel/channel-slug.d.ts.map +1 -0
- package/lib/types/channel/channel-slug.js +15 -0
- package/lib/types/channel/channel-wizard.d.ts +30 -0
- package/lib/types/channel/channel-wizard.d.ts.map +1 -0
- package/lib/types/channel/channel-wizard.js +226 -0
- package/lib/types/channel/elicitation.d.ts +135 -0
- package/lib/types/channel/elicitation.d.ts.map +1 -0
- package/lib/types/channel/elicitation.js +360 -0
- package/lib/types/channel/goal-command.d.ts +49 -0
- package/lib/types/channel/goal-command.d.ts.map +1 -0
- package/lib/types/channel/goal-command.js +72 -0
- package/lib/types/channel/history-restore.d.ts +16 -0
- package/lib/types/channel/history-restore.d.ts.map +1 -0
- package/lib/types/channel/history-restore.js +214 -0
- package/lib/types/channel/interaction.d.ts +38 -0
- package/lib/types/channel/interaction.d.ts.map +1 -0
- package/lib/types/channel/interaction.js +110 -0
- package/lib/types/channel/job-format.d.ts +6 -0
- package/lib/types/channel/job-format.d.ts.map +1 -0
- package/lib/types/channel/job-format.js +12 -0
- package/lib/types/channel/live-output.d.ts +35 -0
- package/lib/types/channel/live-output.d.ts.map +1 -0
- package/lib/types/channel/live-output.js +74 -0
- package/lib/types/channel/model-capabilities.d.ts +10 -0
- package/lib/types/channel/model-capabilities.d.ts.map +1 -0
- package/lib/types/channel/model-capabilities.js +51 -0
- package/lib/types/channel/permissions.d.ts +155 -0
- package/lib/types/channel/permissions.d.ts.map +1 -0
- package/lib/types/channel/permissions.js +188 -0
- package/lib/types/channel/projection.d.ts +110 -0
- package/lib/types/channel/projection.d.ts.map +1 -0
- package/lib/types/channel/projection.js +1521 -0
- package/lib/types/channel/question-record.d.ts +76 -0
- package/lib/types/channel/question-record.d.ts.map +1 -0
- package/lib/types/channel/question-record.js +109 -0
- package/lib/types/channel/questions.d.ts +204 -0
- package/lib/types/channel/questions.d.ts.map +1 -0
- package/lib/types/channel/questions.js +286 -0
- package/lib/types/channel/sanitize.d.ts +49 -0
- package/lib/types/channel/sanitize.d.ts.map +1 -0
- package/lib/types/channel/sanitize.js +88 -0
- package/lib/types/channel/selection-record.d.ts +18 -0
- package/lib/types/channel/selection-record.d.ts.map +1 -0
- package/lib/types/channel/selection-record.js +45 -0
- package/lib/types/channel/side-prompts.d.ts +59 -0
- package/lib/types/channel/side-prompts.d.ts.map +1 -0
- package/lib/types/channel/side-prompts.js +127 -0
- package/lib/types/channel/transcript.d.ts +17 -0
- package/lib/types/channel/transcript.d.ts.map +1 -0
- package/lib/types/channel/transcript.js +19 -0
- package/lib/types/channel/usage.d.ts +48 -0
- package/lib/types/channel/usage.d.ts.map +1 -0
- package/lib/types/channel/usage.js +143 -0
- package/lib/types/commands.d.ts +147 -0
- package/lib/types/commands.d.ts.map +1 -1
- package/lib/types/commands.js +196 -2
- package/lib/types/components/AgentMessageComposer.d.ts +50 -0
- package/lib/types/components/AgentMessageComposer.d.ts.map +1 -0
- package/lib/types/components/AgentMessageComposer.js +159 -0
- package/lib/types/components/BtwPanel.d.ts +13 -12
- package/lib/types/components/BtwPanel.d.ts.map +1 -1
- package/lib/types/components/BtwPanel.js +35 -24
- package/lib/types/components/ChannelPicker.d.ts +40 -0
- package/lib/types/components/ChannelPicker.d.ts.map +1 -0
- package/lib/types/components/ChannelPicker.js +26 -0
- package/lib/types/components/Chat/JobCard.d.ts +29 -31
- package/lib/types/components/Chat/JobCard.d.ts.map +1 -1
- package/lib/types/components/Chat/JobCard.js +31 -112
- package/lib/types/components/Chat/SubagentMessage.d.ts +4 -1
- package/lib/types/components/Chat/SubagentMessage.d.ts.map +1 -1
- package/lib/types/components/Chat/SubagentMessage.js +10 -3
- package/lib/types/components/ClaudeGirl.d.ts +27 -0
- package/lib/types/components/ClaudeGirl.d.ts.map +1 -0
- package/lib/types/components/ClaudeGirl.js +30 -0
- package/lib/types/components/CodeBlockFrame.d.ts +19 -0
- package/lib/types/components/CodeBlockFrame.d.ts.map +1 -0
- package/lib/types/components/CodeBlockFrame.js +138 -0
- package/lib/types/components/CommandSuggestions.d.ts +10 -1
- package/lib/types/components/CommandSuggestions.d.ts.map +1 -1
- package/lib/types/components/CommandSuggestions.js +20 -3
- package/lib/types/components/ContextBarView.d.ts +2 -2
- package/lib/types/components/ContextBarView.d.ts.map +1 -1
- package/lib/types/components/ContextBarView.js +18 -8
- package/lib/types/components/EffortChargeGlyph.d.ts +1 -1
- package/lib/types/components/EffortChargeGlyph.d.ts.map +1 -1
- package/lib/types/components/EffortChargeGlyph.js +3 -4
- package/lib/types/components/EffortInputBorder.d.ts +1 -2
- package/lib/types/components/EffortInputBorder.d.ts.map +1 -1
- package/lib/types/components/EffortInputBorder.js +7 -4
- package/lib/types/components/EffortSlider.d.ts +5 -1
- package/lib/types/components/EffortSlider.d.ts.map +1 -1
- package/lib/types/components/EffortSlider.js +2 -2
- package/lib/types/components/EffortTierBadge.d.ts +1 -2
- package/lib/types/components/EffortTierBadge.d.ts.map +1 -1
- package/lib/types/components/EffortTierBadge.js +8 -5
- package/lib/types/components/GoalTodoPanel.d.ts +2 -1
- package/lib/types/components/GoalTodoPanel.d.ts.map +1 -1
- package/lib/types/components/GoalTodoPanel.js +11 -5
- package/lib/types/components/InlineMathParagraph.js +1 -1
- package/lib/types/components/JobsPanel.d.ts +8 -9
- package/lib/types/components/JobsPanel.d.ts.map +1 -1
- package/lib/types/components/JobsPanel.js +72 -13
- package/lib/types/components/KernelPicker.d.ts +28 -0
- package/lib/types/components/KernelPicker.d.ts.map +1 -0
- package/lib/types/components/KernelPicker.js +37 -0
- package/lib/types/components/LogoV2.d.ts +7 -1
- package/lib/types/components/LogoV2.d.ts.map +1 -1
- package/lib/types/components/LogoV2.js +120 -24
- package/lib/types/components/Markdown.d.ts +2 -1
- package/lib/types/components/Markdown.d.ts.map +1 -1
- package/lib/types/components/Markdown.js +37 -8
- package/lib/types/components/MathBlock.d.ts.map +1 -1
- package/lib/types/components/MathBlock.js +3 -1
- package/lib/types/components/MermaidDiagram.d.ts.map +1 -1
- package/lib/types/components/MermaidDiagram.js +7 -5
- package/lib/types/components/MessageList.d.ts +21 -3
- package/lib/types/components/MessageList.d.ts.map +1 -1
- package/lib/types/components/MessageList.js +62 -42
- package/lib/types/components/ModePicker.d.ts +20 -0
- package/lib/types/components/ModePicker.d.ts.map +1 -0
- package/lib/types/components/ModePicker.js +17 -0
- package/lib/types/components/PromptInput.d.ts +2 -2
- package/lib/types/components/PromptInput.d.ts.map +1 -1
- package/lib/types/components/PromptInput.js +308 -55
- package/lib/types/components/SdkInstallWizard.d.ts +44 -0
- package/lib/types/components/SdkInstallWizard.d.ts.map +1 -0
- package/lib/types/components/SdkInstallWizard.js +18 -0
- package/lib/types/components/SearchBox.d.ts +7 -8
- package/lib/types/components/SearchBox.d.ts.map +1 -1
- package/lib/types/components/SearchBox.js +18 -9
- package/lib/types/components/SplitDiffView.d.ts.map +1 -1
- package/lib/types/components/SplitDiffView.js +113 -6
- package/lib/types/components/StarPrompt.d.ts.map +1 -1
- package/lib/types/components/StarPrompt.js +5 -3
- package/lib/types/components/StreamingMarkdown.d.ts.map +1 -1
- package/lib/types/components/StreamingMarkdown.js +6 -4
- package/lib/types/components/SubagentCard.d.ts +2 -1
- package/lib/types/components/SubagentCard.d.ts.map +1 -1
- package/lib/types/components/SubagentCard.js +25 -18
- package/lib/types/components/SubagentDashboard.d.ts +10 -6
- package/lib/types/components/SubagentDashboard.d.ts.map +1 -1
- package/lib/types/components/SubagentDashboard.js +32 -21
- package/lib/types/components/SubagentDetailScene.d.ts +16 -1
- package/lib/types/components/SubagentDetailScene.d.ts.map +1 -1
- package/lib/types/components/SubagentDetailScene.js +196 -45
- package/lib/types/components/SyntaxText.d.ts.map +1 -1
- package/lib/types/components/SyntaxText.js +4 -1
- package/lib/types/components/TurnInterruptedRow.d.ts +3 -1
- package/lib/types/components/TurnInterruptedRow.d.ts.map +1 -1
- package/lib/types/components/TurnInterruptedRow.js +6 -3
- package/lib/types/components/TurnUsageRow.d.ts +24 -0
- package/lib/types/components/TurnUsageRow.d.ts.map +1 -0
- package/lib/types/components/TurnUsageRow.js +46 -0
- package/lib/types/components/WorkingSpinner.d.ts +2 -1
- package/lib/types/components/WorkingSpinner.d.ts.map +1 -1
- package/lib/types/components/WorkingSpinner.js +21 -4
- package/lib/types/components/approvals/ApprovalPanel.d.ts +36 -13
- package/lib/types/components/approvals/ApprovalPanel.d.ts.map +1 -1
- package/lib/types/components/approvals/ApprovalPanel.js +173 -25
- package/lib/types/components/claudeGirlSprite.d.ts +18 -0
- package/lib/types/components/claudeGirlSprite.d.ts.map +1 -0
- package/lib/types/components/claudeGirlSprite.js +48 -0
- package/lib/types/components/design-system/ThemeProvider.d.ts.map +1 -1
- package/lib/types/components/design-system/ThemeProvider.js +46 -13
- package/lib/types/components/design-system/ThemedText.d.ts +3 -1
- package/lib/types/components/design-system/ThemedText.d.ts.map +1 -1
- package/lib/types/components/design-system/ThemedText.js +2 -2
- package/lib/types/components/diffPatch.d.ts +55 -0
- package/lib/types/components/diffPatch.d.ts.map +1 -0
- package/lib/types/components/diffPatch.js +142 -0
- package/lib/types/components/kernelCatalog.d.ts +48 -0
- package/lib/types/components/kernelCatalog.d.ts.map +1 -0
- package/lib/types/components/kernelCatalog.js +53 -0
- package/lib/types/components/launchpadActions.d.ts +13 -6
- package/lib/types/components/launchpadActions.d.ts.map +1 -1
- package/lib/types/components/launchpadActions.js +26 -4
- package/lib/types/components/launchpadParams.d.ts +101 -0
- package/lib/types/components/launchpadParams.d.ts.map +1 -0
- package/lib/types/components/launchpadParams.js +171 -0
- package/lib/types/components/maidPortrait.d.ts +37 -5
- package/lib/types/components/maidPortrait.d.ts.map +1 -1
- package/lib/types/components/maidPortrait.js +73 -54
- package/lib/types/components/messages/AgentMessageFlow.d.ts +20 -0
- package/lib/types/components/messages/AgentMessageFlow.d.ts.map +1 -0
- package/lib/types/components/messages/AgentMessageFlow.js +37 -0
- package/lib/types/components/messages/AssistantThinkingMessage.d.ts +6 -1
- package/lib/types/components/messages/AssistantThinkingMessage.d.ts.map +1 -1
- package/lib/types/components/messages/AssistantThinkingMessage.js +29 -5
- package/lib/types/components/messages/AssistantToolUseMessage.d.ts +11 -2
- package/lib/types/components/messages/AssistantToolUseMessage.d.ts.map +1 -1
- package/lib/types/components/messages/AssistantToolUseMessage.js +289 -36
- package/lib/types/components/messages/TranscriptLeaves.d.ts +85 -0
- package/lib/types/components/messages/TranscriptLeaves.d.ts.map +1 -0
- package/lib/types/components/messages/TranscriptLeaves.js +74 -0
- package/lib/types/components/messages/agentTeam.d.ts +69 -0
- package/lib/types/components/messages/agentTeam.d.ts.map +1 -0
- package/lib/types/components/messages/agentTeam.js +53 -0
- package/lib/types/components/messages/liveOutputLines.d.ts +33 -0
- package/lib/types/components/messages/liveOutputLines.d.ts.map +1 -0
- package/lib/types/components/messages/liveOutputLines.js +100 -0
- package/lib/types/components/messages/subagentTranscript.d.ts +146 -0
- package/lib/types/components/messages/subagentTranscript.d.ts.map +1 -0
- package/lib/types/components/messages/subagentTranscript.js +304 -0
- package/lib/types/components/questions/AskUserQuestionPanel.d.ts +16 -1
- package/lib/types/components/questions/AskUserQuestionPanel.d.ts.map +1 -1
- package/lib/types/components/questions/AskUserQuestionPanel.js +76 -6
- package/lib/types/components/questions/PlanReviewPanel.d.ts +8 -3
- package/lib/types/components/questions/PlanReviewPanel.d.ts.map +1 -1
- package/lib/types/components/questions/PlanReviewPanel.js +11 -6
- package/lib/types/components/questions/ProviderModelEditor.d.ts +12 -0
- package/lib/types/components/questions/ProviderModelEditor.d.ts.map +1 -0
- package/lib/types/components/questions/ProviderModelEditor.js +266 -0
- package/lib/types/components/shimmer.d.ts +26 -0
- package/lib/types/components/shimmer.d.ts.map +1 -1
- package/lib/types/components/shimmer.js +26 -0
- package/lib/types/components/sidePanel/InfoPanel.d.ts.map +1 -1
- package/lib/types/components/sidePanel/InfoPanel.js +13 -8
- package/lib/types/components/sidePanel/PanelBar.d.ts +0 -24
- package/lib/types/components/sidePanel/PanelBar.d.ts.map +1 -1
- package/lib/types/components/sidePanel/PanelBar.js +55 -77
- package/lib/types/components/sidePanel/PanelStore.d.ts +3 -1
- package/lib/types/components/sidePanel/PanelStore.d.ts.map +1 -1
- package/lib/types/components/sidePanel/PanelStore.js +8 -4
- package/lib/types/components/sidePanel/SidePanelColumn.d.ts +3 -10
- package/lib/types/components/sidePanel/SidePanelColumn.d.ts.map +1 -1
- package/lib/types/components/sidePanel/SidePanelColumn.js +9 -12
- package/lib/types/components/sidePanel/TrajectoryPanel.d.ts.map +1 -1
- package/lib/types/components/sidePanel/TrajectoryPanel.js +78 -14
- package/lib/types/components/sidePanel/agentViewStore.d.ts +20 -0
- package/lib/types/components/sidePanel/agentViewStore.d.ts.map +1 -0
- package/lib/types/components/sidePanel/agentViewStore.js +26 -0
- package/lib/types/components/sidePanel/btw/BtwComposer.d.ts +50 -0
- package/lib/types/components/sidePanel/btw/BtwComposer.d.ts.map +1 -0
- package/lib/types/components/sidePanel/btw/BtwComposer.js +45 -0
- package/lib/types/components/sidePanel/btw/BtwPanelAdapter.d.ts +13 -0
- package/lib/types/components/sidePanel/btw/BtwPanelAdapter.d.ts.map +1 -0
- package/lib/types/components/sidePanel/btw/BtwPanelAdapter.js +147 -0
- package/lib/types/components/sidePanel/btw/BtwThreadScene.d.ts +14 -0
- package/lib/types/components/sidePanel/btw/BtwThreadScene.d.ts.map +1 -0
- package/lib/types/components/sidePanel/btw/BtwThreadScene.js +131 -0
- package/lib/types/components/sidePanel/btw/BtwThreadView.d.ts +30 -0
- package/lib/types/components/sidePanel/btw/BtwThreadView.d.ts.map +1 -0
- package/lib/types/components/sidePanel/btw/BtwThreadView.js +87 -0
- package/lib/types/components/sidePanel/btw/threads.d.ts +111 -0
- package/lib/types/components/sidePanel/btw/threads.d.ts.map +1 -0
- package/lib/types/components/sidePanel/btw/threads.js +302 -0
- package/lib/types/components/sidePanel/builtinPanels.d.ts.map +1 -1
- package/lib/types/components/sidePanel/builtinPanels.js +70 -30
- package/lib/types/components/sidePanel/companion/CompanionPanel.d.ts +4 -46
- package/lib/types/components/sidePanel/companion/CompanionPanel.d.ts.map +1 -1
- package/lib/types/components/sidePanel/companion/CompanionPanel.js +19 -55
- package/lib/types/components/sidePanel/companion/mood.d.ts +32 -0
- package/lib/types/components/sidePanel/companion/mood.d.ts.map +1 -1
- package/lib/types/components/sidePanel/companion/mood.js +44 -0
- package/lib/types/components/sidePanel/companion/skins.d.ts +34 -0
- package/lib/types/components/sidePanel/companion/skins.d.ts.map +1 -1
- package/lib/types/components/sidePanel/companion/skins.js +203 -29
- package/lib/types/components/splashFonts.d.ts +17 -9
- package/lib/types/components/splashFonts.d.ts.map +1 -1
- package/lib/types/components/splashFonts.js +119 -15
- package/lib/types/components/splashLayout.d.ts.map +1 -1
- package/lib/types/components/splashLayout.js +3 -1
- package/lib/types/components/subagentDetailMemory.d.ts +17 -0
- package/lib/types/components/subagentDetailMemory.d.ts.map +1 -0
- package/lib/types/components/subagentDetailMemory.js +28 -0
- package/lib/types/components/trajectory/Inspector.d.ts.map +1 -1
- package/lib/types/components/trajectory/Inspector.js +9 -0
- package/lib/types/components/trajectory/Ledger.d.ts.map +1 -1
- package/lib/types/components/trajectory/Ledger.js +7 -1
- package/lib/types/components/trajectory/scope.d.ts +64 -0
- package/lib/types/components/trajectory/scope.d.ts.map +1 -0
- package/lib/types/components/trajectory/scope.js +88 -0
- package/lib/types/components/trajectory/useTrajectoryScope.d.ts +42 -0
- package/lib/types/components/trajectory/useTrajectoryScope.d.ts.map +1 -0
- package/lib/types/components/trajectory/useTrajectoryScope.js +86 -0
- package/lib/types/customTheme.d.ts +4 -6
- package/lib/types/customTheme.d.ts.map +1 -1
- package/lib/types/customTheme.js +6 -8
- package/lib/types/dsh-adapter/approvals.d.ts +18 -5
- package/lib/types/dsh-adapter/approvals.d.ts.map +1 -1
- package/lib/types/dsh-adapter/approvals.js +17 -4
- package/lib/types/dsh-adapter/backend/session.d.ts +64 -0
- package/lib/types/dsh-adapter/backend/session.d.ts.map +1 -0
- package/lib/types/dsh-adapter/backend/session.js +291 -0
- package/lib/types/dsh-adapter/backend/translate.d.ts +58 -0
- package/lib/types/dsh-adapter/backend/translate.d.ts.map +1 -0
- package/lib/types/dsh-adapter/backend/translate.js +467 -0
- package/lib/types/dsh-adapter/backends.d.ts +49 -0
- package/lib/types/dsh-adapter/backends.d.ts.map +1 -0
- package/lib/types/dsh-adapter/backends.js +124 -0
- package/lib/types/dsh-adapter/channel/action-readiness.d.ts +16 -0
- package/lib/types/dsh-adapter/channel/action-readiness.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/action-readiness.js +109 -0
- package/lib/types/dsh-adapter/channel/agent-view-projection.d.ts +2 -2
- package/lib/types/dsh-adapter/channel/agent-view-projection.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/background-action.d.ts +2 -2
- package/lib/types/dsh-adapter/channel/background-action.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/background-action.js +7 -5
- package/lib/types/dsh-adapter/channel/binding-events.d.ts +19 -9
- package/lib/types/dsh-adapter/channel/binding-events.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/binding-events.js +58 -135
- package/lib/types/dsh-adapter/channel/binding.d.ts +61 -14
- package/lib/types/dsh-adapter/channel/binding.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/binding.js +102 -35
- package/lib/types/dsh-adapter/channel/command-completions.d.ts +3 -0
- package/lib/types/dsh-adapter/channel/command-completions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/command-completions.js +33 -4
- package/lib/types/dsh-adapter/channel/compaction.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/compaction.js +3 -2
- package/lib/types/dsh-adapter/channel/composer-images.d.ts +5 -0
- package/lib/types/dsh-adapter/channel/composer-images.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/composer-images.js +4 -3
- package/lib/types/dsh-adapter/channel/core/actions.d.ts +39 -0
- package/lib/types/dsh-adapter/channel/core/actions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/core/actions.js +152 -0
- package/lib/types/dsh-adapter/channel/core/binding-feed.d.ts +145 -0
- package/lib/types/dsh-adapter/channel/core/binding-feed.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/core/binding-feed.js +289 -0
- package/lib/types/dsh-adapter/channel/core/compose.d.ts +217 -0
- package/lib/types/dsh-adapter/channel/core/compose.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/core/compose.js +938 -0
- package/lib/types/dsh-adapter/channel/core/files.d.ts +57 -0
- package/lib/types/dsh-adapter/channel/core/files.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/core/files.js +45 -0
- package/lib/types/dsh-adapter/channel/core/host.d.ts +55 -0
- package/lib/types/dsh-adapter/channel/core/host.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/core/host.js +116 -0
- package/lib/types/dsh-adapter/channel/core/local-actions.d.ts +46 -0
- package/lib/types/dsh-adapter/channel/core/local-actions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/core/local-actions.js +117 -0
- package/lib/types/dsh-adapter/channel/core/local-images.d.ts +20 -0
- package/lib/types/dsh-adapter/channel/core/local-images.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/core/local-images.js +147 -0
- package/lib/types/dsh-adapter/channel/core/reports.d.ts +12 -0
- package/lib/types/dsh-adapter/channel/core/reports.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/core/reports.js +77 -0
- package/lib/types/dsh-adapter/channel/core/session-controls.d.ts +39 -0
- package/lib/types/dsh-adapter/channel/core/session-controls.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/core/session-controls.js +219 -0
- package/lib/types/dsh-adapter/channel/core/session-switch.d.ts +174 -0
- package/lib/types/dsh-adapter/channel/core/session-switch.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/core/session-switch.js +390 -0
- package/lib/types/dsh-adapter/channel/core/sessions.d.ts +40 -0
- package/lib/types/dsh-adapter/channel/core/sessions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/core/sessions.js +268 -0
- package/lib/types/dsh-adapter/channel/decisions.d.ts +4 -3
- package/lib/types/dsh-adapter/channel/decisions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/decisions.js +4 -4
- package/lib/types/dsh-adapter/channel/emitter.d.ts +15 -2
- package/lib/types/dsh-adapter/channel/emitter.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/emitter.js +5 -3
- package/lib/types/dsh-adapter/channel/extensions.d.ts +36 -0
- package/lib/types/dsh-adapter/channel/extensions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/extensions.js +714 -0
- package/lib/types/dsh-adapter/channel/ide-selection.d.ts +1 -10
- package/lib/types/dsh-adapter/channel/ide-selection.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/ide-selection.js +4 -46
- package/lib/types/dsh-adapter/channel/input-actions.d.ts +27 -4
- package/lib/types/dsh-adapter/channel/input-actions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/input-actions.js +240 -21
- package/lib/types/dsh-adapter/channel/input-delivery.d.ts +21 -5
- package/lib/types/dsh-adapter/channel/input-delivery.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/input-delivery.js +65 -27
- package/lib/types/dsh-adapter/channel/local-actions.d.ts +10 -32
- package/lib/types/dsh-adapter/channel/local-actions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/local-actions.js +10 -78
- package/lib/types/dsh-adapter/channel/local-fs.d.ts +3 -0
- package/lib/types/dsh-adapter/channel/local-fs.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/local-fs.js +46 -0
- package/lib/types/dsh-adapter/channel/mode-actions.d.ts +3 -3
- package/lib/types/dsh-adapter/channel/mode-actions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/mode-permission-actions.d.ts +2 -2
- package/lib/types/dsh-adapter/channel/mode-permission-actions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/model-actions.d.ts +3 -3
- package/lib/types/dsh-adapter/channel/model-actions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/model-actions.js +38 -5
- package/lib/types/dsh-adapter/channel/model-switch.d.ts +2 -2
- package/lib/types/dsh-adapter/channel/model-switch.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/model-switch.js +9 -6
- package/lib/types/dsh-adapter/channel/preferences.d.ts +1 -1
- package/lib/types/dsh-adapter/channel/preferences.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/preferences.js +16 -0
- package/lib/types/dsh-adapter/channel/projection.d.ts +16 -13
- package/lib/types/dsh-adapter/channel/projection.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/projection.js +38 -1143
- package/lib/types/dsh-adapter/channel/question-record.d.ts +3 -75
- package/lib/types/dsh-adapter/channel/question-record.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/question-record.js +3 -107
- package/lib/types/dsh-adapter/channel/session-activity.d.ts +9 -0
- package/lib/types/dsh-adapter/channel/session-activity.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/session-activity.js +42 -0
- package/lib/types/dsh-adapter/channel/session-adoption.d.ts +4 -4
- package/lib/types/dsh-adapter/channel/session-adoption.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/session-adoption.js +3 -1
- package/lib/types/dsh-adapter/channel/session-fork.d.ts +1 -1
- package/lib/types/dsh-adapter/channel/session-fork.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/session-fork.js +2 -1
- package/lib/types/dsh-adapter/channel/session-live-adoption.d.ts +7 -3
- package/lib/types/dsh-adapter/channel/session-live-adoption.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/session-live-adoption.js +1 -1
- package/lib/types/dsh-adapter/channel/session-metadata.d.ts +2 -9
- package/lib/types/dsh-adapter/channel/session-metadata.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/session-reset.d.ts +1 -1
- package/lib/types/dsh-adapter/channel/session-reset.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/session-reset.js +4 -0
- package/lib/types/dsh-adapter/channel/session-resume.d.ts +5 -10
- package/lib/types/dsh-adapter/channel/session-resume.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/session-resume.js +74 -113
- package/lib/types/dsh-adapter/channel/session-rewind.d.ts +4 -4
- package/lib/types/dsh-adapter/channel/session-rewind.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/session-rewind.js +7 -6
- package/lib/types/dsh-adapter/channel/session-tree-actions.d.ts +4 -4
- package/lib/types/dsh-adapter/channel/session-tree-actions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/session-tree-actions.js +8 -7
- package/lib/types/dsh-adapter/channel/settings-host.d.ts +1 -1
- package/lib/types/dsh-adapter/channel/settings-host.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/settings-host.js +8 -0
- package/lib/types/dsh-adapter/channel/skill-catalog.d.ts +5 -1
- package/lib/types/dsh-adapter/channel/skill-catalog.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/skill-catalog.js +2 -2
- package/lib/types/dsh-adapter/channel/state.d.ts +72 -1
- package/lib/types/dsh-adapter/channel/state.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/state.js +7 -3
- package/lib/types/dsh-adapter/channel/subagent-projection.d.ts +58 -3
- package/lib/types/dsh-adapter/channel/subagent-projection.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/subagent-projection.js +153 -9
- package/lib/types/dsh-adapter/channel/subagent-transcript.d.ts +114 -0
- package/lib/types/dsh-adapter/channel/subagent-transcript.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/subagent-transcript.js +279 -0
- package/lib/types/dsh-adapter/channel/transcript.d.ts +7 -15
- package/lib/types/dsh-adapter/channel/transcript.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/transcript.js +17 -21
- package/lib/types/dsh-adapter/channel/types.d.ts +16 -7
- package/lib/types/dsh-adapter/channel/types.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/usage.d.ts +3 -23
- package/lib/types/dsh-adapter/channel/usage.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/usage.js +5 -111
- package/lib/types/dsh-adapter/channel/workspace-actions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel/workspace-actions.js +2 -1
- package/lib/types/dsh-adapter/channel.d.ts +17 -8
- package/lib/types/dsh-adapter/channel.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel.js +24 -1059
- package/lib/types/dsh-adapter/context-occupancy.d.ts +6 -1
- package/lib/types/dsh-adapter/context-occupancy.d.ts.map +1 -1
- package/lib/types/dsh-adapter/context-occupancy.js +6 -1
- package/lib/types/dsh-adapter/decision-guard.d.ts +24 -0
- package/lib/types/dsh-adapter/decision-guard.d.ts.map +1 -1
- package/lib/types/dsh-adapter/decision-guard.js +44 -0
- package/lib/types/dsh-adapter/extension-events.d.ts +4 -1
- package/lib/types/dsh-adapter/extension-events.d.ts.map +1 -1
- package/lib/types/dsh-adapter/extension-events.js +22 -10
- package/lib/types/dsh-adapter/index.d.ts +41 -3
- package/lib/types/dsh-adapter/index.d.ts.map +1 -1
- package/lib/types/dsh-adapter/index.js +28 -1
- package/lib/types/dsh-adapter/jobs.d.ts +5 -3
- package/lib/types/dsh-adapter/jobs.d.ts.map +1 -1
- package/lib/types/dsh-adapter/jobs.js +53 -14
- package/lib/types/dsh-adapter/migrate/parse/jsonl.d.ts +1 -16
- package/lib/types/dsh-adapter/migrate/parse/jsonl.d.ts.map +1 -1
- package/lib/types/dsh-adapter/migrate/parse/jsonl.js +3 -29
- package/lib/types/dsh-adapter/oauth-credential-source.d.ts +34 -0
- package/lib/types/dsh-adapter/oauth-credential-source.d.ts.map +1 -0
- package/lib/types/dsh-adapter/oauth-credential-source.js +66 -0
- package/lib/types/dsh-adapter/plugin.d.ts +38 -2
- package/lib/types/dsh-adapter/plugin.d.ts.map +1 -1
- package/lib/types/dsh-adapter/plugin.js +546 -110
- package/lib/types/dsh-adapter/provider-model-capabilities.d.ts +10 -0
- package/lib/types/dsh-adapter/provider-model-capabilities.d.ts.map +1 -0
- package/lib/types/dsh-adapter/provider-model-capabilities.js +80 -0
- package/lib/types/dsh-adapter/providerWizard.d.ts +8 -2
- package/lib/types/dsh-adapter/providerWizard.d.ts.map +1 -1
- package/lib/types/dsh-adapter/providerWizard.js +118 -52
- package/lib/types/dsh-adapter/questions.d.ts +29 -124
- package/lib/types/dsh-adapter/questions.d.ts.map +1 -1
- package/lib/types/dsh-adapter/questions.js +33 -267
- package/lib/types/dsh-adapter/recap.d.ts +3 -15
- package/lib/types/dsh-adapter/recap.d.ts.map +1 -1
- package/lib/types/dsh-adapter/recap.js +3 -46
- package/lib/types/dsh-adapter/sanitize.d.ts +4 -44
- package/lib/types/dsh-adapter/sanitize.d.ts.map +1 -1
- package/lib/types/dsh-adapter/sanitize.js +4 -84
- package/lib/types/dsh-adapter/session-mount-heartbeat.d.ts +3 -1
- package/lib/types/dsh-adapter/session-mount-heartbeat.d.ts.map +1 -1
- package/lib/types/dsh-adapter/session-mount-heartbeat.js +4 -2
- package/lib/types/dsh-adapter/sessions/digest.d.ts +18 -3
- package/lib/types/dsh-adapter/sessions/digest.d.ts.map +1 -1
- package/lib/types/dsh-adapter/sessions/digest.js +60 -27
- package/lib/types/dsh-adapter/sessions/list.d.ts.map +1 -1
- package/lib/types/dsh-adapter/sessions/list.js +6 -4
- package/lib/types/dsh-adapter/sessions/recovery.d.ts +2 -2
- package/lib/types/dsh-adapter/sessions/recovery.d.ts.map +1 -1
- package/lib/types/dsh-adapter/sessions/recovery.js +23 -14
- package/lib/types/dsh-adapter/sessions/store.d.ts +2 -0
- package/lib/types/dsh-adapter/sessions/store.d.ts.map +1 -1
- package/lib/types/dsh-adapter/sessions/store.js +1 -0
- package/lib/types/dsh-adapter/sessions/types.d.ts +2 -0
- package/lib/types/dsh-adapter/sessions/types.d.ts.map +1 -1
- package/lib/types/dsh-adapter/sideQuestion.d.ts.map +1 -1
- package/lib/types/dsh-adapter/sideQuestion.js +3 -13
- package/lib/types/dsh-adapter/subagents.d.ts.map +1 -1
- package/lib/types/dsh-adapter/subagents.js +7 -0
- package/lib/types/dsh-adapter/themes.d.ts +1 -1
- package/lib/types/dsh-adapter/themes.d.ts.map +1 -1
- package/lib/types/dsh-adapter/trajectory/agent-source.d.ts +84 -0
- package/lib/types/dsh-adapter/trajectory/agent-source.d.ts.map +1 -0
- package/lib/types/dsh-adapter/trajectory/agent-source.js +601 -0
- package/lib/types/dsh-adapter/trajectory/guards.d.ts +31 -1
- package/lib/types/dsh-adapter/trajectory/guards.d.ts.map +1 -1
- package/lib/types/dsh-adapter/trajectory/guards.js +28 -0
- package/lib/types/dsh-adapter/trajectory/index.d.ts +3 -1
- package/lib/types/dsh-adapter/trajectory/index.d.ts.map +1 -1
- package/lib/types/dsh-adapter/trajectory/index.js +1 -0
- package/lib/types/dsh-adapter/trajectory/inspect.d.ts +7 -0
- package/lib/types/dsh-adapter/trajectory/inspect.d.ts.map +1 -1
- package/lib/types/dsh-adapter/trajectory/inspect.js +70 -2
- package/lib/types/dsh-adapter/trajectory/projection.d.ts +4 -0
- package/lib/types/dsh-adapter/trajectory/projection.d.ts.map +1 -1
- package/lib/types/dsh-adapter/trajectory/projection.js +36 -0
- package/lib/types/dsh-adapter/trajectory/types.d.ts +13 -0
- package/lib/types/dsh-adapter/trajectory/types.d.ts.map +1 -1
- package/lib/types/effortPrefs.d.ts +7 -0
- package/lib/types/effortPrefs.d.ts.map +1 -1
- package/lib/types/effortPrefs.js +11 -2
- package/lib/types/handoffAck.d.ts +57 -0
- package/lib/types/handoffAck.d.ts.map +1 -0
- package/lib/types/handoffAck.js +154 -0
- package/lib/types/handoffEvents.d.ts +52 -0
- package/lib/types/handoffEvents.d.ts.map +1 -0
- package/lib/types/handoffEvents.js +128 -0
- package/lib/types/i18n.d.ts +3189 -68
- package/lib/types/i18n.d.ts.map +1 -1
- package/lib/types/i18n.js +855 -9
- package/lib/types/ink/colorize.d.ts.map +1 -1
- package/lib/types/ink/colorize.js +8 -2
- package/lib/types/ink/components/AlternateScreen.d.ts +12 -1
- package/lib/types/ink/components/AlternateScreen.d.ts.map +1 -1
- package/lib/types/ink/components/AlternateScreen.js +25 -4
- package/lib/types/ink/components/App.d.ts +5 -1
- package/lib/types/ink/components/App.d.ts.map +1 -1
- package/lib/types/ink/components/App.js +52 -5
- package/lib/types/ink/components/Image.d.ts +8 -1
- package/lib/types/ink/components/Image.d.ts.map +1 -1
- package/lib/types/ink/components/Image.js +2 -2
- package/lib/types/ink/components/Text.d.ts +8 -1
- package/lib/types/ink/components/Text.d.ts.map +1 -1
- package/lib/types/ink/components/Text.js +11 -1
- package/lib/types/ink/dom.d.ts.map +1 -1
- package/lib/types/ink/dom.js +75 -3
- package/lib/types/ink/hooks/use-input.d.ts.map +1 -1
- package/lib/types/ink/hooks/use-input.js +9 -4
- package/lib/types/ink/ink.d.ts.map +1 -1
- package/lib/types/ink/ink.js +8 -2
- package/lib/types/ink/kitty-graphics.d.ts +7 -2
- package/lib/types/ink/kitty-graphics.d.ts.map +1 -1
- package/lib/types/ink/kitty-graphics.js +15 -7
- package/lib/types/ink/node-cache.d.ts +15 -1
- package/lib/types/ink/node-cache.d.ts.map +1 -1
- package/lib/types/ink/node-cache.js +4 -1
- package/lib/types/ink/output.d.ts.map +1 -1
- package/lib/types/ink/output.js +2 -0
- package/lib/types/ink/parse-keypress.d.ts +13 -0
- package/lib/types/ink/parse-keypress.d.ts.map +1 -1
- package/lib/types/ink/parse-keypress.js +438 -19
- package/lib/types/ink/reconciler.d.ts.map +1 -1
- package/lib/types/ink/reconciler.js +9 -0
- package/lib/types/ink/render-node-to-output.d.ts.map +1 -1
- package/lib/types/ink/render-node-to-output.js +200 -4
- package/lib/types/ink/render-stats.d.ts +35 -0
- package/lib/types/ink/render-stats.d.ts.map +1 -0
- package/lib/types/ink/render-stats.js +53 -0
- package/lib/types/ink/sixel-codec.d.ts +11 -1
- package/lib/types/ink/sixel-codec.d.ts.map +1 -1
- package/lib/types/ink/sixel-codec.js +10 -3
- package/lib/types/ink/sixel-graphics.js +2 -2
- package/lib/types/ink/styles.d.ts +46 -0
- package/lib/types/ink/styles.d.ts.map +1 -1
- package/lib/types/ink/terminal-image.d.ts +7 -0
- package/lib/types/ink/terminal-image.d.ts.map +1 -1
- package/lib/types/ink/terminal-querier.d.ts +1 -1
- package/lib/types/ink/terminal-querier.js +4 -4
- package/lib/types/ink/text-decoration.d.ts +49 -0
- package/lib/types/ink/text-decoration.d.ts.map +1 -0
- package/lib/types/ink/text-decoration.js +235 -0
- package/lib/types/ink/update-overflow-guard.d.ts +9 -0
- package/lib/types/ink/update-overflow-guard.d.ts.map +1 -1
- package/lib/types/ink/update-overflow-guard.js +41 -0
- package/lib/types/ink/wrap-text.d.ts.map +1 -1
- package/lib/types/ink/wrap-text.js +5 -1
- package/lib/types/kernelPrefs.d.ts +51 -0
- package/lib/types/kernelPrefs.d.ts.map +1 -0
- package/lib/types/kernelPrefs.js +126 -0
- package/lib/types/modelRecents.d.ts +10 -2
- package/lib/types/modelRecents.d.ts.map +1 -1
- package/lib/types/modelRecents.js +20 -7
- package/lib/types/screens/AgentTranscriptScene.d.ts +42 -0
- package/lib/types/screens/AgentTranscriptScene.d.ts.map +1 -0
- package/lib/types/screens/AgentTranscriptScene.js +269 -0
- package/lib/types/screens/Chat.d.ts +45 -7
- package/lib/types/screens/Chat.d.ts.map +1 -1
- package/lib/types/screens/Chat.js +625 -113
- package/lib/types/screens/Launchpad.d.ts +24 -7
- package/lib/types/screens/Launchpad.d.ts.map +1 -1
- package/lib/types/screens/Launchpad.js +147 -28
- package/lib/types/screens/SessionSupervisor.d.ts +3 -3
- package/lib/types/screens/SessionSupervisor.d.ts.map +1 -1
- package/lib/types/screens/SessionSupervisor.js +69 -5
- package/lib/types/screens/Settings.d.ts.map +1 -1
- package/lib/types/screens/Settings.js +211 -7
- package/lib/types/screens/StatusLine.d.ts +40 -1
- package/lib/types/screens/StatusLine.d.ts.map +1 -1
- package/lib/types/screens/StatusLine.js +131 -19
- package/lib/types/screens/StatusMetrics.d.ts +53 -17
- package/lib/types/screens/StatusMetrics.d.ts.map +1 -1
- package/lib/types/screens/StatusMetrics.js +141 -30
- package/lib/types/screens/TrajectoryScene.d.ts.map +1 -1
- package/lib/types/screens/TrajectoryScene.js +74 -12
- package/lib/types/screens/chat/backendCommands.d.ts +37 -0
- package/lib/types/screens/chat/backendCommands.d.ts.map +1 -0
- package/lib/types/screens/chat/backendCommands.js +51 -0
- package/lib/types/screens/chat/useBackendChannels.d.ts +20 -0
- package/lib/types/screens/chat/useBackendChannels.d.ts.map +1 -0
- package/lib/types/screens/chat/useBackendChannels.js +117 -0
- package/lib/types/screens/chat/useKernelPicker.d.ts +23 -0
- package/lib/types/screens/chat/useKernelPicker.d.ts.map +1 -0
- package/lib/types/screens/chat/useKernelPicker.js +72 -0
- package/lib/types/screens/chatOverlay.d.ts +32 -2
- package/lib/types/screens/chatOverlay.d.ts.map +1 -1
- package/lib/types/screens/chatOverlay.js +9 -0
- package/lib/types/screens/sessionSupervisor/useForeignSessions.d.ts.map +1 -1
- package/lib/types/screens/sessionSupervisor/useForeignSessions.js +5 -1
- package/lib/types/screens/sessionSupervisor/useSessionSupervisor.d.ts +14 -0
- package/lib/types/screens/sessionSupervisor/useSessionSupervisor.d.ts.map +1 -1
- package/lib/types/screens/sessionSupervisor/useSessionSupervisor.js +97 -22
- package/lib/types/sessionHistory.d.ts +18 -1
- package/lib/types/sessionHistory.d.ts.map +1 -1
- package/lib/types/sessionHistory.js +46 -4
- package/lib/types/sessionPins.d.ts +7 -0
- package/lib/types/sessionPins.d.ts.map +1 -1
- package/lib/types/sessionPins.js +9 -0
- package/lib/types/sessions/resumeFailure.d.ts.map +1 -1
- package/lib/types/sessions/resumeFailure.js +2 -1
- package/lib/types/settings/definitions.d.ts +74 -0
- package/lib/types/settings/definitions.d.ts.map +1 -1
- package/lib/types/settings/definitions.js +50 -4
- package/lib/types/terminal-utils/hyperlink.d.ts +2 -2
- package/lib/types/terminal-utils/hyperlink.d.ts.map +1 -1
- package/lib/types/terminal-utils/hyperlink.js +21 -4
- package/lib/types/terminal-utils/markdown.d.ts +34 -6
- package/lib/types/terminal-utils/markdown.d.ts.map +1 -1
- package/lib/types/terminal-utils/markdown.js +257 -66
- package/lib/types/theme.d.ts +49 -8
- package/lib/types/theme.d.ts.map +1 -1
- package/lib/types/theme.js +514 -18
- package/lib/types/tips.js +2 -2
- package/lib/types/trajectory/effortIgnition.d.ts +25 -7
- package/lib/types/trajectory/effortIgnition.d.ts.map +1 -1
- package/lib/types/trajectory/effortIgnition.js +106 -34
- package/lib/types/trajectory/window.d.ts +26 -0
- package/lib/types/trajectory/window.d.ts.map +1 -0
- package/lib/types/trajectory/window.js +27 -0
- package/lib/types/tuiDisplayPrefs.d.ts +38 -1
- package/lib/types/tuiDisplayPrefs.d.ts.map +1 -1
- package/lib/types/tuiDisplayPrefs.js +45 -1
- package/lib/types/update.d.ts +88 -3
- package/lib/types/update.d.ts.map +1 -1
- package/lib/types/update.js +285 -18
- package/lib/types/utils/crashDetail.d.ts +56 -0
- package/lib/types/utils/crashDetail.d.ts.map +1 -0
- package/lib/types/utils/crashDetail.js +175 -0
- package/lib/types/utils/imageResize.d.ts +9 -23
- package/lib/types/utils/imageResize.d.ts.map +1 -1
- package/lib/types/utils/imageResize.js +24 -20
- package/lib/types/utils/inputPaste.d.ts +9 -8
- package/lib/types/utils/inputPaste.d.ts.map +1 -1
- package/lib/types/utils/inputPaste.js +53 -16
- package/lib/types/utils/jsonl.d.ts +24 -0
- package/lib/types/utils/jsonl.d.ts.map +1 -0
- package/lib/types/utils/jsonl.js +36 -0
- package/package.json +18 -2
|
@@ -94,16 +94,26 @@ const WHALE_GIRL_KEY_ANIMATION = {
|
|
|
94
94
|
'idle-spout': 'smile-hearts',
|
|
95
95
|
'happy': 'thumbs-up',
|
|
96
96
|
};
|
|
97
|
-
/**
|
|
98
|
-
*
|
|
99
|
-
*
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
97
|
+
/** 鲸娘动画键裁决(字母格与图像两条路径共用):semanticMap 映射 >
|
|
98
|
+
* 爱心 pass > 心情层,与 whaleGirlAnimationKey 的优先级一致。每个候选
|
|
99
|
+
* 都要过 hasKey(在素材包里、没解码失败过),不过就沿链往下:semantic
|
|
100
|
+
* → heart → mood → idle;全部不可用返回 undefined,由调用方退字母格
|
|
101
|
+
* 或保持上一帧。导出供回归直接测这条链。 */
|
|
102
|
+
export function resolveWhaleGirlAnimationKey(pose, animationSemantic, hasKey) {
|
|
103
|
+
if (animationSemantic !== undefined) {
|
|
104
|
+
const semanticKey = WHALE_GIRL_KEY_ANIMATION[animationSemantic] ?? animationSemantic;
|
|
105
|
+
if (hasKey(semanticKey))
|
|
106
|
+
return semanticKey;
|
|
107
|
+
}
|
|
108
|
+
if (pose.heart > 0 && hasKey('smile-hearts'))
|
|
109
|
+
return 'smile-hearts';
|
|
110
|
+
const moodKey = WHALE_GIRL_MOOD_ANIMATION[pose.mood] ?? 'idle';
|
|
111
|
+
if (hasKey(moodKey))
|
|
112
|
+
return moodKey;
|
|
113
|
+
const idleKey = WHALE_GIRL_MOOD_ANIMATION.idle;
|
|
114
|
+
if (hasKey(idleKey))
|
|
115
|
+
return idleKey;
|
|
116
|
+
return undefined;
|
|
107
117
|
}
|
|
108
118
|
/** 字母轨开窗(2026-10 空气墙修复配套):42 格帧串的全部美术落在
|
|
109
119
|
* [5,35] 共 31 列(实测 267 帧,两侧是构建 contain 的透明衬垫 '.')——
|
|
@@ -131,7 +141,11 @@ function renderWhaleGirlLetterGrid(input) {
|
|
|
131
141
|
const kit = loadWhaleGirlKit();
|
|
132
142
|
if (kit === undefined)
|
|
133
143
|
return DeepySkin.render({ ...input, width: WHALE_GIRL_CELLS.columns });
|
|
144
|
+
// 字母轨只要求 kit 里有这个动画;一个都没有时退 DeepySkin,与缺帧
|
|
145
|
+
// 回退同一出口。
|
|
134
146
|
const animationKey = resolveWhaleGirlAnimationKey(pose, animationSemantic, key => kit.byKey[key] !== undefined);
|
|
147
|
+
if (animationKey === undefined)
|
|
148
|
+
return DeepySkin.render({ ...input, width: WHALE_GIRL_CELLS.columns });
|
|
135
149
|
const rendered = renderedWhaleGirlWindowRows(kit, animationKey);
|
|
136
150
|
const animation = kit.byKey[animationKey];
|
|
137
151
|
if (rendered === undefined || animation === undefined) {
|
|
@@ -222,11 +236,37 @@ export function whaleGirlImageFrameIndexAt(animation, elapsedMs) {
|
|
|
222
236
|
return animation.frames.length - 1;
|
|
223
237
|
}
|
|
224
238
|
/** 已解码动画的 LRU(Map 迭代序 = 最近使用序);失败集合防止坏动画
|
|
225
|
-
* 每帧重试。字节上限防 267 帧全量常驻(全解约
|
|
239
|
+
* 每帧重试。字节上限防 267 帧全量常驻(全解约 92.6MB RGBA)。
|
|
240
|
+
* 提交后的使用经 touchDecodedAnimation 刷新迭代序;写入和驱逐会发布
|
|
241
|
+
* revision,消费者订阅后能发现自己的键被挤出并重新解码。 */
|
|
226
242
|
const decodedImageAnimations = new Map();
|
|
227
243
|
const failedImageAnimations = new Set();
|
|
228
244
|
let decodedImageBytes = 0;
|
|
229
245
|
const DECODED_IMAGE_BYTES_CAP = 32 * 1024 * 1024;
|
|
246
|
+
/** 缓存写入/驱逐的版本号。快照是原始 number,Object.is 比较稳定。
|
|
247
|
+
* touch 只改迭代序、不发布:它在 commit 后运行,发布会让每次 commit
|
|
248
|
+
* 再触发一次渲染。 */
|
|
249
|
+
let decodedImageCacheRevision = 0;
|
|
250
|
+
const decodedImageCacheListeners = new Set();
|
|
251
|
+
function publishDecodedImageCacheChange() {
|
|
252
|
+
decodedImageCacheRevision += 1;
|
|
253
|
+
for (const listener of [...decodedImageCacheListeners])
|
|
254
|
+
listener();
|
|
255
|
+
}
|
|
256
|
+
/** 订阅缓存写入/驱逐(uSES 的 subscribe 面;回归直接用它观测 revision)。 */
|
|
257
|
+
export function subscribeDecodedImageCache(listener) {
|
|
258
|
+
decodedImageCacheListeners.add(listener);
|
|
259
|
+
return () => { decodedImageCacheListeners.delete(listener); };
|
|
260
|
+
}
|
|
261
|
+
/** 把命中的键移到最近使用位。只改迭代序,不动键集和字节数,所以不
|
|
262
|
+
* 发布 revision。只在 commit 后的 effect 里调用;键不在缓存时 no-op。 */
|
|
263
|
+
function touchDecodedAnimation(key) {
|
|
264
|
+
const frames = decodedImageAnimations.get(key);
|
|
265
|
+
if (frames === undefined)
|
|
266
|
+
return;
|
|
267
|
+
decodedImageAnimations.delete(key);
|
|
268
|
+
decodedImageAnimations.set(key, frames);
|
|
269
|
+
}
|
|
230
270
|
/** 解码一个动画的全部帧(顺序、确定性);任一帧失败 → 整个动画 undefined。 */
|
|
231
271
|
async function decodeWhaleGirlAnimation(dir, animation) {
|
|
232
272
|
try {
|
|
@@ -270,24 +310,103 @@ function rememberDecodedAnimation(key, frames) {
|
|
|
270
310
|
decodedImageAnimations.delete(oldest);
|
|
271
311
|
decodedImageBytes -= evicted?.reduce((sum, frame) => sum + frame.data.byteLength, 0) ?? 0;
|
|
272
312
|
}
|
|
313
|
+
// 插入、替换、驱逐都改变了消费者可见的内容:发布 revision,让键被
|
|
314
|
+
// 挤出的消费者重跑解码 effect。
|
|
315
|
+
publishDecodedImageCacheChange();
|
|
316
|
+
}
|
|
317
|
+
/** 预热键集:面板可见且动画时钟在走时,把常用互动键(idle + poke
|
|
318
|
+
* 左/右 + smile-hearts)提前异步解码进 LRU,换键时少等一次解码。
|
|
319
|
+
* 导出供回归检查。 */
|
|
320
|
+
export const WHALE_GIRL_PREHEAT_KEYS = [
|
|
321
|
+
WHALE_GIRL_MOOD_ANIMATION.idle,
|
|
322
|
+
'poke-left',
|
|
323
|
+
'poke-right',
|
|
324
|
+
'smile-hearts',
|
|
325
|
+
];
|
|
326
|
+
/** 在途解码登记(同键去重:活跃解码路径与预热共用一个 Promise)。 */
|
|
327
|
+
const inflightImageDecodes = new Map();
|
|
328
|
+
/** 解码发起次数,只在新建在途 Promise 时递增。回归用它检查失败键不
|
|
329
|
+
* 按 tick 重试、同键并发只解一次、驱逐后的恢复有界。 */
|
|
330
|
+
let whaleGirlDecodeRequestCount = 0;
|
|
331
|
+
/** 测试重置时递增:重置前发起、重置后才完成的解码不得写进新缓存。 */
|
|
332
|
+
let decodeGeneration = 0;
|
|
333
|
+
/** 解码一个动画并入库:成功进 LRU,失败进失败集(之后的裁决会跳过
|
|
334
|
+
* 这个键);同键并发请求共用在途 Promise。永不 reject,也不直接触发
|
|
335
|
+
* React 更新。 */
|
|
336
|
+
function requestWhaleGirlAnimationFrames(kit, key) {
|
|
337
|
+
const inflight = inflightImageDecodes.get(key);
|
|
338
|
+
if (inflight !== undefined)
|
|
339
|
+
return inflight;
|
|
340
|
+
whaleGirlDecodeRequestCount += 1;
|
|
341
|
+
const generation = decodeGeneration;
|
|
342
|
+
const pending = decodeWhaleGirlAnimation(kit.dir, kit.byKey[key])
|
|
343
|
+
.then(frames => {
|
|
344
|
+
if (generation !== decodeGeneration)
|
|
345
|
+
return frames;
|
|
346
|
+
inflightImageDecodes.delete(key);
|
|
347
|
+
if (frames === undefined)
|
|
348
|
+
failedImageAnimations.add(key);
|
|
349
|
+
else
|
|
350
|
+
rememberDecodedAnimation(key, frames);
|
|
351
|
+
return frames;
|
|
352
|
+
})
|
|
353
|
+
.catch(() => {
|
|
354
|
+
if (generation !== decodeGeneration)
|
|
355
|
+
return undefined;
|
|
356
|
+
inflightImageDecodes.delete(key);
|
|
357
|
+
failedImageAnimations.add(key);
|
|
358
|
+
return undefined;
|
|
359
|
+
});
|
|
360
|
+
inflightImageDecodes.set(key, pending);
|
|
361
|
+
return pending;
|
|
362
|
+
}
|
|
363
|
+
/** 预热一个键(幂等:缺键/已缓存/已失败跳过);失败静默——与按需解码
|
|
364
|
+
* 同语义地进失败集,不闪不响。 */
|
|
365
|
+
function preheatWhaleGirlAnimation(kit, key) {
|
|
366
|
+
if (kit.byKey[key] === undefined)
|
|
367
|
+
return;
|
|
368
|
+
if (decodedImageAnimations.has(key) || failedImageAnimations.has(key))
|
|
369
|
+
return;
|
|
370
|
+
void requestWhaleGirlAnimationFrames(kit, key);
|
|
273
371
|
}
|
|
274
372
|
/** 测试观测点:当前进程已解码了哪些动画(惰性解码断言用)。 */
|
|
275
373
|
export function whaleGirlDecodedAnimationKeys() {
|
|
276
374
|
return [...decodedImageAnimations.keys(), ...failedImageAnimations];
|
|
277
375
|
}
|
|
376
|
+
/** 测试接缝:LRU 迭代序(= 最近使用序)。 */
|
|
377
|
+
export function decodedImageAnimationOrderForTests() {
|
|
378
|
+
return [...decodedImageAnimations.keys()];
|
|
379
|
+
}
|
|
380
|
+
/** 测试接缝:注入假帧,制造 32MiB 驱逐压力(不触发真实解码)。 */
|
|
381
|
+
export function injectDecodedAnimationForTests(key, frames) {
|
|
382
|
+
rememberDecodedAnimation(key, frames);
|
|
383
|
+
}
|
|
384
|
+
/** 测试观测点:解码发起总次数。 */
|
|
385
|
+
export function whaleGirlDecodeRequestCountForTests() {
|
|
386
|
+
return whaleGirlDecodeRequestCount;
|
|
387
|
+
}
|
|
388
|
+
/** 测试接缝:登记解码失败键(模拟坏 PNG,不动真实资产)。 */
|
|
389
|
+
export function injectFailedAnimationForTests(key) {
|
|
390
|
+
failedImageAnimations.add(key);
|
|
391
|
+
}
|
|
278
392
|
/** 测试接缝:清图像层缓存(timings kit + 已解码动画 + 失败集合 + 字母开窗渲染)。 */
|
|
279
393
|
export function resetWhaleGirlImageCacheForTests() {
|
|
280
394
|
whaleGirlImageKitCache = undefined;
|
|
281
395
|
decodedImageAnimations.clear();
|
|
282
396
|
failedImageAnimations.clear();
|
|
283
397
|
decodedImageBytes = 0;
|
|
398
|
+
inflightImageDecodes.clear();
|
|
399
|
+
decodeGeneration += 1;
|
|
284
400
|
whaleGirlWindowCache.clear();
|
|
401
|
+
whaleGirlDecodeRequestCount = 0;
|
|
402
|
+
publishDecodedImageCacheChange();
|
|
285
403
|
}
|
|
286
404
|
/** 面板可见性门(visible=false 零工作契约):PanelHost 对非 active 的
|
|
287
405
|
* enabled 面板包 display:none 的 Box——沿 DOM 祖先链查它。初始 false,
|
|
288
406
|
* 布局期更新(不触发额外渲染循环),解码 effect 只在证明可见后开跑。 */
|
|
289
407
|
function useBoxDisplayed() {
|
|
290
408
|
const elementRef = React.useRef(null);
|
|
409
|
+
const displayedRef = React.useRef(false);
|
|
291
410
|
const [displayed, setDisplayed] = React.useState(false);
|
|
292
411
|
const setElement = React.useCallback((element) => { elementRef.current = element; }, []);
|
|
293
412
|
React.useLayoutEffect(() => {
|
|
@@ -298,33 +417,47 @@ function useBoxDisplayed() {
|
|
|
298
417
|
hidden = true;
|
|
299
418
|
node = node.parentNode;
|
|
300
419
|
}
|
|
301
|
-
|
|
420
|
+
// 只在值真的变化时 setState。这个无 deps 的 layout effect 每次
|
|
421
|
+
// commit 都跑;即使更新器返回原值,enqueue 本身也会计入
|
|
422
|
+
// react-reconciler 的 nestedUpdateCount,遇上连续提交(如 /context
|
|
423
|
+
// 滚动)会攒到 50 并抛 #185。用 ref 记住上次的值,稳态不入队。
|
|
424
|
+
const next = !hidden;
|
|
425
|
+
if (displayedRef.current !== next) {
|
|
426
|
+
displayedRef.current = next;
|
|
427
|
+
setDisplayed(next);
|
|
428
|
+
}
|
|
302
429
|
});
|
|
303
430
|
return [setElement, displayed];
|
|
304
431
|
}
|
|
305
432
|
/** 鲸娘图像路径的帧缓存 hook:activeKey 为 undefined(面板不可见/无
|
|
306
|
-
* 动画)时不做任何事;命中缓存同步返回,未命中异步解码完成后返回。
|
|
307
|
-
|
|
433
|
+
* 动画)时不做任何事;命中缓存同步返回,未命中异步解码完成后返回。
|
|
434
|
+
* 缓存 revision 是解码 effect 的依赖:键没变但被预热或别的实例挤出
|
|
435
|
+
* 缓存时,effect 重跑并重新解码。每次 commit 后刷新当前键的 LRU 位置。
|
|
436
|
+
* 导出供回归在真渲染器下测试。 */
|
|
437
|
+
export function useDecodedWhaleGirlFrames(activeKey, kit) {
|
|
308
438
|
const [settled, setSettled] = React.useState(undefined);
|
|
439
|
+
// 只在缓存写入/驱逐时变化(解码完成或测试注入),稳态不触发渲染。
|
|
440
|
+
const cacheRevision = React.useSyncExternalStore(subscribeDecodedImageCache, () => decodedImageCacheRevision);
|
|
309
441
|
React.useEffect(() => {
|
|
310
442
|
if (activeKey === undefined || kit === undefined)
|
|
311
443
|
return;
|
|
312
444
|
if (!decodedImageAnimations.has(activeKey) && !failedImageAnimations.has(activeKey)) {
|
|
313
445
|
let live = true;
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
rememberDecodedAnimation(activeKey, frames);
|
|
320
|
-
if (live)
|
|
321
|
-
setSettled({ key: activeKey, frames });
|
|
322
|
-
}
|
|
446
|
+
// 与预热共用在途解码;组件已换键或卸载时不 setSettled(预热先完成
|
|
447
|
+
// 的话,revision 通知触发的渲染会直接命中缓存)。
|
|
448
|
+
void requestWhaleGirlAnimationFrames(kit, activeKey).then(frames => {
|
|
449
|
+
if (live && frames !== undefined)
|
|
450
|
+
setSettled({ key: activeKey, frames });
|
|
323
451
|
});
|
|
324
452
|
return () => { live = false; };
|
|
325
453
|
}
|
|
326
454
|
return;
|
|
327
|
-
}, [activeKey, kit]);
|
|
455
|
+
}, [activeKey, kit, cacheRevision]);
|
|
456
|
+
// 每次 commit 刷新当前键的 LRU 位置;键不在缓存或为 undefined 时 no-op。
|
|
457
|
+
React.useLayoutEffect(() => {
|
|
458
|
+
if (activeKey !== undefined)
|
|
459
|
+
touchDecodedAnimation(activeKey);
|
|
460
|
+
});
|
|
328
461
|
const cached = activeKey !== undefined ? decodedImageAnimations.get(activeKey) : undefined;
|
|
329
462
|
if (cached !== undefined)
|
|
330
463
|
return cached;
|
|
@@ -339,23 +472,61 @@ function WhaleGirlImageSkin(input) {
|
|
|
339
472
|
return renderWhaleGirlLetterGrid(input);
|
|
340
473
|
return _jsx(WhaleGirlRasterSkin, { ...input });
|
|
341
474
|
}
|
|
475
|
+
/** 保持上一帧的 hook:render 把本次候选图像交进来,没有候选时返回上一
|
|
476
|
+
* 次已提交的图像。「上一帧」和「是否显示过」只在 commit 后的 layout
|
|
477
|
+
* effect 里写,被放弃的 concurrent render 不会改动它们。保持期间返回
|
|
478
|
+
* 同一个元素引用,逐 tick 重渲染不会重画子树。返回 [要显示的节点,
|
|
479
|
+
* 是否显示过];节点为 undefined 表示从未显示过(调用方画字母格)。
|
|
480
|
+
* 导出供回归在 ConcurrentRoot 下测试。 */
|
|
481
|
+
export function useHeldCommittedImage(candidate) {
|
|
482
|
+
const everCommittedRef = React.useRef(false);
|
|
483
|
+
const heldCommittedRef = React.useRef(undefined);
|
|
484
|
+
React.useLayoutEffect(() => {
|
|
485
|
+
if (candidate === undefined)
|
|
486
|
+
return;
|
|
487
|
+
heldCommittedRef.current = candidate;
|
|
488
|
+
everCommittedRef.current = true;
|
|
489
|
+
});
|
|
490
|
+
if (candidate !== undefined)
|
|
491
|
+
return [candidate, everCommittedRef.current];
|
|
492
|
+
if (!everCommittedRef.current)
|
|
493
|
+
return [undefined, false];
|
|
494
|
+
return [heldCommittedRef.current, true];
|
|
495
|
+
}
|
|
342
496
|
/** 图像渲染层:timings 选帧 + 惰性解码 + 单元格盒(15 行预算、宽按
|
|
343
|
-
* 帧比例钳
|
|
497
|
+
* 帧比例钳 31 列)。解码期间保持上一帧;字母格只在冷启动时出现;常用
|
|
498
|
+
* 互动键在可见后预热。保持和预热都只看已提交的 render。 */
|
|
344
499
|
function WhaleGirlRasterSkin(input) {
|
|
345
500
|
const { pose, moodSince, now, animationSemantic } = input;
|
|
346
501
|
const cellSize = useTerminalImageCellSize();
|
|
347
502
|
const imageKit = loadWhaleGirlImageKit();
|
|
348
503
|
const [boxRef, displayed] = useBoxDisplayed();
|
|
504
|
+
// 解码失败过的键不再被选中(退到心情层的键),失败的互动不会让画面
|
|
505
|
+
// 一直停在上一帧。
|
|
349
506
|
const animationKey = imageKit !== undefined
|
|
350
|
-
? resolveWhaleGirlAnimationKey(pose, animationSemantic, key => imageKit.byKey[key] !== undefined)
|
|
507
|
+
? resolveWhaleGirlAnimationKey(pose, animationSemantic, key => imageKit.byKey[key] !== undefined && !failedImageAnimations.has(key))
|
|
351
508
|
: undefined;
|
|
352
509
|
// visible=false 零工作:display:none 祖先链未排除前不解码、不订阅时钟。
|
|
353
510
|
const frames = useDecodedWhaleGirlFrames(displayed ? animationKey : undefined, imageKit);
|
|
354
511
|
const animation = animationKey !== undefined ? imageKit?.byKey[animationKey] : undefined;
|
|
512
|
+
// 预热:可见且动画时钟在走时,把常用互动键异步解码进 LRU(不挡首帧,
|
|
513
|
+
// 失败静默进失败集)。now 只在 commit 后的 effect 里与上次比较,被
|
|
514
|
+
// 放弃的 render 带来的 now 不算。时钟一直不动就是 active=false 的定格
|
|
515
|
+
// 态(SplashMascot 停在 idle 第 0 帧),不预热。
|
|
516
|
+
const lastNowRef = React.useRef(now);
|
|
517
|
+
React.useEffect(() => {
|
|
518
|
+
if (now === lastNowRef.current)
|
|
519
|
+
return;
|
|
520
|
+
lastNowRef.current = now;
|
|
521
|
+
if (!displayed || imageKit === undefined)
|
|
522
|
+
return;
|
|
523
|
+
for (const key of WHALE_GIRL_PREHEAT_KEYS)
|
|
524
|
+
preheatWhaleGirlAnimation(imageKit, key);
|
|
525
|
+
}, [now, displayed, imageKit]);
|
|
355
526
|
// 单元格盒:15 行预算 + 帧自身宽高比(source.width/height,与档位
|
|
356
|
-
// 无关)+ 真实像元;宽钳
|
|
527
|
+
// 无关)+ 真实像元;宽钳 31 列。8×16 像元下 288px 档
|
|
357
528
|
// (301×288)≈ 31 列,渲染层 fit 只降采样,显示恒 1:1 或更密。
|
|
358
|
-
// 外层盒恒定
|
|
529
|
+
// 外层盒恒定 31×15:ref 挂在它上面(可见性门要求任何分支都在树里),
|
|
359
530
|
// 字母格→图像切换时面板几何零跳动。
|
|
360
531
|
let image;
|
|
361
532
|
if (imageKit !== undefined && cellSize !== undefined && frames !== undefined && animation !== undefined) {
|
|
@@ -373,7 +544,10 @@ function WhaleGirlRasterSkin(input) {
|
|
|
373
544
|
image = (_jsx(Image, { transparent: true, source: source, width: columns, height: rows, alt: "", presentation: "transcript", children: _jsx(Text, { children: Array.from({ length: rows }, () => ' '.repeat(columns)).join('\n') }) }));
|
|
374
545
|
}
|
|
375
546
|
}
|
|
376
|
-
|
|
547
|
+
// 本次候选或上一帧;都没有(冷启动)时画字母格。切到还没解码的键时
|
|
548
|
+
// 保持上一帧,不闪回字母格。
|
|
549
|
+
const [visibleImage] = useHeldCommittedImage(image);
|
|
550
|
+
return (_jsx(Box, { ref: boxRef, flexDirection: "column", flexShrink: 0, alignItems: "center", justifyContent: "center", width: WHALE_GIRL_CELLS.columns, height: WHALE_GIRL_CELLS.rows, children: visibleImage !== undefined ? visibleImage : renderWhaleGirlLetterGrid(input) }));
|
|
377
551
|
}
|
|
378
552
|
const WHALE_CELLS = Object.freeze({ columns: 40, rows: 13 });
|
|
379
553
|
/** 现有像素鲸鱼:直接消费 nativeWhalePose(与开屏 splash 同一规划器、
|
|
@@ -15,8 +15,9 @@
|
|
|
15
15
|
* `normalizeSplashFont` 是唯一的归一化入口(非法值一律回落 `daily`)。面板选项
|
|
16
16
|
* 由注册表直接推(含中英标签),所以加一款字体不需要第二份清单。
|
|
17
17
|
*
|
|
18
|
-
*
|
|
19
|
-
* (`splashEggs.ts`
|
|
18
|
+
* 字形覆盖三层:正常词 `DEEPSEEK`/`HARNESS`、节日彩蛋词用到的 `I M Y W`
|
|
19
|
+
* (`splashEggs.ts` 的日期表)、以及 claude 品牌词 `CLAUDE`/`CODE` 用到的
|
|
20
|
+
* `C L U O`(`branding.ts` 的按内核换品牌)。
|
|
20
21
|
*/
|
|
21
22
|
import type { SplashFontId, SplashFontSetting } from '../adapter/ports/channel-display.js';
|
|
22
23
|
export type { SplashFontId, SplashFontSetting } from '../adapter/ports/channel-display.js';
|
|
@@ -47,9 +48,10 @@ export interface SplashFont {
|
|
|
47
48
|
readonly bottomIndent: number;
|
|
48
49
|
};
|
|
49
50
|
/**
|
|
50
|
-
*
|
|
51
|
-
*
|
|
52
|
-
*
|
|
51
|
+
* 可选:这款字体自己的起止配色(不给就由 `LogoV2` 按主题/品牌解析——
|
|
52
|
+
* 半立体款的金属明暗两档就是在那里随主题 accent 派生的)。内置款不再
|
|
53
|
+
* 静态设置;字段保留给运行时扩展(如 cc-bridge 类插件原地写 `palette`
|
|
54
|
+
* 接管两行渐变)。
|
|
53
55
|
*/
|
|
54
56
|
readonly palette?: {
|
|
55
57
|
readonly from: Rgb;
|
|
@@ -57,15 +59,21 @@ export interface SplashFont {
|
|
|
57
59
|
};
|
|
58
60
|
}
|
|
59
61
|
/**
|
|
60
|
-
*
|
|
61
|
-
*
|
|
62
|
-
*
|
|
62
|
+
* 换一副标题词(品牌词/节日彩蛋用):字形、字身宽度、id 都不变,只按新词
|
|
63
|
+
* 重解字距。布局阈值(`resolveSplashLayout`)与渲染都读字体自己的 `tagline`,
|
|
64
|
+
* 所以派生对象可以直接顶替原字体——窄终端阶梯一行都不用改。
|
|
63
65
|
* @param font - 基准字体。
|
|
64
66
|
* @param top - 上排词。
|
|
65
67
|
* @param bottom - 下排词。
|
|
68
|
+
* @param options - `wide`:取中间档可行解(等宽契约的舒展档);
|
|
69
|
+
* `uniform`:两行同字距(品牌词用——等宽契约靠两行字距互补达成,
|
|
70
|
+
* 字数差大的词对间隙观感不一致;同字距后对齐由渲染层按形态处理)。
|
|
66
71
|
* @returns 换词后的字体描述符。
|
|
67
72
|
*/
|
|
68
|
-
export declare function withTagline(font: SplashFont, top: string, bottom: string
|
|
73
|
+
export declare function withTagline(font: SplashFont, top: string, bottom: string, options?: {
|
|
74
|
+
readonly wide?: boolean;
|
|
75
|
+
readonly uniform?: boolean;
|
|
76
|
+
}): SplashFont;
|
|
69
77
|
/** 轮换池(渲染侧只读这一份;表的书写顺序即轮换顺序)。 */
|
|
70
78
|
export declare const SPLASH_FONTS: readonly SplashFont[];
|
|
71
79
|
/** 设置项 `dsh-tui.splashFont` 的默认值:按本地日期轮换。 */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"splashFonts.d.ts","sourceRoot":"","sources":["../../../src/components/splashFonts.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"splashFonts.d.ts","sourceRoot":"","sources":["../../../src/components/splashFonts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAA;AAK1F,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAA;AAE1F,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA;AAEvC,mBAAmB;AACnB,MAAM,MAAM,SAAS,GAAG,SAAS,MAAM,EAAE,CAAA;AACzC,oBAAoB;AACpB,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAA;AAE5D,gBAAgB;AAChB,MAAM,WAAW,UAAU;IACzB,gEAAgE;IAChE,QAAQ,CAAC,EAAE,EAAE,YAAY,CAAA;IACzB,kCAAkC;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,uCAAuC;IACvC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,eAAe;IACf,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAA;IAC3B,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAA;IAC5B,oBAAoB;IACpB,QAAQ,CAAC,OAAO,EAAE;QAChB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;QACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;QACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;QAC3B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;QAC9B,sCAAsC;QACtC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;KAC9B,CAAA;IACD;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC;QAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAA;KAAE,CAAA;CAC5D;AAmSD;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,UAAU,EAChB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAChE,UAAU,CAcZ;AAsBD,iCAAiC;AACjC,eAAO,MAAM,YAAY,EAAE,SAAS,UAAU,EAAqC,CAAA;AAEnF,6CAA6C;AAC7C,eAAO,MAAM,iBAAiB,UAAsC,CAAA;AAEpE;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,iBAAiB,CAG9E;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,iBAAiB,CAErE;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,GAAG,SAAS,CAE7E;AAED,yCAAyC;AACzC,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAA;IACjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,YAAY,EAAE;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAA;CAC/C;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,SAAS,gBAAgB,EAG1D,CAAA;AAED,mCAAmC;AACnC,eAAO,MAAM,mBAAmB,EAAsB,UAAU,CAAA;AAEhE;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,CAErD;AAKD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,GAAE,IAAiB,GAAG,UAAU,CAIlE"}
|
|
@@ -15,6 +15,16 @@ const BOLD_GLYPHS = {
|
|
|
15
15
|
M: ['██··██', '██████', '██▀▀██', '██··██', '██··██'],
|
|
16
16
|
Y: ['██··██', '██··██', '▀▀██▀▀', '··██··', '··██··'],
|
|
17
17
|
W: ['██··██', '██··██', '██▄▄██', '██████', '██··██'],
|
|
18
|
+
// Claude 词字母(CLAUDE / CODE):C 圆弧顶底(左角同 O 的 `·▄`/`·▀` 圆角)
|
|
19
|
+
// + 右侧上下钩各延续半格(行1 `▀▀` / 行3 `▄▄`,与顶底的 `▄▄`/`▀▀` 拼成
|
|
20
|
+
// 1 格厚的钩弧——ANSI Shadow 那种 `╗╔` 内钩弧的 5 行等效画法;只有顶底
|
|
21
|
+
// 半行的旧版弧臂厚 0.5 格,看着像 `[` 不够饱满);O 保留 A 的圆拱(闭
|
|
22
|
+
// 圆环窄缘);L 光杆 + E 的平底;U 是去掉 O 顶拱的开口版。
|
|
23
|
+
C: ['·▄▀▀▄▄', '██··▀▀', '██····', '██··▄▄', '·▀▄▄▀▀'],
|
|
24
|
+
L: ['██····', '██····', '██····', '██····', '██▄▄▄▄'],
|
|
25
|
+
U: ['██··██', '██··██', '██··██', '██··██', '·▀▄▄▀·'],
|
|
26
|
+
O: ['·▄▀▀▄·', '██··██', '██··██', '██··██', '·▀▄▄▀·'],
|
|
27
|
+
X: ['██··██', '·████·', '··██··', '·████·', '██··██'],
|
|
18
28
|
};
|
|
19
29
|
const BOLD_FALLBACK = ['▄▄▄▄▄▄', '██··██', '██··██', '██··██', '▀▀▀▀▀▀'];
|
|
20
30
|
/** 老的 5 列空心字(0.11.x 之前的开屏款)。 */
|
|
@@ -33,6 +43,13 @@ const CLASSIC_GLYPHS = {
|
|
|
33
43
|
M: ['█···█', '██·██', '█·█·█', '█···█', '█···█'],
|
|
34
44
|
Y: ['█···█', '█···█', '·█·█·', '··█··', '··█··'],
|
|
35
45
|
W: ['█···█', '█···█', '█·█·█', '██·██', '█···█'],
|
|
46
|
+
// Claude 词字母(CLAUDE / CODE):C 用 D 式顶底收角(右上下钩对称);O
|
|
47
|
+
// 圆拱;L 光杆;U 开口底弧。
|
|
48
|
+
C: ['█▀▀▀▄', '█····', '█····', '█····', '█▄▄▄▀'],
|
|
49
|
+
L: ['█····', '█····', '█····', '█····', '█▄▄▄▄'],
|
|
50
|
+
U: ['█···█', '█···█', '█···█', '█···█', '·▀▄▀·'],
|
|
51
|
+
O: ['·▄▀▄·', '█···█', '█···█', '█···█', '·▀▄▀·'],
|
|
52
|
+
X: ['█···█', '·█·█·', '··█··', '·█·█·', '█···█'],
|
|
36
53
|
};
|
|
37
54
|
const CLASSIC_FALLBACK = ['▄▄▄▄▄', '█···█', '█···█', '█···█', '▀▀▀▀▀'];
|
|
38
55
|
/** PR #1058(作者 zdjmrq)的实心横笔设计:横笔满格、竖笔 1 格。 */
|
|
@@ -51,8 +68,44 @@ const SLAB_GLYPHS = {
|
|
|
51
68
|
M: ['█···█', '██·██', '█·█·█', '█···█', '█···█'],
|
|
52
69
|
Y: ['█···█', '█···█', '·█·█·', '··█··', '··█··'],
|
|
53
70
|
W: ['█···█', '█···█', '█·█·█', '██·██', '█···█'],
|
|
71
|
+
// Claude 词字母(CLAUDE / CODE):实心横笔 + 方角,与 `D`/`E` 同笔法。
|
|
72
|
+
C: ['████·', '█····', '█····', '█····', '████·'],
|
|
73
|
+
L: ['█····', '█····', '█····', '█····', '█████'],
|
|
74
|
+
U: ['█···█', '█···█', '█···█', '█···█', '·███·'],
|
|
75
|
+
O: ['·███·', '█···█', '█···█', '█···█', '·███·'],
|
|
76
|
+
X: ['█···█', '·█·█·', '··█··', '·█·█·', '█···█'],
|
|
54
77
|
};
|
|
55
78
|
const SLAB_FALLBACK = ['▄▄▄▄▄', '█···█', '█···█', '█···█', '▀▀▀▀▀'];
|
|
79
|
+
/**
|
|
80
|
+
* ANSI Shadow(patorjk/figlet.js 收录的经典终端 banner 字体,10 列 × 5 行
|
|
81
|
+
* 压缩版):`█` 主体 + `╗╔╚╝═║` 双线弧角收边,立体圆润。由
|
|
82
|
+
* `.local/figlet-fonts/convert-flf.mjs` 从原版 7 行压缩而来(剥首尾空行、
|
|
83
|
+
* 去中段重复行;**窄行左对齐字身左缘**——v0 按行独立居中,C/L/E/P/Y 的
|
|
84
|
+
* 竖笔全与顶底弧错位 1-2 列;超宽字形压最长空隙段)。唯一手工:M 行 2 取
|
|
85
|
+
* 原版 V 顶行 `██╔████╔██║` 删 1 格 `█`(转换器对无空隙超宽行只能居中裁,
|
|
86
|
+
* 会丢右杆收笔 `║`)。dsh / claude 两副词的字母全在内(含彩蛋 IMYW)。
|
|
87
|
+
*/
|
|
88
|
+
const SHADOW_GLYPHS = {
|
|
89
|
+
D: ['·██████╗··', '·██╔══██╗·', '·██║··██║·', '·██████╔╝·', '·╚═════╝··'],
|
|
90
|
+
E: ['·███████╗·', '·██╔════╝·', '·██╔══╝···', '·███████╗·', '·╚══════╝·'],
|
|
91
|
+
P: ['·██████╗··', '·██╔══██╗·', '·██╔═══╝··', '·██║······', '·╚═╝······'],
|
|
92
|
+
S: ['·███████╗·', '·██╔════╝·', '·╚════██║·', '·███████║·', '·╚══════╝·'],
|
|
93
|
+
K: ['·██╗··██╗·', '·██║·██╔╝·', '·██╔═██╗··', '·██║··██╗·', '·╚═╝··╚═╝·'],
|
|
94
|
+
H: ['·██╗··██╗·', '·██║··██║·', '·██╔══██║·', '·██║··██║·', '·╚═╝··╚═╝·'],
|
|
95
|
+
A: ['··█████╗··', '·██╔══██╗·', '·██╔══██║·', '·██║··██║·', '·╚═╝··╚═╝·'],
|
|
96
|
+
R: ['·██████╗··', '·██╔══██╗·', '·██╔══██╗·', '·██║··██║·', '·╚═╝··╚═╝·'],
|
|
97
|
+
N: ['███╗···██╗', '████╗··██║', '██║╚██╗██║', '██║·╚████║', '╚═╝··╚═══╝'],
|
|
98
|
+
C: ['··██████╗·', '·██╔════╝·', '·██║······', '·╚██████╗·', '··╚═════╝·'],
|
|
99
|
+
L: ['·██╗······', '·██║······', '·██║······', '·███████╗·', '·╚══════╝·'],
|
|
100
|
+
U: ['██╗···██╗·', '██║···██║·', '██║···██║·', '╚██████╔╝·', '·╚═════╝··'],
|
|
101
|
+
O: ['·██████╗··', '██╔═══██╗·', '██║···██║·', '╚██████╔╝·', '·╚═════╝··'],
|
|
102
|
+
X: ['██╗···██╗·', '╚██╗·██╔╝·', '·╚████╔╝··', '·██╔═██╗··', '██╔╝·╚██╗·'],
|
|
103
|
+
I: ['···██╗····', '···██║····', '···██║····', '···██║····', '···╚═╝····'],
|
|
104
|
+
M: ['███╗··███╗', '████╗████║', '██╔███╗██║', '██║·╚═╝██║', '╚═╝····╚═╝'],
|
|
105
|
+
W: ['██╗····██╗', '██║····██║', '██║███╗██║', '╚███╔███╔╝', '·╚══╝╚══╝·'],
|
|
106
|
+
Y: ['██╗···██╗·', '╚██╗·██╔╝·', '··╚██╔╝···', '···██║····', '···╚═╝····'],
|
|
107
|
+
};
|
|
108
|
+
const SHADOW_FALLBACK = ['·▄▄▄▄▄▄▄▄·', '·█······█·', '·█······█·', '·█······█·', '·▀▀▀▀▀▀▀▀·'];
|
|
56
109
|
const isInk = (cell) => cell === '█' || cell === '▀' || cell === '▄';
|
|
57
110
|
const applyRows = (rows, fn) => rows.map((row, y) => fn(row, y, rows));
|
|
58
111
|
const applyTable = (table, fn) => Object.fromEntries(Object.entries(table).map(([ch, rows]) => [ch, applyRows(rows, fn)]));
|
|
@@ -89,10 +142,17 @@ const BEVEL = (row, y, rows) => {
|
|
|
89
142
|
return right || !left ? '█' : '▓';
|
|
90
143
|
}).join('');
|
|
91
144
|
};
|
|
92
|
-
/** 宽体:6 列最近邻拉到 8 列(竖笔 3 格、字腔 2
|
|
145
|
+
/** 宽体:6 列最近邻拉到 8 列(竖笔 3 格、字腔 2 格)。采样按**像素中心
|
|
146
|
+
* 对齐**(`(x+0.5)·len/8−0.5` 再取整)——朴素的 floor 会把首列元素复制两
|
|
147
|
+
* 份、末列只一份,居中的窄拱字形(如 `A`/`O` 的 `·▄▀▀▄·`)拉伸后左空 2
|
|
148
|
+
* 列右空 1 列、拱整体偏右一列(用户实测"a 左边多了一列");中心对齐后
|
|
149
|
+
* 左右留白等量,拱保持居中。 */
|
|
93
150
|
const WIDE = row => {
|
|
94
151
|
const cells = [...row];
|
|
95
|
-
return Array.from({ length: 8 }, (_, x) =>
|
|
152
|
+
return Array.from({ length: 8 }, (_, x) => {
|
|
153
|
+
const source = Math.round((x + 0.5) * cells.length / 8 - 0.5);
|
|
154
|
+
return cells[Math.max(0, Math.min(cells.length - 1, source))];
|
|
155
|
+
}).join('');
|
|
96
156
|
};
|
|
97
157
|
/**
|
|
98
158
|
* 镂空模板:中段那一行只在竖笔上留 1 列桥,其余挖空。
|
|
@@ -132,17 +192,45 @@ const MAX_KERNING = 8;
|
|
|
132
192
|
* |ink(top, tk) − ink(bottom, bk) − 2·indent| ≤ 1 (下排墨迹居中)
|
|
133
193
|
* 相减即 `|indent − (bk − tk)| ≤ 1`——所以缩进不是自由变量,字距才是。
|
|
134
194
|
*
|
|
135
|
-
*
|
|
136
|
-
* `tk + bk`
|
|
137
|
-
* (字身宽, 词长) 组合(如 8 列的 `wide` × 9 字的
|
|
138
|
-
*
|
|
195
|
+
* 选解顺序(`tight`,默认):先要求两行相邻字形之间都至少留 1 列(字身相接
|
|
196
|
+
* 会糊成一片),再按 `tk + bk` 从小到大取第一个满足契约的解——字距最紧、
|
|
197
|
+
* 画面最不松散。个别 (字身宽, 词长) 组合(如 8 列的 `wide` × 9 字的
|
|
198
|
+
* `HAPPINESS`)只解得出下排零字距,那时才退到允许 0:契约(等宽 + 居中)
|
|
199
|
+
* 优先于美观。
|
|
200
|
+
*
|
|
201
|
+
* `wide`(品牌词 CLAUDE/CODE 用):两词字数差大(6 vs 4)时,紧解的上排
|
|
202
|
+
* 字距只有 1(挤),最宽解又到 4/8(空旷)——bold 家族的整数可行解恰好
|
|
203
|
+
* 三档 {1/4, 2/5, 4/8},宽解取**中间档**(字距和最接近紧/宽两极的中点),
|
|
204
|
+
* 舒展而不散。下排字距天然大于上排是等宽契约的数学必然:字数差靠
|
|
205
|
+
* `bk − tk` 的墨迹差补齐;无解则退回 tight。
|
|
139
206
|
* @param glyphWidth - 字身宽度(列)。
|
|
140
207
|
* @param top - 上排词。
|
|
141
208
|
* @param bottom - 下排词(可含空格,空格宽度由 `paintedWidth` 算)。
|
|
209
|
+
* @param mode - `tight`(默认,最紧解)或 `wide`(中间档解,品牌词用)。
|
|
142
210
|
* @returns 两排字距与下排缩进。
|
|
143
211
|
*/
|
|
144
|
-
function solveTagline(glyphWidth, top, bottom) {
|
|
212
|
+
function solveTagline(glyphWidth, top, bottom, mode = 'tight') {
|
|
145
213
|
const metrics = { glyphWidth };
|
|
214
|
+
if (mode === 'wide') {
|
|
215
|
+
const feasible = [];
|
|
216
|
+
for (let topKerning = 1; topKerning <= MAX_KERNING; topKerning++) {
|
|
217
|
+
for (let bottomKerning = 1; bottomKerning <= MAX_KERNING; bottomKerning++) {
|
|
218
|
+
const bottomIndent = paintedWidth(metrics, top, topKerning) - paintedWidth(metrics, bottom, bottomKerning);
|
|
219
|
+
if (bottomIndent < 0)
|
|
220
|
+
continue;
|
|
221
|
+
const error = Math.abs(bigTextWidth(metrics, top, topKerning) - bigTextWidth(metrics, bottom, bottomKerning) - 2 * bottomIndent);
|
|
222
|
+
if (error > 1)
|
|
223
|
+
continue;
|
|
224
|
+
feasible.push({ topKerning, bottomKerning, bottomIndent, sum: topKerning + bottomKerning });
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
if (feasible.length > 0) {
|
|
228
|
+
const minSum = Math.min(...feasible.map(item => item.sum));
|
|
229
|
+
const maxSum = Math.max(...feasible.map(item => item.sum));
|
|
230
|
+
const target = (minSum + maxSum) / 2;
|
|
231
|
+
return feasible.reduce((best, item) => Math.abs(item.sum - target) < Math.abs(best.sum - target) ? item : best);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
146
234
|
// 兜底:契约在字距上限内无解时,宁可居中差一点,也不让开屏抛错(当前词表不可达)。
|
|
147
235
|
let closest = null;
|
|
148
236
|
for (const minKerning of [1, 0]) {
|
|
@@ -177,19 +265,34 @@ const font = (id, face) => {
|
|
|
177
265
|
};
|
|
178
266
|
};
|
|
179
267
|
/**
|
|
180
|
-
*
|
|
181
|
-
*
|
|
182
|
-
*
|
|
268
|
+
* 换一副标题词(品牌词/节日彩蛋用):字形、字身宽度、id 都不变,只按新词
|
|
269
|
+
* 重解字距。布局阈值(`resolveSplashLayout`)与渲染都读字体自己的 `tagline`,
|
|
270
|
+
* 所以派生对象可以直接顶替原字体——窄终端阶梯一行都不用改。
|
|
183
271
|
* @param font - 基准字体。
|
|
184
272
|
* @param top - 上排词。
|
|
185
273
|
* @param bottom - 下排词。
|
|
274
|
+
* @param options - `wide`:取中间档可行解(等宽契约的舒展档);
|
|
275
|
+
* `uniform`:两行同字距(品牌词用——等宽契约靠两行字距互补达成,
|
|
276
|
+
* 字数差大的词对间隙观感不一致;同字距后对齐由渲染层按形态处理)。
|
|
186
277
|
* @returns 换词后的字体描述符。
|
|
187
278
|
*/
|
|
188
|
-
export function withTagline(font, top, bottom) {
|
|
189
|
-
|
|
279
|
+
export function withTagline(font, top, bottom, options) {
|
|
280
|
+
if (options?.uniform === true) {
|
|
281
|
+
// 同字距档(品牌词用,用户点名「两行间隙一致」):两行共用一个字距,
|
|
282
|
+
// 不再拉伸等宽。块宽以基准词对(字体表 DEEPSEEK/HARNESS 紧解的宽行)
|
|
283
|
+
// 为预算——品牌标题的占位与默认档一致,字距在预算内取最大(舒展)。
|
|
284
|
+
// 对齐交给渲染层:居中形态窄行补半差、钉左形态两行左缘对齐。
|
|
285
|
+
const budget = Math.max(paintedWidth(font, font.tagline.top, font.tagline.topKerning), paintedWidth(font, font.tagline.bottom, font.tagline.bottomKerning));
|
|
286
|
+
const wider = paintedWidth(font, top, 1) >= paintedWidth(font, bottom, 1) ? top : bottom;
|
|
287
|
+
let kerning = 1;
|
|
288
|
+
while (kerning < MAX_KERNING && paintedWidth(font, wider, kerning + 1) <= budget)
|
|
289
|
+
kerning += 1;
|
|
290
|
+
return { ...font, tagline: { top, bottom, topKerning: kerning, bottomKerning: kerning, bottomIndent: 0 } };
|
|
291
|
+
}
|
|
292
|
+
return { ...font, tagline: { top, bottom, ...solveTagline(font.glyphWidth, top, bottom, options?.wide === true ? 'wide' : 'tight') } };
|
|
190
293
|
}
|
|
191
|
-
/**
|
|
192
|
-
|
|
294
|
+
/** 半立体的配色不再静态写死:LogoV2 按主题 accent 派生亮/暗两档(金属受光),
|
|
295
|
+
* 蓝主题出蓝金属、橙主题出橙金属——静态灰阶在任何主题下都像没上色。 */
|
|
193
296
|
/**
|
|
194
297
|
* 字体表:键就是 id(`Record<SplashFontId, …>` 保证不多不少,加一款字体必须先
|
|
195
298
|
* 进端口的 id 联合)。**书写顺序就是"按天轮换"的取模顺序**;彩蛋词/彩蛋字体不
|
|
@@ -198,12 +301,13 @@ const BEVEL_PALETTE = { from: { r: 214, g: 214, b: 214 }, to: { r: 104, g: 104,
|
|
|
198
301
|
const SPLASH_FONT_TABLE = {
|
|
199
302
|
bold: font('bold', { zh: '加粗(基准款)', en: 'Bold (base)', glyphs: BOLD_GLYPHS, fallback: BOLD_FALLBACK }),
|
|
200
303
|
square: font('square', { zh: '方角实心', en: 'Square solid', glyphs: applyTable(BOLD_GLYPHS, SQUARE), fallback: applyRows(BOLD_FALLBACK, SQUARE) }),
|
|
201
|
-
bevel:
|
|
304
|
+
bevel: font('bevel', { zh: '半立体', en: 'Bevel', glyphs: applyTable(BOLD_GLYPHS, BEVEL), fallback: applyRows(BOLD_FALLBACK, BEVEL) }),
|
|
202
305
|
wide: font('wide', { zh: '宽体', en: 'Wide', glyphs: applyTable(BOLD_GLYPHS, WIDE), fallback: applyRows(BOLD_FALLBACK, WIDE) }),
|
|
203
306
|
dot: font('dot', { zh: '点阵灰度', en: 'Dot matrix', glyphs: applyTable(BOLD_GLYPHS, DOT), fallback: applyRows(BOLD_FALLBACK, DOT) }),
|
|
204
307
|
stencil: font('stencil', { zh: '镂空模板', en: 'Stencil', glyphs: applyTable(BOLD_GLYPHS, STENCIL), fallback: applyRows(BOLD_FALLBACK, STENCIL) }),
|
|
205
308
|
classic: font('classic', { zh: '细笔(经典)', en: 'Thin (classic)', glyphs: CLASSIC_GLYPHS, fallback: CLASSIC_FALLBACK }),
|
|
206
309
|
slab: font('slab', { zh: '方板(实心横笔)', en: 'Slab (solid bars)', glyphs: SLAB_GLYPHS, fallback: SLAB_FALLBACK }),
|
|
310
|
+
shadow: font('shadow', { zh: '立体弧角(ANSI Shadow)', en: 'Shadow (ANSI)', glyphs: SHADOW_GLYPHS, fallback: SHADOW_FALLBACK }),
|
|
207
311
|
};
|
|
208
312
|
/** 轮换池(渲染侧只读这一份;表的书写顺序即轮换顺序)。 */
|
|
209
313
|
export const SPLASH_FONTS = Object.values(SPLASH_FONT_TABLE);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"splashLayout.d.ts","sourceRoot":"","sources":["../../../src/components/splashLayout.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAElD;;;;;;;;;;;GAWG;AAEH;;;GAGG;AACH,eAAO,MAAM,eAAe,KAAK,CAAA;AAEjC,yCAAyC;AACzC,eAAO,MAAM,UAAU,IAAI,CAAA;AAE3B,0BAA0B;AAC1B,MAAM,WAAW,YAAY;IAC3B,cAAc;IACd,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;IAC3B,kCAAkC;IAClC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAA;IAC9B,yBAAyB;IACzB,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAA;CACjC;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAE,GAC5C,YAAY,
|
|
1
|
+
{"version":3,"file":"splashLayout.d.ts","sourceRoot":"","sources":["../../../src/components/splashLayout.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAElD;;;;;;;;;;;GAWG;AAEH;;;GAGG;AACH,eAAO,MAAM,eAAe,KAAK,CAAA;AAEjC,yCAAyC;AACzC,eAAO,MAAM,UAAU,IAAI,CAAA;AAE3B,0BAA0B;AAC1B,MAAM,WAAW,YAAY;IAC3B,cAAc;IACd,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;IAC3B,kCAAkC;IAClC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAA;IAC9B,yBAAyB;IACzB,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAA;CACjC;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAE,GAC5C,YAAY,CAkBd"}
|
|
@@ -31,7 +31,9 @@ export function resolveSplashLayout(columns, options) {
|
|
|
31
31
|
// 最后一个字形。按 ink 宽判「放得下」,会在恰好卡阈值时让 Ink 走 `truncate-end`
|
|
32
32
|
// ——最后一个字形被换成 `…`(可达边界:基准款 55 列即复现)。末尾那一格是空白,
|
|
33
33
|
// 少画一格不可惜,字形被吃掉才可惜。
|
|
34
|
-
|
|
34
|
+
// 大字块按**两行中较宽的那行**判(品牌 uniform 档两行宽度不同——CODEX 窄于
|
|
35
|
+
// HARNESS;只看上排会把下排截掉。deepseek 等宽契约下两行同宽,行为不变)。
|
|
36
|
+
const titleWidth = Math.max(bigTextWidth(font, font.tagline.top, font.tagline.topKerning) + font.tagline.topKerning, bigTextWidth(font, font.tagline.bottom, font.tagline.bottomKerning) + font.tagline.bottomKerning);
|
|
35
37
|
const fitsTitle = columns >= titleWidth;
|
|
36
38
|
const showWhale = options.whale &&
|
|
37
39
|
columns >= WHALE_BOX_WIDTH &&
|