@qduc/term2 0.30.0 → 0.31.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/dist/acp-v2/serve.d.ts.map +1 -1
- package/dist/acp-v2/serve.js +6 -6
- package/dist/acp-v2/serve.js.map +1 -1
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +3 -6
- package/dist/agent.js.map +1 -1
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +46 -22
- package/dist/app.js.map +1 -1
- package/dist/build-info.json +2 -2
- package/dist/cli.js +53 -46
- package/dist/cli.js.map +1 -1
- package/dist/commands/model-command.d.ts.map +1 -1
- package/dist/commands/model-command.js +4 -8
- package/dist/commands/model-command.js.map +1 -1
- package/dist/components/ErrorBoundary.d.ts +1 -1
- package/dist/components/ErrorBoundary.d.ts.map +1 -1
- package/dist/components/ErrorBoundary.js +28 -23
- package/dist/components/ErrorBoundary.js.map +1 -1
- package/dist/components/InputBox.d.ts.map +1 -1
- package/dist/components/InputBox.js +124 -32
- package/dist/components/InputBox.js.map +1 -1
- package/dist/components/MarkdownRenderer.d.ts.map +1 -1
- package/dist/components/MarkdownRenderer.js +31 -28
- package/dist/components/MarkdownRenderer.js.map +1 -1
- package/dist/components/common/Divider.d.ts.map +1 -1
- package/dist/components/common/Divider.js +5 -2
- package/dist/components/common/Divider.js.map +1 -1
- package/dist/components/common/MenuContainer.d.ts +6 -20
- package/dist/components/common/MenuContainer.d.ts.map +1 -1
- package/dist/components/common/MenuContainer.js +24 -40
- package/dist/components/common/MenuContainer.js.map +1 -1
- package/dist/components/common/ScrollableTabBar.d.ts.map +1 -1
- package/dist/components/common/ScrollableTabBar.js +6 -5
- package/dist/components/common/ScrollableTabBar.js.map +1 -1
- package/dist/components/common/SelectionMarker.d.ts +16 -0
- package/dist/components/common/SelectionMarker.d.ts.map +1 -0
- package/dist/components/common/SelectionMarker.js +20 -0
- package/dist/components/common/SelectionMarker.js.map +1 -0
- package/dist/components/input/ApplicationInputSurface.d.ts.map +1 -1
- package/dist/components/input/ApplicationInputSurface.js +3 -1
- package/dist/components/input/ApplicationInputSurface.js.map +1 -1
- package/dist/components/input/FirstRunSetupPrompt.d.ts.map +1 -1
- package/dist/components/input/FirstRunSetupPrompt.js +8 -6
- package/dist/components/input/FirstRunSetupPrompt.js.map +1 -1
- package/dist/components/input/MenuSurface.d.ts.map +1 -1
- package/dist/components/input/MenuSurface.js +4 -3
- package/dist/components/input/MenuSurface.js.map +1 -1
- package/dist/components/input/ModelMenuSession.d.ts.map +1 -1
- package/dist/components/input/ModelMenuSession.js +10 -14
- package/dist/components/input/ModelMenuSession.js.map +1 -1
- package/dist/components/input/PendingQueueList.d.ts +3 -0
- package/dist/components/input/PendingQueueList.d.ts.map +1 -1
- package/dist/components/input/PendingQueueList.js +9 -8
- package/dist/components/input/PendingQueueList.js.map +1 -1
- package/dist/components/input/SettingsMenuSession.d.ts.map +1 -1
- package/dist/components/input/SettingsMenuSession.js +0 -2
- package/dist/components/input/SettingsMenuSession.js.map +1 -1
- package/dist/components/input/SettingsValueMenuSession.d.ts.map +1 -1
- package/dist/components/input/SettingsValueMenuSession.js +3 -2
- package/dist/components/input/SettingsValueMenuSession.js.map +1 -1
- package/dist/components/input/SubagentPoolMenuSession.d.ts.map +1 -1
- package/dist/components/input/SubagentPoolMenuSession.js +0 -2
- package/dist/components/input/SubagentPoolMenuSession.js.map +1 -1
- package/dist/components/input/menu-types.d.ts +0 -2
- package/dist/components/input/menu-types.d.ts.map +1 -1
- package/dist/components/input/triggers.d.ts.map +1 -1
- package/dist/components/input/triggers.js +0 -2
- package/dist/components/input/triggers.js.map +1 -1
- package/dist/components/layout/BackgroundTaskManager.d.ts.map +1 -1
- package/dist/components/layout/BackgroundTaskManager.js +113 -107
- package/dist/components/layout/BackgroundTaskManager.js.map +1 -1
- package/dist/components/layout/BackgroundTasksPanel.d.ts.map +1 -1
- package/dist/components/layout/BackgroundTasksPanel.js +26 -28
- package/dist/components/layout/BackgroundTasksPanel.js.map +1 -1
- package/dist/components/layout/Banner.d.ts.map +1 -1
- package/dist/components/layout/Banner.js +7 -51
- package/dist/components/layout/Banner.js.map +1 -1
- package/dist/components/layout/BottomArea.d.ts.map +1 -1
- package/dist/components/layout/BottomArea.js +14 -34
- package/dist/components/layout/BottomArea.js.map +1 -1
- package/dist/components/layout/DiffView.d.ts.map +1 -1
- package/dist/components/layout/DiffView.js +8 -7
- package/dist/components/layout/DiffView.js.map +1 -1
- package/dist/components/layout/StatusBar.d.ts +8 -0
- package/dist/components/layout/StatusBar.d.ts.map +1 -1
- package/dist/components/layout/StatusBar.js +199 -294
- package/dist/components/layout/StatusBar.js.map +1 -1
- package/dist/components/menu/CopyMenu.d.ts.map +1 -1
- package/dist/components/menu/CopyMenu.js +16 -13
- package/dist/components/menu/CopyMenu.js.map +1 -1
- package/dist/components/menu/McpSelectionMenu.d.ts.map +1 -1
- package/dist/components/menu/McpSelectionMenu.js +8 -7
- package/dist/components/menu/McpSelectionMenu.js.map +1 -1
- package/dist/components/menu/ModelSelectionMenu.d.ts.map +1 -1
- package/dist/components/menu/ModelSelectionMenu.js +21 -20
- package/dist/components/menu/ModelSelectionMenu.js.map +1 -1
- package/dist/components/menu/PathSelectionMenu.d.ts.map +1 -1
- package/dist/components/menu/PathSelectionMenu.js +5 -4
- package/dist/components/menu/PathSelectionMenu.js.map +1 -1
- package/dist/components/menu/ProfileSelectionMenu.d.ts.map +1 -1
- package/dist/components/menu/ProfileSelectionMenu.js +17 -20
- package/dist/components/menu/ProfileSelectionMenu.js.map +1 -1
- package/dist/components/menu/ProviderSelectionMenu.d.ts.map +1 -1
- package/dist/components/menu/ProviderSelectionMenu.js +37 -36
- package/dist/components/menu/ProviderSelectionMenu.js.map +1 -1
- package/dist/components/menu/ResumeSelectionMenu.d.ts.map +1 -1
- package/dist/components/menu/ResumeSelectionMenu.js +21 -22
- package/dist/components/menu/ResumeSelectionMenu.js.map +1 -1
- package/dist/components/menu/RewindMenu.d.ts.map +1 -1
- package/dist/components/menu/RewindMenu.js +5 -4
- package/dist/components/menu/RewindMenu.js.map +1 -1
- package/dist/components/menu/SettingsSelectionMenu.d.ts.map +1 -1
- package/dist/components/menu/SettingsSelectionMenu.js +15 -14
- package/dist/components/menu/SettingsSelectionMenu.js.map +1 -1
- package/dist/components/menu/SettingsValueSelectionMenu.d.ts.map +1 -1
- package/dist/components/menu/SettingsValueSelectionMenu.js +15 -14
- package/dist/components/menu/SettingsValueSelectionMenu.js.map +1 -1
- package/dist/components/menu/SkillSelectionMenu.d.ts.map +1 -1
- package/dist/components/menu/SkillSelectionMenu.js +17 -18
- package/dist/components/menu/SkillSelectionMenu.js.map +1 -1
- package/dist/components/menu/SlashCommandMenu.d.ts.map +1 -1
- package/dist/components/menu/SlashCommandMenu.js +5 -4
- package/dist/components/menu/SlashCommandMenu.js.map +1 -1
- package/dist/components/menu/StandaloneModelPickerApp.d.ts.map +1 -1
- package/dist/components/menu/StandaloneModelPickerApp.js +3 -2
- package/dist/components/menu/StandaloneModelPickerApp.js.map +1 -1
- package/dist/components/menu/SubagentPoolSelectionMenu.d.ts.map +1 -1
- package/dist/components/menu/SubagentPoolSelectionMenu.js +26 -24
- package/dist/components/menu/SubagentPoolSelectionMenu.js.map +1 -1
- package/dist/components/menu/settings-value-formatter.d.ts +3 -1
- package/dist/components/menu/settings-value-formatter.d.ts.map +1 -1
- package/dist/components/menu/settings-value-formatter.js +24 -35
- package/dist/components/menu/settings-value-formatter.js.map +1 -1
- package/dist/components/message/ChatMessage.d.ts.map +1 -1
- package/dist/components/message/ChatMessage.js +11 -7
- package/dist/components/message/ChatMessage.js.map +1 -1
- package/dist/components/message/CodeContextSearchRenderer.d.ts.map +1 -1
- package/dist/components/message/CodeContextSearchRenderer.js +14 -11
- package/dist/components/message/CodeContextSearchRenderer.js.map +1 -1
- package/dist/components/message/CommandGroupSummary.d.ts.map +1 -1
- package/dist/components/message/CommandGroupSummary.js +8 -36
- package/dist/components/message/CommandGroupSummary.js.map +1 -1
- package/dist/components/message/CommandMessage.d.ts.map +1 -1
- package/dist/components/message/CommandMessage.js +313 -329
- package/dist/components/message/CommandMessage.js.map +1 -1
- package/dist/components/message/GrepRenderer.d.ts.map +1 -1
- package/dist/components/message/GrepRenderer.js +12 -9
- package/dist/components/message/GrepRenderer.js.map +1 -1
- package/dist/components/message/MemoryRenderer.d.ts.map +1 -1
- package/dist/components/message/MemoryRenderer.js +45 -38
- package/dist/components/message/MemoryRenderer.js.map +1 -1
- package/dist/components/message/ReadFileRenderer.d.ts.map +1 -1
- package/dist/components/message/ReadFileRenderer.js +20 -16
- package/dist/components/message/ReadFileRenderer.js.map +1 -1
- package/dist/components/message/RunCodeRenderer.d.ts.map +1 -1
- package/dist/components/message/RunCodeRenderer.js +19 -14
- package/dist/components/message/RunCodeRenderer.js.map +1 -1
- package/dist/components/message/SubagentActivityMessage.d.ts.map +1 -1
- package/dist/components/message/SubagentActivityMessage.js +15 -15
- package/dist/components/message/SubagentActivityMessage.js.map +1 -1
- package/dist/components/message/WebFetchRenderer.d.ts.map +1 -1
- package/dist/components/message/WebFetchRenderer.js +16 -13
- package/dist/components/message/WebFetchRenderer.js.map +1 -1
- package/dist/components/message/WebSearchRenderer.d.ts.map +1 -1
- package/dist/components/message/WebSearchRenderer.js +20 -16
- package/dist/components/message/WebSearchRenderer.js.map +1 -1
- package/dist/components/message/command-message-helpers.d.ts +2 -2
- package/dist/components/message/command-message-helpers.d.ts.map +1 -1
- package/dist/components/prompt/ApprovalPrompt.d.ts +12 -1
- package/dist/components/prompt/ApprovalPrompt.d.ts.map +1 -1
- package/dist/components/prompt/ApprovalPrompt.js +100 -147
- package/dist/components/prompt/ApprovalPrompt.js.map +1 -1
- package/dist/components/prompt/ConfirmPrompt.d.ts.map +1 -1
- package/dist/components/prompt/ConfirmPrompt.js +7 -4
- package/dist/components/prompt/ConfirmPrompt.js.map +1 -1
- package/dist/components/prompt/QueuePausedPrompt.d.ts.map +1 -1
- package/dist/components/prompt/QueuePausedPrompt.js +7 -4
- package/dist/components/prompt/QueuePausedPrompt.js.map +1 -1
- package/dist/components/theme.d.ts +10 -52
- package/dist/components/theme.d.ts.map +1 -1
- package/dist/components/theme.js +11 -68
- package/dist/components/theme.js.map +1 -1
- package/dist/context/InputContext.d.ts +17 -0
- package/dist/context/InputContext.d.ts.map +1 -1
- package/dist/context/InputContext.js +12 -0
- package/dist/context/InputContext.js.map +1 -1
- package/dist/gateway/gateway.d.ts.map +1 -1
- package/dist/gateway/gateway.js +31 -11
- package/dist/gateway/gateway.js.map +1 -1
- package/dist/gateway/launcher-seam.js +2 -2
- package/dist/gateway/launcher-seam.js.map +1 -1
- package/dist/gateway/runtime-factory.d.ts.map +1 -1
- package/dist/gateway/runtime-factory.js +2 -3
- package/dist/gateway/runtime-factory.js.map +1 -1
- package/dist/gateway/settings-rpc.d.ts +5 -2
- package/dist/gateway/settings-rpc.d.ts.map +1 -1
- package/dist/gateway/settings-rpc.js +6 -4
- package/dist/gateway/settings-rpc.js.map +1 -1
- package/dist/hooks/conversation-ui-reducer.d.ts +5 -2
- package/dist/hooks/conversation-ui-reducer.d.ts.map +1 -1
- package/dist/hooks/conversation-ui-reducer.js +9 -2
- package/dist/hooks/conversation-ui-reducer.js.map +1 -1
- package/dist/hooks/settings-completion-config.d.ts +0 -2
- package/dist/hooks/settings-completion-config.d.ts.map +1 -1
- package/dist/hooks/settings-completion-config.js +4 -23
- package/dist/hooks/settings-completion-config.js.map +1 -1
- package/dist/hooks/use-app-commands.d.ts +1 -1
- package/dist/hooks/use-app-commands.d.ts.map +1 -1
- package/dist/hooks/use-app-keyboard-shortcuts.d.ts +6 -1
- package/dist/hooks/use-app-keyboard-shortcuts.d.ts.map +1 -1
- package/dist/hooks/use-app-keyboard-shortcuts.js +17 -11
- package/dist/hooks/use-app-keyboard-shortcuts.js.map +1 -1
- package/dist/hooks/use-conversation-settings.d.ts +3 -2
- package/dist/hooks/use-conversation-settings.d.ts.map +1 -1
- package/dist/hooks/use-conversation-settings.js +4 -4
- package/dist/hooks/use-conversation-settings.js.map +1 -1
- package/dist/hooks/use-conversation.d.ts +2 -1
- package/dist/hooks/use-conversation.d.ts.map +1 -1
- package/dist/hooks/use-conversation.js +5 -5
- package/dist/hooks/use-conversation.js.map +1 -1
- package/dist/hooks/use-first-run-setup.d.ts +1 -2
- package/dist/hooks/use-first-run-setup.d.ts.map +1 -1
- package/dist/hooks/use-first-run-setup.js +7 -17
- package/dist/hooks/use-first-run-setup.js.map +1 -1
- package/dist/hooks/use-grok-credit-usage.js +1 -1
- package/dist/hooks/use-grok-credit-usage.js.map +1 -1
- package/dist/hooks/use-handoff-flow.d.ts +1 -1
- package/dist/hooks/use-handoff-flow.d.ts.map +1 -1
- package/dist/hooks/use-handoff-flow.js +3 -3
- package/dist/hooks/use-handoff-flow.js.map +1 -1
- package/dist/hooks/use-model-selection.d.ts.map +1 -1
- package/dist/hooks/use-model-selection.js +6 -8
- package/dist/hooks/use-model-selection.js.map +1 -1
- package/dist/hooks/use-opencode-go-usage.js +1 -1
- package/dist/hooks/use-opencode-go-usage.js.map +1 -1
- package/dist/hooks/use-runtime-settings.d.ts +2 -2
- package/dist/hooks/use-runtime-settings.d.ts.map +1 -1
- package/dist/hooks/use-runtime-settings.js +3 -3
- package/dist/hooks/use-runtime-settings.js.map +1 -1
- package/dist/hooks/use-standalone-model-picker.d.ts.map +1 -1
- package/dist/hooks/use-standalone-model-picker.js +7 -6
- package/dist/hooks/use-standalone-model-picker.js.map +1 -1
- package/dist/hooks/use-subagent-pool-selection.d.ts +9 -16
- package/dist/hooks/use-subagent-pool-selection.d.ts.map +1 -1
- package/dist/hooks/use-subagent-pool-selection.js +15 -33
- package/dist/hooks/use-subagent-pool-selection.js.map +1 -1
- package/dist/lib/agent-client.d.ts +4 -5
- package/dist/lib/agent-client.d.ts.map +1 -1
- package/dist/lib/agent-client.js +6 -12
- package/dist/lib/agent-client.js.map +1 -1
- package/dist/lib/agent-configuration.d.ts +3 -4
- package/dist/lib/agent-configuration.d.ts.map +1 -1
- package/dist/lib/agent-configuration.js +19 -33
- package/dist/lib/agent-configuration.js.map +1 -1
- package/dist/lib/agent-factory.d.ts +4 -3
- package/dist/lib/agent-factory.d.ts.map +1 -1
- package/dist/lib/agent-factory.js +6 -3
- package/dist/lib/agent-factory.js.map +1 -1
- package/dist/non-interactive.d.ts.map +1 -1
- package/dist/non-interactive.js +4 -4
- package/dist/non-interactive.js.map +1 -1
- package/dist/providers/codex.provider.js +1 -1
- package/dist/providers/codex.provider.js.map +1 -1
- package/dist/providers/grok.provider.js +1 -1
- package/dist/providers/grok.provider.js.map +1 -1
- package/dist/providers/model-catalog/catalog.generated.d.ts +239 -171
- package/dist/providers/model-catalog/catalog.generated.d.ts.map +1 -1
- package/dist/providers/model-catalog/catalog.generated.js +238 -179
- package/dist/providers/model-catalog/catalog.generated.js.map +1 -1
- package/dist/providers/model-catalog/generate-catalog.d.ts.map +1 -1
- package/dist/providers/model-catalog/generate-catalog.js +13 -5
- package/dist/providers/model-catalog/generate-catalog.js.map +1 -1
- package/dist/providers/openai-chat-completions-model.d.ts.map +1 -1
- package/dist/providers/openai-chat-completions-model.js +5 -2
- package/dist/providers/openai-chat-completions-model.js.map +1 -1
- package/dist/providers/openai-compatible-lazy.js +1 -1
- package/dist/providers/openai-compatible-lazy.js.map +1 -1
- package/dist/providers/openai.provider.js +1 -1
- package/dist/providers/openai.provider.js.map +1 -1
- package/dist/providers/openrouter.provider.js +1 -1
- package/dist/providers/openrouter.provider.js.map +1 -1
- package/dist/providers/provider-service.d.ts.map +1 -1
- package/dist/providers/provider-service.js +6 -7
- package/dist/providers/provider-service.js.map +1 -1
- package/dist/scripts/eval-auto-approval/runner.js +2 -3
- package/dist/scripts/eval-auto-approval/runner.js.map +1 -1
- package/dist/scripts/eval-context-compaction/runner.js +1 -2
- package/dist/scripts/eval-context-compaction/runner.js.map +1 -1
- package/dist/services/agent-runtime/model-resolver.d.ts +4 -13
- package/dist/services/agent-runtime/model-resolver.d.ts.map +1 -1
- package/dist/services/agent-runtime/model-resolver.js +9 -39
- package/dist/services/agent-runtime/model-resolver.js.map +1 -1
- package/dist/services/approval/background-subagent-approval-controller.d.ts +1 -0
- package/dist/services/approval/background-subagent-approval-controller.d.ts.map +1 -1
- package/dist/services/approval/background-subagent-approval-controller.js +3 -0
- package/dist/services/approval/background-subagent-approval-controller.js.map +1 -1
- package/dist/services/approval/background-subagent-approval-queue.d.ts +5 -0
- package/dist/services/approval/background-subagent-approval-queue.d.ts.map +1 -1
- package/dist/services/approval/background-subagent-approval-queue.js +18 -2
- package/dist/services/approval/background-subagent-approval-queue.js.map +1 -1
- package/dist/services/control-socket/control-session-port.js +6 -6
- package/dist/services/control-socket/control-session-port.js.map +1 -1
- package/dist/services/conversation/conversation-adapter.d.ts.map +1 -1
- package/dist/services/conversation/conversation-adapter.js +32 -6
- package/dist/services/conversation/conversation-adapter.js.map +1 -1
- package/dist/services/conversation/conversation-admission-workflow.d.ts +2 -0
- package/dist/services/conversation/conversation-admission-workflow.d.ts.map +1 -1
- package/dist/services/conversation/conversation-admission-workflow.js +1 -1
- package/dist/services/conversation/conversation-admission-workflow.js.map +1 -1
- package/dist/services/conversation/conversation-orchestrator.d.ts.map +1 -1
- package/dist/services/conversation/conversation-orchestrator.js +41 -21
- package/dist/services/conversation/conversation-orchestrator.js.map +1 -1
- package/dist/services/conversation/conversation-orchestrator.types.d.ts +4 -3
- package/dist/services/conversation/conversation-orchestrator.types.d.ts.map +1 -1
- package/dist/services/conversation/conversation-replay.d.ts.map +1 -1
- package/dist/services/conversation/conversation-replay.js +9 -0
- package/dist/services/conversation/conversation-replay.js.map +1 -1
- package/dist/services/conversation/conversation-service.d.ts +2 -3
- package/dist/services/conversation/conversation-service.d.ts.map +1 -1
- package/dist/services/conversation/conversation-service.js +20 -11
- package/dist/services/conversation/conversation-service.js.map +1 -1
- package/dist/services/conversation-agent-client.d.ts +2 -1
- package/dist/services/conversation-agent-client.d.ts.map +1 -1
- package/dist/services/cost/model-cost.d.ts +6 -0
- package/dist/services/cost/model-cost.d.ts.map +1 -1
- package/dist/services/cost/model-cost.js +12 -0
- package/dist/services/cost/model-cost.js.map +1 -1
- package/dist/services/cost/pricing.d.ts +1 -1
- package/dist/services/cost/pricing.d.ts.map +1 -1
- package/dist/services/cost/pricing.js +5 -5
- package/dist/services/cost/pricing.js.map +1 -1
- package/dist/services/handoff/handoff-session.d.ts +1 -1
- package/dist/services/handoff/handoff-session.d.ts.map +1 -1
- package/dist/services/handoff/handoff-session.js +10 -12
- package/dist/services/handoff/handoff-session.js.map +1 -1
- package/dist/services/logging/conversation-log-events.d.ts.map +1 -1
- package/dist/services/logging/conversation-log-events.js +1 -2
- package/dist/services/logging/conversation-log-events.js.map +1 -1
- package/dist/services/model-service.js +1 -1
- package/dist/services/model-service.js.map +1 -1
- package/dist/services/models/model-picker-host.d.ts.map +1 -1
- package/dist/services/models/model-picker-host.js +9 -5
- package/dist/services/models/model-picker-host.js.map +1 -1
- package/dist/services/models/model-resolution.d.ts +2 -2
- package/dist/services/models/model-resolution.d.ts.map +1 -1
- package/dist/services/models/model-resolution.js +8 -2
- package/dist/services/models/model-resolution.js.map +1 -1
- package/dist/services/queue/queue-controller.d.ts +3 -0
- package/dist/services/queue/queue-controller.d.ts.map +1 -1
- package/dist/services/queue/queue-controller.js +53 -5
- package/dist/services/queue/queue-controller.js.map +1 -1
- package/dist/services/runtime-setting-router.d.ts +2 -2
- package/dist/services/runtime-setting-router.d.ts.map +1 -1
- package/dist/services/runtime-setting-router.js +8 -17
- package/dist/services/runtime-setting-router.js.map +1 -1
- package/dist/services/session/session-client-factory.js +1 -1
- package/dist/services/session/session-client-factory.js.map +1 -1
- package/dist/services/session/session-composition.d.ts +4 -1
- package/dist/services/session/session-composition.d.ts.map +1 -1
- package/dist/services/session/session-composition.js +70 -17
- package/dist/services/session/session-composition.js.map +1 -1
- package/dist/services/session/session-input-planner.js +2 -2
- package/dist/services/session/session-input-planner.js.map +1 -1
- package/dist/services/session/session-manager.d.ts.map +1 -1
- package/dist/services/session/session-manager.js +4 -2
- package/dist/services/session/session-manager.js.map +1 -1
- package/dist/services/session/session-runtime-controller.d.ts +2 -4
- package/dist/services/session/session-runtime-controller.d.ts.map +1 -1
- package/dist/services/session/session-runtime-controller.js +2 -14
- package/dist/services/session/session-runtime-controller.js.map +1 -1
- package/dist/services/session/test-helpers/conversation-session-fixtures.d.ts.map +1 -1
- package/dist/services/session/test-helpers/conversation-session-fixtures.js +5 -2
- package/dist/services/session/test-helpers/conversation-session-fixtures.js.map +1 -1
- package/dist/services/settings/ancillary-settings-migration.d.ts +1 -1
- package/dist/services/settings/ancillary-settings-migration.d.ts.map +1 -1
- package/dist/services/settings/ancillary-settings-migration.js +4 -37
- package/dist/services/settings/ancillary-settings-migration.js.map +1 -1
- package/dist/services/settings/model-selection.d.ts +7 -0
- package/dist/services/settings/model-selection.d.ts.map +1 -0
- package/dist/services/settings/model-selection.js +6 -0
- package/dist/services/settings/model-selection.js.map +1 -0
- package/dist/services/settings/persisted-selection-migration.d.ts +9 -0
- package/dist/services/settings/persisted-selection-migration.d.ts.map +1 -0
- package/dist/services/settings/persisted-selection-migration.js +109 -0
- package/dist/services/settings/persisted-selection-migration.js.map +1 -0
- package/dist/services/settings/setting-schema-utils.d.ts.map +1 -1
- package/dist/services/settings/setting-schema-utils.js +5 -2
- package/dist/services/settings/setting-schema-utils.js.map +1 -1
- package/dist/services/settings/settings-env.d.ts.map +1 -1
- package/dist/services/settings/settings-env.js +0 -2
- package/dist/services/settings/settings-env.js.map +1 -1
- package/dist/services/settings/settings-merger.d.ts.map +1 -1
- package/dist/services/settings/settings-merger.js +12 -5
- package/dist/services/settings/settings-merger.js.map +1 -1
- package/dist/services/settings/settings-persistence.d.ts +1 -0
- package/dist/services/settings/settings-persistence.d.ts.map +1 -1
- package/dist/services/settings/settings-persistence.js +23 -5
- package/dist/services/settings/settings-persistence.js.map +1 -1
- package/dist/services/settings/settings-schema.d.ts +96 -118
- package/dist/services/settings/settings-schema.d.ts.map +1 -1
- package/dist/services/settings/settings-schema.js +70 -177
- package/dist/services/settings/settings-schema.js.map +1 -1
- package/dist/services/settings/settings-service.d.ts +2 -1
- package/dist/services/settings/settings-service.d.ts.map +1 -1
- package/dist/services/settings/settings-service.js +31 -10
- package/dist/services/settings/settings-service.js.map +1 -1
- package/dist/services/settings/settings-service.mock.js +2 -2
- package/dist/services/settings/settings-service.mock.js.map +1 -1
- package/dist/services/settings/settings-sources.d.ts +3 -20
- package/dist/services/settings/settings-sources.d.ts.map +1 -1
- package/dist/services/settings/settings-sources.js +3 -20
- package/dist/services/settings/settings-sources.js.map +1 -1
- package/dist/services/settings/settings-ui-metadata.d.ts.map +1 -1
- package/dist/services/settings/settings-ui-metadata.js +6 -24
- package/dist/services/settings/settings-ui-metadata.js.map +1 -1
- package/dist/services/settings/test-helpers/settings-consumer-inventory.d.ts +6 -6
- package/dist/services/settings/test-helpers/settings-consumer-inventory.d.ts.map +1 -1
- package/dist/services/settings/test-helpers/settings-consumer-inventory.js +10 -29
- package/dist/services/settings/test-helpers/settings-consumer-inventory.js.map +1 -1
- package/dist/services/shell/background-shell-output-store.d.ts +4 -2
- package/dist/services/shell/background-shell-output-store.d.ts.map +1 -1
- package/dist/services/shell/background-shell-output-store.js +9 -8
- package/dist/services/shell/background-shell-output-store.js.map +1 -1
- package/dist/services/shell/background-shell-watches.d.ts.map +1 -1
- package/dist/services/shell/background-shell-watches.js +20 -9
- package/dist/services/shell/background-shell-watches.js.map +1 -1
- package/dist/services/subagents/mentor-runner.d.ts.map +1 -1
- package/dist/services/subagents/mentor-runner.js +10 -6
- package/dist/services/subagents/mentor-runner.js.map +1 -1
- package/dist/services/subagents/role-loader.d.ts.map +1 -1
- package/dist/services/subagents/role-loader.js +9 -17
- package/dist/services/subagents/role-loader.js.map +1 -1
- package/dist/services/subagents/subagent-async-registry.js +2 -2
- package/dist/services/subagents/subagent-async-registry.js.map +1 -1
- package/dist/services/subagents/subagent-pool-config.d.ts +0 -6
- package/dist/services/subagents/subagent-pool-config.d.ts.map +1 -1
- package/dist/services/subagents/subagent-pool-config.js +1 -22
- package/dist/services/subagents/subagent-pool-config.js.map +1 -1
- package/dist/services/subagents/subagent-role-pool-selector.d.ts +1 -2
- package/dist/services/subagents/subagent-role-pool-selector.d.ts.map +1 -1
- package/dist/services/subagents/subagent-role-pool-selector.js +4 -10
- package/dist/services/subagents/subagent-role-pool-selector.js.map +1 -1
- package/dist/services/subagents/subagent-run-control.d.ts.map +1 -1
- package/dist/services/subagents/subagent-run-control.js +3 -2
- package/dist/services/subagents/subagent-run-control.js.map +1 -1
- package/dist/services/subagents/test-helpers/subagent-manager-fixtures.d.ts.map +1 -1
- package/dist/services/subagents/test-helpers/subagent-manager-fixtures.js +8 -2
- package/dist/services/subagents/test-helpers/subagent-manager-fixtures.js.map +1 -1
- package/dist/services/subagents/utils.d.ts +1 -1
- package/dist/services/subagents/utils.d.ts.map +1 -1
- package/dist/services/subagents/utils.js +5 -4
- package/dist/services/subagents/utils.js.map +1 -1
- package/dist/skins/SkinContext.d.ts +18 -0
- package/dist/skins/SkinContext.d.ts.map +1 -0
- package/dist/skins/SkinContext.js +23 -0
- package/dist/skins/SkinContext.js.map +1 -0
- package/dist/skins/cards/activity.d.ts +8 -0
- package/dist/skins/cards/activity.d.ts.map +1 -0
- package/dist/skins/cards/activity.js +23 -0
- package/dist/skins/cards/activity.js.map +1 -0
- package/dist/skins/cards/approval.d.ts +15 -0
- package/dist/skins/cards/approval.d.ts.map +1 -0
- package/dist/skins/cards/approval.js +64 -0
- package/dist/skins/cards/approval.js.map +1 -0
- package/dist/skins/cards/body.d.ts +14 -0
- package/dist/skins/cards/body.d.ts.map +1 -0
- package/dist/skins/cards/body.js +65 -0
- package/dist/skins/cards/body.js.map +1 -0
- package/dist/skins/cards/card.d.ts +28 -0
- package/dist/skins/cards/card.d.ts.map +1 -0
- package/dist/skins/cards/card.js +37 -0
- package/dist/skins/cards/card.js.map +1 -0
- package/dist/skins/cards/index.d.ts +9 -0
- package/dist/skins/cards/index.d.ts.map +1 -0
- package/dist/skins/cards/index.js +41 -0
- package/dist/skins/cards/index.js.map +1 -0
- package/dist/skins/cards/live-region.d.ts +16 -0
- package/dist/skins/cards/live-region.d.ts.map +1 -0
- package/dist/skins/cards/live-region.js +83 -0
- package/dist/skins/cards/live-region.js.map +1 -0
- package/dist/skins/cards/measure.d.ts +17 -0
- package/dist/skins/cards/measure.d.ts.map +1 -0
- package/dist/skins/cards/measure.js +29 -0
- package/dist/skins/cards/measure.js.map +1 -0
- package/dist/skins/cards/messages.d.ts +23 -0
- package/dist/skins/cards/messages.d.ts.map +1 -0
- package/dist/skins/cards/messages.js +80 -0
- package/dist/skins/cards/messages.js.map +1 -0
- package/dist/skins/cards/status.d.ts +9 -0
- package/dist/skins/cards/status.d.ts.map +1 -0
- package/dist/skins/cards/status.js +205 -0
- package/dist/skins/cards/status.js.map +1 -0
- package/dist/skins/cards/tools.d.ts +21 -0
- package/dist/skins/cards/tools.d.ts.map +1 -0
- package/dist/skins/cards/tools.js +101 -0
- package/dist/skins/cards/tools.js.map +1 -0
- package/dist/skins/cards/width.d.ts +4 -0
- package/dist/skins/cards/width.d.ts.map +1 -0
- package/dist/skins/cards/width.js +32 -0
- package/dist/skins/cards/width.js.map +1 -0
- package/dist/skins/classic/approval.d.ts +19 -0
- package/dist/skins/classic/approval.d.ts.map +1 -0
- package/dist/skins/classic/approval.js +50 -0
- package/dist/skins/classic/approval.js.map +1 -0
- package/dist/skins/classic/index.d.ts +7 -0
- package/dist/skins/classic/index.d.ts.map +1 -0
- package/dist/skins/classic/index.js +39 -0
- package/dist/skins/classic/index.js.map +1 -0
- package/dist/skins/classic/live-region.d.ts +19 -0
- package/dist/skins/classic/live-region.d.ts.map +1 -0
- package/dist/skins/classic/live-region.js +71 -0
- package/dist/skins/classic/live-region.js.map +1 -0
- package/dist/skins/classic/menu.d.ts +5 -0
- package/dist/skins/classic/menu.d.ts.map +1 -0
- package/dist/skins/classic/menu.js +20 -0
- package/dist/skins/classic/menu.js.map +1 -0
- package/dist/skins/classic/messages.d.ts +13 -0
- package/dist/skins/classic/messages.d.ts.map +1 -0
- package/dist/skins/classic/messages.js +65 -0
- package/dist/skins/classic/messages.js.map +1 -0
- package/dist/skins/classic/question.d.ts +5 -0
- package/dist/skins/classic/question.d.ts.map +1 -0
- package/dist/skins/classic/question.js +33 -0
- package/dist/skins/classic/question.js.map +1 -0
- package/dist/skins/classic/status.d.ts +10 -0
- package/dist/skins/classic/status.d.ts.map +1 -0
- package/dist/skins/classic/status.js +158 -0
- package/dist/skins/classic/status.js.map +1 -0
- package/dist/skins/classic/subagent.d.ts +5 -0
- package/dist/skins/classic/subagent.d.ts.map +1 -0
- package/dist/skins/classic/subagent.js +14 -0
- package/dist/skins/classic/subagent.js.map +1 -0
- package/dist/skins/classic/tool-section.d.ts +8 -0
- package/dist/skins/classic/tool-section.d.ts.map +1 -0
- package/dist/skins/classic/tool-section.js +20 -0
- package/dist/skins/classic/tool-section.js.map +1 -0
- package/dist/skins/classic/tools.d.ts +19 -0
- package/dist/skins/classic/tools.d.ts.map +1 -0
- package/dist/skins/classic/tools.js +72 -0
- package/dist/skins/classic/tools.js.map +1 -0
- package/dist/skins/ledger/activity.d.ts +6 -0
- package/dist/skins/ledger/activity.d.ts.map +1 -0
- package/dist/skins/ledger/activity.js +18 -0
- package/dist/skins/ledger/activity.js.map +1 -0
- package/dist/skins/ledger/approval.d.ts +17 -0
- package/dist/skins/ledger/approval.d.ts.map +1 -0
- package/dist/skins/ledger/approval.js +67 -0
- package/dist/skins/ledger/approval.js.map +1 -0
- package/dist/skins/ledger/body.d.ts +11 -0
- package/dist/skins/ledger/body.d.ts.map +1 -0
- package/dist/skins/ledger/body.js +77 -0
- package/dist/skins/ledger/body.js.map +1 -0
- package/dist/skins/ledger/chip.d.ts +27 -0
- package/dist/skins/ledger/chip.d.ts.map +1 -0
- package/dist/skins/ledger/chip.js +25 -0
- package/dist/skins/ledger/chip.js.map +1 -0
- package/dist/skins/ledger/index.d.ts +11 -0
- package/dist/skins/ledger/index.d.ts.map +1 -0
- package/dist/skins/ledger/index.js +44 -0
- package/dist/skins/ledger/index.js.map +1 -0
- package/dist/skins/ledger/live-region.d.ts +20 -0
- package/dist/skins/ledger/live-region.d.ts.map +1 -0
- package/dist/skins/ledger/live-region.js +89 -0
- package/dist/skins/ledger/live-region.js.map +1 -0
- package/dist/skins/ledger/messages.d.ts +17 -0
- package/dist/skins/ledger/messages.d.ts.map +1 -0
- package/dist/skins/ledger/messages.js +62 -0
- package/dist/skins/ledger/messages.js.map +1 -0
- package/dist/skins/ledger/status.d.ts +10 -0
- package/dist/skins/ledger/status.d.ts.map +1 -0
- package/dist/skins/ledger/status.js +302 -0
- package/dist/skins/ledger/status.js.map +1 -0
- package/dist/skins/ledger/tools.d.ts +20 -0
- package/dist/skins/ledger/tools.d.ts.map +1 -0
- package/dist/skins/ledger/tools.js +101 -0
- package/dist/skins/ledger/tools.js.map +1 -0
- package/dist/skins/names.d.ts +10 -0
- package/dist/skins/names.d.ts.map +1 -0
- package/dist/skins/names.js +9 -0
- package/dist/skins/names.js.map +1 -0
- package/dist/skins/rail/activity.d.ts +8 -0
- package/dist/skins/rail/activity.d.ts.map +1 -0
- package/dist/skins/rail/activity.js +23 -0
- package/dist/skins/rail/activity.js.map +1 -0
- package/dist/skins/rail/approval.d.ts +16 -0
- package/dist/skins/rail/approval.d.ts.map +1 -0
- package/dist/skins/rail/approval.js +45 -0
- package/dist/skins/rail/approval.js.map +1 -0
- package/dist/skins/rail/body.d.ts +19 -0
- package/dist/skins/rail/body.d.ts.map +1 -0
- package/dist/skins/rail/body.js +69 -0
- package/dist/skins/rail/body.js.map +1 -0
- package/dist/skins/rail/index.d.ts +12 -0
- package/dist/skins/rail/index.d.ts.map +1 -0
- package/dist/skins/rail/index.js +44 -0
- package/dist/skins/rail/index.js.map +1 -0
- package/dist/skins/rail/live-region.d.ts +19 -0
- package/dist/skins/rail/live-region.d.ts.map +1 -0
- package/dist/skins/rail/live-region.js +88 -0
- package/dist/skins/rail/live-region.js.map +1 -0
- package/dist/skins/rail/messages.d.ts +21 -0
- package/dist/skins/rail/messages.d.ts.map +1 -0
- package/dist/skins/rail/messages.js +90 -0
- package/dist/skins/rail/messages.js.map +1 -0
- package/dist/skins/rail/parts.d.ts +25 -0
- package/dist/skins/rail/parts.d.ts.map +1 -0
- package/dist/skins/rail/parts.js +37 -0
- package/dist/skins/rail/parts.js.map +1 -0
- package/dist/skins/rail/status.d.ts +10 -0
- package/dist/skins/rail/status.d.ts.map +1 -0
- package/dist/skins/rail/status.js +147 -0
- package/dist/skins/rail/status.js.map +1 -0
- package/dist/skins/rail/tools.d.ts +28 -0
- package/dist/skins/rail/tools.d.ts.map +1 -0
- package/dist/skins/rail/tools.js +85 -0
- package/dist/skins/rail/tools.js.map +1 -0
- package/dist/skins/registry.d.ts +6 -0
- package/dist/skins/registry.d.ts.map +1 -0
- package/dist/skins/registry.js +15 -0
- package/dist/skins/registry.js.map +1 -0
- package/dist/skins/shared/gauge.d.ts +17 -0
- package/dist/skins/shared/gauge.d.ts.map +1 -0
- package/dist/skins/shared/gauge.js +29 -0
- package/dist/skins/shared/gauge.js.map +1 -0
- package/dist/skins/shared/limits.d.ts +3 -0
- package/dist/skins/shared/limits.d.ts.map +1 -0
- package/dist/skins/shared/limits.js +3 -0
- package/dist/skins/shared/limits.js.map +1 -0
- package/dist/skins/shared/spinner.d.ts +14 -0
- package/dist/skins/shared/spinner.d.ts.map +1 -0
- package/dist/skins/shared/spinner.js +25 -0
- package/dist/skins/shared/spinner.js.map +1 -0
- package/dist/skins/testing/conformance.d.ts +8 -0
- package/dist/skins/testing/conformance.d.ts.map +1 -0
- package/dist/skins/testing/conformance.js +34 -0
- package/dist/skins/testing/conformance.js.map +1 -0
- package/dist/skins/testing/scenes.d.ts +45 -0
- package/dist/skins/testing/scenes.d.ts.map +1 -0
- package/dist/skins/testing/scenes.js +465 -0
- package/dist/skins/testing/scenes.js.map +1 -0
- package/dist/skins/types.d.ts +294 -0
- package/dist/skins/types.d.ts.map +1 -0
- package/dist/skins/types.js +10 -0
- package/dist/skins/types.js.map +1 -0
- package/dist/skins/zen/activity.d.ts +7 -0
- package/dist/skins/zen/activity.d.ts.map +1 -0
- package/dist/skins/zen/activity.js +22 -0
- package/dist/skins/zen/activity.js.map +1 -0
- package/dist/skins/zen/approval.d.ts +20 -0
- package/dist/skins/zen/approval.d.ts.map +1 -0
- package/dist/skins/zen/approval.js +67 -0
- package/dist/skins/zen/approval.js.map +1 -0
- package/dist/skins/zen/body.d.ts +14 -0
- package/dist/skins/zen/body.d.ts.map +1 -0
- package/dist/skins/zen/body.js +82 -0
- package/dist/skins/zen/body.js.map +1 -0
- package/dist/skins/zen/index.d.ts +12 -0
- package/dist/skins/zen/index.d.ts.map +1 -0
- package/dist/skins/zen/index.js +44 -0
- package/dist/skins/zen/index.js.map +1 -0
- package/dist/skins/zen/live-region.d.ts +21 -0
- package/dist/skins/zen/live-region.d.ts.map +1 -0
- package/dist/skins/zen/live-region.js +77 -0
- package/dist/skins/zen/live-region.js.map +1 -0
- package/dist/skins/zen/messages.d.ts +27 -0
- package/dist/skins/zen/messages.d.ts.map +1 -0
- package/dist/skins/zen/messages.js +81 -0
- package/dist/skins/zen/messages.js.map +1 -0
- package/dist/skins/zen/status.d.ts +11 -0
- package/dist/skins/zen/status.d.ts.map +1 -0
- package/dist/skins/zen/status.js +177 -0
- package/dist/skins/zen/status.js.map +1 -0
- package/dist/skins/zen/style.d.ts +26 -0
- package/dist/skins/zen/style.d.ts.map +1 -0
- package/dist/skins/zen/style.js +14 -0
- package/dist/skins/zen/style.js.map +1 -0
- package/dist/skins/zen/tools.d.ts +23 -0
- package/dist/skins/zen/tools.d.ts.map +1 -0
- package/dist/skins/zen/tools.js +81 -0
- package/dist/skins/zen/tools.js.map +1 -0
- package/dist/skins/zen/width.d.ts +12 -0
- package/dist/skins/zen/width.d.ts.map +1 -0
- package/dist/skins/zen/width.js +27 -0
- package/dist/skins/zen/width.js.map +1 -0
- package/dist/theme/ThemeContext.d.ts +26 -0
- package/dist/theme/ThemeContext.d.ts.map +1 -0
- package/dist/theme/ThemeContext.js +24 -0
- package/dist/theme/ThemeContext.js.map +1 -0
- package/dist/theme/detect-terminal-background.d.ts +29 -0
- package/dist/theme/detect-terminal-background.d.ts.map +1 -0
- package/dist/theme/detect-terminal-background.js +72 -0
- package/dist/theme/detect-terminal-background.js.map +1 -0
- package/dist/theme/palettes.d.ts +84 -0
- package/dist/theme/palettes.d.ts.map +1 -0
- package/dist/theme/palettes.js +175 -0
- package/dist/theme/palettes.js.map +1 -0
- package/dist/theme/resolve-theme.d.ts +44 -0
- package/dist/theme/resolve-theme.d.ts.map +1 -0
- package/dist/theme/resolve-theme.js +72 -0
- package/dist/theme/resolve-theme.js.map +1 -0
- package/dist/tools/file/create-file.js +1 -1
- package/dist/tools/file/create-file.js.map +1 -1
- package/dist/tools/file/edit-healing.js +1 -1
- package/dist/tools/file/edit-healing.js.map +1 -1
- package/dist/tools/file/patch-healing.js +1 -1
- package/dist/tools/file/patch-healing.js.map +1 -1
- package/dist/tools/system/run-code/run-code-execution.d.ts +7 -0
- package/dist/tools/system/run-code/run-code-execution.d.ts.map +1 -1
- package/dist/tools/system/run-code/run-code-execution.js.map +1 -1
- package/dist/tools/system/run-code/run-code-runtime-contract.d.ts +2 -0
- package/dist/tools/system/run-code/run-code-runtime-contract.d.ts.map +1 -1
- package/dist/tools/system/run-code/run-code-runtime.d.ts +2 -1
- package/dist/tools/system/run-code/run-code-runtime.d.ts.map +1 -1
- package/dist/tools/system/run-code/run-code-runtime.js +110 -12
- package/dist/tools/system/run-code/run-code-runtime.js.map +1 -1
- package/dist/tools/system/run-code/run-code.js +15 -8
- package/dist/tools/system/run-code/run-code.js.map +1 -1
- package/dist/utils/ai/model-settings.d.ts +0 -2
- package/dist/utils/ai/model-settings.d.ts.map +1 -1
- package/dist/utils/ai/model-settings.js +2 -11
- package/dist/utils/ai/model-settings.js.map +1 -1
- package/dist/utils/settings-command.d.ts.map +1 -1
- package/dist/utils/settings-command.js +25 -24
- package/dist/utils/settings-command.js.map +1 -1
- package/dist/utils/shell/execute-shell.js +1 -1
- package/dist/utils/shell/execute-shell.js.map +1 -1
- package/dist/utils/value-suggestions.d.ts +0 -2
- package/dist/utils/value-suggestions.d.ts.map +1 -1
- package/dist/utils/value-suggestions.js +15 -63
- package/dist/utils/value-suggestions.js.map +1 -1
- package/package.json +3 -4
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Box, Text } from 'ink';
|
|
3
|
+
import { TOOL_STATUS_GLYPH, useTheme } from '../../components/theme.js';
|
|
4
|
+
import { BRAILLE_SPINNER, useSpinnerFrame } from '../shared/spinner.js';
|
|
5
|
+
import { MARKER_COLUMNS, useZenStyles } from './style.js';
|
|
6
|
+
/**
|
|
7
|
+
* Tool calls sit under the answer's text column, indented by the width of the
|
|
8
|
+
* `◆` marker, so a turn reads as one column of prose with the machinery tucked
|
|
9
|
+
* into it. The frame wraps header and body together (the container composes
|
|
10
|
+
* them), so the indent is all it can do; the header decides everything else.
|
|
11
|
+
*/
|
|
12
|
+
export const ZenToolFrame = ({ children }) => (React.createElement(Box, { flexDirection: "column", paddingLeft: MARKER_COLUMNS }, children));
|
|
13
|
+
const isTrouble = (status) => status === 'failed' || status === 'rejected';
|
|
14
|
+
/** The glyph of a call in flight. A component of its own so only this cell re-renders on each tick. */
|
|
15
|
+
const RunningGlyph = () => {
|
|
16
|
+
const theme = useTheme();
|
|
17
|
+
const frame = useSpinnerFrame(BRAILLE_SPINNER, true, 120);
|
|
18
|
+
return React.createElement(Text, { color: theme.warning }, frame);
|
|
19
|
+
};
|
|
20
|
+
const StatusGlyph = ({ status }) => {
|
|
21
|
+
const theme = useTheme();
|
|
22
|
+
const { faint } = useZenStyles();
|
|
23
|
+
if (status === 'running')
|
|
24
|
+
return React.createElement(RunningGlyph, null);
|
|
25
|
+
if (isTrouble(status)) {
|
|
26
|
+
return (React.createElement(Text, { color: theme.toolStatus[status], bold: true }, TOOL_STATUS_GLYPH[status]));
|
|
27
|
+
}
|
|
28
|
+
// Settled and waiting calls are furniture: the glyph is there to be scanned, not to be coloured.
|
|
29
|
+
return React.createElement(Text, { ...faint }, TOOL_STATUS_GLYPH[status]);
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* One quiet line. Colour is spent only on trouble: a failed call is red from its
|
|
33
|
+
* glyph to its last word, everything that went right recedes. A running call is
|
|
34
|
+
* the one other thing allowed to stand out, with a small spinner in the warning
|
|
35
|
+
* tone, because it is the one thing still happening.
|
|
36
|
+
*/
|
|
37
|
+
export const ZenToolHeader = ({ status, display, nested, action, meta, trailing, textColor }) => {
|
|
38
|
+
const theme = useTheme();
|
|
39
|
+
const { quiet, faint, colourless } = useZenStyles();
|
|
40
|
+
const inFlight = status === 'running' || status === 'pending';
|
|
41
|
+
if (nested) {
|
|
42
|
+
return (React.createElement(Box, null,
|
|
43
|
+
React.createElement(Text, { wrap: "truncate", ...faint },
|
|
44
|
+
React.createElement(StatusGlyph, { status: status }),
|
|
45
|
+
" ",
|
|
46
|
+
action,
|
|
47
|
+
meta)));
|
|
48
|
+
}
|
|
49
|
+
// Standard display prints the output underneath, so the header is the brighter
|
|
50
|
+
// of the two; concise display is the whole record, so it recedes.
|
|
51
|
+
const actionStyle = status === 'failed'
|
|
52
|
+
? { color: theme.danger, dimColor: false, bold: colourless }
|
|
53
|
+
: display === 'standard' || inFlight
|
|
54
|
+
? { color: undefined, dimColor: false }
|
|
55
|
+
: { ...quiet, color: textColor || quiet.color };
|
|
56
|
+
return (React.createElement(Box, null,
|
|
57
|
+
React.createElement(Box, { width: MARKER_COLUMNS, flexShrink: 0 },
|
|
58
|
+
React.createElement(StatusGlyph, { status: status })),
|
|
59
|
+
React.createElement(Text, { ...actionStyle },
|
|
60
|
+
action,
|
|
61
|
+
meta,
|
|
62
|
+
trailing)));
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* One quiet line for a run of calls, and, only when something failed, the failing
|
|
66
|
+
* calls beneath it, in the danger tone. A partly failed run keeps a calm summary:
|
|
67
|
+
* most of it worked, and the line below says exactly what did not.
|
|
68
|
+
*/
|
|
69
|
+
export const ZenToolGroupSummary = ({ status, summary, failures }) => {
|
|
70
|
+
const theme = useTheme();
|
|
71
|
+
const { quiet, faint, colourless } = useZenStyles();
|
|
72
|
+
return (React.createElement(Box, { flexDirection: "column", paddingLeft: MARKER_COLUMNS, width: "100%" },
|
|
73
|
+
React.createElement(Box, null,
|
|
74
|
+
React.createElement(Box, { width: MARKER_COLUMNS, flexShrink: 0 }, status === 'failed' ? (React.createElement(Text, { color: theme.toolStatus.failed, bold: true }, TOOL_STATUS_GLYPH.failed)) : (React.createElement(Text, { ...faint }, TOOL_STATUS_GLYPH.completed))),
|
|
75
|
+
React.createElement(Text, { ...quiet }, summary)),
|
|
76
|
+
failures !== '' && (React.createElement(Box, null,
|
|
77
|
+
React.createElement(Box, { width: MARKER_COLUMNS, flexShrink: 0 },
|
|
78
|
+
React.createElement(Text, { color: theme.toolStatus.failed, bold: true }, TOOL_STATUS_GLYPH.failed)),
|
|
79
|
+
React.createElement(Text, { color: theme.danger, bold: colourless }, failures)))));
|
|
80
|
+
};
|
|
81
|
+
//# sourceMappingURL=tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../source/skins/zen/tools.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAExE,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAExE,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAuB,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAChE,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,WAAW,EAAE,cAAc,IACpD,QAAQ,CACL,CACP,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,MAAsB,EAAW,EAAE,CAAC,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,UAAU,CAAC;AAEpG,uGAAuG;AACvG,MAAM,YAAY,GAAO,GAAG,EAAE;IAC5B,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,MAAM,KAAK,GAAG,eAAe,CAAC,eAAe,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;IAC1D,OAAO,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,OAAO,IAAG,KAAK,CAAQ,CAAC;AACpD,CAAC,CAAC;AAEF,MAAM,WAAW,GAAmC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;IACjE,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,MAAM,EAAE,KAAK,EAAE,GAAG,YAAY,EAAE,CAAC;IACjC,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,oBAAC,YAAY,OAAG,CAAC;IAClD,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;QACtB,OAAO,CACL,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,UACxC,iBAAiB,CAAC,MAAM,CAAC,CACrB,CACR,CAAC;IACJ,CAAC;IACD,iGAAiG;IACjG,OAAO,oBAAC,IAAI,OAAK,KAAK,IAAG,iBAAiB,CAAC,MAAM,CAAC,CAAQ,CAAC;AAC7D,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAwB,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE;IACnH,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,YAAY,EAAE,CAAC;IACpD,MAAM,QAAQ,GAAG,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,CAAC;IAE9D,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,CACL,oBAAC,GAAG;YACF,oBAAC,IAAI,IAAC,IAAI,EAAC,UAAU,KAAK,KAAK;gBAC7B,oBAAC,WAAW,IAAC,MAAM,EAAE,MAAM,GAAI;;gBAAE,MAAM;gBACtC,IAAI,CACA,CACH,CACP,CAAC;IACJ,CAAC;IAED,+EAA+E;IAC/E,kEAAkE;IAClE,MAAM,WAAW,GACf,MAAM,KAAK,QAAQ;QACjB,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE;QAC5D,CAAC,CAAC,OAAO,KAAK,UAAU,IAAI,QAAQ;YACpC,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE;YACvC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;IAEpD,OAAO,CACL,oBAAC,GAAG;QACF,oBAAC,GAAG,IAAC,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC;YACvC,oBAAC,WAAW,IAAC,MAAM,EAAE,MAAM,GAAI,CAC3B;QACN,oBAAC,IAAI,OAAK,WAAW;YAClB,MAAM;YACN,IAAI;YACJ,QAAQ,CACJ,CACH,CACP,CAAC;AACJ,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAA6B,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC7F,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,YAAY,EAAE,CAAC;IACpD,OAAO,CACL,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,WAAW,EAAE,cAAc,EAAE,KAAK,EAAC,MAAM;QACnE,oBAAC,GAAG;YACF,oBAAC,GAAG,IAAC,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC,IACtC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CACrB,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,UACvC,iBAAiB,CAAC,MAAM,CACpB,CACR,CAAC,CAAC,CAAC,CACF,oBAAC,IAAI,OAAK,KAAK,IAAG,iBAAiB,CAAC,SAAS,CAAQ,CACtD,CACG;YACN,oBAAC,IAAI,OAAK,KAAK,IAAG,OAAO,CAAQ,CAC7B;QACL,QAAQ,KAAK,EAAE,IAAI,CAClB,oBAAC,GAAG;YACF,oBAAC,GAAG,IAAC,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC;gBACvC,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,UACvC,iBAAiB,CAAC,MAAM,CACpB,CACH;YACN,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,UAAU,IACxC,QAAQ,CACJ,CACH,CACP,CACG,CACP,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Terminal columns a string occupies, for the few places zen has to decide a
|
|
3
|
+
* layout before Ink does (does the approval fit on one line, how much of the
|
|
4
|
+
* status line can stay).
|
|
5
|
+
*
|
|
6
|
+
* `terminalTextWidth` deliberately counts every non-ASCII code point as two cells,
|
|
7
|
+
* which would make zen's own glyphs (`›`, `◆`, `·`, `—`, `▲`) cost double and push
|
|
8
|
+
* it into its narrow layouts far too early. Those are single cells in every
|
|
9
|
+
* terminal this app targets; only genuinely wide scripts and emoji are doubled.
|
|
10
|
+
*/
|
|
11
|
+
export declare function cells(value: string): number;
|
|
12
|
+
//# sourceMappingURL=width.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"width.d.ts","sourceRoot":"","sources":["../../../source/skins/zen/width.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAgB3C"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Terminal columns a string occupies, for the few places zen has to decide a
|
|
3
|
+
* layout before Ink does (does the approval fit on one line, how much of the
|
|
4
|
+
* status line can stay).
|
|
5
|
+
*
|
|
6
|
+
* `terminalTextWidth` deliberately counts every non-ASCII code point as two cells,
|
|
7
|
+
* which would make zen's own glyphs (`›`, `◆`, `·`, `—`, `▲`) cost double and push
|
|
8
|
+
* it into its narrow layouts far too early. Those are single cells in every
|
|
9
|
+
* terminal this app targets; only genuinely wide scripts and emoji are doubled.
|
|
10
|
+
*/
|
|
11
|
+
export function cells(value) {
|
|
12
|
+
let width = 0;
|
|
13
|
+
for (const char of value) {
|
|
14
|
+
const code = char.codePointAt(0) ?? 0;
|
|
15
|
+
const wide = (code >= 0x1100 && code <= 0x115f) ||
|
|
16
|
+
(code >= 0x2e80 && code <= 0xa4cf) ||
|
|
17
|
+
(code >= 0xac00 && code <= 0xd7a3) ||
|
|
18
|
+
(code >= 0xf900 && code <= 0xfaff) ||
|
|
19
|
+
(code >= 0xfe30 && code <= 0xfe6f) ||
|
|
20
|
+
(code >= 0xff00 && code <= 0xff60) ||
|
|
21
|
+
(code >= 0xffe0 && code <= 0xffe6) ||
|
|
22
|
+
(code >= 0x1f300 && code <= 0x1faff);
|
|
23
|
+
width += wide ? 2 : 1;
|
|
24
|
+
}
|
|
25
|
+
return width;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=width.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"width.js","sourceRoot":"","sources":["../../../source/skins/zen/width.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,UAAU,KAAK,CAAC,KAAa;IACjC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,IAAI,GACR,CAAC,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC;YAClC,CAAC,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC;YAClC,CAAC,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC;YAClC,CAAC,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC;YAClC,CAAC,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC;YAClC,CAAC,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC;YAClC,CAAC,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC;YAClC,CAAC,IAAI,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,CAAC,CAAC;QACvC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { type FC, type ReactNode } from 'react';
|
|
2
|
+
import type { ISettingsService } from '../services/service-interfaces.js';
|
|
3
|
+
import { type ThemeTokens } from './palettes.js';
|
|
4
|
+
import { type BackgroundMode } from './resolve-theme.js';
|
|
5
|
+
export declare const useTheme: () => ThemeTokens;
|
|
6
|
+
export declare const ThemeProvider: FC<{
|
|
7
|
+
theme: ThemeTokens;
|
|
8
|
+
children?: ReactNode;
|
|
9
|
+
}>;
|
|
10
|
+
interface SettingsThemeProviderProps {
|
|
11
|
+
settingsService: ISettingsService;
|
|
12
|
+
/** Environment used to resolve `auto`; injectable so tests do not depend on the host terminal. */
|
|
13
|
+
env?: Readonly<Record<string, string | undefined>>;
|
|
14
|
+
/** What the terminal reported at startup (see `detectTerminalBackground`). */
|
|
15
|
+
detectedBackground?: BackgroundMode;
|
|
16
|
+
children?: ReactNode;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Resolves `ui.theme` against the environment and provides the result. It
|
|
20
|
+
* subscribes to the setting, so changing it in `/settings` recolours the UI
|
|
21
|
+
* immediately. Lines already committed to the terminal's scrollback keep the
|
|
22
|
+
* colours they were printed with — that output is no longer ours to repaint.
|
|
23
|
+
*/
|
|
24
|
+
export declare const SettingsThemeProvider: FC<SettingsThemeProviderProps>;
|
|
25
|
+
export {};
|
|
26
|
+
//# sourceMappingURL=ThemeContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThemeContext.d.ts","sourceRoot":"","sources":["../../source/theme/ThemeContext.tsx"],"names":[],"mappings":"AAAA,OAAc,EAA6B,KAAK,EAAE,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAClF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAE1E,OAAO,EAAyB,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AACxE,OAAO,EAAoB,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAS3E,eAAO,MAAM,QAAQ,QAAO,WAAuC,CAAC;AAEpE,eAAO,MAAM,aAAa,EAAE,EAAE,CAAC;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;CAAE,CAE1E,CAAC;AAEF,UAAU,0BAA0B;IAClC,eAAe,EAAE,gBAAgB,CAAC;IAClC,kGAAkG;IAClG,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;IACnD,8EAA8E;IAC9E,kBAAkB,CAAC,EAAE,cAAc,CAAC;IACpC,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,EAAE,EAAE,CAAC,0BAA0B,CAShE,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import React, { createContext, useContext } from 'react';
|
|
2
|
+
import { useSetting } from '../hooks/use-setting.js';
|
|
3
|
+
import { DEFAULT_THEME, THEMES } from './palettes.js';
|
|
4
|
+
import { resolveThemeName } from './resolve-theme.js';
|
|
5
|
+
/**
|
|
6
|
+
* The default is the dark palette, not `undefined`: components rendered with no
|
|
7
|
+
* provider (unit tests, one-off Ink roots) look exactly as they always have, and
|
|
8
|
+
* `useTheme()` can never return nothing.
|
|
9
|
+
*/
|
|
10
|
+
const ThemeContext = createContext(DEFAULT_THEME);
|
|
11
|
+
export const useTheme = () => useContext(ThemeContext);
|
|
12
|
+
export const ThemeProvider = ({ theme, children }) => (React.createElement(ThemeContext.Provider, { value: theme }, children));
|
|
13
|
+
/**
|
|
14
|
+
* Resolves `ui.theme` against the environment and provides the result. It
|
|
15
|
+
* subscribes to the setting, so changing it in `/settings` recolours the UI
|
|
16
|
+
* immediately. Lines already committed to the terminal's scrollback keep the
|
|
17
|
+
* colours they were printed with — that output is no longer ours to repaint.
|
|
18
|
+
*/
|
|
19
|
+
export const SettingsThemeProvider = ({ settingsService, env = process.env, detectedBackground, children, }) => {
|
|
20
|
+
const setting = useSetting(settingsService, 'ui.theme') ?? 'auto';
|
|
21
|
+
const theme = THEMES[resolveThemeName(setting, { env, detectedBackground })];
|
|
22
|
+
return React.createElement(ThemeProvider, { theme: theme }, children);
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=ThemeContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThemeContext.js","sourceRoot":"","sources":["../../source/theme/ThemeContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,UAAU,EAA2B,MAAM,OAAO,CAAC;AAElF,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,EAAoB,MAAM,eAAe,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAuB,MAAM,oBAAoB,CAAC;AAE3E;;;;GAIG;AACH,MAAM,YAAY,GAAG,aAAa,CAAc,aAAa,CAAC,CAAC;AAE/D,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAgB,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AAEpE,MAAM,CAAC,MAAM,aAAa,GAAqD,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CACtG,oBAAC,YAAY,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,IAAG,QAAQ,CAAyB,CACxE,CAAC;AAWF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAmC,CAAC,EACpE,eAAe,EACf,GAAG,GAAG,OAAO,CAAC,GAAG,EACjB,kBAAkB,EAClB,QAAQ,GACT,EAAE,EAAE;IACH,MAAM,OAAO,GAAG,UAAU,CAAC,eAAe,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC;IAClE,MAAM,KAAK,GAAG,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC;IAC7E,OAAO,oBAAC,aAAa,IAAC,KAAK,EAAE,KAAK,IAAG,QAAQ,CAAiB,CAAC;AACjE,CAAC,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { type BackgroundMode } from './resolve-theme.js';
|
|
2
|
+
export declare const DEFAULT_DETECTION_TIMEOUT_MS = 150;
|
|
3
|
+
type DetectionStdin = Pick<NodeJS.ReadStream, 'isTTY' | 'isRaw' | 'resume' | 'pause' | 'on' | 'off' | 'readableFlowing'> & {
|
|
4
|
+
setRawMode?: (mode: boolean) => unknown;
|
|
5
|
+
setEncoding?: (encoding: BufferEncoding) => unknown;
|
|
6
|
+
};
|
|
7
|
+
type DetectionStdout = Pick<NodeJS.WriteStream, 'isTTY' | 'write'>;
|
|
8
|
+
export interface DetectTerminalBackgroundOptions {
|
|
9
|
+
stdin: DetectionStdin;
|
|
10
|
+
stdout: DetectionStdout;
|
|
11
|
+
timeoutMs?: number;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Asks the terminal whether its background is light or dark (OSC 11), without
|
|
15
|
+
* ever hanging or leaking bytes.
|
|
16
|
+
*
|
|
17
|
+
* The colour query is followed by a Device Attributes query. Terminals answer
|
|
18
|
+
* requests in order and every terminal answers DA1, so receiving the DA1 reply
|
|
19
|
+
* means any colour reply has already arrived. A terminal that ignores OSC 11
|
|
20
|
+
* therefore costs one round trip rather than the full timeout, and its DA1
|
|
21
|
+
* reply is consumed here instead of landing in the prompt later. The timeout
|
|
22
|
+
* is only the backstop for a terminal that is silent or a link that drops it.
|
|
23
|
+
*
|
|
24
|
+
* Must run before the Ink app takes over stdin: the replies arrive as input.
|
|
25
|
+
* Resolves `undefined` whenever the answer is unknown, never throws.
|
|
26
|
+
*/
|
|
27
|
+
export declare function detectTerminalBackground(options: DetectTerminalBackgroundOptions): Promise<BackgroundMode | undefined>;
|
|
28
|
+
export {};
|
|
29
|
+
//# sourceMappingURL=detect-terminal-background.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detect-terminal-background.d.ts","sourceRoot":"","sources":["../../source/theme/detect-terminal-background.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6C,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAOpG,eAAO,MAAM,4BAA4B,MAAM,CAAC;AAEhD,KAAK,cAAc,GAAG,IAAI,CACxB,MAAM,CAAC,UAAU,EACjB,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,IAAI,GAAG,KAAK,GAAG,iBAAiB,CAC1E,GAAG;IACF,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC;IACxC,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,KAAK,OAAO,CAAC;CACrD,CAAC;AACF,KAAK,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC;AAEnE,MAAM,WAAW,+BAA+B;IAC9C,KAAK,EAAE,cAAc,CAAC;IACtB,MAAM,EAAE,eAAe,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,+BAA+B,GACvC,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAoDrC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { backgroundModeFromRgb, parseOsc11Response } from './resolve-theme.js';
|
|
2
|
+
const OSC11_QUERY = '\u001B]11;?\u001B\\';
|
|
3
|
+
/** Primary Device Attributes: every terminal answers it, so it marks "the replies are done". */
|
|
4
|
+
const DA1_QUERY = '\u001B[c';
|
|
5
|
+
const DA1_REPLY = /\u001B\[\?[\d;]*c/;
|
|
6
|
+
export const DEFAULT_DETECTION_TIMEOUT_MS = 150;
|
|
7
|
+
/**
|
|
8
|
+
* Asks the terminal whether its background is light or dark (OSC 11), without
|
|
9
|
+
* ever hanging or leaking bytes.
|
|
10
|
+
*
|
|
11
|
+
* The colour query is followed by a Device Attributes query. Terminals answer
|
|
12
|
+
* requests in order and every terminal answers DA1, so receiving the DA1 reply
|
|
13
|
+
* means any colour reply has already arrived. A terminal that ignores OSC 11
|
|
14
|
+
* therefore costs one round trip rather than the full timeout, and its DA1
|
|
15
|
+
* reply is consumed here instead of landing in the prompt later. The timeout
|
|
16
|
+
* is only the backstop for a terminal that is silent or a link that drops it.
|
|
17
|
+
*
|
|
18
|
+
* Must run before the Ink app takes over stdin: the replies arrive as input.
|
|
19
|
+
* Resolves `undefined` whenever the answer is unknown, never throws.
|
|
20
|
+
*/
|
|
21
|
+
export function detectTerminalBackground(options) {
|
|
22
|
+
const { stdin, stdout, timeoutMs = DEFAULT_DETECTION_TIMEOUT_MS } = options;
|
|
23
|
+
if (!stdin.isTTY || !stdout.isTTY || typeof stdin.setRawMode !== 'function') {
|
|
24
|
+
return Promise.resolve(undefined);
|
|
25
|
+
}
|
|
26
|
+
const setRawMode = stdin.setRawMode.bind(stdin);
|
|
27
|
+
return new Promise((resolve) => {
|
|
28
|
+
const wasRaw = Boolean(stdin.isRaw);
|
|
29
|
+
const wasFlowing = stdin.readableFlowing === true;
|
|
30
|
+
let buffer = '';
|
|
31
|
+
let mode;
|
|
32
|
+
let settled = false;
|
|
33
|
+
const finish = () => {
|
|
34
|
+
if (settled)
|
|
35
|
+
return;
|
|
36
|
+
settled = true;
|
|
37
|
+
clearTimeout(timer);
|
|
38
|
+
stdin.off('data', onData);
|
|
39
|
+
try {
|
|
40
|
+
setRawMode(wasRaw);
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
// Terminal went away; nothing to restore.
|
|
44
|
+
}
|
|
45
|
+
if (!wasFlowing)
|
|
46
|
+
stdin.pause();
|
|
47
|
+
resolve(mode);
|
|
48
|
+
};
|
|
49
|
+
const onData = (chunk) => {
|
|
50
|
+
buffer += typeof chunk === 'string' ? chunk : chunk.toString('utf8');
|
|
51
|
+
const rgb = parseOsc11Response(buffer);
|
|
52
|
+
if (rgb) {
|
|
53
|
+
mode = backgroundModeFromRgb(rgb);
|
|
54
|
+
}
|
|
55
|
+
if (DA1_REPLY.test(buffer)) {
|
|
56
|
+
finish();
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
// Armed before the query goes out, so `finish` can always cancel it.
|
|
60
|
+
const timer = setTimeout(finish, timeoutMs);
|
|
61
|
+
try {
|
|
62
|
+
setRawMode(true);
|
|
63
|
+
stdin.on('data', onData);
|
|
64
|
+
stdin.resume();
|
|
65
|
+
stdout.write(OSC11_QUERY + DA1_QUERY);
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
finish();
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=detect-terminal-background.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detect-terminal-background.js","sourceRoot":"","sources":["../../source/theme/detect-terminal-background.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAuB,MAAM,oBAAoB,CAAC;AAEpG,MAAM,WAAW,GAAG,qBAAqB,CAAC;AAC1C,gGAAgG;AAChG,MAAM,SAAS,GAAG,UAAU,CAAC;AAC7B,MAAM,SAAS,GAAG,mBAAmB,CAAC;AAEtC,MAAM,CAAC,MAAM,4BAA4B,GAAG,GAAG,CAAC;AAiBhD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,wBAAwB,CACtC,OAAwC;IAExC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,GAAG,4BAA4B,EAAE,GAAG,OAAO,CAAC;IAE5E,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,OAAO,KAAK,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;QAC5E,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;IACD,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAEhD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,UAAU,GAAG,KAAK,CAAC,eAAe,KAAK,IAAI,CAAC;QAClD,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,IAAgC,CAAC;QACrC,IAAI,OAAO,GAAG,KAAK,CAAC;QAEpB,MAAM,MAAM,GAAG,GAAG,EAAE;YAClB,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,GAAG,IAAI,CAAC;YACf,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC1B,IAAI,CAAC;gBACH,UAAU,CAAC,MAAM,CAAC,CAAC;YACrB,CAAC;YAAC,MAAM,CAAC;gBACP,0CAA0C;YAC5C,CAAC;YACD,IAAI,CAAC,UAAU;gBAAE,KAAK,CAAC,KAAK,EAAE,CAAC;YAC/B,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,CAAC;QAEF,MAAM,MAAM,GAAG,CAAC,KAAsB,EAAE,EAAE;YACxC,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACrE,MAAM,GAAG,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;YACvC,IAAI,GAAG,EAAE,CAAC;gBACR,IAAI,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;YACpC,CAAC;YACD,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC3B,MAAM,EAAE,CAAC;YACX,CAAC;QACH,CAAC,CAAC;QAEF,qEAAqE;QACrE,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAE5C,IAAI,CAAC;YACH,UAAU,CAAC,IAAI,CAAC,CAAC;YACjB,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACzB,KAAK,CAAC,MAAM,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;QACxC,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,EAAE,CAAC;QACX,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Built-in colour palettes.
|
|
3
|
+
*
|
|
4
|
+
* A palette is a complete set of *semantic* tokens, named for what they mean
|
|
5
|
+
* rather than what they look like, so the same idea renders the same way
|
|
6
|
+
* everywhere. Two rules keep that true:
|
|
7
|
+
*
|
|
8
|
+
* 1. No hex literals outside this directory (enforced by
|
|
9
|
+
* `no-raw-colors.guard.test.ts`). A one-off `#a78bfa` in a component is how
|
|
10
|
+
* the palette drifted to 29 colours before.
|
|
11
|
+
* 2. No named terminal colours (`'green'`, `'gray'`). Those resolve against the
|
|
12
|
+
* *user's* terminal palette, so the app looks different on every machine and
|
|
13
|
+
* can land unreadable. Palettes use explicit `#rrggbb` instead.
|
|
14
|
+
*
|
|
15
|
+
* Contrast is a tested property, not a hope: see `palettes.test.ts`. A palette
|
|
16
|
+
* declares which terminal backgrounds it is designed for in
|
|
17
|
+
* `supportedBackgrounds`, and the test holds its body colours to WCAG 4.5:1 on
|
|
18
|
+
* each of them.
|
|
19
|
+
*/
|
|
20
|
+
/** `undefined` lets the terminal's own default win, which is how `mono` works. */
|
|
21
|
+
export type Color = string | undefined;
|
|
22
|
+
export declare const THEME_NAMES: readonly ['dark', 'light', 'high-contrast', 'mono'];
|
|
23
|
+
export type ThemeName = (typeof THEME_NAMES)[number];
|
|
24
|
+
/**
|
|
25
|
+
* A colour a table or helper can name without holding a value: store the role,
|
|
26
|
+
* then resolve it with `theme[role]` where the theme is in scope. This is what
|
|
27
|
+
* lets module-level data (hint lists, label maps) stay theme-aware.
|
|
28
|
+
*/
|
|
29
|
+
export type ColorRole = 'accent' | 'accentAlt' | 'success' | 'warning' | 'danger' | 'dangerSoft' | 'text' | 'textMuted' | 'textSubtle' | 'border' | 'borderActive' | 'codeBackground' | 'userBackground' | 'userText' | 'reasoning' | 'toolOutput';
|
|
30
|
+
export type ModeBadge = 'STANDARD' | 'LITE' | 'SHELL' | 'PLAN' | 'ORCHESTRATOR' | 'MENTOR';
|
|
31
|
+
export type ToolStatusKind = 'pending' | 'running' | 'completed' | 'failed' | 'rejected';
|
|
32
|
+
export interface ThemeTokens {
|
|
33
|
+
name: ThemeName;
|
|
34
|
+
/**
|
|
35
|
+
* Terminal backgrounds this palette is designed to sit on. Used by the
|
|
36
|
+
* contrast test and as documentation; empty for a palette that defines no
|
|
37
|
+
* colours.
|
|
38
|
+
*/
|
|
39
|
+
supportedBackgrounds: readonly string[];
|
|
40
|
+
/** The single interactive accent: prompts, selection, user identity, focus. */
|
|
41
|
+
accent: Color;
|
|
42
|
+
/**
|
|
43
|
+
* Secondary accent: work that runs outside the foreground turn — the mentor
|
|
44
|
+
* lane, background tasks, queued follow-ups. Not a general-purpose highlight.
|
|
45
|
+
*/
|
|
46
|
+
accentAlt: Color;
|
|
47
|
+
success: Color;
|
|
48
|
+
warning: Color;
|
|
49
|
+
danger: Color;
|
|
50
|
+
/** Softer danger, for body text under a danger heading. */
|
|
51
|
+
dangerSoft: Color;
|
|
52
|
+
/** Primary body text. Left undefined at most call sites so the terminal default wins. */
|
|
53
|
+
text: Color;
|
|
54
|
+
/** Secondary text: values, metadata, tool output. */
|
|
55
|
+
textMuted: Color;
|
|
56
|
+
/** Tertiary text: labels, hints, footers, separators. */
|
|
57
|
+
textSubtle: Color;
|
|
58
|
+
/** Dividers and inactive container borders. */
|
|
59
|
+
border: Color;
|
|
60
|
+
/** Borders of the surface that currently owns input. */
|
|
61
|
+
borderActive: Color;
|
|
62
|
+
/** Background behind inline code spans. */
|
|
63
|
+
codeBackground: Color;
|
|
64
|
+
/** Full-width band behind user messages. */
|
|
65
|
+
userBackground: Color;
|
|
66
|
+
/**
|
|
67
|
+
* Text on `userBackground`. Explicit on purpose: leaving it to the terminal
|
|
68
|
+
* default put dark-on-dark text on light terminals (1.5:1).
|
|
69
|
+
*/
|
|
70
|
+
userText: Color;
|
|
71
|
+
/** Model reasoning / thinking transcript. */
|
|
72
|
+
reasoning: Color;
|
|
73
|
+
/** Tool stdout and rendered tool results. */
|
|
74
|
+
toolOutput: Color;
|
|
75
|
+
/** One badge colour per operating mode: identity, not rank. */
|
|
76
|
+
modeBadge: Record<ModeBadge, Color>;
|
|
77
|
+
/** Foreground for text sitting on a `modeBadge` background. */
|
|
78
|
+
modeBadgeForeground: Color;
|
|
79
|
+
/** Colour for each tool-line status glyph. */
|
|
80
|
+
toolStatus: Record<ToolStatusKind, Color>;
|
|
81
|
+
}
|
|
82
|
+
export declare const THEMES: Readonly<Record<ThemeName, ThemeTokens>>;
|
|
83
|
+
export declare const DEFAULT_THEME: ThemeTokens;
|
|
84
|
+
//# sourceMappingURL=palettes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"palettes.d.ts","sourceRoot":"","sources":["../../source/theme/palettes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,kFAAkF;AAClF,MAAM,MAAM,KAAK,GAAG,MAAM,GAAG,SAAS,CAAC;AAEvC,eAAO,MAAM,WAAW,YAAI,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,CAAU,CAAC;AAC/E,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAErD;;;;GAIG;AACH,MAAM,MAAM,SAAS,GACjB,QAAQ,GACR,WAAW,GACX,SAAS,GACT,SAAS,GACT,QAAQ,GACR,YAAY,GACZ,MAAM,GACN,WAAW,GACX,YAAY,GACZ,QAAQ,GACR,cAAc,GACd,gBAAgB,GAChB,gBAAgB,GAChB,UAAU,GACV,WAAW,GACX,YAAY,CAAC;AAEjB,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,cAAc,GAAG,QAAQ,CAAC;AAC3F,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEzF,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,SAAS,CAAC;IAChB;;;;OAIG;IACH,oBAAoB,EAAE,SAAS,MAAM,EAAE,CAAC;IAGxC,+EAA+E;IAC/E,MAAM,EAAE,KAAK,CAAC;IACd;;;OAGG;IACH,SAAS,EAAE,KAAK,CAAC;IAGjB,OAAO,EAAE,KAAK,CAAC;IACf,OAAO,EAAE,KAAK,CAAC;IACf,MAAM,EAAE,KAAK,CAAC;IACd,2DAA2D;IAC3D,UAAU,EAAE,KAAK,CAAC;IAGlB,yFAAyF;IACzF,IAAI,EAAE,KAAK,CAAC;IACZ,qDAAqD;IACrD,SAAS,EAAE,KAAK,CAAC;IACjB,yDAAyD;IACzD,UAAU,EAAE,KAAK,CAAC;IAGlB,+CAA+C;IAC/C,MAAM,EAAE,KAAK,CAAC;IACd,wDAAwD;IACxD,YAAY,EAAE,KAAK,CAAC;IACpB,2CAA2C;IAC3C,cAAc,EAAE,KAAK,CAAC;IAItB,4CAA4C;IAC5C,cAAc,EAAE,KAAK,CAAC;IACtB;;;OAGG;IACH,QAAQ,EAAE,KAAK,CAAC;IAChB,6CAA6C;IAC7C,SAAS,EAAE,KAAK,CAAC;IACjB,6CAA6C;IAC7C,UAAU,EAAE,KAAK,CAAC;IAGlB,+DAA+D;IAC/D,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACpC,+DAA+D;IAC/D,mBAAmB,EAAE,KAAK,CAAC;IAC3B,8CAA8C;IAC9C,UAAU,EAAE,MAAM,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;CAC3C;AA2JD,eAAO,MAAM,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,CAK3D,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,WAAkB,CAAC"}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Built-in colour palettes.
|
|
3
|
+
*
|
|
4
|
+
* A palette is a complete set of *semantic* tokens, named for what they mean
|
|
5
|
+
* rather than what they look like, so the same idea renders the same way
|
|
6
|
+
* everywhere. Two rules keep that true:
|
|
7
|
+
*
|
|
8
|
+
* 1. No hex literals outside this directory (enforced by
|
|
9
|
+
* `no-raw-colors.guard.test.ts`). A one-off `#a78bfa` in a component is how
|
|
10
|
+
* the palette drifted to 29 colours before.
|
|
11
|
+
* 2. No named terminal colours (`'green'`, `'gray'`). Those resolve against the
|
|
12
|
+
* *user's* terminal palette, so the app looks different on every machine and
|
|
13
|
+
* can land unreadable. Palettes use explicit `#rrggbb` instead.
|
|
14
|
+
*
|
|
15
|
+
* Contrast is a tested property, not a hope: see `palettes.test.ts`. A palette
|
|
16
|
+
* declares which terminal backgrounds it is designed for in
|
|
17
|
+
* `supportedBackgrounds`, and the test holds its body colours to WCAG 4.5:1 on
|
|
18
|
+
* each of them.
|
|
19
|
+
*/
|
|
20
|
+
export const THEME_NAMES = ['dark', 'light', 'high-contrast', 'mono'];
|
|
21
|
+
const MODE_BADGES_ON_LIGHT_TEXT = {
|
|
22
|
+
STANDARD: '#0f766e',
|
|
23
|
+
LITE: '#047857',
|
|
24
|
+
SHELL: '#b45309',
|
|
25
|
+
PLAN: '#0369a1',
|
|
26
|
+
ORCHESTRATOR: '#9f1239',
|
|
27
|
+
MENTOR: '#6d28d9',
|
|
28
|
+
};
|
|
29
|
+
const DARK = {
|
|
30
|
+
name: 'dark',
|
|
31
|
+
supportedBackgrounds: ['#0f172a', '#0d1117', '#000000'],
|
|
32
|
+
accent: '#22d3ee',
|
|
33
|
+
accentAlt: '#a78bfa',
|
|
34
|
+
success: '#10b981',
|
|
35
|
+
warning: '#f59e0b',
|
|
36
|
+
// Not #ef4444: on the pill/inline-code surface (#1e293b) that measured 3.9:1.
|
|
37
|
+
danger: '#f46060',
|
|
38
|
+
dangerSoft: '#f87171',
|
|
39
|
+
text: '#e2e8f0',
|
|
40
|
+
textMuted: '#94a3b8',
|
|
41
|
+
textSubtle: '#64748b',
|
|
42
|
+
border: '#334155',
|
|
43
|
+
borderActive: '#22d3ee',
|
|
44
|
+
codeBackground: '#1e293b',
|
|
45
|
+
userBackground: '#334155',
|
|
46
|
+
userText: '#e2e8f0',
|
|
47
|
+
reasoning: '#64748b',
|
|
48
|
+
toolOutput: '#94a3b8',
|
|
49
|
+
modeBadge: MODE_BADGES_ON_LIGHT_TEXT,
|
|
50
|
+
modeBadgeForeground: '#f8fafc',
|
|
51
|
+
toolStatus: {
|
|
52
|
+
pending: '#64748b',
|
|
53
|
+
running: '#f59e0b',
|
|
54
|
+
completed: '#10b981',
|
|
55
|
+
failed: '#f46060',
|
|
56
|
+
rejected: '#f46060',
|
|
57
|
+
},
|
|
58
|
+
};
|
|
59
|
+
const LIGHT = {
|
|
60
|
+
name: 'light',
|
|
61
|
+
supportedBackgrounds: ['#ffffff', '#f6f8fa'],
|
|
62
|
+
// Accent, success and warning are a step darker than the Tailwind 700s: on the pill/inline-code
|
|
63
|
+
// surface (#e2e8f0) those measured 4.1-4.3:1.
|
|
64
|
+
accent: '#0d6c85',
|
|
65
|
+
accentAlt: '#6d28d9',
|
|
66
|
+
success: '#147539',
|
|
67
|
+
warning: '#a64c08',
|
|
68
|
+
danger: '#b91c1c',
|
|
69
|
+
dangerSoft: '#c81e1e',
|
|
70
|
+
text: '#1e293b',
|
|
71
|
+
textMuted: '#475569',
|
|
72
|
+
textSubtle: '#64748b',
|
|
73
|
+
border: '#cbd5e1',
|
|
74
|
+
borderActive: '#0d6c85',
|
|
75
|
+
codeBackground: '#e2e8f0',
|
|
76
|
+
userBackground: '#e2e8f0',
|
|
77
|
+
userText: '#1e293b',
|
|
78
|
+
reasoning: '#64748b',
|
|
79
|
+
toolOutput: '#475569',
|
|
80
|
+
modeBadge: MODE_BADGES_ON_LIGHT_TEXT,
|
|
81
|
+
modeBadgeForeground: '#f8fafc',
|
|
82
|
+
toolStatus: {
|
|
83
|
+
pending: '#64748b',
|
|
84
|
+
running: '#a64c08',
|
|
85
|
+
completed: '#147539',
|
|
86
|
+
failed: '#b91c1c',
|
|
87
|
+
rejected: '#b91c1c',
|
|
88
|
+
},
|
|
89
|
+
};
|
|
90
|
+
/** Maximum separation on a dark terminal, for low vision and bright rooms. */
|
|
91
|
+
const HIGH_CONTRAST = {
|
|
92
|
+
name: 'high-contrast',
|
|
93
|
+
supportedBackgrounds: ['#000000', '#0d1117'],
|
|
94
|
+
accent: '#00e5ff',
|
|
95
|
+
accentAlt: '#d8b4fe',
|
|
96
|
+
success: '#4ade80',
|
|
97
|
+
warning: '#ffd33d',
|
|
98
|
+
danger: '#ff6b6b',
|
|
99
|
+
dangerSoft: '#ff9a9a',
|
|
100
|
+
text: '#ffffff',
|
|
101
|
+
textMuted: '#e6e6e6',
|
|
102
|
+
textSubtle: '#bfbfbf',
|
|
103
|
+
border: '#8b949e',
|
|
104
|
+
borderActive: '#00e5ff',
|
|
105
|
+
codeBackground: '#262626',
|
|
106
|
+
userBackground: '#ffffff',
|
|
107
|
+
userText: '#000000',
|
|
108
|
+
reasoning: '#bfbfbf',
|
|
109
|
+
toolOutput: '#e6e6e6',
|
|
110
|
+
modeBadge: {
|
|
111
|
+
STANDARD: '#0f766e',
|
|
112
|
+
LITE: '#047857',
|
|
113
|
+
SHELL: '#92400e',
|
|
114
|
+
PLAN: '#075985',
|
|
115
|
+
ORCHESTRATOR: '#9f1239',
|
|
116
|
+
MENTOR: '#6d28d9',
|
|
117
|
+
},
|
|
118
|
+
modeBadgeForeground: '#ffffff',
|
|
119
|
+
toolStatus: {
|
|
120
|
+
pending: '#bfbfbf',
|
|
121
|
+
running: '#ffd33d',
|
|
122
|
+
completed: '#4ade80',
|
|
123
|
+
failed: '#ff6b6b',
|
|
124
|
+
rejected: '#ff6b6b',
|
|
125
|
+
},
|
|
126
|
+
};
|
|
127
|
+
const NO_COLOR_BADGES = {
|
|
128
|
+
STANDARD: undefined,
|
|
129
|
+
LITE: undefined,
|
|
130
|
+
SHELL: undefined,
|
|
131
|
+
PLAN: undefined,
|
|
132
|
+
ORCHESTRATOR: undefined,
|
|
133
|
+
MENTOR: undefined,
|
|
134
|
+
};
|
|
135
|
+
/**
|
|
136
|
+
* No colour at all (`NO_COLOR`, `TERM=dumb`, or by choice). Everything falls
|
|
137
|
+
* back to the terminal defaults; meaning has to survive on glyphs and weight.
|
|
138
|
+
*/
|
|
139
|
+
const MONO = {
|
|
140
|
+
name: 'mono',
|
|
141
|
+
supportedBackgrounds: [],
|
|
142
|
+
accent: undefined,
|
|
143
|
+
accentAlt: undefined,
|
|
144
|
+
success: undefined,
|
|
145
|
+
warning: undefined,
|
|
146
|
+
danger: undefined,
|
|
147
|
+
dangerSoft: undefined,
|
|
148
|
+
text: undefined,
|
|
149
|
+
textMuted: undefined,
|
|
150
|
+
textSubtle: undefined,
|
|
151
|
+
border: undefined,
|
|
152
|
+
borderActive: undefined,
|
|
153
|
+
codeBackground: undefined,
|
|
154
|
+
userBackground: undefined,
|
|
155
|
+
userText: undefined,
|
|
156
|
+
reasoning: undefined,
|
|
157
|
+
toolOutput: undefined,
|
|
158
|
+
modeBadge: NO_COLOR_BADGES,
|
|
159
|
+
modeBadgeForeground: undefined,
|
|
160
|
+
toolStatus: {
|
|
161
|
+
pending: undefined,
|
|
162
|
+
running: undefined,
|
|
163
|
+
completed: undefined,
|
|
164
|
+
failed: undefined,
|
|
165
|
+
rejected: undefined,
|
|
166
|
+
},
|
|
167
|
+
};
|
|
168
|
+
export const THEMES = {
|
|
169
|
+
dark: DARK,
|
|
170
|
+
light: LIGHT,
|
|
171
|
+
'high-contrast': HIGH_CONTRAST,
|
|
172
|
+
mono: MONO,
|
|
173
|
+
};
|
|
174
|
+
export const DEFAULT_THEME = DARK;
|
|
175
|
+
//# sourceMappingURL=palettes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"palettes.js","sourceRoot":"","sources":["../../source/theme/palettes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { type ThemeName } from './palettes.js';
|
|
2
|
+
/** What `ui.theme` may hold: a concrete theme, or `auto` to pick one for the terminal. */
|
|
3
|
+
export type ThemeSetting = 'auto' | ThemeName;
|
|
4
|
+
export declare const THEME_SETTING_VALUES: readonly ["auto", "dark", "light", "high-contrast", "mono"];
|
|
5
|
+
export type BackgroundMode = 'dark' | 'light';
|
|
6
|
+
export type Rgb = {
|
|
7
|
+
r: number;
|
|
8
|
+
g: number;
|
|
9
|
+
b: number;
|
|
10
|
+
};
|
|
11
|
+
export interface ResolveThemeContext {
|
|
12
|
+
env: Readonly<Record<string, string | undefined>>;
|
|
13
|
+
/** What the terminal itself reported (OSC 11), when it answered. */
|
|
14
|
+
detectedBackground?: BackgroundMode;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Picks the concrete theme for a `ui.theme` setting.
|
|
18
|
+
*
|
|
19
|
+
* An explicit theme always wins, including over `NO_COLOR`: that variable is a
|
|
20
|
+
* default for software that has no user configuration, and the no-color.org
|
|
21
|
+
* convention lets explicit user config override it.
|
|
22
|
+
*
|
|
23
|
+
* For `auto`, evidence is ordered by how much it can be trusted: no-colour
|
|
24
|
+
* signals, then what the terminal actually reported, then the static
|
|
25
|
+
* `COLORFGBG` hint some terminals export, then dark (the common case).
|
|
26
|
+
*/
|
|
27
|
+
export declare function resolveThemeName(setting: ThemeSetting, context: ResolveThemeContext): ThemeName;
|
|
28
|
+
/**
|
|
29
|
+
* Whether startup should spend a round trip asking the terminal for its
|
|
30
|
+
* background. Only `auto` can use the answer, and only while colour is on:
|
|
31
|
+
* otherwise `resolveThemeName` ignores it, so asking would be pure cost.
|
|
32
|
+
*/
|
|
33
|
+
export declare function shouldDetectBackground(setting: ThemeSetting, env: ResolveThemeContext['env']): boolean;
|
|
34
|
+
/**
|
|
35
|
+
* `COLORFGBG` is `fg;bg` or `fg;default;bg` using ANSI palette indices. Indices
|
|
36
|
+
* 0-6 and 8 are dark; 7 and 9-15 are light. Anything else is unknown rather
|
|
37
|
+
* than guessed.
|
|
38
|
+
*/
|
|
39
|
+
export declare function parseColorFgBg(value: string | undefined): BackgroundMode | undefined;
|
|
40
|
+
/** Parses a terminal's reply to an OSC 11 (background colour) query. */
|
|
41
|
+
export declare function parseOsc11Response(data: string): Rgb | undefined;
|
|
42
|
+
/** Classifies by perceived luminance (Rec. 601), so saturated-but-dark colours stay dark. */
|
|
43
|
+
export declare function backgroundModeFromRgb({ r, g, b }: Rgb): BackgroundMode;
|
|
44
|
+
//# sourceMappingURL=resolve-theme.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-theme.d.ts","sourceRoot":"","sources":["../../source/theme/resolve-theme.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAE5D,0FAA0F;AAC1F,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,SAAS,CAAC;AAC9C,eAAO,MAAM,oBAAoB,6DAAoC,CAAC;AAEtE,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,OAAO,CAAC;AAC9C,MAAM,MAAM,GAAG,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtD,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;IAClD,oEAAoE;IACpE,kBAAkB,CAAC,EAAE,cAAc,CAAC;CACrC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,mBAAmB,GAAG,SAAS,CAU/F;AAID;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,EAAE,mBAAmB,CAAC,KAAK,CAAC,GAAG,OAAO,CAEtG;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,cAAc,GAAG,SAAS,CAiBpF;AAQD,wEAAwE;AACxE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,GAAG,SAAS,CAMhE;AAED,6FAA6F;AAC7F,wBAAgB,qBAAqB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,cAAc,CAEtE"}
|