@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,466 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Box, renderToString } from 'ink';
|
|
3
|
+
import Banner from '../../components/layout/Banner.js';
|
|
4
|
+
import BottomArea from '../../components/layout/BottomArea.js';
|
|
5
|
+
import StatusBar from '../../components/layout/StatusBar.js';
|
|
6
|
+
import ChatMessage from '../../components/message/ChatMessage.js';
|
|
7
|
+
import CommandGroupSummary from '../../components/message/CommandGroupSummary.js';
|
|
8
|
+
import CommandMessage from '../../components/message/CommandMessage.js';
|
|
9
|
+
import BackgroundTasksPanel from '../../components/layout/BackgroundTasksPanel.js';
|
|
10
|
+
import ConfirmPrompt from '../../components/prompt/ConfirmPrompt.js';
|
|
11
|
+
import QueuePausedPrompt from '../../components/prompt/QueuePausedPrompt.js';
|
|
12
|
+
import FirstRunSetupPrompt from '../../components/input/FirstRunSetupPrompt.js';
|
|
13
|
+
import SubagentActivityMessage from '../../components/message/SubagentActivityMessage.js';
|
|
14
|
+
import SkillSelectionMenu from '../../components/menu/SkillSelectionMenu.js';
|
|
15
|
+
import SlashCommandMenu from '../../components/menu/SlashCommandMenu.js';
|
|
16
|
+
import ResumeSelectionMenu from '../../components/menu/ResumeSelectionMenu.js';
|
|
17
|
+
import ApprovalPrompt from '../../components/prompt/ApprovalPrompt.js';
|
|
18
|
+
import { InputProvider } from '../../context/InputContext.js';
|
|
19
|
+
import { createMockSettingsService } from '../../services/settings/settings-service.mock.js';
|
|
20
|
+
import { THEMES } from '../../theme/palettes.js';
|
|
21
|
+
import { ThemeProvider } from '../../theme/ThemeContext.js';
|
|
22
|
+
import { getSkin } from '../registry.js';
|
|
23
|
+
import { SkinProvider } from '../SkinContext.js';
|
|
24
|
+
const settings = () => createMockSettingsService({
|
|
25
|
+
'agent.model': 'gpt-5.6-luna',
|
|
26
|
+
'agent.provider': 'codex',
|
|
27
|
+
'agent.reasoningEffort': 'high',
|
|
28
|
+
'shell.autoApproveMode': 'auto',
|
|
29
|
+
'sandbox.enabled': true,
|
|
30
|
+
});
|
|
31
|
+
const SHELL_OK = {
|
|
32
|
+
id: 'ok',
|
|
33
|
+
sender: 'command',
|
|
34
|
+
status: 'completed',
|
|
35
|
+
command: 'rg -n "expiresAt" src',
|
|
36
|
+
output: 'src/auth.ts:42: if (token.expiresAt < Date.now())\nsrc/retry.ts:10: // TODO: refresh',
|
|
37
|
+
success: true,
|
|
38
|
+
toolName: 'shell',
|
|
39
|
+
toolArgs: { command: 'rg -n "expiresAt" src' },
|
|
40
|
+
};
|
|
41
|
+
const SHELL_FAILED = {
|
|
42
|
+
id: 'failed',
|
|
43
|
+
sender: 'command',
|
|
44
|
+
status: 'failed',
|
|
45
|
+
command: 'pnpm test auth',
|
|
46
|
+
output: 'FAIL src/auth.test.ts\n ✗ refreshes near expiry\n expected true, got false',
|
|
47
|
+
success: false,
|
|
48
|
+
toolName: 'shell',
|
|
49
|
+
toolArgs: { command: 'pnpm test auth' },
|
|
50
|
+
};
|
|
51
|
+
const SHELL_RUNNING = {
|
|
52
|
+
id: 'running',
|
|
53
|
+
sender: 'command',
|
|
54
|
+
status: 'running',
|
|
55
|
+
command: 'pnpm build',
|
|
56
|
+
output: '',
|
|
57
|
+
toolName: 'shell',
|
|
58
|
+
toolArgs: { command: 'pnpm build' },
|
|
59
|
+
};
|
|
60
|
+
const SHELL_REJECTED = {
|
|
61
|
+
id: 'rejected',
|
|
62
|
+
sender: 'command',
|
|
63
|
+
status: 'completed',
|
|
64
|
+
command: 'git push --force origin main',
|
|
65
|
+
output: 'Tool execution was not approved.',
|
|
66
|
+
success: false,
|
|
67
|
+
isApprovalRejection: true,
|
|
68
|
+
toolName: 'shell',
|
|
69
|
+
toolArgs: { command: 'git push --force origin main' },
|
|
70
|
+
};
|
|
71
|
+
const PATCH = {
|
|
72
|
+
agentName: 'Agent',
|
|
73
|
+
toolName: 'search_replace',
|
|
74
|
+
argumentsText: JSON.stringify({
|
|
75
|
+
path: 'src/auth.ts',
|
|
76
|
+
replacements: [
|
|
77
|
+
{
|
|
78
|
+
search_content: 'if (token.expiresAt < Date.now()) {\n return refresh(token);\n}',
|
|
79
|
+
replace_content: 'if (token.expiresAt - Date.now() < SKEW_MS) {\n return refresh(token);\n}',
|
|
80
|
+
},
|
|
81
|
+
],
|
|
82
|
+
}),
|
|
83
|
+
rawInterruption: { type: 'tool_approval_item' },
|
|
84
|
+
};
|
|
85
|
+
const RISKY_COMMAND = 'git push --force-with-lease origin feature/auth-refresh && pnpm publish --access public --tag next';
|
|
86
|
+
const SHELL_APPROVAL = {
|
|
87
|
+
agentName: 'Agent',
|
|
88
|
+
toolName: 'shell',
|
|
89
|
+
argumentsText: JSON.stringify({ command: RISKY_COMMAND, cwd: '/home/user/term2', timeout_ms: 120_000 }),
|
|
90
|
+
rawInterruption: { type: 'tool_approval_item' },
|
|
91
|
+
};
|
|
92
|
+
const DOCKER_APPROVAL = {
|
|
93
|
+
agentName: 'Agent',
|
|
94
|
+
toolName: 'shell',
|
|
95
|
+
argumentsText: JSON.stringify({ command: 'docker run --privileged -v /:/host alpine sh' }),
|
|
96
|
+
rawInterruption: { type: 'tool_approval_item' },
|
|
97
|
+
dockerHostControl: true,
|
|
98
|
+
};
|
|
99
|
+
const DENIED_READ_APPROVAL = {
|
|
100
|
+
agentName: 'Agent',
|
|
101
|
+
toolName: 'shell',
|
|
102
|
+
argumentsText: JSON.stringify({ command: 'cat /etc/hosts' }),
|
|
103
|
+
rawInterruption: { type: 'tool_approval_item' },
|
|
104
|
+
deniedRead: {
|
|
105
|
+
deniedPath: '/etc/hosts',
|
|
106
|
+
suggestedParent: '/etc',
|
|
107
|
+
sensitive: false,
|
|
108
|
+
},
|
|
109
|
+
};
|
|
110
|
+
const MARKDOWN = `## Findings
|
|
111
|
+
|
|
112
|
+
Two problems in the **auth middleware**:
|
|
113
|
+
|
|
114
|
+
1. Tokens are never refreshed when \`expiresAt\` is inside the skew window
|
|
115
|
+
2. The retry helper swallows \`401\` responses
|
|
116
|
+
|
|
117
|
+
\`\`\`ts
|
|
118
|
+
export function isExpired(t: Token, skewMs = 30_000) {
|
|
119
|
+
return t.expiresAt - Date.now() < skewMs;
|
|
120
|
+
}
|
|
121
|
+
\`\`\`
|
|
122
|
+
`;
|
|
123
|
+
const ASK_USER_APPROVAL = {
|
|
124
|
+
agentName: 'Agent',
|
|
125
|
+
toolName: 'ask_user',
|
|
126
|
+
argumentsText: JSON.stringify({
|
|
127
|
+
questions: [
|
|
128
|
+
{
|
|
129
|
+
question: 'Which refresh strategy should I use?',
|
|
130
|
+
options: [
|
|
131
|
+
{ label: 'Refresh inside the skew window', description: 'Recommended: avoids the one-hour logout.' },
|
|
132
|
+
{ label: 'Refresh on every request', description: 'Simpler, but doubles token traffic.' },
|
|
133
|
+
],
|
|
134
|
+
},
|
|
135
|
+
{ question: 'Add a regression test?', options: [{ label: 'Yes' }, { label: 'No' }] },
|
|
136
|
+
],
|
|
137
|
+
}),
|
|
138
|
+
rawInterruption: { type: 'ask_user' },
|
|
139
|
+
};
|
|
140
|
+
const toolBody = (id, toolName, output, toolArgs) => ({
|
|
141
|
+
id,
|
|
142
|
+
sender: 'command',
|
|
143
|
+
status: 'completed',
|
|
144
|
+
command: `${toolName} ${JSON.stringify(toolArgs)}`,
|
|
145
|
+
output,
|
|
146
|
+
success: true,
|
|
147
|
+
toolName,
|
|
148
|
+
toolArgs,
|
|
149
|
+
});
|
|
150
|
+
const GREP_BODY = toolBody('grep', 'grep', 'src/auth.ts:42: if (token.expiresAt < Date.now())\nsrc/auth.ts:57: return token.expiresAt\nsrc/retry.ts:10: // TODO: refresh', { pattern: 'expiresAt' });
|
|
151
|
+
const READ_BODY = toolBody('read', 'read_file', 'File: src/auth.ts (120 lines) [lines 40-43]\n===\n40: export function isExpired(t: Token) {\n41: return expired(t);\n42: }\n43: ', { path: 'src/auth.ts' });
|
|
152
|
+
const WEB_SEARCH_BODY = toolBody('web', 'web_search', '## Answer\nRefresh tokens before they expire, using a skew window.\n\n## Search Results\n### 1. Token refresh patterns\n**URL:** https://example.com/refresh\n**Published:** 2025-01-02\nA skew window avoids edge expiry.\n---', { query: 'token refresh skew' });
|
|
153
|
+
const WEB_FETCH_BODY = toolBody('fetch', 'web_fetch', 'Title: Token refresh patterns\nURL: https://example.com/refresh\n\nA skew window avoids edge expiry.', { url: 'https://example.com/refresh' });
|
|
154
|
+
const SKILLS = [
|
|
155
|
+
{ name: 'tdd', description: 'Test-driven development loop.', isProjectLevel: true },
|
|
156
|
+
{ name: 'release', description: 'Cut a release.', isProjectLevel: false },
|
|
157
|
+
];
|
|
158
|
+
const ADVISED_APPROVAL = {
|
|
159
|
+
...SHELL_APPROVAL,
|
|
160
|
+
llmAdvisory: {
|
|
161
|
+
source: 'model',
|
|
162
|
+
approved: false,
|
|
163
|
+
model: 'gpt-5.6-luna',
|
|
164
|
+
reasoning: 'Force pushing rewrites shared history.',
|
|
165
|
+
},
|
|
166
|
+
};
|
|
167
|
+
const noop = () => { };
|
|
168
|
+
const bottomAreaProps = (overrides) => ({
|
|
169
|
+
pendingApproval: null,
|
|
170
|
+
waitingForApproval: false,
|
|
171
|
+
waitingForRejectionReason: false,
|
|
172
|
+
isProcessing: false,
|
|
173
|
+
onSubmit: async () => { },
|
|
174
|
+
slashCommands: [{ name: '/clear', description: 'Clear screen', action: noop }],
|
|
175
|
+
isShellMode: false,
|
|
176
|
+
settingsService: settings(),
|
|
177
|
+
loggingService: {
|
|
178
|
+
info: noop,
|
|
179
|
+
warn: noop,
|
|
180
|
+
error: noop,
|
|
181
|
+
debug: noop,
|
|
182
|
+
security: noop,
|
|
183
|
+
setCorrelationId: noop,
|
|
184
|
+
clearCorrelationId: noop,
|
|
185
|
+
},
|
|
186
|
+
historyService: { getMessages: () => [], addMessage: noop, clear: noop },
|
|
187
|
+
onApprove: noop,
|
|
188
|
+
onReject: noop,
|
|
189
|
+
queuePaused: false,
|
|
190
|
+
queueLength: 0,
|
|
191
|
+
onResumeQueue: noop,
|
|
192
|
+
onDiscardQueue: noop,
|
|
193
|
+
backgroundTaskManagerOpen: false,
|
|
194
|
+
onBackgroundTaskManagerOpenChange: noop,
|
|
195
|
+
lastUsage: { prompt_tokens: 229_000, completion_tokens: 1_250, cache_read_tokens: 120_000 },
|
|
196
|
+
costSummary: { state: 'estimated', knownUsdMicros: 123_456 },
|
|
197
|
+
...overrides,
|
|
198
|
+
});
|
|
199
|
+
const approval = (value) => React.createElement(ApprovalPrompt, { approval: value, onApprove: noop, onReject: noop });
|
|
200
|
+
export const SCENES = [
|
|
201
|
+
{
|
|
202
|
+
id: 'banner',
|
|
203
|
+
description: 'The session banner: version, mode badge, provider/model/effort.',
|
|
204
|
+
node: () => React.createElement(Banner, { settingsService: settings() }),
|
|
205
|
+
mustContain: ['term²', 'gpt-5.6-luna'],
|
|
206
|
+
},
|
|
207
|
+
{
|
|
208
|
+
id: 'user-message',
|
|
209
|
+
description: 'A user turn.',
|
|
210
|
+
node: () => React.createElement(ChatMessage, { msg: { id: 'u', sender: 'user', text: 'why do users get logged out after an hour?' } }),
|
|
211
|
+
mustContain: ['why do users get logged out after an hour?'],
|
|
212
|
+
},
|
|
213
|
+
{
|
|
214
|
+
id: 'assistant-answer',
|
|
215
|
+
description: 'Markdown answer with a list and a code block, plus a reasoning note.',
|
|
216
|
+
node: () => (React.createElement(Box, { flexDirection: "column" },
|
|
217
|
+
React.createElement(ChatMessage, { msg: { id: 'r', sender: 'reasoning', text: 'Checking the refresh path first.' }, maxWidth: 36 }),
|
|
218
|
+
React.createElement(ChatMessage, { msg: { id: 'b', sender: 'bot', text: MARKDOWN }, maxWidth: 36 }))),
|
|
219
|
+
mustContain: ['Checking the refresh path first.', 'Findings', 'isExpired'],
|
|
220
|
+
},
|
|
221
|
+
{
|
|
222
|
+
id: 'tools-standard',
|
|
223
|
+
description: 'Tool calls in standard display: ok, failed, running, and an approval rejection.',
|
|
224
|
+
node: () => (React.createElement(Box, { flexDirection: "column" },
|
|
225
|
+
React.createElement(CommandMessage, { ...SHELL_OK, displayMode: "standard" }),
|
|
226
|
+
React.createElement(CommandMessage, { ...SHELL_FAILED, displayMode: "standard" }),
|
|
227
|
+
React.createElement(CommandMessage, { ...SHELL_RUNNING, displayMode: "standard" }),
|
|
228
|
+
React.createElement(CommandMessage, { ...SHELL_REJECTED, displayMode: "standard" }))),
|
|
229
|
+
// A running call is deliberately hidden until it has run for a moment, so it is not asserted.
|
|
230
|
+
mustContain: ['rg -n "expiresAt" src', 'src/auth.ts:42', 'pnpm test auth', 'FAIL src/auth.test.ts', 'DENIED'],
|
|
231
|
+
},
|
|
232
|
+
{
|
|
233
|
+
id: 'tools-concise',
|
|
234
|
+
description: 'The same calls in concise display, the default.',
|
|
235
|
+
node: () => (React.createElement(Box, { flexDirection: "column" },
|
|
236
|
+
React.createElement(CommandMessage, { ...SHELL_OK, displayMode: "concise" }),
|
|
237
|
+
React.createElement(CommandMessage, { ...SHELL_FAILED, displayMode: "concise" }),
|
|
238
|
+
React.createElement(CommandMessage, { ...SHELL_RUNNING, displayMode: "concise" }),
|
|
239
|
+
React.createElement(CommandMessage, { ...SHELL_REJECTED, displayMode: "concise" }))),
|
|
240
|
+
mustContain: ['rg -n "expiresAt" src', 'pnpm test auth', 'DENIED'],
|
|
241
|
+
},
|
|
242
|
+
{
|
|
243
|
+
id: 'tool-group',
|
|
244
|
+
description: 'A grouped run of concise tool calls: all ok, partly failed, all failed.',
|
|
245
|
+
node: () => {
|
|
246
|
+
const members = [
|
|
247
|
+
{ id: '1', sender: 'command', toolName: 'grep', status: 'completed', success: true },
|
|
248
|
+
{ id: '2', sender: 'command', toolName: 'read_file', status: 'completed', success: true },
|
|
249
|
+
{ id: '3', sender: 'command', toolName: 'shell', command: 'pnpm test', status: 'failed', success: false },
|
|
250
|
+
];
|
|
251
|
+
return (React.createElement(Box, { flexDirection: "column" },
|
|
252
|
+
React.createElement(CommandGroupSummary, { members: members.slice(0, 2), status: "completed" }),
|
|
253
|
+
React.createElement(CommandGroupSummary, { members: members, status: "partial" }),
|
|
254
|
+
React.createElement(CommandGroupSummary, { members: members.slice(2), status: "failed" })));
|
|
255
|
+
},
|
|
256
|
+
mustContain: ['Searched', 'read', 'failed'],
|
|
257
|
+
},
|
|
258
|
+
{
|
|
259
|
+
id: 'approval-shell',
|
|
260
|
+
description: 'A risky shell command awaiting approval, with the two-pane choices.',
|
|
261
|
+
node: () => approval(SHELL_APPROVAL),
|
|
262
|
+
mustContain: ['shell', 'git push --force-with-lease', 'pnpm publish', 'Allow once', 'Deny', 'Allow this action?'],
|
|
263
|
+
},
|
|
264
|
+
{
|
|
265
|
+
id: 'approval-patch',
|
|
266
|
+
description: 'A file edit awaiting approval, showing the diff.',
|
|
267
|
+
node: () => approval(PATCH),
|
|
268
|
+
mustContain: ['search_replace', 'src/auth.ts', 'SKEW_MS', 'Allow once', 'Deny'],
|
|
269
|
+
},
|
|
270
|
+
{
|
|
271
|
+
id: 'approval-danger',
|
|
272
|
+
description: 'Docker host control: the riskiest approval class, which must be recognisable by shape.',
|
|
273
|
+
node: () => approval(DOCKER_APPROVAL),
|
|
274
|
+
mustContain: ['Docker host control', 'docker run --privileged', 'Allow this command', 'Deny'],
|
|
275
|
+
},
|
|
276
|
+
{
|
|
277
|
+
id: 'approval-denied-read',
|
|
278
|
+
description: 'A sandbox-blocked read, with the list-only choices.',
|
|
279
|
+
node: () => approval(DENIED_READ_APPROVAL),
|
|
280
|
+
mustContain: ['Sandbox blocked read access', '/etc/hosts', 'Deny'],
|
|
281
|
+
},
|
|
282
|
+
{
|
|
283
|
+
id: 'ask-user',
|
|
284
|
+
description: 'The ask-user question: two questions, a recommended option, and the built-in custom-answer row.',
|
|
285
|
+
node: () => approval(ASK_USER_APPROVAL),
|
|
286
|
+
mustContain: [
|
|
287
|
+
'Which refresh strategy should I use?',
|
|
288
|
+
'Refresh inside the skew window',
|
|
289
|
+
'Refresh on every request',
|
|
290
|
+
'Recommended: avoids the one-hour logout.',
|
|
291
|
+
'Esc cancel',
|
|
292
|
+
],
|
|
293
|
+
},
|
|
294
|
+
{
|
|
295
|
+
id: 'subagent-feed',
|
|
296
|
+
description: 'A subagent feed: running with its latest calls, completed with an answer, and failed.',
|
|
297
|
+
node: () => (React.createElement(Box, { flexDirection: "column" },
|
|
298
|
+
React.createElement(SubagentActivityMessage, { msg: {
|
|
299
|
+
role: 'explorer',
|
|
300
|
+
task: 'map auth flow',
|
|
301
|
+
status: 'running',
|
|
302
|
+
tools: ['read_file "src/auth.ts" (Success)', 'grep "expiresAt" (Failed)'],
|
|
303
|
+
} }),
|
|
304
|
+
React.createElement(SubagentActivityMessage, { msg: {
|
|
305
|
+
role: 'explorer',
|
|
306
|
+
task: 'map auth flow',
|
|
307
|
+
status: 'completed',
|
|
308
|
+
finalText: 'Tokens refresh in src/auth.ts.',
|
|
309
|
+
} }),
|
|
310
|
+
React.createElement(SubagentActivityMessage, { msg: { role: 'reviewer', task: 'review the patch', status: 'failed', error: 'timeout', tools: [] } }))),
|
|
311
|
+
mustContain: ['map auth flow', 'src/auth.ts', 'Tokens refresh in src/auth.ts.', 'failed: timeout'],
|
|
312
|
+
},
|
|
313
|
+
{
|
|
314
|
+
id: 'tool-bodies',
|
|
315
|
+
description: 'The bodies of the specialised tool renderers: grep, read_file, web_search and web_fetch.',
|
|
316
|
+
node: () => (React.createElement(Box, { flexDirection: "column" },
|
|
317
|
+
React.createElement(CommandMessage, { ...GREP_BODY, displayMode: "standard" }),
|
|
318
|
+
React.createElement(CommandMessage, { ...READ_BODY, displayMode: "standard" }),
|
|
319
|
+
React.createElement(CommandMessage, { ...WEB_SEARCH_BODY, displayMode: "standard" }),
|
|
320
|
+
React.createElement(CommandMessage, { ...WEB_FETCH_BODY, displayMode: "standard" }))),
|
|
321
|
+
mustContain: [
|
|
322
|
+
'src/retry.ts',
|
|
323
|
+
'return expired(t);',
|
|
324
|
+
'Answer Summary',
|
|
325
|
+
'Token refresh patterns',
|
|
326
|
+
'https://example.com/refresh',
|
|
327
|
+
],
|
|
328
|
+
},
|
|
329
|
+
{
|
|
330
|
+
id: 'menus',
|
|
331
|
+
description: 'Menu bodies: a list menu, a two-column menu, and a menu with nothing to show.',
|
|
332
|
+
node: () => (React.createElement(Box, { flexDirection: "column" },
|
|
333
|
+
React.createElement(SlashCommandMenu, { commands: [
|
|
334
|
+
{ name: 'clear', description: 'Clear screen', action: noop },
|
|
335
|
+
{ name: 'settings', description: 'Open settings', action: noop },
|
|
336
|
+
], selectedIndex: 1, filter: "" }),
|
|
337
|
+
React.createElement(SkillSelectionMenu, { items: SKILLS, selectedIndex: 0, query: "" }),
|
|
338
|
+
React.createElement(ResumeSelectionMenu, { items: [], selectedIndex: 0, query: "" }))),
|
|
339
|
+
mustContain: ['Commands', 'settings', 'Skills', 'Test-driven development loop.', 'No saved conversations found'],
|
|
340
|
+
},
|
|
341
|
+
{
|
|
342
|
+
id: 'approval-advisory',
|
|
343
|
+
description: 'An approval carrying an AI advisor note.',
|
|
344
|
+
node: () => approval(ADVISED_APPROVAL),
|
|
345
|
+
mustContain: ['AI Advisor: CAUTION', 'Force pushing rewrites shared history.', 'Deny'],
|
|
346
|
+
},
|
|
347
|
+
{
|
|
348
|
+
id: 'confirm-prompts',
|
|
349
|
+
description: 'The confirmation surfaces: a yes/no confirm, the paused-queue notice, and first-run setup.',
|
|
350
|
+
node: () => (React.createElement(Box, { flexDirection: "column" },
|
|
351
|
+
React.createElement(ConfirmPrompt, { warning: "Switching to plan mode requires clearing the current session.", question: "Clear session and switch to plan mode?", defaultIndex: 1, onConfirm: noop, onDecline: noop, onCancel: noop }),
|
|
352
|
+
React.createElement(QueuePausedPrompt, { queueLength: 2, pauseReason: "failure", onResume: noop, onDiscard: noop }),
|
|
353
|
+
React.createElement(FirstRunSetupPrompt, { phase: "provider", provider: "openai" }))),
|
|
354
|
+
mustContain: [
|
|
355
|
+
'Clear session and switch to plan mode?',
|
|
356
|
+
'Queue paused',
|
|
357
|
+
'resume',
|
|
358
|
+
'discard',
|
|
359
|
+
'First-run setup',
|
|
360
|
+
'Normal chat is disabled until setup completes.',
|
|
361
|
+
],
|
|
362
|
+
},
|
|
363
|
+
{
|
|
364
|
+
id: 'task-panel',
|
|
365
|
+
description: 'The background-task list above the input.',
|
|
366
|
+
node: () => (React.createElement(BackgroundTasksPanel, { now: 66_000, tasks: [
|
|
367
|
+
{
|
|
368
|
+
kind: 'subagent',
|
|
369
|
+
runId: 'run-1',
|
|
370
|
+
role: 'explorer',
|
|
371
|
+
task: 'map auth',
|
|
372
|
+
status: 'running',
|
|
373
|
+
startedAt: 1_000,
|
|
374
|
+
},
|
|
375
|
+
{ kind: 'shell', jobId: 'shell-1', command: 'pnpm test', status: 'running', startedAt: 61_000 },
|
|
376
|
+
] })),
|
|
377
|
+
mustContain: ['Tasks', 'active'],
|
|
378
|
+
},
|
|
379
|
+
{
|
|
380
|
+
id: 'live-shell',
|
|
381
|
+
description: 'The live region while a foreground shell command runs.',
|
|
382
|
+
node: () => (React.createElement(InputProvider, null,
|
|
383
|
+
React.createElement(BottomArea, { ...bottomAreaProps({ activeShellCommand: 'pnpm test auth' }) }))),
|
|
384
|
+
mustContain: ['pnpm test auth'],
|
|
385
|
+
},
|
|
386
|
+
{
|
|
387
|
+
id: 'status',
|
|
388
|
+
description: 'The status bar with usage, cache, context, cost and provider quota.',
|
|
389
|
+
node: () => (React.createElement(StatusBar, { settingsService: settings(),
|
|
390
|
+
// The renderToString width below drives the real layout; this only has to be set.
|
|
391
|
+
lastUsage: {
|
|
392
|
+
prompt_tokens: 229_000,
|
|
393
|
+
completion_tokens: 1_250,
|
|
394
|
+
cache_read_tokens: 120_000,
|
|
395
|
+
tokens_per_second: 48.2,
|
|
396
|
+
}, costSummary: { state: 'estimated', knownUsdMicros: 123_456 }, queueLength: 2, lastCodexRateLimit: {
|
|
397
|
+
allowed: true,
|
|
398
|
+
limit_reached: false,
|
|
399
|
+
primary: { used_percent: 42, window_minutes: 300, reset_after_seconds: 10_800, reset_at: 4_102_444_800 },
|
|
400
|
+
} })),
|
|
401
|
+
mustContain: ['gpt-5.6-luna', 'Sandboxed'],
|
|
402
|
+
contentFromColumns: 60,
|
|
403
|
+
},
|
|
404
|
+
{
|
|
405
|
+
id: 'status-alerts',
|
|
406
|
+
description: 'The status bar when something needs attention: cache-miss risk and a run-budget notice.',
|
|
407
|
+
node: () => (React.createElement(StatusBar, { settingsService: settings(), lastUsage: { prompt_tokens: 229_000, completion_tokens: 1_250 }, largeUncachedWarning: { estimatedTokens: 230_000 }, runBudgetNotice: { type: 'tool_stall', toolName: 'shell', count: 6 } })),
|
|
408
|
+
mustContain: ['cache miss risk', 'Possible stall'],
|
|
409
|
+
contentFromColumns: 60,
|
|
410
|
+
},
|
|
411
|
+
{
|
|
412
|
+
id: 'live-working',
|
|
413
|
+
description: 'The live region while the model is thinking: working line, input, hints, status.',
|
|
414
|
+
node: () => (React.createElement(InputProvider, null,
|
|
415
|
+
React.createElement(BottomArea, { ...bottomAreaProps({ isProcessing: true, thinkingStartedAt: Date.now() - 12_000 }) }))),
|
|
416
|
+
mustContain: ['steer', 'queue'],
|
|
417
|
+
},
|
|
418
|
+
{
|
|
419
|
+
id: 'live-tool-call',
|
|
420
|
+
description: 'The live region while a tool call is being streamed.',
|
|
421
|
+
node: () => (React.createElement(InputProvider, null,
|
|
422
|
+
React.createElement(BottomArea, { ...bottomAreaProps({
|
|
423
|
+
isProcessing: true,
|
|
424
|
+
toolCallStreamingInfo: { toolName: 'apply_patch', argumentCharCount: 1240 },
|
|
425
|
+
liveStreamingSpeed: { tps: 48.2 },
|
|
426
|
+
}) }))),
|
|
427
|
+
mustContain: ['apply_patch'],
|
|
428
|
+
},
|
|
429
|
+
{
|
|
430
|
+
id: 'live-idle',
|
|
431
|
+
description: 'The live region at rest: empty input and its hints.',
|
|
432
|
+
node: () => (React.createElement(InputProvider, null,
|
|
433
|
+
React.createElement(BottomArea, { ...bottomAreaProps({}) }))),
|
|
434
|
+
mustContain: ['commands'],
|
|
435
|
+
},
|
|
436
|
+
];
|
|
437
|
+
/**
|
|
438
|
+
* Renders a scene through the real containers, under the given skin and theme, at a
|
|
439
|
+
* fixed width.
|
|
440
|
+
*
|
|
441
|
+
* `renderToString` lays out at `columns` but gives hooks no stdout width, so
|
|
442
|
+
* `useTerminalColumns()` and `useStdout().stdout.columns` would fall back to a
|
|
443
|
+
* default whatever width was asked for, and every width-adaptive choice a skin
|
|
444
|
+
* makes (dropping a segment, stacking options, shortening a banner) would go
|
|
445
|
+
* untested. The width is therefore set on `process.stdout` for the duration of the
|
|
446
|
+
* render, exactly where a real terminal reports it, and restored afterwards.
|
|
447
|
+
*/
|
|
448
|
+
export function renderScene(scene, { skin, theme, columns }) {
|
|
449
|
+
const hadOwn = Object.prototype.hasOwnProperty.call(process.stdout, 'columns');
|
|
450
|
+
const previous = process.stdout.columns;
|
|
451
|
+
process.stdout.columns = columns;
|
|
452
|
+
try {
|
|
453
|
+
return renderToString(React.createElement(ThemeProvider, { theme: THEMES[theme] },
|
|
454
|
+
React.createElement(SkinProvider, { skin: typeof skin === 'string' ? getSkin(skin) : skin },
|
|
455
|
+
React.createElement(Box, { flexDirection: "column", width: columns }, scene.node()))), { columns });
|
|
456
|
+
}
|
|
457
|
+
finally {
|
|
458
|
+
if (hadOwn) {
|
|
459
|
+
process.stdout.columns = previous;
|
|
460
|
+
}
|
|
461
|
+
else {
|
|
462
|
+
delete process.stdout.columns;
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
//# sourceMappingURL=scenes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scenes.js","sourceRoot":"","sources":["../../../source/skins/testing/scenes.tsx"],"names":[],"mappings":"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"}
|