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 @@
|
|
|
1
|
+
var s=Object.defineProperty;var r=(o,t)=>s(o,"name",{value:t,configurable:!0});import{MODELS as p}from"./models.generated.js";const e=new Map;for(const[o,t]of Object.entries(p)){const c=new Map;for(const[i,n]of Object.entries(t))c.set(i,n);e.set(o,c)}function f(o,t){return e.get(o)?.get(t)}r(f,"getModel");function l(){return Array.from(e.keys())}r(l,"getProviders");function a(o){const t=e.get(o);return t?Array.from(t.values()):[]}r(a,"getModels");function h(o,t){return t.cost.input=o.cost.input/1e6*t.input,t.cost.output=o.cost.output/1e6*t.output,t.cost.cacheRead=o.cost.cacheRead/1e6*t.cacheRead,t.cost.cacheWrite=o.cost.cacheWrite/1e6*t.cacheWrite,t.cost.total=t.cost.input+t.cost.output+t.cost.cacheRead+t.cost.cacheWrite,t.cost}r(h,"calculateCost");function v(o){return o.id.includes("gpt-5.2")||o.id.includes("gpt-5.3")?!0:o.api==="anthropic-messages"?o.id.includes("opus-4-6")||o.id.includes("opus-4.6"):!1}r(v,"supportsXhigh");function M(o,t){return!o||!t?!1:o.id===t.id&&o.provider===t.provider}r(M,"modelsAreEqual");export{h as calculateCost,f as getModel,a as getModels,l as getProviders,M as modelsAreEqual,v as supportsXhigh};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export*from"./utils/overflow.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var b=Object.defineProperty;var g=(e,n)=>b(e,"name",{value:n,configurable:!0});import{BedrockRuntimeClient as _,StopReason as h,CachePointType as S,CacheTTL as w,ConversationRole as f,ConverseStreamCommand as I,ImageFormat as m,ToolResultStatus as k}from"@aws-sdk/client-bedrock-runtime";import{calculateCost as B}from"../models.js";import{AssistantMessageEventStream as v}from"../utils/event-stream.js";import{parseStreamingJson as T}from"../utils/json-parse.js";import{sanitizeSurrogates as p}from"../utils/sanitize-unicode.js";import{adjustMaxTokensForThinking as U,buildBaseOptions as A,clampReasoning as O}from"./simple-options.js";import{transformMessages as N}from"./transform-messages.js";const x=g((e,n,t={})=>{const o=new v;return(async()=>{const s={role:"assistant",content:[],api:"bedrock-converse-stream",provider:e.provider,model:e.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:"stop",timestamp:Date.now()},r=s.content,c={profile:t.profile};if(typeof process<"u"&&(process.versions?.node||process.versions?.bun)){const i=t.region||process.env.AWS_REGION||process.env.AWS_DEFAULT_REGION;if(i?c.region=i:process.env.AWS_PROFILE||(c.region="us-east-1"),process.env.AWS_BEDROCK_SKIP_AUTH==="1"&&(c.credentials={accessKeyId:"dummy-access-key",secretAccessKey:"dummy-secret-key"}),process.env.HTTP_PROXY||process.env.HTTPS_PROXY||process.env.NO_PROXY||process.env.http_proxy||process.env.https_proxy||process.env.no_proxy){const a=await import("@smithy/node-http-handler"),u=await import("proxy-agent"),d=new u.ProxyAgent;c.requestHandler=new a.NodeHttpHandler({httpAgent:d,httpsAgent:d})}else if(process.env.AWS_BEDROCK_FORCE_HTTP1==="1"){const a=await import("@smithy/node-http-handler");c.requestHandler=new a.NodeHttpHandler}}else c.region=t.region||"us-east-1";try{const i=new _(c),a=F(t.cacheRetention),u={modelId:e.id,messages:K(n,e,a),system:J(n.systemPrompt,e,a),inferenceConfig:{maxTokens:t.maxTokens,temperature:t.temperature},toolConfig:X(n.tools,t.toolChoice),additionalModelRequestFields:q(e,t)};t?.onPayload?.(u);const d=new I(u),R=await i.send(d,{abortSignal:t.signal});for await(const l of R.stream)if(l.messageStart){if(l.messageStart.role!==f.ASSISTANT)throw new Error("Unexpected assistant message start but got user message start instead");o.push({type:"start",partial:s})}else if(l.contentBlockStart)P(l.contentBlockStart,r,s,o);else if(l.contentBlockDelta)H(l.contentBlockDelta,r,s,o);else if(l.contentBlockStop)M(l.contentBlockStop,r,s,o);else if(l.messageStop)s.stopReason=$(l.messageStop.stopReason);else if(l.metadata)D(l.metadata,e,s);else{if(l.internalServerException)throw new Error(`Internal server error: ${l.internalServerException.message}`);if(l.modelStreamErrorException)throw new Error(`Model stream error: ${l.modelStreamErrorException.message}`);if(l.validationException)throw new Error(`Validation error: ${l.validationException.message}`);if(l.throttlingException)throw new Error(`Throttling error: ${l.throttlingException.message}`);if(l.serviceUnavailableException)throw new Error(`Service unavailable: ${l.serviceUnavailableException.message}`)}if(t.signal?.aborted)throw new Error("Request was aborted");if(s.stopReason==="error"||s.stopReason==="aborted")throw new Error("An unknown error occurred");o.push({type:"done",reason:s.stopReason,message:s}),o.end()}catch(i){for(const a of s.content)delete a.index,delete a.partialJson;s.stopReason=t.signal?.aborted?"aborted":"error",s.errorMessage=i instanceof Error?i.message:JSON.stringify(i),o.push({type:"error",reason:s.stopReason,error:s}),o.end()}})(),o},"streamBedrock"),ne=g((e,n,t)=>{const o=A(e,t,void 0),s=t?.toolChoice;if(!t?.reasoning)return x(e,n,{...o,toolChoice:s,reasoning:void 0});if(e.id.includes("anthropic.claude")||e.id.includes("anthropic/claude")){if(E(e.id))return x(e,n,{...o,toolChoice:s,reasoning:t.reasoning,thinkingBudgets:t.thinkingBudgets});const r=U(o.maxTokens||0,e.maxTokens,t.reasoning,t.thinkingBudgets);return x(e,n,{...o,toolChoice:s,maxTokens:r.maxTokens,reasoning:t.reasoning,thinkingBudgets:{...t.thinkingBudgets||{},[O(t.reasoning)]:r.thinkingBudget}})}return x(e,n,{...o,toolChoice:s,reasoning:t.reasoning,thinkingBudgets:t.thinkingBudgets})},"streamSimpleBedrock");function P(e,n,t,o){const s=e.contentBlockIndex,r=e.start;if(r?.toolUse){const c={type:"toolCall",id:r.toolUse.toolUseId||"",name:r.toolUse.name||"",arguments:{},partialJson:"",index:s};t.content.push(c),o.push({type:"toolcall_start",contentIndex:n.length-1,partial:t})}}g(P,"handleContentBlockStart");function H(e,n,t,o){const s=e.contentBlockIndex,r=e.delta;let c=n.findIndex(a=>a.index===s),i=n[c];if(r?.text!==void 0){if(!i){const a={type:"text",text:"",index:s};t.content.push(a),c=n.length-1,i=n[c],o.push({type:"text_start",contentIndex:c,partial:t})}i.type==="text"&&(i.text+=r.text,o.push({type:"text_delta",contentIndex:c,delta:r.text,partial:t}))}else if(r?.toolUse&&i?.type==="toolCall")i.partialJson=(i.partialJson||"")+(r.toolUse.input||""),i.arguments=T(i.partialJson),o.push({type:"toolcall_delta",contentIndex:c,delta:r.toolUse.input||"",partial:t});else if(r?.reasoningContent){let a=i,u=c;if(!a){const d={type:"thinking",thinking:"",thinkingSignature:"",index:s};t.content.push(d),u=n.length-1,a=n[u],o.push({type:"thinking_start",contentIndex:u,partial:t})}a?.type==="thinking"&&(r.reasoningContent.text&&(a.thinking+=r.reasoningContent.text,o.push({type:"thinking_delta",contentIndex:u,delta:r.reasoningContent.text,partial:t})),r.reasoningContent.signature&&(a.thinkingSignature=(a.thinkingSignature||"")+r.reasoningContent.signature))}}g(H,"handleContentBlockDelta");function D(e,n,t){e.usage&&(t.usage.input=e.usage.inputTokens||0,t.usage.output=e.usage.outputTokens||0,t.usage.cacheRead=e.usage.cacheReadInputTokens||0,t.usage.cacheWrite=e.usage.cacheWriteInputTokens||0,t.usage.totalTokens=e.usage.totalTokens||t.usage.input+t.usage.output,B(n,t.usage))}g(D,"handleMetadata");function M(e,n,t,o){const s=n.findIndex(c=>c.index===e.contentBlockIndex),r=n[s];if(r)switch(delete r.index,r.type){case"text":o.push({type:"text_end",contentIndex:s,content:r.text,partial:t});break;case"thinking":o.push({type:"thinking_end",contentIndex:s,content:r.thinking,partial:t});break;case"toolCall":r.arguments=T(r.partialJson),delete r.partialJson,o.push({type:"toolcall_end",contentIndex:s,toolCall:r,partial:t});break}}g(M,"handleContentBlockStop");function E(e){return e.includes("opus-4-6")||e.includes("opus-4.6")||e.includes("sonnet-4-6")||e.includes("sonnet-4.6")}g(E,"supportsAdaptiveThinking");function W(e,n){switch(e){case"minimal":case"low":return"low";case"medium":return"medium";case"high":return"high";case"xhigh":return n.includes("opus-4-6")||n.includes("opus-4.6")?"max":"high";default:return"high"}}g(W,"mapThinkingLevelToEffort");function F(e){return e||(typeof process<"u"&&(process.env.CATUI_CACHE_RETENTION??process.env.NANOPENCIL_CACHE_RETENTION)==="long"?"long":"short")}g(F,"resolveCacheRetention");function C(e){if(e.cost.cacheRead||e.cost.cacheWrite)return!0;const n=e.id.toLowerCase();return!!(n.includes("claude")&&(n.includes("-4-")||n.includes("-4."))||n.includes("claude-3-7-sonnet")||n.includes("claude-3-5-haiku"))}g(C,"supportsPromptCaching");function L(e){const n=e.id.toLowerCase();return n.includes("anthropic.claude")||n.includes("anthropic/claude")}g(L,"supportsThinkingSignature");function J(e,n,t){if(!e)return;const o=[{text:p(e)}];return t!=="none"&&C(n)&&o.push({cachePoint:{type:S.DEFAULT,...t==="long"?{ttl:w.ONE_HOUR}:{}}}),o}g(J,"buildSystemPrompt");function j(e){const n=e.replace(/[^a-zA-Z0-9_-]/g,"_");return n.length>64?n.slice(0,64):n}g(j,"normalizeToolCallId");function K(e,n,t){const o=[],s=N(e.messages,n,j);for(let r=0;r<s.length;r++){const c=s[r];switch(c.role){case"user":o.push({role:f.USER,content:typeof c.content=="string"?[{text:p(c.content)}]:c.content.map(i=>{switch(i.type){case"text":return{text:p(i.text)};case"image":return{image:y(i.mimeType,i.data)};default:throw new Error("Unknown user content type")}})});break;case"assistant":{if(c.content.length===0)continue;const i=[];for(const a of c.content)switch(a.type){case"text":if(a.text.trim().length===0)continue;i.push({text:p(a.text)});break;case"toolCall":i.push({toolUse:{toolUseId:a.id,name:a.name,input:a.arguments}});break;case"thinking":if(a.thinking.trim().length===0)continue;L(n)?i.push({reasoningContent:{reasoningText:{text:p(a.thinking),signature:a.thinkingSignature}}}):i.push({reasoningContent:{reasoningText:{text:p(a.thinking)}}});break;default:throw new Error("Unknown assistant content type")}if(i.length===0)continue;o.push({role:f.ASSISTANT,content:i});break}case"toolResult":{const i=[];i.push({toolResult:{toolUseId:c.toolCallId,content:c.content.map(u=>u.type==="image"?{image:y(u.mimeType,u.data)}:u.type==="document"?{text:"[PDF document - content not available in Bedrock format]"}:{text:p(u.text)}),status:c.isError?k.ERROR:k.SUCCESS}});let a=r+1;for(;a<s.length&&s[a].role==="toolResult";){const u=s[a];i.push({toolResult:{toolUseId:u.toolCallId,content:u.content.map(d=>d.type==="image"?{image:y(d.mimeType,d.data)}:d.type==="document"?{text:"[PDF document - content not available in Bedrock format]"}:{text:p(d.text)}),status:u.isError?k.ERROR:k.SUCCESS}}),a++}r=a-1,o.push({role:f.USER,content:i});break}default:throw new Error("Unknown message role")}}if(t!=="none"&&C(n)&&o.length>0){const r=o[o.length-1];r.role===f.USER&&r.content&&r.content.push({cachePoint:{type:S.DEFAULT,...t==="long"?{ttl:w.ONE_HOUR}:{}}})}return o}g(K,"convertMessages");function X(e,n){if(!e?.length||n==="none")return;const t=e.map(s=>({toolSpec:{name:s.name,description:s.description,inputSchema:{json:s.parameters}}}));let o;switch(n){case"auto":o={auto:{}};break;case"any":o={any:{}};break;default:n?.type==="tool"&&(o={tool:{name:n.name}})}return{tools:t,toolChoice:o}}g(X,"convertToolConfig");function $(e){switch(e){case h.END_TURN:case h.STOP_SEQUENCE:return"stop";case h.MAX_TOKENS:case h.MODEL_CONTEXT_WINDOW_EXCEEDED:return"length";case h.TOOL_USE:return"toolUse";default:return"error"}}g($,"mapStopReason");function q(e,n){if(!(!n.reasoning||!e.reasoning)&&(e.id.includes("anthropic.claude")||e.id.includes("anthropic/claude"))){const t=E(e.id)?{thinking:{type:"adaptive"},output_config:{effort:W(n.reasoning,e.id)}}:(()=>{const o={minimal:1024,low:2048,medium:8192,high:16384,xhigh:16384},s=n.reasoning==="xhigh"?"high":n.reasoning;return{thinking:{type:"enabled",budget_tokens:n.thinkingBudgets?.[s]??o[n.reasoning]}}})();return!E(e.id)&&(n.interleavedThinking??!0)&&(t.anthropic_beta=["interleaved-thinking-2025-05-14"]),t}}g(q,"buildAdditionalModelRequestFields");function y(e,n){let t;switch(e){case"image/jpeg":case"image/jpg":t=m.JPEG;break;case"image/png":t=m.PNG;break;case"image/gif":t=m.GIF;break;case"image/webp":t=m.WEBP;break;default:throw new Error(`Unknown image type: ${e}`)}const o=atob(n),s=new Uint8Array(o.length);for(let r=0;r<o.length;r++)s[r]=o.charCodeAt(r);return{source:{bytes:s},format:t}}g(y,"createImageBlock");export{x as streamBedrock,ne as streamSimpleBedrock};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var E=Object.defineProperty;var h=(t,o)=>E(t,"name",{value:o,configurable:!0});import m from"@anthropic-ai/sdk";import{getEnvApiKey as C}from"../env-api-keys.js";import{calculateCost as T}from"../models.js";import{AssistantMessageEventStream as I}from"../utils/event-stream.js";import{parseStreamingJson as w}from"../utils/json-parse.js";import{sanitizeSurrogates as y}from"../utils/sanitize-unicode.js";import{buildCopilotDynamicHeaders as A,hasCopilotVisionInput as S}from"./github-copilot-headers.js";import{adjustMaxTokensForThinking as j,buildBaseOptions as B}from"./simple-options.js";import{transformMessages as L}from"./transform-messages.js";function M(t){return t||(typeof process<"u"&&process.env.CATUI_CACHE_RETENTION==="long"?"long":"short")}h(M,"resolveCacheRetention");function U(t,o){const s=M(o);if(s==="none")return{retention:s};const n=s==="long"&&t.includes("api.anthropic.com")?"1h":void 0;return{retention:s,cacheControl:{type:"ephemeral",...n&&{ttl:n}}}}h(U,"getCacheControl");const N="2.1.62",O=["Read","Write","Edit","Bash","Grep","Glob","AskUserQuestion","EnterPlanMode","ExitPlanMode","KillShell","NotebookEdit","Skill","Task","TaskOutput","TodoWrite","WebFetch","WebSearch"],W=new Map(O.map(t=>[t.toLowerCase(),t])),R=h(t=>W.get(t.toLowerCase())??t,"toClaudeCodeName"),P=h((t,o)=>{if(o&&o.length>0){const s=t.toLowerCase(),n=o.find(e=>e.name.toLowerCase()===s);if(n)return n.name}return t},"fromClaudeCodeName");function v(t){if(!t.some(e=>e.type!=="text"))return y(t.map(e=>e.text).join(`
|
|
2
|
+
`));const s=t.map(e=>e.type==="text"?{type:"text",text:y(e.text)}:e.type==="document"?{type:"document",source:{type:"base64",media_type:"application/pdf",data:e.source.data}}:{type:"image",source:{type:"base64",media_type:e.mimeType,data:e.data}});return s.some(e=>e.type==="text")||s.unshift({type:"text",text:"(see attached document)"}),s}h(v,"convertContentBlocks");function _(...t){const o={};for(const s of t)s&&Object.assign(o,s);return o}h(_,"mergeHeaders");const x=h((t,o,s)=>{const n=new I;return(async()=>{const e={role:"assistant",content:[],api:t.api,provider:t.provider,model:t.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:"stop",timestamp:Date.now()};try{const r=s?.apiKey??C(t.provider)??"";let i;if(t.provider==="github-copilot"){const a=S(o.messages);i=A({messages:o.messages,hasImages:a})}const{client:l,isOAuthToken:p}=K(t,r,s?.interleavedThinking??!0,s?.headers,i),c=q(t,o,p,s);s?.onPayload?.(c);const g=l.messages.stream({...c,stream:!0},{signal:s?.signal});n.push({type:"start",partial:e});const f=e.content;for await(const a of g)if(a.type==="message_start")e.usage.input=a.message.usage.input_tokens||0,e.usage.output=a.message.usage.output_tokens||0,e.usage.cacheRead=a.message.usage.cache_read_input_tokens||0,e.usage.cacheWrite=a.message.usage.cache_creation_input_tokens||0,e.usage.totalTokens=e.usage.input+e.usage.output+e.usage.cacheRead+e.usage.cacheWrite,T(t,e.usage);else if(a.type==="content_block_start"){if(a.content_block.type==="text"){const d={type:"text",text:"",index:a.index};e.content.push(d),n.push({type:"text_start",contentIndex:e.content.length-1,partial:e})}else if(a.content_block.type==="thinking"){const d={type:"thinking",thinking:"",thinkingSignature:"",index:a.index};e.content.push(d),n.push({type:"thinking_start",contentIndex:e.content.length-1,partial:e})}else if(a.content_block.type==="redacted_thinking"){const d={type:"thinking",thinking:"[Reasoning redacted]",thinkingSignature:a.content_block.data,redacted:!0,index:a.index};e.content.push(d),n.push({type:"thinking_start",contentIndex:e.content.length-1,partial:e})}else if(a.content_block.type==="tool_use"){const d={type:"toolCall",id:a.content_block.id,name:p?P(a.content_block.name,o.tools):a.content_block.name,arguments:a.content_block.input??{},partialJson:"",index:a.index};e.content.push(d),n.push({type:"toolcall_start",contentIndex:e.content.length-1,partial:e})}}else if(a.type==="content_block_delta"){if(a.delta.type==="text_delta"){const d=f.findIndex(k=>k.index===a.index),u=f[d];u&&u.type==="text"&&(u.text+=a.delta.text,n.push({type:"text_delta",contentIndex:d,delta:a.delta.text,partial:e}))}else if(a.delta.type==="thinking_delta"){const d=f.findIndex(k=>k.index===a.index),u=f[d];u&&u.type==="thinking"&&(u.thinking+=a.delta.thinking,n.push({type:"thinking_delta",contentIndex:d,delta:a.delta.thinking,partial:e}))}else if(a.delta.type==="input_json_delta"){const d=f.findIndex(k=>k.index===a.index),u=f[d];u&&u.type==="toolCall"&&(u.partialJson+=a.delta.partial_json,u.arguments=w(u.partialJson),n.push({type:"toolcall_delta",contentIndex:d,delta:a.delta.partial_json,partial:e}))}else if(a.delta.type==="signature_delta"){const d=f.findIndex(k=>k.index===a.index),u=f[d];u&&u.type==="thinking"&&(u.thinkingSignature=u.thinkingSignature||"",u.thinkingSignature+=a.delta.signature)}}else if(a.type==="content_block_stop"){const d=f.findIndex(k=>k.index===a.index),u=f[d];u&&(delete u.index,u.type==="text"?n.push({type:"text_end",contentIndex:d,content:u.text,partial:e}):u.type==="thinking"?n.push({type:"thinking_end",contentIndex:d,content:u.thinking,partial:e}):u.type==="toolCall"&&(u.arguments=w(u.partialJson),delete u.partialJson,n.push({type:"toolcall_end",contentIndex:d,toolCall:u,partial:e})))}else a.type==="message_delta"&&(a.delta.stop_reason&&(e.stopReason=D(a.delta.stop_reason)),a.usage.input_tokens!=null&&(e.usage.input=a.usage.input_tokens),a.usage.output_tokens!=null&&(e.usage.output=a.usage.output_tokens),a.usage.cache_read_input_tokens!=null&&(e.usage.cacheRead=a.usage.cache_read_input_tokens),a.usage.cache_creation_input_tokens!=null&&(e.usage.cacheWrite=a.usage.cache_creation_input_tokens),e.usage.totalTokens=e.usage.input+e.usage.output+e.usage.cacheRead+e.usage.cacheWrite,T(t,e.usage));if(s?.signal?.aborted)throw new Error("Request was aborted");if(e.stopReason==="aborted"||e.stopReason==="error")throw new Error("An unknown error occurred");n.push({type:"done",reason:e.stopReason,message:e}),n.end()}catch(r){for(const i of e.content)delete i.index;if(e.stopReason=s?.signal?.aborted?"aborted":"error",e.errorMessage=r instanceof Error?r.message:JSON.stringify(r),r&&typeof r=="object"&&"headers"in r){const i=r.headers;i&&typeof i=="object"&&(e.errorHeaders=Object.fromEntries(Object.entries(i).map(([l,p])=>[l.toLowerCase(),String(p)])))}n.push({type:"error",reason:e.stopReason,error:e}),n.end()}})(),n},"streamAnthropic");function b(t){return t.includes("opus-4-6")||t.includes("opus-4.6")||t.includes("sonnet-4-6")||t.includes("sonnet-4.6")}h(b,"supportsAdaptiveThinking");function J(t,o){switch(t){case"minimal":return"low";case"low":return"low";case"medium":return"medium";case"high":return"high";case"xhigh":return o.includes("opus-4-6")||o.includes("opus-4.6")?"max":"high";default:return"high"}}h(J,"mapThinkingLevelToEffort");const se=h((t,o,s)=>{const n=s?.apiKey||C(t.provider);if(!n)throw new Error(`No API key for provider: ${t.provider}`);const e=B(t,s,n),r=s?.toolChoice;if(!s?.reasoning)return x(t,o,{...e,toolChoice:r,thinkingEnabled:!1});if(b(t.id)){const l=J(s.reasoning,t.id);return x(t,o,{...e,toolChoice:r,thinkingEnabled:!0,effort:l})}const i=j(e.maxTokens||0,t.maxTokens,s.reasoning,s.thinkingBudgets);return x(t,o,{...e,toolChoice:r,maxTokens:i.maxTokens,thinkingEnabled:!0,thinkingBudgetTokens:i.thinkingBudget})},"streamSimpleAnthropic");function H(t){return t.includes("sk-ant-oat")}h(H,"isOAuthToken");function K(t,o,s,n,e){const r=s&&!b(t.id);if(t.provider==="github-copilot"){const p=[];return r&&p.push("interleaved-thinking-2025-05-14"),{client:new m({apiKey:null,authToken:o,baseURL:t.baseUrl,dangerouslyAllowBrowser:!0,defaultHeaders:_({accept:"application/json","anthropic-dangerous-direct-browser-access":"true",...p.length>0?{"anthropic-beta":p.join(",")}:{}},t.headers,e,n)}),isOAuthToken:!1}}const i=["fine-grained-tool-streaming-2025-05-14"];return r&&i.push("interleaved-thinking-2025-05-14"),H(o)?{client:new m({apiKey:null,authToken:o,baseURL:t.baseUrl,dangerouslyAllowBrowser:!0,defaultHeaders:_({accept:"application/json","anthropic-dangerous-direct-browser-access":"true","anthropic-beta":`claude-code-20250219,oauth-2025-04-20,${i.join(",")}`,"user-agent":`claude-cli/${N}`,"x-app":"cli"},t.headers,n)}),isOAuthToken:!0}:{client:new m({apiKey:o,baseURL:t.baseUrl,dangerouslyAllowBrowser:!0,defaultHeaders:_({accept:"application/json","anthropic-dangerous-direct-browser-access":"true","anthropic-beta":i.join(",")},t.headers,n)}),isOAuthToken:!1}}h(K,"createClient");function q(t,o,s,n){const{cacheControl:e}=U(t.baseUrl,n?.cacheRetention),r={model:t.id,messages:$(o.messages,t,s,e),max_tokens:n?.maxTokens||t.maxTokens/3|0,stream:!0};if(s?(r.system=[{type:"text",text:"You are Claude Code, Anthropic's official CLI for Claude.",...e?{cache_control:e}:{}}],o.systemPrompt&&r.system.push({type:"text",text:y(o.systemPrompt),...e?{cache_control:e}:{}})):o.systemPrompt&&(r.system=[{type:"text",text:y(o.systemPrompt),...e?{cache_control:e}:{}}]),n?.temperature!==void 0&&!n?.thinkingEnabled&&(r.temperature=n.temperature),o.tools&&(r.tools=z(o.tools,s)),n?.thinkingEnabled&&t.reasoning&&(b(t.id)?(r.thinking={type:"adaptive"},n.effort&&(r.output_config={effort:n.effort})):r.thinking={type:"enabled",budget_tokens:n.thinkingBudgetTokens||1024}),n?.metadata){const i=n.metadata.user_id;typeof i=="string"&&(r.metadata={user_id:i})}return n?.toolChoice&&(typeof n.toolChoice=="string"?r.tool_choice={type:n.toolChoice}:r.tool_choice=n.toolChoice),r}h(q,"buildParams");function F(t){return t.replace(/[^a-zA-Z0-9_-]/g,"_").slice(0,64)}h(F,"normalizeToolCallId");function $(t,o,s,n){const e=[],r=L(t,o,F);for(let i=0;i<r.length;i++){const l=r[i];if(l.role==="user")if(typeof l.content=="string")l.content.trim().length>0&&e.push({role:"user",content:y(l.content)});else{const p=l.content.map(g=>g.type==="text"?{type:"text",text:y(g.text)}:g.type==="document"?{type:"document",source:{type:"base64",media_type:"application/pdf",data:g.source.data}}:{type:"image",source:{type:"base64",media_type:g.mimeType,data:g.data}});let c=o?.input.includes("image")?p:p.filter(g=>g.type!=="image");if(c=c.filter(g=>g.type==="text"?g.text.trim().length>0:!0),c.length===0)continue;e.push({role:"user",content:c})}else if(l.role==="assistant"){const p=[];for(const c of l.content)if(c.type==="text"){if(c.text.trim().length===0)continue;p.push({type:"text",text:y(c.text)})}else if(c.type==="thinking"){if(c.redacted){p.push({type:"redacted_thinking",data:c.thinkingSignature});continue}if(c.thinking.trim().length===0)continue;!c.thinkingSignature||c.thinkingSignature.trim().length===0?p.push({type:"text",text:y(c.thinking)}):p.push({type:"thinking",thinking:y(c.thinking),signature:c.thinkingSignature})}else c.type==="toolCall"&&p.push({type:"tool_use",id:c.id,name:s?R(c.name):c.name,input:c.arguments??{}});if(p.length===0)continue;e.push({role:"assistant",content:p})}else if(l.role==="toolResult"){const p=[];p.push({type:"tool_result",tool_use_id:l.toolCallId,content:v(l.content),is_error:l.isError});let c=i+1;for(;c<r.length&&r[c].role==="toolResult";){const g=r[c];p.push({type:"tool_result",tool_use_id:g.toolCallId,content:v(g.content),is_error:g.isError}),c++}i=c-1,e.push({role:"user",content:p})}}if(n&&e.length>0){const i=e[e.length-1];if(i.role==="user")if(Array.isArray(i.content)){const l=i.content[i.content.length-1];l&&(l.type==="text"||l.type==="image"||l.type==="tool_result")&&(l.cache_control=n)}else typeof i.content=="string"&&(i.content=[{type:"text",text:i.content,cache_control:n}])}return e}h($,"convertMessages");function z(t,o){return t?t.map(s=>{const n=s.parameters;return{name:o?R(s.name):s.name,description:s.description,input_schema:{type:"object",properties:n.properties||{},required:n.required||[]}}}):[]}h(z,"convertTools");function D(t){switch(t){case"end_turn":return"stop";case"max_tokens":return"length";case"tool_use":return"toolUse";case"refusal":return"error";case"pause_turn":return"stop";case"stop_sequence":return"stop";case"sensitive":return"error";default:throw new Error(`Unhandled stop reason: ${t}`)}}h(D,"mapStopReason");export{x as streamAnthropic,se as streamSimpleAnthropic};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var f=Object.defineProperty;var o=(r,t)=>f(r,"name",{value:t,configurable:!0});import{AzureOpenAI as l}from"openai";import{getEnvApiKey as u}from"../env-api-keys.js";import{supportsXhigh as A}from"../models.js";import{AssistantMessageEventStream as E}from"../utils/event-stream.js";import{convertResponsesMessages as d,convertResponsesTools as _,processResponsesStream as R}from"./openai-responses-shared.js";import{buildBaseOptions as g,clampReasoning as U}from"./simple-options.js";const h="v1",y=new Set(["openai","openai-codex","opencode","azure-openai-responses"]);function I(r){const t=new Map;if(!r)return t;for(const e of r.split(",")){const n=e.trim();if(!n)continue;const[a,s]=n.split("=",2);!a||!s||t.set(a.trim(),s.trim())}return t}o(I,"parseDeploymentNameMap");function N(r,t){return t?.azureDeploymentName?t.azureDeploymentName:I(process.env.AZURE_OPENAI_DEPLOYMENT_NAME_MAP).get(r.id)||r.id}o(N,"resolveDeploymentName");const O=o((r,t,e)=>{const n=new E;return(async()=>{const a=N(r,e),s={role:"assistant",content:[],api:"azure-openai-responses",provider:r.provider,model:r.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:"stop",timestamp:Date.now()};try{const i=e?.apiKey||u(r.provider)||"",c=b(r,i,e),p=z(r,t,e,a);e?.onPayload?.(p);const m=await c.responses.create(p,e?.signal?{signal:e.signal}:void 0);if(n.push({type:"start",partial:s}),await R(m,s,n,r),e?.signal?.aborted)throw new Error("Request was aborted");if(s.stopReason==="aborted"||s.stopReason==="error")throw new Error("An unknown error occurred");n.push({type:"done",reason:s.stopReason,message:s}),n.end()}catch(i){for(const c of s.content)delete c.index;s.stopReason=e?.signal?.aborted?"aborted":"error",s.errorMessage=i instanceof Error?i.message:JSON.stringify(i),n.push({type:"error",reason:s.stopReason,error:s}),n.end()}})(),n},"streamAzureOpenAIResponses"),B=o((r,t,e)=>{const n=e?.apiKey||u(r.provider);if(!n)throw new Error(`No API key for provider: ${r.provider}`);const a=g(r,e,n),s=A(r)?e?.reasoning:U(e?.reasoning);return O(r,t,{...a,reasoningEffort:s,toolChoice:e?.toolChoice})},"streamSimpleAzureOpenAIResponses");function v(r){return r.replace(/\/+$/,"")}o(v,"normalizeAzureBaseUrl");function w(r){return`https://${r}.openai.azure.com/openai/v1`}o(w,"buildDefaultBaseUrl");function P(r,t){const e=t?.azureApiVersion||process.env.AZURE_OPENAI_API_VERSION||h,n=t?.azureBaseUrl?.trim()||process.env.AZURE_OPENAI_BASE_URL?.trim()||void 0,a=t?.azureResourceName||process.env.AZURE_OPENAI_RESOURCE_NAME;let s=n;if(!s&&a&&(s=w(a)),!s&&r.baseUrl&&(s=r.baseUrl),!s)throw new Error("Azure OpenAI base URL is required. Set AZURE_OPENAI_BASE_URL or AZURE_OPENAI_RESOURCE_NAME, or pass azureBaseUrl, azureResourceName, or model.baseUrl.");return{baseUrl:v(s),apiVersion:e}}o(P,"resolveAzureConfig");function b(r,t,e){if(!t){if(!process.env.AZURE_OPENAI_API_KEY)throw new Error("Azure OpenAI API key is required. Set AZURE_OPENAI_API_KEY environment variable or pass it as an argument.");t=process.env.AZURE_OPENAI_API_KEY}const n={...r.headers};e?.headers&&Object.assign(n,e.headers);const{baseUrl:a,apiVersion:s}=P(r,e);return new l({apiKey:t,apiVersion:s,dangerouslyAllowBrowser:!0,defaultHeaders:n,baseURL:a})}o(b,"createClient");function z(r,t,e,n){const a=d(r,t,y),s={model:n,input:a,stream:!0,prompt_cache_key:e?.sessionId};return e?.maxTokens&&(s.max_output_tokens=e?.maxTokens),e?.temperature!==void 0&&(s.temperature=e?.temperature),t.tools&&(s.tools=_(t.tools)),e?.toolChoice!==void 0&&(s.tool_choice=e.toolChoice),r.reasoning&&(e?.reasoningEffort||e?.reasoningSummary?(s.reasoning={effort:e?.reasoningEffort||"medium",summary:e?.reasoningSummary||"auto"},s.include=["reasoning.encrypted_content"]):r.name.toLowerCase().startsWith("gpt-5")&&a.push({role:"developer",content:[{type:"input_text",text:"# Juice: 0 !important"}]})),s}o(z,"buildParams");export{O as streamAzureOpenAIResponses,B as streamSimpleAzureOpenAIResponses};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var o=Object.defineProperty;var n=(e,t)=>o(e,"name",{value:t,configurable:!0});function i(e){const t=e[e.length-1];return t&&t.role!=="user"?"agent":"user"}n(i,"inferCopilotInitiator");function s(e){return e.some(t=>t.role==="user"&&Array.isArray(t.content)?t.content.some(r=>r.type==="image"):t.role==="toolResult"&&Array.isArray(t.content)?t.content.some(r=>r.type==="image"):!1)}n(s,"hasCopilotVisionInput");function u(e){const t={"X-Initiator":i(e.messages),"Openai-Intent":"conversation-edits"};return e.hasImages&&(t["Copilot-Vision-Request"]="true"),t}n(u,"buildCopilotDynamicHeaders");export{u as buildCopilotDynamicHeaders,s as hasCopilotVisionInput,i as inferCopilotInitiator};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var ne=Object.defineProperty;var c=(t,s)=>ne(t,"name",{value:s,configurable:!0});import{calculateCost as re}from"../models.js";import{AssistantMessageEventStream as oe}from"../utils/event-stream.js";import{sanitizeSurrogates as ae}from"../utils/sanitize-unicode.js";import{convertMessages as se,convertTools as ie,isThinkingPart as ce,mapStopReasonString as le,mapToolChoice as ue,retainThoughtSignature as W}from"./google-shared.js";import{buildBaseOptions as de,clampReasoning as ge}from"./simple-options.js";const J="https://cloudcode-pa.googleapis.com",he="https://daily-cloudcode-pa.sandbox.googleapis.com",fe=[he,J],pe={"User-Agent":"google-cloud-sdk vscode_cloudshelleditor/0.1","X-Goog-Api-Client":"gl-node/22.17.0","Client-Metadata":JSON.stringify({ideType:"IDE_UNSPECIFIED",platform:"PLATFORM_UNSPECIFIED",pluginType:"GEMINI"})},me="1.18.3";function ye(){return{"User-Agent":`antigravity/${process.env.CATUI_AI_ANTIGRAVITY_VERSION||me} darwin/arm64`,"X-Goog-Api-Client":"google-cloud-sdk vscode_cloudshelleditor/0.1","Client-Metadata":JSON.stringify({ideType:"IDE_UNSPECIFIED",platform:"PLATFORM_UNSPECIFIED",pluginType:"GEMINI"})}}c(ye,"getAntigravityHeaders");const V="You are Antigravity, a powerful agentic AI coding assistant designed by the Google Deepmind team working on Advanced Agentic Coding.You are pair programming with a USER to solve their coding task. The task may require creating a new codebase, modifying or debugging an existing codebase, or simply answering a question.**Absolute paths only****Proactiveness**";let we=0;const G=3,j=1e3,K=2,Ie=500,ke="interleaved-thinking-2025-05-14";function Ee(t,s){const r=c(a=>a>0?Math.ceil(a+1e3):void 0,"normalizeDelay"),n=s instanceof Headers?s:s?.headers;if(n){const a=n.get("retry-after");if(a){const g=Number(a);if(Number.isFinite(g)){const E=r(g*1e3);if(E!==void 0)return E}const x=new Date(a).getTime();if(!Number.isNaN(x)){const E=r(x-Date.now());if(E!==void 0)return E}}const d=n.get("x-ratelimit-reset");if(d){const g=Number.parseInt(d,10);if(!Number.isNaN(g)){const p=r(g*1e3-Date.now());if(p!==void 0)return p}}const f=n.get("x-ratelimit-reset-after");if(f){const g=Number(f);if(Number.isFinite(g)){const p=r(g*1e3);if(p!==void 0)return p}}}const e=t.match(/reset after (?:(\d+)h)?(?:(\d+)m)?(\d+(?:\.\d+)?)s/i);if(e){const a=e[1]?parseInt(e[1],10):0,d=e[2]?parseInt(e[2],10):0,f=parseFloat(e[3]);if(!Number.isNaN(f)){const g=((a*60+d)*60+f)*1e3,p=r(g);if(p!==void 0)return p}}const h=t.match(/Please retry in ([0-9.]+)(ms|s)/i);if(h?.[1]){const a=parseFloat(h[1]);if(!Number.isNaN(a)&&a>0){const d=h[2].toLowerCase()==="ms"?a:a*1e3,f=r(d);if(f!==void 0)return f}}const i=t.match(/"retryDelay":\s*"([0-9.]+)(ms|s)"/i);if(i?.[1]){const a=parseFloat(i[1]);if(!Number.isNaN(a)&&a>0){const d=i[2].toLowerCase()==="ms"?a:a*1e3,f=r(d);if(f!==void 0)return f}}}c(Ee,"extractRetryDelay");function Ce(t){const s=t.toLowerCase();return s.includes("claude")&&s.includes("thinking")}c(Ce,"isClaudeThinkingModel");function z(t){return/gemini-3(?:\.1)?-pro/.test(t.toLowerCase())}c(z,"isGemini3ProModel");function Te(t){return/gemini-3(?:\.1)?-flash/.test(t.toLowerCase())}c(Te,"isGemini3FlashModel");function be(t){return z(t)||Te(t)}c(be,"isGemini3Model");function Ae(t,s){return t===429||t===500||t===502||t===503||t===504?!0:/resource.?exhausted|rate.?limit|overloaded|service.?unavailable|other.?side.?closed/i.test(s)}c(Ae,"isRetryableError");function X(t){try{const s=JSON.parse(t);if(s.error?.message)return s.error.message}catch{}return t}c(X,"extractErrorMessage");function L(t,s){return new Promise((r,n)=>{if(s?.aborted){n(new Error("Request was aborted"));return}const e=setTimeout(r,t);s?.addEventListener("abort",()=>{clearTimeout(e),n(new Error("Request was aborted"))})})}c(L,"sleep");const O=c((t,s,r)=>{const n=new oe;return(async()=>{const e={role:"assistant",content:[],api:"google-gemini-cli",provider:t.provider,model:t.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:"stop",timestamp:Date.now()};try{const h=r?.apiKey;if(!h)throw new Error("Google Cloud Code Assist requires OAuth authentication. Use /login to authenticate.");let i,a;try{const l=JSON.parse(h);i=l.token,a=l.projectId}catch{throw new Error("Invalid Google Cloud Code Assist credentials. Use /login to re-authenticate.")}if(!i||!a)throw new Error("Missing token or projectId in Google Cloud credentials. Use /login to re-authenticate.");const d=t.provider==="google-antigravity",f=t.baseUrl?.trim(),g=f?[f]:d?fe:[J],p=xe(t,s,a,r,d);r?.onPayload?.(p);const x=d?ye():pe,E={Authorization:`Bearer ${i}`,"Content-Type":"application/json",Accept:"text/event-stream",...x,...Ce(t.id)?{"anthropic-beta":ke}:{},...r?.headers},P=JSON.stringify(p);let I,T,N;for(let l=0;l<=G;l++){if(r?.signal?.aborted)throw new Error("Request was aborted");try{if(N=`${g[Math.min(l,g.length-1)]}/v1internal:streamGenerateContent?alt=sse`,I=await fetch(N,{method:"POST",headers:E,body:P,signal:r?.signal}),I.ok)break;const o=await I.text();if(l<G&&Ae(I.status,o)){const k=Ee(o,I),m=k??j*2**l,b=r?.maxRetryDelayMs??6e4;if(b>0&&k&&k>b){const _=Math.ceil(k/1e3);throw new Error(`Server requested ${_}s retry delay (max: ${Math.ceil(b/1e3)}s). ${X(o)}`)}await L(m,r?.signal);continue}throw new Error(`Cloud Code Assist API error (${I.status}): ${X(o)}`)}catch(y){if(y instanceof Error&&(y.name==="AbortError"||y.message==="Request was aborted"))throw new Error("Request was aborted");if(T=y instanceof Error?y:new Error(String(y)),T.message==="fetch failed"&&T.cause instanceof Error&&(T=new Error(`Network error: ${T.cause.message}`)),l<G){const o=j*2**l;await L(o,r?.signal);continue}throw T}}if(!I||!I.ok)throw T??new Error("Failed to get response after retries");let S=!1;const M=c(()=>{S||(n.push({type:"start",partial:e}),S=!0)},"ensureStarted"),Q=c(()=>{e.content=[],e.usage={input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},e.stopReason="stop",e.errorMessage=void 0,e.timestamp=Date.now(),S=!1},"resetOutput"),Z=c(async l=>{if(!l.body)throw new Error("No response body");let y=!1,o=null;const k=e.content,m=c(()=>k.length-1,"blockIndex"),b=l.body.getReader(),_=new TextDecoder;let v="";const U=c(()=>{b.cancel().catch(()=>{})},"abortHandler");r?.signal?.addEventListener("abort",U);try{for(;;){if(r?.signal?.aborted)throw new Error("Request was aborted");const{done:ee,value:te}=await b.read();if(ee)break;v+=_.decode(te,{stream:!0});const $=v.split(`
|
|
2
|
+
`);v=$.pop()||"";for(const F of $){if(!F.startsWith("data:"))continue;const B=F.slice(5).trim();if(!B)continue;let Y;try{Y=JSON.parse(B)}catch{continue}const C=Y.response;if(!C)continue;const R=C.candidates?.[0];if(R?.content?.parts)for(const u of R.content.parts){if(u.text!==void 0){y=!0;const w=ce(u);(!o||w&&o.type!=="thinking"||!w&&o.type!=="text")&&(o&&(o.type==="text"?n.push({type:"text_end",contentIndex:k.length-1,content:o.text,partial:e}):n.push({type:"thinking_end",contentIndex:m(),content:o.thinking,partial:e})),w?(o={type:"thinking",thinking:"",thinkingSignature:void 0},e.content.push(o),M(),n.push({type:"thinking_start",contentIndex:m(),partial:e})):(o={type:"text",text:""},e.content.push(o),M(),n.push({type:"text_start",contentIndex:m(),partial:e}))),o.type==="thinking"?(o.thinking+=u.text,o.thinkingSignature=W(o.thinkingSignature,u.thoughtSignature),n.push({type:"thinking_delta",contentIndex:m(),delta:u.text,partial:e})):(o.text+=u.text,o.textSignature=W(o.textSignature,u.thoughtSignature),n.push({type:"text_delta",contentIndex:m(),delta:u.text,partial:e}))}if(u.functionCall){y=!0,o&&(o.type==="text"?n.push({type:"text_end",contentIndex:m(),content:o.text,partial:e}):n.push({type:"thinking_end",contentIndex:m(),content:o.thinking,partial:e}),o=null);const w=u.functionCall.id,D={type:"toolCall",id:!w||e.content.some(H=>H.type==="toolCall"&&H.id===w)?`${u.functionCall.name}_${Date.now()}_${++we}`:w,name:u.functionCall.name||"",arguments:u.functionCall.args??{},...u.thoughtSignature&&{thoughtSignature:u.thoughtSignature}};e.content.push(D),M(),n.push({type:"toolcall_start",contentIndex:m(),partial:e}),n.push({type:"toolcall_delta",contentIndex:m(),delta:JSON.stringify(D.arguments),partial:e}),n.push({type:"toolcall_end",contentIndex:m(),toolCall:D,partial:e})}}if(R?.finishReason&&(e.stopReason=le(R.finishReason),e.content.some(u=>u.type==="toolCall")&&(e.stopReason="toolUse")),C.usageMetadata){const u=C.usageMetadata.promptTokenCount||0,w=C.usageMetadata.cachedContentTokenCount||0;e.usage={input:u-w,output:(C.usageMetadata.candidatesTokenCount||0)+(C.usageMetadata.thoughtsTokenCount||0),cacheRead:w,cacheWrite:0,totalTokens:C.usageMetadata.totalTokenCount||0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},re(t,e.usage)}}}}finally{r?.signal?.removeEventListener("abort",U)}return o&&(o.type==="text"?n.push({type:"text_end",contentIndex:m(),content:o.text,partial:e}):n.push({type:"thinking_end",contentIndex:m(),content:o.thinking,partial:e})),y},"streamResponse");let q=!1,A=I;for(let l=0;l<=K;l++){if(r?.signal?.aborted)throw new Error("Request was aborted");if(l>0){const o=Ie*2**(l-1);if(await L(o,r?.signal),!N)throw new Error("Missing request URL");if(A=await fetch(N,{method:"POST",headers:E,body:P,signal:r?.signal}),!A.ok){const k=await A.text();throw new Error(`Cloud Code Assist API error (${A.status}): ${k}`)}}if(await Z(A)){q=!0;break}l<K&&Q()}if(!q)throw new Error("Cloud Code Assist API returned an empty response");if(r?.signal?.aborted)throw new Error("Request was aborted");if(e.stopReason==="aborted"||e.stopReason==="error")throw new Error("An unknown error occurred");n.push({type:"done",reason:e.stopReason,message:e}),n.end()}catch(h){for(const i of e.content)"index"in i&&delete i.index;e.stopReason=r?.signal?.aborted?"aborted":"error",e.errorMessage=h instanceof Error?h.message:JSON.stringify(h),n.push({type:"error",reason:e.stopReason,error:e}),n.end()}})(),n},"streamGoogleGeminiCli"),Oe=c((t,s,r)=>{const n=r?.apiKey;if(!n)throw new Error("Google Cloud Code Assist requires OAuth authentication. Use /login to authenticate.");const e=de(t,r,n),h=r?.toolChoice;if(!r?.reasoning)return O(t,s,{...e,toolChoice:h,thinking:{enabled:!1}});const i=ge(r.reasoning);if(be(t.id))return O(t,s,{...e,toolChoice:h,thinking:{enabled:!0,level:Ne(i,t.id)}});const d={...{minimal:1024,low:2048,medium:8192,high:16384},...r.thinkingBudgets},f=1024;let g=d[i];const p=Math.min((e.maxTokens||0)+g,t.maxTokens);return p<=g&&(g=Math.max(0,p-f)),O(t,s,{...e,toolChoice:h,maxTokens:p,thinking:{enabled:!0,budgetTokens:g}})},"streamSimpleGoogleGeminiCli");function xe(t,s,r,n={},e=!1){const h=se(t,s),i={};n.temperature!==void 0&&(i.temperature=n.temperature),n.maxTokens!==void 0&&(i.maxOutputTokens=n.maxTokens),n.thinking?.enabled&&t.reasoning&&(i.thinkingConfig={includeThoughts:!0},n.thinking.level!==void 0?i.thinkingConfig.thinkingLevel=n.thinking.level:n.thinking.budgetTokens!==void 0&&(i.thinkingConfig.thinkingBudget=n.thinking.budgetTokens));const a={contents:h};if(a.sessionId=n.sessionId,s.systemPrompt&&(a.systemInstruction={parts:[{text:ae(s.systemPrompt)}]}),Object.keys(i).length>0&&(a.generationConfig=i),s.tools&&s.tools.length>0){const d=t.id.startsWith("claude-");a.tools=ie(s.tools,d),n.toolChoice&&(a.toolConfig={functionCallingConfig:{mode:ue(n.toolChoice)}})}if(e){const d=a.systemInstruction?.parts??[];a.systemInstruction={role:"user",parts:[{text:V},{text:`Please ignore following [ignore]${V}[/ignore]`},...d]}}return{project:r,model:t.id,request:a,...e?{requestType:"agent"}:{},userAgent:e?"antigravity":"catui-coding-agent",requestId:`${e?"agent":"catui"}-${Date.now()}-${Math.random().toString(36).slice(2,11)}`}}c(xe,"buildRequest");function Ne(t,s){if(z(s))switch(t){case"minimal":case"low":return"LOW";case"medium":case"high":return"HIGH"}switch(t){case"minimal":return"MINIMAL";case"low":return"LOW";case"medium":return"MEDIUM";case"high":return"HIGH"}}c(Ne,"getGeminiCliThinkingLevel");export{xe as buildRequest,Ee as extractRetryDelay,O as streamGoogleGeminiCli,Oe as streamSimpleGoogleGeminiCli};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var O=Object.defineProperty;var i=(t,s)=>O(t,"name",{value:s,configurable:!0});import{FinishReason as r,FunctionCallingConfigMode as g}from"@google/genai";import{sanitizeSurrogates as f}from"../utils/sanitize-unicode.js";import{transformMessages as N}from"./transform-messages.js";function F(t){return t.thought===!0}i(F,"isThinkingPart");function G(t,s){return typeof s=="string"&&s.length>0?s:t}i(G,"retainThoughtSignature");const _=/^[A-Za-z0-9+/]+={0,2}$/;function R(t){return!t||t.length%4!==0?!1:_.test(t)}i(R,"isValidThoughtSignature");function d(t,s){return t&&R(s)?s:void 0}i(d,"resolveThoughtSignature");function T(t){return t.startsWith("claude-")||t.startsWith("gpt-oss-")}i(T,"requiresToolCallId");function L(t,s){const o=[],I=i(n=>T(t.id)?n.replace(/[^a-zA-Z0-9_-]/g,"_").slice(0,64):n,"normalizeToolCallId"),A=N(s.messages,t,I);for(const n of A)if(n.role==="user")if(typeof n.content=="string")o.push({role:"user",parts:[{text:f(n.content)}]});else{const a=n.content.map(e=>e.type==="text"?{text:f(e.text)}:e.type==="document"?{text:"[PDF document - content not available in Google format]"}:{inlineData:{mimeType:e.mimeType,data:e.data}}),c=t.input.includes("image")?a:a.filter(e=>e.text!==void 0);if(c.length===0)continue;o.push({role:"user",parts:c})}else if(n.role==="assistant"){const a=[],c=n.provider===t.provider&&n.model===t.id;for(const e of n.content)if(e.type==="text"){if(!e.text||e.text.trim()==="")continue;const u=d(c,e.textSignature);a.push({text:f(e.text),...u&&{thoughtSignature:u}})}else if(e.type==="thinking"){if(!e.thinking||e.thinking.trim()==="")continue;if(c){const u=d(c,e.thinkingSignature);a.push({thought:!0,text:f(e.thinking),...u&&{thoughtSignature:u}})}else a.push({text:f(e.thinking)})}else if(e.type==="toolCall"){const u=d(c,e.thoughtSignature);if(t.id.toLowerCase().includes("gemini-3")&&!u){const p=JSON.stringify(e.arguments??{},null,2);a.push({text:`[Historical context: a different model called tool "${e.name}" with arguments: ${p}. Do not mimic this format - use proper function calling.]`})}else{const p={functionCall:{name:e.name,args:e.arguments??{},...T(t.id)?{id:e.id}:{}}};u&&(p.thoughtSignature=u),a.push(p)}}if(a.length===0)continue;o.push({role:"model",parts:a})}else if(n.role==="toolResult"){const c=n.content.filter(l=>l.type==="text").map(l=>l.text).join(`
|
|
2
|
+
`),e=t.input.includes("image")?n.content.filter(l=>l.type==="image"):[],u=c.length>0,h=e.length>0,p=t.id.includes("gemini-3"),x=u?f(c):h?"(see attached image)":"",S=e.map(l=>({inlineData:{mimeType:l.mimeType,data:l.data}})),C=T(t.id),E={functionResponse:{name:n.toolName,response:n.isError?{error:x}:{output:x},...h&&p&&{parts:S},...C?{id:n.toolCallId}:{}}},m=o[o.length-1];m?.role==="user"&&m.parts?.some(l=>l.functionResponse)?m.parts.push(E):o.push({role:"user",parts:[E]}),h&&!p&&o.push({role:"user",parts:[{text:"Tool result image:"},...S]})}return o}i(L,"convertMessages");function v(t,s=!1){if(t.length!==0)return[{functionDeclarations:t.map(o=>({name:o.name,description:o.description,...s?{parameters:o.parameters}:{parametersJsonSchema:o.parameters}}))}]}i(v,"convertTools");function k(t){switch(t){case"auto":return g.AUTO;case"none":return g.NONE;case"any":return g.ANY;default:return g.AUTO}}i(k,"mapToolChoice");function w(t){switch(t){case r.STOP:return"stop";case r.MAX_TOKENS:return"length";case r.BLOCKLIST:case r.PROHIBITED_CONTENT:case r.SPII:case r.SAFETY:case r.IMAGE_SAFETY:case r.IMAGE_PROHIBITED_CONTENT:case r.IMAGE_RECITATION:case r.IMAGE_OTHER:case r.RECITATION:case r.FINISH_REASON_UNSPECIFIED:case r.OTHER:case r.LANGUAGE:case r.MALFORMED_FUNCTION_CALL:case r.UNEXPECTED_TOOL_CALL:case r.NO_IMAGE:return"error";default:{const s=t;throw new Error(`Unhandled stop reason: ${s}`)}}}i(w,"mapStopReason");function U(t){switch(t){case"STOP":return"stop";case"MAX_TOKENS":return"length";default:return"error"}}i(U,"mapStopReasonString");export{L as convertMessages,v as convertTools,F as isThinkingPart,w as mapStopReason,U as mapStopReasonString,k as mapToolChoice,T as requiresToolCallId,G as retainThoughtSignature};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var T=Object.defineProperty;var c=(e,o)=>T(e,"name",{value:o,configurable:!0});import{GoogleGenAI as E,ThinkingLevel as p}from"@google/genai";import{calculateCost as L}from"../models.js";import{AssistantMessageEventStream as b}from"../utils/event-stream.js";import{sanitizeSurrogates as w}from"../utils/sanitize-unicode.js";import{convertMessages as G,convertTools as M,isThinkingPart as S,mapStopReason as R,mapToolChoice as v,retainThoughtSignature as y}from"./google-shared.js";import{buildBaseOptions as N,clampReasoning as P}from"./simple-options.js";const D="v1",A={THINKING_LEVEL_UNSPECIFIED:p.THINKING_LEVEL_UNSPECIFIED,MINIMAL:p.MINIMAL,LOW:p.LOW,MEDIUM:p.MEDIUM,HIGH:p.HIGH};let U=0;const k=c((e,o,n)=>{const i=new b;return(async()=>{const t={role:"assistant",content:[],api:"google-vertex",provider:e.provider,model:e.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:"stop",timestamp:Date.now()};try{const s=V(n),u=j(n),h=H(e,s,u,n?.headers),I=W(e,o,n);n?.onPayload?.(I);const _=await h.models.generateContentStream(I);i.push({type:"start",partial:t});let a=null;const C=t.content,l=c(()=>C.length-1,"blockIndex");for await(const d of _){const f=d.candidates?.[0];if(f?.content?.parts)for(const r of f.content.parts){if(r.text!==void 0){const g=S(r);(!a||g&&a.type!=="thinking"||!g&&a.type!=="text")&&(a&&(a.type==="text"?i.push({type:"text_end",contentIndex:C.length-1,content:a.text,partial:t}):i.push({type:"thinking_end",contentIndex:l(),content:a.thinking,partial:t})),g?(a={type:"thinking",thinking:"",thinkingSignature:void 0},t.content.push(a),i.push({type:"thinking_start",contentIndex:l(),partial:t})):(a={type:"text",text:""},t.content.push(a),i.push({type:"text_start",contentIndex:l(),partial:t}))),a.type==="thinking"?(a.thinking+=r.text,a.thinkingSignature=y(a.thinkingSignature,r.thoughtSignature),i.push({type:"thinking_delta",contentIndex:l(),delta:r.text,partial:t})):(a.text+=r.text,a.textSignature=y(a.textSignature,r.thoughtSignature),i.push({type:"text_delta",contentIndex:l(),delta:r.text,partial:t}))}if(r.functionCall){a&&(a.type==="text"?i.push({type:"text_end",contentIndex:l(),content:a.text,partial:t}):i.push({type:"thinking_end",contentIndex:l(),content:a.thinking,partial:t}),a=null);const g=r.functionCall.id,m={type:"toolCall",id:!g||t.content.some(x=>x.type==="toolCall"&&x.id===g)?`${r.functionCall.name}_${Date.now()}_${++U}`:g,name:r.functionCall.name||"",arguments:r.functionCall.args??{},...r.thoughtSignature&&{thoughtSignature:r.thoughtSignature}};t.content.push(m),i.push({type:"toolcall_start",contentIndex:l(),partial:t}),i.push({type:"toolcall_delta",contentIndex:l(),delta:JSON.stringify(m.arguments),partial:t}),i.push({type:"toolcall_end",contentIndex:l(),toolCall:m,partial:t})}}f?.finishReason&&(t.stopReason=R(f.finishReason),t.content.some(r=>r.type==="toolCall")&&(t.stopReason="toolUse")),d.usageMetadata&&(t.usage={input:d.usageMetadata.promptTokenCount||0,output:(d.usageMetadata.candidatesTokenCount||0)+(d.usageMetadata.thoughtsTokenCount||0),cacheRead:d.usageMetadata.cachedContentTokenCount||0,cacheWrite:0,totalTokens:d.usageMetadata.totalTokenCount||0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},L(e,t.usage))}if(a&&(a.type==="text"?i.push({type:"text_end",contentIndex:l(),content:a.text,partial:t}):i.push({type:"thinking_end",contentIndex:l(),content:a.thinking,partial:t})),n?.signal?.aborted)throw new Error("Request was aborted");if(t.stopReason==="aborted"||t.stopReason==="error")throw new Error("An unknown error occurred");i.push({type:"done",reason:t.stopReason,message:t}),i.end()}catch(s){for(const u of t.content)"index"in u&&delete u.index;t.stopReason=n?.signal?.aborted?"aborted":"error",t.errorMessage=s instanceof Error?s.message:JSON.stringify(s),i.push({type:"error",reason:t.stopReason,error:t}),i.end()}})(),i},"streamGoogleVertex"),et=c((e,o,n)=>{const i=N(e,n,void 0),t=n?.toolChoice;if(!n?.reasoning)return k(e,o,{...i,toolChoice:t,thinking:{enabled:!1}});const s=P(n.reasoning),u=e;return O(u)||J(u)?k(e,o,{...i,toolChoice:t,thinking:{enabled:!0,level:B(s,u)}}):k(e,o,{...i,toolChoice:t,thinking:{enabled:!0,budgetTokens:q(u,s,n.thinkingBudgets)}})},"streamSimpleGoogleVertex");function H(e,o,n,i){const t={};(e.headers||i)&&(t.headers={...e.headers,...i});const s=Object.values(t).some(Boolean);return new E({vertexai:!0,project:o,location:n,apiVersion:D,httpOptions:s?t:void 0})}c(H,"createClient");function V(e){const o=e?.project||process.env.GOOGLE_CLOUD_PROJECT||process.env.GCLOUD_PROJECT;if(!o)throw new Error("Vertex AI requires a project ID. Set GOOGLE_CLOUD_PROJECT/GCLOUD_PROJECT or pass project in options.");return o}c(V,"resolveProject");function j(e){const o=e?.location||process.env.GOOGLE_CLOUD_LOCATION;if(!o)throw new Error("Vertex AI requires a location. Set GOOGLE_CLOUD_LOCATION or pass location in options.");return o}c(j,"resolveLocation");function W(e,o,n={}){const i=G(e,o),t={};n.temperature!==void 0&&(t.temperature=n.temperature),n.maxTokens!==void 0&&(t.maxOutputTokens=n.maxTokens);const s={...Object.keys(t).length>0&&t,...o.systemPrompt&&{systemInstruction:w(o.systemPrompt)},...o.tools&&o.tools.length>0&&{tools:M(o.tools)}};if(o.tools&&o.tools.length>0&&n.toolChoice?s.toolConfig={functionCallingConfig:{mode:v(n.toolChoice)}}:s.toolConfig=void 0,n.thinking?.enabled&&e.reasoning){const h={includeThoughts:!0};n.thinking.level!==void 0?h.thinkingLevel=A[n.thinking.level]:n.thinking.budgetTokens!==void 0&&(h.thinkingBudget=n.thinking.budgetTokens),s.thinkingConfig=h}if(n.signal){if(n.signal.aborted)throw new Error("Request aborted");s.abortSignal=n.signal}return{model:e.id,contents:i,config:s}}c(W,"buildParams");function O(e){return e.id.includes("3-pro")}c(O,"isGemini3ProModel");function J(e){return e.id.includes("3-flash")}c(J,"isGemini3FlashModel");function B(e,o){if(O(o))switch(e){case"minimal":case"low":return"LOW";case"medium":case"high":return"HIGH"}switch(e){case"minimal":return"MINIMAL";case"low":return"LOW";case"medium":return"MEDIUM";case"high":return"HIGH"}}c(B,"getGemini3ThinkingLevel");function q(e,o,n){return n?.[o]!==void 0?n[o]:e.id.includes("2.5-pro")?{minimal:128,low:2048,medium:8192,high:32768}[o]:e.id.includes("2.5-flash")?{minimal:128,low:2048,medium:8192,high:24576}[o]:-1}c(q,"getGoogleBudget");export{k as streamGoogleVertex,et as streamSimpleGoogleVertex};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var w=Object.defineProperty;var c=(e,o)=>w(e,"name",{value:o,configurable:!0});import{GoogleGenAI as S}from"@google/genai";import{getEnvApiKey as x}from"../env-api-keys.js";import{calculateCost as T}from"../models.js";import{AssistantMessageEventStream as R}from"../utils/event-stream.js";import{sanitizeSurrogates as v}from"../utils/sanitize-unicode.js";import{convertMessages as M,convertTools as _,isThinkingPart as G,mapStopReason as O,mapToolChoice as E,retainThoughtSignature as C}from"./google-shared.js";import{buildBaseOptions as P,clampReasoning as A}from"./simple-options.js";let N=0;const m=c((e,o,n)=>{const i=new R;return(async()=>{const t={role:"assistant",content:[],api:"google-generative-ai",provider:e.provider,model:e.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:"stop",timestamp:Date.now()};try{const s=n?.apiKey||x(e.provider)||"",g=W(e,s,n?.headers),u=K(e,o,n);n?.onPayload?.(u);const I=await g.models.generateContentStream(u);i.push({type:"start",partial:t});let a=null;const k=t.content,l=c(()=>k.length-1,"blockIndex");for await(const d of I){const p=d.candidates?.[0];if(p?.content?.parts)for(const r of p.content.parts){if(r.text!==void 0){const h=G(r);(!a||h&&a.type!=="thinking"||!h&&a.type!=="text")&&(a&&(a.type==="text"?i.push({type:"text_end",contentIndex:k.length-1,content:a.text,partial:t}):i.push({type:"thinking_end",contentIndex:l(),content:a.thinking,partial:t})),h?(a={type:"thinking",thinking:"",thinkingSignature:void 0},t.content.push(a),i.push({type:"thinking_start",contentIndex:l(),partial:t})):(a={type:"text",text:""},t.content.push(a),i.push({type:"text_start",contentIndex:l(),partial:t}))),a.type==="thinking"?(a.thinking+=r.text,a.thinkingSignature=C(a.thinkingSignature,r.thoughtSignature),i.push({type:"thinking_delta",contentIndex:l(),delta:r.text,partial:t})):(a.text+=r.text,a.textSignature=C(a.textSignature,r.thoughtSignature),i.push({type:"text_delta",contentIndex:l(),delta:r.text,partial:t}))}if(r.functionCall){a&&(a.type==="text"?i.push({type:"text_end",contentIndex:l(),content:a.text,partial:t}):i.push({type:"thinking_end",contentIndex:l(),content:a.thinking,partial:t}),a=null);const h=r.functionCall.id,f={type:"toolCall",id:!h||t.content.some(y=>y.type==="toolCall"&&y.id===h)?`${r.functionCall.name}_${Date.now()}_${++N}`:h,name:r.functionCall.name||"",arguments:r.functionCall.args??{},...r.thoughtSignature&&{thoughtSignature:r.thoughtSignature}};t.content.push(f),i.push({type:"toolcall_start",contentIndex:l(),partial:t}),i.push({type:"toolcall_delta",contentIndex:l(),delta:JSON.stringify(f.arguments),partial:t}),i.push({type:"toolcall_end",contentIndex:l(),toolCall:f,partial:t})}}p?.finishReason&&(t.stopReason=O(p.finishReason),t.content.some(r=>r.type==="toolCall")&&(t.stopReason="toolUse")),d.usageMetadata&&(t.usage={input:d.usageMetadata.promptTokenCount||0,output:(d.usageMetadata.candidatesTokenCount||0)+(d.usageMetadata.thoughtsTokenCount||0),cacheRead:d.usageMetadata.cachedContentTokenCount||0,cacheWrite:0,totalTokens:d.usageMetadata.totalTokenCount||0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},T(e,t.usage))}if(a&&(a.type==="text"?i.push({type:"text_end",contentIndex:l(),content:a.text,partial:t}):i.push({type:"thinking_end",contentIndex:l(),content:a.thinking,partial:t})),n?.signal?.aborted)throw new Error("Request was aborted");if(t.stopReason==="aborted"||t.stopReason==="error")throw new Error("An unknown error occurred");i.push({type:"done",reason:t.stopReason,message:t}),i.end()}catch(s){for(const g of t.content)"index"in g&&delete g.index;t.stopReason=n?.signal?.aborted?"aborted":"error",t.errorMessage=s instanceof Error?s.message:JSON.stringify(s),i.push({type:"error",reason:t.stopReason,error:t}),i.end()}})(),i},"streamGoogle"),X=c((e,o,n)=>{const i=n?.apiKey||x(e.provider);if(!i)throw new Error(`No API key for provider: ${e.provider}`);const t=P(e,n,i),s=n?.toolChoice;if(!n?.reasoning)return m(e,o,{...t,toolChoice:s,thinking:{enabled:!1}});const g=A(n.reasoning),u=e;return b(u)||L(u)?m(e,o,{...t,toolChoice:s,thinking:{enabled:!0,level:U(g,u)}}):m(e,o,{...t,toolChoice:s,thinking:{enabled:!0,budgetTokens:B(u,g,n.thinkingBudgets)}})},"streamSimpleGoogle");function W(e,o,n){const i={};return e.baseUrl&&(i.baseUrl=e.baseUrl,i.apiVersion=""),(e.headers||n)&&(i.headers={...e.headers,...n}),new S({apiKey:o,httpOptions:Object.keys(i).length>0?i:void 0})}c(W,"createClient");function K(e,o,n={}){const i=M(e,o),t={};n.temperature!==void 0&&(t.temperature=n.temperature),n.maxTokens!==void 0&&(t.maxOutputTokens=n.maxTokens);const s={...Object.keys(t).length>0&&t,...o.systemPrompt&&{systemInstruction:v(o.systemPrompt)},...o.tools&&o.tools.length>0&&{tools:_(o.tools)}};if(o.tools&&o.tools.length>0&&n.toolChoice?s.toolConfig={functionCallingConfig:{mode:E(n.toolChoice)}}:s.toolConfig=void 0,n.thinking?.enabled&&e.reasoning){const u={includeThoughts:!0};n.thinking.level!==void 0?u.thinkingLevel=n.thinking.level:n.thinking.budgetTokens!==void 0&&(u.thinkingBudget=n.thinking.budgetTokens),s.thinkingConfig=u}if(n.signal){if(n.signal.aborted)throw new Error("Request aborted");s.abortSignal=n.signal}return{model:e.id,contents:i,config:s}}c(K,"buildParams");function b(e){return e.id.includes("3-pro")}c(b,"isGemini3ProModel");function L(e){return e.id.includes("3-flash")}c(L,"isGemini3FlashModel");function U(e,o){if(b(o))switch(e){case"minimal":case"low":return"LOW";case"medium":case"high":return"HIGH"}switch(e){case"minimal":return"MINIMAL";case"low":return"LOW";case"medium":return"MEDIUM";case"high":return"HIGH"}}c(U,"getGemini3ThinkingLevel");function B(e,o,n){return n?.[o]!==void 0?n[o]:e.id.includes("2.5-pro")?{minimal:128,low:2048,medium:8192,high:32768}[o]:e.id.includes("2.5-flash")?{minimal:128,low:2048,medium:8192,high:24576}[o]:-1}c(B,"getGoogleBudget");export{m as streamGoogle,X as streamSimpleGoogle};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
var N=Object.defineProperty;var a=(e,t)=>N(e,"name",{value:t,configurable:!0});let g=null;typeof process<"u"&&(process.versions?.node||process.versions?.bun)&&import("node:os").then(e=>{g=e});import{getEnvApiKey as R}from"../env-api-keys.js";import{supportsXhigh as q}from"../models.js";import{AssistantMessageEventStream as B}from"../utils/event-stream.js";import{convertResponsesMessages as D,convertResponsesTools as M,processResponsesStream as T}from"./openai-responses-shared.js";import{buildBaseOptions as P,clampReasoning as U}from"./simple-options.js";const I="https://chatgpt.com/backend-api",J="https://api.openai.com/auth",S=3,_=1e3,K=new Set(["openai","openai-codex","opencode"]),H=new Set(["completed","incomplete","failed","cancelled","queued","in_progress"]);function X(e,t){return e===429||e===500||e===502||e===503||e===504?!0:/rate.?limit|overloaded|service.?unavailable|upstream.?connect|connection.?refused/i.test(t)}a(X,"isRetryableError");function x(e,t){return new Promise((r,n)=>{if(t?.aborted){n(new Error("Request was aborted"));return}const o=setTimeout(r,e);t?.addEventListener("abort",()=>{clearTimeout(o),n(new Error("Request was aborted"))})})}a(x,"sleep");const z=a((e,t,r)=>{const n=new B;return(async()=>{const o={role:"assistant",content:[],api:"openai-codex-responses",provider:e.provider,model:e.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:"stop",timestamp:Date.now()};try{const s=r?.apiKey||R(e.provider)||"";if(!s)throw new Error(`No API key for provider: ${e.provider}`);const c=ue(s),i=j(e,t,r);r?.onPayload?.(i);const u=de(e.headers,r?.headers,c,s,r?.sessionId),l=JSON.stringify(i),y=r?.transport||"sse";if(y!=="sse"){let w=!1;try{if(await ie(V(e.baseUrl),i,u,o,n,e,()=>{w=!0},r),r?.signal?.aborted)throw new Error("Request was aborted");n.push({type:"done",reason:o.stopReason,message:o}),n.end();return}catch(d){if(y==="websocket"||w)throw d}}let p,f;for(let w=0;w<=S;w++){if(r?.signal?.aborted)throw new Error("Request was aborted");try{if(p=await fetch(A(e.baseUrl),{method:"POST",headers:u,body:l,signal:r?.signal}),p.ok)break;const d=await p.text();if(w<S&&X(p.status,d)){const $=_*2**w;await x($,r?.signal);continue}const b=new Response(d,{status:p.status,statusText:p.statusText}),v=await ce(b);throw new Error(v.friendlyMessage||v.message)}catch(d){if(d instanceof Error&&(d.name==="AbortError"||d.message==="Request was aborted"))throw new Error("Request was aborted");if(f=d instanceof Error?d:new Error(String(d)),w<S&&!f.message.includes("usage limit")){const b=_*2**w;await x(b,r?.signal);continue}throw f}}if(!p?.ok)throw f??new Error("Failed after retries");if(!p.body)throw new Error("No response body");if(n.push({type:"start",partial:o}),await Y(p,o,n,e),r?.signal?.aborted)throw new Error("Request was aborted");n.push({type:"done",reason:o.stopReason,message:o}),n.end()}catch(s){o.stopReason=r?.signal?.aborted?"aborted":"error",o.errorMessage=s instanceof Error?s.message:String(s),n.push({type:"error",reason:o.stopReason,error:o}),n.end()}})(),n},"streamOpenAICodexResponses"),he=a((e,t,r)=>{const n=r?.apiKey||R(e.provider);if(!n)throw new Error(`No API key for provider: ${e.provider}`);const o=P(e,r,n),s=q(e)?r?.reasoning:U(r?.reasoning);return z(e,t,{...o,reasoningEffort:s})},"streamSimpleOpenAICodexResponses");function j(e,t,r){const n=D(e,t,K,{includeSystemPrompt:!1}),o={model:e.id,store:!1,stream:!0,instructions:t.systemPrompt,input:n,text:{verbosity:r?.textVerbosity||"medium"},include:["reasoning.encrypted_content"],prompt_cache_key:r?.sessionId,tool_choice:"auto",parallel_tool_calls:!0};return r?.temperature!==void 0&&(o.temperature=r.temperature),t.tools&&(o.tools=M(t.tools,{strict:null})),r?.reasoningEffort!==void 0&&(o.reasoning={effort:F(e.id,r.reasoningEffort),summary:r.reasoningSummary??"auto"}),o}a(j,"buildRequestBody");function F(e,t){const r=e.includes("/")?e.split("/").pop():e;return(r.startsWith("gpt-5.2")||r.startsWith("gpt-5.3"))&&t==="minimal"?"low":r==="gpt-5.1"&&t==="xhigh"?"high":r==="gpt-5.1-codex-mini"?t==="high"||t==="xhigh"?"high":"medium":t}a(F,"clampReasoningEffort");function A(e){const r=(e&&e.trim().length>0?e:I).replace(/\/+$/,"");return r.endsWith("/codex/responses")?r:r.endsWith("/codex")?`${r}/responses`:`${r}/codex/responses`}a(A,"resolveCodexUrl");function V(e){const t=new URL(A(e));return t.protocol==="https:"&&(t.protocol="wss:"),t.protocol==="http:"&&(t.protocol="ws:"),t.toString()}a(V,"resolveCodexWebSocketUrl");async function Y(e,t,r,n){await T(L(Q(e)),t,r,n)}a(Y,"processStream");async function*L(e){for await(const t of e){const r=typeof t.type=="string"?t.type:void 0;if(r){if(r==="error"){const n=t.code||"",o=t.message||"";throw new Error(`Codex error: ${o||n||JSON.stringify(t)}`)}if(r==="response.failed"){const n=t.response?.error?.message;throw new Error(n||"Codex response failed")}if(r==="response.done"||r==="response.completed"){const n=t.response,o=n&&{...n,status:G(n.status)};yield{...t,type:"response.completed",response:o};continue}yield t}}}a(L,"mapCodexEvents");function G(e){if(typeof e=="string")return H.has(e)?e:void 0}a(G,"normalizeCodexStatus");async function*Q(e){if(!e.body)return;const t=e.body.getReader(),r=new TextDecoder;let n="";for(;;){const{done:o,value:s}=await t.read();if(o)break;n+=r.decode(s,{stream:!0});let c=n.indexOf(`
|
|
2
|
+
|
|
3
|
+
`);for(;c!==-1;){const i=n.slice(0,c);n=n.slice(c+2);const u=i.split(`
|
|
4
|
+
`).filter(l=>l.startsWith("data:")).map(l=>l.slice(5).trim());if(u.length>0){const l=u.join(`
|
|
5
|
+
`).trim();if(l&&l!=="[DONE]")try{yield JSON.parse(l)}catch{}}c=n.indexOf(`
|
|
6
|
+
|
|
7
|
+
`)}}}a(Q,"parseSSE");const Z="responses_websockets=2026-02-06",ee=300*1e3,m=new Map;function te(){const e=globalThis.WebSocket;return typeof e!="function"?null:e}a(te,"getWebSocketConstructor");function re(e){const t={};for(const[r,n]of e.entries())t[r]=n;return t}a(re,"headersToRecord");function ne(e){const t=e.readyState;return typeof t=="number"?t:void 0}a(ne,"getWebSocketReadyState");function E(e){const t=ne(e);return t===void 0||t===1}a(E,"isWebSocketReusable");function h(e,t=1e3,r="done"){try{e.close(t,r)}catch{}}a(h,"closeWebSocketSilently");function O(e,t){t.idleTimer&&clearTimeout(t.idleTimer),t.idleTimer=setTimeout(()=>{t.busy||(h(t.socket,1e3,"idle_timeout"),m.delete(e))},ee)}a(O,"scheduleSessionWebSocketExpiry");async function k(e,t,r){const n=te();if(!n)throw new Error("WebSocket transport is not available in this runtime");const o=re(t);return o["OpenAI-Beta"]=Z,new Promise((s,c)=>{let i=!1,u;try{u=new n(e,{headers:o})}catch(d){c(d instanceof Error?d:new Error(String(d)));return}const l=a(()=>{i||(i=!0,w(),s(u))},"onOpen"),y=a(d=>{i||(i=!0,w(),c(W(d)))},"onError"),p=a(d=>{i||(i=!0,w(),c(C(d)))},"onClose"),f=a(()=>{i||(i=!0,w(),u.close(1e3,"aborted"),c(new Error("Request was aborted")))},"onAbort"),w=a(()=>{u.removeEventListener("open",l),u.removeEventListener("error",y),u.removeEventListener("close",p),r?.removeEventListener("abort",f)},"cleanup");u.addEventListener("open",l),u.addEventListener("error",y),u.addEventListener("close",p),r?.addEventListener("abort",f)})}a(k,"connectWebSocket");async function oe(e,t,r,n){if(!r){const i=await k(e,t,n);return{socket:i,release:a(({keep:u}={})=>{if(u===!1){h(i);return}h(i)},"release")}}const o=m.get(r);if(o){if(o.idleTimer&&(clearTimeout(o.idleTimer),o.idleTimer=void 0),!o.busy&&E(o.socket))return o.busy=!0,{socket:o.socket,release:a(({keep:i}={})=>{if(!i||!E(o.socket)){h(o.socket),m.delete(r);return}o.busy=!1,O(r,o)},"release")};if(o.busy){const i=await k(e,t,n);return{socket:i,release:a(()=>{h(i)},"release")}}E(o.socket)||(h(o.socket),m.delete(r))}const s=await k(e,t,n),c={socket:s,busy:!0};return m.set(r,c),{socket:s,release:a(({keep:i}={})=>{if(!i||!E(c.socket)){h(c.socket),c.idleTimer&&clearTimeout(c.idleTimer),m.get(r)===c&&m.delete(r);return}c.busy=!1,O(r,c)},"release")}}a(oe,"acquireWebSocket");function W(e){if(e&&typeof e=="object"&&"message"in e){const t=e.message;if(typeof t=="string"&&t.length>0)return new Error(t)}return new Error("WebSocket error")}a(W,"extractWebSocketError");function C(e){if(e&&typeof e=="object"){const t="code"in e?e.code:void 0,r="reason"in e?e.reason:void 0,n=typeof t=="number"?` ${t}`:"",o=typeof r=="string"&&r.length>0?` ${r}`:"";return new Error(`WebSocket closed${n}${o}`.trim())}return new Error("WebSocket closed")}a(C,"extractWebSocketCloseError");async function se(e){if(typeof e=="string")return e;if(e instanceof ArrayBuffer)return new TextDecoder().decode(new Uint8Array(e));if(ArrayBuffer.isView(e)){const t=e;return new TextDecoder().decode(new Uint8Array(t.buffer,t.byteOffset,t.byteLength))}if(e&&typeof e=="object"&&"arrayBuffer"in e){const r=await e.arrayBuffer();return new TextDecoder().decode(new Uint8Array(r))}return null}a(se,"decodeWebSocketData");async function*ae(e,t){const r=[];let n=null,o=!1,s=null,c=!1;const i=a(()=>{if(!n)return;const f=n;n=null,f()},"wake"),u=a(f=>{(async()=>{if(!f||typeof f!="object"||!("data"in f))return;const w=await se(f.data);if(w)try{const d=JSON.parse(w),b=typeof d.type=="string"?d.type:"";(b==="response.completed"||b==="response.done")&&(c=!0,o=!0),r.push(d),i()}catch{}})()},"onMessage"),l=a(f=>{s=W(f),o=!0,i()},"onError"),y=a(f=>{if(c){o=!0,i();return}s||(s=C(f)),o=!0,i()},"onClose"),p=a(()=>{s=new Error("Request was aborted"),o=!0,i()},"onAbort");e.addEventListener("message",u),e.addEventListener("error",l),e.addEventListener("close",y),t?.addEventListener("abort",p);try{for(;;){if(t?.aborted)throw new Error("Request was aborted");if(r.length>0){yield r.shift();continue}if(o)break;await new Promise(f=>{n=f})}if(s)throw s;if(!c)throw new Error("WebSocket stream closed before response.completed")}finally{e.removeEventListener("message",u),e.removeEventListener("error",l),e.removeEventListener("close",y),t?.removeEventListener("abort",p)}}a(ae,"parseWebSocket");async function ie(e,t,r,n,o,s,c,i){const{socket:u,release:l}=await oe(e,r,i?.sessionId,i?.signal);let y=!0;try{u.send(JSON.stringify({type:"response.create",...t})),c(),o.push({type:"start",partial:n}),await T(L(ae(u,i?.signal)),n,o,s),i?.signal?.aborted&&(y=!1)}catch(p){throw y=!1,p}finally{l({keep:y})}}a(ie,"processWebSocketStream");async function ce(e){const t=await e.text();let r=t||e.statusText||"Request failed",n;try{const s=JSON.parse(t)?.error;if(s){const c=s.code||s.type||"";if(/usage_limit_reached|usage_not_included|rate_limit_exceeded/i.test(c)||e.status===429){const i=s.plan_type?` (${s.plan_type.toLowerCase()} plan)`:"",u=s.resets_at?Math.max(0,Math.round((s.resets_at*1e3-Date.now())/6e4)):void 0,l=u!==void 0?` Try again in ~${u} min.`:"";n=`You have hit your ChatGPT usage limit${i}.${l}`.trim()}r=s.message||n||r}}catch{}return{message:r,friendlyMessage:n}}a(ce,"parseErrorResponse");function ue(e){try{const t=e.split(".");if(t.length!==3)throw new Error("Invalid token");const n=JSON.parse(atob(t[1]))?.[J]?.chatgpt_account_id;if(!n)throw new Error("No account ID in token");return n}catch{throw new Error("Failed to extract accountId from token")}}a(ue,"extractAccountId");function de(e,t,r,n,o){const s=new Headers(e);s.set("Authorization",`Bearer ${n}`),s.set("chatgpt-account-id",r),s.set("OpenAI-Beta","responses=experimental"),s.set("originator","catui");const c=g?`catui (${g.platform()} ${g.release()}; ${g.arch()})`:"catui (browser)";s.set("User-Agent",c),s.set("accept","text/event-stream"),s.set("content-type","application/json");for(const[i,u]of Object.entries(t||{}))s.set(i,u);return o&&s.set("session_id",o),s}a(de,"buildHeaders");export{z as streamOpenAICodexResponses,he as streamSimpleOpenAICodexResponses};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
var M=Object.defineProperty;var _=(t,e)=>M(t,"name",{value:e,configurable:!0});import O from"openai";import{getEnvApiKey as q}from"../env-api-keys.js";import{calculateCost as N,supportsXhigh as P}from"../models.js";import{AssistantMessageEventStream as B}from"../utils/event-stream.js";import{parseStreamingJson as b}from"../utils/json-parse.js";import{sanitizeSurrogates as S}from"../utils/sanitize-unicode.js";import{buildCopilotDynamicHeaders as F,hasCopilotVisionInput as j}from"./github-copilot-headers.js";import{buildBaseOptions as D,clampReasoning as U}from"./simple-options.js";import{transformMessages as z}from"./transform-messages.js";import{getDebugLogger as G}from"../debug-logger.js";function $(t){let e=t.replace(/[^a-zA-Z0-9]/g,"");return e.length<9?e=e+"ABCDEFGHI".slice(0,9-e.length):e.length>9&&(e=e.slice(0,9)),e}_($,"normalizeMistralToolId");function K(t){for(const e of t)if(e.role==="toolResult"||e.role==="assistant"&&e.content.some(o=>o.type==="toolCall"))return!0;return!1}_(K,"hasToolHistory");const L=_((t,e,o)=>{const i=new B;return(async()=>{const s={role:"assistant",content:[],api:t.api,provider:t.provider,model:t.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:"stop",timestamp:Date.now()};try{const r=o?.apiKey||q(t.provider)||"",u=H(t,e,r,o?.headers),a=J(t,e,o);o?.onPayload?.(a);const g=G();g.logProviderRequest(t.provider||"unknown",t.id||"unknown",a);const f=await u.chat.completions.create(a,{signal:o?.signal});i.push({type:"start",partial:s});let n=null;const d=s.content,y=_(()=>d.length-1,"blockIndex"),R=_(c=>{c&&(c.type==="text"?i.push({type:"text_end",contentIndex:y(),content:c.text,partial:s}):c.type==="thinking"?i.push({type:"thinking_end",contentIndex:y(),content:c.thinking,partial:s}):c.type==="toolCall"&&(c.arguments=b(c.partialArgs),delete c.partialArgs,i.push({type:"toolcall_end",contentIndex:y(),toolCall:c,partial:s})))},"finishCurrentBlock");let m="",T=!1;const A=t.provider||"unknown",p=t.id||"unknown";for await(const c of f){if(g.logProviderChunk(A,p,c),c.usage){const E=c.usage.prompt_tokens_details?.cached_tokens||0,v=c.usage.completion_tokens_details?.reasoning_tokens||0,C=(c.usage.prompt_tokens||0)-E,l=(c.usage.completion_tokens||0)+v;s.usage={input:C,output:l,cacheRead:E,cacheWrite:0,totalTokens:C+l+E,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},N(t,s.usage)}const h=c.choices?.[0];if(h&&(h.finish_reason&&(s.stopReason=X(h.finish_reason)),h.delta)){if((h.delta.content!==void 0||h.delta.tool_calls!==void 0)&&g.logContentParse("choice.delta",{content:h.delta.content,tool_calls:h.delta.tool_calls,reasoning_content:h.delta.reasoning_content,reasoning:h.delta.reasoning}),h.delta.content!==null&&h.delta.content!==void 0&&h.delta.content.length>0)for(m+=h.delta.content;m.length>0;)if(T){const l=["</thinking>","</think>"];let k=-1,I=0;for(const x of l){const w=m.indexOf(x);w!==-1&&(k===-1||w<k)&&(k=w,I=x.length)}if(k!==-1){const x=m.slice(0,k);x&&((!n||n.type!=="thinking")&&(R(n),n={type:"thinking",thinking:"",thinkingSignature:"minimax-thinking-tag"},s.content.push(n),i.push({type:"thinking_start",contentIndex:y(),partial:s})),n.type==="thinking"&&(n.thinking+=x,i.push({type:"thinking_delta",contentIndex:y(),delta:x,partial:s}))),m=m.slice(k+I),T=!1,n&&n.type==="thinking"&&(R(n),n=null)}else{const x=m;m="",(!n||n.type!=="thinking")&&(R(n),n={type:"thinking",thinking:"",thinkingSignature:"minimax-thinking-tag"},s.content.push(n),i.push({type:"thinking_start",contentIndex:y(),partial:s})),n.type==="thinking"&&(n.thinking+=x,i.push({type:"thinking_delta",contentIndex:y(),delta:x,partial:s}))}}else{const l=["<thinking>","<think>"];let k=-1,I=0;for(const x of l){const w=m.indexOf(x);w!==-1&&(k===-1||w<k)&&(k=w,I=x.length)}if(k!==-1){const x=m.slice(0,k);m=m.slice(k+I),T=!0,x&&((!n||n.type!=="text")&&(R(n),n={type:"text",text:""},s.content.push(n),i.push({type:"text_start",contentIndex:y(),partial:s})),n.type==="text"&&(n.text+=x,i.push({type:"text_delta",contentIndex:y(),delta:x,partial:s})))}else{const x=m;m="",(!n||n.type!=="text")&&(R(n),n={type:"text",text:""},s.content.push(n),i.push({type:"text_start",contentIndex:y(),partial:s})),n.type==="text"&&(n.text+=x,i.push({type:"text_delta",contentIndex:y(),delta:x,partial:s}))}}const E=["reasoning_content","reasoning","reasoning_text"];let v=null;for(const l of E)if(h.delta[l]!==null&&h.delta[l]!==void 0&&h.delta[l].length>0&&!v){v=l;break}if(v&&((!n||n.type!=="thinking")&&(R(n),n={type:"thinking",thinking:"",thinkingSignature:v},s.content.push(n),i.push({type:"thinking_start",contentIndex:y(),partial:s})),n.type==="thinking")){const l=h.delta[v];n.thinking+=l,i.push({type:"thinking_delta",contentIndex:y(),delta:l,partial:s})}if(h?.delta?.tool_calls){for(const l of h.delta.tool_calls)if((!n||n.type!=="toolCall"||l.id&&n.id!==l.id)&&(R(n),n={type:"toolCall",id:l.id||"",name:l.function?.name||"",arguments:{},partialArgs:""},s.content.push(n),i.push({type:"toolcall_start",contentIndex:y(),partial:s})),n.type==="toolCall"){l.id&&(n.id=l.id),l.function?.name&&(n.name=l.function.name);let k="";l.function?.arguments&&(k=l.function.arguments,n.partialArgs+=l.function.arguments,n.arguments=b(n.partialArgs)),i.push({type:"toolcall_delta",contentIndex:y(),delta:k,partial:s})}}const C=h.delta.reasoning_details;if(C&&Array.isArray(C)){for(const l of C)if(l.type==="reasoning.encrypted"&&l.id&&l.data){const k=s.content.find(I=>I.type==="toolCall"&&I.id===l.id);k&&(k.thoughtSignature=JSON.stringify(l))}}}}if(R(n),o?.signal?.aborted)throw new Error("Request was aborted");if(s.stopReason==="aborted"||s.stopReason==="error")throw new Error("An unknown error occurred");i.push({type:"done",reason:s.stopReason,message:s}),i.end()}catch(r){for(const a of s.content)delete a.index;s.stopReason=o?.signal?.aborted?"aborted":"error",s.errorMessage=r instanceof Error?r.message:JSON.stringify(r);const u=r?.error?.metadata?.raw;if(u&&(s.errorMessage+=`
|
|
2
|
+
${u}`),r&&typeof r=="object"&&"headers"in r){const a=r.headers;a&&typeof a=="object"&&(s.errorHeaders=Object.fromEntries(Object.entries(a).map(([g,f])=>[g.toLowerCase(),String(f)])))}i.push({type:"error",reason:s.stopReason,error:s}),i.end()}})(),i},"streamOpenAICompletions"),gt=_((t,e,o)=>{const i=o?.apiKey||q(t.provider);if(!i)throw new Error(`No API key for provider: ${t.provider}`);const s=D(t,o,i),r=P(t)?o?.reasoning:U(o?.reasoning),u=o?.toolChoice;return L(t,e,{...s,reasoningEffort:r,toolChoice:u})},"streamSimpleOpenAICompletions");function H(t,e,o,i){if(!o){if(!process.env.OPENAI_API_KEY)throw new Error("OpenAI API key is required. Set OPENAI_API_KEY environment variable or pass it as an argument.");o=process.env.OPENAI_API_KEY}const s={...t.headers};if(t.provider==="github-copilot"){const r=j(e.messages),u=F({messages:e.messages,hasImages:r});Object.assign(s,u)}return i&&Object.assign(s,i),new O({apiKey:o,baseURL:t.baseUrl,dangerouslyAllowBrowser:!0,defaultHeaders:s})}_(H,"createClient");function J(t,e,o){const i=tt(t),s=Z(t,e,i);Y(t,s);const r={model:t.id,messages:s,stream:!0};if(i.supportsUsageInStreaming!==!1&&(r.stream_options={include_usage:!0}),i.supportsStore&&(r.store=!1),o?.maxTokens&&(i.maxTokensField==="max_tokens"?r.max_tokens=o.maxTokens:r.max_completion_tokens=o.maxTokens),o?.temperature!==void 0&&(r.temperature=o.temperature),e.tools?r.tools=V(e.tools,i):K(e.messages)&&(r.tools=[]),o?.toolChoice&&(r.tool_choice=o.toolChoice),(i.thinkingFormat==="zai"||i.thinkingFormat==="qwen")&&t.reasoning?r.enable_thinking=!!o?.reasoningEffort:o?.reasoningEffort&&t.reasoning&&i.supportsReasoningEffort&&(r.reasoning_effort=W(o.reasoningEffort,i.reasoningEffortMap)),t.baseUrl.includes("openrouter.ai")&&t.compat?.openRouterRouting&&(r.provider=t.compat.openRouterRouting),t.baseUrl.includes("ai-gateway.vercel.sh")&&t.compat?.vercelGatewayRouting){const u=t.compat.vercelGatewayRouting;if(u.only||u.order){const a={};u.only&&(a.only=u.only),u.order&&(a.order=u.order),r.providerOptions={gateway:a}}}return r}_(J,"buildParams");function W(t,e){return e[t]??t}_(W,"mapReasoningEffort");function Y(t,e){if(!(t.provider!=="openrouter"||!t.id.startsWith("anthropic/")))for(let o=e.length-1;o>=0;o--){const i=e[o];if(i.role!=="user"&&i.role!=="assistant")continue;const s=i.content;if(typeof s=="string"){i.content=[Object.assign({type:"text",text:s},{cache_control:{type:"ephemeral"}})];return}if(Array.isArray(s))for(let r=s.length-1;r>=0;r--){const u=s[r];if(u?.type==="text"){Object.assign(u,{cache_control:{type:"ephemeral"}});return}}}}_(Y,"maybeAddOpenRouterAnthropicCacheControl");function Z(t,e,o){const i=[],s=_(a=>{if(o.requiresMistralToolIds)return $(a);if(a.includes("|")){const[g]=a.split("|");return g.replace(/[^a-zA-Z0-9_-]/g,"_").slice(0,40)}return t.provider==="openai"&&a.length>40?a.slice(0,40):a},"normalizeToolCallId"),r=z(e.messages,t,a=>s(a));if(e.systemPrompt){const g=t.reasoning&&o.supportsDeveloperRole?"developer":"system";i.push({role:g,content:S(e.systemPrompt)})}let u=null;for(let a=0;a<r.length;a++){const g=r[a];if(o.requiresAssistantAfterToolResult&&u==="toolResult"&&g.role==="user"&&i.push({role:"assistant",content:"I have processed the tool results."}),g.role==="user")if(typeof g.content=="string")i.push({role:"user",content:S(g.content)});else{const f=g.content.map(d=>d.type==="text"?{type:"text",text:S(d.text)}:d.type==="document"?{type:"text",text:"[PDF document - content not available in OpenAI format]"}:{type:"image_url",image_url:{url:`data:${d.mimeType};base64,${d.data}`}}),n=t.input.includes("image")?f:f.filter(d=>d.type!=="image_url");if(n.length===0)continue;i.push({role:"user",content:n})}else if(g.role==="assistant"){const f={role:"assistant",content:o.requiresAssistantAfterToolResult?"":null},d=g.content.filter(p=>p.type==="text").filter(p=>p.text&&p.text.trim().length>0);d.length>0&&(t.provider==="github-copilot"?f.content=d.map(p=>S(p.text)).join(""):f.content=d.map(p=>({type:"text",text:S(p.text)})));const R=g.content.filter(p=>p.type==="thinking").filter(p=>p.thinking&&p.thinking.trim().length>0);if(R.length>0)if(o.requiresThinkingAsText){const p=R.map(h=>h.thinking).join(`
|
|
3
|
+
|
|
4
|
+
`),c=f.content;c?c.unshift({type:"text",text:p}):f.content=[{type:"text",text:p}]}else{const p=R[0].thinkingSignature;p&&p.length>0&&(f[p]=R.map(c=>c.thinking).join(`
|
|
5
|
+
`))}const m=g.content.filter(p=>p.type==="toolCall");if(m.length>0){f.tool_calls=m.map(c=>({id:c.id,type:"function",function:{name:c.name,arguments:JSON.stringify(c.arguments)}}));const p=m.filter(c=>c.thoughtSignature).map(c=>{try{return JSON.parse(c.thoughtSignature)}catch{return null}}).filter(Boolean);p.length>0&&(f.reasoning_details=p)}const T=f.content;if(!(T!=null&&T.length>0)&&!f.tool_calls)continue;i.push(f)}else if(g.role==="toolResult"){const f=[];let n=a;for(;n<r.length&&r[n].role==="toolResult";n++){const d=r[n],y=d.content.filter(A=>A.type==="text").map(A=>A.text).join(`
|
|
6
|
+
`),R=d.content.some(A=>A.type==="image"),m=y.length>0,T={role:"tool",content:S(m?y:"(see attached image)"),tool_call_id:d.toolCallId};if(o.requiresToolResultName&&d.toolName&&(T.name=d.toolName),i.push(T),R&&t.input.includes("image"))for(const A of d.content)A.type==="image"&&f.push({type:"image_url",image_url:{url:`data:${A.mimeType};base64,${A.data}`}})}a=n-1,f.length>0?(o.requiresAssistantAfterToolResult&&i.push({role:"assistant",content:"I have processed the tool results."}),i.push({role:"user",content:[{type:"text",text:"Attached image(s) from tool result:"},...f]}),u="user"):u="toolResult";continue}u=g.role}return i}_(Z,"convertMessages");function V(t,e){return t.map(o=>({type:"function",function:{name:o.name,description:o.description,parameters:o.parameters,...e.supportsStrictMode!==!1&&{strict:!1}}}))}_(V,"convertTools");function X(t){if(t===null)return"stop";switch(t){case"stop":return"stop";case"length":return"length";case"function_call":case"tool_calls":return"toolUse";case"content_filter":return"error";default:{const e=t;throw new Error(`Unhandled stop reason: ${e}`)}}}_(X,"mapStopReason");function Q(t){const e=t.provider,o=t.baseUrl,i=e==="zai"||o.includes("api.z.ai"),s=e==="cerebras"||o.includes("cerebras.ai")||e==="xai"||o.includes("api.x.ai")||e==="mistral"||o.includes("mistral.ai")||o.includes("chutes.ai")||o.includes("deepseek.com")||i||e==="opencode"||o.includes("opencode.ai"),r=e==="mistral"||o.includes("mistral.ai")||o.includes("chutes.ai"),u=e==="xai"||o.includes("api.x.ai"),a=e==="groq"||o.includes("groq.com"),g=e==="mistral"||o.includes("mistral.ai"),f=a&&t.id==="qwen/qwen3-32b"?{minimal:"default",low:"default",medium:"default",high:"default",xhigh:"default"}:{};return{supportsStore:!s,supportsDeveloperRole:!s,supportsReasoningEffort:!u&&!i,reasoningEffortMap:f,supportsUsageInStreaming:!0,maxTokensField:r?"max_tokens":"max_completion_tokens",requiresToolResultName:g,requiresAssistantAfterToolResult:!1,requiresThinkingAsText:g,requiresMistralToolIds:g,thinkingFormat:i?"zai":"openai",openRouterRouting:{},vercelGatewayRouting:{},supportsStrictMode:!0}}_(Q,"detectCompat");function tt(t){const e=Q(t);return t.compat?{supportsStore:t.compat.supportsStore??e.supportsStore,supportsDeveloperRole:t.compat.supportsDeveloperRole??e.supportsDeveloperRole,supportsReasoningEffort:t.compat.supportsReasoningEffort??e.supportsReasoningEffort,reasoningEffortMap:t.compat.reasoningEffortMap??e.reasoningEffortMap,supportsUsageInStreaming:t.compat.supportsUsageInStreaming??e.supportsUsageInStreaming,maxTokensField:t.compat.maxTokensField??e.maxTokensField,requiresToolResultName:t.compat.requiresToolResultName??e.requiresToolResultName,requiresAssistantAfterToolResult:t.compat.requiresAssistantAfterToolResult??e.requiresAssistantAfterToolResult,requiresThinkingAsText:t.compat.requiresThinkingAsText??e.requiresThinkingAsText,requiresMistralToolIds:t.compat.requiresMistralToolIds??e.requiresMistralToolIds,thinkingFormat:t.compat.thinkingFormat??e.thinkingFormat,openRouterRouting:t.compat.openRouterRouting??{},vercelGatewayRouting:t.compat.vercelGatewayRouting??e.vercelGatewayRouting,supportsStrictMode:t.compat.supportsStrictMode??e.supportsStrictMode}:e}_(tt,"getCompat");export{Z as convertMessages,L as streamOpenAICompletions,gt as streamSimpleOpenAICompletions};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
var I=Object.defineProperty;var g=(r,n)=>I(r,"name",{value:n,configurable:!0});import{calculateCost as S}from"../models.js";import{parseStreamingJson as h}from"../utils/json-parse.js";import{sanitizeSurrogates as y}from"../utils/sanitize-unicode.js";import{transformMessages as $}from"./transform-messages.js";function C(r){let n=3735928559,o=1103547991;for(let f=0;f<r.length;f++){const d=r.charCodeAt(f);n=Math.imul(n^d,2654435761),o=Math.imul(o^d,1597334677)}return n=Math.imul(n^n>>>16,2246822507)^Math.imul(o^o>>>13,3266489909),o=Math.imul(o^o>>>16,2246822507)^Math.imul(n^n>>>13,3266489909),(o>>>0).toString(36)+(n>>>0).toString(36)}g(C,"shortHash");function T(r,n,o,f){const d=[],a=g(t=>{if(!o.has(r.provider)||!t.includes("|"))return t;const[e,i]=t.split("|"),p=e.replace(/[^a-zA-Z0-9_-]/g,"_");let c=i.replace(/[^a-zA-Z0-9_-]/g,"_");c.startsWith("fc")||(c=`fc_${c}`);let l=p.length>64?p.slice(0,64):p,u=c.length>64?c.slice(0,64):c;return l=l.replace(/_+$/,""),u=u.replace(/_+$/,""),`${l}|${u}`},"normalizeToolCallId"),s=$(n.messages,r,a);if((f?.includeSystemPrompt??!0)&&n.systemPrompt){const t=r.reasoning?"developer":"system";d.push({role:t,content:y(n.systemPrompt)})}let m=0;for(const t of s){if(t.role==="user")if(typeof t.content=="string")d.push({role:"user",content:[{type:"input_text",text:y(t.content)}]});else{const e=t.content.map(p=>p.type==="text"?{type:"input_text",text:y(p.text)}:p.type==="document"?{type:"input_text",text:"[PDF document - content not available in OpenAI format]"}:{type:"input_image",detail:"auto",image_url:`data:${p.mimeType};base64,${p.data}`}),i=r.input.includes("image")?e:e.filter(p=>p.type!=="input_image");if(i.length===0)continue;d.push({role:"user",content:i})}else if(t.role==="assistant"){const e=[],i=t,p=i.model!==r.id&&i.provider===r.provider&&i.api===r.api;for(const c of t.content)if(c.type==="thinking"){if(c.thinkingSignature){const l=JSON.parse(c.thinkingSignature);e.push(l)}}else if(c.type==="text"){const l=c;let u=l.textSignature;u?u.length>64&&(u=`msg_${C(u)}`):u=`msg_${m}`,e.push({type:"message",role:"assistant",content:[{type:"output_text",text:y(l.text),annotations:[]}],status:"completed",id:u})}else if(c.type==="toolCall"){const l=c,[u,k]=l.id.split("|");let _=k;p&&_?.startsWith("fc_")&&(_=void 0),e.push({type:"function_call",id:_,call_id:u,name:l.name,arguments:JSON.stringify(l.arguments)})}if(e.length===0)continue;d.push(...e)}else if(t.role==="toolResult"){const e=t.content.filter(l=>l.type==="text").map(l=>l.text).join(`
|
|
2
|
+
`),i=t.content.some(l=>l.type==="image"),p=e.length>0,[c]=t.toolCallId.split("|");if(d.push({type:"function_call_output",call_id:c,output:y(p?e:"(see attached image)")}),i&&r.input.includes("image")){const l=[];l.push({type:"input_text",text:"Attached image(s) from tool result:"});for(const u of t.content)u.type==="image"&&l.push({type:"input_image",detail:"auto",image_url:`data:${u.mimeType};base64,${u.data}`});d.push({role:"user",content:l})}}m++}return d}g(T,"convertResponsesMessages");function b(r,n){const o=n?.strict===void 0?!1:n.strict;return r.map(f=>({type:"function",name:f.name,description:f.description,parameters:f.parameters,strict:o}))}g(b,"convertResponsesTools");async function z(r,n,o,f,d){let a=null,s=null;const x=n.content,m=g(()=>x.length-1,"blockIndex");for await(const t of r)if(t.type==="response.output_item.added"){const e=t.item;e.type==="reasoning"?(a=e,s={type:"thinking",thinking:""},n.content.push(s),o.push({type:"thinking_start",contentIndex:m(),partial:n})):e.type==="message"?(a=e,s={type:"text",text:""},n.content.push(s),o.push({type:"text_start",contentIndex:m(),partial:n})):e.type==="function_call"&&(a=e,s={type:"toolCall",id:`${e.call_id}|${e.id}`,name:e.name,arguments:{},partialJson:e.arguments||""},n.content.push(s),o.push({type:"toolcall_start",contentIndex:m(),partial:n}))}else if(t.type==="response.reasoning_summary_part.added")a&&a.type==="reasoning"&&(a.summary=a.summary||[],a.summary.push(t.part));else if(t.type==="response.reasoning_summary_text.delta"){if(a?.type==="reasoning"&&s?.type==="thinking"){a.summary=a.summary||[];const e=a.summary[a.summary.length-1];e&&(s.thinking+=t.delta,e.text+=t.delta,o.push({type:"thinking_delta",contentIndex:m(),delta:t.delta,partial:n}))}}else if(t.type==="response.reasoning_summary_part.done"){if(a?.type==="reasoning"&&s?.type==="thinking"){a.summary=a.summary||[];const e=a.summary[a.summary.length-1];e&&(s.thinking+=`
|
|
3
|
+
|
|
4
|
+
`,e.text+=`
|
|
5
|
+
|
|
6
|
+
`,o.push({type:"thinking_delta",contentIndex:m(),delta:`
|
|
7
|
+
|
|
8
|
+
`,partial:n}))}}else if(t.type==="response.content_part.added")a?.type==="message"&&(a.content=a.content||[],(t.part.type==="output_text"||t.part.type==="refusal")&&a.content.push(t.part));else if(t.type==="response.output_text.delta"){if(a?.type==="message"&&s?.type==="text"){if(!a.content||a.content.length===0)continue;const e=a.content[a.content.length-1];e?.type==="output_text"&&(s.text+=t.delta,e.text+=t.delta,o.push({type:"text_delta",contentIndex:m(),delta:t.delta,partial:n}))}}else if(t.type==="response.refusal.delta"){if(a?.type==="message"&&s?.type==="text"){if(!a.content||a.content.length===0)continue;const e=a.content[a.content.length-1];e?.type==="refusal"&&(s.text+=t.delta,e.refusal+=t.delta,o.push({type:"text_delta",contentIndex:m(),delta:t.delta,partial:n}))}}else if(t.type==="response.function_call_arguments.delta")a?.type==="function_call"&&s?.type==="toolCall"&&(s.partialJson+=t.delta,s.arguments=h(s.partialJson),o.push({type:"toolcall_delta",contentIndex:m(),delta:t.delta,partial:n}));else if(t.type==="response.function_call_arguments.done")a?.type==="function_call"&&s?.type==="toolCall"&&(s.partialJson=t.arguments,s.arguments=h(s.partialJson));else if(t.type==="response.output_item.done"){const e=t.item;if(e.type==="reasoning"&&s?.type==="thinking")s.thinking=e.summary?.map(i=>i.text).join(`
|
|
9
|
+
|
|
10
|
+
`)||"",s.thinkingSignature=JSON.stringify(e),o.push({type:"thinking_end",contentIndex:m(),content:s.thinking,partial:n}),s=null;else if(e.type==="message"&&s?.type==="text")s.text=e.content.map(i=>i.type==="output_text"?i.text:i.refusal).join(""),s.textSignature=e.id,o.push({type:"text_end",contentIndex:m(),content:s.text,partial:n}),s=null;else if(e.type==="function_call"){const i=s?.type==="toolCall"&&s.partialJson?h(s.partialJson):h(e.arguments||"{}"),p={type:"toolCall",id:`${e.call_id}|${e.id}`,name:e.name,arguments:i};s=null,o.push({type:"toolcall_end",contentIndex:m(),toolCall:p,partial:n})}}else if(t.type==="response.completed"){const e=t.response;if(e?.usage){const i=e.usage.input_tokens_details?.cached_tokens||0;n.usage={input:(e.usage.input_tokens||0)-i,output:e.usage.output_tokens||0,cacheRead:i,cacheWrite:0,totalTokens:e.usage.total_tokens||0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}}}if(S(f,n.usage),d?.applyServiceTierPricing){const i=e?.service_tier??d.serviceTier;d.applyServiceTierPricing(n.usage,i)}n.stopReason=v(e?.status),n.content.some(i=>i.type==="toolCall")&&n.stopReason==="stop"&&(n.stopReason="toolUse")}else{if(t.type==="error")throw new Error(`Error Code ${t.code}: ${t.message}`||"Unknown error");if(t.type==="response.failed")throw new Error("Unknown error")}}g(z,"processResponsesStream");function v(r){if(!r)return"stop";switch(r){case"completed":return"stop";case"incomplete":return"length";case"failed":case"cancelled":return"error";case"in_progress":case"queued":return"stop";default:{const n=r;throw new Error(`Unhandled stop reason: ${n}`)}}}g(v,"mapStopReason");export{T as convertResponsesMessages,b as convertResponsesTools,z as processResponsesStream};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var f=Object.defineProperty;var i=(e,s)=>f(e,"name",{value:s,configurable:!0});import d from"openai";import{getEnvApiKey as u}from"../env-api-keys.js";import{supportsXhigh as m}from"../models.js";import{AssistantMessageEventStream as l}from"../utils/event-stream.js";import{buildCopilotDynamicHeaders as h,hasCopilotVisionInput as g}from"./github-copilot-headers.js";import{convertResponsesMessages as v,convertResponsesTools as E,processResponsesStream as y}from"./openai-responses-shared.js";import{buildBaseOptions as R,clampReasoning as _}from"./simple-options.js";const A=new Set(["openai","openai-codex","opencode"]);function b(e){return e||(typeof process<"u"&&(process.env.CATUI_CACHE_RETENTION??process.env.NANOPENCIL_CACHE_RETENTION)==="long"?"long":"short")}i(b,"resolveCacheRetention");function I(e,s){if(s==="long"&&e.includes("api.openai.com"))return"24h"}i(I,"getPromptCacheRetention");const w=i((e,s,r)=>{const o=new l;return(async()=>{const n={role:"assistant",content:[],api:e.api,provider:e.provider,model:e.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:"stop",timestamp:Date.now()};try{const t=r?.apiKey||u(e.provider)||"",a=O(e,s,t,r?.headers),c=C(e,s,r);r?.onPayload?.(c);const p=await a.responses.create(c,r?.signal?{signal:r.signal}:void 0);if(o.push({type:"start",partial:n}),await y(p,n,o,e,{serviceTier:r?.serviceTier,applyServiceTierPricing:P}),r?.signal?.aborted)throw new Error("Request was aborted");if(n.stopReason==="aborted"||n.stopReason==="error")throw new Error("An unknown error occurred");o.push({type:"done",reason:n.stopReason,message:n}),o.end()}catch(t){for(const a of n.content)delete a.index;if(n.stopReason=r?.signal?.aborted?"aborted":"error",n.errorMessage=t instanceof Error?t.message:JSON.stringify(t),t&&typeof t=="object"&&"headers"in t){const a=t.headers;a&&typeof a=="object"&&(n.errorHeaders=Object.fromEntries(Object.entries(a).map(([c,p])=>[c.toLowerCase(),String(p)])))}o.push({type:"error",reason:n.stopReason,error:n}),o.end()}})(),o},"streamOpenAIResponses"),W=i((e,s,r)=>{const o=r?.apiKey||u(e.provider);if(!o)throw new Error(`No API key for provider: ${e.provider}`);const n=R(e,r,o),t=m(e)?r?.reasoning:_(r?.reasoning);return w(e,s,{...n,reasoningEffort:t,toolChoice:r?.toolChoice})},"streamSimpleOpenAIResponses");function O(e,s,r,o){if(!r){if(!process.env.OPENAI_API_KEY)throw new Error("OpenAI API key is required. Set OPENAI_API_KEY environment variable or pass it as an argument.");r=process.env.OPENAI_API_KEY}const n={...e.headers};if(e.provider==="github-copilot"){const t=g(s.messages),a=h({messages:s.messages,hasImages:t});Object.assign(n,a)}return o&&Object.assign(n,o),new d({apiKey:r,baseURL:e.baseUrl,dangerouslyAllowBrowser:!0,defaultHeaders:n})}i(O,"createClient");function C(e,s,r){const o=v(e,s,A),n=b(r?.cacheRetention),t={model:e.id,input:o,stream:!0,prompt_cache_key:n==="none"?void 0:r?.sessionId,prompt_cache_retention:I(e.baseUrl,n),store:!1};return r?.maxTokens&&(t.max_output_tokens=r?.maxTokens),r?.temperature!==void 0&&(t.temperature=r?.temperature),r?.serviceTier!==void 0&&(t.service_tier=r.serviceTier),s.tools&&(t.tools=E(s.tools)),r?.toolChoice!==void 0&&(t.tool_choice=r.toolChoice),e.reasoning&&(r?.reasoningEffort||r?.reasoningSummary?(t.reasoning={effort:r?.reasoningEffort||"medium",summary:r?.reasoningSummary||"auto"},t.include=["reasoning.encrypted_content"]):e.name.startsWith("gpt-5")&&o.push({role:"developer",content:[{type:"input_text",text:"# Juice: 0 !important"}]})),t}i(C,"buildParams");function T(e){switch(e){case"flex":return .5;case"priority":return 2;default:return 1}}i(T,"getServiceTierCostMultiplier");function P(e,s){const r=T(s);r!==1&&(e.cost.input*=r,e.cost.output*=r,e.cost.cacheRead*=r,e.cost.cacheWrite*=r,e.cost.total=e.cost.input+e.cost.output+e.cost.cacheRead+e.cost.cacheWrite)}i(P,"applyServiceTierPricing");export{w as streamOpenAIResponses,W as streamSimpleOpenAIResponses};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var a=Object.defineProperty;var t=(e,r)=>a(e,"name",{value:r,configurable:!0});import{clearApiProviders as i,registerApiProviderLoader as s}from"../api-registry.js";function o(){s("anthropic-messages",async()=>{const{streamAnthropic:e,streamSimpleAnthropic:r}=await import("./anthropic.js");return{api:"anthropic-messages",stream:e,streamSimple:r}}),s("openai-completions",async()=>{const{streamOpenAICompletions:e,streamSimpleOpenAICompletions:r}=await import("./openai-completions.js");return{api:"openai-completions",stream:e,streamSimple:r}}),s("openai-responses",async()=>{const{streamOpenAIResponses:e,streamSimpleOpenAIResponses:r}=await import("./openai-responses.js");return{api:"openai-responses",stream:e,streamSimple:r}}),s("azure-openai-responses",async()=>{const{streamAzureOpenAIResponses:e,streamSimpleAzureOpenAIResponses:r}=await import("./azure-openai-responses.js");return{api:"azure-openai-responses",stream:e,streamSimple:r}}),s("openai-codex-responses",async()=>{const{streamOpenAICodexResponses:e,streamSimpleOpenAICodexResponses:r}=await import("./openai-codex-responses.js");return{api:"openai-codex-responses",stream:e,streamSimple:r}}),s("google-generative-ai",async()=>{const{streamGoogle:e,streamSimpleGoogle:r}=await import("./google.js");return{api:"google-generative-ai",stream:e,streamSimple:r}}),s("google-gemini-cli",async()=>{const{streamGoogleGeminiCli:e,streamSimpleGoogleGeminiCli:r}=await import("./google-gemini-cli.js");return{api:"google-gemini-cli",stream:e,streamSimple:r}}),s("google-vertex",async()=>{const{streamGoogleVertex:e,streamSimpleGoogleVertex:r}=await import("./google-vertex.js");return{api:"google-vertex",stream:e,streamSimple:r}}),s("bedrock-converse-stream",async()=>{const{streamBedrock:e,streamSimpleBedrock:r}=await import("./amazon-bedrock.js");return{api:"bedrock-converse-stream",stream:e,streamSimple:r}})}t(o,"registerBuiltInApiProviders");function n(){i(),o()}t(n,"resetApiProviders"),o();export{o as registerBuiltInApiProviders,n as resetApiProviders};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var h=Object.defineProperty;var n=(a,e)=>h(a,"name",{value:e,configurable:!0});function x(a,e,s){return{temperature:e?.temperature,maxTokens:e?.maxTokens||Math.min(a.maxTokens,32e3),signal:e?.signal,apiKey:s||e?.apiKey,cacheRetention:e?.cacheRetention,sessionId:e?.sessionId,headers:e?.headers,onPayload:e?.onPayload,maxRetryDelayMs:e?.maxRetryDelayMs,metadata:e?.metadata}}n(x,"buildBaseOptions");function l(a){return a==="xhigh"?"high":a}n(l,"clampReasoning");function o(a,e,s,m){const u={...{minimal:1024,low:2048,medium:8192,high:16384},...m},d=1024,r=l(s);let t=u[r];const i=Math.min(a+t,e);return i<=t&&(t=Math.max(0,i-d)),{maxTokens:i,thinkingBudget:t}}n(o,"adjustMaxTokensForThinking");export{o as adjustMaxTokensForThinking,x as buildBaseOptions,l as clampReasoning};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var S=Object.defineProperty;var h=(u,i)=>S(u,"name",{value:i,configurable:!0});function w(u,i,r){const I=new Map,x=u.map(n=>{if(n.role==="user")return n;if(n.role==="toolResult"){const t=I.get(n.toolCallId);return t&&t!==n.toolCallId?{...n,toolCallId:t}:n}if(n.role==="assistant"){const t=n,o=t.provider===i.provider&&t.api===i.api&&t.model===i.id,p=t.content.flatMap(e=>{if(e.type==="thinking")return e.redacted?o?e:[]:o&&e.thinkingSignature?e:!e.thinking||e.thinking.trim()===""?[]:o?e:{type:"text",text:e.thinking};if(e.type==="text")return o?e:{type:"text",text:e.text};if(e.type==="toolCall"){const d=e;let f=d;if(!o&&d.thoughtSignature&&(f={...d},delete f.thoughtSignature),!o&&r){const c=r(d.id,i,t);c!==d.id&&(I.set(d.id,c),f={...f,id:c})}return f}return e});return{...t,content:p}}return n}),s=[];let l=[],a=new Set;const C=new Set;for(let n=0;n<x.length;n++){const t=x[n];if(t.role==="assistant"){l.length>0&&(s.push(...g(l,a)),l=[],a=new Set);const o=t;if(o.stopReason==="error"||o.stopReason==="aborted"){for(const e of o.content)e.type==="toolCall"&&C.add(e.id);continue}if(o.content.length===0)continue;const p=o.content.filter(e=>e.type==="toolCall");p.length>0&&(l=p,a=new Set),s.push(t)}else if(t.role==="toolResult"){if(C.has(t.toolCallId)){C.delete(t.toolCallId);continue}if(!y(l,t.toolCallId)||a.has(t.toolCallId))continue;a.add(t.toolCallId),s.push(t)}else t.role==="user"&&l.length>0&&(s.push(...g(l,a)),l=[],a=new Set),s.push(t)}return l.length>0&&s.push(...g(l,a)),s}h(w,"transformMessages");function y(u,i){return u.some(r=>r.id===i)}h(y,"hasPendingToolCall");function g(u,i){return u.filter(r=>!i.has(r.id)).map(r=>({role:"toolResult",toolCallId:r.id,toolName:r.name,content:[{type:"text",text:"No result provided"}],isError:!0,timestamp:Date.now()}))}h(g,"createMissingToolResults");export{w as transformMessages};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export*from"./api-registry.js";export*from"./providers/register-builtins.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{Type as e}from"@sinclair/typebox";export*from"./utils/typebox-helpers.js";export*from"./utils/validation.js";export{e as Type};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var D=Object.defineProperty;var o=(e,t)=>D(e,"name",{value:t,configurable:!0});import"./providers/register-builtins.js";import"./utils/http-proxy.js";import{ensureApiProvider as g}from"./api-registry.js";import{AssistantMessageEventStream as A}from"./utils/event-stream.js";import{isContextOverflow as I}from"./utils/overflow.js";import{getEnvApiKey as H}from"./env-api-keys.js";const v={maxRetries:3,baseDelayMs:1e3,maxDelayMs:3e4,jitter:!0,persistentRetry:!1,heartbeatMs:3e4};function E(){return{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}}}o(E,"emptyUsage");const T=new Set([429,500,502,503,504,529]),N=[/ECONNRESET/i,/ETIMEDOUT/i,/ECONNREFUSED/i,/socket hang up/i,/fetch failed/i,/network/i,/aborted/i,/without a final assistant message/i];function P(e){if(e.stopReason!=="error"||!e.errorMessage||I(e))return!1;const t=e.errorMessage,r=t.match(/^([45]\d\d)\b/);if(r){const n=parseInt(r[1],10);return T.has(n)}return N.some(n=>n.test(t))}o(P,"isRetriableStreamError");function m(e,t){const r=t.baseDelayMs*Math.pow(2,e),n=Math.min(r,t.maxDelayMs);return t.jitter?Math.floor(Math.random()*n):n}o(m,"calculateDelay");function w(e,t){if(t){const n=t["retry-after"]??t["Retry-After"];if(n){const a=parseInt(n,10);if(!isNaN(a))return a*1e3}}const r=e.match(/retry[_-]after[:\s]+(\d+)/i);if(r)return parseInt(r[1],10)*1e3}o(w,"extractRetryAfterMs");function _(e){return/^[45]29\b/.test(e.errorMessage??"")}o(_,"isOverloadError");function h(e,t,r){if(!P(e))return;const n=_(e);if(n&&r.persistentRetry){const a={...r,maxDelayMs:Math.max(r.maxDelayMs,3e5)};return w(e.errorMessage??"",e.errorHeaders)??m(t,a)}if(!(t>=r.maxRetries))return n?w(e.errorMessage??"",e.errorHeaders)??m(t,r):m(t,r)}o(h,"getRetryDelayMs");function k(e){return e instanceof Error?e.message:typeof e=="string"?e:JSON.stringify(e)??String(e)}o(k,"getErrorMessage");function R(e,t,r){return{role:"assistant",content:[],api:e.api,provider:e.provider,model:e.id,stopReason:"error",errorMessage:k(t),errorHeaders:r,usage:E(),timestamp:Date.now()}}o(R,"createStreamErrorMessage");function L(e){return R(e,new Error("Provider stream ended without a final assistant message"))}o(L,"createMissingStreamResultMessage");function C(e){return R(e,new Error("Request was aborted"))}o(C,"createAbortMessage");function l(e,t){e.push({type:"error",reason:"error",error:C(t)})}o(l,"emitAbortError");function b(e,t,r,n){return t?.aborted?Promise.resolve("aborted"):new Promise(a=>{let i,u;const p=o(()=>{i!==void 0&&clearTimeout(i),u!==void 0&&clearInterval(u),t?.removeEventListener("abort",s)},"cleanup"),s=o(()=>{p(),a("aborted")},"onAbort");r&&r>0&&r<e&&n&&(u=setInterval(n,r)),i=setTimeout(()=>{p(),a("elapsed")},e),t?.addEventListener("abort",s,{once:!0})})}o(b,"waitForRetryDelay");function U(e,t){return t?.aborted?Promise.resolve("aborted"):new Promise((r,n)=>{const a=o(()=>{t?.removeEventListener("abort",i)},"cleanup"),i=o(()=>{a(),r("aborted")},"onAbort");t?.addEventListener("abort",i,{once:!0}),e.next().then(u=>{a(),r(u)},u=>{a(),n(u)})})}o(U,"waitForStreamEvent");async function S(e){const t=await g(e);if(!t)throw new Error(`No API provider registered for api: ${e}`);return t}o(S,"resolveApiProvider");function F(e,t,r){const n={...v,...r?.retry};return x(e,async()=>(await S(e.api)).stream(e,t,r),n,r?.signal)}o(F,"stream");async function Y(e,t,r){return F(e,t,r).result()}o(Y,"complete");function W(e,t,r){const n={...v,...r?.retry};return x(e,async()=>(await S(e.api)).streamSimple(e,t,r),n,r?.signal)}o(W,"streamSimple");async function $(e,t,r){return W(e,t,r).result()}o($,"completeSimple");function x(e,t,r,n){const a=new A;return(async()=>{let i=0;const u=r.persistentRetry?()=>{a.push({type:"text_delta",contentIndex:0,delta:"",partial:{role:"assistant",content:[],api:e.api,provider:e.provider,model:e.id,usage:E(),stopReason:"error",timestamp:Date.now()}})}:void 0;for(;i<=r.maxRetries||r.persistentRetry;){if(n?.aborted){l(a,e);return}let p;try{p=await t()}catch(f){const c=R(e,f),d=h(c,i,r);if(d!==void 0){if(i++,await b(d,n,r.heartbeatMs,u)==="aborted"){l(a,e);return}continue}a.push({type:"error",reason:"error",error:c});return}let s=null;const y=p[Symbol.asyncIterator]();for(;;){let f;try{f=await U(y,n)}catch(d){s=R(e,d);const M=h(s,i,r);if(M!==void 0){if(i++,await b(M,n,r.heartbeatMs,u)==="aborted"){l(a,e);return}break}a.push({type:"error",reason:"error",error:s});return}if(f==="aborted"){y.return?.(),l(a,e);return}if(f.done)break;const c=f.value;if(c.type==="done"){s=c.message,a.push(c);break}else if(c.type==="error"){s=c.error;const d=h(s,i,r);if(d!==void 0){if(i++,await b(d,n,r.heartbeatMs,u)==="aborted"){l(a,e);return}break}a.push(c);return}else i===0&&a.push(c)}if(!s){s=p.resultIfResolved()??L(e);const f=h(s,i,r);if(f!==void 0){if(i++,await b(f,n,r.heartbeatMs,u)==="aborted"){l(a,e);return}continue}if(s.stopReason==="error"||s.stopReason==="aborted"){a.push({type:"error",reason:s.stopReason,error:s});return}a.push({type:"done",reason:s.stopReason,message:s});return}if(s&&s.stopReason!=="error")return}})(),a}o(x,"wrapWithRetry");export{Y as complete,$ as completeSimple,H as getEnvApiKey,F as stream,W as streamSimple};
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var l=Object.defineProperty;var s=(i,e)=>l(i,"name",{value:e,configurable:!0});class n{static{s(this,"EventStream")}isComplete;extractResult;queue=[];waiting=[];done=!1;finalResult;hasFinalResult=!1;finalResultPromise;resolveFinalResult;constructor(e,t){this.isComplete=e,this.extractResult=t,this.finalResultPromise=new Promise(r=>{this.resolveFinalResult=r})}push(e){if(this.done)return;this.isComplete(e)&&(this.done=!0,this.setFinalResult(this.extractResult(e)));const t=this.waiting.shift();t?t({value:e,done:!1}):this.queue.push(e)}end(e){for(this.done=!0,e!==void 0&&this.setFinalResult(e);this.waiting.length>0;)this.waiting.shift()({value:void 0,done:!0})}async*[Symbol.asyncIterator](){for(;;)if(this.queue.length>0)yield this.queue.shift();else{if(this.done)return;{const e=await new Promise(t=>this.waiting.push(t));if(e.done)return;yield e.value}}}result(){return this.finalResultPromise}resultIfResolved(){return this.hasFinalResult?this.finalResult:void 0}setFinalResult(e){this.hasFinalResult||(this.finalResult=e,this.hasFinalResult=!0,this.resolveFinalResult(e))}}class u extends n{static{s(this,"AssistantMessageEventStream")}constructor(){super(e=>e.type==="done"||e.type==="error",e=>{if(e.type==="done")return e.message;if(e.type==="error")return e.error;throw new Error("Unexpected event type for final result")})}}function h(){return new u}s(h,"createAssistantMessageEventStream");export{u as AssistantMessageEventStream,n as EventStream,h as createAssistantMessageEventStream};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
typeof process<"u"&&process.versions?.node&&import("undici").then(e=>{const{EnvHttpProxyAgent:s,setGlobalDispatcher:t}=e;t(new s)});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var u=Object.defineProperty;var e=(r,t)=>u(r,"name",{value:t,configurable:!0});import{parse as c}from"partial-json";function a(r){if(!r||r.trim()==="")return{};try{return JSON.parse(r)}catch{try{return c(r)??{}}catch{return{}}}}e(a,"parseStreamingJson");export{a as parseStreamingJson};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var g=Object.defineProperty;var r=(e,t)=>g(e,"name",{value:t,configurable:!0});import{generatePKCE as y}from"./pkce.js";const w=r(e=>atob(e),"decode"),c=w("OWQxYzI1MGEtZTYxYi00NGQ5LTg4ZWQtNTk0NGQxOTYyZjVl"),x="https://claude.ai/oauth/authorize",h="https://console.anthropic.com/v1/oauth/token",p="https://console.anthropic.com/oauth/code/callback",T="org:create_api_key user:profile user:inference";async function m(e,t){const{verifier:o,challenge:n}=await y(),d=new URLSearchParams({code:"true",client_id:c,response_type:"code",redirect_uri:p,scope:T,code_challenge:n,code_challenge_method:"S256",state:o}),_=`${x}?${d.toString()}`;e(_);const i=(await t()).split("#"),u=i[0],f=i[1],s=await fetch(h,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({grant_type:"authorization_code",client_id:c,code:u,state:f,redirect_uri:p,code_verifier:o})});if(!s.ok){const k=await s.text();throw new Error(`Token exchange failed: ${k}`)}const a=await s.json(),l=Date.now()+a.expires_in*1e3-300*1e3;return{refresh:a.refresh_token,access:a.access_token,expires:l}}r(m,"loginAnthropic");async function E(e){const t=await fetch(h,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({grant_type:"refresh_token",client_id:c,refresh_token:e})});if(!t.ok){const n=await t.text();throw new Error(`Anthropic token refresh failed: ${n}`)}const o=await t.json();return{refresh:o.refresh_token,access:o.access_token,expires:Date.now()+o.expires_in*1e3-300*1e3}}r(E,"refreshAnthropicToken");const C={id:"anthropic",name:"Anthropic (Claude Pro/Max)",async login(e){return m(t=>e.onAuth({url:t}),()=>e.onPrompt({message:"Paste the authorization code:"}))},async refreshToken(e){return E(e.refresh)},getApiKey(e){return e.access}};export{C as anthropicOAuthProvider,m as loginAnthropic,E as refreshAnthropicToken};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var n=Object.defineProperty;var r=(e,t)=>n(e,"name",{value:t,configurable:!0});function u(e){const t=e.trim();if(t.length===0||/YOUR_|PLACEHOLDER|REPLACE_ME/i.test(t))return t;try{return atob(t)}catch{return t}}r(u,"decodeOAuthCredentialSegment");export{u as decodeOAuthCredentialSegment};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var b=Object.defineProperty;var s=(e,t)=>b(e,"name",{value:t,configurable:!0});import{getModels as v}from"../../models.js";const _=s(e=>atob(e),"decode"),h=_("SXYxLmI1MDdhMDhjODdlY2ZlOTg="),w={"User-Agent":"GitHubCopilotChat/0.35.0","Editor-Version":"vscode/1.107.0","Editor-Plugin-Version":"copilot-chat/0.35.0","Copilot-Integration-Id":"vscode-chat"};function m(e){const t=e.trim();if(!t)return null;try{return(t.includes("://")?new URL(t):new URL(`https://${t}`)).hostname}catch{return null}}s(m,"normalizeDomain");function d(e){return{deviceCodeUrl:`https://${e}/login/device/code`,accessTokenUrl:`https://${e}/login/oauth/access_token`,copilotTokenUrl:`https://api.${e}/copilot_internal/v2/token`}}s(d,"getUrls");function C(e){const t=e.match(/proxy-ep=([^;]+)/);return t?`https://${t[1].replace(/^proxy\./,"api.")}`:null}s(C,"getBaseUrlFromToken");function y(e,t){if(e){const o=C(e);if(o)return o}return t?`https://copilot-api.${t}`:"https://api.individual.githubcopilot.com"}s(y,"getGitHubCopilotBaseUrl");async function u(e,t){const o=await fetch(e,t);if(!o.ok){const r=await o.text();throw new Error(`${o.status} ${o.statusText}: ${r}`)}return o.json()}s(u,"fetchJson");async function U(e){const t=d(e),o=await u(t.deviceCodeUrl,{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json","User-Agent":"GitHubCopilotChat/0.35.0"},body:JSON.stringify({client_id:h,scope:"read:user"})});if(!o||typeof o!="object")throw new Error("Invalid device code response");const r=o.device_code,n=o.user_code,i=o.verification_uri,a=o.interval,c=o.expires_in;if(typeof r!="string"||typeof n!="string"||typeof i!="string"||typeof a!="number"||typeof c!="number")throw new Error("Invalid device code response fields");return{device_code:r,user_code:n,verification_uri:i,interval:a,expires_in:c}}s(U,"startDeviceFlow");function f(e,t){return new Promise((o,r)=>{if(t?.aborted){r(new Error("Login cancelled"));return}const n=setTimeout(o,e);t?.addEventListener("abort",()=>{clearTimeout(n),r(new Error("Login cancelled"))},{once:!0})})}s(f,"abortableSleep");async function E(e,t,o,r,n){const i=d(e),a=Date.now()+r*1e3;let c=Math.max(1e3,Math.floor(o*1e3));for(;Date.now()<a;){if(n?.aborted)throw new Error("Login cancelled");const l=await u(i.accessTokenUrl,{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json","User-Agent":"GitHubCopilotChat/0.35.0"},body:JSON.stringify({client_id:h,device_code:t,grant_type:"urn:ietf:params:oauth:grant-type:device_code"})});if(l&&typeof l=="object"&&typeof l.access_token=="string")return l.access_token;if(l&&typeof l=="object"&&typeof l.error=="string"){const p=l.error;if(p==="authorization_pending"){await f(c,n);continue}if(p==="slow_down"){c+=5e3,await f(c,n);continue}throw new Error(`Device flow failed: ${p}`)}await f(c,n)}throw new Error("Device flow timed out")}s(E,"pollForGitHubAccessToken");async function g(e,t){const r=d(t||"github.com"),n=await u(r.copilotTokenUrl,{headers:{Accept:"application/json",Authorization:`Bearer ${e}`,...w}});if(!n||typeof n!="object")throw new Error("Invalid Copilot token response");const i=n.token,a=n.expires_at;if(typeof i!="string"||typeof a!="number")throw new Error("Invalid Copilot token response fields");return{refresh:e,access:i,expires:a*1e3-300*1e3,enterpriseUrl:t}}s(g,"refreshGitHubCopilotToken");async function x(e,t,o){const n=`${y(e,o)}/models/${t}/policy`;try{return(await fetch(n,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${e}`,...w,"openai-intent":"chat-policy","x-interaction-type":"chat-policy"},body:JSON.stringify({state:"enabled"})})).ok}catch{return!1}}s(x,"enableGitHubCopilotModel");async function T(e,t,o){const r=v("github-copilot");await Promise.all(r.map(async n=>{const i=await x(e,n.id,t);o?.(n.id,i)}))}s(T,"enableAllGitHubCopilotModels");async function A(e){const t=await e.onPrompt({message:"GitHub Enterprise URL/domain (blank for github.com)",placeholder:"company.ghe.com",allowEmpty:!0});if(e.signal?.aborted)throw new Error("Login cancelled");const o=t.trim(),r=m(t);if(o&&!r)throw new Error("Invalid GitHub Enterprise URL/domain");const n=r||"github.com",i=await U(n);e.onAuth(i.verification_uri,`Enter code: ${i.user_code}`);const a=await E(n,i.device_code,i.interval,i.expires_in,e.signal),c=await g(a,r??void 0);return e.onProgress?.("Enabling models..."),await T(c.access,r??void 0),c}s(A,"loginGitHubCopilot");const $={id:"github-copilot",name:"GitHub Copilot",async login(e){return A({onAuth:s((t,o)=>e.onAuth({url:t,instructions:o}),"onAuth"),onPrompt:e.onPrompt,onProgress:e.onProgress,signal:e.signal})},async refreshToken(e){const t=e;return g(t.refresh,t.enterpriseUrl)},getApiKey(e){return e.access},modifyModels(e,t){const o=t,r=o.enterpriseUrl?m(o.enterpriseUrl)??void 0:void 0,n=y(o.access,r);return e.map(i=>i.provider==="github-copilot"?{...i,baseUrl:n}:i)}};export{y as getGitHubCopilotBaseUrl,$ as githubCopilotOAuthProvider,A as loginGitHubCopilot,m as normalizeDomain,g as refreshGitHubCopilotToken};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var T=Object.defineProperty;var l=(t,e)=>T(t,"name",{value:e,configurable:!0});import{decodeOAuthCredentialSegment as _}from"./decode-credential.js";import{generatePKCE as j}from"./pkce.js";let w=null,y=null;typeof process<"u"&&(process.versions?.node||process.versions?.bun)&&(y=import("node:http").then(t=>{w=t.createServer}));const E=_("YOUR_CLIENT_ID_HERE"),C=_("YOUR_CLIENT_SECRET_HERE"),S="http://localhost:51121/oauth-callback",R=["https://www.googleapis.com/auth/cloud-platform","https://www.googleapis.com/auth/userinfo.email","https://www.googleapis.com/auth/userinfo.profile","https://www.googleapis.com/auth/cclog","https://www.googleapis.com/auth/experimentsandconfigs"],O="https://accounts.google.com/o/oauth2/v2/auth",v="https://oauth2.googleapis.com/token",b="rising-fact-p41fc";async function U(){if(w||(y&&await y,w))return w;throw new Error("Antigravity OAuth is only available in Node.js environments")}l(U,"getNodeCreateServer");async function x(){const t=await U();return new Promise((e,n)=>{let r=null,h=!1;const i=t((o,c)=>{const p=new URL(o.url||"","http://localhost:51121");if(p.pathname==="/oauth-callback"){const u=p.searchParams.get("code"),d=p.searchParams.get("state"),m=p.searchParams.get("error");if(m){c.writeHead(400,{"Content-Type":"text/html"}),c.end(`<html><body><h1>Authentication Failed</h1><p>Error: ${m}</p><p>You can close this window.</p></body></html>`);return}u&&d?(c.writeHead(200,{"Content-Type":"text/html"}),c.end("<html><body><h1>Authentication Successful</h1><p>You can close this window and return to the terminal.</p></body></html>"),r={code:u,state:d}):(c.writeHead(400,{"Content-Type":"text/html"}),c.end("<html><body><h1>Authentication Failed</h1><p>Missing code or state parameter.</p></body></html>"))}else c.writeHead(404),c.end()});i.on("error",o=>{n(o)}),i.listen(51121,"127.0.0.1",()=>{e({server:i,cancelWait:l(()=>{h=!0},"cancelWait"),waitForCode:l(async()=>{const o=l(()=>new Promise(c=>setTimeout(c,100)),"sleep");for(;!r&&!h;)await o();return r},"waitForCode")})})})}l(x,"startCallbackServer");function k(t){const e=t.trim();if(!e)return{};try{const n=new URL(e);return{code:n.searchParams.get("code")??void 0,state:n.searchParams.get("state")??void 0}}catch{return{}}}l(k,"parseRedirectUrl");async function N(t,e){const n={Authorization:`Bearer ${t}`,"Content-Type":"application/json","User-Agent":"google-api-nodejs-client/9.15.1","X-Goog-Api-Client":"google-cloud-sdk vscode_cloudshelleditor/0.1","Client-Metadata":JSON.stringify({ideType:"IDE_UNSPECIFIED",platform:"PLATFORM_UNSPECIFIED",pluginType:"GEMINI"})},r=["https://cloudcode-pa.googleapis.com","https://daily-cloudcode-pa.sandbox.googleapis.com"];e?.("Checking for existing project...");for(const h of r)try{const i=await fetch(`${h}/v1internal:loadCodeAssist`,{method:"POST",headers:n,body:JSON.stringify({metadata:{ideType:"IDE_UNSPECIFIED",platform:"PLATFORM_UNSPECIFIED",pluginType:"GEMINI"}})});if(i.ok){const o=await i.json();if(typeof o.cloudaicompanionProject=="string"&&o.cloudaicompanionProject)return o.cloudaicompanionProject;if(o.cloudaicompanionProject&&typeof o.cloudaicompanionProject=="object"&&o.cloudaicompanionProject.id)return o.cloudaicompanionProject.id}}catch{}return e?.("Using default project..."),b}l(N,"discoverProject");async function F(t){try{const e=await fetch("https://www.googleapis.com/oauth2/v1/userinfo?alt=json",{headers:{Authorization:`Bearer ${t}`}});if(e.ok)return(await e.json()).email}catch{}}l(F,"getUserEmail");async function D(t,e){const n=await fetch(v,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({client_id:E,client_secret:C,refresh_token:t,grant_type:"refresh_token"})});if(!n.ok){const h=await n.text();throw new Error(`Antigravity token refresh failed: ${h}`)}const r=await n.json();return{refresh:r.refresh_token||t,access:r.access_token,expires:Date.now()+r.expires_in*1e3-300*1e3,projectId:e}}l(D,"refreshAntigravityToken");async function L(t,e,n){const{verifier:r,challenge:h}=await j();e?.("Starting local server for OAuth callback...");const i=await x();let o;try{const c=new URLSearchParams({client_id:E,response_type:"code",redirect_uri:S,scope:R.join(" "),code_challenge:h,code_challenge_method:"S256",state:r,access_type:"offline",prompt:"consent"}),p=`${O}?${c.toString()}`;if(t({url:p,instructions:"Complete the sign-in in your browser."}),e?.("Waiting for OAuth callback..."),n){let s,f;const A=n().then(a=>{s=a,i.cancelWait()}).catch(a=>{f=a instanceof Error?a:new Error(String(a)),i.cancelWait()}),g=await i.waitForCode();if(f)throw f;if(g?.code){if(g.state!==r)throw new Error("OAuth state mismatch - possible CSRF attack");o=g.code}else if(s){const a=k(s);if(a.state&&a.state!==r)throw new Error("OAuth state mismatch - possible CSRF attack");o=a.code}if(!o){if(await A,f)throw f;if(s){const a=k(s);if(a.state&&a.state!==r)throw new Error("OAuth state mismatch - possible CSRF attack");o=a.code}}}else{const s=await i.waitForCode();if(s?.code){if(s.state!==r)throw new Error("OAuth state mismatch - possible CSRF attack");o=s.code}}if(!o)throw new Error("No authorization code received");e?.("Exchanging authorization code for tokens...");const u=await fetch(v,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({client_id:E,client_secret:C,code:o,grant_type:"authorization_code",redirect_uri:S,code_verifier:r})});if(!u.ok){const s=await u.text();throw new Error(`Token exchange failed: ${s}`)}const d=await u.json();if(!d.refresh_token)throw new Error("No refresh token received. Please try again.");e?.("Getting user info...");const m=await F(d.access_token),P=await N(d.access_token,e),I=Date.now()+d.expires_in*1e3-300*1e3;return{refresh:d.refresh_token,access:d.access_token,expires:I,projectId:P,email:m}}finally{i.server.close()}}l(L,"loginAntigravity");const z={id:"google-antigravity",name:"Antigravity (Gemini 3, Claude, GPT-OSS)",usesCallbackServer:!0,async login(t){return L(t.onAuth,t.onProgress,t.onManualCodeInput)},async refreshToken(t){const e=t;if(!e.projectId)throw new Error("Antigravity credentials missing projectId");return D(e.refresh,e.projectId)},getApiKey(t){const e=t;return JSON.stringify({token:e.access,projectId:e.projectId})}};export{z as antigravityOAuthProvider,L as loginAntigravity,D as refreshAntigravityToken};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var L=Object.defineProperty;var c=(e,t)=>L(e,"name",{value:t,configurable:!0});import{decodeOAuthCredentialSegment as I}from"./decode-credential.js";import{generatePKCE as j}from"./pkce.js";let g=null,C=null;typeof process<"u"&&(process.versions?.node||process.versions?.bun)&&(C=import("node:http").then(e=>{g=e.createServer}));const O=I("YOUR_CLIENT_ID_HERE"),P=I("YOUR_CLIENT_SECRET_HERE"),S="http://localhost:8085/oauth2callback",D=["https://www.googleapis.com/auth/cloud-platform","https://www.googleapis.com/auth/userinfo.email","https://www.googleapis.com/auth/userinfo.profile"],U="https://accounts.google.com/o/oauth2/v2/auth",R="https://oauth2.googleapis.com/token",T="https://cloudcode-pa.googleapis.com";async function G(){if(g||(C&&await C,g))return g;throw new Error("Gemini CLI OAuth is only available in Node.js environments")}c(G,"getNodeCreateServer");async function b(){const e=await G();return new Promise((t,o)=>{let r=null,a=!1;const n=e((l,i)=>{const p=new URL(l.url||"","http://localhost:8085");if(p.pathname==="/oauth2callback"){const u=p.searchParams.get("code"),s=p.searchParams.get("state"),f=p.searchParams.get("error");if(f){i.writeHead(400,{"Content-Type":"text/html"}),i.end(`<html><body><h1>Authentication Failed</h1><p>Error: ${f}</p><p>You can close this window.</p></body></html>`);return}u&&s?(i.writeHead(200,{"Content-Type":"text/html"}),i.end("<html><body><h1>Authentication Successful</h1><p>You can close this window and return to the terminal.</p></body></html>"),r={code:u,state:s}):(i.writeHead(400,{"Content-Type":"text/html"}),i.end("<html><body><h1>Authentication Failed</h1><p>Missing code or state parameter.</p></body></html>"))}else i.writeHead(404),i.end()});n.on("error",l=>{o(l)}),n.listen(8085,"127.0.0.1",()=>{t({server:n,cancelWait:c(()=>{a=!0},"cancelWait"),waitForCode:c(async()=>{const l=c(()=>new Promise(i=>setTimeout(i,100)),"sleep");for(;!r&&!a;)await l();return r},"waitForCode")})})})}c(b,"startCallbackServer");function v(e){const t=e.trim();if(!t)return{};try{const o=new URL(t);return{code:o.searchParams.get("code")??void 0,state:o.searchParams.get("state")??void 0}}catch{return{}}}c(v,"parseRedirectUrl");const y="free-tier",k="legacy-tier",x="standard-tier";function N(e){return new Promise(t=>setTimeout(t,e))}c(N,"wait");function $(e){return!e||e.length===0?{id:k}:e.find(o=>o.isDefault)??{id:k}}c($,"getDefaultTier");function F(e){if(!e||typeof e!="object"||!("error"in e))return!1;const t=e.error;return!t?.details||!Array.isArray(t.details)?!1:t.details.some(o=>o.reason==="SECURITY_POLICY_VIOLATED")}c(F,"isVpcScAffectedUser");async function J(e,t,o){let r=0;for(;;){r>0&&(o?.(`Waiting for project provisioning (attempt ${r+1})...`),await N(5e3));const a=await fetch(`${T}/v1internal/${e}`,{method:"GET",headers:t});if(!a.ok)throw new Error(`Failed to poll operation: ${a.status} ${a.statusText}`);const n=await a.json();if(n.done)return n;r+=1}}c(J,"pollOperation");async function H(e,t){const o=process.env.GOOGLE_CLOUD_PROJECT||process.env.GOOGLE_CLOUD_PROJECT_ID,r={Authorization:`Bearer ${e}`,"Content-Type":"application/json","User-Agent":"google-api-nodejs-client/9.15.1","X-Goog-Api-Client":"gl-node/22.17.0"};t?.("Checking for existing Cloud Code Assist project...");const a=await fetch(`${T}/v1internal:loadCodeAssist`,{method:"POST",headers:r,body:JSON.stringify({cloudaicompanionProject:o,metadata:{ideType:"IDE_UNSPECIFIED",platform:"PLATFORM_UNSPECIFIED",pluginType:"GEMINI",duetProject:o}})});let n;if(a.ok)n=await a.json();else{let w;try{w=await a.clone().json()}catch{w=void 0}if(F(w))n={currentTier:{id:x}};else{const E=await a.text();throw new Error(`loadCodeAssist failed: ${a.status} ${a.statusText}: ${E}`)}}if(n.currentTier){if(n.cloudaicompanionProject)return n.cloudaicompanionProject;if(o)return o;throw new Error("This account requires setting the GOOGLE_CLOUD_PROJECT or GOOGLE_CLOUD_PROJECT_ID environment variable. See https://goo.gle/gemini-cli-auth-docs#workspace-gca")}const i=$(n.allowedTiers)?.id??y;if(i!==y&&!o)throw new Error("This account requires setting the GOOGLE_CLOUD_PROJECT or GOOGLE_CLOUD_PROJECT_ID environment variable. See https://goo.gle/gemini-cli-auth-docs#workspace-gca");t?.("Provisioning Cloud Code Assist project (this may take a moment)...");const p={tierId:i,metadata:{ideType:"IDE_UNSPECIFIED",platform:"PLATFORM_UNSPECIFIED",pluginType:"GEMINI"}};i!==y&&o&&(p.cloudaicompanionProject=o,p.metadata.duetProject=o);const u=await fetch(`${T}/v1internal:onboardUser`,{method:"POST",headers:r,body:JSON.stringify(p)});if(!u.ok){const w=await u.text();throw new Error(`onboardUser failed: ${u.status} ${u.statusText}: ${w}`)}let s=await u.json();!s.done&&s.name&&(s=await J(s.name,r,t));const f=s.response?.cloudaicompanionProject?.id;if(f)return f;if(o)return o;throw new Error("Could not discover or provision a Google Cloud project. Try setting the GOOGLE_CLOUD_PROJECT or GOOGLE_CLOUD_PROJECT_ID environment variable. See https://goo.gle/gemini-cli-auth-docs#workspace-gca")}c(H,"discoverProject");async function Y(e){try{const t=await fetch("https://www.googleapis.com/oauth2/v1/userinfo?alt=json",{headers:{Authorization:`Bearer ${e}`}});if(t.ok)return(await t.json()).email}catch{}}c(Y,"getUserEmail");async function z(e,t){const o=await fetch(R,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({client_id:O,client_secret:P,refresh_token:e,grant_type:"refresh_token"})});if(!o.ok){const a=await o.text();throw new Error(`Google Cloud token refresh failed: ${a}`)}const r=await o.json();return{refresh:r.refresh_token||e,access:r.access_token,expires:Date.now()+r.expires_in*1e3-300*1e3,projectId:t}}c(z,"refreshGoogleCloudToken");async function M(e,t,o){const{verifier:r,challenge:a}=await j();t?.("Starting local server for OAuth callback...");const n=await b();let l;try{const i=new URLSearchParams({client_id:O,response_type:"code",redirect_uri:S,scope:D.join(" "),code_challenge:a,code_challenge_method:"S256",state:r,access_type:"offline",prompt:"consent"}),p=`${U}?${i.toString()}`;if(e({url:p,instructions:"Complete the sign-in in your browser."}),t?.("Waiting for OAuth callback..."),o){let h,m;const A=o().then(d=>{h=d,n.cancelWait()}).catch(d=>{m=d instanceof Error?d:new Error(String(d)),n.cancelWait()}),_=await n.waitForCode();if(m)throw m;if(_?.code){if(_.state!==r)throw new Error("OAuth state mismatch - possible CSRF attack");l=_.code}else if(h){const d=v(h);if(d.state&&d.state!==r)throw new Error("OAuth state mismatch - possible CSRF attack");l=d.code}if(!l){if(await A,m)throw m;if(h){const d=v(h);if(d.state&&d.state!==r)throw new Error("OAuth state mismatch - possible CSRF attack");l=d.code}}}else{const h=await n.waitForCode();if(h?.code){if(h.state!==r)throw new Error("OAuth state mismatch - possible CSRF attack");l=h.code}}if(!l)throw new Error("No authorization code received");t?.("Exchanging authorization code for tokens...");const u=await fetch(R,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({client_id:O,client_secret:P,code:l,grant_type:"authorization_code",redirect_uri:S,code_verifier:r})});if(!u.ok){const h=await u.text();throw new Error(`Token exchange failed: ${h}`)}const s=await u.json();if(!s.refresh_token)throw new Error("No refresh token received. Please try again.");t?.("Getting user info...");const f=await Y(s.access_token),w=await H(s.access_token,t),E=Date.now()+s.expires_in*1e3-300*1e3;return{refresh:s.refresh_token,access:s.access_token,expires:E,projectId:w,email:f}}finally{n.server.close()}}c(M,"loginGeminiCli");const V={id:"google-gemini-cli",name:"Google Cloud Code Assist (Gemini CLI)",usesCallbackServer:!0,async login(e){return M(e.onAuth,e.onProgress,e.onManualCodeInput)},async refreshToken(e){const t=e;if(!t.projectId)throw new Error("Google Cloud credentials missing projectId");return z(t.refresh,t.projectId)},getApiKey(e){const t=e;return JSON.stringify({token:t.access,projectId:t.projectId})}};export{V as geminiCliOAuthProvider,M as loginGeminiCli,z as refreshGoogleCloudToken};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var p=Object.defineProperty;var e=(r,o)=>p(r,"name",{value:o,configurable:!0});import"../http-proxy.js";import{anthropicOAuthProvider as _,loginAnthropic as D,refreshAnthropicToken as I}from"./anthropic.js";import{getGitHubCopilotBaseUrl as R,githubCopilotOAuthProvider as $,loginGitHubCopilot as B,normalizeDomain as L,refreshGitHubCopilotToken as z}from"./github-copilot.js";import{antigravityOAuthProvider as M,loginAntigravity as N,refreshAntigravityToken as S}from"./google-antigravity.js";import{geminiCliOAuthProvider as j,loginGeminiCli as q,refreshGoogleCloudToken as J}from"./google-gemini-cli.js";import{loginOpenAICodex as W,openaiCodexOAuthProvider as X,refreshOpenAICodexToken as Y}from"./openai-codex.js";export*from"./types.js";import{anthropicOAuthProvider as a}from"./anthropic.js";import{githubCopilotOAuthProvider as s}from"./github-copilot.js";import{antigravityOAuthProvider as A}from"./google-antigravity.js";import{geminiCliOAuthProvider as l}from"./google-gemini-cli.js";import{openaiCodexOAuthProvider as d}from"./openai-codex.js";const u=[a,s,l,A,d],i=new Map(u.map(r=>[r.id,r]));function h(r){return i.get(r)}e(h,"getOAuthProvider");function y(r){i.set(r.id,r)}e(y,"registerOAuthProvider");function k(r){const o=u.find(t=>t.id===r);if(o){i.set(r,o);return}i.delete(r)}e(k,"unregisterOAuthProvider");function T(){i.clear();for(const r of u)i.set(r.id,r)}e(T,"resetOAuthProviders");function m(){return Array.from(i.values())}e(m,"getOAuthProviders");function b(){return m().map(r=>({id:r.id,name:r.name,available:!0}))}e(b,"getOAuthProviderInfoList");async function G(r,o){const t=h(r);if(!t)throw new Error(`Unknown OAuth provider: ${r}`);return t.refreshToken(o)}e(G,"refreshOAuthToken");async function U(r,o){const t=h(r);if(!t)throw new Error(`Unknown OAuth provider: ${r}`);let n=o[r];if(!n)return null;if(Date.now()>=n.expires)try{n=await t.refreshToken(n)}catch{throw new Error(`Failed to refresh OAuth token for ${r}`)}const f=t.getApiKey(n);return{newCredentials:n,apiKey:f}}e(U,"getOAuthApiKey");export{_ as anthropicOAuthProvider,M as antigravityOAuthProvider,j as geminiCliOAuthProvider,R as getGitHubCopilotBaseUrl,U as getOAuthApiKey,h as getOAuthProvider,b as getOAuthProviderInfoList,m as getOAuthProviders,$ as githubCopilotOAuthProvider,D as loginAnthropic,N as loginAntigravity,q as loginGeminiCli,B as loginGitHubCopilot,W as loginOpenAICodex,L as normalizeDomain,X as openaiCodexOAuthProvider,I as refreshAnthropicToken,S as refreshAntigravityToken,z as refreshGitHubCopilotToken,J as refreshGoogleCloudToken,G as refreshOAuthToken,Y as refreshOpenAICodexToken,y as registerOAuthProvider,T as resetOAuthProviders,k as unregisterOAuthProvider};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
var C=Object.defineProperty;var s=(e,t)=>C(e,"name",{value:t,configurable:!0});let h=null,f=null;typeof process<"u"&&(process.versions?.node||process.versions?.bun)&&(import("node:crypto").then(e=>{h=e.randomBytes}),import("node:http").then(e=>{f=e}));import{generatePKCE as P}from"./pkce.js";const p="app_EMoamEEZ73f0CkXaXp7hrann",k="https://auth.openai.com/oauth/authorize",y="https://auth.openai.com/oauth/token",_="http://localhost:1455/auth/callback",A="openid profile email offline_access",E="https://api.openai.com/auth",I=`<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
6
|
+
<title>Authentication successful</title>
|
|
7
|
+
</head>
|
|
8
|
+
<body>
|
|
9
|
+
<p>Authentication successful. Return to your terminal to continue.</p>
|
|
10
|
+
</body>
|
|
11
|
+
</html>`;function S(){if(!h)throw new Error("OpenAI Codex OAuth is only available in Node.js environments");return h(16).toString("hex")}s(S,"createState");function m(e){const t=e.trim();if(!t)return{};try{const o=new URL(t);return{code:o.searchParams.get("code")??void 0,state:o.searchParams.get("state")??void 0}}catch{}if(t.includes("#")){const[o,a]=t.split("#",2);return{code:o,state:a}}if(t.includes("code=")){const o=new URLSearchParams(t);return{code:o.get("code")??void 0,state:o.get("state")??void 0}}return{code:t}}s(m,"parseAuthorizationInput");function T(e){try{const t=e.split(".");if(t.length!==3)return null;const o=t[1]??"",a=atob(o);return JSON.parse(a)}catch{return null}}s(T,"decodeJwt");async function v(e,t,o=_){const a=await fetch(y,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({grant_type:"authorization_code",client_id:p,code:e,code_verifier:t,redirect_uri:o})});if(!a.ok){const n=await a.text().catch(()=>"");return console.error("[openai-codex] code->token failed:",a.status,n),{type:"failed"}}const r=await a.json();return!r.access_token||!r.refresh_token||typeof r.expires_in!="number"?(console.error("[openai-codex] token response missing fields:",r),{type:"failed"}):{type:"success",access:r.access_token,refresh:r.refresh_token,expires:Date.now()+r.expires_in*1e3}}s(v,"exchangeAuthorizationCode");async function O(e){try{const t=await fetch(y,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({grant_type:"refresh_token",refresh_token:e,client_id:p})});if(!t.ok){const a=await t.text().catch(()=>"");return console.error("[openai-codex] Token refresh failed:",t.status,a),{type:"failed"}}const o=await t.json();return!o.access_token||!o.refresh_token||typeof o.expires_in!="number"?(console.error("[openai-codex] Token refresh response missing fields:",o),{type:"failed"}):{type:"success",access:o.access_token,refresh:o.refresh_token,expires:Date.now()+o.expires_in*1e3}}catch(t){return console.error("[openai-codex] Token refresh error:",t),{type:"failed"}}}s(O,"refreshAccessToken");async function R(e="catui"){const{verifier:t,challenge:o}=await P(),a=S(),r=new URL(k);return r.searchParams.set("response_type","code"),r.searchParams.set("client_id",p),r.searchParams.set("redirect_uri",_),r.searchParams.set("scope",A),r.searchParams.set("code_challenge",o),r.searchParams.set("code_challenge_method","S256"),r.searchParams.set("state",a),r.searchParams.set("id_token_add_organizations","true"),r.searchParams.set("codex_cli_simplified_flow","true"),r.searchParams.set("originator",e),{verifier:t,state:a,url:r.toString()}}s(R,"createAuthorizationFlow");function b(e){if(!f)throw new Error("OpenAI Codex OAuth is only available in Node.js environments");let t=null,o=!1;const a=f.createServer((r,n)=>{try{const c=new URL(r.url||"","http://localhost");if(c.pathname!=="/auth/callback"){n.statusCode=404,n.end("Not found");return}if(c.searchParams.get("state")!==e){n.statusCode=400,n.end("State mismatch");return}const l=c.searchParams.get("code");if(!l){n.statusCode=400,n.end("Missing authorization code");return}n.statusCode=200,n.setHeader("Content-Type","text/html; charset=utf-8"),n.end(I),t=l}catch{n.statusCode=500,n.end("Internal error")}});return new Promise(r=>{a.listen(1455,"127.0.0.1",()=>{r({close:s(()=>a.close(),"close"),cancelWait:s(()=>{o=!0},"cancelWait"),waitForCode:s(async()=>{const n=s(()=>new Promise(c=>setTimeout(c,100)),"sleep");for(let c=0;c<600;c+=1){if(t)return{code:t};if(o)return null;await n()}return null},"waitForCode")})}).on("error",n=>{console.error("[openai-codex] Failed to bind http://127.0.0.1:1455 (",n.code,") Falling back to manual paste."),r({close:s(()=>{try{a.close()}catch{}},"close"),cancelWait:s(()=>{},"cancelWait"),waitForCode:s(async()=>null,"waitForCode")})})})}s(b,"startLocalOAuthServer");function x(e){const a=T(e)?.[E]?.chatgpt_account_id;return typeof a=="string"&&a.length>0?a:null}s(x,"getAccountId");async function L(e){const{verifier:t,state:o,url:a}=await R(e.originator),r=await b(o);e.onAuth({url:a,instructions:"A browser window should open. Complete login to finish."});let n;try{if(e.onManualCodeInput){let u,d;const g=e.onManualCodeInput().then(i=>{u=i,r.cancelWait()}).catch(i=>{d=i instanceof Error?i:new Error(String(i)),r.cancelWait()}),w=await r.waitForCode();if(d)throw d;if(w?.code)n=w.code;else if(u){const i=m(u);if(i.state&&i.state!==o)throw new Error("State mismatch");n=i.code}if(!n){if(await g,d)throw d;if(u){const i=m(u);if(i.state&&i.state!==o)throw new Error("State mismatch");n=i.code}}}else{const u=await r.waitForCode();u?.code&&(n=u.code)}if(!n){const u=await e.onPrompt({message:"Paste the authorization code (or full redirect URL):"}),d=m(u);if(d.state&&d.state!==o)throw new Error("State mismatch");n=d.code}if(!n)throw new Error("Missing authorization code");const c=await v(n,t);if(c.type!=="success")throw new Error("Token exchange failed");const l=x(c.access);if(!l)throw new Error("Failed to extract accountId from token");return{access:c.access,refresh:c.refresh,expires:c.expires,accountId:l}}finally{r.close()}}s(L,"loginOpenAICodex");async function U(e){const t=await O(e);if(t.type!=="success")throw new Error("Failed to refresh OpenAI Codex token");const o=x(t.access);if(!o)throw new Error("Failed to extract accountId from token");return{access:t.access,refresh:t.refresh,expires:t.expires,accountId:o}}s(U,"refreshOpenAICodexToken");const M={id:"openai-codex",name:"ChatGPT Plus/Pro (Codex Subscription)",usesCallbackServer:!0,async login(e){return L({onAuth:e.onAuth,onPrompt:e.onPrompt,onProgress:e.onProgress,onManualCodeInput:e.onManualCodeInput})},async refreshToken(e){return U(e.refresh)},getApiKey(e){return e.access}};export{L as loginOpenAICodex,M as openaiCodexOAuthProvider,U as refreshOpenAICodexToken};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var i=Object.defineProperty;var r=(n,e)=>i(n,"name",{value:e,configurable:!0});function o(n){let e="";for(const t of n)e+=String.fromCharCode(t);return btoa(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}r(o,"base64urlEncode");async function f(){const n=new Uint8Array(32);crypto.getRandomValues(n);const e=o(n),c=new TextEncoder().encode(e),a=await crypto.subtle.digest("SHA-256",c),s=o(new Uint8Array(a));return{verifier:e,challenge:s}}r(f,"generatePKCE");export{f as generatePKCE};
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var r=Object.defineProperty;var o=(e,t)=>r(e,"name",{value:t,configurable:!0});const n=[/prompt is too long/i,/input is too long for requested model/i,/exceeds the context window/i,/input token count.*exceeds the maximum/i,/maximum prompt length is \d+/i,/reduce the length of the messages/i,/maximum context length is \d+ tokens/i,/exceeds the limit of \d+/i,/exceeds the available context size/i,/greater than the context length/i,/context window exceeds limit/i,/exceeded model token limit/i,/context[_ ]length[_ ]exceeded/i,/too many tokens/i,/token limit exceeded/i];function u(e,t){return!!(e.stopReason==="error"&&e.errorMessage&&(n.some(i=>i.test(e.errorMessage))||/^4(00|13)\s*(status code)?\s*\(no body\)/i.test(e.errorMessage))||t&&e.stopReason==="stop"&&e.usage.input+e.usage.cacheRead>t)}o(u,"isContextOverflow");function c(){return[...n]}o(c,"getOverflowPatterns");export{c as getOverflowPatterns,u as isContextOverflow};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var e=Object.defineProperty;var F=(u,D)=>e(u,"name",{value:D,configurable:!0});function t(u){return u.replace(/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/g,"")}F(t,"sanitizeSurrogates");export{t as sanitizeSurrogates};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var n=Object.defineProperty;var t=(r,e)=>n(r,"name",{value:e,configurable:!0});import{Type as i}from"@sinclair/typebox";function f(r,e){return i.Unsafe({type:"string",enum:[...r],...e?.description&&{description:e.description},...e?.default&&{default:e.default}})}t(f,"StringEnum");export{f as StringEnum};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
var l=Object.defineProperty;var a=(n,r)=>l(n,"name",{value:r,configurable:!0});import i from"ajv";import u from"ajv-formats";const f=i.default||i,g=u.default||u,p=globalThis,c=p.chrome?.runtime?.id!==void 0;let s=null;if(!c)try{s=new f({allErrors:!0,strict:!1,coerceTypes:!0}),g(s)}catch{console.warn("AJV validation disabled due to CSP restrictions")}function T(n,r){const e=n.find(t=>t.name===r.name);if(!e)throw new Error(`Tool "${r.name}" not found`);return h(e,r)}a(T,"validateToolCall");function h(n,r){if(!s||c)return r.arguments;const e=s.compile(n.parameters),t=structuredClone(r.arguments);if(e(t))return t;const d=e.errors?.map(o=>` - ${o.instancePath?o.instancePath.substring(1):o.params.missingProperty||"root"}: ${o.message}`).join(`
|
|
2
|
+
`)||"Unknown validation error",m=`Validation failed for tool "${r.name}":
|
|
3
|
+
${d}
|
|
4
|
+
|
|
5
|
+
Received arguments:
|
|
6
|
+
${JSON.stringify(r.arguments,null,2)}`;throw new Error(m)}a(h,"validateToolArguments");export{h as validateToolArguments,T as validateToolCall};
|