@bastani/atomic 0.9.24 → 0.9.25-alpha.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 +42 -0
- package/dist/builtin/intercom/index.bundle.mjs +5 -0
- package/dist/builtin/intercom/package.json +2 -2
- package/dist/builtin/mcp/CHANGELOG.md +11 -0
- package/dist/builtin/mcp/index.bundle.mjs +219 -71
- package/dist/builtin/mcp/package.json +6 -2
- package/dist/builtin/subagents/package.json +3 -3
- package/dist/builtin/subagents/src/extension/index.bundle.mjs +1 -0
- package/dist/builtin/web-access/index.bundle.mjs +7 -6
- package/dist/builtin/web-access/package.json +2 -2
- package/dist/builtin/workflows/CHANGELOG.md +6 -0
- package/dist/builtin/workflows/package.json +2 -2
- package/dist/builtin/workflows/skills/prompt-engineer/SKILL.md +1 -0
- package/dist/builtin/workflows/skills/prompt-engineer/references/gpt_6_1_sol.md +66 -0
- package/dist/builtin/workflows/src/extension/index.bundle.mjs +1 -0
- package/dist/cli/startup-ui.d.ts +3 -4
- package/dist/cli/startup-ui.d.ts.map +1 -1
- package/dist/cli/startup-ui.js +3 -4
- package/dist/cli/startup-ui.js.map +1 -1
- package/dist/config.d.ts +3 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +17 -0
- package/dist/config.js.map +1 -1
- package/dist/core/agent-session-events.d.ts.map +1 -1
- package/dist/core/agent-session-events.js +5 -0
- package/dist/core/agent-session-events.js.map +1 -1
- package/dist/core/agent-session-export.d.ts.map +1 -1
- package/dist/core/agent-session-export.js +3 -0
- package/dist/core/agent-session-export.js.map +1 -1
- package/dist/core/agent-session-extension-bindings.d.ts.map +1 -1
- package/dist/core/agent-session-extension-bindings.js +4 -0
- package/dist/core/agent-session-extension-bindings.js.map +1 -1
- package/dist/core/agent-session-methods.d.ts +2 -1
- package/dist/core/agent-session-methods.d.ts.map +1 -1
- package/dist/core/agent-session-methods.js.map +1 -1
- package/dist/core/agent-session-nested-tools.d.ts +10 -0
- package/dist/core/agent-session-nested-tools.d.ts.map +1 -0
- package/dist/core/agent-session-nested-tools.js +76 -0
- package/dist/core/agent-session-nested-tools.js.map +1 -0
- package/dist/core/agent-session-runtime-auth.js +3 -1
- package/dist/core/agent-session-runtime-auth.js.map +1 -1
- package/dist/core/agent-session-state.d.ts +2 -0
- package/dist/core/agent-session-state.d.ts.map +1 -1
- package/dist/core/agent-session-state.js +11 -11
- package/dist/core/agent-session-state.js.map +1 -1
- package/dist/core/agent-session-tool-hooks.d.ts.map +1 -1
- package/dist/core/agent-session-tool-hooks.js +18 -3
- package/dist/core/agent-session-tool-hooks.js.map +1 -1
- package/dist/core/agent-session-tool-registry.d.ts.map +1 -1
- package/dist/core/agent-session-tool-registry.js +15 -3
- package/dist/core/agent-session-tool-registry.js.map +1 -1
- package/dist/core/agent-session-types.d.ts +6 -2
- package/dist/core/agent-session-types.d.ts.map +1 -1
- package/dist/core/agent-session-types.js.map +1 -1
- package/dist/core/builtin-resource-loader.d.ts.map +1 -1
- package/dist/core/builtin-resource-loader.js +13 -1
- package/dist/core/builtin-resource-loader.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 +18 -18
- package/dist/core/compaction/utils.js.map +1 -1
- package/dist/core/execution-model-router.d.ts.map +1 -1
- package/dist/core/execution-model-router.js +24 -8
- package/dist/core/execution-model-router.js.map +1 -1
- package/dist/core/export-html/template.js +12 -0
- package/dist/core/extensions/agent-events.d.ts +3 -0
- package/dist/core/extensions/agent-events.d.ts.map +1 -1
- package/dist/core/extensions/agent-events.js.map +1 -1
- package/dist/core/extensions/api-types.d.ts +2 -0
- package/dist/core/extensions/api-types.d.ts.map +1 -1
- package/dist/core/extensions/api-types.js.map +1 -1
- package/dist/core/extensions/context-types.d.ts +9 -0
- package/dist/core/extensions/context-types.d.ts.map +1 -1
- package/dist/core/extensions/context-types.js.map +1 -1
- package/dist/core/extensions/event-results.d.ts +3 -0
- package/dist/core/extensions/event-results.d.ts.map +1 -1
- package/dist/core/extensions/event-results.js.map +1 -1
- package/dist/core/extensions/index.d.ts +2 -0
- package/dist/core/extensions/index.d.ts.map +1 -1
- package/dist/core/extensions/index.js.map +1 -1
- package/dist/core/extensions/loader-api.d.ts.map +1 -1
- package/dist/core/extensions/loader-api.js +4 -0
- package/dist/core/extensions/loader-api.js.map +1 -1
- package/dist/core/extensions/loader-core.d.ts.map +1 -1
- package/dist/core/extensions/loader-core.js +3 -5
- package/dist/core/extensions/loader-core.js.map +1 -1
- package/dist/core/extensions/loader-host-modules.d.ts.map +1 -1
- package/dist/core/extensions/loader-host-modules.js +7 -1
- package/dist/core/extensions/loader-host-modules.js.map +1 -1
- package/dist/core/extensions/loader-runtime.d.ts.map +1 -1
- package/dist/core/extensions/loader-runtime.js +3 -0
- package/dist/core/extensions/loader-runtime.js.map +1 -1
- package/dist/core/extensions/loader-virtual-modules.d.ts.map +1 -1
- package/dist/core/extensions/loader-virtual-modules.js +4 -0
- package/dist/core/extensions/loader-virtual-modules.js.map +1 -1
- package/dist/core/extensions/provider-types.d.ts +2 -0
- package/dist/core/extensions/provider-types.d.ts.map +1 -1
- package/dist/core/extensions/provider-types.js.map +1 -1
- package/dist/core/extensions/runner-events.d.ts.map +1 -1
- package/dist/core/extensions/runner-events.js +16 -1
- package/dist/core/extensions/runner-events.js.map +1 -1
- package/dist/core/extensions/runner.d.ts +5 -0
- 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/runtime-types.d.ts +5 -0
- package/dist/core/extensions/runtime-types.d.ts.map +1 -1
- package/dist/core/extensions/runtime-types.js.map +1 -1
- package/dist/core/extensions/tool-events.d.ts +4 -0
- package/dist/core/extensions/tool-events.d.ts.map +1 -1
- package/dist/core/extensions/tool-events.js.map +1 -1
- package/dist/core/extensions/tool-types.d.ts +34 -3
- package/dist/core/extensions/tool-types.d.ts.map +1 -1
- package/dist/core/extensions/tool-types.js.map +1 -1
- package/dist/core/extensions/wrapper.d.ts.map +1 -1
- package/dist/core/extensions/wrapper.js +14 -2
- package/dist/core/extensions/wrapper.js.map +1 -1
- package/dist/core/fast-model-routing-transport.d.ts.map +1 -1
- package/dist/core/fast-model-routing-transport.js +2 -1
- package/dist/core/fast-model-routing-transport.js.map +1 -1
- package/dist/core/fast-model-routing.d.ts +1 -2
- package/dist/core/fast-model-routing.d.ts.map +1 -1
- package/dist/core/fast-model-routing.js +13 -11
- package/dist/core/fast-model-routing.js.map +1 -1
- package/dist/core/fast-model-variants.d.ts +4 -1
- package/dist/core/fast-model-variants.d.ts.map +1 -1
- package/dist/core/fast-model-variants.js +42 -17
- package/dist/core/fast-model-variants.js.map +1 -1
- package/dist/core/mandatory-resource-loader.d.ts.map +1 -1
- package/dist/core/mandatory-resource-loader.js +9 -0
- package/dist/core/mandatory-resource-loader.js.map +1 -1
- package/dist/core/model-registry.d.ts +4 -1
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js +9 -0
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/model-resolver-defaults.js +1 -1
- package/dist/core/model-resolver-defaults.js.map +1 -1
- package/dist/core/model-routing-candidates.d.ts +4 -0
- package/dist/core/model-routing-candidates.d.ts.map +1 -1
- package/dist/core/model-routing-candidates.js +8 -3
- package/dist/core/model-routing-candidates.js.map +1 -1
- package/dist/core/model-routing-evals.d.ts.map +1 -1
- package/dist/core/model-routing-evals.js +4 -5
- package/dist/core/model-routing-evals.js.map +1 -1
- package/dist/core/model-runtime.d.ts +3 -2
- package/dist/core/model-runtime.d.ts.map +1 -1
- package/dist/core/model-runtime.js +19 -25
- package/dist/core/model-runtime.js.map +1 -1
- package/dist/core/nested-tool-calls.d.ts +64 -0
- package/dist/core/nested-tool-calls.d.ts.map +1 -0
- package/dist/core/nested-tool-calls.js +132 -0
- package/dist/core/nested-tool-calls.js.map +1 -0
- package/dist/core/oauth-provider-metadata.js +1 -1
- package/dist/core/oauth-provider-metadata.js.map +1 -1
- package/dist/core/package-manager-resolver.d.ts.map +1 -1
- package/dist/core/package-manager-resolver.js +21 -3
- package/dist/core/package-manager-resolver.js.map +1 -1
- package/dist/core/package-manager-resource-accumulator.d.ts.map +1 -1
- package/dist/core/package-manager-resource-accumulator.js +2 -0
- package/dist/core/package-manager-resource-accumulator.js.map +1 -1
- package/dist/core/package-manager-types.d.ts +2 -0
- package/dist/core/package-manager-types.d.ts.map +1 -1
- package/dist/core/package-manager-types.js.map +1 -1
- package/dist/core/package-manager.d.ts.map +1 -1
- package/dist/core/package-manager.js +1 -0
- package/dist/core/package-manager.js.map +1 -1
- package/dist/core/resource-loader-core.d.ts.map +1 -1
- package/dist/core/resource-loader-core.js +12 -6
- package/dist/core/resource-loader-core.js.map +1 -1
- package/dist/core/resource-loader-extensions.d.ts +1 -0
- package/dist/core/resource-loader-extensions.d.ts.map +1 -1
- package/dist/core/resource-loader-extensions.js +64 -4
- package/dist/core/resource-loader-extensions.js.map +1 -1
- package/dist/core/resource-loader-paths.d.ts.map +1 -1
- package/dist/core/resource-loader-paths.js +2 -1
- package/dist/core/resource-loader-paths.js.map +1 -1
- package/dist/core/resource-loader-reload.d.ts.map +1 -1
- package/dist/core/resource-loader-reload.js +5 -4
- package/dist/core/resource-loader-reload.js.map +1 -1
- package/dist/core/resource-loader-source-info.d.ts.map +1 -1
- package/dist/core/resource-loader-source-info.js +7 -5
- package/dist/core/resource-loader-source-info.js.map +1 -1
- package/dist/core/resource-loader-types.d.ts +4 -0
- package/dist/core/resource-loader-types.d.ts.map +1 -1
- package/dist/core/resource-loader-types.js.map +1 -1
- package/dist/core/sdk-types.d.ts +1 -1
- package/dist/core/sdk-types.js.map +1 -1
- package/dist/core/session-manager-core.d.ts +2 -0
- package/dist/core/session-manager-core.d.ts.map +1 -1
- package/dist/core/session-manager-core.js +5 -1
- package/dist/core/session-manager-core.js.map +1 -1
- package/dist/core/session-manager-entries.d.ts +1 -1
- package/dist/core/session-manager-entries.d.ts.map +1 -1
- package/dist/core/session-manager-entries.js.map +1 -1
- package/dist/core/settings-manager-basic-accessors.d.ts +4 -0
- package/dist/core/settings-manager-basic-accessors.d.ts.map +1 -1
- package/dist/core/settings-manager-basic-accessors.js +27 -1
- package/dist/core/settings-manager-basic-accessors.js.map +1 -1
- package/dist/core/settings-manager-core.d.ts +2 -0
- package/dist/core/settings-manager-core.d.ts.map +1 -1
- package/dist/core/settings-manager-core.js +4 -0
- package/dist/core/settings-manager-core.js.map +1 -1
- package/dist/core/settings-manager-ui-accessors.d.ts +3 -1
- package/dist/core/settings-manager-ui-accessors.d.ts.map +1 -1
- package/dist/core/settings-manager-ui-accessors.js +13 -0
- package/dist/core/settings-manager-ui-accessors.js.map +1 -1
- package/dist/core/settings-manager.d.ts +1 -1
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/settings-merge.d.ts +1 -0
- package/dist/core/settings-merge.d.ts.map +1 -1
- package/dist/core/settings-merge.js +30 -1
- package/dist/core/settings-merge.js.map +1 -1
- package/dist/core/settings-types.d.ts +8 -1
- package/dist/core/settings-types.d.ts.map +1 -1
- package/dist/core/settings-types.js.map +1 -1
- package/dist/core/source-info.d.ts +3 -0
- package/dist/core/source-info.d.ts.map +1 -1
- package/dist/core/source-info.js +11 -0
- package/dist/core/source-info.js.map +1 -1
- package/dist/core/structured-output/index.d.ts.map +1 -1
- package/dist/core/structured-output/index.js +3 -1
- package/dist/core/structured-output/index.js.map +1 -1
- package/dist/core/tool-loadout.d.ts +6 -0
- package/dist/core/tool-loadout.d.ts.map +1 -0
- package/dist/core/tool-loadout.js +63 -0
- package/dist/core/tool-loadout.js.map +1 -0
- package/dist/core/tools/ask-user-question/ask-user-question.d.ts.map +1 -1
- package/dist/core/tools/ask-user-question/ask-user-question.js +1 -0
- package/dist/core/tools/ask-user-question/ask-user-question.js.map +1 -1
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bash.js +31 -11
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/output-accumulator.d.ts +4 -0
- package/dist/core/tools/output-accumulator.d.ts.map +1 -1
- package/dist/core/tools/output-accumulator.js +32 -0
- package/dist/core/tools/output-accumulator.js.map +1 -1
- package/dist/core/tools/powershell.d.ts +27 -21
- package/dist/core/tools/powershell.d.ts.map +1 -1
- package/dist/core/tools/render-utils.d.ts +4 -0
- package/dist/core/tools/render-utils.d.ts.map +1 -1
- package/dist/core/tools/render-utils.js +19 -0
- package/dist/core/tools/render-utils.js.map +1 -1
- package/dist/core/tools/tool-concurrency.d.ts +1 -1
- package/dist/core/tools/tool-concurrency.d.ts.map +1 -1
- package/dist/core/tools/tool-concurrency.js +28 -3
- package/dist/core/tools/tool-concurrency.js.map +1 -1
- package/dist/core/tools/tool-definition-wrapper.d.ts +1 -1
- package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
- package/dist/core/tools/tool-definition-wrapper.js +4 -1
- package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
- package/dist/core/usage-totals.d.ts +2 -0
- package/dist/core/usage-totals.d.ts.map +1 -1
- package/dist/core/usage-totals.js +23 -0
- package/dist/core/usage-totals.js.map +1 -1
- package/dist/extensions/codemode/execute.d.ts +10 -0
- package/dist/extensions/codemode/execute.d.ts.map +1 -0
- package/dist/extensions/codemode/execute.js +313 -0
- package/dist/extensions/codemode/execute.js.map +1 -0
- package/dist/extensions/codemode/index.d.ts +11 -0
- package/dist/extensions/codemode/index.d.ts.map +1 -0
- package/dist/extensions/codemode/index.js +14 -0
- package/dist/extensions/codemode/index.js.map +1 -0
- package/dist/extensions/codemode/renderer.d.ts +4 -0
- package/dist/extensions/codemode/renderer.d.ts.map +1 -0
- package/dist/extensions/codemode/renderer.js +78 -0
- package/dist/extensions/codemode/renderer.js.map +1 -0
- package/dist/extensions/codemode/tool.d.ts +51 -0
- package/dist/extensions/codemode/tool.d.ts.map +1 -0
- package/dist/extensions/codemode/tool.js +134 -0
- package/dist/extensions/codemode/tool.js.map +1 -0
- package/dist/extensions/codemode/worker.d.ts +2 -0
- package/dist/extensions/codemode/worker.d.ts.map +1 -0
- package/dist/extensions/codemode/worker.js +2 -0
- package/dist/extensions/codemode/worker.js.map +1 -0
- package/dist/extensions/index.d.ts.map +1 -1
- package/dist/extensions/index.js +5 -1
- package/dist/extensions/index.js.map +1 -1
- package/dist/extensions/llama/provider.d.ts.map +1 -1
- package/dist/extensions/llama/provider.js +31 -10
- package/dist/extensions/llama/provider.js.map +1 -1
- package/dist/extensions/tool-search/index.d.ts +5 -0
- package/dist/extensions/tool-search/index.d.ts.map +1 -0
- package/dist/extensions/tool-search/index.js +6 -0
- package/dist/extensions/tool-search/index.js.map +1 -0
- package/dist/extensions/tool-search/tool.d.ts +41 -0
- package/dist/extensions/tool-search/tool.d.ts.map +1 -0
- package/dist/extensions/tool-search/tool.js +161 -0
- package/dist/extensions/tool-search/tool.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/modes/interactive/components/chat-message-renderer.d.ts +1 -0
- package/dist/modes/interactive/components/chat-message-renderer.d.ts.map +1 -1
- package/dist/modes/interactive/components/chat-message-renderer.js +2 -0
- package/dist/modes/interactive/components/chat-message-renderer.js.map +1 -1
- package/dist/modes/interactive/components/config-selector-list.d.ts.map +1 -1
- package/dist/modes/interactive/components/config-selector-list.js +9 -1
- package/dist/modes/interactive/components/config-selector-list.js.map +1 -1
- package/dist/modes/interactive/components/config-selector-project-scope.d.ts.map +1 -1
- package/dist/modes/interactive/components/config-selector-project-scope.js +4 -1
- package/dist/modes/interactive/components/config-selector-project-scope.js.map +1 -1
- package/dist/modes/interactive/components/first-time-setup.d.ts +2 -2
- package/dist/modes/interactive/components/first-time-setup.d.ts.map +1 -1
- package/dist/modes/interactive/components/first-time-setup.js +1 -0
- package/dist/modes/interactive/components/first-time-setup.js.map +1 -1
- package/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/dist/modes/interactive/components/footer.js +42 -7
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector-handlers.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector-handlers.js +3 -0
- package/dist/modes/interactive/components/settings-selector-handlers.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector-items.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector-items.js +13 -0
- package/dist/modes/interactive/components/settings-selector-items.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector-submenus.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector-submenus.js +3 -1
- package/dist/modes/interactive/components/settings-selector-submenus.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector-types.d.ts +3 -1
- package/dist/modes/interactive/components/settings-selector-types.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector-types.js.map +1 -1
- package/dist/modes/interactive/components/themed-text.d.ts +8 -0
- package/dist/modes/interactive/components/themed-text.d.ts.map +1 -0
- package/dist/modes/interactive/components/themed-text.js +14 -0
- package/dist/modes/interactive/components/themed-text.js.map +1 -0
- package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/tool-execution.js +5 -3
- package/dist/modes/interactive/components/tool-execution.js.map +1 -1
- package/dist/modes/interactive/interactive-agent-events.js +2 -0
- package/dist/modes/interactive/interactive-agent-events.js.map +1 -1
- package/dist/modes/interactive/interactive-mode-base.d.ts +2 -1
- package/dist/modes/interactive/interactive-mode-base.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode-base.js +5 -0
- package/dist/modes/interactive/interactive-mode-base.js.map +1 -1
- package/dist/modes/interactive/interactive-resource-rendering.js +7 -10
- package/dist/modes/interactive/interactive-resource-rendering.js.map +1 -1
- package/dist/modes/interactive/interactive-selectors.js +5 -0
- package/dist/modes/interactive/interactive-selectors.js.map +1 -1
- package/dist/modes/interactive/interactive-session-runtime.js +1 -0
- package/dist/modes/interactive/interactive-session-runtime.js.map +1 -1
- package/dist/modes/interactive/interactive-startup.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-startup.js +8 -3
- package/dist/modes/interactive/interactive-startup.js.map +1 -1
- package/dist/modes/interactive/interactive-tui.d.ts +2 -1
- package/dist/modes/interactive/interactive-tui.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-tui.js +1 -0
- package/dist/modes/interactive/interactive-tui.js.map +1 -1
- package/dist/modes/interactive/theme/color-utils.d.ts.map +1 -1
- package/dist/modes/interactive/theme/color-utils.js +3 -0
- package/dist/modes/interactive/theme/color-utils.js.map +1 -1
- package/dist/modes/interactive/theme/export-colors.d.ts.map +1 -1
- package/dist/modes/interactive/theme/export-colors.js +4 -1
- package/dist/modes/interactive/theme/export-colors.js.map +1 -1
- package/dist/modes/interactive/theme/system-theme.d.ts +23 -0
- package/dist/modes/interactive/theme/system-theme.d.ts.map +1 -0
- package/dist/modes/interactive/theme/system-theme.js +462 -0
- package/dist/modes/interactive/theme/system-theme.js.map +1 -0
- package/dist/modes/interactive/theme/terminal-colors.d.ts +10 -0
- package/dist/modes/interactive/theme/terminal-colors.d.ts.map +1 -0
- package/dist/modes/interactive/theme/terminal-colors.js +36 -0
- package/dist/modes/interactive/theme/terminal-colors.js.map +1 -0
- package/dist/modes/interactive/theme/terminal-detection.d.ts +4 -6
- package/dist/modes/interactive/theme/terminal-detection.d.ts.map +1 -1
- package/dist/modes/interactive/theme/terminal-detection.js +12 -46
- package/dist/modes/interactive/theme/terminal-detection.js.map +1 -1
- package/dist/modes/interactive/theme/theme-class.d.ts +1 -0
- package/dist/modes/interactive/theme/theme-class.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme-class.js +2 -2
- package/dist/modes/interactive/theme/theme-class.js.map +1 -1
- package/dist/modes/interactive/theme/theme-controller.d.ts +16 -8
- package/dist/modes/interactive/theme/theme-controller.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme-controller.js +106 -64
- package/dist/modes/interactive/theme/theme-controller.js.map +1 -1
- package/dist/modes/interactive/theme/theme-loading.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme-loading.js +23 -2
- package/dist/modes/interactive/theme/theme-loading.js.map +1 -1
- package/dist/modes/interactive/theme/theme-schema.js +1 -1
- package/dist/modes/interactive/theme/theme-schema.js.map +1 -1
- package/dist/modes/interactive/theme/theme-schema.json +2 -2
- package/dist/modes/interactive/theme/theme.d.ts +2 -0
- package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme.js +2 -0
- package/dist/modes/interactive/theme/theme.js.map +1 -1
- package/dist/modes/interactive-engine/engine-session-stats.d.ts +26 -0
- package/dist/modes/interactive-engine/engine-session-stats.d.ts.map +1 -0
- package/dist/modes/interactive-engine/engine-session-stats.js +71 -0
- package/dist/modes/interactive-engine/engine-session-stats.js.map +1 -0
- package/dist/modes/interactive-engine/extension-ui-bridge.d.ts +2 -0
- package/dist/modes/interactive-engine/extension-ui-bridge.d.ts.map +1 -1
- package/dist/modes/interactive-engine/extension-ui-bridge.js +4 -0
- package/dist/modes/interactive-engine/extension-ui-bridge.js.map +1 -1
- package/dist/modes/interactive-engine/isolated-runtime.d.ts +3 -0
- package/dist/modes/interactive-engine/isolated-runtime.d.ts.map +1 -1
- package/dist/modes/interactive-engine/isolated-runtime.js +27 -5
- package/dist/modes/interactive-engine/isolated-runtime.js.map +1 -1
- package/dist/modes/rpc/rpc-provider-auth.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-provider-auth.js +3 -1
- package/dist/modes/rpc/rpc-provider-auth.js.map +1 -1
- package/dist/package-manager-cli.d.ts.map +1 -1
- package/dist/package-manager-cli.js +8 -2
- package/dist/package-manager-cli.js.map +1 -1
- package/dist/utils/paths.d.ts.map +1 -1
- package/dist/utils/paths.js +2 -1
- package/dist/utils/paths.js.map +1 -1
- package/dist/utils/shell.d.ts +1 -3
- package/dist/utils/shell.d.ts.map +1 -1
- package/dist/utils/shell.js +3 -30
- package/dist/utils/shell.js.map +1 -1
- package/docs/extensions/api-reference.md +5 -1
- package/docs/extensions/authoring.md +31 -1
- package/docs/extensions/events.md +3 -1
- package/docs/extensions.md +14 -0
- package/docs/models/evals.md +45 -2
- package/docs/models/reference.md +33 -2
- package/docs/models.md +1 -0
- package/docs/packages.md +2 -0
- package/docs/providers.md +34 -7
- package/docs/reference/cli.md +4 -0
- package/docs/rpc/protocol.md +10 -0
- package/docs/sdk/reference.md +11 -1
- package/docs/sdk/structured-decisions.md +4 -2
- package/docs/session-format.md +5 -0
- package/docs/settings.md +19 -5
- package/docs/skills.md +1 -1
- package/docs/themes/reference.md +2 -1
- package/docs/themes.md +4 -2
- package/docs/tools.md +39 -0
- package/npm-shrinkwrap.json +115 -113
- package/package.json +12 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-types.js","sourceRoot":"","sources":["../../../src/core/extensions/context-types.ts"],"names":[],"mappings":"","sourcesContent":["import type { Api, ImageContent, Model, TextContent } from \"@bastani/pi-ai/compat\";\nimport type { ThinkingLevel } from \"@earendil-works/pi-agent-core\";\nimport type { VerbatimCompactionResult } from \"../compaction/index.ts\";\nimport type { CustomMessage } from \"../messages.ts\";\nimport type { ModelRegistry } from \"../model-registry.ts\";\nimport type { ScopedModel } from \"../model-resolver.ts\";\nimport type { ReadonlySessionManager, SessionManager } from \"../session-manager.ts\";\nimport type { SkillCatalog } from \"../skill-catalog.ts\";\nimport type { BuildSystemPromptOptions } from \"../system-prompt.ts\";\nimport type { WorkflowStageAdmissionBoundary } from \"../workflow-stage-admission.ts\";\nimport type { SendMessageOptions, SendMessagesOptions } from \"./message-types.ts\";\nimport type { ExtensionUIContext } from \"./ui-types.js\";\nimport type { WorkflowActivityObserver, WorkflowActivitySubscription } from \"./workflow-events.js\";\n\nexport interface ContextUsage {\n\t/** Estimated context tokens, or null if unknown (e.g. right after compaction, before next LLM response). */\n\ttokens: number | null;\n\tcontextWindow: number;\n\t/** Context usage as percentage of context window, or null if tokens is unknown. */\n\tpercent: number | null;\n}\n\nexport interface CompactOptions {\n\t/** Fraction of compactable context to keep. 0.3 is aggressive, 0.7 is light. */\n\tcompression_ratio?: number;\n\t/** Number of recent context-eligible messages to keep uncompressed. */\n\tpreserve_recent?: number;\n\t/** Focus query for relevance-based pruning. Defaults to auto-detected session context. */\n\tquery?: string;\n\tonComplete?: (result: VerbatimCompactionResult) => void;\n\tonError?: (error: Error) => void;\n}\n\n/**\n * Late routes settle as delivery acknowledgements: resolution means the route\n * accepted delivery, while rejection means delivery was not fully accepted. A\n * sequential batch may have delivered a prefix before it rejects; stale-context\n * rejection identifies the dropped route, and other failures reject unchanged.\n */\nexport interface WorkflowStageLateMessageRouter {\n\trouteMessage<T>(\n\t\tmessage: Pick<CustomMessage<T>, \"customType\" | \"content\" | \"display\" | \"details\">,\n\t\toptions?: SendMessageOptions,\n\t): void | Promise<void>;\n\trouteMessages<T>(\n\t\tmessages: Array<Pick<CustomMessage<T>, \"customType\" | \"content\" | \"display\" | \"details\">>,\n\t\toptions?: SendMessagesOptions,\n\t): void | Promise<void>;\n}\n\nexport interface WorkflowStageMessageAdmission {\n\t/** Internal generation-owned boundary shared by every model-fallback session. */\n\treadonly boundary: WorkflowStageAdmissionBoundary;\n\t/** Internal extension state that must survive model-fallback session replacement. */\n\treadonly extensionState: Map<string, object>;\n\tisOpen(): boolean;\n}\n\nexport interface WorkflowPendingStageSender {\n\treadonly id: string;\n\treadonly name?: string;\n\treadonly cwd: string;\n\treadonly model: string;\n\treadonly pid: number;\n\treadonly startedAt: number;\n\treadonly lastActivity: number;\n\treadonly status?: string;\n\treadonly group?: string;\n}\n\nexport interface WorkflowPendingStageMessage {\n\treadonly id: string;\n\treadonly timestamp: number;\n\treadonly replyTo?: string;\n\treadonly expectsReply?: boolean;\n\treadonly replyError?: string;\n\treadonly content: {\n\t\treadonly text: string;\n\t\treadonly attachments?: readonly {\n\t\t\treadonly type: \"file\" | \"snippet\" | \"context\";\n\t\t\treadonly name: string;\n\t\t\treadonly content: string;\n\t\t\treadonly language?: string;\n\t\t}[];\n\t};\n}\n\nexport interface WorkflowPendingStageDelivery {\n\t/** Process-private authority proving this stage belongs to the workflow run route. */\n\treadonly routeCapability: string;\n\tdeliverPending(\n\t\tdeliver: (from: WorkflowPendingStageSender, message: WorkflowPendingStageMessage) => void | Promise<void>,\n\t): Promise<void>;\n\tready(): Promise<void> | undefined;\n\t/**\n\t * Terminal signal from a delivery owner that has run out of recovery: the\n\t * queued messages can no longer be drained, so the stage must fail at its own\n\t * lifecycle boundary rather than run without the instructions it was given.\n\t * Idempotent — the first reason wins, and `ready()` then settles with a\n\t * stage-scoped error instead of waiting for a delivery that will not come.\n\t *\n\t * Required, not optional: `ready()` has no timeout, so a delivery that cannot\n\t * be settled leaves its stage parked forever. Every implementer must be able\n\t * to answer that no delivery is coming.\n\t */\n\tfail(reason: Error): void;\n}\n\nexport interface WorkflowStageOrchestrationContext {\n\treadonly kind: \"workflow-stage\";\n\treadonly workflowRunId: string;\n\treadonly workflowStageId: string;\n\treadonly workflowStageName: string;\n\treadonly constraints: {\n\t\treadonly disableWorkflowTool: true;\n\t};\n\t/** Internal lifecycle seam for surfacing detached results after this stage closes. */\n\treadonly lateMessageRouter?: WorkflowStageLateMessageRouter;\n\t/** Internal synchronous boundary used before producer reply/turn side effects. */\n\treadonly messageAdmission?: WorkflowStageMessageAdmission;\n\t/**\n\t * Resolved per-session intercom home group for this stage. Concrete, already\n\t * normalized upstream. Read by the intercom extension (buildRegistration) and\n\t * inherited by subagents this stage spawns. Absent => no group override.\n\t */\n\treadonly intercomGroup?: string;\n\t/** Durable pre-start intercom delivery, drained by the intercom extension before the first turn. */\n\treadonly pendingStageDelivery?: WorkflowPendingStageDelivery;\n}\n/** Typed child intercom identity and supervisor capability issued at admission. */\nexport interface SubagentIntercomIdentity {\n\treadonly orchestratorTarget: string;\n\treadonly runId: string;\n\treadonly agent: string;\n\treadonly index: number;\n\treadonly sessionName?: string;\n\treadonly supervisor?: {\n\t\treadonly capability: string;\n\t\treadonly supervisorSessionId: string;\n\t};\n}\n\n/** Typed child capability policy supplied by an in-process subagent admission. */\nexport interface SubagentChildPolicy {\n\treadonly managementActions: \"full\" | \"restricted\";\n\treadonly fanoutAuthorized: boolean;\n\treadonly inheritProjectContext: boolean;\n\treadonly inheritSkills: boolean;\n\t/** Host-owned signal fired when this noninteractive execution ends, before disposal. */\n\treadonly executionEnded?: AbortSignal;\n\t/** SDK-owned inbound lifetime; closing drains admitted messages without reopening the task. */\n\treadonly messageAdmission?: {\n\t\tisOpen(): boolean;\n\t\t/** Reserve the full producer operation, including retries, before child settlement. */\n\t\trun(deliver: () => void | Promise<void>): Promise<void>;\n\t};\n\t/** Current admitted in-process nesting depth; absent for top-level sessions. */\n\treadonly depth?: number;\n\t/** Undefined preserves MCP configuration defaults; [] explicitly disables direct tools. */\n\treadonly mcpDirectTools?: readonly string[];\n\t/** Admission-issued identity/capability; never inherited through process environment. */\n\treadonly intercom?: SubagentIntercomIdentity;\n\t/** Resolved intercom group for this admitted child, when one was assigned. */\n\treadonly intercomGroup?: string;\n}\n// Union alias kept for forward-compatible orchestration context variants.\nexport type OrchestrationContext = WorkflowStageOrchestrationContext;\n\n/**\n * Context passed to extension event handlers.\n */\nexport type ExtensionMode = \"tui\" | \"rpc\" | \"json\" | \"print\";\n\nexport interface ExtensionContext {\n\t/** Observe the owning session's workflow activity, starting with an ordered snapshot. */\n\tobserveWorkflowActivity(observer: WorkflowActivityObserver): WorkflowActivitySubscription;\n\t/** Paths of actually loaded extensions, when supplied by the host. */\n\tgetExtensionPaths?(): string[];\n\t/** Internal actual-session binding; never populated from model arguments. */\n\tgetAgentTaskHost?(): import(\"../tasks/agent-adapter.js\").AgentTaskHost;\n\t/** Internal owner-bound defaults and capability ceiling for builtin child adapters. */\n\tgetChildSessionOptions?: import(\"../child-session-options.ts\").ChildSessionOptionsResolver;\n\t/** Session-scoped orchestration policy for child runtimes such as workflow stages. */\n\treadonly orchestrationContext?: OrchestrationContext;\n\t/** Typed capability policy for an in-process subagent child, when this session is one. */\n\treadonly subagentPolicy?: SubagentChildPolicy;\n\t/** UI methods for user interaction */\n\tui: ExtensionUIContext;\n\t/** Current run mode. Use \"tui\" to guard terminal-only UI such as custom components. */\n\tmode: ExtensionMode;\n\t/** Whether dialog-capable UI is available (true in TUI and RPC modes) */\n\thasUI: boolean;\n\t/** Whether a semantic human-input adapter is available, independently of rendering. */\n\thasHumanInput: boolean;\n\t/** Current working directory */\n\tcwd: string;\n\t/** Session manager (read-only) */\n\tsessionManager: ReadonlySessionManager;\n\t/** Model registry for API key resolution */\n\tmodelRegistry: ModelRegistry;\n\t/** Current model (may be undefined) */\n\tmodel: Model<Api> | undefined;\n\t/** Models scoped to this session (resolved from `--models` / `enabledModels`\n\t * settings against the available catalogue). Same set the `/scoped-models`\n\t * command shows. Empty when no scoping is configured (all available models\n\t * are usable). Read-only snapshot, resolved at access time. */\n\tscopedModels: readonly ScopedModel[];\n\t/** Current thinking level, resolved from the active session at access time. */\n\tthinkingLevel?: ThinkingLevel;\n\t/** Session-scoped internal resource router (e.g. artifact:// resolver). */\n\treadonly internalResourceRouter?: import(\"../tools/resource-selectors.ts\").InternalResourceRouter;\n\t/** Whether the agent is idle (not streaming) */\n\tisIdle(): boolean;\n\t/** Whether project-local trust is active for this context. */\n\tisProjectTrusted(): boolean;\n\t/** The current abort signal, or undefined when the agent is not streaming. */\n\tsignal: AbortSignal | undefined;\n\t/** Abort the current agent operation */\n\tabort(): void;\n\t/** Whether there are queued messages waiting */\n\thasPendingMessages(): boolean;\n\t/** Gracefully shutdown pi and exit. Available in all contexts. */\n\tshutdown(): void;\n\t/** Get current context usage for the active model. */\n\tgetContextUsage(): ContextUsage | undefined;\n\t/** Trigger compaction without awaiting completion. */\n\tcompact(options?: CompactOptions): void;\n\t/** Get the current effective system prompt. */\n\tgetSystemPrompt(): string;\n\t/** Current loader-owned skill candidates and exact selector resolver. */\n\tgetSkillCatalog?(): SkillCatalog;\n\t/** Current routing-only inference setting from the owning session. Does not change the chat model. */\n\tgetRouterModel(): string;\n\t/** Provider filters for `model: \"auto\"` candidates from the owning session's settings. */\n\tgetModelRouting?(): import(\"../settings-types.ts\").ModelRoutingSettings;\n}\n\n/**\n * Extended context for command handlers.\n * Includes session control methods only safe in user-initiated commands.\n */\nexport interface ExtensionCommandContext extends ExtensionContext {\n\t/** Get the current base system-prompt construction options. */\n\tgetSystemPromptOptions(): BuildSystemPromptOptions;\n\n\t/** Wait for the agent to finish streaming */\n\twaitForIdle(): Promise<void>;\n\n\t/** Start a new session, optionally with initialization. */\n\tnewSession(options?: {\n\t\tparentSession?: string;\n\t\tsetup?: (sessionManager: SessionManager) => Promise<void>;\n\t\twithSession?: (ctx: ReplacedSessionContext) => Promise<void>;\n\t}): Promise<{ cancelled: boolean }>;\n\n\t/** Fork from a specific entry, creating a new session file. */\n\tfork(\n\t\tentryId: string,\n\t\toptions?: { position?: \"before\" | \"at\"; withSession?: (ctx: ReplacedSessionContext) => Promise<void> },\n\t): Promise<{ cancelled: boolean }>;\n\n\t/** Navigate to a different point in the session tree. */\n\tnavigateTree(\n\t\ttargetId: string,\n\t\toptions?: { summarize?: boolean; customInstructions?: string; replaceInstructions?: boolean; label?: string },\n\t): Promise<{ cancelled: boolean }>;\n\n\t/** Switch to a different session file. */\n\tswitchSession(\n\t\tsessionPath: string,\n\t\toptions?: { withSession?: (ctx: ReplacedSessionContext) => Promise<void> },\n\t): Promise<{ cancelled: boolean }>;\n\n\t/** Reload extensions, skills, prompts, and themes. */\n\treload(): Promise<void>;\n}\n\n/**\n * Fresh command-capable context bound to the replacement session after a session switch.\n *\n * This is passed to `withSession()` callbacks on `newSession()`, `fork()`, and `switchSession()`.\n */\nexport interface ReplacedSessionContext extends ExtensionCommandContext {\n\tsendMessage<T = unknown>(\n\t\tmessage: Pick<CustomMessage<T>, \"customType\" | \"content\" | \"display\" | \"details\">,\n\t\toptions?: SendMessageOptions,\n\t): Promise<void>;\n\n\tsendUserMessage(\n\t\tcontent: string | (TextContent | ImageContent)[],\n\t\toptions?: { deliverAs?: \"steer\" | \"followUp\"; expandPromptTemplates?: boolean },\n\t): Promise<void>;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"context-types.js","sourceRoot":"","sources":["../../../src/core/extensions/context-types.ts"],"names":[],"mappings":"","sourcesContent":["import type { Api, ImageContent, Model, TextContent } from \"@bastani/pi-ai/compat\";\nimport type { ThinkingLevel } from \"@earendil-works/pi-agent-core\";\nimport type { VerbatimCompactionResult } from \"../compaction/index.ts\";\nimport type { CustomMessage } from \"../messages.ts\";\nimport type { ModelRegistry } from \"../model-registry.ts\";\nimport type { ScopedModel } from \"../model-resolver.ts\";\nimport type { ReadonlySessionManager, SessionManager } from \"../session-manager.ts\";\nimport type { SkillCatalog } from \"../skill-catalog.ts\";\nimport type { BuildSystemPromptOptions } from \"../system-prompt.ts\";\nimport type { WorkflowStageAdmissionBoundary } from \"../workflow-stage-admission.ts\";\nimport type { SendMessageOptions, SendMessagesOptions } from \"./message-types.ts\";\nimport type { ExtensionUIContext } from \"./ui-types.js\";\nimport type { WorkflowActivityObserver, WorkflowActivitySubscription } from \"./workflow-events.js\";\nexport interface ExecuteToolOptions {\n\tsignal?: AbortSignal;\n\tonUpdate?: import(\"@earendil-works/pi-agent-core\").AgentToolUpdateCallback;\n}\n\n/** Tool-only context. Nested calls retain session validation and permission hooks. */\nexport interface ExtensionToolContext extends ExtensionContext {\n\treadonly tools: readonly import(\"@earendil-works/pi-agent-core\").AgentTool[];\n\texecuteTool(\n\t\tname: string,\n\t\targs: unknown,\n\t\toptions?: ExecuteToolOptions,\n\t): Promise<import(\"@earendil-works/pi-agent-core\").AgentToolCallOutcome>;\n}\n\nexport interface ContextUsage {\n\t/** Estimated context tokens, or null if unknown (e.g. right after compaction, before next LLM response). */\n\ttokens: number | null;\n\tcontextWindow: number;\n\t/** Context usage as percentage of context window, or null if tokens is unknown. */\n\tpercent: number | null;\n}\n\nexport interface CompactOptions {\n\t/** Fraction of compactable context to keep. 0.3 is aggressive, 0.7 is light. */\n\tcompression_ratio?: number;\n\t/** Number of recent context-eligible messages to keep uncompressed. */\n\tpreserve_recent?: number;\n\t/** Focus query for relevance-based pruning. Defaults to auto-detected session context. */\n\tquery?: string;\n\tonComplete?: (result: VerbatimCompactionResult) => void;\n\tonError?: (error: Error) => void;\n}\n\n/**\n * Late routes settle as delivery acknowledgements: resolution means the route\n * accepted delivery, while rejection means delivery was not fully accepted. A\n * sequential batch may have delivered a prefix before it rejects; stale-context\n * rejection identifies the dropped route, and other failures reject unchanged.\n */\nexport interface WorkflowStageLateMessageRouter {\n\trouteMessage<T>(\n\t\tmessage: Pick<CustomMessage<T>, \"customType\" | \"content\" | \"display\" | \"details\">,\n\t\toptions?: SendMessageOptions,\n\t): void | Promise<void>;\n\trouteMessages<T>(\n\t\tmessages: Array<Pick<CustomMessage<T>, \"customType\" | \"content\" | \"display\" | \"details\">>,\n\t\toptions?: SendMessagesOptions,\n\t): void | Promise<void>;\n}\n\nexport interface WorkflowStageMessageAdmission {\n\t/** Internal generation-owned boundary shared by every model-fallback session. */\n\treadonly boundary: WorkflowStageAdmissionBoundary;\n\t/** Internal extension state that must survive model-fallback session replacement. */\n\treadonly extensionState: Map<string, object>;\n\tisOpen(): boolean;\n}\n\nexport interface WorkflowPendingStageSender {\n\treadonly id: string;\n\treadonly name?: string;\n\treadonly cwd: string;\n\treadonly model: string;\n\treadonly pid: number;\n\treadonly startedAt: number;\n\treadonly lastActivity: number;\n\treadonly status?: string;\n\treadonly group?: string;\n}\n\nexport interface WorkflowPendingStageMessage {\n\treadonly id: string;\n\treadonly timestamp: number;\n\treadonly replyTo?: string;\n\treadonly expectsReply?: boolean;\n\treadonly replyError?: string;\n\treadonly content: {\n\t\treadonly text: string;\n\t\treadonly attachments?: readonly {\n\t\t\treadonly type: \"file\" | \"snippet\" | \"context\";\n\t\t\treadonly name: string;\n\t\t\treadonly content: string;\n\t\t\treadonly language?: string;\n\t\t}[];\n\t};\n}\n\nexport interface WorkflowPendingStageDelivery {\n\t/** Process-private authority proving this stage belongs to the workflow run route. */\n\treadonly routeCapability: string;\n\tdeliverPending(\n\t\tdeliver: (from: WorkflowPendingStageSender, message: WorkflowPendingStageMessage) => void | Promise<void>,\n\t): Promise<void>;\n\tready(): Promise<void> | undefined;\n\t/**\n\t * Terminal signal from a delivery owner that has run out of recovery: the\n\t * queued messages can no longer be drained, so the stage must fail at its own\n\t * lifecycle boundary rather than run without the instructions it was given.\n\t * Idempotent — the first reason wins, and `ready()` then settles with a\n\t * stage-scoped error instead of waiting for a delivery that will not come.\n\t *\n\t * Required, not optional: `ready()` has no timeout, so a delivery that cannot\n\t * be settled leaves its stage parked forever. Every implementer must be able\n\t * to answer that no delivery is coming.\n\t */\n\tfail(reason: Error): void;\n}\n\nexport interface WorkflowStageOrchestrationContext {\n\treadonly kind: \"workflow-stage\";\n\treadonly workflowRunId: string;\n\treadonly workflowStageId: string;\n\treadonly workflowStageName: string;\n\treadonly constraints: {\n\t\treadonly disableWorkflowTool: true;\n\t};\n\t/** Internal lifecycle seam for surfacing detached results after this stage closes. */\n\treadonly lateMessageRouter?: WorkflowStageLateMessageRouter;\n\t/** Internal synchronous boundary used before producer reply/turn side effects. */\n\treadonly messageAdmission?: WorkflowStageMessageAdmission;\n\t/**\n\t * Resolved per-session intercom home group for this stage. Concrete, already\n\t * normalized upstream. Read by the intercom extension (buildRegistration) and\n\t * inherited by subagents this stage spawns. Absent => no group override.\n\t */\n\treadonly intercomGroup?: string;\n\t/** Durable pre-start intercom delivery, drained by the intercom extension before the first turn. */\n\treadonly pendingStageDelivery?: WorkflowPendingStageDelivery;\n}\n/** Typed child intercom identity and supervisor capability issued at admission. */\nexport interface SubagentIntercomIdentity {\n\treadonly orchestratorTarget: string;\n\treadonly runId: string;\n\treadonly agent: string;\n\treadonly index: number;\n\treadonly sessionName?: string;\n\treadonly supervisor?: {\n\t\treadonly capability: string;\n\t\treadonly supervisorSessionId: string;\n\t};\n}\n\n/** Typed child capability policy supplied by an in-process subagent admission. */\nexport interface SubagentChildPolicy {\n\treadonly managementActions: \"full\" | \"restricted\";\n\treadonly fanoutAuthorized: boolean;\n\treadonly inheritProjectContext: boolean;\n\treadonly inheritSkills: boolean;\n\t/** Host-owned signal fired when this noninteractive execution ends, before disposal. */\n\treadonly executionEnded?: AbortSignal;\n\t/** SDK-owned inbound lifetime; closing drains admitted messages without reopening the task. */\n\treadonly messageAdmission?: {\n\t\tisOpen(): boolean;\n\t\t/** Reserve the full producer operation, including retries, before child settlement. */\n\t\trun(deliver: () => void | Promise<void>): Promise<void>;\n\t};\n\t/** Current admitted in-process nesting depth; absent for top-level sessions. */\n\treadonly depth?: number;\n\t/** Undefined preserves MCP configuration defaults; [] explicitly disables direct tools. */\n\treadonly mcpDirectTools?: readonly string[];\n\t/** Admission-issued identity/capability; never inherited through process environment. */\n\treadonly intercom?: SubagentIntercomIdentity;\n\t/** Resolved intercom group for this admitted child, when one was assigned. */\n\treadonly intercomGroup?: string;\n}\n// Union alias kept for forward-compatible orchestration context variants.\nexport type OrchestrationContext = WorkflowStageOrchestrationContext;\n\n/**\n * Context passed to extension event handlers.\n */\nexport type ExtensionMode = \"tui\" | \"rpc\" | \"json\" | \"print\";\n\nexport interface ExtensionContext {\n\t/** Observe the owning session's workflow activity, starting with an ordered snapshot. */\n\tobserveWorkflowActivity(observer: WorkflowActivityObserver): WorkflowActivitySubscription;\n\t/** Paths of actually loaded extensions, when supplied by the host. */\n\tgetExtensionPaths?(): string[];\n\t/** Internal actual-session binding; never populated from model arguments. */\n\tgetAgentTaskHost?(): import(\"../tasks/agent-adapter.js\").AgentTaskHost;\n\t/** Internal owner-bound defaults and capability ceiling for builtin child adapters. */\n\tgetChildSessionOptions?: import(\"../child-session-options.ts\").ChildSessionOptionsResolver;\n\t/** Session-scoped orchestration policy for child runtimes such as workflow stages. */\n\treadonly orchestrationContext?: OrchestrationContext;\n\t/** Typed capability policy for an in-process subagent child, when this session is one. */\n\treadonly subagentPolicy?: SubagentChildPolicy;\n\t/** UI methods for user interaction */\n\tui: ExtensionUIContext;\n\t/** Current run mode. Use \"tui\" to guard terminal-only UI such as custom components. */\n\tmode: ExtensionMode;\n\t/** Whether dialog-capable UI is available (true in TUI and RPC modes) */\n\thasUI: boolean;\n\t/** Whether a semantic human-input adapter is available, independently of rendering. */\n\thasHumanInput: boolean;\n\t/** Current working directory */\n\tcwd: string;\n\t/** Session manager (read-only) */\n\tsessionManager: ReadonlySessionManager;\n\t/** Model registry for API key resolution */\n\tmodelRegistry: ModelRegistry;\n\t/** Current model (may be undefined) */\n\tmodel: Model<Api> | undefined;\n\t/** Models scoped to this session (resolved from `--models` / `enabledModels`\n\t * settings against the available catalogue). Same set the `/scoped-models`\n\t * command shows. Empty when no scoping is configured (all available models\n\t * are usable). Read-only snapshot, resolved at access time. */\n\tscopedModels: readonly ScopedModel[];\n\t/** Current thinking level, resolved from the active session at access time. */\n\tthinkingLevel?: ThinkingLevel;\n\t/** Session-scoped internal resource router (e.g. artifact:// resolver). */\n\treadonly internalResourceRouter?: import(\"../tools/resource-selectors.ts\").InternalResourceRouter;\n\t/** Whether the agent is idle (not streaming) */\n\tisIdle(): boolean;\n\t/** Whether project-local trust is active for this context. */\n\tisProjectTrusted(): boolean;\n\t/** The current abort signal, or undefined when the agent is not streaming. */\n\tsignal: AbortSignal | undefined;\n\t/** Abort the current agent operation */\n\tabort(): void;\n\t/** Whether there are queued messages waiting */\n\thasPendingMessages(): boolean;\n\t/** Gracefully shutdown pi and exit. Available in all contexts. */\n\tshutdown(): void;\n\t/** Get current context usage for the active model. */\n\tgetContextUsage(): ContextUsage | undefined;\n\t/** Trigger compaction without awaiting completion. */\n\tcompact(options?: CompactOptions): void;\n\t/** Get the current effective system prompt. */\n\tgetSystemPrompt(): string;\n\t/** Current loader-owned skill candidates and exact selector resolver. */\n\tgetSkillCatalog?(): SkillCatalog;\n\t/** Current routing-only inference setting from the owning session. Does not change the chat model. */\n\tgetRouterModel(): string;\n\t/** Provider filters for `model: \"auto\"` candidates from the owning session's settings. */\n\tgetModelRouting?(): import(\"../settings-types.ts\").ModelRoutingSettings;\n}\n\n/**\n * Extended context for command handlers.\n * Includes session control methods only safe in user-initiated commands.\n */\nexport interface ExtensionCommandContext extends ExtensionContext {\n\t/** Get the current base system-prompt construction options. */\n\tgetSystemPromptOptions(): BuildSystemPromptOptions;\n\n\t/** Wait for the agent to finish streaming */\n\twaitForIdle(): Promise<void>;\n\n\t/** Start a new session, optionally with initialization. */\n\tnewSession(options?: {\n\t\tparentSession?: string;\n\t\tsetup?: (sessionManager: SessionManager) => Promise<void>;\n\t\twithSession?: (ctx: ReplacedSessionContext) => Promise<void>;\n\t}): Promise<{ cancelled: boolean }>;\n\n\t/** Fork from a specific entry, creating a new session file. */\n\tfork(\n\t\tentryId: string,\n\t\toptions?: { position?: \"before\" | \"at\"; withSession?: (ctx: ReplacedSessionContext) => Promise<void> },\n\t): Promise<{ cancelled: boolean }>;\n\n\t/** Navigate to a different point in the session tree. */\n\tnavigateTree(\n\t\ttargetId: string,\n\t\toptions?: { summarize?: boolean; customInstructions?: string; replaceInstructions?: boolean; label?: string },\n\t): Promise<{ cancelled: boolean }>;\n\n\t/** Switch to a different session file. */\n\tswitchSession(\n\t\tsessionPath: string,\n\t\toptions?: { withSession?: (ctx: ReplacedSessionContext) => Promise<void> },\n\t): Promise<{ cancelled: boolean }>;\n\n\t/** Reload extensions, skills, prompts, and themes. */\n\treload(): Promise<void>;\n}\n\n/**\n * Fresh command-capable context bound to the replacement session after a session switch.\n *\n * This is passed to `withSession()` callbacks on `newSession()`, `fork()`, and `switchSession()`.\n */\nexport interface ReplacedSessionContext extends ExtensionCommandContext {\n\tsendMessage<T = unknown>(\n\t\tmessage: Pick<CustomMessage<T>, \"customType\" | \"content\" | \"display\" | \"details\">,\n\t\toptions?: SendMessageOptions,\n\t): Promise<void>;\n\n\tsendUserMessage(\n\t\tcontent: string | (TextContent | ImageContent)[],\n\t\toptions?: { deliverAs?: \"steer\" | \"followUp\"; expandPromptTemplates?: boolean },\n\t): Promise<void>;\n}\n"]}
|
|
@@ -32,6 +32,9 @@ export interface ToolResultEventResult {
|
|
|
32
32
|
content?: (TextContent | ImageContent)[];
|
|
33
33
|
details?: unknown;
|
|
34
34
|
isError?: boolean;
|
|
35
|
+
/** Content replacement without this field drops machine-readable data to prevent redaction leaks. */
|
|
36
|
+
structuredContent?: import("@bastani/pi-ai").JsonValue;
|
|
37
|
+
usage?: import("@bastani/pi-ai").Usage;
|
|
35
38
|
}
|
|
36
39
|
export interface MessageEndEventResult {
|
|
37
40
|
/** Replace the finalized message. The replacement must keep the original message role. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-results.d.ts","sourceRoot":"","sources":["../../../src/core/extensions/event-results.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,MAAM,WAAW,kBAAkB;IAClC,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;CAC1B;AAED,MAAM,MAAM,kBAAkB,GAAG,cAAc,CAAC;AAChD,MAAM,MAAM,4BAA4B,GAAG,cAAc,CAAC;AAE1D,MAAM,MAAM,gCAAgC,GAAG,OAAO,CAAC;AAEvD,MAAM,WAAW,mBAAmB;IACnC,wFAAwF;IACxF,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,0CAA0C;AAC1C,MAAM,MAAM,mBAAmB,GAC5B;IAAE,UAAU,EAAE,cAAc,CAAC;IAAC,MAAM,CAAC,EAAE,KAAK,CAAA;CAAE,GAC9C;IAAE,UAAU,CAAC,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,CAAC;AAE9C,MAAM,WAAW,qBAAqB;IACrC,OAAO,CAAC,EAAE,CAAC,WAAW,GAAG,YAAY,CAAC,EAAE,CAAC;IACzC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"event-results.d.ts","sourceRoot":"","sources":["../../../src/core/extensions/event-results.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,MAAM,WAAW,kBAAkB;IAClC,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;CAC1B;AAED,MAAM,MAAM,kBAAkB,GAAG,cAAc,CAAC;AAChD,MAAM,MAAM,4BAA4B,GAAG,cAAc,CAAC;AAE1D,MAAM,MAAM,gCAAgC,GAAG,OAAO,CAAC;AAEvD,MAAM,WAAW,mBAAmB;IACnC,wFAAwF;IACxF,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,0CAA0C;AAC1C,MAAM,MAAM,mBAAmB,GAC5B;IAAE,UAAU,EAAE,cAAc,CAAC;IAAC,MAAM,CAAC,EAAE,KAAK,CAAA;CAAE,GAC9C;IAAE,UAAU,CAAC,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,CAAC;AAE9C,MAAM,WAAW,qBAAqB;IACrC,OAAO,CAAC,EAAE,CAAC,WAAW,GAAG,YAAY,CAAC,EAAE,CAAC;IACzC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,qGAAqG;IACrG,iBAAiB,CAAC,EAAE,OAAO,gBAAgB,EAAE,SAAS,CAAC;IACvD,KAAK,CAAC,EAAE,OAAO,gBAAgB,EAAE,KAAK,CAAC;CACvC;AAED,MAAM,WAAW,qBAAqB;IACrC,0FAA0F;IAC1F,OAAO,CAAC,EAAE,YAAY,CAAC;CACvB;AAED,MAAM,WAAW,2BAA2B;IAC3C,OAAO,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,YAAY,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC,CAAC;IAChF,qGAAqG;IACrG,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,yBAAyB;IACzC,MAAM,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,uBAAuB;IACvC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,uBAAuB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,MAAM,WAAW,0BAA0B;IAC1C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,4DAA4D;IAC5D,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,uBAAuB;IACvC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE;QACT,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,OAAO,CAAC;KAClB,CAAC;IACF,qDAAqD;IACrD,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,sEAAsE;IACtE,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,2DAA2D;IAC3D,KAAK,CAAC,EAAE,MAAM,CAAC;CACf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-results.js","sourceRoot":"","sources":["../../../src/core/extensions/event-results.ts"],"names":[],"mappings":"","sourcesContent":["import type { ImageContent, TextContent } from \"@bastani/pi-ai/compat\";\nimport type { AgentMessage } from \"@earendil-works/pi-agent-core\";\nimport type { BashResult } from \"../bash-executor.ts\";\nimport type { CustomMessage } from \"../messages.ts\";\nimport type { BashOperations } from \"../tools/bash.js\";\nimport type { BoundaryResult } from \"./agent-events.ts\";\n\nexport interface ContextEventResult {\n\tmessages?: AgentMessage[];\n}\n\nexport type TurnEndEventResult = BoundaryResult;\nexport type AgentBeforeSettleEventResult = BoundaryResult;\n\nexport type BeforeProviderRequestEventResult = unknown;\n\nexport interface ToolCallEventResult {\n\t/** Block tool execution. To modify arguments, mutate `event.input` in place instead. */\n\tblock?: boolean;\n\treason?: string;\n\t/**\n\t * Hint that the agent should stop after the current tool batch when this call is blocked.\n\t * Early termination only happens when every finalized tool result in the batch sets this to true.\n\t */\n\tterminate?: boolean;\n}\n\n/** Result from user_bash event handler */\nexport type UserBashEventResult =\n\t| { operations: BashOperations; result?: never }\n\t| { operations?: never; result: BashResult };\n\nexport interface ToolResultEventResult {\n\tcontent?: (TextContent | ImageContent)[];\n\tdetails?: unknown;\n\tisError?: boolean;\n}\n\nexport interface MessageEndEventResult {\n\t/** Replace the finalized message. The replacement must keep the original message role. */\n\tmessage?: AgentMessage;\n}\n\nexport interface BeforeAgentStartEventResult {\n\tmessage?: Pick<CustomMessage, \"customType\" | \"content\" | \"display\" | \"details\">;\n\t/** Replace the system prompt for this turn. If multiple extensions return this, they are chained. */\n\tsystemPrompt?: string;\n}\n\nexport interface SessionBeforeSwitchResult {\n\tcancel?: boolean;\n}\n\nexport interface SessionBeforeForkResult {\n\tcancel?: boolean;\n\tskipConversationRestore?: boolean;\n}\n\nexport interface SessionBeforeCompactResult {\n\tcancel?: boolean;\n\t/** Full verbatim replacement for the compactable region. */\n\tcompactedText?: string;\n}\n\nexport interface SessionBeforeTreeResult {\n\tcancel?: boolean;\n\tsummary?: {\n\t\tsummary: string;\n\t\tdetails?: unknown;\n\t};\n\t/** Override custom instructions for summarization */\n\tcustomInstructions?: string;\n\t/** Override whether customInstructions replaces the default prompt */\n\treplaceInstructions?: boolean;\n\t/** Override label to attach to the branch summary entry */\n\tlabel?: string;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"event-results.js","sourceRoot":"","sources":["../../../src/core/extensions/event-results.ts"],"names":[],"mappings":"","sourcesContent":["import type { ImageContent, TextContent } from \"@bastani/pi-ai/compat\";\nimport type { AgentMessage } from \"@earendil-works/pi-agent-core\";\nimport type { BashResult } from \"../bash-executor.ts\";\nimport type { CustomMessage } from \"../messages.ts\";\nimport type { BashOperations } from \"../tools/bash.js\";\nimport type { BoundaryResult } from \"./agent-events.ts\";\n\nexport interface ContextEventResult {\n\tmessages?: AgentMessage[];\n}\n\nexport type TurnEndEventResult = BoundaryResult;\nexport type AgentBeforeSettleEventResult = BoundaryResult;\n\nexport type BeforeProviderRequestEventResult = unknown;\n\nexport interface ToolCallEventResult {\n\t/** Block tool execution. To modify arguments, mutate `event.input` in place instead. */\n\tblock?: boolean;\n\treason?: string;\n\t/**\n\t * Hint that the agent should stop after the current tool batch when this call is blocked.\n\t * Early termination only happens when every finalized tool result in the batch sets this to true.\n\t */\n\tterminate?: boolean;\n}\n\n/** Result from user_bash event handler */\nexport type UserBashEventResult =\n\t| { operations: BashOperations; result?: never }\n\t| { operations?: never; result: BashResult };\n\nexport interface ToolResultEventResult {\n\tcontent?: (TextContent | ImageContent)[];\n\tdetails?: unknown;\n\tisError?: boolean;\n\t/** Content replacement without this field drops machine-readable data to prevent redaction leaks. */\n\tstructuredContent?: import(\"@bastani/pi-ai\").JsonValue;\n\tusage?: import(\"@bastani/pi-ai\").Usage;\n}\n\nexport interface MessageEndEventResult {\n\t/** Replace the finalized message. The replacement must keep the original message role. */\n\tmessage?: AgentMessage;\n}\n\nexport interface BeforeAgentStartEventResult {\n\tmessage?: Pick<CustomMessage, \"customType\" | \"content\" | \"display\" | \"details\">;\n\t/** Replace the system prompt for this turn. If multiple extensions return this, they are chained. */\n\tsystemPrompt?: string;\n}\n\nexport interface SessionBeforeSwitchResult {\n\tcancel?: boolean;\n}\n\nexport interface SessionBeforeForkResult {\n\tcancel?: boolean;\n\tskipConversationRestore?: boolean;\n}\n\nexport interface SessionBeforeCompactResult {\n\tcancel?: boolean;\n\t/** Full verbatim replacement for the compactable region. */\n\tcompactedText?: string;\n}\n\nexport interface SessionBeforeTreeResult {\n\tcancel?: boolean;\n\tsummary?: {\n\t\tsummary: string;\n\t\tdetails?: unknown;\n\t};\n\t/** Override custom instructions for summarization */\n\tcustomInstructions?: string;\n\t/** Override whether customInstructions replaces the default prompt */\n\treplaceInstructions?: boolean;\n\t/** Override label to attach to the branch summary entry */\n\tlabel?: string;\n}\n"]}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export type { CacheWarmingDecisionEvent, CacheWarmingDecisionEventResult } from "../cache-warmer.ts";
|
|
2
|
+
export type { ExecuteToolOptions, ExtensionToolContext } from "./context-types.ts";
|
|
2
3
|
export type { HostDiagnostic, HostInput, HostInputOptions, QuestionAnswer, QuestionnaireError, QuestionnaireResult, QuestionParams, } from "./host-input.js";
|
|
4
|
+
export type { ToolAnnotations, ToolExposure, ToolLoadout, ToolLoadoutChanges, ToolNamespace } from "./tool-types.ts";
|
|
3
5
|
/**
|
|
4
6
|
* Extension system for lifecycle events and custom tools.
|
|
5
7
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/extensions/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/extensions/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/extensions/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/extensions/index.ts"],"names":[],"mappings":"AAqBA,OAAO,EACN,sBAAsB,EACtB,yBAAyB,EACzB,wBAAwB,EACxB,cAAc,GACd,MAAM,aAAa,CAAC;AAerB,OAAO,EACN,0BAA0B,EAC1B,qBAAqB,GACrB,MAAM,sBAAsB,CAAC;AAS9B,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,4BAA4B,EAAE,8BAA8B,EAAE,MAAM,oBAAoB,CAAC;AAuMlG,cAAc;AACd,OAAO,EACN,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,sBAAsB,EACtB,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,GACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAE1D,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC","sourcesContent":["export type { CacheWarmingDecisionEvent, CacheWarmingDecisionEventResult } from \"../cache-warmer.ts\";\nexport type { ExecuteToolOptions, ExtensionToolContext } from \"./context-types.ts\";\nexport type {\n\tHostDiagnostic,\n\tHostInput,\n\tHostInputOptions,\n\tQuestionAnswer,\n\tQuestionnaireError,\n\tQuestionnaireResult,\n\tQuestionParams,\n} from \"./host-input.js\";\nexport type { ToolAnnotations, ToolExposure, ToolLoadout, ToolLoadoutChanges, ToolNamespace } from \"./tool-types.ts\";\n/**\n * Extension system for lifecycle events and custom tools.\n */\n\nexport type { ConstrainedSamplingConfig } from \"@bastani/pi-ai/compat\";\nexport type { AtomicProviderCompat } from \"../model-capabilities.ts\";\nexport type { SlashCommandInfo, SlashCommandSource } from \"../slash-commands.js\";\nexport type { SourceInfo } from \"../source-info.ts\";\nexport type { WorkflowResourceProvider, WorkflowResourceProviderInput } from \"./loader.ts\";\nexport {\n\tcreateExtensionRuntime,\n\tdiscoverAndLoadExtensions,\n\tloadExtensionFromFactory,\n\tloadExtensions,\n} from \"./loader.ts\";\nexport type {\n\tInstallReactiveWidgetOptions,\n\tReactiveWidgetAction,\n\tReactiveWidgetComponent,\n\tReactiveWidgetController,\n\tReactiveWidgetFactory,\n\tReactiveWidgetRefreshReason,\n\tReactiveWidgetRenderContext,\n\tReactiveWidgetRenderState,\n\tReactiveWidgetScheduler,\n\tReactiveWidgetTimerApi,\n\tReactiveWidgetTimerHandle,\n\tReactiveWidgetUi,\n} from \"./reactive-widget.ts\";\nexport {\n\tdecideReactiveWidgetAction,\n\tinstallReactiveWidget,\n} from \"./reactive-widget.ts\";\nexport type {\n\tExtensionErrorListener,\n\tForkHandler,\n\tNavigateTreeHandler,\n\tNewSessionHandler,\n\tShutdownHandler,\n\tSwitchSessionHandler,\n} from \"./runner.ts\";\nexport { ExtensionRunner } from \"./runner.ts\";\nexport { isStaleExtensionContextError, STALE_EXTENSION_CONTEXT_MARKER } from \"./stale-context.ts\";\nexport type {\n\tAfterProviderResponseEvent,\n\tAgentActivityOutcome,\n\tAgentBeforeSettleEvent,\n\tAgentBeforeSettleEventResult,\n\tAgentEndEvent,\n\tAgentSettledEvent,\n\tAgentStartEvent,\n\t// Re-exports\n\tAgentToolResult,\n\tAgentToolUpdateCallback,\n\tAppendEntryHandler,\n\t// App keybindings (for custom editors)\n\tAppKeybinding,\n\tAutocompleteProviderFactory,\n\t// Events - Tool (ToolCallEvent types)\n\tBashToolCallEvent,\n\tBashToolResultEvent,\n\tBeforeAgentStartEvent,\n\tBeforeAgentStartEventResult,\n\tBeforeProviderHeadersEvent,\n\tBeforeProviderRequestEvent,\n\tBeforeProviderRequestEventResult,\n\tBoundaryContextPreview,\n\tBoundaryResult,\n\tBoundaryState,\n\tBuildSystemPromptOptions,\n\tCompactionEntryDraft,\n\t// Context\n\tCompactOptions,\n\tContextEditEntryDraft,\n\t// Events - Agent\n\tContextEvent,\n\t// Event Results\n\tContextEventResult,\n\tContextUsage,\n\tContextWithSystemEvent,\n\tCustomEntryDraft,\n\tCustomMessageDelivery,\n\tCustomMessageEntryDraft,\n\tCustomToolCallEvent,\n\tCustomToolResultEvent,\n\tEditorFactory,\n\tEditToolCallEvent,\n\tEditToolResultEvent,\n\t// Message Rendering\n\tEntryRenderer,\n\tEntryRenderOptions,\n\tExecOptions,\n\tExecResult,\n\tExtension,\n\tExtensionActions,\n\t// API\n\tExtensionAPI,\n\tExtensionCommandContext,\n\tExtensionCommandContextActions,\n\tExtensionContext,\n\tExtensionContextActions,\n\tExtensionCustomComponent,\n\t// Errors\n\tExtensionError,\n\tExtensionEvent,\n\tExtensionFactory,\n\tExtensionFlag,\n\tExtensionHandler,\n\tExtensionMode,\n\t// Runtime\n\tExtensionRuntime,\n\tExtensionScopedModels,\n\tExtensionShortcut,\n\tExtensionUIContext,\n\tExtensionUIDialogOptions,\n\tExtensionWidgetOptions,\n\tFindToolCallEvent,\n\tFindToolResultEvent,\n\tGetActiveToolsHandler,\n\tGetAllToolsHandler,\n\tGetCommandsHandler,\n\tGetThinkingLevelHandler,\n\tHostCustomUiState,\n\tHostCustomUiStateListener,\n\tHostInputFormField,\n\tHostInputFormFieldType,\n\tHostInputFormRequest,\n\tHostSessionPickerHandle,\n\tHostSessionPickerRequest,\n\tHostSessionPickerRow,\n\tInlineExtension,\n\t// Events - Input\n\tInputEvent,\n\tInputEventResult,\n\tInputSource,\n\tKeybindingsManager,\n\tLoadExtensionsResult,\n\tLsToolCallEvent,\n\tLsToolResultEvent,\n\tMarkdownTransformContext,\n\tMarkdownTransformer,\n\t// Events - Message\n\tMessageEndEvent,\n\tMessageEndEventResult,\n\tMessageRenderer,\n\tMessageRenderOptions,\n\tMessageStartEvent,\n\tMessageUpdateEvent,\n\tModelSelectEvent,\n\tModelSelectSource,\n\tNormalizedBuildSystemPromptOptions,\n\tOrchestrationContext,\n\tPowerShellToolCallEvent,\n\tPowerShellToolResultEvent,\n\tProjectTrustContext,\n\tProjectTrustEvent,\n\tProjectTrustEventDecision,\n\tProjectTrustEventResult,\n\tProjectTrustHandler,\n\t// Provider Registration\n\tProviderConfig,\n\tProviderModelConfig,\n\tProviderStreamEvent,\n\tReadToolCallEvent,\n\tReadToolResultEvent,\n\t// Commands\n\tRegisteredCommand,\n\tRegisteredTool,\n\tReplacedSessionContext,\n\tResolvedCommand,\n\t// Events - Resources\n\tResourcesDiscoverEvent,\n\tResourcesDiscoverResult,\n\tScopedModel,\n\tScrollableWidgetComponent,\n\tSendMessageHandler,\n\tSendMessageOptions,\n\tSendMessagesHandler,\n\tSendMessagesOptions,\n\tSendUserMessageHandler,\n\tSessionBeforeCompactEvent,\n\tSessionBeforeCompactResult,\n\tSessionBeforeForkEvent,\n\tSessionBeforeForkResult,\n\tSessionBeforeSwitchEvent,\n\tSessionBeforeSwitchResult,\n\tSessionBeforeTreeEvent,\n\tSessionBeforeTreeResult,\n\tSessionBoundaryDraft,\n\tSessionCompactEvent,\n\tSessionCompactFailedEvent,\n\tSessionEvent,\n\tSessionInfoChangedEvent,\n\tSessionShutdownEvent,\n\t// Events - Session\n\tSessionStartEvent,\n\tSessionTreeEvent,\n\tSetActiveToolsHandler,\n\tSetLabelHandler,\n\tSetModelHandler,\n\tSetThinkingLevelHandler,\n\tSubagentChildPolicy,\n\tSubagentIntercomIdentity,\n\tTerminalInputHandler,\n\tThinkingLevelSelectEvent,\n\t// Events - Tool\n\tToolCallEvent,\n\tToolCallEventResult,\n\t// Tools\n\tToolDefinition,\n\t// Events - Tool Execution\n\tToolExecutionEndEvent,\n\t// Tool execution mode\n\tToolExecutionMode,\n\tToolExecutionStartEvent,\n\tToolExecutionUpdateEvent,\n\tToolInfo,\n\tToolRenderResultOptions,\n\tToolResultEvent,\n\tToolResultEventResult,\n\tTreePreparation,\n\tTurnEndEvent,\n\tTurnEndEventResult,\n\tTurnStartEvent,\n\tUIPromptEndEvent,\n\tUIPromptKind,\n\tUIPromptStartEvent,\n\t// Events - User Bash\n\tUserBashEvent,\n\tUserBashEventResult,\n\tWidgetPlacement,\n\tWidgetScrollRequest,\n\tWidgetScrollState,\n\tWorkflowPendingStageDelivery,\n\tWorkflowPendingStageMessage,\n\tWorkflowPendingStageSender,\n\tWorkflowStageOrchestrationContext,\n\tWorkingIndicatorOptions,\n\tWriteToolCallEvent,\n\tWriteToolResultEvent,\n} from \"./types.ts\";\n// Type guards\nexport {\n\tdefineTool,\n\tisBashToolResult,\n\tisEditToolResult,\n\tisFindToolResult,\n\tisLsToolResult,\n\tisPowerShellToolResult,\n\tisReadToolResult,\n\tisSearchToolResult,\n\tisToolCallEventType,\n\tisWriteToolResult,\n} from \"./types.ts\";\nexport { OVERLAY_ACTIVE_ROW_MARKER } from \"./ui-types.js\";\nexport type * from \"./workflow-events.js\";\nexport { wrapRegisteredTool, wrapRegisteredTools } from \"./wrapper.ts\";\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader-api.d.ts","sourceRoot":"","sources":["../../../src/core/extensions/loader-api.ts"],"names":[],"mappings":"AAGA,OAAO,EAAwB,KAAK,QAAQ,EAA6B,MAAM,iBAAiB,CAAC;AAoBjG,OAAO,EAGN,KAAK,yCAAyC,EAC9C,KAAK,6BAA6B,EAClC,MAAM,uBAAuB,CAAC;AAG/B,OAAO,KAAK,EAEX,SAAS,EACT,YAAY,EAEZ,gBAAgB,EAMhB,MAAM,YAAY,CAAC;AASpB,+EAA+E;AAC/E,wBAAsB,qBAAqB,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAG/E;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAK9D;AAED,iFAAiF;AACjF,wBAAsB,sBAAsB,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAUhH;AAED,wFAAwF;AACxF,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAc7D;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CACjC,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,gBAAgB,EACzB,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,QAAQ,EAClB,wBAAwB,GAAE,6BAA6D,EACvF,yCAAyC,CAAC,EAAE,yCAAyC,GACnF;IAAE,GAAG,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,MAAM,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,IAAI,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"loader-api.d.ts","sourceRoot":"","sources":["../../../src/core/extensions/loader-api.ts"],"names":[],"mappings":"AAGA,OAAO,EAAwB,KAAK,QAAQ,EAA6B,MAAM,iBAAiB,CAAC;AAoBjG,OAAO,EAGN,KAAK,yCAAyC,EAC9C,KAAK,6BAA6B,EAClC,MAAM,uBAAuB,CAAC;AAG/B,OAAO,KAAK,EAEX,SAAS,EACT,YAAY,EAEZ,gBAAgB,EAMhB,MAAM,YAAY,CAAC;AASpB,+EAA+E;AAC/E,wBAAsB,qBAAqB,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAG/E;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAK9D;AAED,iFAAiF;AACjF,wBAAsB,sBAAsB,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAUhH;AAED,wFAAwF;AACxF,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAc7D;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CACjC,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,gBAAgB,EACzB,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,QAAQ,EAClB,wBAAwB,GAAE,6BAA6D,EACvF,yCAAyC,CAAC,EAAE,yCAAyC,GACnF;IAAE,GAAG,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,MAAM,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,IAAI,CAAA;CAAE,CAwbhE"}
|
|
@@ -343,6 +343,10 @@ export function createExtensionAPI(extension, runtime, cwd, eventBus, workflowRe
|
|
|
343
343
|
assertActive();
|
|
344
344
|
return trackAPIWork(() => execCommand(command, args, options?.cwd ?? cwd, options));
|
|
345
345
|
},
|
|
346
|
+
getSettings() {
|
|
347
|
+
assertActive(true);
|
|
348
|
+
return runtime.getSettings?.() ?? {};
|
|
349
|
+
},
|
|
346
350
|
getActiveTools() {
|
|
347
351
|
assertActive(true);
|
|
348
352
|
return runtime.getActiveToolsAfterRegistration?.(extension) ?? runtime.getActiveTools();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader-api.js","sourceRoot":"","sources":["../../../src/core/extensions/loader-api.ts"],"names":[],"mappings":"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","sourcesContent":["import { AsyncLocalStorage } from \"node:async_hooks\";\nimport type { Provider } from \"@bastani/pi-ai\";\nimport type { KeyId } from \"@earendil-works/pi-tui\";\nimport { canonicalEventBusFor, type EventBus, registerCanonicalEventBus } from \"../event-bus.js\";\nimport type { ExecOptions } from \"../exec.ts\";\nimport { execCommand } from \"../exec.ts\";\nimport type { McpServerConfig, McpServerContribution } from \"../mcp-servers.ts\";\nimport { lifecycleScopeForOwner } from \"../session-lifecycle-scope.ts\";\nimport { drainSessionWork, hasCallingSessionWork, trackSessionWork } from \"../session-lifecycle-work.ts\";\nimport {\n\tassertExtensionAction,\n\textensionWorkOpen,\n\tisRetiredExtensionCleanup,\n\ttrackExtensionWork,\n} from \"./extension-work.ts\";\nimport { hostInputError } from \"./host-input.js\";\nimport {\n\tcaptureRegistrationInvocation as captureInvocation,\n\tinvocationExtension,\n\tinvocationRuntime,\n\toriginalRegistrationCallback,\n\tresolveInvocationRuntime,\n} from \"./loader-bindings.ts\";\nimport {\n\temptyWorkflowResourceProvider,\n\tnormalizeWorkflowResourceProvider,\n\ttype ResourceLoaderInheritanceSnapshotProvider,\n\ttype WorkflowResourceProviderInput,\n} from \"./loader-resources.ts\";\nimport { boundExtensionRuntimes } from \"./loader-runtime.ts\";\nimport { STALE_EXTENSION_CONTEXT_MESSAGE } from \"./stale-context.ts\";\nimport type {\n\tEntryRenderer,\n\tExtension,\n\tExtensionAPI,\n\tExtensionContext,\n\tExtensionRuntime,\n\tMarkdownTransformer,\n\tMessageRenderer,\n\tProviderConfig,\n\tRegisteredCommand,\n\tToolDefinition,\n} from \"./types.ts\";\n\ntype HandlerFn = (...args: unknown[]) => Promise<unknown>;\n\nconst apiLifetime = Symbol.for(\"atomic.extension-api-lifetime.v1\");\ntype ExtensionWithLifetime = Extension & {\n\t[apiLifetime]?: { retired: boolean; releases: Set<() => void>; cleanup?: AsyncLocalStorage<{ active: boolean }> };\n};\n\n/** Factory receipts must not include selected siblings sharing the runtime. */\nexport async function drainExtensionAPIWork(extension: Extension): Promise<void> {\n\tconst lifetime = (extension as ExtensionWithLifetime)[apiLifetime];\n\tif (lifetime) await drainSessionWork(lifetime);\n}\n\nexport function sealExtensionAPI(extension: Extension): boolean {\n\tconst lifetime = (extension as ExtensionWithLifetime)[apiLifetime];\n\tif (lifetime?.retired) return false;\n\tif (lifetime) lifetime.cleanup ??= new AsyncLocalStorage<{ active: boolean }>();\n\treturn true;\n}\n\n/** Seal one unadopted factory without sealing its selected siblings' runtime. */\nexport async function runExtensionAPICleanup(extension: Extension, operation: () => Promise<void>): Promise<void> {\n\tconst lifetime = (extension as ExtensionWithLifetime)[apiLifetime];\n\tif (!lifetime) return operation();\n\tlifetime.cleanup ??= new AsyncLocalStorage<{ active: boolean }>();\n\tconst scope = { active: true };\n\ttry {\n\t\tawait lifetime.cleanup.run(scope, operation);\n\t} finally {\n\t\tscope.active = false;\n\t}\n}\n\n/** Retire one factory without invalidating a runtime shared with selected factories. */\nexport function retireExtensionAPI(extension: Extension): void {\n\tconst lifetime = (extension as ExtensionWithLifetime)[apiLifetime];\n\tif (!lifetime || lifetime.retired) return;\n\tlifetime.retired = true;\n\tconst failures: unknown[] = [];\n\tfor (const release of lifetime.releases) {\n\t\ttry {\n\t\t\trelease();\n\t\t} catch (error) {\n\t\t\tfailures.push(error);\n\t\t}\n\t}\n\tlifetime.releases.clear();\n\tif (failures.length) throw new AggregateError(failures, \"Extension subscription retirement failed\");\n}\n\n/**\n * Create the ExtensionAPI for an extension.\n * Registration methods write to the extension object.\n * Action methods delegate to the shared runtime.\n */\nexport function createExtensionAPI(\n\textension: Extension,\n\truntime: ExtensionRuntime,\n\tcwd: string,\n\teventBus: EventBus,\n\tworkflowResourceProvider: WorkflowResourceProviderInput = emptyWorkflowResourceProvider,\n\tresourceLoaderInheritanceSnapshotProvider?: ResourceLoaderInheritanceSnapshotProvider,\n): { api: ExtensionAPI; commit: () => void; discard: () => void } {\n\tconst originalRuntime = runtime;\n\t(extension as ExtensionWithLifetime)[apiLifetime] = { retired: false, releases: new Set() };\n\tconst captureRegistrationInvocation = <T>(value: T): T => captureInvocation(value, originalRuntime);\n\truntime = invocationRuntime(runtime);\n\textension = invocationExtension(extension);\n\tconst workflowResources = normalizeWorkflowResourceProvider(workflowResourceProvider);\n\toriginalRuntime.mcpServerRegistry.addPackageSource(workflowResources);\n\tconst pendingRuntimeChanges: Array<{ apply: () => void; rollback: () => void }> = [];\n\tconst loadingUnsubscribers: Array<() => void> = [];\n\tconst initialFlagValues = new Map(runtime.flagValues);\n\tconst initialFlagOwners = new Map(runtime.flagOwners);\n\tconst initialFlagOwnerOrigins = new Map(runtime.flagOwnerOrigins);\n\tlet state: \"loading\" | \"active\" | \"failed\" = \"loading\";\n\tconst assertActive = (inspection = false) => {\n\t\tconst lifetime = (extension as ExtensionWithLifetime)[apiLifetime];\n\t\tif (lifetime?.retired) throw new Error(STALE_EXTENSION_CONTEXT_MESSAGE);\n\t\tif (lifetime?.cleanup && !lifetime.cleanup.getStore()?.active && !hasCallingSessionWork(lifetime))\n\t\t\tthrow hostInputError(\"SessionClosed\");\n\t\tif (state === \"failed\")\n\t\t\tthrow new Error(`Extension \"${extension.path}\" failed to load and its API is no longer active.`);\n\t\truntime.assertActive();\n\t\tif (!inspection) assertExtensionAction(resolveInvocationRuntime(originalRuntime));\n\t};\n\tconst trackAPIWork = <T>(operation: () => Promise<T>): Promise<T> => {\n\t\tconst lifetime = (extension as ExtensionWithLifetime)[apiLifetime]!;\n\t\treturn trackExtensionWork(resolveInvocationRuntime(originalRuntime), () => trackSessionWork(lifetime, operation));\n\t};\n\tconst applyRuntimeChange = (change: { apply: () => void; rollback: () => void }) => {\n\t\tif (state === \"loading\") pendingRuntimeChanges.push(change);\n\t\telse if (state === \"active\") change.apply();\n\t\telse assertActive();\n\t};\n\t// Both ownership ledgers must forget a completed release, including on throw.\n\t// Clearing the capture also makes a retained public unsubscribe handle harmless.\n\tconst trackRelease = (cleanup: () => void): (() => void) => {\n\t\tconst lifetime = (extension as ExtensionWithLifetime)[apiLifetime];\n\t\tlet pending: (() => void) | undefined = cleanup;\n\t\tconst release = runtime.trackEventBusSubscription(() => {\n\t\t\tconst callback = pending;\n\t\t\tpending = undefined;\n\t\t\tlifetime?.releases.delete(release);\n\t\t\tcallback?.();\n\t\t});\n\t\tlifetime?.releases.add(release);\n\t\tif (state === \"loading\") loadingUnsubscribers.push(release);\n\t\treturn release;\n\t};\n\t// Successive load generations of one session each build a new facade over\n\t// the same shared bus; mapping the facade back to that bus lets\n\t// session-scoped state re-bind across module re-evaluation.\n\tconst events: EventBus = {\n\t\temit(channel, data) {\n\t\t\tif (isRetiredExtensionCleanup(resolveInvocationRuntime(originalRuntime))) return;\n\t\t\tassertActive();\n\t\t\teventBus.emit(channel, data);\n\t\t},\n\t\ton(channel, handler) {\n\t\t\tconst ownerRuntime = resolveInvocationRuntime(originalRuntime);\n\t\t\tconst ownerLifetime = (extension as ExtensionWithLifetime)[apiLifetime];\n\t\t\tconst deliver = captureRegistrationInvocation(handler);\n\t\t\tassertActive();\n\t\t\tconst unsubscribe = trackRelease(\n\t\t\t\teventBus.on(channel, (data) => {\n\t\t\t\t\tif (ownerLifetime?.retired || ownerLifetime?.cleanup || !extensionWorkOpen(ownerRuntime)) return;\n\t\t\t\t\tif (state === \"loading\" || boundExtensionRuntimes.has(ownerRuntime))\n\t\t\t\t\t\treturn trackExtensionWork(ownerRuntime, () =>\n\t\t\t\t\t\t\ttrackSessionWork(ownerLifetime!, async () => deliver(data)),\n\t\t\t\t\t\t);\n\t\t\t\t}),\n\t\t\t);\n\t\t\treturn unsubscribe;\n\t\t},\n\t};\n\tregisterCanonicalEventBus(events, canonicalEventBusFor(eventBus));\n\t// Capture explicit creation/reload lineage before invocation leaves its construction scope.\n\tlifecycleScopeForOwner(originalRuntime);\n\tconst api = {\n\t\tget lifecycleScope() {\n\t\t\treturn lifecycleScopeForOwner(resolveInvocationRuntime(originalRuntime));\n\t\t},\n\t\tregisterWorkflowActivityPublisher() {\n\t\t\tassertActive();\n\t\t\tconst publisher = runtime.workflowActivityHub.registerWorkflowActivityPublisher();\n\t\t\treturn { ...publisher, dispose: trackRelease(() => publisher.dispose()) };\n\t\t},\n\t\ton(event: string, handler: HandlerFn): () => void {\n\t\t\tassertActive();\n\t\t\tconst registeredHandler = captureRegistrationInvocation((...args: Parameters<HandlerFn>) => handler(...args));\n\t\t\tconst list = extension.handlers.get(event) ?? [];\n\t\t\tlist.push(registeredHandler);\n\t\t\textension.handlers.set(event, list);\n\t\t\treturn () => {\n\t\t\t\tconst handlers = extension.handlers.get(event);\n\t\t\t\tif (!handlers) return;\n\t\t\t\tconst index = handlers.findIndex(\n\t\t\t\t\t(candidate) =>\n\t\t\t\t\t\toriginalRegistrationCallback(candidate) === originalRegistrationCallback(registeredHandler),\n\t\t\t\t);\n\t\t\t\tif (index === -1) return;\n\t\t\t\thandlers.splice(index, 1);\n\t\t\t\tif (handlers.length === 0) extension.handlers.delete(event);\n\t\t\t};\n\t\t},\n\n\t\tregisterTool(tool: ToolDefinition): void {\n\t\t\tassertActive();\n\t\t\tif (runtime.canRegisterResource?.(extension, \"tool\", tool.name) === false) return;\n\t\t\tif (typeof tool.parameters !== \"object\" || tool.parameters === null || Array.isArray(tool.parameters)) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Tool \"${tool.name}\" registered by extension \"${extension.path}\" must define an object parameter schema.`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst registration = { definition: captureRegistrationInvocation(tool), sourceInfo: extension.sourceInfo };\n\t\t\tif (runtime.stageToolRegistration?.(extension, tool.name, registration)) return;\n\t\t\textension.tools.set(tool.name, registration);\n\t\t\tif (runtime.refreshToolsAfterRegistration) runtime.refreshToolsAfterRegistration();\n\t\t\telse runtime.refreshTools();\n\t\t},\n\n\t\tregisterCommand(name: string, options: Omit<RegisteredCommand, \"name\" | \"sourceInfo\">): void {\n\t\t\tassertActive();\n\t\t\tif (runtime.canRegisterResource?.(extension, \"command\", name) === false) return;\n\t\t\tconst registration = { name, sourceInfo: extension.sourceInfo, ...captureRegistrationInvocation(options) };\n\t\t\tif (runtime.stageCommandRegistration?.(extension, name, registration)) return;\n\t\t\textension.commands.set(name, registration);\n\t\t},\n\n\t\tregisterShortcut(\n\t\t\tshortcut: KeyId,\n\t\t\toptions: {\n\t\t\t\tdescription?: string;\n\t\t\t\tkeybinding?: import(\"../keybindings.ts\").Keybinding;\n\t\t\t\tpreferEditor?: boolean;\n\t\t\t\thandler: (ctx: ExtensionContext) => Promise<void> | void;\n\t\t\t},\n\t\t): void {\n\t\t\tassertActive();\n\t\t\tif (runtime.canRegisterResource?.(extension, \"shortcut\", shortcut) === false) return;\n\t\t\tconst registration = { shortcut, extensionPath: extension.path, ...captureRegistrationInvocation(options) };\n\t\t\tif (runtime.stageShortcutRegistration?.(extension, shortcut, registration)) return;\n\t\t\textension.shortcuts.set(shortcut, registration);\n\t\t},\n\n\t\tregisterFlag(\n\t\t\tname: string,\n\t\t\toptions: {\n\t\t\t\tdescription?: string;\n\t\t\t\ttype: \"boolean\" | \"string\";\n\t\t\t\tdefault?: boolean | string;\n\t\t\t},\n\t\t): void {\n\t\t\tassertActive();\n\t\t\tif (options.default !== undefined && typeof options.default !== options.type) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Invalid default for flag \"${name}\": expected ${options.type}, got ${typeof options.default}`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (runtime.canRegisterResource?.(extension, \"flag\", name) === false) return;\n\t\t\tconst registration = { name, extensionPath: extension.path, ...options };\n\t\t\tif (runtime.stageFlagRegistration?.(extension, name, registration, options.default)) return;\n\t\t\textension.flags.set(name, registration);\n\t\t\truntime.flagOwners ??= new Map();\n\t\t\tconst flagOwners = runtime.flagOwners;\n\t\t\truntime.flagOwnerOrigins ??= new Map();\n\t\t\tconst flagOwnerOrigins = runtime.flagOwnerOrigins;\n\t\t\tif (!flagOwners.has(name)) {\n\t\t\t\tflagOwners.set(name, extension.path);\n\t\t\t\tflagOwnerOrigins.set(name, extension.sourceInfo.configurationOrigin);\n\t\t\t}\n\t\t\tif (options.default !== undefined && !runtime.flagValues.has(name)) {\n\t\t\t\tif (runtime.applyFlagDefaultAfterRegistration) {\n\t\t\t\t\truntime.applyFlagDefaultAfterRegistration(\n\t\t\t\t\t\tname,\n\t\t\t\t\t\textension.path,\n\t\t\t\t\t\toptions.default,\n\t\t\t\t\t\textension.sourceInfo.configurationOrigin,\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\truntime.flagValues.set(name, options.default);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tregisterMessageRenderer<T>(customType: string, renderer: MessageRenderer<T>): void {\n\t\t\tassertActive();\n\t\t\textension.messageRenderers.set(customType, captureRegistrationInvocation(renderer) as MessageRenderer);\n\t\t},\n\n\t\tregisterMarkdownTransformer(transformer: MarkdownTransformer): void {\n\t\t\tassertActive();\n\t\t\textension.markdownTransformer = captureRegistrationInvocation(transformer);\n\t\t},\n\n\t\tregisterEntryRenderer<T>(customType: string, renderer: EntryRenderer<T>): void {\n\t\t\tassertActive();\n\t\t\textension.entryRenderers.set(customType, captureRegistrationInvocation(renderer) as EntryRenderer);\n\t\t},\n\n\t\tgetFlag(name: string): boolean | string | undefined {\n\t\t\tassertActive(true);\n\t\t\tconst pendingDefault = runtime.getPendingFlagDefault?.(extension.path, name);\n\t\t\tif (!extension.flags.has(name) && pendingDefault === undefined) return undefined;\n\t\t\treturn runtime.flagValues.get(name) ?? pendingDefault;\n\t\t},\n\n\t\tgetWorkflowResources() {\n\t\t\tassertActive(true);\n\t\t\treturn [...workflowResources.get()];\n\t\t},\n\n\t\tasync refreshWorkflowResources() {\n\t\t\tassertActive();\n\t\t\treturn trackAPIWork(async () => {\n\t\t\t\tconst refreshed = await workflowResources.refresh?.();\n\t\t\t\treturn [...(refreshed ?? workflowResources.get())];\n\t\t\t});\n\t\t},\n\n\t\tregisterMcpServer(name: string, config: McpServerConfig): void {\n\t\t\tassertActive();\n\t\t\tif (typeof name !== \"string\" || name.trim() === \"\") {\n\t\t\t\tthrow new Error(`MCP server registered by extension \"${extension.path}\" must have a non-empty name.`);\n\t\t\t}\n\t\t\tif (typeof config !== \"object\" || config === null || Array.isArray(config)) {\n\t\t\t\tthrow new Error(`MCP server \"${name}\" registered by extension \"${extension.path}\" must be an object.`);\n\t\t\t}\n\t\t\tconst contribution: McpServerContribution = {\n\t\t\t\tname,\n\t\t\t\tconfig: { ...config },\n\t\t\t\torigin: \"extension\",\n\t\t\t\tsourceInfo: extension.sourceInfo,\n\t\t\t};\n\t\t\tlet previous: McpServerContribution | undefined;\n\t\t\tapplyRuntimeChange({\n\t\t\t\tapply: () => {\n\t\t\t\t\tprevious = runtime.mcpServerRegistry.register(contribution);\n\t\t\t\t},\n\t\t\t\trollback: () => runtime.mcpServerRegistry.restore(name, previous),\n\t\t\t});\n\t\t},\n\n\t\tgetMcpServerContributions() {\n\t\t\tassertActive(true);\n\t\t\treturn runtime.mcpServerRegistry.list();\n\t\t},\n\n\t\tonMcpServerContributionsChanged(listener: () => void) {\n\t\t\tconst ownerRuntime = resolveInvocationRuntime(originalRuntime);\n\t\t\tconst ownerLifetime = (extension as ExtensionWithLifetime)[apiLifetime];\n\t\t\tconst deliver = captureRegistrationInvocation(listener);\n\t\t\tassertActive();\n\t\t\treturn trackRelease(\n\t\t\t\townerRuntime.mcpServerRegistry.subscribe(() => {\n\t\t\t\t\tif (ownerLifetime?.retired || ownerLifetime?.cleanup || !extensionWorkOpen(ownerRuntime)) return;\n\t\t\t\t\tif (state !== \"loading\" && !boundExtensionRuntimes.has(ownerRuntime)) return;\n\t\t\t\t\tvoid trackExtensionWork(ownerRuntime, () =>\n\t\t\t\t\t\ttrackSessionWork(ownerLifetime!, async () => deliver()),\n\t\t\t\t\t).catch((error: Error) => {\n\t\t\t\t\t\tconsole.error(`MCP server contribution listener error (${extension.path}):`, error);\n\t\t\t\t\t});\n\t\t\t\t}),\n\t\t\t);\n\t\t},\n\n\t\tgetResourceLoaderInheritanceSnapshot() {\n\t\t\tassertActive(true);\n\t\t\treturn resourceLoaderInheritanceSnapshotProvider?.() ?? {};\n\t\t},\n\t\tgetChildSessionOptions(options) {\n\t\t\tassertActive();\n\t\t\treturn runtime.getChildSessionOptions?.(options) ?? options;\n\t\t},\n\n\t\tsendMessage(message, options): void | Promise<void> {\n\t\t\tassertActive();\n\t\t\treturn runtime.sendMessage(message, options);\n\t\t},\n\n\t\tsendMessages(messages, options): void | Promise<void> {\n\t\t\tassertActive();\n\t\t\treturn runtime.sendMessages(messages, options);\n\t\t},\n\n\t\tsendUserMessage(content, options): void {\n\t\t\tassertActive();\n\t\t\truntime.sendUserMessage(content, options);\n\t\t},\n\n\t\tappendEntry(customType: string, data?: unknown): void {\n\t\t\tassertActive();\n\t\t\truntime.appendEntry(customType, data);\n\t\t},\n\n\t\tsetSessionName(name: string): void {\n\t\t\tassertActive();\n\t\t\truntime.setSessionName(name);\n\t\t},\n\n\t\tgetSessionName(): string | undefined {\n\t\t\tassertActive(true);\n\t\t\treturn runtime.getSessionName();\n\t\t},\n\n\t\tsetLabel(entryId: string, label: string | undefined): void {\n\t\t\tassertActive();\n\t\t\truntime.setLabel(entryId, label);\n\t\t},\n\n\t\texec(command: string, args: string[], options?: ExecOptions) {\n\t\t\tassertActive();\n\t\t\treturn trackAPIWork(() => execCommand(command, args, options?.cwd ?? cwd, options));\n\t\t},\n\n\t\tgetActiveTools(): string[] {\n\t\t\tassertActive(true);\n\t\t\treturn runtime.getActiveToolsAfterRegistration?.(extension) ?? runtime.getActiveTools();\n\t\t},\n\n\t\tgetAllTools() {\n\t\t\tassertActive(true);\n\t\t\treturn runtime.getAllToolsAfterRegistration?.(extension) ?? runtime.getAllTools();\n\t\t},\n\n\t\tsetActiveTools(toolNames: string[]): void {\n\t\t\tassertActive();\n\t\t\tif (!runtime.setActiveToolsAfterRegistration?.(extension, toolNames)) runtime.setActiveTools(toolNames);\n\t\t},\n\n\t\tgetCommands() {\n\t\t\tassertActive(true);\n\t\t\treturn runtime.getCommandsAfterRegistration?.(extension) ?? runtime.getCommands();\n\t\t},\n\n\t\tsetModel(model) {\n\t\t\tassertActive();\n\t\t\treturn runtime.setModel(model);\n\t\t},\n\n\t\tgetThinkingLevel() {\n\t\t\tassertActive(true);\n\t\t\treturn runtime.getThinkingLevel();\n\t\t},\n\n\t\tsetThinkingLevel(level) {\n\t\t\tassertActive();\n\t\t\truntime.setThinkingLevel(level);\n\t\t},\n\n\t\tregisterProvider(nameOrProvider: string | Provider, config?: ProviderConfig) {\n\t\t\tassertActive();\n\t\t\tif (typeof nameOrProvider === \"string\") {\n\t\t\t\tif (!config) throw new Error(\"Provider config is required\");\n\t\t\t\tconst name = nameOrProvider;\n\t\t\t\tapplyRuntimeChange({\n\t\t\t\t\tapply: () => runtime.registerProvider(name, config, extension.path),\n\t\t\t\t\trollback: () => runtime.unregisterProvider(name, extension.path),\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconst provider = nameOrProvider;\n\t\t\t\tapplyRuntimeChange({\n\t\t\t\t\tapply: () => runtime.registerProvider(provider, extension.path),\n\t\t\t\t\trollback: () => runtime.unregisterProvider(provider.id, extension.path),\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\t\tunregisterProvider(name: string) {\n\t\t\tassertActive();\n\t\t\tconst prior = runtime.pendingProviderRegistrations.filter((registration) =>\n\t\t\t\t\"provider\" in registration ? registration.provider.id === name : registration.name === name,\n\t\t\t);\n\t\t\tapplyRuntimeChange({\n\t\t\t\t// Explicit unregistration stays name-wide: its rollback below\n\t\t\t\t// restores every prior registration, so a narrower removal here\n\t\t\t\t// would re-register entries that were never taken away.\n\t\t\t\tapply: () => runtime.unregisterProvider(name),\n\t\t\t\trollback: () => {\n\t\t\t\t\tfor (const registration of prior) {\n\t\t\t\t\t\tif (\"provider\" in registration) {\n\t\t\t\t\t\t\truntime.registerProvider(registration.provider, registration.extensionPath);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\truntime.registerProvider(registration.name, registration.config, registration.extensionPath);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t});\n\t\t},\n\n\t\tevents,\n\t} as ExtensionAPI;\n\n\treturn {\n\t\tapi,\n\t\tcommit: () => {\n\t\t\tif (state !== \"loading\") return;\n\t\t\tconst applied: Array<{ apply: () => void; rollback: () => void }> = [];\n\t\t\ttry {\n\t\t\t\tfor (const change of pendingRuntimeChanges) {\n\t\t\t\t\tchange.apply();\n\t\t\t\t\tapplied.push(change);\n\t\t\t\t}\n\t\t\t\tstate = \"active\";\n\t\t\t\tpendingRuntimeChanges.length = 0;\n\t\t\t\tloadingUnsubscribers.length = 0;\n\t\t\t} catch (error) {\n\t\t\t\tfor (const change of applied.reverse()) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tchange.rollback();\n\t\t\t\t\t} catch {\n\t\t\t\t\t\t// Best-effort undo of provider ops already applied in this commit.\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t},\n\t\tdiscard: () => {\n\t\t\tif (state !== \"loading\") return;\n\t\t\tstate = \"failed\";\n\t\t\tconst failures: unknown[] = [];\n\t\t\tfor (const unsubscribe of loadingUnsubscribers) {\n\t\t\t\ttry {\n\t\t\t\t\tunsubscribe();\n\t\t\t\t} catch (error) {\n\t\t\t\t\tfailures.push(error);\n\t\t\t\t}\n\t\t\t}\n\t\t\tpendingRuntimeChanges.length = 0;\n\t\t\tloadingUnsubscribers.length = 0;\n\t\t\truntime.flagValues = initialFlagValues;\n\t\t\truntime.flagOwners = initialFlagOwners;\n\t\t\truntime.flagOwnerOrigins = initialFlagOwnerOrigins;\n\t\t\tif (failures.length) throw new AggregateError(failures, \"Extension subscription rollback failed\");\n\t\t},\n\t};\n}\n"]}
|
|
1
|
+
{"version":3,"file":"loader-api.js","sourceRoot":"","sources":["../../../src/core/extensions/loader-api.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAGrD,OAAO,EAAE,oBAAoB,EAAiB,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAEjG,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AACzG,OAAO,EACN,qBAAqB,EACrB,iBAAiB,EACjB,yBAAyB,EACzB,kBAAkB,GAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EACN,6BAA6B,IAAI,iBAAiB,EAClD,mBAAmB,EACnB,iBAAiB,EACjB,4BAA4B,EAC5B,wBAAwB,GACxB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACN,6BAA6B,EAC7B,iCAAiC,GAGjC,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,+BAA+B,EAAE,MAAM,oBAAoB,CAAC;AAgBrE,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;AAKnE,+EAA+E;AAC/E,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,SAAoB;IAC/D,MAAM,QAAQ,GAAI,SAAmC,CAAC,WAAW,CAAC,CAAC;IACnE,IAAI,QAAQ;QAAE,MAAM,gBAAgB,CAAC,QAAQ,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,SAAoB;IACpD,MAAM,QAAQ,GAAI,SAAmC,CAAC,WAAW,CAAC,CAAC;IACnE,IAAI,QAAQ,EAAE,OAAO;QAAE,OAAO,KAAK,CAAC;IACpC,IAAI,QAAQ;QAAE,QAAQ,CAAC,OAAO,KAAK,IAAI,iBAAiB,EAAuB,CAAC;IAChF,OAAO,IAAI,CAAC;AACb,CAAC;AAED,iFAAiF;AACjF,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,SAAoB,EAAE,SAA8B;IAChG,MAAM,QAAQ,GAAI,SAAmC,CAAC,WAAW,CAAC,CAAC;IACnE,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,EAAE,CAAC;IAClC,QAAQ,CAAC,OAAO,KAAK,IAAI,iBAAiB,EAAuB,CAAC;IAClE,MAAM,KAAK,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC/B,IAAI,CAAC;QACJ,MAAM,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC9C,CAAC;YAAS,CAAC;QACV,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;AACF,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,kBAAkB,CAAC,SAAoB;IACtD,MAAM,QAAQ,GAAI,SAAmC,CAAC,WAAW,CAAC,CAAC;IACnE,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,OAAO;QAAE,OAAO;IAC1C,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;IACxB,MAAM,QAAQ,GAAc,EAAE,CAAC;IAC/B,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACzC,IAAI,CAAC;YACJ,OAAO,EAAE,CAAC;QACX,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACF,CAAC;IACD,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IAC1B,IAAI,QAAQ,CAAC,MAAM;QAAE,MAAM,IAAI,cAAc,CAAC,QAAQ,EAAE,0CAA0C,CAAC,CAAC;AACrG,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CACjC,SAAoB,EACpB,OAAyB,EACzB,GAAW,EACX,QAAkB,EAClB,wBAAwB,GAAkC,6BAA6B,EACvF,yCAAqF;IAErF,MAAM,eAAe,GAAG,OAAO,CAAC;IAC/B,SAAmC,CAAC,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC;IAC5F,MAAM,6BAA6B,GAAG,CAAI,KAAQ,EAAK,EAAE,CAAC,iBAAiB,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;IACpG,OAAO,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACrC,SAAS,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;IAC3C,MAAM,iBAAiB,GAAG,iCAAiC,CAAC,wBAAwB,CAAC,CAAC;IACtF,eAAe,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;IACtE,MAAM,qBAAqB,GAAuD,EAAE,CAAC;IACrF,MAAM,oBAAoB,GAAsB,EAAE,CAAC;IACnD,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACtD,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACtD,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAClE,IAAI,KAAK,GAAoC,SAAS,CAAC;IACvD,MAAM,YAAY,GAAG,CAAC,UAAU,GAAG,KAAK,EAAE,EAAE;QAC3C,MAAM,QAAQ,GAAI,SAAmC,CAAC,WAAW,CAAC,CAAC;QACnE,IAAI,QAAQ,EAAE,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACxE,IAAI,QAAQ,EAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,MAAM,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC;YAChG,MAAM,cAAc,CAAC,eAAe,CAAC,CAAC;QACvC,IAAI,KAAK,KAAK,QAAQ;YACrB,MAAM,IAAI,KAAK,CAAC,cAAc,SAAS,CAAC,IAAI,mDAAmD,CAAC,CAAC;QAClG,OAAO,CAAC,YAAY,EAAE,CAAC;QACvB,IAAI,CAAC,UAAU;YAAE,qBAAqB,CAAC,wBAAwB,CAAC,eAAe,CAAC,CAAC,CAAC;IACnF,CAAC,CAAC;IACF,MAAM,YAAY,GAAG,CAAI,SAA2B,EAAc,EAAE;QACnE,MAAM,QAAQ,GAAI,SAAmC,CAAC,WAAW,CAAE,CAAC;QACpE,OAAO,kBAAkB,CAAC,wBAAwB,CAAC,eAAe,CAAC,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;IACnH,CAAC,CAAC;IACF,MAAM,kBAAkB,GAAG,CAAC,MAAmD,EAAE,EAAE;QAClF,IAAI,KAAK,KAAK,SAAS;YAAE,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACvD,IAAI,KAAK,KAAK,QAAQ;YAAE,MAAM,CAAC,KAAK,EAAE,CAAC;;YACvC,YAAY,EAAE,CAAC;IACrB,CAAC,CAAC;IACF,8EAA8E;IAC9E,iFAAiF;IACjF,MAAM,YAAY,GAAG,CAAC,OAAmB,EAAgB,EAAE;QAC1D,MAAM,QAAQ,GAAI,SAAmC,CAAC,WAAW,CAAC,CAAC;QACnE,IAAI,OAAO,GAA6B,OAAO,CAAC;QAChD,MAAM,OAAO,GAAG,OAAO,CAAC,yBAAyB,CAAC,GAAG,EAAE;YACtD,MAAM,QAAQ,GAAG,OAAO,CAAC;YACzB,OAAO,GAAG,SAAS,CAAC;YACpB,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACnC,QAAQ,EAAE,EAAE,CAAC;QACd,CAAC,CAAC,CAAC;QACH,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAChC,IAAI,KAAK,KAAK,SAAS;YAAE,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5D,OAAO,OAAO,CAAC;IAChB,CAAC,CAAC;IACF,0EAA0E;IAC1E,gEAAgE;IAChE,4DAA4D;IAC5D,MAAM,MAAM,GAAa;QACxB,IAAI,CAAC,OAAO,EAAE,IAAI;YACjB,IAAI,yBAAyB,CAAC,wBAAwB,CAAC,eAAe,CAAC,CAAC;gBAAE,OAAO;YACjF,YAAY,EAAE,CAAC;YACf,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC9B,CAAC;QACD,EAAE,CAAC,OAAO,EAAE,OAAO;YAClB,MAAM,YAAY,GAAG,wBAAwB,CAAC,eAAe,CAAC,CAAC;YAC/D,MAAM,aAAa,GAAI,SAAmC,CAAC,WAAW,CAAC,CAAC;YACxE,MAAM,OAAO,GAAG,6BAA6B,CAAC,OAAO,CAAC,CAAC;YACvD,YAAY,EAAE,CAAC;YACf,MAAM,WAAW,GAAG,YAAY,CAC/B,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;gBAC7B,IAAI,aAAa,EAAE,OAAO,IAAI,aAAa,EAAE,OAAO,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC;oBAAE,OAAO;gBACjG,IAAI,KAAK,KAAK,SAAS,IAAI,sBAAsB,CAAC,GAAG,CAAC,YAAY,CAAC;oBAClE,OAAO,kBAAkB,CAAC,YAAY,EAAE,GAAG,EAAE,CAC5C,gBAAgB,CAAC,aAAc,EAAE,KAAK,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAC3D,CAAC;YACJ,CAAC,CAAC,CACF,CAAC;YACF,OAAO,WAAW,CAAC;QACpB,CAAC;KACD,CAAC;IACF,yBAAyB,CAAC,MAAM,EAAE,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAClE,4FAA4F;IAC5F,sBAAsB,CAAC,eAAe,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG;QACX,IAAI,cAAc;YACjB,OAAO,sBAAsB,CAAC,wBAAwB,CAAC,eAAe,CAAC,CAAC,CAAC;QAC1E,CAAC;QACD,iCAAiC;YAChC,YAAY,EAAE,CAAC;YACf,MAAM,SAAS,GAAG,OAAO,CAAC,mBAAmB,CAAC,iCAAiC,EAAE,CAAC;YAClF,OAAO,EAAE,GAAG,SAAS,EAAE,OAAO,EAAE,YAAY,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;QAC3E,CAAC;QACD,EAAE,CAAC,KAAa,EAAE,OAAkB;YACnC,YAAY,EAAE,CAAC;YACf,MAAM,iBAAiB,GAAG,6BAA6B,CAAC,CAAC,GAAG,IAA2B,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;YAC9G,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YACjD,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAC7B,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YACpC,OAAO,GAAG,EAAE;gBACX,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAC/C,IAAI,CAAC,QAAQ;oBAAE,OAAO;gBACtB,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAC/B,CAAC,SAAS,EAAE,EAAE,CACb,4BAA4B,CAAC,SAAS,CAAC,KAAK,4BAA4B,CAAC,iBAAiB,CAAC,CAC5F,CAAC;gBACF,IAAI,KAAK,KAAK,CAAC,CAAC;oBAAE,OAAO;gBACzB,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBAC1B,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;oBAAE,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC7D,CAAC,CAAC;QACH,CAAC;QAED,YAAY,CAAC,IAAoB;YAChC,YAAY,EAAE,CAAC;YACf,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK;gBAAE,OAAO;YAClF,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;gBACvG,MAAM,IAAI,KAAK,CACd,SAAS,IAAI,CAAC,IAAI,8BAA8B,SAAS,CAAC,IAAI,2CAA2C,CACzG,CAAC;YACH,CAAC;YACD,MAAM,YAAY,GAAG,EAAE,UAAU,EAAE,6BAA6B,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,SAAS,CAAC,UAAU,EAAE,CAAC;YAC3G,IAAI,OAAO,CAAC,qBAAqB,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC;gBAAE,OAAO;YAChF,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;YAC7C,IAAI,OAAO,CAAC,6BAA6B;gBAAE,OAAO,CAAC,6BAA6B,EAAE,CAAC;;gBAC9E,OAAO,CAAC,YAAY,EAAE,CAAC;QAC7B,CAAC;QAED,eAAe,CAAC,IAAY,EAAE,OAAuD;YACpF,YAAY,EAAE,CAAC;YACf,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,KAAK;gBAAE,OAAO;YAChF,MAAM,YAAY,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,CAAC,UAAU,EAAE,GAAG,6BAA6B,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3G,IAAI,OAAO,CAAC,wBAAwB,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,YAAY,CAAC;gBAAE,OAAO;YAC9E,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QAC5C,CAAC;QAED,gBAAgB,CACf,QAAe,EACf,OAKC;YAED,YAAY,EAAE,CAAC;YACf,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,CAAC,KAAK,KAAK;gBAAE,OAAO;YACrF,MAAM,YAAY,GAAG,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,CAAC,IAAI,EAAE,GAAG,6BAA6B,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5G,IAAI,OAAO,CAAC,yBAAyB,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,YAAY,CAAC;gBAAE,OAAO;YACnF,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QACjD,CAAC;QAED,YAAY,CACX,IAAY,EACZ,OAIC;YAED,YAAY,EAAE,CAAC;YACf,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC;gBAC9E,MAAM,IAAI,KAAK,CACd,6BAA6B,IAAI,eAAe,OAAO,CAAC,IAAI,SAAS,OAAO,OAAO,CAAC,OAAO,EAAE,CAC7F,CAAC;YACH,CAAC;YACD,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,KAAK;gBAAE,OAAO;YAC7E,MAAM,YAAY,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,SAAS,CAAC,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC;YACzE,IAAI,OAAO,CAAC,qBAAqB,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,CAAC,OAAO,CAAC;gBAAE,OAAO;YAC5F,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;YACxC,OAAO,CAAC,UAAU,KAAK,IAAI,GAAG,EAAE,CAAC;YACjC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;YACtC,OAAO,CAAC,gBAAgB,KAAK,IAAI,GAAG,EAAE,CAAC;YACvC,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;YAClD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC3B,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;gBACrC,gBAAgB,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;YACtE,CAAC;YACD,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpE,IAAI,OAAO,CAAC,iCAAiC,EAAE,CAAC;oBAC/C,OAAO,CAAC,iCAAiC,CACxC,IAAI,EACJ,SAAS,CAAC,IAAI,EACd,OAAO,CAAC,OAAO,EACf,SAAS,CAAC,UAAU,CAAC,mBAAmB,CACxC,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACP,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;gBAC/C,CAAC;YACF,CAAC;QACF,CAAC;QAED,uBAAuB,CAAI,UAAkB,EAAE,QAA4B;YAC1E,YAAY,EAAE,CAAC;YACf,SAAS,CAAC,gBAAgB,CAAC,GAAG,CAAC,UAAU,EAAE,6BAA6B,CAAC,QAAQ,CAAoB,CAAC,CAAC;QACxG,CAAC;QAED,2BAA2B,CAAC,WAAgC;YAC3D,YAAY,EAAE,CAAC;YACf,SAAS,CAAC,mBAAmB,GAAG,6BAA6B,CAAC,WAAW,CAAC,CAAC;QAC5E,CAAC;QAED,qBAAqB,CAAI,UAAkB,EAAE,QAA0B;YACtE,YAAY,EAAE,CAAC;YACf,SAAS,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,EAAE,6BAA6B,CAAC,QAAQ,CAAkB,CAAC,CAAC;QACpG,CAAC;QAED,OAAO,CAAC,IAAY;YACnB,YAAY,CAAC,IAAI,CAAC,CAAC;YACnB,MAAM,cAAc,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC7E,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,cAAc,KAAK,SAAS;gBAAE,OAAO,SAAS,CAAC;YACjF,OAAO,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC;QACvD,CAAC;QAED,oBAAoB;YACnB,YAAY,CAAC,IAAI,CAAC,CAAC;YACnB,OAAO,CAAC,GAAG,iBAAiB,CAAC,GAAG,EAAE,CAAC,CAAC;QACrC,CAAC;QAED,KAAK,CAAC,wBAAwB;YAC7B,YAAY,EAAE,CAAC;YACf,OAAO,YAAY,CAAC,KAAK,IAAI,EAAE;gBAC9B,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC,OAAO,EAAE,EAAE,CAAC;gBACtD,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,iBAAiB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACpD,CAAC,CAAC,CAAC;QACJ,CAAC;QAED,iBAAiB,CAAC,IAAY,EAAE,MAAuB;YACtD,YAAY,EAAE,CAAC;YACf,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;gBACpD,MAAM,IAAI,KAAK,CAAC,uCAAuC,SAAS,CAAC,IAAI,+BAA+B,CAAC,CAAC;YACvG,CAAC;YACD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC5E,MAAM,IAAI,KAAK,CAAC,eAAe,IAAI,8BAA8B,SAAS,CAAC,IAAI,sBAAsB,CAAC,CAAC;YACxG,CAAC;YACD,MAAM,YAAY,GAA0B;gBAC3C,IAAI;gBACJ,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE;gBACrB,MAAM,EAAE,WAAW;gBACnB,UAAU,EAAE,SAAS,CAAC,UAAU;aAChC,CAAC;YACF,IAAI,QAA2C,CAAC;YAChD,kBAAkB,CAAC;gBAClB,KAAK,EAAE,GAAG,EAAE;oBACX,QAAQ,GAAG,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;gBAC7D,CAAC;gBACD,QAAQ,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;aACjE,CAAC,CAAC;QACJ,CAAC;QAED,yBAAyB;YACxB,YAAY,CAAC,IAAI,CAAC,CAAC;YACnB,OAAO,OAAO,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;QACzC,CAAC;QAED,+BAA+B,CAAC,QAAoB;YACnD,MAAM,YAAY,GAAG,wBAAwB,CAAC,eAAe,CAAC,CAAC;YAC/D,MAAM,aAAa,GAAI,SAAmC,CAAC,WAAW,CAAC,CAAC;YACxE,MAAM,OAAO,GAAG,6BAA6B,CAAC,QAAQ,CAAC,CAAC;YACxD,YAAY,EAAE,CAAC;YACf,OAAO,YAAY,CAClB,YAAY,CAAC,iBAAiB,CAAC,SAAS,CAAC,GAAG,EAAE;gBAC7C,IAAI,aAAa,EAAE,OAAO,IAAI,aAAa,EAAE,OAAO,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC;oBAAE,OAAO;gBACjG,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,YAAY,CAAC;oBAAE,OAAO;gBAC7E,KAAK,kBAAkB,CAAC,YAAY,EAAE,GAAG,EAAE,CAC1C,gBAAgB,CAAC,aAAc,EAAE,KAAK,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,CACvD,CAAC,KAAK,CAAC,CAAC,KAAY,EAAE,EAAE;oBACxB,OAAO,CAAC,KAAK,CAAC,2CAA2C,SAAS,CAAC,IAAI,IAAI,EAAE,KAAK,CAAC,CAAC;gBACrF,CAAC,CAAC,CAAC;YACJ,CAAC,CAAC,CACF,CAAC;QACH,CAAC;QAED,oCAAoC;YACnC,YAAY,CAAC,IAAI,CAAC,CAAC;YACnB,OAAO,yCAAyC,EAAE,EAAE,IAAI,EAAE,CAAC;QAC5D,CAAC;QACD,sBAAsB,CAAC,OAAO;YAC7B,YAAY,EAAE,CAAC;YACf,OAAO,OAAO,CAAC,sBAAsB,EAAE,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC;QAC7D,CAAC;QAED,WAAW,CAAC,OAAO,EAAE,OAAO;YAC3B,YAAY,EAAE,CAAC;YACf,OAAO,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC9C,CAAC;QAED,YAAY,CAAC,QAAQ,EAAE,OAAO;YAC7B,YAAY,EAAE,CAAC;YACf,OAAO,OAAO,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAChD,CAAC;QAED,eAAe,CAAC,OAAO,EAAE,OAAO;YAC/B,YAAY,EAAE,CAAC;YACf,OAAO,CAAC,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC3C,CAAC;QAED,WAAW,CAAC,UAAkB,EAAE,IAAc;YAC7C,YAAY,EAAE,CAAC;YACf,OAAO,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACvC,CAAC;QAED,cAAc,CAAC,IAAY;YAC1B,YAAY,EAAE,CAAC;YACf,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;QAED,cAAc;YACb,YAAY,CAAC,IAAI,CAAC,CAAC;YACnB,OAAO,OAAO,CAAC,cAAc,EAAE,CAAC;QACjC,CAAC;QAED,QAAQ,CAAC,OAAe,EAAE,KAAyB;YAClD,YAAY,EAAE,CAAC;YACf,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAClC,CAAC;QAED,IAAI,CAAC,OAAe,EAAE,IAAc,EAAE,OAAqB;YAC1D,YAAY,EAAE,CAAC;YACf,OAAO,YAAY,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;QACrF,CAAC;QAED,WAAW;YACV,YAAY,CAAC,IAAI,CAAC,CAAC;YACnB,OAAO,OAAO,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC;QACtC,CAAC;QAED,cAAc;YACb,YAAY,CAAC,IAAI,CAAC,CAAC;YACnB,OAAO,OAAO,CAAC,+BAA+B,EAAE,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;QACzF,CAAC;QAED,WAAW;YACV,YAAY,CAAC,IAAI,CAAC,CAAC;YACnB,OAAO,OAAO,CAAC,4BAA4B,EAAE,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACnF,CAAC;QAED,cAAc,CAAC,SAAmB;YACjC,YAAY,EAAE,CAAC;YACf,IAAI,CAAC,OAAO,CAAC,+BAA+B,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;gBAAE,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACzG,CAAC;QAED,WAAW;YACV,YAAY,CAAC,IAAI,CAAC,CAAC;YACnB,OAAO,OAAO,CAAC,4BAA4B,EAAE,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACnF,CAAC;QAED,QAAQ,CAAC,KAAK;YACb,YAAY,EAAE,CAAC;YACf,OAAO,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;QAED,gBAAgB;YACf,YAAY,CAAC,IAAI,CAAC,CAAC;YACnB,OAAO,OAAO,CAAC,gBAAgB,EAAE,CAAC;QACnC,CAAC;QAED,gBAAgB,CAAC,KAAK;YACrB,YAAY,EAAE,CAAC;YACf,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;QAED,gBAAgB,CAAC,cAAiC,EAAE,MAAuB;YAC1E,YAAY,EAAE,CAAC;YACf,IAAI,OAAO,cAAc,KAAK,QAAQ,EAAE,CAAC;gBACxC,IAAI,CAAC,MAAM;oBAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;gBAC5D,MAAM,IAAI,GAAG,cAAc,CAAC;gBAC5B,kBAAkB,CAAC;oBAClB,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC;oBACnE,QAAQ,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC;iBAChE,CAAC,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACP,MAAM,QAAQ,GAAG,cAAc,CAAC;gBAChC,kBAAkB,CAAC;oBAClB,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC;oBAC/D,QAAQ,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC;iBACvE,CAAC,CAAC;YACJ,CAAC;QACF,CAAC;QAED,kBAAkB,CAAC,IAAY;YAC9B,YAAY,EAAE,CAAC;YACf,MAAM,KAAK,GAAG,OAAO,CAAC,4BAA4B,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE,EAAE,CAC1E,UAAU,IAAI,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,KAAK,IAAI,CAC3F,CAAC;YACF,kBAAkB,CAAC;gBAClB,8DAA8D;gBAC9D,gEAAgE;gBAChE,wDAAwD;gBACxD,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC;gBAC7C,QAAQ,EAAE,GAAG,EAAE;oBACd,KAAK,MAAM,YAAY,IAAI,KAAK,EAAE,CAAC;wBAClC,IAAI,UAAU,IAAI,YAAY,EAAE,CAAC;4BAChC,OAAO,CAAC,gBAAgB,CAAC,YAAY,CAAC,QAAQ,EAAE,YAAY,CAAC,aAAa,CAAC,CAAC;wBAC7E,CAAC;6BAAM,CAAC;4BACP,OAAO,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,aAAa,CAAC,CAAC;wBAC9F,CAAC;oBACF,CAAC;gBACF,CAAC;aACD,CAAC,CAAC;QACJ,CAAC;QAED,MAAM;KACU,CAAC;IAElB,OAAO;QACN,GAAG;QACH,MAAM,EAAE,GAAG,EAAE;YACZ,IAAI,KAAK,KAAK,SAAS;gBAAE,OAAO;YAChC,MAAM,OAAO,GAAuD,EAAE,CAAC;YACvE,IAAI,CAAC;gBACJ,KAAK,MAAM,MAAM,IAAI,qBAAqB,EAAE,CAAC;oBAC5C,MAAM,CAAC,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACtB,CAAC;gBACD,KAAK,GAAG,QAAQ,CAAC;gBACjB,qBAAqB,CAAC,MAAM,GAAG,CAAC,CAAC;gBACjC,oBAAoB,CAAC,MAAM,GAAG,CAAC,CAAC;YACjC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;oBACxC,IAAI,CAAC;wBACJ,MAAM,CAAC,QAAQ,EAAE,CAAC;oBACnB,CAAC;oBAAC,MAAM,CAAC;wBACR,mEAAmE;oBACpE,CAAC;gBACF,CAAC;gBACD,MAAM,KAAK,CAAC;YACb,CAAC;QACF,CAAC;QACD,OAAO,EAAE,GAAG,EAAE;YACb,IAAI,KAAK,KAAK,SAAS;gBAAE,OAAO;YAChC,KAAK,GAAG,QAAQ,CAAC;YACjB,MAAM,QAAQ,GAAc,EAAE,CAAC;YAC/B,KAAK,MAAM,WAAW,IAAI,oBAAoB,EAAE,CAAC;gBAChD,IAAI,CAAC;oBACJ,WAAW,EAAE,CAAC;gBACf,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBAChB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACtB,CAAC;YACF,CAAC;YACD,qBAAqB,CAAC,MAAM,GAAG,CAAC,CAAC;YACjC,oBAAoB,CAAC,MAAM,GAAG,CAAC,CAAC;YAChC,OAAO,CAAC,UAAU,GAAG,iBAAiB,CAAC;YACvC,OAAO,CAAC,UAAU,GAAG,iBAAiB,CAAC;YACvC,OAAO,CAAC,gBAAgB,GAAG,uBAAuB,CAAC;YACnD,IAAI,QAAQ,CAAC,MAAM;gBAAE,MAAM,IAAI,cAAc,CAAC,QAAQ,EAAE,wCAAwC,CAAC,CAAC;QACnG,CAAC;KACD,CAAC;AACH,CAAC","sourcesContent":["import { AsyncLocalStorage } from \"node:async_hooks\";\nimport type { Provider } from \"@bastani/pi-ai\";\nimport type { KeyId } from \"@earendil-works/pi-tui\";\nimport { canonicalEventBusFor, type EventBus, registerCanonicalEventBus } from \"../event-bus.js\";\nimport type { ExecOptions } from \"../exec.ts\";\nimport { execCommand } from \"../exec.ts\";\nimport type { McpServerConfig, McpServerContribution } from \"../mcp-servers.ts\";\nimport { lifecycleScopeForOwner } from \"../session-lifecycle-scope.ts\";\nimport { drainSessionWork, hasCallingSessionWork, trackSessionWork } from \"../session-lifecycle-work.ts\";\nimport {\n\tassertExtensionAction,\n\textensionWorkOpen,\n\tisRetiredExtensionCleanup,\n\ttrackExtensionWork,\n} from \"./extension-work.ts\";\nimport { hostInputError } from \"./host-input.js\";\nimport {\n\tcaptureRegistrationInvocation as captureInvocation,\n\tinvocationExtension,\n\tinvocationRuntime,\n\toriginalRegistrationCallback,\n\tresolveInvocationRuntime,\n} from \"./loader-bindings.ts\";\nimport {\n\temptyWorkflowResourceProvider,\n\tnormalizeWorkflowResourceProvider,\n\ttype ResourceLoaderInheritanceSnapshotProvider,\n\ttype WorkflowResourceProviderInput,\n} from \"./loader-resources.ts\";\nimport { boundExtensionRuntimes } from \"./loader-runtime.ts\";\nimport { STALE_EXTENSION_CONTEXT_MESSAGE } from \"./stale-context.ts\";\nimport type {\n\tEntryRenderer,\n\tExtension,\n\tExtensionAPI,\n\tExtensionContext,\n\tExtensionRuntime,\n\tMarkdownTransformer,\n\tMessageRenderer,\n\tProviderConfig,\n\tRegisteredCommand,\n\tToolDefinition,\n} from \"./types.ts\";\n\ntype HandlerFn = (...args: unknown[]) => Promise<unknown>;\n\nconst apiLifetime = Symbol.for(\"atomic.extension-api-lifetime.v1\");\ntype ExtensionWithLifetime = Extension & {\n\t[apiLifetime]?: { retired: boolean; releases: Set<() => void>; cleanup?: AsyncLocalStorage<{ active: boolean }> };\n};\n\n/** Factory receipts must not include selected siblings sharing the runtime. */\nexport async function drainExtensionAPIWork(extension: Extension): Promise<void> {\n\tconst lifetime = (extension as ExtensionWithLifetime)[apiLifetime];\n\tif (lifetime) await drainSessionWork(lifetime);\n}\n\nexport function sealExtensionAPI(extension: Extension): boolean {\n\tconst lifetime = (extension as ExtensionWithLifetime)[apiLifetime];\n\tif (lifetime?.retired) return false;\n\tif (lifetime) lifetime.cleanup ??= new AsyncLocalStorage<{ active: boolean }>();\n\treturn true;\n}\n\n/** Seal one unadopted factory without sealing its selected siblings' runtime. */\nexport async function runExtensionAPICleanup(extension: Extension, operation: () => Promise<void>): Promise<void> {\n\tconst lifetime = (extension as ExtensionWithLifetime)[apiLifetime];\n\tif (!lifetime) return operation();\n\tlifetime.cleanup ??= new AsyncLocalStorage<{ active: boolean }>();\n\tconst scope = { active: true };\n\ttry {\n\t\tawait lifetime.cleanup.run(scope, operation);\n\t} finally {\n\t\tscope.active = false;\n\t}\n}\n\n/** Retire one factory without invalidating a runtime shared with selected factories. */\nexport function retireExtensionAPI(extension: Extension): void {\n\tconst lifetime = (extension as ExtensionWithLifetime)[apiLifetime];\n\tif (!lifetime || lifetime.retired) return;\n\tlifetime.retired = true;\n\tconst failures: unknown[] = [];\n\tfor (const release of lifetime.releases) {\n\t\ttry {\n\t\t\trelease();\n\t\t} catch (error) {\n\t\t\tfailures.push(error);\n\t\t}\n\t}\n\tlifetime.releases.clear();\n\tif (failures.length) throw new AggregateError(failures, \"Extension subscription retirement failed\");\n}\n\n/**\n * Create the ExtensionAPI for an extension.\n * Registration methods write to the extension object.\n * Action methods delegate to the shared runtime.\n */\nexport function createExtensionAPI(\n\textension: Extension,\n\truntime: ExtensionRuntime,\n\tcwd: string,\n\teventBus: EventBus,\n\tworkflowResourceProvider: WorkflowResourceProviderInput = emptyWorkflowResourceProvider,\n\tresourceLoaderInheritanceSnapshotProvider?: ResourceLoaderInheritanceSnapshotProvider,\n): { api: ExtensionAPI; commit: () => void; discard: () => void } {\n\tconst originalRuntime = runtime;\n\t(extension as ExtensionWithLifetime)[apiLifetime] = { retired: false, releases: new Set() };\n\tconst captureRegistrationInvocation = <T>(value: T): T => captureInvocation(value, originalRuntime);\n\truntime = invocationRuntime(runtime);\n\textension = invocationExtension(extension);\n\tconst workflowResources = normalizeWorkflowResourceProvider(workflowResourceProvider);\n\toriginalRuntime.mcpServerRegistry.addPackageSource(workflowResources);\n\tconst pendingRuntimeChanges: Array<{ apply: () => void; rollback: () => void }> = [];\n\tconst loadingUnsubscribers: Array<() => void> = [];\n\tconst initialFlagValues = new Map(runtime.flagValues);\n\tconst initialFlagOwners = new Map(runtime.flagOwners);\n\tconst initialFlagOwnerOrigins = new Map(runtime.flagOwnerOrigins);\n\tlet state: \"loading\" | \"active\" | \"failed\" = \"loading\";\n\tconst assertActive = (inspection = false) => {\n\t\tconst lifetime = (extension as ExtensionWithLifetime)[apiLifetime];\n\t\tif (lifetime?.retired) throw new Error(STALE_EXTENSION_CONTEXT_MESSAGE);\n\t\tif (lifetime?.cleanup && !lifetime.cleanup.getStore()?.active && !hasCallingSessionWork(lifetime))\n\t\t\tthrow hostInputError(\"SessionClosed\");\n\t\tif (state === \"failed\")\n\t\t\tthrow new Error(`Extension \"${extension.path}\" failed to load and its API is no longer active.`);\n\t\truntime.assertActive();\n\t\tif (!inspection) assertExtensionAction(resolveInvocationRuntime(originalRuntime));\n\t};\n\tconst trackAPIWork = <T>(operation: () => Promise<T>): Promise<T> => {\n\t\tconst lifetime = (extension as ExtensionWithLifetime)[apiLifetime]!;\n\t\treturn trackExtensionWork(resolveInvocationRuntime(originalRuntime), () => trackSessionWork(lifetime, operation));\n\t};\n\tconst applyRuntimeChange = (change: { apply: () => void; rollback: () => void }) => {\n\t\tif (state === \"loading\") pendingRuntimeChanges.push(change);\n\t\telse if (state === \"active\") change.apply();\n\t\telse assertActive();\n\t};\n\t// Both ownership ledgers must forget a completed release, including on throw.\n\t// Clearing the capture also makes a retained public unsubscribe handle harmless.\n\tconst trackRelease = (cleanup: () => void): (() => void) => {\n\t\tconst lifetime = (extension as ExtensionWithLifetime)[apiLifetime];\n\t\tlet pending: (() => void) | undefined = cleanup;\n\t\tconst release = runtime.trackEventBusSubscription(() => {\n\t\t\tconst callback = pending;\n\t\t\tpending = undefined;\n\t\t\tlifetime?.releases.delete(release);\n\t\t\tcallback?.();\n\t\t});\n\t\tlifetime?.releases.add(release);\n\t\tif (state === \"loading\") loadingUnsubscribers.push(release);\n\t\treturn release;\n\t};\n\t// Successive load generations of one session each build a new facade over\n\t// the same shared bus; mapping the facade back to that bus lets\n\t// session-scoped state re-bind across module re-evaluation.\n\tconst events: EventBus = {\n\t\temit(channel, data) {\n\t\t\tif (isRetiredExtensionCleanup(resolveInvocationRuntime(originalRuntime))) return;\n\t\t\tassertActive();\n\t\t\teventBus.emit(channel, data);\n\t\t},\n\t\ton(channel, handler) {\n\t\t\tconst ownerRuntime = resolveInvocationRuntime(originalRuntime);\n\t\t\tconst ownerLifetime = (extension as ExtensionWithLifetime)[apiLifetime];\n\t\t\tconst deliver = captureRegistrationInvocation(handler);\n\t\t\tassertActive();\n\t\t\tconst unsubscribe = trackRelease(\n\t\t\t\teventBus.on(channel, (data) => {\n\t\t\t\t\tif (ownerLifetime?.retired || ownerLifetime?.cleanup || !extensionWorkOpen(ownerRuntime)) return;\n\t\t\t\t\tif (state === \"loading\" || boundExtensionRuntimes.has(ownerRuntime))\n\t\t\t\t\t\treturn trackExtensionWork(ownerRuntime, () =>\n\t\t\t\t\t\t\ttrackSessionWork(ownerLifetime!, async () => deliver(data)),\n\t\t\t\t\t\t);\n\t\t\t\t}),\n\t\t\t);\n\t\t\treturn unsubscribe;\n\t\t},\n\t};\n\tregisterCanonicalEventBus(events, canonicalEventBusFor(eventBus));\n\t// Capture explicit creation/reload lineage before invocation leaves its construction scope.\n\tlifecycleScopeForOwner(originalRuntime);\n\tconst api = {\n\t\tget lifecycleScope() {\n\t\t\treturn lifecycleScopeForOwner(resolveInvocationRuntime(originalRuntime));\n\t\t},\n\t\tregisterWorkflowActivityPublisher() {\n\t\t\tassertActive();\n\t\t\tconst publisher = runtime.workflowActivityHub.registerWorkflowActivityPublisher();\n\t\t\treturn { ...publisher, dispose: trackRelease(() => publisher.dispose()) };\n\t\t},\n\t\ton(event: string, handler: HandlerFn): () => void {\n\t\t\tassertActive();\n\t\t\tconst registeredHandler = captureRegistrationInvocation((...args: Parameters<HandlerFn>) => handler(...args));\n\t\t\tconst list = extension.handlers.get(event) ?? [];\n\t\t\tlist.push(registeredHandler);\n\t\t\textension.handlers.set(event, list);\n\t\t\treturn () => {\n\t\t\t\tconst handlers = extension.handlers.get(event);\n\t\t\t\tif (!handlers) return;\n\t\t\t\tconst index = handlers.findIndex(\n\t\t\t\t\t(candidate) =>\n\t\t\t\t\t\toriginalRegistrationCallback(candidate) === originalRegistrationCallback(registeredHandler),\n\t\t\t\t);\n\t\t\t\tif (index === -1) return;\n\t\t\t\thandlers.splice(index, 1);\n\t\t\t\tif (handlers.length === 0) extension.handlers.delete(event);\n\t\t\t};\n\t\t},\n\n\t\tregisterTool(tool: ToolDefinition): void {\n\t\t\tassertActive();\n\t\t\tif (runtime.canRegisterResource?.(extension, \"tool\", tool.name) === false) return;\n\t\t\tif (typeof tool.parameters !== \"object\" || tool.parameters === null || Array.isArray(tool.parameters)) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Tool \"${tool.name}\" registered by extension \"${extension.path}\" must define an object parameter schema.`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst registration = { definition: captureRegistrationInvocation(tool), sourceInfo: extension.sourceInfo };\n\t\t\tif (runtime.stageToolRegistration?.(extension, tool.name, registration)) return;\n\t\t\textension.tools.set(tool.name, registration);\n\t\t\tif (runtime.refreshToolsAfterRegistration) runtime.refreshToolsAfterRegistration();\n\t\t\telse runtime.refreshTools();\n\t\t},\n\n\t\tregisterCommand(name: string, options: Omit<RegisteredCommand, \"name\" | \"sourceInfo\">): void {\n\t\t\tassertActive();\n\t\t\tif (runtime.canRegisterResource?.(extension, \"command\", name) === false) return;\n\t\t\tconst registration = { name, sourceInfo: extension.sourceInfo, ...captureRegistrationInvocation(options) };\n\t\t\tif (runtime.stageCommandRegistration?.(extension, name, registration)) return;\n\t\t\textension.commands.set(name, registration);\n\t\t},\n\n\t\tregisterShortcut(\n\t\t\tshortcut: KeyId,\n\t\t\toptions: {\n\t\t\t\tdescription?: string;\n\t\t\t\tkeybinding?: import(\"../keybindings.ts\").Keybinding;\n\t\t\t\tpreferEditor?: boolean;\n\t\t\t\thandler: (ctx: ExtensionContext) => Promise<void> | void;\n\t\t\t},\n\t\t): void {\n\t\t\tassertActive();\n\t\t\tif (runtime.canRegisterResource?.(extension, \"shortcut\", shortcut) === false) return;\n\t\t\tconst registration = { shortcut, extensionPath: extension.path, ...captureRegistrationInvocation(options) };\n\t\t\tif (runtime.stageShortcutRegistration?.(extension, shortcut, registration)) return;\n\t\t\textension.shortcuts.set(shortcut, registration);\n\t\t},\n\n\t\tregisterFlag(\n\t\t\tname: string,\n\t\t\toptions: {\n\t\t\t\tdescription?: string;\n\t\t\t\ttype: \"boolean\" | \"string\";\n\t\t\t\tdefault?: boolean | string;\n\t\t\t},\n\t\t): void {\n\t\t\tassertActive();\n\t\t\tif (options.default !== undefined && typeof options.default !== options.type) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Invalid default for flag \"${name}\": expected ${options.type}, got ${typeof options.default}`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (runtime.canRegisterResource?.(extension, \"flag\", name) === false) return;\n\t\t\tconst registration = { name, extensionPath: extension.path, ...options };\n\t\t\tif (runtime.stageFlagRegistration?.(extension, name, registration, options.default)) return;\n\t\t\textension.flags.set(name, registration);\n\t\t\truntime.flagOwners ??= new Map();\n\t\t\tconst flagOwners = runtime.flagOwners;\n\t\t\truntime.flagOwnerOrigins ??= new Map();\n\t\t\tconst flagOwnerOrigins = runtime.flagOwnerOrigins;\n\t\t\tif (!flagOwners.has(name)) {\n\t\t\t\tflagOwners.set(name, extension.path);\n\t\t\t\tflagOwnerOrigins.set(name, extension.sourceInfo.configurationOrigin);\n\t\t\t}\n\t\t\tif (options.default !== undefined && !runtime.flagValues.has(name)) {\n\t\t\t\tif (runtime.applyFlagDefaultAfterRegistration) {\n\t\t\t\t\truntime.applyFlagDefaultAfterRegistration(\n\t\t\t\t\t\tname,\n\t\t\t\t\t\textension.path,\n\t\t\t\t\t\toptions.default,\n\t\t\t\t\t\textension.sourceInfo.configurationOrigin,\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\truntime.flagValues.set(name, options.default);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tregisterMessageRenderer<T>(customType: string, renderer: MessageRenderer<T>): void {\n\t\t\tassertActive();\n\t\t\textension.messageRenderers.set(customType, captureRegistrationInvocation(renderer) as MessageRenderer);\n\t\t},\n\n\t\tregisterMarkdownTransformer(transformer: MarkdownTransformer): void {\n\t\t\tassertActive();\n\t\t\textension.markdownTransformer = captureRegistrationInvocation(transformer);\n\t\t},\n\n\t\tregisterEntryRenderer<T>(customType: string, renderer: EntryRenderer<T>): void {\n\t\t\tassertActive();\n\t\t\textension.entryRenderers.set(customType, captureRegistrationInvocation(renderer) as EntryRenderer);\n\t\t},\n\n\t\tgetFlag(name: string): boolean | string | undefined {\n\t\t\tassertActive(true);\n\t\t\tconst pendingDefault = runtime.getPendingFlagDefault?.(extension.path, name);\n\t\t\tif (!extension.flags.has(name) && pendingDefault === undefined) return undefined;\n\t\t\treturn runtime.flagValues.get(name) ?? pendingDefault;\n\t\t},\n\n\t\tgetWorkflowResources() {\n\t\t\tassertActive(true);\n\t\t\treturn [...workflowResources.get()];\n\t\t},\n\n\t\tasync refreshWorkflowResources() {\n\t\t\tassertActive();\n\t\t\treturn trackAPIWork(async () => {\n\t\t\t\tconst refreshed = await workflowResources.refresh?.();\n\t\t\t\treturn [...(refreshed ?? workflowResources.get())];\n\t\t\t});\n\t\t},\n\n\t\tregisterMcpServer(name: string, config: McpServerConfig): void {\n\t\t\tassertActive();\n\t\t\tif (typeof name !== \"string\" || name.trim() === \"\") {\n\t\t\t\tthrow new Error(`MCP server registered by extension \"${extension.path}\" must have a non-empty name.`);\n\t\t\t}\n\t\t\tif (typeof config !== \"object\" || config === null || Array.isArray(config)) {\n\t\t\t\tthrow new Error(`MCP server \"${name}\" registered by extension \"${extension.path}\" must be an object.`);\n\t\t\t}\n\t\t\tconst contribution: McpServerContribution = {\n\t\t\t\tname,\n\t\t\t\tconfig: { ...config },\n\t\t\t\torigin: \"extension\",\n\t\t\t\tsourceInfo: extension.sourceInfo,\n\t\t\t};\n\t\t\tlet previous: McpServerContribution | undefined;\n\t\t\tapplyRuntimeChange({\n\t\t\t\tapply: () => {\n\t\t\t\t\tprevious = runtime.mcpServerRegistry.register(contribution);\n\t\t\t\t},\n\t\t\t\trollback: () => runtime.mcpServerRegistry.restore(name, previous),\n\t\t\t});\n\t\t},\n\n\t\tgetMcpServerContributions() {\n\t\t\tassertActive(true);\n\t\t\treturn runtime.mcpServerRegistry.list();\n\t\t},\n\n\t\tonMcpServerContributionsChanged(listener: () => void) {\n\t\t\tconst ownerRuntime = resolveInvocationRuntime(originalRuntime);\n\t\t\tconst ownerLifetime = (extension as ExtensionWithLifetime)[apiLifetime];\n\t\t\tconst deliver = captureRegistrationInvocation(listener);\n\t\t\tassertActive();\n\t\t\treturn trackRelease(\n\t\t\t\townerRuntime.mcpServerRegistry.subscribe(() => {\n\t\t\t\t\tif (ownerLifetime?.retired || ownerLifetime?.cleanup || !extensionWorkOpen(ownerRuntime)) return;\n\t\t\t\t\tif (state !== \"loading\" && !boundExtensionRuntimes.has(ownerRuntime)) return;\n\t\t\t\t\tvoid trackExtensionWork(ownerRuntime, () =>\n\t\t\t\t\t\ttrackSessionWork(ownerLifetime!, async () => deliver()),\n\t\t\t\t\t).catch((error: Error) => {\n\t\t\t\t\t\tconsole.error(`MCP server contribution listener error (${extension.path}):`, error);\n\t\t\t\t\t});\n\t\t\t\t}),\n\t\t\t);\n\t\t},\n\n\t\tgetResourceLoaderInheritanceSnapshot() {\n\t\t\tassertActive(true);\n\t\t\treturn resourceLoaderInheritanceSnapshotProvider?.() ?? {};\n\t\t},\n\t\tgetChildSessionOptions(options) {\n\t\t\tassertActive();\n\t\t\treturn runtime.getChildSessionOptions?.(options) ?? options;\n\t\t},\n\n\t\tsendMessage(message, options): void | Promise<void> {\n\t\t\tassertActive();\n\t\t\treturn runtime.sendMessage(message, options);\n\t\t},\n\n\t\tsendMessages(messages, options): void | Promise<void> {\n\t\t\tassertActive();\n\t\t\treturn runtime.sendMessages(messages, options);\n\t\t},\n\n\t\tsendUserMessage(content, options): void {\n\t\t\tassertActive();\n\t\t\truntime.sendUserMessage(content, options);\n\t\t},\n\n\t\tappendEntry(customType: string, data?: unknown): void {\n\t\t\tassertActive();\n\t\t\truntime.appendEntry(customType, data);\n\t\t},\n\n\t\tsetSessionName(name: string): void {\n\t\t\tassertActive();\n\t\t\truntime.setSessionName(name);\n\t\t},\n\n\t\tgetSessionName(): string | undefined {\n\t\t\tassertActive(true);\n\t\t\treturn runtime.getSessionName();\n\t\t},\n\n\t\tsetLabel(entryId: string, label: string | undefined): void {\n\t\t\tassertActive();\n\t\t\truntime.setLabel(entryId, label);\n\t\t},\n\n\t\texec(command: string, args: string[], options?: ExecOptions) {\n\t\t\tassertActive();\n\t\t\treturn trackAPIWork(() => execCommand(command, args, options?.cwd ?? cwd, options));\n\t\t},\n\n\t\tgetSettings() {\n\t\t\tassertActive(true);\n\t\t\treturn runtime.getSettings?.() ?? {};\n\t\t},\n\n\t\tgetActiveTools(): string[] {\n\t\t\tassertActive(true);\n\t\t\treturn runtime.getActiveToolsAfterRegistration?.(extension) ?? runtime.getActiveTools();\n\t\t},\n\n\t\tgetAllTools() {\n\t\t\tassertActive(true);\n\t\t\treturn runtime.getAllToolsAfterRegistration?.(extension) ?? runtime.getAllTools();\n\t\t},\n\n\t\tsetActiveTools(toolNames: string[]): void {\n\t\t\tassertActive();\n\t\t\tif (!runtime.setActiveToolsAfterRegistration?.(extension, toolNames)) runtime.setActiveTools(toolNames);\n\t\t},\n\n\t\tgetCommands() {\n\t\t\tassertActive(true);\n\t\t\treturn runtime.getCommandsAfterRegistration?.(extension) ?? runtime.getCommands();\n\t\t},\n\n\t\tsetModel(model) {\n\t\t\tassertActive();\n\t\t\treturn runtime.setModel(model);\n\t\t},\n\n\t\tgetThinkingLevel() {\n\t\t\tassertActive(true);\n\t\t\treturn runtime.getThinkingLevel();\n\t\t},\n\n\t\tsetThinkingLevel(level) {\n\t\t\tassertActive();\n\t\t\truntime.setThinkingLevel(level);\n\t\t},\n\n\t\tregisterProvider(nameOrProvider: string | Provider, config?: ProviderConfig) {\n\t\t\tassertActive();\n\t\t\tif (typeof nameOrProvider === \"string\") {\n\t\t\t\tif (!config) throw new Error(\"Provider config is required\");\n\t\t\t\tconst name = nameOrProvider;\n\t\t\t\tapplyRuntimeChange({\n\t\t\t\t\tapply: () => runtime.registerProvider(name, config, extension.path),\n\t\t\t\t\trollback: () => runtime.unregisterProvider(name, extension.path),\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconst provider = nameOrProvider;\n\t\t\t\tapplyRuntimeChange({\n\t\t\t\t\tapply: () => runtime.registerProvider(provider, extension.path),\n\t\t\t\t\trollback: () => runtime.unregisterProvider(provider.id, extension.path),\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\n\t\tunregisterProvider(name: string) {\n\t\t\tassertActive();\n\t\t\tconst prior = runtime.pendingProviderRegistrations.filter((registration) =>\n\t\t\t\t\"provider\" in registration ? registration.provider.id === name : registration.name === name,\n\t\t\t);\n\t\t\tapplyRuntimeChange({\n\t\t\t\t// Explicit unregistration stays name-wide: its rollback below\n\t\t\t\t// restores every prior registration, so a narrower removal here\n\t\t\t\t// would re-register entries that were never taken away.\n\t\t\t\tapply: () => runtime.unregisterProvider(name),\n\t\t\t\trollback: () => {\n\t\t\t\t\tfor (const registration of prior) {\n\t\t\t\t\t\tif (\"provider\" in registration) {\n\t\t\t\t\t\t\truntime.registerProvider(registration.provider, registration.extensionPath);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\truntime.registerProvider(registration.name, registration.config, registration.extensionPath);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t});\n\t\t},\n\n\t\tevents,\n\t} as ExtensionAPI;\n\n\treturn {\n\t\tapi,\n\t\tcommit: () => {\n\t\t\tif (state !== \"loading\") return;\n\t\t\tconst applied: Array<{ apply: () => void; rollback: () => void }> = [];\n\t\t\ttry {\n\t\t\t\tfor (const change of pendingRuntimeChanges) {\n\t\t\t\t\tchange.apply();\n\t\t\t\t\tapplied.push(change);\n\t\t\t\t}\n\t\t\t\tstate = \"active\";\n\t\t\t\tpendingRuntimeChanges.length = 0;\n\t\t\t\tloadingUnsubscribers.length = 0;\n\t\t\t} catch (error) {\n\t\t\t\tfor (const change of applied.reverse()) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tchange.rollback();\n\t\t\t\t\t} catch {\n\t\t\t\t\t\t// Best-effort undo of provider ops already applied in this commit.\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t},\n\t\tdiscard: () => {\n\t\t\tif (state !== \"loading\") return;\n\t\t\tstate = \"failed\";\n\t\t\tconst failures: unknown[] = [];\n\t\t\tfor (const unsubscribe of loadingUnsubscribers) {\n\t\t\t\ttry {\n\t\t\t\t\tunsubscribe();\n\t\t\t\t} catch (error) {\n\t\t\t\t\tfailures.push(error);\n\t\t\t\t}\n\t\t\t}\n\t\t\tpendingRuntimeChanges.length = 0;\n\t\t\tloadingUnsubscribers.length = 0;\n\t\t\truntime.flagValues = initialFlagValues;\n\t\t\truntime.flagOwners = initialFlagOwners;\n\t\t\truntime.flagOwnerOrigins = initialFlagOwnerOrigins;\n\t\t\tif (failures.length) throw new AggregateError(failures, \"Extension subscription rollback failed\");\n\t\t},\n\t};\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader-core.d.ts","sourceRoot":"","sources":["../../../src/core/extensions/loader-core.ts"],"names":[],"mappings":"AAGA,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAahE,OAAO,EAEN,KAAK,yCAAyC,EAC9C,KAAK,6BAA6B,EAClC,MAAM,uBAAuB,CAAC;AAI/B,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AA8BtG,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,oBAAoB,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CA+DpH;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,gBAAgB,GAAG,QAAQ,CAO/E;
|
|
1
|
+
{"version":3,"file":"loader-core.d.ts","sourceRoot":"","sources":["../../../src/core/extensions/loader-core.ts"],"names":[],"mappings":"AAGA,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAahE,OAAO,EAEN,KAAK,yCAAyC,EAC9C,KAAK,6BAA6B,EAClC,MAAM,uBAAuB,CAAC;AAI/B,OAAO,KAAK,EAAE,SAAS,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AA8BtG,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,oBAAoB,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CA+DpH;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,gBAAgB,GAAG,QAAQ,CAO/E;AAoED;;GAEG;AACH,wBAAsB,wBAAwB,CAC7C,OAAO,EAAE,gBAAgB,EACzB,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,gBAAgB,EACzB,aAAa,SAAa,EAC1B,wBAAwB,GAAE,6BAA6D,EACvF,yCAAyC,CAAC,EAAE,yCAAyC,EACrF,MAAM,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,cAAc,GAAG,YAAY,CAAC,GACrD,OAAO,CAAC,SAAS,CAAC,CAYpB;AA0GD,wBAAsB,cAAc,CACnC,KAAK,EAAE,MAAM,EAAE,EACf,GAAG,EAAE,MAAM,EACX,QAAQ,CAAC,EAAE,QAAQ,EACnB,wBAAwB,GAAE,6BAA6D,EACvF,OAAO,CAAC,EAAE,gBAAgB,EAC1B,yCAAyC,CAAC,EAAE,yCAAyC,GACnF,OAAO,CAAC,oBAAoB,CAAC,CAS/B;AAED,wBAAsB,oBAAoB,CACzC,KAAK,EAAE,MAAM,EAAE,EACf,GAAG,EAAE,MAAM,EACX,QAAQ,CAAC,EAAE,QAAQ,EACnB,wBAAwB,GAAE,6BAA6D,EACvF,OAAO,CAAC,EAAE,gBAAgB,EAC1B,yCAAyC,CAAC,EAAE,yCAAyC,GACnF,OAAO,CAAC,oBAAoB,CAAC,CAU/B"}
|
|
@@ -3,7 +3,7 @@ import { yieldToEventLoop } from "../../utils/event-loop.js";
|
|
|
3
3
|
import { resolvePath } from "../../utils/paths.js";
|
|
4
4
|
import { createEventBus } from "../event-bus.js";
|
|
5
5
|
import { isTrustedMandatoryRuntimeTool, markTrustedMandatoryRuntimeExtension } from "../mandatory-runtime-tools.js";
|
|
6
|
-
import { createSyntheticSourceInfo } from "../source-info.js";
|
|
6
|
+
import { createSyntheticSourceInfo, getSyntheticPathSource, isSyntheticPath } from "../source-info.js";
|
|
7
7
|
import { endTimingSpan, startTimingSpan } from "../timings.js";
|
|
8
8
|
import { createExtensionAPI } from "./loader-api.js";
|
|
9
9
|
import { bindRegistrationCallbacks, copyRegistrations, createInvocationBindings, prepareRegistrationCallbacks, reconcileRegistration, registrationFields, } from "./loader-bindings.js";
|
|
@@ -88,10 +88,8 @@ const INTER_EXTENSION_YIELD_THRESHOLD_MS = 16;
|
|
|
88
88
|
* Create an Extension object with empty collections.
|
|
89
89
|
*/
|
|
90
90
|
function createExtension(extensionPath, resolvedPath) {
|
|
91
|
-
const source = extensionPath
|
|
92
|
-
|
|
93
|
-
: "local";
|
|
94
|
-
const baseDir = extensionPath.startsWith("<") ? undefined : path.dirname(resolvedPath);
|
|
91
|
+
const source = getSyntheticPathSource(extensionPath) ?? "local";
|
|
92
|
+
const baseDir = isSyntheticPath(extensionPath) ? undefined : path.dirname(resolvedPath);
|
|
95
93
|
return {
|
|
96
94
|
path: extensionPath,
|
|
97
95
|
resolvedPath,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader-core.js","sourceRoot":"","sources":["../../../src/core/extensions/loader-core.ts"],"names":[],"mappings":"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","sourcesContent":["import * as path from \"node:path\";\nimport { yieldToEventLoop } from \"../../utils/event-loop.ts\";\nimport { resolvePath } from \"../../utils/paths.ts\";\nimport { createEventBus, type EventBus } from \"../event-bus.js\";\nimport { isTrustedMandatoryRuntimeTool, markTrustedMandatoryRuntimeExtension } from \"../mandatory-runtime-tools.ts\";\nimport { createSyntheticSourceInfo } from \"../source-info.ts\";\nimport { endTimingSpan, startTimingSpan } from \"../timings.ts\";\nimport { createExtensionAPI } from \"./loader-api.ts\";\nimport {\n\tbindRegistrationCallbacks,\n\tcopyRegistrations,\n\tcreateInvocationBindings,\n\tprepareRegistrationCallbacks,\n\treconcileRegistration,\n\tregistrationFields,\n} from \"./loader-bindings.ts\";\nimport {\n\temptyWorkflowResourceProvider,\n\ttype ResourceLoaderInheritanceSnapshotProvider,\n\ttype WorkflowResourceProviderInput,\n} from \"./loader-resources.ts\";\nimport { factoryAcquisitions, factoryRollbackError, rollbackExtensionFactories } from \"./loader-rollback.ts\";\nimport { createExtensionRuntime } from \"./loader-runtime.ts\";\nimport { type ExtensionCacheToken, loadExtensionModule, useExtensionCacheCwd } from \"./loader-virtual-modules.js\";\nimport type { Extension, ExtensionFactory, ExtensionRuntime, LoadExtensionsResult } from \"./types.ts\";\n\n/** Associate extension runtimes with the event bus used to construct their APIs. */\nconst runtimeEventBuses = new WeakMap<ExtensionRuntime, EventBus>();\n\ninterface ExtensionSource {\n\tfactory: ExtensionFactory;\n\tworkflowResourceProvider: WorkflowResourceProviderInput;\n\tresourceLoaderInheritanceSnapshotProvider?: ResourceLoaderInheritanceSnapshotProvider;\n}\n// Discovery records construction inputs, never a session ownership identity.\n// The symbol survives the supported built/source extension-loader boundary.\nconst extensionSource = Symbol.for(\"atomic.extension-source.v1\");\ntype DiscoveredExtension = Extension & { [extensionSource]?: ExtensionSource };\nconst runtimeSources = Symbol.for(\"atomic.extension-construction.v1\");\ninterface Construction {\n\textension: Extension;\n\tsnapshot: Extension;\n\trecipe: ExtensionSource;\n}\ntype DiscoveryRuntime = ExtensionRuntime & { [runtimeSources]?: Construction[] };\n\nfunction rememberConstruction(extension: Extension, runtime: ExtensionRuntime, recipe: ExtensionSource): void {\n\tprepareRegistrationCallbacks(extension);\n\tObject.defineProperty(extension, extensionSource, { value: recipe });\n\t(runtime as DiscoveryRuntime)[runtimeSources] ??= [];\n\tconst records = (runtime as DiscoveryRuntime)[runtimeSources]!;\n\trecords.push({ extension, snapshot: copyRegistrations(extension), recipe });\n}\n\nexport async function instantiateExtensions(target: LoadExtensionsResult, cwd: string): Promise<LoadExtensionsResult> {\n\tconst runtime = createExtensionRuntime();\n\tconst eventBus = getExtensionRuntimeEventBus(target.runtime);\n\truntimeEventBuses.set(runtime, eventBus);\n\tconst extensions: Extension[] = [];\n\tconst bindings = createInvocationBindings(target.runtime, runtime);\n\tconst records = [...((target.runtime as DiscoveryRuntime)[runtimeSources] ?? [])];\n\ttry {\n\t\tfor (const source of target.extensions) {\n\t\t\tconst index = records.findIndex(\n\t\t\t\t(record) => record.extension.path === source.path && record.extension.resolvedPath === source.resolvedPath,\n\t\t\t);\n\t\t\tconst construction = index < 0 ? undefined : records.splice(index, 1)[0];\n\t\t\tconst recipe = construction?.recipe ?? (source as DiscoveredExtension)[extensionSource];\n\t\t\tif (!recipe) {\n\t\t\t\t// Hand-authored ResourceLoader registrations have no factory recipe.\n\t\t\t\t// Their callbacks remain caller code, but registration containers and\n\t\t\t\t// the runtime bindings still belong to this session generation.\n\t\t\t\tconst extension = copyRegistrations(source);\n\t\t\t\tbindRegistrationCallbacks(extension, bindings);\n\t\t\t\textensions.push(extension);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst extension = await loadOwnedExtensionFromFactory(\n\t\t\t\textensions,\n\t\t\t\trecipe.factory,\n\t\t\t\tcwd,\n\t\t\t\teventBus,\n\t\t\t\truntime,\n\t\t\t\tsource.path,\n\t\t\t\trecipe.workflowResourceProvider,\n\t\t\t\trecipe.resourceLoaderInheritanceSnapshotProvider,\n\t\t\t\tsource,\n\t\t\t);\n\t\t\textensions.push(extension);\n\t\t\tif (construction) {\n\t\t\t\tbindings.extensions.set(construction.extension, extension);\n\t\t\t\tfor (const key of registrationFields)\n\t\t\t\t\tReflect.set(\n\t\t\t\t\t\textension,\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\treconcileRegistration(source[key], construction.snapshot[key], extension[key], bindings),\n\t\t\t\t\t);\n\t\t\t}\n\t\t\tbindRegistrationCallbacks(extension, bindings);\n\t\t\tif ([...source.tools.values()].some(isTrustedMandatoryRuntimeTool))\n\t\t\t\tmarkTrustedMandatoryRuntimeExtension(extension);\n\t\t\textension.hidden = source.hidden;\n\t\t}\n\t} catch (error) {\n\t\tconst failures = await rollbackExtensionFactories(extensions, cwd);\n\t\ttry {\n\t\t\truntime.invalidate();\n\t\t} catch (cleanupError) {\n\t\t\tfailures.push(cleanupError);\n\t\t}\n\t\tthrow factoryRollbackError(error, failures);\n\t}\n\tfor (const name of target.runtime.explicitFlagNames ?? []) {\n\t\truntime.explicitFlagNames?.add(name);\n\t\tif (target.runtime.flagValues.has(name)) runtime.flagValues.set(name, target.runtime.flagValues.get(name)!);\n\t}\n\treturn { extensions, runtime, errors: [...target.errors] };\n}\n\nexport function getExtensionRuntimeEventBus(runtime: ExtensionRuntime): EventBus {\n\tlet eventBus = runtimeEventBuses.get(runtime);\n\tif (!eventBus) {\n\t\teventBus = createEventBus();\n\t\truntimeEventBuses.set(runtime, eventBus);\n\t}\n\treturn eventBus;\n}\n\nconst INTER_EXTENSION_YIELD_THRESHOLD_MS = 16;\n\n/**\n * Create an Extension object with empty collections.\n */\nfunction createExtension(extensionPath: string, resolvedPath: string): Extension {\n\tconst source =\n\t\textensionPath.startsWith(\"<\") && extensionPath.endsWith(\">\")\n\t\t\t? extensionPath.slice(1, -1).split(\":\")[0] || \"temporary\"\n\t\t\t: \"local\";\n\tconst baseDir = extensionPath.startsWith(\"<\") ? undefined : path.dirname(resolvedPath);\n\n\treturn {\n\t\tpath: extensionPath,\n\t\tresolvedPath,\n\t\tsourceInfo: createSyntheticSourceInfo(extensionPath, { source, baseDir }),\n\t\thandlers: new Map(),\n\t\ttools: new Map(),\n\t\tmessageRenderers: new Map(),\n\t\tentryRenderers: new Map(),\n\t\tcommands: new Map(),\n\t\tflags: new Map(),\n\t\tshortcuts: new Map(),\n\t};\n}\n\nasync function loadExtension(\n\textensionPath: string,\n\tcwd: string,\n\teventBus: EventBus,\n\truntime: ExtensionRuntime,\n\tworkflowResourceProvider: WorkflowResourceProviderInput = emptyWorkflowResourceProvider,\n\tresourceLoaderInheritanceSnapshotProvider?: ResourceLoaderInheritanceSnapshotProvider,\n\tcacheToken?: ExtensionCacheToken,\n): Promise<{ extension: Extension | null; error: string | null }> {\n\tconst resolvedPath = resolvePath(extensionPath, cwd, { normalizeUnicodeSpaces: true });\n\n\ttry {\n\t\tconst moduleSpan = startTimingSpan(`loadExtensions.${extensionPath}.module`, \"extensions\");\n\t\tconst factory = await loadExtensionModule(resolvedPath, cacheToken);\n\t\tendTimingSpan(moduleSpan);\n\t\tif (!factory) {\n\t\t\treturn {\n\t\t\t\textension: null,\n\t\t\t\terror: `Extension does not export a valid factory function: ${extensionPath}`,\n\t\t\t};\n\t\t}\n\n\t\tconst factorySpan = startTimingSpan(`loadExtensions.${extensionPath}.factory`, \"extensions\");\n\t\tconst extension = await loadExtensionFromFactory(\n\t\t\tfactory,\n\t\t\tcwd,\n\t\t\teventBus,\n\t\t\truntime,\n\t\t\textensionPath,\n\t\t\tworkflowResourceProvider,\n\t\t\tresourceLoaderInheritanceSnapshotProvider,\n\t\t\tcreateExtension(extensionPath, resolvedPath),\n\t\t);\n\t\tendTimingSpan(factorySpan);\n\t\treturn { extension, error: null };\n\t} catch (err) {\n\t\t// Ordinary discovery failures remain diagnostics; failed cleanup must reject creation.\n\t\tif (err instanceof Error && \"code\" in err && err.code === \"ShutdownFailed\") throw err;\n\t\tconst message = err instanceof Error ? err.message : String(err);\n\t\treturn { extension: null, error: `Failed to load extension: ${message}` };\n\t}\n}\n\n/**\n * Create an Extension from an inline factory function.\n */\nexport async function loadExtensionFromFactory(\n\tfactory: ExtensionFactory,\n\tcwd: string,\n\teventBus: EventBus,\n\truntime: ExtensionRuntime,\n\textensionPath = \"<inline>\",\n\tworkflowResourceProvider: WorkflowResourceProviderInput = emptyWorkflowResourceProvider,\n\tresourceLoaderInheritanceSnapshotProvider?: ResourceLoaderInheritanceSnapshotProvider,\n\tsource?: Pick<Extension, \"resolvedPath\" | \"sourceInfo\">,\n): Promise<Extension> {\n\treturn loadOwnedExtensionFromFactory(\n\t\t[],\n\t\tfactory,\n\t\tcwd,\n\t\teventBus,\n\t\truntime,\n\t\textensionPath,\n\t\tworkflowResourceProvider,\n\t\tresourceLoaderInheritanceSnapshotProvider,\n\t\tsource,\n\t);\n}\n\n/** Replay failure closes the whole fresh batch; ordinary discovery failure closes only itself. */\nasync function loadOwnedExtensionFromFactory(\n\trollbackPeers: Extension[],\n\tfactory: ExtensionFactory,\n\tcwd: string,\n\teventBus: EventBus,\n\truntime: ExtensionRuntime,\n\textensionPath: string,\n\tworkflowResourceProvider: WorkflowResourceProviderInput,\n\tresourceLoaderInheritanceSnapshotProvider?: ResourceLoaderInheritanceSnapshotProvider,\n\tsource?: Pick<Extension, \"resolvedPath\" | \"sourceInfo\">,\n): Promise<Extension> {\n\tconst extension = createExtension(extensionPath, source?.resolvedPath ?? extensionPath);\n\tif (source) extension.sourceInfo = source.sourceInfo;\n\tconst resolvedCwd = resolvePath(cwd);\n\tconst transaction = createExtensionAPI(\n\t\textension,\n\t\truntime,\n\t\tresolvedCwd,\n\t\teventBus,\n\t\tworkflowResourceProvider,\n\t\tresourceLoaderInheritanceSnapshotProvider,\n\t);\n\ttry {\n\t\tawait factory(transaction.api);\n\t\ttransaction.commit();\n\t} catch (error) {\n\t\tconst failures = await rollbackExtensionFactories([...rollbackPeers.splice(0), extension], resolvedCwd);\n\t\ttry {\n\t\t\ttransaction.discard();\n\t\t} catch (cleanupError) {\n\t\t\tfailures.push(cleanupError);\n\t\t}\n\t\tthrow factoryRollbackError(error, failures);\n\t}\n\trememberConstruction(extension, runtime, {\n\t\tfactory,\n\t\tworkflowResourceProvider,\n\t\tresourceLoaderInheritanceSnapshotProvider,\n\t});\n\tfactoryAcquisitions.getStore()?.pending?.set(extension, { cwd: resolvedCwd, runtime });\n\treturn extension;\n}\n\n/**\n * Load extensions from paths.\n */\nasync function loadExtensionsInternal(\n\tpaths: string[],\n\tcwd: string,\n\teventBus?: EventBus,\n\tworkflowResourceProvider: WorkflowResourceProviderInput = emptyWorkflowResourceProvider,\n\truntime?: ExtensionRuntime,\n\tresourceLoaderInheritanceSnapshotProvider?: ResourceLoaderInheritanceSnapshotProvider,\n\tuseCache = false,\n): Promise<LoadExtensionsResult> {\n\tconst extensions: Extension[] = [];\n\tconst errors: Array<{ path: string; error: string }> = [];\n\tconst cacheToken = useCache ? useExtensionCacheCwd(cwd) : undefined;\n\tconst resolvedCwd = cacheToken?.cwd ?? resolvePath(cwd);\n\tconst resolvedEventBus = eventBus ?? createEventBus();\n\tconst resolvedRuntime = runtime ?? createExtensionRuntime();\n\truntimeEventBuses.set(resolvedRuntime, resolvedEventBus);\n\n\tlet processedExtensionCount = 0;\n\tlet lastYieldAt = Date.now();\n\tfor (const extPath of paths) {\n\t\t// Unconditional yields cost a full macrotask turn per extension (~100 ms\n\t\t// each while the TUI is live). Only yield when this turn has actually\n\t\t// held the event loop long enough to delay input/render work.\n\t\tif (processedExtensionCount > 0 && Date.now() - lastYieldAt >= INTER_EXTENSION_YIELD_THRESHOLD_MS) {\n\t\t\tawait yieldToEventLoop();\n\t\t\tlastYieldAt = Date.now();\n\t\t}\n\t\tconst extensionSpan = startTimingSpan(`loadExtensions.${extPath}.total`, \"extensions\");\n\t\tconst { extension, error } = await loadExtension(\n\t\t\textPath,\n\t\t\tresolvedCwd,\n\t\t\tresolvedEventBus,\n\t\t\tresolvedRuntime,\n\t\t\tworkflowResourceProvider,\n\t\t\tresourceLoaderInheritanceSnapshotProvider,\n\t\t\tcacheToken,\n\t\t);\n\t\tendTimingSpan(extensionSpan);\n\t\tprocessedExtensionCount += 1;\n\t\tif (error) {\n\t\t\terrors.push({ path: extPath, error });\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (extension) {\n\t\t\textensions.push(extension);\n\t\t}\n\t}\n\n\treturn {\n\t\textensions,\n\t\terrors,\n\t\twarnings: [],\n\t\truntime: resolvedRuntime,\n\t};\n}\n\nexport async function loadExtensions(\n\tpaths: string[],\n\tcwd: string,\n\teventBus?: EventBus,\n\tworkflowResourceProvider: WorkflowResourceProviderInput = emptyWorkflowResourceProvider,\n\truntime?: ExtensionRuntime,\n\tresourceLoaderInheritanceSnapshotProvider?: ResourceLoaderInheritanceSnapshotProvider,\n): Promise<LoadExtensionsResult> {\n\treturn loadExtensionsInternal(\n\t\tpaths,\n\t\tcwd,\n\t\teventBus,\n\t\tworkflowResourceProvider,\n\t\truntime,\n\t\tresourceLoaderInheritanceSnapshotProvider,\n\t);\n}\n\nexport async function loadExtensionsCached(\n\tpaths: string[],\n\tcwd: string,\n\teventBus?: EventBus,\n\tworkflowResourceProvider: WorkflowResourceProviderInput = emptyWorkflowResourceProvider,\n\truntime?: ExtensionRuntime,\n\tresourceLoaderInheritanceSnapshotProvider?: ResourceLoaderInheritanceSnapshotProvider,\n): Promise<LoadExtensionsResult> {\n\treturn loadExtensionsInternal(\n\t\tpaths,\n\t\tcwd,\n\t\teventBus,\n\t\tworkflowResourceProvider,\n\t\truntime,\n\t\tresourceLoaderInheritanceSnapshotProvider,\n\t\ttrue,\n\t);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"loader-core.js","sourceRoot":"","sources":["../../../src/core/extensions/loader-core.ts"],"names":[],"mappings":"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","sourcesContent":["import * as path from \"node:path\";\nimport { yieldToEventLoop } from \"../../utils/event-loop.ts\";\nimport { resolvePath } from \"../../utils/paths.ts\";\nimport { createEventBus, type EventBus } from \"../event-bus.js\";\nimport { isTrustedMandatoryRuntimeTool, markTrustedMandatoryRuntimeExtension } from \"../mandatory-runtime-tools.ts\";\nimport { createSyntheticSourceInfo, getSyntheticPathSource, isSyntheticPath } from \"../source-info.ts\";\nimport { endTimingSpan, startTimingSpan } from \"../timings.ts\";\nimport { createExtensionAPI } from \"./loader-api.ts\";\nimport {\n\tbindRegistrationCallbacks,\n\tcopyRegistrations,\n\tcreateInvocationBindings,\n\tprepareRegistrationCallbacks,\n\treconcileRegistration,\n\tregistrationFields,\n} from \"./loader-bindings.ts\";\nimport {\n\temptyWorkflowResourceProvider,\n\ttype ResourceLoaderInheritanceSnapshotProvider,\n\ttype WorkflowResourceProviderInput,\n} from \"./loader-resources.ts\";\nimport { factoryAcquisitions, factoryRollbackError, rollbackExtensionFactories } from \"./loader-rollback.ts\";\nimport { createExtensionRuntime } from \"./loader-runtime.ts\";\nimport { type ExtensionCacheToken, loadExtensionModule, useExtensionCacheCwd } from \"./loader-virtual-modules.js\";\nimport type { Extension, ExtensionFactory, ExtensionRuntime, LoadExtensionsResult } from \"./types.ts\";\n\n/** Associate extension runtimes with the event bus used to construct their APIs. */\nconst runtimeEventBuses = new WeakMap<ExtensionRuntime, EventBus>();\n\ninterface ExtensionSource {\n\tfactory: ExtensionFactory;\n\tworkflowResourceProvider: WorkflowResourceProviderInput;\n\tresourceLoaderInheritanceSnapshotProvider?: ResourceLoaderInheritanceSnapshotProvider;\n}\n// Discovery records construction inputs, never a session ownership identity.\n// The symbol survives the supported built/source extension-loader boundary.\nconst extensionSource = Symbol.for(\"atomic.extension-source.v1\");\ntype DiscoveredExtension = Extension & { [extensionSource]?: ExtensionSource };\nconst runtimeSources = Symbol.for(\"atomic.extension-construction.v1\");\ninterface Construction {\n\textension: Extension;\n\tsnapshot: Extension;\n\trecipe: ExtensionSource;\n}\ntype DiscoveryRuntime = ExtensionRuntime & { [runtimeSources]?: Construction[] };\n\nfunction rememberConstruction(extension: Extension, runtime: ExtensionRuntime, recipe: ExtensionSource): void {\n\tprepareRegistrationCallbacks(extension);\n\tObject.defineProperty(extension, extensionSource, { value: recipe });\n\t(runtime as DiscoveryRuntime)[runtimeSources] ??= [];\n\tconst records = (runtime as DiscoveryRuntime)[runtimeSources]!;\n\trecords.push({ extension, snapshot: copyRegistrations(extension), recipe });\n}\n\nexport async function instantiateExtensions(target: LoadExtensionsResult, cwd: string): Promise<LoadExtensionsResult> {\n\tconst runtime = createExtensionRuntime();\n\tconst eventBus = getExtensionRuntimeEventBus(target.runtime);\n\truntimeEventBuses.set(runtime, eventBus);\n\tconst extensions: Extension[] = [];\n\tconst bindings = createInvocationBindings(target.runtime, runtime);\n\tconst records = [...((target.runtime as DiscoveryRuntime)[runtimeSources] ?? [])];\n\ttry {\n\t\tfor (const source of target.extensions) {\n\t\t\tconst index = records.findIndex(\n\t\t\t\t(record) => record.extension.path === source.path && record.extension.resolvedPath === source.resolvedPath,\n\t\t\t);\n\t\t\tconst construction = index < 0 ? undefined : records.splice(index, 1)[0];\n\t\t\tconst recipe = construction?.recipe ?? (source as DiscoveredExtension)[extensionSource];\n\t\t\tif (!recipe) {\n\t\t\t\t// Hand-authored ResourceLoader registrations have no factory recipe.\n\t\t\t\t// Their callbacks remain caller code, but registration containers and\n\t\t\t\t// the runtime bindings still belong to this session generation.\n\t\t\t\tconst extension = copyRegistrations(source);\n\t\t\t\tbindRegistrationCallbacks(extension, bindings);\n\t\t\t\textensions.push(extension);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst extension = await loadOwnedExtensionFromFactory(\n\t\t\t\textensions,\n\t\t\t\trecipe.factory,\n\t\t\t\tcwd,\n\t\t\t\teventBus,\n\t\t\t\truntime,\n\t\t\t\tsource.path,\n\t\t\t\trecipe.workflowResourceProvider,\n\t\t\t\trecipe.resourceLoaderInheritanceSnapshotProvider,\n\t\t\t\tsource,\n\t\t\t);\n\t\t\textensions.push(extension);\n\t\t\tif (construction) {\n\t\t\t\tbindings.extensions.set(construction.extension, extension);\n\t\t\t\tfor (const key of registrationFields)\n\t\t\t\t\tReflect.set(\n\t\t\t\t\t\textension,\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\treconcileRegistration(source[key], construction.snapshot[key], extension[key], bindings),\n\t\t\t\t\t);\n\t\t\t}\n\t\t\tbindRegistrationCallbacks(extension, bindings);\n\t\t\tif ([...source.tools.values()].some(isTrustedMandatoryRuntimeTool))\n\t\t\t\tmarkTrustedMandatoryRuntimeExtension(extension);\n\t\t\textension.hidden = source.hidden;\n\t\t}\n\t} catch (error) {\n\t\tconst failures = await rollbackExtensionFactories(extensions, cwd);\n\t\ttry {\n\t\t\truntime.invalidate();\n\t\t} catch (cleanupError) {\n\t\t\tfailures.push(cleanupError);\n\t\t}\n\t\tthrow factoryRollbackError(error, failures);\n\t}\n\tfor (const name of target.runtime.explicitFlagNames ?? []) {\n\t\truntime.explicitFlagNames?.add(name);\n\t\tif (target.runtime.flagValues.has(name)) runtime.flagValues.set(name, target.runtime.flagValues.get(name)!);\n\t}\n\treturn { extensions, runtime, errors: [...target.errors] };\n}\n\nexport function getExtensionRuntimeEventBus(runtime: ExtensionRuntime): EventBus {\n\tlet eventBus = runtimeEventBuses.get(runtime);\n\tif (!eventBus) {\n\t\teventBus = createEventBus();\n\t\truntimeEventBuses.set(runtime, eventBus);\n\t}\n\treturn eventBus;\n}\n\nconst INTER_EXTENSION_YIELD_THRESHOLD_MS = 16;\n\n/**\n * Create an Extension object with empty collections.\n */\nfunction createExtension(extensionPath: string, resolvedPath: string): Extension {\n\tconst source = getSyntheticPathSource(extensionPath) ?? \"local\";\n\tconst baseDir = isSyntheticPath(extensionPath) ? undefined : path.dirname(resolvedPath);\n\n\treturn {\n\t\tpath: extensionPath,\n\t\tresolvedPath,\n\t\tsourceInfo: createSyntheticSourceInfo(extensionPath, { source, baseDir }),\n\t\thandlers: new Map(),\n\t\ttools: new Map(),\n\t\tmessageRenderers: new Map(),\n\t\tentryRenderers: new Map(),\n\t\tcommands: new Map(),\n\t\tflags: new Map(),\n\t\tshortcuts: new Map(),\n\t};\n}\n\nasync function loadExtension(\n\textensionPath: string,\n\tcwd: string,\n\teventBus: EventBus,\n\truntime: ExtensionRuntime,\n\tworkflowResourceProvider: WorkflowResourceProviderInput = emptyWorkflowResourceProvider,\n\tresourceLoaderInheritanceSnapshotProvider?: ResourceLoaderInheritanceSnapshotProvider,\n\tcacheToken?: ExtensionCacheToken,\n): Promise<{ extension: Extension | null; error: string | null }> {\n\tconst resolvedPath = resolvePath(extensionPath, cwd, { normalizeUnicodeSpaces: true });\n\n\ttry {\n\t\tconst moduleSpan = startTimingSpan(`loadExtensions.${extensionPath}.module`, \"extensions\");\n\t\tconst factory = await loadExtensionModule(resolvedPath, cacheToken);\n\t\tendTimingSpan(moduleSpan);\n\t\tif (!factory) {\n\t\t\treturn {\n\t\t\t\textension: null,\n\t\t\t\terror: `Extension does not export a valid factory function: ${extensionPath}`,\n\t\t\t};\n\t\t}\n\n\t\tconst factorySpan = startTimingSpan(`loadExtensions.${extensionPath}.factory`, \"extensions\");\n\t\tconst extension = await loadExtensionFromFactory(\n\t\t\tfactory,\n\t\t\tcwd,\n\t\t\teventBus,\n\t\t\truntime,\n\t\t\textensionPath,\n\t\t\tworkflowResourceProvider,\n\t\t\tresourceLoaderInheritanceSnapshotProvider,\n\t\t\tcreateExtension(extensionPath, resolvedPath),\n\t\t);\n\t\tendTimingSpan(factorySpan);\n\t\treturn { extension, error: null };\n\t} catch (err) {\n\t\t// Ordinary discovery failures remain diagnostics; failed cleanup must reject creation.\n\t\tif (err instanceof Error && \"code\" in err && err.code === \"ShutdownFailed\") throw err;\n\t\tconst message = err instanceof Error ? err.message : String(err);\n\t\treturn { extension: null, error: `Failed to load extension: ${message}` };\n\t}\n}\n\n/**\n * Create an Extension from an inline factory function.\n */\nexport async function loadExtensionFromFactory(\n\tfactory: ExtensionFactory,\n\tcwd: string,\n\teventBus: EventBus,\n\truntime: ExtensionRuntime,\n\textensionPath = \"<inline>\",\n\tworkflowResourceProvider: WorkflowResourceProviderInput = emptyWorkflowResourceProvider,\n\tresourceLoaderInheritanceSnapshotProvider?: ResourceLoaderInheritanceSnapshotProvider,\n\tsource?: Pick<Extension, \"resolvedPath\" | \"sourceInfo\">,\n): Promise<Extension> {\n\treturn loadOwnedExtensionFromFactory(\n\t\t[],\n\t\tfactory,\n\t\tcwd,\n\t\teventBus,\n\t\truntime,\n\t\textensionPath,\n\t\tworkflowResourceProvider,\n\t\tresourceLoaderInheritanceSnapshotProvider,\n\t\tsource,\n\t);\n}\n\n/** Replay failure closes the whole fresh batch; ordinary discovery failure closes only itself. */\nasync function loadOwnedExtensionFromFactory(\n\trollbackPeers: Extension[],\n\tfactory: ExtensionFactory,\n\tcwd: string,\n\teventBus: EventBus,\n\truntime: ExtensionRuntime,\n\textensionPath: string,\n\tworkflowResourceProvider: WorkflowResourceProviderInput,\n\tresourceLoaderInheritanceSnapshotProvider?: ResourceLoaderInheritanceSnapshotProvider,\n\tsource?: Pick<Extension, \"resolvedPath\" | \"sourceInfo\">,\n): Promise<Extension> {\n\tconst extension = createExtension(extensionPath, source?.resolvedPath ?? extensionPath);\n\tif (source) extension.sourceInfo = source.sourceInfo;\n\tconst resolvedCwd = resolvePath(cwd);\n\tconst transaction = createExtensionAPI(\n\t\textension,\n\t\truntime,\n\t\tresolvedCwd,\n\t\teventBus,\n\t\tworkflowResourceProvider,\n\t\tresourceLoaderInheritanceSnapshotProvider,\n\t);\n\ttry {\n\t\tawait factory(transaction.api);\n\t\ttransaction.commit();\n\t} catch (error) {\n\t\tconst failures = await rollbackExtensionFactories([...rollbackPeers.splice(0), extension], resolvedCwd);\n\t\ttry {\n\t\t\ttransaction.discard();\n\t\t} catch (cleanupError) {\n\t\t\tfailures.push(cleanupError);\n\t\t}\n\t\tthrow factoryRollbackError(error, failures);\n\t}\n\trememberConstruction(extension, runtime, {\n\t\tfactory,\n\t\tworkflowResourceProvider,\n\t\tresourceLoaderInheritanceSnapshotProvider,\n\t});\n\tfactoryAcquisitions.getStore()?.pending?.set(extension, { cwd: resolvedCwd, runtime });\n\treturn extension;\n}\n\n/**\n * Load extensions from paths.\n */\nasync function loadExtensionsInternal(\n\tpaths: string[],\n\tcwd: string,\n\teventBus?: EventBus,\n\tworkflowResourceProvider: WorkflowResourceProviderInput = emptyWorkflowResourceProvider,\n\truntime?: ExtensionRuntime,\n\tresourceLoaderInheritanceSnapshotProvider?: ResourceLoaderInheritanceSnapshotProvider,\n\tuseCache = false,\n): Promise<LoadExtensionsResult> {\n\tconst extensions: Extension[] = [];\n\tconst errors: Array<{ path: string; error: string }> = [];\n\tconst cacheToken = useCache ? useExtensionCacheCwd(cwd) : undefined;\n\tconst resolvedCwd = cacheToken?.cwd ?? resolvePath(cwd);\n\tconst resolvedEventBus = eventBus ?? createEventBus();\n\tconst resolvedRuntime = runtime ?? createExtensionRuntime();\n\truntimeEventBuses.set(resolvedRuntime, resolvedEventBus);\n\n\tlet processedExtensionCount = 0;\n\tlet lastYieldAt = Date.now();\n\tfor (const extPath of paths) {\n\t\t// Unconditional yields cost a full macrotask turn per extension (~100 ms\n\t\t// each while the TUI is live). Only yield when this turn has actually\n\t\t// held the event loop long enough to delay input/render work.\n\t\tif (processedExtensionCount > 0 && Date.now() - lastYieldAt >= INTER_EXTENSION_YIELD_THRESHOLD_MS) {\n\t\t\tawait yieldToEventLoop();\n\t\t\tlastYieldAt = Date.now();\n\t\t}\n\t\tconst extensionSpan = startTimingSpan(`loadExtensions.${extPath}.total`, \"extensions\");\n\t\tconst { extension, error } = await loadExtension(\n\t\t\textPath,\n\t\t\tresolvedCwd,\n\t\t\tresolvedEventBus,\n\t\t\tresolvedRuntime,\n\t\t\tworkflowResourceProvider,\n\t\t\tresourceLoaderInheritanceSnapshotProvider,\n\t\t\tcacheToken,\n\t\t);\n\t\tendTimingSpan(extensionSpan);\n\t\tprocessedExtensionCount += 1;\n\t\tif (error) {\n\t\t\terrors.push({ path: extPath, error });\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (extension) {\n\t\t\textensions.push(extension);\n\t\t}\n\t}\n\n\treturn {\n\t\textensions,\n\t\terrors,\n\t\twarnings: [],\n\t\truntime: resolvedRuntime,\n\t};\n}\n\nexport async function loadExtensions(\n\tpaths: string[],\n\tcwd: string,\n\teventBus?: EventBus,\n\tworkflowResourceProvider: WorkflowResourceProviderInput = emptyWorkflowResourceProvider,\n\truntime?: ExtensionRuntime,\n\tresourceLoaderInheritanceSnapshotProvider?: ResourceLoaderInheritanceSnapshotProvider,\n): Promise<LoadExtensionsResult> {\n\treturn loadExtensionsInternal(\n\t\tpaths,\n\t\tcwd,\n\t\teventBus,\n\t\tworkflowResourceProvider,\n\t\truntime,\n\t\tresourceLoaderInheritanceSnapshotProvider,\n\t);\n}\n\nexport async function loadExtensionsCached(\n\tpaths: string[],\n\tcwd: string,\n\teventBus?: EventBus,\n\tworkflowResourceProvider: WorkflowResourceProviderInput = emptyWorkflowResourceProvider,\n\truntime?: ExtensionRuntime,\n\tresourceLoaderInheritanceSnapshotProvider?: ResourceLoaderInheritanceSnapshotProvider,\n): Promise<LoadExtensionsResult> {\n\treturn loadExtensionsInternal(\n\t\tpaths,\n\t\tcwd,\n\t\teventBus,\n\t\tworkflowResourceProvider,\n\t\truntime,\n\t\tresourceLoaderInheritanceSnapshotProvider,\n\t\ttrue,\n\t);\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader-host-modules.d.ts","sourceRoot":"","sources":["../../../src/core/extensions/loader-host-modules.ts"],"names":[],"mappings":"AAOA,KAAK,iBAAiB,GAAG,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;AAEvD,iBAAS,yBAAyB,CAAC,eAAe,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAS5G;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"loader-host-modules.d.ts","sourceRoot":"","sources":["../../../src/core/extensions/loader-host-modules.ts"],"names":[],"mappings":"AAOA,KAAK,iBAAiB,GAAG,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;AAEvD,iBAAS,yBAAyB,CAAC,eAAe,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAS5G;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAuF1E;AAED,eAAO,MAAM,0BAA0B;;CAAgC,CAAC;AAExE,0FAA0F;AAC1F,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAazE"}
|
|
@@ -23,7 +23,7 @@ export async function loadVirtualModules() {
|
|
|
23
23
|
const atomicNatives = loadOptionalAtomicNatives(requireFromHost, isBunBinary
|
|
24
24
|
? join(getPackageDir(), "node_modules", "@bastani", "atomic-natives", "native", "index.js")
|
|
25
25
|
: "@bastani/atomic-natives");
|
|
26
|
-
const [typebox, typeboxCompile, typeboxValue, piAgentCore, piTui, piTuiLayout, piTuiLayoutNode, piAi, piAiOauth, piAiCloudflareGatewayBinding, piAiProviderEnv, properLockfile, piCodingAgent,] = await Promise.all([
|
|
26
|
+
const [typebox, typeboxCompile, typeboxValue, piAgentCore, piTui, piTuiLayout, piTuiLayoutNode, piAi, piAiOauth, piAiModels, piAiCloudflareGatewayBinding, piAiProviderEnv, piAiOauthPage, properLockfile, piCodingAgent,] = await Promise.all([
|
|
27
27
|
import("typebox"),
|
|
28
28
|
import("typebox/compile"),
|
|
29
29
|
import("typebox/value"),
|
|
@@ -35,8 +35,10 @@ export async function loadVirtualModules() {
|
|
|
35
35
|
// `/compat` (a strict superset). Extensions still use the root specifier.
|
|
36
36
|
import("@bastani/pi-ai/compat"),
|
|
37
37
|
import("@bastani/pi-ai/oauth"),
|
|
38
|
+
import("@bastani/pi-ai/models"),
|
|
38
39
|
import("@bastani/pi-ai/api/cloudflare-gateway-binding"),
|
|
39
40
|
import("@bastani/pi-ai/utils/provider-env"),
|
|
41
|
+
import("@bastani/pi-ai/utils/oauth-page"),
|
|
40
42
|
// Keep proper-lockfile in the compiled host so extensions share its live
|
|
41
43
|
// CommonJS module state instead of evaluating it through jiti.
|
|
42
44
|
import("proper-lockfile"),
|
|
@@ -57,11 +59,14 @@ export async function loadVirtualModules() {
|
|
|
57
59
|
"@bastani/pi-ai": piAi,
|
|
58
60
|
"@bastani/pi-ai/compat": piAi,
|
|
59
61
|
"@bastani/pi-ai/oauth": piAiOauth,
|
|
62
|
+
"@bastani/pi-ai/models": piAiModels,
|
|
60
63
|
"@bastani/pi-ai/api/cloudflare-gateway-binding": piAiCloudflareGatewayBinding,
|
|
61
64
|
"@bastani/pi-ai/utils/provider-env": piAiProviderEnv,
|
|
65
|
+
"@bastani/pi-ai/utils/oauth-page": piAiOauthPage,
|
|
62
66
|
"@earendil-works/pi-ai": piAi,
|
|
63
67
|
"@earendil-works/pi-ai/compat": piAi,
|
|
64
68
|
"@earendil-works/pi-ai/oauth": piAiOauth,
|
|
69
|
+
"@earendil-works/pi-ai/models": piAiModels,
|
|
65
70
|
"@earendil-works/pi-ai/api/cloudflare-gateway-binding": piAiCloudflareGatewayBinding,
|
|
66
71
|
"proper-lockfile": properLockfile,
|
|
67
72
|
...(atomicNatives ? { "@bastani/atomic-natives": atomicNatives } : {}),
|
|
@@ -73,6 +78,7 @@ export async function loadVirtualModules() {
|
|
|
73
78
|
"@mariozechner/pi-ai": piAi,
|
|
74
79
|
"@mariozechner/pi-ai/compat": piAi,
|
|
75
80
|
"@mariozechner/pi-ai/oauth": piAiOauth,
|
|
81
|
+
"@mariozechner/pi-ai/models": piAiModels,
|
|
76
82
|
"@mariozechner/pi-ai/api/cloudflare-gateway-binding": piAiCloudflareGatewayBinding,
|
|
77
83
|
};
|
|
78
84
|
}
|