@code-yeongyu/senpi 0.74.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/CHANGELOG.md +4225 -0
- package/README.md +654 -0
- package/dist/bun/cli.d.ts +3 -0
- package/dist/bun/cli.d.ts.map +1 -0
- package/dist/bun/cli.js +9 -0
- package/dist/bun/cli.js.map +1 -0
- package/dist/bun/register-bedrock.d.ts +2 -0
- package/dist/bun/register-bedrock.d.ts.map +1 -0
- package/dist/bun/register-bedrock.js +4 -0
- package/dist/bun/register-bedrock.js.map +1 -0
- package/dist/bun/restore-sandbox-env.d.ts +13 -0
- package/dist/bun/restore-sandbox-env.d.ts.map +1 -0
- package/dist/bun/restore-sandbox-env.js +32 -0
- package/dist/bun/restore-sandbox-env.js.map +1 -0
- package/dist/cli/args.d.ts +53 -0
- package/dist/cli/args.d.ts.map +1 -0
- package/dist/cli/args.js +342 -0
- package/dist/cli/args.js.map +1 -0
- package/dist/cli/config-selector.d.ts +14 -0
- package/dist/cli/config-selector.d.ts.map +1 -0
- package/dist/cli/config-selector.js +31 -0
- package/dist/cli/config-selector.js.map +1 -0
- package/dist/cli/file-processor.d.ts +15 -0
- package/dist/cli/file-processor.d.ts.map +1 -0
- package/dist/cli/file-processor.js +83 -0
- package/dist/cli/file-processor.js.map +1 -0
- package/dist/cli/initial-message.d.ts +18 -0
- package/dist/cli/initial-message.d.ts.map +1 -0
- package/dist/cli/initial-message.js +22 -0
- package/dist/cli/initial-message.js.map +1 -0
- package/dist/cli/list-models.d.ts +9 -0
- package/dist/cli/list-models.d.ts.map +1 -0
- package/dist/cli/list-models.js +98 -0
- package/dist/cli/list-models.js.map +1 -0
- package/dist/cli/session-picker.d.ts +9 -0
- package/dist/cli/session-picker.d.ts.map +1 -0
- package/dist/cli/session-picker.js +35 -0
- package/dist/cli/session-picker.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +20 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +92 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +399 -0
- package/dist/config.js.map +1 -0
- package/dist/core/agent-session-runtime.d.ts +117 -0
- package/dist/core/agent-session-runtime.d.ts.map +1 -0
- package/dist/core/agent-session-runtime.js +300 -0
- package/dist/core/agent-session-runtime.js.map +1 -0
- package/dist/core/agent-session-services.d.ts +93 -0
- package/dist/core/agent-session-services.d.ts.map +1 -0
- package/dist/core/agent-session-services.js +118 -0
- package/dist/core/agent-session-services.js.map +1 -0
- package/dist/core/agent-session.d.ts +643 -0
- package/dist/core/agent-session.d.ts.map +1 -0
- package/dist/core/agent-session.js +2702 -0
- package/dist/core/agent-session.js.map +1 -0
- package/dist/core/auth-guidance.d.ts +5 -0
- package/dist/core/auth-guidance.d.ts.map +1 -0
- package/dist/core/auth-guidance.js +21 -0
- package/dist/core/auth-guidance.js.map +1 -0
- package/dist/core/auth-storage.d.ts +141 -0
- package/dist/core/auth-storage.d.ts.map +1 -0
- package/dist/core/auth-storage.js +441 -0
- package/dist/core/auth-storage.js.map +1 -0
- package/dist/core/bash-executor.d.ts +32 -0
- package/dist/core/bash-executor.d.ts.map +1 -0
- package/dist/core/bash-executor.js +111 -0
- package/dist/core/bash-executor.js.map +1 -0
- package/dist/core/compaction/branch-summarization.d.ts +93 -0
- package/dist/core/compaction/branch-summarization.d.ts.map +1 -0
- package/dist/core/compaction/branch-summarization.js +285 -0
- package/dist/core/compaction/branch-summarization.js.map +1 -0
- package/dist/core/compaction/compaction.d.ts +129 -0
- package/dist/core/compaction/compaction.d.ts.map +1 -0
- package/dist/core/compaction/compaction.js +635 -0
- package/dist/core/compaction/compaction.js.map +1 -0
- package/dist/core/compaction/index.d.ts +7 -0
- package/dist/core/compaction/index.d.ts.map +1 -0
- package/dist/core/compaction/index.js +7 -0
- package/dist/core/compaction/index.js.map +1 -0
- package/dist/core/compaction/utils.d.ts +38 -0
- package/dist/core/compaction/utils.d.ts.map +1 -0
- package/dist/core/compaction/utils.js +165 -0
- package/dist/core/compaction/utils.js.map +1 -0
- package/dist/core/defaults.d.ts +3 -0
- package/dist/core/defaults.d.ts.map +1 -0
- package/dist/core/defaults.js +2 -0
- package/dist/core/defaults.js.map +1 -0
- package/dist/core/diagnostics.d.ts +15 -0
- package/dist/core/diagnostics.d.ts.map +1 -0
- package/dist/core/diagnostics.js +2 -0
- package/dist/core/diagnostics.js.map +1 -0
- package/dist/core/dynamic-prompt/build.d.ts +15 -0
- package/dist/core/dynamic-prompt/build.d.ts.map +1 -0
- package/dist/core/dynamic-prompt/build.js +61 -0
- package/dist/core/dynamic-prompt/build.js.map +1 -0
- package/dist/core/dynamic-prompt/exploration.d.ts +2 -0
- package/dist/core/dynamic-prompt/exploration.d.ts.map +1 -0
- package/dist/core/dynamic-prompt/exploration.js +8 -0
- package/dist/core/dynamic-prompt/exploration.js.map +1 -0
- package/dist/core/dynamic-prompt/identity.d.ts +2 -0
- package/dist/core/dynamic-prompt/identity.d.ts.map +1 -0
- package/dist/core/dynamic-prompt/identity.js +4 -0
- package/dist/core/dynamic-prompt/identity.js.map +1 -0
- package/dist/core/dynamic-prompt/index.d.ts +13 -0
- package/dist/core/dynamic-prompt/index.d.ts.map +1 -0
- package/dist/core/dynamic-prompt/index.js +11 -0
- package/dist/core/dynamic-prompt/index.js.map +1 -0
- package/dist/core/dynamic-prompt/intent-gate.d.ts +5 -0
- package/dist/core/dynamic-prompt/intent-gate.d.ts.map +1 -0
- package/dist/core/dynamic-prompt/intent-gate.js +57 -0
- package/dist/core/dynamic-prompt/intent-gate.js.map +1 -0
- package/dist/core/dynamic-prompt/parallel-tools.d.ts +2 -0
- package/dist/core/dynamic-prompt/parallel-tools.d.ts.map +1 -0
- package/dist/core/dynamic-prompt/parallel-tools.js +10 -0
- package/dist/core/dynamic-prompt/parallel-tools.js.map +1 -0
- package/dist/core/dynamic-prompt/policies.d.ts +2 -0
- package/dist/core/dynamic-prompt/policies.d.ts.map +1 -0
- package/dist/core/dynamic-prompt/policies.js +14 -0
- package/dist/core/dynamic-prompt/policies.js.map +1 -0
- package/dist/core/dynamic-prompt/style.d.ts +2 -0
- package/dist/core/dynamic-prompt/style.d.ts.map +1 -0
- package/dist/core/dynamic-prompt/style.js +10 -0
- package/dist/core/dynamic-prompt/style.js.map +1 -0
- package/dist/core/dynamic-prompt/tool-categorization.d.ts +4 -0
- package/dist/core/dynamic-prompt/tool-categorization.d.ts.map +1 -0
- package/dist/core/dynamic-prompt/tool-categorization.js +26 -0
- package/dist/core/dynamic-prompt/tool-categorization.js.map +1 -0
- package/dist/core/dynamic-prompt/tool-section.d.ts +7 -0
- package/dist/core/dynamic-prompt/tool-section.d.ts.map +1 -0
- package/dist/core/dynamic-prompt/tool-section.js +46 -0
- package/dist/core/dynamic-prompt/tool-section.js.map +1 -0
- package/dist/core/dynamic-prompt/types.d.ts +5 -0
- package/dist/core/dynamic-prompt/types.d.ts.map +1 -0
- package/dist/core/dynamic-prompt/types.js +2 -0
- package/dist/core/dynamic-prompt/types.js.map +1 -0
- package/dist/core/dynamic-prompt/verification.d.ts +2 -0
- package/dist/core/dynamic-prompt/verification.d.ts.map +1 -0
- package/dist/core/dynamic-prompt/verification.js +12 -0
- package/dist/core/dynamic-prompt/verification.js.map +1 -0
- package/dist/core/event-bus.d.ts +9 -0
- package/dist/core/event-bus.d.ts.map +1 -0
- package/dist/core/event-bus.js +25 -0
- package/dist/core/event-bus.js.map +1 -0
- package/dist/core/exec.d.ts +29 -0
- package/dist/core/exec.d.ts.map +1 -0
- package/dist/core/exec.js +75 -0
- package/dist/core/exec.js.map +1 -0
- package/dist/core/export-html/ansi-to-html.d.ts +22 -0
- package/dist/core/export-html/ansi-to-html.d.ts.map +1 -0
- package/dist/core/export-html/ansi-to-html.js +249 -0
- package/dist/core/export-html/ansi-to-html.js.map +1 -0
- package/dist/core/export-html/index.d.ts +37 -0
- package/dist/core/export-html/index.d.ts.map +1 -0
- package/dist/core/export-html/index.js +224 -0
- package/dist/core/export-html/index.js.map +1 -0
- package/dist/core/export-html/tool-renderer.d.ts +34 -0
- package/dist/core/export-html/tool-renderer.d.ts.map +1 -0
- package/dist/core/export-html/tool-renderer.js +108 -0
- package/dist/core/export-html/tool-renderer.js.map +1 -0
- package/dist/core/extensions/builtin/agent-system/agent-types.d.ts +25 -0
- package/dist/core/extensions/builtin/agent-system/agent-types.d.ts.map +1 -0
- package/dist/core/extensions/builtin/agent-system/agent-types.js +38 -0
- package/dist/core/extensions/builtin/agent-system/agent-types.js.map +1 -0
- package/dist/core/extensions/builtin/agent-system/builtin-agents.d.ts +3 -0
- package/dist/core/extensions/builtin/agent-system/builtin-agents.d.ts.map +1 -0
- package/dist/core/extensions/builtin/agent-system/builtin-agents.js +32 -0
- package/dist/core/extensions/builtin/agent-system/builtin-agents.js.map +1 -0
- package/dist/core/extensions/builtin/agent-system/index.d.ts +3 -0
- package/dist/core/extensions/builtin/agent-system/index.d.ts.map +1 -0
- package/dist/core/extensions/builtin/agent-system/index.js +42 -0
- package/dist/core/extensions/builtin/agent-system/index.js.map +1 -0
- package/dist/core/extensions/builtin/agent-system/loader.d.ts +4 -0
- package/dist/core/extensions/builtin/agent-system/loader.d.ts.map +1 -0
- package/dist/core/extensions/builtin/agent-system/loader.js +59 -0
- package/dist/core/extensions/builtin/agent-system/loader.js.map +1 -0
- package/dist/core/extensions/builtin/agent-system/permission.d.ts +11 -0
- package/dist/core/extensions/builtin/agent-system/permission.d.ts.map +1 -0
- package/dist/core/extensions/builtin/agent-system/permission.js +24 -0
- package/dist/core/extensions/builtin/agent-system/permission.js.map +1 -0
- package/dist/core/extensions/builtin/agent-system/registry.d.ts +10 -0
- package/dist/core/extensions/builtin/agent-system/registry.d.ts.map +1 -0
- package/dist/core/extensions/builtin/agent-system/registry.js +50 -0
- package/dist/core/extensions/builtin/agent-system/registry.js.map +1 -0
- package/dist/core/extensions/builtin/agent-system/types.d.ts +9 -0
- package/dist/core/extensions/builtin/agent-system/types.d.ts.map +1 -0
- package/dist/core/extensions/builtin/agent-system/types.js +2 -0
- package/dist/core/extensions/builtin/agent-system/types.js.map +1 -0
- package/dist/core/extensions/builtin/agent-system/wildcard.d.ts +4 -0
- package/dist/core/extensions/builtin/agent-system/wildcard.d.ts.map +1 -0
- package/dist/core/extensions/builtin/agent-system/wildcard.js +58 -0
- package/dist/core/extensions/builtin/agent-system/wildcard.js.map +1 -0
- package/dist/core/extensions/builtin/anthropic-bash/index.d.ts +7 -0
- package/dist/core/extensions/builtin/anthropic-bash/index.d.ts.map +1 -0
- package/dist/core/extensions/builtin/anthropic-bash/index.js +79 -0
- package/dist/core/extensions/builtin/anthropic-bash/index.js.map +1 -0
- package/dist/core/extensions/builtin/anthropic-code-execution/index.d.ts +7 -0
- package/dist/core/extensions/builtin/anthropic-code-execution/index.d.ts.map +1 -0
- package/dist/core/extensions/builtin/anthropic-code-execution/index.js +79 -0
- package/dist/core/extensions/builtin/anthropic-code-execution/index.js.map +1 -0
- package/dist/core/extensions/builtin/anthropic-computer-use/index.d.ts +53 -0
- package/dist/core/extensions/builtin/anthropic-computer-use/index.d.ts.map +1 -0
- package/dist/core/extensions/builtin/anthropic-computer-use/index.js +676 -0
- package/dist/core/extensions/builtin/anthropic-computer-use/index.js.map +1 -0
- package/dist/core/extensions/builtin/anthropic-text-editor/index.d.ts +25 -0
- package/dist/core/extensions/builtin/anthropic-text-editor/index.d.ts.map +1 -0
- package/dist/core/extensions/builtin/anthropic-text-editor/index.js +244 -0
- package/dist/core/extensions/builtin/anthropic-text-editor/index.js.map +1 -0
- package/dist/core/extensions/builtin/anthropic-tool-search/index.d.ts +6 -0
- package/dist/core/extensions/builtin/anthropic-tool-search/index.d.ts.map +1 -0
- package/dist/core/extensions/builtin/anthropic-tool-search/index.js +112 -0
- package/dist/core/extensions/builtin/anthropic-tool-search/index.js.map +1 -0
- package/dist/core/extensions/builtin/anthropic-web-fetch/index.d.ts +7 -0
- package/dist/core/extensions/builtin/anthropic-web-fetch/index.d.ts.map +1 -0
- package/dist/core/extensions/builtin/anthropic-web-fetch/index.js +112 -0
- package/dist/core/extensions/builtin/anthropic-web-fetch/index.js.map +1 -0
- package/dist/core/extensions/builtin/anthropic-web-search/index.d.ts +7 -0
- package/dist/core/extensions/builtin/anthropic-web-search/index.d.ts.map +1 -0
- package/dist/core/extensions/builtin/anthropic-web-search/index.js +102 -0
- package/dist/core/extensions/builtin/anthropic-web-search/index.js.map +1 -0
- package/dist/core/extensions/builtin/background-task/cancel-tool.d.ts +10 -0
- package/dist/core/extensions/builtin/background-task/cancel-tool.d.ts.map +1 -0
- package/dist/core/extensions/builtin/background-task/cancel-tool.js +109 -0
- package/dist/core/extensions/builtin/background-task/cancel-tool.js.map +1 -0
- package/dist/core/extensions/builtin/background-task/index.d.ts +3 -0
- package/dist/core/extensions/builtin/background-task/index.d.ts.map +1 -0
- package/dist/core/extensions/builtin/background-task/index.js +207 -0
- package/dist/core/extensions/builtin/background-task/index.js.map +1 -0
- package/dist/core/extensions/builtin/background-task/manager.d.ts +17 -0
- package/dist/core/extensions/builtin/background-task/manager.d.ts.map +1 -0
- package/dist/core/extensions/builtin/background-task/manager.js +114 -0
- package/dist/core/extensions/builtin/background-task/manager.js.map +1 -0
- package/dist/core/extensions/builtin/background-task/notification.d.ts +22 -0
- package/dist/core/extensions/builtin/background-task/notification.d.ts.map +1 -0
- package/dist/core/extensions/builtin/background-task/notification.js +105 -0
- package/dist/core/extensions/builtin/background-task/notification.js.map +1 -0
- package/dist/core/extensions/builtin/background-task/output-tool.d.ts +11 -0
- package/dist/core/extensions/builtin/background-task/output-tool.d.ts.map +1 -0
- package/dist/core/extensions/builtin/background-task/output-tool.js +127 -0
- package/dist/core/extensions/builtin/background-task/output-tool.js.map +1 -0
- package/dist/core/extensions/builtin/background-task/spawner.d.ts +8 -0
- package/dist/core/extensions/builtin/background-task/spawner.d.ts.map +1 -0
- package/dist/core/extensions/builtin/background-task/spawner.js +207 -0
- package/dist/core/extensions/builtin/background-task/spawner.js.map +1 -0
- package/dist/core/extensions/builtin/background-task/task-tool.d.ts +20 -0
- package/dist/core/extensions/builtin/background-task/task-tool.d.ts.map +1 -0
- package/dist/core/extensions/builtin/background-task/task-tool.js +302 -0
- package/dist/core/extensions/builtin/background-task/task-tool.js.map +1 -0
- package/dist/core/extensions/builtin/background-task/types.d.ts +72 -0
- package/dist/core/extensions/builtin/background-task/types.d.ts.map +1 -0
- package/dist/core/extensions/builtin/background-task/types.js +32 -0
- package/dist/core/extensions/builtin/background-task/types.js.map +1 -0
- package/dist/core/extensions/builtin/bash-timeout/index.d.ts +5 -0
- package/dist/core/extensions/builtin/bash-timeout/index.d.ts.map +1 -0
- package/dist/core/extensions/builtin/bash-timeout/index.js +20 -0
- package/dist/core/extensions/builtin/bash-timeout/index.js.map +1 -0
- package/dist/core/extensions/builtin/bash-timeout/timeout.d.ts +17 -0
- package/dist/core/extensions/builtin/bash-timeout/timeout.d.ts.map +1 -0
- package/dist/core/extensions/builtin/bash-timeout/timeout.js +28 -0
- package/dist/core/extensions/builtin/bash-timeout/timeout.js.map +1 -0
- package/dist/core/extensions/builtin/compaction/checkpoint-state.d.ts +46 -0
- package/dist/core/extensions/builtin/compaction/checkpoint-state.d.ts.map +1 -0
- package/dist/core/extensions/builtin/compaction/checkpoint-state.js +131 -0
- package/dist/core/extensions/builtin/compaction/checkpoint-state.js.map +1 -0
- package/dist/core/extensions/builtin/compaction/circuit-breaker.d.ts +23 -0
- package/dist/core/extensions/builtin/compaction/circuit-breaker.d.ts.map +1 -0
- package/dist/core/extensions/builtin/compaction/circuit-breaker.js +36 -0
- package/dist/core/extensions/builtin/compaction/circuit-breaker.js.map +1 -0
- package/dist/core/extensions/builtin/compaction/degradation-monitor.d.ts +67 -0
- package/dist/core/extensions/builtin/compaction/degradation-monitor.d.ts.map +1 -0
- package/dist/core/extensions/builtin/compaction/degradation-monitor.js +90 -0
- package/dist/core/extensions/builtin/compaction/degradation-monitor.js.map +1 -0
- package/dist/core/extensions/builtin/compaction/index.d.ts +3 -0
- package/dist/core/extensions/builtin/compaction/index.d.ts.map +1 -0
- package/dist/core/extensions/builtin/compaction/index.js +199 -0
- package/dist/core/extensions/builtin/compaction/index.js.map +1 -0
- package/dist/core/extensions/builtin/compaction/overflow-detection.d.ts +11 -0
- package/dist/core/extensions/builtin/compaction/overflow-detection.d.ts.map +1 -0
- package/dist/core/extensions/builtin/compaction/overflow-detection.js +40 -0
- package/dist/core/extensions/builtin/compaction/overflow-detection.js.map +1 -0
- package/dist/core/extensions/builtin/compaction/per-turn-cap.d.ts +15 -0
- package/dist/core/extensions/builtin/compaction/per-turn-cap.d.ts.map +1 -0
- package/dist/core/extensions/builtin/compaction/per-turn-cap.js +26 -0
- package/dist/core/extensions/builtin/compaction/per-turn-cap.js.map +1 -0
- package/dist/core/extensions/builtin/compaction/policy.d.ts +19 -0
- package/dist/core/extensions/builtin/compaction/policy.d.ts.map +1 -0
- package/dist/core/extensions/builtin/compaction/policy.js +96 -0
- package/dist/core/extensions/builtin/compaction/policy.js.map +1 -0
- package/dist/core/extensions/builtin/compaction/prompts.d.ts +16 -0
- package/dist/core/extensions/builtin/compaction/prompts.d.ts.map +1 -0
- package/dist/core/extensions/builtin/compaction/prompts.js +252 -0
- package/dist/core/extensions/builtin/compaction/prompts.js.map +1 -0
- package/dist/core/extensions/builtin/compaction/restoration-tracker.d.ts +57 -0
- package/dist/core/extensions/builtin/compaction/restoration-tracker.d.ts.map +1 -0
- package/dist/core/extensions/builtin/compaction/restoration-tracker.js +274 -0
- package/dist/core/extensions/builtin/compaction/restoration-tracker.js.map +1 -0
- package/dist/core/extensions/builtin/compaction/speculative.d.ts +58 -0
- package/dist/core/extensions/builtin/compaction/speculative.d.ts.map +1 -0
- package/dist/core/extensions/builtin/compaction/speculative.js +230 -0
- package/dist/core/extensions/builtin/compaction/speculative.js.map +1 -0
- package/dist/core/extensions/builtin/compaction/state.d.ts +17 -0
- package/dist/core/extensions/builtin/compaction/state.d.ts.map +1 -0
- package/dist/core/extensions/builtin/compaction/state.js +15 -0
- package/dist/core/extensions/builtin/compaction/state.js.map +1 -0
- package/dist/core/extensions/builtin/compaction/todo-bridge.d.ts +25 -0
- package/dist/core/extensions/builtin/compaction/todo-bridge.d.ts.map +1 -0
- package/dist/core/extensions/builtin/compaction/todo-bridge.js +77 -0
- package/dist/core/extensions/builtin/compaction/todo-bridge.js.map +1 -0
- package/dist/core/extensions/builtin/compaction/tool-truncation.d.ts +4 -0
- package/dist/core/extensions/builtin/compaction/tool-truncation.d.ts.map +1 -0
- package/dist/core/extensions/builtin/compaction/tool-truncation.js +85 -0
- package/dist/core/extensions/builtin/compaction/tool-truncation.js.map +1 -0
- package/dist/core/extensions/builtin/diff.d.ts +9 -0
- package/dist/core/extensions/builtin/diff.d.ts.map +1 -0
- package/dist/core/extensions/builtin/diff.js +188 -0
- package/dist/core/extensions/builtin/diff.js.map +1 -0
- package/dist/core/extensions/builtin/files.d.ts +9 -0
- package/dist/core/extensions/builtin/files.d.ts.map +1 -0
- package/dist/core/extensions/builtin/files.js +186 -0
- package/dist/core/extensions/builtin/files.js.map +1 -0
- package/dist/core/extensions/builtin/google-code-execution/index.d.ts +7 -0
- package/dist/core/extensions/builtin/google-code-execution/index.d.ts.map +1 -0
- package/dist/core/extensions/builtin/google-code-execution/index.js +73 -0
- package/dist/core/extensions/builtin/google-code-execution/index.js.map +1 -0
- package/dist/core/extensions/builtin/google-google-search/index.d.ts +7 -0
- package/dist/core/extensions/builtin/google-google-search/index.d.ts.map +1 -0
- package/dist/core/extensions/builtin/google-google-search/index.js +83 -0
- package/dist/core/extensions/builtin/google-google-search/index.js.map +1 -0
- package/dist/core/extensions/builtin/google-url-context/index.d.ts +7 -0
- package/dist/core/extensions/builtin/google-url-context/index.d.ts.map +1 -0
- package/dist/core/extensions/builtin/google-url-context/index.js +82 -0
- package/dist/core/extensions/builtin/google-url-context/index.js.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/apply.d.ts +6 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/apply.d.ts.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/apply.js +159 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/apply.js.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/constants.d.ts +8 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/constants.d.ts.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/constants.js +29 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/constants.js.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/errors.d.ts +8 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/errors.d.ts.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/errors.js +14 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/errors.js.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/extension.d.ts +6 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/extension.d.ts.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/extension.js +54 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/extension.js.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/index.d.ts +12 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/index.d.ts.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/index.js +11 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/index.js.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/params.d.ts +3 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/params.d.ts.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/params.js +13 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/params.js.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/parser.d.ts +3 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/parser.d.ts.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/parser.js +157 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/parser.js.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/patch-diff.d.ts +6 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/patch-diff.d.ts.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/patch-diff.js +36 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/patch-diff.js.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/patch-replace.d.ts +6 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/patch-replace.d.ts.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/patch-replace.js +50 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/patch-replace.js.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/preview-format.d.ts +13 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/preview-format.d.ts.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/preview-format.js +306 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/preview-format.js.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/preview.d.ts +7 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/preview.d.ts.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/preview.js +73 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/preview.js.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/seek-sequence.d.ts +6 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/seek-sequence.d.ts.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/seek-sequence.js +49 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/seek-sequence.js.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/streaming-parser.d.ts +23 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/streaming-parser.d.ts.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/streaming-parser.js +197 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/streaming-parser.js.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/streaming-render.d.ts +4 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/streaming-render.d.ts.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/streaming-render.js +76 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/streaming-render.js.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/text.d.ts +4 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/text.d.ts.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/text.js +16 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/text.js.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/tool.d.ts +3 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/tool.d.ts.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/tool.js +116 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/tool.js.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/types.d.ts +109 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/types.d.ts.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/types.js +2 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/types.js.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/workspace.d.ts +2 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/workspace.d.ts.map +1 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/workspace.js +5 -0
- package/dist/core/extensions/builtin/gpt-apply-patch/workspace.js.map +1 -0
- package/dist/core/extensions/builtin/index.d.ts +18 -0
- package/dist/core/extensions/builtin/index.d.ts.map +1 -0
- package/dist/core/extensions/builtin/index.js +58 -0
- package/dist/core/extensions/builtin/index.js.map +1 -0
- package/dist/core/extensions/builtin/openai-api-parallel-tool-calls/index.d.ts +6 -0
- package/dist/core/extensions/builtin/openai-api-parallel-tool-calls/index.d.ts.map +1 -0
- package/dist/core/extensions/builtin/openai-api-parallel-tool-calls/index.js +57 -0
- package/dist/core/extensions/builtin/openai-api-parallel-tool-calls/index.js.map +1 -0
- package/dist/core/extensions/builtin/openai-code-interpreter/index.d.ts +10 -0
- package/dist/core/extensions/builtin/openai-code-interpreter/index.d.ts.map +1 -0
- package/dist/core/extensions/builtin/openai-code-interpreter/index.js +95 -0
- package/dist/core/extensions/builtin/openai-code-interpreter/index.js.map +1 -0
- package/dist/core/extensions/builtin/openai-web-search/index.d.ts +7 -0
- package/dist/core/extensions/builtin/openai-web-search/index.d.ts.map +1 -0
- package/dist/core/extensions/builtin/openai-web-search/index.js +111 -0
- package/dist/core/extensions/builtin/openai-web-search/index.js.map +1 -0
- package/dist/core/extensions/builtin/permission-system/arity.d.ts +4 -0
- package/dist/core/extensions/builtin/permission-system/arity.d.ts.map +1 -0
- package/dist/core/extensions/builtin/permission-system/arity.js +168 -0
- package/dist/core/extensions/builtin/permission-system/arity.js.map +1 -0
- package/dist/core/extensions/builtin/permission-system/cli.d.ts +6 -0
- package/dist/core/extensions/builtin/permission-system/cli.d.ts.map +1 -0
- package/dist/core/extensions/builtin/permission-system/cli.js +33 -0
- package/dist/core/extensions/builtin/permission-system/cli.js.map +1 -0
- package/dist/core/extensions/builtin/permission-system/config.d.ts +7 -0
- package/dist/core/extensions/builtin/permission-system/config.d.ts.map +1 -0
- package/dist/core/extensions/builtin/permission-system/config.js +49 -0
- package/dist/core/extensions/builtin/permission-system/config.js.map +1 -0
- package/dist/core/extensions/builtin/permission-system/evaluate.d.ts +9 -0
- package/dist/core/extensions/builtin/permission-system/evaluate.d.ts.map +1 -0
- package/dist/core/extensions/builtin/permission-system/evaluate.js +14 -0
- package/dist/core/extensions/builtin/permission-system/evaluate.js.map +1 -0
- package/dist/core/extensions/builtin/permission-system/events.d.ts +67 -0
- package/dist/core/extensions/builtin/permission-system/events.d.ts.map +1 -0
- package/dist/core/extensions/builtin/permission-system/events.js +63 -0
- package/dist/core/extensions/builtin/permission-system/events.js.map +1 -0
- package/dist/core/extensions/builtin/permission-system/external-dir.d.ts +4 -0
- package/dist/core/extensions/builtin/permission-system/external-dir.d.ts.map +1 -0
- package/dist/core/extensions/builtin/permission-system/external-dir.js +138 -0
- package/dist/core/extensions/builtin/permission-system/external-dir.js.map +1 -0
- package/dist/core/extensions/builtin/permission-system/index.d.ts +3 -0
- package/dist/core/extensions/builtin/permission-system/index.d.ts.map +1 -0
- package/dist/core/extensions/builtin/permission-system/index.js +134 -0
- package/dist/core/extensions/builtin/permission-system/index.js.map +1 -0
- package/dist/core/extensions/builtin/permission-system/non-interactive.d.ts +9 -0
- package/dist/core/extensions/builtin/permission-system/non-interactive.d.ts.map +1 -0
- package/dist/core/extensions/builtin/permission-system/non-interactive.js +43 -0
- package/dist/core/extensions/builtin/permission-system/non-interactive.js.map +1 -0
- package/dist/core/extensions/builtin/permission-system/parsers.d.ts +16 -0
- package/dist/core/extensions/builtin/permission-system/parsers.d.ts.map +1 -0
- package/dist/core/extensions/builtin/permission-system/parsers.js +150 -0
- package/dist/core/extensions/builtin/permission-system/parsers.js.map +1 -0
- package/dist/core/extensions/builtin/permission-system/prompt.d.ts +4 -0
- package/dist/core/extensions/builtin/permission-system/prompt.d.ts.map +1 -0
- package/dist/core/extensions/builtin/permission-system/prompt.js +74 -0
- package/dist/core/extensions/builtin/permission-system/prompt.js.map +1 -0
- package/dist/core/extensions/builtin/permission-system/service.d.ts +27 -0
- package/dist/core/extensions/builtin/permission-system/service.d.ts.map +1 -0
- package/dist/core/extensions/builtin/permission-system/service.js +129 -0
- package/dist/core/extensions/builtin/permission-system/service.js.map +1 -0
- package/dist/core/extensions/builtin/permission-system/settings.d.ts +18 -0
- package/dist/core/extensions/builtin/permission-system/settings.d.ts.map +1 -0
- package/dist/core/extensions/builtin/permission-system/settings.js +23 -0
- package/dist/core/extensions/builtin/permission-system/settings.js.map +1 -0
- package/dist/core/extensions/builtin/permission-system/storage.d.ts +6 -0
- package/dist/core/extensions/builtin/permission-system/storage.d.ts.map +1 -0
- package/dist/core/extensions/builtin/permission-system/storage.js +58 -0
- package/dist/core/extensions/builtin/permission-system/storage.js.map +1 -0
- package/dist/core/extensions/builtin/permission-system/types.d.ts +61 -0
- package/dist/core/extensions/builtin/permission-system/types.d.ts.map +1 -0
- package/dist/core/extensions/builtin/permission-system/types.js +29 -0
- package/dist/core/extensions/builtin/permission-system/types.js.map +1 -0
- package/dist/core/extensions/builtin/permission-system/wildcard.d.ts +4 -0
- package/dist/core/extensions/builtin/permission-system/wildcard.d.ts.map +1 -0
- package/dist/core/extensions/builtin/permission-system/wildcard.js +58 -0
- package/dist/core/extensions/builtin/permission-system/wildcard.js.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/claude-opus-4-5.d.ts +3 -0
- package/dist/core/extensions/builtin/prompt-preset/claude-opus-4-5.d.ts.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/claude-opus-4-5.js +8 -0
- package/dist/core/extensions/builtin/prompt-preset/claude-opus-4-5.js.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/claude-opus-4-6.d.ts +3 -0
- package/dist/core/extensions/builtin/prompt-preset/claude-opus-4-6.d.ts.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/claude-opus-4-6.js +8 -0
- package/dist/core/extensions/builtin/prompt-preset/claude-opus-4-6.js.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/claude-opus-4-7.d.ts +3 -0
- package/dist/core/extensions/builtin/prompt-preset/claude-opus-4-7.d.ts.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/claude-opus-4-7.js +10 -0
- package/dist/core/extensions/builtin/prompt-preset/claude-opus-4-7.js.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/file-operations.d.ts +2 -0
- package/dist/core/extensions/builtin/prompt-preset/file-operations.d.ts.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/file-operations.js +31 -0
- package/dist/core/extensions/builtin/prompt-preset/file-operations.js.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/gpt-5.2.d.ts +3 -0
- package/dist/core/extensions/builtin/prompt-preset/gpt-5.2.d.ts.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/gpt-5.2.js +17 -0
- package/dist/core/extensions/builtin/prompt-preset/gpt-5.2.js.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/gpt-5.3-codex.d.ts +3 -0
- package/dist/core/extensions/builtin/prompt-preset/gpt-5.3-codex.d.ts.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/gpt-5.3-codex.js +15 -0
- package/dist/core/extensions/builtin/prompt-preset/gpt-5.3-codex.js.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/gpt-5.4.d.ts +3 -0
- package/dist/core/extensions/builtin/prompt-preset/gpt-5.4.d.ts.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/gpt-5.4.js +15 -0
- package/dist/core/extensions/builtin/prompt-preset/gpt-5.4.js.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/gpt-5.5.d.ts +3 -0
- package/dist/core/extensions/builtin/prompt-preset/gpt-5.5.d.ts.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/gpt-5.5.js +21 -0
- package/dist/core/extensions/builtin/prompt-preset/gpt-5.5.js.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/gpt-5.d.ts +3 -0
- package/dist/core/extensions/builtin/prompt-preset/gpt-5.d.ts.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/gpt-5.js +13 -0
- package/dist/core/extensions/builtin/prompt-preset/gpt-5.js.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/index.d.ts +3 -0
- package/dist/core/extensions/builtin/prompt-preset/index.d.ts.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/index.js +56 -0
- package/dist/core/extensions/builtin/prompt-preset/index.js.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/kimi-k2-6.d.ts +3 -0
- package/dist/core/extensions/builtin/prompt-preset/kimi-k2-6.d.ts.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/kimi-k2-6.js +10 -0
- package/dist/core/extensions/builtin/prompt-preset/kimi-k2-6.js.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/presets.d.ts +12 -0
- package/dist/core/extensions/builtin/prompt-preset/presets.d.ts.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/presets.js +101 -0
- package/dist/core/extensions/builtin/prompt-preset/presets.js.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/settings.d.ts +7 -0
- package/dist/core/extensions/builtin/prompt-preset/settings.d.ts.map +1 -0
- package/dist/core/extensions/builtin/prompt-preset/settings.js +26 -0
- package/dist/core/extensions/builtin/prompt-preset/settings.js.map +1 -0
- package/dist/core/extensions/builtin/prompt-url-widget.d.ts +3 -0
- package/dist/core/extensions/builtin/prompt-url-widget.d.ts.map +1 -0
- package/dist/core/extensions/builtin/prompt-url-widget.js +127 -0
- package/dist/core/extensions/builtin/prompt-url-widget.js.map +1 -0
- package/dist/core/extensions/builtin/redraws.d.ts +8 -0
- package/dist/core/extensions/builtin/redraws.d.ts.map +1 -0
- package/dist/core/extensions/builtin/redraws.js +23 -0
- package/dist/core/extensions/builtin/redraws.js.map +1 -0
- package/dist/core/extensions/builtin/service-tier.d.ts +6 -0
- package/dist/core/extensions/builtin/service-tier.d.ts.map +1 -0
- package/dist/core/extensions/builtin/service-tier.js +29 -0
- package/dist/core/extensions/builtin/service-tier.js.map +1 -0
- package/dist/core/extensions/builtin/system-messages.d.ts +47 -0
- package/dist/core/extensions/builtin/system-messages.d.ts.map +1 -0
- package/dist/core/extensions/builtin/system-messages.js +117 -0
- package/dist/core/extensions/builtin/system-messages.js.map +1 -0
- package/dist/core/extensions/builtin/todotools/continuation/config.d.ts +10 -0
- package/dist/core/extensions/builtin/todotools/continuation/config.d.ts.map +1 -0
- package/dist/core/extensions/builtin/todotools/continuation/config.js +33 -0
- package/dist/core/extensions/builtin/todotools/continuation/config.js.map +1 -0
- package/dist/core/extensions/builtin/todotools/continuation/index.d.ts +2 -0
- package/dist/core/extensions/builtin/todotools/continuation/index.d.ts.map +1 -0
- package/dist/core/extensions/builtin/todotools/continuation/index.js +2 -0
- package/dist/core/extensions/builtin/todotools/continuation/index.js.map +1 -0
- package/dist/core/extensions/builtin/todotools/continuation/prompt.d.ts +5 -0
- package/dist/core/extensions/builtin/todotools/continuation/prompt.d.ts.map +1 -0
- package/dist/core/extensions/builtin/todotools/continuation/prompt.js +34 -0
- package/dist/core/extensions/builtin/todotools/continuation/prompt.js.map +1 -0
- package/dist/core/extensions/builtin/todotools/continuation/runtime.d.ts +11 -0
- package/dist/core/extensions/builtin/todotools/continuation/runtime.d.ts.map +1 -0
- package/dist/core/extensions/builtin/todotools/continuation/runtime.js +204 -0
- package/dist/core/extensions/builtin/todotools/continuation/runtime.js.map +1 -0
- package/dist/core/extensions/builtin/todotools/index.d.ts +5 -0
- package/dist/core/extensions/builtin/todotools/index.d.ts.map +1 -0
- package/dist/core/extensions/builtin/todotools/index.js +39 -0
- package/dist/core/extensions/builtin/todotools/index.js.map +1 -0
- package/dist/core/extensions/builtin/todotools/prompt.d.ts +2 -0
- package/dist/core/extensions/builtin/todotools/prompt.d.ts.map +1 -0
- package/dist/core/extensions/builtin/todotools/prompt.js +164 -0
- package/dist/core/extensions/builtin/todotools/prompt.js.map +1 -0
- package/dist/core/extensions/builtin/todotools/state.d.ts +29 -0
- package/dist/core/extensions/builtin/todotools/state.d.ts.map +1 -0
- package/dist/core/extensions/builtin/todotools/state.js +74 -0
- package/dist/core/extensions/builtin/todotools/state.js.map +1 -0
- package/dist/core/extensions/builtin/todotools/tools/todoread.d.ts +4 -0
- package/dist/core/extensions/builtin/todotools/tools/todoread.d.ts.map +1 -0
- package/dist/core/extensions/builtin/todotools/tools/todoread.js +35 -0
- package/dist/core/extensions/builtin/todotools/tools/todoread.js.map +1 -0
- package/dist/core/extensions/builtin/todotools/tools/todowrite.d.ts +10 -0
- package/dist/core/extensions/builtin/todotools/tools/todowrite.d.ts.map +1 -0
- package/dist/core/extensions/builtin/todotools/tools/todowrite.js +92 -0
- package/dist/core/extensions/builtin/todotools/tools/todowrite.js.map +1 -0
- package/dist/core/extensions/builtin/tool-pair-guard/index.d.ts +4 -0
- package/dist/core/extensions/builtin/tool-pair-guard/index.d.ts.map +1 -0
- package/dist/core/extensions/builtin/tool-pair-guard/index.js +11 -0
- package/dist/core/extensions/builtin/tool-pair-guard/index.js.map +1 -0
- package/dist/core/extensions/builtin/tool-pair-guard/sanitize-anthropic-payload.d.ts +3 -0
- package/dist/core/extensions/builtin/tool-pair-guard/sanitize-anthropic-payload.d.ts.map +1 -0
- package/dist/core/extensions/builtin/tool-pair-guard/sanitize-anthropic-payload.js +75 -0
- package/dist/core/extensions/builtin/tool-pair-guard/sanitize-anthropic-payload.js.map +1 -0
- package/dist/core/extensions/builtin/tps.d.ts +3 -0
- package/dist/core/extensions/builtin/tps.d.ts.map +1 -0
- package/dist/core/extensions/builtin/tps.js +65 -0
- package/dist/core/extensions/builtin/tps.js.map +1 -0
- package/dist/core/extensions/index.d.ts +12 -0
- package/dist/core/extensions/index.d.ts.map +1 -0
- package/dist/core/extensions/index.js +9 -0
- package/dist/core/extensions/index.js.map +1 -0
- package/dist/core/extensions/loader.d.ts +27 -0
- package/dist/core/extensions/loader.d.ts.map +1 -0
- package/dist/core/extensions/loader.js +505 -0
- package/dist/core/extensions/loader.js.map +1 -0
- package/dist/core/extensions/runner.d.ts +164 -0
- package/dist/core/extensions/runner.d.ts.map +1 -0
- package/dist/core/extensions/runner.js +900 -0
- package/dist/core/extensions/runner.js.map +1 -0
- package/dist/core/extensions/types.d.ts +1240 -0
- package/dist/core/extensions/types.d.ts.map +1 -0
- package/dist/core/extensions/types.js +45 -0
- package/dist/core/extensions/types.js.map +1 -0
- package/dist/core/extensions/wrapper.d.ts +20 -0
- package/dist/core/extensions/wrapper.d.ts.map +1 -0
- package/dist/core/extensions/wrapper.js +22 -0
- package/dist/core/extensions/wrapper.js.map +1 -0
- package/dist/core/footer-data-provider.d.ts +52 -0
- package/dist/core/footer-data-provider.d.ts.map +1 -0
- package/dist/core/footer-data-provider.js +310 -0
- package/dist/core/footer-data-provider.js.map +1 -0
- package/dist/core/index.d.ts +12 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +12 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/keybindings.d.ts +353 -0
- package/dist/core/keybindings.d.ts.map +1 -0
- package/dist/core/keybindings.js +295 -0
- package/dist/core/keybindings.js.map +1 -0
- package/dist/core/messages.d.ts +79 -0
- package/dist/core/messages.d.ts.map +1 -0
- package/dist/core/messages.js +138 -0
- package/dist/core/messages.js.map +1 -0
- package/dist/core/model-registry.d.ts +177 -0
- package/dist/core/model-registry.d.ts.map +1 -0
- package/dist/core/model-registry.js +853 -0
- package/dist/core/model-registry.js.map +1 -0
- package/dist/core/model-resolver.d.ts +116 -0
- package/dist/core/model-resolver.d.ts.map +1 -0
- package/dist/core/model-resolver.js +498 -0
- package/dist/core/model-resolver.js.map +1 -0
- package/dist/core/output-guard.d.ts +6 -0
- package/dist/core/output-guard.d.ts.map +1 -0
- package/dist/core/output-guard.js +59 -0
- package/dist/core/output-guard.js.map +1 -0
- package/dist/core/package-manager.d.ts +198 -0
- package/dist/core/package-manager.d.ts.map +1 -0
- package/dist/core/package-manager.js +1995 -0
- package/dist/core/package-manager.js.map +1 -0
- package/dist/core/prompt-templates.d.ts +52 -0
- package/dist/core/prompt-templates.d.ts.map +1 -0
- package/dist/core/prompt-templates.js +250 -0
- package/dist/core/prompt-templates.js.map +1 -0
- package/dist/core/provider-display-names.d.ts +2 -0
- package/dist/core/provider-display-names.d.ts.map +1 -0
- package/dist/core/provider-display-names.js +33 -0
- package/dist/core/provider-display-names.js.map +1 -0
- package/dist/core/resolve-config-value.d.ts +23 -0
- package/dist/core/resolve-config-value.d.ts.map +1 -0
- package/dist/core/resolve-config-value.js +126 -0
- package/dist/core/resolve-config-value.js.map +1 -0
- package/dist/core/resource-loader.d.ts +184 -0
- package/dist/core/resource-loader.d.ts.map +1 -0
- package/dist/core/resource-loader.js +771 -0
- package/dist/core/resource-loader.js.map +1 -0
- package/dist/core/sdk.d.ts +129 -0
- package/dist/core/sdk.d.ts.map +1 -0
- package/dist/core/sdk.js +339 -0
- package/dist/core/sdk.js.map +1 -0
- package/dist/core/session-cwd.d.ts +19 -0
- package/dist/core/session-cwd.d.ts.map +1 -0
- package/dist/core/session-cwd.js +38 -0
- package/dist/core/session-cwd.js.map +1 -0
- package/dist/core/session-manager.d.ts +333 -0
- package/dist/core/session-manager.d.ts.map +1 -0
- package/dist/core/session-manager.js +1128 -0
- package/dist/core/session-manager.js.map +1 -0
- package/dist/core/settings-manager.d.ts +294 -0
- package/dist/core/settings-manager.d.ts.map +1 -0
- package/dist/core/settings-manager.js +810 -0
- package/dist/core/settings-manager.js.map +1 -0
- package/dist/core/skills.d.ts +60 -0
- package/dist/core/skills.d.ts.map +1 -0
- package/dist/core/skills.js +404 -0
- package/dist/core/skills.js.map +1 -0
- package/dist/core/slash-commands.d.ts +14 -0
- package/dist/core/slash-commands.d.ts.map +1 -0
- package/dist/core/slash-commands.js +25 -0
- package/dist/core/slash-commands.js.map +1 -0
- package/dist/core/source-info.d.ts +18 -0
- package/dist/core/source-info.d.ts.map +1 -0
- package/dist/core/source-info.js +19 -0
- package/dist/core/source-info.js.map +1 -0
- package/dist/core/system-prompt.d.ts +28 -0
- package/dist/core/system-prompt.d.ts.map +1 -0
- package/dist/core/system-prompt.js +120 -0
- package/dist/core/system-prompt.js.map +1 -0
- package/dist/core/telemetry.d.ts +3 -0
- package/dist/core/telemetry.d.ts.map +1 -0
- package/dist/core/telemetry.js +9 -0
- package/dist/core/telemetry.js.map +1 -0
- package/dist/core/timings.d.ts +8 -0
- package/dist/core/timings.d.ts.map +1 -0
- package/dist/core/timings.js +31 -0
- package/dist/core/timings.js.map +1 -0
- package/dist/core/tools/bash.d.ts +68 -0
- package/dist/core/tools/bash.d.ts.map +1 -0
- package/dist/core/tools/bash.js +335 -0
- package/dist/core/tools/bash.js.map +1 -0
- package/dist/core/tools/edit-diff.d.ts +85 -0
- package/dist/core/tools/edit-diff.d.ts.map +1 -0
- package/dist/core/tools/edit-diff.js +338 -0
- package/dist/core/tools/edit-diff.js.map +1 -0
- package/dist/core/tools/edit.d.ts +49 -0
- package/dist/core/tools/edit.d.ts.map +1 -0
- package/dist/core/tools/edit.js +324 -0
- package/dist/core/tools/edit.js.map +1 -0
- package/dist/core/tools/file-mutation-queue.d.ts +6 -0
- package/dist/core/tools/file-mutation-queue.d.ts.map +1 -0
- package/dist/core/tools/file-mutation-queue.js +37 -0
- package/dist/core/tools/file-mutation-queue.js.map +1 -0
- package/dist/core/tools/find.d.ts +35 -0
- package/dist/core/tools/find.d.ts.map +1 -0
- package/dist/core/tools/find.js +298 -0
- package/dist/core/tools/find.js.map +1 -0
- package/dist/core/tools/grep.d.ts +37 -0
- package/dist/core/tools/grep.d.ts.map +1 -0
- package/dist/core/tools/grep.js +304 -0
- package/dist/core/tools/grep.js.map +1 -0
- package/dist/core/tools/index.d.ts +40 -0
- package/dist/core/tools/index.d.ts.map +1 -0
- package/dist/core/tools/index.js +112 -0
- package/dist/core/tools/index.js.map +1 -0
- package/dist/core/tools/ls.d.ts +37 -0
- package/dist/core/tools/ls.d.ts.map +1 -0
- package/dist/core/tools/ls.js +169 -0
- package/dist/core/tools/ls.js.map +1 -0
- package/dist/core/tools/output-accumulator.d.ts +50 -0
- package/dist/core/tools/output-accumulator.d.ts.map +1 -0
- package/dist/core/tools/output-accumulator.js +178 -0
- package/dist/core/tools/output-accumulator.js.map +1 -0
- package/dist/core/tools/path-utils.d.ts +8 -0
- package/dist/core/tools/path-utils.d.ts.map +1 -0
- package/dist/core/tools/path-utils.js +81 -0
- package/dist/core/tools/path-utils.js.map +1 -0
- package/dist/core/tools/read.d.ts +35 -0
- package/dist/core/tools/read.d.ts.map +1 -0
- package/dist/core/tools/read.js +289 -0
- package/dist/core/tools/read.js.map +1 -0
- package/dist/core/tools/render-utils.d.ts +21 -0
- package/dist/core/tools/render-utils.d.ts.map +1 -0
- package/dist/core/tools/render-utils.js +49 -0
- package/dist/core/tools/render-utils.js.map +1 -0
- package/dist/core/tools/tool-definition-wrapper.d.ts +14 -0
- package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -0
- package/dist/core/tools/tool-definition-wrapper.js +36 -0
- package/dist/core/tools/tool-definition-wrapper.js.map +1 -0
- package/dist/core/tools/truncate.d.ts +70 -0
- package/dist/core/tools/truncate.d.ts.map +1 -0
- package/dist/core/tools/truncate.js +205 -0
- package/dist/core/tools/truncate.js.map +1 -0
- package/dist/core/tools/write.d.ts +26 -0
- package/dist/core/tools/write.d.ts.map +1 -0
- package/dist/core/tools/write.js +213 -0
- package/dist/core/tools/write.js.map +1 -0
- package/dist/index.d.ts +28 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +41 -0
- package/dist/index.js.map +1 -0
- package/dist/main.d.ts +12 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +603 -0
- package/dist/main.js.map +1 -0
- package/dist/migrations.d.ts +33 -0
- package/dist/migrations.d.ts.map +1 -0
- package/dist/migrations.js +311 -0
- package/dist/migrations.js.map +1 -0
- package/dist/modes/index.d.ts +9 -0
- package/dist/modes/index.d.ts.map +1 -0
- package/dist/modes/index.js +8 -0
- package/dist/modes/index.js.map +1 -0
- package/dist/modes/interactive/components/armin.d.ts +34 -0
- package/dist/modes/interactive/components/armin.d.ts.map +1 -0
- package/dist/modes/interactive/components/armin.js +333 -0
- package/dist/modes/interactive/components/armin.js.map +1 -0
- package/dist/modes/interactive/components/assistant-message.d.ts +32 -0
- package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/assistant-message.js +209 -0
- package/dist/modes/interactive/components/assistant-message.js.map +1 -0
- package/dist/modes/interactive/components/bash-execution.d.ts +34 -0
- package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -0
- package/dist/modes/interactive/components/bash-execution.js +175 -0
- package/dist/modes/interactive/components/bash-execution.js.map +1 -0
- package/dist/modes/interactive/components/bordered-loader.d.ts +16 -0
- package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -0
- package/dist/modes/interactive/components/bordered-loader.js +54 -0
- package/dist/modes/interactive/components/bordered-loader.js.map +1 -0
- package/dist/modes/interactive/components/branch-summary-message.d.ts +16 -0
- package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/branch-summary-message.js +44 -0
- package/dist/modes/interactive/components/branch-summary-message.js.map +1 -0
- package/dist/modes/interactive/components/compaction-summary-message.d.ts +16 -0
- package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/compaction-summary-message.js +45 -0
- package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -0
- package/dist/modes/interactive/components/config-selector.d.ts +71 -0
- package/dist/modes/interactive/components/config-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/config-selector.js +503 -0
- package/dist/modes/interactive/components/config-selector.js.map +1 -0
- package/dist/modes/interactive/components/countdown-timer.d.ts +14 -0
- package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -0
- package/dist/modes/interactive/components/countdown-timer.js +33 -0
- package/dist/modes/interactive/components/countdown-timer.js.map +1 -0
- package/dist/modes/interactive/components/custom-editor.d.ts +21 -0
- package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -0
- package/dist/modes/interactive/components/custom-editor.js +70 -0
- package/dist/modes/interactive/components/custom-editor.js.map +1 -0
- package/dist/modes/interactive/components/custom-message.d.ts +20 -0
- package/dist/modes/interactive/components/custom-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/custom-message.js +79 -0
- package/dist/modes/interactive/components/custom-message.js.map +1 -0
- package/dist/modes/interactive/components/daxnuts.d.ts +23 -0
- package/dist/modes/interactive/components/daxnuts.d.ts.map +1 -0
- package/dist/modes/interactive/components/daxnuts.js +140 -0
- package/dist/modes/interactive/components/daxnuts.js.map +1 -0
- package/dist/modes/interactive/components/diff.d.ts +12 -0
- package/dist/modes/interactive/components/diff.d.ts.map +1 -0
- package/dist/modes/interactive/components/diff.js +133 -0
- package/dist/modes/interactive/components/diff.js.map +1 -0
- package/dist/modes/interactive/components/dynamic-border.d.ts +15 -0
- package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -0
- package/dist/modes/interactive/components/dynamic-border.js +21 -0
- package/dist/modes/interactive/components/dynamic-border.js.map +1 -0
- package/dist/modes/interactive/components/earendil-announcement.d.ts +5 -0
- package/dist/modes/interactive/components/earendil-announcement.d.ts.map +1 -0
- package/dist/modes/interactive/components/earendil-announcement.js +40 -0
- package/dist/modes/interactive/components/earendil-announcement.js.map +1 -0
- package/dist/modes/interactive/components/extension-editor.d.ts +20 -0
- package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -0
- package/dist/modes/interactive/components/extension-editor.js +111 -0
- package/dist/modes/interactive/components/extension-editor.js.map +1 -0
- package/dist/modes/interactive/components/extension-input.d.ts +23 -0
- package/dist/modes/interactive/components/extension-input.d.ts.map +1 -0
- package/dist/modes/interactive/components/extension-input.js +61 -0
- package/dist/modes/interactive/components/extension-input.js.map +1 -0
- package/dist/modes/interactive/components/extension-selector.d.ts +24 -0
- package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/extension-selector.js +78 -0
- package/dist/modes/interactive/components/extension-selector.js.map +1 -0
- package/dist/modes/interactive/components/favorite-models-selector.d.ts +42 -0
- package/dist/modes/interactive/components/favorite-models-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/favorite-models-selector.js +302 -0
- package/dist/modes/interactive/components/favorite-models-selector.js.map +1 -0
- package/dist/modes/interactive/components/footer.d.ts +27 -0
- package/dist/modes/interactive/components/footer.d.ts.map +1 -0
- package/dist/modes/interactive/components/footer.js +193 -0
- package/dist/modes/interactive/components/footer.js.map +1 -0
- package/dist/modes/interactive/components/index.d.ts +32 -0
- package/dist/modes/interactive/components/index.d.ts.map +1 -0
- package/dist/modes/interactive/components/index.js +33 -0
- package/dist/modes/interactive/components/index.js.map +1 -0
- package/dist/modes/interactive/components/keybinding-hints.d.ts +13 -0
- package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -0
- package/dist/modes/interactive/components/keybinding-hints.js +36 -0
- package/dist/modes/interactive/components/keybinding-hints.js.map +1 -0
- package/dist/modes/interactive/components/login-dialog.d.ts +46 -0
- package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -0
- package/dist/modes/interactive/components/login-dialog.js +160 -0
- package/dist/modes/interactive/components/login-dialog.js.map +1 -0
- package/dist/modes/interactive/components/model-selector.d.ts +48 -0
- package/dist/modes/interactive/components/model-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/model-selector.js +279 -0
- package/dist/modes/interactive/components/model-selector.js.map +1 -0
- package/dist/modes/interactive/components/oauth-selector.d.ts +31 -0
- package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/oauth-selector.js +165 -0
- package/dist/modes/interactive/components/oauth-selector.js.map +1 -0
- package/dist/modes/interactive/components/session-selector-search.d.ts +23 -0
- package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -0
- package/dist/modes/interactive/components/session-selector-search.js +155 -0
- package/dist/modes/interactive/components/session-selector-search.js.map +1 -0
- package/dist/modes/interactive/components/session-selector.d.ts +96 -0
- package/dist/modes/interactive/components/session-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/session-selector.js +861 -0
- package/dist/modes/interactive/components/session-selector.js.map +1 -0
- package/dist/modes/interactive/components/settings-selector.d.ts +67 -0
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/settings-selector.js +376 -0
- package/dist/modes/interactive/components/settings-selector.js.map +1 -0
- package/dist/modes/interactive/components/show-images-selector.d.ts +10 -0
- package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/show-images-selector.js +39 -0
- package/dist/modes/interactive/components/show-images-selector.js.map +1 -0
- package/dist/modes/interactive/components/skill-invocation-message.d.ts +17 -0
- package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/skill-invocation-message.js +47 -0
- package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -0
- package/dist/modes/interactive/components/theme-selector.d.ts +11 -0
- package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/theme-selector.js +50 -0
- package/dist/modes/interactive/components/theme-selector.js.map +1 -0
- package/dist/modes/interactive/components/thinking-selector.d.ts +11 -0
- package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/thinking-selector.js +52 -0
- package/dist/modes/interactive/components/thinking-selector.js.map +1 -0
- package/dist/modes/interactive/components/tool-execution.d.ts +66 -0
- package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -0
- package/dist/modes/interactive/components/tool-execution.js +339 -0
- package/dist/modes/interactive/components/tool-execution.js.map +1 -0
- package/dist/modes/interactive/components/tree-selector.d.ts +89 -0
- package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/tree-selector.js +1102 -0
- package/dist/modes/interactive/components/tree-selector.js.map +1 -0
- package/dist/modes/interactive/components/user-message-selector.d.ts +30 -0
- package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/user-message-selector.js +114 -0
- package/dist/modes/interactive/components/user-message-selector.js.map +1 -0
- package/dist/modes/interactive/components/user-message.d.ts +10 -0
- package/dist/modes/interactive/components/user-message.d.ts.map +1 -0
- package/dist/modes/interactive/components/user-message.js +29 -0
- package/dist/modes/interactive/components/user-message.js.map +1 -0
- package/dist/modes/interactive/components/visual-truncate.d.ts +24 -0
- package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -0
- package/dist/modes/interactive/components/visual-truncate.js +33 -0
- package/dist/modes/interactive/components/visual-truncate.js.map +1 -0
- package/dist/modes/interactive/interactive-mode.d.ts +360 -0
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -0
- package/dist/modes/interactive/interactive-mode.js +4615 -0
- package/dist/modes/interactive/interactive-mode.js.map +1 -0
- package/dist/modes/interactive/startup-tools.d.ts +8 -0
- package/dist/modes/interactive/startup-tools.d.ts.map +1 -0
- package/dist/modes/interactive/startup-tools.js +6 -0
- package/dist/modes/interactive/startup-tools.js.map +1 -0
- package/dist/modes/interactive/theme/theme.d.ts +81 -0
- package/dist/modes/interactive/theme/theme.d.ts.map +1 -0
- package/dist/modes/interactive/theme/theme.js +973 -0
- package/dist/modes/interactive/theme/theme.js.map +1 -0
- package/dist/modes/print-mode.d.ts +28 -0
- package/dist/modes/print-mode.d.ts.map +1 -0
- package/dist/modes/print-mode.js +144 -0
- package/dist/modes/print-mode.js.map +1 -0
- package/dist/modes/rpc/jsonl.d.ts +17 -0
- package/dist/modes/rpc/jsonl.d.ts.map +1 -0
- package/dist/modes/rpc/jsonl.js +49 -0
- package/dist/modes/rpc/jsonl.js.map +1 -0
- package/dist/modes/rpc/rpc-client.d.ts +224 -0
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-client.js +410 -0
- package/dist/modes/rpc/rpc-client.js.map +1 -0
- package/dist/modes/rpc/rpc-mode.d.ts +20 -0
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-mode.js +601 -0
- package/dist/modes/rpc/rpc-mode.js.map +1 -0
- package/dist/modes/rpc/rpc-types.d.ts +419 -0
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -0
- package/dist/modes/rpc/rpc-types.js +8 -0
- package/dist/modes/rpc/rpc-types.js.map +1 -0
- package/dist/package-manager-cli.d.ts +4 -0
- package/dist/package-manager-cli.d.ts.map +1 -0
- package/dist/package-manager-cli.js +460 -0
- package/dist/package-manager-cli.js.map +1 -0
- package/dist/senpi +20 -0
- package/dist/utils/changelog.d.ts +21 -0
- package/dist/utils/changelog.d.ts.map +1 -0
- package/dist/utils/changelog.js +87 -0
- package/dist/utils/changelog.js.map +1 -0
- package/dist/utils/child-process.d.ts +12 -0
- package/dist/utils/child-process.d.ts.map +1 -0
- package/dist/utils/child-process.js +86 -0
- package/dist/utils/child-process.js.map +1 -0
- package/dist/utils/clipboard-image.d.ts +11 -0
- package/dist/utils/clipboard-image.d.ts.map +1 -0
- package/dist/utils/clipboard-image.js +245 -0
- package/dist/utils/clipboard-image.js.map +1 -0
- package/dist/utils/clipboard-native.d.ts +8 -0
- package/dist/utils/clipboard-native.d.ts.map +1 -0
- package/dist/utils/clipboard-native.js +14 -0
- package/dist/utils/clipboard-native.js.map +1 -0
- package/dist/utils/clipboard.d.ts +2 -0
- package/dist/utils/clipboard.d.ts.map +1 -0
- package/dist/utils/clipboard.js +117 -0
- package/dist/utils/clipboard.js.map +1 -0
- package/dist/utils/exif-orientation.d.ts +5 -0
- package/dist/utils/exif-orientation.d.ts.map +1 -0
- package/dist/utils/exif-orientation.js +158 -0
- package/dist/utils/exif-orientation.js.map +1 -0
- package/dist/utils/frontmatter.d.ts +8 -0
- package/dist/utils/frontmatter.d.ts.map +1 -0
- package/dist/utils/frontmatter.js +26 -0
- package/dist/utils/frontmatter.js.map +1 -0
- package/dist/utils/fs-watch.d.ts +5 -0
- package/dist/utils/fs-watch.d.ts.map +1 -0
- package/dist/utils/fs-watch.js +25 -0
- package/dist/utils/fs-watch.js.map +1 -0
- package/dist/utils/git.d.ts +26 -0
- package/dist/utils/git.d.ts.map +1 -0
- package/dist/utils/git.js +163 -0
- package/dist/utils/git.js.map +1 -0
- package/dist/utils/image-convert.d.ts +9 -0
- package/dist/utils/image-convert.d.ts.map +1 -0
- package/dist/utils/image-convert.js +39 -0
- package/dist/utils/image-convert.js.map +1 -0
- package/dist/utils/image-resize.d.ts +36 -0
- package/dist/utils/image-resize.d.ts.map +1 -0
- package/dist/utils/image-resize.js +137 -0
- package/dist/utils/image-resize.js.map +1 -0
- package/dist/utils/mime.d.ts +2 -0
- package/dist/utils/mime.d.ts.map +1 -0
- package/dist/utils/mime.js +26 -0
- package/dist/utils/mime.js.map +1 -0
- package/dist/utils/paths.d.ts +16 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/paths.js +50 -0
- package/dist/utils/paths.js.map +1 -0
- package/dist/utils/photon.d.ts +21 -0
- package/dist/utils/photon.d.ts.map +1 -0
- package/dist/utils/photon.js +121 -0
- package/dist/utils/photon.js.map +1 -0
- package/dist/utils/pi-user-agent.d.ts +2 -0
- package/dist/utils/pi-user-agent.d.ts.map +1 -0
- package/dist/utils/pi-user-agent.js +6 -0
- package/dist/utils/pi-user-agent.js.map +1 -0
- package/dist/utils/shell.d.ts +30 -0
- package/dist/utils/shell.d.ts.map +1 -0
- package/dist/utils/shell.js +190 -0
- package/dist/utils/shell.js.map +1 -0
- package/dist/utils/sleep.d.ts +5 -0
- package/dist/utils/sleep.d.ts.map +1 -0
- package/dist/utils/sleep.js +17 -0
- package/dist/utils/sleep.js.map +1 -0
- package/dist/utils/tools-manager.d.ts +3 -0
- package/dist/utils/tools-manager.d.ts.map +1 -0
- package/dist/utils/tools-manager.js +256 -0
- package/dist/utils/tools-manager.js.map +1 -0
- package/dist/utils/version-check.d.ts +14 -0
- package/dist/utils/version-check.d.ts.map +1 -0
- package/dist/utils/version-check.js +78 -0
- package/dist/utils/version-check.js.map +1 -0
- package/docs/agents.md +348 -0
- package/docs/compaction-guide.md +240 -0
- package/docs/compaction.md +394 -0
- package/docs/custom-provider.md +646 -0
- package/docs/development.md +80 -0
- package/docs/docs.json +148 -0
- package/docs/extensions.md +2596 -0
- package/docs/images/doom-extension.png +0 -0
- package/docs/images/exy.png +0 -0
- package/docs/images/interactive-mode.png +0 -0
- package/docs/images/tree-view.png +0 -0
- package/docs/index.md +66 -0
- package/docs/json.md +82 -0
- package/docs/keybindings.md +197 -0
- package/docs/models.md +474 -0
- package/docs/packages.md +223 -0
- package/docs/prompt-templates.md +88 -0
- package/docs/providers.md +243 -0
- package/docs/quickstart.md +142 -0
- package/docs/rpc.md +1407 -0
- package/docs/sdk.md +1149 -0
- package/docs/session-format.md +412 -0
- package/docs/sessions.md +137 -0
- package/docs/settings.md +330 -0
- package/docs/shell-aliases.md +13 -0
- package/docs/skills.md +232 -0
- package/docs/terminal-setup.md +106 -0
- package/docs/termux.md +127 -0
- package/docs/themes.md +295 -0
- package/docs/tmux.md +61 -0
- package/docs/tui.md +918 -0
- package/docs/usage.md +277 -0
- package/docs/windows.md +17 -0
- package/examples/README.md +25 -0
- package/examples/extensions/README.md +208 -0
- package/examples/extensions/auto-commit-on-exit.ts +49 -0
- package/examples/extensions/bash-spawn-hook.ts +30 -0
- package/examples/extensions/bookmark.ts +50 -0
- package/examples/extensions/border-status-editor.ts +150 -0
- package/examples/extensions/built-in-tool-renderer.ts +249 -0
- package/examples/extensions/claude-rules.ts +86 -0
- package/examples/extensions/commands.ts +72 -0
- package/examples/extensions/confirm-destructive.ts +59 -0
- package/examples/extensions/custom-compaction.ts +127 -0
- package/examples/extensions/custom-footer.ts +64 -0
- package/examples/extensions/custom-header.ts +73 -0
- package/examples/extensions/custom-provider-anthropic/index.ts +604 -0
- package/examples/extensions/custom-provider-anthropic/package-lock.json +24 -0
- package/examples/extensions/custom-provider-anthropic/package.json +19 -0
- package/examples/extensions/custom-provider-gitlab-duo/index.ts +349 -0
- package/examples/extensions/custom-provider-gitlab-duo/package.json +16 -0
- package/examples/extensions/custom-provider-gitlab-duo/test.ts +82 -0
- package/examples/extensions/dirty-repo-guard.ts +56 -0
- package/examples/extensions/doom-overlay/README.md +46 -0
- package/examples/extensions/doom-overlay/doom/build/doom.js +21 -0
- package/examples/extensions/doom-overlay/doom/build/doom.wasm +0 -0
- package/examples/extensions/doom-overlay/doom/build.sh +152 -0
- package/examples/extensions/doom-overlay/doom/doomgeneric_pi.c +72 -0
- package/examples/extensions/doom-overlay/doom-component.ts +132 -0
- package/examples/extensions/doom-overlay/doom-engine.ts +173 -0
- package/examples/extensions/doom-overlay/doom-keys.ts +104 -0
- package/examples/extensions/doom-overlay/index.ts +74 -0
- package/examples/extensions/doom-overlay/wad-finder.ts +51 -0
- package/examples/extensions/dynamic-resources/SKILL.md +8 -0
- package/examples/extensions/dynamic-resources/dynamic.json +79 -0
- package/examples/extensions/dynamic-resources/dynamic.md +5 -0
- package/examples/extensions/dynamic-resources/index.ts +15 -0
- package/examples/extensions/dynamic-tools.ts +74 -0
- package/examples/extensions/event-bus.ts +43 -0
- package/examples/extensions/file-trigger.ts +41 -0
- package/examples/extensions/git-checkpoint.ts +53 -0
- package/examples/extensions/github-issue-autocomplete.ts +185 -0
- package/examples/extensions/handoff.ts +191 -0
- package/examples/extensions/hello.ts +26 -0
- package/examples/extensions/hidden-thinking-label.ts +53 -0
- package/examples/extensions/inline-bash.ts +94 -0
- package/examples/extensions/input-transform.ts +43 -0
- package/examples/extensions/interactive-shell.ts +196 -0
- package/examples/extensions/mac-system-theme.ts +47 -0
- package/examples/extensions/message-renderer.ts +59 -0
- package/examples/extensions/minimal-mode.ts +426 -0
- package/examples/extensions/modal-editor.ts +85 -0
- package/examples/extensions/model-status.ts +31 -0
- package/examples/extensions/notify.ts +55 -0
- package/examples/extensions/overlay-qa-tests.ts +1348 -0
- package/examples/extensions/overlay-test.ts +150 -0
- package/examples/extensions/permission-gate.ts +34 -0
- package/examples/extensions/pirate.ts +47 -0
- package/examples/extensions/plan-mode/README.md +65 -0
- package/examples/extensions/plan-mode/index.ts +340 -0
- package/examples/extensions/plan-mode/utils.ts +168 -0
- package/examples/extensions/preset.ts +436 -0
- package/examples/extensions/prompt-customizer.ts +97 -0
- package/examples/extensions/protected-paths.ts +30 -0
- package/examples/extensions/provider-payload.ts +18 -0
- package/examples/extensions/qna.ts +122 -0
- package/examples/extensions/question.ts +264 -0
- package/examples/extensions/questionnaire.ts +427 -0
- package/examples/extensions/rainbow-editor.ts +88 -0
- package/examples/extensions/reload-runtime.ts +37 -0
- package/examples/extensions/rpc-demo.ts +118 -0
- package/examples/extensions/sandbox/index.ts +321 -0
- package/examples/extensions/sandbox/package-lock.json +92 -0
- package/examples/extensions/sandbox/package.json +19 -0
- package/examples/extensions/send-user-message.ts +97 -0
- package/examples/extensions/session-name.ts +27 -0
- package/examples/extensions/shutdown-command.ts +63 -0
- package/examples/extensions/snake.ts +343 -0
- package/examples/extensions/space-invaders.ts +560 -0
- package/examples/extensions/ssh.ts +220 -0
- package/examples/extensions/status-line.ts +32 -0
- package/examples/extensions/structured-output.ts +65 -0
- package/examples/extensions/subagent/README.md +172 -0
- package/examples/extensions/subagent/agents/planner.md +37 -0
- package/examples/extensions/subagent/agents/reviewer.md +35 -0
- package/examples/extensions/subagent/agents/scout.md +50 -0
- package/examples/extensions/subagent/agents/worker.md +24 -0
- package/examples/extensions/subagent/agents.ts +126 -0
- package/examples/extensions/subagent/index.ts +987 -0
- package/examples/extensions/subagent/prompts/implement-and-review.md +10 -0
- package/examples/extensions/subagent/prompts/implement.md +10 -0
- package/examples/extensions/subagent/prompts/scout-and-plan.md +9 -0
- package/examples/extensions/summarize.ts +206 -0
- package/examples/extensions/system-prompt-header.ts +17 -0
- package/examples/extensions/tic-tac-toe.ts +1008 -0
- package/examples/extensions/timed-confirm.ts +70 -0
- package/examples/extensions/titlebar-spinner.ts +58 -0
- package/examples/extensions/todo.ts +297 -0
- package/examples/extensions/tool-override.ts +144 -0
- package/examples/extensions/tools.ts +141 -0
- package/examples/extensions/trigger-compact.ts +50 -0
- package/examples/extensions/truncated-tool.ts +195 -0
- package/examples/extensions/widget-placement.ts +9 -0
- package/examples/extensions/with-deps/index.ts +32 -0
- package/examples/extensions/with-deps/package-lock.json +31 -0
- package/examples/extensions/with-deps/package.json +22 -0
- package/examples/extensions/working-indicator.ts +123 -0
- package/examples/extensions/working-message-test.ts +25 -0
- package/examples/rpc-extension-ui.ts +632 -0
- package/examples/sdk/01-minimal.ts +22 -0
- package/examples/sdk/02-custom-model.ts +49 -0
- package/examples/sdk/03-custom-prompt.ts +72 -0
- package/examples/sdk/04-skills.ts +55 -0
- package/examples/sdk/05-tools.ts +44 -0
- package/examples/sdk/06-extensions.ts +90 -0
- package/examples/sdk/07-context-files.ts +42 -0
- package/examples/sdk/08-prompt-templates.ts +51 -0
- package/examples/sdk/09-api-keys-and-oauth.ts +48 -0
- package/examples/sdk/10-settings.ts +53 -0
- package/examples/sdk/11-sessions.ts +48 -0
- package/examples/sdk/12-full-control.ts +73 -0
- package/examples/sdk/13-session-runtime.ts +67 -0
- package/examples/sdk/README.md +147 -0
- package/package.json +105 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wildcard.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/agent-system/wildcard.ts"],"names":[],"mappings":"AAAA,yBAAiB,QAAQ,CAAC,CAAC;IAC1B,SAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAoD7D;CACD","sourcesContent":["export namespace Wildcard {\n\texport function match(value: string, pattern: string): boolean {\n\t\tif (value === \"\" && pattern === \"\") {\n\t\t\treturn true;\n\t\t}\n\t\tif (pattern === \"\") {\n\t\t\treturn false;\n\t\t}\n\t\tif (value === \"\" && pattern === \"*\") {\n\t\t\treturn true;\n\t\t}\n\t\tif (value === \"\") {\n\t\t\tfor (let i = 0; i < pattern.length; i++) {\n\t\t\t\tif (pattern[i] !== \"*\") {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\n\t\tlet valueIdx = 0;\n\t\tlet patternIdx = 0;\n\t\tlet starIdx = -1;\n\t\tlet matchIdx = 0;\n\n\t\twhile (valueIdx < value.length) {\n\t\t\tconst patternChar = pattern[patternIdx];\n\t\t\tconst valueChar = value[valueIdx];\n\n\t\t\tif (patternChar === \"?\") {\n\t\t\t\tvalueIdx++;\n\t\t\t\tpatternIdx++;\n\t\t\t} else if (patternChar === \"*\") {\n\t\t\t\tstarIdx = patternIdx;\n\t\t\t\tmatchIdx = valueIdx;\n\t\t\t\tpatternIdx++;\n\t\t\t} else if (patternChar === valueChar) {\n\t\t\t\tvalueIdx++;\n\t\t\t\tpatternIdx++;\n\t\t\t} else if (starIdx >= 0) {\n\t\t\t\tpatternIdx = starIdx + 1;\n\t\t\t\tmatchIdx++;\n\t\t\t\tvalueIdx = matchIdx;\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\twhile (patternIdx < pattern.length && pattern[patternIdx] === \"*\") {\n\t\t\tpatternIdx++;\n\t\t}\n\n\t\treturn patternIdx === pattern.length;\n\t}\n}\n"]}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
export { Wildcard };
|
|
2
|
+
var Wildcard;
|
|
3
|
+
(function (Wildcard) {
|
|
4
|
+
function match(value, pattern) {
|
|
5
|
+
if (value === "" && pattern === "") {
|
|
6
|
+
return true;
|
|
7
|
+
}
|
|
8
|
+
if (pattern === "") {
|
|
9
|
+
return false;
|
|
10
|
+
}
|
|
11
|
+
if (value === "" && pattern === "*") {
|
|
12
|
+
return true;
|
|
13
|
+
}
|
|
14
|
+
if (value === "") {
|
|
15
|
+
for (let i = 0; i < pattern.length; i++) {
|
|
16
|
+
if (pattern[i] !== "*") {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
let valueIdx = 0;
|
|
23
|
+
let patternIdx = 0;
|
|
24
|
+
let starIdx = -1;
|
|
25
|
+
let matchIdx = 0;
|
|
26
|
+
while (valueIdx < value.length) {
|
|
27
|
+
const patternChar = pattern[patternIdx];
|
|
28
|
+
const valueChar = value[valueIdx];
|
|
29
|
+
if (patternChar === "?") {
|
|
30
|
+
valueIdx++;
|
|
31
|
+
patternIdx++;
|
|
32
|
+
}
|
|
33
|
+
else if (patternChar === "*") {
|
|
34
|
+
starIdx = patternIdx;
|
|
35
|
+
matchIdx = valueIdx;
|
|
36
|
+
patternIdx++;
|
|
37
|
+
}
|
|
38
|
+
else if (patternChar === valueChar) {
|
|
39
|
+
valueIdx++;
|
|
40
|
+
patternIdx++;
|
|
41
|
+
}
|
|
42
|
+
else if (starIdx >= 0) {
|
|
43
|
+
patternIdx = starIdx + 1;
|
|
44
|
+
matchIdx++;
|
|
45
|
+
valueIdx = matchIdx;
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
while (patternIdx < pattern.length && pattern[patternIdx] === "*") {
|
|
52
|
+
patternIdx++;
|
|
53
|
+
}
|
|
54
|
+
return patternIdx === pattern.length;
|
|
55
|
+
}
|
|
56
|
+
Wildcard.match = match;
|
|
57
|
+
})(Wildcard || (Wildcard = {}));
|
|
58
|
+
//# sourceMappingURL=wildcard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wildcard.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/agent-system/wildcard.ts"],"names":[],"mappings":"SAAiB,QAAQ;AAAzB,IAAiB,QAsDhB;AAtDD,WAAiB,QAAQ,EAAC;IACzB,SAAgB,KAAK,CAAC,KAAa,EAAE,OAAe,EAAW;QAC9D,IAAI,KAAK,KAAK,EAAE,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;YACpC,OAAO,IAAI,CAAC;QACb,CAAC;QACD,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;YACpB,OAAO,KAAK,CAAC;QACd,CAAC;QACD,IAAI,KAAK,KAAK,EAAE,IAAI,OAAO,KAAK,GAAG,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC;QACb,CAAC;QACD,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;YAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACzC,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;oBACxB,OAAO,KAAK,CAAC;gBACd,CAAC;YACF,CAAC;YACD,OAAO,IAAI,CAAC;QACb,CAAC;QAED,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC;QACjB,IAAI,QAAQ,GAAG,CAAC,CAAC;QAEjB,OAAO,QAAQ,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;YAChC,MAAM,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;YACxC,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;YAElC,IAAI,WAAW,KAAK,GAAG,EAAE,CAAC;gBACzB,QAAQ,EAAE,CAAC;gBACX,UAAU,EAAE,CAAC;YACd,CAAC;iBAAM,IAAI,WAAW,KAAK,GAAG,EAAE,CAAC;gBAChC,OAAO,GAAG,UAAU,CAAC;gBACrB,QAAQ,GAAG,QAAQ,CAAC;gBACpB,UAAU,EAAE,CAAC;YACd,CAAC;iBAAM,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;gBACtC,QAAQ,EAAE,CAAC;gBACX,UAAU,EAAE,CAAC;YACd,CAAC;iBAAM,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;gBACzB,UAAU,GAAG,OAAO,GAAG,CAAC,CAAC;gBACzB,QAAQ,EAAE,CAAC;gBACX,QAAQ,GAAG,QAAQ,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACP,OAAO,KAAK,CAAC;YACd,CAAC;QACF,CAAC;QAED,OAAO,UAAU,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,GAAG,EAAE,CAAC;YACnE,UAAU,EAAE,CAAC;QACd,CAAC;QAED,OAAO,UAAU,KAAK,OAAO,CAAC,MAAM,CAAC;IAAA,CACrC;IApDe,SAAA,KAAK,QAoDpB,CAAA;AAAA,CACD,EAtDgB,QAAQ,KAAR,QAAQ,QAsDxB","sourcesContent":["export namespace Wildcard {\n\texport function match(value: string, pattern: string): boolean {\n\t\tif (value === \"\" && pattern === \"\") {\n\t\t\treturn true;\n\t\t}\n\t\tif (pattern === \"\") {\n\t\t\treturn false;\n\t\t}\n\t\tif (value === \"\" && pattern === \"*\") {\n\t\t\treturn true;\n\t\t}\n\t\tif (value === \"\") {\n\t\t\tfor (let i = 0; i < pattern.length; i++) {\n\t\t\t\tif (pattern[i] !== \"*\") {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\n\t\tlet valueIdx = 0;\n\t\tlet patternIdx = 0;\n\t\tlet starIdx = -1;\n\t\tlet matchIdx = 0;\n\n\t\twhile (valueIdx < value.length) {\n\t\t\tconst patternChar = pattern[patternIdx];\n\t\t\tconst valueChar = value[valueIdx];\n\n\t\t\tif (patternChar === \"?\") {\n\t\t\t\tvalueIdx++;\n\t\t\t\tpatternIdx++;\n\t\t\t} else if (patternChar === \"*\") {\n\t\t\t\tstarIdx = patternIdx;\n\t\t\t\tmatchIdx = valueIdx;\n\t\t\t\tpatternIdx++;\n\t\t\t} else if (patternChar === valueChar) {\n\t\t\t\tvalueIdx++;\n\t\t\t\tpatternIdx++;\n\t\t\t} else if (starIdx >= 0) {\n\t\t\t\tpatternIdx = starIdx + 1;\n\t\t\t\tmatchIdx++;\n\t\t\t\tvalueIdx = matchIdx;\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\twhile (patternIdx < pattern.length && pattern[patternIdx] === \"*\") {\n\t\t\tpatternIdx++;\n\t\t}\n\n\t\treturn patternIdx === pattern.length;\n\t}\n}\n"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Api } from "@earendil-works/pi-ai";
|
|
2
|
+
import type { ExtensionAPI } from "../../types.js";
|
|
3
|
+
export declare function isAnthropicBashEnabled(): boolean;
|
|
4
|
+
export declare function addAnthropicBashToPayload(api: Api | undefined, payload: unknown): unknown;
|
|
5
|
+
export declare const ANTHROPIC_BASH_SECTION = "\n## Bash Tool\n\nThe native bash tool is available in this session. The model has direct\nshell access via the bash_20250124 tool. The session is stateless \u2014 each\ncommand runs independently. The 'restart' parameter is accepted but has\nno effect (no persistent shell session). Standard senpi safety\nguardrails still apply.\n";
|
|
6
|
+
export default function anthropicBashExtension(pi: ExtensionAPI): void;
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/anthropic-bash/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAiCnD,wBAAgB,sBAAsB,IAAI,OAAO,CAQhD;AAED,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,GAAG,GAAG,SAAS,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAwBzF;AAED,eAAO,MAAM,sBAAsB,iVAQlC,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,sBAAsB,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAkBrE","sourcesContent":["import type { Api } from \"@earendil-works/pi-ai\";\nimport type { ExtensionAPI } from \"../../types.js\";\n\ntype ToolDefinition = Record<string, unknown>;\n\nconst ANTHROPIC_BASH_ENV = \"PI_ANTHROPIC_BASH\";\nconst ANTHROPIC_NATIVE_BASH_TOOL = {\n\ttype: \"bash_20250124\",\n\tname: \"bash\",\n} as const;\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null;\n}\n\nfunction isBashType(value: unknown): value is string {\n\treturn typeof value === \"string\" && value.startsWith(\"bash_\");\n}\n\nfunction sanitizeTools(tools: unknown[]): ToolDefinition[] {\n\tconst sanitizedTools: ToolDefinition[] = [];\n\tfor (const tool of tools) {\n\t\tif (!isRecord(tool)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst shouldStripFunctionVariant = tool.name === \"bash\" && !isBashType(tool.type);\n\t\tif (!shouldStripFunctionVariant) {\n\t\t\tsanitizedTools.push(tool);\n\t\t}\n\t}\n\treturn sanitizedTools;\n}\n\nexport function isAnthropicBashEnabled(): boolean {\n\tconst value = process.env[ANTHROPIC_BASH_ENV];\n\tif (!value) {\n\t\treturn false;\n\t}\n\n\tconst normalized = value.trim().toLowerCase();\n\treturn normalized === \"1\" || normalized === \"true\" || normalized === \"yes\" || normalized === \"on\";\n}\n\nexport function addAnthropicBashToPayload(api: Api | undefined, payload: unknown): unknown {\n\tif (api !== \"anthropic-messages\") {\n\t\treturn payload;\n\t}\n\n\tif (!isAnthropicBashEnabled()) {\n\t\treturn payload;\n\t}\n\n\tif (!isRecord(payload)) {\n\t\treturn payload;\n\t}\n\n\tconst tools = Array.isArray(payload.tools) ? payload.tools : [];\n\tconst sanitizedTools = sanitizeTools(tools);\n\tconst hasNativeBash = sanitizedTools.some((tool) => isBashType(tool.type));\n\tif (!hasNativeBash) {\n\t\tsanitizedTools.push(ANTHROPIC_NATIVE_BASH_TOOL);\n\t}\n\n\treturn {\n\t\t...payload,\n\t\ttools: sanitizedTools,\n\t};\n}\n\nexport const ANTHROPIC_BASH_SECTION = `\n## Bash Tool\n\nThe native bash tool is available in this session. The model has direct\nshell access via the bash_20250124 tool. The session is stateless — each\ncommand runs independently. The 'restart' parameter is accepted but has\nno effect (no persistent shell session). Standard senpi safety\nguardrails still apply.\n`;\n\nexport default function anthropicBashExtension(pi: ExtensionAPI): void {\n\tpi.on(\"before_provider_request\", (event, ctx) => {\n\t\treturn addAnthropicBashToPayload(ctx.model?.api, event.payload);\n\t});\n\n\tpi.on(\"before_agent_start\", async (event, ctx) => {\n\t\tif (ctx.model?.api !== \"anthropic-messages\") {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (!isAnthropicBashEnabled()) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn {\n\t\t\tsystemPrompt: `${event.systemPrompt}\\n${ANTHROPIC_BASH_SECTION}`,\n\t\t};\n\t});\n}\n"]}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
const ANTHROPIC_BASH_ENV = "PI_ANTHROPIC_BASH";
|
|
2
|
+
const ANTHROPIC_NATIVE_BASH_TOOL = {
|
|
3
|
+
type: "bash_20250124",
|
|
4
|
+
name: "bash",
|
|
5
|
+
};
|
|
6
|
+
function isRecord(value) {
|
|
7
|
+
return typeof value === "object" && value !== null;
|
|
8
|
+
}
|
|
9
|
+
function isBashType(value) {
|
|
10
|
+
return typeof value === "string" && value.startsWith("bash_");
|
|
11
|
+
}
|
|
12
|
+
function sanitizeTools(tools) {
|
|
13
|
+
const sanitizedTools = [];
|
|
14
|
+
for (const tool of tools) {
|
|
15
|
+
if (!isRecord(tool)) {
|
|
16
|
+
continue;
|
|
17
|
+
}
|
|
18
|
+
const shouldStripFunctionVariant = tool.name === "bash" && !isBashType(tool.type);
|
|
19
|
+
if (!shouldStripFunctionVariant) {
|
|
20
|
+
sanitizedTools.push(tool);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return sanitizedTools;
|
|
24
|
+
}
|
|
25
|
+
export function isAnthropicBashEnabled() {
|
|
26
|
+
const value = process.env[ANTHROPIC_BASH_ENV];
|
|
27
|
+
if (!value) {
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
const normalized = value.trim().toLowerCase();
|
|
31
|
+
return normalized === "1" || normalized === "true" || normalized === "yes" || normalized === "on";
|
|
32
|
+
}
|
|
33
|
+
export function addAnthropicBashToPayload(api, payload) {
|
|
34
|
+
if (api !== "anthropic-messages") {
|
|
35
|
+
return payload;
|
|
36
|
+
}
|
|
37
|
+
if (!isAnthropicBashEnabled()) {
|
|
38
|
+
return payload;
|
|
39
|
+
}
|
|
40
|
+
if (!isRecord(payload)) {
|
|
41
|
+
return payload;
|
|
42
|
+
}
|
|
43
|
+
const tools = Array.isArray(payload.tools) ? payload.tools : [];
|
|
44
|
+
const sanitizedTools = sanitizeTools(tools);
|
|
45
|
+
const hasNativeBash = sanitizedTools.some((tool) => isBashType(tool.type));
|
|
46
|
+
if (!hasNativeBash) {
|
|
47
|
+
sanitizedTools.push(ANTHROPIC_NATIVE_BASH_TOOL);
|
|
48
|
+
}
|
|
49
|
+
return {
|
|
50
|
+
...payload,
|
|
51
|
+
tools: sanitizedTools,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
export const ANTHROPIC_BASH_SECTION = `
|
|
55
|
+
## Bash Tool
|
|
56
|
+
|
|
57
|
+
The native bash tool is available in this session. The model has direct
|
|
58
|
+
shell access via the bash_20250124 tool. The session is stateless — each
|
|
59
|
+
command runs independently. The 'restart' parameter is accepted but has
|
|
60
|
+
no effect (no persistent shell session). Standard senpi safety
|
|
61
|
+
guardrails still apply.
|
|
62
|
+
`;
|
|
63
|
+
export default function anthropicBashExtension(pi) {
|
|
64
|
+
pi.on("before_provider_request", (event, ctx) => {
|
|
65
|
+
return addAnthropicBashToPayload(ctx.model?.api, event.payload);
|
|
66
|
+
});
|
|
67
|
+
pi.on("before_agent_start", async (event, ctx) => {
|
|
68
|
+
if (ctx.model?.api !== "anthropic-messages") {
|
|
69
|
+
return undefined;
|
|
70
|
+
}
|
|
71
|
+
if (!isAnthropicBashEnabled()) {
|
|
72
|
+
return undefined;
|
|
73
|
+
}
|
|
74
|
+
return {
|
|
75
|
+
systemPrompt: `${event.systemPrompt}\n${ANTHROPIC_BASH_SECTION}`,
|
|
76
|
+
};
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/anthropic-bash/index.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Api } from \"@earendil-works/pi-ai\";\nimport type { ExtensionAPI } from \"../../types.js\";\n\ntype ToolDefinition = Record<string, unknown>;\n\nconst ANTHROPIC_BASH_ENV = \"PI_ANTHROPIC_BASH\";\nconst ANTHROPIC_NATIVE_BASH_TOOL = {\n\ttype: \"bash_20250124\",\n\tname: \"bash\",\n} as const;\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null;\n}\n\nfunction isBashType(value: unknown): value is string {\n\treturn typeof value === \"string\" && value.startsWith(\"bash_\");\n}\n\nfunction sanitizeTools(tools: unknown[]): ToolDefinition[] {\n\tconst sanitizedTools: ToolDefinition[] = [];\n\tfor (const tool of tools) {\n\t\tif (!isRecord(tool)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst shouldStripFunctionVariant = tool.name === \"bash\" && !isBashType(tool.type);\n\t\tif (!shouldStripFunctionVariant) {\n\t\t\tsanitizedTools.push(tool);\n\t\t}\n\t}\n\treturn sanitizedTools;\n}\n\nexport function isAnthropicBashEnabled(): boolean {\n\tconst value = process.env[ANTHROPIC_BASH_ENV];\n\tif (!value) {\n\t\treturn false;\n\t}\n\n\tconst normalized = value.trim().toLowerCase();\n\treturn normalized === \"1\" || normalized === \"true\" || normalized === \"yes\" || normalized === \"on\";\n}\n\nexport function addAnthropicBashToPayload(api: Api | undefined, payload: unknown): unknown {\n\tif (api !== \"anthropic-messages\") {\n\t\treturn payload;\n\t}\n\n\tif (!isAnthropicBashEnabled()) {\n\t\treturn payload;\n\t}\n\n\tif (!isRecord(payload)) {\n\t\treturn payload;\n\t}\n\n\tconst tools = Array.isArray(payload.tools) ? payload.tools : [];\n\tconst sanitizedTools = sanitizeTools(tools);\n\tconst hasNativeBash = sanitizedTools.some((tool) => isBashType(tool.type));\n\tif (!hasNativeBash) {\n\t\tsanitizedTools.push(ANTHROPIC_NATIVE_BASH_TOOL);\n\t}\n\n\treturn {\n\t\t...payload,\n\t\ttools: sanitizedTools,\n\t};\n}\n\nexport const ANTHROPIC_BASH_SECTION = `\n## Bash Tool\n\nThe native bash tool is available in this session. The model has direct\nshell access via the bash_20250124 tool. The session is stateless — each\ncommand runs independently. The 'restart' parameter is accepted but has\nno effect (no persistent shell session). Standard senpi safety\nguardrails still apply.\n`;\n\nexport default function anthropicBashExtension(pi: ExtensionAPI): void {\n\tpi.on(\"before_provider_request\", (event, ctx) => {\n\t\treturn addAnthropicBashToPayload(ctx.model?.api, event.payload);\n\t});\n\n\tpi.on(\"before_agent_start\", async (event, ctx) => {\n\t\tif (ctx.model?.api !== \"anthropic-messages\") {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (!isAnthropicBashEnabled()) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn {\n\t\t\tsystemPrompt: `${event.systemPrompt}\\n${ANTHROPIC_BASH_SECTION}`,\n\t\t};\n\t});\n}\n"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Api } from "@earendil-works/pi-ai";
|
|
2
|
+
import type { ExtensionAPI } from "../../types.js";
|
|
3
|
+
export declare function isCodeExecutionEnabled(): boolean;
|
|
4
|
+
export declare function addAnthropicCodeExecutionToPayload(api: Api | undefined, payload: unknown): unknown;
|
|
5
|
+
export declare const ANTHROPIC_CODE_EXECUTION_SECTION = "\n## Code Execution\n\nThe native code_execution tool is available in this session. The model\nruns Python (and shell commands via the bash subtool) inside an\nAnthropic-managed sandbox container. Prefer code_execution for\nnumerical work, file analysis, and one-off computations when explicit\nresults are needed.\n";
|
|
6
|
+
export default function anthropicCodeExecutionExtension(pi: ExtensionAPI): void;
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/anthropic-code-execution/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAiCnD,wBAAgB,sBAAsB,IAAI,OAAO,CAQhD;AAED,wBAAgB,kCAAkC,CAAC,GAAG,EAAE,GAAG,GAAG,SAAS,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAwBlG;AAED,eAAO,MAAM,gCAAgC,iUAQ5C,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,+BAA+B,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CAkB9E","sourcesContent":["import type { Api } from \"@earendil-works/pi-ai\";\nimport type { ExtensionAPI } from \"../../types.js\";\n\ntype ToolDefinition = Record<string, unknown>;\n\nconst CODE_EXECUTION_ENV = \"PI_ANTHROPIC_CODE_EXECUTION\";\nconst CODE_EXECUTION_TOOL = {\n\ttype: \"code_execution_20250825\",\n\tname: \"code_execution\",\n} as const;\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null;\n}\n\nfunction isCodeExecutionType(value: unknown): value is string {\n\treturn typeof value === \"string\" && value.startsWith(\"code_execution_\");\n}\n\nfunction sanitizeTools(tools: unknown[]): ToolDefinition[] {\n\tconst sanitizedTools: ToolDefinition[] = [];\n\tfor (const tool of tools) {\n\t\tif (!isRecord(tool)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst shouldStripFunctionVariant = tool.name === \"code_execution\" && !isCodeExecutionType(tool.type);\n\t\tif (!shouldStripFunctionVariant) {\n\t\t\tsanitizedTools.push(tool);\n\t\t}\n\t}\n\treturn sanitizedTools;\n}\n\nexport function isCodeExecutionEnabled(): boolean {\n\tconst value = process.env[CODE_EXECUTION_ENV];\n\tif (!value) {\n\t\treturn false;\n\t}\n\n\tconst normalized = value.trim().toLowerCase();\n\treturn normalized === \"1\" || normalized === \"true\" || normalized === \"yes\" || normalized === \"on\";\n}\n\nexport function addAnthropicCodeExecutionToPayload(api: Api | undefined, payload: unknown): unknown {\n\tif (api !== \"anthropic-messages\") {\n\t\treturn payload;\n\t}\n\n\tif (!isCodeExecutionEnabled()) {\n\t\treturn payload;\n\t}\n\n\tif (!isRecord(payload)) {\n\t\treturn payload;\n\t}\n\n\tconst tools = Array.isArray(payload.tools) ? payload.tools : [];\n\tconst sanitizedTools = sanitizeTools(tools);\n\tconst hasNativeCodeExecution = sanitizedTools.some((tool) => isCodeExecutionType(tool.type));\n\tif (!hasNativeCodeExecution) {\n\t\tsanitizedTools.push(CODE_EXECUTION_TOOL);\n\t}\n\n\treturn {\n\t\t...payload,\n\t\ttools: sanitizedTools,\n\t};\n}\n\nexport const ANTHROPIC_CODE_EXECUTION_SECTION = `\n## Code Execution\n\nThe native code_execution tool is available in this session. The model\nruns Python (and shell commands via the bash subtool) inside an\nAnthropic-managed sandbox container. Prefer code_execution for\nnumerical work, file analysis, and one-off computations when explicit\nresults are needed.\n`;\n\nexport default function anthropicCodeExecutionExtension(pi: ExtensionAPI): void {\n\tpi.on(\"before_provider_request\", (event, ctx) => {\n\t\treturn addAnthropicCodeExecutionToPayload(ctx.model?.api, event.payload);\n\t});\n\n\tpi.on(\"before_agent_start\", async (event, ctx) => {\n\t\tif (ctx.model?.api !== \"anthropic-messages\") {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (!isCodeExecutionEnabled()) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn {\n\t\t\tsystemPrompt: `${event.systemPrompt}\\n${ANTHROPIC_CODE_EXECUTION_SECTION}`,\n\t\t};\n\t});\n}\n"]}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
const CODE_EXECUTION_ENV = "PI_ANTHROPIC_CODE_EXECUTION";
|
|
2
|
+
const CODE_EXECUTION_TOOL = {
|
|
3
|
+
type: "code_execution_20250825",
|
|
4
|
+
name: "code_execution",
|
|
5
|
+
};
|
|
6
|
+
function isRecord(value) {
|
|
7
|
+
return typeof value === "object" && value !== null;
|
|
8
|
+
}
|
|
9
|
+
function isCodeExecutionType(value) {
|
|
10
|
+
return typeof value === "string" && value.startsWith("code_execution_");
|
|
11
|
+
}
|
|
12
|
+
function sanitizeTools(tools) {
|
|
13
|
+
const sanitizedTools = [];
|
|
14
|
+
for (const tool of tools) {
|
|
15
|
+
if (!isRecord(tool)) {
|
|
16
|
+
continue;
|
|
17
|
+
}
|
|
18
|
+
const shouldStripFunctionVariant = tool.name === "code_execution" && !isCodeExecutionType(tool.type);
|
|
19
|
+
if (!shouldStripFunctionVariant) {
|
|
20
|
+
sanitizedTools.push(tool);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return sanitizedTools;
|
|
24
|
+
}
|
|
25
|
+
export function isCodeExecutionEnabled() {
|
|
26
|
+
const value = process.env[CODE_EXECUTION_ENV];
|
|
27
|
+
if (!value) {
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
const normalized = value.trim().toLowerCase();
|
|
31
|
+
return normalized === "1" || normalized === "true" || normalized === "yes" || normalized === "on";
|
|
32
|
+
}
|
|
33
|
+
export function addAnthropicCodeExecutionToPayload(api, payload) {
|
|
34
|
+
if (api !== "anthropic-messages") {
|
|
35
|
+
return payload;
|
|
36
|
+
}
|
|
37
|
+
if (!isCodeExecutionEnabled()) {
|
|
38
|
+
return payload;
|
|
39
|
+
}
|
|
40
|
+
if (!isRecord(payload)) {
|
|
41
|
+
return payload;
|
|
42
|
+
}
|
|
43
|
+
const tools = Array.isArray(payload.tools) ? payload.tools : [];
|
|
44
|
+
const sanitizedTools = sanitizeTools(tools);
|
|
45
|
+
const hasNativeCodeExecution = sanitizedTools.some((tool) => isCodeExecutionType(tool.type));
|
|
46
|
+
if (!hasNativeCodeExecution) {
|
|
47
|
+
sanitizedTools.push(CODE_EXECUTION_TOOL);
|
|
48
|
+
}
|
|
49
|
+
return {
|
|
50
|
+
...payload,
|
|
51
|
+
tools: sanitizedTools,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
export const ANTHROPIC_CODE_EXECUTION_SECTION = `
|
|
55
|
+
## Code Execution
|
|
56
|
+
|
|
57
|
+
The native code_execution tool is available in this session. The model
|
|
58
|
+
runs Python (and shell commands via the bash subtool) inside an
|
|
59
|
+
Anthropic-managed sandbox container. Prefer code_execution for
|
|
60
|
+
numerical work, file analysis, and one-off computations when explicit
|
|
61
|
+
results are needed.
|
|
62
|
+
`;
|
|
63
|
+
export default function anthropicCodeExecutionExtension(pi) {
|
|
64
|
+
pi.on("before_provider_request", (event, ctx) => {
|
|
65
|
+
return addAnthropicCodeExecutionToPayload(ctx.model?.api, event.payload);
|
|
66
|
+
});
|
|
67
|
+
pi.on("before_agent_start", async (event, ctx) => {
|
|
68
|
+
if (ctx.model?.api !== "anthropic-messages") {
|
|
69
|
+
return undefined;
|
|
70
|
+
}
|
|
71
|
+
if (!isCodeExecutionEnabled()) {
|
|
72
|
+
return undefined;
|
|
73
|
+
}
|
|
74
|
+
return {
|
|
75
|
+
systemPrompt: `${event.systemPrompt}\n${ANTHROPIC_CODE_EXECUTION_SECTION}`,
|
|
76
|
+
};
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/anthropic-code-execution/index.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Api } from \"@earendil-works/pi-ai\";\nimport type { ExtensionAPI } from \"../../types.js\";\n\ntype ToolDefinition = Record<string, unknown>;\n\nconst CODE_EXECUTION_ENV = \"PI_ANTHROPIC_CODE_EXECUTION\";\nconst CODE_EXECUTION_TOOL = {\n\ttype: \"code_execution_20250825\",\n\tname: \"code_execution\",\n} as const;\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null;\n}\n\nfunction isCodeExecutionType(value: unknown): value is string {\n\treturn typeof value === \"string\" && value.startsWith(\"code_execution_\");\n}\n\nfunction sanitizeTools(tools: unknown[]): ToolDefinition[] {\n\tconst sanitizedTools: ToolDefinition[] = [];\n\tfor (const tool of tools) {\n\t\tif (!isRecord(tool)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst shouldStripFunctionVariant = tool.name === \"code_execution\" && !isCodeExecutionType(tool.type);\n\t\tif (!shouldStripFunctionVariant) {\n\t\t\tsanitizedTools.push(tool);\n\t\t}\n\t}\n\treturn sanitizedTools;\n}\n\nexport function isCodeExecutionEnabled(): boolean {\n\tconst value = process.env[CODE_EXECUTION_ENV];\n\tif (!value) {\n\t\treturn false;\n\t}\n\n\tconst normalized = value.trim().toLowerCase();\n\treturn normalized === \"1\" || normalized === \"true\" || normalized === \"yes\" || normalized === \"on\";\n}\n\nexport function addAnthropicCodeExecutionToPayload(api: Api | undefined, payload: unknown): unknown {\n\tif (api !== \"anthropic-messages\") {\n\t\treturn payload;\n\t}\n\n\tif (!isCodeExecutionEnabled()) {\n\t\treturn payload;\n\t}\n\n\tif (!isRecord(payload)) {\n\t\treturn payload;\n\t}\n\n\tconst tools = Array.isArray(payload.tools) ? payload.tools : [];\n\tconst sanitizedTools = sanitizeTools(tools);\n\tconst hasNativeCodeExecution = sanitizedTools.some((tool) => isCodeExecutionType(tool.type));\n\tif (!hasNativeCodeExecution) {\n\t\tsanitizedTools.push(CODE_EXECUTION_TOOL);\n\t}\n\n\treturn {\n\t\t...payload,\n\t\ttools: sanitizedTools,\n\t};\n}\n\nexport const ANTHROPIC_CODE_EXECUTION_SECTION = `\n## Code Execution\n\nThe native code_execution tool is available in this session. The model\nruns Python (and shell commands via the bash subtool) inside an\nAnthropic-managed sandbox container. Prefer code_execution for\nnumerical work, file analysis, and one-off computations when explicit\nresults are needed.\n`;\n\nexport default function anthropicCodeExecutionExtension(pi: ExtensionAPI): void {\n\tpi.on(\"before_provider_request\", (event, ctx) => {\n\t\treturn addAnthropicCodeExecutionToPayload(ctx.model?.api, event.payload);\n\t});\n\n\tpi.on(\"before_agent_start\", async (event, ctx) => {\n\t\tif (ctx.model?.api !== \"anthropic-messages\") {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tif (!isCodeExecutionEnabled()) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\treturn {\n\t\t\tsystemPrompt: `${event.systemPrompt}\\n${ANTHROPIC_CODE_EXECUTION_SECTION}`,\n\t\t};\n\t});\n}\n"]}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { Api, TextContent } from "@earendil-works/pi-ai";
|
|
2
|
+
import { type Static, Type } from "typebox";
|
|
3
|
+
import type { ExtensionAPI } from "../../types.js";
|
|
4
|
+
export declare const computerSchema: Type.TObject<{
|
|
5
|
+
action: Type.TUnion<[Type.TLiteral<"screenshot">, Type.TLiteral<"key">, Type.TLiteral<"type">, Type.TLiteral<"mouse_move">, Type.TLiteral<"left_click">, Type.TLiteral<"right_click">, Type.TLiteral<"middle_click">, Type.TLiteral<"double_click">, Type.TLiteral<"triple_click">, Type.TLiteral<"left_click_drag">, Type.TLiteral<"cursor_position">, Type.TLiteral<"left_mouse_down">, Type.TLiteral<"left_mouse_up">, Type.TLiteral<"scroll">, Type.TLiteral<"hold_key">, Type.TLiteral<"wait">]>;
|
|
6
|
+
coordinate: Type.TOptional<Type.TArray<Type.TNumber>>;
|
|
7
|
+
start_coordinate: Type.TOptional<Type.TArray<Type.TNumber>>;
|
|
8
|
+
text: Type.TOptional<Type.TString>;
|
|
9
|
+
key: Type.TOptional<Type.TString>;
|
|
10
|
+
scroll_direction: Type.TOptional<Type.TUnion<[Type.TLiteral<"up">, Type.TLiteral<"down">, Type.TLiteral<"left">, Type.TLiteral<"right">]>>;
|
|
11
|
+
scroll_amount: Type.TOptional<Type.TNumber>;
|
|
12
|
+
duration: Type.TOptional<Type.TNumber>;
|
|
13
|
+
}>;
|
|
14
|
+
export type ComputerToolInput = Static<typeof computerSchema>;
|
|
15
|
+
export type ComputerResult = {
|
|
16
|
+
content: Array<TextContent | {
|
|
17
|
+
type: "image";
|
|
18
|
+
data: string;
|
|
19
|
+
mimeType: "image/png";
|
|
20
|
+
}>;
|
|
21
|
+
isError?: boolean;
|
|
22
|
+
};
|
|
23
|
+
export interface ComputerOperations {
|
|
24
|
+
screenshot(): Promise<{
|
|
25
|
+
base64: string;
|
|
26
|
+
}>;
|
|
27
|
+
cursorPosition(): Promise<{
|
|
28
|
+
x: number;
|
|
29
|
+
y: number;
|
|
30
|
+
}>;
|
|
31
|
+
mouseMove(x: number, y: number): Promise<void>;
|
|
32
|
+
click(button: "left" | "right" | "middle", x?: number, y?: number, modifier?: string): Promise<void>;
|
|
33
|
+
doubleClick(x?: number, y?: number): Promise<void>;
|
|
34
|
+
tripleClick(x?: number, y?: number): Promise<void>;
|
|
35
|
+
drag(startX: number, startY: number, endX: number, endY: number): Promise<void>;
|
|
36
|
+
mouseDown(button: "left", x?: number, y?: number): Promise<void>;
|
|
37
|
+
mouseUp(button: "left", x?: number, y?: number): Promise<void>;
|
|
38
|
+
scroll(direction: "up" | "down" | "left" | "right", amount: number, x?: number, y?: number, modifier?: string): Promise<void>;
|
|
39
|
+
keyPress(combo: string): Promise<void>;
|
|
40
|
+
type(text: string): Promise<void>;
|
|
41
|
+
holdKey(combo: string, durationSec: number): Promise<void>;
|
|
42
|
+
wait(durationSec: number): Promise<void>;
|
|
43
|
+
}
|
|
44
|
+
export declare function isAnthropicComputerUseEnabled(): boolean;
|
|
45
|
+
export declare function addAnthropicComputerUseToPayload(api: Api | undefined, payload: unknown): unknown;
|
|
46
|
+
export declare function executeComputerAction(input: ComputerToolInput, ops: ComputerOperations): Promise<ComputerResult>;
|
|
47
|
+
export declare function createUnsupportedOps(): ComputerOperations;
|
|
48
|
+
export declare function createMacOSComputerOps(): ComputerOperations;
|
|
49
|
+
export declare function createLinuxComputerOps(): ComputerOperations;
|
|
50
|
+
export declare function createComputerOps(platform?: NodeJS.Platform): ComputerOperations;
|
|
51
|
+
export declare const ANTHROPIC_COMPUTER_USE_SECTION = "\n## Computer Use\n\nThe native computer tool is available in this session. The model can\ncontrol the screen via screenshot, key, type, mouse actions, scroll,\nand wait commands.\n";
|
|
52
|
+
export default function anthropicComputerUseExtension(pi: ExtensionAPI): void;
|
|
53
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/core/extensions/builtin/anthropic-computer-use/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { execFile } from \"node:child_process\";\nimport { randomUUID } from \"node:crypto\";\nimport { readFile, rm } from \"node:fs/promises\";\nimport { tmpdir } from \"node:os\";\nimport path from \"node:path\";\nimport { promisify } from \"node:util\";\nimport type { Api, TextContent } from \"@earendil-works/pi-ai\";\nimport { type Static, Type } from \"typebox\";\nimport type { AgentToolResult, ExtensionAPI } from \"../../types.js\";\n\nconst execFileAsync = promisify(execFile);\n\ntype ToolDefinition = Record<string, unknown>;\n\nconst ANTHROPIC_COMPUTER_USE_ENV = \"PI_ANTHROPIC_COMPUTER_USE\";\nconst ANTHROPIC_COMPUTER_USE_WIDTH_ENV = \"PI_ANTHROPIC_COMPUTER_USE_WIDTH\";\nconst ANTHROPIC_COMPUTER_USE_HEIGHT_ENV = \"PI_ANTHROPIC_COMPUTER_USE_HEIGHT\";\nconst ANTHROPIC_COMPUTER_USE_DISPLAY_NUMBER_ENV = \"PI_ANTHROPIC_COMPUTER_USE_DISPLAY_NUMBER\";\nconst ANTHROPIC_COMPUTER_USE_BETA = \"computer-use-2025-01-24\";\n\nconst ANTHROPIC_NATIVE_COMPUTER_TOOL_TYPE = \"computer_20250124\";\nconst ANTHROPIC_NATIVE_COMPUTER_TOOL_NAME = \"computer\";\n\nexport const computerSchema = Type.Object({\n\taction: Type.Union([\n\t\tType.Literal(\"screenshot\"),\n\t\tType.Literal(\"key\"),\n\t\tType.Literal(\"type\"),\n\t\tType.Literal(\"mouse_move\"),\n\t\tType.Literal(\"left_click\"),\n\t\tType.Literal(\"right_click\"),\n\t\tType.Literal(\"middle_click\"),\n\t\tType.Literal(\"double_click\"),\n\t\tType.Literal(\"triple_click\"),\n\t\tType.Literal(\"left_click_drag\"),\n\t\tType.Literal(\"cursor_position\"),\n\t\tType.Literal(\"left_mouse_down\"),\n\t\tType.Literal(\"left_mouse_up\"),\n\t\tType.Literal(\"scroll\"),\n\t\tType.Literal(\"hold_key\"),\n\t\tType.Literal(\"wait\"),\n\t]),\n\tcoordinate: Type.Optional(Type.Array(Type.Number(), { minItems: 2, maxItems: 2 })),\n\tstart_coordinate: Type.Optional(Type.Array(Type.Number(), { minItems: 2, maxItems: 2 })),\n\ttext: Type.Optional(Type.String()),\n\tkey: Type.Optional(Type.String()),\n\tscroll_direction: Type.Optional(\n\t\tType.Union([Type.Literal(\"up\"), Type.Literal(\"down\"), Type.Literal(\"left\"), Type.Literal(\"right\")]),\n\t),\n\tscroll_amount: Type.Optional(Type.Number()),\n\tduration: Type.Optional(Type.Number()),\n});\n\nexport type ComputerToolInput = Static<typeof computerSchema>;\n\nexport type ComputerResult = {\n\tcontent: Array<\n\t\t| TextContent\n\t\t| {\n\t\t\t\ttype: \"image\";\n\t\t\t\tdata: string;\n\t\t\t\tmimeType: \"image/png\";\n\t\t }\n\t>;\n\tisError?: boolean;\n};\n\nexport interface ComputerOperations {\n\tscreenshot(): Promise<{ base64: string }>;\n\tcursorPosition(): Promise<{ x: number; y: number }>;\n\tmouseMove(x: number, y: number): Promise<void>;\n\tclick(button: \"left\" | \"right\" | \"middle\", x?: number, y?: number, modifier?: string): Promise<void>;\n\tdoubleClick(x?: number, y?: number): Promise<void>;\n\ttripleClick(x?: number, y?: number): Promise<void>;\n\tdrag(startX: number, startY: number, endX: number, endY: number): Promise<void>;\n\tmouseDown(button: \"left\", x?: number, y?: number): Promise<void>;\n\tmouseUp(button: \"left\", x?: number, y?: number): Promise<void>;\n\tscroll(\n\t\tdirection: \"up\" | \"down\" | \"left\" | \"right\",\n\t\tamount: number,\n\t\tx?: number,\n\t\ty?: number,\n\t\tmodifier?: string,\n\t): Promise<void>;\n\tkeyPress(combo: string): Promise<void>;\n\ttype(text: string): Promise<void>;\n\tholdKey(combo: string, durationSec: number): Promise<void>;\n\twait(durationSec: number): Promise<void>;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null;\n}\n\nfunction enabledByEnv(env: string | undefined): boolean {\n\tif (!env) {\n\t\treturn false;\n\t}\n\tconst normalized = env.trim().toLowerCase();\n\treturn normalized === \"1\" || normalized === \"true\" || normalized === \"yes\" || normalized === \"on\";\n}\n\nfunction parsePositiveInt(value: string | undefined): number | undefined {\n\tif (!value) {\n\t\treturn undefined;\n\t}\n\tconst trimmed = value.trim();\n\tif (!/^\\d+$/.test(trimmed)) {\n\t\treturn undefined;\n\t}\n\tconst parsed = Number.parseInt(trimmed, 10);\n\treturn parsed > 0 ? parsed : undefined;\n}\n\nfunction getComputerDisplayConfig(): { width: number; height: number; displayNumber?: number } | undefined {\n\tconst width = parsePositiveInt(process.env[ANTHROPIC_COMPUTER_USE_WIDTH_ENV]);\n\tconst height = parsePositiveInt(process.env[ANTHROPIC_COMPUTER_USE_HEIGHT_ENV]);\n\tconst displayNumber = parsePositiveInt(process.env[ANTHROPIC_COMPUTER_USE_DISPLAY_NUMBER_ENV]);\n\tif (width === undefined || height === undefined) {\n\t\treturn undefined;\n\t}\n\tif (displayNumber === undefined) {\n\t\treturn { width, height };\n\t}\n\treturn { width, height, displayNumber };\n}\n\nfunction getComputerEnableState(): {\n\tenabled: boolean;\n\tconfig?: { width: number; height: number; displayNumber?: number };\n} {\n\tif (!enabledByEnv(process.env[ANTHROPIC_COMPUTER_USE_ENV])) {\n\t\treturn { enabled: false };\n\t}\n\tconst config = getComputerDisplayConfig();\n\tif (!config) {\n\t\treturn { enabled: false };\n\t}\n\treturn { enabled: true, config };\n}\n\nexport function isAnthropicComputerUseEnabled(): boolean {\n\treturn getComputerEnableState().enabled;\n}\n\nfunction isComputerToolType(value: unknown): value is string {\n\treturn typeof value === \"string\" && value.startsWith(\"computer_\");\n}\n\nfunction sanitizeTools(tools: unknown[]): ToolDefinition[] {\n\tconst sanitizedTools: ToolDefinition[] = [];\n\tfor (const tool of tools) {\n\t\tif (!isRecord(tool)) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst shouldStripFunctionVariant =\n\t\t\ttool.name === ANTHROPIC_NATIVE_COMPUTER_TOOL_NAME && !isComputerToolType(tool.type);\n\t\tif (!shouldStripFunctionVariant) {\n\t\t\tsanitizedTools.push(tool);\n\t\t}\n\t}\n\treturn sanitizedTools;\n}\n\nfunction mergeBetaHeader(existing: unknown): string {\n\tconst existingParts =\n\t\ttypeof existing === \"string\"\n\t\t\t? existing\n\t\t\t\t\t.split(\",\")\n\t\t\t\t\t.map((part) => part.trim())\n\t\t\t\t\t.filter(Boolean)\n\t\t\t: [];\n\tif (existingParts.includes(ANTHROPIC_COMPUTER_USE_BETA)) {\n\t\treturn existingParts.join(\",\");\n\t}\n\treturn [...existingParts, ANTHROPIC_COMPUTER_USE_BETA].join(\",\");\n}\n\nexport function addAnthropicComputerUseToPayload(api: Api | undefined, payload: unknown): unknown {\n\tif (api !== \"anthropic-messages\") {\n\t\treturn payload;\n\t}\n\tconst state = getComputerEnableState();\n\tif (!state.enabled || !state.config) {\n\t\treturn payload;\n\t}\n\tif (!isRecord(payload)) {\n\t\treturn payload;\n\t}\n\n\tconst tools = Array.isArray(payload.tools) ? payload.tools : [];\n\tconst sanitizedTools = sanitizeTools(tools);\n\tconst hasNativeComputer = sanitizedTools.some((tool) => isComputerToolType(tool.type));\n\tif (!hasNativeComputer) {\n\t\tsanitizedTools.push({\n\t\t\ttype: ANTHROPIC_NATIVE_COMPUTER_TOOL_TYPE,\n\t\t\tname: ANTHROPIC_NATIVE_COMPUTER_TOOL_NAME,\n\t\t\tdisplay_width_px: state.config.width,\n\t\t\tdisplay_height_px: state.config.height,\n\t\t\t...(state.config.displayNumber !== undefined ? { display_number: state.config.displayNumber } : {}),\n\t\t});\n\t}\n\n\tconst existingBetas = isRecord(payload.extra_body) ? payload.extra_body.betas : undefined;\n\tconst mergedBetas = Array.isArray(existingBetas)\n\t\t? existingBetas.includes(ANTHROPIC_COMPUTER_USE_BETA)\n\t\t\t? existingBetas\n\t\t\t: [...existingBetas, ANTHROPIC_COMPUTER_USE_BETA]\n\t\t: [ANTHROPIC_COMPUTER_USE_BETA];\n\n\tconst headers = isRecord(payload.headers) ? payload.headers : {};\n\tconst nextHeaders = {\n\t\t...headers,\n\t\t\"anthropic-beta\": mergeBetaHeader(headers[\"anthropic-beta\"]),\n\t};\n\n\treturn {\n\t\t...payload,\n\t\ttools: sanitizedTools,\n\t\theaders: nextHeaders,\n\t\textra_body: {\n\t\t\t...(isRecord(payload.extra_body) ? payload.extra_body : {}),\n\t\t\tbetas: mergedBetas,\n\t\t},\n\t};\n}\n\nfunction imageResult(base64: string): ComputerResult {\n\treturn {\n\t\tcontent: [\n\t\t\t{\n\t\t\t\ttype: \"image\",\n\t\t\t\tdata: base64,\n\t\t\t\tmimeType: \"image/png\",\n\t\t\t},\n\t\t],\n\t};\n}\n\nfunction errorResult(message: string): ComputerResult {\n\treturn {\n\t\tisError: true,\n\t\tcontent: [{ type: \"text\", text: message }],\n\t};\n}\n\nfunction parseCoordinate(coordinate: number[] | undefined, action: string): [number, number] {\n\tif (!coordinate || coordinate.length !== 2) {\n\t\tthrow new Error(`${action} requires coordinate [x, y]`);\n\t}\n\treturn [coordinate[0] ?? 0, coordinate[1] ?? 0];\n}\n\nfunction parseDuration(duration: number | undefined, action: string): number {\n\tif (duration === undefined || Number.isNaN(duration) || duration < 0) {\n\t\tthrow new Error(`${action} requires duration >= 0`);\n\t}\n\treturn duration;\n}\n\nfunction parseText(text: string | undefined, action: string): string {\n\tif (!text) {\n\t\tthrow new Error(`${action} requires text`);\n\t}\n\treturn text;\n}\n\nexport async function executeComputerAction(\n\tinput: ComputerToolInput,\n\tops: ComputerOperations,\n): Promise<ComputerResult> {\n\ttry {\n\t\tswitch (input.action) {\n\t\t\tcase \"screenshot\": {\n\t\t\t\tconst screenshot = await ops.screenshot();\n\t\t\t\treturn imageResult(screenshot.base64);\n\t\t\t}\n\t\t\tcase \"key\": {\n\t\t\t\tconst combo = parseText(input.text ?? input.key, \"key\");\n\t\t\t\tawait ops.keyPress(combo);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"type\": {\n\t\t\t\tawait ops.type(parseText(input.text, \"type\"));\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"mouse_move\": {\n\t\t\t\tconst [x, y] = parseCoordinate(input.coordinate, \"mouse_move\");\n\t\t\t\tawait ops.mouseMove(x, y);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"left_click\": {\n\t\t\t\tconst coordinate = input.coordinate;\n\t\t\t\tif (coordinate) {\n\t\t\t\t\tconst [x, y] = parseCoordinate(coordinate, \"left_click\");\n\t\t\t\t\tawait ops.click(\"left\", x, y);\n\t\t\t\t} else {\n\t\t\t\t\tawait ops.click(\"left\");\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"right_click\": {\n\t\t\t\tconst coordinate = input.coordinate;\n\t\t\t\tif (coordinate) {\n\t\t\t\t\tconst [x, y] = parseCoordinate(coordinate, \"right_click\");\n\t\t\t\t\tawait ops.click(\"right\", x, y);\n\t\t\t\t} else {\n\t\t\t\t\tawait ops.click(\"right\");\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"middle_click\": {\n\t\t\t\tconst coordinate = input.coordinate;\n\t\t\t\tif (coordinate) {\n\t\t\t\t\tconst [x, y] = parseCoordinate(coordinate, \"middle_click\");\n\t\t\t\t\tawait ops.click(\"middle\", x, y);\n\t\t\t\t} else {\n\t\t\t\t\tawait ops.click(\"middle\");\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"double_click\": {\n\t\t\t\tconst coordinate = input.coordinate;\n\t\t\t\tif (coordinate) {\n\t\t\t\t\tconst [x, y] = parseCoordinate(coordinate, \"double_click\");\n\t\t\t\t\tawait ops.doubleClick(x, y);\n\t\t\t\t} else {\n\t\t\t\t\tawait ops.doubleClick();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"triple_click\": {\n\t\t\t\tconst coordinate = input.coordinate;\n\t\t\t\tif (coordinate) {\n\t\t\t\t\tconst [x, y] = parseCoordinate(coordinate, \"triple_click\");\n\t\t\t\t\tawait ops.tripleClick(x, y);\n\t\t\t\t} else {\n\t\t\t\t\tawait ops.tripleClick();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"left_click_drag\": {\n\t\t\t\tconst [startX, startY] = parseCoordinate(input.start_coordinate, \"left_click_drag.start_coordinate\");\n\t\t\t\tconst [endX, endY] = parseCoordinate(input.coordinate, \"left_click_drag.coordinate\");\n\t\t\t\tawait ops.drag(startX, startY, endX, endY);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"cursor_position\": {\n\t\t\t\tconst position = await ops.cursorPosition();\n\t\t\t\treturn { content: [{ type: \"text\", text: `X=${position.x},Y=${position.y}` }] };\n\t\t\t}\n\t\t\tcase \"left_mouse_down\": {\n\t\t\t\tconst coordinate = input.coordinate;\n\t\t\t\tif (coordinate) {\n\t\t\t\t\tconst [x, y] = parseCoordinate(coordinate, \"left_mouse_down\");\n\t\t\t\t\tawait ops.mouseDown(\"left\", x, y);\n\t\t\t\t} else {\n\t\t\t\t\tawait ops.mouseDown(\"left\");\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"left_mouse_up\": {\n\t\t\t\tconst coordinate = input.coordinate;\n\t\t\t\tif (coordinate) {\n\t\t\t\t\tconst [x, y] = parseCoordinate(coordinate, \"left_mouse_up\");\n\t\t\t\t\tawait ops.mouseUp(\"left\", x, y);\n\t\t\t\t} else {\n\t\t\t\t\tawait ops.mouseUp(\"left\");\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"scroll\": {\n\t\t\t\tif (!input.scroll_direction) {\n\t\t\t\t\tthrow new Error(\"scroll requires scroll_direction\");\n\t\t\t\t}\n\t\t\t\tif (input.scroll_amount === undefined || input.scroll_amount <= 0) {\n\t\t\t\t\tthrow new Error(\"scroll requires positive scroll_amount\");\n\t\t\t\t}\n\t\t\t\tconst coordinate = input.coordinate;\n\t\t\t\tif (coordinate) {\n\t\t\t\t\tconst [x, y] = parseCoordinate(coordinate, \"scroll\");\n\t\t\t\t\tawait ops.scroll(input.scroll_direction, input.scroll_amount, x, y);\n\t\t\t\t} else {\n\t\t\t\t\tawait ops.scroll(input.scroll_direction, input.scroll_amount);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"hold_key\": {\n\t\t\t\tawait ops.holdKey(\n\t\t\t\t\tparseText(input.text ?? input.key, \"hold_key\"),\n\t\t\t\t\tparseDuration(input.duration, \"hold_key\"),\n\t\t\t\t);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase \"wait\": {\n\t\t\t\tawait ops.wait(parseDuration(input.duration, \"wait\"));\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tconst screenshot = await ops.screenshot();\n\t\treturn imageResult(screenshot.base64);\n\t} catch (error) {\n\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\treturn errorResult(message);\n\t}\n}\n\nasync function commandExists(command: string): Promise<boolean> {\n\ttry {\n\t\tawait execFileAsync(\"which\", [command]);\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nasync function run(command: string, args: string[]): Promise<string> {\n\tconst result = await execFileAsync(command, args);\n\treturn result.stdout;\n}\n\nfunction parseKeyComboToAppleScript(combo: string): string {\n\tconst parts = combo\n\t\t.split(\"+\")\n\t\t.map((part) => part.trim().toLowerCase())\n\t\t.filter(Boolean);\n\tif (parts.length === 0) {\n\t\tthrow new Error(\"Empty key combo\");\n\t}\n\tconst main = parts[parts.length - 1] ?? \"\";\n\tconst modifiers = new Set(parts.slice(0, -1));\n\tconst usingParts: string[] = [];\n\tif (modifiers.has(\"ctrl\") || modifiers.has(\"control\")) usingParts.push(\"control down\");\n\tif (modifiers.has(\"cmd\") || modifiers.has(\"command\")) usingParts.push(\"command down\");\n\tif (modifiers.has(\"alt\") || modifiers.has(\"option\")) usingParts.push(\"option down\");\n\tif (modifiers.has(\"shift\")) usingParts.push(\"shift down\");\n\tconst targetKey = main.length === 1 ? `keystroke ${JSON.stringify(main)}` : `key code ${mapKeyCode(main)}`;\n\tif (usingParts.length === 0) {\n\t\treturn `tell application \"System Events\" to ${targetKey}`;\n\t}\n\treturn `tell application \"System Events\" to ${targetKey} using {${usingParts.join(\", \")}}`;\n}\n\nfunction mapKeyCode(key: string): number {\n\tconst map: Record<string, number> = { enter: 36, return: 36, tab: 48, space: 49, esc: 53, escape: 53 };\n\tconst code = map[key];\n\tif (code === undefined) {\n\t\tthrow new Error(`Unsupported macOS special key: ${key}`);\n\t}\n\treturn code;\n}\n\nexport function createUnsupportedOps(): ComputerOperations {\n\tconst fail = async (): Promise<never> => {\n\t\tthrow new Error(\"Computer use not supported on Windows\");\n\t};\n\treturn {\n\t\tscreenshot: fail,\n\t\tcursorPosition: fail,\n\t\tmouseMove: fail,\n\t\tclick: fail,\n\t\tdoubleClick: fail,\n\t\ttripleClick: fail,\n\t\tdrag: fail,\n\t\tmouseDown: fail,\n\t\tmouseUp: fail,\n\t\tscroll: fail,\n\t\tkeyPress: fail,\n\t\ttype: fail,\n\t\tholdKey: fail,\n\t\twait: fail,\n\t};\n}\n\nexport function createMacOSComputerOps(): ComputerOperations {\n\treturn {\n\t\tasync screenshot() {\n\t\t\tconst filePath = path.join(tmpdir(), `senpi-computer-${randomUUID()}.png`);\n\t\t\ttry {\n\t\t\t\tawait run(\"screencapture\", [\"-x\", \"-t\", \"png\", filePath]);\n\t\t\t\tconst buffer = await readFile(filePath);\n\t\t\t\treturn { base64: buffer.toString(\"base64\") };\n\t\t\t} finally {\n\t\t\t\tawait rm(filePath, { force: true });\n\t\t\t}\n\t\t},\n\t\tasync cursorPosition() {\n\t\t\tconst output = await run(\"osascript\", [\n\t\t\t\t\"-e\",\n\t\t\t\t'tell app \"System Events\" to return position of pointer as text',\n\t\t\t]);\n\t\t\tconst parts = output.trim().split(\",\");\n\t\t\tconst xRaw = Number.parseInt((parts[0] ?? \"0\").trim(), 10);\n\t\t\tconst yRaw = Number.parseInt((parts[1] ?? \"0\").trim(), 10);\n\t\t\treturn { x: Number.isFinite(xRaw) ? xRaw : 0, y: Number.isFinite(yRaw) ? yRaw : 0 };\n\t\t},\n\t\tasync mouseMove(x, y) {\n\t\t\tawait run(\"cliclick\", [`m:${x},${y}`]);\n\t\t},\n\t\tasync click(button, x, y) {\n\t\t\tif (x !== undefined && y !== undefined) {\n\t\t\t\tawait run(\"cliclick\", [`m:${x},${y}`]);\n\t\t\t}\n\t\t\tconst command = button === \"left\" ? \"c:.\" : button === \"right\" ? \"rc:.\" : \"mc:.\";\n\t\t\tawait run(\"cliclick\", [command]);\n\t\t},\n\t\tasync doubleClick(x, y) {\n\t\t\tif (x !== undefined && y !== undefined) {\n\t\t\t\tawait run(\"cliclick\", [`m:${x},${y}`]);\n\t\t\t}\n\t\t\tawait run(\"cliclick\", [\"dc:.\"]);\n\t\t},\n\t\tasync tripleClick(x, y) {\n\t\t\tif (x !== undefined && y !== undefined) {\n\t\t\t\tawait run(\"cliclick\", [`m:${x},${y}`]);\n\t\t\t}\n\t\t\tawait run(\"cliclick\", [\"tc:.\"]);\n\t\t},\n\t\tasync drag(startX, startY, endX, endY) {\n\t\t\tawait run(\"cliclick\", [`dd:${startX},${startY}`, `du:${endX},${endY}`]);\n\t\t},\n\t\tasync mouseDown(_button, x, y) {\n\t\t\tif (x !== undefined && y !== undefined) {\n\t\t\t\tawait run(\"cliclick\", [`m:${x},${y}`]);\n\t\t\t}\n\t\t\tawait run(\"cliclick\", [\"dd:.\"]);\n\t\t},\n\t\tasync mouseUp(_button, x, y) {\n\t\t\tif (x !== undefined && y !== undefined) {\n\t\t\t\tawait run(\"cliclick\", [`m:${x},${y}`]);\n\t\t\t}\n\t\t\tawait run(\"cliclick\", [\"du:.\"]);\n\t\t},\n\t\tasync scroll(direction, amount, x, y) {\n\t\t\tif (x !== undefined && y !== undefined) {\n\t\t\t\tawait run(\"cliclick\", [`m:${x},${y}`]);\n\t\t\t}\n\t\t\tconst clicks = Math.max(1, Math.round(amount));\n\t\t\tconst wheel = direction === \"up\" ? \"wd\" : direction === \"down\" ? \"wu\" : direction === \"left\" ? \"wl\" : \"wr\";\n\t\t\tawait run(\"cliclick\", [`${wheel}:${clicks}`]);\n\t\t},\n\t\tasync keyPress(combo) {\n\t\t\tawait run(\"osascript\", [\"-e\", parseKeyComboToAppleScript(combo)]);\n\t\t},\n\t\tasync type(text) {\n\t\t\tawait run(\"osascript\", [\"-e\", `tell application \"System Events\" to keystroke ${JSON.stringify(text)}`]);\n\t\t},\n\t\tasync holdKey(combo, durationSec) {\n\t\t\tawait run(\"osascript\", [\"-e\", parseKeyComboToAppleScript(combo)]);\n\t\t\tawait new Promise((resolve) => setTimeout(resolve, durationSec * 1000));\n\t\t},\n\t\tasync wait(durationSec) {\n\t\t\tawait new Promise((resolve) => setTimeout(resolve, durationSec * 1000));\n\t\t},\n\t};\n}\n\nexport function createLinuxComputerOps(): ComputerOperations {\n\treturn {\n\t\tasync screenshot() {\n\t\t\tconst filePath = path.join(tmpdir(), `senpi-computer-${randomUUID()}.png`);\n\t\t\ttry {\n\t\t\t\tawait run(\"scrot\", [filePath]);\n\t\t\t\tconst buffer = await readFile(filePath);\n\t\t\t\treturn { base64: buffer.toString(\"base64\") };\n\t\t\t} finally {\n\t\t\t\tawait rm(filePath, { force: true });\n\t\t\t}\n\t\t},\n\t\tasync cursorPosition() {\n\t\t\tconst output = await run(\"xdotool\", [\"getmouselocation\", \"--shell\"]);\n\t\t\tconst xMatch = output.match(/^X=(\\d+)$/m);\n\t\t\tconst yMatch = output.match(/^Y=(\\d+)$/m);\n\t\t\treturn {\n\t\t\t\tx: xMatch ? Number.parseInt(xMatch[1] ?? \"0\", 10) : 0,\n\t\t\t\ty: yMatch ? Number.parseInt(yMatch[1] ?? \"0\", 10) : 0,\n\t\t\t};\n\t\t},\n\t\tasync mouseMove(x, y) {\n\t\t\tawait run(\"xdotool\", [\"mousemove\", `${x}`, `${y}`]);\n\t\t},\n\t\tasync click(button, x, y) {\n\t\t\tif (x !== undefined && y !== undefined) {\n\t\t\t\tawait run(\"xdotool\", [\"mousemove\", `${x}`, `${y}`]);\n\t\t\t}\n\t\t\tconst buttonNumber = button === \"left\" ? \"1\" : button === \"middle\" ? \"2\" : \"3\";\n\t\t\tawait run(\"xdotool\", [\"click\", buttonNumber]);\n\t\t},\n\t\tasync doubleClick(x, y) {\n\t\t\tif (x !== undefined && y !== undefined) {\n\t\t\t\tawait run(\"xdotool\", [\"mousemove\", `${x}`, `${y}`]);\n\t\t\t}\n\t\t\tawait run(\"xdotool\", [\"click\", \"--repeat\", \"2\", \"1\"]);\n\t\t},\n\t\tasync tripleClick(x, y) {\n\t\t\tif (x !== undefined && y !== undefined) {\n\t\t\t\tawait run(\"xdotool\", [\"mousemove\", `${x}`, `${y}`]);\n\t\t\t}\n\t\t\tawait run(\"xdotool\", [\"click\", \"--repeat\", \"3\", \"1\"]);\n\t\t},\n\t\tasync drag(startX, startY, endX, endY) {\n\t\t\tawait run(\"xdotool\", [\n\t\t\t\t\"mousemove\",\n\t\t\t\t`${startX}`,\n\t\t\t\t`${startY}`,\n\t\t\t\t\"mousedown\",\n\t\t\t\t\"1\",\n\t\t\t\t\"mousemove\",\n\t\t\t\t`${endX}`,\n\t\t\t\t`${endY}`,\n\t\t\t\t\"mouseup\",\n\t\t\t\t\"1\",\n\t\t\t]);\n\t\t},\n\t\tasync mouseDown(_button, x, y) {\n\t\t\tif (x !== undefined && y !== undefined) {\n\t\t\t\tawait run(\"xdotool\", [\"mousemove\", `${x}`, `${y}`]);\n\t\t\t}\n\t\t\tawait run(\"xdotool\", [\"mousedown\", \"1\"]);\n\t\t},\n\t\tasync mouseUp(_button, x, y) {\n\t\t\tif (x !== undefined && y !== undefined) {\n\t\t\t\tawait run(\"xdotool\", [\"mousemove\", `${x}`, `${y}`]);\n\t\t\t}\n\t\t\tawait run(\"xdotool\", [\"mouseup\", \"1\"]);\n\t\t},\n\t\tasync scroll(direction, amount, x, y) {\n\t\t\tif (x !== undefined && y !== undefined) {\n\t\t\t\tawait run(\"xdotool\", [\"mousemove\", `${x}`, `${y}`]);\n\t\t\t}\n\t\t\tconst button = direction === \"up\" ? \"4\" : direction === \"down\" ? \"5\" : direction === \"left\" ? \"6\" : \"7\";\n\t\t\tconst repeat = `${Math.max(1, Math.round(amount))}`;\n\t\t\tawait run(\"xdotool\", [\"click\", \"--repeat\", repeat, button]);\n\t\t},\n\t\tasync keyPress(combo) {\n\t\t\tawait run(\"xdotool\", [\"key\", combo]);\n\t\t},\n\t\tasync type(text) {\n\t\t\tawait run(\"xdotool\", [\"type\", \"--delay\", \"12\", \"--\", text]);\n\t\t},\n\t\tasync holdKey(combo, durationSec) {\n\t\t\tawait run(\"xdotool\", [\"keydown\", combo]);\n\t\t\tawait new Promise((resolve) => setTimeout(resolve, durationSec * 1000));\n\t\t\tawait run(\"xdotool\", [\"keyup\", combo]);\n\t\t},\n\t\tasync wait(durationSec) {\n\t\t\tawait new Promise((resolve) => setTimeout(resolve, durationSec * 1000));\n\t\t},\n\t};\n}\n\nexport function createComputerOps(platform: NodeJS.Platform = process.platform): ComputerOperations {\n\tif (platform === \"darwin\") {\n\t\treturn createMacOSComputerOps();\n\t}\n\tif (platform === \"linux\") {\n\t\treturn createLinuxComputerOps();\n\t}\n\treturn createUnsupportedOps();\n}\n\nasync function validateCliDependencies(platform: NodeJS.Platform): Promise<string[]> {\n\tconst missing: string[] = [];\n\tif (platform === \"darwin\") {\n\t\tif (!(await commandExists(\"cliclick\"))) {\n\t\t\tmissing.push(\"cliclick\");\n\t\t}\n\t} else if (platform === \"linux\") {\n\t\tif (!(await commandExists(\"xdotool\"))) {\n\t\t\tmissing.push(\"xdotool\");\n\t\t}\n\t\tif (!(await commandExists(\"scrot\"))) {\n\t\t\tmissing.push(\"scrot\");\n\t\t}\n\t}\n\treturn missing;\n}\n\nexport const ANTHROPIC_COMPUTER_USE_SECTION = `\n## Computer Use\n\nThe native computer tool is available in this session. The model can\ncontrol the screen via screenshot, key, type, mouse actions, scroll,\nand wait commands.\n`;\n\nfunction buildComputerUseSection(width: number, height: number): string {\n\treturn `${ANTHROPIC_COMPUTER_USE_SECTION.trimEnd()} Display dimensions: ${width}x${height}. Use computer when the user asks to interact with GUI applications.\\n`;\n}\n\nexport default function anthropicComputerUseExtension(pi: ExtensionAPI): void {\n\tlet extensionDisabledForSession = false;\n\n\tpi.on(\"session_start\", async (_event) => {\n\t\tif (!enabledByEnv(process.env[ANTHROPIC_COMPUTER_USE_ENV])) {\n\t\t\textensionDisabledForSession = true;\n\t\t\treturn undefined;\n\t\t}\n\t\tif (!getComputerDisplayConfig()) {\n\t\t\textensionDisabledForSession = true;\n\t\t\tconsole.error(\n\t\t\t\t`[anthropic-computer-use] ${ANTHROPIC_COMPUTER_USE_WIDTH_ENV} and ${ANTHROPIC_COMPUTER_USE_HEIGHT_ENV} must be positive integers; extension disabled for this session.`,\n\t\t\t);\n\t\t\treturn undefined;\n\t\t}\n\t\textensionDisabledForSession = false;\n\t\tconst missingTools = await validateCliDependencies(process.platform);\n\t\tif (missingTools.length > 0) {\n\t\t\tconsole.warn(\n\t\t\t\t`[anthropic-computer-use] Missing OS automation dependencies: ${missingTools.join(\", \")}. Install them for full functionality.`,\n\t\t\t);\n\t\t}\n\t\treturn undefined;\n\t});\n\n\tif (enabledByEnv(process.env[ANTHROPIC_COMPUTER_USE_ENV]) && getComputerDisplayConfig()) {\n\t\tconst ops = createComputerOps();\n\t\tpi.registerTool({\n\t\t\tname: ANTHROPIC_NATIVE_COMPUTER_TOOL_NAME,\n\t\t\tlabel: \"Computer Use\",\n\t\t\tdescription:\n\t\t\t\t\"Actions: screenshot, key, type, mouse_move, left/right/middle click, double/triple click, drag, cursor_position, mouse down/up, scroll, hold_key, wait.\",\n\t\t\tparameters: computerSchema,\n\t\t\tasync execute(_toolCallId, params): Promise<AgentToolResult<undefined>> {\n\t\t\t\tconst result = await executeComputerAction(params, ops);\n\t\t\t\tif (result.isError) {\n\t\t\t\t\tconst firstContent = result.content[0];\n\t\t\t\t\tthrow new Error(firstContent?.type === \"text\" ? firstContent.text : \"Computer action failed\");\n\t\t\t\t}\n\t\t\t\treturn { content: result.content, details: undefined };\n\t\t\t},\n\t\t});\n\t}\n\n\tpi.on(\"before_provider_request\", (event, ctx) => {\n\t\tif (extensionDisabledForSession) {\n\t\t\treturn event.payload;\n\t\t}\n\t\treturn addAnthropicComputerUseToPayload(ctx.model?.api, event.payload);\n\t});\n\n\tpi.on(\"before_agent_start\", async (event, ctx) => {\n\t\tif (ctx.model?.api !== \"anthropic-messages\") {\n\t\t\treturn undefined;\n\t\t}\n\t\tif (extensionDisabledForSession) {\n\t\t\treturn undefined;\n\t\t}\n\t\tconst config = getComputerDisplayConfig();\n\t\tif (!enabledByEnv(process.env[ANTHROPIC_COMPUTER_USE_ENV]) || !config) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn {\n\t\t\tsystemPrompt: `${event.systemPrompt}\\n${buildComputerUseSection(config.width, config.height)}`,\n\t\t};\n\t});\n}\n"]}
|