@code-yeongyu/senpi 2026.6.6-3 → 2026.6.10-2
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 +30 -0
- package/README.md +102 -100
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +1 -2
- package/dist/cli/args.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/startup-ui.d.ts +7 -0
- package/dist/cli/startup-ui.d.ts.map +1 -0
- package/dist/cli/startup-ui.js +59 -0
- package/dist/cli/startup-ui.js.map +1 -0
- package/dist/cli.js +10 -1
- package/dist/cli.js.map +1 -1
- package/dist/core/agent-session-runtime.d.ts +3 -1
- package/dist/core/agent-session-runtime.d.ts.map +1 -1
- package/dist/core/agent-session-runtime.js +4 -1
- package/dist/core/agent-session-runtime.js.map +1 -1
- package/dist/core/agent-session-services.d.ts +2 -1
- package/dist/core/agent-session-services.d.ts.map +1 -1
- package/dist/core/agent-session-services.js +2 -2
- package/dist/core/agent-session-services.js.map +1 -1
- package/dist/core/agent-session.d.ts +1 -0
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +6 -0
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/compaction/utils.d.ts +1 -1
- package/dist/core/compaction/utils.d.ts.map +1 -1
- package/dist/core/compaction/utils.js +1 -1
- package/dist/core/compaction/utils.js.map +1 -1
- package/dist/core/extensions/builtin/compaction/degradation-monitor.d.ts +0 -1
- package/dist/core/extensions/builtin/compaction/degradation-monitor.d.ts.map +1 -1
- package/dist/core/extensions/builtin/compaction/degradation-monitor.js +0 -1
- package/dist/core/extensions/builtin/compaction/degradation-monitor.js.map +1 -1
- package/dist/core/extensions/builtin/compaction/index.d.ts.map +1 -1
- package/dist/core/extensions/builtin/compaction/index.js +4 -4
- package/dist/core/extensions/builtin/compaction/index.js.map +1 -1
- package/dist/core/extensions/builtin/compaction/policy.d.ts +0 -5
- package/dist/core/extensions/builtin/compaction/policy.d.ts.map +1 -1
- package/dist/core/extensions/builtin/compaction/policy.js +0 -4
- package/dist/core/extensions/builtin/compaction/policy.js.map +1 -1
- package/dist/core/extensions/builtin/compaction/speculative.d.ts +0 -6
- package/dist/core/extensions/builtin/compaction/speculative.d.ts.map +1 -1
- package/dist/core/extensions/builtin/compaction/speculative.js +0 -3
- package/dist/core/extensions/builtin/compaction/speculative.js.map +1 -1
- package/dist/core/extensions/builtin/gpt-apply-patch/extension.d.ts +1 -1
- package/dist/core/extensions/builtin/gpt-apply-patch/extension.d.ts.map +1 -1
- package/dist/core/extensions/builtin/gpt-apply-patch/extension.js +10 -2
- package/dist/core/extensions/builtin/gpt-apply-patch/extension.js.map +1 -1
- package/dist/core/extensions/builtin/permission-system/cli.d.ts +0 -3
- package/dist/core/extensions/builtin/permission-system/cli.d.ts.map +1 -1
- package/dist/core/extensions/builtin/permission-system/cli.js +0 -13
- package/dist/core/extensions/builtin/permission-system/cli.js.map +1 -1
- package/dist/core/extensions/builtin/todotools/index.d.ts.map +1 -1
- package/dist/core/extensions/builtin/todotools/index.js +0 -2
- package/dist/core/extensions/builtin/todotools/index.js.map +1 -1
- package/dist/core/extensions/builtin/todotools/prompt.d.ts +1 -1
- package/dist/core/extensions/builtin/todotools/prompt.d.ts.map +1 -1
- package/dist/core/extensions/builtin/todotools/prompt.js +0 -2
- package/dist/core/extensions/builtin/todotools/prompt.js.map +1 -1
- package/dist/core/extensions/index.d.ts +1 -1
- 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 +1 -1
- package/dist/core/extensions/loader.d.ts.map +1 -1
- package/dist/core/extensions/loader.js +4 -4
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/extensions/runner.d.ts +7 -2
- package/dist/core/extensions/runner.d.ts.map +1 -1
- package/dist/core/extensions/runner.js +34 -0
- package/dist/core/extensions/runner.js.map +1 -1
- package/dist/core/extensions/types.d.ts +21 -1
- package/dist/core/extensions/types.d.ts.map +1 -1
- package/dist/core/extensions/types.js.map +1 -1
- package/dist/core/model-registry.d.ts +3 -4
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js +23 -6
- package/dist/core/model-registry.js.map +1 -1
- 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 +58 -0
- package/dist/core/project-trust.js.map +1 -0
- package/dist/core/prompt-templates.d.ts +2 -1
- package/dist/core/prompt-templates.d.ts.map +1 -1
- package/dist/core/prompt-templates.js +24 -26
- package/dist/core/prompt-templates.js.map +1 -1
- package/dist/core/resolve-config-value.d.ts +0 -4
- package/dist/core/resolve-config-value.d.ts.map +1 -1
- package/dist/core/resolve-config-value.js +0 -15
- package/dist/core/resolve-config-value.js.map +1 -1
- package/dist/core/resource-loader.d.ts +14 -3
- package/dist/core/resource-loader.d.ts.map +1 -1
- package/dist/core/resource-loader.js +128 -58
- package/dist/core/resource-loader.js.map +1 -1
- package/dist/core/session-manager.d.ts +3 -0
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +34 -17
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/session-resident-store.d.ts +16 -0
- package/dist/core/session-resident-store.d.ts.map +1 -0
- package/dist/core/session-resident-store.js +48 -0
- package/dist/core/session-resident-store.js.map +1 -0
- package/dist/core/settings-manager.d.ts +4 -0
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +9 -0
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/tools/edit-diff.d.ts +0 -5
- package/dist/core/tools/edit-diff.d.ts.map +1 -1
- package/dist/core/tools/edit-diff.js +0 -7
- package/dist/core/tools/edit-diff.js.map +1 -1
- package/dist/core/tools/index.d.ts +0 -5
- package/dist/core/tools/index.d.ts.map +1 -1
- package/dist/core/tools/index.js +0 -67
- package/dist/core/tools/index.js.map +1 -1
- package/dist/core/trust-manager.d.ts +22 -0
- package/dist/core/trust-manager.d.ts.map +1 -1
- package/dist/core/trust-manager.js +75 -22
- package/dist/core/trust-manager.js.map +1 -1
- package/dist/index.d.ts +5 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +92 -129
- package/dist/main.js.map +1 -1
- package/dist/migrations.d.ts.map +1 -1
- package/dist/migrations.js +39 -34
- package/dist/migrations.js.map +1 -1
- package/dist/modes/index.d.ts +1 -1
- package/dist/modes/index.d.ts.map +1 -1
- package/dist/modes/index.js.map +1 -1
- package/dist/modes/interactive/components/login-dialog.d.ts +1 -0
- package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
- package/dist/modes/interactive/components/login-dialog.js +7 -1
- package/dist/modes/interactive/components/login-dialog.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector.d.ts +3 -1
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +20 -0
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/tool-execution.js +26 -4
- package/dist/modes/interactive/components/tool-execution.js.map +1 -1
- package/dist/modes/interactive/components/trust-selector.d.ts +6 -3
- package/dist/modes/interactive/components/trust-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/trust-selector.js +22 -18
- package/dist/modes/interactive/components/trust-selector.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +15 -0
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +158 -19
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/theme/theme.d.ts +0 -4
- package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme.js +0 -7
- package/dist/modes/interactive/theme/theme.js.map +1 -1
- package/dist/modes/interactive/working-status.d.ts +2 -0
- package/dist/modes/interactive/working-status.d.ts.map +1 -1
- package/dist/modes/interactive/working-status.js +34 -0
- package/dist/modes/interactive/working-status.js.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts +0 -1
- 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 +58 -11
- package/dist/package-manager-cli.js.map +1 -1
- package/dist/senpi +10 -1
- package/dist/utils/changelog.d.ts +1 -0
- package/dist/utils/changelog.d.ts.map +1 -1
- package/dist/utils/changelog.js +78 -0
- package/dist/utils/changelog.js.map +1 -1
- package/docs/compaction-guide.md +9 -9
- package/docs/compaction.md +2 -2
- package/docs/containerization.md +22 -22
- package/docs/custom-provider.md +13 -13
- package/docs/development.md +4 -2
- package/docs/docs.json +4 -0
- package/docs/extensions.md +46 -18
- package/docs/index.md +5 -4
- package/docs/json.md +21 -15
- package/docs/keybindings.md +6 -3
- package/docs/models.md +10 -43
- package/docs/packages.md +11 -13
- package/docs/prompt-templates.md +10 -3
- package/docs/providers.md +9 -9
- package/docs/rpc.md +14 -13
- package/docs/sdk.md +18 -9
- package/docs/security.md +55 -0
- package/docs/session-format.md +4 -4
- package/docs/sessions.md +14 -14
- package/docs/settings.md +14 -11
- package/docs/skills.md +8 -8
- package/docs/terminal-setup.md +38 -4
- package/docs/termux.md +3 -3
- package/docs/tmux.md +4 -2
- package/docs/tui.md +4 -4
- package/docs/usage.md +55 -57
- package/examples/extensions/README.md +1 -0
- package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
- package/examples/extensions/custom-provider-anthropic/package.json +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
- package/examples/extensions/gondolin/package-lock.json +2 -2
- package/examples/extensions/gondolin/package.json +1 -1
- package/examples/extensions/project-trust.ts +64 -0
- package/examples/extensions/sandbox/package-lock.json +2 -2
- package/examples/extensions/sandbox/package.json +1 -1
- package/examples/extensions/with-deps/package-lock.json +2 -2
- package/examples/extensions/with-deps/package.json +1 -1
- package/node_modules/@earendil-works/pi-agent-core/README.md +4 -3
- package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.js +125 -77
- package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.js.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.d.ts +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.js +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.js.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/types.d.ts +0 -2
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/types.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/types.js +0 -4
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/types.js.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/types.d.ts +7 -4
- package/node_modules/@earendil-works/pi-agent-core/dist/types.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/types.js.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/package.json +2 -2
- package/node_modules/@earendil-works/pi-ai/README.md +4 -5
- package/node_modules/@earendil-works/pi-ai/dist/api-registry.d.ts +0 -1
- package/node_modules/@earendil-works/pi-ai/dist/api-registry.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/api-registry.js +0 -3
- package/node_modules/@earendil-works/pi-ai/dist/api-registry.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.d.ts +2 -2
- package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.js +6 -6
- package/node_modules/@earendil-works/pi-ai/dist/image-models.generated.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/models.generated.d.ts +355 -313
- package/node_modules/@earendil-works/pi-ai/dist/models.generated.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/models.generated.js +376 -431
- package/node_modules/@earendil-works/pi-ai/dist/models.generated.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.js +15 -7
- package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.d.ts +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.js +17 -7
- package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/azure-openai-responses.js +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/providers/azure-openai-responses.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/google-shared.d.ts +0 -4
- package/node_modules/@earendil-works/pi-ai/dist/providers/google-shared.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/google-shared.js +0 -13
- package/node_modules/@earendil-works/pi-ai/dist/providers/google-shared.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/openai-completions.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/openai-completions.js +4 -3
- package/node_modules/@earendil-works/pi-ai/dist/providers/openai-completions.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses-shared.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses-shared.js +2 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses-shared.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses.js +3 -2
- package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/simple-options.d.ts +1 -7
- package/node_modules/@earendil-works/pi-ai/dist/providers/simple-options.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/simple-options.js +2 -16
- package/node_modules/@earendil-works/pi-ai/dist/providers/simple-options.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/types.d.ts +5 -1
- package/node_modules/@earendil-works/pi-ai/dist/types.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/types.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.d.ts +0 -4
- package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.js +0 -6
- package/node_modules/@earendil-works/pi-ai/dist/utils/overflow.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/package.json +1 -1
- package/node_modules/@earendil-works/pi-tui/README.md +1 -2
- package/node_modules/@earendil-works/pi-tui/dist/autocomplete.d.ts +2 -0
- package/node_modules/@earendil-works/pi-tui/dist/autocomplete.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/autocomplete.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/editor.d.ts +6 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/editor.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/editor.js +89 -39
- package/node_modules/@earendil-works/pi-tui/dist/components/editor.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/loader.d.ts +5 -0
- package/node_modules/@earendil-works/pi-tui/dist/components/loader.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/loader.js +18 -4
- package/node_modules/@earendil-works/pi-tui/dist/components/loader.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/fuzzy.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/fuzzy.js +131 -61
- package/node_modules/@earendil-works/pi-tui/dist/fuzzy.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/index.d.ts +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/index.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/index.js +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/index.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/terminal-image.d.ts +0 -1
- package/node_modules/@earendil-works/pi-tui/dist/terminal-image.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/terminal-image.js +4 -7
- package/node_modules/@earendil-works/pi-tui/dist/terminal-image.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/terminal.d.ts +4 -7
- package/node_modules/@earendil-works/pi-tui/dist/terminal.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/terminal.js +38 -76
- package/node_modules/@earendil-works/pi-tui/dist/terminal.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/tui.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/tui.js +14 -4
- package/node_modules/@earendil-works/pi-tui/dist/tui.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/utils.d.ts +0 -4
- package/node_modules/@earendil-works/pi-tui/dist/utils.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/utils.js +43 -21
- package/node_modules/@earendil-works/pi-tui/dist/utils.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/package.json +1 -1
- package/npm-shrinkwrap.json +12 -12
- package/package.json +4 -8
- package/dist/core/extensions/builtin/compaction/overflow-detection.d.ts +0 -11
- package/dist/core/extensions/builtin/compaction/overflow-detection.d.ts.map +0 -1
- package/dist/core/extensions/builtin/compaction/overflow-detection.js +0 -40
- package/dist/core/extensions/builtin/compaction/overflow-detection.js.map +0 -1
- package/dist/core/extensions/builtin/system-messages.d.ts +0 -47
- package/dist/core/extensions/builtin/system-messages.d.ts.map +0 -1
- package/dist/core/extensions/builtin/system-messages.js +0 -117
- package/dist/core/extensions/builtin/system-messages.js.map +0 -1
- package/dist/core/extensions/builtin/todotools/continuation/config.d.ts +0 -10
- package/dist/core/extensions/builtin/todotools/continuation/config.d.ts.map +0 -1
- package/dist/core/extensions/builtin/todotools/continuation/config.js +0 -33
- package/dist/core/extensions/builtin/todotools/continuation/config.js.map +0 -1
- package/dist/core/extensions/builtin/todotools/continuation/index.d.ts +0 -2
- package/dist/core/extensions/builtin/todotools/continuation/index.d.ts.map +0 -1
- package/dist/core/extensions/builtin/todotools/continuation/index.js +0 -2
- package/dist/core/extensions/builtin/todotools/continuation/index.js.map +0 -1
- package/dist/core/extensions/builtin/todotools/continuation/prompt.d.ts +0 -5
- package/dist/core/extensions/builtin/todotools/continuation/prompt.d.ts.map +0 -1
- package/dist/core/extensions/builtin/todotools/continuation/prompt.js +0 -34
- package/dist/core/extensions/builtin/todotools/continuation/prompt.js.map +0 -1
- package/dist/core/extensions/builtin/todotools/continuation/runtime.d.ts +0 -11
- package/dist/core/extensions/builtin/todotools/continuation/runtime.d.ts.map +0 -1
- package/dist/core/extensions/builtin/todotools/continuation/runtime.js +0 -201
- package/dist/core/extensions/builtin/todotools/continuation/runtime.js.map +0 -1
- package/dist/core/extensions/builtin/todotools/settings.d.ts +0 -6
- package/dist/core/extensions/builtin/todotools/settings.d.ts.map +0 -1
- package/dist/core/extensions/builtin/todotools/settings.js +0 -58
- package/dist/core/extensions/builtin/todotools/settings.js.map +0 -1
- package/dist/core/extensions/builtin/todotools/system-messages.d.ts +0 -34
- package/dist/core/extensions/builtin/todotools/system-messages.d.ts.map +0 -1
- package/dist/core/extensions/builtin/todotools/system-messages.js +0 -82
- package/dist/core/extensions/builtin/todotools/system-messages.js.map +0 -1
- package/dist/core/index.d.ts +0 -12
- package/dist/core/index.d.ts.map +0 -1
- package/dist/core/index.js +0 -12
- package/dist/core/index.js.map +0 -1
|
@@ -101,25 +101,23 @@ export function loadProjectContextFiles(options) {
|
|
|
101
101
|
contextFiles.push(globalContext);
|
|
102
102
|
seenPaths.add(globalContext.path);
|
|
103
103
|
}
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
contextFiles.push(...ancestorContextFiles);
|
|
122
|
-
}
|
|
104
|
+
const ancestorContextFiles = [];
|
|
105
|
+
let currentDir = resolvedCwd;
|
|
106
|
+
const root = resolve("/");
|
|
107
|
+
while (true) {
|
|
108
|
+
const contextFile = loadContextFileFromDir(currentDir);
|
|
109
|
+
if (contextFile && !seenPaths.has(contextFile.path)) {
|
|
110
|
+
ancestorContextFiles.unshift(contextFile);
|
|
111
|
+
seenPaths.add(contextFile.path);
|
|
112
|
+
}
|
|
113
|
+
if (currentDir === root)
|
|
114
|
+
break;
|
|
115
|
+
const parentDir = resolve(currentDir, "..");
|
|
116
|
+
if (parentDir === currentDir)
|
|
117
|
+
break;
|
|
118
|
+
currentDir = parentDir;
|
|
119
|
+
}
|
|
120
|
+
contextFiles.push(...ancestorContextFiles);
|
|
123
121
|
return contextFiles;
|
|
124
122
|
}
|
|
125
123
|
export class DefaultResourceLoader {
|
|
@@ -211,8 +209,22 @@ export class DefaultResourceLoader {
|
|
|
211
209
|
this.updateThemesFromPaths(this.lastThemePaths);
|
|
212
210
|
}
|
|
213
211
|
}
|
|
214
|
-
async
|
|
212
|
+
async loadProjectTrustExtensions() {
|
|
213
|
+
// Force untrusted project settings for the bootstrap pass. This keeps project-local
|
|
214
|
+
// extensions/packages out while still loading user/global and temporary CLI extensions.
|
|
215
|
+
this.settingsManager.setProjectTrusted(false);
|
|
216
|
+
await this.settingsManager.reload();
|
|
217
|
+
return this.loadCurrentExtensionSet({ includeInlineFactories: true });
|
|
218
|
+
}
|
|
219
|
+
async reload(options) {
|
|
215
220
|
this.ensureGlobalDefaultExtensions();
|
|
221
|
+
let preTrustExtensions;
|
|
222
|
+
if (options?.resolveProjectTrust) {
|
|
223
|
+
preTrustExtensions = await this.loadProjectTrustExtensions();
|
|
224
|
+
const projectTrusted = await options.resolveProjectTrust({ extensionsResult: preTrustExtensions });
|
|
225
|
+
this.settingsManager.setProjectTrusted(projectTrusted);
|
|
226
|
+
}
|
|
227
|
+
// reload() preserves SettingsManager.projectTrusted and reloads settings for that trust state.
|
|
216
228
|
await this.settingsManager.reload();
|
|
217
229
|
const resolvedPaths = await this.packageManager.resolve();
|
|
218
230
|
const cliExtensionPaths = await this.packageManager.resolveExtensionSources(this.additionalExtensionPaths, {
|
|
@@ -236,29 +248,7 @@ export class DefaultResourceLoader {
|
|
|
236
248
|
const enabledSkillResources = getEnabledResources(resolvedPaths.skills);
|
|
237
249
|
const enabledPrompts = getEnabledPaths(resolvedPaths.prompts);
|
|
238
250
|
const enabledThemes = getEnabledPaths(resolvedPaths.themes);
|
|
239
|
-
const
|
|
240
|
-
if (resource.metadata.source !== "auto" && resource.metadata.origin !== "package") {
|
|
241
|
-
return resource.path;
|
|
242
|
-
}
|
|
243
|
-
try {
|
|
244
|
-
const stats = statSync(resource.path);
|
|
245
|
-
if (!stats.isDirectory()) {
|
|
246
|
-
return resource.path;
|
|
247
|
-
}
|
|
248
|
-
}
|
|
249
|
-
catch {
|
|
250
|
-
return resource.path;
|
|
251
|
-
}
|
|
252
|
-
const skillFile = join(resource.path, "SKILL.md");
|
|
253
|
-
if (existsSync(skillFile)) {
|
|
254
|
-
if (!metadataByPath.has(skillFile)) {
|
|
255
|
-
metadataByPath.set(skillFile, resource.metadata);
|
|
256
|
-
}
|
|
257
|
-
return skillFile;
|
|
258
|
-
}
|
|
259
|
-
return resource.path;
|
|
260
|
-
};
|
|
261
|
-
const enabledSkills = enabledSkillResources.map(mapSkillPath);
|
|
251
|
+
const enabledSkills = enabledSkillResources.map((resource) => this.mapSkillPath(resource, metadataByPath));
|
|
262
252
|
// Add CLI paths metadata. Explicit -e/-s resources must keep CLI precedence
|
|
263
253
|
// even when they resolve through a package manifest.
|
|
264
254
|
for (const r of cliExtensionPaths.extensions) {
|
|
@@ -281,20 +271,7 @@ export class DefaultResourceLoader {
|
|
|
281
271
|
? cliEnabledExtensions
|
|
282
272
|
: this.mergePaths(cliEnabledExtensions, enabledExtensions);
|
|
283
273
|
const dedupedExtensionPaths = this.dedupeExtensionPathsByPackageName(this.shadowVendoredBuiltinExtensionPaths(extensionPaths, metadataByPath));
|
|
284
|
-
const
|
|
285
|
-
const extensionsResult = await loadExtensions(dedupedExtensionPaths, this.cwd, this.eventBus, {
|
|
286
|
-
factoryResolver,
|
|
287
|
-
});
|
|
288
|
-
const inlineExtensions = await this.loadExtensionFactories(extensionsResult.runtime);
|
|
289
|
-
extensionsResult.extensions.unshift(...inlineExtensions.extensions);
|
|
290
|
-
this.rebuildExtensionFlagDefaults(extensionsResult);
|
|
291
|
-
extensionsResult.errors.push(...inlineExtensions.errors);
|
|
292
|
-
// Detect extension conflicts (tools, commands, flags with same names from different extensions)
|
|
293
|
-
// Keep all extensions loaded. Conflicts are reported as diagnostics, and precedence is handled by load order.
|
|
294
|
-
const conflicts = this.detectExtensionConflicts(extensionsResult.extensions);
|
|
295
|
-
for (const conflict of conflicts) {
|
|
296
|
-
extensionsResult.errors.push({ path: conflict.path, error: conflict.message });
|
|
297
|
-
}
|
|
274
|
+
const extensionsResult = await this.loadFinalExtensionSet(dedupedExtensionPaths, preTrustExtensions);
|
|
298
275
|
for (const p of this.additionalExtensionPaths) {
|
|
299
276
|
if (isLocalPath(p)) {
|
|
300
277
|
const resolved = this.resolveResourcePath(p);
|
|
@@ -352,7 +329,6 @@ export class DefaultResourceLoader {
|
|
|
352
329
|
: loadProjectContextFiles({
|
|
353
330
|
cwd: this.cwd,
|
|
354
331
|
agentDir: this.agentDir,
|
|
355
|
-
projectTrusted: this.settingsManager.isProjectTrusted(),
|
|
356
332
|
}),
|
|
357
333
|
};
|
|
358
334
|
const resolvedAgentsFiles = this.agentsFilesOverride ? this.agentsFilesOverride(agentsFiles) : agentsFiles;
|
|
@@ -382,6 +358,100 @@ export class DefaultResourceLoader {
|
|
|
382
358
|
writeFileSync(targetPath, shim, "utf-8");
|
|
383
359
|
}
|
|
384
360
|
}
|
|
361
|
+
buildGlobalDefaultExtensionLoadOptions() {
|
|
362
|
+
return {
|
|
363
|
+
factoryResolver: (_extensionPath, resolvedPath) => resolveGeneratedGlobalDefaultExtensionFactory(resolvedPath, this.agentDir),
|
|
364
|
+
};
|
|
365
|
+
}
|
|
366
|
+
async loadCurrentExtensionSet(options) {
|
|
367
|
+
const resolvedPaths = await this.packageManager.resolve();
|
|
368
|
+
const cliExtensionPaths = await this.packageManager.resolveExtensionSources(this.additionalExtensionPaths, {
|
|
369
|
+
temporary: true,
|
|
370
|
+
});
|
|
371
|
+
const enabledExtensions = resolvedPaths.extensions.filter((r) => r.enabled).map((r) => r.path);
|
|
372
|
+
const cliEnabledExtensions = cliExtensionPaths.extensions.filter((r) => r.enabled).map((r) => r.path);
|
|
373
|
+
const extensionPaths = this.noExtensions
|
|
374
|
+
? cliEnabledExtensions
|
|
375
|
+
: this.mergePaths(cliEnabledExtensions, enabledExtensions);
|
|
376
|
+
const extensionsResult = await loadExtensions(extensionPaths, this.cwd, this.eventBus, undefined, this.buildGlobalDefaultExtensionLoadOptions());
|
|
377
|
+
if (!options.includeInlineFactories) {
|
|
378
|
+
return extensionsResult;
|
|
379
|
+
}
|
|
380
|
+
const inlineExtensions = await this.loadExtensionFactories(extensionsResult.runtime);
|
|
381
|
+
extensionsResult.extensions.push(...inlineExtensions.extensions);
|
|
382
|
+
extensionsResult.errors.push(...inlineExtensions.errors);
|
|
383
|
+
return extensionsResult;
|
|
384
|
+
}
|
|
385
|
+
resolveExtensionLoadPath(path) {
|
|
386
|
+
return resolvePath(path, this.cwd, { normalizeUnicodeSpaces: true });
|
|
387
|
+
}
|
|
388
|
+
async loadFinalExtensionSet(extensionPaths, preTrustExtensions) {
|
|
389
|
+
if (!preTrustExtensions) {
|
|
390
|
+
const extensionsResult = await loadExtensions(extensionPaths, this.cwd, this.eventBus, undefined, this.buildGlobalDefaultExtensionLoadOptions());
|
|
391
|
+
const inlineExtensions = await this.loadExtensionFactories(extensionsResult.runtime);
|
|
392
|
+
extensionsResult.extensions.unshift(...inlineExtensions.extensions);
|
|
393
|
+
this.rebuildExtensionFlagDefaults(extensionsResult);
|
|
394
|
+
extensionsResult.errors.push(...inlineExtensions.errors);
|
|
395
|
+
this.addExtensionConflictDiagnostics(extensionsResult);
|
|
396
|
+
return extensionsResult;
|
|
397
|
+
}
|
|
398
|
+
const preloadedByPath = new Map(preTrustExtensions.extensions
|
|
399
|
+
.filter((extension) => !extension.path.startsWith("<inline:"))
|
|
400
|
+
.map((extension) => [extension.resolvedPath, extension]));
|
|
401
|
+
const failedPreloadPaths = new Set(preTrustExtensions.errors.map((error) => this.resolveExtensionLoadPath(error.path)));
|
|
402
|
+
const remainingPaths = extensionPaths.filter((path) => {
|
|
403
|
+
const resolvedPath = this.resolveExtensionLoadPath(path);
|
|
404
|
+
return !preloadedByPath.has(resolvedPath) && !failedPreloadPaths.has(resolvedPath);
|
|
405
|
+
});
|
|
406
|
+
const remainingExtensions = await loadExtensions(remainingPaths, this.cwd, this.eventBus, preTrustExtensions.runtime, this.buildGlobalDefaultExtensionLoadOptions());
|
|
407
|
+
const loadedByPath = new Map(preloadedByPath);
|
|
408
|
+
for (const extension of remainingExtensions.extensions) {
|
|
409
|
+
loadedByPath.set(extension.resolvedPath, extension);
|
|
410
|
+
}
|
|
411
|
+
const inlineExtensions = preTrustExtensions.extensions.filter((extension) => extension.path.startsWith("<inline:"));
|
|
412
|
+
const orderedExtensions = extensionPaths
|
|
413
|
+
.map((path) => loadedByPath.get(this.resolveExtensionLoadPath(path)))
|
|
414
|
+
.filter((extension) => extension !== undefined);
|
|
415
|
+
orderedExtensions.unshift(...inlineExtensions);
|
|
416
|
+
const extensionsResult = {
|
|
417
|
+
extensions: orderedExtensions,
|
|
418
|
+
errors: [...preTrustExtensions.errors, ...remainingExtensions.errors],
|
|
419
|
+
runtime: preTrustExtensions.runtime,
|
|
420
|
+
};
|
|
421
|
+
this.rebuildExtensionFlagDefaults(extensionsResult);
|
|
422
|
+
this.addExtensionConflictDiagnostics(extensionsResult);
|
|
423
|
+
return extensionsResult;
|
|
424
|
+
}
|
|
425
|
+
addExtensionConflictDiagnostics(extensionsResult) {
|
|
426
|
+
// Detect extension conflicts (tools, commands, flags with same names from different extensions)
|
|
427
|
+
// Keep all extensions loaded. Conflicts are reported as diagnostics, and precedence is handled by load order.
|
|
428
|
+
const conflicts = this.detectExtensionConflicts(extensionsResult.extensions);
|
|
429
|
+
for (const conflict of conflicts) {
|
|
430
|
+
extensionsResult.errors.push({ path: conflict.path, error: conflict.message });
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
mapSkillPath(resource, metadataByPath) {
|
|
434
|
+
if (resource.metadata.source !== "auto" && resource.metadata.origin !== "package") {
|
|
435
|
+
return resource.path;
|
|
436
|
+
}
|
|
437
|
+
try {
|
|
438
|
+
const stats = statSync(resource.path);
|
|
439
|
+
if (!stats.isDirectory()) {
|
|
440
|
+
return resource.path;
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
catch {
|
|
444
|
+
return resource.path;
|
|
445
|
+
}
|
|
446
|
+
const skillFile = join(resource.path, "SKILL.md");
|
|
447
|
+
if (existsSync(skillFile)) {
|
|
448
|
+
if (!metadataByPath.has(skillFile)) {
|
|
449
|
+
metadataByPath.set(skillFile, resource.metadata);
|
|
450
|
+
}
|
|
451
|
+
return skillFile;
|
|
452
|
+
}
|
|
453
|
+
return resource.path;
|
|
454
|
+
}
|
|
385
455
|
normalizeExtensionPaths(entries) {
|
|
386
456
|
return entries.map((entry) => {
|
|
387
457
|
const metadata = entry.metadata.baseDir
|