@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 @@
|
|
|
1
|
+
{"version":3,"file":"body.js","sourceRoot":"","sources":["../../../source/skins/cards/body.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { type FC, type ReactNode } from 'react';
|
|
2
|
+
import type { Color } from '../../theme/palettes.js';
|
|
3
|
+
/**
|
|
4
|
+
* Border shapes a card can take. Shape is meaning, not decoration: `double` marks
|
|
5
|
+
* the riskiest approvals and `bold` marks a failed call, so both stay recognisable
|
|
6
|
+
* in a terminal with no colour at all.
|
|
7
|
+
*/
|
|
8
|
+
export type CardShape = 'round' | 'double' | 'bold';
|
|
9
|
+
export interface CardProps {
|
|
10
|
+
color: Color;
|
|
11
|
+
shape?: CardShape;
|
|
12
|
+
/**
|
|
13
|
+
* Inline content set into the top border (`╭─ title ─────╮`). Ink has no border
|
|
14
|
+
* titles, so the top edge is drawn by hand while the other three sides stay Ink's
|
|
15
|
+
* own border, which sizes itself. Omit it for a plain bordered box.
|
|
16
|
+
*/
|
|
17
|
+
title?: ReactNode;
|
|
18
|
+
/** Shrink to the content instead of spanning the row. */
|
|
19
|
+
fit?: boolean;
|
|
20
|
+
children: ReactNode;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* A bordered box with one column of padding either side, so text inside starts
|
|
24
|
+
* three columns in. The top rule is a flexible box rather than a fixed string,
|
|
25
|
+
* which is what keeps the right corner on the right edge at every width.
|
|
26
|
+
*/
|
|
27
|
+
export declare const Card: FC<CardProps>;
|
|
28
|
+
//# sourceMappingURL=card.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"card.d.ts","sourceRoot":"","sources":["../../../source/skins/cards/card.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,KAAK,EAAE,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAErD;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;AAWpD,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,yDAAyD;IACzD,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;GAIG;AACH,eAAO,MAAM,IAAI,EAAE,EAAE,CAAC,SAAS,CAgD9B,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Box, Text } from 'ink';
|
|
3
|
+
const TOP_CORNERS = {
|
|
4
|
+
round: { left: '╭', right: '╮', rule: '─' },
|
|
5
|
+
double: { left: '╔', right: '╗', rule: '═' },
|
|
6
|
+
bold: { left: '┏', right: '┓', rule: '━' },
|
|
7
|
+
};
|
|
8
|
+
/** More rule glyphs than any terminal is wide; the rule box clips them to the room actually left. */
|
|
9
|
+
const RULE_OVERSHOOT = 400;
|
|
10
|
+
/**
|
|
11
|
+
* A bordered box with one column of padding either side, so text inside starts
|
|
12
|
+
* three columns in. The top rule is a flexible box rather than a fixed string,
|
|
13
|
+
* which is what keeps the right corner on the right edge at every width.
|
|
14
|
+
*/
|
|
15
|
+
export const Card = ({ color, shape = 'round', title, fit = false, children }) => {
|
|
16
|
+
const body = (React.createElement(Box, { flexDirection: "column", borderStyle: shape, borderColor: color, borderTop: title === undefined, paddingX: 1, flexGrow: fit ? 0 : 1 }, children));
|
|
17
|
+
if (title === undefined) {
|
|
18
|
+
return (React.createElement(Box, { flexDirection: "column", alignSelf: fit ? 'flex-start' : undefined }, body));
|
|
19
|
+
}
|
|
20
|
+
const corners = TOP_CORNERS[shape];
|
|
21
|
+
return (React.createElement(Box, { flexDirection: "column", alignSelf: fit ? 'flex-start' : undefined },
|
|
22
|
+
React.createElement(Box, null,
|
|
23
|
+
React.createElement(Box, { flexShrink: 0 },
|
|
24
|
+
React.createElement(Text, { color: color },
|
|
25
|
+
corners.left,
|
|
26
|
+
corners.rule,
|
|
27
|
+
' ')),
|
|
28
|
+
React.createElement(Box, { flexShrink: 1 }, title),
|
|
29
|
+
React.createElement(Box, { flexShrink: 0 },
|
|
30
|
+
React.createElement(Text, { color: color }, " ")),
|
|
31
|
+
React.createElement(Box, { flexGrow: 1, flexBasis: 0, minWidth: 1, height: 1, overflow: "hidden" },
|
|
32
|
+
React.createElement(Text, { color: color, wrap: "wrap" }, corners.rule.repeat(RULE_OVERSHOOT))),
|
|
33
|
+
React.createElement(Box, { flexShrink: 0 },
|
|
34
|
+
React.createElement(Text, { color: color }, corners.right))),
|
|
35
|
+
body));
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=card.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"card.js","sourceRoot":"","sources":["../../../source/skins/cards/card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkC,MAAM,OAAO,CAAC;AACvD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAUhC,MAAM,WAAW,GAAqE;IACpF,KAAK,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE;IAC3C,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE;IAC5C,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE;CAC3C,CAAC;AAEF,qGAAqG;AACrG,MAAM,cAAc,GAAG,GAAG,CAAC;AAgB3B;;;;GAIG;AACH,MAAM,CAAC,MAAM,IAAI,GAAkB,CAAC,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,EAAE,KAAK,EAAE,GAAG,GAAG,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC9F,MAAM,IAAI,GAAG,CACX,oBAAC,GAAG,IACF,aAAa,EAAC,QAAQ,EACtB,WAAW,EAAE,KAAK,EAClB,WAAW,EAAE,KAAK,EAClB,SAAS,EAAE,KAAK,KAAK,SAAS,EAC9B,QAAQ,EAAE,CAAC,EACX,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAEpB,QAAQ,CACL,CACP,CAAC;IAEF,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,CACL,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,IAClE,IAAI,CACD,CACP,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IACnC,OAAO,CACL,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;QACnE,oBAAC,GAAG;YACF,oBAAC,GAAG,IAAC,UAAU,EAAE,CAAC;gBAChB,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK;oBACf,OAAO,CAAC,IAAI;oBACZ,OAAO,CAAC,IAAI;oBAAE,GAAG,CACb,CACH;YACN,oBAAC,GAAG,IAAC,UAAU,EAAE,CAAC,IAAG,KAAK,CAAO;YACjC,oBAAC,GAAG,IAAC,UAAU,EAAE,CAAC;gBAChB,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,QAAU,CACxB;YACN,oBAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAC,QAAQ;gBACvE,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAC,MAAM,IAC5B,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAC/B,CACH;YACN,oBAAC,GAAG,IAAC,UAAU,EAAE,CAAC;gBAChB,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,IAAG,OAAO,CAAC,KAAK,CAAQ,CACtC,CACF;QACL,IAAI,CACD,CACP,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Skin } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* "Cards": the banner, each user turn, each standard-display tool call, the input and
|
|
4
|
+
* the approval are rounded boxes; answers stay bare text; status is a row of pills;
|
|
5
|
+
* approval options are button chips. Concise tool calls are deliberately not carded,
|
|
6
|
+
* so a long run of them stays a list.
|
|
7
|
+
*/
|
|
8
|
+
export declare const cardsSkin: Skin;
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../source/skins/cards/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAaxC;;;;;GAKG;AACH,eAAO,MAAM,SAAS,EAAE,IAyBvB,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { CardsShellActivity, CardsTaskPanel, CARDS_TASK_PANEL_GUTTER } from './activity.js';
|
|
2
|
+
import { CardsMenuFrame, CardsQuestionPrompt, CardsSubagentFeed, CardsToolSection } from './body.js';
|
|
3
|
+
import { classicSkin } from '../classic/index.js';
|
|
4
|
+
import { CardsApprovalChoices, CardsApprovalFrame } from './approval.js';
|
|
5
|
+
import { CardsHints, CardsInputFrame, CardsLiveDivider, CardsPromptMarker, CardsWorkingIndicator, } from './live-region.js';
|
|
6
|
+
import { ASSISTANT_GUTTER, CardsAssistantFrame, CardsBanner, CardsUserMessage } from './messages.js';
|
|
7
|
+
import { CardsStatusBar } from './status.js';
|
|
8
|
+
import { CardsToolFrame, CardsToolGroupSummary, CardsToolHeader } from './tools.js';
|
|
9
|
+
/**
|
|
10
|
+
* "Cards": the banner, each user turn, each standard-display tool call, the input and
|
|
11
|
+
* the approval are rounded boxes; answers stay bare text; status is a row of pills;
|
|
12
|
+
* approval options are button chips. Concise tool calls are deliberately not carded,
|
|
13
|
+
* so a long run of them stays a list.
|
|
14
|
+
*/
|
|
15
|
+
export const cardsSkin = {
|
|
16
|
+
...classicSkin,
|
|
17
|
+
name: 'cards',
|
|
18
|
+
taskPanelGutter: CARDS_TASK_PANEL_GUTTER,
|
|
19
|
+
assistantGutter: ASSISTANT_GUTTER,
|
|
20
|
+
Banner: CardsBanner,
|
|
21
|
+
UserMessage: CardsUserMessage,
|
|
22
|
+
AssistantFrame: CardsAssistantFrame,
|
|
23
|
+
ToolFrame: CardsToolFrame,
|
|
24
|
+
ToolHeader: CardsToolHeader,
|
|
25
|
+
ToolGroupSummary: CardsToolGroupSummary,
|
|
26
|
+
WorkingIndicator: CardsWorkingIndicator,
|
|
27
|
+
LiveDivider: CardsLiveDivider,
|
|
28
|
+
PromptMarker: CardsPromptMarker,
|
|
29
|
+
InputFrame: CardsInputFrame,
|
|
30
|
+
Hints: CardsHints,
|
|
31
|
+
ShellActivity: CardsShellActivity,
|
|
32
|
+
TaskPanel: CardsTaskPanel,
|
|
33
|
+
ApprovalFrame: CardsApprovalFrame,
|
|
34
|
+
ApprovalChoices: CardsApprovalChoices,
|
|
35
|
+
QuestionPrompt: CardsQuestionPrompt,
|
|
36
|
+
SubagentFeed: CardsSubagentFeed,
|
|
37
|
+
ToolSection: CardsToolSection,
|
|
38
|
+
MenuFrame: CardsMenuFrame,
|
|
39
|
+
StatusBar: CardsStatusBar,
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../source/skins/cards/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAC5F,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AACrG,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACzE,OAAO,EACL,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACrG,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEpF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,SAAS,GAAS;IAC7B,GAAG,WAAW;IACd,IAAI,EAAE,OAAO;IACb,eAAe,EAAE,uBAAuB;IACxC,eAAe,EAAE,gBAAgB;IACjC,MAAM,EAAE,WAAW;IACnB,WAAW,EAAE,gBAAgB;IAC7B,cAAc,EAAE,mBAAmB;IACnC,SAAS,EAAE,cAAc;IACzB,UAAU,EAAE,eAAe;IAC3B,gBAAgB,EAAE,qBAAqB;IACvC,gBAAgB,EAAE,qBAAqB;IACvC,WAAW,EAAE,gBAAgB;IAC7B,YAAY,EAAE,iBAAiB;IAC/B,UAAU,EAAE,eAAe;IAC3B,KAAK,EAAE,UAAU;IACjB,aAAa,EAAE,kBAAkB;IACjC,SAAS,EAAE,cAAc;IACzB,aAAa,EAAE,kBAAkB;IACjC,eAAe,EAAE,oBAAoB;IACrC,cAAc,EAAE,mBAAmB;IACnC,YAAY,EAAE,iBAAiB;IAC/B,WAAW,EAAE,gBAAgB;IAC7B,SAAS,EAAE,cAAc;IACzB,SAAS,EAAE,cAAc;CAC1B,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type FC } from 'react';
|
|
2
|
+
import type { HintsProps, InputFrameProps, PromptMarkerProps, WorkingIndicatorView } from '../types.js';
|
|
3
|
+
/** Spinner, then what the agent is doing and for how long. The same facts the classic line gives. */
|
|
4
|
+
export declare const CardsWorkingIndicator: FC<WorkingIndicatorView>;
|
|
5
|
+
/** The input card is the structure, so there is no rule between history and the live controls. */
|
|
6
|
+
export declare const CardsLiveDivider: FC;
|
|
7
|
+
export declare const CardsPromptMarker: FC<PromptMarkerProps>;
|
|
8
|
+
/**
|
|
9
|
+
* A rounded card around the marker and the editable input, drawn in the active-border
|
|
10
|
+
* colour. The input sizes itself to the terminal width less four columns, which is
|
|
11
|
+
* exactly what a border and a column of padding on each side take.
|
|
12
|
+
*/
|
|
13
|
+
export declare const CardsInputFrame: FC<InputFrameProps>;
|
|
14
|
+
/** Quiet key hints, `·`-separated, with the key itself carrying the weight. */
|
|
15
|
+
export declare const CardsHints: FC<HintsProps>;
|
|
16
|
+
//# sourceMappingURL=live-region.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"live-region.d.ts","sourceRoot":"","sources":["../../../source/skins/cards/live-region.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAKvC,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAcxG,qGAAqG;AACrG,eAAO,MAAM,qBAAqB,EAAE,EAAE,CAAC,oBAAoB,CA0C1D,CAAC;AAEF,kGAAkG;AAClG,eAAO,MAAM,gBAAgB,EAAE,EAAe,CAAC;AAE/C,eAAO,MAAM,iBAAiB,EAAE,EAAE,CAAC,iBAAiB,CAqBnD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,EAAE,CAAC,eAAe,CAO/C,CAAC;AAEF,+EAA+E;AAC/E,eAAO,MAAM,UAAU,EAAE,EAAE,CAAC,UAAU,CAerC,CAAC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Box, Text } from 'ink';
|
|
3
|
+
import { useTheme } from '../../components/theme.js';
|
|
4
|
+
import { formatTokensPerSecond } from '../../utils/streaming/streaming-speed-tracker.js';
|
|
5
|
+
import { BRAILLE_SPINNER, useSpinnerFrame } from '../shared/spinner.js';
|
|
6
|
+
import { Card } from './card.js';
|
|
7
|
+
/** The only animated piece of the live region; it exists to keep the ticking out of its parent. */
|
|
8
|
+
const Spinner = () => {
|
|
9
|
+
const theme = useTheme();
|
|
10
|
+
const frame = useSpinnerFrame(BRAILLE_SPINNER, true);
|
|
11
|
+
return (React.createElement(Text, { color: theme.accent, bold: true }, frame));
|
|
12
|
+
};
|
|
13
|
+
/** Spinner, then what the agent is doing and for how long. The same facts the classic line gives. */
|
|
14
|
+
export const CardsWorkingIndicator = ({ phase, elapsedSeconds, tokensPerSecond, toolName, argumentChars, }) => {
|
|
15
|
+
const theme = useTheme();
|
|
16
|
+
const hasRate = tokensPerSecond != null && tokensPerSecond > 0;
|
|
17
|
+
const rate = hasRate ? formatTokensPerSecond(tokensPerSecond) : '';
|
|
18
|
+
let label;
|
|
19
|
+
if (phase === 'tool_call') {
|
|
20
|
+
label = (React.createElement(React.Fragment, null,
|
|
21
|
+
"Calling tool ",
|
|
22
|
+
toolName ? React.createElement(Text, { bold: true }, toolName) : '',
|
|
23
|
+
' · ',
|
|
24
|
+
elapsedSeconds,
|
|
25
|
+
"s",
|
|
26
|
+
argumentChars != null ? ` (${argumentChars} chars` : '',
|
|
27
|
+
hasRate ? ` · ${rate}` : '',
|
|
28
|
+
argumentChars != null ? ')' : ''));
|
|
29
|
+
}
|
|
30
|
+
else if (phase === 'thinking') {
|
|
31
|
+
label = (React.createElement(React.Fragment, null,
|
|
32
|
+
"Thinking \u00B7 ",
|
|
33
|
+
elapsedSeconds,
|
|
34
|
+
"s",
|
|
35
|
+
hasRate ? ` (${rate})` : ''));
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
label = hasRate ? `Generating · ${elapsedSeconds}s (${rate})` : `Processing · ${elapsedSeconds}s`;
|
|
39
|
+
}
|
|
40
|
+
return (React.createElement(Box, null,
|
|
41
|
+
React.createElement(Box, { flexShrink: 0, marginRight: 1 },
|
|
42
|
+
React.createElement(Spinner, null)),
|
|
43
|
+
React.createElement(Box, { flexShrink: 1 },
|
|
44
|
+
React.createElement(Text, { color: theme.textSubtle }, label))));
|
|
45
|
+
};
|
|
46
|
+
/** The input card is the structure, so there is no rule between history and the live controls. */
|
|
47
|
+
export const CardsLiveDivider = () => null;
|
|
48
|
+
export const CardsPromptMarker = ({ mode }) => {
|
|
49
|
+
const theme = useTheme();
|
|
50
|
+
if (mode === 'rejection') {
|
|
51
|
+
return (React.createElement(Text, { color: theme.warning, bold: true },
|
|
52
|
+
"Why?",
|
|
53
|
+
' '));
|
|
54
|
+
}
|
|
55
|
+
if (mode === 'shell') {
|
|
56
|
+
return (React.createElement(Text, { color: theme.danger, bold: true },
|
|
57
|
+
"!",
|
|
58
|
+
' '));
|
|
59
|
+
}
|
|
60
|
+
return (React.createElement(Text, { color: theme.accent, bold: true },
|
|
61
|
+
"\u276F",
|
|
62
|
+
' '));
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* A rounded card around the marker and the editable input, drawn in the active-border
|
|
66
|
+
* colour. The input sizes itself to the terminal width less four columns, which is
|
|
67
|
+
* exactly what a border and a column of padding on each side take.
|
|
68
|
+
*/
|
|
69
|
+
export const CardsInputFrame = ({ children }) => {
|
|
70
|
+
const theme = useTheme();
|
|
71
|
+
return (React.createElement(Card, { color: theme.borderActive },
|
|
72
|
+
React.createElement(Box, null, children)));
|
|
73
|
+
};
|
|
74
|
+
/** Quiet key hints, `·`-separated, with the key itself carrying the weight. */
|
|
75
|
+
export const CardsHints = ({ hints }) => {
|
|
76
|
+
const theme = useTheme();
|
|
77
|
+
return (React.createElement(Text, { color: theme.textSubtle }, hints.map(([key, action, keyColor], index) => (React.createElement(React.Fragment, { key: key },
|
|
78
|
+
index > 0 ? ' · ' : '',
|
|
79
|
+
React.createElement(Text, { color: keyColor ? theme[keyColor] : theme.textMuted, bold: true }, key),
|
|
80
|
+
' ',
|
|
81
|
+
action)))));
|
|
82
|
+
};
|
|
83
|
+
//# sourceMappingURL=live-region.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"live-region.js","sourceRoot":"","sources":["../../../source/skins/cards/live-region.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;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,kDAAkD,CAAC;AACzF,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAExE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,mGAAmG;AACnG,MAAM,OAAO,GAAO,GAAG,EAAE;IACvB,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,MAAM,KAAK,GAAG,eAAe,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;IACrD,OAAO,CACL,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,UAC5B,KAAK,CACD,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,qGAAqG;AACrG,MAAM,CAAC,MAAM,qBAAqB,GAA6B,CAAC,EAC9D,KAAK,EACL,cAAc,EACd,eAAe,EACf,QAAQ,EACR,aAAa,GACd,EAAE,EAAE;IACH,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,MAAM,OAAO,GAAG,eAAe,IAAI,IAAI,IAAI,eAAe,GAAG,CAAC,CAAC;IAC/D,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAEnE,IAAI,KAAsB,CAAC;IAC3B,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;QAC1B,KAAK,GAAG,CACN;;YACgB,QAAQ,CAAC,CAAC,CAAC,oBAAC,IAAI,IAAC,IAAI,UAAE,QAAQ,CAAQ,CAAC,CAAC,CAAC,EAAE;YACzD,KAAK;YACL,cAAc;;YAAG,aAAa,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,aAAa,QAAQ,CAAC,CAAC,CAAC,EAAE;YACxE,OAAO,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;YAC3B,aAAa,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAChC,CACJ,CAAC;IACJ,CAAC;SAAM,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;QAChC,KAAK,GAAG,CACN;;YACc,cAAc;;YAAG,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CACvD,CACJ,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,gBAAgB,cAAc,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,gBAAgB,cAAc,GAAG,CAAC;IACpG,CAAC;IAED,OAAO,CACL,oBAAC,GAAG;QACF,oBAAC,GAAG,IAAC,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC;YAChC,oBAAC,OAAO,OAAG,CACP;QACN,oBAAC,GAAG,IAAC,UAAU,EAAE,CAAC;YAChB,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,UAAU,IAAG,KAAK,CAAQ,CACzC,CACF,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,kGAAkG;AAClG,MAAM,CAAC,MAAM,gBAAgB,GAAO,GAAG,EAAE,CAAC,IAAI,CAAC;AAE/C,MAAM,CAAC,MAAM,iBAAiB,GAA0B,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;IACnE,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;QACzB,OAAO,CACL,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI;;YACzB,GAAG,CACH,CACR,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,OAAO,CACL,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI;;YAC3B,GAAG,CACA,CACR,CAAC;IACJ,CAAC;IACD,OAAO,CACL,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI;;QAC3B,GAAG,CACA,CACR,CAAC;AACJ,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAwB,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;IACnE,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,OAAO,CACL,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,YAAY;QAC7B,oBAAC,GAAG,QAAE,QAAQ,CAAO,CAChB,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,+EAA+E;AAC/E,MAAM,CAAC,MAAM,UAAU,GAAmB,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;IACtD,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,OAAO,CACL,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,UAAU,IAC1B,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAC7C,oBAAC,KAAK,CAAC,QAAQ,IAAC,GAAG,EAAE,GAAG;QACrB,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;QACvB,oBAAC,IAAI,IAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,UAC5D,GAAG,CACC;QAAC,GAAG;QACV,MAAM,CACQ,CAClB,CAAC,CACG,CACR,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type RefObject } from 'react';
|
|
2
|
+
import { type DOMElement } from 'ink';
|
|
3
|
+
/**
|
|
4
|
+
* The width, in columns, that the element this ref is attached to was actually given.
|
|
5
|
+
*
|
|
6
|
+
* Layouts that choose between forms (chips in a row or stacked, how many status pills fit)
|
|
7
|
+
* need the room they really have: the card's inner width, not the terminal's, and a
|
|
8
|
+
* terminal width is not always available to read (a one-shot render has no stdout). The
|
|
9
|
+
* width is measured in a layout effect, whose state update is applied before anything is
|
|
10
|
+
* painted, and `initial` is what is assumed for that first pass.
|
|
11
|
+
*
|
|
12
|
+
* `terminalColumns` is the caller's own reading of the terminal width. Its only job here is
|
|
13
|
+
* to re-run the measurement when the terminal is resized, since the element's width can
|
|
14
|
+
* change then and at no other time.
|
|
15
|
+
*/
|
|
16
|
+
export declare function useMeasuredWidth(initial: number, terminalColumns: number): [RefObject<DOMElement | null>, number];
|
|
17
|
+
//# sourceMappingURL=measure.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"measure.d.ts","sourceRoot":"","sources":["../../../source/skins/cards/measure.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAC1E,OAAO,EAAkB,KAAK,UAAU,EAAE,MAAM,KAAK,CAAC;AAEtD;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,CAAC,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,MAAM,CAAC,CAYjH"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { useLayoutEffect, useRef, useState } from 'react';
|
|
2
|
+
import { measureElement } from 'ink';
|
|
3
|
+
/**
|
|
4
|
+
* The width, in columns, that the element this ref is attached to was actually given.
|
|
5
|
+
*
|
|
6
|
+
* Layouts that choose between forms (chips in a row or stacked, how many status pills fit)
|
|
7
|
+
* need the room they really have: the card's inner width, not the terminal's, and a
|
|
8
|
+
* terminal width is not always available to read (a one-shot render has no stdout). The
|
|
9
|
+
* width is measured in a layout effect, whose state update is applied before anything is
|
|
10
|
+
* painted, and `initial` is what is assumed for that first pass.
|
|
11
|
+
*
|
|
12
|
+
* `terminalColumns` is the caller's own reading of the terminal width. Its only job here is
|
|
13
|
+
* to re-run the measurement when the terminal is resized, since the element's width can
|
|
14
|
+
* change then and at no other time.
|
|
15
|
+
*/
|
|
16
|
+
export function useMeasuredWidth(initial, terminalColumns) {
|
|
17
|
+
const ref = useRef(null);
|
|
18
|
+
const [width, setWidth] = useState(initial);
|
|
19
|
+
useLayoutEffect(() => {
|
|
20
|
+
if (!ref.current)
|
|
21
|
+
return;
|
|
22
|
+
const measured = measureElement(ref.current).width;
|
|
23
|
+
// The updater form lets React drop an unchanged width without scheduling another render.
|
|
24
|
+
if (measured > 0)
|
|
25
|
+
setWidth((current) => (current === measured ? current : measured));
|
|
26
|
+
}, [terminalColumns]);
|
|
27
|
+
return [ref, width];
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=measure.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"measure.js","sourceRoot":"","sources":["../../../source/skins/cards/measure.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAmB,MAAM,KAAK,CAAC;AAEtD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAe,EAAE,eAAuB;IACvE,MAAM,GAAG,GAAG,MAAM,CAAa,IAAI,CAAC,CAAC;IACrC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IAE5C,eAAe,CAAC,GAAG,EAAE;QACnB,IAAI,CAAC,GAAG,CAAC,OAAO;YAAE,OAAO;QACzB,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC;QACnD,yFAAyF;QACzF,IAAI,QAAQ,GAAG,CAAC;YAAE,QAAQ,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IACvF,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;IAEtB,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AACtB,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type FC } from 'react';
|
|
2
|
+
import type { AssistantFrameProps, BannerView, UserMessageView } from '../types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Columns the assistant frame may take on the left: the reasoning rail and its space.
|
|
5
|
+
* Declared for both kinds, so an answer wraps two columns narrower than it strictly needs
|
|
6
|
+
* to; that is the price of one honest number, and it keeps reasoning's code blocks inside
|
|
7
|
+
* the terminal.
|
|
8
|
+
*/
|
|
9
|
+
export declare const ASSISTANT_GUTTER = 2;
|
|
10
|
+
/**
|
|
11
|
+
* A small card that shrinks to its content: name and version on the border, the
|
|
12
|
+
* model on the first row, the mode (and mentor) badges beneath.
|
|
13
|
+
*/
|
|
14
|
+
export declare const CardsBanner: FC<BannerView>;
|
|
15
|
+
/** The user's turn in a card of its own, in the accent colour, titled `you`. */
|
|
16
|
+
export declare const CardsUserMessage: FC<UserMessageView>;
|
|
17
|
+
/**
|
|
18
|
+
* Answers stay completely bare, flush left, so long markdown and code blocks read
|
|
19
|
+
* without a frame. Reasoning is subordinate: it sits behind a quiet dotted rail, which is
|
|
20
|
+
* also what marks it apart from an answer when there is no colour.
|
|
21
|
+
*/
|
|
22
|
+
export declare const CardsAssistantFrame: FC<AssistantFrameProps>;
|
|
23
|
+
//# sourceMappingURL=messages.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../../source/skins/cards/messages.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAKvC,OAAO,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGpF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAelC;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,EAAE,CAAC,UAAU,CA+CtC,CAAC;AAEF,gFAAgF;AAChF,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC,eAAe,CAchD,CAAC;AAaF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,EAAE,EAAE,CAAC,mBAAmB,CAkBvD,CAAC"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Box, Text } from 'ink';
|
|
3
|
+
import { useTheme } from '../../components/theme.js';
|
|
4
|
+
import { MODEL_LABEL_MAX } from '../shared/limits.js';
|
|
5
|
+
import { Card } from './card.js';
|
|
6
|
+
/**
|
|
7
|
+
* Columns the assistant frame may take on the left: the reasoning rail and its space.
|
|
8
|
+
* Declared for both kinds, so an answer wraps two columns narrower than it strictly needs
|
|
9
|
+
* to; that is the price of one honest number, and it keeps reasoning's code blocks inside
|
|
10
|
+
* the terminal.
|
|
11
|
+
*/
|
|
12
|
+
export const ASSISTANT_GUTTER = 2;
|
|
13
|
+
const truncateModel = (name) => name.length > MODEL_LABEL_MAX ? `${name.slice(0, MODEL_LABEL_MAX - 1)}…` : name;
|
|
14
|
+
const Badge = ({ mode }) => {
|
|
15
|
+
const theme = useTheme();
|
|
16
|
+
return (React.createElement(Text, { backgroundColor: theme.modeBadge[mode], color: theme.modeBadgeForeground, bold: true },
|
|
17
|
+
' ',
|
|
18
|
+
mode,
|
|
19
|
+
' '));
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* A small card that shrinks to its content: name and version on the border, the
|
|
23
|
+
* model on the first row, the mode (and mentor) badges beneath.
|
|
24
|
+
*/
|
|
25
|
+
export const CardsBanner = ({ version, mode, mentor, providerLabel, model, reasoningEffort, mentorModel, mentorReasoningEffort, }) => {
|
|
26
|
+
const theme = useTheme();
|
|
27
|
+
return (React.createElement(Box, { flexDirection: "column", paddingTop: 1, marginBottom: 1 },
|
|
28
|
+
React.createElement(Card, { fit: true, color: theme.border, title: React.createElement(Text, { wrap: "truncate-end" },
|
|
29
|
+
React.createElement(Text, { color: theme.accent, bold: true }, "term\u00B2"),
|
|
30
|
+
React.createElement(Text, { color: theme.textMuted },
|
|
31
|
+
" v",
|
|
32
|
+
version)) },
|
|
33
|
+
React.createElement(Text, null,
|
|
34
|
+
React.createElement(Text, { color: theme.textMuted }, providerLabel),
|
|
35
|
+
React.createElement(Text, { color: theme.textSubtle }, "/"),
|
|
36
|
+
React.createElement(Text, { color: theme.accent, bold: true }, model ? truncateModel(model) : '—'),
|
|
37
|
+
reasoningEffort !== 'none' && React.createElement(Text, { color: theme.textSubtle },
|
|
38
|
+
" (",
|
|
39
|
+
reasoningEffort,
|
|
40
|
+
")")),
|
|
41
|
+
React.createElement(Box, { flexWrap: "wrap", columnGap: 1 },
|
|
42
|
+
React.createElement(Badge, { mode: mode }),
|
|
43
|
+
mentor && React.createElement(Badge, { mode: "MENTOR" }),
|
|
44
|
+
mentor && mentorModel && (React.createElement(Text, null,
|
|
45
|
+
React.createElement(Text, { color: theme.textSubtle }, "mentor "),
|
|
46
|
+
React.createElement(Text, { color: theme.accentAlt }, truncateModel(mentorModel)),
|
|
47
|
+
mentorReasoningEffort !== 'none' && React.createElement(Text, { color: theme.textSubtle },
|
|
48
|
+
" (",
|
|
49
|
+
mentorReasoningEffort,
|
|
50
|
+
")")))))));
|
|
51
|
+
};
|
|
52
|
+
/** The user's turn in a card of its own, in the accent colour, titled `you`. */
|
|
53
|
+
export const CardsUserMessage = ({ text }) => {
|
|
54
|
+
const theme = useTheme();
|
|
55
|
+
return (React.createElement(Card, { color: theme.accent, title: React.createElement(Text, { color: theme.accent, bold: true, wrap: "truncate-end" }, "you") },
|
|
56
|
+
React.createElement(Text, { color: theme.userText }, text)));
|
|
57
|
+
};
|
|
58
|
+
const REASONING_RAIL = {
|
|
59
|
+
topLeft: '',
|
|
60
|
+
top: '',
|
|
61
|
+
topRight: '',
|
|
62
|
+
left: '┆',
|
|
63
|
+
bottomLeft: '',
|
|
64
|
+
bottom: '',
|
|
65
|
+
bottomRight: '',
|
|
66
|
+
right: '',
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* Answers stay completely bare, flush left, so long markdown and code blocks read
|
|
70
|
+
* without a frame. Reasoning is subordinate: it sits behind a quiet dotted rail, which is
|
|
71
|
+
* also what marks it apart from an answer when there is no colour.
|
|
72
|
+
*/
|
|
73
|
+
export const CardsAssistantFrame = ({ kind, children }) => {
|
|
74
|
+
const theme = useTheme();
|
|
75
|
+
if (kind === 'reasoning') {
|
|
76
|
+
return (React.createElement(Box, { flexDirection: "column", borderStyle: REASONING_RAIL, borderTop: false, borderBottom: false, borderRight: false, borderColor: theme.textSubtle, paddingLeft: 1 }, children));
|
|
77
|
+
}
|
|
78
|
+
return React.createElement(React.Fragment, null, children);
|
|
79
|
+
};
|
|
80
|
+
//# sourceMappingURL=messages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../source/skins/cards/messages.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type FC } from 'react';
|
|
2
|
+
import type { StatusView } from '../types.js';
|
|
3
|
+
/**
|
|
4
|
+
* A row of pills: safety, who is answering, then this turn's numbers (the context
|
|
5
|
+
* gauge, tokens, cache, cost). Everything that is not steady state, the alerts and the
|
|
6
|
+
* provider quota, sits on a second row that exists only while there is something to say.
|
|
7
|
+
*/
|
|
8
|
+
export declare const CardsStatusBar: FC<StatusView>;
|
|
9
|
+
//# sourceMappingURL=status.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../source/skins/cards/status.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAKvC,OAAO,KAAK,EAAyD,UAAU,EAAE,MAAM,aAAa,CAAC;AA6NrG;;;;GAIG;AACH,eAAO,MAAM,cAAc,EAAE,EAAE,CAAC,UAAU,CA8CzC,CAAC"}
|