catui-agent 1.0.0-beta.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/LICENSE +674 -0
- package/README.md +267 -0
- package/dist/build-meta.json +6 -0
- package/dist/builtin-extensions.d.ts +47 -0
- package/dist/builtin-extensions.js +1 -0
- package/dist/catui-defaults.d.ts +555 -0
- package/dist/catui-defaults.js +22 -0
- package/dist/cli/args.d.ts +70 -0
- package/dist/cli/args.js +158 -0
- package/dist/cli/config-selector.d.ts +10 -0
- package/dist/cli/config-selector.js +1 -0
- package/dist/cli/file-processor.d.ts +11 -0
- package/dist/cli/file-processor.js +6 -0
- package/dist/cli/list-models.d.ts +12 -0
- package/dist/cli/list-models.js +2 -0
- package/dist/cli/session-picker.d.ts +5 -0
- package/dist/cli/session-picker.js +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +2 -0
- package/dist/config.d.ts +103 -0
- package/dist/config.js +1 -0
- package/dist/core/agent-dir/agent-dir-context.d.ts +60 -0
- package/dist/core/agent-dir/agent-dir-context.js +1 -0
- package/dist/core/agent-dir/agent-metadata.d.ts +48 -0
- package/dist/core/agent-dir/agent-metadata.js +1 -0
- package/dist/core/agent-dir/migration-tool.d.ts +40 -0
- package/dist/core/agent-dir/migration-tool.js +7 -0
- package/dist/core/export-html/AGENT.md +12 -0
- package/dist/core/export-html/ansi-to-html.d.ts +9 -0
- package/dist/core/export-html/ansi-to-html.js +2 -0
- package/dist/core/export-html/index.d.ts +39 -0
- package/dist/core/export-html/index.js +2 -0
- package/dist/core/export-html/template.css +971 -0
- package/dist/core/export-html/template.html +54 -0
- package/dist/core/export-html/template.js +66 -0
- package/dist/core/export-html/tool-renderer.d.ts +28 -0
- package/dist/core/export-html/tool-renderer.js +1 -0
- package/dist/core/export-html/vendor/highlight.min.js +4 -0
- package/dist/core/export-html/vendor/marked.min.js +56 -0
- package/dist/core/extensions-host/index.d.ts +13 -0
- package/dist/core/extensions-host/index.js +1 -0
- package/dist/core/extensions-host/loader.d.ts +21 -0
- package/dist/core/extensions-host/loader.js +1 -0
- package/dist/core/extensions-host/runner.d.ts +233 -0
- package/dist/core/extensions-host/runner.js +3 -0
- package/dist/core/extensions-host/types.d.ts +1079 -0
- package/dist/core/extensions-host/types.js +1 -0
- package/dist/core/extensions-host/wrapper.d.ts +29 -0
- package/dist/core/extensions-host/wrapper.js +2 -0
- package/dist/core/index.d.ts +17 -0
- package/dist/core/index.js +1 -0
- package/dist/core/lib/agent-core/src/agent-loop-continuations.d.ts +17 -0
- package/dist/core/lib/agent-core/src/agent-loop-continuations.js +1 -0
- package/dist/core/lib/agent-core/src/agent-loop-stream-events.d.ts +19 -0
- package/dist/core/lib/agent-core/src/agent-loop-stream-events.js +1 -0
- package/dist/core/lib/agent-core/src/agent-loop-tool-results.d.ts +10 -0
- package/dist/core/lib/agent-core/src/agent-loop-tool-results.js +3 -0
- package/dist/core/lib/agent-core/src/agent-loop-tool-summaries.d.ts +22 -0
- package/dist/core/lib/agent-core/src/agent-loop-tool-summaries.js +1 -0
- package/dist/core/lib/agent-core/src/agent-loop.d.ts +26 -0
- package/dist/core/lib/agent-core/src/agent-loop.js +4 -0
- package/dist/core/lib/agent-core/src/agent-run-result.d.ts +9 -0
- package/dist/core/lib/agent-core/src/agent-run-result.js +1 -0
- package/dist/core/lib/agent-core/src/agent.d.ts +215 -0
- package/dist/core/lib/agent-core/src/agent.js +1 -0
- package/dist/core/lib/agent-core/src/errors.d.ts +62 -0
- package/dist/core/lib/agent-core/src/errors.js +1 -0
- package/dist/core/lib/agent-core/src/index.d.ts +14 -0
- package/dist/core/lib/agent-core/src/index.js +1 -0
- package/dist/core/lib/agent-core/src/proxy.d.ts +91 -0
- package/dist/core/lib/agent-core/src/proxy.js +2 -0
- package/dist/core/lib/agent-core/src/structured-adaptive-agent-loop.d.ts +15 -0
- package/dist/core/lib/agent-core/src/structured-adaptive-agent-loop.js +2 -0
- package/dist/core/lib/agent-core/src/structured-adaptive-streaming-tool-executor.d.ts +33 -0
- package/dist/core/lib/agent-core/src/structured-adaptive-streaming-tool-executor.js +1 -0
- package/dist/core/lib/agent-core/src/structured-adaptive-tool-orchestration.d.ts +35 -0
- package/dist/core/lib/agent-core/src/structured-adaptive-tool-orchestration.js +3 -0
- package/dist/core/lib/agent-core/src/types.d.ts +417 -0
- package/dist/core/lib/agent-core/src/types.js +1 -0
- package/dist/core/lib/ai/src/api-registry.d.ts +27 -0
- package/dist/core/lib/ai/src/api-registry.js +1 -0
- package/dist/core/lib/ai/src/config-path.d.ts +1 -0
- package/dist/core/lib/ai/src/config-path.js +1 -0
- package/dist/core/lib/ai/src/debug-logger.d.ts +94 -0
- package/dist/core/lib/ai/src/debug-logger.js +4 -0
- package/dist/core/lib/ai/src/env-api-keys.d.ts +8 -0
- package/dist/core/lib/ai/src/env-api-keys.js +1 -0
- package/dist/core/lib/ai/src/env.d.ts +7 -0
- package/dist/core/lib/ai/src/env.js +1 -0
- package/dist/core/lib/ai/src/events.d.ts +8 -0
- package/dist/core/lib/ai/src/events.js +1 -0
- package/dist/core/lib/ai/src/index.d.ts +27 -0
- package/dist/core/lib/ai/src/index.js +1 -0
- package/dist/core/lib/ai/src/json.d.ts +7 -0
- package/dist/core/lib/ai/src/json.js +1 -0
- package/dist/core/lib/ai/src/models.d.ts +31 -0
- package/dist/core/lib/ai/src/models.generated.d.ts +15315 -0
- package/dist/core/lib/ai/src/models.generated.js +1 -0
- package/dist/core/lib/ai/src/models.js +1 -0
- package/dist/core/lib/ai/src/overflow.d.ts +7 -0
- package/dist/core/lib/ai/src/overflow.js +1 -0
- package/dist/core/lib/ai/src/providers/amazon-bedrock.d.ts +20 -0
- package/dist/core/lib/ai/src/providers/amazon-bedrock.js +1 -0
- package/dist/core/lib/ai/src/providers/anthropic.d.ts +38 -0
- package/dist/core/lib/ai/src/providers/anthropic.js +2 -0
- package/dist/core/lib/ai/src/providers/azure-openai-responses.d.ts +21 -0
- package/dist/core/lib/ai/src/providers/azure-openai-responses.js +1 -0
- package/dist/core/lib/ai/src/providers/github-copilot-headers.d.ts +13 -0
- package/dist/core/lib/ai/src/providers/github-copilot-headers.js +1 -0
- package/dist/core/lib/ai/src/providers/google-gemini-cli.d.ts +79 -0
- package/dist/core/lib/ai/src/providers/google-gemini-cli.js +2 -0
- package/dist/core/lib/ai/src/providers/google-shared.d.ts +70 -0
- package/dist/core/lib/ai/src/providers/google-shared.js +2 -0
- package/dist/core/lib/ai/src/providers/google-vertex.d.ts +20 -0
- package/dist/core/lib/ai/src/providers/google-vertex.js +1 -0
- package/dist/core/lib/ai/src/providers/google.d.ts +18 -0
- package/dist/core/lib/ai/src/providers/google.js +1 -0
- package/dist/core/lib/ai/src/providers/openai-codex-responses.d.ts +8 -0
- package/dist/core/lib/ai/src/providers/openai-codex-responses.js +7 -0
- package/dist/core/lib/ai/src/providers/openai-completions.d.ts +20 -0
- package/dist/core/lib/ai/src/providers/openai-completions.js +6 -0
- package/dist/core/lib/ai/src/providers/openai-responses-shared.d.ts +22 -0
- package/dist/core/lib/ai/src/providers/openai-responses-shared.js +10 -0
- package/dist/core/lib/ai/src/providers/openai-responses.d.ts +19 -0
- package/dist/core/lib/ai/src/providers/openai-responses.js +1 -0
- package/dist/core/lib/ai/src/providers/register-builtins.d.ts +8 -0
- package/dist/core/lib/ai/src/providers/register-builtins.js +1 -0
- package/dist/core/lib/ai/src/providers/simple-options.d.ts +13 -0
- package/dist/core/lib/ai/src/providers/simple-options.js +1 -0
- package/dist/core/lib/ai/src/providers/transform-messages.d.ts +13 -0
- package/dist/core/lib/ai/src/providers/transform-messages.js +1 -0
- package/dist/core/lib/ai/src/registry.d.ts +8 -0
- package/dist/core/lib/ai/src/registry.js +1 -0
- package/dist/core/lib/ai/src/schema.d.ts +10 -0
- package/dist/core/lib/ai/src/schema.js +1 -0
- package/dist/core/lib/ai/src/stream.d.ts +33 -0
- package/dist/core/lib/ai/src/stream.js +1 -0
- package/dist/core/lib/ai/src/types.d.ts +331 -0
- package/dist/core/lib/ai/src/types.js +0 -0
- package/dist/core/lib/ai/src/utils/event-stream-types.d.ts +12 -0
- package/dist/core/lib/ai/src/utils/event-stream-types.js +0 -0
- package/dist/core/lib/ai/src/utils/event-stream.d.ts +31 -0
- package/dist/core/lib/ai/src/utils/event-stream.js +1 -0
- package/dist/core/lib/ai/src/utils/http-proxy.d.ts +13 -0
- package/dist/core/lib/ai/src/utils/http-proxy.js +1 -0
- package/dist/core/lib/ai/src/utils/json-parse.d.ts +14 -0
- package/dist/core/lib/ai/src/utils/json-parse.js +1 -0
- package/dist/core/lib/ai/src/utils/oauth/anthropic.d.ts +22 -0
- package/dist/core/lib/ai/src/utils/oauth/anthropic.js +1 -0
- package/dist/core/lib/ai/src/utils/oauth/decode-credential.d.ts +12 -0
- package/dist/core/lib/ai/src/utils/oauth/decode-credential.js +1 -0
- package/dist/core/lib/ai/src/utils/oauth/github-copilot.d.ts +35 -0
- package/dist/core/lib/ai/src/utils/oauth/github-copilot.js +1 -0
- package/dist/core/lib/ai/src/utils/oauth/google-antigravity.d.ts +31 -0
- package/dist/core/lib/ai/src/utils/oauth/google-antigravity.js +1 -0
- package/dist/core/lib/ai/src/utils/oauth/google-gemini-cli.d.ts +31 -0
- package/dist/core/lib/ai/src/utils/oauth/google-gemini-cli.js +1 -0
- package/dist/core/lib/ai/src/utils/oauth/index.d.ts +60 -0
- package/dist/core/lib/ai/src/utils/oauth/index.js +1 -0
- package/dist/core/lib/ai/src/utils/oauth/openai-codex.d.ts +39 -0
- package/dist/core/lib/ai/src/utils/oauth/openai-codex.js +11 -0
- package/dist/core/lib/ai/src/utils/oauth/pkce.d.ts +18 -0
- package/dist/core/lib/ai/src/utils/oauth/pkce.js +1 -0
- package/dist/core/lib/ai/src/utils/oauth/types.d.ts +52 -0
- package/dist/core/lib/ai/src/utils/oauth/types.js +0 -0
- package/dist/core/lib/ai/src/utils/overflow.d.ts +57 -0
- package/dist/core/lib/ai/src/utils/overflow.js +1 -0
- package/dist/core/lib/ai/src/utils/sanitize-unicode.d.ts +16 -0
- package/dist/core/lib/ai/src/utils/sanitize-unicode.js +1 -0
- package/dist/core/lib/ai/src/utils/typebox-helpers.d.ts +22 -0
- package/dist/core/lib/ai/src/utils/typebox-helpers.js +1 -0
- package/dist/core/lib/ai/src/utils/validation.d.ts +23 -0
- package/dist/core/lib/ai/src/utils/validation.js +6 -0
- package/dist/core/lib/tui/src/autocomplete.d.ts +62 -0
- package/dist/core/lib/tui/src/autocomplete.js +2 -0
- package/dist/core/lib/tui/src/components/box.d.ts +27 -0
- package/dist/core/lib/tui/src/components/box.js +1 -0
- package/dist/core/lib/tui/src/components/cached-container.d.ts +42 -0
- package/dist/core/lib/tui/src/components/cached-container.js +1 -0
- package/dist/core/lib/tui/src/components/cancellable-loader.d.ts +27 -0
- package/dist/core/lib/tui/src/components/cancellable-loader.js +1 -0
- package/dist/core/lib/tui/src/components/editor.d.ts +222 -0
- package/dist/core/lib/tui/src/components/editor.js +21 -0
- package/dist/core/lib/tui/src/components/image.d.ts +33 -0
- package/dist/core/lib/tui/src/components/image.js +1 -0
- package/dist/core/lib/tui/src/components/input.d.ts +42 -0
- package/dist/core/lib/tui/src/components/input.js +2 -0
- package/dist/core/lib/tui/src/components/loader.d.ts +26 -0
- package/dist/core/lib/tui/src/components/loader.js +1 -0
- package/dist/core/lib/tui/src/components/markdown.d.ts +100 -0
- package/dist/core/lib/tui/src/components/markdown.js +7 -0
- package/dist/core/lib/tui/src/components/select-list.d.ts +37 -0
- package/dist/core/lib/tui/src/components/select-list.js +1 -0
- package/dist/core/lib/tui/src/components/settings-list.d.ts +55 -0
- package/dist/core/lib/tui/src/components/settings-list.js +1 -0
- package/dist/core/lib/tui/src/components/spacer.d.ts +17 -0
- package/dist/core/lib/tui/src/components/spacer.js +1 -0
- package/dist/core/lib/tui/src/components/text.d.ts +24 -0
- package/dist/core/lib/tui/src/components/text.js +1 -0
- package/dist/core/lib/tui/src/components/truncated-text.d.ts +18 -0
- package/dist/core/lib/tui/src/components/truncated-text.js +2 -0
- package/dist/core/lib/tui/src/editor-component.d.ts +51 -0
- package/dist/core/lib/tui/src/editor-component.js +0 -0
- package/dist/core/lib/tui/src/fuzzy.d.ts +32 -0
- package/dist/core/lib/tui/src/fuzzy.js +1 -0
- package/dist/core/lib/tui/src/index.d.ts +29 -0
- package/dist/core/lib/tui/src/index.js +1 -0
- package/dist/core/lib/tui/src/keybindings.d.ts +44 -0
- package/dist/core/lib/tui/src/keybindings.js +1 -0
- package/dist/core/lib/tui/src/keys.d.ts +149 -0
- package/dist/core/lib/tui/src/keys.js +5 -0
- package/dist/core/lib/tui/src/kill-ring.d.ts +33 -0
- package/dist/core/lib/tui/src/kill-ring.js +1 -0
- package/dist/core/lib/tui/src/stdin-buffer.d.ts +38 -0
- package/dist/core/lib/tui/src/stdin-buffer.js +1 -0
- package/dist/core/lib/tui/src/terminal-image.d.ts +73 -0
- package/dist/core/lib/tui/src/terminal-image.js +1 -0
- package/dist/core/lib/tui/src/terminal.d.ts +86 -0
- package/dist/core/lib/tui/src/terminal.js +1 -0
- package/dist/core/lib/tui/src/tui.d.ts +220 -0
- package/dist/core/lib/tui/src/tui.js +12 -0
- package/dist/core/lib/tui/src/undo-stack.d.ts +22 -0
- package/dist/core/lib/tui/src/undo-stack.js +1 -0
- package/dist/core/lib/tui/src/utils.d.ts +83 -0
- package/dist/core/lib/tui/src/utils.js +2 -0
- package/dist/core/mcp/figma-auth.d.ts +21 -0
- package/dist/core/mcp/figma-auth.js +22 -0
- package/dist/core/mcp/index.d.ts +11 -0
- package/dist/core/mcp/index.js +1 -0
- package/dist/core/mcp/mcp-adapter.d.ts +21 -0
- package/dist/core/mcp/mcp-adapter.js +3 -0
- package/dist/core/mcp/mcp-client.d.ts +91 -0
- package/dist/core/mcp/mcp-client.js +6 -0
- package/dist/core/mcp/mcp-config.d.ts +55 -0
- package/dist/core/mcp/mcp-config.js +1 -0
- package/dist/core/mcp/mcp-guidance.d.ts +52 -0
- package/dist/core/mcp/mcp-guidance.js +54 -0
- package/dist/core/mcp/mcp-manager.d.ts +51 -0
- package/dist/core/mcp/mcp-manager.js +1 -0
- package/dist/core/mcp/mcp-types.d.ts +62 -0
- package/dist/core/mcp/mcp-types.js +0 -0
- package/dist/core/messages.d.ts +77 -0
- package/dist/core/messages.js +17 -0
- package/dist/core/model/custom-providers.d.ts +34 -0
- package/dist/core/model/custom-providers.js +1 -0
- package/dist/core/model/discovery-cache.d.ts +65 -0
- package/dist/core/model/discovery-cache.js +1 -0
- package/dist/core/model/discovery-cache.test.d.ts +7 -0
- package/dist/core/model/discovery-cache.test.js +1 -0
- package/dist/core/model/discovery.d.ts +79 -0
- package/dist/core/model/discovery.js +1 -0
- package/dist/core/model/discovery.test.d.ts +7 -0
- package/dist/core/model/discovery.test.js +1 -0
- package/dist/core/model/index.d.ts +10 -0
- package/dist/core/model/index.js +1 -0
- package/dist/core/model/known-models.d.ts +65 -0
- package/dist/core/model/known-models.generated.d.ts +2 -0
- package/dist/core/model/known-models.generated.js +1 -0
- package/dist/core/model/known-models.js +1 -0
- package/dist/core/model/switcher.d.ts +80 -0
- package/dist/core/model/switcher.js +1 -0
- package/dist/core/model-registry.d.ts +186 -0
- package/dist/core/model-registry.js +9 -0
- package/dist/core/model-resolver.d.ts +106 -0
- package/dist/core/model-resolver.js +1 -0
- package/dist/core/package-manager.d.ts +156 -0
- package/dist/core/package-manager.js +3 -0
- package/dist/core/persona/persona-manager.d.ts +35 -0
- package/dist/core/persona/persona-manager.js +5 -0
- package/dist/core/platform/abort-slot.d.ts +26 -0
- package/dist/core/platform/abort-slot.js +1 -0
- package/dist/core/platform/config/auth-storage.d.ts +126 -0
- package/dist/core/platform/config/auth-storage.js +1 -0
- package/dist/core/platform/config/defaults.d.ts +8 -0
- package/dist/core/platform/config/defaults.js +1 -0
- package/dist/core/platform/config/diagnostics.d.ts +20 -0
- package/dist/core/platform/config/diagnostics.js +0 -0
- package/dist/core/platform/config/resolve-config-value.d.ts +12 -0
- package/dist/core/platform/config/resolve-config-value.js +1 -0
- package/dist/core/platform/config/resource-loader.d.ts +188 -0
- package/dist/core/platform/config/resource-loader.js +2 -0
- package/dist/core/platform/config/settings-manager.d.ts +314 -0
- package/dist/core/platform/config/settings-manager.js +1 -0
- package/dist/core/platform/exec/bash-executor.d.ts +41 -0
- package/dist/core/platform/exec/bash-executor.js +1 -0
- package/dist/core/platform/exec/exec.d.ts +25 -0
- package/dist/core/platform/exec/exec.js +1 -0
- package/dist/core/platform/i18n/index.d.ts +26 -0
- package/dist/core/platform/i18n/index.js +1 -0
- package/dist/core/platform/i18n/messages.d.ts +56 -0
- package/dist/core/platform/i18n/messages.js +1 -0
- package/dist/core/platform/i18n/messages.zh.d.ts +56 -0
- package/dist/core/platform/i18n/messages.zh.js +1 -0
- package/dist/core/platform/i18n/slash-commands.d.ts +53 -0
- package/dist/core/platform/i18n/slash-commands.js +1 -0
- package/dist/core/platform/i18n/slash-commands.zh.d.ts +53 -0
- package/dist/core/platform/i18n/slash-commands.zh.js +1 -0
- package/dist/core/platform/i18n/themes.d.ts +11 -0
- package/dist/core/platform/i18n/themes.js +1 -0
- package/dist/core/platform/i18n/themes.zh.d.ts +11 -0
- package/dist/core/platform/i18n/themes.zh.js +1 -0
- package/dist/core/platform/keybindings.d.ts +61 -0
- package/dist/core/platform/keybindings.js +1 -0
- package/dist/core/platform/listeners.d.ts +21 -0
- package/dist/core/platform/listeners.js +1 -0
- package/dist/core/platform/telemetry/batching-dispatcher.d.ts +41 -0
- package/dist/core/platform/telemetry/batching-dispatcher.js +1 -0
- package/dist/core/platform/telemetry/build-meta.d.ts +12 -0
- package/dist/core/platform/telemetry/build-meta.js +1 -0
- package/dist/core/platform/telemetry/caller-context.d.ts +32 -0
- package/dist/core/platform/telemetry/caller-context.js +1 -0
- package/dist/core/platform/telemetry/credentials.d.ts +27 -0
- package/dist/core/platform/telemetry/credentials.js +1 -0
- package/dist/core/platform/telemetry/ext-events.d.ts +89 -0
- package/dist/core/platform/telemetry/ext-events.js +1 -0
- package/dist/core/platform/telemetry/index.d.ts +13 -0
- package/dist/core/platform/telemetry/index.js +1 -0
- package/dist/core/platform/telemetry/insforge-base.d.ts +37 -0
- package/dist/core/platform/telemetry/insforge-base.js +1 -0
- package/dist/core/platform/telemetry/types.d.ts +33 -0
- package/dist/core/platform/telemetry/types.js +0 -0
- package/dist/core/platform/timings.d.ts +2 -0
- package/dist/core/platform/timings.js +3 -0
- package/dist/core/platform/utils/logger.d.ts +75 -0
- package/dist/core/platform/utils/logger.js +1 -0
- package/dist/core/platform/utils/shell.d.ts +25 -0
- package/dist/core/platform/utils/shell.js +9 -0
- package/dist/core/platform/utils/sleep.d.ts +7 -0
- package/dist/core/platform/utils/sleep.js +1 -0
- package/dist/core/platform/utils/tools-manager.d.ts +19 -0
- package/dist/core/platform/utils/tools-manager.js +1 -0
- package/dist/core/prompt/prompt-templates.d.ts +49 -0
- package/dist/core/prompt/prompt-templates.js +2 -0
- package/dist/core/prompt/system-prompt.d.ts +24 -0
- package/dist/core/prompt/system-prompt.js +139 -0
- package/dist/core/runtime/agent-session.d.ts +676 -0
- package/dist/core/runtime/agent-session.js +15 -0
- package/dist/core/runtime/bash-runner.d.ts +56 -0
- package/dist/core/runtime/bash-runner.js +2 -0
- package/dist/core/runtime/catui-agent.d.ts +182 -0
- package/dist/core/runtime/catui-agent.js +1 -0
- package/dist/core/runtime/compaction-controller.d.ts +43 -0
- package/dist/core/runtime/compaction-controller.js +1 -0
- package/dist/core/runtime/default-tools.d.ts +9 -0
- package/dist/core/runtime/default-tools.js +1 -0
- package/dist/core/runtime/event-bridge.d.ts +21 -0
- package/dist/core/runtime/event-bridge.js +1 -0
- package/dist/core/runtime/event-bus.d.ts +8 -0
- package/dist/core/runtime/event-bus.js +1 -0
- package/dist/core/runtime/export-bridge.d.ts +23 -0
- package/dist/core/runtime/export-bridge.js +1 -0
- package/dist/core/runtime/extension-core-bindings.d.ts +46 -0
- package/dist/core/runtime/extension-core-bindings.js +3 -0
- package/dist/core/runtime/model-controller.d.ts +84 -0
- package/dist/core/runtime/model-controller.js +1 -0
- package/dist/core/runtime/model-cycle.d.ts +20 -0
- package/dist/core/runtime/model-cycle.js +1 -0
- package/dist/core/runtime/prompt-assembly.d.ts +20 -0
- package/dist/core/runtime/prompt-assembly.js +3 -0
- package/dist/core/runtime/retry-coordinator.d.ts +84 -0
- package/dist/core/runtime/retry-coordinator.js +1 -0
- package/dist/core/runtime/sdk.d.ts +163 -0
- package/dist/core/runtime/sdk.js +1 -0
- package/dist/core/runtime/session-context.d.ts +155 -0
- package/dist/core/runtime/session-context.js +0 -0
- package/dist/core/runtime/session-lifecycle-controller.d.ts +42 -0
- package/dist/core/runtime/session-lifecycle-controller.js +1 -0
- package/dist/core/runtime/session-tree-controller.d.ts +40 -0
- package/dist/core/runtime/session-tree-controller.js +1 -0
- package/dist/core/runtime/slash-command-catalog.d.ts +27 -0
- package/dist/core/runtime/slash-command-catalog.js +1 -0
- package/dist/core/runtime/thinking-levels.d.ts +31 -0
- package/dist/core/runtime/thinking-levels.js +1 -0
- package/dist/core/runtime/tool-runtime-controller.d.ts +35 -0
- package/dist/core/runtime/tool-runtime-controller.js +1 -0
- package/dist/core/runtime/turn-context.d.ts +52 -0
- package/dist/core/runtime/turn-context.js +1 -0
- package/dist/core/session/compaction/branch-summarization.d.ts +85 -0
- package/dist/core/session/compaction/branch-summarization.js +38 -0
- package/dist/core/session/compaction/compaction.d.ts +120 -0
- package/dist/core/session/compaction/compaction.js +104 -0
- package/dist/core/session/compaction/index.d.ts +9 -0
- package/dist/core/session/compaction/index.js +1 -0
- package/dist/core/session/compaction/utils.d.ts +37 -0
- package/dist/core/session/compaction/utils.js +17 -0
- package/dist/core/session/session-manager.d.ts +359 -0
- package/dist/core/session/session-manager.js +14 -0
- package/dist/core/skills.d.ts +57 -0
- package/dist/core/skills.js +4 -0
- package/dist/core/slash-commands.d.ts +36 -0
- package/dist/core/slash-commands.js +1 -0
- package/dist/core/soul-integration.d.ts +77 -0
- package/dist/core/soul-integration.js +1 -0
- package/dist/core/soul-options-contract.d.ts +10 -0
- package/dist/core/soul-options-contract.js +0 -0
- package/dist/core/sub-agent/agent-definition-loader.d.ts +96 -0
- package/dist/core/sub-agent/agent-definition-loader.js +2 -0
- package/dist/core/sub-agent/agent-definition.d.ts +162 -0
- package/dist/core/sub-agent/agent-definition.js +6 -0
- package/dist/core/sub-agent/agent-handoff-safety.d.ts +39 -0
- package/dist/core/sub-agent/agent-handoff-safety.js +1 -0
- package/dist/core/sub-agent/agent-input-output.d.ts +143 -0
- package/dist/core/sub-agent/agent-input-output.js +1 -0
- package/dist/core/sub-agent/agent-output-persistence.d.ts +43 -0
- package/dist/core/sub-agent/agent-output-persistence.js +3 -0
- package/dist/core/sub-agent/agent-prompt-builder.d.ts +37 -0
- package/dist/core/sub-agent/agent-prompt-builder.js +2 -0
- package/dist/core/sub-agent/agent-registry.d.ts +145 -0
- package/dist/core/sub-agent/agent-registry.js +1 -0
- package/dist/core/sub-agent/agent-result-extractor.d.ts +28 -0
- package/dist/core/sub-agent/agent-result-extractor.js +3 -0
- package/dist/core/sub-agent/agent-telemetry.d.ts +71 -0
- package/dist/core/sub-agent/agent-telemetry.js +1 -0
- package/dist/core/sub-agent/agent-tool-filter.d.ts +89 -0
- package/dist/core/sub-agent/agent-tool-filter.js +2 -0
- package/dist/core/sub-agent/agent-tool.d.ts +69 -0
- package/dist/core/sub-agent/agent-tool.js +11 -0
- package/dist/core/sub-agent/index.d.ts +26 -0
- package/dist/core/sub-agent/index.js +1 -0
- package/dist/core/sub-agent/send-message-tool.d.ts +33 -0
- package/dist/core/sub-agent/send-message-tool.js +2 -0
- package/dist/core/sub-agent/sub-agent-backend.d.ts +26 -0
- package/dist/core/sub-agent/sub-agent-backend.js +7 -0
- package/dist/core/sub-agent/sub-agent-runtime.d.ts +34 -0
- package/dist/core/sub-agent/sub-agent-runtime.js +1 -0
- package/dist/core/sub-agent/sub-agent-types.d.ts +138 -0
- package/dist/core/sub-agent/sub-agent-types.js +0 -0
- package/dist/core/sub-agent/subprocess-backend.d.ts +35 -0
- package/dist/core/sub-agent/subprocess-backend.js +1 -0
- package/dist/core/sub-agent/subprocess-worker.d.ts +12 -0
- package/dist/core/sub-agent/subprocess-worker.js +1 -0
- package/dist/core/theme-contract.d.ts +32 -0
- package/dist/core/theme-contract.js +0 -0
- package/dist/core/tools/bash.d.ts +73 -0
- package/dist/core/tools/bash.js +21 -0
- package/dist/core/tools/edit-diff.d.ts +58 -0
- package/dist/core/tools/edit-diff.js +16 -0
- package/dist/core/tools/edit.d.ts +46 -0
- package/dist/core/tools/edit.js +1 -0
- package/dist/core/tools/file-state-cache.d.ts +30 -0
- package/dist/core/tools/file-state-cache.js +1 -0
- package/dist/core/tools/find.d.ts +46 -0
- package/dist/core/tools/find.js +8 -0
- package/dist/core/tools/grep.d.ts +58 -0
- package/dist/core/tools/grep.js +13 -0
- package/dist/core/tools/index.d.ts +116 -0
- package/dist/core/tools/index.js +1 -0
- package/dist/core/tools/input-validation.d.ts +13 -0
- package/dist/core/tools/input-validation.js +1 -0
- package/dist/core/tools/ls.d.ts +45 -0
- package/dist/core/tools/ls.js +4 -0
- package/dist/core/tools/orchestrator.d.ts +76 -0
- package/dist/core/tools/orchestrator.js +1 -0
- package/dist/core/tools/path-utils.d.ts +7 -0
- package/dist/core/tools/path-utils.js +1 -0
- package/dist/core/tools/pdf-extract.d.ts +11 -0
- package/dist/core/tools/pdf-extract.js +1 -0
- package/dist/core/tools/read.d.ts +46 -0
- package/dist/core/tools/read.js +11 -0
- package/dist/core/tools/source.d.ts +78 -0
- package/dist/core/tools/source.js +1 -0
- package/dist/core/tools/time.d.ts +19 -0
- package/dist/core/tools/time.js +2 -0
- package/dist/core/tools/truncate.d.ts +66 -0
- package/dist/core/tools/truncate.js +5 -0
- package/dist/core/tools/write-guard.d.ts +2 -0
- package/dist/core/tools/write-guard.js +1 -0
- package/dist/core/tools/write.d.ts +36 -0
- package/dist/core/tools/write.js +1 -0
- package/dist/core/workspace/index.d.ts +8 -0
- package/dist/core/workspace/index.js +1 -0
- package/dist/core/workspace/worktree-manager.d.ts +73 -0
- package/dist/core/workspace/worktree-manager.js +3 -0
- package/dist/extensions/builtin/AGENT.md +115 -0
- package/dist/extensions/builtin/ask-user-question/ask-user-question-tool.d.ts +9 -0
- package/dist/extensions/builtin/ask-user-question/ask-user-question-tool.js +4 -0
- package/dist/extensions/builtin/ask-user-question/index.d.ts +8 -0
- package/dist/extensions/builtin/ask-user-question/index.js +1 -0
- package/dist/extensions/builtin/ask-user-question/prompt.d.ts +14 -0
- package/dist/extensions/builtin/ask-user-question/prompt.js +30 -0
- package/dist/extensions/builtin/ask-user-question/types.d.ts +69 -0
- package/dist/extensions/builtin/ask-user-question/types.js +1 -0
- package/dist/extensions/builtin/browser/AGENT.md +17 -0
- package/dist/extensions/builtin/browser/agent-workspace/agent_helpers.py +12 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/amazon/product-search.md +198 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/archive-org/scraping.md +341 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/arxiv/scraping.md +311 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/arxiv-bulk/scraping.md +333 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/atlas/overview.md +70 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/booking-com/scraping.md +578 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/capterra/scraping.md +440 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/centilebrain/generate-estimates.md +110 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/coingecko/scraping.md +325 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/coinmarketcap/scraping.md +463 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/coursera/scraping.md +360 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/craigslist/scraping.md +390 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/crossref/scraping.md +568 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/dev-to/scraping.md +323 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/duckduckgo/scraping.md +349 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/ebay/scraping.md +435 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/etsy/scraping.md +506 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/eventbrite/scraping.md +363 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/expedia/automation.md +168 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/facebook/groups.md +236 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/facebook/pages.md +295 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/framer/editor.md +108 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/fred/scraping.md +493 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/g2/scraping.md +580 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/genius/scraping.md +511 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/github/repo-actions.md +65 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/github/scraping.md +184 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/glassdoor/scraping.md +543 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/gmail/compose.md +122 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/goodreads/scraping.md +461 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/gutenberg/scraping.md +383 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/hackernews/scraping.md +243 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/howlongtobeat/scraping.md +473 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/imdb/scraping.md +271 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/itch-io/scraping.md +436 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/job-boards/indeed-glassdoor.md +1021 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/letterboxd/scraping.md +349 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/linkedin/invitation-manager.md +109 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/loom/folder-enumeration.md +170 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/macrotrends/scraping.md +537 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/medium/article-hydration.md +120 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/medium/scraping.md +414 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/metacritic/scraping.md +477 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/musicbrainz/scraping.md +478 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/nasa/scraping.md +339 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/news-aggregation/multi-source.md +205 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/open-library/scraping.md +472 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/openalex/scraping.md +470 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/openstreetmap/scraping.md +490 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/package-registries/npm-pypi.md +478 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/polymarket/scraping.md +234 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/producthunt/scraping.md +307 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/pubmed/scraping.md +421 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/quora/scraping.md +364 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/rawg/scraping.md +352 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/reddit/scraping.md +124 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/rest-countries/scraping.md +233 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/sec-edgar/scraping.md +361 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/shopify-admin/README.md +36 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/shopify-admin/embedded-apps.md +72 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/shopify-admin/knowledge-base.md +109 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/shopify-admin/polaris-inputs.md +137 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/soundcloud/scraping.md +362 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/spotify/scraping.md +339 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/stackoverflow/scraping.md +435 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/steam/scraping.md +575 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/substack/scraping.md +338 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/thetechgeeks/pricing.md +52 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/tiktok/upload.md +107 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/tradingview/scraping.md +309 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/trello/boards-and-lists.md +88 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/trustpilot/scraping.md +375 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/walmart/scraping.md +444 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/wayback-machine/scraping.md +306 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/weather/scraping.md +398 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/wellfound/scraping.md +596 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/world-bank/scraping.md +356 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/xiaohongshu/scraping.md +84 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/youtube/scraping.md +418 -0
- package/dist/extensions/builtin/browser/agent-workspace/domain-skills/zillow/scraping.md +433 -0
- package/dist/extensions/builtin/browser/browser.md +73 -0
- package/dist/extensions/builtin/browser/index.d.ts +8 -0
- package/dist/extensions/builtin/browser/index.js +15 -0
- package/dist/extensions/builtin/browser/install.md +142 -0
- package/dist/extensions/builtin/browser/interaction-skills/connection.md +48 -0
- package/dist/extensions/builtin/browser/interaction-skills/cookies.md +3 -0
- package/dist/extensions/builtin/browser/interaction-skills/cross-origin-iframes.md +3 -0
- package/dist/extensions/builtin/browser/interaction-skills/dialogs.md +64 -0
- package/dist/extensions/builtin/browser/interaction-skills/downloads.md +3 -0
- package/dist/extensions/builtin/browser/interaction-skills/drag-and-drop.md +3 -0
- package/dist/extensions/builtin/browser/interaction-skills/dropdowns.md +3 -0
- package/dist/extensions/builtin/browser/interaction-skills/iframes.md +3 -0
- package/dist/extensions/builtin/browser/interaction-skills/network-requests.md +3 -0
- package/dist/extensions/builtin/browser/interaction-skills/print-as-pdf.md +3 -0
- package/dist/extensions/builtin/browser/interaction-skills/profile-sync.md +90 -0
- package/dist/extensions/builtin/browser/interaction-skills/screenshots.md +17 -0
- package/dist/extensions/builtin/browser/interaction-skills/scrolling.md +3 -0
- package/dist/extensions/builtin/browser/interaction-skills/shadow-dom.md +3 -0
- package/dist/extensions/builtin/browser/interaction-skills/tabs.md +69 -0
- package/dist/extensions/builtin/browser/interaction-skills/uploads.md +1 -0
- package/dist/extensions/builtin/browser/interaction-skills/viewport.md +3 -0
- package/dist/extensions/builtin/browser/src/browser_harness/AGENT.md +15 -0
- package/dist/extensions/builtin/browser/src/browser_harness/__init__.py +8 -0
- package/dist/extensions/builtin/browser/src/browser_harness/_ipc.py +90 -0
- package/dist/extensions/builtin/browser/src/browser_harness/admin.py +722 -0
- package/dist/extensions/builtin/browser/src/browser_harness/daemon.py +328 -0
- package/dist/extensions/builtin/browser/src/browser_harness/helpers.py +396 -0
- package/dist/extensions/builtin/browser/src/browser_harness/run.py +103 -0
- package/dist/extensions/builtin/btw/index.d.ts +8 -0
- package/dist/extensions/builtin/btw/index.js +15 -0
- package/dist/extensions/builtin/debug/collectors.d.ts +96 -0
- package/dist/extensions/builtin/debug/collectors.js +7 -0
- package/dist/extensions/builtin/debug/index.d.ts +8 -0
- package/dist/extensions/builtin/debug/index.js +49 -0
- package/dist/extensions/builtin/diagnostics/diagnostic-buffer.d.ts +19 -0
- package/dist/extensions/builtin/diagnostics/diagnostic-buffer.js +1 -0
- package/dist/extensions/builtin/diagnostics/index.d.ts +8 -0
- package/dist/extensions/builtin/diagnostics/index.js +1 -0
- package/dist/extensions/builtin/diagnostics/redaction.d.ts +8 -0
- package/dist/extensions/builtin/diagnostics/redaction.js +1 -0
- package/dist/extensions/builtin/diagnostics/reporter.d.ts +17 -0
- package/dist/extensions/builtin/diagnostics/reporter.js +1 -0
- package/dist/extensions/builtin/diagnostics/types.d.ts +62 -0
- package/dist/extensions/builtin/diagnostics/types.js +1 -0
- package/dist/extensions/builtin/discipline/index.d.ts +8 -0
- package/dist/extensions/builtin/discipline/index.js +7 -0
- package/dist/extensions/builtin/discipline/skills/brainstorming/SKILL.md +33 -0
- package/dist/extensions/builtin/discipline/skills/executing-plans/SKILL.md +25 -0
- package/dist/extensions/builtin/discipline/skills/finishing-development-branch/SKILL.md +25 -0
- package/dist/extensions/builtin/discipline/skills/receiving-code-review/SKILL.md +22 -0
- package/dist/extensions/builtin/discipline/skills/requesting-code-review/SKILL.md +31 -0
- package/dist/extensions/builtin/discipline/skills/systematic-debugging/SKILL.md +28 -0
- package/dist/extensions/builtin/discipline/skills/test-driven-development/SKILL.md +32 -0
- package/dist/extensions/builtin/discipline/skills/using-git-worktrees/SKILL.md +25 -0
- package/dist/extensions/builtin/discipline/skills/verification-before-completion/SKILL.md +27 -0
- package/dist/extensions/builtin/discipline/skills/writing-plans/SKILL.md +26 -0
- package/dist/extensions/builtin/goal/README.md +67 -0
- package/dist/extensions/builtin/goal/goal-command.d.ts +13 -0
- package/dist/extensions/builtin/goal/goal-command.js +9 -0
- package/dist/extensions/builtin/goal/goal-controller.d.ts +143 -0
- package/dist/extensions/builtin/goal/goal-controller.js +1 -0
- package/dist/extensions/builtin/goal/goal-format.d.ts +52 -0
- package/dist/extensions/builtin/goal/goal-format.js +1 -0
- package/dist/extensions/builtin/goal/goal-parser.d.ts +27 -0
- package/dist/extensions/builtin/goal/goal-parser.js +2 -0
- package/dist/extensions/builtin/goal/goal-prompts.d.ts +15 -0
- package/dist/extensions/builtin/goal/goal-prompts.js +5 -0
- package/dist/extensions/builtin/goal/goal-store.d.ts +28 -0
- package/dist/extensions/builtin/goal/goal-store.js +1 -0
- package/dist/extensions/builtin/goal/goal-tools.d.ts +26 -0
- package/dist/extensions/builtin/goal/goal-tools.js +3 -0
- package/dist/extensions/builtin/goal/goal-types.d.ts +87 -0
- package/dist/extensions/builtin/goal/goal-types.js +1 -0
- package/dist/extensions/builtin/goal/index.d.ts +8 -0
- package/dist/extensions/builtin/goal/index.js +10 -0
- package/dist/extensions/builtin/grub/README.md +112 -0
- package/dist/extensions/builtin/grub/grub-controller.d.ts +67 -0
- package/dist/extensions/builtin/grub/grub-controller.js +1 -0
- package/dist/extensions/builtin/grub/grub-decision.d.ts +8 -0
- package/dist/extensions/builtin/grub/grub-decision.js +1 -0
- package/dist/extensions/builtin/grub/grub-feature-list.d.ts +54 -0
- package/dist/extensions/builtin/grub/grub-feature-list.js +2 -0
- package/dist/extensions/builtin/grub/grub-format.d.ts +13 -0
- package/dist/extensions/builtin/grub/grub-format.js +4 -0
- package/dist/extensions/builtin/grub/grub-harness.d.ts +9 -0
- package/dist/extensions/builtin/grub/grub-harness.js +3 -0
- package/dist/extensions/builtin/grub/grub-i18n.d.ts +166 -0
- package/dist/extensions/builtin/grub/grub-i18n.js +1 -0
- package/dist/extensions/builtin/grub/grub-parser.d.ts +24 -0
- package/dist/extensions/builtin/grub/grub-parser.js +2 -0
- package/dist/extensions/builtin/grub/grub-persistence.d.ts +17 -0
- package/dist/extensions/builtin/grub/grub-persistence.js +2 -0
- package/dist/extensions/builtin/grub/grub-prompts.d.ts +12 -0
- package/dist/extensions/builtin/grub/grub-prompts.js +97 -0
- package/dist/extensions/builtin/grub/grub-turn.d.ts +16 -0
- package/dist/extensions/builtin/grub/grub-turn.js +1 -0
- package/dist/extensions/builtin/grub/grub-types.d.ts +110 -0
- package/dist/extensions/builtin/grub/grub-types.js +1 -0
- package/dist/extensions/builtin/grub/index.d.ts +8 -0
- package/dist/extensions/builtin/grub/index.js +6 -0
- package/dist/extensions/builtin/idle-think/curiosity.d.ts +46 -0
- package/dist/extensions/builtin/idle-think/curiosity.js +2 -0
- package/dist/extensions/builtin/idle-think/idle-think-runtime.d.ts +46 -0
- package/dist/extensions/builtin/idle-think/idle-think-runtime.js +1 -0
- package/dist/extensions/builtin/idle-think/index.d.ts +15 -0
- package/dist/extensions/builtin/idle-think/index.js +1 -0
- package/dist/extensions/builtin/idle-think/insights.d.ts +27 -0
- package/dist/extensions/builtin/idle-think/insights.js +5 -0
- package/dist/extensions/builtin/idle-think/thinker.d.ts +26 -0
- package/dist/extensions/builtin/idle-think/thinker.js +9 -0
- package/dist/extensions/builtin/insights/html-report.d.ts +21 -0
- package/dist/extensions/builtin/insights/html-report.js +463 -0
- package/dist/extensions/builtin/insights/index.d.ts +24 -0
- package/dist/extensions/builtin/insights/index.js +2 -0
- package/dist/extensions/builtin/insights/insights-engine.d.ts +18 -0
- package/dist/extensions/builtin/insights/insights-engine.js +39 -0
- package/dist/extensions/builtin/insights/prompts.d.ts +17 -0
- package/dist/extensions/builtin/insights/prompts.js +180 -0
- package/dist/extensions/builtin/insights/session-scanner.d.ts +27 -0
- package/dist/extensions/builtin/insights/session-scanner.js +19 -0
- package/dist/extensions/builtin/insights/stats.d.ts +13 -0
- package/dist/extensions/builtin/insights/stats.js +1 -0
- package/dist/extensions/builtin/insights/types.d.ts +199 -0
- package/dist/extensions/builtin/insights/types.js +0 -0
- package/dist/extensions/builtin/link-world/agent-workspace/README.md +16 -0
- package/dist/extensions/builtin/link-world/index.d.ts +8 -0
- package/dist/extensions/builtin/link-world/index.js +19 -0
- package/dist/extensions/builtin/link-world/internet-search/internet-search.md +65 -0
- package/dist/extensions/builtin/link-world/link-world-agent.md +82 -0
- package/dist/extensions/builtin/link-world/linkworld.md +313 -0
- package/dist/extensions/builtin/link-world/network-routing/network-routing.md +67 -0
- package/dist/extensions/builtin/loop/README.md +92 -0
- package/dist/extensions/builtin/loop/cron/cron-parser.d.ts +56 -0
- package/dist/extensions/builtin/loop/cron/cron-parser.js +1 -0
- package/dist/extensions/builtin/loop/cron/cron-scheduler.d.ts +85 -0
- package/dist/extensions/builtin/loop/cron/cron-scheduler.js +10 -0
- package/dist/extensions/builtin/loop/cron/cron-tasks-lock.d.ts +42 -0
- package/dist/extensions/builtin/loop/cron/cron-tasks-lock.js +1 -0
- package/dist/extensions/builtin/loop/cron/cron-tasks.d.ts +200 -0
- package/dist/extensions/builtin/loop/cron/cron-tasks.js +2 -0
- package/dist/extensions/builtin/loop/cron/index.d.ts +18 -0
- package/dist/extensions/builtin/loop/cron/index.js +1 -0
- package/dist/extensions/builtin/loop/cron-tools/cron-create-tool.d.ts +35 -0
- package/dist/extensions/builtin/loop/cron-tools/cron-create-tool.js +1 -0
- package/dist/extensions/builtin/loop/cron-tools/cron-delete-tool.d.ts +29 -0
- package/dist/extensions/builtin/loop/cron-tools/cron-delete-tool.js +1 -0
- package/dist/extensions/builtin/loop/cron-tools/cron-list-tool.d.ts +25 -0
- package/dist/extensions/builtin/loop/cron-tools/cron-list-tool.js +2 -0
- package/dist/extensions/builtin/loop/cron-tools/index.d.ts +16 -0
- package/dist/extensions/builtin/loop/cron-tools/index.js +1 -0
- package/dist/extensions/builtin/loop/cron-tools/prompt.d.ts +35 -0
- package/dist/extensions/builtin/loop/cron-tools/prompt.js +38 -0
- package/dist/extensions/builtin/loop/index.d.ts +19 -0
- package/dist/extensions/builtin/loop/index.js +2 -0
- package/dist/extensions/builtin/loop/loop-skill.d.ts +18 -0
- package/dist/extensions/builtin/loop/loop-skill.js +58 -0
- package/dist/extensions/builtin/lsp/index.d.ts +8 -0
- package/dist/extensions/builtin/lsp/index.js +1 -0
- package/dist/extensions/builtin/lsp/lsp-client.d.ts +22 -0
- package/dist/extensions/builtin/lsp/lsp-client.js +1 -0
- package/dist/extensions/builtin/lsp/lsp-config.d.ts +8 -0
- package/dist/extensions/builtin/lsp/lsp-config.js +1 -0
- package/dist/extensions/builtin/lsp/lsp-formatters.d.ts +15 -0
- package/dist/extensions/builtin/lsp/lsp-formatters.js +18 -0
- package/dist/extensions/builtin/lsp/lsp-server-instance.d.ts +24 -0
- package/dist/extensions/builtin/lsp/lsp-server-instance.js +1 -0
- package/dist/extensions/builtin/lsp/lsp-server-manager.d.ts +21 -0
- package/dist/extensions/builtin/lsp/lsp-server-manager.js +1 -0
- package/dist/extensions/builtin/lsp/lsp-tool.d.ts +33 -0
- package/dist/extensions/builtin/lsp/lsp-tool.js +2 -0
- package/dist/extensions/builtin/lsp/types.d.ts +31 -0
- package/dist/extensions/builtin/lsp/types.js +1 -0
- package/dist/extensions/builtin/mcp/figma-design.md +68 -0
- package/dist/extensions/builtin/mcp/index.d.ts +14 -0
- package/dist/extensions/builtin/mcp/index.js +25 -0
- package/dist/extensions/builtin/mcp/mcp-management.md +85 -0
- package/dist/extensions/builtin/plan/clear-context-state.d.ts +8 -0
- package/dist/extensions/builtin/plan/clear-context-state.js +1 -0
- package/dist/extensions/builtin/plan/enter-plan-mode-tool.d.ts +11 -0
- package/dist/extensions/builtin/plan/enter-plan-mode-tool.js +2 -0
- package/dist/extensions/builtin/plan/exit-plan-mode-tool.d.ts +18 -0
- package/dist/extensions/builtin/plan/exit-plan-mode-tool.js +13 -0
- package/dist/extensions/builtin/plan/index.d.ts +8 -0
- package/dist/extensions/builtin/plan/index.js +24 -0
- package/dist/extensions/builtin/plan/plan-agents.d.ts +23 -0
- package/dist/extensions/builtin/plan/plan-agents.js +43 -0
- package/dist/extensions/builtin/plan/plan-file-manager.d.ts +26 -0
- package/dist/extensions/builtin/plan/plan-file-manager.js +1 -0
- package/dist/extensions/builtin/plan/plan-permissions.d.ts +15 -0
- package/dist/extensions/builtin/plan/plan-permissions.js +12 -0
- package/dist/extensions/builtin/plan/plan-validation.d.ts +18 -0
- package/dist/extensions/builtin/plan/plan-validation.js +5 -0
- package/dist/extensions/builtin/plan/plan-workflow-prompt.d.ts +18 -0
- package/dist/extensions/builtin/plan/plan-workflow-prompt.js +102 -0
- package/dist/extensions/builtin/plan/teammate-approval.d.ts +49 -0
- package/dist/extensions/builtin/plan/teammate-approval.js +3 -0
- package/dist/extensions/builtin/plan/types.d.ts +133 -0
- package/dist/extensions/builtin/plan/types.js +1 -0
- package/dist/extensions/builtin/presence/index.d.ts +40 -0
- package/dist/extensions/builtin/presence/index.js +15 -0
- package/dist/extensions/builtin/presence/presence-memory.d.ts +47 -0
- package/dist/extensions/builtin/presence/presence-memory.js +1 -0
- package/dist/extensions/builtin/recap/AGENT.md +15 -0
- package/dist/extensions/builtin/recap/index.d.ts +8 -0
- package/dist/extensions/builtin/recap/index.js +1 -0
- package/dist/extensions/builtin/recap/recap-budget.d.ts +24 -0
- package/dist/extensions/builtin/recap/recap-budget.js +1 -0
- package/dist/extensions/builtin/recap/recap-extractor.d.ts +34 -0
- package/dist/extensions/builtin/recap/recap-extractor.js +3 -0
- package/dist/extensions/builtin/recap/recap-renderer.d.ts +19 -0
- package/dist/extensions/builtin/recap/recap-renderer.js +2 -0
- package/dist/extensions/builtin/recap/recap-synthesizer.d.ts +51 -0
- package/dist/extensions/builtin/recap/recap-synthesizer.js +19 -0
- package/dist/extensions/builtin/recap/recap-types.d.ts +40 -0
- package/dist/extensions/builtin/recap/recap-types.js +1 -0
- package/dist/extensions/builtin/sal/README.md +72 -0
- package/dist/extensions/builtin/sal/anchors.d.ts +46 -0
- package/dist/extensions/builtin/sal/anchors.js +1 -0
- package/dist/extensions/builtin/sal/eval/index.d.ts +18 -0
- package/dist/extensions/builtin/sal/eval/index.js +1 -0
- package/dist/extensions/builtin/sal/eval/insforge-sink.d.ts +30 -0
- package/dist/extensions/builtin/sal/eval/insforge-sink.js +1 -0
- package/dist/extensions/builtin/sal/eval/jsonl-sink.d.ts +27 -0
- package/dist/extensions/builtin/sal/eval/jsonl-sink.js +3 -0
- package/dist/extensions/builtin/sal/eval/noop-sink.d.ts +8 -0
- package/dist/extensions/builtin/sal/eval/noop-sink.js +1 -0
- package/dist/extensions/builtin/sal/eval/types.d.ts +60 -0
- package/dist/extensions/builtin/sal/eval/types.js +1 -0
- package/dist/extensions/builtin/sal/index.d.ts +12 -0
- package/dist/extensions/builtin/sal/index.js +7 -0
- package/dist/extensions/builtin/sal/sal-config.d.ts +46 -0
- package/dist/extensions/builtin/sal/sal-config.js +1 -0
- package/dist/extensions/builtin/sal/sal-context.d.ts +11 -0
- package/dist/extensions/builtin/sal/sal-context.js +2 -0
- package/dist/extensions/builtin/sal/sal-runtime.d.ts +72 -0
- package/dist/extensions/builtin/sal/sal-runtime.js +0 -0
- package/dist/extensions/builtin/sal/sal-trace.d.ts +11 -0
- package/dist/extensions/builtin/sal/sal-trace.js +1 -0
- package/dist/extensions/builtin/sal/terrain.d.ts +73 -0
- package/dist/extensions/builtin/sal/terrain.js +3 -0
- package/dist/extensions/builtin/sal/weights.d.ts +28 -0
- package/dist/extensions/builtin/sal/weights.js +1 -0
- package/dist/extensions/builtin/security-audit/README.md +289 -0
- package/dist/extensions/builtin/security-audit/engine/detector.d.ts +44 -0
- package/dist/extensions/builtin/security-audit/engine/detector.js +1 -0
- package/dist/extensions/builtin/security-audit/engine/interceptor.d.ts +61 -0
- package/dist/extensions/builtin/security-audit/engine/interceptor.js +27 -0
- package/dist/extensions/builtin/security-audit/engine/logger.d.ts +65 -0
- package/dist/extensions/builtin/security-audit/engine/logger.js +65 -0
- package/dist/extensions/builtin/security-audit/index.d.ts +13 -0
- package/dist/extensions/builtin/security-audit/index.js +49 -0
- package/dist/extensions/builtin/security-audit/interface.d.ts +167 -0
- package/dist/extensions/builtin/security-audit/interface.js +1 -0
- package/dist/extensions/builtin/soul/index.d.ts +13 -0
- package/dist/extensions/builtin/soul/index.js +1 -0
- package/dist/extensions/builtin/subagent/index.d.ts +8 -0
- package/dist/extensions/builtin/subagent/index.js +8 -0
- package/dist/extensions/builtin/subagent/subagent-parser.d.ts +30 -0
- package/dist/extensions/builtin/subagent/subagent-parser.js +15 -0
- package/dist/extensions/builtin/subagent/subagent-runner.d.ts +49 -0
- package/dist/extensions/builtin/subagent/subagent-runner.js +8 -0
- package/dist/extensions/builtin/subagent/subagent-types.d.ts +57 -0
- package/dist/extensions/builtin/subagent/subagent-types.js +0 -0
- package/dist/extensions/builtin/task/index.d.ts +8 -0
- package/dist/extensions/builtin/task/index.js +1 -0
- package/dist/extensions/builtin/task/task-store.d.ts +42 -0
- package/dist/extensions/builtin/task/task-store.js +1 -0
- package/dist/extensions/builtin/task/task-tools/task-create-tool.d.ts +37 -0
- package/dist/extensions/builtin/task/task-tools/task-create-tool.js +40 -0
- package/dist/extensions/builtin/task/task-tools/task-get-tool.d.ts +31 -0
- package/dist/extensions/builtin/task/task-tools/task-get-tool.js +23 -0
- package/dist/extensions/builtin/task/task-tools/task-list-tool.d.ts +27 -0
- package/dist/extensions/builtin/task/task-tools/task-list-tool.js +22 -0
- package/dist/extensions/builtin/task/task-tools/task-output-tool.d.ts +32 -0
- package/dist/extensions/builtin/task/task-tools/task-output-tool.js +10 -0
- package/dist/extensions/builtin/task/task-tools/task-stop-tool.d.ts +31 -0
- package/dist/extensions/builtin/task/task-tools/task-stop-tool.js +5 -0
- package/dist/extensions/builtin/task/task-tools/task-update-tool.d.ts +47 -0
- package/dist/extensions/builtin/task/task-tools/task-update-tool.js +77 -0
- package/dist/extensions/builtin/task/task-tools/tool-search-tool.d.ts +34 -0
- package/dist/extensions/builtin/task/task-tools/tool-search-tool.js +14 -0
- package/dist/extensions/builtin/task/task-types.d.ts +30 -0
- package/dist/extensions/builtin/task/task-types.js +1 -0
- package/dist/extensions/builtin/teach/README.md +197 -0
- package/dist/extensions/builtin/teach/index.d.ts +12 -0
- package/dist/extensions/builtin/teach/index.js +6 -0
- package/dist/extensions/builtin/teach/references/analogy-library.md +153 -0
- package/dist/extensions/builtin/teach/references/learning-paths.md +214 -0
- package/dist/extensions/builtin/teach/references/source-verification.md +268 -0
- package/dist/extensions/builtin/teach/references/teaching-template.md +237 -0
- package/dist/extensions/builtin/teach/teach-format.d.ts +35 -0
- package/dist/extensions/builtin/teach/teach-format.js +6 -0
- package/dist/extensions/builtin/teach/teach-i18n.d.ts +47 -0
- package/dist/extensions/builtin/teach/teach-i18n.js +1 -0
- package/dist/extensions/builtin/teach/teach-persistence.d.ts +36 -0
- package/dist/extensions/builtin/teach/teach-persistence.js +35 -0
- package/dist/extensions/builtin/teach/teach-prompts.d.ts +52 -0
- package/dist/extensions/builtin/teach/teach-prompts.js +35 -0
- package/dist/extensions/builtin/teach/teach-runtime.d.ts +93 -0
- package/dist/extensions/builtin/teach/teach-runtime.js +9 -0
- package/dist/extensions/builtin/teach/teach-types.d.ts +81 -0
- package/dist/extensions/builtin/teach/teach-types.js +0 -0
- package/dist/extensions/builtin/team/AGENT.md +112 -0
- package/dist/extensions/builtin/team/TESTING.md +299 -0
- package/dist/extensions/builtin/team/index.d.ts +26 -0
- package/dist/extensions/builtin/team/index.js +11 -0
- package/dist/extensions/builtin/team/team-dashboard.d.ts +13 -0
- package/dist/extensions/builtin/team/team-dashboard.js +1 -0
- package/dist/extensions/builtin/team/team-harness.d.ts +35 -0
- package/dist/extensions/builtin/team/team-harness.js +18 -0
- package/dist/extensions/builtin/team/team-mailbox.d.ts +50 -0
- package/dist/extensions/builtin/team/team-mailbox.js +4 -0
- package/dist/extensions/builtin/team/team-orchestrator.d.ts +39 -0
- package/dist/extensions/builtin/team/team-orchestrator.js +5 -0
- package/dist/extensions/builtin/team/team-parser.d.ts +84 -0
- package/dist/extensions/builtin/team/team-parser.js +38 -0
- package/dist/extensions/builtin/team/team-permissions.d.ts +63 -0
- package/dist/extensions/builtin/team/team-permissions.js +1 -0
- package/dist/extensions/builtin/team/team-presets.d.ts +45 -0
- package/dist/extensions/builtin/team/team-presets.js +2 -0
- package/dist/extensions/builtin/team/team-psyche.d.ts +14 -0
- package/dist/extensions/builtin/team/team-psyche.js +5 -0
- package/dist/extensions/builtin/team/team-runtime-helpers.d.ts +48 -0
- package/dist/extensions/builtin/team/team-runtime-helpers.js +2 -0
- package/dist/extensions/builtin/team/team-runtime.d.ts +91 -0
- package/dist/extensions/builtin/team/team-runtime.js +3 -0
- package/dist/extensions/builtin/team/team-state-store.d.ts +29 -0
- package/dist/extensions/builtin/team/team-state-store.js +2 -0
- package/dist/extensions/builtin/team/team-task-store.d.ts +35 -0
- package/dist/extensions/builtin/team/team-task-store.js +2 -0
- package/dist/extensions/builtin/team/team-transcript.d.ts +31 -0
- package/dist/extensions/builtin/team/team-transcript.js +2 -0
- package/dist/extensions/builtin/team/team-types.d.ts +250 -0
- package/dist/extensions/builtin/team/team-types.js +0 -0
- package/dist/extensions/builtin/team/team-ui.d.ts +50 -0
- package/dist/extensions/builtin/team/team-ui.js +2 -0
- package/dist/extensions/builtin/token-save/README.md +56 -0
- package/dist/extensions/builtin/token-save/config.d.ts +8 -0
- package/dist/extensions/builtin/token-save/config.js +1 -0
- package/dist/extensions/builtin/token-save/filters.d.ts +14 -0
- package/dist/extensions/builtin/token-save/filters.js +24 -0
- package/dist/extensions/builtin/token-save/index.d.ts +8 -0
- package/dist/extensions/builtin/token-save/index.js +4 -0
- package/dist/extensions/builtin/token-save/lexer.d.ts +11 -0
- package/dist/extensions/builtin/token-save/lexer.js +1 -0
- package/dist/extensions/builtin/token-save/recovery.d.ts +1 -0
- package/dist/extensions/builtin/token-save/recovery.js +1 -0
- package/dist/extensions/builtin/token-save/rewrite.d.ts +19 -0
- package/dist/extensions/builtin/token-save/rewrite.js +1 -0
- package/dist/extensions/builtin/token-save/runner.d.ts +14 -0
- package/dist/extensions/builtin/token-save/runner.js +3 -0
- package/dist/extensions/builtin/token-save/stream.d.ts +20 -0
- package/dist/extensions/builtin/token-save/stream.js +1 -0
- package/dist/extensions/builtin/token-save/toml-dsl.d.ts +25 -0
- package/dist/extensions/builtin/token-save/toml-dsl.js +3 -0
- package/dist/extensions/builtin/token-save/tracking.d.ts +24 -0
- package/dist/extensions/builtin/token-save/tracking.js +8 -0
- package/dist/extensions/optional/AGENT.md +11 -0
- package/dist/extensions/optional/export-html/index.d.ts +41 -0
- package/dist/extensions/optional/export-html/index.js +2 -0
- package/dist/extensions/optional/simplify/index.d.ts +35 -0
- package/dist/extensions/optional/simplify/index.js +77 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.js +1 -0
- package/dist/main.d.ts +7 -0
- package/dist/main.js +41 -0
- package/dist/migrations.d.ts +30 -0
- package/dist/migrations.js +4 -0
- package/dist/models.d.ts +7 -0
- package/dist/models.js +1 -0
- package/dist/modes/acp/acp-mode.d.ts +30 -0
- package/dist/modes/acp/acp-mode.js +25 -0
- package/dist/modes/index.d.ts +14 -0
- package/dist/modes/index.js +1 -0
- package/dist/modes/interactive/agent-loop-status.d.ts +8 -0
- package/dist/modes/interactive/agent-loop-status.js +1 -0
- package/dist/modes/interactive/components/apikey-input.d.ts +10 -0
- package/dist/modes/interactive/components/apikey-input.js +3 -0
- package/dist/modes/interactive/components/armin.d.ts +39 -0
- package/dist/modes/interactive/components/armin.js +1 -0
- package/dist/modes/interactive/components/assistant-message.d.ts +21 -0
- package/dist/modes/interactive/components/assistant-message.js +1 -0
- package/dist/modes/interactive/components/attachments-bar.d.ts +37 -0
- package/dist/modes/interactive/components/attachments-bar.js +1 -0
- package/dist/modes/interactive/components/bash-execution.d.ts +40 -0
- package/dist/modes/interactive/components/bash-execution.js +13 -0
- package/dist/modes/interactive/components/bordered-loader.d.ts +21 -0
- package/dist/modes/interactive/components/bordered-loader.js +1 -0
- package/dist/modes/interactive/components/branch-summary-message.d.ts +21 -0
- package/dist/modes/interactive/components/branch-summary-message.js +3 -0
- package/dist/modes/interactive/components/buddy/pet-sprites.d.ts +31 -0
- package/dist/modes/interactive/components/buddy/pet-sprites.js +1 -0
- package/dist/modes/interactive/components/catui-loader.d.ts +55 -0
- package/dist/modes/interactive/components/catui-loader.js +1 -0
- package/dist/modes/interactive/components/compaction-summary-message.d.ts +21 -0
- package/dist/modes/interactive/components/compaction-summary-message.js +3 -0
- package/dist/modes/interactive/components/config-selector.d.ts +76 -0
- package/dist/modes/interactive/components/config-selector.js +1 -0
- package/dist/modes/interactive/components/countdown-timer.d.ts +19 -0
- package/dist/modes/interactive/components/countdown-timer.js +1 -0
- package/dist/modes/interactive/components/custom-editor.d.ts +37 -0
- package/dist/modes/interactive/components/custom-editor.js +1 -0
- package/dist/modes/interactive/components/custom-message.d.ts +26 -0
- package/dist/modes/interactive/components/custom-message.js +2 -0
- package/dist/modes/interactive/components/daxnuts.d.ts +28 -0
- package/dist/modes/interactive/components/daxnuts.js +1 -0
- package/dist/modes/interactive/components/diff.d.ts +17 -0
- package/dist/modes/interactive/components/diff.js +3 -0
- package/dist/modes/interactive/components/dynamic-border.d.ts +20 -0
- package/dist/modes/interactive/components/dynamic-border.js +1 -0
- package/dist/modes/interactive/components/editor-buddy-layout.d.ts +17 -0
- package/dist/modes/interactive/components/editor-buddy-layout.js +1 -0
- package/dist/modes/interactive/components/extension-editor.d.ts +25 -0
- package/dist/modes/interactive/components/extension-editor.js +1 -0
- package/dist/modes/interactive/components/extension-input.d.ts +29 -0
- package/dist/modes/interactive/components/extension-input.js +2 -0
- package/dist/modes/interactive/components/extension-selector.d.ts +32 -0
- package/dist/modes/interactive/components/extension-selector.js +2 -0
- package/dist/modes/interactive/components/footer.d.ts +34 -0
- package/dist/modes/interactive/components/footer.js +1 -0
- package/dist/modes/interactive/components/index.d.ts +44 -0
- package/dist/modes/interactive/components/index.js +1 -0
- package/dist/modes/interactive/components/keybinding-hints.d.ts +46 -0
- package/dist/modes/interactive/components/keybinding-hints.js +1 -0
- package/dist/modes/interactive/components/login-dialog.d.ts +47 -0
- package/dist/modes/interactive/components/login-dialog.js +1 -0
- package/dist/modes/interactive/components/memory-stats.d.ts +14 -0
- package/dist/modes/interactive/components/memory-stats.js +2 -0
- package/dist/modes/interactive/components/model-selector.d.ts +59 -0
- package/dist/modes/interactive/components/model-selector.js +2 -0
- package/dist/modes/interactive/components/notification-queue.d.ts +49 -0
- package/dist/modes/interactive/components/notification-queue.js +1 -0
- package/dist/modes/interactive/components/oauth-selector.d.ts +30 -0
- package/dist/modes/interactive/components/oauth-selector.js +1 -0
- package/dist/modes/interactive/components/persona-selector.d.ts +24 -0
- package/dist/modes/interactive/components/persona-selector.js +1 -0
- package/dist/modes/interactive/components/plan-progress-panel.d.ts +24 -0
- package/dist/modes/interactive/components/plan-progress-panel.js +1 -0
- package/dist/modes/interactive/components/provider-selector.d.ts +25 -0
- package/dist/modes/interactive/components/provider-selector.js +1 -0
- package/dist/modes/interactive/components/raw-text.d.ts +19 -0
- package/dist/modes/interactive/components/raw-text.js +3 -0
- package/dist/modes/interactive/components/scoped-models-selector.d.ts +54 -0
- package/dist/modes/interactive/components/scoped-models-selector.js +1 -0
- package/dist/modes/interactive/components/session-selector-search.d.ts +28 -0
- package/dist/modes/interactive/components/session-selector-search.js +1 -0
- package/dist/modes/interactive/components/session-selector.d.ts +100 -0
- package/dist/modes/interactive/components/session-selector.js +2 -0
- package/dist/modes/interactive/components/settings-selector.d.ts +77 -0
- package/dist/modes/interactive/components/settings-selector.js +1 -0
- package/dist/modes/interactive/components/show-images-selector.d.ts +15 -0
- package/dist/modes/interactive/components/show-images-selector.js +1 -0
- package/dist/modes/interactive/components/skill-invocation-message.d.ts +22 -0
- package/dist/modes/interactive/components/skill-invocation-message.js +3 -0
- package/dist/modes/interactive/components/soul-stats.d.ts +15 -0
- package/dist/modes/interactive/components/soul-stats.js +2 -0
- package/dist/modes/interactive/components/sub-agent-panel.d.ts +24 -0
- package/dist/modes/interactive/components/sub-agent-panel.js +1 -0
- package/dist/modes/interactive/components/task-status-panel.d.ts +36 -0
- package/dist/modes/interactive/components/task-status-panel.js +1 -0
- package/dist/modes/interactive/components/theme-selector.d.ts +16 -0
- package/dist/modes/interactive/components/theme-selector.js +1 -0
- package/dist/modes/interactive/components/thinking-selector.d.ts +16 -0
- package/dist/modes/interactive/components/thinking-selector.js +1 -0
- package/dist/modes/interactive/components/tool-execution.d.ts +80 -0
- package/dist/modes/interactive/components/tool-execution.js +58 -0
- package/dist/modes/interactive/components/tree-selector.d.ts +73 -0
- package/dist/modes/interactive/components/tree-selector.js +1 -0
- package/dist/modes/interactive/components/user-message-selector.d.ts +35 -0
- package/dist/modes/interactive/components/user-message-selector.js +1 -0
- package/dist/modes/interactive/components/user-message.d.ts +13 -0
- package/dist/modes/interactive/components/user-message.js +1 -0
- package/dist/modes/interactive/components/visual-truncate.d.ts +29 -0
- package/dist/modes/interactive/components/visual-truncate.js +1 -0
- package/dist/modes/interactive/controllers/auth-provider-config-controller.d.ts +64 -0
- package/dist/modes/interactive/controllers/auth-provider-config-controller.js +1 -0
- package/dist/modes/interactive/controllers/extension-ui/custom-overlay-host.d.ts +38 -0
- package/dist/modes/interactive/controllers/extension-ui/custom-overlay-host.js +1 -0
- package/dist/modes/interactive/controllers/extension-ui/editor-component-adapter.d.ts +37 -0
- package/dist/modes/interactive/controllers/extension-ui/editor-component-adapter.js +1 -0
- package/dist/modes/interactive/controllers/extension-ui/persistent-surface-registry.d.ts +53 -0
- package/dist/modes/interactive/controllers/extension-ui/persistent-surface-registry.js +1 -0
- package/dist/modes/interactive/controllers/extension-ui/prompt-host.d.ts +52 -0
- package/dist/modes/interactive/controllers/extension-ui/prompt-host.js +2 -0
- package/dist/modes/interactive/controllers/image-pipeline-controller.d.ts +106 -0
- package/dist/modes/interactive/controllers/image-pipeline-controller.js +1 -0
- package/dist/modes/interactive/controllers/input-submit-controller.d.ts +80 -0
- package/dist/modes/interactive/controllers/input-submit-controller.js +2 -0
- package/dist/modes/interactive/controllers/interrupt-controller.d.ts +75 -0
- package/dist/modes/interactive/controllers/interrupt-controller.js +1 -0
- package/dist/modes/interactive/controllers/model-overlay-controller.d.ts +127 -0
- package/dist/modes/interactive/controllers/model-overlay-controller.js +3 -0
- package/dist/modes/interactive/controllers/self-update-controller.d.ts +71 -0
- package/dist/modes/interactive/controllers/self-update-controller.js +24 -0
- package/dist/modes/interactive/controllers/settings-overlay-controller.d.ts +56 -0
- package/dist/modes/interactive/controllers/settings-overlay-controller.js +2 -0
- package/dist/modes/interactive/controllers/slash-dispatcher-controller.d.ts +74 -0
- package/dist/modes/interactive/controllers/slash-dispatcher-controller.js +1 -0
- package/dist/modes/interactive/controllers/stream-render-controller.d.ts +110 -0
- package/dist/modes/interactive/controllers/stream-render-controller.js +2 -0
- package/dist/modes/interactive/controllers/tree-overlay-controller.d.ts +55 -0
- package/dist/modes/interactive/controllers/tree-overlay-controller.js +1 -0
- package/dist/modes/interactive/footer-data-provider.d.ts +32 -0
- package/dist/modes/interactive/footer-data-provider.js +1 -0
- package/dist/modes/interactive/interactive-mode.d.ts +303 -0
- package/dist/modes/interactive/interactive-mode.js +119 -0
- package/dist/modes/interactive/services/tips.d.ts +20 -0
- package/dist/modes/interactive/services/tips.js +1 -0
- package/dist/modes/interactive/slash-command-arguments.d.ts +28 -0
- package/dist/modes/interactive/slash-command-arguments.js +1 -0
- package/dist/modes/interactive/state/interactive-state.d.ts +74 -0
- package/dist/modes/interactive/state/interactive-state.js +1 -0
- package/dist/modes/interactive/theme/dark.json +85 -0
- package/dist/modes/interactive/theme/light.json +84 -0
- package/dist/modes/interactive/theme/theme-schema.json +335 -0
- package/dist/modes/interactive/theme/theme.d.ts +81 -0
- package/dist/modes/interactive/theme/theme.js +16 -0
- package/dist/modes/interactive/theme/warm.json +81 -0
- package/dist/modes/print-mode.d.ts +38 -0
- package/dist/modes/print-mode.js +2 -0
- package/dist/modes/rpc/rpc-client.d.ts +221 -0
- package/dist/modes/rpc/rpc-client.js +2 -0
- package/dist/modes/rpc/rpc-mode.d.ts +14 -0
- package/dist/modes/rpc/rpc-mode.js +1 -0
- package/dist/modes/rpc/rpc-types.d.ts +449 -0
- package/dist/modes/rpc/rpc-types.js +0 -0
- package/dist/modes/utils/agent-loop-result-format.d.ts +10 -0
- package/dist/modes/utils/agent-loop-result-format.js +1 -0
- package/dist/modes/utils/clipboard-image.d.ts +10 -0
- package/dist/modes/utils/clipboard-image.js +1 -0
- package/dist/modes/utils/clipboard-native.d.ts +11 -0
- package/dist/modes/utils/clipboard-native.js +1 -0
- package/dist/modes/utils/clipboard.d.ts +1 -0
- package/dist/modes/utils/clipboard.js +1 -0
- package/dist/modes/utils/image-convert.d.ts +8 -0
- package/dist/modes/utils/image-convert.js +1 -0
- package/dist/modes/utils/image-resize.d.ts +41 -0
- package/dist/modes/utils/image-resize.js +1 -0
- package/dist/node_modules/@catui/agent-core/dist/agent-loop-continuations.js +1 -0
- package/dist/node_modules/@catui/agent-core/dist/agent-loop-stream-events.js +1 -0
- package/dist/node_modules/@catui/agent-core/dist/agent-loop-tool-results.js +3 -0
- package/dist/node_modules/@catui/agent-core/dist/agent-loop-tool-summaries.js +1 -0
- package/dist/node_modules/@catui/agent-core/dist/agent-loop.js +4 -0
- package/dist/node_modules/@catui/agent-core/dist/agent-run-result.js +1 -0
- package/dist/node_modules/@catui/agent-core/dist/agent.js +1 -0
- package/dist/node_modules/@catui/agent-core/dist/errors.js +1 -0
- package/dist/node_modules/@catui/agent-core/dist/index.js +1 -0
- package/dist/node_modules/@catui/agent-core/dist/proxy.js +2 -0
- package/dist/node_modules/@catui/agent-core/dist/structured-adaptive-agent-loop.js +2 -0
- package/dist/node_modules/@catui/agent-core/dist/structured-adaptive-streaming-tool-executor.js +1 -0
- package/dist/node_modules/@catui/agent-core/dist/structured-adaptive-tool-orchestration.js +3 -0
- package/dist/node_modules/@catui/agent-core/dist/types.js +1 -0
- package/dist/node_modules/@catui/agent-core/package.json +28 -0
- package/dist/node_modules/@catui/ai/dist/api-registry.js +1 -0
- package/dist/node_modules/@catui/ai/dist/cli.js +21 -0
- package/dist/node_modules/@catui/ai/dist/config-path.js +1 -0
- package/dist/node_modules/@catui/ai/dist/debug-logger.js +4 -0
- package/dist/node_modules/@catui/ai/dist/env-api-keys.js +1 -0
- package/dist/node_modules/@catui/ai/dist/env.js +1 -0
- package/dist/node_modules/@catui/ai/dist/events.js +1 -0
- package/dist/node_modules/@catui/ai/dist/index.js +1 -0
- package/dist/node_modules/@catui/ai/dist/json.js +1 -0
- package/dist/node_modules/@catui/ai/dist/models.generated.js +1 -0
- package/dist/node_modules/@catui/ai/dist/models.js +1 -0
- package/dist/node_modules/@catui/ai/dist/overflow.js +1 -0
- package/dist/node_modules/@catui/ai/dist/providers/amazon-bedrock.js +1 -0
- package/dist/node_modules/@catui/ai/dist/providers/anthropic.js +2 -0
- package/dist/node_modules/@catui/ai/dist/providers/azure-openai-responses.js +1 -0
- package/dist/node_modules/@catui/ai/dist/providers/github-copilot-headers.js +1 -0
- package/dist/node_modules/@catui/ai/dist/providers/google-gemini-cli.js +2 -0
- package/dist/node_modules/@catui/ai/dist/providers/google-shared.js +2 -0
- package/dist/node_modules/@catui/ai/dist/providers/google-vertex.js +1 -0
- package/dist/node_modules/@catui/ai/dist/providers/google.js +1 -0
- package/dist/node_modules/@catui/ai/dist/providers/openai-codex-responses.js +7 -0
- package/dist/node_modules/@catui/ai/dist/providers/openai-completions.js +6 -0
- package/dist/node_modules/@catui/ai/dist/providers/openai-responses-shared.js +10 -0
- package/dist/node_modules/@catui/ai/dist/providers/openai-responses.js +1 -0
- package/dist/node_modules/@catui/ai/dist/providers/register-builtins.js +1 -0
- package/dist/node_modules/@catui/ai/dist/providers/simple-options.js +1 -0
- package/dist/node_modules/@catui/ai/dist/providers/transform-messages.js +1 -0
- package/dist/node_modules/@catui/ai/dist/registry.js +1 -0
- package/dist/node_modules/@catui/ai/dist/schema.js +1 -0
- package/dist/node_modules/@catui/ai/dist/stream.js +1 -0
- package/dist/node_modules/@catui/ai/dist/types.js +0 -0
- package/dist/node_modules/@catui/ai/dist/utils/event-stream-types.js +0 -0
- package/dist/node_modules/@catui/ai/dist/utils/event-stream.js +1 -0
- package/dist/node_modules/@catui/ai/dist/utils/http-proxy.js +1 -0
- package/dist/node_modules/@catui/ai/dist/utils/json-parse.js +1 -0
- package/dist/node_modules/@catui/ai/dist/utils/oauth/anthropic.js +1 -0
- package/dist/node_modules/@catui/ai/dist/utils/oauth/decode-credential.js +1 -0
- package/dist/node_modules/@catui/ai/dist/utils/oauth/github-copilot.js +1 -0
- package/dist/node_modules/@catui/ai/dist/utils/oauth/google-antigravity.js +1 -0
- package/dist/node_modules/@catui/ai/dist/utils/oauth/google-gemini-cli.js +1 -0
- package/dist/node_modules/@catui/ai/dist/utils/oauth/index.js +1 -0
- package/dist/node_modules/@catui/ai/dist/utils/oauth/openai-codex.js +11 -0
- package/dist/node_modules/@catui/ai/dist/utils/oauth/pkce.js +1 -0
- package/dist/node_modules/@catui/ai/dist/utils/oauth/types.js +0 -0
- package/dist/node_modules/@catui/ai/dist/utils/overflow.js +1 -0
- package/dist/node_modules/@catui/ai/dist/utils/sanitize-unicode.js +1 -0
- package/dist/node_modules/@catui/ai/dist/utils/typebox-helpers.js +1 -0
- package/dist/node_modules/@catui/ai/dist/utils/validation.js +6 -0
- package/dist/node_modules/@catui/ai/package.json +106 -0
- package/dist/node_modules/@catui/tui/dist/autocomplete.js +2 -0
- package/dist/node_modules/@catui/tui/dist/components/box.js +1 -0
- package/dist/node_modules/@catui/tui/dist/components/cached-container.js +1 -0
- package/dist/node_modules/@catui/tui/dist/components/cancellable-loader.js +1 -0
- package/dist/node_modules/@catui/tui/dist/components/editor.js +21 -0
- package/dist/node_modules/@catui/tui/dist/components/image.js +1 -0
- package/dist/node_modules/@catui/tui/dist/components/input.js +2 -0
- package/dist/node_modules/@catui/tui/dist/components/loader.js +1 -0
- package/dist/node_modules/@catui/tui/dist/components/markdown.js +7 -0
- package/dist/node_modules/@catui/tui/dist/components/select-list.js +1 -0
- package/dist/node_modules/@catui/tui/dist/components/settings-list.js +1 -0
- package/dist/node_modules/@catui/tui/dist/components/spacer.js +1 -0
- package/dist/node_modules/@catui/tui/dist/components/text.js +1 -0
- package/dist/node_modules/@catui/tui/dist/components/truncated-text.js +2 -0
- package/dist/node_modules/@catui/tui/dist/editor-component.js +0 -0
- package/dist/node_modules/@catui/tui/dist/fuzzy.js +1 -0
- package/dist/node_modules/@catui/tui/dist/index.js +1 -0
- package/dist/node_modules/@catui/tui/dist/keybindings.js +1 -0
- package/dist/node_modules/@catui/tui/dist/keys.js +5 -0
- package/dist/node_modules/@catui/tui/dist/kill-ring.js +1 -0
- package/dist/node_modules/@catui/tui/dist/stdin-buffer.js +1 -0
- package/dist/node_modules/@catui/tui/dist/terminal-image.js +1 -0
- package/dist/node_modules/@catui/tui/dist/terminal.js +1 -0
- package/dist/node_modules/@catui/tui/dist/tui.js +12 -0
- package/dist/node_modules/@catui/tui/dist/undo-stack.js +1 -0
- package/dist/node_modules/@catui/tui/dist/utils.js +2 -0
- package/dist/node_modules/@catui/tui/package.json +37 -0
- package/dist/packages/mem-core/src/store.d.ts +21 -0
- package/dist/packages/mem-core/src/store.js +1 -0
- package/dist/packages/mem-core/src/types.d.ts +329 -0
- package/dist/packages/mem-core/src/types.js +0 -0
- package/dist/packages/protocol/src/commands.d.ts +33 -0
- package/dist/packages/protocol/src/commands.js +0 -0
- package/dist/packages/protocol/src/flags.d.ts +20 -0
- package/dist/packages/protocol/src/flags.js +0 -0
- package/dist/packages/protocol/src/hooks.d.ts +17 -0
- package/dist/packages/protocol/src/hooks.js +0 -0
- package/dist/packages/protocol/src/index.d.ts +15 -0
- package/dist/packages/protocol/src/index.js +1 -0
- package/dist/packages/protocol/src/lifecycle.d.ts +61 -0
- package/dist/packages/protocol/src/lifecycle.js +0 -0
- package/dist/packages/protocol/src/tools.d.ts +77 -0
- package/dist/packages/protocol/src/tools.js +0 -0
- package/dist/packages/soul-core/src/config.d.ts +20 -0
- package/dist/packages/soul-core/src/config.js +1 -0
- package/dist/packages/soul-core/src/diagnostics.d.ts +23 -0
- package/dist/packages/soul-core/src/diagnostics.js +1 -0
- package/dist/packages/soul-core/src/evolution.d.ts +75 -0
- package/dist/packages/soul-core/src/evolution.js +1 -0
- package/dist/packages/soul-core/src/index.d.ts +13 -0
- package/dist/packages/soul-core/src/index.js +1 -0
- package/dist/packages/soul-core/src/injection.d.ts +35 -0
- package/dist/packages/soul-core/src/injection.js +8 -0
- package/dist/packages/soul-core/src/manager.d.ts +101 -0
- package/dist/packages/soul-core/src/manager.js +1 -0
- package/dist/packages/soul-core/src/store.d.ts +62 -0
- package/dist/packages/soul-core/src/store.js +1 -0
- package/dist/packages/soul-core/src/types.d.ts +317 -0
- package/dist/packages/soul-core/src/types.js +0 -0
- package/dist/public-config.d.ts +12 -0
- package/dist/public-config.js +1 -0
- package/dist/runtime.d.ts +9 -0
- package/dist/runtime.js +1 -0
- package/dist/session-compaction.d.ts +7 -0
- package/dist/session-compaction.js +1 -0
- package/dist/session.d.ts +7 -0
- package/dist/session.js +1 -0
- package/dist/skills.d.ts +7 -0
- package/dist/skills.js +1 -0
- package/dist/tools.d.ts +7 -0
- package/dist/tools.js +1 -0
- package/dist/utils/changelog.d.ts +20 -0
- package/dist/utils/changelog.js +4 -0
- package/dist/utils/diagnostics.d.ts +37 -0
- package/dist/utils/diagnostics.js +1 -0
- package/dist/utils/frontmatter.d.ts +7 -0
- package/dist/utils/frontmatter.js +4 -0
- package/dist/utils/git.d.ts +25 -0
- package/dist/utils/git.js +1 -0
- package/dist/utils/mime.d.ts +1 -0
- package/dist/utils/mime.js +1 -0
- package/dist/utils/photon.d.ts +6 -0
- package/dist/utils/photon.js +1 -0
- package/dist/utils/startup-profiler.d.ts +87 -0
- package/dist/utils/startup-profiler.js +2 -0
- package/docs/codex-goal-command-impl.md +1055 -0
- package/docs/codex-goal-vs-grub.md +500 -0
- package/docs/custom-provider.md +27 -0
- package/docs/extensions.md +27 -0
- package/docs/keybindings.md +27 -0
- package/docs/loop /351/207/215/346/236/204/345/256/214/346/210/220/346/200/273/347/273/223.md" +251 -0
- package/docs/loop /351/207/215/346/236/204/345/256/214/346/210/220/346/212/245/345/221/212.md" +123 -0
- package/docs/loop /351/207/215/346/236/204/346/226/271/346/241/210.md" +1222 -0
- package/docs/loop /351/207/215/346/236/204/346/226/271/346/241/210/345/256/236/347/216/260/346/212/245/345/221/212.md" +158 -0
- package/docs/loop /351/207/215/346/236/204/346/226/271/346/241/210/345/257/271/346/257/224/345/210/206/346/236/220.md" +128 -0
- package/docs/loop /351/207/215/346/236/204/350/256/241/345/210/222.md" +321 -0
- package/docs/loop-usage-examples.md +215 -0
- package/docs/models.md +27 -0
- package/docs/packages.md +27 -0
- package/docs/pi-design-philosophy.md +457 -0
- package/docs/planmode.md +1987 -0
- package/docs/prompt-templates.md +27 -0
- package/docs/providers.md +27 -0
- package/docs/sdk.md +27 -0
- package/docs/skills.md +27 -0
- package/docs/themes.md +27 -0
- package/docs/tui.md +27 -0
- package/package.json +191 -0
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* [WHO]: Provides AuthProviderConfigController + AuthProviderConfigContext — interactive auth/provider configuration
|
|
3
|
+
* [FROM]: Depends on @catui/ai OAuth helpers, core/model/custom-providers, config paths, TUI components
|
|
4
|
+
* [TO]: Consumed by modes/interactive/interactive-mode.ts and model-overlay providerConfig port
|
|
5
|
+
* [HERE]: modes/interactive/controllers/auth-provider-config-controller.ts — P5 auth/provider-config slice
|
|
6
|
+
*
|
|
7
|
+
* Owns interactive credential/config prompts and OAuth UI. It does not own model selection overlay;
|
|
8
|
+
* model-overlay consumes this controller through ProviderConfigPort and receives model application
|
|
9
|
+
* callbacks through a narrow bridge.
|
|
10
|
+
*/
|
|
11
|
+
import type { Model } from "@catui/ai/types";
|
|
12
|
+
import type { Component, Container, TUI } from "@catui/tui";
|
|
13
|
+
import type { ModelRegistry } from "../../../core/model-registry.js";
|
|
14
|
+
import { type ProviderSelectorItem } from "../components/oauth-selector.js";
|
|
15
|
+
type AnyModel = Model<any>;
|
|
16
|
+
export interface AuthProviderConfigSurface {
|
|
17
|
+
showSelector(create: (done: () => void) => {
|
|
18
|
+
component: Component;
|
|
19
|
+
focus: Component;
|
|
20
|
+
}): void;
|
|
21
|
+
showStatus(message: string): void;
|
|
22
|
+
showError(message: string): void;
|
|
23
|
+
promptInput(title: string, placeholder?: string, opts?: {
|
|
24
|
+
initialValue?: string;
|
|
25
|
+
}): Promise<string | undefined>;
|
|
26
|
+
requestRender(): void;
|
|
27
|
+
getUi(): TUI;
|
|
28
|
+
getEditorContainer(): Container;
|
|
29
|
+
getEditor(): Component;
|
|
30
|
+
remountEditorShell(): void;
|
|
31
|
+
}
|
|
32
|
+
export interface AuthProviderModelBridge {
|
|
33
|
+
getCurrentModel(): AnyModel | undefined;
|
|
34
|
+
setCurrentModel(model: AnyModel): Promise<void>;
|
|
35
|
+
showModelSelector(initialSearchInput?: string, filterByProvider?: string): void;
|
|
36
|
+
applySelectedModel(model: AnyModel): Promise<void>;
|
|
37
|
+
updateAvailableProviderCount(): Promise<void>;
|
|
38
|
+
}
|
|
39
|
+
export interface AuthProviderConfigContext {
|
|
40
|
+
modelRegistry: ModelRegistry;
|
|
41
|
+
surface: AuthProviderConfigSurface;
|
|
42
|
+
modelBridge: AuthProviderModelBridge;
|
|
43
|
+
}
|
|
44
|
+
export declare class AuthProviderConfigController {
|
|
45
|
+
private readonly ctx;
|
|
46
|
+
constructor(ctx: AuthProviderConfigContext);
|
|
47
|
+
handleApiKeyCommand(): Promise<void>;
|
|
48
|
+
handleLoginCommand(text: string): Promise<void>;
|
|
49
|
+
ensureProviderConfiguredForSelection(model: AnyModel): Promise<boolean>;
|
|
50
|
+
handleProviderSelectionFromSelector(provider: string, done: () => void): Promise<void>;
|
|
51
|
+
showOAuthSelector(mode: "login" | "logout"): Promise<void>;
|
|
52
|
+
getLoginSelectorProviders(mode: "login" | "logout"): ProviderSelectorItem[];
|
|
53
|
+
private getStoredApiKey;
|
|
54
|
+
private resolveProviderId;
|
|
55
|
+
promptForProviderApiKey(provider: string, options?: {
|
|
56
|
+
title?: string;
|
|
57
|
+
}): Promise<boolean>;
|
|
58
|
+
private handleProviderCredentialsCommand;
|
|
59
|
+
private configureCustomProtocolProvider;
|
|
60
|
+
private refreshCurrentModelForProvider;
|
|
61
|
+
private selectConfiguredCustomProvider;
|
|
62
|
+
private showLoginDialog;
|
|
63
|
+
}
|
|
64
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var R=Object.defineProperty;var d=(w,e)=>R(w,"name",{value:e,configurable:!0});import{getOAuthProviders as l}from"@catui/ai/oauth";import{getAuthPath as K,getModelsPath as P}from"../../../config.js";import{getCustomProtocolProviderBaseUrl as I,getCustomProtocolProviderDefinition as k,getCustomProtocolProviderModelName as C,isCustomProtocolProvider as y,saveCustomProtocolProviderApiKey as E,saveCustomProtocolProviderConfig as L}from"../../../core/model/custom-providers.js";import{CATUI_ALI_TOKEN_PLAN_ANTHROPIC_PROVIDER as S,CATUI_ALI_TOKEN_PLAN_OPENAI_PROVIDER as v}from"../../../catui-defaults.js";import{LoginDialogComponent as M}from"../components/login-dialog.js";import{OAuthSelectorComponent as b}from"../components/oauth-selector.js";import{ProviderSelectorComponent as $}from"../components/provider-selector.js";class W{static{d(this,"AuthProviderConfigController")}ctx;constructor(e){this.ctx=e}async handleApiKeyCommand(){await this.handleProviderCredentialsCommand()}async handleLoginCommand(e){const r=e.startsWith("/login ")?e.slice(7).trim():"";if(!r){this.showOAuthSelector("login");return}const t=this.resolveProviderId(r);if(!t){this.ctx.surface.showError(`Unknown provider: ${r}`);return}const s=l().find(o=>o.id===t);if(s){await this.showLoginDialog(s.id);return}await this.promptForProviderApiKey(t,{title:`Set API key for ${t}`})}async ensureProviderConfiguredForSelection(e){return y(e.provider)?this.configureCustomProtocolProvider(e.provider):!await this.ctx.modelRegistry.getApiKey(e)&&!this.ctx.modelRegistry.isUsingOAuth(e)?this.promptForProviderApiKey(e.provider,{title:`API key for ${e.provider}`}):!0}async handleProviderSelectionFromSelector(e,r){if(r(),this.ctx.surface.requestRender(),!y(e)){this.ctx.modelBridge.showModelSelector(void 0,e);return}try{if(!await this.configureCustomProtocolProvider(e,{force:!0})){this.ctx.surface.showStatus("Configuration cancelled");return}await this.selectConfiguredCustomProvider(e)}catch(t){this.ctx.surface.showError(t instanceof Error?t.message:String(t))}}async showOAuthSelector(e){const r=this.getLoginSelectorProviders(e);if(r.length===0){this.ctx.surface.showStatus(e==="login"?"No providers available.":"No providers logged in. Use /login first.");return}this.ctx.surface.showSelector(t=>{const s=new b(e,r,async o=>{if(t(),e==="login")l().find(a=>a.id===o)?await this.showLoginDialog(o):await this.promptForProviderApiKey(o,{title:`Set API key for ${o}`});else{const a=l().find(c=>c.id===o)?.name||o;try{this.ctx.modelRegistry.authStorage.logout(o),this.ctx.modelRegistry.refresh(),await this.ctx.modelBridge.updateAvailableProviderCount(),this.ctx.surface.showStatus(`Logged out of ${a}`)}catch(c){this.ctx.surface.showError(`Logout failed: ${c instanceof Error?c.message:String(c)}`)}}},()=>{t(),this.ctx.surface.requestRender()},{title:e==="login"?"Select provider to login or configure:":"Select provider to logout:"});return{component:s,focus:s}})}getLoginSelectorProviders(e){const r=l().map(i=>({id:i.id,name:i.name,authType:"oauth",loggedIn:this.ctx.modelRegistry.authStorage.get(i.id)?.type==="oauth"}));if(e==="logout")return r.filter(i=>i.loggedIn);const t=[...r],s=new Set(t.map(i=>i.id)),o=[{id:"openrouter",name:"OpenRouter"}];for(const i of o)s.has(i.id)||t.push({id:i.id,name:i.name,authType:"api_key",loggedIn:!!this.getStoredApiKey(i.id)});return t}getStoredApiKey(e){const r=this.ctx.modelRegistry.authStorage.get(e);return r?.type==="api_key"?r.key:void 0}resolveProviderId(e){const r=e.trim().toLowerCase();if(!r)return;const t=new Map;for(const s of this.ctx.modelRegistry.getAll())t.set(s.provider.toLowerCase(),s.provider);for(const s of l())t.set(s.id.toLowerCase(),s.id);return t.get(r)}async promptForProviderApiKey(e,r={}){const t=this.getStoredApiKey(e),s=r.title??`Update API key for ${e}`,o=await this.ctx.surface.promptInput(s,"API key",{initialValue:t});if(o===void 0)return this.ctx.surface.showStatus("Configuration cancelled"),!1;const i=o.trim();return i?(this.ctx.modelRegistry.authStorage.set(e,{type:"api_key",key:i}),e===v?this.ctx.modelRegistry.authStorage.set(S,{type:"api_key",key:i}):e===S&&this.ctx.modelRegistry.authStorage.set(v,{type:"api_key",key:i}),this.ctx.modelRegistry.refresh(),this.ctx.surface.showStatus(`Updated API key for ${e}`),!0):(this.ctx.surface.showStatus("Configuration cancelled"),!1)}async handleProviderCredentialsCommand(){const e=this.ctx.modelBridge.getCurrentModel();if(!e){this.ctx.modelRegistry.refresh();const t=this.ctx.modelRegistry.getAll(),s=[...new Set(t.map(o=>o.provider))].sort();if(s.length===0){this.ctx.surface.showStatus("No providers available");return}this.ctx.surface.showSelector(o=>{const i=new $(s,void 0,a=>{o(),(async()=>(await this.promptForProviderApiKey(a,{title:`Set API key for ${a}`}),this.ctx.modelRegistry.refresh(),this.ctx.modelBridge.showModelSelector(void 0,a)))()},()=>{o(),this.ctx.surface.requestRender()});return{component:i,focus:i}});return}const r=e.provider;try{if(y(r)){await this.configureCustomProtocolProvider(r,{force:!0})||this.ctx.surface.showStatus("Configuration cancelled");return}await this.promptForProviderApiKey(r)}catch(t){this.ctx.surface.showError(t instanceof Error?t.message:String(t))}}async configureCustomProtocolProvider(e,r={}){const t=k(e),s=P(),o=this.ctx.modelRegistry.authStorage,i=I(s,e)??t.defaultBaseUrl,a=C(s,e)??"custom-model",c=this.getStoredApiKey(e)??"",h=o.has(e);if(!r.force&&h&&i.trim()&&a.trim())return!0;const f=await this.ctx.surface.promptInput(`${t.label} base URL`,t.defaultBaseUrl,{initialValue:i});if(f===void 0)return!1;const n=f.trim();if(!n)return this.ctx.surface.showError("Base URL cannot be empty."),!1;const u=await this.ctx.surface.promptInput(`${t.label} API key`,h&&r.force?"Leave empty to keep the current API key":"API key",{initialValue:c});if(u===void 0)return!1;const g=u.trim();if(!g&&!h)return this.ctx.surface.showError("API key cannot be empty."),!1;const x=await this.ctx.surface.promptInput(`${t.label} model name`,"Model name",{initialValue:a});if(x===void 0)return!1;const p=x.trim();if(!p)return this.ctx.surface.showError("Model name cannot be empty."),!1;const m=await L(s,e,{baseUrl:n,modelName:p,apiKey:g||void 0});if(g&&E(o,e,g),this.ctx.modelRegistry.refresh(),await this.refreshCurrentModelForProvider(e,p),m?.contextWindow){const A=m.contextWindow>=1e3?`${Math.round(m.contextWindow/1e3)}k`:String(m.contextWindow);this.ctx.surface.showStatus(`Saved ${t.label} configuration (context window: ${A})`)}else this.ctx.surface.showStatus(`Saved ${t.label} configuration`);return!0}async refreshCurrentModelForProvider(e,r){const t=this.ctx.modelBridge.getCurrentModel();if(!t||t.provider!==e)return;const s=(r?this.ctx.modelRegistry.find(t.provider,r):void 0)??this.ctx.modelRegistry.find(t.provider,t.id);s&&await this.ctx.modelBridge.setCurrentModel(s)}async selectConfiguredCustomProvider(e){this.ctx.modelRegistry.refresh();const r=C(P(),e);if(!r){this.ctx.surface.showError(`No model configured for ${e}`);return}const t=this.ctx.modelRegistry.find(e,r);if(!t){this.ctx.surface.showError(`Configured model not found for ${e}`);return}await this.ctx.modelBridge.applySelectedModel(t)}async showLoginDialog(e){const r=l().find(n=>n.id===e),t=r?.name||e,s=r?.usesCallbackServer??!1,o=new M(this.ctx.surface.getUi(),e,(n,u)=>{}),i=this.ctx.surface.getEditorContainer();i.clear(),i.addChild(o),this.ctx.surface.getUi().setFocus(o),this.ctx.surface.requestRender();let a,c;const h=new Promise((n,u)=>{a=n,c=u}),f=d(()=>{this.ctx.surface.remountEditorShell(),this.ctx.surface.getUi().setFocus(this.ctx.surface.getEditor()),this.ctx.surface.requestRender()},"restoreEditor");try{await this.ctx.modelRegistry.authStorage.login(e,{onAuth:d(n=>{o.showAuth(n.url,n.instructions),s?o.showManualInput("Paste redirect URL below, or complete login in browser:").then(u=>{u&&a&&(a(u),a=void 0)}).catch(()=>{c&&(c(new Error("Login cancelled")),c=void 0)}):e==="github-copilot"&&o.showWaiting("Waiting for browser authentication...")},"onAuth"),onPrompt:d(async n=>o.showPrompt(n.message,n.placeholder),"onPrompt"),onProgress:d(n=>{o.showProgress(n)},"onProgress"),onManualCodeInput:d(()=>h,"onManualCodeInput"),signal:o.signal}),f(),this.ctx.modelRegistry.refresh(),await this.ctx.modelBridge.updateAvailableProviderCount(),this.ctx.surface.showStatus(`Logged in to ${t}. Credentials saved to ${K()}`)}catch(n){f();const u=n instanceof Error?n.message:String(n);u!=="Login cancelled"&&this.ctx.surface.showError(`Failed to login to ${t}: ${u}`)}}}export{W as AuthProviderConfigController};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* [WHO]: Provides CustomOverlayHost, CustomOverlayContext — extension custom component (overlay/inline)
|
|
3
|
+
* [FROM]: Depends on @catui/tui (Component/Container/TUI/EditorComponent/OverlayOptions/OverlayHandle),
|
|
4
|
+
* theme, theme-contract (Theme), keybindings (KeybindingsManager)
|
|
5
|
+
* [TO]: Consumed by modes/interactive/interactive-mode.ts (held as `this.customOverlay`; wired into
|
|
6
|
+
* ExtensionUIContext.custom)
|
|
7
|
+
* [HERE]: modes/interactive/controllers/extension-ui/custom-overlay-host.ts — P5 extension-ui rewrite, host 3/4 (UI02, 纯搬)
|
|
8
|
+
*
|
|
9
|
+
* Owns ExtensionUIContext.custom: render an extension-provided component either as an overlay (on top,
|
|
10
|
+
* via ui.showOverlay) or inline (replacing the editor in the editor shell), saving/restoring the editor
|
|
11
|
+
* text. Per-call lifecycle (no persistent state). Reaches the editor-shell handles via a narrow context.
|
|
12
|
+
* Behavior is identical to the former InteractiveMode.showExtensionCustom (纯搬).
|
|
13
|
+
*/
|
|
14
|
+
import type { Component, Container, EditorComponent, OverlayHandle, OverlayOptions, TUI } from "@catui/tui";
|
|
15
|
+
import type { Theme } from "../../../../core/theme-contract.js";
|
|
16
|
+
import type { KeybindingsManager } from "../../../../core/platform/keybindings.js";
|
|
17
|
+
type DisposableComponent = Component & {
|
|
18
|
+
dispose?(): void;
|
|
19
|
+
};
|
|
20
|
+
/** Narrow capability seam: the editor-shell handles the custom component renders into. */
|
|
21
|
+
export interface CustomOverlayContext {
|
|
22
|
+
getEditor(): EditorComponent;
|
|
23
|
+
getUi(): TUI;
|
|
24
|
+
getEditorContainer(): Container;
|
|
25
|
+
getKeybindings(): KeybindingsManager;
|
|
26
|
+
remountEditorShell(): void;
|
|
27
|
+
}
|
|
28
|
+
export declare class CustomOverlayHost {
|
|
29
|
+
private readonly ctx;
|
|
30
|
+
constructor(ctx: CustomOverlayContext);
|
|
31
|
+
/** Show a custom component with keyboard focus. Overlay mode renders on top of existing content. */
|
|
32
|
+
show<T>(factory: (tui: TUI, thm: Theme, keybindings: KeybindingsManager, done: (result: T) => void) => DisposableComponent | Promise<DisposableComponent>, options?: {
|
|
33
|
+
overlay?: boolean;
|
|
34
|
+
overlayOptions?: OverlayOptions | (() => OverlayOptions);
|
|
35
|
+
onHandle?: (handle: OverlayHandle) => void;
|
|
36
|
+
}): Promise<T>;
|
|
37
|
+
}
|
|
38
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var O=Object.defineProperty;var i=(d,r)=>O(d,"name",{value:r,configurable:!0});import{theme as g}from"../../theme/theme.js";class E{static{i(this,"CustomOverlayHost")}ctx;constructor(r){this.ctx=r}async show(r,e){const t=this.ctx.getUi(),u=this.ctx.getEditor().getText(),l=e?.overlay??!1,a=i(()=>{this.ctx.remountEditorShell(),this.ctx.getEditor().setText(u),t.setFocus(this.ctx.getEditor()),t.requestRender()},"restoreEditor");return new Promise((f,x)=>{let s,n=!1;const y=i(o=>{if(!n){n=!0,l?t.hideOverlay():a(),f(o);try{s?.dispose?.()}catch{}}},"close");Promise.resolve(r(t,g,this.ctx.getKeybindings(),y)).then(o=>{if(!n)if(s=o,l){const c=i(()=>{if(e?.overlayOptions)return typeof e.overlayOptions=="function"?e.overlayOptions():e.overlayOptions;const h=s.width;return h?{width:h}:void 0},"resolveOptions"),v=t.showOverlay(s,c());e?.onHandle?.(v)}else{const c=this.ctx.getEditorContainer();c.clear(),c.addChild(s),t.setFocus(s),t.requestRender()}}).catch(o=>{n||(l||a(),x(o))})})}}export{E as CustomOverlayHost};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* [WHO]: Provides EditorComponentAdapter, EditorComponentContext — extension editor replacement
|
|
3
|
+
* [FROM]: Depends on @catui/tui (Component/Container/TUI/EditorComponent/EditorTheme/
|
|
4
|
+
* CombinedAutocompleteProvider), keybindings (KeybindingsManager), components (CustomEditor), theme
|
|
5
|
+
* [TO]: Consumed by modes/interactive/interactive-mode.ts (held as `this.editorAdapter`; wired into
|
|
6
|
+
* ExtensionUIContext.setEditorComponent; reset by resetExtensionUI)
|
|
7
|
+
* [HERE]: modes/interactive/controllers/extension-ui/editor-component-adapter.ts — P5 extension-ui rewrite, host 4/4 (UI02, 纯搬)
|
|
8
|
+
*
|
|
9
|
+
* Owns ExtensionUIContext.setEditorComponent: swap the active editor for an extension-provided one
|
|
10
|
+
* (or restore the default), preserving text, submit/change callbacks, appearance, autocomplete, and —
|
|
11
|
+
* for CustomEditor subclasses — the app-level key/action handlers. The active editor reference is
|
|
12
|
+
* mount state, so the adapter reads/writes it through the context (getEditor/setEditor). Behavior is
|
|
13
|
+
* identical to the former InteractiveMode.setCustomEditorComponent (纯搬).
|
|
14
|
+
*/
|
|
15
|
+
import type { CombinedAutocompleteProvider, Container, EditorComponent, EditorTheme, TUI } from "@catui/tui";
|
|
16
|
+
import type { KeybindingsManager } from "../../../../core/platform/keybindings.js";
|
|
17
|
+
import type { CustomEditor } from "../../components/custom-editor.js";
|
|
18
|
+
/** Narrow capability seam: the active-editor reference + editor-shell the adapter swaps. */
|
|
19
|
+
export interface EditorComponentContext {
|
|
20
|
+
getEditor(): EditorComponent;
|
|
21
|
+
/** Swap the active editor reference (mount state). */
|
|
22
|
+
setEditor(editor: EditorComponent): void;
|
|
23
|
+
getDefaultEditor(): CustomEditor;
|
|
24
|
+
getEditorContainer(): Container;
|
|
25
|
+
getUi(): TUI;
|
|
26
|
+
getKeybindings(): KeybindingsManager;
|
|
27
|
+
getAutocompleteProvider(): CombinedAutocompleteProvider | undefined;
|
|
28
|
+
remountEditorShell(): void;
|
|
29
|
+
}
|
|
30
|
+
export declare class EditorComponentAdapter {
|
|
31
|
+
private readonly ctx;
|
|
32
|
+
constructor(ctx: EditorComponentContext);
|
|
33
|
+
/**
|
|
34
|
+
* Set a custom editor component from an extension. Pass undefined to restore the default editor.
|
|
35
|
+
*/
|
|
36
|
+
setComponent(factory: ((tui: TUI, theme: EditorTheme, keybindings: KeybindingsManager) => EditorComponent) | undefined): void;
|
|
37
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var u=Object.defineProperty;var l=(s,r)=>u(s,"name",{value:r,configurable:!0});import{getEditorTheme as E}from"../../theme/theme.js";class p{static{l(this,"EditorComponentAdapter")}ctx;constructor(r){this.ctx=r}setComponent(r){const e=this.ctx,c=e.getEditor().getText();e.getEditorContainer().clear();let i;if(r){const t=e.getDefaultEditor(),o=r(e.getUi(),E(),e.getKeybindings());o.onSubmit=t.onSubmit,o.onChange=t.onChange,o.setText(c),o.borderColor!==void 0&&(o.borderColor=t.borderColor),o.setPaddingX!==void 0&&o.setPaddingX(t.getPaddingX());const a=e.getAutocompleteProvider();o.setAutocompleteProvider&&a&&o.setAutocompleteProvider(a);const n=o;if("actionHandlers"in n&&n.actionHandlers instanceof Map){n.onEscape=()=>t.onEscape?.(),n.onCtrlD=()=>t.onCtrlD?.(),n.onPasteImage=()=>t.onPasteImage?.(),n.onExtensionShortcut=d=>t.onExtensionShortcut?.(d);for(const[d,g]of t.actionHandlers)n.actionHandlers.set(d,g)}i=o}else{const t=e.getDefaultEditor();t.setText(c),i=t}e.setEditor(i),e.remountEditorShell(),e.getUi().setFocus(i),e.getUi().requestRender()}}export{p as EditorComponentAdapter};
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* [WHO]: Provides PersistentSurfaceRegistry, PersistentSurfaceContext — extension keyed persistent surfaces
|
|
3
|
+
* [FROM]: Depends on @catui/tui (Container/Component/Text/Spacer/TUI), theme, theme-contract (Theme),
|
|
4
|
+
* extensions-host (ExtensionWidgetOptions), footer-data-provider (FooterDataProvider) — types
|
|
5
|
+
* [TO]: Consumed by modes/interactive/interactive-mode.ts (held as `this.surfaces`; wired into ExtensionUIContext
|
|
6
|
+
* setWidget/setFooter/setHeader/setStatus; called by resetExtensionUI + syncBuddyPet)
|
|
7
|
+
* [HERE]: modes/interactive/controllers/extension-ui/persistent-surface-registry.ts — P5 extension-ui rewrite, host 1/4 (UI02, 纯搬)
|
|
8
|
+
*
|
|
9
|
+
* First extension-ui host (see ../../../.dev-docs/architecture-review/interactive-ui-review/extension-ui-analysis.md).
|
|
10
|
+
* Owns the *keyed persistent surfaces* an extension can set: above/below widgets, custom footer, custom
|
|
11
|
+
* header, and footer status. The mount-owned layout containers (widget containers, header container,
|
|
12
|
+
* built-in header/footer, footer data provider, TUI) are reached through a narrow context. Behavior is
|
|
13
|
+
* identical to the former InteractiveMode methods (纯搬).
|
|
14
|
+
*/
|
|
15
|
+
import { type Component, Container, type TUI } from "@catui/tui";
|
|
16
|
+
import type { ExtensionWidgetOptions } from "../../../../core/extensions-host/index.js";
|
|
17
|
+
import type { Theme } from "../../../../core/theme-contract.js";
|
|
18
|
+
import type { FooterDataProvider } from "../../footer-data-provider.js";
|
|
19
|
+
type DisposableComponent = Component & {
|
|
20
|
+
dispose?(): void;
|
|
21
|
+
};
|
|
22
|
+
/** Narrow capability seam: the mount-owned layout/render handles the surfaces manipulate. */
|
|
23
|
+
export interface PersistentSurfaceContext {
|
|
24
|
+
requestRender(): void;
|
|
25
|
+
getUi(): TUI;
|
|
26
|
+
getWidgetContainerAbove(): Container | undefined;
|
|
27
|
+
getWidgetContainerBelow(): Container | undefined;
|
|
28
|
+
getHeaderContainer(): Container;
|
|
29
|
+
getBuiltInHeader(): Component | undefined;
|
|
30
|
+
/** The built-in footer component (swapped out when a custom footer is set). */
|
|
31
|
+
getFooter(): Component;
|
|
32
|
+
getFooterDataProvider(): FooterDataProvider;
|
|
33
|
+
}
|
|
34
|
+
export declare class PersistentSurfaceRegistry {
|
|
35
|
+
private readonly ctx;
|
|
36
|
+
private readonly widgetsAbove;
|
|
37
|
+
private readonly widgetsBelow;
|
|
38
|
+
private customFooter;
|
|
39
|
+
private customHeader;
|
|
40
|
+
constructor(ctx: PersistentSurfaceContext);
|
|
41
|
+
setStatus(key: string, text: string | undefined): void;
|
|
42
|
+
/** Set an extension widget (string array or custom component). */
|
|
43
|
+
setWidget(key: string, content: string[] | ((tui: TUI, thm: Theme) => DisposableComponent) | undefined, options?: ExtensionWidgetOptions): void;
|
|
44
|
+
clearWidgets(): void;
|
|
45
|
+
/** Render all extension widgets to the widget containers. */
|
|
46
|
+
renderWidgets(): void;
|
|
47
|
+
private renderWidgetContainer;
|
|
48
|
+
/** Set a custom footer component, or restore the built-in footer. */
|
|
49
|
+
setFooter(factory: ((tui: TUI, thm: Theme, footerData: FooterDataProvider) => DisposableComponent) | undefined): void;
|
|
50
|
+
/** Set a custom header component, or restore the built-in header. */
|
|
51
|
+
setHeader(factory: ((tui: TUI, thm: Theme) => DisposableComponent) | undefined): void;
|
|
52
|
+
}
|
|
53
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var f=Object.defineProperty;var h=(a,e)=>f(a,"name",{value:e,configurable:!0});import{Container as w,Spacer as l,Text as u}from"@catui/tui";import{theme as c}from"../../theme/theme.js";const g=10;class C{static{h(this,"PersistentSurfaceRegistry")}ctx;widgetsAbove=new Map;widgetsBelow=new Map;customFooter=void 0;customHeader=void 0;constructor(e){this.ctx=e}setStatus(e,t){this.ctx.getFooterDataProvider().setExtensionStatus(e,t),this.ctx.requestRender()}setWidget(e,t,o){const s=o?.placement??"aboveEditor",d=h(r=>{const n=r.get(e);n?.dispose&&n.dispose(),r.delete(e)},"removeExisting");if(d(this.widgetsAbove),d(this.widgetsBelow),t===void 0){this.renderWidgets();return}let i;if(Array.isArray(t)){const r=new w;for(const n of t.slice(0,g))r.addChild(new u(n,1,0));t.length>g&&r.addChild(new u(c.fg("muted","... (widget truncated)"),1,0)),i=r}else i=t(this.ctx.getUi(),c);(s==="belowEditor"?this.widgetsBelow:this.widgetsAbove).set(e,i),this.renderWidgets()}clearWidgets(){for(const e of this.widgetsAbove.values())e.dispose?.();for(const e of this.widgetsBelow.values())e.dispose?.();this.widgetsAbove.clear(),this.widgetsBelow.clear(),this.renderWidgets()}renderWidgets(){const e=this.ctx.getWidgetContainerAbove(),t=this.ctx.getWidgetContainerBelow();!e||!t||(this.renderWidgetContainer(e,this.widgetsAbove,!0,!0),this.renderWidgetContainer(t,this.widgetsBelow,!1,!1),this.ctx.requestRender())}renderWidgetContainer(e,t,o,s){if(e.clear(),t.size===0){o&&e.addChild(new l(1));return}s&&e.addChild(new l(1));for(const d of t.values())e.addChild(d)}setFooter(e){const t=this.ctx.getUi();this.customFooter?.dispose&&this.customFooter.dispose(),this.customFooter?t.removeChild(this.customFooter):t.removeChild(this.ctx.getFooter()),e?(this.customFooter=e(t,c,this.ctx.getFooterDataProvider()),t.addChild(this.customFooter)):(this.customFooter=void 0,t.addChild(this.ctx.getFooter())),t.requestRender()}setHeader(e){const t=this.ctx.getBuiltInHeader();if(!t)return;const o=this.ctx.getUi(),s=this.ctx.getHeaderContainer();this.customHeader?.dispose&&this.customHeader.dispose();const d=this.customHeader||t,i=s.children.indexOf(d);e?(this.customHeader=e(o,c),i!==-1?s.children[i]=this.customHeader:s.children.unshift(this.customHeader)):(this.customHeader=void 0,i!==-1&&(s.children[i]=t)),o.requestRender()}}export{C as PersistentSurfaceRegistry};
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* [WHO]: Provides PromptHost, PromptHostContext — single-active-prompt slot for extension dialogs
|
|
3
|
+
* [FROM]: Depends on @catui/tui (Component/Container/TUI), keybindings (KeybindingsManager),
|
|
4
|
+
* extensions-host (ExtensionUIDialogOptions), components (Extension{Selector,Input,Editor}Component)
|
|
5
|
+
* [TO]: Consumed by modes/interactive/interactive-mode.ts (held as `this.promptHost`; wired into
|
|
6
|
+
* ExtensionUIContext select/confirm/input/editor; focus restore called by handleEvent + resetExtensionUI)
|
|
7
|
+
* [HERE]: modes/interactive/controllers/extension-ui/prompt-host.ts — P5 extension-ui rewrite, host 2/4 (UI02, 重写)
|
|
8
|
+
*
|
|
9
|
+
* Rewrite of the three byte-identical show/hide/dismiss lifecycles (selector / input / editor) into a
|
|
10
|
+
* single "active prompt" slot (see extension-ui-analysis.md §3, rewrite-acceptance.md). The three prompt
|
|
11
|
+
* types are now thin builders plugged into one generic `show` that owns the shared skeleton: abort
|
|
12
|
+
* handling, single-active-prompt invariant, mount-into-editor-shell + focus, and dismiss → dispose +
|
|
13
|
+
* remount + restore focus. NOT a generic overlay stack — there is one slot (no nesting need today).
|
|
14
|
+
* Behavior of select/confirm/input/editor is identical to the former InteractiveMode methods.
|
|
15
|
+
*/
|
|
16
|
+
import type { Component, Container, TUI } from "@catui/tui";
|
|
17
|
+
import type { ExtensionUIDialogOptions } from "../../../../core/extensions-host/index.js";
|
|
18
|
+
import type { KeybindingsManager } from "../../../../core/platform/keybindings.js";
|
|
19
|
+
/** Narrow capability seam: the editor-shell handles the prompt slot mounts into. */
|
|
20
|
+
export interface PromptHostContext {
|
|
21
|
+
getEditorContainer(): Container;
|
|
22
|
+
getUi(): TUI;
|
|
23
|
+
/** The editor component (focused when the prompt is dismissed and the shell is mounted). */
|
|
24
|
+
getEditor(): Component;
|
|
25
|
+
/** The editor/buddy layout node — its presence means the editor shell is mounted. */
|
|
26
|
+
getEditorBuddyLayout(): Component;
|
|
27
|
+
getKeybindings(): KeybindingsManager;
|
|
28
|
+
/** Rebuild the editor shell (attachments bar + editor row) after a prompt is removed. */
|
|
29
|
+
remountEditorShell(): void;
|
|
30
|
+
}
|
|
31
|
+
export declare class PromptHost {
|
|
32
|
+
private readonly ctx;
|
|
33
|
+
private active;
|
|
34
|
+
constructor(ctx: PromptHostContext);
|
|
35
|
+
hasActivePrompt(): boolean;
|
|
36
|
+
/** Focus the editor when no prompt is active and the editor shell is mounted. */
|
|
37
|
+
restoreEditorFocusIfPossible(): void;
|
|
38
|
+
/** Dismiss the active prompt (dispose + remount editor shell + restore focus + render). */
|
|
39
|
+
dismiss(restoreFocus?: boolean): void;
|
|
40
|
+
selector(title: string, options: string[], opts?: ExtensionUIDialogOptions): Promise<string | undefined>;
|
|
41
|
+
confirm(title: string, message: string, opts?: ExtensionUIDialogOptions): Promise<boolean>;
|
|
42
|
+
input(title: string, placeholder?: string, opts?: ExtensionUIDialogOptions): Promise<string | undefined>;
|
|
43
|
+
editor(title: string, prefill?: string): Promise<string | undefined>;
|
|
44
|
+
/**
|
|
45
|
+
* Show one prompt as the single active slot. `build` receives a `settle` callback
|
|
46
|
+
* to resolve the promise (with the chosen value, or undefined on cancel/abort);
|
|
47
|
+
* it must wire that into the component's submit/cancel callbacks.
|
|
48
|
+
*/
|
|
49
|
+
private show;
|
|
50
|
+
private mount;
|
|
51
|
+
private clear;
|
|
52
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var d=Object.defineProperty;var n=(o,t)=>d(o,"name",{value:t,configurable:!0});import{ExtensionEditorComponent as h}from"../../components/extension-editor.js";import{ExtensionInputComponent as a}from"../../components/extension-input.js";import{ExtensionSelectorComponent as f}from"../../components/extension-selector.js";class E{static{n(this,"PromptHost")}ctx;active=void 0;constructor(t){this.ctx=t}hasActivePrompt(){return!!this.active}restoreEditorFocusIfPossible(){if(this.active)return;this.ctx.getEditorContainer().children.includes(this.ctx.getEditorBuddyLayout())&&this.ctx.getUi().setFocus(this.ctx.getEditor())}dismiss(t=!0){this.clear(t),this.ctx.getUi().requestRender()}selector(t,e,i){return this.show(s=>new f(t,e,r=>s(r),()=>s(void 0),{tui:this.ctx.getUi(),timeout:i?.timeout}),i?.signal)}async confirm(t,e,i){return await this.selector(`${t}
|
|
2
|
+
${e}`,["Yes","No"],i)==="Yes"}input(t,e,i){return this.show(s=>new a(t,e,r=>s(r),()=>s(void 0),{tui:this.ctx.getUi(),timeout:i?.timeout,initialValue:i?.initialValue}),i?.signal)}editor(t,e){return this.show(i=>new h(this.ctx.getUi(),this.ctx.getKeybindings(),t,e,s=>i(s),()=>i(void 0)))}show(t,e){return new Promise(i=>{if(e?.aborted){i(void 0);return}let s=!1;const r=n(u=>{s||(s=!0,e?.removeEventListener("abort",c),this.dismiss(),i(u))},"finish"),c=n(()=>r(void 0),"onAbort");e?.addEventListener("abort",c,{once:!0}),this.clear(!1),this.mount(t(r))})}mount(t){this.active=t;const e=this.ctx.getEditorContainer();e.clear(),e.addChild(t),this.ctx.getUi().setFocus(t),this.ctx.getUi().requestRender()}clear(t){this.active&&(this.active.dispose?.(),this.active=void 0,this.ctx.remountEditorShell()),t&&this.restoreEditorFocusIfPossible()}}export{E as PromptHost};
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* [WHO]: Provides ImagePipelineController, ImagePipelineContext, Attachment — clipboard/attachment/image handling
|
|
3
|
+
* [FROM]: Depends on @catui/tui (Container/Component/matchesKey), @catui/ai (ImageContent),
|
|
4
|
+
* modes/utils (clipboard-image, image-resize), utils/mime, components/attachments-bar, theme
|
|
5
|
+
* [TO]: Consumed by modes/interactive/interactive-mode.ts (constructs one, delegates paste/attachment/image methods)
|
|
6
|
+
* [HERE]: modes/interactive/controllers/image-pipeline-controller.ts — first P5 UI slice (UI02, 纯搬)
|
|
7
|
+
*
|
|
8
|
+
* Extracted from InteractiveMode (P5 image-pipeline). Owns clipboard image paste, the attachments
|
|
9
|
+
* bar state, attachment key navigation, and text→image extraction. Reads the editor-shell layout and
|
|
10
|
+
* mount capabilities through a narrow ImagePipelineContext (no InteractiveMode reference). Behavior is
|
|
11
|
+
* identical to the former InteractiveMode methods.
|
|
12
|
+
*/
|
|
13
|
+
import type { ImageContent } from "@catui/ai/types";
|
|
14
|
+
import { type Component, Container } from "@catui/tui";
|
|
15
|
+
export interface Attachment {
|
|
16
|
+
path: string;
|
|
17
|
+
mimeType?: string;
|
|
18
|
+
bytes?: Uint8Array;
|
|
19
|
+
}
|
|
20
|
+
/** Narrow capability seam: mount/render capabilities the image pipeline needs, no InteractiveMode. */
|
|
21
|
+
export interface ImagePipelineContext {
|
|
22
|
+
/** Current working directory (where clipboard images are written). */
|
|
23
|
+
getCwd(): string;
|
|
24
|
+
/** Request a TUI re-render. */
|
|
25
|
+
requestRender(): void;
|
|
26
|
+
/** Show a transient status line. */
|
|
27
|
+
showStatus(message: string): void;
|
|
28
|
+
/** Active theme name (for the attachments bar). */
|
|
29
|
+
getThemeName(): string | undefined;
|
|
30
|
+
/**
|
|
31
|
+
* Whether the editor cursor is on the first (visual) line, so ↑ has nowhere to
|
|
32
|
+
* move the cursor up — that's when ↑ should enter the attachments bar instead.
|
|
33
|
+
* With multi-line text below the first line, ↑ keeps moving the cursor.
|
|
34
|
+
*/
|
|
35
|
+
isEditorCursorAtTop(): boolean;
|
|
36
|
+
/** The editor shell container that hosts the attachments bar. */
|
|
37
|
+
getEditorContainer(): Container;
|
|
38
|
+
/** The container the attachments bar is mounted into. */
|
|
39
|
+
getAttachmentsContainer(): Container | undefined;
|
|
40
|
+
/** The editor/buddy layout node the attachments bar is placed before. */
|
|
41
|
+
getEditorBuddyLayout(): Component;
|
|
42
|
+
}
|
|
43
|
+
export declare class ImagePipelineController {
|
|
44
|
+
private readonly ctx;
|
|
45
|
+
private clipboardImageSeq;
|
|
46
|
+
private clipboardImageFiles;
|
|
47
|
+
private clipboardPastePromise;
|
|
48
|
+
private attachments;
|
|
49
|
+
private selectedAttachmentIndex;
|
|
50
|
+
private attachmentsBar;
|
|
51
|
+
constructor(ctx: ImagePipelineContext);
|
|
52
|
+
/** Await any in-flight clipboard paste so a rapid Enter still waits for attachment registration. */
|
|
53
|
+
awaitPendingPaste(): Promise<void>;
|
|
54
|
+
/** Whether there are pending attachments (for editor-shell remount). */
|
|
55
|
+
hasAttachments(): boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Take all pending attachments (clears the bar, resets selection + sequence).
|
|
58
|
+
* Returns [] without side effects when empty. Used by the submit pipeline.
|
|
59
|
+
*/
|
|
60
|
+
takePendingAttachments(): Attachment[];
|
|
61
|
+
/**
|
|
62
|
+
* Discard attachments and their on-disk clipboard files — used on turn end and
|
|
63
|
+
* session new/switch/fork/tree. Deleting the files (not just the in-memory list)
|
|
64
|
+
* is what prevents a new paste from reusing a stale path: the sequence restarts
|
|
65
|
+
* at 1, so without deleting `_np_clipboard_image_1.png` the next paste would
|
|
66
|
+
* collide with the previous image's filename. Sent images already live in the
|
|
67
|
+
* model context; the on-disk copies are only scratch.
|
|
68
|
+
*/
|
|
69
|
+
clearAttachments(): void;
|
|
70
|
+
handleClipboardImagePaste(): void;
|
|
71
|
+
/**
|
|
72
|
+
* Arrow/Delete handling for the attachments bar. The editor offers these keys
|
|
73
|
+
* here before its own cursor/history handling.
|
|
74
|
+
*
|
|
75
|
+
* Model: the bar sits above the editor.
|
|
76
|
+
* - ↑ from the editor (only when the editor is empty, so ↑ would otherwise browse
|
|
77
|
+
* history) ENTERS the bar at the last (most recent) attachment.
|
|
78
|
+
* - Inside the bar, ↑/↓ move the selection; stepping past the top/bottom leaves
|
|
79
|
+
* the bar (returns false so the editor handles the key, e.g. history).
|
|
80
|
+
* - Delete/Backspace removes the selected attachment.
|
|
81
|
+
* This works for a single attachment too (the previous code only intercepted when
|
|
82
|
+
* there were 2+, so one image could never be selected/deleted by keyboard).
|
|
83
|
+
*/
|
|
84
|
+
handleAttachmentKeyNavigation(data: string): boolean;
|
|
85
|
+
private setSelectedIndex;
|
|
86
|
+
/**
|
|
87
|
+
* Convert attachment files to ImageContent array for sending to the model.
|
|
88
|
+
* Prefers in-memory bytes (clipboard) then falls back to disk read.
|
|
89
|
+
*/
|
|
90
|
+
processAttachmentFiles(attachments: Attachment[]): Promise<ImageContent[]>;
|
|
91
|
+
/**
|
|
92
|
+
* Extract image file paths from text, read them as base64 ImageContent,
|
|
93
|
+
* and return the cleaned text with image references plus the image array.
|
|
94
|
+
*/
|
|
95
|
+
extractImagesFromText(text: string): Promise<{
|
|
96
|
+
text: string;
|
|
97
|
+
images: ImageContent[];
|
|
98
|
+
}>;
|
|
99
|
+
cleanupStaleClipboardFiles(): void;
|
|
100
|
+
cleanupClipboardImages(): void;
|
|
101
|
+
/** Chain clipboard work so rapid Enter after paste still waits for attachment registration. */
|
|
102
|
+
private enqueueClipboardPaste;
|
|
103
|
+
private loadClipboardImageIntoAttachments;
|
|
104
|
+
private deleteAttachment;
|
|
105
|
+
private updateAttachmentsBar;
|
|
106
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var I=Object.defineProperty;var l=(u,t)=>I(u,"name",{value:t,configurable:!0});import{matchesKey as o}from"@catui/tui";import{detectSupportedImageMimeTypeFromFile as p}from"../../../utils/mime.js";import{extensionForImageMimeType as A,readClipboardImage as S}from"../../utils/clipboard-image.js";import{formatDimensionNote as w,resizeImage as g}from"../../utils/image-resize.js";import{AttachmentsBarComponent as C}from"../components/attachments-bar.js";import{getThemeByName as y}from"../theme/theme.js";import*as i from"node:fs";import*as P from"node:os";import*as m from"node:path";class M{static{l(this,"ImagePipelineController")}ctx;clipboardImageSeq=0;clipboardImageFiles=[];clipboardPastePromise=Promise.resolve();attachments=[];selectedAttachmentIndex=-1;attachmentsBar=void 0;constructor(t){this.ctx=t}async awaitPendingPaste(){await this.clipboardPastePromise}hasAttachments(){return this.attachments.length>0}takePendingAttachments(){if(this.attachments.length===0)return[];const t=this.attachments.splice(0);return this.selectedAttachmentIndex=-1,this.clipboardImageSeq=0,this.updateAttachmentsBar(),this.ctx.requestRender(),t}clearAttachments(){const t=this.attachments.length>0;this.attachments=[],this.selectedAttachmentIndex=-1,this.clipboardImageSeq=0,this.cleanupClipboardImages(),t&&this.updateAttachmentsBar(),this.ctx.requestRender()}handleClipboardImagePaste(){this.enqueueClipboardPaste(()=>this.loadClipboardImageIntoAttachments())}handleAttachmentKeyNavigation(t){if(this.attachments.length===0)return!1;const e=this.selectedAttachmentIndex>=0;return o(t,"up")?e?this.selectedAttachmentIndex>0?(this.setSelectedIndex(this.selectedAttachmentIndex-1),!0):(this.setSelectedIndex(-1),!1):this.ctx.isEditorCursorAtTop()?(this.setSelectedIndex(this.attachments.length-1),!0):!1:o(t,"down")?e?this.selectedAttachmentIndex<this.attachments.length-1?(this.setSelectedIndex(this.selectedAttachmentIndex+1),!0):(this.setSelectedIndex(-1),!1):!1:e&&(o(t,"delete")||o(t,"backspace"))?(this.deleteAttachment(this.selectedAttachmentIndex),!0):!1}setSelectedIndex(t){this.selectedAttachmentIndex=t,this.updateAttachmentsBar(),this.ctx.requestRender()}async processAttachmentFiles(t){const e=new Set(["image/png","image/jpeg","image/gif","image/webp"]),c=l(a=>{if(!a)return null;const s=a.split(";")[0]?.trim().toLowerCase()??"";return e.has(s)?s:null},"normalizedMime"),r=[];for(const a of t)try{let s=c(a.mimeType),n;if(a.bytes&&a.bytes.length>0)n=Buffer.from(a.bytes).toString("base64"),s||(s=i.existsSync(a.path)?await p(a.path):null);else{if(!i.existsSync(a.path)||(s=s??await p(a.path),!s))continue;n=i.readFileSync(a.path).toString("base64")}if(!s)continue;const h=await g({type:"image",data:n,mimeType:s});r.push({type:"image",mimeType:h.mimeType,data:h.data})}catch(s){const n=s instanceof Error?s.message:"Unknown error";console.warn(`[Attachments] Skipped unreadable file ${a.path}: ${n}`)}return r}async extractImagesFromText(t){const e=[],c=P.tmpdir(),r=new RegExp(`${c.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}[/\\\\]catui-clipboard-[a-f0-9-]+\\.(?:png|jpg|jpeg|gif|webp)`,"gi"),a=t.match(r);if(!a)return{text:t,images:e};let s=t;for(const n of a)try{if(!i.existsSync(n))continue;const h=await p(n);if(!h)continue;const b=i.readFileSync(n).toString("base64"),d=await g({type:"image",data:b,mimeType:h}),f=w(d);e.push({type:"image",mimeType:d.mimeType,data:d.data});const x=f?`[image: ${m.basename(n)}] ${f}`:`[image: ${m.basename(n)}]`;s=s.replace(n,x)}catch{}return{text:s,images:e}}cleanupStaleClipboardFiles(){try{const t=this.ctx.getCwd();for(const e of i.readdirSync(t))if(/^_clipboard_\d+\.\w+$/.test(e)||/^_np_clipboard_image_\d+\.\w+$/.test(e))try{i.unlinkSync(m.join(t,e))}catch{}}catch{}}cleanupClipboardImages(){for(const t of this.clipboardImageFiles)try{i.existsSync(t)&&i.unlinkSync(t)}catch{}this.clipboardImageFiles=[]}enqueueClipboardPaste(t){this.clipboardPastePromise=this.clipboardPastePromise.catch(()=>{}).then(()=>t()).catch(()=>{})}async loadClipboardImageIntoAttachments(){try{const t=await S();if(!t)return;const e=A(t.mimeType)??"png",r=`_np_clipboard_image_${++this.clipboardImageSeq}.${e}`,a=m.join(this.ctx.getCwd(),r);i.writeFileSync(a,Buffer.from(t.bytes)),this.clipboardImageFiles.push(a),this.attachments.push({path:a,mimeType:t.mimeType,bytes:Uint8Array.from(t.bytes)}),this.updateAttachmentsBar();const s=Math.round(t.bytes.length/1024);this.ctx.showStatus(`Image pasted (${s} KB). Press Enter to send, \u2191\u2193 Del to manage.`),this.ctx.requestRender()}catch(t){const e=t instanceof Error?t.message:"Unknown error";this.ctx.showStatus(`Clipboard paste failed: ${e}`),this.ctx.requestRender()}}deleteAttachment(t){if(t<0||t>=this.attachments.length)return;const e=this.attachments[t];try{i.unlinkSync(e.path)}catch{}this.attachments.splice(t,1),this.selectedAttachmentIndex>=this.attachments.length&&(this.selectedAttachmentIndex=this.attachments.length-1),this.updateAttachmentsBar(),this.ctx.requestRender()}updateAttachmentsBar(){const t=this.ctx.getAttachmentsContainer();if(!t)return;const e=this.ctx.getEditorContainer();if(t.clear(),this.attachments.length===0){this.attachmentsBar=void 0,e.removeChild(t);return}if(!e.children.includes(t)){const a=e.children.indexOf(this.ctx.getEditorBuddyLayout());a>=0?e.children.splice(a,0,t):e.addChild(t)}const c=this.ctx.getThemeName(),r=y(c||"dark")??y("dark");this.attachmentsBar=new C(this.attachments,this.selectedAttachmentIndex,r),t.addChild(this.attachmentsBar)}}export{M as ImagePipelineController};
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* [WHO]: Provides InputSubmitController + InputSubmitContext — editor submit pipeline orchestration
|
|
3
|
+
* [FROM]: Depends on @catui/ai content types, AgentSession prompt options, image pipeline attachment type
|
|
4
|
+
* [TO]: Consumed by modes/interactive/interactive-mode.ts as the default editor onSubmit handler
|
|
5
|
+
* [HERE]: modes/interactive/controllers/input-submit-controller.ts — P5 input-submit slice (UI06, rewrite)
|
|
6
|
+
*
|
|
7
|
+
* Owns submit classification and ordering only. Slash dispatch, image/attachment processing, bash execution,
|
|
8
|
+
* session prompt/steer, and rendering details are delegated through ports.
|
|
9
|
+
*/
|
|
10
|
+
import type { ImageContent, Model, TextContent } from "@catui/ai/types";
|
|
11
|
+
import type { PromptOptions } from "../../../core/runtime/agent-session.js";
|
|
12
|
+
import type { Attachment } from "./image-pipeline-controller.js";
|
|
13
|
+
type AnyModel = Model<any>;
|
|
14
|
+
export interface InputSubmitEditorPort {
|
|
15
|
+
setText(text: string): void;
|
|
16
|
+
addToHistory(text: string): void;
|
|
17
|
+
handleExternalInput(text: string): boolean;
|
|
18
|
+
setBashMode(enabled: boolean): void;
|
|
19
|
+
updateBorderColor(): void;
|
|
20
|
+
}
|
|
21
|
+
export interface InputSubmitSlashPort {
|
|
22
|
+
execute(text: string): Promise<boolean>;
|
|
23
|
+
}
|
|
24
|
+
export interface InputSubmitImagePort {
|
|
25
|
+
awaitPendingPaste(): Promise<void>;
|
|
26
|
+
extractImagesFromText(text: string): Promise<{
|
|
27
|
+
text: string;
|
|
28
|
+
images: ImageContent[];
|
|
29
|
+
}>;
|
|
30
|
+
takePendingAttachments(): Attachment[];
|
|
31
|
+
processAttachmentFiles(attachments: Attachment[]): Promise<ImageContent[]>;
|
|
32
|
+
cleanupClipboardImages(): void;
|
|
33
|
+
}
|
|
34
|
+
export interface InputSubmitSessionPort {
|
|
35
|
+
isBashRunning(): boolean;
|
|
36
|
+
isCompacting(): boolean;
|
|
37
|
+
isStreaming(): boolean;
|
|
38
|
+
getModel(): AnyModel | undefined;
|
|
39
|
+
getCwd(): string;
|
|
40
|
+
promptAfterRender(text: string, options?: PromptOptions): Promise<void>;
|
|
41
|
+
queueCompactionMessage(text: string, mode: "steer" | "followUp"): void;
|
|
42
|
+
}
|
|
43
|
+
export interface InputSubmitCommandPort {
|
|
44
|
+
isExtensionCommand(text: string): boolean;
|
|
45
|
+
handlePersonaCommand(text: string): Promise<void>;
|
|
46
|
+
handleBashCommand(command: string, excludeFromContext: boolean): Promise<void>;
|
|
47
|
+
}
|
|
48
|
+
export interface InputSubmitRenderPort {
|
|
49
|
+
showStatus(message: string): void;
|
|
50
|
+
showWarning(message: string): void;
|
|
51
|
+
showError(message: string): void;
|
|
52
|
+
notify(message: string, options?: {
|
|
53
|
+
key?: string;
|
|
54
|
+
priority?: "immediate" | "high" | "medium" | "low";
|
|
55
|
+
type?: "info" | "warning" | "error";
|
|
56
|
+
duration?: number;
|
|
57
|
+
}): void;
|
|
58
|
+
requestRender(): void;
|
|
59
|
+
flushPendingBashComponents(): void;
|
|
60
|
+
updatePendingMessagesDisplay(): void;
|
|
61
|
+
addOptimisticUserMessage(text: string, content: Array<TextContent | ImageContent>): void;
|
|
62
|
+
rollbackFirstOptimisticUserMessageIfMatches(text: string): void;
|
|
63
|
+
}
|
|
64
|
+
export interface InputSubmitContext {
|
|
65
|
+
editor: InputSubmitEditorPort;
|
|
66
|
+
slash: InputSubmitSlashPort;
|
|
67
|
+
image: InputSubmitImagePort;
|
|
68
|
+
session: InputSubmitSessionPort;
|
|
69
|
+
commands: InputSubmitCommandPort;
|
|
70
|
+
render: InputSubmitRenderPort;
|
|
71
|
+
}
|
|
72
|
+
export declare class InputSubmitController {
|
|
73
|
+
private readonly ctx;
|
|
74
|
+
constructor(ctx: InputSubmitContext);
|
|
75
|
+
handleSubmit(rawText: string): Promise<void>;
|
|
76
|
+
private handleStreamingSubmit;
|
|
77
|
+
private handleIdleSubmit;
|
|
78
|
+
private imageSupportSuggestion;
|
|
79
|
+
}
|
|
80
|
+
export {};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var x=Object.defineProperty;var h=(d,e)=>x(d,"name",{value:e,configurable:!0});import*as l from"node:fs";import*as f from"node:os";import*as g from"node:path";const S=process.env.CATUI_DEBUG==="1",u=g.join(f.homedir(),".catui","agent","catui-debug.log");function a(d){if(S)try{l.mkdirSync(g.dirname(u),{recursive:!0}),l.appendFileSync(u,`[${new Date().toISOString()}] [submit] ${d}
|
|
2
|
+
`)}catch{}}h(a,"dbg");class I{static{h(this,"InputSubmitController")}ctx;constructor(e){this.ctx=e}async handleSubmit(e){const t=e.trim();if(!t)return;if(a(`handleSubmit: "${t.slice(0,80)}"`),await this.ctx.image.awaitPendingPaste(),await this.ctx.slash.execute(t)){a("handleSubmit \u2192 built-in slash handled");return}const s=t.match(/\s+\/persona\b/);if(s){const n=t.slice(s.index+1),r=t.slice(0,s.index).trim();this.ctx.editor.setText(""),await this.ctx.commands.handlePersonaCommand(n),r&&await this.ctx.session.promptAfterRender(r);return}if(t.startsWith("!")){const n=t.startsWith("!!"),r=n?t.slice(2).trim():t.slice(1).trim();if(r){if(this.ctx.session.isBashRunning()){this.ctx.render.showWarning("A bash command is already running. Press Esc to cancel it first."),this.ctx.editor.setText(t);return}this.ctx.editor.addToHistory(t),await this.ctx.commands.handleBashCommand(r,n),this.ctx.editor.setBashMode(!1),this.ctx.editor.updateBorderColor();return}}if(this.ctx.session.isCompacting()){this.ctx.commands.isExtensionCommand(t)?(this.ctx.editor.addToHistory(t),this.ctx.editor.setText(""),await this.ctx.session.promptAfterRender(t)):this.ctx.session.queueCompactionMessage(t,"steer");return}if(this.ctx.session.isStreaming()){await this.handleStreamingSubmit(t);return}await this.handleIdleSubmit(t)}async handleStreamingSubmit(e){this.ctx.editor.addToHistory(e),this.ctx.editor.setText("");const t=[{type:"text",text:e}];this.ctx.render.addOptimisticUserMessage(e,t),this.ctx.render.requestRender();const s=await this.ctx.image.extractImagesFromText(e),n=s.images;let r=[];const i=this.ctx.image.takePendingAttachments();i.length>0&&(r=i.map(m=>m.path));const o=this.ctx.session.getModel();(n.length>0||r.length>0)&&o&&!o.input.includes("image")&&(n.length=0,r=[],this.ctx.render.showStatus(`Images dropped: ${o.name} does not support images.${this.imageSupportSuggestion(o,!1)}`),this.ctx.render.requestRender());let c=s.text;if(r.length>0){const m=this.ctx.session.getCwd();c=r.map(p=>`@${g.relative(m,p).replace(/\\/g,"/")}`).join(" ")+" "+c}await this.ctx.session.promptAfterRender(c,{streamingBehavior:"steer",images:n.length>0?n:void 0}),this.ctx.render.updatePendingMessagesDisplay(),this.ctx.render.requestRender()}async handleIdleSubmit(e){a(`handleIdleSubmit: "${e.slice(0,80)}"`),this.ctx.render.flushPendingBashComponents(),this.ctx.editor.addToHistory(e),this.ctx.editor.setText("");const{text:t,images:s}=await this.ctx.image.extractImagesFromText(e),n=this.ctx.image.takePendingAttachments();if(n.length>0){const i=await this.ctx.image.processAttachmentFiles(n);s.push(...i)}if(s.length>0){const i=this.ctx.session.getModel();i&&!i.input.includes("image")&&(this.ctx.render.showWarning(`Model "${i.name}" does not support image input. Images have been removed from this message.${this.imageSupportSuggestion(i,!0)}`),s.length=0)}if(this.ctx.commands.isExtensionCommand(t))a("handleIdleSubmit \u2192 skipping optimistic message for extension command");else{const i=[{type:"text",text:t}];s.length>0&&i.push(...s),this.ctx.render.addOptimisticUserMessage(t,i),this.ctx.render.requestRender(),a("handleIdleSubmit \u2192 optimistic message added")}if(this.ctx.editor.handleExternalInput(e)){a("handleIdleSubmit \u2192 handed off to main loop via handleExternalInput");return}try{delete process.env.CATUI_JUST_SWITCHED_PERSONA,await this.ctx.session.promptAfterRender(t,{images:s.length>0?s:void 0}),a("handleIdleSubmit \u2192 promptAfterRender returned normally")}catch(i){a(`handleIdleSubmit \u2192 promptAfterRender threw: ${i}`),this.ctx.render.rollbackFirstOptimisticUserMessageIfMatches(t);const o=i instanceof Error?i.message:"Unknown error occurred";this.ctx.render.showError(o)}this.ctx.render.updatePendingMessagesDisplay(),this.ctx.render.requestRender(),this.ctx.image.cleanupClipboardImages()}imageSupportSuggestion(e,t){const s=t?" Try using":" Try";return e.id==="glm-5"||e.id==="glm-5-turbo"?`${s} glm-5v-turbo for image support.`:e.id==="glm-4.5"||e.id==="glm-4.5-air"?`${s} glm-4.5v for image support.`:""}}export{I as InputSubmitController};
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* [WHO]: Provides InterruptController + InterruptContext (queue/runtime/bash/editor/tree/lifecycle ports)
|
|
3
|
+
* — interactive escape + Ctrl-C/D/Z interrupt classification
|
|
4
|
+
* [FROM]: Depends only on injected capability closures (no core/ai imports); reads no TUI types directly
|
|
5
|
+
* [TO]: Consumed by modes/interactive/interactive-mode.ts (held as `this.interrupt`; onEscape + Ctrl key
|
|
6
|
+
* actions delegate here)
|
|
7
|
+
* [HERE]: modes/interactive/controllers/interrupt-controller.ts — P5 cancellation slice (scope B: interactive
|
|
8
|
+
* interrupt-controller only; shutdown/signal registration stay in mount; `modes/_shell` deferred)
|
|
9
|
+
*
|
|
10
|
+
* Owns interrupt *classification* only: the single-key/multi-target escape priority, the two independent
|
|
11
|
+
* double-tap timers (esc→tree/fork, Ctrl-C→shutdown), and Ctrl-D/Ctrl-Z dispatch. It does NOT own the
|
|
12
|
+
* graceful-shutdown sequence, process-signal registration, queue/bash/tree mechanics, or TUI suspend
|
|
13
|
+
* mechanics — those are delegated through ports. onEscape stays mount-wired (gates: mount 接线, 分支委托
|
|
14
|
+
* owner); mount forwards to dispatchEscape() and the escape swap sites (compaction/retry) save/restore that
|
|
15
|
+
* forwarding closure unchanged. See ../../../.dev-docs/architecture-review/interactive-ui-review/cancellation-analysis.md
|
|
16
|
+
*/
|
|
17
|
+
/** Streaming/loader queue state + restore-on-abort. */
|
|
18
|
+
export interface InterruptQueuePort {
|
|
19
|
+
isLoadingAnimationActive(): boolean;
|
|
20
|
+
restoreQueuedMessagesWithAbort(): void;
|
|
21
|
+
}
|
|
22
|
+
/** Runtime cancellation capability. */
|
|
23
|
+
export interface InterruptRuntimePort {
|
|
24
|
+
isStreaming(): boolean;
|
|
25
|
+
isBashRunning(): boolean;
|
|
26
|
+
abortAgent(): void;
|
|
27
|
+
abortBash(): void;
|
|
28
|
+
}
|
|
29
|
+
/** Bash-mode editor state (mount-owned until a bash controller exists). */
|
|
30
|
+
export interface InterruptBashPort {
|
|
31
|
+
isBashMode(): boolean;
|
|
32
|
+
/** Clear bash-mode text, reset the flag, and restore the editor border color. */
|
|
33
|
+
exitBashMode(): void;
|
|
34
|
+
}
|
|
35
|
+
export interface InterruptEditorPort {
|
|
36
|
+
getText(): string;
|
|
37
|
+
clearEditor(): void;
|
|
38
|
+
}
|
|
39
|
+
/** Empty-editor double-escape navigation. */
|
|
40
|
+
export interface InterruptTreePort {
|
|
41
|
+
getDoubleEscapeAction(): string;
|
|
42
|
+
showTreeSelector(): void;
|
|
43
|
+
showForkSelector(): void;
|
|
44
|
+
}
|
|
45
|
+
/** Process lifecycle — graceful shutdown + TUI suspend stay mount-owned. */
|
|
46
|
+
export interface InterruptLifecyclePort {
|
|
47
|
+
requestShutdown(): void;
|
|
48
|
+
suspend(): void;
|
|
49
|
+
}
|
|
50
|
+
export interface InterruptContext {
|
|
51
|
+
queue: InterruptQueuePort;
|
|
52
|
+
runtime: InterruptRuntimePort;
|
|
53
|
+
bash: InterruptBashPort;
|
|
54
|
+
editor: InterruptEditorPort;
|
|
55
|
+
tree: InterruptTreePort;
|
|
56
|
+
lifecycle: InterruptLifecyclePort;
|
|
57
|
+
}
|
|
58
|
+
export declare class InterruptController {
|
|
59
|
+
private readonly ctx;
|
|
60
|
+
private lastEscapeTime;
|
|
61
|
+
private lastSigintTime;
|
|
62
|
+
constructor(ctx: InterruptContext);
|
|
63
|
+
/**
|
|
64
|
+
* Single-key, multi-target escape dispatch (priority order preserved from the original onEscape):
|
|
65
|
+
* loader → restore queued + abort; streaming → abort agent; bash running → abort bash;
|
|
66
|
+
* bash mode → exit; empty editor → double-tap tree/fork.
|
|
67
|
+
*/
|
|
68
|
+
dispatchEscape(): void;
|
|
69
|
+
/** Ctrl-C: double-tap (<500ms) shuts down; single tap clears the editor and arms the timer. */
|
|
70
|
+
handleCtrlC(): void;
|
|
71
|
+
/** Ctrl-D: only fires when the editor is empty (enforced by CustomEditor) → shutdown. */
|
|
72
|
+
handleCtrlD(): void;
|
|
73
|
+
/** Ctrl-Z: suspend the TUI and stop the process group (resume restores the TUI). */
|
|
74
|
+
handleCtrlZ(): void;
|
|
75
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var c=Object.defineProperty;var s=(e,t)=>c(e,"name",{value:t,configurable:!0});const n=500;class o{static{s(this,"InterruptController")}ctx;lastEscapeTime=0;lastSigintTime=0;constructor(t){this.ctx=t}dispatchEscape(){if(this.ctx.queue.isLoadingAnimationActive())this.ctx.queue.restoreQueuedMessagesWithAbort();else if(this.ctx.runtime.isStreaming())this.ctx.runtime.abortAgent();else if(this.ctx.runtime.isBashRunning())this.ctx.runtime.abortBash();else if(this.ctx.bash.isBashMode())this.ctx.bash.exitBashMode();else if(!this.ctx.editor.getText().trim()){const t=this.ctx.tree.getDoubleEscapeAction();if(t!=="none"){const i=Date.now();i-this.lastEscapeTime<500?(t==="tree"?this.ctx.tree.showTreeSelector():this.ctx.tree.showForkSelector(),this.lastEscapeTime=0):this.lastEscapeTime=i}}}handleCtrlC(){const t=Date.now();t-this.lastSigintTime<500?this.ctx.lifecycle.requestShutdown():(this.ctx.editor.clearEditor(),this.lastSigintTime=t)}handleCtrlD(){this.ctx.lifecycle.requestShutdown()}handleCtrlZ(){this.ctx.lifecycle.suspend()}}export{o as InterruptController};
|