@qduc/term2 0.30.0 → 0.31.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +24 -5
- package/dist/app.js.map +1 -1
- package/dist/build-info.json +2 -2
- package/dist/cli.js +36 -25
- package/dist/cli.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 +3 -2
- 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/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/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 +3 -47
- 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 +195 -290
- 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 -25
- 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 +11 -1
- package/dist/gateway/gateway.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.map +1 -1
- package/dist/hooks/settings-completion-config.js +2 -0
- package/dist/hooks/settings-completion-config.js.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.d.ts +1 -0
- package/dist/hooks/use-conversation.d.ts.map +1 -1
- package/dist/hooks/use-conversation.js +2 -2
- 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/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/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-service.d.ts.map +1 -1
- package/dist/services/conversation/conversation-service.js +16 -1
- package/dist/services/conversation/conversation-service.js.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/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/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/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 +66 -13
- package/dist/services/session/session-composition.js.map +1 -1
- package/dist/services/settings/settings-schema.d.ts +34 -0
- package/dist/services/settings/settings-schema.d.ts.map +1 -1
- package/dist/services/settings/settings-schema.js +16 -0
- package/dist/services/settings/settings-schema.js.map +1 -1
- package/dist/services/settings/settings-sources.d.ts +2 -0
- package/dist/services/settings/settings-sources.d.ts.map +1 -1
- package/dist/services/settings/settings-sources.js +2 -0
- 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 +2 -0
- package/dist/services/settings/settings-ui-metadata.js.map +1 -1
- package/dist/services/settings/test-helpers/settings-consumer-inventory.d.ts +1 -1
- package/dist/services/settings/test-helpers/settings-consumer-inventory.d.ts.map +1 -1
- package/dist/services/settings/test-helpers/settings-consumer-inventory.js +7 -1
- 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/subagent-async-registry.js +2 -2
- package/dist/services/subagents/subagent-async-registry.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/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 +466 -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/system/run-code/run-code-runtime.d.ts.map +1 -1
- package/dist/tools/system/run-code/run-code-runtime.js +87 -6
- package/dist/tools/system/run-code/run-code-runtime.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.map +1 -1
- package/dist/utils/value-suggestions.js +14 -0
- package/dist/utils/value-suggestions.js.map +1 -1
- package/package.json +3 -4
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Box, Text } from 'ink';
|
|
3
|
+
import { GLYPH_WARNING, useTheme } from '../../components/theme.js';
|
|
4
|
+
import { contextTone, gaugeBar } from '../shared/gauge.js';
|
|
5
|
+
import { useMeasuredWidth } from './measure.js';
|
|
6
|
+
import { cells, clip } from './width.js';
|
|
7
|
+
/** Cells of a gauge bar in the context pill and in each quota pill. */
|
|
8
|
+
const CONTEXT_GAUGE_CELLS = 6;
|
|
9
|
+
const QUOTA_GAUGE_CELLS = 4;
|
|
10
|
+
/** Columns a pill spends on its own padding, and between neighbouring pills. */
|
|
11
|
+
const PILL_PADDING = 2;
|
|
12
|
+
const PILL_GAP = 1;
|
|
13
|
+
/** A pill's text is never clipped below this, however tight the row. */
|
|
14
|
+
const MIN_CLIPPED_TEXT = 6;
|
|
15
|
+
/** Roles that would be too faint on the pill surface are lifted one step, so text stays readable. */
|
|
16
|
+
const onSurface = (tone) => tone === undefined || tone === 'textSubtle' ? 'textMuted' : tone;
|
|
17
|
+
const segmentPiece = (segment, pill, overrides = {}) => ({
|
|
18
|
+
id: segment.id,
|
|
19
|
+
pill,
|
|
20
|
+
text: segment.text.trim().replace(/^·\s*/, ''),
|
|
21
|
+
tone: segment.tone,
|
|
22
|
+
bold: segment.bold,
|
|
23
|
+
tier: segment.tier,
|
|
24
|
+
...overrides,
|
|
25
|
+
});
|
|
26
|
+
const findSegment = (list, id) => list.find((segment) => segment.id === id && segment.text);
|
|
27
|
+
function configPieces(view) {
|
|
28
|
+
const pieces = [];
|
|
29
|
+
const push = (id, pill, overrides = {}) => {
|
|
30
|
+
const segment = findSegment(view.config, id);
|
|
31
|
+
if (segment)
|
|
32
|
+
pieces.push(segmentPiece(segment, pill, overrides));
|
|
33
|
+
};
|
|
34
|
+
const safety = findSegment(view.config, 'safety');
|
|
35
|
+
if (safety) {
|
|
36
|
+
pieces.push(segmentPiece(safety, 'safety', {
|
|
37
|
+
// The marker is a shape as well as a colour: a diamond for "contained", a triangle for "not".
|
|
38
|
+
text: `${safety.tone === 'danger' ? GLYPH_WARNING : '◆'} ${safety.text.trim()}`,
|
|
39
|
+
}));
|
|
40
|
+
}
|
|
41
|
+
push('ssh-marker', 'ssh');
|
|
42
|
+
push('ssh-detail', 'ssh');
|
|
43
|
+
push('mode', 'mode');
|
|
44
|
+
push('queue', 'queue');
|
|
45
|
+
push('provider-model', 'model');
|
|
46
|
+
push('reasoning', 'model', { glue: ' · ' });
|
|
47
|
+
push('mentor', 'mentor');
|
|
48
|
+
const mentor = pieces.find((piece) => piece.id === 'mentor');
|
|
49
|
+
if (mentor)
|
|
50
|
+
mentor.text = `mentor ${mentor.text}`;
|
|
51
|
+
return pieces;
|
|
52
|
+
}
|
|
53
|
+
function metricPieces(view) {
|
|
54
|
+
const pieces = [];
|
|
55
|
+
const context = findSegment(view.metrics, 'context');
|
|
56
|
+
if (context) {
|
|
57
|
+
const percent = view.gauges.contextPercent;
|
|
58
|
+
if (percent === undefined) {
|
|
59
|
+
pieces.push(segmentPiece(context, 'context'));
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
const clamped = Math.min(100, Math.max(0, percent));
|
|
63
|
+
pieces.push({
|
|
64
|
+
id: 'context',
|
|
65
|
+
pill: 'context',
|
|
66
|
+
text: `ctx ${gaugeBar(clamped, CONTEXT_GAUGE_CELLS)} ${percent}%`,
|
|
67
|
+
tone: contextTone(percent),
|
|
68
|
+
tier: context.tier,
|
|
69
|
+
});
|
|
70
|
+
// The used/window figure the bar summarises; first to go when the row is tight.
|
|
71
|
+
const detail = context.text.replace(/^ctx\s+/i, '').trim();
|
|
72
|
+
if (detail.includes('/')) {
|
|
73
|
+
pieces.push({ id: 'context-detail', pill: 'context', text: detail, tone: 'textMuted', tier: -1 });
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
const tokens = findSegment(view.metrics, 'tokens');
|
|
78
|
+
if (tokens)
|
|
79
|
+
pieces.push(segmentPiece(tokens, 'tokens'));
|
|
80
|
+
const speed = findSegment(view.metrics, 'speed');
|
|
81
|
+
if (speed)
|
|
82
|
+
pieces.push(segmentPiece(speed, 'tokens', { tone: 'textMuted' }));
|
|
83
|
+
const cache = findSegment(view.metrics, 'cache');
|
|
84
|
+
if (cache)
|
|
85
|
+
pieces.push(segmentPiece(cache, 'cache'));
|
|
86
|
+
const cost = findSegment(view.metrics, 'cost');
|
|
87
|
+
if (cost)
|
|
88
|
+
pieces.push(segmentPiece(cost, 'cost'));
|
|
89
|
+
return pieces;
|
|
90
|
+
}
|
|
91
|
+
function toPills(pieces, dropped) {
|
|
92
|
+
const pills = [];
|
|
93
|
+
for (const piece of pieces) {
|
|
94
|
+
if (dropped.has(piece.id))
|
|
95
|
+
continue;
|
|
96
|
+
const existing = pills.find((pill) => pill.id === piece.pill);
|
|
97
|
+
if (existing)
|
|
98
|
+
existing.pieces.push(piece);
|
|
99
|
+
else
|
|
100
|
+
pills.push({ id: piece.pill, pieces: [piece] });
|
|
101
|
+
}
|
|
102
|
+
return pills;
|
|
103
|
+
}
|
|
104
|
+
const pillText = (pill) => pill.pieces.reduce((out, piece, index) => (index === 0 ? piece.text : `${out}${piece.glue ?? ' '}${piece.text}`), '');
|
|
105
|
+
const rowWidth = (pills, framing) => pills.reduce((total, pill) => total + cells(pillText(pill)) + framing, 0) + Math.max(0, pills.length - 1) * PILL_GAP;
|
|
106
|
+
/**
|
|
107
|
+
* Fits a row to `budget` columns: drops pieces lowest tier first, exactly as the classic
|
|
108
|
+
* bar would, and only when that is not enough clips the longest remaining piece.
|
|
109
|
+
*/
|
|
110
|
+
function fitRow(pieces, budget, framing) {
|
|
111
|
+
const dropped = new Set();
|
|
112
|
+
const order = pieces
|
|
113
|
+
.filter((piece) => piece.tier !== undefined)
|
|
114
|
+
.sort((a, b) => a.tier - b.tier)
|
|
115
|
+
.map((piece) => piece.id);
|
|
116
|
+
let pills = toPills(pieces, dropped);
|
|
117
|
+
for (const id of order) {
|
|
118
|
+
if (rowWidth(pills, framing) <= budget)
|
|
119
|
+
break;
|
|
120
|
+
dropped.add(id);
|
|
121
|
+
pills = toPills(pieces, dropped);
|
|
122
|
+
}
|
|
123
|
+
const working = pieces.filter((piece) => !dropped.has(piece.id)).map((piece) => ({ ...piece }));
|
|
124
|
+
for (let attempt = 0; attempt < 6; attempt += 1) {
|
|
125
|
+
pills = toPills(working, new Set());
|
|
126
|
+
const overflow = rowWidth(pills, framing) - budget;
|
|
127
|
+
if (overflow <= 0)
|
|
128
|
+
break;
|
|
129
|
+
const longest = working.reduce((best, piece) => (cells(piece.text) > cells(best.text) ? piece : best), working[0]);
|
|
130
|
+
if (!longest || cells(longest.text) <= MIN_CLIPPED_TEXT)
|
|
131
|
+
break;
|
|
132
|
+
longest.text = clip(longest.text, Math.max(MIN_CLIPPED_TEXT, cells(longest.text) - overflow));
|
|
133
|
+
}
|
|
134
|
+
return pills;
|
|
135
|
+
}
|
|
136
|
+
/** One pill: a quiet surface behind the text. With no colours at all, `‹ ›` stand in for the surface. */
|
|
137
|
+
const PillView = ({ pill }) => {
|
|
138
|
+
const theme = useTheme();
|
|
139
|
+
const surface = theme.codeBackground;
|
|
140
|
+
const frame = surface === undefined;
|
|
141
|
+
return (React.createElement(Text, { backgroundColor: surface, wrap: "truncate-end" },
|
|
142
|
+
frame ? '‹ ' : ' ',
|
|
143
|
+
pill.pieces.map((piece, index) => (React.createElement(React.Fragment, { key: piece.id },
|
|
144
|
+
index > 0 ? piece.glue ?? ' ' : '',
|
|
145
|
+
React.createElement(Text, { color: theme[onSurface(piece.tone)], bold: piece.bold }, piece.text)))),
|
|
146
|
+
frame ? ' ›' : ' '));
|
|
147
|
+
};
|
|
148
|
+
const Row = ({ pills }) => (React.createElement(Box, { flexWrap: "wrap", columnGap: PILL_GAP }, pills.map((pill) => (React.createElement(PillView, { key: pill.id, pill: pill })))));
|
|
149
|
+
const Alerts = ({ alerts }) => {
|
|
150
|
+
const theme = useTheme();
|
|
151
|
+
return (React.createElement(Box, { flexWrap: "wrap", columnGap: 2 }, alerts.map((alert) => (React.createElement(Text, { key: alert.id }, alert.parts.map((part, index) => (React.createElement(Text, { key: index, color: theme[part.tone], bold: part.bold }, part.text))))))));
|
|
152
|
+
};
|
|
153
|
+
const quotaPill = (window) => ({
|
|
154
|
+
id: `quota-${window.label}`,
|
|
155
|
+
pieces: [
|
|
156
|
+
{
|
|
157
|
+
id: `quota-${window.label}`,
|
|
158
|
+
pill: `quota-${window.label}`,
|
|
159
|
+
text: `${window.label} ${gaugeBar(window.percent, QUOTA_GAUGE_CELLS)} ${window.percent}%${window.resetText ? `→${window.resetText}` : ''}`,
|
|
160
|
+
tone: contextTone(window.percent),
|
|
161
|
+
},
|
|
162
|
+
],
|
|
163
|
+
});
|
|
164
|
+
/**
|
|
165
|
+
* A row of pills: safety, who is answering, then this turn's numbers (the context
|
|
166
|
+
* gauge, tokens, cache, cost). Everything that is not steady state, the alerts and the
|
|
167
|
+
* provider quota, sits on a second row that exists only while there is something to say.
|
|
168
|
+
*/
|
|
169
|
+
export const CardsStatusBar = ({ columns, config, metrics, alerts, quotaText, gauges }) => {
|
|
170
|
+
const framing = useTheme().codeBackground === undefined ? PILL_PADDING + 2 : PILL_PADDING;
|
|
171
|
+
// The row's real width is measured, since `columns` is the terminal's and not always known.
|
|
172
|
+
const [measureRef, measured] = useMeasuredWidth(columns, columns);
|
|
173
|
+
const budget = Math.max(1, measured);
|
|
174
|
+
const segments = { config, metrics, gauges };
|
|
175
|
+
const configPiecesAll = configPieces(segments);
|
|
176
|
+
const metricPiecesAll = metricPieces(segments);
|
|
177
|
+
const configFit = fitRow(configPiecesAll, budget, framing);
|
|
178
|
+
const metricsFit = fitRow(metricPiecesAll, budget, framing);
|
|
179
|
+
const fitsOnOneRow = configFit.length === 0 ||
|
|
180
|
+
metricsFit.length === 0 ||
|
|
181
|
+
rowWidth(configFit, framing) + PILL_GAP + rowWidth(metricsFit, framing) <= budget;
|
|
182
|
+
// Before giving the numbers a row of their own, see whether everything but the
|
|
183
|
+
// garnish (the used/window figure and the live rate) fits on one: a single row is
|
|
184
|
+
// the quieter bar, and those two are the least that is lost.
|
|
185
|
+
const essential = toPills([...configPiecesAll, ...metricPiecesAll].filter((piece) => piece.tier === undefined || piece.tier > 0), new Set());
|
|
186
|
+
const essentialFitsOnOneRow = rowWidth(essential, framing) <= budget;
|
|
187
|
+
const pillRows = fitsOnOneRow
|
|
188
|
+
? [[...configFit, ...metricsFit]]
|
|
189
|
+
: essentialFitsOnOneRow
|
|
190
|
+
? [essential]
|
|
191
|
+
: [configFit, metricsFit];
|
|
192
|
+
const quotaPills = gauges.quotaWindows.length > 0 ? gauges.quotaWindows.map(quotaPill) : [];
|
|
193
|
+
const hasSecondRow = alerts.length > 0 || quotaPills.length > 0 || quotaText !== '';
|
|
194
|
+
return (React.createElement(Box, { marginTop: 1, flexDirection: "column", width: "100%", ref: measureRef },
|
|
195
|
+
pillRows.map((pills) => (React.createElement(Row, { key: pills.map((pill) => pill.id).join(), pills: pills }))),
|
|
196
|
+
hasSecondRow && (React.createElement(Box, { flexDirection: "column" },
|
|
197
|
+
alerts.length > 0 && React.createElement(Alerts, { alerts: alerts }),
|
|
198
|
+
quotaPills.length > 0 ? React.createElement(Row, { pills: quotaPills }) : quotaText !== '' && React.createElement(QuotaText, { text: quotaText })))));
|
|
199
|
+
};
|
|
200
|
+
/** The container's own quota text, for providers whose windows arrive without structure. */
|
|
201
|
+
const QuotaText = ({ text }) => {
|
|
202
|
+
const theme = useTheme();
|
|
203
|
+
return React.createElement(Text, { color: theme.textMuted }, text);
|
|
204
|
+
};
|
|
205
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../source/skins/cards/status.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type FC } from 'react';
|
|
2
|
+
import type { ToolFrameProps, ToolGroupSummaryView, ToolHeaderProps } from '../types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Standard display only: the header and the full output share one rounded card whose
|
|
5
|
+
* border is the status colour. Concise calls stay single bare lines, so a long run of
|
|
6
|
+
* calls reads as a list rather than a wall of boxes.
|
|
7
|
+
*/
|
|
8
|
+
export declare const CardsToolFrame: FC<ToolFrameProps>;
|
|
9
|
+
/**
|
|
10
|
+
* The first row of a card: status glyph, then the tool name and action, with the
|
|
11
|
+
* glyph in its own column so a long command wraps underneath the action rather than
|
|
12
|
+
* under the glyph. Settled concise calls colour only the glyph and keep the text quiet.
|
|
13
|
+
*/
|
|
14
|
+
export declare const CardsToolHeader: FC<ToolHeaderProps>;
|
|
15
|
+
/**
|
|
16
|
+
* One line for a run of calls. A partly-failed run keeps the neutral summary and the
|
|
17
|
+
* green marker, because most of what it did succeeded; the failure line beneath, with
|
|
18
|
+
* its own red marker, is what carries the bad news. Both lines wrap rather than clip.
|
|
19
|
+
*/
|
|
20
|
+
export declare const CardsToolGroupSummary: FC<ToolGroupSummaryView>;
|
|
21
|
+
//# sourceMappingURL=tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../source/skins/cards/tools.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAKvC,OAAO,KAAK,EAAE,cAAc,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AA6BzF;;;;GAIG;AACH,eAAO,MAAM,cAAc,EAAE,EAAE,CAAC,cAAc,CAQ7C,CAAC;AAOF;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,EAAE,CAAC,eAAe,CA2D/C,CAAC;AAQF;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,EAAE,EAAE,CAAC,oBAAoB,CAe1D,CAAC"}
|
|
@@ -0,0 +1,101 @@
|
|
|
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 { Card } from './card.js';
|
|
6
|
+
/** Only a running call animates, and only this component ticks, so settled output costs no timers. */
|
|
7
|
+
const RunningGlyph = ({ color }) => {
|
|
8
|
+
const frame = useSpinnerFrame(BRAILLE_SPINNER, true);
|
|
9
|
+
return (React.createElement(Text, { color: color, bold: true }, frame));
|
|
10
|
+
};
|
|
11
|
+
/** The status marker: a spinner while running, otherwise the shared glyph for the status. */
|
|
12
|
+
const StatusGlyph = ({ status }) => {
|
|
13
|
+
const theme = useTheme();
|
|
14
|
+
const color = theme.toolStatus[status];
|
|
15
|
+
if (status === 'running')
|
|
16
|
+
return React.createElement(RunningGlyph, { color: color });
|
|
17
|
+
return (React.createElement(Text, { color: color, bold: true }, TOOL_STATUS_GLYPH[status]));
|
|
18
|
+
};
|
|
19
|
+
/** A failed or refused call gets a heavier border, so it stands out without relying on red. */
|
|
20
|
+
const shapeFor = (status) => status === 'failed' || status === 'rejected' ? 'bold' : 'round';
|
|
21
|
+
/**
|
|
22
|
+
* Standard display only: the header and the full output share one rounded card whose
|
|
23
|
+
* border is the status colour. Concise calls stay single bare lines, so a long run of
|
|
24
|
+
* calls reads as a list rather than a wall of boxes.
|
|
25
|
+
*/
|
|
26
|
+
export const CardsToolFrame = ({ status, display, children }) => {
|
|
27
|
+
const theme = useTheme();
|
|
28
|
+
if (display !== 'standard')
|
|
29
|
+
return React.createElement(React.Fragment, null, children);
|
|
30
|
+
return (React.createElement(Card, { color: theme.toolStatus[status], shape: shapeFor(status) }, children));
|
|
31
|
+
};
|
|
32
|
+
const IN_FLIGHT = new Set(['pending', 'running']);
|
|
33
|
+
/** The tool's own name labels a call unless the action already is the command. */
|
|
34
|
+
const isShellLike = (toolName) => toolName === undefined || toolName === 'shell';
|
|
35
|
+
/**
|
|
36
|
+
* The first row of a card: status glyph, then the tool name and action, with the
|
|
37
|
+
* glyph in its own column so a long command wraps underneath the action rather than
|
|
38
|
+
* under the glyph. Settled concise calls colour only the glyph and keep the text quiet.
|
|
39
|
+
*/
|
|
40
|
+
export const CardsToolHeader = ({ status, display, toolName, nested, action, meta, trailing, textColor, }) => {
|
|
41
|
+
const theme = useTheme();
|
|
42
|
+
if (display === 'standard') {
|
|
43
|
+
return (React.createElement(Box, null,
|
|
44
|
+
React.createElement(Box, { flexShrink: 0, marginRight: 1 },
|
|
45
|
+
React.createElement(StatusGlyph, { status: status })),
|
|
46
|
+
React.createElement(Box, { flexShrink: 1, flexGrow: 1 },
|
|
47
|
+
React.createElement(Text, null,
|
|
48
|
+
!isShellLike(toolName) && React.createElement(Text, { color: theme.textSubtle },
|
|
49
|
+
toolName,
|
|
50
|
+
" "),
|
|
51
|
+
action,
|
|
52
|
+
meta,
|
|
53
|
+
trailing))));
|
|
54
|
+
}
|
|
55
|
+
if (nested) {
|
|
56
|
+
return (React.createElement(Box, null,
|
|
57
|
+
React.createElement(Text, { wrap: "truncate", color: theme.textSubtle },
|
|
58
|
+
React.createElement(StatusGlyph, { status: status }),
|
|
59
|
+
" ",
|
|
60
|
+
action,
|
|
61
|
+
meta)));
|
|
62
|
+
}
|
|
63
|
+
if (IN_FLIGHT.has(status)) {
|
|
64
|
+
return (React.createElement(Box, null,
|
|
65
|
+
React.createElement(Text, null,
|
|
66
|
+
React.createElement(StatusGlyph, { status: status }),
|
|
67
|
+
" ",
|
|
68
|
+
action,
|
|
69
|
+
meta,
|
|
70
|
+
trailing)));
|
|
71
|
+
}
|
|
72
|
+
return (React.createElement(Text, { color: textColor || theme.textMuted },
|
|
73
|
+
React.createElement(StatusGlyph, { status: status }),
|
|
74
|
+
" ",
|
|
75
|
+
action,
|
|
76
|
+
trailing));
|
|
77
|
+
};
|
|
78
|
+
const GROUP_MARKER_KIND = {
|
|
79
|
+
completed: 'completed',
|
|
80
|
+
partial: 'completed',
|
|
81
|
+
failed: 'failed',
|
|
82
|
+
};
|
|
83
|
+
/**
|
|
84
|
+
* One line for a run of calls. A partly-failed run keeps the neutral summary and the
|
|
85
|
+
* green marker, because most of what it did succeeded; the failure line beneath, with
|
|
86
|
+
* its own red marker, is what carries the bad news. Both lines wrap rather than clip.
|
|
87
|
+
*/
|
|
88
|
+
export const CardsToolGroupSummary = ({ status, summary, failures }) => {
|
|
89
|
+
const theme = useTheme();
|
|
90
|
+
const kind = GROUP_MARKER_KIND[status];
|
|
91
|
+
return (React.createElement(Box, { flexDirection: "column" },
|
|
92
|
+
React.createElement(Text, { color: theme.textMuted },
|
|
93
|
+
React.createElement(StatusGlyph, { status: kind }),
|
|
94
|
+
" ",
|
|
95
|
+
summary),
|
|
96
|
+
failures !== '' && status !== 'failed' && (React.createElement(Text, { color: theme.textMuted },
|
|
97
|
+
React.createElement(StatusGlyph, { status: "failed" }),
|
|
98
|
+
" ",
|
|
99
|
+
failures))));
|
|
100
|
+
};
|
|
101
|
+
//# sourceMappingURL=tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../source/skins/cards/tools.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"width.d.ts","sourceRoot":"","sources":["../../../source/skins/cards/width.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,KAAK,UAAW,MAAM,KAAG,MAC4D,CAAC;AAEnG,qEAAqE;AACrE,eAAO,MAAM,IAAI,UAAW,MAAM,YAAY,MAAM,KAAG,MAStD,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Terminal cells a string occupies, for laying out chips and pills before Ink measures them.
|
|
3
|
+
*
|
|
4
|
+
* `terminalTextWidth` counts every non-ASCII code point as two cells, which is the safe
|
|
5
|
+
* default for arbitrary text but doubles the box-drawing and gauge glyphs these layouts
|
|
6
|
+
* are made of. This counts those as one and only the genuinely wide ranges (CJK,
|
|
7
|
+
* fullwidth forms, emoji) as two.
|
|
8
|
+
*/
|
|
9
|
+
const isWide = (code) => (code >= 0x1100 && code <= 0x115f) ||
|
|
10
|
+
(code >= 0x2e80 && code <= 0xa4cf) ||
|
|
11
|
+
(code >= 0xac00 && code <= 0xd7a3) ||
|
|
12
|
+
(code >= 0xf900 && code <= 0xfaff) ||
|
|
13
|
+
(code >= 0xfe30 && code <= 0xfe6f) ||
|
|
14
|
+
(code >= 0xff00 && code <= 0xff60) ||
|
|
15
|
+
(code >= 0xffe0 && code <= 0xffe6) ||
|
|
16
|
+
(code >= 0x1f300 && code <= 0x1faff);
|
|
17
|
+
export const cells = (value) => Array.from(value).reduce((columns, char) => columns + (isWide(char.codePointAt(0)) ? 2 : 1), 0);
|
|
18
|
+
/** Clips to `maxCells`, ending in an ellipsis when it had to cut. */
|
|
19
|
+
export const clip = (value, maxCells) => {
|
|
20
|
+
if (cells(value) <= maxCells)
|
|
21
|
+
return value;
|
|
22
|
+
if (maxCells <= 1)
|
|
23
|
+
return '…';
|
|
24
|
+
let out = '';
|
|
25
|
+
for (const char of value) {
|
|
26
|
+
if (cells(out) + cells(char) + 1 > maxCells)
|
|
27
|
+
break;
|
|
28
|
+
out += char;
|
|
29
|
+
}
|
|
30
|
+
return `${out}…`;
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=width.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"width.js","sourceRoot":"","sources":["../../../source/skins/cards/width.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,MAAM,GAAG,CAAC,IAAY,EAAW,EAAE,CACvC,CAAC,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC;IAClC,CAAC,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC;IAClC,CAAC,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC;IAClC,CAAC,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC;IAClC,CAAC,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC;IAClC,CAAC,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC;IAClC,CAAC,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC;IAClC,CAAC,IAAI,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,CAAC,CAAC;AAEvC,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,KAAa,EAAU,EAAE,CAC7C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAEnG,qEAAqE;AACrE,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,QAAgB,EAAU,EAAE;IAC9D,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC3C,IAAI,QAAQ,IAAI,CAAC;QAAE,OAAO,GAAG,CAAC;IAC9B,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ;YAAE,MAAM;QACnD,GAAG,IAAI,IAAI,CAAC;IACd,CAAC;IACD,OAAO,GAAG,GAAG,GAAG,CAAC;AACnB,CAAC,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type FC, type ReactNode } from 'react';
|
|
2
|
+
import type { ApprovalChoicesProps, ApprovalFrameProps } from '../types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Left: the options. Right: what the selected one does. Below 90 columns the
|
|
5
|
+
* description drops underneath instead of beside the list. Exported because the
|
|
6
|
+
* ask-user prompt, which skins do not yet restyle, shares it.
|
|
7
|
+
*/
|
|
8
|
+
export declare const TwoPaneApprovalLayout: FC<{
|
|
9
|
+
left: ReactNode;
|
|
10
|
+
rightTitle: ReactNode;
|
|
11
|
+
rightDescription: ReactNode;
|
|
12
|
+
}>;
|
|
13
|
+
/**
|
|
14
|
+
* A title line, then the request. The riskiest class gets a red left border, not
|
|
15
|
+
* just red text, so it is recognisable by shape before the words are read.
|
|
16
|
+
*/
|
|
17
|
+
export declare const ClassicApprovalFrame: FC<ApprovalFrameProps>;
|
|
18
|
+
export declare const ClassicApprovalChoices: FC<ApprovalChoicesProps>;
|
|
19
|
+
//# sourceMappingURL=approval.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"approval.d.ts","sourceRoot":"","sources":["../../../source/skins/classic/approval.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,KAAK,EAAE,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvD,OAAO,KAAK,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAE5E;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,EAAE,EAAE,CAAC;IACrC,IAAI,EAAE,SAAS,CAAC;IAChB,UAAU,EAAE,SAAS,CAAC;IACtB,gBAAgB,EAAE,SAAS,CAAC;CAC7B,CAuCA,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,EAAE,CAAC,kBAAkB,CAyBvD,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,EAAE,CAAC,oBAAoB,CAkC3D,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Box, Text, useStdout } from 'ink';
|
|
3
|
+
import { SelectionMarker } from '../../components/common/SelectionMarker.js';
|
|
4
|
+
import { useTheme } from '../../components/theme.js';
|
|
5
|
+
/**
|
|
6
|
+
* Left: the options. Right: what the selected one does. Below 90 columns the
|
|
7
|
+
* description drops underneath instead of beside the list. Exported because the
|
|
8
|
+
* ask-user prompt, which skins do not yet restyle, shares it.
|
|
9
|
+
*/
|
|
10
|
+
export const TwoPaneApprovalLayout = ({ left, rightTitle, rightDescription }) => {
|
|
11
|
+
const theme = useTheme();
|
|
12
|
+
const { stdout } = useStdout();
|
|
13
|
+
const isNarrow = (stdout.columns ?? 100) < 90;
|
|
14
|
+
const description = (React.createElement(Box, { flexDirection: "column", width: isNarrow ? '100%' : '50%', paddingLeft: isNarrow ? 0 : 2, marginTop: isNarrow ? 1 : 0, borderStyle: isNarrow ? undefined : 'single', borderTop: false, borderBottom: false, borderRight: false, borderLeft: !isNarrow, borderColor: theme.border },
|
|
15
|
+
React.createElement(Text, { bold: true, color: theme.warning }, rightTitle),
|
|
16
|
+
React.createElement(Box, { marginTop: 1 }, rightDescription ? (React.createElement(Text, { color: theme.text }, rightDescription)) : (React.createElement(Text, { color: theme.textSubtle, italic: true }, "No description available.")))));
|
|
17
|
+
return (React.createElement(Box, { flexDirection: isNarrow ? 'column' : 'row', width: "100%", marginTop: 1 },
|
|
18
|
+
React.createElement(Box, { flexDirection: "column", width: isNarrow ? '100%' : '50%', flexShrink: 0, flexGrow: 0 }, left),
|
|
19
|
+
description));
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* A title line, then the request. The riskiest class gets a red left border, not
|
|
23
|
+
* just red text, so it is recognisable by shape before the words are read.
|
|
24
|
+
*/
|
|
25
|
+
export const ClassicApprovalFrame = ({ tone, header, subheader, children }) => {
|
|
26
|
+
const theme = useTheme();
|
|
27
|
+
return (React.createElement(Box, { flexDirection: "column" },
|
|
28
|
+
React.createElement(Text, { color: theme.warning }, header),
|
|
29
|
+
subheader,
|
|
30
|
+
tone === 'danger' ? (React.createElement(Box, { flexDirection: "column", borderStyle: "single", borderTop: false, borderBottom: false, borderRight: false, borderLeft: true, borderColor: theme.danger, paddingLeft: 1, marginTop: 1 }, children)) : (children)));
|
|
31
|
+
};
|
|
32
|
+
export const ClassicApprovalChoices = ({ question, options, selectedIndex, layout, description, }) => {
|
|
33
|
+
const theme = useTheme();
|
|
34
|
+
const rows = options.map((option, index) => {
|
|
35
|
+
const isSelected = selectedIndex === index;
|
|
36
|
+
return (React.createElement(Box, { key: option.label },
|
|
37
|
+
React.createElement(SelectionMarker, { selected: isSelected }),
|
|
38
|
+
React.createElement(Text, { color: isSelected ? theme[option.tone] : undefined },
|
|
39
|
+
index + 1,
|
|
40
|
+
". ",
|
|
41
|
+
option.label)));
|
|
42
|
+
});
|
|
43
|
+
if (layout === 'list') {
|
|
44
|
+
return React.createElement(React.Fragment, null, rows);
|
|
45
|
+
}
|
|
46
|
+
return (React.createElement(React.Fragment, null,
|
|
47
|
+
question !== undefined && React.createElement(Text, null, question),
|
|
48
|
+
React.createElement(TwoPaneApprovalLayout, { left: rows, rightTitle: description?.title ?? 'Option', rightDescription: description?.text })));
|
|
49
|
+
};
|
|
50
|
+
//# sourceMappingURL=approval.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"approval.js","sourceRoot":"","sources":["../../../source/skins/classic/approval.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Skin } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* The original look. It is also the base every other skin spreads from, so a skin
|
|
4
|
+
* only has to override the slots it actually draws differently.
|
|
5
|
+
*/
|
|
6
|
+
export declare const classicSkin: Skin;
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../source/skins/classic/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAmBxC;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,IAwBzB,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { ClassicApprovalChoices, ClassicApprovalFrame } from './approval.js';
|
|
2
|
+
import { ClassicHints, ClassicInputFrame, ClassicLiveDivider, ClassicPromptMarker, ClassicShellActivity, ClassicTaskPanel, ClassicWorkingIndicator, } from './live-region.js';
|
|
3
|
+
import { ClassicAssistantFrame, ClassicBanner, ClassicUserMessage } from './messages.js';
|
|
4
|
+
import { ClassicMenuFrame } from './menu.js';
|
|
5
|
+
import { ClassicQuestionPrompt } from './question.js';
|
|
6
|
+
import { ClassicStatusBar } from './status.js';
|
|
7
|
+
import { ClassicSubagentFeed } from './subagent.js';
|
|
8
|
+
import { ClassicToolSection } from './tool-section.js';
|
|
9
|
+
import { ClassicToolFrame, ClassicToolGroupSummary, ClassicToolHeader } from './tools.js';
|
|
10
|
+
/**
|
|
11
|
+
* The original look. It is also the base every other skin spreads from, so a skin
|
|
12
|
+
* only has to override the slots it actually draws differently.
|
|
13
|
+
*/
|
|
14
|
+
export const classicSkin = {
|
|
15
|
+
name: 'classic',
|
|
16
|
+
assistantGutter: 0,
|
|
17
|
+
taskPanelGutter: 0,
|
|
18
|
+
Banner: ClassicBanner,
|
|
19
|
+
UserMessage: ClassicUserMessage,
|
|
20
|
+
AssistantFrame: ClassicAssistantFrame,
|
|
21
|
+
ToolFrame: ClassicToolFrame,
|
|
22
|
+
ToolHeader: ClassicToolHeader,
|
|
23
|
+
ToolGroupSummary: ClassicToolGroupSummary,
|
|
24
|
+
WorkingIndicator: ClassicWorkingIndicator,
|
|
25
|
+
LiveDivider: ClassicLiveDivider,
|
|
26
|
+
PromptMarker: ClassicPromptMarker,
|
|
27
|
+
InputFrame: ClassicInputFrame,
|
|
28
|
+
Hints: ClassicHints,
|
|
29
|
+
ShellActivity: ClassicShellActivity,
|
|
30
|
+
TaskPanel: ClassicTaskPanel,
|
|
31
|
+
ApprovalFrame: ClassicApprovalFrame,
|
|
32
|
+
ApprovalChoices: ClassicApprovalChoices,
|
|
33
|
+
QuestionPrompt: ClassicQuestionPrompt,
|
|
34
|
+
SubagentFeed: ClassicSubagentFeed,
|
|
35
|
+
ToolSection: ClassicToolSection,
|
|
36
|
+
MenuFrame: ClassicMenuFrame,
|
|
37
|
+
StatusBar: ClassicStatusBar,
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../source/skins/classic/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC7E,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACzF,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE1F;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAS;IAC/B,IAAI,EAAE,SAAS;IACf,eAAe,EAAE,CAAC;IAClB,eAAe,EAAE,CAAC;IAClB,MAAM,EAAE,aAAa;IACrB,WAAW,EAAE,kBAAkB;IAC/B,cAAc,EAAE,qBAAqB;IACrC,SAAS,EAAE,gBAAgB;IAC3B,UAAU,EAAE,iBAAiB;IAC7B,gBAAgB,EAAE,uBAAuB;IACzC,gBAAgB,EAAE,uBAAuB;IACzC,WAAW,EAAE,kBAAkB;IAC/B,YAAY,EAAE,mBAAmB;IACjC,UAAU,EAAE,iBAAiB;IAC7B,KAAK,EAAE,YAAY;IACnB,aAAa,EAAE,oBAAoB;IACnC,SAAS,EAAE,gBAAgB;IAC3B,aAAa,EAAE,oBAAoB;IACnC,eAAe,EAAE,sBAAsB;IACvC,cAAc,EAAE,qBAAqB;IACrC,YAAY,EAAE,mBAAmB;IACjC,WAAW,EAAE,kBAAkB;IAC/B,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,gBAAgB;CAC5B,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type FC } from 'react';
|
|
2
|
+
import type { HintsProps, ShellActivityProps, TaskPanelProps, InputFrameProps, PromptMarkerProps, WorkingIndicatorView } from '../types.js';
|
|
3
|
+
/** What the agent is doing right now, as a single muted line. */
|
|
4
|
+
export declare const ClassicWorkingIndicator: FC<WorkingIndicatorView>;
|
|
5
|
+
/** The one structural split on screen: printed history above, live controls below. */
|
|
6
|
+
export declare const ClassicLiveDivider: FC;
|
|
7
|
+
export declare const ClassicPromptMarker: FC<PromptMarkerProps>;
|
|
8
|
+
/** The input row is printed bare; the frame is the seam other skins draw a box or rule around. */
|
|
9
|
+
export declare const ClassicInputFrame: FC<InputFrameProps>;
|
|
10
|
+
/**
|
|
11
|
+
* One footer format for every menu and for the input, so the reader learns the
|
|
12
|
+
* shape once: `key action │ key action`. Menus used to each invent their own
|
|
13
|
+
* wording, separator, and arrow glyph.
|
|
14
|
+
*/
|
|
15
|
+
export declare const ClassicHints: FC<HintsProps>;
|
|
16
|
+
export declare const ClassicShellActivity: FC<ShellActivityProps>;
|
|
17
|
+
/** A muted header over the rows, unframed. */
|
|
18
|
+
export declare const ClassicTaskPanel: FC<TaskPanelProps>;
|
|
19
|
+
//# sourceMappingURL=live-region.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"live-region.d.ts","sourceRoot":"","sources":["../../../source/skins/classic/live-region.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAKvC,OAAO,KAAK,EACV,UAAU,EACV,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,aAAa,CAAC;AAErB,iEAAiE;AACjE,eAAO,MAAM,uBAAuB,EAAE,EAAE,CAAC,oBAAoB,CAuC5D,CAAC;AAEF,sFAAsF;AACtF,eAAO,MAAM,kBAAkB,EAAE,EAAsB,CAAC;AAExD,eAAO,MAAM,mBAAmB,EAAE,EAAE,CAAC,iBAAiB,CAKrD,CAAC;AAEF,kGAAkG;AAClG,eAAO,MAAM,iBAAiB,EAAE,EAAE,CAAC,eAAe,CAA2C,CAAC;AAE9F;;;;GAIG;AACH,eAAO,MAAM,YAAY,EAAE,EAAE,CAAC,UAAU,CAYvC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,EAAE,CAAC,kBAAkB,CAOvD,CAAC;AAEF,8CAA8C;AAC9C,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC,cAAc,CAQ/C,CAAC"}
|