@qduc/term2 0.29.1 → 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/agent.d.ts +13 -0
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +73 -2
- package/dist/agent.js.map +1 -1
- 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 +53 -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 +2 -2
- package/dist/components/message/SubagentActivityMessage.d.ts.map +1 -1
- package/dist/components/message/SubagentActivityMessage.js +17 -28
- 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/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/core/index.d.ts +2 -3
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +1 -7
- package/dist/core/index.js.map +1 -1
- package/dist/core/session-runtime.d.ts +72 -0
- package/dist/core/session-runtime.d.ts.map +1 -1
- package/dist/gateway/contracts.d.ts +1 -1
- package/dist/gateway/contracts.d.ts.map +1 -1
- package/dist/gateway/gateway.d.ts +32 -0
- package/dist/gateway/gateway.d.ts.map +1 -1
- package/dist/gateway/gateway.js +47 -2
- package/dist/gateway/gateway.js.map +1 -1
- package/dist/gateway/persistence/contracts.d.ts +3 -10
- package/dist/gateway/persistence/contracts.d.ts.map +1 -1
- package/dist/gateway/persistence/contracts.js +2 -31
- package/dist/gateway/persistence/contracts.js.map +1 -1
- package/dist/gateway/runtime-factory.d.ts.map +1 -1
- package/dist/gateway/runtime-factory.js +4 -0
- package/dist/gateway/runtime-factory.js.map +1 -1
- package/dist/gateway/server-session.d.ts +3 -0
- package/dist/gateway/server-session.d.ts.map +1 -1
- package/dist/gateway/server-session.js +17 -20
- package/dist/gateway/server-session.js.map +1 -1
- package/dist/gateway/settings-rpc.d.ts +1 -1
- package/dist/gateway/settings-rpc.d.ts.map +1 -1
- package/dist/gateway/settings-rpc.js +4 -1
- package/dist/gateway/settings-rpc.js.map +1 -1
- package/dist/hooks/conversation-ui-reducer.d.ts +5 -2
- package/dist/hooks/conversation-ui-reducer.d.ts.map +1 -1
- package/dist/hooks/conversation-ui-reducer.js +9 -2
- package/dist/hooks/conversation-ui-reducer.js.map +1 -1
- package/dist/hooks/settings-completion-config.d.ts.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/lib/agent-client.d.ts +8 -0
- package/dist/lib/agent-client.d.ts.map +1 -1
- package/dist/lib/agent-client.js +5 -1
- package/dist/lib/agent-client.js.map +1 -1
- package/dist/lib/agent-configuration.d.ts +9 -0
- package/dist/lib/agent-configuration.d.ts.map +1 -1
- package/dist/lib/agent-configuration.js +14 -0
- package/dist/lib/agent-configuration.js.map +1 -1
- package/dist/lib/agent-factory.d.ts +25 -4
- package/dist/lib/agent-factory.d.ts.map +1 -1
- package/dist/lib/agent-factory.js +6 -0
- package/dist/lib/agent-factory.js.map +1 -1
- package/dist/lib/subagent-bridge.d.ts +47 -5
- package/dist/lib/subagent-bridge.d.ts.map +1 -1
- package/dist/lib/subagent-bridge.js +112 -4
- package/dist/lib/subagent-bridge.js.map +1 -1
- package/dist/node_modules/@qduc/agent-wire/index.d.ts +73 -0
- package/dist/node_modules/@qduc/agent-wire/index.js +212 -0
- package/dist/node_modules/@qduc/agent-wire/package.json +1 -0
- package/dist/prompts/orchestrator-prompt.test.ts +9 -0
- package/dist/prompts/orchestrator.md +2 -0
- package/dist/prompts/subagent-delegation.d.ts.map +1 -1
- package/dist/prompts/subagent-delegation.js +3 -2
- package/dist/prompts/subagent-delegation.js.map +1 -1
- package/dist/prompts/subagent-delegation.test.ts +1 -0
- package/dist/prompts/subagent-delegation.ts +6 -2
- package/dist/providers/codex.provider.d.ts +3 -0
- package/dist/providers/codex.provider.d.ts.map +1 -1
- package/dist/providers/codex.provider.js +6 -4
- package/dist/providers/codex.provider.js.map +1 -1
- package/dist/providers/grok-auth.d.ts +3 -0
- package/dist/providers/grok-auth.d.ts.map +1 -1
- package/dist/providers/grok-auth.js +3 -1
- package/dist/providers/grok-auth.js.map +1 -1
- package/dist/providers/grok.provider.js +3 -3
- package/dist/providers/grok.provider.js.map +1 -1
- package/dist/providers/index.d.ts +1 -1
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +1 -1
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/model-catalog/catalog.generated.d.ts +239 -171
- package/dist/providers/model-catalog/catalog.generated.d.ts.map +1 -1
- package/dist/providers/model-catalog/catalog.generated.js +238 -179
- package/dist/providers/model-catalog/catalog.generated.js.map +1 -1
- package/dist/providers/model-catalog/generate-catalog.d.ts.map +1 -1
- package/dist/providers/model-catalog/generate-catalog.js +13 -5
- package/dist/providers/model-catalog/generate-catalog.js.map +1 -1
- package/dist/providers/oauth-session-account.d.ts +16 -2
- package/dist/providers/oauth-session-account.d.ts.map +1 -1
- package/dist/providers/oauth-session-account.js +8 -17
- package/dist/providers/oauth-session-account.js.map +1 -1
- package/dist/providers/openai-chat-completions-model.d.ts.map +1 -1
- package/dist/providers/openai-chat-completions-model.js +5 -2
- package/dist/providers/openai-chat-completions-model.js.map +1 -1
- package/dist/providers/openai.provider.js +1 -1
- package/dist/providers/openai.provider.js.map +1 -1
- package/dist/providers/openrouter.provider.js +1 -1
- package/dist/providers/openrouter.provider.js.map +1 -1
- package/dist/providers/registry.d.ts +20 -1
- package/dist/providers/registry.d.ts.map +1 -1
- package/dist/providers/registry.js +33 -16
- package/dist/providers/registry.js.map +1 -1
- package/dist/providers/web-search/exa.provider.d.ts.map +1 -1
- package/dist/providers/web-search/exa.provider.js +6 -3
- package/dist/providers/web-search/exa.provider.js.map +1 -1
- package/dist/providers/web-search/firecrawl.provider.d.ts +8 -0
- package/dist/providers/web-search/firecrawl.provider.d.ts.map +1 -0
- package/dist/providers/web-search/firecrawl.provider.js +59 -0
- package/dist/providers/web-search/firecrawl.provider.js.map +1 -0
- package/dist/providers/web-search/index.d.ts +5 -2
- package/dist/providers/web-search/index.d.ts.map +1 -1
- package/dist/providers/web-search/index.js +3 -1
- package/dist/providers/web-search/index.js.map +1 -1
- package/dist/providers/web-search/registry.d.ts +14 -0
- package/dist/providers/web-search/registry.d.ts.map +1 -1
- package/dist/providers/web-search/registry.js +45 -15
- package/dist/providers/web-search/registry.js.map +1 -1
- package/dist/providers/web-search/searxng.provider.d.ts +8 -0
- package/dist/providers/web-search/searxng.provider.d.ts.map +1 -0
- package/dist/providers/web-search/searxng.provider.js +56 -0
- package/dist/providers/web-search/searxng.provider.js.map +1 -0
- package/dist/providers/web-search/tavily.provider.d.ts.map +1 -1
- package/dist/providers/web-search/tavily.provider.js +8 -3
- package/dist/providers/web-search/tavily.provider.js.map +1 -1
- package/dist/providers/web-search/types.d.ts +14 -1
- package/dist/providers/web-search/types.d.ts.map +1 -1
- package/dist/services/agent-runtime/agent-resolver.d.ts.map +1 -1
- package/dist/services/agent-runtime/agent-resolver.js +1 -0
- package/dist/services/agent-runtime/agent-resolver.js.map +1 -1
- package/dist/services/agent-runtime/agent-runtime.d.ts +6 -1
- package/dist/services/agent-runtime/agent-runtime.d.ts.map +1 -1
- package/dist/services/agent-runtime/agent-runtime.js +11 -2
- package/dist/services/agent-runtime/agent-runtime.js.map +1 -1
- package/dist/services/agent-runtime/agent-spec.d.ts +14 -0
- package/dist/services/agent-runtime/agent-spec.d.ts.map +1 -0
- package/dist/services/agent-runtime/agent-spec.js +49 -0
- package/dist/services/agent-runtime/agent-spec.js.map +1 -0
- package/dist/services/agent-runtime/index.d.ts +3 -1
- package/dist/services/agent-runtime/index.d.ts.map +1 -1
- package/dist/services/agent-runtime/index.js +2 -0
- package/dist/services/agent-runtime/index.js.map +1 -1
- package/dist/services/agent-runtime/legacy-adapter.d.ts.map +1 -1
- package/dist/services/agent-runtime/legacy-adapter.js +5 -1
- package/dist/services/agent-runtime/legacy-adapter.js.map +1 -1
- package/dist/services/agent-runtime/permission-boundary.d.ts +95 -0
- package/dist/services/agent-runtime/permission-boundary.d.ts.map +1 -0
- package/dist/services/agent-runtime/permission-boundary.js +538 -0
- package/dist/services/agent-runtime/permission-boundary.js.map +1 -0
- package/dist/services/agent-runtime/resolved-agent.d.ts +2 -0
- package/dist/services/agent-runtime/resolved-agent.d.ts.map +1 -1
- package/dist/services/agent-runtime/types.d.ts +22 -1
- package/dist/services/agent-runtime/types.d.ts.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/approval/non-interactive-approval-policy.d.ts.map +1 -1
- package/dist/services/approval/non-interactive-approval-policy.js +10 -0
- package/dist/services/approval/non-interactive-approval-policy.js.map +1 -1
- package/dist/services/approval/shell-auto-approval-resolver.d.ts +2 -0
- package/dist/services/approval/shell-auto-approval-resolver.d.ts.map +1 -1
- package/dist/services/approval/shell-auto-approval-resolver.js +4 -2
- package/dist/services/approval/shell-auto-approval-resolver.js.map +1 -1
- package/dist/services/conversation/conversation-adapter-factory.d.ts +1 -1
- package/dist/services/conversation/conversation-adapter-factory.d.ts.map +1 -1
- package/dist/services/conversation/conversation-adapter.d.ts +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-runtime-factory.d.ts +1 -1
- package/dist/services/conversation/conversation-runtime-factory.d.ts.map +1 -1
- package/dist/services/conversation/conversation-runtime-factory.js +1 -1
- package/dist/services/conversation/conversation-runtime-factory.js.map +1 -1
- package/dist/services/conversation/conversation-service.d.ts +4 -1
- package/dist/services/conversation/conversation-service.d.ts.map +1 -1
- package/dist/services/conversation/conversation-service.js +41 -1
- package/dist/services/conversation/conversation-service.js.map +1 -1
- package/dist/services/conversation/session-index/session-index-service.d.ts +1 -1
- package/dist/services/conversation/session-index/session-index-service.d.ts.map +1 -1
- package/dist/services/conversation/session-index/session-index-service.js +1 -1
- package/dist/services/conversation/session-index/session-index-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/retry/provider-failure-classification.d.ts +2 -0
- package/dist/services/retry/provider-failure-classification.d.ts.map +1 -1
- package/dist/services/retry/provider-failure-classification.js +43 -0
- package/dist/services/retry/provider-failure-classification.js.map +1 -1
- package/dist/services/sandboxed-code-host/host-worker.d.ts.map +1 -1
- package/dist/services/sandboxed-code-host/host-worker.js +3 -1
- package/dist/services/sandboxed-code-host/host-worker.js.map +1 -1
- package/dist/services/session/session-composition.d.ts +7 -1
- package/dist/services/session/session-composition.d.ts.map +1 -1
- package/dist/services/session/session-composition.js +68 -14
- package/dist/services/session/session-composition.js.map +1 -1
- package/dist/services/session/session-input-planner.d.ts +2 -0
- package/dist/services/session/session-input-planner.d.ts.map +1 -1
- package/dist/services/session/session-input-planner.js +4 -6
- package/dist/services/session/session-input-planner.js.map +1 -1
- package/dist/services/settings/settings-env.d.ts.map +1 -1
- package/dist/services/settings/settings-env.js +9 -0
- package/dist/services/settings/settings-env.js.map +1 -1
- package/dist/services/settings/settings-schema.d.ts +58 -0
- package/dist/services/settings/settings-schema.d.ts.map +1 -1
- package/dist/services/settings/settings-schema.js +32 -0
- package/dist/services/settings/settings-schema.js.map +1 -1
- package/dist/services/settings/settings-sources.d.ts +4 -0
- package/dist/services/settings/settings-sources.d.ts.map +1 -1
- package/dist/services/settings/settings-sources.js +4 -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 +6 -1
- package/dist/services/settings/settings-ui-metadata.js.map +1 -1
- package/dist/services/settings/test-helpers/settings-consumer-inventory.d.ts +2 -2
- package/dist/services/settings/test-helpers/settings-consumer-inventory.d.ts.map +1 -1
- package/dist/services/settings/test-helpers/settings-consumer-inventory.js +10 -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/execution-runner.d.ts.map +1 -1
- package/dist/services/subagents/execution-runner.js +2 -1
- package/dist/services/subagents/execution-runner.js.map +1 -1
- package/dist/services/subagents/foreground-subagent-lease.d.ts +15 -0
- package/dist/services/subagents/foreground-subagent-lease.d.ts.map +1 -1
- package/dist/services/subagents/foreground-subagent-lease.js +42 -2
- package/dist/services/subagents/foreground-subagent-lease.js.map +1 -1
- package/dist/services/subagents/nested-runner.d.ts +1 -1
- package/dist/services/subagents/nested-runner.d.ts.map +1 -1
- package/dist/services/subagents/nested-runner.js +89 -22
- package/dist/services/subagents/nested-runner.js.map +1 -1
- package/dist/services/subagents/runtime.d.ts.map +1 -1
- package/dist/services/subagents/runtime.js +30 -4
- package/dist/services/subagents/runtime.js.map +1 -1
- package/dist/services/subagents/subagent-async-registry.d.ts +3 -0
- package/dist/services/subagents/subagent-async-registry.d.ts.map +1 -1
- package/dist/services/subagents/subagent-async-registry.js +55 -10
- package/dist/services/subagents/subagent-async-registry.js.map +1 -1
- package/dist/services/subagents/subagent-manager.d.ts.map +1 -1
- package/dist/services/subagents/subagent-manager.js +65 -3
- package/dist/services/subagents/subagent-manager.js.map +1 -1
- package/dist/services/subagents/subagent-role-pool-selector.d.ts +5 -1
- package/dist/services/subagents/subagent-role-pool-selector.d.ts.map +1 -1
- package/dist/services/subagents/subagent-role-pool-selector.js +24 -5
- package/dist/services/subagents/subagent-role-pool-selector.js.map +1 -1
- package/dist/services/subagents/subagent-run-control.d.ts.map +1 -1
- package/dist/services/subagents/subagent-run-control.js +3 -2
- package/dist/services/subagents/subagent-run-control.js.map +1 -1
- package/dist/services/subagents/tool-policy.d.ts +2 -2
- package/dist/services/subagents/tool-policy.d.ts.map +1 -1
- package/dist/services/subagents/tool-policy.js +8 -2
- package/dist/services/subagents/tool-policy.js.map +1 -1
- package/dist/services/subagents/types.d.ts +15 -2
- package/dist/services/subagents/types.d.ts.map +1 -1
- package/dist/services/subagents/types.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/services/subagents/worker-worktree.d.ts +19 -1
- package/dist/services/subagents/worker-worktree.d.ts.map +1 -1
- package/dist/services/subagents/worker-worktree.js +128 -4
- package/dist/services/subagents/worker-worktree.js.map +1 -1
- package/dist/services/workspace/worktree-inventory.d.ts +6 -0
- package/dist/services/workspace/worktree-inventory.d.ts.map +1 -1
- package/dist/services/workspace/worktree-inventory.js +29 -1
- package/dist/services/workspace/worktree-inventory.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/agent/propose-goal.d.ts +17 -0
- package/dist/tools/agent/propose-goal.d.ts.map +1 -0
- package/dist/tools/agent/propose-goal.js +64 -0
- package/dist/tools/agent/propose-goal.js.map +1 -0
- package/dist/tools/agent/run-subagent-async.d.ts +61 -3
- package/dist/tools/agent/run-subagent-async.d.ts.map +1 -1
- package/dist/tools/agent/run-subagent-async.js +13 -4
- package/dist/tools/agent/run-subagent-async.js.map +1 -1
- package/dist/tools/agent/run-subagent.d.ts +73 -7
- package/dist/tools/agent/run-subagent.d.ts.map +1 -1
- package/dist/tools/agent/run-subagent.js +84 -22
- package/dist/tools/agent/run-subagent.js.map +1 -1
- 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/index.d.ts +1 -1
- package/dist/tools/system/run-code/index.d.ts.map +1 -1
- package/dist/tools/system/run-code/index.js +1 -1
- package/dist/tools/system/run-code/index.js.map +1 -1
- package/dist/tools/system/run-code/run-code-agent-capability.d.ts +99 -0
- package/dist/tools/system/run-code/run-code-agent-capability.d.ts.map +1 -0
- package/dist/tools/system/run-code/run-code-agent-capability.js +384 -0
- package/dist/tools/system/run-code/run-code-agent-capability.js.map +1 -0
- package/dist/tools/system/run-code/run-code-runtime.d.ts +9 -0
- package/dist/tools/system/run-code/run-code-runtime.d.ts.map +1 -1
- package/dist/tools/system/run-code/run-code-runtime.js +141 -7
- package/dist/tools/system/run-code/run-code-runtime.js.map +1 -1
- package/dist/tools/system/run-code/run-code.d.ts +12 -1
- package/dist/tools/system/run-code/run-code.d.ts.map +1 -1
- package/dist/tools/system/run-code/run-code.js +48 -1
- package/dist/tools/system/run-code/run-code.js.map +1 -1
- package/dist/tools/tool-names.d.ts +1 -0
- package/dist/tools/tool-names.d.ts.map +1 -1
- package/dist/tools/tool-names.js +1 -0
- package/dist/tools/tool-names.js.map +1 -1
- package/dist/tools/web/web-search.d.ts +18 -0
- package/dist/tools/web/web-search.d.ts.map +1 -1
- package/dist/tools/web/web-search.js +29 -4
- package/dist/tools/web/web-search.js.map +1 -1
- package/dist/types/message.d.ts +1 -0
- package/dist/types/message.d.ts.map +1 -1
- package/dist/types/message.js +13 -0
- package/dist/types/message.js.map +1 -1
- package/dist/utils/conversation/conversation-event-handler.js +1 -1
- package/dist/utils/conversation/conversation-event-handler.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 +16 -0
- package/dist/utils/value-suggestions.js.map +1 -1
- package/package.json +2 -1
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import path from 'node:path';
|
|
2
|
+
import fs from 'node:fs';
|
|
2
3
|
import { ExecutionContext } from '../execution-context.js';
|
|
3
|
-
import { listGitWorktrees } from '../workspace/worktree-inventory.js';
|
|
4
|
+
import { listGitWorktrees, listGitWorktreesSync, } from '../workspace/worktree-inventory.js';
|
|
4
5
|
import { resolveWorkerWorktree } from '../workspace/worktree-transition.js';
|
|
5
6
|
function describeAvailable(worktrees) {
|
|
6
7
|
if (worktrees.length === 0) {
|
|
@@ -37,11 +38,11 @@ function formatResolveFailure(name, outcome) {
|
|
|
37
38
|
* parent session or publishes the process-wide active workspace.
|
|
38
39
|
*/
|
|
39
40
|
export async function pinWorkerWorktree(params) {
|
|
40
|
-
const { name, role, homeRoot, isRemote, listWorktrees = listGitWorktrees } = params;
|
|
41
|
-
if (role !== 'worker') {
|
|
41
|
+
const { name, role, homeRoot, isRemote, listWorktrees = listGitWorktrees, authorizedPath } = params;
|
|
42
|
+
if (role !== 'worker' && role !== 'agent') {
|
|
42
43
|
return {
|
|
43
44
|
ok: false,
|
|
44
|
-
error: `worktree is only supported for role "worker" (received "${role}"). Omit worktree or use
|
|
45
|
+
error: `worktree is only supported for role "worker" or a generic agent invocation (received "${role}"). Omit worktree or use a writable agent.`,
|
|
45
46
|
};
|
|
46
47
|
}
|
|
47
48
|
if (isRemote) {
|
|
@@ -64,6 +65,23 @@ export async function pinWorkerWorktree(params) {
|
|
|
64
65
|
if (outcome.kind !== 'resolved') {
|
|
65
66
|
return { ok: false, error: formatResolveFailure(name, outcome) };
|
|
66
67
|
}
|
|
68
|
+
let resolvedRealPath;
|
|
69
|
+
try {
|
|
70
|
+
resolvedRealPath = fs.realpathSync(outcome.worktree.path);
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
resolvedRealPath = path.resolve(outcome.worktree.path);
|
|
74
|
+
}
|
|
75
|
+
if (authorizedPath !== undefined) {
|
|
76
|
+
// The snapshot already recorded the physical path. Re-resolving it here
|
|
77
|
+
// would bless a symlink swapped into that same name after authorization.
|
|
78
|
+
if (resolvedRealPath !== authorizedPath) {
|
|
79
|
+
return {
|
|
80
|
+
ok: false,
|
|
81
|
+
error: `Worktree "${name}" resolved to ${outcome.worktree.path}, which does not match authorized path ${authorizedPath}.`,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
}
|
|
67
85
|
return {
|
|
68
86
|
ok: true,
|
|
69
87
|
executionContext: ExecutionContext.pin(outcome.worktree.path),
|
|
@@ -71,4 +89,110 @@ export async function pinWorkerWorktree(params) {
|
|
|
71
89
|
worktree: outcome.worktree,
|
|
72
90
|
};
|
|
73
91
|
}
|
|
92
|
+
function createAuthorizedWorktreeScope(names, paths) {
|
|
93
|
+
const scope = [...names];
|
|
94
|
+
Object.defineProperty(scope, 'authorizedPaths', {
|
|
95
|
+
value: Object.freeze({ ...paths }),
|
|
96
|
+
enumerable: false,
|
|
97
|
+
configurable: true,
|
|
98
|
+
});
|
|
99
|
+
return scope;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Derives a finite host-owned allowlist of authorized worktree names for registered
|
|
103
|
+
* in-repo worktrees. Fails closed (empty list) when remote, read-only, plan mode,
|
|
104
|
+
* outside a git repo, or when worktree listing fails.
|
|
105
|
+
*/
|
|
106
|
+
export function deriveAuthorizedWorktreeScope(options) {
|
|
107
|
+
const { homeRoot, isRemote = false, readOnly = false, planMode = false } = options;
|
|
108
|
+
// Fail-closed for remote, read-only, or plan mode
|
|
109
|
+
if (isRemote || readOnly || planMode) {
|
|
110
|
+
return createAuthorizedWorktreeScope([], {});
|
|
111
|
+
}
|
|
112
|
+
let worktrees;
|
|
113
|
+
if (options.worktrees) {
|
|
114
|
+
worktrees = options.worktrees;
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
try {
|
|
118
|
+
const listSync = options.listWorktreesSync ?? listGitWorktreesSync;
|
|
119
|
+
worktrees = listSync(homeRoot);
|
|
120
|
+
}
|
|
121
|
+
catch {
|
|
122
|
+
return createAuthorizedWorktreeScope([], {});
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
if (!worktrees || worktrees.length === 0) {
|
|
126
|
+
return createAuthorizedWorktreeScope([], {});
|
|
127
|
+
}
|
|
128
|
+
let physicalHomeRoot;
|
|
129
|
+
try {
|
|
130
|
+
physicalHomeRoot = fs.realpathSync(homeRoot);
|
|
131
|
+
}
|
|
132
|
+
catch {
|
|
133
|
+
physicalHomeRoot = path.resolve(homeRoot);
|
|
134
|
+
}
|
|
135
|
+
const mainWorktree = worktrees.find((w) => !w.bare) ?? worktrees[0];
|
|
136
|
+
let physicalRepoRoot;
|
|
137
|
+
if (mainWorktree?.path) {
|
|
138
|
+
try {
|
|
139
|
+
physicalRepoRoot = fs.realpathSync(mainWorktree.path);
|
|
140
|
+
}
|
|
141
|
+
catch {
|
|
142
|
+
physicalRepoRoot = path.resolve(mainWorktree.path);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
physicalRepoRoot = physicalHomeRoot;
|
|
147
|
+
}
|
|
148
|
+
const repoPrefix = physicalRepoRoot.endsWith(path.sep) ? physicalRepoRoot : `${physicalRepoRoot}${path.sep}`;
|
|
149
|
+
const allowedNames = new Set();
|
|
150
|
+
const authorizedPaths = {};
|
|
151
|
+
for (const worktree of worktrees) {
|
|
152
|
+
if (worktree.bare || worktree.prunable)
|
|
153
|
+
continue;
|
|
154
|
+
let candidatePath;
|
|
155
|
+
try {
|
|
156
|
+
candidatePath = fs.realpathSync(worktree.path);
|
|
157
|
+
}
|
|
158
|
+
catch {
|
|
159
|
+
candidatePath = path.resolve(worktree.path);
|
|
160
|
+
}
|
|
161
|
+
// Must be physically inside the repository root and not the parent session homeRoot
|
|
162
|
+
if (candidatePath === physicalHomeRoot || !candidatePath.startsWith(repoPrefix)) {
|
|
163
|
+
continue;
|
|
164
|
+
}
|
|
165
|
+
const namesToTest = [];
|
|
166
|
+
const base = path.basename(candidatePath);
|
|
167
|
+
if (base)
|
|
168
|
+
namesToTest.push(base);
|
|
169
|
+
if (worktree.branch)
|
|
170
|
+
namesToTest.push(worktree.branch);
|
|
171
|
+
for (const name of namesToTest) {
|
|
172
|
+
if (typeof name !== 'string' ||
|
|
173
|
+
name.length === 0 ||
|
|
174
|
+
name.includes('\0') ||
|
|
175
|
+
path.isAbsolute(name) ||
|
|
176
|
+
name.split(/[\\/]/).includes('..')) {
|
|
177
|
+
continue;
|
|
178
|
+
}
|
|
179
|
+
const outcome = resolveWorkerWorktree(name, physicalHomeRoot, worktrees);
|
|
180
|
+
if (outcome.kind !== 'resolved') {
|
|
181
|
+
continue;
|
|
182
|
+
}
|
|
183
|
+
let resolvedPath;
|
|
184
|
+
try {
|
|
185
|
+
resolvedPath = fs.realpathSync(outcome.worktree.path);
|
|
186
|
+
}
|
|
187
|
+
catch {
|
|
188
|
+
resolvedPath = path.resolve(outcome.worktree.path);
|
|
189
|
+
}
|
|
190
|
+
if (resolvedPath !== physicalHomeRoot && resolvedPath.startsWith(repoPrefix)) {
|
|
191
|
+
allowedNames.add(name);
|
|
192
|
+
authorizedPaths[name] = resolvedPath;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
return createAuthorizedWorktreeScope([...allowedNames].sort(), authorizedPaths);
|
|
197
|
+
}
|
|
74
198
|
//# sourceMappingURL=worker-worktree.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker-worktree.js","sourceRoot":"","sources":["../../../source/services/subagents/worker-worktree.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,
|
|
1
|
+
{"version":3,"file":"worker-worktree.js","sourceRoot":"","sources":["../../../source/services/subagents/worker-worktree.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import { type GitWorktree } from './parse-worktree-list.js';
|
|
2
2
|
export type ListWorktrees = (repoRoot: string) => Promise<GitWorktree[]>;
|
|
3
|
+
export type ListWorktreesSync = (repoRoot: string) => GitWorktree[];
|
|
4
|
+
/**
|
|
5
|
+
* Lists the repository's working trees synchronously with each path
|
|
6
|
+
* realpath-resolved. Fails closed (returns empty array) on error or non-git root.
|
|
7
|
+
*/
|
|
8
|
+
export declare const listGitWorktreesSync: ListWorktreesSync;
|
|
3
9
|
/**
|
|
4
10
|
* Lists the repository's working trees with each path realpath-resolved, so
|
|
5
11
|
* comparisons against the execution root are not defeated by symlinked
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worktree-inventory.d.ts","sourceRoot":"","sources":["../../../source/services/workspace/worktree-inventory.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"worktree-inventory.d.ts","sourceRoot":"","sources":["../../../source/services/workspace/worktree-inventory.ts"],"names":[],"mappings":"AAIA,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAI/E,MAAM,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;AACzE,MAAM,MAAM,iBAAiB,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,WAAW,EAAE,CAAC;AAEpE;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,iBAqBlC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,EAAE,aAkB9B,CAAC;AAEF,YAAY,EAAE,WAAW,EAAE,CAAC"}
|
|
@@ -1,8 +1,36 @@
|
|
|
1
|
-
import { execFile } from 'child_process';
|
|
1
|
+
import { execFile, execFileSync } from 'child_process';
|
|
2
2
|
import { promisify } from 'util';
|
|
3
3
|
import fs from 'fs/promises';
|
|
4
|
+
import fsSync from 'fs';
|
|
4
5
|
import { parseWorktreeList } from './parse-worktree-list.js';
|
|
5
6
|
const execFileAsync = promisify(execFile);
|
|
7
|
+
/**
|
|
8
|
+
* Lists the repository's working trees synchronously with each path
|
|
9
|
+
* realpath-resolved. Fails closed (returns empty array) on error or non-git root.
|
|
10
|
+
*/
|
|
11
|
+
export const listGitWorktreesSync = (repoRoot) => {
|
|
12
|
+
let stdout;
|
|
13
|
+
try {
|
|
14
|
+
stdout = execFileSync('git', ['worktree', 'list', '--porcelain'], {
|
|
15
|
+
cwd: repoRoot,
|
|
16
|
+
maxBuffer: 1024 * 1024,
|
|
17
|
+
encoding: 'utf8',
|
|
18
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return [];
|
|
23
|
+
}
|
|
24
|
+
const worktrees = parseWorktreeList(stdout);
|
|
25
|
+
return worktrees.map((worktree) => {
|
|
26
|
+
try {
|
|
27
|
+
return { ...worktree, path: fsSync.realpathSync(worktree.path) };
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return worktree;
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
};
|
|
6
34
|
/**
|
|
7
35
|
* Lists the repository's working trees with each path realpath-resolved, so
|
|
8
36
|
* comparisons against the execution root are not defeated by symlinked
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worktree-inventory.js","sourceRoot":"","sources":["../../../source/services/workspace/worktree-inventory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"worktree-inventory.js","sourceRoot":"","sources":["../../../source/services/workspace/worktree-inventory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,MAAM,MAAM,IAAI,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAoB,MAAM,0BAA0B,CAAC;AAE/E,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAK1C;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAsB,CAAC,QAAQ,EAAE,EAAE;IAClE,IAAI,MAAc,CAAC;IACnB,IAAI,CAAC;QACH,MAAM,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE;YAChE,GAAG,EAAE,QAAQ;YACb,SAAS,EAAE,IAAI,GAAG,IAAI;YACtB,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC;SACpC,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,SAAS,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC5C,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;QAChC,IAAI,CAAC;YACH,OAAO,EAAE,GAAG,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACnE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAkB,KAAK,EAAE,QAAQ,EAAE,EAAE;IAChE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE;QACjF,GAAG,EAAE,QAAQ;QACb,SAAS,EAAE,IAAI,GAAG,IAAI;KACvB,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC5C,OAAO,OAAO,CAAC,GAAG,CAChB,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;QAC/B,IAAI,CAAC;YACH,OAAO,EAAE,GAAG,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACjE,CAAC;QAAC,MAAM,CAAC;YACP,sEAAsE;YACtE,kDAAkD;YAClD,OAAO,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CACH,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type FC, type ReactNode } from 'react';
|
|
2
|
+
import type { ISettingsService } from '../services/service-interfaces.js';
|
|
3
|
+
import type { Skin } from './types.js';
|
|
4
|
+
export declare const useSkin: () => Skin;
|
|
5
|
+
export declare const SkinProvider: FC<{
|
|
6
|
+
skin: Skin;
|
|
7
|
+
children?: ReactNode;
|
|
8
|
+
}>;
|
|
9
|
+
/**
|
|
10
|
+
* Provides the skin named by `ui.skin`, and re-renders when it changes.
|
|
11
|
+
* Lines already committed to the terminal's scrollback keep the layout they were
|
|
12
|
+
* printed with, exactly as they keep their colours.
|
|
13
|
+
*/
|
|
14
|
+
export declare const SettingsSkinProvider: FC<{
|
|
15
|
+
settingsService: ISettingsService;
|
|
16
|
+
children?: ReactNode;
|
|
17
|
+
}>;
|
|
18
|
+
//# sourceMappingURL=SkinContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SkinContext.d.ts","sourceRoot":"","sources":["../../source/skins/SkinContext.tsx"],"names":[],"mappings":"AAAA,OAAc,EAA6B,KAAK,EAAE,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAClF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAK1E,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AASvC,eAAO,MAAM,OAAO,QAAO,IAA+B,CAAC;AAE3D,eAAO,MAAM,YAAY,EAAE,EAAE,CAAC;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;CAAE,CAEjE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,EAAE,EAAE,CAAC;IAAE,eAAe,EAAE,gBAAgB,CAAC;IAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;CAAE,CAMhG,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import React, { createContext, useContext } from 'react';
|
|
2
|
+
import { useSetting } from '../hooks/use-setting.js';
|
|
3
|
+
import { classicSkin } from './classic/index.js';
|
|
4
|
+
import { DEFAULT_SKIN_NAME } from './names.js';
|
|
5
|
+
import { getSkin } from './registry.js';
|
|
6
|
+
/**
|
|
7
|
+
* The default is the classic skin, not `undefined`: components rendered with no
|
|
8
|
+
* provider (the existing unit tests, one-off Ink roots) look exactly as they
|
|
9
|
+
* always have, and `useSkin()` can never return nothing.
|
|
10
|
+
*/
|
|
11
|
+
const SkinContext = createContext(classicSkin);
|
|
12
|
+
export const useSkin = () => useContext(SkinContext);
|
|
13
|
+
export const SkinProvider = ({ skin, children }) => (React.createElement(SkinContext.Provider, { value: skin }, children));
|
|
14
|
+
/**
|
|
15
|
+
* Provides the skin named by `ui.skin`, and re-renders when it changes.
|
|
16
|
+
* Lines already committed to the terminal's scrollback keep the layout they were
|
|
17
|
+
* printed with, exactly as they keep their colours.
|
|
18
|
+
*/
|
|
19
|
+
export const SettingsSkinProvider = ({ settingsService, children, }) => {
|
|
20
|
+
const name = useSetting(settingsService, 'ui.skin') ?? DEFAULT_SKIN_NAME;
|
|
21
|
+
return React.createElement(SkinProvider, { skin: getSkin(name) }, children);
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=SkinContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SkinContext.js","sourceRoot":"","sources":["../../source/skins/SkinContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,UAAU,EAA2B,MAAM,OAAO,CAAC;AAElF,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAGxC;;;;GAIG;AACH,MAAM,WAAW,GAAG,aAAa,CAAO,WAAW,CAAC,CAAC;AAErD,MAAM,CAAC,MAAM,OAAO,GAAG,GAAS,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAE3D,MAAM,CAAC,MAAM,YAAY,GAA6C,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAC5F,oBAAC,WAAW,CAAC,QAAQ,IAAC,KAAK,EAAE,IAAI,IAAG,QAAQ,CAAwB,CACrE,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAoE,CAAC,EACpG,eAAe,EACf,QAAQ,GACT,EAAE,EAAE;IACH,MAAM,IAAI,GAAG,UAAU,CAAC,eAAe,EAAE,SAAS,CAAC,IAAI,iBAAiB,CAAC;IACzE,OAAO,oBAAC,YAAY,IAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,IAAG,QAAQ,CAAgB,CAAC;AACtE,CAAC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type FC } from 'react';
|
|
2
|
+
import type { ShellActivityProps, TaskPanelProps } from '../types.js';
|
|
3
|
+
/** `❯ command` on a quiet surface, like the input it echoes. */
|
|
4
|
+
export declare const CardsShellActivity: FC<ShellActivityProps>;
|
|
5
|
+
/** Border and padding either side of a card. */
|
|
6
|
+
export declare const CARDS_TASK_PANEL_GUTTER = 4;
|
|
7
|
+
export declare const CardsTaskPanel: FC<TaskPanelProps>;
|
|
8
|
+
//# sourceMappingURL=activity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activity.d.ts","sourceRoot":"","sources":["../../../source/skins/cards/activity.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGtE,gEAAgE;AAChE,eAAO,MAAM,kBAAkB,EAAE,EAAE,CAAC,kBAAkB,CAgBrD,CAAC;AAEF,gDAAgD;AAChD,eAAO,MAAM,uBAAuB,IAAI,CAAC;AAEzC,eAAO,MAAM,cAAc,EAAE,EAAE,CAAC,cAAc,CAgB7C,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Box, Text } from 'ink';
|
|
3
|
+
import { useTheme } from '../../components/theme.js';
|
|
4
|
+
import { Card } from './card.js';
|
|
5
|
+
/** `❯ command` on a quiet surface, like the input it echoes. */
|
|
6
|
+
export const CardsShellActivity = ({ command }) => {
|
|
7
|
+
const theme = useTheme();
|
|
8
|
+
return (React.createElement(Box, null,
|
|
9
|
+
React.createElement(Box, { flexShrink: 0, marginRight: 1 },
|
|
10
|
+
React.createElement(Text, { color: theme.danger, bold: true }, "!")),
|
|
11
|
+
React.createElement(Box, { flexShrink: 1 },
|
|
12
|
+
React.createElement(Text, { color: theme.textSubtle },
|
|
13
|
+
"running ",
|
|
14
|
+
React.createElement(Text, { bold: true }, command)))));
|
|
15
|
+
};
|
|
16
|
+
/** Border and padding either side of a card. */
|
|
17
|
+
export const CARDS_TASK_PANEL_GUTTER = 4;
|
|
18
|
+
export const CardsTaskPanel = ({ header, children }) => {
|
|
19
|
+
const theme = useTheme();
|
|
20
|
+
return (React.createElement(Box, { marginBottom: 1, flexDirection: "column" },
|
|
21
|
+
React.createElement(Card, { color: theme.accentAlt, title: React.createElement(Text, { color: theme.accentAlt, bold: true }, header) }, children)));
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=activity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activity.js","sourceRoot":"","sources":["../../../source/skins/cards/activity.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;AAErD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,gEAAgE;AAChE,MAAM,CAAC,MAAM,kBAAkB,GAA2B,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;IACxE,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,OAAO,CACL,oBAAC,GAAG;QACF,oBAAC,GAAG,IAAC,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC;YAChC,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,cAExB,CACH;QACN,oBAAC,GAAG,IAAC,UAAU,EAAE,CAAC;YAChB,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,UAAU;;gBACnB,oBAAC,IAAI,IAAC,IAAI,UAAE,OAAO,CAAQ,CAC9B,CACH,CACF,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,gDAAgD;AAChD,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC;AAEzC,MAAM,CAAC,MAAM,cAAc,GAAuB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE;IACzE,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,OAAO,CACL,oBAAC,GAAG,IAAC,YAAY,EAAE,CAAC,EAAE,aAAa,EAAC,QAAQ;QAC1C,oBAAC,IAAI,IACH,KAAK,EAAE,KAAK,CAAC,SAAS,EACtB,KAAK,EACH,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,SAAS,EAAE,IAAI,UAC/B,MAAM,CACF,IAGR,QAAQ,CACJ,CACH,CACP,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type FC } from 'react';
|
|
2
|
+
import type { ApprovalChoicesProps, ApprovalFrameProps } from '../types.js';
|
|
3
|
+
/**
|
|
4
|
+
* A titled box in the warning colour. The riskiest class changes shape (a double
|
|
5
|
+
* border) and gains a `▲`, so it is recognisable before any word is read and with no
|
|
6
|
+
* colour at all; the ordinary class keeps the rounded shape of every other card.
|
|
7
|
+
*/
|
|
8
|
+
export declare const CardsApprovalFrame: FC<ApprovalFrameProps>;
|
|
9
|
+
/**
|
|
10
|
+
* The question, then the options as a row of chips with the selected option's
|
|
11
|
+
* description under them. When the row would not fit, or the terminal is narrow, the
|
|
12
|
+
* same chips stack one per line instead of overflowing.
|
|
13
|
+
*/
|
|
14
|
+
export declare const CardsApprovalChoices: FC<ApprovalChoicesProps>;
|
|
15
|
+
//# sourceMappingURL=approval.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"approval.d.ts","sourceRoot":"","sources":["../../../source/skins/cards/approval.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAIvC,OAAO,KAAK,EAAE,oBAAoB,EAAE,kBAAkB,EAAsB,MAAM,aAAa,CAAC;AAYhG;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,EAAE,EAAE,CAAC,kBAAkB,CAmBrD,CAAC;AA4BF;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,EAAE,EAAE,CAAC,oBAAoB,CAwCzD,CAAC"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Box, Text } from 'ink';
|
|
3
|
+
import { GLYPH_SELECTED, GLYPH_WARNING, useTheme } from '../../components/theme.js';
|
|
4
|
+
import { useTerminalColumns } from '../../hooks/use-terminal-columns.js';
|
|
5
|
+
import { Card } from './card.js';
|
|
6
|
+
import { useMeasuredWidth } from './measure.js';
|
|
7
|
+
import { cells } from './width.js';
|
|
8
|
+
/** Border and padding on both sides of the approval card. */
|
|
9
|
+
const CARD_CHROME = 4;
|
|
10
|
+
/** Below this terminal width the options always stack, whatever their length. */
|
|
11
|
+
const STACK_BELOW_COLUMNS = 60;
|
|
12
|
+
/** Columns a chip spends outside its label: a space either side, the marker slot, and `N `. */
|
|
13
|
+
const CHIP_CHROME = 2 + 2 + 2;
|
|
14
|
+
/**
|
|
15
|
+
* A titled box in the warning colour. The riskiest class changes shape (a double
|
|
16
|
+
* border) and gains a `▲`, so it is recognisable before any word is read and with no
|
|
17
|
+
* colour at all; the ordinary class keeps the rounded shape of every other card.
|
|
18
|
+
*/
|
|
19
|
+
export const CardsApprovalFrame = ({ tone, header, subheader, children }) => {
|
|
20
|
+
const theme = useTheme();
|
|
21
|
+
const danger = tone === 'danger';
|
|
22
|
+
const color = danger ? theme.danger : theme.warning;
|
|
23
|
+
return (React.createElement(Card, { color: color, shape: danger ? 'double' : 'round', title: React.createElement(Text, { color: color, bold: true, wrap: "truncate-end" },
|
|
24
|
+
danger ? `${GLYPH_WARNING} ` : '',
|
|
25
|
+
"Approval needed") },
|
|
26
|
+
React.createElement(Text, { bold: true }, header),
|
|
27
|
+
subheader,
|
|
28
|
+
children));
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* One option as a button. The selected one is filled (reverse video in the option's
|
|
32
|
+
* own tone, so its text is always the terminal's background colour on that tone, which
|
|
33
|
+
* is readable on any palette) and carries a `❯`; the others sit on a quiet surface. The
|
|
34
|
+
* marker slot is reserved on every chip so selecting never shifts the row.
|
|
35
|
+
*/
|
|
36
|
+
const Chip = ({ index, option, selected }) => {
|
|
37
|
+
const theme = useTheme();
|
|
38
|
+
if (selected) {
|
|
39
|
+
return (React.createElement(Text, { inverse: true, bold: true, color: theme[option.tone] }, ` ${GLYPH_SELECTED} ${index + 1} ${option.label} `));
|
|
40
|
+
}
|
|
41
|
+
return (React.createElement(Text, { backgroundColor: theme.codeBackground, color: theme.text },
|
|
42
|
+
' ',
|
|
43
|
+
React.createElement(Text, { color: theme[option.tone], bold: true }, index + 1),
|
|
44
|
+
` ${option.label} `));
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* The question, then the options as a row of chips with the selected option's
|
|
48
|
+
* description under them. When the row would not fit, or the terminal is narrow, the
|
|
49
|
+
* same chips stack one per line instead of overflowing.
|
|
50
|
+
*/
|
|
51
|
+
export const CardsApprovalChoices = ({ question, options, selectedIndex, layout, description, }) => {
|
|
52
|
+
const theme = useTheme();
|
|
53
|
+
const terminalColumns = useTerminalColumns();
|
|
54
|
+
// The room the chips actually have is the card's inner width, which is measured.
|
|
55
|
+
const [measureRef, innerWidth] = useMeasuredWidth(terminalColumns - CARD_CHROME, terminalColumns);
|
|
56
|
+
const rowWidth = options.reduce((total, option, index) => total + CHIP_CHROME + String(index + 1).length - 1 + cells(option.label), 0) + Math.max(0, options.length - 1);
|
|
57
|
+
const horizontal = innerWidth + CARD_CHROME >= STACK_BELOW_COLUMNS && rowWidth <= innerWidth;
|
|
58
|
+
const chips = options.map((option, index) => (React.createElement(Chip, { key: option.label, index: index, option: option, selected: index === selectedIndex })));
|
|
59
|
+
return (React.createElement(Box, { flexDirection: "column", ref: measureRef },
|
|
60
|
+
question !== undefined && React.createElement(Text, { bold: true }, question),
|
|
61
|
+
horizontal ? (React.createElement(Box, { columnGap: 1, flexWrap: "wrap", marginTop: question === undefined ? 0 : 1 }, chips)) : (React.createElement(Box, { flexDirection: "column", marginTop: question === undefined ? 0 : 1 }, chips.map((chip, index) => (React.createElement(Box, { key: options[index].label }, chip))))),
|
|
62
|
+
layout === 'two-pane' && description?.text && React.createElement(Text, { color: theme.textSubtle }, description.text)));
|
|
63
|
+
};
|
|
64
|
+
//# sourceMappingURL=approval.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"approval.js","sourceRoot":"","sources":["../../../source/skins/cards/approval.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type FC } from 'react';
|
|
2
|
+
import type { MenuFrameProps, QuestionPromptProps, SubagentFeedProps, ToolSectionProps } from '../types.js';
|
|
3
|
+
/** The question is the card's content; options are rows inside it, the selected one in its tone and bold. */
|
|
4
|
+
export declare const CardsQuestionPrompt: FC<QuestionPromptProps>;
|
|
5
|
+
/**
|
|
6
|
+
* One card per run. The task and outcome are content that must not be clipped, so
|
|
7
|
+
* they are the first line of the body; the border title only names the kind of card.
|
|
8
|
+
*/
|
|
9
|
+
export declare const CardsSubagentFeed: FC<SubagentFeedProps>;
|
|
10
|
+
/** Content panels and callouts are cards; row runs are indented, so a list of matches does not become a stack of boxes. */
|
|
11
|
+
export declare const CardsToolSection: FC<ToolSectionProps>;
|
|
12
|
+
/** The same card as everything else, titled with the menu's name; hints sit under it. */
|
|
13
|
+
export declare const CardsMenuFrame: FC<MenuFrameProps>;
|
|
14
|
+
//# sourceMappingURL=body.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"body.d.ts","sourceRoot":"","sources":["../../../source/skins/cards/body.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG5G,6GAA6G;AAC7G,eAAO,MAAM,mBAAmB,EAAE,EAAE,CAAC,mBAAmB,CAuDvD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,EAAE,CAAC,iBAAiB,CAmBnD,CAAC;AAEF,2HAA2H;AAC3H,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC,gBAAgB,CA0BjD,CAAC;AAEF,yFAAyF;AACzF,eAAO,MAAM,cAAc,EAAE,EAAE,CAAC,cAAc,CA4B7C,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Box, Text } from 'ink';
|
|
3
|
+
import { GLYPH_FAVORITE, GLYPH_SELECTED, useTheme } from '../../components/theme.js';
|
|
4
|
+
import { Card } from './card.js';
|
|
5
|
+
/** The question is the card's content; options are rows inside it, the selected one in its tone and bold. */
|
|
6
|
+
export const CardsQuestionPrompt = ({ progress, question, notice, options, description, footer, }) => {
|
|
7
|
+
const theme = useTheme();
|
|
8
|
+
return (React.createElement(Card, { color: theme.warning, title: React.createElement(Text, { color: theme.warning, bold: true, wrap: "truncate-end" }, progress ?? 'Question') },
|
|
9
|
+
React.createElement(Text, { bold: true }, question),
|
|
10
|
+
notice !== undefined && React.createElement(Text, { color: theme.accent },
|
|
11
|
+
"\u276F ",
|
|
12
|
+
notice),
|
|
13
|
+
React.createElement(Box, { flexDirection: "column", marginTop: 1 }, options.map((option, index) => {
|
|
14
|
+
const checkbox = option.checked === undefined ? '' : option.checked ? '[x] ' : '[ ] ';
|
|
15
|
+
return (React.createElement(Box, { key: option.label },
|
|
16
|
+
React.createElement(Box, { width: 2, flexShrink: 0 },
|
|
17
|
+
React.createElement(Text, { color: theme.accent, bold: true }, option.selected ? GLYPH_SELECTED : ' ')),
|
|
18
|
+
React.createElement(Box, { width: 2, flexShrink: 0 },
|
|
19
|
+
React.createElement(Text, { color: theme.textSubtle }, option.recommended ? GLYPH_FAVORITE : ' ')),
|
|
20
|
+
React.createElement(Box, { flexShrink: 1 },
|
|
21
|
+
React.createElement(Text, { color: option.selected && option.tone ? theme[option.tone] : undefined, bold: option.selected, inverse: option.selected && option.tone === undefined },
|
|
22
|
+
index + 1,
|
|
23
|
+
". ",
|
|
24
|
+
checkbox,
|
|
25
|
+
option.label))));
|
|
26
|
+
})),
|
|
27
|
+
description.text && (React.createElement(Box, { marginTop: 1 },
|
|
28
|
+
React.createElement(Text, { color: theme.textSubtle }, description.text))),
|
|
29
|
+
React.createElement(Box, { marginTop: 1 }, footer)));
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* One card per run. The task and outcome are content that must not be clipped, so
|
|
33
|
+
* they are the first line of the body; the border title only names the kind of card.
|
|
34
|
+
*/
|
|
35
|
+
export const CardsSubagentFeed = ({ title, statusSuffix, tone, summary, children }) => {
|
|
36
|
+
const theme = useTheme();
|
|
37
|
+
return (React.createElement(Card, { color: theme[tone], shape: tone === 'danger' ? 'bold' : 'round', title: React.createElement(Text, { color: theme[tone], bold: true }, "subagent") },
|
|
38
|
+
React.createElement(Text, { color: theme[tone] },
|
|
39
|
+
title,
|
|
40
|
+
statusSuffix),
|
|
41
|
+
summary !== undefined ? React.createElement(Text, { color: theme.textSubtle }, summary) : children));
|
|
42
|
+
};
|
|
43
|
+
/** Content panels and callouts are cards; row runs are indented, so a list of matches does not become a stack of boxes. */
|
|
44
|
+
export const CardsToolSection = ({ variant, title, tone = 'warning', children }) => {
|
|
45
|
+
const theme = useTheme();
|
|
46
|
+
if (variant === 'indent') {
|
|
47
|
+
return (React.createElement(Box, { flexDirection: "column", paddingLeft: 2 }, children));
|
|
48
|
+
}
|
|
49
|
+
if (variant === 'panel') {
|
|
50
|
+
return React.createElement(Card, { color: theme.textSubtle }, children);
|
|
51
|
+
}
|
|
52
|
+
return (React.createElement(Card, { color: theme[tone], title: title === undefined ? undefined : (React.createElement(Text, { color: theme[tone], bold: true, wrap: "truncate-end" }, title)) }, children));
|
|
53
|
+
};
|
|
54
|
+
/** The same card as everything else, titled with the menu's name; hints sit under it. */
|
|
55
|
+
export const CardsMenuFrame = ({ title, borderColor, footer, footerPlacement, children }) => {
|
|
56
|
+
const theme = useTheme();
|
|
57
|
+
const color = borderColor ?? theme.borderActive;
|
|
58
|
+
const footerNode = footer ? (typeof footer === 'string' ? (React.createElement(Text, { color: theme.textSubtle }, footer)) : (footer)) : null;
|
|
59
|
+
return (React.createElement(Box, { flexDirection: "column", width: "100%" },
|
|
60
|
+
React.createElement(Card, { color: color, title: title ? (React.createElement(Text, { color: theme.textMuted, bold: true, wrap: "truncate-end" }, title)) : undefined },
|
|
61
|
+
children,
|
|
62
|
+
footerPlacement === 'inside' && footerNode && React.createElement(Box, { marginTop: 1 }, footerNode)),
|
|
63
|
+
footerPlacement === 'outside' && footerNode));
|
|
64
|
+
};
|
|
65
|
+
//# sourceMappingURL=body.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"body.js","sourceRoot":"","sources":["../../../source/skins/cards/body.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAErF,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,6GAA6G;AAC7G,MAAM,CAAC,MAAM,mBAAmB,GAA4B,CAAC,EAC3D,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,OAAO,EACP,WAAW,EACX,MAAM,GACP,EAAE,EAAE;IACH,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,OAAO,CACL,oBAAC,IAAI,IACH,KAAK,EAAE,KAAK,CAAC,OAAO,EACpB,KAAK,EACH,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,QAAC,IAAI,EAAC,cAAc,IACjD,QAAQ,IAAI,UAAU,CAClB;QAGT,oBAAC,IAAI,IAAC,IAAI,UAAE,QAAQ,CAAQ;QAC3B,MAAM,KAAK,SAAS,IAAI,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,MAAM;;YAAK,MAAM,CAAQ;QACrE,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,SAAS,EAAE,CAAC,IACrC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YAC7B,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;YACtF,OAAO,CACL,oBAAC,GAAG,IAAC,GAAG,EAAE,MAAM,CAAC,KAAK;gBACpB,oBAAC,GAAG,IAAC,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC;oBAC1B,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,UAC5B,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAClC,CACH;gBACN,oBAAC,GAAG,IAAC,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC;oBAC1B,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,UAAU,IAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAQ,CAC7E;gBACN,oBAAC,GAAG,IAAC,UAAU,EAAE,CAAC;oBAChB,oBAAC,IAAI,IACH,KAAK,EAAE,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,EACtE,IAAI,EAAE,MAAM,CAAC,QAAQ,EACrB,OAAO,EAAE,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;wBAEpD,KAAK,GAAG,CAAC;;wBAAI,QAAQ;wBACrB,MAAM,CAAC,KAAK,CACR,CACH,CACF,CACP,CAAC;QACJ,CAAC,CAAC,CACE;QACL,WAAW,CAAC,IAAI,IAAI,CACnB,oBAAC,GAAG,IAAC,SAAS,EAAE,CAAC;YACf,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,UAAU,IAAG,WAAW,CAAC,IAAI,CAAQ,CACpD,CACP;QACD,oBAAC,GAAG,IAAC,SAAS,EAAE,CAAC,IAAG,MAAM,CAAO,CAC5B,CACR,CAAC;AACJ,CAAC,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAA0B,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC3G,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,OAAO,CACL,oBAAC,IAAI,IACH,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAClB,KAAK,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAC3C,KAAK,EACH,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,qBAEvB;QAGT,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC;YACrB,KAAK;YACL,YAAY,CACR;QACN,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,UAAU,IAAG,OAAO,CAAQ,CAAC,CAAC,CAAC,QAAQ,CAC9E,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,2HAA2H;AAC3H,MAAM,CAAC,MAAM,gBAAgB,GAAyB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE;IACvG,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,OAAO,CACL,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,WAAW,EAAE,CAAC,IACvC,QAAQ,CACL,CACP,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,OAAO,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,UAAU,IAAG,QAAQ,CAAQ,CAAC;IAC1D,CAAC;IACD,OAAO,CACL,oBAAC,IAAI,IACH,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAClB,KAAK,EACH,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAChC,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,QAAC,IAAI,EAAC,cAAc,IAC/C,KAAK,CACD,CACR,IAGF,QAAQ,CACJ,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,yFAAyF;AACzF,MAAM,CAAC,MAAM,cAAc,GAAuB,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC9G,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,MAAM,KAAK,GAAG,WAAW,IAAI,KAAK,CAAC,YAAY,CAAC;IAChD,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,CAC1B,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAC3B,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,UAAU,IAAG,MAAM,CAAQ,CAC/C,CAAC,CAAC,CAAC,CACF,MAAM,CACP,CACF,CAAC,CAAC,CAAC,IAAI,CAAC;IACT,OAAO,CACL,oBAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,KAAK,EAAC,MAAM;QACtC,oBAAC,IAAI,IACH,KAAK,EAAE,KAAK,EACZ,KAAK,EACH,KAAK,CAAC,CAAC,CAAC,CACN,oBAAC,IAAI,IAAC,KAAK,EAAE,KAAK,CAAC,SAAS,EAAE,IAAI,QAAC,IAAI,EAAC,cAAc,IACnD,KAAK,CACD,CACR,CAAC,CAAC,CAAC,SAAS;YAGd,QAAQ;YACR,eAAe,KAAK,QAAQ,IAAI,UAAU,IAAI,oBAAC,GAAG,IAAC,SAAS,EAAE,CAAC,IAAG,UAAU,CAAO,CAC/E;QACN,eAAe,KAAK,SAAS,IAAI,UAAU,CACxC,CACP,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -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"}
|