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,15 @@
|
|
|
1
|
+
var E=Object.defineProperty;var n=(a,e)=>E(a,"name",{value:e,configurable:!0});import{appendFileSync as v,readFileSync as k}from"node:fs";import{homedir as L}from"node:os";import{basename as P,dirname as I,join as f}from"node:path";import{isContextOverflow as b}from"@catui/ai/overflow";import{resetApiProviders as F}from"@catui/ai/registry";import{getDocsPath as C}from"../../config.js";import{stripFrontmatter as N}from"../../utils/frontmatter.js";import{calculateContextTokens as w,collectEntriesForBranchSummary as U,estimateContextTokens as B,shouldCompact as D}from"../session/compaction/index.js";import{ToolOrchestrator as O}from"../tools/orchestrator.js";import{DEFAULT_THINKING_LEVEL as $}from"../platform/config/defaults.js";import{createExtensionTelemetrySink as j}from"../platform/telemetry/index.js";import{ExtensionRunner as W}from"../extensions-host/index.js";import{expandPromptTemplate as y}from"../prompt/prompt-templates.js";import{getLatestCompactionEntry as x}from"../session/session-manager.js";import{t as H}from"../platform/i18n/index.js";import{toSoulContext as S,extractSessionContext as R}from"../soul-integration.js";import{createDefaultRuntimeTools as K}from"./default-tools.js";import{BashRunner as V}from"./bash-runner.js";import{Listeners as q}from"../platform/listeners.js";import{ModelController as Q}from"./model-controller.js";import{CompactionController as G}from"./compaction-controller.js";import{SessionLifecycleController as X}from"./session-lifecycle-controller.js";import{SessionTreeController as z}from"./session-tree-controller.js";import{ToolRuntimeController as J}from"./tool-runtime-controller.js";import{buildRuntimeSystemPrompt as Y,getActiveBaseToolNames as Z}from"./prompt-assembly.js";import{exportSessionHtml as ee,getLastAssistantText as te}from"./export-bridge.js";import{ExtensionEventBridge as se}from"./event-bridge.js";import{bindExtensionCore as ne}from"./extension-core-bindings.js";import{buildSessionSlashCommands as oe}from"./slash-command-catalog.js";import{RetryCoordinator as ie}from"./retry-coordinator.js";import{createLogger as re}from"../platform/utils/logger.js";import{createAgentTool as ae,createTaskToolAlias as le,createSendMessageTool as he,AGENT_TOOL_NAME as M,TASK_TOOL_NAME as ge,SEND_MESSAGE_TOOL_NAME as T}from"../sub-agent/index.js";import{CycleModelError as Je}from"./model-controller.js";function Qe(a){const e=a.match(/^<skill name="([^"]+)" location="([^"]+)">\n([\s\S]*?)\n<\/skill>(?:\n\n([\s\S]+))?$/);return e?{name:e[1],location:e[2],content:e[3],userMessage:e[4]?.trim()||void 0}:null}n(Qe,"parseSkillBlock");function A(a,e){const t=new Set(e.content.filter(o=>o.type==="toolCall").map(o=>o.id));let s=a.length;for(;s>0&&ce(a[s-1],t);)s--;return s>0&&me(a[s-1],e)&&s--,a.slice(0,s)}n(A,"pruneRecoverableErrorTail");function ce(a,e){return a.role==="toolResult"&&e.has(a.toolCallId)}n(ce,"isRecoverableTailToolResult");function me(a,e){return a.role==="assistant"&&a.stopReason===e.stopReason&&a.timestamp===e.timestamp&&a.provider===e.provider&&a.model===e.model&&a.api===e.api&&a.errorMessage===e.errorMessage}n(me,"isSameRecoverableAssistantMessage");function ue(a){switch(a.type){case"agent_start":return{type:"sub_agent_start",subAgentId:a.subAgentId,agentType:a.agentType,description:a.description,isAsync:a.isAsync};case"tool_start":return{type:"sub_agent_tool_start",subAgentId:a.subAgentId,toolName:a.toolName};case"tool_end":return{type:"sub_agent_tool_end",subAgentId:a.subAgentId,toolName:a.toolName,isError:a.isError};case"agent_end":return{type:"sub_agent_end",subAgentId:a.subAgentId,success:a.success};default:return}}n(ue,"mapSubAgentEvent");class Ge{static{n(this,"AgentSession")}agent;sessionManager;settingsManager;agentCtx;_scopedModels;_unsubscribeAgent;_detachExternalAbort;_listeners=new q;_steeringMessages=[];_followUpMessages=[];_pendingNextTurnMessages=[];_retryCoordinator;_logger;_bashRunner;_extensionRunner=void 0;_slashCommandExecutor=void 0;_extensionEventBridge;_resourceLoader;_theme;_debugLevel="off";_dbg(e){if(process.env.CATUI_DEBUG_SESSION==="1")try{const t=f(L(),".catui","agent","catui-debug.log");v(t,`[${new Date().toISOString()}] [session] ${e}
|
|
2
|
+
`)}catch{}}_customTools;_staticCustomTools;_mcpToolsFactory;_soulManagerFactory;_baseToolRegistry=new Map;_agentTool;_createSessionFactory;_cwd;_extensionRunnerRef;_soulManager;_lastSoulInjection;_initialActiveToolNames;_baseToolsOverride;_extensionUIContext;_extensionCommandContextActions;_extensionShutdownHandler;_extensionErrorListener;_extensionErrorUnsubscriber;_modelRegistry;_agentDir;_baseSystemPrompt="";_modelController;_compactionController;_sessionTreeController;_lifecycleController;_toolOrchestrator;_toolRuntimeController;constructor(e){if(this.agent=e.agent,this.sessionManager=e.sessionManager,this.settingsManager=e.settingsManager,this.agentCtx=e.agentCtx,this._scopedModels=e.scopedModels??[],this._resourceLoader=e.resourceLoader,this._theme=e.theme,this._debugLevel=e.debugLevel??"off",this._bashRunner=new V({getCwd:n(()=>this._cwd,"getCwd"),getShellCommandPrefix:n(()=>this.settingsManager.getShellCommandPrefix(),"getShellCommandPrefix"),appendToAgent:n(t=>this.agent.appendMessage(t),"appendToAgent"),appendToSession:n(t=>this.sessionManager.appendMessage(t),"appendToSession"),isStreaming:n(()=>this.isStreaming,"isStreaming")}),this._staticCustomTools=e.customTools??[],this._mcpToolsFactory=e.mcpToolsFactory,this._soulManagerFactory=e.soulManagerFactory,this._customTools=[...this._staticCustomTools,...e.initialMcpTools??[]],this._initialActiveToolNames=e.initialActiveToolNames,this._toolOrchestrator=new O({customTools:this._customTools,initialActiveToolNames:this._initialActiveToolNames,getExtensionTools:n(()=>new Map((this._extensionRunner?.getAllRegisteredTools()??[]).map(t=>[t.definition.name,t.definition])),"getExtensionTools")}),this._toolRuntimeController=new J(this._toolOrchestrator),this._cwd=e.cwd,this._agentDir=e.agentDir,this._modelRegistry=e.modelRegistry,this._extensionRunnerRef=e.extensionRunnerRef,this._soulManager=e.soulManager,this._baseToolsOverride=e.baseToolsOverride,this._createSessionFactory=e.createSession,this._extensionEventBridge=new se({getExtensionRunner:n(()=>this._extensionRunner,"getExtensionRunner")}),this._modelController=new Q({getModel:n(()=>this.model,"getModel"),getThinkingLevel:n(()=>this.thinkingLevel,"getThinkingLevel"),getScopedModels:n(()=>this._scopedModels,"getScopedModels"),setAgentModel:n(t=>this.agent.setModel(t),"setAgentModel"),setAgentThinkingLevel:n(t=>this.agent.setThinkingLevel(t),"setAgentThinkingLevel"),setAgentLoopFramework:n(t=>this.agent.setAgentLoopFramework(t),"setAgentLoopFramework"),setLoopPolicy:n(t=>this.agent.setLoopPolicy(t),"setLoopPolicy"),getApiKey:n(t=>this._modelRegistry.getApiKey(t),"getApiKey"),getApiKeyForProvider:n(t=>this._modelRegistry.getApiKeyForProvider(t),"getApiKeyForProvider"),getAvailableModels:n(()=>this._modelRegistry.getAvailableAsync(),"getAvailableModels"),getAuthCredential:n(t=>this._modelRegistry.authStorage.get(t),"getAuthCredential"),appendModelChange:n((t,s)=>this.sessionManager.appendModelChange(t,s),"appendModelChange"),appendThinkingLevelChange:n(t=>this.sessionManager.appendThinkingLevelChange(t),"appendThinkingLevelChange"),setDefaultModelAndProvider:n((t,s)=>this.settingsManager.setDefaultModelAndProvider(t,s),"setDefaultModelAndProvider"),setDefaultThinkingLevel:n(t=>this.settingsManager.setDefaultThinkingLevel(t),"setDefaultThinkingLevel"),emitModelSelect:n(async({model:t,previousModel:s,source:o})=>{this._extensionRunner&&await this._extensionRunner.emit({type:"model_select",model:t,previousModel:s,source:o})},"emitModelSelect")}),this._compactionController=new G({getModel:n(()=>this.model,"getModel"),getApiKey:n(t=>this._modelRegistry.getApiKey(t),"getApiKey"),getExtensionRunner:n(()=>this._extensionRunner,"getExtensionRunner"),getBranch:n(()=>this.sessionManager.getBranch(),"getBranch"),getEntries:n(()=>this.sessionManager.getEntries(),"getEntries"),getCompactionSettings:n(()=>this.settingsManager.getCompactionSettings(),"getCompactionSettings"),appendCompaction:n((t,s,o,r,i)=>this.sessionManager.appendCompaction(t,s,o,r,i),"appendCompaction"),applyCompactedMessages:n(()=>{const t=this.sessionManager.buildSessionContext();return this.agent.replaceMessages(t.messages),t.messages},"applyCompactedMessages"),logInfo:n((t,s)=>this._logger.info(t,s),"logInfo"),disconnectFromAgent:n(()=>this._disconnectFromAgent(),"disconnectFromAgent"),reconnectToAgent:n(()=>this._reconnectToAgent(),"reconnectToAgent"),abortAgent:n(()=>this.abort(),"abortAgent"),emitAutoCompactionStart:n(t=>this._emit({type:"auto_compaction_start",reason:t}),"emitAutoCompactionStart"),emitAutoCompactionEnd:n(t=>this._emit({type:"auto_compaction_end",...t}),"emitAutoCompactionEnd"),getAutoCompactionEnabled:n(()=>this.settingsManager.getCompactionEnabled(),"getAutoCompactionEnabled"),setAutoCompactionEnabled:n(t=>this.settingsManager.setCompactionEnabled(t),"setAutoCompactionEnabled")}),this._sessionTreeController=new z({getModel:n(()=>this.model,"getModel"),getApiKey:n(t=>this._modelRegistry.getApiKey(t),"getApiKey"),getExtensionRunner:n(()=>this._extensionRunner,"getExtensionRunner"),getLeafId:n(()=>this.sessionManager.getLeafId(),"getLeafId"),getEntry:n(t=>this.sessionManager.getEntry(t),"getEntry"),collectBranchSummaryEntries:n((t,s)=>U(this.sessionManager,t,s),"collectBranchSummaryEntries"),getBranchSummaryReserveTokens:n(()=>this.settingsManager.getBranchSummarySettings().reserveTokens,"getBranchSummaryReserveTokens"),branchWithSummary:n((t,s,o,r)=>this.sessionManager.branchWithSummary(t,s,o,r),"branchWithSummary"),appendLabelChange:n((t,s)=>this.sessionManager.appendLabelChange(t,s),"appendLabelChange"),resetLeaf:n(()=>this.sessionManager.resetLeaf(),"resetLeaf"),branch:n(t=>this.sessionManager.branch(t),"branch"),rebuildAgentMessages:n(()=>{const t=this.sessionManager.buildSessionContext();this.agent.replaceMessages(t.messages)},"rebuildAgentMessages"),extractUserMessageText:n(t=>this._extractUserMessageText(t),"extractUserMessageText")}),this._lifecycleController=new X({getSessionFile:n(()=>this.sessionManager.getSessionFile(),"getSessionFile"),getExtensionRunner:n(()=>this._extensionRunner,"getExtensionRunner"),disconnectFromAgent:n(()=>this._disconnectFromAgent(),"disconnectFromAgent"),reconnectToAgent:n(()=>this._reconnectToAgent(),"reconnectToAgent"),abortAgent:n(()=>this.abort(),"abortAgent"),resetAgent:n(()=>this.agent.reset(),"resetAgent"),syncAgentSessionId:n(()=>{this.agent.sessionId=this.sessionManager.getSessionId()},"syncAgentSessionId"),clearPendingQueues:n(()=>{this._steeringMessages=[],this._followUpMessages=[],this._pendingNextTurnMessages=[]},"clearPendingQueues"),clearPendingNextTurnMessages:n(()=>{this._pendingNextTurnMessages=[]},"clearPendingNextTurnMessages"),sessionNewSession:n(t=>this.sessionManager.newSession({parentSession:t}),"sessionNewSession"),sessionSetFile:n(t=>this.sessionManager.setSessionFile(t),"sessionSetFile"),sessionCreateBranchedSession:n(t=>this.sessionManager.createBranchedSession(t),"sessionCreateBranchedSession"),getEntry:n(t=>this.sessionManager.getEntry(t),"getEntry"),buildSessionContext:n(()=>this.sessionManager.buildSessionContext(),"buildSessionContext"),replaceAgentMessages:n(t=>this.agent.replaceMessages(t),"replaceAgentMessages"),appendThinkingLevelChange:n(t=>this.sessionManager.appendThinkingLevelChange(t),"appendThinkingLevelChange"),getThinkingLevel:n(()=>this.thinkingLevel,"getThinkingLevel"),getBranch:n(()=>this.sessionManager.getBranch(),"getBranch"),getDefaultThinkingLevel:n(()=>this.settingsManager.getDefaultThinkingLevel()??$,"getDefaultThinkingLevel"),getAvailableModels:n(()=>this._modelRegistry.getAvailable(),"getAvailableModels"),restoreModel:n(t=>this._modelController.restoreModel(t),"restoreModel"),restoreThinkingLevel:n(t=>this._modelController.restoreThinkingLevel(t),"restoreThinkingLevel"),runSetup:n(t=>t(this.sessionManager),"runSetup"),extractUserMessageText:n(t=>this._extractUserMessageText(t),"extractUserMessageText")}),this.agent.setModelErrorRecovery(t=>this._recoverModelErrorInLoop(t)),this._unsubscribeAgent=this.agent.subscribe(this._handleAgentEvent),e.signal){const t=n(()=>{this.abort()},"externalAbortHandler");e.signal.addEventListener("abort",t,{once:!0}),this._detachExternalAbort=()=>{e.signal?.removeEventListener("abort",t)}}this._buildRuntime({activeToolNames:this._initialActiveToolNames,includeAllExtensionTools:!0}),this._retryCoordinator=new ie(this._createRetryHost()),this._logger=re({sessionId:this.sessionManager.getSessionId(),component:"agent-session"}),this._emitDebug("basic","session","session_created",{sessionId:this.sessionManager.getSessionId()})}get modelRegistry(){return this._modelRegistry}get cwd(){return this._cwd}get agentDir(){return this._agentDir}getSlashCommands(){return oe({promptTemplates:this.promptTemplates,resourceLoader:this._resourceLoader,extensionRunner:this._extensionRunner},H)}async tryExecuteExtensionCommand(e){return this._tryExecuteExtensionCommand(e)}async executeSlashCommand(e){return e.startsWith("/")?this._slashCommandExecutor&&await this._slashCommandExecutor(e)?!0:this._tryExecuteExtensionCommand(e):!1}setSlashCommandExecutor(e){this._slashCommandExecutor=e}_emit(e){this._listeners.emit(e)}_emitDebug(e,t,s,o){this._debugLevel!=="off"&&(e==="verbose"&&this._debugLevel!=="verbose"||this._emit({type:"debug",level:e,source:t,message:s,data:o,timestamp:Date.now()}))}_lastAssistantMessage=void 0;_handleAgentEvent=n(async e=>{if(e.type==="message_start"&&e.message.role==="user"){const t=this._getUserMessageText(e.message);if(t){const s=this._steeringMessages.indexOf(t);if(s!==-1)this._steeringMessages.splice(s,1);else{const o=this._followUpMessages.indexOf(t);o!==-1&&this._followUpMessages.splice(o,1)}}}if(e.type==="message_update")this._emit(e),this._extensionEventBridge.emitExtensionEvent(e).catch(t=>{this._logger.error("[extension] message_update event error",{error:t})});else{const t=this._extensionEventBridge.emitExtensionEvent(e);this._emit(e),await t}if(e.type==="tool_execution_start"?this._emitDebug("verbose","tool","tool_start",{toolName:e.toolName,toolCallId:e.toolCallId}):e.type==="tool_execution_end"&&this._emitDebug("verbose","tool","tool_end",{toolName:e.toolName,isError:e.isError}),e.type==="message_end"&&(e.message.role==="custom"?this.sessionManager.appendCustomMessageEntry(e.message.customType,e.message.content,e.message.display,e.message.details):(e.message.role==="user"||e.message.role==="assistant"||e.message.role==="toolResult")&&this.sessionManager.appendMessage(e.message),e.message.role==="assistant"&&(this._lastAssistantMessage=e.message,e.message.stopReason!=="error"&&this._retryCoordinator.onSuccess())),e.type==="agent_end"&&this._lastAssistantMessage){const t=this._lastAssistantMessage;if(this._lastAssistantMessage=void 0,this._retryCoordinator.isRetryableError(t)&&await this._retryCoordinator.handleError(t))return;if(await this._checkCompaction(t),this._soulManager){const s=t.stopReason==="error"?"failure":"success",o=this._cwd.split(/[/\\]/).pop()||"unknown",{tags:r,complexity:i,toolUsage:l}=R(this.state.messages,this._cwd),m=S(o,r,i,l),g=r[0]||o;(async()=>{try{await this._soulManager.recordInteraction(m,s,"turn"),await this._soulManager.updateExpertise(g,r,s==="success")}catch(c){this._logger.warn("[soul] recordInteraction/updateExpertise failed",{error:c})}})()}}e.type==="agent_end"&&this._extensionRunner&&this._extensionRunner.emit({type:"agent_end",messages:e.messages}).catch(t=>{this._logger.error("[extension] agent_end event error",{error:t})})},"_handleAgentEvent");_getUserMessageText(e){if(e.role!=="user")return"";const t=e.content;return typeof t=="string"?t:t.filter(o=>o.type==="text").map(o=>o.text).join("")}_findLastAssistantMessage(){const e=this.agent.state.messages;for(let t=e.length-1;t>=0;t--){const s=e[t];if(s.role==="assistant")return s}}subscribe(e){return this._listeners.add(e)}_disconnectFromAgent(){this._unsubscribeAgent&&(this._unsubscribeAgent(),this._unsubscribeAgent=void 0)}_reconnectToAgent(){this._unsubscribeAgent||(this._unsubscribeAgent=this.agent.subscribe(this._handleAgentEvent))}dispose(){this._disconnectFromAgent(),this._extensionRunner?.dispose(),this._listeners.clear(),this._detachExternalAbort&&(this._detachExternalAbort(),this._detachExternalAbort=void 0)}get state(){return this.agent.state}get model(){return this.agent.state.model}get thinkingLevel(){return this.agent.state.thinkingLevel}get agentLoopFramework(){return this.agent.agentLoopFramework}get isStreaming(){return this.agent.state.isStreaming}get systemPrompt(){return this.agent.state.systemPrompt}get soulManager(){return this._soulManager}get retryAttempt(){return this._retryCoordinator.attempt}getActiveToolNames(){return this.agent.state.tools.map(e=>e.name)}getAllTools(){return this._toolOrchestrator.getAllTools()}setActiveToolsByName(e){const{tools:t,validToolNames:s}=this._toolOrchestrator.setActiveToolsByName(e);this.agent.setTools(t),this._baseSystemPrompt=this._rebuildSystemPrompt(s),this.agent.setSystemPrompt(this._baseSystemPrompt)}get isCompacting(){return this._compactionController.isCompacting}get messages(){return this.agent.state.messages}get steeringMode(){return this.agent.getSteeringMode()}get followUpMode(){return this.agent.getFollowUpMode()}get sessionFile(){return this.sessionManager.getSessionFile()}get sessionId(){return this.sessionManager.getSessionId()}get sessionName(){return this.sessionManager.getSessionName()}get scopedModels(){return this._scopedModels}setScopedModels(e){this._scopedModels=e}get promptTemplates(){return this._resourceLoader.getPrompts().prompts}_rebuildSystemPrompt(e,t){return Y({cwd:this._cwd,resourceLoader:this._resourceLoader,toolNames:e,baseToolRegistry:this._baseToolRegistry,soulInjection:t?.soulInjection??this._lastSoulInjection})}_getActiveBaseToolNames(){return Z(this.getActiveToolNames(),this._baseToolRegistry)}async _generateSoulInjection(){if(!this._soulManager){this._lastSoulInjection=void 0;return}try{const e=this._cwd.split(/[/\\]/).pop()||"unknown",{tags:t,complexity:s,toolUsage:o}=R(this.state.messages,this._cwd),r=await this._soulManager.generateInjection(S(e,t,s,o));return this._lastSoulInjection=typeof r=="string"&&r.trim().length>0?r:void 0,this._lastSoulInjection}catch(e){return this._emit({type:"sdk:error",source:"soul",error:e}),this._lastSoulInjection}}async prompt(e,t){const s=performance.now(),o=t?.expandPromptTemplates??!0;if(this._dbg(`prompt: "${e.slice(0,80)}" isStreaming=${this.isStreaming} hasModel=${!!this.model}`),o&&e.startsWith("/")){const u=await this.executeSlashCommand(e);if(this._dbg(`prompt: slash handled=${u}`),u)return}let r=e,i=t?.images;if(this._extensionRunner?.hasHandlers("input")){const u=await this._extensionRunner.emitInput(r,i,t?.source??"interactive");if(u.action==="handled")return;u.action==="transform"&&(r=u.text,i=u.images??i)}let l=r;if(o&&(l=this._expandSkillCommand(l),l=y(l,[...this.promptTemplates])),this.isStreaming){if(!t?.streamingBehavior)throw new Error("Agent is already processing. Specify streamingBehavior ('steer' or 'followUp') to queue the message.");t.streamingBehavior==="followUp"?await this._queueFollowUp(l,i):await this._queueSteer(l,i);return}if(this._bashRunner.flushPending(),!this.model)throw new Error(`No model selected.
|
|
3
|
+
|
|
4
|
+
Use /login or set an API key environment variable. See ${f(C(),"providers.md")}
|
|
5
|
+
|
|
6
|
+
Then use /model to select a model.`);if(!await this._modelRegistry.getApiKey(this.model))throw this._modelRegistry.isUsingOAuth(this.model)?new Error(`Authentication failed for "${this.model.provider}". Credentials may have expired or network is unavailable. Run '/login ${this.model.provider}' to re-authenticate.`):new Error(`No API key found for ${this.model.provider}.
|
|
7
|
+
|
|
8
|
+
Use /login or set an API key environment variable. See ${f(C(),"providers.md")}`);const g=this._findLastAssistantMessage();g&&await this._checkCompaction(g,!1);const c=[],h=[{type:"text",text:l}];i&&h.push(...i),c.push({role:"user",content:h,timestamp:Date.now()});for(const u of this._pendingNextTurnMessages)c.push(u);this._pendingNextTurnMessages=[];const d=this._getActiveBaseToolNames(),_=await this._generateSoulInjection();if(this._baseSystemPrompt=this._rebuildSystemPrompt(d,{soulInjection:_}),this._extensionRunner){const u=await this._extensionRunner.emitBeforeAgentStart(l,i,this._baseSystemPrompt);if(u?.messages)for(const p of u.messages)c.push({role:"custom",customType:p.customType,content:p.content,display:p.display,details:p.details,timestamp:Date.now()});u?.systemPrompt?this.agent.setSystemPrompt(u.systemPrompt):this.agent.setSystemPrompt(this._baseSystemPrompt)}else this.agent.setSystemPrompt(this._baseSystemPrompt);this._dbg(`calling agent.prompt with ${c.length} message(s)`),await this.agent.prompt(c),this._dbg(`agent.prompt returned (${(performance.now()-s).toFixed(0)}ms)`),await this.waitForRetry()}async _tryExecuteExtensionCommand(e){if(!this._extensionRunner)return!1;const t=e.indexOf(" "),s=t===-1?e.slice(1):e.slice(1,t),o=t===-1?"":e.slice(t+1),r=this._extensionRunner.createCommandContext();return(await this._extensionRunner.invokeCommand(s,o,r,{sessionId:this.sessionManager.getSessionId()})).found}_expandSkillCommand(e){if(!e.startsWith("/skill:"))return e;const t=e.indexOf(" "),s=t===-1?e.slice(7):e.slice(7,t),o=t===-1?"":e.slice(t+1).trim(),r=this.resourceLoader.getSkills().skills.find(i=>i.name===s);if(!r)return e;try{const i=k(r.filePath,"utf-8"),l=N(i).trim(),m=`<skill name="${r.name}" location="${r.filePath}">
|
|
9
|
+
References are relative to ${r.baseDir}.
|
|
10
|
+
|
|
11
|
+
${l}
|
|
12
|
+
</skill>`;return o?`${m}
|
|
13
|
+
|
|
14
|
+
${o}`:m}catch(i){return this._extensionRunner?.emitError({extensionPath:r.filePath,event:"skill_expansion",error:i instanceof Error?i.message:String(i)}),e}}async steer(e,t){e.startsWith("/")&&this._throwIfExtensionCommand(e);let s=this._expandSkillCommand(e);s=y(s,[...this.promptTemplates]),await this._queueSteer(s,t)}async followUp(e,t){e.startsWith("/")&&this._throwIfExtensionCommand(e);let s=this._expandSkillCommand(e);s=y(s,[...this.promptTemplates]),await this._queueFollowUp(s,t)}async _queueSteer(e,t){this._steeringMessages.push(e);const s=[{type:"text",text:e}];t&&s.push(...t),this.agent.steer({role:"user",content:s,timestamp:Date.now()})}async _queueFollowUp(e,t){this._followUpMessages.push(e);const s=[{type:"text",text:e}];t&&s.push(...t),this.agent.followUp({role:"user",content:s,timestamp:Date.now()})}_throwIfExtensionCommand(e){if(!this._extensionRunner)return;const t=e.indexOf(" "),s=t===-1?e.slice(1):e.slice(1,t);if(this._extensionRunner.getCommand(s))throw new Error(`Extension command "/${s}" cannot be queued. Use prompt() or execute the command when not streaming.`)}async sendCustomMessage(e,t){const s={role:"custom",customType:e.customType,content:e.content,display:e.display,details:e.details,timestamp:Date.now()};t?.deliverAs==="nextTurn"?this._pendingNextTurnMessages.push(s):this.isStreaming?t?.deliverAs==="followUp"?this.agent.followUp(s):this.agent.steer(s):t?.triggerTurn?await this.agent.prompt(s):(this.agent.appendMessage(s),this.sessionManager.appendCustomMessageEntry(e.customType,e.content,e.display,e.details),this._emit({type:"message_start",message:s}),this._emit({type:"message_end",message:s}))}async sendUserMessage(e,t){let s,o;if(typeof e=="string")s=e;else{const r=[];o=[];for(const i of e)i.type==="text"?r.push(i.text):i.type==="image"&&o.push(i);s=r.join(`
|
|
15
|
+
`),o.length===0&&(o=void 0)}await this.prompt(s,{expandPromptTemplates:!1,streamingBehavior:t?.deliverAs,images:o,source:"extension"})}clearQueue(){const e=[...this._steeringMessages],t=[...this._followUpMessages];return this._steeringMessages=[],this._followUpMessages=[],this.agent.clearAllQueues(),{steering:e,followUp:t}}get pendingMessageCount(){return this._steeringMessages.length+this._followUpMessages.length}getSteeringMessages(){return this._steeringMessages}getFollowUpMessages(){return this._followUpMessages}get resourceLoader(){return this._resourceLoader}async abort(){this.abortRetry(),this.agent.abort(),await this.agent.waitForIdle(),this._extensionRunner?.emit({type:"agent_abort"})}async newSession(e){return this._lifecycleController.newSession(e)}async setModel(e){await this._modelController.setModel(e),this._emitDebug("basic","model","model_change",{provider:e.api,modelId:e.id})}async cycleModel(e="forward"){const t=await this._modelController.cycleModel(e);return t&&this._emitDebug("basic","model","model_cycle",{direction:e,provider:t.model.api,modelId:t.model.id}),t}setThinkingLevel(e){this._modelController.setThinkingLevel(e)}setAgentLoopFramework(e){this._modelController.setAgentLoopFramework(e)}setLoopPolicy(e){this._modelController.setLoopPolicy(e)}cycleThinkingLevel(){return this._modelController.cycleThinkingLevel()}getAvailableThinkingLevels(){return this._modelController.getAvailableThinkingLevels()}supportsXhighThinking(){return this._modelController.supportsXhighThinking()}supportsThinking(){return this._modelController.supportsThinking()}setSteeringMode(e){this.agent.setSteeringMode(e),this.settingsManager.setSteeringMode(e)}setFollowUpMode(e){this.agent.setFollowUpMode(e),this.settingsManager.setFollowUpMode(e)}async compact(e){return this._compactionController.compact(e)}abortCompaction(){this._compactionController.abort()}abortBranchSummary(){this._sessionTreeController.abortBranchSummary()}async _checkCompaction(e,t=!0){const s=this.settingsManager.getCompactionSettings();if(!s.enabled||t&&e.stopReason==="aborted")return;const o=this.model?.contextWindow??0,r=this.model&&e.provider===this.model.provider&&e.model===this.model.id,i=x(this.sessionManager.getBranch()),l=i!==null&&e.timestamp<new Date(i.timestamp).getTime();if(r&&!l&&b(e,o)){const g=this.agent.state.messages;g.length>0&&g[g.length-1].role==="assistant"&&this.agent.replaceMessages(g.slice(0,-1)),await this._runAutoCompaction("overflow",!0);return}if(e.stopReason==="error")return;const m=w(e.usage);D(m,o,s)&&await this._runAutoCompaction("threshold",!1)}async _recoverModelErrorInLoop(e){const t=this.settingsManager.getCompactionSettings();if(e.message.role!=="assistant")return{action:"stop"};const s=e.message;if(e.errorSubtype!=="context_overflow"){if(!this._retryCoordinator.isRetryableError(s))return{action:"stop"};if(!await this._retryCoordinator.handleErrorInLoop(s))return{action:"stop"};const h=A(this.agent.state.messages,s);return this.agent.replaceMessages(h),{action:"retry",messages:h,transition:{reason:"model_error_recovery",subtype:e.errorSubtype,attempt:e.attempt}}}if(!t.enabled)return{action:"stop"};const o=this.model?.contextWindow??0;if(!(this.model&&s.provider===this.model.provider&&s.model===this.model.id)||!b(s,o))return{action:"stop"};const i=x(this.sessionManager.getBranch());if(i!==null&&s.timestamp<new Date(i.timestamp).getTime())return{action:"stop"};const m=this.agent.state.messages;this.agent.replaceMessages(A(m,s));const g=await this._runAutoCompaction("overflow",!0,{triggerContinue:!1});return g?{action:"retry",messages:g,transition:{reason:"model_error_recovery",subtype:e.errorSubtype,attempt:e.attempt}}:{action:"stop"}}async _runAutoCompaction(e,t,s){const o=s?.triggerContinue??!0,r=await this._compactionController.runAuto(e,t);if(r!==void 0){if(t&&o){const i=this.agent.state.messages,l=i[i.length-1];l?.role==="assistant"&&l.stopReason==="error"&&this.agent.replaceMessages(i.slice(0,-1)),setTimeout(()=>{this.agent.continue().catch(()=>{})},100)}else!t&&this.agent.hasQueuedMessages()&&setTimeout(()=>{this.agent.continue().catch(()=>{})},100);return r}}setAutoCompactionEnabled(e){this._compactionController.setAutoCompactionEnabled(e)}get autoCompactionEnabled(){return this._compactionController.autoCompactionEnabled}async bindExtensions(e){e.uiContext!==void 0&&(this._extensionUIContext=e.uiContext),e.commandContextActions!==void 0&&(this._extensionCommandContextActions=e.commandContextActions),e.shutdownHandler!==void 0&&(this._extensionShutdownHandler=e.shutdownHandler),e.onError!==void 0&&(this._extensionErrorListener=e.onError),this._extensionRunner&&(this._applyExtensionBindings(this._extensionRunner),await this._extensionRunner.emit({type:"session_start"}),await this.extendResourcesFromExtensions("startup")),this._emitDebug("basic","extension","extensions_bound")}async extendResourcesFromExtensions(e){if(!this._extensionRunner?.hasHandlers("resources_discover"))return;const{skillPaths:t,promptPaths:s,themePaths:o}=await this._extensionRunner.emitResourcesDiscover(this._cwd,e);if(t.length===0&&s.length===0&&o.length===0)return;const r={skillPaths:this.buildExtensionResourcePaths(t),promptPaths:this.buildExtensionResourcePaths(s),themePaths:this.buildExtensionResourcePaths(o)};this._resourceLoader.extendResources(r),this._baseSystemPrompt=this._rebuildSystemPrompt(this.getActiveToolNames()),this.agent.setSystemPrompt(this._baseSystemPrompt)}buildExtensionResourcePaths(e){return e.map(t=>{const s=this.getExtensionSourceLabel(t.extensionPath),o=t.extensionPath.startsWith("<")?void 0:I(t.extensionPath);return{path:t.path,metadata:{source:s,scope:"temporary",origin:"top-level",baseDir:o}}})}getExtensionSourceLabel(e){return e.startsWith("<")?`extension:${e.replace(/[<>]/g,"")}`:`extension:${P(e).replace(/\.(ts|js)$/,"")}`}_applyExtensionBindings(e){e.setUIContext(this._extensionUIContext),e.bindCommandContext(this._extensionCommandContextActions),this._extensionErrorUnsubscriber?.(),this._extensionErrorUnsubscriber=this._extensionErrorListener?e.onError(this._extensionErrorListener):void 0}_bindExtensionCore(e){const t=this;ne(e,{promptTemplates:this.promptTemplates,resourceLoader:this._resourceLoader,modelRegistry:this.modelRegistry,sessionManager:this.sessionManager,settingsManager:this.settingsManager,shutdownHandler:this._extensionShutdownHandler,soulManager:this._soulManager,get model(){return t.model},get thinkingLevel(){return t.thinkingLevel},get isStreaming(){return t.isStreaming},get pendingMessageCount(){return t.pendingMessageCount},get systemPrompt(){return t.systemPrompt},sendCustomMessage:n((s,o)=>this.sendCustomMessage(s,o),"sendCustomMessage"),sendUserMessage:n((s,o)=>this.sendUserMessage(s,o),"sendUserMessage"),executeSlashCommand:n(s=>this.executeSlashCommand(s),"executeSlashCommand"),getActiveToolNames:n(()=>this.getActiveToolNames(),"getActiveToolNames"),getAllTools:n(()=>this.getAllTools(),"getAllTools"),setActiveToolsByName:n(s=>this.setActiveToolsByName(s),"setActiveToolsByName"),setModel:n(s=>this.setModel(s),"setModel"),setThinkingLevel:n(s=>this.setThinkingLevel(s),"setThinkingLevel"),abort:n(()=>this.abort(),"abort"),clearFollowUpQueue:n(()=>{this.agent.clearFollowUpQueue(),this._followUpMessages=[]},"clearFollowUpQueue"),getContextUsage:n(()=>this.getContextUsage(),"getContextUsage"),compact:n(s=>this.compact(s),"compact")})}_buildRuntime(e){const t=this._baseToolsOverride?this._baseToolsOverride:K(this._cwd,this.settingsManager);this._baseToolRegistry=new Map(Object.entries(t).map(([c,h])=>[c,h]));const s=this._resourceLoader.getExtensions();if(e.flagValues)for(const[c,h]of e.flagValues)s.runtime.flagValues.set(c,h);const o=s.extensions.length>0,r=this._customTools.length>0;this._extensionRunner=o||r?new W(s.extensions,s.runtime,this._cwd,this._agentDir,this.sessionManager,this._modelRegistry):void 0,this._extensionRunnerRef&&(this._extensionRunnerRef.current=this._extensionRunner),this._extensionRunner&&(this._bindExtensionCore(this._extensionRunner),this._applyExtensionBindings(this._extensionRunner),this._extensionRunner.setTelemetrySink(j({workspaceRoot:this._cwd})));const i=this._toolRuntimeController.build({baseTools:this._baseToolRegistry,baseToolsOverride:this._baseToolsOverride,customTools:this._customTools,activeToolNames:e.activeToolNames,includeAllExtensionTools:e.includeAllExtensionTools,extensionRunner:this._extensionRunner}),l=n(c=>{const h=ue(c);h&&this._emit(h)},"onSubAgentEvent");this._agentTool=ae({parentSession:this,parentPermissionMode:"default",parentModel:this.model,createSession:this._createSessionFactory,onSubAgentEvent:l}),i.activeTools.push(this._agentTool),this._toolOrchestrator.registerTool(M,this._agentTool);const m=le({parentSession:this,parentPermissionMode:"default",parentModel:this.model,createSession:this._createSessionFactory,onSubAgentEvent:l});i.activeTools.push(m),this._toolOrchestrator.registerTool(ge,m);const g=he({parentSession:this,parentPermissionMode:"default",parentModel:this.model,createSession:this._createSessionFactory});i.activeTools.push(g),this._toolOrchestrator.registerTool(T,g),i.systemPromptToolNames.includes(M)||i.systemPromptToolNames.push(M),i.systemPromptToolNames.includes(T)||i.systemPromptToolNames.push(T),this.agent.setTools(i.activeTools),this._baseSystemPrompt=this._rebuildSystemPrompt(i.systemPromptToolNames),this.agent.setSystemPrompt(this._baseSystemPrompt)}async _refreshMcpTools(){if(!this._mcpToolsFactory)return 0;try{const e=await this._mcpToolsFactory();return this._customTools=[...this._staticCustomTools,...e],e.length}catch(e){this._emit({type:"sdk:error",source:"mcp",error:e});const t=this._customTools.filter(s=>s.name.startsWith("mcp_"));return this._customTools=[...this._staticCustomTools,...t],t.length}}async warmupMcpTools(){if(this._mcpToolsFactory)try{const e=await this._refreshMcpTools();this._buildRuntime({activeToolNames:this.getActiveToolNames(),flagValues:this._extensionRunner?.getFlagValues(),includeAllExtensionTools:!0}),this._emit({type:"sdk:mcp_ready",toolCount:e}),this._emitDebug("basic","mcp","mcp_warmup_complete",{toolCount:e})}catch(e){this._emit({type:"sdk:error",source:"mcp",error:e})}}async reload(){this._emitDebug("basic","resource","reload_start");const e=this._extensionRunner?.getFlagValues();if(await this._extensionRunner?.emit({type:"session_shutdown"}),this.settingsManager.reload(),F(),await this._resourceLoader.reload(),await this._refreshMcpTools(),this._soulManagerFactory)try{this._soulManager=await this._soulManagerFactory(),this._lastSoulInjection=void 0}catch(s){this._emit({type:"sdk:error",source:"soul",error:s})}this._buildRuntime({activeToolNames:this.getActiveToolNames(),flagValues:e,includeAllExtensionTools:!0});const t=this._extensionUIContext||this._extensionCommandContextActions||this._extensionShutdownHandler||this._extensionErrorListener;this._extensionRunner&&t&&(await this._extensionRunner.emit({type:"session_start"}),await this.extendResourcesFromExtensions("reload")),this._emitDebug("basic","resource","reload_end")}_createRetryHost(){return{getContextWindow:n(()=>this.model?.contextWindow??0,"getContextWindow"),getRetrySettings:n(()=>this.settingsManager.getRetrySettings(),"getRetrySettings"),removeLastAssistantMessage:n(()=>{const e=this.agent.state.messages;e.length>0&&e[e.length-1].role==="assistant"&&this.agent.replaceMessages(e.slice(0,-1))},"removeLastAssistantMessage"),triggerContinue:n(()=>{setTimeout(()=>{this.agent.continue().catch(()=>{})},0)},"triggerContinue"),emitEvent:n(e=>{this._emit(e)},"emitEvent")}}abortRetry(){this._retryCoordinator.abort()}async waitForRetry(){await this._retryCoordinator.waitForCompletion()}get isRetrying(){return this._retryCoordinator.isActive}get autoRetryEnabled(){return this.settingsManager.getRetryEnabled()}setAutoRetryEnabled(e){this.settingsManager.setRetryEnabled(e)}async executeBash(e,t,s){return this._bashRunner.execute(e,t,s)}recordBashResult(e,t,s){this._bashRunner.recordResult(e,t,s)}abortBash(){this._bashRunner.abort()}get isBashRunning(){return this._bashRunner.isRunning}get hasPendingBashMessages(){return this._bashRunner.hasPending}async switchSession(e){return this._lifecycleController.switchSession(e)}setSessionName(e){this.sessionManager.appendSessionInfo(e)}async fork(e){return this._lifecycleController.fork(e)}async navigateTree(e,t={}){return this._sessionTreeController.navigateTree(e,t)}getUserMessagesForForking(){const e=this.sessionManager.getEntries(),t=[];for(const s of e){if(s.type!=="message"||s.message.role!=="user")continue;const o=this._extractUserMessageText(s.message.content);o&&t.push({entryId:s.id,text:o})}return t}_extractUserMessageText(e){return typeof e=="string"?e:Array.isArray(e)?e.filter(t=>t.type==="text").map(t=>t.text).join(""):""}getSessionStats(){const e=this.state,t=e.messages.filter(h=>h.role==="user").length,s=e.messages.filter(h=>h.role==="assistant").length,o=e.messages.filter(h=>h.role==="toolResult").length;let r=0,i=0,l=0,m=0,g=0,c=0;for(const h of e.messages)if(h.role==="assistant"){const d=h;r+=d.content.filter(_=>_.type==="toolCall").length,i+=d.usage.input,l+=d.usage.output,m+=d.usage.cacheRead,g+=d.usage.cacheWrite,c+=d.usage.cost.total}return{sessionFile:this.sessionFile,sessionId:this.sessionId,userMessages:t,assistantMessages:s,toolCalls:r,toolResults:o,totalMessages:e.messages.length,tokens:{input:i,output:l,cacheRead:m,cacheWrite:g,total:i+l+m+g},cost:c}}getContextUsage(){const e=this.model;if(!e)return;const t=e.contextWindow??0;if(t<=0)return;const s=this.sessionManager.getBranch(),o=x(s);if(o){const l=s.lastIndexOf(o);let m=!1;for(let g=s.length-1;g>l;g--){const c=s[g];if(c.type==="message"&&c.message.role==="assistant"){const h=c.message;if(h.stopReason!=="aborted"&&h.stopReason!=="error"){w(h.usage)>0&&(m=!0);break}}}if(!m)return{tokens:null,contextWindow:t,percent:null}}const r=B(this.messages),i=r.tokens/t*100;return{tokens:r.tokens,contextWindow:t,percent:i}}async exportToHtml(e){return await ee({sessionManager:this.sessionManager,state:this.state,outputPath:e,themeName:this.settingsManager.getTheme(),extensionRunner:this._extensionRunner,theme:this._theme})}getLastAssistantText(){return te(this.messages)}hasExtensionHandlers(e){return this._extensionRunner?.hasHandlers(e)??!1}get extensionRunner(){return this._extensionRunner}}export{Ge as AgentSession,Je as CycleModelError,Qe as parseSkillBlock,A as pruneRecoverableErrorTail};
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* [WHO]: Provides BashRunner, BashRunnerDeps — bash execution + pending-message queue for a session
|
|
3
|
+
* [FROM]: Depends on core/platform/exec/bash-executor (execution), core/messages (BashExecutionMessage),
|
|
4
|
+
* core/tools/bash (BashOperations); host wiring passed in via closures (no agent/session import)
|
|
5
|
+
* [TO]: Consumed by core/runtime/agent-session.ts (composition root delegates executeBash/abortBash/…)
|
|
6
|
+
* [HERE]: core/runtime/agent-session.ts split — owns _bashAbortController + _pendingBashMessages
|
|
7
|
+
*
|
|
8
|
+
* Extracted from AgentSession (P4.1). Behavior-identical: the session's executeBash /
|
|
9
|
+
* recordBashResult / abortBash / isBashRunning / hasPendingBashMessages / flushPending methods
|
|
10
|
+
* now delegate here. Dependencies are injected as closures so this module stays decoupled from
|
|
11
|
+
* Agent / SessionManager / SettingsManager.
|
|
12
|
+
*/
|
|
13
|
+
import { type BashResult } from "../platform/exec/bash-executor.js";
|
|
14
|
+
import type { BashExecutionMessage } from "../messages.js";
|
|
15
|
+
import type { BashOperations } from "../tools/bash.js";
|
|
16
|
+
export interface BashRunnerDeps {
|
|
17
|
+
/** Current working directory (read lazily — may change across session switches). */
|
|
18
|
+
getCwd: () => string;
|
|
19
|
+
/** Optional shell command prefix (e.g. alias expansion) from settings. */
|
|
20
|
+
getShellCommandPrefix: () => string | undefined;
|
|
21
|
+
/** Append a message to live agent state. */
|
|
22
|
+
appendToAgent: (message: BashExecutionMessage) => void;
|
|
23
|
+
/** Persist a message to the session. */
|
|
24
|
+
appendToSession: (message: BashExecutionMessage) => void;
|
|
25
|
+
/** Whether the agent is mid-stream (defer message to preserve tool ordering). */
|
|
26
|
+
isStreaming: () => boolean;
|
|
27
|
+
}
|
|
28
|
+
export declare class BashRunner {
|
|
29
|
+
private readonly deps;
|
|
30
|
+
private _abortController;
|
|
31
|
+
private _pending;
|
|
32
|
+
constructor(deps: BashRunnerDeps);
|
|
33
|
+
/** Run a bash command, recording its result in session history. */
|
|
34
|
+
execute(command: string, onChunk?: (chunk: string) => void, options?: {
|
|
35
|
+
excludeFromContext?: boolean;
|
|
36
|
+
operations?: BashOperations;
|
|
37
|
+
}): Promise<BashResult>;
|
|
38
|
+
/**
|
|
39
|
+
* Record a bash execution result in session history.
|
|
40
|
+
* Used by execute() and by extensions that handle bash execution themselves.
|
|
41
|
+
*/
|
|
42
|
+
recordResult(command: string, result: BashResult, options?: {
|
|
43
|
+
excludeFromContext?: boolean;
|
|
44
|
+
}): void;
|
|
45
|
+
/** Cancel running bash command. */
|
|
46
|
+
abort(): void;
|
|
47
|
+
/** Whether a bash command is currently running. */
|
|
48
|
+
get isRunning(): boolean;
|
|
49
|
+
/** Whether there are pending bash messages waiting to be flushed. */
|
|
50
|
+
get hasPending(): boolean;
|
|
51
|
+
/**
|
|
52
|
+
* Flush pending bash messages to agent state and session.
|
|
53
|
+
* Called after agent turn completes to maintain proper message ordering.
|
|
54
|
+
*/
|
|
55
|
+
flushPending(): void;
|
|
56
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var l=Object.defineProperty;var d=(o,e)=>l(o,"name",{value:e,configurable:!0});import{executeBash as h,executeBashWithOperations as p}from"../platform/exec/bash-executor.js";class g{static{d(this,"BashRunner")}deps;_abortController=void 0;_pending=[];constructor(e){this.deps=e}async execute(e,t,s){this._abortController=new AbortController;const n=this.deps.getShellCommandPrefix(),i=n?`${n}
|
|
2
|
+
${e}`:e,r=this.deps.getCwd();try{const a=s?.operations?await p(i,r,s.operations,{onChunk:t,signal:this._abortController.signal}):await h(i,{onChunk:t,signal:this._abortController.signal,cwd:r});return this.recordResult(e,a,s),a}finally{this._abortController=void 0}}recordResult(e,t,s){const n={role:"bashExecution",command:e,output:t.output,exitCode:t.exitCode,cancelled:t.cancelled,truncated:t.truncated,fullOutputPath:t.fullOutputPath,timestamp:Date.now(),excludeFromContext:s?.excludeFromContext};this.deps.isStreaming()?this._pending.push(n):(this.deps.appendToAgent(n),this.deps.appendToSession(n))}abort(){this._abortController?.abort()}get isRunning(){return this._abortController!==void 0}get hasPending(){return this._pending.length>0}flushPending(){if(this._pending.length!==0){for(const e of this._pending)this.deps.appendToAgent(e),this.deps.appendToSession(e);this._pending=[]}}}export{g as BashRunner};
|
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* [WHO]: CatuiAgent - Simplified SDK wrapper for better DX
|
|
3
|
+
* [FROM]: Depends on sdk.ts, agent-session.ts, tools/index.ts
|
|
4
|
+
* [TO]: Consumed by index.ts, external SDK users
|
|
5
|
+
* [HERE]: core/runtime/catui-agent.ts - high-level wrapper class with simplified API
|
|
6
|
+
*/
|
|
7
|
+
import { type SDKLogger } from "./sdk.js";
|
|
8
|
+
import { type AgentSessionEvent } from "./agent-session.js";
|
|
9
|
+
import type { Api } from "@catui/ai/types";
|
|
10
|
+
import type { ThinkingLevel } from "@catui/agent-core";
|
|
11
|
+
/**
|
|
12
|
+
* Simplified options for CatuiAgent wrapper.
|
|
13
|
+
*/
|
|
14
|
+
export interface CatuiAgentOptions {
|
|
15
|
+
/** API key for the provider. If omitted, uses environment variable. */
|
|
16
|
+
apiKey?: string;
|
|
17
|
+
/** Provider name: 'anthropic', 'openai', 'google', or any custom provider in models.json. */
|
|
18
|
+
provider?: string;
|
|
19
|
+
/** Model ID: 'claude-4-5-20250920', 'gpt-4o', etc. */
|
|
20
|
+
model?: string;
|
|
21
|
+
/**
|
|
22
|
+
* Optional base URL when registering a custom provider on the fly.
|
|
23
|
+
* Required when `provider` + `model` is not already defined in
|
|
24
|
+
* ~/.catui/agents/default/models.json. Ignored when the model is found.
|
|
25
|
+
*/
|
|
26
|
+
baseUrl?: string;
|
|
27
|
+
/**
|
|
28
|
+
* Optional API protocol for the dynamically-registered provider.
|
|
29
|
+
* Defaults to "openai-completions". Ignored when the model is found.
|
|
30
|
+
*/
|
|
31
|
+
api?: Api;
|
|
32
|
+
/** Thinking level: 'off' | 'low' | 'medium' | 'high' */
|
|
33
|
+
thinkingLevel?: ThinkingLevel;
|
|
34
|
+
/** Working directory. Default: process.cwd() */
|
|
35
|
+
cwd?: string;
|
|
36
|
+
/** Initial tool names: ['read', 'bash', 'edit', 'write'] */
|
|
37
|
+
tools?: string[];
|
|
38
|
+
/** Enable MCP tools */
|
|
39
|
+
enableMCP?: boolean;
|
|
40
|
+
/** Enable Soul personality */
|
|
41
|
+
enableSoul?: boolean;
|
|
42
|
+
/** Suppress all console output */
|
|
43
|
+
silent?: boolean;
|
|
44
|
+
/** Custom logger */
|
|
45
|
+
logger?: SDKLogger;
|
|
46
|
+
/** In-memory session (no persistence) */
|
|
47
|
+
inMemory?: boolean;
|
|
48
|
+
/** Abort signal for external control */
|
|
49
|
+
signal?: AbortSignal;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Simplified wrapper for Catui SDK.
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* ```typescript
|
|
56
|
+
* // Minimal usage
|
|
57
|
+
* const agent = new CatuiAgent();
|
|
58
|
+
* await agent.init();
|
|
59
|
+
* const result = await agent.run('Hello');
|
|
60
|
+
*
|
|
61
|
+
* // With explicit config
|
|
62
|
+
* const agent = new CatuiAgent({
|
|
63
|
+
* apiKey: 'sk-xxx',
|
|
64
|
+
* silent: true,
|
|
65
|
+
* });
|
|
66
|
+
* await agent.init();
|
|
67
|
+
* ```
|
|
68
|
+
*/
|
|
69
|
+
export declare class CatuiAgent {
|
|
70
|
+
private session;
|
|
71
|
+
private sessionResult;
|
|
72
|
+
private logger;
|
|
73
|
+
private options;
|
|
74
|
+
private cwd;
|
|
75
|
+
private initialized;
|
|
76
|
+
private collectedText;
|
|
77
|
+
private eventListeners;
|
|
78
|
+
constructor(options?: CatuiAgentOptions);
|
|
79
|
+
/**
|
|
80
|
+
* Initialize the agent session.
|
|
81
|
+
* Must be called before run/chat.
|
|
82
|
+
*/
|
|
83
|
+
init(): Promise<void>;
|
|
84
|
+
/**
|
|
85
|
+
* Resolve constructor-provided provider/model into a Model<any>.
|
|
86
|
+
*
|
|
87
|
+
* Lookup order:
|
|
88
|
+
* 1. Existing entry in modelRegistry (e.g. ~/.catui/agents/default/models.json
|
|
89
|
+
* already declares this provider/model — common case for users who ran
|
|
90
|
+
* /sal:setup or hand-edited models.json).
|
|
91
|
+
* 2. Dynamic registration when caller supplied baseUrl + apiKey — lets a
|
|
92
|
+
* one-line constructor call wire up a brand-new OpenAI-compatible
|
|
93
|
+
* endpoint without touching disk.
|
|
94
|
+
* 3. Otherwise return undefined and let createAgentSession fall back to
|
|
95
|
+
* findInitialModel() (built-in default). The logger surfaces a warning
|
|
96
|
+
* in this case so the caller knows their args were not honoured.
|
|
97
|
+
*/
|
|
98
|
+
private resolveRequestedModel;
|
|
99
|
+
/**
|
|
100
|
+
* Handle session events - collects text for run()
|
|
101
|
+
*/
|
|
102
|
+
private handleEvent;
|
|
103
|
+
/**
|
|
104
|
+
* Ensure session is initialized.
|
|
105
|
+
*/
|
|
106
|
+
private ensureInit;
|
|
107
|
+
/**
|
|
108
|
+
* Run a complete task - returns final result.
|
|
109
|
+
* Blocks until agent finishes all tool calls.
|
|
110
|
+
*
|
|
111
|
+
* @example
|
|
112
|
+
* ```typescript
|
|
113
|
+
* await agent.init();
|
|
114
|
+
* const result = await agent.run('Read README.md and summarize');
|
|
115
|
+
* ```
|
|
116
|
+
*/
|
|
117
|
+
run(message: string): Promise<string>;
|
|
118
|
+
/**
|
|
119
|
+
* Send a prompt and collect events.
|
|
120
|
+
*
|
|
121
|
+
* @example
|
|
122
|
+
* ```typescript
|
|
123
|
+
* await agent.init();
|
|
124
|
+
* agent.subscribe((event) => {
|
|
125
|
+
* if (event.type === 'tool_call') {
|
|
126
|
+
* console.log('Tool:', event.name);
|
|
127
|
+
* }
|
|
128
|
+
* });
|
|
129
|
+
* await agent.prompt('Hello');
|
|
130
|
+
* ```
|
|
131
|
+
*/
|
|
132
|
+
prompt(message: string): Promise<void>;
|
|
133
|
+
/**
|
|
134
|
+
* Reset the session (clear conversation history, start a new session).
|
|
135
|
+
*/
|
|
136
|
+
reset(): Promise<void>;
|
|
137
|
+
/**
|
|
138
|
+
* Shutdown the session.
|
|
139
|
+
*/
|
|
140
|
+
shutdown(): Promise<void>;
|
|
141
|
+
/**
|
|
142
|
+
* Subscribe to agent events.
|
|
143
|
+
*
|
|
144
|
+
* @example
|
|
145
|
+
* ```typescript
|
|
146
|
+
* await agent.init();
|
|
147
|
+
* agent.subscribe((event) => {
|
|
148
|
+
* if (event.type === 'sdk:error') {
|
|
149
|
+
* console.error('SDK error:', event.error);
|
|
150
|
+
* }
|
|
151
|
+
* });
|
|
152
|
+
* ```
|
|
153
|
+
*/
|
|
154
|
+
subscribe(listener: (event: AgentSessionEvent) => void): void;
|
|
155
|
+
/**
|
|
156
|
+
* Remove event subscription.
|
|
157
|
+
*/
|
|
158
|
+
unsubscribe(listener: (event: AgentSessionEvent) => void): void;
|
|
159
|
+
/**
|
|
160
|
+
* Check if agent is initialized.
|
|
161
|
+
*/
|
|
162
|
+
isInitialized(): boolean;
|
|
163
|
+
/**
|
|
164
|
+
* Get last collected text.
|
|
165
|
+
*/
|
|
166
|
+
getLastText(): string;
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Quick factory for CatuiAgent with auto-init.
|
|
170
|
+
*
|
|
171
|
+
* @example
|
|
172
|
+
* ```typescript
|
|
173
|
+
* const agent = await quickAgent({ apiKey: 'sk-xxx' });
|
|
174
|
+
* ```
|
|
175
|
+
*/
|
|
176
|
+
export declare function quickAgent(options?: CatuiAgentOptions): Promise<CatuiAgent>;
|
|
177
|
+
/**
|
|
178
|
+
* Legacy compatibility alias for SDK users migrating from the Pencil brand.
|
|
179
|
+
* New code should import CatuiAgent/CatuiAgentOptions from @catui/agent.
|
|
180
|
+
*/
|
|
181
|
+
export { CatuiAgent as PencilAgent };
|
|
182
|
+
export type { CatuiAgentOptions as PencilAgentOptions };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var d=Object.defineProperty;var r=(o,e)=>d(o,"name",{value:e,configurable:!0});import{createAgentSession as c,silentLogger as p,defaultLogger as u}from"./sdk.js";import{allTools as g}from"../tools/index.js";import{AuthStorage as l}from"../platform/config/auth-storage.js";import{SessionManager as a}from"../session/session-manager.js";import{ModelRegistry as f}from"../model-registry.js";class h{static{r(this,"CatuiAgent")}session=null;sessionResult=null;logger;options;cwd;initialized=!1;collectedText="";eventListeners=[];constructor(e={}){this.cwd=e.cwd??process.cwd(),this.options=e,this.logger=e.silent?p:e.logger??u}async init(){if(this.initialized)return;const e=this.options.inMemory?l.inMemory():l.create(),s=new f(e);this.options.apiKey&&this.options.provider&&await e.set(this.options.provider,{type:"api_key",key:this.options.apiKey});const t=this.resolveRequestedModel(s);let n;this.options.tools&&this.options.tools.length>0&&(n=this.options.tools.map(i=>g[i]).filter(i=>i!==void 0)),this.sessionResult=await c({cwd:this.cwd,model:t,thinkingLevel:this.options.thinkingLevel,tools:n,authStorage:e,modelRegistry:s,sessionManager:this.options.inMemory?a.inMemory():a.create(this.cwd),enableMCP:this.options.enableMCP??!1,enableSoul:this.options.enableSoul??!1,silent:this.options.silent,logger:this.logger,signal:this.options.signal}),this.session=this.sessionResult.session,this.sessionResult.modelFallbackMessage&&this.logger.warn(this.sessionResult.modelFallbackMessage),this.session.subscribe(this.handleEvent.bind(this)),this.initialized=!0}resolveRequestedModel(e){const s=this.options.provider,t=this.options.model;if(!s||!t)return;const n=e.find(s,t);if(n)return n;if(this.options.baseUrl)try{e.registerProvider(s,{api:this.options.api??"openai-completions",baseUrl:this.options.baseUrl,apiKey:this.options.apiKey,models:[{id:t,name:t,reasoning:!1,input:["text"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:8192}]});const i=e.find(s,t);if(i)return i}catch(i){this.logger.warn(`[CatuiAgent] dynamic provider registration failed for ${s}/${t}: ${i.message}`)}this.logger.warn(`[CatuiAgent] model ${s}/${t} not found in registry. Either add it to ~/.catui/agent/models.json or pass { baseUrl, apiKey } to register it dynamically. Falling back to default model selection.`)}handleEvent(e){for(const s of this.eventListeners)s(e);if(e.type==="message_end"&&e.message?.role==="assistant"){const s=e.message.content;if(typeof s=="string")this.collectedText+=s;else if(Array.isArray(s))for(const t of s)t.type==="text"&&(this.collectedText+=t.text)}}ensureInit(){if(!this.initialized||!this.session)throw new Error("CatuiAgent not initialized. Call init() first.")}async run(e){return this.ensureInit(),this.collectedText="",await this.session.prompt(e),this.collectedText}async prompt(e){this.ensureInit(),await this.session.prompt(e)}async reset(){this.ensureInit(),this.collectedText="",await this.session.newSession()}async shutdown(){this.session&&(this.logger.info("Session shutdown"),this.initialized=!1,this.session=null,this.sessionResult=null)}subscribe(e){this.eventListeners.push(e)}unsubscribe(e){const s=this.eventListeners.indexOf(e);s>=0&&this.eventListeners.splice(s,1)}isInitialized(){return this.initialized}getLastText(){return this.collectedText}}async function M(o={}){const e=new h(o);return await e.init(),e}r(M,"quickAgent");export{h as CatuiAgent,h as PencilAgent,M as quickAgent};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* [WHO]: Provides CompactionController — manual context-window compaction + its abort state
|
|
3
|
+
* [FROM]: Depends on session/compaction (compact, prepareCompaction, CompactionResult),
|
|
4
|
+
* session-manager (CompactionEntry), extensions-host (SessionBeforeCompactResult),
|
|
5
|
+
* platform/abort-slot, and ./session-context (CompactionControllerContext)
|
|
6
|
+
* [TO]: Consumed by core/runtime/agent-session.ts (constructs one, delegates compact()/abortCompaction())
|
|
7
|
+
* [HERE]: core/runtime/agent-session.ts split (P4.x-a) — owns the manual-compaction abort slot
|
|
8
|
+
*
|
|
9
|
+
* Extracted from AgentSession (AS04). Owns the manual compaction flow and its cancellation state.
|
|
10
|
+
* Auto-compaction (loop-driven) is a later slice (P4.x-b). Session state is reached through the
|
|
11
|
+
* narrow CompactionControllerContext; behavior is identical to the former AgentSession.compact().
|
|
12
|
+
*/
|
|
13
|
+
import type { AgentMessage } from "@catui/agent-core";
|
|
14
|
+
import { type CompactionResult } from "../session/compaction/index.js";
|
|
15
|
+
import type { CompactionControllerContext } from "./session-context.js";
|
|
16
|
+
export declare class CompactionController {
|
|
17
|
+
private readonly ctx;
|
|
18
|
+
/** Cancellation slot for the in-flight manual compaction. */
|
|
19
|
+
private readonly _slot;
|
|
20
|
+
/** Cancellation slot for the in-flight auto (loop-driven) compaction. */
|
|
21
|
+
private readonly _autoSlot;
|
|
22
|
+
constructor(ctx: CompactionControllerContext);
|
|
23
|
+
/** Whether a manual or auto compaction is currently running. */
|
|
24
|
+
get isCompacting(): boolean;
|
|
25
|
+
/** Cancel an in-progress compaction (manual or auto). */
|
|
26
|
+
abort(): void;
|
|
27
|
+
/** Whether auto-compaction is enabled. */
|
|
28
|
+
get autoCompactionEnabled(): boolean;
|
|
29
|
+
/** Toggle auto-compaction. */
|
|
30
|
+
setAutoCompactionEnabled(enabled: boolean): void;
|
|
31
|
+
/**
|
|
32
|
+
* Compact the current branch: summarize older entries and rebuild agent messages.
|
|
33
|
+
* Detaches the agent during the operation and reconnects in finally.
|
|
34
|
+
*/
|
|
35
|
+
compact(customInstructions?: string): Promise<CompactionResult>;
|
|
36
|
+
/**
|
|
37
|
+
* Run auto-compaction (loop-driven). Performs the compaction + emits
|
|
38
|
+
* auto_compaction_start/end, and returns the rebuilt messages on success (or undefined when
|
|
39
|
+
* compaction was skipped/aborted/failed). The loop-continuation decision (retry / kick the
|
|
40
|
+
* queue) stays in AgentSession — this only owns the compaction itself.
|
|
41
|
+
*/
|
|
42
|
+
runAuto(reason: "overflow" | "threshold", willRetry: boolean): Promise<AgentMessage[] | undefined>;
|
|
43
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var S=Object.defineProperty;var w=(E,e)=>S(E,"name",{value:e,configurable:!0});import{compact as C,prepareCompaction as b}from"../session/compaction/index.js";import{AbortSlot as A}from"../platform/abort-slot.js";class v{static{w(this,"CompactionController")}ctx;_slot=new A;_autoSlot=new A;constructor(e){this.ctx=e}get isCompacting(){return this._slot.active||this._autoSlot.active}abort(){this._slot.abort(),this._autoSlot.abort()}get autoCompactionEnabled(){return this.ctx.getAutoCompactionEnabled()}setAutoCompactionEnabled(e){this.ctx.setAutoCompactionEnabled(e)}async compact(e){this.ctx.logInfo("Manual compaction started",{hasCustomInstructions:!!e}),this.ctx.disconnectFromAgent(),await this.ctx.abortAgent();const d=this._slot.begin();try{const f=this.ctx.getModel();if(!f)throw new Error("No model selected");const u=await this.ctx.getApiKey(f);if(!u)throw new Error(`No API key for ${f.provider}`);const o=this.ctx.getBranch(),p=this.ctx.getCompactionSettings(),h=b(o,p);if(!h)throw o[o.length-1]?.type==="compaction"?new Error("Already compacted"):new Error("Nothing to compact (session too small)");let i,s=!1;const m=this.ctx.getExtensionRunner();if(m?.hasHandlers("session_before_compact")){const t=await m.emit({type:"session_before_compact",preparation:h,branchEntries:o,customInstructions:e,signal:d});if(t?.cancel)throw new Error("Compaction cancelled");t?.compaction&&(i=t.compaction,s=!0)}let a,r,c,l;if(i)a=i.summary,r=i.firstKeptEntryId,c=i.tokensBefore,l=i.details;else{const t=await C(h,f,u,e,d);a=t.summary,r=t.firstKeptEntryId,c=t.tokensBefore,l=t.details}if(d.aborted)throw new Error("Compaction cancelled");this.ctx.appendCompaction(a,r,c,l,s);const y=this.ctx.getEntries();this.ctx.applyCompactedMessages();const x=y.find(t=>t.type==="compaction"&&t.summary===a);return m&&x&&await m.emit({type:"session_compact",compactionEntry:x,fromExtension:s}),{summary:a,firstKeptEntryId:r,tokensBefore:c,details:l}}finally{this._slot.clear(),this.ctx.reconnectToAgent()}}async runAuto(e,d){this.ctx.logInfo("Auto-compaction triggered",{reason:e,willRetry:d});const f=this.ctx.getCompactionSettings();this.ctx.emitAutoCompactionStart(e);const u=this._autoSlot.begin();try{const o=this.ctx.getModel();if(!o){this.ctx.emitAutoCompactionEnd({result:void 0,aborted:!1,willRetry:!1});return}const p=await this.ctx.getApiKey(o);if(!p){this.ctx.emitAutoCompactionEnd({result:void 0,aborted:!1,willRetry:!1});return}const h=this.ctx.getBranch(),i=b(h,f);if(!i){this.ctx.emitAutoCompactionEnd({result:void 0,aborted:!1,willRetry:!1});return}let s,m=!1;const a=this.ctx.getExtensionRunner();if(a?.hasHandlers("session_before_compact")){const n=await a.emit({type:"session_before_compact",preparation:i,branchEntries:h,customInstructions:void 0,signal:u});if(n?.cancel){this.ctx.emitAutoCompactionEnd({result:void 0,aborted:!0,willRetry:!1});return}n?.compaction&&(s=n.compaction,m=!0)}let r,c,l,y;if(s)r=s.summary,c=s.firstKeptEntryId,l=s.tokensBefore,y=s.details;else{const n=await C(i,o,p,void 0,u);r=n.summary,c=n.firstKeptEntryId,l=n.tokensBefore,y=n.details}if(u.aborted){this.ctx.emitAutoCompactionEnd({result:void 0,aborted:!0,willRetry:!1});return}this.ctx.appendCompaction(r,c,l,y,m);const x=this.ctx.getEntries(),t=this.ctx.applyCompactedMessages(),g=x.find(n=>n.type==="compaction"&&n.summary===r);a&&g&&await a.emit({type:"session_compact",compactionEntry:g,fromExtension:m});const _={summary:r,firstKeptEntryId:c,tokensBefore:l,details:y};return this.ctx.emitAutoCompactionEnd({result:_,aborted:!1,willRetry:d}),t}catch(o){const p=o instanceof Error?o.message:"compaction failed";this.ctx.emitAutoCompactionEnd({result:void 0,aborted:!1,willRetry:!1,errorMessage:e==="overflow"?`Context overflow recovery failed: ${p}`:`Auto-compaction failed: ${p}`});return}finally{this._autoSlot.clear()}}}export{v as CompactionController};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* [WHO]: Provides createDefaultRuntimeTools()
|
|
3
|
+
* [FROM]: Depends on SettingsManager and core/tools factories for default runtime tool wiring
|
|
4
|
+
* [TO]: Consumed by AgentSession runtime construction
|
|
5
|
+
* [HERE]: core/runtime/default-tools.ts - isolates default tool configuration from session orchestration
|
|
6
|
+
*/
|
|
7
|
+
import type { SettingsManager } from "../platform/config/settings-manager.js";
|
|
8
|
+
import { type Tool, type ToolName } from "../tools/index.js";
|
|
9
|
+
export declare function createDefaultRuntimeTools(cwd: string, settingsManager: SettingsManager): Record<ToolName, Tool>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var a=Object.defineProperty;var o=(e,r)=>a(e,"name",{value:r,configurable:!0});import{createAllTools as i,createWorkspaceWriteGuard as m}from"../tools/index.js";function f(e,r){const t=m(e);return i(e,{read:{autoResizeImages:r.getImageAutoResize()},bash:{commandPrefix:r.getShellCommandPrefix()},edit:{beforeWrite:t},write:{beforeWrite:t}})}o(f,"createDefaultRuntimeTools");export{f as createDefaultRuntimeTools};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* [WHO]: Provides ExtensionEventBridge, ExtensionEventBridgeDeps
|
|
3
|
+
* [FROM]: Depends on agent-core AgentEvent, extensions-host event types, and ExtensionRunner
|
|
4
|
+
* [TO]: Consumed by core/runtime/agent-session.ts for extension-facing event fanout
|
|
5
|
+
* [HERE]: core/runtime/event-bridge.ts - narrow extension event mapping extracted from AgentSession
|
|
6
|
+
*
|
|
7
|
+
* Extracted from AgentSession (P4.7 / AS07). This bridge owns only AgentEvent ->
|
|
8
|
+
* extension event mapping and extension turn indexing. AgentSession keeps public
|
|
9
|
+
* subscribe(), session persistence, retry/compaction ordering, and Soul lifecycle work.
|
|
10
|
+
*/
|
|
11
|
+
import type { AgentEvent } from "@catui/agent-core";
|
|
12
|
+
import { type ExtensionRunner } from "../extensions-host/index.js";
|
|
13
|
+
export interface ExtensionEventBridgeDeps {
|
|
14
|
+
getExtensionRunner: () => ExtensionRunner | undefined;
|
|
15
|
+
}
|
|
16
|
+
export declare class ExtensionEventBridge {
|
|
17
|
+
private readonly deps;
|
|
18
|
+
private _turnIndex;
|
|
19
|
+
constructor(deps: ExtensionEventBridgeDeps);
|
|
20
|
+
emitExtensionEvent(event: AgentEvent): Promise<void>;
|
|
21
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var i=Object.defineProperty;var o=(a,t)=>i(a,"name",{value:t,configurable:!0});class l{static{o(this,"ExtensionEventBridge")}deps;_turnIndex=0;constructor(t){this.deps=t}async emitExtensionEvent(t){const s=this.deps.getExtensionRunner();if(s){if(t.type==="agent_start")this._turnIndex=0,await s.emit({type:"agent_start"});else if(t.type==="agent_result"){const e={...t};await s.emit(e)}else if(t.type==="turn_start"){const e={type:"turn_start",turnIndex:this._turnIndex,timestamp:Date.now()};await s.emit(e)}else if(t.type==="turn_end"){const e={type:"turn_end",turnIndex:this._turnIndex,message:t.message,toolResults:t.toolResults};await s.emit(e),this._turnIndex++}else if(t.type==="message_start"){const e={type:"message_start",message:t.message};await s.emit(e)}else if(t.type==="message_update"){const e={type:"message_update",message:t.message,assistantMessageEvent:t.assistantMessageEvent};await s.emit(e)}else if(t.type==="message_end"){const e={type:"message_end",message:t.message};await s.emit(e)}else if(t.type==="tool_execution_start"){const e={type:"tool_execution_start",toolCallId:t.toolCallId,toolName:t.toolName,args:t.args};await s.emit(e)}else if(t.type==="tool_execution_update"){const e={type:"tool_execution_update",toolCallId:t.toolCallId,toolName:t.toolName,args:t.args,partialResult:t.partialResult};await s.emit(e)}else if(t.type==="tool_execution_end"){const e={type:"tool_execution_end",toolCallId:t.toolCallId,toolName:t.toolName,result:t.result,isError:t.isError};await s.emit(e)}}}}export{l as ExtensionEventBridge};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export interface EventBus {
|
|
2
|
+
emit(channel: string, data: unknown): void;
|
|
3
|
+
on(channel: string, handler: (data: unknown) => void): () => void;
|
|
4
|
+
}
|
|
5
|
+
export interface EventBusController extends EventBus {
|
|
6
|
+
clear(): void;
|
|
7
|
+
}
|
|
8
|
+
export declare function createEventBus(): EventBusController;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var s=Object.defineProperty;var t=(e,r)=>s(e,"name",{value:r,configurable:!0});import{EventEmitter as a}from"node:events";function u(){const e=new a;return{emit:t((r,n)=>{e.emit(r,n)},"emit"),on:t((r,n)=>{const o=t(async i=>{try{await n(i)}catch(m){e.emit("eventbus:handler-error",{channel:r,error:m})}},"safeHandler");return e.on(r,o),()=>e.off(r,o)},"on"),clear:t(()=>{e.removeAllListeners()},"clear")}}t(u,"createEventBus");export{u as createEventBus};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* [WHO]: Provides exportSessionHtml(), getLastAssistantText()
|
|
3
|
+
* [FROM]: Depends on agent-core/ai public message types, export-html, ExtensionRunner, SessionManager, Theme
|
|
4
|
+
* [TO]: Consumed by core/runtime/agent-session.ts facade methods
|
|
5
|
+
* [HERE]: core/runtime/export-bridge.ts - HTML export bridge extracted from AgentSession
|
|
6
|
+
*
|
|
7
|
+
* Extracted from AgentSession (P4.6). This module owns HTML export wiring and last-assistant
|
|
8
|
+
* text extraction. AgentSession remains the public facade and injects the optional Theme.
|
|
9
|
+
*/
|
|
10
|
+
import type { AgentMessage, AgentState } from "@catui/agent-core";
|
|
11
|
+
import type { ExtensionRunner } from "../extensions-host/index.js";
|
|
12
|
+
import type { SessionManager } from "../session/session-manager.js";
|
|
13
|
+
import type { Theme } from "../theme-contract.js";
|
|
14
|
+
export interface ExportSessionHtmlOptions {
|
|
15
|
+
sessionManager: SessionManager;
|
|
16
|
+
state: AgentState;
|
|
17
|
+
outputPath?: string;
|
|
18
|
+
themeName?: string;
|
|
19
|
+
extensionRunner?: ExtensionRunner;
|
|
20
|
+
theme?: Theme;
|
|
21
|
+
}
|
|
22
|
+
export declare function exportSessionHtml(options: ExportSessionHtmlOptions): Promise<string>;
|
|
23
|
+
export declare function getLastAssistantText(messages: ReadonlyArray<AgentMessage>): string | undefined;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var i=Object.defineProperty;var o=(e,t)=>i(e,"name",{value:t,configurable:!0});import{exportSessionToHtml as s}from"../export-html/index.js";import{createToolHtmlRenderer as a}from"../export-html/tool-renderer.js";async function m(e){const t=e.extensionRunner&&e.theme?a({getToolDefinition:o(r=>e.extensionRunner.getToolDefinition(r),"getToolDefinition"),theme:e.theme}):void 0;return await s(e.sessionManager,e.state,{outputPath:e.outputPath,themeName:e.themeName,toolRenderer:t})}o(m,"exportSessionHtml");function c(e){const t=e.slice().reverse().find(n=>!(n.role!=="assistant"||n.stopReason==="aborted"&&n.content.length===0));if(!t)return;let r="";for(const n of t.content)n.type==="text"&&(r+=n.text);return r.trim()||void 0}o(c,"getLastAssistantText");export{m as exportSessionHtml,c as getLastAssistantText};
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* [WHO]: Provides bindExtensionCore() — wires AgentSession host methods to ExtensionRunner APIs, including LLM call telemetry (every ctx.completeSimple / completeSimpleWithUsage / completeJson emits one ext_llm_calls row)
|
|
3
|
+
* [FROM]: Depends on ExtensionRunner, model/session/resource abstractions, slash command metadata, core/platform/telemetry (getExtCallerContext for caller attribution + LlmCallEventInput shape)
|
|
4
|
+
* [TO]: Consumed by AgentSession when initializing extension runtime capabilities
|
|
5
|
+
* [HERE]: core/runtime/extension-core-bindings.ts - the LLM-call instrumentation point; reads AsyncLocalStorage context pushed by runner.invokeCommand (user-initiated=true) or runner.invokeHookHandler (user-initiated=false) to attribute each call. is_user_initiated=false rows grouped by extension_name + caller_context are the idle-thinking bug detector.
|
|
6
|
+
*/
|
|
7
|
+
import type { Model } from "@catui/ai/types";
|
|
8
|
+
import type { ThinkingLevel } from "@catui/agent-core";
|
|
9
|
+
import type { SettingsManager } from "../platform/config/settings-manager.js";
|
|
10
|
+
import type { ResourceLoader } from "../platform/config/resource-loader.js";
|
|
11
|
+
import type { ExtensionActions, ExtensionRunner, ToolInfo } from "../extensions-host/index.js";
|
|
12
|
+
import type { ModelRegistry } from "../model-registry.js";
|
|
13
|
+
import type { PromptTemplate } from "../prompt/prompt-templates.js";
|
|
14
|
+
import type { SessionManager } from "../session/session-manager.js";
|
|
15
|
+
import type { ContextUsage } from "../extensions-host/types.js";
|
|
16
|
+
import type { CompactionResult } from "../session/compaction/index.js";
|
|
17
|
+
type SendMessage = ExtensionActions["sendMessage"];
|
|
18
|
+
type SendUserMessage = ExtensionActions["sendUserMessage"];
|
|
19
|
+
export interface ExtensionCoreBindingHost {
|
|
20
|
+
promptTemplates: ReadonlyArray<PromptTemplate>;
|
|
21
|
+
resourceLoader: ResourceLoader;
|
|
22
|
+
modelRegistry: ModelRegistry;
|
|
23
|
+
sessionManager: SessionManager;
|
|
24
|
+
settingsManager: SettingsManager;
|
|
25
|
+
shutdownHandler?: () => void;
|
|
26
|
+
soulManager?: unknown;
|
|
27
|
+
get model(): Model<any> | undefined;
|
|
28
|
+
get thinkingLevel(): ThinkingLevel;
|
|
29
|
+
get isStreaming(): boolean;
|
|
30
|
+
get pendingMessageCount(): number;
|
|
31
|
+
get systemPrompt(): string;
|
|
32
|
+
sendCustomMessage: (message: Parameters<SendMessage>[0], options?: Parameters<SendMessage>[1]) => Promise<void>;
|
|
33
|
+
sendUserMessage: (content: Parameters<SendUserMessage>[0], options?: Parameters<SendUserMessage>[1]) => Promise<void>;
|
|
34
|
+
executeSlashCommand(text: string): Promise<boolean>;
|
|
35
|
+
getActiveToolNames(): string[];
|
|
36
|
+
getAllTools(): ToolInfo[];
|
|
37
|
+
setActiveToolsByName(toolNames: string[]): void;
|
|
38
|
+
setModel(model: Model<any>): Promise<void>;
|
|
39
|
+
setThinkingLevel(level: ThinkingLevel): void;
|
|
40
|
+
abort(): Promise<void> | void;
|
|
41
|
+
clearFollowUpQueue(): void;
|
|
42
|
+
getContextUsage(): ContextUsage | undefined;
|
|
43
|
+
compact(customInstructions?: string): Promise<CompactionResult>;
|
|
44
|
+
}
|
|
45
|
+
export declare function bindExtensionCore(runner: ExtensionRunner, host: ExtensionCoreBindingHost): void;
|
|
46
|
+
export {};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
var E=Object.defineProperty;var t=(n,e)=>E(n,"name",{value:e,configurable:!0});import{completeSimple as S}from"@catui/ai/stream";import{getExtCallerContext as T}from"../platform/telemetry/index.js";import{buildExtensionSlashCommands as A}from"./slash-command-catalog.js";function I(n,e){switch(n.api){case"openai-completions":return{type:"function",function:{name:e}};case"anthropic-messages":case"bedrock-converse-stream":return{type:"tool",name:e};case"google-generative-ai":case"google-gemini-cli":case"google-vertex":return"any";default:return"required"}}t(I,"getStructuredToolChoice");function L(n){return n.type==="text"}t(L,"isTextContent");function N(n,e){return n.type==="toolCall"&&"name"in n&&n.name===e}t(N,"isNamedToolCall");function v(n){const e=T();return{extensionName:e?.extensionName??"unknown",callerContext:e?.callerContext??"unknown",isUserInitiated:e?.isUserInitiated??!1,modelId:n.model?.id??null,tokensIn:n.usage?.input??null,tokensOut:n.usage?.output??null,costTotal:n.usage?.cost?.total??null,durationMs:Math.round(performance.now()-n.startPerf),ok:n.ok,errorCode:n.errorCode,startedAt:n.startedAt,endedAt:new Date,sessionId:e?.sessionId??n.host.sessionManager.getSessionId(),runId:e?.runId??null,variant:e?.variant??null}}t(v,"buildLlmCallEvent");async function P(n,e,o,r){return(await M(n,e,o,r))?.text}t(P,"completeTextWithCurrentModel");async function M(n,e,o,r){const a=e.model;if(!a)return;const s=await e.modelRegistry.getApiKey(a);if(!s)return;const c=new Date,d=performance.now();let i=!0,g=null,m,u;try{const l=await S(a,{systemPrompt:o,messages:[{role:"user",content:r,timestamp:Date.now()}]},{maxTokens:1500,temperature:.2,apiKey:s});m=l.usage,u=l.content?.filter(L).map(p=>p.text??"").join("")??""}catch(l){i=!1,g=l instanceof Error?l.constructor.name:"unknown"}if(n.writeLlmCallEvent(v({host:e,model:a,startedAt:c,startPerf:d,ok:i,errorCode:g,usage:m})),!(!i||u===void 0||m===void 0))return{text:u,usage:m}}t(M,"completeTextWithUsage");async function U(n,e,o,r,a,s){const c=e.model;if(!c)return;const d=await e.modelRegistry.getApiKey(c);if(!d)return;const i=s?.toolName||"submit_json",g=new Date,m=performance.now();let u=!0,l=null,p,w;try{const f=a,k={maxTokens:1500,temperature:0,apiKey:d,toolChoice:I(c,i)},x=await S(c,{systemPrompt:`${o}
|
|
2
|
+
|
|
3
|
+
You must call the ${i} tool exactly once with the final structured JSON payload. Do not answer in prose.`,messages:[{role:"user",content:r,timestamp:Date.now()}],tools:[{name:i,description:"Submit the final structured JSON payload.",parameters:f}]},k);p=x.usage;const y=x.content?.find(C=>N(C,i));if(y){const C=s?.resultKey?y.arguments?.[s.resultKey]:y.arguments;w=JSON.stringify(C)}}catch(f){u=!1,l=f instanceof Error?f.constructor.name:"unknown"}if(n.writeLlmCallEvent(v({host:e,model:c,startedAt:g,startPerf:m,ok:u,errorCode:l,usage:p})),!!u)return w}t(U,"completeJsonWithCurrentModel");function O(n,e){n.bindCore({sendMessage:t((o,r)=>{e.sendCustomMessage(o,r).catch(a=>{n.emitError({extensionPath:"<runtime>",event:"send_message",error:a instanceof Error?a.message:String(a)})})},"sendMessage"),sendUserMessage:t((o,r)=>{e.sendUserMessage(o,r).catch(a=>{n.emitError({extensionPath:"<runtime>",event:"send_user_message",error:a instanceof Error?a.message:String(a)})})},"sendUserMessage"),executeCommand:t(async o=>{try{return await e.executeSlashCommand(o)}catch(r){return n.emitError({extensionPath:"<runtime>",event:"execute_command",error:r instanceof Error?r.message:String(r)}),!1}},"executeCommand"),appendEntry:t((o,r)=>{e.sessionManager.appendCustomEntry(o,r)},"appendEntry"),setSessionName:t(o=>{e.sessionManager.appendSessionInfo(o)},"setSessionName"),getSessionName:t(()=>e.sessionManager.getSessionName(),"getSessionName"),setLabel:t((o,r)=>{e.sessionManager.appendLabelChange(o,r)},"setLabel"),getActiveTools:t(()=>e.getActiveToolNames(),"getActiveTools"),getAllTools:t(()=>e.getAllTools(),"getAllTools"),setActiveTools:t(o=>e.setActiveToolsByName(o),"setActiveTools"),getCommands:t(()=>A({promptTemplates:e.promptTemplates,resourceLoader:e.resourceLoader,extensionRunner:n}),"getCommands"),setModel:t(async o=>await e.modelRegistry.getApiKey(o)?(await e.setModel(o),!0):!1,"setModel"),getThinkingLevel:t(()=>e.thinkingLevel,"getThinkingLevel"),setThinkingLevel:t(o=>e.setThinkingLevel(o),"setThinkingLevel")},{getModel:t(()=>e.model,"getModel"),completeSimple:t((o,r)=>P(n,e,o,r),"completeSimple"),completeSimpleWithUsage:t((o,r)=>M(n,e,o,r),"completeSimpleWithUsage"),completeJson:t((o,r,a,s)=>U(n,e,o,r,a,s),"completeJson"),getSettings:t(()=>e.settingsManager.getSettings(),"getSettings"),isIdle:t(()=>!e.isStreaming,"isIdle"),abort:t(()=>{e.abort()},"abort"),clearFollowUpQueue:t(()=>e.clearFollowUpQueue(),"clearFollowUpQueue"),hasPendingMessages:t(()=>e.pendingMessageCount>0,"hasPendingMessages"),shutdown:t(()=>{e.shutdownHandler?.()},"shutdown"),getContextUsage:t(()=>e.getContextUsage(),"getContextUsage"),compact:t(o=>{(async()=>{try{const r=await e.compact(o?.customInstructions);o?.onComplete?.(r)}catch(r){const a=r instanceof Error?r:new Error(String(r));o?.onError?.(a)}})()},"compact"),getSystemPrompt:t(()=>e.systemPrompt,"getSystemPrompt"),getSoulManager:t(()=>e.soulManager,"getSoulManager"),getSkills:t(()=>e.resourceLoader.getSkills().skills,"getSkills")})}t(O,"bindExtensionCore");export{O as bindExtensionCore};
|