@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,71 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Box, Text } from 'ink';
|
|
3
|
+
import Divider from '../../components/common/Divider.js';
|
|
4
|
+
import { GLYPH_SEPARATOR, useTheme } from '../../components/theme.js';
|
|
5
|
+
import { formatTokensPerSecond } from '../../utils/streaming/streaming-speed-tracker.js';
|
|
6
|
+
/** What the agent is doing right now, as a single muted line. */
|
|
7
|
+
export const ClassicWorkingIndicator = ({ phase, elapsedSeconds, tokensPerSecond, toolName, argumentChars, dotCount, }) => {
|
|
8
|
+
const theme = useTheme();
|
|
9
|
+
const hasRate = tokensPerSecond != null && tokensPerSecond > 0;
|
|
10
|
+
if (phase === 'tool_call') {
|
|
11
|
+
return (React.createElement(Text, { color: theme.textSubtle },
|
|
12
|
+
"Calling tool ",
|
|
13
|
+
toolName ? React.createElement(Text, { bold: true }, toolName) : '',
|
|
14
|
+
' · ',
|
|
15
|
+
elapsedSeconds,
|
|
16
|
+
"s",
|
|
17
|
+
argumentChars != null ? ` (${argumentChars} chars` : '',
|
|
18
|
+
hasRate ? ` · ${formatTokensPerSecond(tokensPerSecond)}` : '',
|
|
19
|
+
argumentChars != null ? ')' : '',
|
|
20
|
+
'.'.repeat(dotCount)));
|
|
21
|
+
}
|
|
22
|
+
if (phase === 'thinking') {
|
|
23
|
+
return (React.createElement(Text, { color: theme.textSubtle },
|
|
24
|
+
"Thinking \u00B7 ",
|
|
25
|
+
elapsedSeconds,
|
|
26
|
+
"s",
|
|
27
|
+
hasRate ? ` (${formatTokensPerSecond(tokensPerSecond)})` : ''));
|
|
28
|
+
}
|
|
29
|
+
return (React.createElement(Text, { color: theme.textSubtle }, hasRate
|
|
30
|
+
? `Generating · ${elapsedSeconds}s (${formatTokensPerSecond(tokensPerSecond)})`
|
|
31
|
+
: `Processing · ${elapsedSeconds}s`));
|
|
32
|
+
};
|
|
33
|
+
/** The one structural split on screen: printed history above, live controls below. */
|
|
34
|
+
export const ClassicLiveDivider = () => React.createElement(Divider, null);
|
|
35
|
+
export const ClassicPromptMarker = ({ mode }) => {
|
|
36
|
+
const theme = useTheme();
|
|
37
|
+
if (mode === 'rejection')
|
|
38
|
+
return React.createElement(Text, { color: theme.warning }, "Why? ");
|
|
39
|
+
if (mode === 'shell')
|
|
40
|
+
return React.createElement(Text, { color: theme.danger }, "! ");
|
|
41
|
+
return React.createElement(Text, { color: theme.accent }, "\u276F ");
|
|
42
|
+
};
|
|
43
|
+
/** The input row is printed bare; the frame is the seam other skins draw a box or rule around. */
|
|
44
|
+
export const ClassicInputFrame = ({ children }) => React.createElement(Box, null, children);
|
|
45
|
+
/**
|
|
46
|
+
* One footer format for every menu and for the input, so the reader learns the
|
|
47
|
+
* shape once: `key action │ key action`. Menus used to each invent their own
|
|
48
|
+
* wording, separator, and arrow glyph.
|
|
49
|
+
*/
|
|
50
|
+
export const ClassicHints = ({ hints }) => {
|
|
51
|
+
const theme = useTheme();
|
|
52
|
+
return (React.createElement(Text, { color: theme.textSubtle }, hints.map(([key, action, keyColor], index) => (React.createElement(React.Fragment, { key: key },
|
|
53
|
+
index > 0 ? ` ${GLYPH_SEPARATOR} ` : '',
|
|
54
|
+
keyColor ? React.createElement(Text, { color: theme[keyColor] }, key) : key,
|
|
55
|
+
" ",
|
|
56
|
+
action)))));
|
|
57
|
+
};
|
|
58
|
+
export const ClassicShellActivity = ({ command }) => {
|
|
59
|
+
const theme = useTheme();
|
|
60
|
+
return (React.createElement(Text, { color: theme.textSubtle },
|
|
61
|
+
"Running shell command: ",
|
|
62
|
+
React.createElement(Text, { bold: true }, command)));
|
|
63
|
+
};
|
|
64
|
+
/** A muted header over the rows, unframed. */
|
|
65
|
+
export const ClassicTaskPanel = ({ header, children }) => {
|
|
66
|
+
const theme = useTheme();
|
|
67
|
+
return (React.createElement(Box, { flexDirection: "column", marginBottom: 1 },
|
|
68
|
+
React.createElement(Text, { color: theme.textMuted }, header),
|
|
69
|
+
children));
|
|
70
|
+
};
|
|
71
|
+
//# sourceMappingURL=live-region.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"live-region.js","sourceRoot":"","sources":["../../../source/skins/classic/live-region.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"menu.d.ts","sourceRoot":"","sources":["../../../source/skins/classic/menu.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,uEAAuE;AACvE,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC,cAAc,CAmD/C,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Box, Text } from 'ink';
|
|
3
|
+
import { useTheme } from '../../components/theme.js';
|
|
4
|
+
/** A rounded box; hints go under a hairline inside it, or below it. */
|
|
5
|
+
export const ClassicMenuFrame = ({ title, borderColor, hasItems, footer, footerPlacement, children, }) => {
|
|
6
|
+
const theme = useTheme();
|
|
7
|
+
const color = borderColor ?? theme.borderActive;
|
|
8
|
+
const footerNode = footer ? (typeof footer === 'string' ? (React.createElement(Text, { color: theme.textSubtle }, footer)) : (footer)) : null;
|
|
9
|
+
const body = (React.createElement(Box, { borderStyle: "round", borderColor: color, paddingX: 1, flexDirection: "column", width: hasItems ? '100%' : undefined },
|
|
10
|
+
title ? React.createElement(Text, { color: theme.textSubtle }, title) : null,
|
|
11
|
+
children,
|
|
12
|
+
footerPlacement === 'inside' && footerNode && (React.createElement(Box, { marginTop: 1, borderStyle: "single", borderTop: true, borderBottom: false, borderLeft: false, borderRight: false, borderColor: theme.border }, footerNode))));
|
|
13
|
+
if (footerPlacement === 'outside' && footerNode) {
|
|
14
|
+
return (React.createElement(Box, { flexDirection: "column", width: "100%" },
|
|
15
|
+
body,
|
|
16
|
+
footerNode));
|
|
17
|
+
}
|
|
18
|
+
return body;
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=menu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"menu.js","sourceRoot":"","sources":["../../../source/skins/classic/menu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAGrD,uEAAuE;AACvE,MAAM,CAAC,MAAM,gBAAgB,GAAuB,CAAC,EACnD,KAAK,EACL,WAAW,EACX,QAAQ,EACR,MAAM,EACN,eAAe,EACf,QAAQ,GACT,EAAE,EAAE;IACH,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,MAAM,KAAK,GAAG,WAAW,IAAI,KAAK,CAAC,YAAY,CAAC;IAChD,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,CAC1B,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAC3B,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,UAAU,IAAG,MAAM,CAAQ,CAC/C,CAAC,CAAC,CAAC,CACF,MAAM,CACP,CACF,CAAC,CAAC,CAAC,IAAI,CAAC;IACT,MAAM,IAAI,GAAG,CACX,oBAAC,GAAG,IACF,WAAW,EAAC,OAAO,EACnB,WAAW,EAAE,KAAK,EAClB,QAAQ,EAAE,CAAC,EACX,aAAa,EAAC,QAAQ,EACtB,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;QAEnC,KAAK,CAAC,CAAC,CAAC,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,UAAU,IAAG,KAAK,CAAQ,CAAC,CAAC,CAAC,IAAI;QAC5D,QAAQ;QACR,eAAe,KAAK,QAAQ,IAAI,UAAU,IAAI,CAC7C,oBAAC,GAAG,IACF,SAAS,EAAE,CAAC,EACZ,WAAW,EAAC,QAAQ,EACpB,SAAS,EAAE,IAAI,EACf,YAAY,EAAE,KAAK,EACnB,UAAU,EAAE,KAAK,EACjB,WAAW,EAAE,KAAK,EAClB,WAAW,EAAE,KAAK,CAAC,MAAM,IAExB,UAAU,CACP,CACP,CACG,CACP,CAAC;IACF,IAAI,eAAe,KAAK,SAAS,IAAI,UAAU,EAAE,CAAC;QAChD,OAAO,CACL,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,KAAK,EAAC,MAAM;YACrC,IAAI;YACJ,UAAU,CACP,CACP,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type FC } from 'react';
|
|
2
|
+
import type { AssistantFrameProps, BannerView, UserMessageView } from '../types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Two borderless lines, not a bordered block. The banner is the first thing on
|
|
5
|
+
* screen every session; a full box around it competes with the conversation
|
|
6
|
+
* below for attention and costs four lines to say four short facts.
|
|
7
|
+
*/
|
|
8
|
+
export declare const ClassicBanner: FC<BannerView>;
|
|
9
|
+
/** A full-width band, so user messages read as content blocks rather than another accent-coloured header. */
|
|
10
|
+
export declare const ClassicUserMessage: FC<UserMessageView>;
|
|
11
|
+
/** Answers and reasoning are printed bare; the frame exists so other skins can mark or indent them. */
|
|
12
|
+
export declare const ClassicAssistantFrame: FC<AssistantFrameProps>;
|
|
13
|
+
//# sourceMappingURL=messages.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../../source/skins/classic/messages.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAIvC,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAgBpF;;;;GAIG;AACH,eAAO,MAAM,aAAa,EAAE,EAAE,CAAC,UAAU,CAiDxC,CAAC;AAEF,6GAA6G;AAC7G,eAAO,MAAM,kBAAkB,EAAE,EAAE,CAAC,eAAe,CAUlD,CAAC;AAEF,uGAAuG;AACvG,eAAO,MAAM,qBAAqB,EAAE,EAAE,CAAC,mBAAmB,CAAqC,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Box, Text } from 'ink';
|
|
3
|
+
import { GLYPH_SEPARATOR, useTheme } from '../../components/theme.js';
|
|
4
|
+
import { MODEL_LABEL_MAX } from '../shared/limits.js';
|
|
5
|
+
const truncateModel = (name) => name.length > MODEL_LABEL_MAX ? `${name.slice(0, MODEL_LABEL_MAX - 1)}…` : name;
|
|
6
|
+
const Badge = ({ mode }) => {
|
|
7
|
+
const theme = useTheme();
|
|
8
|
+
return (React.createElement(Text, { backgroundColor: theme.modeBadge[mode], color: theme.modeBadgeForeground, bold: true },
|
|
9
|
+
' ',
|
|
10
|
+
mode,
|
|
11
|
+
' '));
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Two borderless lines, not a bordered block. The banner is the first thing on
|
|
15
|
+
* screen every session; a full box around it competes with the conversation
|
|
16
|
+
* below for attention and costs four lines to say four short facts.
|
|
17
|
+
*/
|
|
18
|
+
export const ClassicBanner = ({ version, mode, mentor, providerLabel, model, reasoningEffort, mentorModel, mentorReasoningEffort, }) => {
|
|
19
|
+
const theme = useTheme();
|
|
20
|
+
return (React.createElement(Box, { flexDirection: "column", width: "100%", paddingTop: 1, marginBottom: 1 },
|
|
21
|
+
React.createElement(Box, null,
|
|
22
|
+
React.createElement(Text, { color: theme.warning, bold: true }, "\u258C"),
|
|
23
|
+
React.createElement(Text, { color: theme.accent, bold: true },
|
|
24
|
+
' ',
|
|
25
|
+
"term\u00B2",
|
|
26
|
+
' '),
|
|
27
|
+
React.createElement(Badge, { mode: mode }),
|
|
28
|
+
mentor && (React.createElement(React.Fragment, null,
|
|
29
|
+
React.createElement(Text, null, " "),
|
|
30
|
+
React.createElement(Badge, { mode: "MENTOR" }))),
|
|
31
|
+
React.createElement(Text, { color: theme.textMuted },
|
|
32
|
+
" v",
|
|
33
|
+
version)),
|
|
34
|
+
React.createElement(Box, null,
|
|
35
|
+
React.createElement(Text, { color: theme.textSubtle }, ' '),
|
|
36
|
+
React.createElement(Text, { color: theme.textMuted }, providerLabel),
|
|
37
|
+
React.createElement(Text, { color: theme.textSubtle }, "/"),
|
|
38
|
+
React.createElement(Text, { color: theme.accent }, model ? truncateModel(model) : '—'),
|
|
39
|
+
reasoningEffort !== 'none' && React.createElement(Text, { color: theme.textSubtle },
|
|
40
|
+
" (",
|
|
41
|
+
reasoningEffort,
|
|
42
|
+
")"),
|
|
43
|
+
mentor && mentorModel && (React.createElement(React.Fragment, null,
|
|
44
|
+
React.createElement(Text, { color: theme.textSubtle },
|
|
45
|
+
" ",
|
|
46
|
+
GLYPH_SEPARATOR,
|
|
47
|
+
" "),
|
|
48
|
+
React.createElement(Text, { color: theme.textSubtle }, "mentor "),
|
|
49
|
+
React.createElement(Text, { color: theme.accentAlt }, truncateModel(mentorModel)),
|
|
50
|
+
mentorReasoningEffort !== 'none' && React.createElement(Text, { color: theme.textSubtle },
|
|
51
|
+
" (",
|
|
52
|
+
mentorReasoningEffort,
|
|
53
|
+
")"))))));
|
|
54
|
+
};
|
|
55
|
+
/** A full-width band, so user messages read as content blocks rather than another accent-coloured header. */
|
|
56
|
+
export const ClassicUserMessage = ({ text }) => {
|
|
57
|
+
const theme = useTheme();
|
|
58
|
+
return (React.createElement(Box, { width: "100%", backgroundColor: theme.userBackground, paddingX: 1 },
|
|
59
|
+
React.createElement(Text, { bold: true, color: theme.userText },
|
|
60
|
+
React.createElement(Text, { color: theme.accent }, "\u276F "),
|
|
61
|
+
text)));
|
|
62
|
+
};
|
|
63
|
+
/** Answers and reasoning are printed bare; the frame exists so other skins can mark or indent them. */
|
|
64
|
+
export const ClassicAssistantFrame = ({ children }) => React.createElement(React.Fragment, null, children);
|
|
65
|
+
//# sourceMappingURL=messages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../source/skins/classic/messages.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type FC } from 'react';
|
|
2
|
+
import type { QuestionPromptProps } from '../types.js';
|
|
3
|
+
/** A boxed question over a numbered list, with the selected option explained beside it. */
|
|
4
|
+
export declare const ClassicQuestionPrompt: FC<QuestionPromptProps>;
|
|
5
|
+
//# sourceMappingURL=question.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"question.d.ts","sourceRoot":"","sources":["../../../source/skins/classic/question.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAIvC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAGvD,2FAA2F;AAC3F,eAAO,MAAM,qBAAqB,EAAE,EAAE,CAAC,mBAAmB,CAsDzD,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Box, Text } from 'ink';
|
|
3
|
+
import { SelectionMarker } from '../../components/common/SelectionMarker.js';
|
|
4
|
+
import { GLYPH_FAVORITE, useTheme } from '../../components/theme.js';
|
|
5
|
+
import { TwoPaneApprovalLayout } from './approval.js';
|
|
6
|
+
/** A boxed question over a numbered list, with the selected option explained beside it. */
|
|
7
|
+
export const ClassicQuestionPrompt = ({ progress, question, notice, options, description, footer, }) => {
|
|
8
|
+
const theme = useTheme();
|
|
9
|
+
return (React.createElement(Box, { flexDirection: "column" },
|
|
10
|
+
progress !== undefined && (React.createElement(Box, { marginLeft: 1 },
|
|
11
|
+
React.createElement(Text, { color: theme.textSubtle }, progress))),
|
|
12
|
+
React.createElement(Box, { borderStyle: "round", borderColor: theme.warning, paddingX: 1, paddingY: 0 },
|
|
13
|
+
React.createElement(Text, { color: theme.warning, bold: true }, question)),
|
|
14
|
+
notice !== undefined && (React.createElement(Box, { marginTop: 1, marginLeft: 1 },
|
|
15
|
+
React.createElement(Text, { color: theme.accent },
|
|
16
|
+
"\u276F ",
|
|
17
|
+
notice))),
|
|
18
|
+
React.createElement(TwoPaneApprovalLayout, { left: options.map((option, index) => {
|
|
19
|
+
const checkbox = option.checked === undefined ? '' : option.checked ? '[x] ' : '[ ] ';
|
|
20
|
+
return (React.createElement(Box, { key: option.label, flexDirection: "row", width: "100%" },
|
|
21
|
+
React.createElement(SelectionMarker, { selected: option.selected }),
|
|
22
|
+
React.createElement(Box, { width: 2, flexShrink: 0 },
|
|
23
|
+
React.createElement(Text, { color: theme.textSubtle, dimColor: true }, option.recommended ? GLYPH_FAVORITE : ' ')),
|
|
24
|
+
React.createElement(Box, { flexDirection: "row", flexShrink: 1, flexWrap: "wrap" },
|
|
25
|
+
React.createElement(Text, { color: option.selected && option.tone ? theme[option.tone] : undefined, bold: option.selected },
|
|
26
|
+
index + 1,
|
|
27
|
+
". ",
|
|
28
|
+
checkbox,
|
|
29
|
+
option.label))));
|
|
30
|
+
}), rightTitle: description.title, rightDescription: description.text }),
|
|
31
|
+
React.createElement(Box, { marginTop: 1, marginLeft: 1 }, footer)));
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=question.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"question.js","sourceRoot":"","sources":["../../../source/skins/classic/question.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAErE,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAEtD,2FAA2F;AAC3F,MAAM,CAAC,MAAM,qBAAqB,GAA4B,CAAC,EAC7D,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,OAAO,EACP,WAAW,EACX,MAAM,GACP,EAAE,EAAE;IACH,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,OAAO,CACL,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ;QACxB,QAAQ,KAAK,SAAS,IAAI,CACzB,oBAAC,GAAG,IAAC,UAAU,EAAE,CAAC;YAChB,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,UAAU,IAAG,QAAQ,CAAQ,CAC5C,CACP;QACD,oBAAC,GAAG,IAAC,WAAW,EAAC,OAAO,EAAC,WAAW,EAAE,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC;YAC3E,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,UAC7B,QAAQ,CACJ,CACH;QACL,MAAM,KAAK,SAAS,IAAI,CACvB,oBAAC,GAAG,IAAC,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC;YAC9B,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,MAAM;;gBAAK,MAAM,CAAQ,CACxC,CACP;QACD,oBAAC,qBAAqB,IACpB,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBAClC,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;gBACtF,OAAO,CACL,oBAAC,GAAG,IAAC,GAAG,EAAE,MAAM,CAAC,KAAK,EAAE,aAAa,EAAC,KAAK,EAAC,KAAK,EAAC,MAAM;oBACtD,oBAAC,eAAe,IAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,GAAI;oBAC9C,oBAAC,GAAG,IAAC,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC;wBAC1B,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE,QAAQ,UACpC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CACrC,CACH;oBACN,oBAAC,GAAG,IAAC,aAAa,EAAC,KAAK,EAAC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAC,MAAM;wBACrD,oBAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,QAAQ;4BAChG,KAAK,GAAG,CAAC;;4BAAI,QAAQ;4BACrB,MAAM,CAAC,KAAK,CACR,CACH,CACF,CACP,CAAC;YACJ,CAAC,CAAC,EACF,UAAU,EAAE,WAAW,CAAC,KAAK,EAC7B,gBAAgB,EAAE,WAAW,CAAC,IAAI,GAClC;QACF,oBAAC,GAAG,IAAC,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,IAC7B,MAAM,CACH,CACF,CACP,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type FC } from 'react';
|
|
2
|
+
import type { StatusView } from '../types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Configuration on the left, this turn's numbers on the right. The alert row is
|
|
5
|
+
* where every non-steady-state message lands, so the bar is a single line
|
|
6
|
+
* whenever nothing is wrong — which is most of the time — and grows only to say
|
|
7
|
+
* something.
|
|
8
|
+
*/
|
|
9
|
+
export declare const ClassicStatusBar: FC<StatusView>;
|
|
10
|
+
//# sourceMappingURL=status.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../source/skins/classic/status.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAIvC,OAAO,KAAK,EAAsC,UAAU,EAAE,MAAM,aAAa,CAAC;AA2KlF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC,UAAU,CAuD3C,CAAC"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Box, Text } from 'ink';
|
|
3
|
+
import { GLYPH_SELECTED, GLYPH_SEPARATOR, GLYPH_WARNING, useTheme } from '../../components/theme.js';
|
|
4
|
+
import { terminalTextWidth, truncateTerminalText } from '../../components/layout/terminal-text-budget.js';
|
|
5
|
+
/**
|
|
6
|
+
* The one separator used between top-level config segments. Spacing lives
|
|
7
|
+
* here so every gap is identical; previously the same `│` was written three
|
|
8
|
+
* different ways (bare, inside `marginX`, and padded) and the bar looked
|
|
9
|
+
* ragged.
|
|
10
|
+
*/
|
|
11
|
+
const Divider = () => {
|
|
12
|
+
const theme = useTheme();
|
|
13
|
+
return React.createElement(Text, { color: theme.textSubtle },
|
|
14
|
+
" ",
|
|
15
|
+
GLYPH_SEPARATOR,
|
|
16
|
+
" ");
|
|
17
|
+
};
|
|
18
|
+
/** The separator used between metrics segments — a lighter join than the `│`
|
|
19
|
+
* used elsewhere, since the metrics group is already one visual cluster. */
|
|
20
|
+
const MetricDivider = () => {
|
|
21
|
+
const theme = useTheme();
|
|
22
|
+
return React.createElement(Text, { color: theme.textSubtle }, " \u00B7 ");
|
|
23
|
+
};
|
|
24
|
+
// terminalTextWidth counts every codepoint above U+007F as 2 columns, which is
|
|
25
|
+
// the right conservative default for CJK/emoji text but wildly overcounts the
|
|
26
|
+
// narrow box-drawing and arrow glyphs this bar is built from (│ ↑ ↓ · ▲ ❯ …).
|
|
27
|
+
// Measuring those as 2 nearly doubles the bar's apparent width and makes the
|
|
28
|
+
// budget collapse into the narrow layout far too eagerly. These specific
|
|
29
|
+
// glyphs render as exactly one cell in every terminal this app targets (they
|
|
30
|
+
// are chosen from theme.ts's "single-width on purpose" set plus the ellipsis
|
|
31
|
+
// truncateTerminalText appends), so measure them at 1 and defer to
|
|
32
|
+
// terminalTextWidth for everything else. Fix it here, not in
|
|
33
|
+
// terminalTextWidth itself — other callers of that function rely on its
|
|
34
|
+
// conservative doubling for content that really can be double-width.
|
|
35
|
+
const STATUS_BAR_NARROW_GLYPHS = new Set([GLYPH_SEPARATOR, '↑', '↓', '→', '·', GLYPH_WARNING, GLYPH_SELECTED, '…']);
|
|
36
|
+
function statusBarTextWidth(value) {
|
|
37
|
+
return Array.from(value).reduce((columns, char) => columns + (STATUS_BAR_NARROW_GLYPHS.has(char) ? 1 : terminalTextWidth(char)), 0);
|
|
38
|
+
}
|
|
39
|
+
const GROUP_SEPARATOR_TEXT = ` ${GLYPH_SEPARATOR} `;
|
|
40
|
+
const METRIC_SEPARATOR_TEXT = ' · ';
|
|
41
|
+
const GROUP_SEPARATOR_WIDTH = statusBarTextWidth(GROUP_SEPARATOR_TEXT);
|
|
42
|
+
const METRIC_SEPARATOR_WIDTH = statusBarTextWidth(METRIC_SEPARATOR_TEXT);
|
|
43
|
+
function separatorWidth(kind) {
|
|
44
|
+
if (kind === 'group')
|
|
45
|
+
return GROUP_SEPARATOR_WIDTH;
|
|
46
|
+
if (kind === 'metric')
|
|
47
|
+
return METRIC_SEPARATOR_WIDTH;
|
|
48
|
+
return 0;
|
|
49
|
+
}
|
|
50
|
+
function computeVisible(segments, dropped) {
|
|
51
|
+
const visible = [];
|
|
52
|
+
let anyBefore = false;
|
|
53
|
+
for (const segment of segments) {
|
|
54
|
+
if (!segment.text || dropped.has(segment.id))
|
|
55
|
+
continue;
|
|
56
|
+
visible.push({
|
|
57
|
+
id: segment.id,
|
|
58
|
+
text: segment.text,
|
|
59
|
+
tone: segment.tone,
|
|
60
|
+
bold: segment.bold,
|
|
61
|
+
showSeparator: Boolean(segment.separator) && anyBefore,
|
|
62
|
+
separator: segment.separator,
|
|
63
|
+
});
|
|
64
|
+
anyBefore = true;
|
|
65
|
+
}
|
|
66
|
+
return visible;
|
|
67
|
+
}
|
|
68
|
+
function measureVisible(visible) {
|
|
69
|
+
return visible.reduce((total, segment) => total + (segment.showSeparator ? separatorWidth(segment.separator) : 0) + statusBarTextWidth(segment.text), 0);
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Fits one segment group to `budget` physical columns by dropping whole
|
|
73
|
+
* segments in ascending `tier` order (lowest tier first) until it fits, then —
|
|
74
|
+
* only as a last resort, and only for `truncatableId` — shrinking that one
|
|
75
|
+
* segment's text with an ellipsis. This is the explicit-budget approach
|
|
76
|
+
* BackgroundTasksPanel already uses: compute a hard column budget and shed
|
|
77
|
+
* content deliberately, rather than let Ink's flexbox reflow text mid-word
|
|
78
|
+
* when nothing fits.
|
|
79
|
+
*/
|
|
80
|
+
function fitGroup(defs, budget, truncatableId) {
|
|
81
|
+
const present = defs.filter((segment) => segment.text);
|
|
82
|
+
const dropped = new Set();
|
|
83
|
+
const dropOrder = present
|
|
84
|
+
.filter((segment) => segment.tier != null)
|
|
85
|
+
.sort((a, b) => a.tier - b.tier)
|
|
86
|
+
.map((segment) => segment.id);
|
|
87
|
+
let visible = computeVisible(present, dropped);
|
|
88
|
+
let width = measureVisible(visible);
|
|
89
|
+
for (const id of dropOrder) {
|
|
90
|
+
if (width <= budget)
|
|
91
|
+
break;
|
|
92
|
+
dropped.add(id);
|
|
93
|
+
visible = computeVisible(present, dropped);
|
|
94
|
+
width = measureVisible(visible);
|
|
95
|
+
}
|
|
96
|
+
if (width > budget && truncatableId) {
|
|
97
|
+
const index = visible.findIndex((segment) => segment.id === truncatableId);
|
|
98
|
+
if (index !== -1) {
|
|
99
|
+
const segment = visible[index];
|
|
100
|
+
const ownWidth = (segment.showSeparator ? separatorWidth(segment.separator) : 0) + statusBarTextWidth(segment.text);
|
|
101
|
+
const otherWidth = width - ownWidth;
|
|
102
|
+
const separatorPortion = segment.showSeparator ? separatorWidth(segment.separator) : 0;
|
|
103
|
+
const textAllowance = Math.max(1, budget - otherWidth - separatorPortion);
|
|
104
|
+
const truncated = truncateTerminalText(segment.text, textAllowance);
|
|
105
|
+
visible = visible.map((entry, entryIndex) => (entryIndex === index ? { ...entry, text: truncated } : entry));
|
|
106
|
+
width = measureVisible(visible);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return { visible, width };
|
|
110
|
+
}
|
|
111
|
+
const Segments = ({ visible }) => {
|
|
112
|
+
const theme = useTheme();
|
|
113
|
+
return (React.createElement(React.Fragment, null, visible.map((segment) => (React.createElement(React.Fragment, { key: segment.id },
|
|
114
|
+
segment.showSeparator && (segment.separator === 'metric' ? React.createElement(MetricDivider, null) : React.createElement(Divider, null)),
|
|
115
|
+
React.createElement(Text, { color: segment.tone ? theme[segment.tone] : undefined, bold: segment.bold, wrap: "truncate-end" }, segment.text))))));
|
|
116
|
+
};
|
|
117
|
+
const Alerts = ({ alerts }) => {
|
|
118
|
+
const theme = useTheme();
|
|
119
|
+
return (React.createElement(React.Fragment, null, alerts.map((alert, index) => (React.createElement(React.Fragment, { key: alert.id },
|
|
120
|
+
index > 0 && React.createElement(Divider, null),
|
|
121
|
+
alert.parts.map((part, partIndex) => (React.createElement(Text, { key: partIndex, color: theme[part.tone], bold: part.bold, wrap: "truncate-end" }, part.text))))))));
|
|
122
|
+
};
|
|
123
|
+
/**
|
|
124
|
+
* Configuration on the left, this turn's numbers on the right. The alert row is
|
|
125
|
+
* where every non-steady-state message lands, so the bar is a single line
|
|
126
|
+
* whenever nothing is wrong — which is most of the time — and grows only to say
|
|
127
|
+
* something.
|
|
128
|
+
*/
|
|
129
|
+
export const ClassicStatusBar = ({ columns, config, metrics, alerts, quotaText }) => {
|
|
130
|
+
const theme = useTheme();
|
|
131
|
+
// The bar applies paddingX={1} on both sides, so the budget available to
|
|
132
|
+
// segments is narrower than the terminal itself.
|
|
133
|
+
const budget = Math.max(1, columns - 2);
|
|
134
|
+
// Each group is fit to the *full* row budget on its own (drop order on the
|
|
135
|
+
// segments), and only afterward do the two fitted groups get compared to see
|
|
136
|
+
// whether they still coexist on one line. That keeps the drop decision for
|
|
137
|
+
// each group independent of whatever the other group is doing, per the
|
|
138
|
+
// drop-order contract each priority list documents.
|
|
139
|
+
const configFit = fitGroup(config, budget);
|
|
140
|
+
const metricsFit = fitGroup(metrics, budget);
|
|
141
|
+
const bothVisible = configFit.visible.length > 0 && metricsFit.visible.length > 0;
|
|
142
|
+
const combinedWidth = configFit.width + (bothVisible ? GROUP_SEPARATOR_WIDTH : 0) + metricsFit.width;
|
|
143
|
+
const metricsOnOwnRow = metricsFit.visible.length > 0 && combinedWidth > budget;
|
|
144
|
+
return (React.createElement(Box, { marginTop: 1, flexDirection: "column", width: "100%", paddingX: 1 },
|
|
145
|
+
React.createElement(Box, { width: "100%" },
|
|
146
|
+
React.createElement(Segments, { visible: configFit.visible }),
|
|
147
|
+
!metricsOnOwnRow && metricsFit.visible.length > 0 && (React.createElement(React.Fragment, null,
|
|
148
|
+
React.createElement(Divider, null),
|
|
149
|
+
React.createElement(Segments, { visible: metricsFit.visible })))),
|
|
150
|
+
metricsOnOwnRow && (React.createElement(Box, { width: "100%", justifyContent: "flex-end" },
|
|
151
|
+
React.createElement(Segments, { visible: metricsFit.visible }))),
|
|
152
|
+
(alerts.length > 0 || quotaText) && (React.createElement(Box, { width: "100%" },
|
|
153
|
+
React.createElement(Box, { flexGrow: 1 },
|
|
154
|
+
React.createElement(Alerts, { alerts: alerts })),
|
|
155
|
+
quotaText && (React.createElement(Box, { flexShrink: 0 },
|
|
156
|
+
React.createElement(Text, { color: theme.textSubtle, wrap: "truncate-end" }, quotaText)))))));
|
|
157
|
+
};
|
|
158
|
+
//# sourceMappingURL=status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../source/skins/classic/status.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type FC } from 'react';
|
|
2
|
+
import type { SubagentFeedProps } from '../types.js';
|
|
3
|
+
/** `$ title — status`, then the final answer's first paragraph or the latest calls, unindented. */
|
|
4
|
+
export declare const ClassicSubagentFeed: FC<SubagentFeedProps>;
|
|
5
|
+
//# sourceMappingURL=subagent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subagent.d.ts","sourceRoot":"","sources":["../../../source/skins/classic/subagent.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD,mGAAmG;AACnG,eAAO,MAAM,mBAAmB,EAAE,EAAE,CAAC,iBAAiB,CAWrD,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Box, Text } from 'ink';
|
|
3
|
+
import { useTheme } from '../../components/theme.js';
|
|
4
|
+
/** `$ title — status`, then the final answer's first paragraph or the latest calls, unindented. */
|
|
5
|
+
export const ClassicSubagentFeed = ({ title, statusSuffix, tone, summary, children }) => {
|
|
6
|
+
const theme = useTheme();
|
|
7
|
+
return (React.createElement(Box, { flexDirection: "column" },
|
|
8
|
+
React.createElement(Text, { color: theme[tone] },
|
|
9
|
+
"$ ",
|
|
10
|
+
title,
|
|
11
|
+
statusSuffix),
|
|
12
|
+
summary !== undefined ? React.createElement(Text, { color: theme.textSubtle }, summary) : children));
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=subagent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subagent.js","sourceRoot":"","sources":["../../../source/skins/classic/subagent.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAGrD,mGAAmG;AACnG,MAAM,CAAC,MAAM,mBAAmB,GAA0B,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC7G,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,OAAO,CACL,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ;QACzB,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC;;YACnB,KAAK;YACP,YAAY,CACR;QACN,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,UAAU,IAAG,OAAO,CAAQ,CAAC,CAAC,CAAC,QAAQ,CAC/E,CACP,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type FC } from 'react';
|
|
2
|
+
import type { ToolSectionProps } from '../types.js';
|
|
3
|
+
/**
|
|
4
|
+
* `indent` sits two columns in, `panel` is a single-line box, `callout` a rounded
|
|
5
|
+
* box with a bold heading. Spacing between sections stays with the renderer.
|
|
6
|
+
*/
|
|
7
|
+
export declare const ClassicToolSection: FC<ToolSectionProps>;
|
|
8
|
+
//# sourceMappingURL=tool-section.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-section.d.ts","sourceRoot":"","sources":["../../../source/skins/classic/tool-section.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,EAAE,CAAC,gBAAgB,CA0BnD,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Box, Text } from 'ink';
|
|
3
|
+
import { useTheme } from '../../components/theme.js';
|
|
4
|
+
/**
|
|
5
|
+
* `indent` sits two columns in, `panel` is a single-line box, `callout` a rounded
|
|
6
|
+
* box with a bold heading. Spacing between sections stays with the renderer.
|
|
7
|
+
*/
|
|
8
|
+
export const ClassicToolSection = ({ variant, title, tone = 'warning', children }) => {
|
|
9
|
+
const theme = useTheme();
|
|
10
|
+
if (variant === 'indent') {
|
|
11
|
+
return (React.createElement(Box, { flexDirection: "column", paddingLeft: 2 }, children));
|
|
12
|
+
}
|
|
13
|
+
if (variant === 'panel') {
|
|
14
|
+
return (React.createElement(Box, { flexDirection: "column", borderStyle: "single", borderColor: theme.textSubtle, paddingX: 1 }, children));
|
|
15
|
+
}
|
|
16
|
+
return (React.createElement(Box, { flexDirection: "column", borderStyle: "round", borderColor: theme[tone], paddingX: 1 },
|
|
17
|
+
title !== undefined && (React.createElement(Text, { color: theme[tone], bold: true }, title)),
|
|
18
|
+
children));
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=tool-section.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-section.js","sourceRoot":"","sources":["../../../source/skins/classic/tool-section.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAGrD;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAyB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE;IACzG,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,OAAO,CACL,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,WAAW,EAAE,CAAC,IACvC,QAAQ,CACL,CACP,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,OAAO,CACL,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,WAAW,EAAC,QAAQ,EAAC,WAAW,EAAE,KAAK,CAAC,UAAU,EAAE,QAAQ,EAAE,CAAC,IACxF,QAAQ,CACL,CACP,CAAC;IACJ,CAAC;IACD,OAAO,CACL,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,WAAW,EAAC,OAAO,EAAC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC;QAClF,KAAK,KAAK,SAAS,IAAI,CACtB,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,UAC3B,KAAK,CACD,CACR;QACA,QAAQ,CACL,CACP,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type FC } from 'react';
|
|
2
|
+
import type { ToolFrameProps, ToolGroupSummaryView, ToolHeaderProps } from '../types.js';
|
|
3
|
+
/** Tool output is printed bare in the classic skin; the frame is the seam other skins draw around it. */
|
|
4
|
+
export declare const ClassicToolFrame: FC<ToolFrameProps>;
|
|
5
|
+
/**
|
|
6
|
+
* One header line. Standard mode and in-flight calls colour the whole line by
|
|
7
|
+
* status; settled concise calls colour only the marker and leave the text muted,
|
|
8
|
+
* so a transcript of finished calls stays quiet and a failure stands out.
|
|
9
|
+
*/
|
|
10
|
+
export declare const ClassicToolHeader: FC<ToolHeaderProps>;
|
|
11
|
+
/**
|
|
12
|
+
* Concise-mode line(s) for a run of tool calls. A partly-failed run keeps a green
|
|
13
|
+
* marker and neutral summary: most of what it did succeeded, and painting the whole
|
|
14
|
+
* line red would claim otherwise. The red marker underneath carries the bad news and
|
|
15
|
+
* names the calls that failed, so the count is actionable without painting the whole
|
|
16
|
+
* line red.
|
|
17
|
+
*/
|
|
18
|
+
export declare const ClassicToolGroupSummary: FC<ToolGroupSummaryView>;
|
|
19
|
+
//# sourceMappingURL=tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../../source/skins/classic/tools.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,cAAc,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGzF,yGAAyG;AACzG,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC,cAAc,CAAqC,CAAC;AAItF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,EAAE,CAAC,eAAe,CAwDjD,CAAC;AAQF;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,EAAE,EAAE,CAAC,oBAAoB,CAsB5D,CAAC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Box, Text } from 'ink';
|
|
3
|
+
import { TOOL_STATUS_GLYPH, useTheme } from '../../components/theme.js';
|
|
4
|
+
/** Tool output is printed bare in the classic skin; the frame is the seam other skins draw around it. */
|
|
5
|
+
export const ClassicToolFrame = ({ children }) => React.createElement(React.Fragment, null, children);
|
|
6
|
+
const IN_FLIGHT = new Set(['pending', 'running']);
|
|
7
|
+
/**
|
|
8
|
+
* One header line. Standard mode and in-flight calls colour the whole line by
|
|
9
|
+
* status; settled concise calls colour only the marker and leave the text muted,
|
|
10
|
+
* so a transcript of finished calls stays quiet and a failure stands out.
|
|
11
|
+
*/
|
|
12
|
+
export const ClassicToolHeader = ({ status, display, nested, action, meta, trailing, textColor, }) => {
|
|
13
|
+
const theme = useTheme();
|
|
14
|
+
const color = theme.toolStatus[status];
|
|
15
|
+
const glyph = TOOL_STATUS_GLYPH[status];
|
|
16
|
+
if (display === 'standard') {
|
|
17
|
+
return (React.createElement(Box, null,
|
|
18
|
+
React.createElement(Text, { color: color },
|
|
19
|
+
glyph,
|
|
20
|
+
" ",
|
|
21
|
+
action,
|
|
22
|
+
meta)));
|
|
23
|
+
}
|
|
24
|
+
if (nested) {
|
|
25
|
+
return (React.createElement(Box, null,
|
|
26
|
+
React.createElement(Text, { wrap: "truncate", color: theme.textSubtle },
|
|
27
|
+
React.createElement(Text, { color: color }, glyph),
|
|
28
|
+
" ",
|
|
29
|
+
action,
|
|
30
|
+
meta)));
|
|
31
|
+
}
|
|
32
|
+
if (IN_FLIGHT.has(status)) {
|
|
33
|
+
return (React.createElement(Box, null,
|
|
34
|
+
React.createElement(Text, { color: color },
|
|
35
|
+
React.createElement(Text, { bold: true }, glyph),
|
|
36
|
+
" ",
|
|
37
|
+
action,
|
|
38
|
+
meta,
|
|
39
|
+
trailing)));
|
|
40
|
+
}
|
|
41
|
+
return (React.createElement(Text, { color: textColor || theme.textMuted },
|
|
42
|
+
React.createElement(Text, { color: color, bold: true }, glyph),
|
|
43
|
+
' ',
|
|
44
|
+
action,
|
|
45
|
+
trailing));
|
|
46
|
+
};
|
|
47
|
+
const GROUP_MARKER_KIND = {
|
|
48
|
+
completed: 'completed',
|
|
49
|
+
partial: 'completed',
|
|
50
|
+
failed: 'failed',
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* Concise-mode line(s) for a run of tool calls. A partly-failed run keeps a green
|
|
54
|
+
* marker and neutral summary: most of what it did succeeded, and painting the whole
|
|
55
|
+
* line red would claim otherwise. The red marker underneath carries the bad news and
|
|
56
|
+
* names the calls that failed, so the count is actionable without painting the whole
|
|
57
|
+
* line red.
|
|
58
|
+
*/
|
|
59
|
+
export const ClassicToolGroupSummary = ({ status, summary, failures }) => {
|
|
60
|
+
const theme = useTheme();
|
|
61
|
+
const kind = GROUP_MARKER_KIND[status];
|
|
62
|
+
return (React.createElement(Box, { flexDirection: "column" },
|
|
63
|
+
React.createElement(Text, { color: theme.textMuted, wrap: "truncate" },
|
|
64
|
+
React.createElement(Text, { color: theme.toolStatus[kind], bold: true }, TOOL_STATUS_GLYPH[kind]),
|
|
65
|
+
' ',
|
|
66
|
+
summary),
|
|
67
|
+
failures !== '' && status !== 'failed' && (React.createElement(Text, { color: theme.textMuted, wrap: "truncate" },
|
|
68
|
+
React.createElement(Text, { color: theme.toolStatus.failed, bold: true }, TOOL_STATUS_GLYPH.failed),
|
|
69
|
+
' ',
|
|
70
|
+
failures))));
|
|
71
|
+
};
|
|
72
|
+
//# sourceMappingURL=tools.js.map
|