@sammorrowdrums/mcpi 0.70.9 → 0.85.0-bootstrap.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 +1621 -0
- package/LICENSE +21 -0
- package/README.md +196 -141
- package/dist/bun/cli.d.ts.map +1 -1
- package/dist/bun/cli.js +4 -0
- package/dist/bun/cli.js.map +1 -1
- package/dist/bun/register-bedrock.d.ts.map +1 -1
- package/dist/bun/register-bedrock.js +1 -1
- package/dist/bun/register-bedrock.js.map +1 -1
- package/dist/bun/restore-sandbox-env.d.ts +17 -0
- package/dist/bun/restore-sandbox-env.d.ts.map +1 -0
- package/dist/bun/restore-sandbox-env.js +36 -0
- package/dist/bun/restore-sandbox-env.js.map +1 -0
- package/dist/cli/args.d.ts +9 -2
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +116 -16
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/auth-check.d.ts +19 -0
- package/dist/cli/auth-check.d.ts.map +1 -0
- package/dist/cli/auth-check.js +50 -0
- package/dist/cli/auth-check.js.map +1 -0
- package/dist/cli/auth-command.d.ts +24 -0
- package/dist/cli/auth-command.d.ts.map +1 -0
- package/dist/cli/auth-command.js +103 -0
- package/dist/cli/auth-command.js.map +1 -0
- package/dist/cli/config-selector.d.ts +6 -4
- package/dist/cli/config-selector.d.ts.map +1 -1
- package/dist/cli/config-selector.js +4 -4
- package/dist/cli/config-selector.js.map +1 -1
- package/dist/cli/credential-print.d.ts +13 -0
- package/dist/cli/credential-print.d.ts.map +1 -0
- package/dist/cli/credential-print.js +76 -0
- package/dist/cli/credential-print.js.map +1 -0
- package/dist/cli/experimental/auth.d.ts +16 -0
- package/dist/cli/experimental/auth.d.ts.map +1 -0
- package/dist/cli/experimental/auth.js +13 -0
- package/dist/cli/experimental/auth.js.map +1 -0
- package/dist/cli/experimental/cli.d.ts +6 -0
- package/dist/cli/experimental/cli.d.ts.map +1 -0
- package/dist/cli/experimental/cli.js +5 -0
- package/dist/cli/experimental/cli.js.map +1 -0
- package/dist/cli/experimental/command-options.d.ts +17 -0
- package/dist/cli/experimental/command-options.d.ts.map +1 -0
- package/dist/cli/experimental/command-options.js +35 -0
- package/dist/cli/experimental/command-options.js.map +1 -0
- package/dist/cli/experimental/command.d.ts +63 -0
- package/dist/cli/experimental/command.d.ts.map +1 -0
- package/dist/cli/experimental/command.js +130 -0
- package/dist/cli/experimental/command.js.map +1 -0
- package/dist/cli/experimental/commands/client.d.ts +13 -0
- package/dist/cli/experimental/commands/client.d.ts.map +1 -0
- package/dist/cli/experimental/commands/client.js +25 -0
- package/dist/cli/experimental/commands/client.js.map +1 -0
- package/dist/cli/experimental/commands/mcpi.d.ts +15 -0
- package/dist/cli/experimental/commands/mcpi.d.ts.map +1 -0
- package/dist/cli/experimental/commands/mcpi.js +28 -0
- package/dist/cli/experimental/commands/mcpi.js.map +1 -0
- package/dist/cli/experimental/commands/server.d.ts +13 -0
- package/dist/cli/experimental/commands/server.d.ts.map +1 -0
- package/dist/cli/experimental/commands/server.js +25 -0
- package/dist/cli/experimental/commands/server.js.map +1 -0
- package/dist/cli/experimental/transport-address.d.ts +10 -0
- package/dist/cli/experimental/transport-address.d.ts.map +1 -0
- package/dist/cli/experimental/transport-address.js +38 -0
- package/dist/cli/experimental/transport-address.js.map +1 -0
- package/dist/cli/file-processor.d.ts.map +1 -1
- package/dist/cli/file-processor.js +13 -26
- package/dist/cli/file-processor.js.map +1 -1
- package/dist/cli/initial-message.d.ts +1 -1
- package/dist/cli/initial-message.d.ts.map +1 -1
- package/dist/cli/initial-message.js.map +1 -1
- package/dist/cli/list-models.d.ts +2 -2
- package/dist/cli/list-models.d.ts.map +1 -1
- package/dist/cli/list-models.js +4 -4
- package/dist/cli/list-models.js.map +1 -1
- package/dist/cli/project-trust.d.ts +10 -0
- package/dist/cli/project-trust.d.ts.map +1 -0
- package/dist/cli/project-trust.js +48 -0
- package/dist/cli/project-trust.js.map +1 -0
- package/dist/cli/session-picker.d.ts +3 -2
- package/dist/cli/session-picker.d.ts.map +1 -1
- package/dist/cli/session-picker.js +5 -4
- package/dist/cli/session-picker.js.map +1 -1
- package/dist/cli/startup-ui.d.ts +20 -0
- package/dist/cli/startup-ui.d.ts.map +1 -0
- package/dist/cli/startup-ui.js +184 -0
- package/dist/cli/startup-ui.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +6 -3
- package/dist/cli.js.map +1 -1
- package/dist/client/index.d.ts +3 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +3 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/remote-session.d.ts +53 -0
- package/dist/client/remote-session.d.ts.map +1 -0
- package/dist/client/remote-session.js +340 -0
- package/dist/client/remote-session.js.map +1 -0
- package/dist/client/transcript.d.ts +12 -0
- package/dist/client/transcript.d.ts.map +1 -0
- package/dist/client/transcript.js +98 -0
- package/dist/client/transcript.js.map +1 -0
- package/dist/config.d.ts +34 -12
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +312 -61
- package/dist/config.js.map +1 -1
- package/dist/core/agent-session-runtime.d.ts +11 -9
- package/dist/core/agent-session-runtime.d.ts.map +1 -1
- package/dist/core/agent-session-runtime.js +16 -7
- package/dist/core/agent-session-runtime.js.map +1 -1
- package/dist/core/agent-session-services.d.ts +13 -12
- package/dist/core/agent-session-services.d.ts.map +1 -1
- package/dist/core/agent-session-services.js +34 -14
- package/dist/core/agent-session-services.js.map +1 -1
- package/dist/core/agent-session.d.ts +110 -53
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +658 -488
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/auth-guidance.d.ts.map +1 -1
- package/dist/core/auth-guidance.js.map +1 -1
- package/dist/core/auth-storage.d.ts +35 -104
- package/dist/core/auth-storage.d.ts.map +1 -1
- package/dist/core/auth-storage.js +272 -286
- package/dist/core/auth-storage.js.map +1 -1
- package/dist/core/bash-executor.d.ts +1 -1
- package/dist/core/bash-executor.d.ts.map +1 -1
- package/dist/core/bash-executor.js +11 -8
- package/dist/core/bash-executor.js.map +1 -1
- package/dist/core/cache-stats.d.ts +49 -0
- package/dist/core/cache-stats.d.ts.map +1 -0
- package/dist/core/cache-stats.js +101 -0
- package/dist/core/cache-stats.js.map +1 -0
- package/dist/core/compaction/branch-summarization.d.ts +16 -6
- package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
- package/dist/core/compaction/branch-summarization.js +13 -10
- package/dist/core/compaction/branch-summarization.js.map +1 -1
- package/dist/core/compaction/compaction.d.ts +25 -9
- package/dist/core/compaction/compaction.d.ts.map +1 -1
- package/dist/core/compaction/compaction.js +163 -133
- package/dist/core/compaction/compaction.js.map +1 -1
- package/dist/core/compaction/index.d.ts +3 -3
- package/dist/core/compaction/index.d.ts.map +1 -1
- package/dist/core/compaction/index.js.map +1 -1
- package/dist/core/compaction/utils.d.ts +3 -3
- package/dist/core/compaction/utils.d.ts.map +1 -1
- package/dist/core/compaction/utils.js +7 -18
- package/dist/core/compaction/utils.js.map +1 -1
- package/dist/core/defaults.d.ts +1 -1
- package/dist/core/defaults.d.ts.map +1 -1
- package/dist/core/defaults.js.map +1 -1
- package/dist/core/env-overlay.d.ts +21 -0
- package/dist/core/env-overlay.d.ts.map +1 -0
- package/dist/core/env-overlay.js +25 -0
- package/dist/core/env-overlay.js.map +1 -0
- package/dist/core/exec.d.ts +8 -1
- package/dist/core/exec.d.ts.map +1 -1
- package/dist/core/exec.js +7 -1
- package/dist/core/exec.js.map +1 -1
- package/dist/core/experimental.d.ts +6 -0
- package/dist/core/experimental.d.ts.map +1 -0
- package/dist/core/experimental.js +8 -0
- package/dist/core/experimental.js.map +1 -0
- package/dist/core/export-html/ansi-to-html.d.ts.map +1 -1
- package/dist/core/export-html/ansi-to-html.js +1 -1
- package/dist/core/export-html/ansi-to-html.js.map +1 -1
- package/dist/core/export-html/index.d.ts +2 -2
- package/dist/core/export-html/index.d.ts.map +1 -1
- package/dist/core/export-html/index.js +8 -6
- package/dist/core/export-html/index.js.map +1 -1
- package/dist/core/export-html/template.css +53 -4
- package/dist/core/export-html/template.js +129 -35
- package/dist/core/export-html/tool-renderer.d.ts +2 -8
- package/dist/core/export-html/tool-renderer.d.ts.map +1 -1
- package/dist/core/export-html/tool-renderer.js +15 -2
- package/dist/core/export-html/tool-renderer.js.map +1 -1
- package/dist/core/export-html/vendor/marked.min.js +75 -3
- package/dist/core/extensions/index.d.ts +8 -8
- package/dist/core/extensions/index.d.ts.map +1 -1
- package/dist/core/extensions/index.js.map +1 -1
- package/dist/core/extensions/loader.d.ts +5 -7
- package/dist/core/extensions/loader.d.ts.map +1 -1
- package/dist/core/extensions/loader.js +160 -87
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/extensions/runner.d.ts +32 -13
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +192 -4
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/types.d.ts +217 -69
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/extensions/wrapper.d.ts +3 -3
- package/dist/core/extensions/wrapper.d.ts.map +1 -1
- package/dist/core/extensions/wrapper.js +22 -3
- package/dist/core/extensions/wrapper.js.map +1 -1
- package/dist/core/footer-data-provider.d.ts +12 -0
- package/dist/core/footer-data-provider.d.ts.map +1 -1
- package/dist/core/footer-data-provider.js +30 -2
- package/dist/core/footer-data-provider.js.map +1 -1
- package/dist/core/http-dispatcher.d.ts +22 -0
- package/dist/core/http-dispatcher.d.ts.map +1 -0
- package/dist/core/http-dispatcher.js +96 -0
- package/dist/core/http-dispatcher.js.map +1 -0
- package/dist/core/index.d.ts +9 -8
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +1 -0
- package/dist/core/index.js.map +1 -1
- package/dist/core/keybindings.d.ts +79 -10
- package/dist/core/keybindings.d.ts.map +1 -1
- package/dist/core/keybindings.js +11 -10
- package/dist/core/keybindings.js.map +1 -1
- package/dist/core/messages.d.ts +2 -2
- package/dist/core/messages.d.ts.map +1 -1
- package/dist/core/messages.js.map +1 -1
- package/dist/core/model-config.d.ts +571 -0
- package/dist/core/model-config.d.ts.map +1 -0
- package/dist/core/model-config.js +254 -0
- package/dist/core/model-config.js.map +1 -0
- package/dist/core/model-registry.d.ts +23 -110
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js +65 -616
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/model-resolver.d.ts +20 -7
- package/dist/core/model-resolver.d.ts.map +1 -1
- package/dist/core/model-resolver.js +139 -43
- package/dist/core/model-resolver.js.map +1 -1
- package/dist/core/model-runtime.d.ts +100 -0
- package/dist/core/model-runtime.d.ts.map +1 -0
- package/dist/core/model-runtime.js +602 -0
- package/dist/core/model-runtime.js.map +1 -0
- package/dist/core/models-store.d.ts +22 -0
- package/dist/core/models-store.d.ts.map +1 -0
- package/dist/core/models-store.js +113 -0
- package/dist/core/models-store.js.map +1 -0
- package/dist/core/output-guard.d.ts +1 -0
- package/dist/core/output-guard.d.ts.map +1 -1
- package/dist/core/output-guard.js +52 -22
- package/dist/core/output-guard.js.map +1 -1
- package/dist/core/package-manager.d.ts +21 -4
- package/dist/core/package-manager.d.ts.map +1 -1
- package/dist/core/package-manager.js +428 -191
- package/dist/core/package-manager.js.map +1 -1
- package/dist/core/pi-manifest.d.ts +8 -0
- package/dist/core/pi-manifest.d.ts.map +1 -0
- package/dist/core/pi-manifest.js +25 -0
- package/dist/core/pi-manifest.js.map +1 -0
- package/dist/core/project-trust.d.ts +15 -0
- package/dist/core/project-trust.d.ts.map +1 -0
- package/dist/core/project-trust.js +59 -0
- package/dist/core/project-trust.js.map +1 -0
- package/dist/core/prompt-templates.d.ts +4 -2
- package/dist/core/prompt-templates.d.ts.map +1 -1
- package/dist/core/prompt-templates.js +36 -50
- package/dist/core/prompt-templates.js.map +1 -1
- package/dist/core/provider-attribution.d.ts +4 -0
- package/dist/core/provider-attribution.d.ts.map +1 -0
- package/dist/core/provider-attribution.js +72 -0
- package/dist/core/provider-attribution.js.map +1 -0
- package/dist/core/provider-composer.d.ts +58 -0
- package/dist/core/provider-composer.d.ts.map +1 -0
- package/dist/core/provider-composer.js +396 -0
- package/dist/core/provider-composer.js.map +1 -0
- package/dist/core/radius.d.ts +2 -0
- package/dist/core/radius.d.ts.map +1 -0
- package/dist/core/radius.js +2 -0
- package/dist/core/radius.js.map +1 -0
- package/dist/core/remote-catalog-provider.d.ts +17 -0
- package/dist/core/remote-catalog-provider.d.ts.map +1 -0
- package/dist/core/remote-catalog-provider.js +137 -0
- package/dist/core/remote-catalog-provider.js.map +1 -0
- package/dist/core/resolve-config-value.d.ts +13 -6
- package/dist/core/resolve-config-value.d.ts.map +1 -1
- package/dist/core/resolve-config-value.js +143 -22
- package/dist/core/resolve-config-value.js.map +1 -1
- package/dist/core/resource-loader.d.ts +40 -12
- package/dist/core/resource-loader.d.ts.map +1 -1
- package/dist/core/resource-loader.js +236 -87
- package/dist/core/resource-loader.js.map +1 -1
- package/dist/core/runtime-credentials.d.ts +15 -0
- package/dist/core/runtime-credentials.d.ts.map +1 -0
- package/dist/core/runtime-credentials.js +39 -0
- package/dist/core/runtime-credentials.js.map +1 -0
- package/dist/core/sdk.d.ts +26 -25
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +56 -49
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/session-manager.d.ts +42 -19
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +454 -223
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/settings-manager.d.ts +77 -8
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +255 -67
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/skills.d.ts +2 -2
- package/dist/core/skills.d.ts.map +1 -1
- package/dist/core/skills.js +12 -34
- package/dist/core/skills.js.map +1 -1
- package/dist/core/slash-commands.d.ts +2 -1
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +4 -3
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/source-info.d.ts +1 -1
- package/dist/core/source-info.d.ts.map +1 -1
- package/dist/core/source-info.js.map +1 -1
- package/dist/core/system-prompt.d.ts +1 -1
- package/dist/core/system-prompt.d.ts.map +1 -1
- package/dist/core/system-prompt.js +15 -25
- package/dist/core/system-prompt.js.map +1 -1
- package/dist/core/telemetry.d.ts +7 -1
- package/dist/core/telemetry.d.ts.map +1 -1
- package/dist/core/telemetry.js +7 -1
- package/dist/core/telemetry.js.map +1 -1
- package/dist/core/timings.d.ts +5 -3
- package/dist/core/timings.d.ts.map +1 -1
- package/dist/core/timings.js +26 -16
- package/dist/core/timings.js.map +1 -1
- package/dist/core/tools/bash.d.ts +11 -7
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bash.js +220 -188
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/edit-diff.d.ts +26 -5
- package/dist/core/tools/edit-diff.d.ts.map +1 -1
- package/dist/core/tools/edit-diff.js +110 -23
- package/dist/core/tools/edit-diff.js.map +1 -1
- package/dist/core/tools/edit.d.ts +11 -5
- package/dist/core/tools/edit.d.ts.map +1 -1
- package/dist/core/tools/edit.js +67 -100
- package/dist/core/tools/edit.js.map +1 -1
- package/dist/core/tools/file-mutation-queue.d.ts.map +1 -1
- package/dist/core/tools/file-mutation-queue.js +27 -12
- package/dist/core/tools/file-mutation-queue.js.map +1 -1
- package/dist/core/tools/find.d.ts +10 -3
- package/dist/core/tools/find.d.ts.map +1 -1
- package/dist/core/tools/find.js +41 -37
- package/dist/core/tools/find.js.map +1 -1
- package/dist/core/tools/grep.d.ts +7 -3
- package/dist/core/tools/grep.d.ts.map +1 -1
- package/dist/core/tools/grep.js +12 -8
- package/dist/core/tools/grep.js.map +1 -1
- package/dist/core/tools/index.d.ts +18 -18
- package/dist/core/tools/index.d.ts.map +1 -1
- package/dist/core/tools/index.js.map +1 -1
- package/dist/core/tools/ls.d.ts +7 -3
- package/dist/core/tools/ls.d.ts.map +1 -1
- package/dist/core/tools/ls.js +17 -15
- package/dist/core/tools/ls.js.map +1 -1
- package/dist/core/tools/output-accumulator.d.ts +52 -0
- package/dist/core/tools/output-accumulator.d.ts.map +1 -0
- package/dist/core/tools/output-accumulator.js +184 -0
- package/dist/core/tools/output-accumulator.js.map +1 -0
- package/dist/core/tools/path-utils.d.ts +2 -0
- package/dist/core/tools/path-utils.d.ts.map +1 -1
- package/dist/core/tools/path-utils.js +39 -21
- package/dist/core/tools/path-utils.js.map +1 -1
- package/dist/core/tools/read.d.ts +7 -3
- package/dist/core/tools/read.d.ts.map +1 -1
- package/dist/core/tools/read.js +101 -51
- package/dist/core/tools/read.js.map +1 -1
- package/dist/core/tools/render-utils.d.ts +5 -2
- package/dist/core/tools/render-utils.d.ts.map +1 -1
- package/dist/core/tools/render-utils.js +18 -2
- package/dist/core/tools/render-utils.js.map +1 -1
- package/dist/core/tools/tool-definition-wrapper.d.ts +2 -2
- package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
- package/dist/core/tools/tool-definition-wrapper.js +3 -3
- package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
- package/dist/core/tools/truncate.d.ts.map +1 -1
- package/dist/core/tools/truncate.js +12 -2
- package/dist/core/tools/truncate.js.map +1 -1
- package/dist/core/tools/write.d.ts +6 -2
- package/dist/core/tools/write.d.ts.map +1 -1
- package/dist/core/tools/write.js +35 -45
- package/dist/core/tools/write.js.map +1 -1
- package/dist/core/trust-manager.d.ts +36 -0
- package/dist/core/trust-manager.d.ts.map +1 -0
- package/dist/core/trust-manager.js +202 -0
- package/dist/core/trust-manager.js.map +1 -0
- package/dist/core/usage-totals.d.ts +19 -0
- package/dist/core/usage-totals.d.ts.map +1 -0
- package/dist/core/usage-totals.js +52 -0
- package/dist/core/usage-totals.js.map +1 -0
- package/dist/extensions/index.d.ts +3 -0
- package/dist/extensions/index.d.ts.map +1 -0
- package/dist/extensions/index.js +3 -0
- package/dist/extensions/index.js.map +1 -0
- package/dist/extensions/llama/client.d.ts +61 -0
- package/dist/extensions/llama/client.d.ts.map +1 -0
- package/dist/extensions/llama/client.js +302 -0
- package/dist/extensions/llama/client.js.map +1 -0
- package/dist/extensions/llama/huggingface.d.ts +23 -0
- package/dist/extensions/llama/huggingface.d.ts.map +1 -0
- package/dist/extensions/llama/huggingface.js +141 -0
- package/dist/extensions/llama/huggingface.js.map +1 -0
- package/dist/extensions/llama/index.d.ts +3 -0
- package/dist/extensions/llama/index.d.ts.map +1 -0
- package/dist/extensions/llama/index.js +217 -0
- package/dist/extensions/llama/index.js.map +1 -0
- package/dist/extensions/llama/provider.d.ts +10 -0
- package/dist/extensions/llama/provider.d.ts.map +1 -0
- package/dist/extensions/llama/provider.js +121 -0
- package/dist/extensions/llama/provider.js.map +1 -0
- package/dist/extensions/llama/ui.d.ts +42 -0
- package/dist/extensions/llama/ui.d.ts.map +1 -0
- package/dist/extensions/llama/ui.js +416 -0
- package/dist/extensions/llama/ui.js.map +1 -0
- package/dist/index.d.ts +34 -27
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -5
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts +2 -2
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +311 -101
- package/dist/main.js.map +1 -1
- package/dist/migrations.d.ts +5 -5
- package/dist/migrations.d.ts.map +1 -1
- package/dist/migrations.js +10 -10
- package/dist/migrations.js.map +1 -1
- package/dist/modes/index.d.ts +6 -5
- package/dist/modes/index.d.ts.map +1 -1
- package/dist/modes/index.js.map +1 -1
- package/dist/modes/interactive/components/armin.d.ts +1 -1
- package/dist/modes/interactive/components/armin.d.ts.map +1 -1
- package/dist/modes/interactive/components/armin.js.map +1 -1
- package/dist/modes/interactive/components/assistant-message.d.ts +8 -3
- package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/assistant-message.js +55 -26
- package/dist/modes/interactive/components/assistant-message.js.map +1 -1
- package/dist/modes/interactive/components/bash-execution.d.ts +2 -2
- package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/bash-execution.js +4 -4
- package/dist/modes/interactive/components/bash-execution.js.map +1 -1
- package/dist/modes/interactive/components/bordered-loader.d.ts +2 -2
- package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -1
- package/dist/modes/interactive/components/bordered-loader.js +1 -1
- package/dist/modes/interactive/components/bordered-loader.js.map +1 -1
- package/dist/modes/interactive/components/branch-summary-message.d.ts +2 -2
- package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/branch-summary-message.js +1 -1
- package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
- package/dist/modes/interactive/components/compaction-summary-message.d.ts +2 -2
- package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/compaction-summary-message.js +1 -1
- package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -1
- package/dist/modes/interactive/components/config-selector.d.ts +37 -6
- package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/config-selector.js +318 -34
- package/dist/modes/interactive/components/config-selector.js.map +1 -1
- package/dist/modes/interactive/components/countdown-timer.d.ts +3 -3
- package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -1
- package/dist/modes/interactive/components/countdown-timer.js +2 -2
- package/dist/modes/interactive/components/countdown-timer.js.map +1 -1
- package/dist/modes/interactive/components/custom-editor.d.ts +2 -2
- package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
- package/dist/modes/interactive/components/custom-editor.js +9 -2
- package/dist/modes/interactive/components/custom-editor.js.map +1 -1
- package/dist/modes/interactive/components/custom-entry.d.ts +19 -0
- package/dist/modes/interactive/components/custom-entry.d.ts.map +1 -0
- package/dist/modes/interactive/components/custom-entry.js +52 -0
- package/dist/modes/interactive/components/custom-entry.js.map +1 -0
- package/dist/modes/interactive/components/custom-message.d.ts +6 -4
- package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/custom-message.js +11 -3
- package/dist/modes/interactive/components/custom-message.js.map +1 -1
- package/dist/modes/interactive/components/daxnuts.d.ts +1 -1
- package/dist/modes/interactive/components/daxnuts.d.ts.map +1 -1
- package/dist/modes/interactive/components/daxnuts.js.map +1 -1
- package/dist/modes/interactive/components/diff.d.ts.map +1 -1
- package/dist/modes/interactive/components/diff.js.map +1 -1
- package/dist/modes/interactive/components/dynamic-border.d.ts +1 -1
- package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -1
- package/dist/modes/interactive/components/dynamic-border.js.map +1 -1
- package/dist/modes/interactive/components/extension-editor.d.ts +5 -4
- package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
- package/dist/modes/interactive/components/extension-editor.js +19 -32
- package/dist/modes/interactive/components/extension-editor.js.map +1 -1
- package/dist/modes/interactive/components/extension-input.d.ts +1 -1
- package/dist/modes/interactive/components/extension-input.d.ts.map +1 -1
- package/dist/modes/interactive/components/extension-input.js +1 -1
- package/dist/modes/interactive/components/extension-input.js.map +1 -1
- package/dist/modes/interactive/components/extension-selector.d.ts +3 -1
- package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/extension-selector.js +7 -2
- package/dist/modes/interactive/components/extension-selector.js.map +1 -1
- package/dist/modes/interactive/components/first-time-setup.d.ts +25 -0
- package/dist/modes/interactive/components/first-time-setup.d.ts.map +1 -0
- package/dist/modes/interactive/components/first-time-setup.js +103 -0
- package/dist/modes/interactive/components/first-time-setup.js.map +1 -0
- package/dist/modes/interactive/components/footer.d.ts +9 -4
- package/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/dist/modes/interactive/components/footer.js +52 -31
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/components/index.d.ts +33 -31
- package/dist/modes/interactive/components/index.d.ts.map +1 -1
- package/dist/modes/interactive/components/index.js +2 -0
- package/dist/modes/interactive/components/index.js.map +1 -1
- package/dist/modes/interactive/components/keybinding-hints.d.ts +6 -1
- package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -1
- package/dist/modes/interactive/components/keybinding-hints.js +20 -6
- package/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
- package/dist/modes/interactive/components/login-dialog.d.ts +12 -6
- package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
- package/dist/modes/interactive/components/login-dialog.js +46 -17
- package/dist/modes/interactive/components/login-dialog.js.map +1 -1
- package/dist/modes/interactive/components/markdown-transform.d.ts +3 -0
- package/dist/modes/interactive/components/markdown-transform.d.ts.map +1 -0
- package/dist/modes/interactive/components/markdown-transform.js +19 -0
- package/dist/modes/interactive/components/markdown-transform.js.map +1 -0
- package/dist/modes/interactive/components/mermaid.d.ts +11 -0
- package/dist/modes/interactive/components/mermaid.d.ts.map +1 -0
- package/dist/modes/interactive/components/mermaid.js +75 -0
- package/dist/modes/interactive/components/mermaid.js.map +1 -0
- package/dist/modes/interactive/components/model-selector.d.ts +13 -6
- package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/model-selector.js +92 -44
- package/dist/modes/interactive/components/model-selector.js.map +1 -1
- package/dist/modes/interactive/components/oauth-selector.d.ts +7 -4
- package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/oauth-selector.js +32 -28
- package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
- package/dist/modes/interactive/components/scoped-models-selector.d.ts +5 -1
- package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/scoped-models-selector.js +52 -14
- package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
- package/dist/modes/interactive/components/session-selector-search.d.ts +1 -1
- package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -1
- package/dist/modes/interactive/components/session-selector-search.js +1 -1
- package/dist/modes/interactive/components/session-selector-search.js.map +1 -1
- package/dist/modes/interactive/components/session-selector.d.ts +4 -5
- package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/session-selector.js +18 -16
- package/dist/modes/interactive/components/session-selector.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector.d.ts +23 -2
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +322 -22
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/components/show-images-selector.d.ts +1 -1
- package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/show-images-selector.js +1 -1
- package/dist/modes/interactive/components/show-images-selector.js.map +1 -1
- package/dist/modes/interactive/components/skill-invocation-message.d.ts +2 -2
- package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/skill-invocation-message.js +1 -1
- package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
- package/dist/modes/interactive/components/status-indicator.d.ts +28 -0
- package/dist/modes/interactive/components/status-indicator.d.ts.map +1 -0
- package/dist/modes/interactive/components/status-indicator.js +60 -0
- package/dist/modes/interactive/components/status-indicator.js.map +1 -0
- package/dist/modes/interactive/components/theme-selector.d.ts +1 -1
- package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/theme-selector.js +1 -1
- package/dist/modes/interactive/components/theme-selector.js.map +1 -1
- package/dist/modes/interactive/components/thinking-selector.d.ts +2 -2
- package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/thinking-selector.js +3 -2
- package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
- package/dist/modes/interactive/components/tool-execution.d.ts +2 -2
- package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/tool-execution.js +33 -2
- package/dist/modes/interactive/components/tool-execution.js.map +1 -1
- package/dist/modes/interactive/components/tree-selector.d.ts +7 -2
- package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/tree-selector.js +179 -26
- package/dist/modes/interactive/components/tree-selector.js.map +1 -1
- package/dist/modes/interactive/components/trust-selector.d.ts +23 -0
- package/dist/modes/interactive/components/trust-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/trust-selector.js +91 -0
- package/dist/modes/interactive/components/trust-selector.js.map +1 -0
- package/dist/modes/interactive/components/user-message-selector.d.ts +1 -1
- package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/user-message-selector.js +1 -1
- package/dist/modes/interactive/components/user-message-selector.js.map +1 -1
- package/dist/modes/interactive/components/user-message.d.ts +9 -3
- package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/user-message.js +26 -6
- package/dist/modes/interactive/components/user-message.js.map +1 -1
- package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -1
- package/dist/modes/interactive/components/visual-truncate.js +1 -1
- package/dist/modes/interactive/components/visual-truncate.js.map +1 -1
- package/dist/modes/interactive/external-editor.d.ts +12 -0
- package/dist/modes/interactive/external-editor.d.ts.map +1 -0
- package/dist/modes/interactive/external-editor.js +37 -0
- package/dist/modes/interactive/external-editor.js.map +1 -0
- package/dist/modes/interactive/interactive-mode.d.ts +104 -26
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +1565 -692
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/model-catalog-refresh.d.ts +7 -0
- package/dist/modes/interactive/model-catalog-refresh.d.ts.map +1 -0
- package/dist/modes/interactive/model-catalog-refresh.js +34 -0
- package/dist/modes/interactive/model-catalog-refresh.js.map +1 -0
- package/dist/modes/interactive/model-search.d.ts +12 -0
- package/dist/modes/interactive/model-search.d.ts.map +1 -0
- package/dist/modes/interactive/model-search.js +15 -0
- package/dist/modes/interactive/model-search.js.map +1 -0
- package/dist/modes/interactive/theme/dark.json +10 -5
- package/dist/modes/interactive/theme/light.json +10 -5
- package/dist/modes/interactive/theme/theme-controller.d.ts +40 -0
- package/dist/modes/interactive/theme/theme-controller.d.ts.map +1 -0
- package/dist/modes/interactive/theme/theme-controller.js +125 -0
- package/dist/modes/interactive/theme/theme-controller.js.map +1 -0
- package/dist/modes/interactive/theme/theme-schema.json +22 -5
- package/dist/modes/interactive/theme/theme.d.ts +48 -7
- package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme.js +194 -76
- package/dist/modes/interactive/theme/theme.js.map +1 -1
- package/dist/modes/json-event.d.ts +31 -0
- package/dist/modes/json-event.d.ts.map +1 -0
- package/dist/modes/json-event.js +15 -0
- package/dist/modes/json-event.js.map +1 -0
- package/dist/modes/print-mode.d.ts +3 -3
- package/dist/modes/print-mode.d.ts.map +1 -1
- package/dist/modes/print-mode.js +16 -5
- package/dist/modes/print-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-client.d.ts +33 -10
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client.js +89 -11
- package/dist/modes/rpc/rpc-client.js.map +1 -1
- package/dist/modes/rpc/rpc-mode.d.ts +2 -2
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-mode.js +69 -9
- package/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts +43 -5
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-types.js.map +1 -1
- package/dist/package-manager-cli.d.ts +6 -2
- package/dist/package-manager-cli.d.ts.map +1 -1
- package/dist/package-manager-cli.js +527 -25
- package/dist/package-manager-cli.js.map +1 -1
- package/dist/path-migration.d.ts +13 -0
- package/dist/path-migration.d.ts.map +1 -0
- package/dist/path-migration.js +52 -0
- package/dist/path-migration.js.map +1 -0
- package/dist/rpc-entry.d.ts +3 -0
- package/dist/rpc-entry.d.ts.map +1 -0
- package/dist/rpc-entry.js +11 -0
- package/dist/rpc-entry.js.map +1 -0
- package/dist/server/create-harness.d.ts +26 -0
- package/dist/server/create-harness.d.ts.map +1 -0
- package/dist/server/create-harness.js +106 -0
- package/dist/server/create-harness.js.map +1 -0
- package/dist/utils/abort.d.ts +5 -0
- package/dist/utils/abort.d.ts.map +1 -0
- package/dist/utils/abort.js +48 -0
- package/dist/utils/abort.js.map +1 -0
- package/dist/utils/ansi.d.ts +2 -0
- package/dist/utils/ansi.d.ts.map +1 -0
- package/dist/utils/ansi.js +52 -0
- package/dist/utils/ansi.js.map +1 -0
- package/dist/utils/changelog.d.ts +2 -1
- package/dist/utils/changelog.d.ts.map +1 -1
- package/dist/utils/changelog.js +85 -0
- package/dist/utils/changelog.js.map +1 -1
- package/dist/utils/child-process.d.ts +12 -5
- package/dist/utils/child-process.d.ts.map +1 -1
- package/dist/utils/child-process.js +33 -5
- package/dist/utils/child-process.js.map +1 -1
- package/dist/utils/clipboard-image.d.ts.map +1 -1
- package/dist/utils/clipboard-image.js +4 -4
- package/dist/utils/clipboard-image.js.map +1 -1
- package/dist/utils/clipboard-native.d.ts +4 -1
- package/dist/utils/clipboard-native.d.ts.map +1 -1
- package/dist/utils/clipboard-native.js +14 -8
- package/dist/utils/clipboard-native.js.map +1 -1
- package/dist/utils/clipboard.d.ts +2 -0
- package/dist/utils/clipboard.d.ts.map +1 -1
- package/dist/utils/clipboard.js +129 -46
- package/dist/utils/clipboard.js.map +1 -1
- package/dist/utils/deprecation.d.ts +4 -0
- package/dist/utils/deprecation.d.ts.map +1 -0
- package/dist/utils/deprecation.js +13 -0
- package/dist/utils/deprecation.js.map +1 -0
- package/dist/utils/exif-orientation.d.ts +1 -1
- package/dist/utils/exif-orientation.d.ts.map +1 -1
- package/dist/utils/exif-orientation.js.map +1 -1
- package/dist/utils/git.d.ts.map +1 -1
- package/dist/utils/git.js +54 -22
- package/dist/utils/git.js.map +1 -1
- package/dist/utils/html.d.ts +7 -0
- package/dist/utils/html.d.ts.map +1 -0
- package/dist/utils/html.js +40 -0
- package/dist/utils/html.js.map +1 -0
- package/dist/utils/image-convert.d.ts +1 -0
- package/dist/utils/image-convert.d.ts.map +1 -1
- package/dist/utils/image-convert.js +21 -15
- package/dist/utils/image-convert.js.map +1 -1
- package/dist/utils/image-process.d.ts +18 -0
- package/dist/utils/image-process.d.ts.map +1 -0
- package/dist/utils/image-process.js +83 -0
- package/dist/utils/image-process.js.map +1 -0
- package/dist/utils/image-resize-core.d.ts +30 -0
- package/dist/utils/image-resize-core.d.ts.map +1 -0
- package/dist/utils/image-resize-core.js +124 -0
- package/dist/utils/image-resize-core.js.map +1 -0
- package/dist/utils/image-resize-worker.d.ts +2 -0
- package/dist/utils/image-resize-worker.d.ts.map +1 -0
- package/dist/utils/image-resize-worker.js +31 -0
- package/dist/utils/image-resize-worker.js.map +1 -0
- package/dist/utils/image-resize.d.ts +7 -27
- package/dist/utils/image-resize.d.ts.map +1 -1
- package/dist/utils/image-resize.js +75 -115
- package/dist/utils/image-resize.js.map +1 -1
- package/dist/utils/json.d.ts +3 -0
- package/dist/utils/json.d.ts.map +1 -0
- package/dist/utils/json.js +7 -0
- package/dist/utils/json.js.map +1 -0
- package/dist/utils/management-http.d.ts +23 -0
- package/dist/utils/management-http.d.ts.map +1 -0
- package/dist/utils/management-http.js +50 -0
- package/dist/utils/management-http.js.map +1 -0
- package/dist/utils/mime.d.ts +1 -0
- package/dist/utils/mime.d.ts.map +1 -1
- package/dist/utils/mime.js +100 -16
- package/dist/utils/mime.js.map +1 -1
- package/dist/utils/open-browser.d.ts +9 -0
- package/dist/utils/open-browser.d.ts.map +1 -0
- package/dist/utils/open-browser.js +22 -0
- package/dist/utils/open-browser.js.map +1 -0
- package/dist/utils/paths.d.ts +28 -1
- package/dist/utils/paths.d.ts.map +1 -1
- package/dist/utils/paths.js +97 -2
- package/dist/utils/paths.js.map +1 -1
- 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 +5 -0
- package/dist/utils/pi-user-agent.js.map +1 -0
- package/dist/utils/shell.d.ts +1 -0
- package/dist/utils/shell.d.ts.map +1 -1
- package/dist/utils/shell.js +18 -6
- package/dist/utils/shell.js.map +1 -1
- package/dist/utils/syntax-highlight.d.ts +12 -0
- package/dist/utils/syntax-highlight.d.ts.map +1 -0
- package/dist/utils/syntax-highlight.js +118 -0
- package/dist/utils/syntax-highlight.js.map +1 -0
- package/dist/utils/tool-result-images.d.ts +19 -0
- package/dist/utils/tool-result-images.d.ts.map +1 -0
- package/dist/utils/tool-result-images.js +45 -0
- package/dist/utils/tool-result-images.js.map +1 -0
- package/dist/utils/tools-manager.d.ts +10 -1
- package/dist/utils/tools-manager.d.ts.map +1 -1
- package/dist/utils/tools-manager.js +105 -36
- package/dist/utils/tools-manager.js.map +1 -1
- package/dist/utils/version-check.d.ts +19 -0
- package/dist/utils/version-check.d.ts.map +1 -0
- package/dist/utils/version-check.js +85 -0
- package/dist/utils/version-check.js.map +1 -0
- package/dist/utils/windows-self-update.d.ts +3 -0
- package/dist/utils/windows-self-update.d.ts.map +1 -0
- package/dist/utils/windows-self-update.js +77 -0
- package/dist/utils/windows-self-update.js.map +1 -0
- package/docs/compaction.md +39 -32
- package/docs/containerization.md +113 -0
- package/docs/custom-provider.md +212 -75
- package/docs/development.md +9 -9
- package/docs/docs.json +156 -0
- package/docs/environment-variables.md +186 -0
- package/docs/extensions.md +652 -140
- package/docs/index.md +81 -0
- package/docs/json.md +26 -15
- package/docs/keybindings.md +60 -21
- package/docs/llama-cpp.md +99 -0
- package/docs/models.md +168 -34
- package/docs/packages.md +46 -36
- package/docs/prompt-templates.md +13 -5
- package/docs/providers.md +147 -26
- package/docs/quickstart.md +167 -0
- package/docs/rpc.md +218 -36
- package/docs/sdk.md +190 -125
- package/docs/security.md +59 -0
- package/docs/{session.md → session-format.md} +48 -22
- package/docs/sessions.md +145 -0
- package/docs/settings.md +130 -25
- package/docs/shell-aliases.md +2 -2
- package/docs/skills.md +13 -14
- package/docs/terminal-setup.md +73 -16
- package/docs/termux.md +10 -10
- package/docs/themes.md +41 -16
- package/docs/tmux.md +6 -4
- package/docs/tui.md +85 -61
- package/docs/usage.md +302 -0
- package/docs/windows.md +2 -2
- package/examples/README.md +1 -1
- package/examples/extensions/README.md +12 -9
- package/examples/extensions/bash-spawn-hook.ts +2 -2
- package/examples/extensions/border-status-editor.ts +145 -0
- package/examples/extensions/built-in-tool-renderer.ts +2 -2
- package/examples/extensions/claude-rules.ts +1 -1
- package/examples/extensions/commands.ts +1 -1
- package/examples/extensions/custom-compaction.ts +6 -16
- package/examples/extensions/custom-footer.ts +1 -1
- package/examples/extensions/custom-header.ts +7 -7
- package/examples/extensions/custom-provider-anthropic/index.ts +15 -8
- package/examples/extensions/custom-provider-anthropic/package-lock.json +4 -4
- package/examples/extensions/custom-provider-anthropic/package.json +3 -3
- package/examples/extensions/custom-provider-gitlab-duo/index.ts +65 -9
- package/examples/extensions/custom-provider-gitlab-duo/package.json +2 -2
- package/examples/extensions/custom-provider-gitlab-duo/test.ts +2 -2
- package/examples/extensions/doom-overlay/README.md +1 -1
- package/examples/extensions/doom-overlay/doom-component.ts +4 -4
- package/examples/extensions/doom-overlay/doom-keys.ts +1 -1
- package/examples/extensions/doom-overlay/index.ts +5 -5
- package/examples/extensions/doom-overlay/wad-finder.ts +7 -3
- package/examples/extensions/dynamic-resources/dynamic.json +1 -1
- package/examples/extensions/entry-renderer.ts +41 -0
- package/examples/extensions/git-merge-and-resolve.ts +115 -0
- package/examples/extensions/github-issue-autocomplete.ts +2 -2
- package/examples/extensions/gondolin/index.ts +531 -0
- package/examples/extensions/gondolin/package-lock.json +185 -0
- package/examples/extensions/gondolin/package.json +19 -0
- package/examples/extensions/handoff.ts +50 -14
- package/examples/extensions/hidden-thinking-label.ts +1 -1
- package/examples/extensions/inline-bash.ts +2 -2
- package/examples/extensions/input-transform-streaming.ts +39 -0
- package/examples/extensions/input-transform.ts +2 -2
- package/examples/extensions/interactive-shell.ts +2 -2
- package/examples/extensions/kimi-deferred-tools.ts +61 -0
- package/examples/extensions/mac-system-theme.ts +2 -2
- package/examples/extensions/message-renderer.ts +3 -3
- package/examples/extensions/minimal-mode.ts +2 -2
- package/examples/extensions/modal-editor.ts +2 -2
- package/examples/extensions/model-status.ts +1 -1
- package/examples/extensions/notify.ts +3 -3
- package/examples/extensions/overlay-qa-tests.ts +242 -140
- package/examples/extensions/overlay-test.ts +9 -6
- package/examples/extensions/pirate.ts +1 -1
- package/examples/extensions/plan-mode/README.md +3 -2
- package/examples/extensions/plan-mode/index.ts +90 -40
- package/examples/extensions/preset.ts +16 -10
- package/examples/extensions/project-trust.ts +64 -0
- package/examples/extensions/prompt-customizer.ts +1 -1
- package/examples/extensions/provider-payload.ts +5 -5
- package/examples/extensions/qna.ts +4 -8
- package/examples/extensions/question.ts +41 -19
- package/examples/extensions/questionnaire.ts +50 -29
- package/examples/extensions/rainbow-editor.ts +1 -1
- package/examples/extensions/reload-runtime.ts +2 -2
- package/examples/extensions/rpc-demo.ts +1 -1
- package/examples/extensions/sandbox/index.ts +9 -9
- package/examples/extensions/sandbox/package-lock.json +7 -7
- package/examples/extensions/sandbox/package.json +3 -3
- package/examples/extensions/shutdown-command.ts +5 -5
- package/examples/extensions/snake.ts +2 -2
- package/examples/extensions/space-invaders.ts +2 -2
- package/examples/extensions/ssh.ts +2 -2
- package/examples/extensions/structured-output.ts +1 -1
- package/examples/extensions/subagent/README.md +18 -13
- package/examples/extensions/subagent/agents.ts +42 -11
- package/examples/extensions/subagent/index.ts +76 -30
- package/examples/extensions/summarize.ts +12 -19
- package/examples/extensions/tic-tac-toe.ts +2 -2
- package/examples/extensions/titlebar-spinner.ts +3 -3
- package/examples/extensions/todo.ts +2 -2
- package/examples/extensions/tool-override.ts +1 -1
- package/examples/extensions/tools.ts +7 -2
- package/examples/extensions/truncated-tool.ts +2 -2
- package/examples/extensions/with-deps/package-lock.json +4 -4
- package/examples/extensions/with-deps/package.json +4 -4
- package/examples/extensions/working-indicator.ts +4 -4
- package/examples/extensions/working-message-test.ts +1 -1
- package/examples/rpc-extension-ui.ts +11 -2
- package/examples/sdk/01-minimal.ts +15 -11
- package/examples/sdk/02-custom-model.ts +18 -18
- package/examples/sdk/03-custom-prompt.ts +25 -17
- package/examples/sdk/04-skills.ts +3 -3
- package/examples/sdk/05-tools.ts +8 -4
- package/examples/sdk/06-extensions.ts +13 -9
- package/examples/sdk/07-context-files.ts +2 -2
- package/examples/sdk/08-prompt-templates.ts +3 -3
- package/examples/sdk/09-api-keys-and-oauth.ts +19 -33
- package/examples/sdk/10-settings.ts +4 -4
- package/examples/sdk/11-sessions.ts +4 -0
- package/examples/sdk/12-full-control.ts +22 -21
- package/examples/sdk/README.md +23 -30
- package/npm-shrinkwrap.json +1818 -0
- package/package.json +117 -99
- package/dist/modes/interactive/assets/clankolas.png +0 -0
- package/dist/modes/interactive/components/auth-selector-status.d.ts +0 -20
- package/dist/modes/interactive/components/auth-selector-status.d.ts.map +0 -1
- package/dist/modes/interactive/components/auth-selector-status.js +0 -23
- package/dist/modes/interactive/components/auth-selector-status.js.map +0 -1
- package/dist/modes/interactive/components/earendil-announcement.d.ts +0 -5
- package/dist/modes/interactive/components/earendil-announcement.d.ts.map +0 -1
- package/dist/modes/interactive/components/earendil-announcement.js +0 -40
- package/dist/modes/interactive/components/earendil-announcement.js.map +0 -1
- package/docs/images/exy.png +0 -0
- package/docs/tree.md +0 -233
- package/examples/extensions/antigravity-image-gen.ts +0 -418
- package/examples/extensions/custom-provider-qwen-cli/index.ts +0 -345
- package/examples/extensions/custom-provider-qwen-cli/package.json +0 -16
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
import { existsSync, readdirSync, readFileSync, statSync } from "node:fs";
|
|
2
|
-
import {
|
|
3
|
-
import { join, resolve, sep } from "node:path";
|
|
2
|
+
import { basename, dirname, join, resolve, sep } from "node:path";
|
|
4
3
|
import chalk from "chalk";
|
|
5
4
|
import { CONFIG_DIR_NAME } from "../config.js";
|
|
6
5
|
import { loadThemeFromPath } from "../modes/interactive/theme/theme.js";
|
|
7
|
-
import { isLocalPath } from "../utils/paths.js";
|
|
6
|
+
import { canonicalizePath, isLocalPath, resolvePath } from "../utils/paths.js";
|
|
8
7
|
import { createEventBus } from "./event-bus.js";
|
|
9
|
-
import { createExtensionRuntime, loadExtensionFromFactory,
|
|
8
|
+
import { clearExtensionCache, createExtensionRuntime, loadExtensionFromFactory, loadExtensionsCached, } from "./extensions/loader.js";
|
|
9
|
+
import { findGitPaths } from "./footer-data-provider.js";
|
|
10
10
|
import { DefaultPackageManager } from "./package-manager.js";
|
|
11
11
|
import { loadPromptTemplates } from "./prompt-templates.js";
|
|
12
12
|
import { SettingsManager } from "./settings-manager.js";
|
|
13
13
|
import { loadSkills } from "./skills.js";
|
|
14
14
|
import { createSourceInfo } from "./source-info.js";
|
|
15
|
+
import { resetTimings } from "./timings.js";
|
|
15
16
|
function resolvePromptInput(input, description) {
|
|
16
17
|
if (!input) {
|
|
17
18
|
return undefined;
|
|
@@ -28,11 +29,14 @@ function resolvePromptInput(input, description) {
|
|
|
28
29
|
return input;
|
|
29
30
|
}
|
|
30
31
|
function loadContextFileFromDir(dir) {
|
|
31
|
-
const candidates = ["AGENTS.md", "CLAUDE.md"];
|
|
32
|
+
const candidates = ["AGENTS.override.md", "AGENTS.md", "AGENTS.MD", "CLAUDE.md", "CLAUDE.MD"];
|
|
32
33
|
for (const filename of candidates) {
|
|
33
34
|
const filePath = join(dir, filename);
|
|
34
35
|
if (existsSync(filePath)) {
|
|
35
36
|
try {
|
|
37
|
+
if (!statSync(filePath).isFile()) {
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
36
40
|
return {
|
|
37
41
|
path: filePath,
|
|
38
42
|
content: readFileSync(filePath, "utf-8"),
|
|
@@ -45,9 +49,38 @@ function loadContextFileFromDir(dir) {
|
|
|
45
49
|
}
|
|
46
50
|
return null;
|
|
47
51
|
}
|
|
52
|
+
/**
|
|
53
|
+
* The main repo's context file that a nested linked worktree's own copy shadows: both
|
|
54
|
+
* occupy the same logical repository scope, so loading both applies that context twice. Returns
|
|
55
|
+
* undefined when nothing is shadowed, leaving normal ancestor inheritance alone.
|
|
56
|
+
*
|
|
57
|
+
* Returned canonicalized (realpath), because `git worktree add` writes the `.git`
|
|
58
|
+
* file's `gitdir:` target in realpath form while cwd may still be symlinked
|
|
59
|
+
* (macOS `/tmp` -> `/private/tmp`).
|
|
60
|
+
*/
|
|
61
|
+
function findShadowedContextFile(cwd) {
|
|
62
|
+
const gitPaths = findGitPaths(cwd);
|
|
63
|
+
if (!gitPaths)
|
|
64
|
+
return undefined;
|
|
65
|
+
const commonGitDir = canonicalizePath(gitPaths.commonGitDir);
|
|
66
|
+
const worktreeRoot = canonicalizePath(gitPaths.repoDir);
|
|
67
|
+
const mainRepoRoot = dirname(commonGitDir);
|
|
68
|
+
// False for an ordinary repo, where the two are the same dir, and for a sibling
|
|
69
|
+
// worktree (`git worktree add ../feat`), whose main repo is not an ancestor.
|
|
70
|
+
if (!worktreeRoot.startsWith(`${mainRepoRoot}${sep}`))
|
|
71
|
+
return undefined;
|
|
72
|
+
// dirname of the common git dir is the main worktree root only when that dir is
|
|
73
|
+
// itself checked out from the same repo. In a bare layout (`proj/.bare` +
|
|
74
|
+
// `proj/main`) it is just the directory holding `.bare`, which tracks nothing; a
|
|
75
|
+
// submodule's gitdir has no `commondir`, so it lands under `.git/modules`.
|
|
76
|
+
if (canonicalizePath(join(mainRepoRoot, ".git")) !== commonGitDir)
|
|
77
|
+
return undefined;
|
|
78
|
+
const worktreeContextFile = loadContextFileFromDir(worktreeRoot);
|
|
79
|
+
return worktreeContextFile ? join(mainRepoRoot, basename(worktreeContextFile.path)) : undefined;
|
|
80
|
+
}
|
|
48
81
|
export function loadProjectContextFiles(options) {
|
|
49
|
-
const resolvedCwd = options.cwd;
|
|
50
|
-
const resolvedAgentDir = options.agentDir;
|
|
82
|
+
const resolvedCwd = resolvePath(options.cwd);
|
|
83
|
+
const resolvedAgentDir = resolvePath(options.agentDir);
|
|
51
84
|
const contextFiles = [];
|
|
52
85
|
const seenPaths = new Set();
|
|
53
86
|
const globalContext = loadContextFileFromDir(resolvedAgentDir);
|
|
@@ -56,17 +89,16 @@ export function loadProjectContextFiles(options) {
|
|
|
56
89
|
seenPaths.add(globalContext.path);
|
|
57
90
|
}
|
|
58
91
|
const ancestorContextFiles = [];
|
|
92
|
+
const shadowedContextFile = findShadowedContextFile(resolvedCwd);
|
|
59
93
|
let currentDir = resolvedCwd;
|
|
60
|
-
const root = resolve("/");
|
|
61
94
|
while (true) {
|
|
62
95
|
const contextFile = loadContextFileFromDir(currentDir);
|
|
63
|
-
|
|
96
|
+
const isShadowed = shadowedContextFile !== undefined && canonicalizePath(contextFile?.path ?? "") === shadowedContextFile;
|
|
97
|
+
if (contextFile && !isShadowed && !seenPaths.has(contextFile.path)) {
|
|
64
98
|
ancestorContextFiles.unshift(contextFile);
|
|
65
99
|
seenPaths.add(contextFile.path);
|
|
66
100
|
}
|
|
67
|
-
|
|
68
|
-
break;
|
|
69
|
-
const parentDir = resolve(currentDir, "..");
|
|
101
|
+
const parentDir = dirname(currentDir);
|
|
70
102
|
if (parentDir === currentDir)
|
|
71
103
|
break;
|
|
72
104
|
currentDir = parentDir;
|
|
@@ -108,21 +140,26 @@ export class DefaultResourceLoader {
|
|
|
108
140
|
themeDiagnostics;
|
|
109
141
|
agentsFiles;
|
|
110
142
|
systemPrompt;
|
|
143
|
+
systemPromptSourcePath;
|
|
111
144
|
appendSystemPrompt;
|
|
145
|
+
appendSystemPromptSourcePaths;
|
|
112
146
|
lastSkillPaths;
|
|
113
147
|
extensionSkillSourceInfos;
|
|
114
148
|
extensionPromptSourceInfos;
|
|
115
149
|
extensionThemeSourceInfos;
|
|
150
|
+
resourceMetadataByPath;
|
|
116
151
|
lastPromptPaths;
|
|
117
152
|
lastThemePaths;
|
|
153
|
+
loaded;
|
|
118
154
|
constructor(options) {
|
|
119
|
-
this.cwd = options.cwd;
|
|
120
|
-
this.agentDir = options.agentDir;
|
|
155
|
+
this.cwd = resolvePath(options.cwd);
|
|
156
|
+
this.agentDir = resolvePath(options.agentDir);
|
|
121
157
|
this.settingsManager = options.settingsManager ?? SettingsManager.create(this.cwd, this.agentDir);
|
|
122
158
|
this.eventBus = options.eventBus ?? createEventBus();
|
|
123
159
|
this.packageManager = new DefaultPackageManager({
|
|
124
160
|
cwd: this.cwd,
|
|
125
161
|
agentDir: this.agentDir,
|
|
162
|
+
cacheDir: options.cacheDir,
|
|
126
163
|
settingsManager: this.settingsManager,
|
|
127
164
|
});
|
|
128
165
|
this.additionalExtensionPaths = options.additionalExtensionPaths ?? [];
|
|
@@ -153,12 +190,15 @@ export class DefaultResourceLoader {
|
|
|
153
190
|
this.themeDiagnostics = [];
|
|
154
191
|
this.agentsFiles = [];
|
|
155
192
|
this.appendSystemPrompt = [];
|
|
193
|
+
this.appendSystemPromptSourcePaths = [];
|
|
156
194
|
this.lastSkillPaths = [];
|
|
157
195
|
this.extensionSkillSourceInfos = new Map();
|
|
158
196
|
this.extensionPromptSourceInfos = new Map();
|
|
159
197
|
this.extensionThemeSourceInfos = new Map();
|
|
198
|
+
this.resourceMetadataByPath = new Map();
|
|
160
199
|
this.lastPromptPaths = [];
|
|
161
200
|
this.lastThemePaths = [];
|
|
201
|
+
this.loaded = false;
|
|
162
202
|
}
|
|
163
203
|
getExtensions() {
|
|
164
204
|
return this.extensionsResult;
|
|
@@ -178,9 +218,15 @@ export class DefaultResourceLoader {
|
|
|
178
218
|
getSystemPrompt() {
|
|
179
219
|
return this.systemPrompt;
|
|
180
220
|
}
|
|
221
|
+
getSystemPromptSource() {
|
|
222
|
+
return this.systemPromptSourcePath ? { path: this.systemPromptSourcePath } : undefined;
|
|
223
|
+
}
|
|
181
224
|
getAppendSystemPrompt() {
|
|
182
225
|
return this.appendSystemPrompt;
|
|
183
226
|
}
|
|
227
|
+
getAppendSystemPromptSources() {
|
|
228
|
+
return this.appendSystemPromptSourcePaths.map((path) => ({ path }));
|
|
229
|
+
}
|
|
184
230
|
extendResources(paths) {
|
|
185
231
|
const skillPaths = this.normalizeExtensionPaths(paths.skillPaths ?? []);
|
|
186
232
|
const promptPaths = this.normalizeExtensionPaths(paths.promptPaths ?? []);
|
|
@@ -196,24 +242,44 @@ export class DefaultResourceLoader {
|
|
|
196
242
|
}
|
|
197
243
|
if (skillPaths.length > 0) {
|
|
198
244
|
this.lastSkillPaths = this.mergePaths(this.lastSkillPaths, skillPaths.map((entry) => entry.path));
|
|
199
|
-
this.updateSkillsFromPaths(this.lastSkillPaths);
|
|
245
|
+
this.updateSkillsFromPaths(this.lastSkillPaths, this.resourceMetadataByPath);
|
|
200
246
|
}
|
|
201
247
|
if (promptPaths.length > 0) {
|
|
202
248
|
this.lastPromptPaths = this.mergePaths(this.lastPromptPaths, promptPaths.map((entry) => entry.path));
|
|
203
|
-
this.updatePromptsFromPaths(this.lastPromptPaths);
|
|
249
|
+
this.updatePromptsFromPaths(this.lastPromptPaths, this.resourceMetadataByPath);
|
|
204
250
|
}
|
|
205
251
|
if (themePaths.length > 0) {
|
|
206
252
|
this.lastThemePaths = this.mergePaths(this.lastThemePaths, themePaths.map((entry) => entry.path));
|
|
207
|
-
this.updateThemesFromPaths(this.lastThemePaths);
|
|
253
|
+
this.updateThemesFromPaths(this.lastThemePaths, this.resourceMetadataByPath);
|
|
208
254
|
}
|
|
209
255
|
}
|
|
210
|
-
async
|
|
256
|
+
async loadProjectTrustExtensions() {
|
|
257
|
+
// Force untrusted project settings for the bootstrap pass. This keeps project-local
|
|
258
|
+
// extensions/packages out while still loading user/global and temporary CLI extensions.
|
|
259
|
+
this.settingsManager.setProjectTrusted(false);
|
|
260
|
+
await this.settingsManager.reload();
|
|
261
|
+
return this.loadCurrentExtensionSet({ includeInlineFactories: true });
|
|
262
|
+
}
|
|
263
|
+
async reload(options) {
|
|
264
|
+
resetTimings("extensions");
|
|
265
|
+
if (this.loaded) {
|
|
266
|
+
clearExtensionCache();
|
|
267
|
+
}
|
|
268
|
+
let preTrustExtensions;
|
|
269
|
+
if (options?.resolveProjectTrust) {
|
|
270
|
+
preTrustExtensions = await this.loadProjectTrustExtensions();
|
|
271
|
+
const projectTrusted = await options.resolveProjectTrust({ extensionsResult: preTrustExtensions });
|
|
272
|
+
this.settingsManager.setProjectTrusted(projectTrusted);
|
|
273
|
+
}
|
|
274
|
+
// reload() preserves SettingsManager.projectTrusted and reloads settings for that trust state.
|
|
211
275
|
await this.settingsManager.reload();
|
|
212
276
|
const resolvedPaths = await this.packageManager.resolve();
|
|
213
277
|
const cliExtensionPaths = await this.packageManager.resolveExtensionSources(this.additionalExtensionPaths, {
|
|
214
278
|
temporary: true,
|
|
215
279
|
});
|
|
216
|
-
|
|
280
|
+
// Kept on the instance so post-reload passes (extendResources) can still resolve package metadata.
|
|
281
|
+
this.resourceMetadataByPath = new Map();
|
|
282
|
+
const metadataByPath = this.resourceMetadataByPath;
|
|
217
283
|
this.extensionSkillSourceInfos = new Map();
|
|
218
284
|
this.extensionPromptSourceInfos = new Map();
|
|
219
285
|
this.extensionThemeSourceInfos = new Map();
|
|
@@ -231,29 +297,7 @@ export class DefaultResourceLoader {
|
|
|
231
297
|
const enabledSkillResources = getEnabledResources(resolvedPaths.skills);
|
|
232
298
|
const enabledPrompts = getEnabledPaths(resolvedPaths.prompts);
|
|
233
299
|
const enabledThemes = getEnabledPaths(resolvedPaths.themes);
|
|
234
|
-
const
|
|
235
|
-
if (resource.metadata.source !== "auto" && resource.metadata.origin !== "package") {
|
|
236
|
-
return resource.path;
|
|
237
|
-
}
|
|
238
|
-
try {
|
|
239
|
-
const stats = statSync(resource.path);
|
|
240
|
-
if (!stats.isDirectory()) {
|
|
241
|
-
return resource.path;
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
catch {
|
|
245
|
-
return resource.path;
|
|
246
|
-
}
|
|
247
|
-
const skillFile = join(resource.path, "SKILL.md");
|
|
248
|
-
if (existsSync(skillFile)) {
|
|
249
|
-
if (!metadataByPath.has(skillFile)) {
|
|
250
|
-
metadataByPath.set(skillFile, resource.metadata);
|
|
251
|
-
}
|
|
252
|
-
return skillFile;
|
|
253
|
-
}
|
|
254
|
-
return resource.path;
|
|
255
|
-
};
|
|
256
|
-
const enabledSkills = enabledSkillResources.map(mapSkillPath);
|
|
300
|
+
const enabledSkills = enabledSkillResources.map((resource) => this.mapSkillPath(resource, metadataByPath));
|
|
257
301
|
// Add CLI paths metadata
|
|
258
302
|
for (const r of cliExtensionPaths.extensions) {
|
|
259
303
|
if (!metadataByPath.has(r.path)) {
|
|
@@ -272,19 +316,13 @@ export class DefaultResourceLoader {
|
|
|
272
316
|
const extensionPaths = this.noExtensions
|
|
273
317
|
? cliEnabledExtensions
|
|
274
318
|
: this.mergePaths(cliEnabledExtensions, enabledExtensions);
|
|
275
|
-
const extensionsResult = await
|
|
276
|
-
const inlineExtensions = await this.loadExtensionFactories(extensionsResult.runtime);
|
|
277
|
-
extensionsResult.extensions.push(...inlineExtensions.extensions);
|
|
278
|
-
extensionsResult.errors.push(...inlineExtensions.errors);
|
|
279
|
-
// Detect extension conflicts (tools, commands, flags with same names from different extensions)
|
|
280
|
-
// Keep all extensions loaded. Conflicts are reported as diagnostics, and precedence is handled by load order.
|
|
281
|
-
const conflicts = this.detectExtensionConflicts(extensionsResult.extensions);
|
|
282
|
-
for (const conflict of conflicts) {
|
|
283
|
-
extensionsResult.errors.push({ path: conflict.path, error: conflict.message });
|
|
284
|
-
}
|
|
319
|
+
const extensionsResult = await this.loadFinalExtensionSet(extensionPaths, preTrustExtensions);
|
|
285
320
|
for (const p of this.additionalExtensionPaths) {
|
|
286
|
-
if (isLocalPath(p)
|
|
287
|
-
|
|
321
|
+
if (isLocalPath(p)) {
|
|
322
|
+
const resolved = this.resolveResourcePath(p);
|
|
323
|
+
if (!existsSync(resolved)) {
|
|
324
|
+
extensionsResult.errors.push({ path: resolved, error: `Extension path does not exist: ${resolved}` });
|
|
325
|
+
}
|
|
288
326
|
}
|
|
289
327
|
}
|
|
290
328
|
this.extensionsResult = this.extensionsOverride ? this.extensionsOverride(extensionsResult) : extensionsResult;
|
|
@@ -295,8 +333,11 @@ export class DefaultResourceLoader {
|
|
|
295
333
|
this.lastSkillPaths = skillPaths;
|
|
296
334
|
this.updateSkillsFromPaths(skillPaths, metadataByPath);
|
|
297
335
|
for (const p of this.additionalSkillPaths) {
|
|
298
|
-
if (isLocalPath(p)
|
|
299
|
-
this.
|
|
336
|
+
if (isLocalPath(p)) {
|
|
337
|
+
const resolved = this.resolveResourcePath(p);
|
|
338
|
+
if (!existsSync(resolved) && !this.skillDiagnostics.some((d) => d.path === resolved)) {
|
|
339
|
+
this.skillDiagnostics.push({ type: "error", message: "Skill path does not exist", path: resolved });
|
|
340
|
+
}
|
|
300
341
|
}
|
|
301
342
|
}
|
|
302
343
|
const promptPaths = this.noPromptTemplates
|
|
@@ -305,8 +346,15 @@ export class DefaultResourceLoader {
|
|
|
305
346
|
this.lastPromptPaths = promptPaths;
|
|
306
347
|
this.updatePromptsFromPaths(promptPaths, metadataByPath);
|
|
307
348
|
for (const p of this.additionalPromptTemplatePaths) {
|
|
308
|
-
if (isLocalPath(p)
|
|
309
|
-
this.
|
|
349
|
+
if (isLocalPath(p)) {
|
|
350
|
+
const resolved = this.resolveResourcePath(p);
|
|
351
|
+
if (!existsSync(resolved) && !this.promptDiagnostics.some((d) => d.path === resolved)) {
|
|
352
|
+
this.promptDiagnostics.push({
|
|
353
|
+
type: "error",
|
|
354
|
+
message: "Prompt template path does not exist",
|
|
355
|
+
path: resolved,
|
|
356
|
+
});
|
|
357
|
+
}
|
|
310
358
|
}
|
|
311
359
|
}
|
|
312
360
|
const themePaths = this.noThemes
|
|
@@ -315,31 +363,139 @@ export class DefaultResourceLoader {
|
|
|
315
363
|
this.lastThemePaths = themePaths;
|
|
316
364
|
this.updateThemesFromPaths(themePaths, metadataByPath);
|
|
317
365
|
for (const p of this.additionalThemePaths) {
|
|
318
|
-
|
|
319
|
-
|
|
366
|
+
const resolved = this.resolveResourcePath(p);
|
|
367
|
+
if (!existsSync(resolved) && !this.themeDiagnostics.some((d) => d.path === resolved)) {
|
|
368
|
+
this.themeDiagnostics.push({ type: "error", message: "Theme path does not exist", path: resolved });
|
|
320
369
|
}
|
|
321
370
|
}
|
|
322
371
|
const agentsFiles = {
|
|
323
|
-
agentsFiles: this.noContextFiles
|
|
372
|
+
agentsFiles: this.noContextFiles
|
|
373
|
+
? []
|
|
374
|
+
: loadProjectContextFiles({
|
|
375
|
+
cwd: this.cwd,
|
|
376
|
+
agentDir: this.agentDir,
|
|
377
|
+
}),
|
|
324
378
|
};
|
|
325
379
|
const resolvedAgentsFiles = this.agentsFilesOverride ? this.agentsFilesOverride(agentsFiles) : agentsFiles;
|
|
326
380
|
this.agentsFiles = resolvedAgentsFiles.agentsFiles;
|
|
327
|
-
const
|
|
381
|
+
const systemPromptSource = this.systemPromptSource ?? this.discoverSystemPromptFile();
|
|
382
|
+
const baseSystemPrompt = resolvePromptInput(systemPromptSource, "system prompt");
|
|
328
383
|
this.systemPrompt = this.systemPromptOverride ? this.systemPromptOverride(baseSystemPrompt) : baseSystemPrompt;
|
|
329
|
-
|
|
330
|
-
(
|
|
384
|
+
this.systemPromptSourcePath =
|
|
385
|
+
systemPromptSource && existsSync(systemPromptSource) ? resolvePath(systemPromptSource) : undefined;
|
|
386
|
+
let appendSources = this.appendSystemPromptSource;
|
|
387
|
+
if (!appendSources) {
|
|
388
|
+
const discoveredAppendSystemPromptFile = this.discoverAppendSystemPromptFile();
|
|
389
|
+
appendSources = discoveredAppendSystemPromptFile ? [discoveredAppendSystemPromptFile] : [];
|
|
390
|
+
}
|
|
331
391
|
const baseAppend = appendSources
|
|
332
392
|
.map((s) => resolvePromptInput(s, "append system prompt"))
|
|
333
393
|
.filter((s) => s !== undefined);
|
|
334
394
|
this.appendSystemPrompt = this.appendSystemPromptOverride
|
|
335
395
|
? this.appendSystemPromptOverride(baseAppend)
|
|
336
396
|
: baseAppend;
|
|
397
|
+
this.appendSystemPromptSourcePaths = appendSources
|
|
398
|
+
.filter((source) => existsSync(source))
|
|
399
|
+
.map((source) => resolvePath(source));
|
|
400
|
+
this.loaded = true;
|
|
401
|
+
}
|
|
402
|
+
async loadCurrentExtensionSet(options) {
|
|
403
|
+
const resolvedPaths = await this.packageManager.resolve();
|
|
404
|
+
const cliExtensionPaths = await this.packageManager.resolveExtensionSources(this.additionalExtensionPaths, {
|
|
405
|
+
temporary: true,
|
|
406
|
+
});
|
|
407
|
+
const enabledExtensions = resolvedPaths.extensions.filter((r) => r.enabled).map((r) => r.path);
|
|
408
|
+
const cliEnabledExtensions = cliExtensionPaths.extensions.filter((r) => r.enabled).map((r) => r.path);
|
|
409
|
+
const extensionPaths = this.noExtensions
|
|
410
|
+
? cliEnabledExtensions
|
|
411
|
+
: this.mergePaths(cliEnabledExtensions, enabledExtensions);
|
|
412
|
+
const extensionsResult = await loadExtensionsCached(extensionPaths, this.cwd, this.eventBus);
|
|
413
|
+
if (!options.includeInlineFactories) {
|
|
414
|
+
return extensionsResult;
|
|
415
|
+
}
|
|
416
|
+
const inlineExtensions = await this.loadExtensionFactories(extensionsResult.runtime);
|
|
417
|
+
extensionsResult.extensions.push(...inlineExtensions.extensions);
|
|
418
|
+
extensionsResult.errors.push(...inlineExtensions.errors);
|
|
419
|
+
return extensionsResult;
|
|
420
|
+
}
|
|
421
|
+
resolveExtensionLoadPath(path) {
|
|
422
|
+
return resolvePath(path, this.cwd, { normalizeUnicodeSpaces: true });
|
|
423
|
+
}
|
|
424
|
+
async loadFinalExtensionSet(extensionPaths, preTrustExtensions) {
|
|
425
|
+
if (!preTrustExtensions) {
|
|
426
|
+
const extensionsResult = await loadExtensionsCached(extensionPaths, this.cwd, this.eventBus);
|
|
427
|
+
const inlineExtensions = await this.loadExtensionFactories(extensionsResult.runtime);
|
|
428
|
+
extensionsResult.extensions.push(...inlineExtensions.extensions);
|
|
429
|
+
extensionsResult.errors.push(...inlineExtensions.errors);
|
|
430
|
+
this.addExtensionConflictDiagnostics(extensionsResult);
|
|
431
|
+
return extensionsResult;
|
|
432
|
+
}
|
|
433
|
+
const preloadedByPath = new Map(preTrustExtensions.extensions
|
|
434
|
+
.filter((extension) => !extension.path.startsWith("<inline:"))
|
|
435
|
+
.map((extension) => [extension.resolvedPath, extension]));
|
|
436
|
+
const failedPreloadPaths = new Set(preTrustExtensions.errors.map((error) => this.resolveExtensionLoadPath(error.path)));
|
|
437
|
+
const remainingPaths = extensionPaths.filter((path) => {
|
|
438
|
+
const resolvedPath = this.resolveExtensionLoadPath(path);
|
|
439
|
+
return !preloadedByPath.has(resolvedPath) && !failedPreloadPaths.has(resolvedPath);
|
|
440
|
+
});
|
|
441
|
+
const remainingExtensions = await loadExtensionsCached(remainingPaths, this.cwd, this.eventBus, preTrustExtensions.runtime);
|
|
442
|
+
const loadedByPath = new Map(preloadedByPath);
|
|
443
|
+
for (const extension of remainingExtensions.extensions) {
|
|
444
|
+
loadedByPath.set(extension.resolvedPath, extension);
|
|
445
|
+
}
|
|
446
|
+
const inlineExtensions = preTrustExtensions.extensions.filter((extension) => extension.path.startsWith("<inline:"));
|
|
447
|
+
const orderedExtensions = extensionPaths
|
|
448
|
+
.map((path) => loadedByPath.get(this.resolveExtensionLoadPath(path)))
|
|
449
|
+
.filter((extension) => extension !== undefined);
|
|
450
|
+
orderedExtensions.push(...inlineExtensions);
|
|
451
|
+
const extensionsResult = {
|
|
452
|
+
extensions: orderedExtensions,
|
|
453
|
+
errors: [...preTrustExtensions.errors, ...remainingExtensions.errors],
|
|
454
|
+
runtime: preTrustExtensions.runtime,
|
|
455
|
+
};
|
|
456
|
+
this.addExtensionConflictDiagnostics(extensionsResult);
|
|
457
|
+
return extensionsResult;
|
|
458
|
+
}
|
|
459
|
+
addExtensionConflictDiagnostics(extensionsResult) {
|
|
460
|
+
// Detect extension conflicts (tools, commands, flags with same names from different extensions)
|
|
461
|
+
// Keep all extensions loaded. Conflicts are reported as diagnostics, and precedence is handled by load order.
|
|
462
|
+
const conflicts = this.detectExtensionConflicts(extensionsResult.extensions);
|
|
463
|
+
for (const conflict of conflicts) {
|
|
464
|
+
extensionsResult.errors.push({ path: conflict.path, error: conflict.message });
|
|
465
|
+
}
|
|
466
|
+
}
|
|
467
|
+
mapSkillPath(resource, metadataByPath) {
|
|
468
|
+
if (resource.metadata.source !== "auto" && resource.metadata.origin !== "package") {
|
|
469
|
+
return resource.path;
|
|
470
|
+
}
|
|
471
|
+
try {
|
|
472
|
+
const stats = statSync(resource.path);
|
|
473
|
+
if (!stats.isDirectory()) {
|
|
474
|
+
return resource.path;
|
|
475
|
+
}
|
|
476
|
+
}
|
|
477
|
+
catch {
|
|
478
|
+
return resource.path;
|
|
479
|
+
}
|
|
480
|
+
const skillFile = join(resource.path, "SKILL.md");
|
|
481
|
+
if (existsSync(skillFile)) {
|
|
482
|
+
if (!metadataByPath.has(skillFile)) {
|
|
483
|
+
metadataByPath.set(skillFile, resource.metadata);
|
|
484
|
+
}
|
|
485
|
+
return skillFile;
|
|
486
|
+
}
|
|
487
|
+
return resource.path;
|
|
337
488
|
}
|
|
338
489
|
normalizeExtensionPaths(entries) {
|
|
339
|
-
return entries.map((entry) =>
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
490
|
+
return entries.map((entry) => {
|
|
491
|
+
const metadata = entry.metadata.baseDir
|
|
492
|
+
? { ...entry.metadata, baseDir: this.resolveResourcePath(entry.metadata.baseDir) }
|
|
493
|
+
: entry.metadata;
|
|
494
|
+
return {
|
|
495
|
+
path: this.resolveResourcePath(entry.path),
|
|
496
|
+
metadata,
|
|
497
|
+
};
|
|
498
|
+
});
|
|
343
499
|
}
|
|
344
500
|
updateSkillsFromPaths(skillPaths, metadataByPath) {
|
|
345
501
|
let skillsResult;
|
|
@@ -498,26 +654,16 @@ export class DefaultResourceLoader {
|
|
|
498
654
|
const seen = new Set();
|
|
499
655
|
for (const p of [...primary, ...additional]) {
|
|
500
656
|
const resolved = this.resolveResourcePath(p);
|
|
501
|
-
|
|
657
|
+
const canonicalPath = canonicalizePath(resolved);
|
|
658
|
+
if (seen.has(canonicalPath))
|
|
502
659
|
continue;
|
|
503
|
-
seen.add(
|
|
660
|
+
seen.add(canonicalPath);
|
|
504
661
|
merged.push(resolved);
|
|
505
662
|
}
|
|
506
663
|
return merged;
|
|
507
664
|
}
|
|
508
665
|
resolveResourcePath(p) {
|
|
509
|
-
|
|
510
|
-
let expanded = trimmed;
|
|
511
|
-
if (trimmed === "~") {
|
|
512
|
-
expanded = homedir();
|
|
513
|
-
}
|
|
514
|
-
else if (trimmed.startsWith("~/")) {
|
|
515
|
-
expanded = join(homedir(), trimmed.slice(2));
|
|
516
|
-
}
|
|
517
|
-
else if (trimmed.startsWith("~")) {
|
|
518
|
-
expanded = join(homedir(), trimmed.slice(1));
|
|
519
|
-
}
|
|
520
|
-
return resolve(this.cwd, expanded);
|
|
666
|
+
return resolvePath(p, this.cwd, { trim: true });
|
|
521
667
|
}
|
|
522
668
|
loadThemes(paths, includeDefaults = true) {
|
|
523
669
|
const themes = [];
|
|
@@ -529,7 +675,7 @@ export class DefaultResourceLoader {
|
|
|
529
675
|
}
|
|
530
676
|
}
|
|
531
677
|
for (const p of paths) {
|
|
532
|
-
const resolved =
|
|
678
|
+
const resolved = this.resolveResourcePath(p);
|
|
533
679
|
if (!existsSync(resolved)) {
|
|
534
680
|
diagnostics.push({ type: "warning", message: "theme path does not exist", path: resolved });
|
|
535
681
|
continue;
|
|
@@ -595,10 +741,13 @@ export class DefaultResourceLoader {
|
|
|
595
741
|
async loadExtensionFactories(runtime) {
|
|
596
742
|
const extensions = [];
|
|
597
743
|
const errors = [];
|
|
598
|
-
for (const [index,
|
|
599
|
-
const
|
|
744
|
+
for (const [index, input] of this.extensionFactories.entries()) {
|
|
745
|
+
const isNamed = typeof input !== "function";
|
|
746
|
+
const factory = isNamed ? input.factory : input;
|
|
747
|
+
const extensionPath = `<inline:${isNamed ? input.name : index + 1}>`;
|
|
600
748
|
try {
|
|
601
749
|
const extension = await loadExtensionFromFactory(factory, this.cwd, this.eventBus, runtime, extensionPath);
|
|
750
|
+
extension.hidden = isNamed && input.hidden;
|
|
602
751
|
extensions.push(extension);
|
|
603
752
|
}
|
|
604
753
|
catch (error) {
|
|
@@ -659,7 +808,7 @@ export class DefaultResourceLoader {
|
|
|
659
808
|
}
|
|
660
809
|
discoverSystemPromptFile() {
|
|
661
810
|
const projectPath = join(this.cwd, CONFIG_DIR_NAME, "SYSTEM.md");
|
|
662
|
-
if (existsSync(projectPath)) {
|
|
811
|
+
if (this.settingsManager.isProjectTrusted() && existsSync(projectPath)) {
|
|
663
812
|
return projectPath;
|
|
664
813
|
}
|
|
665
814
|
const globalPath = join(this.agentDir, "SYSTEM.md");
|
|
@@ -670,7 +819,7 @@ export class DefaultResourceLoader {
|
|
|
670
819
|
}
|
|
671
820
|
discoverAppendSystemPromptFile() {
|
|
672
821
|
const projectPath = join(this.cwd, CONFIG_DIR_NAME, "APPEND_SYSTEM.md");
|
|
673
|
-
if (existsSync(projectPath)) {
|
|
822
|
+
if (this.settingsManager.isProjectTrusted() && existsSync(projectPath)) {
|
|
674
823
|
return projectPath;
|
|
675
824
|
}
|
|
676
825
|
const globalPath = join(this.agentDir, "APPEND_SYSTEM.md");
|