@ai-agent-forge/agent-forge 0.86.7 → 0.88.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +45 -0
- package/README.md +10 -11
- package/dist/artifacts/artifact-store.d.ts.map +1 -1
- package/dist/artifacts/artifact-store.js +9 -5
- package/dist/artifacts/artifact-store.js.map +1 -1
- package/dist/bundle/.build-manifest.json +430 -413
- package/dist/bundle/chunks/{chunk-A7GUOX2H.js → chunk-6ZKDNZHA.js} +5 -1
- package/dist/bundle/chunks/chunk-HLJEVRWP.js +13 -0
- package/dist/bundle/chunks/chunk-YGHQME4V.js +1456 -0
- package/dist/bundle/chunks/image-resize-worker.js +12 -1
- package/dist/bundle/chunks/{virtual-modules-3IZ4MYSQ.js → virtual-modules-KZ5DRH7Q.js} +1 -1
- package/dist/bundle/cli.js +1 -1
- package/dist/bundle/client.js +1 -1
- package/dist/bundle/index.js +2 -2
- package/dist/bundle/rpc-entry.js +1 -1
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +231 -185
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/auth-check.d.ts.map +1 -1
- package/dist/cli/auth-check.js +17 -4
- package/dist/cli/auth-check.js.map +1 -1
- package/dist/cli/auth-command.d.ts.map +1 -1
- package/dist/cli/auth-command.js +15 -9
- package/dist/cli/auth-command.js.map +1 -1
- package/dist/cli/credential-print.d.ts.map +1 -1
- package/dist/cli/credential-print.js +14 -7
- package/dist/cli/credential-print.js.map +1 -1
- package/dist/cli/experimental/command.d.ts.map +1 -1
- package/dist/cli/experimental/command.js +6 -5
- package/dist/cli/experimental/command.js.map +1 -1
- package/dist/cli/list-models.d.ts.map +1 -1
- package/dist/cli/list-models.js +9 -8
- package/dist/cli/list-models.js.map +1 -1
- package/dist/cli/plugin-manager-controller.d.ts.map +1 -1
- package/dist/cli/plugin-manager-controller.js +2 -1
- package/dist/cli/plugin-manager-controller.js.map +1 -1
- package/dist/cli/serve.d.ts.map +1 -1
- package/dist/cli/serve.js +8 -5
- package/dist/cli/serve.js.map +1 -1
- package/dist/client/remote-session.d.ts.map +1 -1
- package/dist/client/remote-session.js +16 -9
- package/dist/client/remote-session.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +5 -3
- package/dist/config.js.map +1 -1
- package/dist/core/agent-capability-contract.d.ts +0 -7
- package/dist/core/agent-capability-contract.d.ts.map +1 -1
- package/dist/core/agent-capability-contract.js +72 -68
- package/dist/core/agent-capability-contract.js.map +1 -1
- package/dist/core/agent-session-bash.d.ts.map +1 -1
- package/dist/core/agent-session-bash.js +5 -4
- package/dist/core/agent-session-bash.js.map +1 -1
- package/dist/core/agent-session-compaction.d.ts +6 -10
- package/dist/core/agent-session-compaction.d.ts.map +1 -1
- package/dist/core/agent-session-compaction.js +35 -133
- package/dist/core/agent-session-compaction.js.map +1 -1
- package/dist/core/agent-session-context.d.ts.map +1 -1
- package/dist/core/agent-session-context.js +18 -13
- package/dist/core/agent-session-context.js.map +1 -1
- package/dist/core/agent-session-internal.d.ts +0 -6
- package/dist/core/agent-session-internal.d.ts.map +1 -1
- package/dist/core/agent-session-internal.js.map +1 -1
- package/dist/core/agent-session-model.d.ts.map +1 -1
- package/dist/core/agent-session-model.js +2 -1
- package/dist/core/agent-session-model.js.map +1 -1
- package/dist/core/agent-session-retry.d.ts.map +1 -1
- package/dist/core/agent-session-retry.js +3 -3
- package/dist/core/agent-session-retry.js.map +1 -1
- package/dist/core/agent-session-runtime.d.ts.map +1 -1
- package/dist/core/agent-session-runtime.js +7 -6
- package/dist/core/agent-session-runtime.js.map +1 -1
- package/dist/core/agent-session-services.d.ts +1 -1
- package/dist/core/agent-session-services.d.ts.map +1 -1
- package/dist/core/agent-session-services.js.map +1 -1
- package/dist/core/agent-session-tools.d.ts.map +1 -1
- package/dist/core/agent-session-tools.js +3 -2
- package/dist/core/agent-session-tools.js.map +1 -1
- package/dist/core/agent-session.d.ts +40 -22
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +147 -67
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/auth-guidance.d.ts.map +1 -1
- package/dist/core/auth-guidance.js +11 -5
- package/dist/core/auth-guidance.js.map +1 -1
- package/dist/core/auth-storage.d.ts.map +1 -1
- package/dist/core/auth-storage.js +9 -6
- package/dist/core/auth-storage.js.map +1 -1
- package/dist/core/compaction/compaction.d.ts.map +1 -1
- package/dist/core/compaction/compaction.js +2 -1
- package/dist/core/compaction/compaction.js.map +1 -1
- package/dist/core/embedded-sdk.d.ts.map +1 -1
- package/dist/core/embedded-sdk.js +10 -6
- package/dist/core/embedded-sdk.js.map +1 -1
- package/dist/core/export-html/index.d.ts.map +1 -1
- package/dist/core/export-html/index.js +9 -4
- package/dist/core/export-html/index.js.map +1 -1
- package/dist/core/extensions/agent-composition.d.ts.map +1 -1
- package/dist/core/extensions/agent-composition.js +26 -19
- package/dist/core/extensions/agent-composition.js.map +1 -1
- package/dist/core/extensions/bootstrap-agent-loop.d.ts.map +1 -1
- package/dist/core/extensions/bootstrap-agent-loop.js +3 -2
- package/dist/core/extensions/bootstrap-agent-loop.js.map +1 -1
- package/dist/core/extensions/bootstrap-compaction-policy.d.ts.map +1 -1
- package/dist/core/extensions/bootstrap-compaction-policy.js +0 -34
- package/dist/core/extensions/bootstrap-compaction-policy.js.map +1 -1
- package/dist/core/extensions/bootstrap-lifecycle.d.ts.map +1 -1
- package/dist/core/extensions/bootstrap-lifecycle.js +20 -17
- package/dist/core/extensions/bootstrap-lifecycle.js.map +1 -1
- package/dist/core/extensions/bootstrap-overflow-policy.d.ts.map +1 -1
- package/dist/core/extensions/bootstrap-overflow-policy.js +2 -1
- package/dist/core/extensions/bootstrap-overflow-policy.js.map +1 -1
- package/dist/core/extensions/bootstrap-retry-policy.d.ts.map +1 -1
- package/dist/core/extensions/bootstrap-retry-policy.js +4 -3
- package/dist/core/extensions/bootstrap-retry-policy.js.map +1 -1
- package/dist/core/extensions/bootstrap-skills.d.ts.map +1 -1
- package/dist/core/extensions/bootstrap-skills.js +7 -6
- package/dist/core/extensions/bootstrap-skills.js.map +1 -1
- package/dist/core/extensions/bootstrap-tools.d.ts.map +1 -1
- package/dist/core/extensions/bootstrap-tools.js +2 -1
- package/dist/core/extensions/bootstrap-tools.js.map +1 -1
- package/dist/core/extensions/capability-plugin.d.ts.map +1 -1
- package/dist/core/extensions/capability-plugin.js +37 -13
- package/dist/core/extensions/capability-plugin.js.map +1 -1
- package/dist/core/extensions/capability-runtime-events.d.ts.map +1 -1
- package/dist/core/extensions/capability-runtime-events.js +17 -13
- package/dist/core/extensions/capability-runtime-events.js.map +1 -1
- package/dist/core/extensions/capability-runtime-guards.d.ts.map +1 -1
- package/dist/core/extensions/capability-runtime-guards.js +16 -15
- package/dist/core/extensions/capability-runtime-guards.js.map +1 -1
- package/dist/core/extensions/capability-runtime-manifest.d.ts.map +1 -1
- package/dist/core/extensions/capability-runtime-manifest.js +52 -30
- package/dist/core/extensions/capability-runtime-manifest.js.map +1 -1
- package/dist/core/extensions/capability-runtime-validation.d.ts.map +1 -1
- package/dist/core/extensions/capability-runtime-validation.js +66 -65
- package/dist/core/extensions/capability-runtime-validation.js.map +1 -1
- package/dist/core/extensions/capability-runtime.d.ts.map +1 -1
- package/dist/core/extensions/capability-runtime.js +147 -127
- package/dist/core/extensions/capability-runtime.js.map +1 -1
- package/dist/core/extensions/compaction-memory-failure-mode.d.ts.map +1 -1
- package/dist/core/extensions/compaction-memory-failure-mode.js +3 -2
- package/dist/core/extensions/compaction-memory-failure-mode.js.map +1 -1
- package/dist/core/extensions/context-strategy-binding.d.ts.map +1 -1
- package/dist/core/extensions/context-strategy-binding.js +7 -4
- package/dist/core/extensions/context-strategy-binding.js.map +1 -1
- package/dist/core/extensions/lifecycle-catalog.d.ts.map +1 -1
- package/dist/core/extensions/lifecycle-catalog.js +290 -279
- package/dist/core/extensions/lifecycle-catalog.js.map +1 -1
- package/dist/core/extensions/lifecycle-delivery-queue.d.ts.map +1 -1
- package/dist/core/extensions/lifecycle-delivery-queue.js +3 -2
- package/dist/core/extensions/lifecycle-delivery-queue.js.map +1 -1
- package/dist/core/extensions/provider-failover.d.ts +7 -3
- package/dist/core/extensions/provider-failover.d.ts.map +1 -1
- package/dist/core/extensions/provider-failover.js +9 -8
- package/dist/core/extensions/provider-failover.js.map +1 -1
- package/dist/core/facade/coding-agent-facade.d.ts +6 -6
- package/dist/core/facade/coding-agent-facade.d.ts.map +1 -1
- package/dist/core/facade/coding-agent-facade.js +2 -3
- package/dist/core/facade/coding-agent-facade.js.map +1 -1
- package/dist/core/http-dispatcher.d.ts.map +1 -1
- package/dist/core/http-dispatcher.js +2 -1
- package/dist/core/http-dispatcher.js.map +1 -1
- package/dist/core/i18n/index.d.ts +14 -0
- package/dist/core/i18n/index.d.ts.map +1 -0
- package/dist/core/i18n/index.js +67 -0
- package/dist/core/i18n/index.js.map +1 -0
- package/dist/core/i18n/locales/en/example.d.ts +7 -0
- package/dist/core/i18n/locales/en/example.d.ts.map +1 -0
- package/dist/core/i18n/locales/en/example.js +7 -0
- package/dist/core/i18n/locales/en/example.js.map +1 -0
- package/dist/core/i18n/locales/zh-cn/cli.d.ts +8 -0
- package/dist/core/i18n/locales/zh-cn/cli.d.ts.map +1 -0
- package/dist/core/i18n/locales/zh-cn/cli.js +229 -0
- package/dist/core/i18n/locales/zh-cn/cli.js.map +1 -0
- package/dist/core/i18n/locales/zh-cn/common.d.ts +6 -0
- package/dist/core/i18n/locales/zh-cn/common.d.ts.map +1 -0
- package/dist/core/i18n/locales/zh-cn/common.js +6 -0
- package/dist/core/i18n/locales/zh-cn/common.js.map +1 -0
- package/dist/core/i18n/locales/zh-cn/core-contract-core.d.ts +13 -0
- package/dist/core/i18n/locales/zh-cn/core-contract-core.d.ts.map +1 -0
- package/dist/core/i18n/locales/zh-cn/core-contract-core.js +173 -0
- package/dist/core/i18n/locales/zh-cn/core-contract-core.js.map +1 -0
- package/dist/core/i18n/locales/zh-cn/core-contract-extensions.d.ts +12 -0
- package/dist/core/i18n/locales/zh-cn/core-contract-extensions.d.ts.map +1 -0
- package/dist/core/i18n/locales/zh-cn/core-contract-extensions.js +582 -0
- package/dist/core/i18n/locales/zh-cn/core-contract-extensions.js.map +1 -0
- package/dist/core/i18n/locales/zh-cn/core-contract-final.d.ts +9 -0
- package/dist/core/i18n/locales/zh-cn/core-contract-final.d.ts.map +1 -0
- package/dist/core/i18n/locales/zh-cn/core-contract-final.js +55 -0
- package/dist/core/i18n/locales/zh-cn/core-contract-final.js.map +1 -0
- package/dist/core/i18n/locales/zh-cn/core-contract-plugins.d.ts +11 -0
- package/dist/core/i18n/locales/zh-cn/core-contract-plugins.d.ts.map +1 -0
- package/dist/core/i18n/locales/zh-cn/core-contract-plugins.js +455 -0
- package/dist/core/i18n/locales/zh-cn/core-contract-plugins.js.map +1 -0
- package/dist/core/i18n/locales/zh-cn/core-errors.d.ts +9 -0
- package/dist/core/i18n/locales/zh-cn/core-errors.d.ts.map +1 -0
- package/dist/core/i18n/locales/zh-cn/core-errors.js +191 -0
- package/dist/core/i18n/locales/zh-cn/core-errors.js.map +1 -0
- package/dist/core/i18n/locales/zh-cn/example.d.ts +7 -0
- package/dist/core/i18n/locales/zh-cn/example.d.ts.map +1 -0
- package/dist/core/i18n/locales/zh-cn/example.js +10 -0
- package/dist/core/i18n/locales/zh-cn/example.js.map +1 -0
- package/dist/core/i18n/locales/zh-cn/index.d.ts +2 -0
- package/dist/core/i18n/locales/zh-cn/index.d.ts.map +1 -0
- package/dist/core/i18n/locales/zh-cn/index.js +41 -0
- package/dist/core/i18n/locales/zh-cn/index.js.map +1 -0
- package/dist/core/i18n/locales/zh-cn/interactive-mode.d.ts +10 -0
- package/dist/core/i18n/locales/zh-cn/interactive-mode.d.ts.map +1 -0
- package/dist/core/i18n/locales/zh-cn/interactive-mode.js +267 -0
- package/dist/core/i18n/locales/zh-cn/interactive-mode.js.map +1 -0
- package/dist/core/i18n/locales/zh-cn/keybindings.d.ts +11 -0
- package/dist/core/i18n/locales/zh-cn/keybindings.d.ts.map +1 -0
- package/dist/core/i18n/locales/zh-cn/keybindings.js +67 -0
- package/dist/core/i18n/locales/zh-cn/keybindings.js.map +1 -0
- package/dist/core/i18n/locales/zh-cn/slash-commands.d.ts +7 -0
- package/dist/core/i18n/locales/zh-cn/slash-commands.d.ts.map +1 -0
- package/dist/core/i18n/locales/zh-cn/slash-commands.js +39 -0
- package/dist/core/i18n/locales/zh-cn/slash-commands.js.map +1 -0
- package/dist/core/i18n/locales/zh-cn/tui-builtin.d.ts +10 -0
- package/dist/core/i18n/locales/zh-cn/tui-builtin.d.ts.map +1 -0
- package/dist/core/i18n/locales/zh-cn/tui-builtin.js +15 -0
- package/dist/core/i18n/locales/zh-cn/tui-builtin.js.map +1 -0
- package/dist/core/i18n/locales/zh-cn/tui-components-misc.d.ts +13 -0
- package/dist/core/i18n/locales/zh-cn/tui-components-misc.d.ts.map +1 -0
- package/dist/core/i18n/locales/zh-cn/tui-components-misc.js +102 -0
- package/dist/core/i18n/locales/zh-cn/tui-components-misc.js.map +1 -0
- package/dist/core/i18n/locales/zh-cn/tui-components-selectors.d.ts +12 -0
- package/dist/core/i18n/locales/zh-cn/tui-components-selectors.d.ts.map +1 -0
- package/dist/core/i18n/locales/zh-cn/tui-components-selectors.js +286 -0
- package/dist/core/i18n/locales/zh-cn/tui-components-selectors.js.map +1 -0
- package/dist/core/i18n/locales/zh-cn/tui-interactive-misc.d.ts +9 -0
- package/dist/core/i18n/locales/zh-cn/tui-interactive-misc.d.ts.map +1 -0
- package/dist/core/i18n/locales/zh-cn/tui-interactive-misc.js +79 -0
- package/dist/core/i18n/locales/zh-cn/tui-interactive-misc.js.map +1 -0
- package/dist/core/i18n/locales/zh-cn/tui-self-owned.d.ts +8 -0
- package/dist/core/i18n/locales/zh-cn/tui-self-owned.d.ts.map +1 -0
- package/dist/core/i18n/locales/zh-cn/tui-self-owned.js +72 -0
- package/dist/core/i18n/locales/zh-cn/tui-self-owned.js.map +1 -0
- package/dist/core/keybindings.d.ts +15 -0
- package/dist/core/keybindings.d.ts.map +1 -1
- package/dist/core/keybindings.js +18 -0
- package/dist/core/keybindings.js.map +1 -1
- package/dist/core/logger.d.ts.map +1 -1
- package/dist/core/logger.js +5 -1
- package/dist/core/logger.js.map +1 -1
- package/dist/core/model-config.d.ts +0 -1
- package/dist/core/model-config.d.ts.map +1 -1
- package/dist/core/model-config.js +9 -1
- package/dist/core/model-config.js.map +1 -1
- package/dist/core/model-registry.d.ts.map +1 -1
- package/dist/core/model-registry.js +2 -1
- package/dist/core/model-registry.js.map +1 -1
- package/dist/core/model-runtime.d.ts.map +1 -1
- package/dist/core/model-runtime.js +11 -7
- package/dist/core/model-runtime.js.map +1 -1
- package/dist/core/package-install-host.d.ts.map +1 -1
- package/dist/core/package-install-host.js +4 -3
- package/dist/core/package-install-host.js.map +1 -1
- package/dist/core/package-manager.d.ts.map +1 -1
- package/dist/core/package-manager.js +15 -10
- package/dist/core/package-manager.js.map +1 -1
- package/dist/core/package-resource-collection.d.ts.map +1 -1
- package/dist/core/package-resource-collection.js +2 -1
- package/dist/core/package-resource-collection.js.map +1 -1
- package/dist/core/package-source.d.ts.map +1 -1
- package/dist/core/package-source.js +3 -2
- package/dist/core/package-source.js.map +1 -1
- package/dist/core/provider-composer.d.ts +2 -2
- package/dist/core/provider-composer.d.ts.map +1 -1
- package/dist/core/provider-composer.js +29 -21
- package/dist/core/provider-composer.js.map +1 -1
- package/dist/core/remote-catalog-provider.d.ts.map +1 -1
- package/dist/core/remote-catalog-provider.js +6 -2
- package/dist/core/remote-catalog-provider.js.map +1 -1
- package/dist/core/resolve-config-value.d.ts.map +1 -1
- package/dist/core/resolve-config-value.js +15 -5
- package/dist/core/resolve-config-value.js.map +1 -1
- package/dist/core/sdk.d.ts +27 -5
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +80 -55
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/session-cwd.d.ts.map +1 -1
- package/dist/core/session-cwd.js +5 -2
- package/dist/core/session-cwd.js.map +1 -1
- package/dist/core/session-export.d.ts.map +1 -1
- package/dist/core/session-export.js +2 -1
- package/dist/core/session-export.js.map +1 -1
- package/dist/core/session-manager.d.ts.map +1 -1
- package/dist/core/session-manager.js +39 -29
- package/dist/core/session-manager.js.map +1 -1
- package/dist/core/session-storage.d.ts.map +1 -1
- package/dist/core/session-storage.js +3 -3
- package/dist/core/session-storage.js.map +1 -1
- package/dist/core/settings-manager.d.ts +20 -20
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +47 -59
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +53 -32
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/system-prompt.d.ts.map +1 -1
- package/dist/core/system-prompt.js +25 -2
- package/dist/core/system-prompt.js.map +1 -1
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bash.js +11 -7
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/edit-diff.d.ts.map +1 -1
- package/dist/core/tools/edit-diff.js +9 -4
- package/dist/core/tools/edit-diff.js.map +1 -1
- package/dist/core/tools/edit.d.ts.map +1 -1
- package/dist/core/tools/edit.js +4 -3
- package/dist/core/tools/edit.js.map +1 -1
- package/dist/core/tools/index.d.ts.map +1 -1
- package/dist/core/tools/index.js +3 -2
- package/dist/core/tools/index.js.map +1 -1
- package/dist/core/tools/output-accumulator.d.ts.map +1 -1
- package/dist/core/tools/output-accumulator.js +2 -1
- package/dist/core/tools/output-accumulator.js.map +1 -1
- package/dist/core/tools/read.d.ts.map +1 -1
- package/dist/core/tools/read.js +6 -2
- package/dist/core/tools/read.js.map +1 -1
- package/dist/core/tools/write.d.ts.map +1 -1
- package/dist/core/tools/write.js +2 -1
- package/dist/core/tools/write.js.map +1 -1
- package/dist/durable/durable-service.d.ts.map +1 -1
- package/dist/durable/durable-service.js +25 -18
- package/dist/durable/durable-service.js.map +1 -1
- package/dist/host/checkpoint-commit.d.ts.map +1 -1
- package/dist/host/checkpoint-commit.js +2 -1
- package/dist/host/checkpoint-commit.js.map +1 -1
- package/dist/host/manual-compaction.d.ts.map +1 -1
- package/dist/host/manual-compaction.js +2 -1
- package/dist/host/manual-compaction.js.map +1 -1
- package/dist/host/output-projection.d.ts +0 -13
- package/dist/host/output-projection.d.ts.map +1 -1
- package/dist/host/output-projection.js +16 -2
- package/dist/host/output-projection.js.map +1 -1
- package/dist/host/summary-retry.d.ts.map +1 -1
- package/dist/host/summary-retry.js +3 -2
- package/dist/host/summary-retry.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +97 -60
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive/components/agents-view.d.ts.map +1 -1
- package/dist/modes/interactive/components/agents-view.js +18 -15
- package/dist/modes/interactive/components/agents-view.js.map +1 -1
- package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/assistant-message.js +6 -5
- package/dist/modes/interactive/components/assistant-message.js.map +1 -1
- package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/bash-execution.js +12 -7
- package/dist/modes/interactive/components/bash-execution.js.map +1 -1
- package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -1
- package/dist/modes/interactive/components/bordered-loader.js +2 -1
- package/dist/modes/interactive/components/bordered-loader.js.map +1 -1
- package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/branch-summary-message.js +6 -5
- package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
- package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/compaction-summary-message.js +9 -5
- package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -1
- package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/config-selector.js +18 -15
- package/dist/modes/interactive/components/config-selector.js.map +1 -1
- package/dist/modes/interactive/components/custom-entry.d.ts.map +1 -1
- package/dist/modes/interactive/components/custom-entry.js +2 -1
- package/dist/modes/interactive/components/custom-entry.js.map +1 -1
- package/dist/modes/interactive/components/dialog-editor.d.ts.map +1 -1
- package/dist/modes/interactive/components/dialog-editor.js +5 -4
- package/dist/modes/interactive/components/dialog-editor.js.map +1 -1
- package/dist/modes/interactive/components/dialog-input.d.ts.map +1 -1
- package/dist/modes/interactive/components/dialog-input.js +2 -1
- package/dist/modes/interactive/components/dialog-input.js.map +1 -1
- package/dist/modes/interactive/components/dialog-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/dialog-selector.js +4 -3
- package/dist/modes/interactive/components/dialog-selector.js.map +1 -1
- package/dist/modes/interactive/components/first-time-setup.d.ts.map +1 -1
- package/dist/modes/interactive/components/first-time-setup.js +11 -10
- package/dist/modes/interactive/components/first-time-setup.js.map +1 -1
- package/dist/modes/interactive/components/footer.d.ts +0 -2
- package/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/dist/modes/interactive/components/footer.js +8 -10
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/components/index.d.ts +1 -0
- package/dist/modes/interactive/components/index.d.ts.map +1 -1
- package/dist/modes/interactive/components/index.js +1 -0
- package/dist/modes/interactive/components/index.js.map +1 -1
- package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -1
- package/dist/modes/interactive/components/keybinding-hints.js +3 -2
- package/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
- package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
- package/dist/modes/interactive/components/login-dialog.js +12 -11
- package/dist/modes/interactive/components/login-dialog.js.map +1 -1
- package/dist/modes/interactive/components/mermaid.d.ts.map +1 -1
- package/dist/modes/interactive/components/mermaid.js +6 -2
- package/dist/modes/interactive/components/mermaid.js.map +1 -1
- package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/model-selector.js +28 -16
- package/dist/modes/interactive/components/model-selector.js.map +1 -1
- package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/oauth-selector.js +10 -9
- package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
- package/dist/modes/interactive/components/plugin-manager-entry.d.ts.map +1 -1
- package/dist/modes/interactive/components/plugin-manager-entry.js +22 -13
- package/dist/modes/interactive/components/plugin-manager-entry.js.map +1 -1
- package/dist/modes/interactive/components/plugin-selection-entry.d.ts.map +1 -1
- package/dist/modes/interactive/components/plugin-selection-entry.js +27 -12
- package/dist/modes/interactive/components/plugin-selection-entry.js.map +1 -1
- package/dist/modes/interactive/components/queue-manager-selector.d.ts +60 -0
- package/dist/modes/interactive/components/queue-manager-selector.d.ts.map +1 -0
- package/dist/modes/interactive/components/queue-manager-selector.js +166 -0
- package/dist/modes/interactive/components/queue-manager-selector.js.map +1 -0
- package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/scoped-models-selector.js +16 -14
- package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
- package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/session-selector.js +43 -31
- package/dist/modes/interactive/components/session-selector.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector.d.ts +4 -6
- package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-selector.js +115 -120
- package/dist/modes/interactive/components/settings-selector.js.map +1 -1
- package/dist/modes/interactive/components/settings-submenu.d.ts.map +1 -1
- package/dist/modes/interactive/components/settings-submenu.js +5 -4
- package/dist/modes/interactive/components/settings-submenu.js.map +1 -1
- package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/show-images-selector.js +3 -2
- package/dist/modes/interactive/components/show-images-selector.js.map +1 -1
- package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/skill-invocation-message.js +4 -3
- package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
- package/dist/modes/interactive/components/status-indicator.d.ts.map +1 -1
- package/dist/modes/interactive/components/status-indicator.js +14 -5
- package/dist/modes/interactive/components/status-indicator.js.map +1 -1
- package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/theme-selector.js +2 -1
- package/dist/modes/interactive/components/theme-selector.js.map +1 -1
- package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/thinking-selector.js +11 -4
- package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
- package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
- package/dist/modes/interactive/components/tool-execution.js +8 -3
- package/dist/modes/interactive/components/tool-execution.js.map +1 -1
- package/dist/modes/interactive/components/tree-list.d.ts.map +1 -1
- package/dist/modes/interactive/components/tree-list.js +7 -6
- package/dist/modes/interactive/components/tree-list.js.map +1 -1
- package/dist/modes/interactive/components/tree-render.d.ts.map +1 -1
- package/dist/modes/interactive/components/tree-render.js +28 -23
- package/dist/modes/interactive/components/tree-render.js.map +1 -1
- package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/tree-selector.js +9 -7
- package/dist/modes/interactive/components/tree-selector.js.map +1 -1
- package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/user-message-selector.js +5 -4
- package/dist/modes/interactive/components/user-message-selector.js.map +1 -1
- package/dist/modes/interactive/components/workflow-view.d.ts.map +1 -1
- package/dist/modes/interactive/components/workflow-view.js +36 -21
- package/dist/modes/interactive/components/workflow-view.js.map +1 -1
- package/dist/modes/interactive/external-editor.d.ts.map +1 -1
- package/dist/modes/interactive/external-editor.js +2 -1
- package/dist/modes/interactive/external-editor.js.map +1 -1
- package/dist/modes/interactive/interactive-auth.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-auth.js +71 -40
- package/dist/modes/interactive/interactive-auth.js.map +1 -1
- package/dist/modes/interactive/interactive-commands.d.ts +1 -0
- package/dist/modes/interactive/interactive-commands.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-commands.js +3 -0
- package/dist/modes/interactive/interactive-commands.js.map +1 -1
- package/dist/modes/interactive/interactive-dialog-ui.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-dialog-ui.js +5 -5
- package/dist/modes/interactive/interactive-dialog-ui.js.map +1 -1
- package/dist/modes/interactive/interactive-format.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-format.js +34 -18
- package/dist/modes/interactive/interactive-format.js.map +1 -1
- package/dist/modes/interactive/interactive-helpers.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-helpers.js +7 -2
- package/dist/modes/interactive/interactive-helpers.js.map +1 -1
- package/dist/modes/interactive/interactive-mode.d.ts +4 -2
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +350 -279
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/interactive-selectors.d.ts +9 -0
- package/dist/modes/interactive/interactive-selectors.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-selectors.js +79 -25
- package/dist/modes/interactive/interactive-selectors.js.map +1 -1
- package/dist/modes/interactive/theme/theme-controller.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme-controller.js +5 -1
- package/dist/modes/interactive/theme/theme-controller.js.map +1 -1
- package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
- package/dist/modes/interactive/theme/theme.js +26 -23
- package/dist/modes/interactive/theme/theme.js.map +1 -1
- package/dist/modes/json-event.d.ts.map +1 -1
- package/dist/modes/json-event.js +3 -2
- package/dist/modes/json-event.js.map +1 -1
- package/dist/modes/print-mode.d.ts.map +1 -1
- package/dist/modes/print-mode.js +3 -2
- package/dist/modes/print-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-client.d.ts +0 -8
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client.js +3 -14
- package/dist/modes/rpc/rpc-client.js.map +1 -1
- package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-mode.js +0 -9
- package/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/dist/modes/rpc/rpc-types.d.ts +0 -19
- package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-types.js.map +1 -1
- package/dist/package-manager-cli.d.ts.map +1 -1
- package/dist/package-manager-cli.js +28 -13
- package/dist/package-manager-cli.js.map +1 -1
- package/dist/plugins/ecosystem/catalog.d.ts.map +1 -1
- package/dist/plugins/ecosystem/catalog.js +3 -2
- package/dist/plugins/ecosystem/catalog.js.map +1 -1
- package/dist/plugins/ecosystem/cli.d.ts.map +1 -1
- package/dist/plugins/ecosystem/cli.js +2 -1
- package/dist/plugins/ecosystem/cli.js.map +1 -1
- package/dist/plugins/ecosystem/default-plugin-market.d.ts.map +1 -1
- package/dist/plugins/ecosystem/default-plugin-market.js +3 -2
- package/dist/plugins/ecosystem/default-plugin-market.js.map +1 -1
- package/dist/plugins/ecosystem/distribution.d.ts.map +1 -1
- package/dist/plugins/ecosystem/distribution.js +2 -1
- package/dist/plugins/ecosystem/distribution.js.map +1 -1
- package/dist/plugins/ecosystem/installer.d.ts.map +1 -1
- package/dist/plugins/ecosystem/installer.js +3 -2
- package/dist/plugins/ecosystem/installer.js.map +1 -1
- package/dist/plugins/ecosystem/node-disk-registry-source.d.ts.map +1 -1
- package/dist/plugins/ecosystem/node-disk-registry-source.js +20 -17
- package/dist/plugins/ecosystem/node-disk-registry-source.js.map +1 -1
- package/dist/plugins/ecosystem/node-distribution-host.d.ts.map +1 -1
- package/dist/plugins/ecosystem/node-distribution-host.js +35 -34
- package/dist/plugins/ecosystem/node-distribution-host.js.map +1 -1
- package/dist/plugins/ecosystem/node-npm-registry-source.d.ts.map +1 -1
- package/dist/plugins/ecosystem/node-npm-registry-source.js +35 -34
- package/dist/plugins/ecosystem/node-npm-registry-source.js.map +1 -1
- package/dist/plugins/ecosystem/node-package-install-host.d.ts.map +1 -1
- package/dist/plugins/ecosystem/node-package-install-host.js +9 -8
- package/dist/plugins/ecosystem/node-package-install-host.js.map +1 -1
- package/dist/plugins/ecosystem/node-package-install-persistence.d.ts.map +1 -1
- package/dist/plugins/ecosystem/node-package-install-persistence.js +4 -3
- package/dist/plugins/ecosystem/node-package-install-persistence.js.map +1 -1
- package/dist/plugins/ecosystem/node-plugin-bootstrap.d.ts +9 -2
- package/dist/plugins/ecosystem/node-plugin-bootstrap.d.ts.map +1 -1
- package/dist/plugins/ecosystem/node-plugin-bootstrap.js +44 -5
- package/dist/plugins/ecosystem/node-plugin-bootstrap.js.map +1 -1
- package/dist/plugins/ecosystem/node-plugin-trust-root.d.ts.map +1 -1
- package/dist/plugins/ecosystem/node-plugin-trust-root.js +10 -9
- package/dist/plugins/ecosystem/node-plugin-trust-root.js.map +1 -1
- package/dist/plugins/ecosystem/node-registry-source.d.ts.map +1 -1
- package/dist/plugins/ecosystem/node-registry-source.js +31 -30
- package/dist/plugins/ecosystem/node-registry-source.js.map +1 -1
- package/dist/plugins/ecosystem/node-release-package-source.d.ts.map +1 -1
- package/dist/plugins/ecosystem/node-release-package-source.js +30 -29
- package/dist/plugins/ecosystem/node-release-package-source.js.map +1 -1
- package/dist/plugins/ecosystem/node-tar-writer.d.ts.map +1 -1
- package/dist/plugins/ecosystem/node-tar-writer.js +11 -10
- package/dist/plugins/ecosystem/node-tar-writer.js.map +1 -1
- package/dist/plugins/ecosystem/node-url-package-source.d.ts.map +1 -1
- package/dist/plugins/ecosystem/node-url-package-source.js +21 -20
- package/dist/plugins/ecosystem/node-url-package-source.js.map +1 -1
- package/dist/plugins/ecosystem/plugin-acquisition.d.ts.map +1 -1
- package/dist/plugins/ecosystem/plugin-acquisition.js +3 -2
- package/dist/plugins/ecosystem/plugin-acquisition.js.map +1 -1
- package/dist/plugins/ecosystem/plugin-bootstrap.d.ts +9 -1
- package/dist/plugins/ecosystem/plugin-bootstrap.d.ts.map +1 -1
- package/dist/plugins/ecosystem/plugin-bootstrap.js +5 -0
- package/dist/plugins/ecosystem/plugin-bootstrap.js.map +1 -1
- package/dist/plugins/ecosystem/registry-cli-adapter.d.ts.map +1 -1
- package/dist/plugins/ecosystem/registry-cli-adapter.js +2 -1
- package/dist/plugins/ecosystem/registry-cli-adapter.js.map +1 -1
- package/dist/plugins/ecosystem/registry.d.ts.map +1 -1
- package/dist/plugins/ecosystem/registry.js +35 -32
- package/dist/plugins/ecosystem/registry.js.map +1 -1
- package/dist/plugins/ecosystem/resolver.d.ts.map +1 -1
- package/dist/plugins/ecosystem/resolver.js +3 -2
- package/dist/plugins/ecosystem/resolver.js.map +1 -1
- package/dist/plugins/ecosystem/selection-store.d.ts.map +1 -1
- package/dist/plugins/ecosystem/selection-store.js +11 -10
- package/dist/plugins/ecosystem/selection-store.js.map +1 -1
- package/dist/plugins/ecosystem/selection.d.ts.map +1 -1
- package/dist/plugins/ecosystem/selection.js +8 -7
- package/dist/plugins/ecosystem/selection.js.map +1 -1
- package/dist/plugins/ecosystem/state.d.ts.map +1 -1
- package/dist/plugins/ecosystem/state.js +24 -23
- package/dist/plugins/ecosystem/state.js.map +1 -1
- package/dist/plugins/ecosystem/updates.d.ts.map +1 -1
- package/dist/plugins/ecosystem/updates.js +5 -4
- package/dist/plugins/ecosystem/updates.js.map +1 -1
- package/dist/plugins/mcp-http.d.ts +0 -17
- package/dist/plugins/mcp-http.d.ts.map +1 -1
- package/dist/plugins/mcp-http.js +30 -7
- package/dist/plugins/mcp-http.js.map +1 -1
- package/dist/plugins/plugin-supervisor.d.ts.map +1 -1
- package/dist/plugins/plugin-supervisor.js +19 -1
- package/dist/plugins/plugin-supervisor.js.map +1 -1
- package/dist/profile/first-roles.d.ts.map +1 -1
- package/dist/profile/first-roles.js +10 -1
- package/dist/profile/first-roles.js.map +1 -1
- package/dist/profile/goal-plugin.d.ts.map +1 -1
- package/dist/profile/goal-plugin.js +24 -5
- package/dist/profile/goal-plugin.js.map +1 -1
- package/dist/profile/identity.d.ts.map +1 -1
- package/dist/profile/identity.js +7 -6
- package/dist/profile/identity.js.map +1 -1
- package/dist/profile/lock.d.ts.map +1 -1
- package/dist/profile/lock.js +15 -1
- package/dist/profile/lock.js.map +1 -1
- package/dist/profile/plan-plugin.d.ts.map +1 -1
- package/dist/profile/plan-plugin.js +26 -13
- package/dist/profile/plan-plugin.js.map +1 -1
- package/dist/profile/plugin-profiles.d.ts.map +1 -1
- package/dist/profile/plugin-profiles.js +2 -1
- package/dist/profile/plugin-profiles.js.map +1 -1
- package/dist/profile/policy-manifest.d.ts.map +1 -1
- package/dist/profile/policy-manifest.js +5 -4
- package/dist/profile/policy-manifest.js.map +1 -1
- package/dist/profile/profile-registry.d.ts +0 -12
- package/dist/profile/profile-registry.d.ts.map +1 -1
- package/dist/profile/profile-registry.js +14 -1
- package/dist/profile/profile-registry.js.map +1 -1
- package/dist/profile/role-catalog.d.ts +0 -1
- package/dist/profile/role-catalog.d.ts.map +1 -1
- package/dist/profile/role-catalog.js +17 -15
- package/dist/profile/role-catalog.js.map +1 -1
- package/dist/profile/role-orchestrator.d.ts.map +1 -1
- package/dist/profile/role-orchestrator.js +8 -7
- package/dist/profile/role-orchestrator.js.map +1 -1
- package/dist/profile/role-runner.d.ts.map +1 -1
- package/dist/profile/role-runner.js +3 -2
- package/dist/profile/role-runner.js.map +1 -1
- package/dist/profile/root-facade.d.ts.map +1 -1
- package/dist/profile/root-facade.js +2 -1
- package/dist/profile/root-facade.js.map +1 -1
- package/dist/profile/skill-discovery-wiring.d.ts.map +1 -1
- package/dist/profile/skill-discovery-wiring.js +7 -2
- package/dist/profile/skill-discovery-wiring.js.map +1 -1
- package/dist/profile/state-store.d.ts.map +1 -1
- package/dist/profile/state-store.js +13 -9
- package/dist/profile/state-store.js.map +1 -1
- package/dist/profile/todo-plugin.d.ts.map +1 -1
- package/dist/profile/todo-plugin.js +9 -4
- package/dist/profile/todo-plugin.js.map +1 -1
- package/dist/profiles/builtin-suites.d.ts +13 -6
- package/dist/profiles/builtin-suites.d.ts.map +1 -1
- package/dist/profiles/builtin-suites.js +15 -6
- package/dist/profiles/builtin-suites.js.map +1 -1
- package/dist/profiles/suite-loader.d.ts +25 -1
- package/dist/profiles/suite-loader.d.ts.map +1 -1
- package/dist/profiles/suite-loader.js +34 -9
- package/dist/profiles/suite-loader.js.map +1 -1
- package/dist/remote/server-entry.d.ts.map +1 -1
- package/dist/remote/server-entry.js +3 -2
- package/dist/remote/server-entry.js.map +1 -1
- package/dist/remote/session-source.d.ts.map +1 -1
- package/dist/remote/session-source.js +8 -4
- package/dist/remote/session-source.js.map +1 -1
- package/dist/share/session-share.d.ts.map +1 -1
- package/dist/share/session-share.js +14 -2
- package/dist/share/session-share.js.map +1 -1
- package/dist/testing/plugin-testkit.d.ts.map +1 -1
- package/dist/testing/plugin-testkit.js +4 -3
- package/dist/testing/plugin-testkit.js.map +1 -1
- package/dist/testing/runtime-delivery-queue.d.ts.map +1 -1
- package/dist/testing/runtime-delivery-queue.js +2 -1
- package/dist/testing/runtime-delivery-queue.js.map +1 -1
- package/dist/testing/session-plugin-testkit.d.ts.map +1 -1
- package/dist/testing/session-plugin-testkit.js +10 -7
- package/dist/testing/session-plugin-testkit.js.map +1 -1
- package/dist/utils/ansi.d.ts.map +1 -1
- package/dist/utils/ansi.js +2 -1
- package/dist/utils/ansi.js.map +1 -1
- package/dist/utils/clipboard.d.ts.map +1 -1
- package/dist/utils/clipboard.js +7 -6
- package/dist/utils/clipboard.js.map +1 -1
- package/dist/utils/image-resize-worker.d.ts.map +1 -1
- package/dist/utils/image-resize-worker.js +3 -2
- package/dist/utils/image-resize-worker.js.map +1 -1
- package/dist/utils/photon.d.ts +2 -2
- package/dist/utils/photon.d.ts.map +1 -1
- package/dist/utils/photon.js +2 -2
- package/dist/utils/photon.js.map +1 -1
- package/dist/utils/shell.d.ts.map +1 -1
- package/dist/utils/shell.js +9 -8
- package/dist/utils/shell.js.map +1 -1
- package/dist/utils/tools-manager.d.ts.map +1 -1
- package/dist/utils/tools-manager.js +23 -13
- package/dist/utils/tools-manager.js.map +1 -1
- package/dist/utils/version-check.d.ts.map +1 -1
- package/dist/utils/version-check.js +5 -1
- package/dist/utils/version-check.js.map +1 -1
- package/docs/compaction.md +1 -3
- package/docs/docs.json +4 -0
- package/docs/index.md +1 -0
- package/docs/keybindings.md +3 -0
- package/docs/mcp.md +103 -0
- package/docs/models.md +14 -22
- package/docs/providers.md +0 -1
- package/docs/quickstart.md +1 -1
- package/docs/rpc.md +1 -26
- package/docs/sdk.md +4 -6
- package/docs/settings.md +10 -12
- package/docs/skills.md +1 -9
- package/docs/terminal-setup.md +2 -3
- package/docs/usage.md +7 -6
- package/examples/extensions/with-deps/package-lock.json +2 -2
- package/examples/extensions/with-deps/package.json +1 -1
- package/examples/extensions/with-deps/plugin.json +1 -1
- package/examples/sdk/10-settings.ts +2 -4
- package/examples/sdk/12-full-control.ts +1 -2
- package/package.json +1 -3
- package/dist/bundle/chunks/chunk-EALJ5DDX.js +0 -1452
- package/dist/core/extensions/microcompact.d.ts +0 -80
- package/dist/core/extensions/microcompact.d.ts.map +0 -1
- package/dist/core/extensions/microcompact.js +0 -134
- package/dist/core/extensions/microcompact.js.map +0 -1
- package/dist/server/create-harness.d.ts +0 -26
- package/dist/server/create-harness.d.ts.map +0 -1
- package/dist/server/create-harness.js +0 -106
- package/dist/server/create-harness.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package-manager.js","sourceRoot":"","sources":["../../src/core/package-manager.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ChildProcess, ChildProcessByStdio } from \"node:child_process\";\nimport { existsSync, mkdirSync, rmSync, statSync, writeFileSync } from \"node:fs\";\nimport { dirname, join } from \"node:path\";\nimport type { Readable } from \"node:stream\";\nimport { gt, maxSatisfying, rcompare } from \"semver\";\nimport { CONFIG_DIR_NAME } from \"../config.ts\";\nimport { spawnProcess, spawnProcessSync } from \"../utils/child-process.ts\";\nimport type { GitSource } from \"../utils/git.ts\";\nimport { resolvePath as resolvePathWithBase } from \"../utils/paths.ts\";\nimport { isStdoutTakenOver } from \"./output-guard.ts\";\nimport {\n\tensureGitIgnore,\n\tensureNpmProject,\n\tgetGitDependencyInstallArgs,\n\tgetGitInstallPath,\n\tgetGitInstallRoot,\n\tgetGitUpdateMarkerPath,\n\tgetInstalledNpmVersion,\n\tgetManagedNpmInstallPath,\n\tgetNpmCommand,\n\tgetNpmInstallArgs,\n\tgetNpmInstallRoot,\n\tgetPackageManagerName,\n\thasMissingGitDependencies,\n\tinstalledNpmMatchesConfiguredVersion,\n\tpruneEmptyGitParents,\n} from \"./package-install-host.ts\";\nimport { getEnv, isOfflineModeEnabled, runWithConcurrency } from \"./package-process-runner.ts\";\nimport {\n\taddAutoDiscoveredResources,\n\tcollectPackageResources,\n\tcreateAccumulator,\n\tgetTargetMap,\n\tresolveLocalEntries,\n\ttoResolvedPaths,\n} from \"./package-resource-collection.ts\";\nimport { RESOURCE_TYPES } from \"./package-resource-discovery.ts\";\nimport {\n\tbuildNoMatchingPackageMessage,\n\ttype ConfiguredPackage,\n\ttype ConfiguredUpdateSource,\n\tdedupePackages,\n\ttype GitUpdateTarget,\n\tgetBaseDirForScope,\n\tgetPackageIdentity,\n\tgetPackageSourceString,\n\tgetSourceMatchKeyForInput,\n\tgetSourceMatchKeyForSettings,\n\ttype InstalledSourceScope,\n\ttype MissingSourceAction,\n\ttype NpmSource,\n\ttype NpmUpdateTarget,\n\tnormalizePackageSourceForSettings,\n\ttype PackageManager,\n\ttype PackageManagerContext,\n\ttype PackageManagerOptions,\n\ttype PackageUpdate,\n\ttype ParsedSource,\n\ttype PathMetadata,\n\ttype ProgressCallback,\n\ttype ProgressEvent,\n\tparseSource,\n\ttype ResolvedPaths,\n\ttype ResourceAccumulator,\n\tresolvePath,\n\tresolvePathFromBase,\n\ttype SourceScope,\n} from \"./package-source.ts\";\nimport type { PackageSource, SettingsManager } from \"./settings-manager.ts\";\n\nexport { getPackageTempFolder } from \"./package-install-host.ts\";\nexport type {\n\tConfiguredPackage,\n\tMissingSourceAction,\n\tPackageManager,\n\tPackageUpdate,\n\tPathMetadata,\n\tProgressCallback,\n\tProgressEvent,\n\tResolvedPaths,\n\tResolvedResource,\n} from \"./package-source.ts\";\n\nconst NETWORK_TIMEOUT_MS = 10000;\nconst UPDATE_CHECK_CONCURRENCY = 4;\nconst GIT_UPDATE_CONCURRENCY = 4;\n\nexport class DefaultPackageManager implements PackageManager {\n\tprivate cwd: string;\n\tprivate agentDir: string;\n\tprivate settingsManager: SettingsManager;\n\tprivate globalNpmRoot: string | undefined;\n\tprivate globalNpmRootCommandKey: string | undefined;\n\tprivate progressCallback: ProgressCallback | undefined;\n\n\tconstructor(options: PackageManagerOptions) {\n\t\tthis.cwd = resolvePathWithBase(options.cwd);\n\t\tthis.agentDir = resolvePathWithBase(options.agentDir);\n\t\tthis.settingsManager = options.settingsManager;\n\t}\n\n\tprivate get context(): PackageManagerContext {\n\t\treturn { cwd: this.cwd, agentDir: this.agentDir, settingsManager: this.settingsManager };\n\t}\n\n\tsetProgressCallback(callback: ProgressCallback | undefined): void {\n\t\tthis.progressCallback = callback;\n\t}\n\n\taddSourceToSettings(source: string, options?: { local?: boolean }): boolean {\n\t\tconst scope: SourceScope = options?.local ? \"project\" : \"user\";\n\t\tconst currentSettings =\n\t\t\tscope === \"project\" ? this.settingsManager.getProjectSettings() : this.settingsManager.getGlobalSettings();\n\t\tconst currentPackages = currentSettings.packages ?? [];\n\t\tconst normalizedSource = this.normalizePackageSourceForSettings(source, scope);\n\t\tconst matchIndex = currentPackages.findIndex((existing) => this.packageSourcesMatch(existing, source, scope));\n\t\tif (matchIndex !== -1) {\n\t\t\tconst existing = currentPackages[matchIndex];\n\t\t\tif (this.getPackageSourceString(existing) === normalizedSource) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tconst nextPackages = [...currentPackages];\n\t\t\tnextPackages[matchIndex] =\n\t\t\t\ttypeof existing === \"string\" ? normalizedSource : { ...existing, source: normalizedSource };\n\t\t\tif (scope === \"project\") {\n\t\t\t\tthis.settingsManager.setProjectPackages(nextPackages);\n\t\t\t} else {\n\t\t\t\tthis.settingsManager.setPackages(nextPackages);\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t\tconst nextPackages = [...currentPackages, normalizedSource];\n\t\tif (scope === \"project\") {\n\t\t\tthis.settingsManager.setProjectPackages(nextPackages);\n\t\t} else {\n\t\t\tthis.settingsManager.setPackages(nextPackages);\n\t\t}\n\t\treturn true;\n\t}\n\n\tremoveSourceFromSettings(source: string, options?: { local?: boolean }): boolean {\n\t\tconst scope: SourceScope = options?.local ? \"project\" : \"user\";\n\t\tconst currentSettings =\n\t\t\tscope === \"project\" ? this.settingsManager.getProjectSettings() : this.settingsManager.getGlobalSettings();\n\t\tconst currentPackages = currentSettings.packages ?? [];\n\t\tconst nextPackages = currentPackages.filter((existing) => !this.packageSourcesMatch(existing, source, scope));\n\t\tconst changed = nextPackages.length !== currentPackages.length;\n\t\tif (!changed) {\n\t\t\treturn false;\n\t\t}\n\t\tif (scope === \"project\") {\n\t\t\tthis.settingsManager.setProjectPackages(nextPackages);\n\t\t} else {\n\t\t\tthis.settingsManager.setPackages(nextPackages);\n\t\t}\n\t\treturn true;\n\t}\n\n\tgetInstalledPath(source: string, scope: \"user\" | \"project\"): string | undefined {\n\t\tconst parsed = this.parseSource(source);\n\t\tif (parsed.type === \"npm\") {\n\t\t\tconst path = this.getNpmInstallPath(parsed, scope);\n\t\t\treturn existsSync(path) ? path : undefined;\n\t\t}\n\t\tif (parsed.type === \"git\") {\n\t\t\tconst path = this.getGitInstallPath(parsed, scope);\n\t\t\treturn existsSync(path) ? path : undefined;\n\t\t}\n\t\tif (parsed.type === \"local\") {\n\t\t\tconst baseDir = this.getBaseDirForScope(scope);\n\t\t\tconst path = this.resolvePathFromBase(parsed.path, baseDir);\n\t\t\treturn existsSync(path) ? path : undefined;\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tprivate emitProgress(event: ProgressEvent): void {\n\t\tthis.progressCallback?.(event);\n\t}\n\n\tprivate async withProgress(\n\t\taction: ProgressEvent[\"action\"],\n\t\tsource: string,\n\t\tmessage: string,\n\t\toperation: () => Promise<void>,\n\t): Promise<void> {\n\t\tthis.emitProgress({ type: \"start\", action, source, message });\n\t\ttry {\n\t\t\tawait operation();\n\t\t\tthis.emitProgress({ type: \"complete\", action, source });\n\t\t} catch (error) {\n\t\t\tconst errorMessage = error instanceof Error ? error.message : String(error);\n\t\t\tthis.emitProgress({ type: \"error\", action, source, message: errorMessage });\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tasync resolve(onMissing?: (source: string) => Promise<MissingSourceAction>): Promise<ResolvedPaths> {\n\t\tconst accumulator = createAccumulator();\n\t\tconst globalSettings = this.settingsManager.getGlobalSettings();\n\t\tconst projectSettings = this.settingsManager.getProjectSettings();\n\n\t\t// Collect all packages with scope (project first so cwd resources win collisions)\n\t\tconst allPackages: Array<{ pkg: PackageSource; scope: SourceScope }> = [];\n\t\tfor (const pkg of projectSettings.packages ?? []) {\n\t\t\tallPackages.push({ pkg, scope: \"project\" });\n\t\t}\n\t\tfor (const pkg of globalSettings.packages ?? []) {\n\t\t\tallPackages.push({ pkg, scope: \"user\" });\n\t\t}\n\n\t\t// Dedupe: project scope wins over global for same package identity\n\t\tconst packageSources = this.dedupePackages(allPackages);\n\t\tawait this.resolvePackageSources(packageSources, accumulator, onMissing);\n\n\t\tconst globalBaseDir = this.agentDir;\n\t\tconst projectBaseDir = join(this.cwd, CONFIG_DIR_NAME);\n\n\t\tfor (const resourceType of RESOURCE_TYPES) {\n\t\t\tconst target = getTargetMap(accumulator, resourceType);\n\t\t\tconst globalEntries = (globalSettings[resourceType] ?? []) as string[];\n\t\t\tconst projectEntries = (projectSettings[resourceType] ?? []) as string[];\n\t\t\tresolveLocalEntries(\n\t\t\t\tprojectEntries,\n\t\t\t\tresourceType,\n\t\t\t\ttarget,\n\t\t\t\t{\n\t\t\t\t\tsource: \"local\",\n\t\t\t\t\tscope: \"project\",\n\t\t\t\t\torigin: \"top-level\",\n\t\t\t\t},\n\t\t\t\tprojectBaseDir,\n\t\t\t);\n\t\t\tresolveLocalEntries(\n\t\t\t\tglobalEntries,\n\t\t\t\tresourceType,\n\t\t\t\ttarget,\n\t\t\t\t{\n\t\t\t\t\tsource: \"local\",\n\t\t\t\t\tscope: \"user\",\n\t\t\t\t\torigin: \"top-level\",\n\t\t\t\t},\n\t\t\t\tglobalBaseDir,\n\t\t\t);\n\t\t}\n\n\t\taddAutoDiscoveredResources(this.cwd, accumulator, globalSettings, projectSettings, globalBaseDir, projectBaseDir);\n\n\t\treturn toResolvedPaths(accumulator);\n\t}\n\n\tasync resolveSourceResources(\n\t\tsources: string[],\n\t\toptions?: { local?: boolean; temporary?: boolean },\n\t): Promise<ResolvedPaths> {\n\t\tconst accumulator = createAccumulator();\n\t\tconst scope: SourceScope = options?.temporary ? \"temporary\" : options?.local ? \"project\" : \"user\";\n\t\tconst packageSources = sources.map((source) => ({ pkg: source as PackageSource, scope }));\n\t\tawait this.resolvePackageSources(packageSources, accumulator);\n\t\treturn toResolvedPaths(accumulator);\n\t}\n\n\tlistConfiguredPackages(): ConfiguredPackage[] {\n\t\tconst globalSettings = this.settingsManager.getGlobalSettings();\n\t\tconst projectSettings = this.settingsManager.getProjectSettings();\n\t\tconst configuredPackages: ConfiguredPackage[] = [];\n\n\t\tfor (const pkg of globalSettings.packages ?? []) {\n\t\t\tconst source = typeof pkg === \"string\" ? pkg : pkg.source;\n\t\t\tconfiguredPackages.push({\n\t\t\t\tsource,\n\t\t\t\tscope: \"user\",\n\t\t\t\tfiltered: typeof pkg === \"object\",\n\t\t\t\tinstalledPath: this.getInstalledPath(source, \"user\"),\n\t\t\t});\n\t\t}\n\n\t\tfor (const pkg of projectSettings.packages ?? []) {\n\t\t\tconst source = typeof pkg === \"string\" ? pkg : pkg.source;\n\t\t\tconfiguredPackages.push({\n\t\t\t\tsource,\n\t\t\t\tscope: \"project\",\n\t\t\t\tfiltered: typeof pkg === \"object\",\n\t\t\t\tinstalledPath: this.getInstalledPath(source, \"project\"),\n\t\t\t});\n\t\t}\n\n\t\treturn configuredPackages;\n\t}\n\n\tasync install(source: string, options?: { local?: boolean }): Promise<void> {\n\t\tconst parsed = this.parseSource(source);\n\t\tconst scope: SourceScope = options?.local ? \"project\" : \"user\";\n\t\tawait this.withProgress(\"install\", source, `Installing ${source}...`, async () => {\n\t\t\tif (parsed.type === \"npm\") {\n\t\t\t\tawait this.installNpm(parsed, scope, false);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (parsed.type === \"git\") {\n\t\t\t\tawait this.installGit(parsed, scope);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (parsed.type === \"local\") {\n\t\t\t\tconst resolved = this.resolvePath(parsed.path);\n\t\t\t\tif (!existsSync(resolved)) {\n\t\t\t\t\tthrow new Error(`Path does not exist: ${resolved}`);\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthrow new Error(`Unsupported install source: ${source}`);\n\t\t});\n\t}\n\n\tasync installAndPersist(source: string, options?: { local?: boolean }): Promise<void> {\n\t\tawait this.install(source, options);\n\t\tthis.addSourceToSettings(source, options);\n\t}\n\n\tasync remove(source: string, options?: { local?: boolean }): Promise<void> {\n\t\tconst parsed = this.parseSource(source);\n\t\tconst scope: SourceScope = options?.local ? \"project\" : \"user\";\n\t\tawait this.withProgress(\"remove\", source, `Removing ${source}...`, async () => {\n\t\t\tif (parsed.type === \"npm\") {\n\t\t\t\tawait this.uninstallNpm(parsed, scope);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (parsed.type === \"git\") {\n\t\t\t\tawait this.removeGit(parsed, scope);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (parsed.type === \"local\") {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthrow new Error(`Unsupported remove source: ${source}`);\n\t\t});\n\t}\n\n\tasync removeAndPersist(source: string, options?: { local?: boolean }): Promise<boolean> {\n\t\tawait this.remove(source, options);\n\t\treturn this.removeSourceFromSettings(source, options);\n\t}\n\n\tasync update(source?: string): Promise<void> {\n\t\tconst globalSettings = this.settingsManager.getGlobalSettings();\n\t\tconst projectSettings = this.settingsManager.getProjectSettings();\n\t\tconst identity = source ? this.getPackageIdentity(source) : undefined;\n\t\tlet matched = false;\n\t\tconst updateSources: ConfiguredUpdateSource[] = [];\n\n\t\tfor (const pkg of globalSettings.packages ?? []) {\n\t\t\tconst sourceStr = typeof pkg === \"string\" ? pkg : pkg.source;\n\t\t\tif (identity && this.getPackageIdentity(sourceStr, \"user\") !== identity) continue;\n\t\t\tmatched = true;\n\t\t\tupdateSources.push({ source: sourceStr, scope: \"user\" });\n\t\t}\n\t\tfor (const pkg of projectSettings.packages ?? []) {\n\t\t\tconst sourceStr = typeof pkg === \"string\" ? pkg : pkg.source;\n\t\t\tif (identity && this.getPackageIdentity(sourceStr, \"project\") !== identity) continue;\n\t\t\tmatched = true;\n\t\t\tupdateSources.push({ source: sourceStr, scope: \"project\" });\n\t\t}\n\n\t\tif (source && !matched) {\n\t\t\tthrow new Error(\n\t\t\t\tthis.buildNoMatchingPackageMessage(source, [\n\t\t\t\t\t...(globalSettings.packages ?? []),\n\t\t\t\t\t...(projectSettings.packages ?? []),\n\t\t\t\t]),\n\t\t\t);\n\t\t}\n\n\t\tawait this.updateConfiguredSources(updateSources);\n\t}\n\n\tprivate async updateConfiguredSources(sources: ConfiguredUpdateSource[]): Promise<void> {\n\t\tif (isOfflineModeEnabled() || sources.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst npmCandidates: NpmUpdateTarget[] = [];\n\t\tconst gitCandidates: GitUpdateTarget[] = [];\n\n\t\tfor (const entry of sources) {\n\t\t\tconst parsed = this.parseSource(entry.source);\n\t\t\t// Pinned npm versions are fixed. Pinned git refs are configured checkout targets,\n\t\t\t// so include them to reconcile an existing clone when the configured ref changes.\n\t\t\tif (parsed.type === \"npm\") {\n\t\t\t\tif (!parsed.pinned) {\n\t\t\t\t\tnpmCandidates.push({ ...entry, parsed });\n\t\t\t\t}\n\t\t\t} else if (parsed.type === \"git\") {\n\t\t\t\tgitCandidates.push({ ...entry, parsed });\n\t\t\t}\n\t\t}\n\n\t\tconst npmCheckTasks = npmCandidates.map((entry) => async () => ({\n\t\t\tentry,\n\t\t\tshouldUpdate: await this.shouldUpdateNpmSource(entry.parsed, entry.scope),\n\t\t}));\n\t\tconst npmCheckResults = await runWithConcurrency(npmCheckTasks, UPDATE_CHECK_CONCURRENCY);\n\t\tconst userNpmUpdates: NpmUpdateTarget[] = [];\n\t\tconst projectNpmUpdates: NpmUpdateTarget[] = [];\n\t\tfor (const result of npmCheckResults) {\n\t\t\tif (!result.shouldUpdate) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (result.entry.scope === \"user\") {\n\t\t\t\tuserNpmUpdates.push(result.entry);\n\t\t\t} else {\n\t\t\t\tprojectNpmUpdates.push(result.entry);\n\t\t\t}\n\t\t}\n\n\t\tconst tasks: Promise<void>[] = [];\n\t\tif (userNpmUpdates.length > 0) {\n\t\t\ttasks.push(this.updateNpmBatch(userNpmUpdates, \"user\"));\n\t\t}\n\t\tif (projectNpmUpdates.length > 0) {\n\t\t\ttasks.push(this.updateNpmBatch(projectNpmUpdates, \"project\"));\n\t\t}\n\t\tif (gitCandidates.length > 0) {\n\t\t\tconst gitTasks = gitCandidates.map(\n\t\t\t\t(entry) => async () =>\n\t\t\t\t\tthis.withProgress(\"update\", entry.source, `Updating ${entry.source}...`, async () => {\n\t\t\t\t\t\tawait this.updateGit(entry.parsed, entry.scope);\n\t\t\t\t\t}),\n\t\t\t);\n\t\t\ttasks.push(runWithConcurrency(gitTasks, GIT_UPDATE_CONCURRENCY).then(() => {}));\n\t\t}\n\n\t\tawait Promise.all(tasks);\n\t}\n\n\tprivate async shouldUpdateNpmSource(source: NpmSource, scope: InstalledSourceScope): Promise<boolean> {\n\t\tconst installedPath = getManagedNpmInstallPath(this.context, source, scope);\n\t\tconst installedVersion = existsSync(installedPath) ? this.getInstalledNpmVersion(installedPath) : undefined;\n\t\tif (!installedVersion) {\n\t\t\treturn true;\n\t\t}\n\n\t\tconst targetVersion = await this.getLatestNpmVersion(source.version ? source.spec : source.name, source.range);\n\t\treturn gt(targetVersion, installedVersion);\n\t}\n\n\tprivate async updateNpmBatch(sources: NpmUpdateTarget[], scope: InstalledSourceScope): Promise<void> {\n\t\tif (sources.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst sourceLabel = sources.length === 1 ? sources[0].source : `${scope} npm packages`;\n\t\tconst message = sources.length === 1 ? `Updating ${sources[0].source}...` : `Updating ${scope} npm packages...`;\n\t\tconst specs = sources.map((entry) => (entry.parsed.version ? entry.parsed.spec : `${entry.parsed.name}@latest`));\n\n\t\tawait this.withProgress(\"update\", sourceLabel, message, async () => {\n\t\t\tawait this.installNpmBatch(specs, scope);\n\t\t});\n\t}\n\n\tprivate async installNpmBatch(specs: string[], scope: InstalledSourceScope): Promise<void> {\n\t\tconst installRoot = getNpmInstallRoot(this.context, scope, false);\n\t\tensureNpmProject(installRoot);\n\t\tawait this.runNpmCommand(getNpmInstallArgs(this.context, specs, installRoot));\n\t}\n\n\tasync checkForAvailableUpdates(): Promise<PackageUpdate[]> {\n\t\tif (isOfflineModeEnabled()) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst globalSettings = this.settingsManager.getGlobalSettings();\n\t\tconst projectSettings = this.settingsManager.getProjectSettings();\n\t\tconst allPackages: Array<{ pkg: PackageSource; scope: SourceScope }> = [];\n\t\tfor (const pkg of projectSettings.packages ?? []) {\n\t\t\tallPackages.push({ pkg, scope: \"project\" });\n\t\t}\n\t\tfor (const pkg of globalSettings.packages ?? []) {\n\t\t\tallPackages.push({ pkg, scope: \"user\" });\n\t\t}\n\n\t\tconst packageSources = this.dedupePackages(allPackages);\n\t\tconst checks = packageSources\n\t\t\t.filter(\n\t\t\t\t(entry): entry is { pkg: PackageSource; scope: Exclude<SourceScope, \"temporary\"> } =>\n\t\t\t\t\tentry.scope !== \"temporary\",\n\t\t\t)\n\t\t\t.map((entry) => async (): Promise<PackageUpdate | undefined> => {\n\t\t\t\tconst source = typeof entry.pkg === \"string\" ? entry.pkg : entry.pkg.source;\n\t\t\t\tconst parsed = this.parseSource(source);\n\t\t\t\tif (parsed.type === \"local\" || parsed.pinned) {\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\n\t\t\t\tif (parsed.type === \"npm\") {\n\t\t\t\t\tconst installedPath = this.getNpmInstallPath(parsed, entry.scope);\n\t\t\t\t\tif (!existsSync(installedPath)) {\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\t\t\t\t\tconst hasUpdate = await this.npmHasAvailableUpdate(parsed, installedPath);\n\t\t\t\t\tif (!hasUpdate) {\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsource,\n\t\t\t\t\t\tdisplayName: parsed.name,\n\t\t\t\t\t\ttype: \"npm\",\n\t\t\t\t\t\tscope: entry.scope,\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tconst installedPath = this.getGitInstallPath(parsed, entry.scope);\n\t\t\t\tif (!existsSync(installedPath)) {\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t\tconst hasUpdate = await this.gitHasAvailableUpdate(installedPath);\n\t\t\t\tif (!hasUpdate) {\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tsource,\n\t\t\t\t\tdisplayName: `${parsed.host}/${parsed.path}`,\n\t\t\t\t\ttype: \"git\",\n\t\t\t\t\tscope: entry.scope,\n\t\t\t\t};\n\t\t\t});\n\n\t\tconst results = await runWithConcurrency(checks, UPDATE_CHECK_CONCURRENCY);\n\t\treturn results.filter((result): result is PackageUpdate => result !== undefined);\n\t}\n\n\tprivate async resolvePackageSources(\n\t\tsources: Array<{ pkg: PackageSource; scope: SourceScope }>,\n\t\taccumulator: ResourceAccumulator,\n\t\tonMissing?: (source: string) => Promise<MissingSourceAction>,\n\t): Promise<void> {\n\t\tfor (const { pkg, scope } of sources) {\n\t\t\tconst sourceStr = typeof pkg === \"string\" ? pkg : pkg.source;\n\t\t\tconst filter = typeof pkg === \"object\" ? pkg : undefined;\n\t\t\tconst deltaBase = this.findAutoloadDeltaBase(pkg, scope, sources);\n\t\t\tconst resolvedSource = deltaBase?.source ?? sourceStr;\n\t\t\tconst resolvedScope = deltaBase?.scope ?? scope;\n\t\t\tconst parsed = this.parseSource(resolvedSource);\n\t\t\tconst metadata: PathMetadata = { source: sourceStr, scope, origin: \"package\" };\n\n\t\t\tif (parsed.type === \"local\") {\n\t\t\t\tconst baseDir = this.getBaseDirForScope(resolvedScope);\n\t\t\t\tconst resolvedLocal = this.resolvePathFromBase(parsed.path, baseDir);\n\t\t\t\tif (existsSync(resolvedLocal)) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif (statSync(resolvedLocal).isDirectory()) {\n\t\t\t\t\t\t\tmetadata.baseDir = resolvedLocal;\n\t\t\t\t\t\t\tcollectPackageResources(resolvedLocal, accumulator, filter, metadata);\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch {\n\t\t\t\t\t\t// Unreadable local path: skip the source.\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst installMissing = async (): Promise<boolean> => {\n\t\t\t\tif (isOfflineModeEnabled()) return false;\n\t\t\t\tif (!onMissing) {\n\t\t\t\t\tawait this.installParsedSource(parsed, resolvedScope);\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tconst action = await onMissing(resolvedSource);\n\t\t\t\tif (action === \"skip\") return false;\n\t\t\t\tif (action === \"error\") throw new Error(`Missing source: ${resolvedSource}`);\n\t\t\t\tawait this.installParsedSource(parsed, resolvedScope);\n\t\t\t\treturn true;\n\t\t\t};\n\n\t\t\tif (parsed.type === \"npm\") {\n\t\t\t\tlet installedPath = this.getNpmInstallPath(parsed, resolvedScope);\n\t\t\t\tconst needsInstall =\n\t\t\t\t\t!existsSync(installedPath) || !(await installedNpmMatchesConfiguredVersion(parsed, installedPath));\n\t\t\t\tif (needsInstall) {\n\t\t\t\t\tconst installed = await installMissing();\n\t\t\t\t\tif (!installed) continue;\n\t\t\t\t\tinstalledPath = this.getNpmInstallPath(parsed, resolvedScope);\n\t\t\t\t}\n\t\t\t\tmetadata.baseDir = installedPath;\n\t\t\t\tcollectPackageResources(installedPath, accumulator, filter, metadata);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (parsed.type === \"git\") {\n\t\t\t\tconst installedPath = this.getGitInstallPath(parsed, resolvedScope);\n\t\t\t\tif (!existsSync(installedPath)) {\n\t\t\t\t\tconst installed = await installMissing();\n\t\t\t\t\tif (!installed) continue;\n\t\t\t\t} else if (resolvedScope === \"temporary\" && !parsed.pinned && !isOfflineModeEnabled()) {\n\t\t\t\t\tawait this.refreshTemporaryGitSource(parsed, resolvedSource);\n\t\t\t\t}\n\t\t\t\tmetadata.baseDir = installedPath;\n\t\t\t\tcollectPackageResources(installedPath, accumulator, filter, metadata);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate findAutoloadDeltaBase(\n\t\tpkg: PackageSource,\n\t\tscope: SourceScope,\n\t\tsources: Array<{ pkg: PackageSource; scope: SourceScope }>,\n\t): { source: string; scope: SourceScope } | undefined {\n\t\tif (scope !== \"project\" || typeof pkg !== \"object\" || pkg.autoload !== false) return undefined;\n\t\tconst identity = this.getPackageIdentity(pkg.source, scope);\n\t\tconst userEntry = sources.find(\n\t\t\t(entry) =>\n\t\t\t\tentry.scope === \"user\" &&\n\t\t\t\tthis.getPackageIdentity(this.getPackageSourceString(entry.pkg), \"user\") === identity,\n\t\t);\n\t\treturn userEntry ? { source: this.getPackageSourceString(userEntry.pkg), scope: \"user\" } : undefined;\n\t}\n\n\tprivate async installParsedSource(parsed: ParsedSource, scope: SourceScope): Promise<void> {\n\t\tif (parsed.type === \"npm\") {\n\t\t\tawait this.installNpm(parsed, scope, scope === \"temporary\");\n\t\t\treturn;\n\t\t}\n\t\tif (parsed.type === \"git\") {\n\t\t\tawait this.installGit(parsed, scope);\n\t\t\treturn;\n\t\t}\n\t}\n\n\tprivate parseSource(source: string): ParsedSource {\n\t\treturn parseSource(source);\n\t}\n\n\tprivate getBaseDirForScope(scope: SourceScope): string {\n\t\treturn getBaseDirForScope(this.context, scope);\n\t}\n\n\tprivate resolvePath(input: string): string {\n\t\treturn resolvePath(this.context, input);\n\t}\n\n\tprivate resolvePathFromBase(input: string, baseDir: string): string {\n\t\treturn resolvePathFromBase(input, baseDir);\n\t}\n\n\tprivate getPackageSourceString(pkg: PackageSource): string {\n\t\treturn getPackageSourceString(pkg);\n\t}\n\n\tprivate getSourceMatchKeyForInput(source: string): string {\n\t\treturn getSourceMatchKeyForInput(this.context, source);\n\t}\n\n\tprivate getSourceMatchKeyForSettings(source: string, scope: SourceScope): string {\n\t\treturn getSourceMatchKeyForSettings(this.context, source, scope);\n\t}\n\n\tprivate packageSourcesMatch(existing: PackageSource, inputSource: string, scope: SourceScope): boolean {\n\t\tconst left = this.getSourceMatchKeyForSettings(this.getPackageSourceString(existing), scope);\n\t\tconst right = this.getSourceMatchKeyForInput(inputSource);\n\t\treturn left === right;\n\t}\n\n\tprivate normalizePackageSourceForSettings(source: string, scope: SourceScope): string {\n\t\treturn normalizePackageSourceForSettings(this.context, source, scope);\n\t}\n\n\tprivate getPackageIdentity(source: string, scope?: SourceScope): string {\n\t\treturn getPackageIdentity(this.context, source, scope);\n\t}\n\n\tprivate dedupePackages(\n\t\tpackages: Array<{ pkg: PackageSource; scope: SourceScope }>,\n\t): Array<{ pkg: PackageSource; scope: SourceScope }> {\n\t\treturn dedupePackages(this.context, packages);\n\t}\n\n\tprivate buildNoMatchingPackageMessage(source: string, configuredPackages: PackageSource[]): string {\n\t\treturn buildNoMatchingPackageMessage(source, configuredPackages);\n\t}\n\n\tprivate getNpmCommand(): { command: string; args: string[] } {\n\t\treturn getNpmCommand(this.context);\n\t}\n\n\tprivate getInstalledNpmVersion(installedPath: string): string | undefined {\n\t\treturn getInstalledNpmVersion(installedPath);\n\t}\n\n\tprivate getGitInstallPath(source: GitSource, scope: SourceScope): string {\n\t\treturn getGitInstallPath(this.context, source, scope);\n\t}\n\n\tprivate async npmHasAvailableUpdate(source: NpmSource, installedPath: string): Promise<boolean> {\n\t\tif (isOfflineModeEnabled()) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst installedVersion = this.getInstalledNpmVersion(installedPath);\n\t\tif (!installedVersion) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\tconst targetVersion = await this.getLatestNpmVersion(source.version ? source.spec : source.name, source.range);\n\t\t\treturn gt(targetVersion, installedVersion);\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tprivate async getLatestNpmVersion(packageSpec: string, range?: string): Promise<string> {\n\t\tconst npmCommand = this.getNpmCommand();\n\t\tconst stdout = await this.runCommandCapture(\n\t\t\tnpmCommand.command,\n\t\t\t[...npmCommand.args, \"view\", packageSpec, \"version\", \"--json\"],\n\t\t\t{ cwd: this.cwd, timeoutMs: NETWORK_TIMEOUT_MS },\n\t\t);\n\t\tconst raw = stdout.trim();\n\t\tif (!raw) throw new Error(\"Empty response from npm view\");\n\t\tconst parsed = JSON.parse(raw) as unknown;\n\t\tif (typeof parsed === \"string\") {\n\t\t\treturn parsed;\n\t\t}\n\t\tif (Array.isArray(parsed)) {\n\t\t\tconst versions = parsed.filter((value): value is string => typeof value === \"string\" && value.length > 0);\n\t\t\tconst latest = range ? maxSatisfying(versions, range) : [...versions].sort(rcompare)[0];\n\t\t\tif (latest) return latest;\n\t\t}\n\t\tthrow new Error(\"Unexpected response from npm view\");\n\t}\n\n\tprivate async gitHasAvailableUpdate(installedPath: string): Promise<boolean> {\n\t\tif (isOfflineModeEnabled()) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\tconst localHead = await this.runCommandCapture(\"git\", [\"rev-parse\", \"HEAD\"], {\n\t\t\t\tcwd: installedPath,\n\t\t\t\ttimeoutMs: NETWORK_TIMEOUT_MS,\n\t\t\t});\n\t\t\tconst remoteHead = await this.getRemoteGitHead(installedPath);\n\t\t\treturn localHead.trim() !== remoteHead.trim();\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tprivate async getRemoteGitHead(installedPath: string): Promise<string> {\n\t\tconst upstreamRef = await this.getGitUpstreamRef(installedPath);\n\t\tif (upstreamRef) {\n\t\t\tconst remoteHead = await this.runGitRemoteCommand(installedPath, [\"ls-remote\", \"origin\", upstreamRef]);\n\t\t\tconst match = remoteHead.match(/^([0-9a-f]{40})\\s+/m);\n\t\t\tif (match?.[1]) {\n\t\t\t\treturn match[1];\n\t\t\t}\n\t\t}\n\n\t\tconst remoteHead = await this.runGitRemoteCommand(installedPath, [\"ls-remote\", \"origin\", \"HEAD\"]);\n\t\tconst match = remoteHead.match(/^([0-9a-f]{40})\\s+HEAD$/m);\n\t\tif (!match?.[1]) {\n\t\t\tthrow new Error(\"Failed to determine remote HEAD\");\n\t\t}\n\t\treturn match[1];\n\t}\n\n\tprivate async getLocalGitUpdateTarget(\n\t\tinstalledPath: string,\n\t): Promise<{ ref: string; head: string; fetchArgs: string[] }> {\n\t\ttry {\n\t\t\tconst upstream = await this.runCommandCapture(\"git\", [\"rev-parse\", \"--abbrev-ref\", \"@{upstream}\"], {\n\t\t\t\tcwd: installedPath,\n\t\t\t\ttimeoutMs: NETWORK_TIMEOUT_MS,\n\t\t\t});\n\t\t\tconst trimmedUpstream = upstream.trim();\n\t\t\tif (!trimmedUpstream.startsWith(\"origin/\")) {\n\t\t\t\tthrow new Error(`Unsupported upstream remote: ${trimmedUpstream}`);\n\t\t\t}\n\t\t\tconst branch = trimmedUpstream.slice(\"origin/\".length);\n\t\t\tif (!branch) {\n\t\t\t\tthrow new Error(\"Missing upstream branch name\");\n\t\t\t}\n\t\t\tconst head = await this.runCommandCapture(\"git\", [\"rev-parse\", \"@{upstream}\"], {\n\t\t\t\tcwd: installedPath,\n\t\t\t\ttimeoutMs: NETWORK_TIMEOUT_MS,\n\t\t\t});\n\t\t\treturn {\n\t\t\t\tref: \"@{upstream}\",\n\t\t\t\thead,\n\t\t\t\tfetchArgs: [\n\t\t\t\t\t\"fetch\",\n\t\t\t\t\t\"--prune\",\n\t\t\t\t\t\"--no-tags\",\n\t\t\t\t\t\"origin\",\n\t\t\t\t\t`+refs/heads/${branch}:refs/remotes/origin/${branch}`,\n\t\t\t\t],\n\t\t\t};\n\t\t} catch {\n\t\t\tawait this.runCommand(\"git\", [\"remote\", \"set-head\", \"origin\", \"-a\"], { cwd: installedPath }).catch(() => {});\n\t\t\tconst head = await this.runCommandCapture(\"git\", [\"rev-parse\", \"origin/HEAD\"], {\n\t\t\t\tcwd: installedPath,\n\t\t\t\ttimeoutMs: NETWORK_TIMEOUT_MS,\n\t\t\t});\n\t\t\tconst originHeadRef = await this.runCommandCapture(\"git\", [\"symbolic-ref\", \"refs/remotes/origin/HEAD\"], {\n\t\t\t\tcwd: installedPath,\n\t\t\t\ttimeoutMs: NETWORK_TIMEOUT_MS,\n\t\t\t}).catch(() => \"\");\n\t\t\tconst branch = originHeadRef.trim().replace(/^refs\\/remotes\\/origin\\//, \"\");\n\t\t\tif (branch) {\n\t\t\t\treturn {\n\t\t\t\t\tref: \"origin/HEAD\",\n\t\t\t\t\thead,\n\t\t\t\t\tfetchArgs: [\n\t\t\t\t\t\t\"fetch\",\n\t\t\t\t\t\t\"--prune\",\n\t\t\t\t\t\t\"--no-tags\",\n\t\t\t\t\t\t\"origin\",\n\t\t\t\t\t\t`+refs/heads/${branch}:refs/remotes/origin/${branch}`,\n\t\t\t\t\t],\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tref: \"origin/HEAD\",\n\t\t\t\thead,\n\t\t\t\tfetchArgs: [\"fetch\", \"--prune\", \"--no-tags\", \"origin\", \"+HEAD:refs/remotes/origin/HEAD\"],\n\t\t\t};\n\t\t}\n\t}\n\n\tprivate async getGitUpstreamRef(installedPath: string): Promise<string | undefined> {\n\t\ttry {\n\t\t\tconst upstream = await this.runCommandCapture(\"git\", [\"rev-parse\", \"--abbrev-ref\", \"@{upstream}\"], {\n\t\t\t\tcwd: installedPath,\n\t\t\t\ttimeoutMs: NETWORK_TIMEOUT_MS,\n\t\t\t});\n\t\t\tconst trimmed = upstream.trim();\n\t\t\tif (!trimmed.startsWith(\"origin/\")) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tconst branch = trimmed.slice(\"origin/\".length);\n\t\t\treturn branch ? `refs/heads/${branch}` : undefined;\n\t\t} catch {\n\t\t\treturn undefined;\n\t\t}\n\t}\n\n\tprivate runGitRemoteCommand(installedPath: string, args: string[]): Promise<string> {\n\t\treturn this.runCommandCapture(\"git\", args, {\n\t\t\tcwd: installedPath,\n\t\t\ttimeoutMs: NETWORK_TIMEOUT_MS,\n\t\t\tenv: {\n\t\t\t\tGIT_TERMINAL_PROMPT: \"0\",\n\t\t\t},\n\t\t});\n\t}\n\n\tprivate getGlobalNpmRoot(): string {\n\t\tconst npmCommand = this.getNpmCommand();\n\t\tconst commandKey = [npmCommand.command, ...npmCommand.args].join(\"\\0\");\n\t\tif (this.globalNpmRoot && this.globalNpmRootCommandKey === commandKey) {\n\t\t\treturn this.globalNpmRoot;\n\t\t}\n\t\tif (getPackageManagerName(this.context) === \"bun\") {\n\t\t\tconst binDir = this.runNpmCommandSync([\"pm\", \"bin\", \"-g\"]).trim();\n\t\t\tthis.globalNpmRoot = join(dirname(binDir), \"install\", \"global\", \"node_modules\");\n\t\t} else {\n\t\t\tthis.globalNpmRoot = this.runNpmCommandSync([\"root\", \"-g\"]).trim();\n\t\t}\n\t\tthis.globalNpmRootCommandKey = commandKey;\n\t\treturn this.globalNpmRoot;\n\t}\n\n\tprivate getPnpmGlobalPackagePath(packageName: string): string | undefined {\n\t\tif (getPackageManagerName(this.context) !== \"pnpm\") {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst output = this.runNpmCommandSync([\"list\", \"-g\", \"--depth\", \"0\", \"--json\"]);\n\t\tconst entries = JSON.parse(output) as Array<{ dependencies?: Record<string, { path?: string }> }>;\n\t\tfor (const entry of entries) {\n\t\t\tconst path = entry.dependencies?.[packageName]?.path;\n\t\t\tif (path) return path;\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tprivate getLegacyGlobalNpmInstallPath(source: NpmSource): string | undefined {\n\t\t// Read-only migration compatibility for pre-managed global installs. New installs\n\t\t// always target the Agent Forge-managed root; this lookup never substitutes a package.\n\t\ttry {\n\t\t\treturn this.getPnpmGlobalPackagePath(source.name) ?? join(this.getGlobalNpmRoot(), source.name);\n\t\t} catch {\n\t\t\treturn undefined;\n\t\t}\n\t}\n\n\tprivate getNpmInstallPath(source: NpmSource, scope: SourceScope): string {\n\t\tconst managedPath = getManagedNpmInstallPath(this.context, source, scope);\n\t\tif (scope !== \"user\" || existsSync(managedPath)) {\n\t\t\treturn managedPath;\n\t\t}\n\t\tconst legacyPath = this.getLegacyGlobalNpmInstallPath(source);\n\t\treturn legacyPath && existsSync(legacyPath) ? legacyPath : managedPath;\n\t}\n\n\tprivate async installNpm(source: NpmSource, scope: SourceScope, temporary: boolean): Promise<void> {\n\t\tconst installRoot = getNpmInstallRoot(this.context, scope, temporary);\n\t\tensureNpmProject(installRoot);\n\t\tawait this.runNpmCommand(getNpmInstallArgs(this.context, [source.spec], installRoot));\n\t}\n\n\tprivate async uninstallNpm(source: NpmSource, scope: SourceScope): Promise<void> {\n\t\tconst installRoot = getNpmInstallRoot(this.context, scope, false);\n\t\tif (!existsSync(installRoot)) {\n\t\t\treturn;\n\t\t}\n\t\tconst packageManagerName = getPackageManagerName(this.context);\n\t\tif (packageManagerName === \"bun\") {\n\t\t\tawait this.runNpmCommand([\"uninstall\", source.name, \"--cwd\", installRoot]);\n\t\t\treturn;\n\t\t}\n\t\tconst args = [\"uninstall\", source.name, \"--prefix\", installRoot];\n\t\tif (packageManagerName !== \"pnpm\") {\n\t\t\targs.push(\"--legacy-peer-deps\");\n\t\t}\n\t\tawait this.runNpmCommand(args);\n\t}\n\n\tprivate async installGit(source: GitSource, scope: SourceScope): Promise<void> {\n\t\tconst targetDir = this.getGitInstallPath(source, scope);\n\t\tif (existsSync(targetDir)) {\n\t\t\tif (source.ref) {\n\t\t\t\tawait this.ensureGitRef(targetDir, [\"fetch\", \"origin\", source.ref], \"FETCH_HEAD\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst target = await this.getLocalGitUpdateTarget(targetDir);\n\t\t\tawait this.ensureGitRef(targetDir, target.fetchArgs, target.ref);\n\t\t\treturn;\n\t\t}\n\t\tconst gitRoot = getGitInstallRoot(this.context, scope);\n\t\tif (gitRoot) {\n\t\t\tensureGitIgnore(gitRoot);\n\t\t}\n\t\tmkdirSync(dirname(targetDir), { recursive: true });\n\t\trmSync(getGitUpdateMarkerPath(targetDir), { force: true });\n\n\t\ttry {\n\t\t\tawait this.runCommand(\"git\", [\"clone\", source.repo, targetDir]);\n\t\t\tif (source.ref) {\n\t\t\t\tawait this.runCommand(\"git\", [\"checkout\", source.ref], { cwd: targetDir });\n\t\t\t}\n\t\t\tconst packageJsonPath = join(targetDir, \"package.json\");\n\t\t\tif (existsSync(packageJsonPath)) {\n\t\t\t\tawait this.runNpmCommand(getGitDependencyInstallArgs(this.context), { cwd: targetDir });\n\t\t\t}\n\t\t} catch (error) {\n\t\t\trmSync(targetDir, { recursive: true, force: true });\n\t\t\tpruneEmptyGitParents(targetDir, gitRoot);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tprivate async updateGit(source: GitSource, scope: SourceScope): Promise<void> {\n\t\tconst targetDir = this.getGitInstallPath(source, scope);\n\t\tif (!existsSync(targetDir)) {\n\t\t\tawait this.installGit(source, scope);\n\t\t\treturn;\n\t\t}\n\n\t\tif (source.ref) {\n\t\t\tawait this.ensureGitRef(targetDir, [\"fetch\", \"origin\", source.ref], \"FETCH_HEAD\");\n\t\t\treturn;\n\t\t}\n\n\t\tconst target = await this.getLocalGitUpdateTarget(targetDir);\n\t\tawait this.ensureGitRef(targetDir, target.fetchArgs, target.ref);\n\t}\n\n\tprivate async repairMissingGitDependencies(targetDir: string): Promise<void> {\n\t\tif (!hasMissingGitDependencies(targetDir)) return;\n\t\tawait this.runNpmCommand(getGitDependencyInstallArgs(this.context), { cwd: targetDir });\n\t}\n\n\tprivate async cleanAndInstallGitDependencies(targetDir: string, markerPath: string): Promise<void> {\n\t\t// Clean untracked files (extensions should be pristine). If this fails after\n\t\t// deleting dependencies, repair them so the existing extension still loads.\n\t\ttry {\n\t\t\tawait this.runCommand(\"git\", [\"clean\", \"-fdx\"], { cwd: targetDir });\n\t\t} catch (error) {\n\t\t\tawait this.repairMissingGitDependencies(targetDir).catch(() => {});\n\t\t\tthrow error;\n\t\t}\n\n\t\tconst packageJsonPath = join(targetDir, \"package.json\");\n\t\tif (existsSync(packageJsonPath)) {\n\t\t\tawait this.runNpmCommand(getGitDependencyInstallArgs(this.context), { cwd: targetDir });\n\t\t}\n\t\trmSync(markerPath, { force: true });\n\t}\n\n\tprivate async ensureGitRef(targetDir: string, fetchArgs: string[], ref: string): Promise<void> {\n\t\t// Fetch only the ref we will reset to, avoiding unrelated branch/tag noise.\n\t\tawait this.runCommand(\"git\", fetchArgs, { cwd: targetDir });\n\n\t\tconst localHead = await this.runCommandCapture(\"git\", [\"rev-parse\", \"HEAD\"], {\n\t\t\tcwd: targetDir,\n\t\t\ttimeoutMs: NETWORK_TIMEOUT_MS,\n\t\t});\n\t\tconst commitRef = `${ref}^{commit}`;\n\t\tconst targetHead = await this.runCommandCapture(\"git\", [\"rev-parse\", commitRef], {\n\t\t\tcwd: targetDir,\n\t\t\ttimeoutMs: NETWORK_TIMEOUT_MS,\n\t\t});\n\t\tconst markerPath = getGitUpdateMarkerPath(targetDir);\n\t\tif (localHead.trim() === targetHead.trim()) {\n\t\t\tif (existsSync(markerPath)) {\n\t\t\t\tawait this.cleanAndInstallGitDependencies(targetDir, markerPath);\n\t\t\t} else {\n\t\t\t\tawait this.repairMissingGitDependencies(targetDir);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\twriteFileSync(markerPath, \"\", \"utf-8\");\n\t\tawait this.runCommand(\"git\", [\"reset\", \"--hard\", commitRef], { cwd: targetDir });\n\t\tawait this.cleanAndInstallGitDependencies(targetDir, markerPath);\n\t}\n\n\tprivate async refreshTemporaryGitSource(source: GitSource, sourceStr: string): Promise<void> {\n\t\tif (isOfflineModeEnabled()) {\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\tawait this.withProgress(\"pull\", sourceStr, `Refreshing ${sourceStr}...`, async () => {\n\t\t\t\tawait this.updateGit(source, \"temporary\");\n\t\t\t});\n\t\t} catch {\n\t\t\t// Keep cached temporary checkout if refresh fails.\n\t\t}\n\t}\n\n\tprivate async removeGit(source: GitSource, scope: SourceScope): Promise<void> {\n\t\tconst targetDir = this.getGitInstallPath(source, scope);\n\t\trmSync(targetDir, { recursive: true, force: true });\n\t\trmSync(getGitUpdateMarkerPath(targetDir), { force: true });\n\t\tpruneEmptyGitParents(targetDir, getGitInstallRoot(this.context, scope));\n\t}\n\n\tprivate async runNpmCommand(args: string[], options?: { cwd?: string }): Promise<void> {\n\t\tconst npmCommand = this.getNpmCommand();\n\t\tawait this.runCommand(npmCommand.command, [...npmCommand.args, ...args], options);\n\t}\n\n\tprivate runNpmCommandSync(args: string[]): string {\n\t\tconst npmCommand = this.getNpmCommand();\n\t\treturn this.runCommandSync(npmCommand.command, [...npmCommand.args, ...args]);\n\t}\n\n\tprivate spawnCommand(command: string, args: string[], options?: { cwd?: string }): ChildProcess {\n\t\tconst env = getEnv();\n\t\treturn spawnProcess(command, args, {\n\t\t\tcwd: options?.cwd,\n\t\t\tstdio: isStdoutTakenOver() ? [\"ignore\", 2, 2] : \"inherit\",\n\t\t\tenv,\n\t\t});\n\t}\n\n\tprivate spawnCaptureCommand(\n\t\tcommand: string,\n\t\targs: string[],\n\t\toptions?: { cwd?: string; env?: Record<string, string> },\n\t): ChildProcessByStdio<null, Readable, Readable> {\n\t\tconst baseEnv = getEnv();\n\t\tconst env = options?.env ? { ...baseEnv, ...options.env } : baseEnv;\n\t\treturn spawnProcess(command, args, {\n\t\t\tcwd: options?.cwd,\n\t\t\tstdio: [\"ignore\", \"pipe\", \"pipe\"],\n\t\t\tenv,\n\t\t});\n\t}\n\n\tprivate runCommandCapture(\n\t\tcommand: string,\n\t\targs: string[],\n\t\toptions?: { cwd?: string; timeoutMs?: number; env?: Record<string, string> },\n\t): Promise<string> {\n\t\treturn new Promise((resolvePromise, reject) => {\n\t\t\tconst child = this.spawnCaptureCommand(command, args, options);\n\t\t\tlet stdout = \"\";\n\t\t\tlet stderr = \"\";\n\t\t\tlet timedOut = false;\n\t\t\tconst timeout =\n\t\t\t\ttypeof options?.timeoutMs === \"number\"\n\t\t\t\t\t? setTimeout(() => {\n\t\t\t\t\t\t\ttimedOut = true;\n\t\t\t\t\t\t\tchild.kill();\n\t\t\t\t\t\t}, options.timeoutMs)\n\t\t\t\t\t: undefined;\n\n\t\t\tchild.stdout?.on(\"data\", (data) => {\n\t\t\t\tstdout += data.toString();\n\t\t\t});\n\t\t\tchild.stderr?.on(\"data\", (data) => {\n\t\t\t\tstderr += data.toString();\n\t\t\t});\n\t\t\tchild.once(\"error\", (error) => {\n\t\t\t\tif (timeout) clearTimeout(timeout);\n\t\t\t\treject(error);\n\t\t\t});\n\t\t\tchild.once(\"close\", (code, signal) => {\n\t\t\t\tif (timeout) clearTimeout(timeout);\n\t\t\t\tif (timedOut) {\n\t\t\t\t\treject(new Error(`${command} ${args.join(\" \")} timed out after ${options?.timeoutMs}ms`));\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (code === 0) {\n\t\t\t\t\tresolvePromise(stdout.trim());\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst exitStatus = code === null ? `signal ${signal ?? \"unknown\"}` : `code ${code}`;\n\t\t\t\treject(new Error(`${command} ${args.join(\" \")} failed with ${exitStatus}: ${stderr || stdout}`));\n\t\t\t});\n\t\t});\n\t}\n\n\tprivate runCommand(command: string, args: string[], options?: { cwd?: string }): Promise<void> {\n\t\treturn new Promise((resolvePromise, reject) => {\n\t\t\tconst child = this.spawnCommand(command, args, options);\n\t\t\tchild.on(\"error\", reject);\n\t\t\tchild.on(\"exit\", (code) => {\n\t\t\t\tif (code === 0) {\n\t\t\t\t\tresolvePromise();\n\t\t\t\t} else {\n\t\t\t\t\treject(new Error(`${command} ${args.join(\" \")} failed with code ${code}`));\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\tprivate runCommandSync(command: string, args: string[]): string {\n\t\tconst env = getEnv();\n\t\tconst result = spawnProcessSync(command, args, {\n\t\t\tstdio: [\"ignore\", \"pipe\", \"pipe\"],\n\t\t\tencoding: \"utf-8\",\n\t\t\tenv,\n\t\t});\n\t\tif (result.error || result.status !== 0) {\n\t\t\tthrow new Error(\n\t\t\t\t`Failed to run ${command} ${args.join(\" \")}: ${result.error?.message || result.stderr || result.stdout}`,\n\t\t\t);\n\t\t}\n\t\treturn (result.stdout || result.stderr || \"\").trim();\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"package-manager.js","sourceRoot":"","sources":["../../src/core/package-manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACjF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAE,EAAE,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE3E,OAAO,EAAE,WAAW,IAAI,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,CAAC,EAAE,MAAM,iBAAiB,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EACN,eAAe,EACf,gBAAgB,EAChB,2BAA2B,EAC3B,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,sBAAsB,EACtB,wBAAwB,EACxB,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,yBAAyB,EACzB,oCAAoC,EACpC,oBAAoB,GACpB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAC/F,OAAO,EACN,0BAA0B,EAC1B,uBAAuB,EACvB,iBAAiB,EACjB,YAAY,EACZ,mBAAmB,EACnB,eAAe,GACf,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EACN,6BAA6B,EAG7B,cAAc,EAEd,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,yBAAyB,EACzB,4BAA4B,EAK5B,iCAAiC,EASjC,WAAW,EAGX,WAAW,EACX,mBAAmB,GAEnB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAajE,MAAM,kBAAkB,GAAG,KAAK,CAAC;AACjC,MAAM,wBAAwB,GAAG,CAAC,CAAC;AACnC,MAAM,sBAAsB,GAAG,CAAC,CAAC;AAEjC,MAAM,OAAO,qBAAqB;IACzB,GAAG,CAAS;IACZ,QAAQ,CAAS;IACjB,eAAe,CAAkB;IACjC,aAAa,CAAqB;IAClC,uBAAuB,CAAqB;IAC5C,gBAAgB,CAA+B;IAEvD,YAAY,OAA8B,EAAE;QAC3C,IAAI,CAAC,GAAG,GAAG,mBAAmB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,CAAC,QAAQ,GAAG,mBAAmB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACtD,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;IAAA,CAC/C;IAED,IAAY,OAAO,GAA0B;QAC5C,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC;IAAA,CACzF;IAED,mBAAmB,CAAC,QAAsC,EAAQ;QACjE,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC;IAAA,CACjC;IAED,mBAAmB,CAAC,MAAc,EAAE,OAA6B,EAAW;QAC3E,MAAM,KAAK,GAAgB,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;QAC/D,MAAM,eAAe,GACpB,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE,CAAC;QAC5G,MAAM,eAAe,GAAG,eAAe,CAAC,QAAQ,IAAI,EAAE,CAAC;QACvD,MAAM,gBAAgB,GAAG,IAAI,CAAC,iCAAiC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC/E,MAAM,UAAU,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;QAC9G,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE,CAAC;YACvB,MAAM,QAAQ,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;YAC7C,IAAI,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,KAAK,gBAAgB,EAAE,CAAC;gBAChE,OAAO,KAAK,CAAC;YACd,CAAC;YACD,MAAM,YAAY,GAAG,CAAC,GAAG,eAAe,CAAC,CAAC;YAC1C,YAAY,CAAC,UAAU,CAAC;gBACvB,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;YAC7F,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACzB,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;YACvD,CAAC;iBAAM,CAAC;gBACP,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;YAChD,CAAC;YACD,OAAO,IAAI,CAAC;QACb,CAAC;QACD,MAAM,YAAY,GAAG,CAAC,GAAG,eAAe,EAAE,gBAAgB,CAAC,CAAC;QAC5D,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACzB,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;QACvD,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,IAAI,CAAC;IAAA,CACZ;IAED,wBAAwB,CAAC,MAAc,EAAE,OAA6B,EAAW;QAChF,MAAM,KAAK,GAAgB,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;QAC/D,MAAM,eAAe,GACpB,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE,CAAC;QAC5G,MAAM,eAAe,GAAG,eAAe,CAAC,QAAQ,IAAI,EAAE,CAAC;QACvD,MAAM,YAAY,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;QAC9G,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,KAAK,eAAe,CAAC,MAAM,CAAC;QAC/D,IAAI,CAAC,OAAO,EAAE,CAAC;YACd,OAAO,KAAK,CAAC;QACd,CAAC;QACD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACzB,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;QACvD,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,IAAI,CAAC;IAAA,CACZ;IAED,gBAAgB,CAAC,MAAc,EAAE,KAAyB,EAAsB;QAC/E,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACxC,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACnD,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QAC5C,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACnD,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QAC5C,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC5D,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QAC5C,CAAC;QACD,OAAO,SAAS,CAAC;IAAA,CACjB;IAEO,YAAY,CAAC,KAAoB,EAAQ;QAChD,IAAI,CAAC,gBAAgB,EAAE,CAAC,KAAK,CAAC,CAAC;IAAA,CAC/B;IAEO,KAAK,CAAC,YAAY,CACzB,MAA+B,EAC/B,MAAc,EACd,OAAe,EACf,SAA8B,EACd;QAChB,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9D,IAAI,CAAC;YACJ,MAAM,SAAS,EAAE,CAAC;YAClB,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACzD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5E,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;YAC5E,MAAM,KAAK,CAAC;QACb,CAAC;IAAA,CACD;IAED,KAAK,CAAC,OAAO,CAAC,SAA4D,EAA0B;QACnG,MAAM,WAAW,GAAG,iBAAiB,EAAE,CAAC;QACxC,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE,CAAC;QAChE,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,kBAAkB,EAAE,CAAC;QAElE,kFAAkF;QAClF,MAAM,WAAW,GAAsD,EAAE,CAAC;QAC1E,KAAK,MAAM,GAAG,IAAI,eAAe,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;YAClD,WAAW,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAC7C,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,cAAc,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;YACjD,WAAW,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1C,CAAC;QAED,mEAAmE;QACnE,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QACxD,MAAM,IAAI,CAAC,qBAAqB,CAAC,cAAc,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;QAEzE,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC;QACpC,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;QAEvD,KAAK,MAAM,YAAY,IAAI,cAAc,EAAE,CAAC;YAC3C,MAAM,MAAM,GAAG,YAAY,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;YACvD,MAAM,aAAa,GAAG,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,EAAE,CAAa,CAAC;YACvE,MAAM,cAAc,GAAG,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,EAAE,CAAa,CAAC;YACzE,mBAAmB,CAClB,cAAc,EACd,YAAY,EACZ,MAAM,EACN;gBACC,MAAM,EAAE,OAAO;gBACf,KAAK,EAAE,SAAS;gBAChB,MAAM,EAAE,WAAW;aACnB,EACD,cAAc,CACd,CAAC;YACF,mBAAmB,CAClB,aAAa,EACb,YAAY,EACZ,MAAM,EACN;gBACC,MAAM,EAAE,OAAO;gBACf,KAAK,EAAE,MAAM;gBACb,MAAM,EAAE,WAAW;aACnB,EACD,aAAa,CACb,CAAC;QACH,CAAC;QAED,0BAA0B,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;QAElH,OAAO,eAAe,CAAC,WAAW,CAAC,CAAC;IAAA,CACpC;IAED,KAAK,CAAC,sBAAsB,CAC3B,OAAiB,EACjB,OAAkD,EACzB;QACzB,MAAM,WAAW,GAAG,iBAAiB,EAAE,CAAC;QACxC,MAAM,KAAK,GAAgB,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;QAClG,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,MAAuB,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QAC1F,MAAM,IAAI,CAAC,qBAAqB,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;QAC9D,OAAO,eAAe,CAAC,WAAW,CAAC,CAAC;IAAA,CACpC;IAED,sBAAsB,GAAwB;QAC7C,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE,CAAC;QAChE,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,kBAAkB,EAAE,CAAC;QAClE,MAAM,kBAAkB,GAAwB,EAAE,CAAC;QAEnD,KAAK,MAAM,GAAG,IAAI,cAAc,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;YACjD,MAAM,MAAM,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;YAC1D,kBAAkB,CAAC,IAAI,CAAC;gBACvB,MAAM;gBACN,KAAK,EAAE,MAAM;gBACb,QAAQ,EAAE,OAAO,GAAG,KAAK,QAAQ;gBACjC,aAAa,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC;aACpD,CAAC,CAAC;QACJ,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,eAAe,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;YAClD,MAAM,MAAM,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;YAC1D,kBAAkB,CAAC,IAAI,CAAC;gBACvB,MAAM;gBACN,KAAK,EAAE,SAAS;gBAChB,QAAQ,EAAE,OAAO,GAAG,KAAK,QAAQ;gBACjC,aAAa,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,SAAS,CAAC;aACvD,CAAC,CAAC;QACJ,CAAC;QAED,OAAO,kBAAkB,CAAC;IAAA,CAC1B;IAED,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,OAA6B,EAAiB;QAC3E,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACxC,MAAM,KAAK,GAAgB,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;QAC/D,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,MAAM,KAAK,EAAE,KAAK,IAAI,EAAE,CAAC;YACjF,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;gBAC3B,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;gBAC5C,OAAO;YACR,CAAC;YACD,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;gBAC3B,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBACrC,OAAO;YACR,CAAC;YACD,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC/C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC3B,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,6BAA6B,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;gBACvE,CAAC;gBACD,OAAO;YACR,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,sCAAsC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QAAA,CACvE,CAAC,CAAC;IAAA,CACH;IAED,KAAK,CAAC,iBAAiB,CAAC,MAAc,EAAE,OAA6B,EAAiB;QACrF,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACpC,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAA,CAC1C;IAED,KAAK,CAAC,MAAM,CAAC,MAAc,EAAE,OAA6B,EAAiB;QAC1E,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACxC,MAAM,KAAK,GAAgB,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;QAC/D,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,MAAM,KAAK,EAAE,KAAK,IAAI,EAAE,CAAC;YAC9E,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;gBAC3B,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBACvC,OAAO;YACR,CAAC;YACD,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;gBAC3B,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBACpC,OAAO;YACR,CAAC;YACD,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC7B,OAAO;YACR,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,qCAAqC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QAAA,CACtE,CAAC,CAAC;IAAA,CACH;IAED,KAAK,CAAC,gBAAgB,CAAC,MAAc,EAAE,OAA6B,EAAoB;QACvF,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAA,CACtD;IAED,KAAK,CAAC,MAAM,CAAC,MAAe,EAAiB;QAC5C,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE,CAAC;QAChE,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,kBAAkB,EAAE,CAAC;QAClE,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACtE,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,MAAM,aAAa,GAA6B,EAAE,CAAC;QAEnD,KAAK,MAAM,GAAG,IAAI,cAAc,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;YACjD,MAAM,SAAS,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;YAC7D,IAAI,QAAQ,IAAI,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,QAAQ;gBAAE,SAAS;YAClF,OAAO,GAAG,IAAI,CAAC;YACf,aAAa,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1D,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,eAAe,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;YAClD,MAAM,SAAS,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;YAC7D,IAAI,QAAQ,IAAI,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,SAAS,CAAC,KAAK,QAAQ;gBAAE,SAAS;YACrF,OAAO,GAAG,IAAI,CAAC;YACf,aAAa,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAC7D,CAAC;QAED,IAAI,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CACd,IAAI,CAAC,6BAA6B,CAAC,MAAM,EAAE;gBAC1C,GAAG,CAAC,cAAc,CAAC,QAAQ,IAAI,EAAE,CAAC;gBAClC,GAAG,CAAC,eAAe,CAAC,QAAQ,IAAI,EAAE,CAAC;aACnC,CAAC,CACF,CAAC;QACH,CAAC;QAED,MAAM,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC,CAAC;IAAA,CAClD;IAEO,KAAK,CAAC,uBAAuB,CAAC,OAAiC,EAAiB;QACvF,IAAI,oBAAoB,EAAE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpD,OAAO;QACR,CAAC;QAED,MAAM,aAAa,GAAsB,EAAE,CAAC;QAC5C,MAAM,aAAa,GAAsB,EAAE,CAAC;QAE5C,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC9C,kFAAkF;YAClF,kFAAkF;YAClF,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;gBAC3B,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;oBACpB,aAAa,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;gBAC1C,CAAC;YACF,CAAC;iBAAM,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;gBAClC,aAAa,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YAC1C,CAAC;QACF,CAAC;QAED,MAAM,aAAa,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YAC/D,KAAK;YACL,YAAY,EAAE,MAAM,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC;SACzE,CAAC,CAAC,CAAC;QACJ,MAAM,eAAe,GAAG,MAAM,kBAAkB,CAAC,aAAa,EAAE,wBAAwB,CAAC,CAAC;QAC1F,MAAM,cAAc,GAAsB,EAAE,CAAC;QAC7C,MAAM,iBAAiB,GAAsB,EAAE,CAAC;QAChD,KAAK,MAAM,MAAM,IAAI,eAAe,EAAE,CAAC;YACtC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;gBAC1B,SAAS;YACV,CAAC;YACD,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;gBACnC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACnC,CAAC;iBAAM,CAAC;gBACP,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACtC,CAAC;QACF,CAAC;QAED,MAAM,KAAK,GAAoB,EAAE,CAAC;QAClC,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;QACzD,CAAC;QACD,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CACjC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CACrB,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,EAAE,YAAY,KAAK,CAAC,MAAM,KAAK,EAAE,KAAK,IAAI,EAAE,CAAC;gBACpF,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;YAAA,CAChD,CAAC,CACH,CAAC;YACF,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,sBAAsB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC,CAAC;QACjF,CAAC;QAED,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAAA,CACzB;IAEO,KAAK,CAAC,qBAAqB,CAAC,MAAiB,EAAE,KAA2B,EAAoB;QACrG,MAAM,aAAa,GAAG,wBAAwB,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QAC5E,MAAM,gBAAgB,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC5G,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC;QACb,CAAC;QAED,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/G,OAAO,EAAE,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC;IAAA,CAC3C;IAEO,KAAK,CAAC,cAAc,CAAC,OAA0B,EAAE,KAA2B,EAAiB;QACpG,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO;QACR,CAAC;QAED,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,eAAe,CAAC;QACvF,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,YAAY,KAAK,kBAAkB,CAAC;QAChH,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC;QAEjH,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC;YACnE,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAAA,CACzC,CAAC,CAAC;IAAA,CACH;IAEO,KAAK,CAAC,eAAe,CAAC,KAAe,EAAE,KAA2B,EAAiB;QAC1F,MAAM,WAAW,GAAG,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAClE,gBAAgB,CAAC,WAAW,CAAC,CAAC;QAC9B,MAAM,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC;IAAA,CAC9E;IAED,KAAK,CAAC,wBAAwB,GAA6B;QAC1D,IAAI,oBAAoB,EAAE,EAAE,CAAC;YAC5B,OAAO,EAAE,CAAC;QACX,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE,CAAC;QAChE,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,kBAAkB,EAAE,CAAC;QAClE,MAAM,WAAW,GAAsD,EAAE,CAAC;QAC1E,KAAK,MAAM,GAAG,IAAI,eAAe,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;YAClD,WAAW,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAC7C,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,cAAc,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;YACjD,WAAW,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1C,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,cAAc;aAC3B,MAAM,CACN,CAAC,KAAK,EAA6E,EAAE,CACpF,KAAK,CAAC,KAAK,KAAK,WAAW,CAC5B;aACA,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,IAAwC,EAAE,CAAC;YAC/D,MAAM,MAAM,GAAG,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;YAC5E,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACxC,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAC9C,OAAO,SAAS,CAAC;YAClB,CAAC;YAED,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;gBAC3B,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;gBAClE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;oBAChC,OAAO,SAAS,CAAC;gBAClB,CAAC;gBACD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;gBAC1E,IAAI,CAAC,SAAS,EAAE,CAAC;oBAChB,OAAO,SAAS,CAAC;gBAClB,CAAC;gBACD,OAAO;oBACN,MAAM;oBACN,WAAW,EAAE,MAAM,CAAC,IAAI;oBACxB,IAAI,EAAE,KAAK;oBACX,KAAK,EAAE,KAAK,CAAC,KAAK;iBAClB,CAAC;YACH,CAAC;YAED,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;YAClE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;gBAChC,OAAO,SAAS,CAAC;YAClB,CAAC;YACD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAAC;YAClE,IAAI,CAAC,SAAS,EAAE,CAAC;gBAChB,OAAO,SAAS,CAAC;YAClB,CAAC;YACD,OAAO;gBACN,MAAM;gBACN,WAAW,EAAE,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE;gBAC5C,IAAI,EAAE,KAAK;gBACX,KAAK,EAAE,KAAK,CAAC,KAAK;aAClB,CAAC;QAAA,CACF,CAAC,CAAC;QAEJ,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;QAC3E,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAA2B,EAAE,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;IAAA,CACjF;IAEO,KAAK,CAAC,qBAAqB,CAClC,OAA0D,EAC1D,WAAgC,EAChC,SAA4D,EAC5C;QAChB,KAAK,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,OAAO,EAAE,CAAC;YACtC,MAAM,SAAS,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;YAC7D,MAAM,MAAM,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;YACzD,MAAM,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;YAClE,MAAM,cAAc,GAAG,SAAS,EAAE,MAAM,IAAI,SAAS,CAAC;YACtD,MAAM,aAAa,GAAG,SAAS,EAAE,KAAK,IAAI,KAAK,CAAC;YAChD,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;YAChD,MAAM,QAAQ,GAAiB,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;YAE/E,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;gBACvD,MAAM,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBACrE,IAAI,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;oBAC/B,IAAI,CAAC;wBACJ,IAAI,QAAQ,CAAC,aAAa,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;4BAC3C,QAAQ,CAAC,OAAO,GAAG,aAAa,CAAC;4BACjC,uBAAuB,CAAC,aAAa,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;wBACvE,CAAC;oBACF,CAAC;oBAAC,MAAM,CAAC;wBACR,0CAA0C;oBAC3C,CAAC;gBACF,CAAC;gBACD,SAAS;YACV,CAAC;YAED,MAAM,cAAc,GAAG,KAAK,IAAsB,EAAE,CAAC;gBACpD,IAAI,oBAAoB,EAAE;oBAAE,OAAO,KAAK,CAAC;gBACzC,IAAI,CAAC,SAAS,EAAE,CAAC;oBAChB,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;oBACtD,OAAO,IAAI,CAAC;gBACb,CAAC;gBACD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,cAAc,CAAC,CAAC;gBAC/C,IAAI,MAAM,KAAK,MAAM;oBAAE,OAAO,KAAK,CAAC;gBACpC,IAAI,MAAM,KAAK,OAAO;oBAAE,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,0BAA0B,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC;gBACnG,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;gBACtD,OAAO,IAAI,CAAC;YAAA,CACZ,CAAC;YAEF,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;gBAC3B,IAAI,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;gBAClE,MAAM,YAAY,GACjB,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,MAAM,oCAAoC,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;gBACpG,IAAI,YAAY,EAAE,CAAC;oBAClB,MAAM,SAAS,GAAG,MAAM,cAAc,EAAE,CAAC;oBACzC,IAAI,CAAC,SAAS;wBAAE,SAAS;oBACzB,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;gBAC/D,CAAC;gBACD,QAAQ,CAAC,OAAO,GAAG,aAAa,CAAC;gBACjC,uBAAuB,CAAC,aAAa,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;gBACtE,SAAS;YACV,CAAC;YAED,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;gBAC3B,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;gBACpE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;oBAChC,MAAM,SAAS,GAAG,MAAM,cAAc,EAAE,CAAC;oBACzC,IAAI,CAAC,SAAS;wBAAE,SAAS;gBAC1B,CAAC;qBAAM,IAAI,aAAa,KAAK,WAAW,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,oBAAoB,EAAE,EAAE,CAAC;oBACvF,MAAM,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;gBAC9D,CAAC;gBACD,QAAQ,CAAC,OAAO,GAAG,aAAa,CAAC;gBACjC,uBAAuB,CAAC,aAAa,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;YACvE,CAAC;QACF,CAAC;IAAA,CACD;IAEO,qBAAqB,CAC5B,GAAkB,EAClB,KAAkB,EAClB,OAA0D,EACL;QACrD,IAAI,KAAK,KAAK,SAAS,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,QAAQ,KAAK,KAAK;YAAE,OAAO,SAAS,CAAC;QAC/F,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC5D,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAC7B,CAAC,KAAK,EAAE,EAAE,CACT,KAAK,CAAC,KAAK,KAAK,MAAM;YACtB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,KAAK,QAAQ,CACrF,CAAC;QACF,OAAO,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAAA,CACrG;IAEO,KAAK,CAAC,mBAAmB,CAAC,MAAoB,EAAE,KAAkB,EAAiB;QAC1F,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAC3B,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,KAAK,WAAW,CAAC,CAAC;YAC5D,OAAO;QACR,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;YAC3B,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACrC,OAAO;QACR,CAAC;IAAA,CACD;IAEO,WAAW,CAAC,MAAc,EAAgB;QACjD,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;IAAA,CAC3B;IAEO,kBAAkB,CAAC,KAAkB,EAAU;QACtD,OAAO,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAAA,CAC/C;IAEO,WAAW,CAAC,KAAa,EAAU;QAC1C,OAAO,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAAA,CACxC;IAEO,mBAAmB,CAAC,KAAa,EAAE,OAAe,EAAU;QACnE,OAAO,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAAA,CAC3C;IAEO,sBAAsB,CAAC,GAAkB,EAAU;QAC1D,OAAO,sBAAsB,CAAC,GAAG,CAAC,CAAC;IAAA,CACnC;IAEO,yBAAyB,CAAC,MAAc,EAAU;QACzD,OAAO,yBAAyB,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAAA,CACvD;IAEO,4BAA4B,CAAC,MAAc,EAAE,KAAkB,EAAU;QAChF,OAAO,4BAA4B,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAAA,CACjE;IAEO,mBAAmB,CAAC,QAAuB,EAAE,WAAmB,EAAE,KAAkB,EAAW;QACtG,MAAM,IAAI,GAAG,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC;QAC7F,MAAM,KAAK,GAAG,IAAI,CAAC,yBAAyB,CAAC,WAAW,CAAC,CAAC;QAC1D,OAAO,IAAI,KAAK,KAAK,CAAC;IAAA,CACtB;IAEO,iCAAiC,CAAC,MAAc,EAAE,KAAkB,EAAU;QACrF,OAAO,iCAAiC,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAAA,CACtE;IAEO,kBAAkB,CAAC,MAAc,EAAE,KAAmB,EAAU;QACvE,OAAO,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAAA,CACvD;IAEO,cAAc,CACrB,QAA2D,EACP;QACpD,OAAO,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAAA,CAC9C;IAEO,6BAA6B,CAAC,MAAc,EAAE,kBAAmC,EAAU;QAClG,OAAO,6BAA6B,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAAA,CACjE;IAEO,aAAa,GAAwC;QAC5D,OAAO,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAAA,CACnC;IAEO,sBAAsB,CAAC,aAAqB,EAAsB;QACzE,OAAO,sBAAsB,CAAC,aAAa,CAAC,CAAC;IAAA,CAC7C;IAEO,iBAAiB,CAAC,MAAiB,EAAE,KAAkB,EAAU;QACxE,OAAO,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAAA,CACtD;IAEO,KAAK,CAAC,qBAAqB,CAAC,MAAiB,EAAE,aAAqB,EAAoB;QAC/F,IAAI,oBAAoB,EAAE,EAAE,CAAC;YAC5B,OAAO,KAAK,CAAC;QACd,CAAC;QAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,CAAC;QACpE,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACvB,OAAO,KAAK,CAAC;QACd,CAAC;QAED,IAAI,CAAC;YACJ,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;YAC/G,OAAO,EAAE,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC;QAC5C,CAAC;QAAC,MAAM,CAAC;YACR,OAAO,KAAK,CAAC;QACd,CAAC;IAAA,CACD;IAEO,KAAK,CAAC,mBAAmB,CAAC,WAAmB,EAAE,KAAc,EAAmB;QACvF,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAC1C,UAAU,CAAC,OAAO,EAClB,CAAC,GAAG,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,CAAC,EAC9D,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAChD,CAAC;QACF,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC;QAC7D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAY,CAAC;QAC1C,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAChC,OAAO,MAAM,CAAC;QACf,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC1G,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YACxF,IAAI,MAAM;gBAAE,OAAO,MAAM,CAAC;QAC3B,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC;IAAA,CACxD;IAEO,KAAK,CAAC,qBAAqB,CAAC,aAAqB,EAAoB;QAC5E,IAAI,oBAAoB,EAAE,EAAE,CAAC;YAC5B,OAAO,KAAK,CAAC;QACd,CAAC;QAED,IAAI,CAAC;YACJ,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE;gBAC5E,GAAG,EAAE,aAAa;gBAClB,SAAS,EAAE,kBAAkB;aAC7B,CAAC,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;YAC9D,OAAO,SAAS,CAAC,IAAI,EAAE,KAAK,UAAU,CAAC,IAAI,EAAE,CAAC;QAC/C,CAAC;QAAC,MAAM,CAAC;YACR,OAAO,KAAK,CAAC;QACd,CAAC;IAAA,CACD;IAEO,KAAK,CAAC,gBAAgB,CAAC,aAAqB,EAAmB;QACtE,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;QAChE,IAAI,WAAW,EAAE,CAAC;YACjB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE,CAAC,WAAW,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;YACvG,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;YACtD,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChB,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;YACjB,CAAC;QACF,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE,CAAC,WAAW,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;QAClG,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC3D,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;IAAA,CAChB;IAEO,KAAK,CAAC,uBAAuB,CACpC,aAAqB,EACyC;QAC9D,IAAI,CAAC;YACJ,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,cAAc,EAAE,aAAa,CAAC,EAAE;gBAClG,GAAG,EAAE,aAAa;gBAClB,SAAS,EAAE,kBAAkB;aAC7B,CAAC,CAAC;YACH,MAAM,eAAe,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;YACxC,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC5C,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,yCAAyC,EAAE,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC;YAC9F,CAAC;YACD,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YACvD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC;YACpD,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,aAAa,CAAC,EAAE;gBAC9E,GAAG,EAAE,aAAa;gBAClB,SAAS,EAAE,kBAAkB;aAC7B,CAAC,CAAC;YACH,OAAO;gBACN,GAAG,EAAE,aAAa;gBAClB,IAAI;gBACJ,SAAS,EAAE;oBACV,OAAO;oBACP,SAAS;oBACT,WAAW;oBACX,QAAQ;oBACR,eAAe,MAAM,wBAAwB,MAAM,EAAE;iBACrD;aACD,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACR,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC;YAC7G,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,aAAa,CAAC,EAAE;gBAC9E,GAAG,EAAE,aAAa;gBAClB,SAAS,EAAE,kBAAkB;aAC7B,CAAC,CAAC;YACH,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC,cAAc,EAAE,0BAA0B,CAAC,EAAE;gBACvG,GAAG,EAAE,aAAa;gBAClB,SAAS,EAAE,kBAAkB;aAC7B,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YACnB,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,0BAA0B,EAAE,EAAE,CAAC,CAAC;YAC5E,IAAI,MAAM,EAAE,CAAC;gBACZ,OAAO;oBACN,GAAG,EAAE,aAAa;oBAClB,IAAI;oBACJ,SAAS,EAAE;wBACV,OAAO;wBACP,SAAS;wBACT,WAAW;wBACX,QAAQ;wBACR,eAAe,MAAM,wBAAwB,MAAM,EAAE;qBACrD;iBACD,CAAC;YACH,CAAC;YACD,OAAO;gBACN,GAAG,EAAE,aAAa;gBAClB,IAAI;gBACJ,SAAS,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,gCAAgC,CAAC;aACxF,CAAC;QACH,CAAC;IAAA,CACD;IAEO,KAAK,CAAC,iBAAiB,CAAC,aAAqB,EAA+B;QACnF,IAAI,CAAC;YACJ,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,cAAc,EAAE,aAAa,CAAC,EAAE;gBAClG,GAAG,EAAE,aAAa;gBAClB,SAAS,EAAE,kBAAkB;aAC7B,CAAC,CAAC;YACH,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;YAChC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBACpC,OAAO,SAAS,CAAC;YAClB,CAAC;YACD,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC/C,OAAO,MAAM,CAAC,CAAC,CAAC,cAAc,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QACpD,CAAC;QAAC,MAAM,CAAC;YACR,OAAO,SAAS,CAAC;QAClB,CAAC;IAAA,CACD;IAEO,mBAAmB,CAAC,aAAqB,EAAE,IAAc,EAAmB;QACnF,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,IAAI,EAAE;YAC1C,GAAG,EAAE,aAAa;YAClB,SAAS,EAAE,kBAAkB;YAC7B,GAAG,EAAE;gBACJ,mBAAmB,EAAE,GAAG;aACxB;SACD,CAAC,CAAC;IAAA,CACH;IAEO,gBAAgB,GAAW;QAClC,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACxC,MAAM,UAAU,GAAG,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvE,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,uBAAuB,KAAK,UAAU,EAAE,CAAC;YACvE,OAAO,IAAI,CAAC,aAAa,CAAC;QAC3B,CAAC;QACD,IAAI,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK,EAAE,CAAC;YACnD,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAClE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;QACjF,CAAC;aAAM,CAAC;YACP,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACpE,CAAC;QACD,IAAI,CAAC,uBAAuB,GAAG,UAAU,CAAC;QAC1C,OAAO,IAAI,CAAC,aAAa,CAAC;IAAA,CAC1B;IAEO,wBAAwB,CAAC,WAAmB,EAAsB;QACzE,IAAI,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC;YACpD,OAAO,SAAS,CAAC;QAClB,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;QAChF,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAgE,CAAC;QAClG,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC;YACrD,IAAI,IAAI;gBAAE,OAAO,IAAI,CAAC;QACvB,CAAC;QACD,OAAO,SAAS,CAAC;IAAA,CACjB;IAEO,6BAA6B,CAAC,MAAiB,EAAsB;QAC5E,kFAAkF;QAClF,uFAAuF;QACvF,IAAI,CAAC;YACJ,OAAO,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QACjG,CAAC;QAAC,MAAM,CAAC;YACR,OAAO,SAAS,CAAC;QAClB,CAAC;IAAA,CACD;IAEO,iBAAiB,CAAC,MAAiB,EAAE,KAAkB,EAAU;QACxE,MAAM,WAAW,GAAG,wBAAwB,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QAC1E,IAAI,KAAK,KAAK,MAAM,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YACjD,OAAO,WAAW,CAAC;QACpB,CAAC;QACD,MAAM,UAAU,GAAG,IAAI,CAAC,6BAA6B,CAAC,MAAM,CAAC,CAAC;QAC9D,OAAO,UAAU,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC;IAAA,CACvE;IAEO,KAAK,CAAC,UAAU,CAAC,MAAiB,EAAE,KAAkB,EAAE,SAAkB,EAAiB;QAClG,MAAM,WAAW,GAAG,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;QACtE,gBAAgB,CAAC,WAAW,CAAC,CAAC;QAC9B,MAAM,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC;IAAA,CACtF;IAEO,KAAK,CAAC,YAAY,CAAC,MAAiB,EAAE,KAAkB,EAAiB;QAChF,MAAM,WAAW,GAAG,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAClE,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAC9B,OAAO;QACR,CAAC;QACD,MAAM,kBAAkB,GAAG,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/D,IAAI,kBAAkB,KAAK,KAAK,EAAE,CAAC;YAClC,MAAM,IAAI,CAAC,aAAa,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;YAC3E,OAAO;QACR,CAAC;QACD,MAAM,IAAI,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;QACjE,IAAI,kBAAkB,KAAK,MAAM,EAAE,CAAC;YACnC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACjC,CAAC;QACD,MAAM,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAAA,CAC/B;IAEO,KAAK,CAAC,UAAU,CAAC,MAAiB,EAAE,KAAkB,EAAiB;QAC9E,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACxD,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3B,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;gBAChB,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC,CAAC;gBAClF,OAAO;YACR,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC;YAC7D,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,OAAO;QACR,CAAC;QACD,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACvD,IAAI,OAAO,EAAE,CAAC;YACb,eAAe,CAAC,OAAO,CAAC,CAAC;QAC1B,CAAC;QACD,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACnD,MAAM,CAAC,sBAAsB,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAE3D,IAAI,CAAC;YACJ,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;YAChE,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;gBAChB,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;YAC5E,CAAC;YACD,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;YACxD,IAAI,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;gBACjC,MAAM,IAAI,CAAC,aAAa,CAAC,2BAA2B,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;YACzF,CAAC;QACF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACpD,oBAAoB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACzC,MAAM,KAAK,CAAC;QACb,CAAC;IAAA,CACD;IAEO,KAAK,CAAC,SAAS,CAAC,MAAiB,EAAE,KAAkB,EAAiB;QAC7E,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACxD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YACrC,OAAO;QACR,CAAC;QAED,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;YAChB,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC,CAAC;YAClF,OAAO;QACR,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC;QAC7D,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IAAA,CACjE;IAEO,KAAK,CAAC,4BAA4B,CAAC,SAAiB,EAAiB;QAC5E,IAAI,CAAC,yBAAyB,CAAC,SAAS,CAAC;YAAE,OAAO;QAClD,MAAM,IAAI,CAAC,aAAa,CAAC,2BAA2B,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;IAAA,CACxF;IAEO,KAAK,CAAC,8BAA8B,CAAC,SAAiB,EAAE,UAAkB,EAAiB;QAClG,6EAA6E;QAC7E,4EAA4E;QAC5E,IAAI,CAAC;YACJ,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;QACrE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,IAAI,CAAC,4BAA4B,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAC,CAAC,CAAC,CAAC;YACnE,MAAM,KAAK,CAAC;QACb,CAAC;QAED,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QACxD,IAAI,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,CAAC,aAAa,CAAC,2BAA2B,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;QACzF,CAAC;QACD,MAAM,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAAA,CACpC;IAEO,KAAK,CAAC,YAAY,CAAC,SAAiB,EAAE,SAAmB,EAAE,GAAW,EAAiB;QAC9F,4EAA4E;QAC5E,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;QAE5D,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE;YAC5E,GAAG,EAAE,SAAS;YACd,SAAS,EAAE,kBAAkB;SAC7B,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,GAAG,GAAG,WAAW,CAAC;QACpC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC,EAAE;YAChF,GAAG,EAAE,SAAS;YACd,SAAS,EAAE,kBAAkB;SAC7B,CAAC,CAAC;QACH,MAAM,UAAU,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAC;QACrD,IAAI,SAAS,CAAC,IAAI,EAAE,KAAK,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC;YAC5C,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC5B,MAAM,IAAI,CAAC,8BAA8B,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;YAClE,CAAC;iBAAM,CAAC;gBACP,MAAM,IAAI,CAAC,4BAA4B,CAAC,SAAS,CAAC,CAAC;YACpD,CAAC;YACD,OAAO;QACR,CAAC;QAED,aAAa,CAAC,UAAU,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;QACvC,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;QACjF,MAAM,IAAI,CAAC,8BAA8B,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAAA,CACjE;IAEO,KAAK,CAAC,yBAAyB,CAAC,MAAiB,EAAE,SAAiB,EAAiB;QAC5F,IAAI,oBAAoB,EAAE,EAAE,CAAC;YAC5B,OAAO;QACR,CAAC;QACD,IAAI,CAAC;YACJ,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,cAAc,SAAS,KAAK,EAAE,KAAK,IAAI,EAAE,CAAC;gBACpF,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YAAA,CAC1C,CAAC,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACR,mDAAmD;QACpD,CAAC;IAAA,CACD;IAEO,KAAK,CAAC,SAAS,CAAC,MAAiB,EAAE,KAAkB,EAAiB;QAC7E,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACxD,MAAM,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACpD,MAAM,CAAC,sBAAsB,CAAC,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3D,oBAAoB,CAAC,SAAS,EAAE,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IAAA,CACxE;IAEO,KAAK,CAAC,aAAa,CAAC,IAAc,EAAE,OAA0B,EAAiB;QACtF,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACxC,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,GAAG,UAAU,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;IAAA,CAClF;IAEO,iBAAiB,CAAC,IAAc,EAAU;QACjD,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACxC,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,GAAG,UAAU,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IAAA,CAC9E;IAEO,YAAY,CAAC,OAAe,EAAE,IAAc,EAAE,OAA0B,EAAgB;QAC/F,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;QACrB,OAAO,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE;YAClC,GAAG,EAAE,OAAO,EAAE,GAAG;YACjB,KAAK,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;YACzD,GAAG;SACH,CAAC,CAAC;IAAA,CACH;IAEO,mBAAmB,CAC1B,OAAe,EACf,IAAc,EACd,OAAwD,EACR;QAChD,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;QACpE,OAAO,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE;YAClC,GAAG,EAAE,OAAO,EAAE,GAAG;YACjB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;YACjC,GAAG;SACH,CAAC,CAAC;IAAA,CACH;IAEO,iBAAiB,CACxB,OAAe,EACf,IAAc,EACd,OAA4E,EAC1D;QAClB,OAAO,IAAI,OAAO,CAAC,CAAC,cAAc,EAAE,MAAM,EAAE,EAAE,CAAC;YAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YAC/D,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,IAAI,QAAQ,GAAG,KAAK,CAAC;YACrB,MAAM,OAAO,GACZ,OAAO,OAAO,EAAE,SAAS,KAAK,QAAQ;gBACrC,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;oBACjB,QAAQ,GAAG,IAAI,CAAC;oBAChB,KAAK,CAAC,IAAI,EAAE,CAAC;gBAAA,CACb,EAAE,OAAO,CAAC,SAAS,CAAC;gBACtB,CAAC,CAAC,SAAS,CAAC;YAEd,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;gBAClC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAAA,CAC1B,CAAC,CAAC;YACH,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;gBAClC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAAA,CAC1B,CAAC,CAAC;YACH,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC;gBAC9B,IAAI,OAAO;oBAAE,YAAY,CAAC,OAAO,CAAC,CAAC;gBACnC,MAAM,CAAC,KAAK,CAAC,CAAC;YAAA,CACd,CAAC,CAAC;YACH,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC;gBACrC,IAAI,OAAO;oBAAE,YAAY,CAAC,OAAO,CAAC,CAAC;gBACnC,IAAI,QAAQ,EAAE,CAAC;oBACd,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,oBAAoB,OAAO,EAAE,SAAS,IAAI,CAAC,CAAC,CAAC;oBAC1F,OAAO;gBACR,CAAC;gBACD,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;oBAChB,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;oBAC9B,OAAO;gBACR,CAAC;gBACD,MAAM,UAAU,GAAG,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,UAAU,MAAM,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC;gBACpF,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,UAAU,KAAK,MAAM,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC;YAAA,CACjG,CAAC,CAAC;QAAA,CACH,CAAC,CAAC;IAAA,CACH;IAEO,UAAU,CAAC,OAAe,EAAE,IAAc,EAAE,OAA0B,EAAiB;QAC9F,OAAO,IAAI,OAAO,CAAC,CAAC,cAAc,EAAE,MAAM,EAAE,EAAE,CAAC;YAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YACxD,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC1B,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;gBAC1B,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;oBAChB,cAAc,EAAE,CAAC;gBAClB,CAAC;qBAAM,CAAC;oBACP,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAC,CAAC;gBAC5E,CAAC;YAAA,CACD,CAAC,CAAC;QAAA,CACH,CAAC,CAAC;IAAA,CACH;IAEO,cAAc,CAAC,OAAe,EAAE,IAAc,EAAU;QAC/D,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE;YAC9C,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;YACjC,QAAQ,EAAE,OAAO;YACjB,GAAG;SACH,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CACd,CAAC,CAAC,0CAA0C,EAAE;gBAC7C,OAAO;gBACP,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;gBACpB,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM;aAC/D,CAAC,CACF,CAAC;QACH,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAAA,CACrD;CACD","sourcesContent":["import type { ChildProcess, ChildProcessByStdio } from \"node:child_process\";\nimport { existsSync, mkdirSync, rmSync, statSync, writeFileSync } from \"node:fs\";\nimport { dirname, join } from \"node:path\";\nimport type { Readable } from \"node:stream\";\nimport { gt, maxSatisfying, rcompare } from \"semver\";\nimport { CONFIG_DIR_NAME } from \"../config.ts\";\nimport { spawnProcess, spawnProcessSync } from \"../utils/child-process.ts\";\nimport type { GitSource } from \"../utils/git.ts\";\nimport { resolvePath as resolvePathWithBase } from \"../utils/paths.ts\";\nimport { t } from \"./i18n/index.ts\";\nimport { isStdoutTakenOver } from \"./output-guard.ts\";\nimport {\n\tensureGitIgnore,\n\tensureNpmProject,\n\tgetGitDependencyInstallArgs,\n\tgetGitInstallPath,\n\tgetGitInstallRoot,\n\tgetGitUpdateMarkerPath,\n\tgetInstalledNpmVersion,\n\tgetManagedNpmInstallPath,\n\tgetNpmCommand,\n\tgetNpmInstallArgs,\n\tgetNpmInstallRoot,\n\tgetPackageManagerName,\n\thasMissingGitDependencies,\n\tinstalledNpmMatchesConfiguredVersion,\n\tpruneEmptyGitParents,\n} from \"./package-install-host.ts\";\nimport { getEnv, isOfflineModeEnabled, runWithConcurrency } from \"./package-process-runner.ts\";\nimport {\n\taddAutoDiscoveredResources,\n\tcollectPackageResources,\n\tcreateAccumulator,\n\tgetTargetMap,\n\tresolveLocalEntries,\n\ttoResolvedPaths,\n} from \"./package-resource-collection.ts\";\nimport { RESOURCE_TYPES } from \"./package-resource-discovery.ts\";\nimport {\n\tbuildNoMatchingPackageMessage,\n\ttype ConfiguredPackage,\n\ttype ConfiguredUpdateSource,\n\tdedupePackages,\n\ttype GitUpdateTarget,\n\tgetBaseDirForScope,\n\tgetPackageIdentity,\n\tgetPackageSourceString,\n\tgetSourceMatchKeyForInput,\n\tgetSourceMatchKeyForSettings,\n\ttype InstalledSourceScope,\n\ttype MissingSourceAction,\n\ttype NpmSource,\n\ttype NpmUpdateTarget,\n\tnormalizePackageSourceForSettings,\n\ttype PackageManager,\n\ttype PackageManagerContext,\n\ttype PackageManagerOptions,\n\ttype PackageUpdate,\n\ttype ParsedSource,\n\ttype PathMetadata,\n\ttype ProgressCallback,\n\ttype ProgressEvent,\n\tparseSource,\n\ttype ResolvedPaths,\n\ttype ResourceAccumulator,\n\tresolvePath,\n\tresolvePathFromBase,\n\ttype SourceScope,\n} from \"./package-source.ts\";\nimport type { PackageSource, SettingsManager } from \"./settings-manager.ts\";\n\nexport { getPackageTempFolder } from \"./package-install-host.ts\";\nexport type {\n\tConfiguredPackage,\n\tMissingSourceAction,\n\tPackageManager,\n\tPackageUpdate,\n\tPathMetadata,\n\tProgressCallback,\n\tProgressEvent,\n\tResolvedPaths,\n\tResolvedResource,\n} from \"./package-source.ts\";\n\nconst NETWORK_TIMEOUT_MS = 10000;\nconst UPDATE_CHECK_CONCURRENCY = 4;\nconst GIT_UPDATE_CONCURRENCY = 4;\n\nexport class DefaultPackageManager implements PackageManager {\n\tprivate cwd: string;\n\tprivate agentDir: string;\n\tprivate settingsManager: SettingsManager;\n\tprivate globalNpmRoot: string | undefined;\n\tprivate globalNpmRootCommandKey: string | undefined;\n\tprivate progressCallback: ProgressCallback | undefined;\n\n\tconstructor(options: PackageManagerOptions) {\n\t\tthis.cwd = resolvePathWithBase(options.cwd);\n\t\tthis.agentDir = resolvePathWithBase(options.agentDir);\n\t\tthis.settingsManager = options.settingsManager;\n\t}\n\n\tprivate get context(): PackageManagerContext {\n\t\treturn { cwd: this.cwd, agentDir: this.agentDir, settingsManager: this.settingsManager };\n\t}\n\n\tsetProgressCallback(callback: ProgressCallback | undefined): void {\n\t\tthis.progressCallback = callback;\n\t}\n\n\taddSourceToSettings(source: string, options?: { local?: boolean }): boolean {\n\t\tconst scope: SourceScope = options?.local ? \"project\" : \"user\";\n\t\tconst currentSettings =\n\t\t\tscope === \"project\" ? this.settingsManager.getProjectSettings() : this.settingsManager.getGlobalSettings();\n\t\tconst currentPackages = currentSettings.packages ?? [];\n\t\tconst normalizedSource = this.normalizePackageSourceForSettings(source, scope);\n\t\tconst matchIndex = currentPackages.findIndex((existing) => this.packageSourcesMatch(existing, source, scope));\n\t\tif (matchIndex !== -1) {\n\t\t\tconst existing = currentPackages[matchIndex];\n\t\t\tif (this.getPackageSourceString(existing) === normalizedSource) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tconst nextPackages = [...currentPackages];\n\t\t\tnextPackages[matchIndex] =\n\t\t\t\ttypeof existing === \"string\" ? normalizedSource : { ...existing, source: normalizedSource };\n\t\t\tif (scope === \"project\") {\n\t\t\t\tthis.settingsManager.setProjectPackages(nextPackages);\n\t\t\t} else {\n\t\t\t\tthis.settingsManager.setPackages(nextPackages);\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t\tconst nextPackages = [...currentPackages, normalizedSource];\n\t\tif (scope === \"project\") {\n\t\t\tthis.settingsManager.setProjectPackages(nextPackages);\n\t\t} else {\n\t\t\tthis.settingsManager.setPackages(nextPackages);\n\t\t}\n\t\treturn true;\n\t}\n\n\tremoveSourceFromSettings(source: string, options?: { local?: boolean }): boolean {\n\t\tconst scope: SourceScope = options?.local ? \"project\" : \"user\";\n\t\tconst currentSettings =\n\t\t\tscope === \"project\" ? this.settingsManager.getProjectSettings() : this.settingsManager.getGlobalSettings();\n\t\tconst currentPackages = currentSettings.packages ?? [];\n\t\tconst nextPackages = currentPackages.filter((existing) => !this.packageSourcesMatch(existing, source, scope));\n\t\tconst changed = nextPackages.length !== currentPackages.length;\n\t\tif (!changed) {\n\t\t\treturn false;\n\t\t}\n\t\tif (scope === \"project\") {\n\t\t\tthis.settingsManager.setProjectPackages(nextPackages);\n\t\t} else {\n\t\t\tthis.settingsManager.setPackages(nextPackages);\n\t\t}\n\t\treturn true;\n\t}\n\n\tgetInstalledPath(source: string, scope: \"user\" | \"project\"): string | undefined {\n\t\tconst parsed = this.parseSource(source);\n\t\tif (parsed.type === \"npm\") {\n\t\t\tconst path = this.getNpmInstallPath(parsed, scope);\n\t\t\treturn existsSync(path) ? path : undefined;\n\t\t}\n\t\tif (parsed.type === \"git\") {\n\t\t\tconst path = this.getGitInstallPath(parsed, scope);\n\t\t\treturn existsSync(path) ? path : undefined;\n\t\t}\n\t\tif (parsed.type === \"local\") {\n\t\t\tconst baseDir = this.getBaseDirForScope(scope);\n\t\t\tconst path = this.resolvePathFromBase(parsed.path, baseDir);\n\t\t\treturn existsSync(path) ? path : undefined;\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tprivate emitProgress(event: ProgressEvent): void {\n\t\tthis.progressCallback?.(event);\n\t}\n\n\tprivate async withProgress(\n\t\taction: ProgressEvent[\"action\"],\n\t\tsource: string,\n\t\tmessage: string,\n\t\toperation: () => Promise<void>,\n\t): Promise<void> {\n\t\tthis.emitProgress({ type: \"start\", action, source, message });\n\t\ttry {\n\t\t\tawait operation();\n\t\t\tthis.emitProgress({ type: \"complete\", action, source });\n\t\t} catch (error) {\n\t\t\tconst errorMessage = error instanceof Error ? error.message : String(error);\n\t\t\tthis.emitProgress({ type: \"error\", action, source, message: errorMessage });\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tasync resolve(onMissing?: (source: string) => Promise<MissingSourceAction>): Promise<ResolvedPaths> {\n\t\tconst accumulator = createAccumulator();\n\t\tconst globalSettings = this.settingsManager.getGlobalSettings();\n\t\tconst projectSettings = this.settingsManager.getProjectSettings();\n\n\t\t// Collect all packages with scope (project first so cwd resources win collisions)\n\t\tconst allPackages: Array<{ pkg: PackageSource; scope: SourceScope }> = [];\n\t\tfor (const pkg of projectSettings.packages ?? []) {\n\t\t\tallPackages.push({ pkg, scope: \"project\" });\n\t\t}\n\t\tfor (const pkg of globalSettings.packages ?? []) {\n\t\t\tallPackages.push({ pkg, scope: \"user\" });\n\t\t}\n\n\t\t// Dedupe: project scope wins over global for same package identity\n\t\tconst packageSources = this.dedupePackages(allPackages);\n\t\tawait this.resolvePackageSources(packageSources, accumulator, onMissing);\n\n\t\tconst globalBaseDir = this.agentDir;\n\t\tconst projectBaseDir = join(this.cwd, CONFIG_DIR_NAME);\n\n\t\tfor (const resourceType of RESOURCE_TYPES) {\n\t\t\tconst target = getTargetMap(accumulator, resourceType);\n\t\t\tconst globalEntries = (globalSettings[resourceType] ?? []) as string[];\n\t\t\tconst projectEntries = (projectSettings[resourceType] ?? []) as string[];\n\t\t\tresolveLocalEntries(\n\t\t\t\tprojectEntries,\n\t\t\t\tresourceType,\n\t\t\t\ttarget,\n\t\t\t\t{\n\t\t\t\t\tsource: \"local\",\n\t\t\t\t\tscope: \"project\",\n\t\t\t\t\torigin: \"top-level\",\n\t\t\t\t},\n\t\t\t\tprojectBaseDir,\n\t\t\t);\n\t\t\tresolveLocalEntries(\n\t\t\t\tglobalEntries,\n\t\t\t\tresourceType,\n\t\t\t\ttarget,\n\t\t\t\t{\n\t\t\t\t\tsource: \"local\",\n\t\t\t\t\tscope: \"user\",\n\t\t\t\t\torigin: \"top-level\",\n\t\t\t\t},\n\t\t\t\tglobalBaseDir,\n\t\t\t);\n\t\t}\n\n\t\taddAutoDiscoveredResources(this.cwd, accumulator, globalSettings, projectSettings, globalBaseDir, projectBaseDir);\n\n\t\treturn toResolvedPaths(accumulator);\n\t}\n\n\tasync resolveSourceResources(\n\t\tsources: string[],\n\t\toptions?: { local?: boolean; temporary?: boolean },\n\t): Promise<ResolvedPaths> {\n\t\tconst accumulator = createAccumulator();\n\t\tconst scope: SourceScope = options?.temporary ? \"temporary\" : options?.local ? \"project\" : \"user\";\n\t\tconst packageSources = sources.map((source) => ({ pkg: source as PackageSource, scope }));\n\t\tawait this.resolvePackageSources(packageSources, accumulator);\n\t\treturn toResolvedPaths(accumulator);\n\t}\n\n\tlistConfiguredPackages(): ConfiguredPackage[] {\n\t\tconst globalSettings = this.settingsManager.getGlobalSettings();\n\t\tconst projectSettings = this.settingsManager.getProjectSettings();\n\t\tconst configuredPackages: ConfiguredPackage[] = [];\n\n\t\tfor (const pkg of globalSettings.packages ?? []) {\n\t\t\tconst source = typeof pkg === \"string\" ? pkg : pkg.source;\n\t\t\tconfiguredPackages.push({\n\t\t\t\tsource,\n\t\t\t\tscope: \"user\",\n\t\t\t\tfiltered: typeof pkg === \"object\",\n\t\t\t\tinstalledPath: this.getInstalledPath(source, \"user\"),\n\t\t\t});\n\t\t}\n\n\t\tfor (const pkg of projectSettings.packages ?? []) {\n\t\t\tconst source = typeof pkg === \"string\" ? pkg : pkg.source;\n\t\t\tconfiguredPackages.push({\n\t\t\t\tsource,\n\t\t\t\tscope: \"project\",\n\t\t\t\tfiltered: typeof pkg === \"object\",\n\t\t\t\tinstalledPath: this.getInstalledPath(source, \"project\"),\n\t\t\t});\n\t\t}\n\n\t\treturn configuredPackages;\n\t}\n\n\tasync install(source: string, options?: { local?: boolean }): Promise<void> {\n\t\tconst parsed = this.parseSource(source);\n\t\tconst scope: SourceScope = options?.local ? \"project\" : \"user\";\n\t\tawait this.withProgress(\"install\", source, `Installing ${source}...`, async () => {\n\t\t\tif (parsed.type === \"npm\") {\n\t\t\t\tawait this.installNpm(parsed, scope, false);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (parsed.type === \"git\") {\n\t\t\t\tawait this.installGit(parsed, scope);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (parsed.type === \"local\") {\n\t\t\t\tconst resolved = this.resolvePath(parsed.path);\n\t\t\t\tif (!existsSync(resolved)) {\n\t\t\t\t\tthrow new Error(t(\"Path does not exist: {path}\", { path: resolved }));\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthrow new Error(t(\"Unsupported install source: {source}\", { source }));\n\t\t});\n\t}\n\n\tasync installAndPersist(source: string, options?: { local?: boolean }): Promise<void> {\n\t\tawait this.install(source, options);\n\t\tthis.addSourceToSettings(source, options);\n\t}\n\n\tasync remove(source: string, options?: { local?: boolean }): Promise<void> {\n\t\tconst parsed = this.parseSource(source);\n\t\tconst scope: SourceScope = options?.local ? \"project\" : \"user\";\n\t\tawait this.withProgress(\"remove\", source, `Removing ${source}...`, async () => {\n\t\t\tif (parsed.type === \"npm\") {\n\t\t\t\tawait this.uninstallNpm(parsed, scope);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (parsed.type === \"git\") {\n\t\t\t\tawait this.removeGit(parsed, scope);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (parsed.type === \"local\") {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthrow new Error(t(\"Unsupported remove source: {source}\", { source }));\n\t\t});\n\t}\n\n\tasync removeAndPersist(source: string, options?: { local?: boolean }): Promise<boolean> {\n\t\tawait this.remove(source, options);\n\t\treturn this.removeSourceFromSettings(source, options);\n\t}\n\n\tasync update(source?: string): Promise<void> {\n\t\tconst globalSettings = this.settingsManager.getGlobalSettings();\n\t\tconst projectSettings = this.settingsManager.getProjectSettings();\n\t\tconst identity = source ? this.getPackageIdentity(source) : undefined;\n\t\tlet matched = false;\n\t\tconst updateSources: ConfiguredUpdateSource[] = [];\n\n\t\tfor (const pkg of globalSettings.packages ?? []) {\n\t\t\tconst sourceStr = typeof pkg === \"string\" ? pkg : pkg.source;\n\t\t\tif (identity && this.getPackageIdentity(sourceStr, \"user\") !== identity) continue;\n\t\t\tmatched = true;\n\t\t\tupdateSources.push({ source: sourceStr, scope: \"user\" });\n\t\t}\n\t\tfor (const pkg of projectSettings.packages ?? []) {\n\t\t\tconst sourceStr = typeof pkg === \"string\" ? pkg : pkg.source;\n\t\t\tif (identity && this.getPackageIdentity(sourceStr, \"project\") !== identity) continue;\n\t\t\tmatched = true;\n\t\t\tupdateSources.push({ source: sourceStr, scope: \"project\" });\n\t\t}\n\n\t\tif (source && !matched) {\n\t\t\tthrow new Error(\n\t\t\t\tthis.buildNoMatchingPackageMessage(source, [\n\t\t\t\t\t...(globalSettings.packages ?? []),\n\t\t\t\t\t...(projectSettings.packages ?? []),\n\t\t\t\t]),\n\t\t\t);\n\t\t}\n\n\t\tawait this.updateConfiguredSources(updateSources);\n\t}\n\n\tprivate async updateConfiguredSources(sources: ConfiguredUpdateSource[]): Promise<void> {\n\t\tif (isOfflineModeEnabled() || sources.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst npmCandidates: NpmUpdateTarget[] = [];\n\t\tconst gitCandidates: GitUpdateTarget[] = [];\n\n\t\tfor (const entry of sources) {\n\t\t\tconst parsed = this.parseSource(entry.source);\n\t\t\t// Pinned npm versions are fixed. Pinned git refs are configured checkout targets,\n\t\t\t// so include them to reconcile an existing clone when the configured ref changes.\n\t\t\tif (parsed.type === \"npm\") {\n\t\t\t\tif (!parsed.pinned) {\n\t\t\t\t\tnpmCandidates.push({ ...entry, parsed });\n\t\t\t\t}\n\t\t\t} else if (parsed.type === \"git\") {\n\t\t\t\tgitCandidates.push({ ...entry, parsed });\n\t\t\t}\n\t\t}\n\n\t\tconst npmCheckTasks = npmCandidates.map((entry) => async () => ({\n\t\t\tentry,\n\t\t\tshouldUpdate: await this.shouldUpdateNpmSource(entry.parsed, entry.scope),\n\t\t}));\n\t\tconst npmCheckResults = await runWithConcurrency(npmCheckTasks, UPDATE_CHECK_CONCURRENCY);\n\t\tconst userNpmUpdates: NpmUpdateTarget[] = [];\n\t\tconst projectNpmUpdates: NpmUpdateTarget[] = [];\n\t\tfor (const result of npmCheckResults) {\n\t\t\tif (!result.shouldUpdate) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (result.entry.scope === \"user\") {\n\t\t\t\tuserNpmUpdates.push(result.entry);\n\t\t\t} else {\n\t\t\t\tprojectNpmUpdates.push(result.entry);\n\t\t\t}\n\t\t}\n\n\t\tconst tasks: Promise<void>[] = [];\n\t\tif (userNpmUpdates.length > 0) {\n\t\t\ttasks.push(this.updateNpmBatch(userNpmUpdates, \"user\"));\n\t\t}\n\t\tif (projectNpmUpdates.length > 0) {\n\t\t\ttasks.push(this.updateNpmBatch(projectNpmUpdates, \"project\"));\n\t\t}\n\t\tif (gitCandidates.length > 0) {\n\t\t\tconst gitTasks = gitCandidates.map(\n\t\t\t\t(entry) => async () =>\n\t\t\t\t\tthis.withProgress(\"update\", entry.source, `Updating ${entry.source}...`, async () => {\n\t\t\t\t\t\tawait this.updateGit(entry.parsed, entry.scope);\n\t\t\t\t\t}),\n\t\t\t);\n\t\t\ttasks.push(runWithConcurrency(gitTasks, GIT_UPDATE_CONCURRENCY).then(() => {}));\n\t\t}\n\n\t\tawait Promise.all(tasks);\n\t}\n\n\tprivate async shouldUpdateNpmSource(source: NpmSource, scope: InstalledSourceScope): Promise<boolean> {\n\t\tconst installedPath = getManagedNpmInstallPath(this.context, source, scope);\n\t\tconst installedVersion = existsSync(installedPath) ? this.getInstalledNpmVersion(installedPath) : undefined;\n\t\tif (!installedVersion) {\n\t\t\treturn true;\n\t\t}\n\n\t\tconst targetVersion = await this.getLatestNpmVersion(source.version ? source.spec : source.name, source.range);\n\t\treturn gt(targetVersion, installedVersion);\n\t}\n\n\tprivate async updateNpmBatch(sources: NpmUpdateTarget[], scope: InstalledSourceScope): Promise<void> {\n\t\tif (sources.length === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst sourceLabel = sources.length === 1 ? sources[0].source : `${scope} npm packages`;\n\t\tconst message = sources.length === 1 ? `Updating ${sources[0].source}...` : `Updating ${scope} npm packages...`;\n\t\tconst specs = sources.map((entry) => (entry.parsed.version ? entry.parsed.spec : `${entry.parsed.name}@latest`));\n\n\t\tawait this.withProgress(\"update\", sourceLabel, message, async () => {\n\t\t\tawait this.installNpmBatch(specs, scope);\n\t\t});\n\t}\n\n\tprivate async installNpmBatch(specs: string[], scope: InstalledSourceScope): Promise<void> {\n\t\tconst installRoot = getNpmInstallRoot(this.context, scope, false);\n\t\tensureNpmProject(installRoot);\n\t\tawait this.runNpmCommand(getNpmInstallArgs(this.context, specs, installRoot));\n\t}\n\n\tasync checkForAvailableUpdates(): Promise<PackageUpdate[]> {\n\t\tif (isOfflineModeEnabled()) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst globalSettings = this.settingsManager.getGlobalSettings();\n\t\tconst projectSettings = this.settingsManager.getProjectSettings();\n\t\tconst allPackages: Array<{ pkg: PackageSource; scope: SourceScope }> = [];\n\t\tfor (const pkg of projectSettings.packages ?? []) {\n\t\t\tallPackages.push({ pkg, scope: \"project\" });\n\t\t}\n\t\tfor (const pkg of globalSettings.packages ?? []) {\n\t\t\tallPackages.push({ pkg, scope: \"user\" });\n\t\t}\n\n\t\tconst packageSources = this.dedupePackages(allPackages);\n\t\tconst checks = packageSources\n\t\t\t.filter(\n\t\t\t\t(entry): entry is { pkg: PackageSource; scope: Exclude<SourceScope, \"temporary\"> } =>\n\t\t\t\t\tentry.scope !== \"temporary\",\n\t\t\t)\n\t\t\t.map((entry) => async (): Promise<PackageUpdate | undefined> => {\n\t\t\t\tconst source = typeof entry.pkg === \"string\" ? entry.pkg : entry.pkg.source;\n\t\t\t\tconst parsed = this.parseSource(source);\n\t\t\t\tif (parsed.type === \"local\" || parsed.pinned) {\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\n\t\t\t\tif (parsed.type === \"npm\") {\n\t\t\t\t\tconst installedPath = this.getNpmInstallPath(parsed, entry.scope);\n\t\t\t\t\tif (!existsSync(installedPath)) {\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\t\t\t\t\tconst hasUpdate = await this.npmHasAvailableUpdate(parsed, installedPath);\n\t\t\t\t\tif (!hasUpdate) {\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\tsource,\n\t\t\t\t\t\tdisplayName: parsed.name,\n\t\t\t\t\t\ttype: \"npm\",\n\t\t\t\t\t\tscope: entry.scope,\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tconst installedPath = this.getGitInstallPath(parsed, entry.scope);\n\t\t\t\tif (!existsSync(installedPath)) {\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t\tconst hasUpdate = await this.gitHasAvailableUpdate(installedPath);\n\t\t\t\tif (!hasUpdate) {\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\tsource,\n\t\t\t\t\tdisplayName: `${parsed.host}/${parsed.path}`,\n\t\t\t\t\ttype: \"git\",\n\t\t\t\t\tscope: entry.scope,\n\t\t\t\t};\n\t\t\t});\n\n\t\tconst results = await runWithConcurrency(checks, UPDATE_CHECK_CONCURRENCY);\n\t\treturn results.filter((result): result is PackageUpdate => result !== undefined);\n\t}\n\n\tprivate async resolvePackageSources(\n\t\tsources: Array<{ pkg: PackageSource; scope: SourceScope }>,\n\t\taccumulator: ResourceAccumulator,\n\t\tonMissing?: (source: string) => Promise<MissingSourceAction>,\n\t): Promise<void> {\n\t\tfor (const { pkg, scope } of sources) {\n\t\t\tconst sourceStr = typeof pkg === \"string\" ? pkg : pkg.source;\n\t\t\tconst filter = typeof pkg === \"object\" ? pkg : undefined;\n\t\t\tconst deltaBase = this.findAutoloadDeltaBase(pkg, scope, sources);\n\t\t\tconst resolvedSource = deltaBase?.source ?? sourceStr;\n\t\t\tconst resolvedScope = deltaBase?.scope ?? scope;\n\t\t\tconst parsed = this.parseSource(resolvedSource);\n\t\t\tconst metadata: PathMetadata = { source: sourceStr, scope, origin: \"package\" };\n\n\t\t\tif (parsed.type === \"local\") {\n\t\t\t\tconst baseDir = this.getBaseDirForScope(resolvedScope);\n\t\t\t\tconst resolvedLocal = this.resolvePathFromBase(parsed.path, baseDir);\n\t\t\t\tif (existsSync(resolvedLocal)) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif (statSync(resolvedLocal).isDirectory()) {\n\t\t\t\t\t\t\tmetadata.baseDir = resolvedLocal;\n\t\t\t\t\t\t\tcollectPackageResources(resolvedLocal, accumulator, filter, metadata);\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch {\n\t\t\t\t\t\t// Unreadable local path: skip the source.\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst installMissing = async (): Promise<boolean> => {\n\t\t\t\tif (isOfflineModeEnabled()) return false;\n\t\t\t\tif (!onMissing) {\n\t\t\t\t\tawait this.installParsedSource(parsed, resolvedScope);\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tconst action = await onMissing(resolvedSource);\n\t\t\t\tif (action === \"skip\") return false;\n\t\t\t\tif (action === \"error\") throw new Error(t(\"Missing source: {source}\", { source: resolvedSource }));\n\t\t\t\tawait this.installParsedSource(parsed, resolvedScope);\n\t\t\t\treturn true;\n\t\t\t};\n\n\t\t\tif (parsed.type === \"npm\") {\n\t\t\t\tlet installedPath = this.getNpmInstallPath(parsed, resolvedScope);\n\t\t\t\tconst needsInstall =\n\t\t\t\t\t!existsSync(installedPath) || !(await installedNpmMatchesConfiguredVersion(parsed, installedPath));\n\t\t\t\tif (needsInstall) {\n\t\t\t\t\tconst installed = await installMissing();\n\t\t\t\t\tif (!installed) continue;\n\t\t\t\t\tinstalledPath = this.getNpmInstallPath(parsed, resolvedScope);\n\t\t\t\t}\n\t\t\t\tmetadata.baseDir = installedPath;\n\t\t\t\tcollectPackageResources(installedPath, accumulator, filter, metadata);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (parsed.type === \"git\") {\n\t\t\t\tconst installedPath = this.getGitInstallPath(parsed, resolvedScope);\n\t\t\t\tif (!existsSync(installedPath)) {\n\t\t\t\t\tconst installed = await installMissing();\n\t\t\t\t\tif (!installed) continue;\n\t\t\t\t} else if (resolvedScope === \"temporary\" && !parsed.pinned && !isOfflineModeEnabled()) {\n\t\t\t\t\tawait this.refreshTemporaryGitSource(parsed, resolvedSource);\n\t\t\t\t}\n\t\t\t\tmetadata.baseDir = installedPath;\n\t\t\t\tcollectPackageResources(installedPath, accumulator, filter, metadata);\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate findAutoloadDeltaBase(\n\t\tpkg: PackageSource,\n\t\tscope: SourceScope,\n\t\tsources: Array<{ pkg: PackageSource; scope: SourceScope }>,\n\t): { source: string; scope: SourceScope } | undefined {\n\t\tif (scope !== \"project\" || typeof pkg !== \"object\" || pkg.autoload !== false) return undefined;\n\t\tconst identity = this.getPackageIdentity(pkg.source, scope);\n\t\tconst userEntry = sources.find(\n\t\t\t(entry) =>\n\t\t\t\tentry.scope === \"user\" &&\n\t\t\t\tthis.getPackageIdentity(this.getPackageSourceString(entry.pkg), \"user\") === identity,\n\t\t);\n\t\treturn userEntry ? { source: this.getPackageSourceString(userEntry.pkg), scope: \"user\" } : undefined;\n\t}\n\n\tprivate async installParsedSource(parsed: ParsedSource, scope: SourceScope): Promise<void> {\n\t\tif (parsed.type === \"npm\") {\n\t\t\tawait this.installNpm(parsed, scope, scope === \"temporary\");\n\t\t\treturn;\n\t\t}\n\t\tif (parsed.type === \"git\") {\n\t\t\tawait this.installGit(parsed, scope);\n\t\t\treturn;\n\t\t}\n\t}\n\n\tprivate parseSource(source: string): ParsedSource {\n\t\treturn parseSource(source);\n\t}\n\n\tprivate getBaseDirForScope(scope: SourceScope): string {\n\t\treturn getBaseDirForScope(this.context, scope);\n\t}\n\n\tprivate resolvePath(input: string): string {\n\t\treturn resolvePath(this.context, input);\n\t}\n\n\tprivate resolvePathFromBase(input: string, baseDir: string): string {\n\t\treturn resolvePathFromBase(input, baseDir);\n\t}\n\n\tprivate getPackageSourceString(pkg: PackageSource): string {\n\t\treturn getPackageSourceString(pkg);\n\t}\n\n\tprivate getSourceMatchKeyForInput(source: string): string {\n\t\treturn getSourceMatchKeyForInput(this.context, source);\n\t}\n\n\tprivate getSourceMatchKeyForSettings(source: string, scope: SourceScope): string {\n\t\treturn getSourceMatchKeyForSettings(this.context, source, scope);\n\t}\n\n\tprivate packageSourcesMatch(existing: PackageSource, inputSource: string, scope: SourceScope): boolean {\n\t\tconst left = this.getSourceMatchKeyForSettings(this.getPackageSourceString(existing), scope);\n\t\tconst right = this.getSourceMatchKeyForInput(inputSource);\n\t\treturn left === right;\n\t}\n\n\tprivate normalizePackageSourceForSettings(source: string, scope: SourceScope): string {\n\t\treturn normalizePackageSourceForSettings(this.context, source, scope);\n\t}\n\n\tprivate getPackageIdentity(source: string, scope?: SourceScope): string {\n\t\treturn getPackageIdentity(this.context, source, scope);\n\t}\n\n\tprivate dedupePackages(\n\t\tpackages: Array<{ pkg: PackageSource; scope: SourceScope }>,\n\t): Array<{ pkg: PackageSource; scope: SourceScope }> {\n\t\treturn dedupePackages(this.context, packages);\n\t}\n\n\tprivate buildNoMatchingPackageMessage(source: string, configuredPackages: PackageSource[]): string {\n\t\treturn buildNoMatchingPackageMessage(source, configuredPackages);\n\t}\n\n\tprivate getNpmCommand(): { command: string; args: string[] } {\n\t\treturn getNpmCommand(this.context);\n\t}\n\n\tprivate getInstalledNpmVersion(installedPath: string): string | undefined {\n\t\treturn getInstalledNpmVersion(installedPath);\n\t}\n\n\tprivate getGitInstallPath(source: GitSource, scope: SourceScope): string {\n\t\treturn getGitInstallPath(this.context, source, scope);\n\t}\n\n\tprivate async npmHasAvailableUpdate(source: NpmSource, installedPath: string): Promise<boolean> {\n\t\tif (isOfflineModeEnabled()) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst installedVersion = this.getInstalledNpmVersion(installedPath);\n\t\tif (!installedVersion) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\tconst targetVersion = await this.getLatestNpmVersion(source.version ? source.spec : source.name, source.range);\n\t\t\treturn gt(targetVersion, installedVersion);\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tprivate async getLatestNpmVersion(packageSpec: string, range?: string): Promise<string> {\n\t\tconst npmCommand = this.getNpmCommand();\n\t\tconst stdout = await this.runCommandCapture(\n\t\t\tnpmCommand.command,\n\t\t\t[...npmCommand.args, \"view\", packageSpec, \"version\", \"--json\"],\n\t\t\t{ cwd: this.cwd, timeoutMs: NETWORK_TIMEOUT_MS },\n\t\t);\n\t\tconst raw = stdout.trim();\n\t\tif (!raw) throw new Error(t(\"Empty response from npm view\"));\n\t\tconst parsed = JSON.parse(raw) as unknown;\n\t\tif (typeof parsed === \"string\") {\n\t\t\treturn parsed;\n\t\t}\n\t\tif (Array.isArray(parsed)) {\n\t\t\tconst versions = parsed.filter((value): value is string => typeof value === \"string\" && value.length > 0);\n\t\t\tconst latest = range ? maxSatisfying(versions, range) : [...versions].sort(rcompare)[0];\n\t\t\tif (latest) return latest;\n\t\t}\n\t\tthrow new Error(t(\"Unexpected response from npm view\"));\n\t}\n\n\tprivate async gitHasAvailableUpdate(installedPath: string): Promise<boolean> {\n\t\tif (isOfflineModeEnabled()) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\tconst localHead = await this.runCommandCapture(\"git\", [\"rev-parse\", \"HEAD\"], {\n\t\t\t\tcwd: installedPath,\n\t\t\t\ttimeoutMs: NETWORK_TIMEOUT_MS,\n\t\t\t});\n\t\t\tconst remoteHead = await this.getRemoteGitHead(installedPath);\n\t\t\treturn localHead.trim() !== remoteHead.trim();\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tprivate async getRemoteGitHead(installedPath: string): Promise<string> {\n\t\tconst upstreamRef = await this.getGitUpstreamRef(installedPath);\n\t\tif (upstreamRef) {\n\t\t\tconst remoteHead = await this.runGitRemoteCommand(installedPath, [\"ls-remote\", \"origin\", upstreamRef]);\n\t\t\tconst match = remoteHead.match(/^([0-9a-f]{40})\\s+/m);\n\t\t\tif (match?.[1]) {\n\t\t\t\treturn match[1];\n\t\t\t}\n\t\t}\n\n\t\tconst remoteHead = await this.runGitRemoteCommand(installedPath, [\"ls-remote\", \"origin\", \"HEAD\"]);\n\t\tconst match = remoteHead.match(/^([0-9a-f]{40})\\s+HEAD$/m);\n\t\tif (!match?.[1]) {\n\t\t\tthrow new Error(t(\"Failed to determine remote HEAD\"));\n\t\t}\n\t\treturn match[1];\n\t}\n\n\tprivate async getLocalGitUpdateTarget(\n\t\tinstalledPath: string,\n\t): Promise<{ ref: string; head: string; fetchArgs: string[] }> {\n\t\ttry {\n\t\t\tconst upstream = await this.runCommandCapture(\"git\", [\"rev-parse\", \"--abbrev-ref\", \"@{upstream}\"], {\n\t\t\t\tcwd: installedPath,\n\t\t\t\ttimeoutMs: NETWORK_TIMEOUT_MS,\n\t\t\t});\n\t\t\tconst trimmedUpstream = upstream.trim();\n\t\t\tif (!trimmedUpstream.startsWith(\"origin/\")) {\n\t\t\t\tthrow new Error(t(\"Unsupported upstream remote: {upstream}\", { upstream: trimmedUpstream }));\n\t\t\t}\n\t\t\tconst branch = trimmedUpstream.slice(\"origin/\".length);\n\t\t\tif (!branch) {\n\t\t\t\tthrow new Error(t(\"Missing upstream branch name\"));\n\t\t\t}\n\t\t\tconst head = await this.runCommandCapture(\"git\", [\"rev-parse\", \"@{upstream}\"], {\n\t\t\t\tcwd: installedPath,\n\t\t\t\ttimeoutMs: NETWORK_TIMEOUT_MS,\n\t\t\t});\n\t\t\treturn {\n\t\t\t\tref: \"@{upstream}\",\n\t\t\t\thead,\n\t\t\t\tfetchArgs: [\n\t\t\t\t\t\"fetch\",\n\t\t\t\t\t\"--prune\",\n\t\t\t\t\t\"--no-tags\",\n\t\t\t\t\t\"origin\",\n\t\t\t\t\t`+refs/heads/${branch}:refs/remotes/origin/${branch}`,\n\t\t\t\t],\n\t\t\t};\n\t\t} catch {\n\t\t\tawait this.runCommand(\"git\", [\"remote\", \"set-head\", \"origin\", \"-a\"], { cwd: installedPath }).catch(() => {});\n\t\t\tconst head = await this.runCommandCapture(\"git\", [\"rev-parse\", \"origin/HEAD\"], {\n\t\t\t\tcwd: installedPath,\n\t\t\t\ttimeoutMs: NETWORK_TIMEOUT_MS,\n\t\t\t});\n\t\t\tconst originHeadRef = await this.runCommandCapture(\"git\", [\"symbolic-ref\", \"refs/remotes/origin/HEAD\"], {\n\t\t\t\tcwd: installedPath,\n\t\t\t\ttimeoutMs: NETWORK_TIMEOUT_MS,\n\t\t\t}).catch(() => \"\");\n\t\t\tconst branch = originHeadRef.trim().replace(/^refs\\/remotes\\/origin\\//, \"\");\n\t\t\tif (branch) {\n\t\t\t\treturn {\n\t\t\t\t\tref: \"origin/HEAD\",\n\t\t\t\t\thead,\n\t\t\t\t\tfetchArgs: [\n\t\t\t\t\t\t\"fetch\",\n\t\t\t\t\t\t\"--prune\",\n\t\t\t\t\t\t\"--no-tags\",\n\t\t\t\t\t\t\"origin\",\n\t\t\t\t\t\t`+refs/heads/${branch}:refs/remotes/origin/${branch}`,\n\t\t\t\t\t],\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tref: \"origin/HEAD\",\n\t\t\t\thead,\n\t\t\t\tfetchArgs: [\"fetch\", \"--prune\", \"--no-tags\", \"origin\", \"+HEAD:refs/remotes/origin/HEAD\"],\n\t\t\t};\n\t\t}\n\t}\n\n\tprivate async getGitUpstreamRef(installedPath: string): Promise<string | undefined> {\n\t\ttry {\n\t\t\tconst upstream = await this.runCommandCapture(\"git\", [\"rev-parse\", \"--abbrev-ref\", \"@{upstream}\"], {\n\t\t\t\tcwd: installedPath,\n\t\t\t\ttimeoutMs: NETWORK_TIMEOUT_MS,\n\t\t\t});\n\t\t\tconst trimmed = upstream.trim();\n\t\t\tif (!trimmed.startsWith(\"origin/\")) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tconst branch = trimmed.slice(\"origin/\".length);\n\t\t\treturn branch ? `refs/heads/${branch}` : undefined;\n\t\t} catch {\n\t\t\treturn undefined;\n\t\t}\n\t}\n\n\tprivate runGitRemoteCommand(installedPath: string, args: string[]): Promise<string> {\n\t\treturn this.runCommandCapture(\"git\", args, {\n\t\t\tcwd: installedPath,\n\t\t\ttimeoutMs: NETWORK_TIMEOUT_MS,\n\t\t\tenv: {\n\t\t\t\tGIT_TERMINAL_PROMPT: \"0\",\n\t\t\t},\n\t\t});\n\t}\n\n\tprivate getGlobalNpmRoot(): string {\n\t\tconst npmCommand = this.getNpmCommand();\n\t\tconst commandKey = [npmCommand.command, ...npmCommand.args].join(\"\\0\");\n\t\tif (this.globalNpmRoot && this.globalNpmRootCommandKey === commandKey) {\n\t\t\treturn this.globalNpmRoot;\n\t\t}\n\t\tif (getPackageManagerName(this.context) === \"bun\") {\n\t\t\tconst binDir = this.runNpmCommandSync([\"pm\", \"bin\", \"-g\"]).trim();\n\t\t\tthis.globalNpmRoot = join(dirname(binDir), \"install\", \"global\", \"node_modules\");\n\t\t} else {\n\t\t\tthis.globalNpmRoot = this.runNpmCommandSync([\"root\", \"-g\"]).trim();\n\t\t}\n\t\tthis.globalNpmRootCommandKey = commandKey;\n\t\treturn this.globalNpmRoot;\n\t}\n\n\tprivate getPnpmGlobalPackagePath(packageName: string): string | undefined {\n\t\tif (getPackageManagerName(this.context) !== \"pnpm\") {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst output = this.runNpmCommandSync([\"list\", \"-g\", \"--depth\", \"0\", \"--json\"]);\n\t\tconst entries = JSON.parse(output) as Array<{ dependencies?: Record<string, { path?: string }> }>;\n\t\tfor (const entry of entries) {\n\t\t\tconst path = entry.dependencies?.[packageName]?.path;\n\t\t\tif (path) return path;\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tprivate getLegacyGlobalNpmInstallPath(source: NpmSource): string | undefined {\n\t\t// Read-only migration compatibility for pre-managed global installs. New installs\n\t\t// always target the Agent Forge-managed root; this lookup never substitutes a package.\n\t\ttry {\n\t\t\treturn this.getPnpmGlobalPackagePath(source.name) ?? join(this.getGlobalNpmRoot(), source.name);\n\t\t} catch {\n\t\t\treturn undefined;\n\t\t}\n\t}\n\n\tprivate getNpmInstallPath(source: NpmSource, scope: SourceScope): string {\n\t\tconst managedPath = getManagedNpmInstallPath(this.context, source, scope);\n\t\tif (scope !== \"user\" || existsSync(managedPath)) {\n\t\t\treturn managedPath;\n\t\t}\n\t\tconst legacyPath = this.getLegacyGlobalNpmInstallPath(source);\n\t\treturn legacyPath && existsSync(legacyPath) ? legacyPath : managedPath;\n\t}\n\n\tprivate async installNpm(source: NpmSource, scope: SourceScope, temporary: boolean): Promise<void> {\n\t\tconst installRoot = getNpmInstallRoot(this.context, scope, temporary);\n\t\tensureNpmProject(installRoot);\n\t\tawait this.runNpmCommand(getNpmInstallArgs(this.context, [source.spec], installRoot));\n\t}\n\n\tprivate async uninstallNpm(source: NpmSource, scope: SourceScope): Promise<void> {\n\t\tconst installRoot = getNpmInstallRoot(this.context, scope, false);\n\t\tif (!existsSync(installRoot)) {\n\t\t\treturn;\n\t\t}\n\t\tconst packageManagerName = getPackageManagerName(this.context);\n\t\tif (packageManagerName === \"bun\") {\n\t\t\tawait this.runNpmCommand([\"uninstall\", source.name, \"--cwd\", installRoot]);\n\t\t\treturn;\n\t\t}\n\t\tconst args = [\"uninstall\", source.name, \"--prefix\", installRoot];\n\t\tif (packageManagerName !== \"pnpm\") {\n\t\t\targs.push(\"--legacy-peer-deps\");\n\t\t}\n\t\tawait this.runNpmCommand(args);\n\t}\n\n\tprivate async installGit(source: GitSource, scope: SourceScope): Promise<void> {\n\t\tconst targetDir = this.getGitInstallPath(source, scope);\n\t\tif (existsSync(targetDir)) {\n\t\t\tif (source.ref) {\n\t\t\t\tawait this.ensureGitRef(targetDir, [\"fetch\", \"origin\", source.ref], \"FETCH_HEAD\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst target = await this.getLocalGitUpdateTarget(targetDir);\n\t\t\tawait this.ensureGitRef(targetDir, target.fetchArgs, target.ref);\n\t\t\treturn;\n\t\t}\n\t\tconst gitRoot = getGitInstallRoot(this.context, scope);\n\t\tif (gitRoot) {\n\t\t\tensureGitIgnore(gitRoot);\n\t\t}\n\t\tmkdirSync(dirname(targetDir), { recursive: true });\n\t\trmSync(getGitUpdateMarkerPath(targetDir), { force: true });\n\n\t\ttry {\n\t\t\tawait this.runCommand(\"git\", [\"clone\", source.repo, targetDir]);\n\t\t\tif (source.ref) {\n\t\t\t\tawait this.runCommand(\"git\", [\"checkout\", source.ref], { cwd: targetDir });\n\t\t\t}\n\t\t\tconst packageJsonPath = join(targetDir, \"package.json\");\n\t\t\tif (existsSync(packageJsonPath)) {\n\t\t\t\tawait this.runNpmCommand(getGitDependencyInstallArgs(this.context), { cwd: targetDir });\n\t\t\t}\n\t\t} catch (error) {\n\t\t\trmSync(targetDir, { recursive: true, force: true });\n\t\t\tpruneEmptyGitParents(targetDir, gitRoot);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tprivate async updateGit(source: GitSource, scope: SourceScope): Promise<void> {\n\t\tconst targetDir = this.getGitInstallPath(source, scope);\n\t\tif (!existsSync(targetDir)) {\n\t\t\tawait this.installGit(source, scope);\n\t\t\treturn;\n\t\t}\n\n\t\tif (source.ref) {\n\t\t\tawait this.ensureGitRef(targetDir, [\"fetch\", \"origin\", source.ref], \"FETCH_HEAD\");\n\t\t\treturn;\n\t\t}\n\n\t\tconst target = await this.getLocalGitUpdateTarget(targetDir);\n\t\tawait this.ensureGitRef(targetDir, target.fetchArgs, target.ref);\n\t}\n\n\tprivate async repairMissingGitDependencies(targetDir: string): Promise<void> {\n\t\tif (!hasMissingGitDependencies(targetDir)) return;\n\t\tawait this.runNpmCommand(getGitDependencyInstallArgs(this.context), { cwd: targetDir });\n\t}\n\n\tprivate async cleanAndInstallGitDependencies(targetDir: string, markerPath: string): Promise<void> {\n\t\t// Clean untracked files (extensions should be pristine). If this fails after\n\t\t// deleting dependencies, repair them so the existing extension still loads.\n\t\ttry {\n\t\t\tawait this.runCommand(\"git\", [\"clean\", \"-fdx\"], { cwd: targetDir });\n\t\t} catch (error) {\n\t\t\tawait this.repairMissingGitDependencies(targetDir).catch(() => {});\n\t\t\tthrow error;\n\t\t}\n\n\t\tconst packageJsonPath = join(targetDir, \"package.json\");\n\t\tif (existsSync(packageJsonPath)) {\n\t\t\tawait this.runNpmCommand(getGitDependencyInstallArgs(this.context), { cwd: targetDir });\n\t\t}\n\t\trmSync(markerPath, { force: true });\n\t}\n\n\tprivate async ensureGitRef(targetDir: string, fetchArgs: string[], ref: string): Promise<void> {\n\t\t// Fetch only the ref we will reset to, avoiding unrelated branch/tag noise.\n\t\tawait this.runCommand(\"git\", fetchArgs, { cwd: targetDir });\n\n\t\tconst localHead = await this.runCommandCapture(\"git\", [\"rev-parse\", \"HEAD\"], {\n\t\t\tcwd: targetDir,\n\t\t\ttimeoutMs: NETWORK_TIMEOUT_MS,\n\t\t});\n\t\tconst commitRef = `${ref}^{commit}`;\n\t\tconst targetHead = await this.runCommandCapture(\"git\", [\"rev-parse\", commitRef], {\n\t\t\tcwd: targetDir,\n\t\t\ttimeoutMs: NETWORK_TIMEOUT_MS,\n\t\t});\n\t\tconst markerPath = getGitUpdateMarkerPath(targetDir);\n\t\tif (localHead.trim() === targetHead.trim()) {\n\t\t\tif (existsSync(markerPath)) {\n\t\t\t\tawait this.cleanAndInstallGitDependencies(targetDir, markerPath);\n\t\t\t} else {\n\t\t\t\tawait this.repairMissingGitDependencies(targetDir);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\twriteFileSync(markerPath, \"\", \"utf-8\");\n\t\tawait this.runCommand(\"git\", [\"reset\", \"--hard\", commitRef], { cwd: targetDir });\n\t\tawait this.cleanAndInstallGitDependencies(targetDir, markerPath);\n\t}\n\n\tprivate async refreshTemporaryGitSource(source: GitSource, sourceStr: string): Promise<void> {\n\t\tif (isOfflineModeEnabled()) {\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\tawait this.withProgress(\"pull\", sourceStr, `Refreshing ${sourceStr}...`, async () => {\n\t\t\t\tawait this.updateGit(source, \"temporary\");\n\t\t\t});\n\t\t} catch {\n\t\t\t// Keep cached temporary checkout if refresh fails.\n\t\t}\n\t}\n\n\tprivate async removeGit(source: GitSource, scope: SourceScope): Promise<void> {\n\t\tconst targetDir = this.getGitInstallPath(source, scope);\n\t\trmSync(targetDir, { recursive: true, force: true });\n\t\trmSync(getGitUpdateMarkerPath(targetDir), { force: true });\n\t\tpruneEmptyGitParents(targetDir, getGitInstallRoot(this.context, scope));\n\t}\n\n\tprivate async runNpmCommand(args: string[], options?: { cwd?: string }): Promise<void> {\n\t\tconst npmCommand = this.getNpmCommand();\n\t\tawait this.runCommand(npmCommand.command, [...npmCommand.args, ...args], options);\n\t}\n\n\tprivate runNpmCommandSync(args: string[]): string {\n\t\tconst npmCommand = this.getNpmCommand();\n\t\treturn this.runCommandSync(npmCommand.command, [...npmCommand.args, ...args]);\n\t}\n\n\tprivate spawnCommand(command: string, args: string[], options?: { cwd?: string }): ChildProcess {\n\t\tconst env = getEnv();\n\t\treturn spawnProcess(command, args, {\n\t\t\tcwd: options?.cwd,\n\t\t\tstdio: isStdoutTakenOver() ? [\"ignore\", 2, 2] : \"inherit\",\n\t\t\tenv,\n\t\t});\n\t}\n\n\tprivate spawnCaptureCommand(\n\t\tcommand: string,\n\t\targs: string[],\n\t\toptions?: { cwd?: string; env?: Record<string, string> },\n\t): ChildProcessByStdio<null, Readable, Readable> {\n\t\tconst baseEnv = getEnv();\n\t\tconst env = options?.env ? { ...baseEnv, ...options.env } : baseEnv;\n\t\treturn spawnProcess(command, args, {\n\t\t\tcwd: options?.cwd,\n\t\t\tstdio: [\"ignore\", \"pipe\", \"pipe\"],\n\t\t\tenv,\n\t\t});\n\t}\n\n\tprivate runCommandCapture(\n\t\tcommand: string,\n\t\targs: string[],\n\t\toptions?: { cwd?: string; timeoutMs?: number; env?: Record<string, string> },\n\t): Promise<string> {\n\t\treturn new Promise((resolvePromise, reject) => {\n\t\t\tconst child = this.spawnCaptureCommand(command, args, options);\n\t\t\tlet stdout = \"\";\n\t\t\tlet stderr = \"\";\n\t\t\tlet timedOut = false;\n\t\t\tconst timeout =\n\t\t\t\ttypeof options?.timeoutMs === \"number\"\n\t\t\t\t\t? setTimeout(() => {\n\t\t\t\t\t\t\ttimedOut = true;\n\t\t\t\t\t\t\tchild.kill();\n\t\t\t\t\t\t}, options.timeoutMs)\n\t\t\t\t\t: undefined;\n\n\t\t\tchild.stdout?.on(\"data\", (data) => {\n\t\t\t\tstdout += data.toString();\n\t\t\t});\n\t\t\tchild.stderr?.on(\"data\", (data) => {\n\t\t\t\tstderr += data.toString();\n\t\t\t});\n\t\t\tchild.once(\"error\", (error) => {\n\t\t\t\tif (timeout) clearTimeout(timeout);\n\t\t\t\treject(error);\n\t\t\t});\n\t\t\tchild.once(\"close\", (code, signal) => {\n\t\t\t\tif (timeout) clearTimeout(timeout);\n\t\t\t\tif (timedOut) {\n\t\t\t\t\treject(new Error(`${command} ${args.join(\" \")} timed out after ${options?.timeoutMs}ms`));\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (code === 0) {\n\t\t\t\t\tresolvePromise(stdout.trim());\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst exitStatus = code === null ? `signal ${signal ?? \"unknown\"}` : `code ${code}`;\n\t\t\t\treject(new Error(`${command} ${args.join(\" \")} failed with ${exitStatus}: ${stderr || stdout}`));\n\t\t\t});\n\t\t});\n\t}\n\n\tprivate runCommand(command: string, args: string[], options?: { cwd?: string }): Promise<void> {\n\t\treturn new Promise((resolvePromise, reject) => {\n\t\t\tconst child = this.spawnCommand(command, args, options);\n\t\t\tchild.on(\"error\", reject);\n\t\t\tchild.on(\"exit\", (code) => {\n\t\t\t\tif (code === 0) {\n\t\t\t\t\tresolvePromise();\n\t\t\t\t} else {\n\t\t\t\t\treject(new Error(`${command} ${args.join(\" \")} failed with code ${code}`));\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\tprivate runCommandSync(command: string, args: string[]): string {\n\t\tconst env = getEnv();\n\t\tconst result = spawnProcessSync(command, args, {\n\t\t\tstdio: [\"ignore\", \"pipe\", \"pipe\"],\n\t\t\tencoding: \"utf-8\",\n\t\t\tenv,\n\t\t});\n\t\tif (result.error || result.status !== 0) {\n\t\t\tthrow new Error(\n\t\t\t\tt(\"Failed to run {command} {args}: {reason}\", {\n\t\t\t\t\tcommand,\n\t\t\t\t\targs: args.join(\" \"),\n\t\t\t\t\treason: result.error?.message || result.stderr || result.stdout,\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\t\treturn (result.stdout || result.stderr || \"\").trim();\n\t}\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package-resource-collection.d.ts","sourceRoot":"","sources":["../../src/core/package-resource-collection.ts"],"names":[],"mappings":"AAGA,OAAO,EAaN,KAAK,YAAY,EAEjB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAEN,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,aAAa,EAElB,KAAK,mBAAmB,EAExB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAoB7D,wBAAgB,uBAAuB,CACtC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,mBAAmB,EAChC,MAAM,EAAE,aAAa,GAAG,SAAS,EACjC,QAAQ,EAAE,YAAY,GACpB,OAAO,CAsCT;AA+HD,wBAAgB,mBAAmB,CAClC,OAAO,EAAE,MAAM,EAAE,EACjB,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE;IAAE,QAAQ,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,EACjE,QAAQ,EAAE,YAAY,EACtB,OAAO,EAAE,MAAM,GACb,IAAI,CAeN;AAED,wBAAgB,0BAA0B,CACzC,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,mBAAmB,EAChC,cAAc,EAAE,UAAU,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC,EAChE,eAAe,EAAE,UAAU,CAAC,eAAe,CAAC,oBAAoB,CAAC,CAAC,EAClE,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,MAAM,GACpB,IAAI,CA6HN;AAqBD,wBAAgB,YAAY,CAC3B,WAAW,EAAE,mBAAmB,EAChC,YAAY,EAAE,YAAY,GACxB,GAAG,CAAC,MAAM,EAAE;IAAE,QAAQ,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAW3D;AAcD,wBAAgB,iBAAiB,IAAI,mBAAmB,CAMvD;AAED,wBAAgB,eAAe,CAAC,WAAW,EAAE,mBAAmB,GAAG,aAAa,CAuB/E","sourcesContent":["import { existsSync, statSync } from \"node:fs\";\nimport { dirname, join, resolve } from \"node:path\";\nimport { canonicalizePath } from \"../utils/paths.ts\";\nimport {\n\tapplyAutoloadDisabledPatterns,\n\tapplyPatterns,\n\tcollectAncestorAgentsSkillDirs,\n\tcollectAutoPromptEntries,\n\tcollectAutoSkillEntries,\n\tcollectAutoThemeEntries,\n\tcollectResourceFiles,\n\texpandPackageGlob,\n\thasGlobPattern,\n\tisEnabledByOverrides,\n\tisOverridePattern,\n\tRESOURCE_TYPES,\n\ttype ResourceType,\n\tsplitPatterns,\n} from \"./package-resource-discovery.ts\";\nimport {\n\tgetHomeDir,\n\ttype PackageFilter,\n\ttype PathMetadata,\n\ttype ResolvedPaths,\n\ttype ResolvedResource,\n\ttype ResourceAccumulator,\n\tresolvePathFromBase,\n} from \"./package-source.ts\";\n// PiManifest/readPiManifest retain the legacy `pi` manifest field for package compatibility.\nimport { type PiManifest, readPiManifest } from \"./pi-manifest.ts\";\nimport type { SettingsManager } from \"./settings-manager.ts\";\n\n/**\n * Compute a numeric precedence rank for a resource based on its metadata.\n * Lower rank = higher precedence. Used to sort resolved resources so that\n * name-collision resolution (\"first wins\") produces the correct outcome.\n *\n * Precedence (highest to lowest):\n * 0 project + settings entry (source: \"local\", scope: \"project\")\n * 1 project + auto-discovered (source: \"auto\", scope: \"project\")\n * 2 user + settings entry (source: \"local\", scope: \"user\")\n * 3 user + auto-discovered (source: \"auto\", scope: \"user\")\n * 4 package resource (origin: \"package\")\n */\nfunction resourcePrecedenceRank(m: PathMetadata): number {\n\tif (m.origin === \"package\") return 4;\n\tconst scopeBase = m.scope === \"project\" ? 0 : 2;\n\treturn scopeBase + (m.source === \"local\" ? 0 : 1);\n}\n\nexport function collectPackageResources(\n\tpackageRoot: string,\n\taccumulator: ResourceAccumulator,\n\tfilter: PackageFilter | undefined,\n\tmetadata: PathMetadata,\n): boolean {\n\tif (filter) {\n\t\tfor (const resourceType of RESOURCE_TYPES) {\n\t\t\tconst patterns = filter[resourceType];\n\t\t\tconst target = getTargetMap(accumulator, resourceType);\n\t\t\tif (filter.autoload === false) {\n\t\t\t\tapplyPackageDeltaFilter(packageRoot, patterns ?? [], resourceType, target, metadata);\n\t\t\t} else if (patterns !== undefined) {\n\t\t\t\tapplyPackageFilter(packageRoot, patterns, resourceType, target, metadata);\n\t\t\t} else {\n\t\t\t\tcollectDefaultResources(packageRoot, resourceType, target, metadata);\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\tconst manifest = readPiManifest(join(packageRoot, \"package.json\"));\n\tif (manifest) {\n\t\tfor (const resourceType of RESOURCE_TYPES) {\n\t\t\tconst entries = manifest[resourceType as keyof PiManifest];\n\t\t\taddManifestEntries(entries, packageRoot, resourceType, getTargetMap(accumulator, resourceType), metadata);\n\t\t}\n\t\treturn true;\n\t}\n\n\tlet hasAnyDir = false;\n\tfor (const resourceType of RESOURCE_TYPES) {\n\t\tconst dir = join(packageRoot, resourceType);\n\t\tif (existsSync(dir)) {\n\t\t\t// Collect all files from the directory (all enabled by default)\n\t\t\tconst files = collectResourceFiles(dir, resourceType);\n\t\t\tfor (const f of files) {\n\t\t\t\taddResource(getTargetMap(accumulator, resourceType), f, metadata, true);\n\t\t\t}\n\t\t\thasAnyDir = true;\n\t\t}\n\t}\n\treturn hasAnyDir;\n}\n\nfunction collectDefaultResources(\n\tpackageRoot: string,\n\tresourceType: ResourceType,\n\ttarget: Map<string, { metadata: PathMetadata; enabled: boolean }>,\n\tmetadata: PathMetadata,\n): void {\n\tconst manifest = readPiManifest(join(packageRoot, \"package.json\"));\n\tconst entries = manifest?.[resourceType as keyof PiManifest];\n\tif (entries) {\n\t\taddManifestEntries(entries, packageRoot, resourceType, target, metadata);\n\t\treturn;\n\t}\n\tconst dir = join(packageRoot, resourceType);\n\tif (existsSync(dir)) {\n\t\t// Collect all files from the directory (all enabled by default)\n\t\tconst files = collectResourceFiles(dir, resourceType);\n\t\tfor (const f of files) {\n\t\t\taddResource(target, f, metadata, true);\n\t\t}\n\t}\n}\n\nfunction applyPackageFilter(\n\tpackageRoot: string,\n\tuserPatterns: string[],\n\tresourceType: ResourceType,\n\ttarget: Map<string, { metadata: PathMetadata; enabled: boolean }>,\n\tmetadata: PathMetadata,\n): void {\n\tconst { allFiles } = collectManifestFiles(packageRoot, resourceType);\n\n\tif (userPatterns.length === 0) {\n\t\t// Empty array explicitly disables all resources of this type\n\t\tfor (const f of allFiles) {\n\t\t\taddResource(target, f, metadata, false);\n\t\t}\n\t\treturn;\n\t}\n\n\t// Apply user patterns\n\tconst enabledByUser = applyPatterns(allFiles, userPatterns, packageRoot);\n\n\tfor (const f of allFiles) {\n\t\tconst enabled = enabledByUser.has(f);\n\t\taddResource(target, f, metadata, enabled);\n\t}\n}\n\nfunction applyPackageDeltaFilter(\n\tpackageRoot: string,\n\tuserPatterns: string[],\n\tresourceType: ResourceType,\n\ttarget: Map<string, { metadata: PathMetadata; enabled: boolean }>,\n\tmetadata: PathMetadata,\n): void {\n\tif (userPatterns.length === 0) {\n\t\treturn;\n\t}\n\n\tconst { allFiles } = collectManifestFiles(packageRoot, resourceType);\n\tconst enabledByUser = applyAutoloadDisabledPatterns(allFiles, userPatterns, packageRoot);\n\tfor (const [filePath, enabled] of enabledByUser) {\n\t\taddResource(target, filePath, metadata, enabled);\n\t}\n}\n\n/**\n * Collect all files from a package for a resource type, applying manifest patterns.\n * Returns { allFiles, enabledByManifest } where enabledByManifest is the set of files\n * that pass the manifest's own patterns.\n */\nfunction collectManifestFiles(\n\tpackageRoot: string,\n\tresourceType: ResourceType,\n): { allFiles: string[]; enabledByManifest: Set<string> } {\n\tconst manifest = readPiManifest(join(packageRoot, \"package.json\"));\n\tconst entries = manifest?.[resourceType as keyof PiManifest];\n\tif (entries && entries.length > 0) {\n\t\tconst allFiles = collectFilesFromManifestEntries(entries, packageRoot, resourceType);\n\t\tconst manifestPatterns = entries.filter(isOverridePattern);\n\t\tconst enabledByManifest =\n\t\t\tmanifestPatterns.length > 0 ? applyPatterns(allFiles, manifestPatterns, packageRoot) : new Set(allFiles);\n\t\treturn { allFiles: Array.from(enabledByManifest), enabledByManifest };\n\t}\n\n\tconst conventionDir = join(packageRoot, resourceType);\n\tif (!existsSync(conventionDir)) {\n\t\treturn { allFiles: [], enabledByManifest: new Set() };\n\t}\n\tconst allFiles = collectResourceFiles(conventionDir, resourceType);\n\treturn { allFiles, enabledByManifest: new Set(allFiles) };\n}\n\nfunction addManifestEntries(\n\tentries: string[] | undefined,\n\troot: string,\n\tresourceType: ResourceType,\n\ttarget: Map<string, { metadata: PathMetadata; enabled: boolean }>,\n\tmetadata: PathMetadata,\n): void {\n\tif (!entries) return;\n\n\tconst allFiles = collectFilesFromManifestEntries(entries, root, resourceType);\n\tconst patterns = entries.filter(isOverridePattern);\n\tconst enabledPaths = applyPatterns(allFiles, patterns, root);\n\n\tfor (const f of allFiles) {\n\t\tif (enabledPaths.has(f)) {\n\t\t\taddResource(target, f, metadata, true);\n\t\t}\n\t}\n}\n\nfunction collectFilesFromManifestEntries(entries: string[], root: string, resourceType: ResourceType): string[] {\n\tconst sourceEntries = entries.filter((entry) => !isOverridePattern(entry));\n\tconst resolved = sourceEntries.flatMap((entry) => {\n\t\tif (!hasGlobPattern(entry)) {\n\t\t\treturn [resolve(root, entry)];\n\t\t}\n\n\t\treturn expandPackageGlob(entry, root);\n\t});\n\treturn collectFilesFromPaths(resolved, resourceType);\n}\n\nexport function resolveLocalEntries(\n\tentries: string[],\n\tresourceType: ResourceType,\n\ttarget: Map<string, { metadata: PathMetadata; enabled: boolean }>,\n\tmetadata: PathMetadata,\n\tbaseDir: string,\n): void {\n\tif (entries.length === 0) return;\n\n\t// Collect all files from plain entries (non-pattern entries)\n\tconst { plain, patterns } = splitPatterns(entries);\n\tconst resolvedPlain = plain.map((p) => resolvePathFromBase(p, baseDir));\n\tconst allFiles = collectFilesFromPaths(resolvedPlain, resourceType);\n\n\t// Determine which files are enabled based on patterns\n\tconst enabledPaths = applyPatterns(allFiles, patterns, baseDir);\n\n\t// Add all files with their enabled state\n\tfor (const f of allFiles) {\n\t\taddResource(target, f, metadata, enabledPaths.has(f));\n\t}\n}\n\nexport function addAutoDiscoveredResources(\n\tcwd: string,\n\taccumulator: ResourceAccumulator,\n\tglobalSettings: ReturnType<SettingsManager[\"getGlobalSettings\"]>,\n\tprojectSettings: ReturnType<SettingsManager[\"getProjectSettings\"]>,\n\tglobalBaseDir: string,\n\tprojectBaseDir: string,\n): void {\n\tconst userMetadata: PathMetadata = {\n\t\tsource: \"auto\",\n\t\tscope: \"user\",\n\t\torigin: \"top-level\",\n\t\tbaseDir: globalBaseDir,\n\t};\n\tconst projectMetadata: PathMetadata = {\n\t\tsource: \"auto\",\n\t\tscope: \"project\",\n\t\torigin: \"top-level\",\n\t\tbaseDir: projectBaseDir,\n\t};\n\n\tconst userOverrides = {\n\t\tskills: (globalSettings.skills ?? []) as string[],\n\t\tprompts: (globalSettings.prompts ?? []) as string[],\n\t\tthemes: (globalSettings.themes ?? []) as string[],\n\t};\n\tconst projectOverrides = {\n\t\tskills: (projectSettings.skills ?? []) as string[],\n\t\tprompts: (projectSettings.prompts ?? []) as string[],\n\t\tthemes: (projectSettings.themes ?? []) as string[],\n\t};\n\n\tconst userDirs = {\n\t\tskills: join(globalBaseDir, \"skills\"),\n\t\tprompts: join(globalBaseDir, \"prompts\"),\n\t\tthemes: join(globalBaseDir, \"themes\"),\n\t};\n\tconst projectDirs = {\n\t\tskills: join(projectBaseDir, \"skills\"),\n\t\tprompts: join(projectBaseDir, \"prompts\"),\n\t\tthemes: join(projectBaseDir, \"themes\"),\n\t};\n\tconst userAgentsSkillsDir = join(getHomeDir(), \".agents\", \"skills\");\n\tconst projectAgentsSkillDirs = collectAncestorAgentsSkillDirs(cwd).filter(\n\t\t(dir) => resolve(dir) !== resolve(userAgentsSkillsDir),\n\t);\n\n\tconst addResources = (\n\t\tresourceType: ResourceType,\n\t\tpaths: string[],\n\t\tmetadata: PathMetadata,\n\t\toverrides: string[],\n\t\tbaseDir: string,\n\t) => {\n\t\tconst target = getTargetMap(accumulator, resourceType);\n\t\tfor (const path of paths) {\n\t\t\tconst enabled = isEnabledByOverrides(path, overrides, baseDir);\n\t\t\taddResource(target, path, metadata, enabled);\n\t\t}\n\t};\n\n\t// Project resources are normal plugin inputs, not a core trust-policy path.\n\taddResources(\n\t\t\"skills\",\n\t\tcollectAutoSkillEntries(projectDirs.skills, \"project\"),\n\t\tprojectMetadata,\n\t\tprojectOverrides.skills,\n\t\tprojectBaseDir,\n\t);\n\n\t// Project skills from .agents/ (each with its own baseDir)\n\tfor (const agentsSkillsDir of projectAgentsSkillDirs) {\n\t\tconst agentsBaseDir = dirname(agentsSkillsDir); // the .agents directory\n\t\tconst agentsMetadata: PathMetadata = {\n\t\t\t...projectMetadata,\n\t\t\tbaseDir: agentsBaseDir,\n\t\t};\n\t\taddResources(\n\t\t\t\"skills\",\n\t\t\tcollectAutoSkillEntries(agentsSkillsDir, \"agents\"),\n\t\t\tagentsMetadata,\n\t\t\tprojectOverrides.skills,\n\t\t\tagentsBaseDir,\n\t\t);\n\t}\n\n\taddResources(\n\t\t\"prompts\",\n\t\tcollectAutoPromptEntries(projectDirs.prompts),\n\t\tprojectMetadata,\n\t\tprojectOverrides.prompts,\n\t\tprojectBaseDir,\n\t);\n\taddResources(\n\t\t\"themes\",\n\t\tcollectAutoThemeEntries(projectDirs.themes),\n\t\tprojectMetadata,\n\t\tprojectOverrides.themes,\n\t\tprojectBaseDir,\n\t);\n\n\t// User skills from ~/.agent-forge/agent/\n\taddResources(\n\t\t\"skills\",\n\t\tcollectAutoSkillEntries(userDirs.skills, \"project\"),\n\t\tuserMetadata,\n\t\tuserOverrides.skills,\n\t\tglobalBaseDir,\n\t);\n\n\t// User skills from ~/.agents/ (with its own baseDir)\n\tconst userAgentsBaseDir = dirname(userAgentsSkillsDir);\n\tconst userAgentsMetadata: PathMetadata = {\n\t\t...userMetadata,\n\t\tbaseDir: userAgentsBaseDir,\n\t};\n\taddResources(\n\t\t\"skills\",\n\t\tcollectAutoSkillEntries(userAgentsSkillsDir, \"agents\"),\n\t\tuserAgentsMetadata,\n\t\tuserOverrides.skills,\n\t\tuserAgentsBaseDir,\n\t);\n\n\taddResources(\n\t\t\"prompts\",\n\t\tcollectAutoPromptEntries(userDirs.prompts),\n\t\tuserMetadata,\n\t\tuserOverrides.prompts,\n\t\tglobalBaseDir,\n\t);\n\taddResources(\"themes\", collectAutoThemeEntries(userDirs.themes), userMetadata, userOverrides.themes, globalBaseDir);\n}\n\nfunction collectFilesFromPaths(paths: string[], resourceType: ResourceType): string[] {\n\tconst files: string[] = [];\n\tfor (const p of paths) {\n\t\tif (!existsSync(p)) continue;\n\n\t\ttry {\n\t\t\tconst stats = statSync(p);\n\t\t\tif (stats.isFile()) {\n\t\t\t\tfiles.push(p);\n\t\t\t} else if (stats.isDirectory()) {\n\t\t\t\tfiles.push(...collectResourceFiles(p, resourceType));\n\t\t\t}\n\t\t} catch {\n\t\t\t// Ignore errors\n\t\t}\n\t}\n\treturn files;\n}\n\nexport function getTargetMap(\n\taccumulator: ResourceAccumulator,\n\tresourceType: ResourceType,\n): Map<string, { metadata: PathMetadata; enabled: boolean }> {\n\tswitch (resourceType) {\n\t\tcase \"skills\":\n\t\t\treturn accumulator.skills;\n\t\tcase \"prompts\":\n\t\t\treturn accumulator.prompts;\n\t\tcase \"themes\":\n\t\t\treturn accumulator.themes;\n\t\tdefault:\n\t\t\tthrow new Error(`Unknown resource type: ${resourceType}`);\n\t}\n}\n\nfunction addResource(\n\tmap: Map<string, { metadata: PathMetadata; enabled: boolean }>,\n\tpath: string,\n\tmetadata: PathMetadata,\n\tenabled: boolean,\n): void {\n\tif (!path) return;\n\tif (!map.has(path)) {\n\t\tmap.set(path, { metadata, enabled });\n\t}\n}\n\nexport function createAccumulator(): ResourceAccumulator {\n\treturn {\n\t\tskills: new Map(),\n\t\tprompts: new Map(),\n\t\tthemes: new Map(),\n\t};\n}\n\nexport function toResolvedPaths(accumulator: ResourceAccumulator): ResolvedPaths {\n\tconst mapToResolved = (entries: Map<string, { metadata: PathMetadata; enabled: boolean }>): ResolvedResource[] => {\n\t\tconst resolved = Array.from(entries.entries()).map(([path, { metadata, enabled }]) => ({\n\t\t\tpath,\n\t\t\tenabled,\n\t\t\tmetadata,\n\t\t}));\n\t\tresolved.sort((a, b) => resourcePrecedenceRank(a.metadata) - resourcePrecedenceRank(b.metadata));\n\n\t\tconst seen = new Set<string>();\n\t\treturn resolved.filter((entry) => {\n\t\t\tconst canonicalPath = canonicalizePath(entry.path);\n\t\t\tif (seen.has(canonicalPath)) return false;\n\t\t\tseen.add(canonicalPath);\n\t\t\treturn true;\n\t\t});\n\t};\n\n\treturn {\n\t\tskills: mapToResolved(accumulator.skills),\n\t\tprompts: mapToResolved(accumulator.prompts),\n\t\tthemes: mapToResolved(accumulator.themes),\n\t};\n}\n"]}
|
|
1
|
+
{"version":3,"file":"package-resource-collection.d.ts","sourceRoot":"","sources":["../../src/core/package-resource-collection.ts"],"names":[],"mappings":"AAIA,OAAO,EAaN,KAAK,YAAY,EAEjB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAEN,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,aAAa,EAElB,KAAK,mBAAmB,EAExB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAoB7D,wBAAgB,uBAAuB,CACtC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,mBAAmB,EAChC,MAAM,EAAE,aAAa,GAAG,SAAS,EACjC,QAAQ,EAAE,YAAY,GACpB,OAAO,CAsCT;AA+HD,wBAAgB,mBAAmB,CAClC,OAAO,EAAE,MAAM,EAAE,EACjB,YAAY,EAAE,YAAY,EAC1B,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE;IAAE,QAAQ,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,EACjE,QAAQ,EAAE,YAAY,EACtB,OAAO,EAAE,MAAM,GACb,IAAI,CAeN;AAED,wBAAgB,0BAA0B,CACzC,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,mBAAmB,EAChC,cAAc,EAAE,UAAU,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC,EAChE,eAAe,EAAE,UAAU,CAAC,eAAe,CAAC,oBAAoB,CAAC,CAAC,EAClE,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,MAAM,GACpB,IAAI,CA6HN;AAqBD,wBAAgB,YAAY,CAC3B,WAAW,EAAE,mBAAmB,EAChC,YAAY,EAAE,YAAY,GACxB,GAAG,CAAC,MAAM,EAAE;IAAE,QAAQ,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAW3D;AAcD,wBAAgB,iBAAiB,IAAI,mBAAmB,CAMvD;AAED,wBAAgB,eAAe,CAAC,WAAW,EAAE,mBAAmB,GAAG,aAAa,CAuB/E","sourcesContent":["import { existsSync, statSync } from \"node:fs\";\nimport { dirname, join, resolve } from \"node:path\";\nimport { canonicalizePath } from \"../utils/paths.ts\";\nimport { t } from \"./i18n/index.ts\";\nimport {\n\tapplyAutoloadDisabledPatterns,\n\tapplyPatterns,\n\tcollectAncestorAgentsSkillDirs,\n\tcollectAutoPromptEntries,\n\tcollectAutoSkillEntries,\n\tcollectAutoThemeEntries,\n\tcollectResourceFiles,\n\texpandPackageGlob,\n\thasGlobPattern,\n\tisEnabledByOverrides,\n\tisOverridePattern,\n\tRESOURCE_TYPES,\n\ttype ResourceType,\n\tsplitPatterns,\n} from \"./package-resource-discovery.ts\";\nimport {\n\tgetHomeDir,\n\ttype PackageFilter,\n\ttype PathMetadata,\n\ttype ResolvedPaths,\n\ttype ResolvedResource,\n\ttype ResourceAccumulator,\n\tresolvePathFromBase,\n} from \"./package-source.ts\";\n// PiManifest/readPiManifest retain the legacy `pi` manifest field for package compatibility.\nimport { type PiManifest, readPiManifest } from \"./pi-manifest.ts\";\nimport type { SettingsManager } from \"./settings-manager.ts\";\n\n/**\n * Compute a numeric precedence rank for a resource based on its metadata.\n * Lower rank = higher precedence. Used to sort resolved resources so that\n * name-collision resolution (\"first wins\") produces the correct outcome.\n *\n * Precedence (highest to lowest):\n * 0 project + settings entry (source: \"local\", scope: \"project\")\n * 1 project + auto-discovered (source: \"auto\", scope: \"project\")\n * 2 user + settings entry (source: \"local\", scope: \"user\")\n * 3 user + auto-discovered (source: \"auto\", scope: \"user\")\n * 4 package resource (origin: \"package\")\n */\nfunction resourcePrecedenceRank(m: PathMetadata): number {\n\tif (m.origin === \"package\") return 4;\n\tconst scopeBase = m.scope === \"project\" ? 0 : 2;\n\treturn scopeBase + (m.source === \"local\" ? 0 : 1);\n}\n\nexport function collectPackageResources(\n\tpackageRoot: string,\n\taccumulator: ResourceAccumulator,\n\tfilter: PackageFilter | undefined,\n\tmetadata: PathMetadata,\n): boolean {\n\tif (filter) {\n\t\tfor (const resourceType of RESOURCE_TYPES) {\n\t\t\tconst patterns = filter[resourceType];\n\t\t\tconst target = getTargetMap(accumulator, resourceType);\n\t\t\tif (filter.autoload === false) {\n\t\t\t\tapplyPackageDeltaFilter(packageRoot, patterns ?? [], resourceType, target, metadata);\n\t\t\t} else if (patterns !== undefined) {\n\t\t\t\tapplyPackageFilter(packageRoot, patterns, resourceType, target, metadata);\n\t\t\t} else {\n\t\t\t\tcollectDefaultResources(packageRoot, resourceType, target, metadata);\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\tconst manifest = readPiManifest(join(packageRoot, \"package.json\"));\n\tif (manifest) {\n\t\tfor (const resourceType of RESOURCE_TYPES) {\n\t\t\tconst entries = manifest[resourceType as keyof PiManifest];\n\t\t\taddManifestEntries(entries, packageRoot, resourceType, getTargetMap(accumulator, resourceType), metadata);\n\t\t}\n\t\treturn true;\n\t}\n\n\tlet hasAnyDir = false;\n\tfor (const resourceType of RESOURCE_TYPES) {\n\t\tconst dir = join(packageRoot, resourceType);\n\t\tif (existsSync(dir)) {\n\t\t\t// Collect all files from the directory (all enabled by default)\n\t\t\tconst files = collectResourceFiles(dir, resourceType);\n\t\t\tfor (const f of files) {\n\t\t\t\taddResource(getTargetMap(accumulator, resourceType), f, metadata, true);\n\t\t\t}\n\t\t\thasAnyDir = true;\n\t\t}\n\t}\n\treturn hasAnyDir;\n}\n\nfunction collectDefaultResources(\n\tpackageRoot: string,\n\tresourceType: ResourceType,\n\ttarget: Map<string, { metadata: PathMetadata; enabled: boolean }>,\n\tmetadata: PathMetadata,\n): void {\n\tconst manifest = readPiManifest(join(packageRoot, \"package.json\"));\n\tconst entries = manifest?.[resourceType as keyof PiManifest];\n\tif (entries) {\n\t\taddManifestEntries(entries, packageRoot, resourceType, target, metadata);\n\t\treturn;\n\t}\n\tconst dir = join(packageRoot, resourceType);\n\tif (existsSync(dir)) {\n\t\t// Collect all files from the directory (all enabled by default)\n\t\tconst files = collectResourceFiles(dir, resourceType);\n\t\tfor (const f of files) {\n\t\t\taddResource(target, f, metadata, true);\n\t\t}\n\t}\n}\n\nfunction applyPackageFilter(\n\tpackageRoot: string,\n\tuserPatterns: string[],\n\tresourceType: ResourceType,\n\ttarget: Map<string, { metadata: PathMetadata; enabled: boolean }>,\n\tmetadata: PathMetadata,\n): void {\n\tconst { allFiles } = collectManifestFiles(packageRoot, resourceType);\n\n\tif (userPatterns.length === 0) {\n\t\t// Empty array explicitly disables all resources of this type\n\t\tfor (const f of allFiles) {\n\t\t\taddResource(target, f, metadata, false);\n\t\t}\n\t\treturn;\n\t}\n\n\t// Apply user patterns\n\tconst enabledByUser = applyPatterns(allFiles, userPatterns, packageRoot);\n\n\tfor (const f of allFiles) {\n\t\tconst enabled = enabledByUser.has(f);\n\t\taddResource(target, f, metadata, enabled);\n\t}\n}\n\nfunction applyPackageDeltaFilter(\n\tpackageRoot: string,\n\tuserPatterns: string[],\n\tresourceType: ResourceType,\n\ttarget: Map<string, { metadata: PathMetadata; enabled: boolean }>,\n\tmetadata: PathMetadata,\n): void {\n\tif (userPatterns.length === 0) {\n\t\treturn;\n\t}\n\n\tconst { allFiles } = collectManifestFiles(packageRoot, resourceType);\n\tconst enabledByUser = applyAutoloadDisabledPatterns(allFiles, userPatterns, packageRoot);\n\tfor (const [filePath, enabled] of enabledByUser) {\n\t\taddResource(target, filePath, metadata, enabled);\n\t}\n}\n\n/**\n * Collect all files from a package for a resource type, applying manifest patterns.\n * Returns { allFiles, enabledByManifest } where enabledByManifest is the set of files\n * that pass the manifest's own patterns.\n */\nfunction collectManifestFiles(\n\tpackageRoot: string,\n\tresourceType: ResourceType,\n): { allFiles: string[]; enabledByManifest: Set<string> } {\n\tconst manifest = readPiManifest(join(packageRoot, \"package.json\"));\n\tconst entries = manifest?.[resourceType as keyof PiManifest];\n\tif (entries && entries.length > 0) {\n\t\tconst allFiles = collectFilesFromManifestEntries(entries, packageRoot, resourceType);\n\t\tconst manifestPatterns = entries.filter(isOverridePattern);\n\t\tconst enabledByManifest =\n\t\t\tmanifestPatterns.length > 0 ? applyPatterns(allFiles, manifestPatterns, packageRoot) : new Set(allFiles);\n\t\treturn { allFiles: Array.from(enabledByManifest), enabledByManifest };\n\t}\n\n\tconst conventionDir = join(packageRoot, resourceType);\n\tif (!existsSync(conventionDir)) {\n\t\treturn { allFiles: [], enabledByManifest: new Set() };\n\t}\n\tconst allFiles = collectResourceFiles(conventionDir, resourceType);\n\treturn { allFiles, enabledByManifest: new Set(allFiles) };\n}\n\nfunction addManifestEntries(\n\tentries: string[] | undefined,\n\troot: string,\n\tresourceType: ResourceType,\n\ttarget: Map<string, { metadata: PathMetadata; enabled: boolean }>,\n\tmetadata: PathMetadata,\n): void {\n\tif (!entries) return;\n\n\tconst allFiles = collectFilesFromManifestEntries(entries, root, resourceType);\n\tconst patterns = entries.filter(isOverridePattern);\n\tconst enabledPaths = applyPatterns(allFiles, patterns, root);\n\n\tfor (const f of allFiles) {\n\t\tif (enabledPaths.has(f)) {\n\t\t\taddResource(target, f, metadata, true);\n\t\t}\n\t}\n}\n\nfunction collectFilesFromManifestEntries(entries: string[], root: string, resourceType: ResourceType): string[] {\n\tconst sourceEntries = entries.filter((entry) => !isOverridePattern(entry));\n\tconst resolved = sourceEntries.flatMap((entry) => {\n\t\tif (!hasGlobPattern(entry)) {\n\t\t\treturn [resolve(root, entry)];\n\t\t}\n\n\t\treturn expandPackageGlob(entry, root);\n\t});\n\treturn collectFilesFromPaths(resolved, resourceType);\n}\n\nexport function resolveLocalEntries(\n\tentries: string[],\n\tresourceType: ResourceType,\n\ttarget: Map<string, { metadata: PathMetadata; enabled: boolean }>,\n\tmetadata: PathMetadata,\n\tbaseDir: string,\n): void {\n\tif (entries.length === 0) return;\n\n\t// Collect all files from plain entries (non-pattern entries)\n\tconst { plain, patterns } = splitPatterns(entries);\n\tconst resolvedPlain = plain.map((p) => resolvePathFromBase(p, baseDir));\n\tconst allFiles = collectFilesFromPaths(resolvedPlain, resourceType);\n\n\t// Determine which files are enabled based on patterns\n\tconst enabledPaths = applyPatterns(allFiles, patterns, baseDir);\n\n\t// Add all files with their enabled state\n\tfor (const f of allFiles) {\n\t\taddResource(target, f, metadata, enabledPaths.has(f));\n\t}\n}\n\nexport function addAutoDiscoveredResources(\n\tcwd: string,\n\taccumulator: ResourceAccumulator,\n\tglobalSettings: ReturnType<SettingsManager[\"getGlobalSettings\"]>,\n\tprojectSettings: ReturnType<SettingsManager[\"getProjectSettings\"]>,\n\tglobalBaseDir: string,\n\tprojectBaseDir: string,\n): void {\n\tconst userMetadata: PathMetadata = {\n\t\tsource: \"auto\",\n\t\tscope: \"user\",\n\t\torigin: \"top-level\",\n\t\tbaseDir: globalBaseDir,\n\t};\n\tconst projectMetadata: PathMetadata = {\n\t\tsource: \"auto\",\n\t\tscope: \"project\",\n\t\torigin: \"top-level\",\n\t\tbaseDir: projectBaseDir,\n\t};\n\n\tconst userOverrides = {\n\t\tskills: (globalSettings.skills ?? []) as string[],\n\t\tprompts: (globalSettings.prompts ?? []) as string[],\n\t\tthemes: (globalSettings.themes ?? []) as string[],\n\t};\n\tconst projectOverrides = {\n\t\tskills: (projectSettings.skills ?? []) as string[],\n\t\tprompts: (projectSettings.prompts ?? []) as string[],\n\t\tthemes: (projectSettings.themes ?? []) as string[],\n\t};\n\n\tconst userDirs = {\n\t\tskills: join(globalBaseDir, \"skills\"),\n\t\tprompts: join(globalBaseDir, \"prompts\"),\n\t\tthemes: join(globalBaseDir, \"themes\"),\n\t};\n\tconst projectDirs = {\n\t\tskills: join(projectBaseDir, \"skills\"),\n\t\tprompts: join(projectBaseDir, \"prompts\"),\n\t\tthemes: join(projectBaseDir, \"themes\"),\n\t};\n\tconst userAgentsSkillsDir = join(getHomeDir(), \".agents\", \"skills\");\n\tconst projectAgentsSkillDirs = collectAncestorAgentsSkillDirs(cwd).filter(\n\t\t(dir) => resolve(dir) !== resolve(userAgentsSkillsDir),\n\t);\n\n\tconst addResources = (\n\t\tresourceType: ResourceType,\n\t\tpaths: string[],\n\t\tmetadata: PathMetadata,\n\t\toverrides: string[],\n\t\tbaseDir: string,\n\t) => {\n\t\tconst target = getTargetMap(accumulator, resourceType);\n\t\tfor (const path of paths) {\n\t\t\tconst enabled = isEnabledByOverrides(path, overrides, baseDir);\n\t\t\taddResource(target, path, metadata, enabled);\n\t\t}\n\t};\n\n\t// Project resources are normal plugin inputs, not a core trust-policy path.\n\taddResources(\n\t\t\"skills\",\n\t\tcollectAutoSkillEntries(projectDirs.skills, \"project\"),\n\t\tprojectMetadata,\n\t\tprojectOverrides.skills,\n\t\tprojectBaseDir,\n\t);\n\n\t// Project skills from .agents/ (each with its own baseDir)\n\tfor (const agentsSkillsDir of projectAgentsSkillDirs) {\n\t\tconst agentsBaseDir = dirname(agentsSkillsDir); // the .agents directory\n\t\tconst agentsMetadata: PathMetadata = {\n\t\t\t...projectMetadata,\n\t\t\tbaseDir: agentsBaseDir,\n\t\t};\n\t\taddResources(\n\t\t\t\"skills\",\n\t\t\tcollectAutoSkillEntries(agentsSkillsDir, \"agents\"),\n\t\t\tagentsMetadata,\n\t\t\tprojectOverrides.skills,\n\t\t\tagentsBaseDir,\n\t\t);\n\t}\n\n\taddResources(\n\t\t\"prompts\",\n\t\tcollectAutoPromptEntries(projectDirs.prompts),\n\t\tprojectMetadata,\n\t\tprojectOverrides.prompts,\n\t\tprojectBaseDir,\n\t);\n\taddResources(\n\t\t\"themes\",\n\t\tcollectAutoThemeEntries(projectDirs.themes),\n\t\tprojectMetadata,\n\t\tprojectOverrides.themes,\n\t\tprojectBaseDir,\n\t);\n\n\t// User skills from ~/.agent-forge/agent/\n\taddResources(\n\t\t\"skills\",\n\t\tcollectAutoSkillEntries(userDirs.skills, \"project\"),\n\t\tuserMetadata,\n\t\tuserOverrides.skills,\n\t\tglobalBaseDir,\n\t);\n\n\t// User skills from ~/.agents/ (with its own baseDir)\n\tconst userAgentsBaseDir = dirname(userAgentsSkillsDir);\n\tconst userAgentsMetadata: PathMetadata = {\n\t\t...userMetadata,\n\t\tbaseDir: userAgentsBaseDir,\n\t};\n\taddResources(\n\t\t\"skills\",\n\t\tcollectAutoSkillEntries(userAgentsSkillsDir, \"agents\"),\n\t\tuserAgentsMetadata,\n\t\tuserOverrides.skills,\n\t\tuserAgentsBaseDir,\n\t);\n\n\taddResources(\n\t\t\"prompts\",\n\t\tcollectAutoPromptEntries(userDirs.prompts),\n\t\tuserMetadata,\n\t\tuserOverrides.prompts,\n\t\tglobalBaseDir,\n\t);\n\taddResources(\"themes\", collectAutoThemeEntries(userDirs.themes), userMetadata, userOverrides.themes, globalBaseDir);\n}\n\nfunction collectFilesFromPaths(paths: string[], resourceType: ResourceType): string[] {\n\tconst files: string[] = [];\n\tfor (const p of paths) {\n\t\tif (!existsSync(p)) continue;\n\n\t\ttry {\n\t\t\tconst stats = statSync(p);\n\t\t\tif (stats.isFile()) {\n\t\t\t\tfiles.push(p);\n\t\t\t} else if (stats.isDirectory()) {\n\t\t\t\tfiles.push(...collectResourceFiles(p, resourceType));\n\t\t\t}\n\t\t} catch {\n\t\t\t// Ignore errors\n\t\t}\n\t}\n\treturn files;\n}\n\nexport function getTargetMap(\n\taccumulator: ResourceAccumulator,\n\tresourceType: ResourceType,\n): Map<string, { metadata: PathMetadata; enabled: boolean }> {\n\tswitch (resourceType) {\n\t\tcase \"skills\":\n\t\t\treturn accumulator.skills;\n\t\tcase \"prompts\":\n\t\t\treturn accumulator.prompts;\n\t\tcase \"themes\":\n\t\t\treturn accumulator.themes;\n\t\tdefault:\n\t\t\tthrow new Error(t(\"Unknown resource type: {resourceType}\", { resourceType }));\n\t}\n}\n\nfunction addResource(\n\tmap: Map<string, { metadata: PathMetadata; enabled: boolean }>,\n\tpath: string,\n\tmetadata: PathMetadata,\n\tenabled: boolean,\n): void {\n\tif (!path) return;\n\tif (!map.has(path)) {\n\t\tmap.set(path, { metadata, enabled });\n\t}\n}\n\nexport function createAccumulator(): ResourceAccumulator {\n\treturn {\n\t\tskills: new Map(),\n\t\tprompts: new Map(),\n\t\tthemes: new Map(),\n\t};\n}\n\nexport function toResolvedPaths(accumulator: ResourceAccumulator): ResolvedPaths {\n\tconst mapToResolved = (entries: Map<string, { metadata: PathMetadata; enabled: boolean }>): ResolvedResource[] => {\n\t\tconst resolved = Array.from(entries.entries()).map(([path, { metadata, enabled }]) => ({\n\t\t\tpath,\n\t\t\tenabled,\n\t\t\tmetadata,\n\t\t}));\n\t\tresolved.sort((a, b) => resourcePrecedenceRank(a.metadata) - resourcePrecedenceRank(b.metadata));\n\n\t\tconst seen = new Set<string>();\n\t\treturn resolved.filter((entry) => {\n\t\t\tconst canonicalPath = canonicalizePath(entry.path);\n\t\t\tif (seen.has(canonicalPath)) return false;\n\t\t\tseen.add(canonicalPath);\n\t\t\treturn true;\n\t\t});\n\t};\n\n\treturn {\n\t\tskills: mapToResolved(accumulator.skills),\n\t\tprompts: mapToResolved(accumulator.prompts),\n\t\tthemes: mapToResolved(accumulator.themes),\n\t};\n}\n"]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { existsSync, statSync } from "node:fs";
|
|
2
2
|
import { dirname, join, resolve } from "node:path";
|
|
3
3
|
import { canonicalizePath } from "../utils/paths.js";
|
|
4
|
+
import { t } from "./i18n/index.js";
|
|
4
5
|
import { applyAutoloadDisabledPatterns, applyPatterns, collectAncestorAgentsSkillDirs, collectAutoPromptEntries, collectAutoSkillEntries, collectAutoThemeEntries, collectResourceFiles, expandPackageGlob, hasGlobPattern, isEnabledByOverrides, isOverridePattern, RESOURCE_TYPES, splitPatterns, } from "./package-resource-discovery.js";
|
|
5
6
|
import { getHomeDir, resolvePathFromBase, } from "./package-source.js";
|
|
6
7
|
// PiManifest/readPiManifest retain the legacy `pi` manifest field for package compatibility.
|
|
@@ -257,7 +258,7 @@ export function getTargetMap(accumulator, resourceType) {
|
|
|
257
258
|
case "themes":
|
|
258
259
|
return accumulator.themes;
|
|
259
260
|
default:
|
|
260
|
-
throw new Error(
|
|
261
|
+
throw new Error(t("Unknown resource type: {resourceType}", { resourceType }));
|
|
261
262
|
}
|
|
262
263
|
}
|
|
263
264
|
function addResource(map, path, metadata, enabled) {
|