@lesliechan721/aw 0.1.0-beta.3
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/dist/authoring/assets/aw-config.d.mts +2 -0
- package/dist/authoring/assets/aw-config.mjs +556 -0
- package/dist/authoring/assets/aw-config.mjs.map +1 -0
- package/dist/authoring/scripts/add-skill.d.mts +2 -0
- package/dist/authoring/scripts/add-skill.mjs +355 -0
- package/dist/authoring/scripts/add-skill.mjs.map +1 -0
- package/dist/authoring/scripts/check-plugin-versions.d.mts +2 -0
- package/dist/authoring/scripts/check-plugin-versions.mjs +5 -0
- package/dist/authoring/scripts/check-plugin-versions.mjs.map +1 -0
- package/dist/authoring/scripts/init-plugin.d.mts +2 -0
- package/dist/authoring/scripts/init-plugin.mjs +512 -0
- package/dist/authoring/scripts/init-plugin.mjs.map +1 -0
- package/dist/authoring/scripts/lib/javascript-import-scanner.d.mts +4 -0
- package/dist/authoring/scripts/lib/javascript-import-scanner.mjs +261 -0
- package/dist/authoring/scripts/lib/javascript-import-scanner.mjs.map +1 -0
- package/dist/authoring/scripts/lib/plugin-root.d.mts +26 -0
- package/dist/authoring/scripts/lib/plugin-root.mjs +125 -0
- package/dist/authoring/scripts/lib/plugin-root.mjs.map +1 -0
- package/dist/authoring/scripts/lib/plugin-version-check.d.mts +55 -0
- package/dist/authoring/scripts/lib/plugin-version-check.mjs +777 -0
- package/dist/authoring/scripts/lib/plugin-version-check.mjs.map +1 -0
- package/dist/authoring/scripts/lib/semver.d.mts +9 -0
- package/dist/authoring/scripts/lib/semver.mjs +63 -0
- package/dist/authoring/scripts/lib/semver.mjs.map +1 -0
- package/dist/authoring/scripts/lib/skill-scaffold.d.mts +124 -0
- package/dist/authoring/scripts/lib/skill-scaffold.mjs +374 -0
- package/dist/authoring/scripts/lib/skill-scaffold.mjs.map +1 -0
- package/dist/authoring/scripts/plugin-status.d.mts +2 -0
- package/dist/authoring/scripts/plugin-status.mjs +96 -0
- package/dist/authoring/scripts/plugin-status.mjs.map +1 -0
- package/dist/authoring/scripts/validate-plugin.d.mts +2 -0
- package/dist/authoring/scripts/validate-plugin.mjs +4442 -0
- package/dist/authoring/scripts/validate-plugin.mjs.map +1 -0
- package/dist/authoring/scripts/validate-skill.d.mts +2 -0
- package/dist/authoring/scripts/validate-skill.mjs +126 -0
- package/dist/authoring/scripts/validate-skill.mjs.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/scripts/aw-skill-eval-engine.d.ts +13 -0
- package/dist/scripts/aw-skill-eval-engine.js +31 -0
- package/dist/scripts/aw-skill-eval-engine.js.map +1 -0
- package/dist/scripts/bundle-plugins.d.ts +18 -0
- package/dist/scripts/bundle-plugins.js +123 -0
- package/dist/scripts/bundle-plugins.js.map +1 -0
- package/dist/scripts/codex-eval-app-server.d.ts +89 -0
- package/dist/scripts/codex-eval-app-server.js +1228 -0
- package/dist/scripts/codex-eval-app-server.js.map +1 -0
- package/dist/scripts/codex-eval-isolation.d.ts +61 -0
- package/dist/scripts/codex-eval-isolation.js +318 -0
- package/dist/scripts/codex-eval-isolation.js.map +1 -0
- package/dist/scripts/codex-eval-process-management.d.ts +8 -0
- package/dist/scripts/codex-eval-process-management.js +69 -0
- package/dist/scripts/codex-eval-process-management.js.map +1 -0
- package/dist/scripts/codex-eval-process-tree.d.ts +38 -0
- package/dist/scripts/codex-eval-process-tree.js +803 -0
- package/dist/scripts/codex-eval-process-tree.js.map +1 -0
- package/dist/scripts/codex-eval-runtime-config.d.ts +62 -0
- package/dist/scripts/codex-eval-runtime-config.js +843 -0
- package/dist/scripts/codex-eval-runtime-config.js.map +1 -0
- package/dist/scripts/codex-trigger-eval.d.ts +84 -0
- package/dist/scripts/codex-trigger-eval.js +968 -0
- package/dist/scripts/codex-trigger-eval.js.map +1 -0
- package/dist/scripts/eval-plugin-skills-audited.d.ts +6 -0
- package/dist/scripts/eval-plugin-skills-audited.js +261 -0
- package/dist/scripts/eval-plugin-skills-audited.js.map +1 -0
- package/dist/scripts/eval-plugin-skills.d.ts +45 -0
- package/dist/scripts/eval-plugin-skills.js +1586 -0
- package/dist/scripts/eval-plugin-skills.js.map +1 -0
- package/dist/scripts/eval-run-layout.d.ts +17 -0
- package/dist/scripts/eval-run-layout.js +26 -0
- package/dist/scripts/eval-run-layout.js.map +1 -0
- package/dist/scripts/plugin-eval-contract.d.ts +185 -0
- package/dist/scripts/plugin-eval-contract.js +695 -0
- package/dist/scripts/plugin-eval-contract.js.map +1 -0
- package/dist/scripts/plugin-eval-materializer.d.ts +13 -0
- package/dist/scripts/plugin-eval-materializer.js +421 -0
- package/dist/scripts/plugin-eval-materializer.js.map +1 -0
- package/dist/scripts/plugin-staging.d.ts +43 -0
- package/dist/scripts/plugin-staging.js +196 -0
- package/dist/scripts/plugin-staging.js.map +1 -0
- package/dist/scripts/skill-reporting.d.ts +212 -0
- package/dist/scripts/skill-reporting.js +922 -0
- package/dist/scripts/skill-reporting.js.map +1 -0
- package/dist/scripts/test-plugin-scripts.d.ts +7 -0
- package/dist/scripts/test-plugin-scripts.js +674 -0
- package/dist/scripts/test-plugin-scripts.js.map +1 -0
- package/dist/src/adapters/helpers.d.ts +44 -0
- package/dist/src/adapters/helpers.js +95 -0
- package/dist/src/adapters/helpers.js.map +1 -0
- package/dist/src/authoring/workspace-commands.d.ts +46 -0
- package/dist/src/authoring/workspace-commands.js +133 -0
- package/dist/src/authoring/workspace-commands.js.map +1 -0
- package/dist/src/commands/catalog-publish.d.ts +33 -0
- package/dist/src/commands/catalog-publish.js +374 -0
- package/dist/src/commands/catalog-publish.js.map +1 -0
- package/dist/src/commands/catalog-source.d.ts +111 -0
- package/dist/src/commands/catalog-source.js +266 -0
- package/dist/src/commands/catalog-source.js.map +1 -0
- package/dist/src/commands/console.d.ts +3 -0
- package/dist/src/commands/console.js +44 -0
- package/dist/src/commands/console.js.map +1 -0
- package/dist/src/commands/dependency-operation-plan.d.ts +28 -0
- package/dist/src/commands/dependency-operation-plan.js +15 -0
- package/dist/src/commands/dependency-operation-plan.js.map +1 -0
- package/dist/src/commands/init.d.ts +31 -0
- package/dist/src/commands/init.js +63 -0
- package/dist/src/commands/init.js.map +1 -0
- package/dist/src/commands/options.d.ts +68 -0
- package/dist/src/commands/options.js +146 -0
- package/dist/src/commands/options.js.map +1 -0
- package/dist/src/commands/rebuild-command.d.ts +77 -0
- package/dist/src/commands/rebuild-command.js +1681 -0
- package/dist/src/commands/rebuild-command.js.map +1 -0
- package/dist/src/commands/rebuild-integration.d.ts +94 -0
- package/dist/src/commands/rebuild-integration.js +3289 -0
- package/dist/src/commands/rebuild-integration.js.map +1 -0
- package/dist/src/commands/rebuild-operations.d.ts +110 -0
- package/dist/src/commands/rebuild-operations.js +791 -0
- package/dist/src/commands/rebuild-operations.js.map +1 -0
- package/dist/src/commands/review-publication.d.ts +99 -0
- package/dist/src/commands/review-publication.js +904 -0
- package/dist/src/commands/review-publication.js.map +1 -0
- package/dist/src/commands/runtime.d.ts +176 -0
- package/dist/src/commands/runtime.js +746 -0
- package/dist/src/commands/runtime.js.map +1 -0
- package/dist/src/commands/status-v4.d.ts +102 -0
- package/dist/src/commands/status-v4.js +844 -0
- package/dist/src/commands/status-v4.js.map +1 -0
- package/dist/src/commands/status.d.ts +93 -0
- package/dist/src/commands/status.js +442 -0
- package/dist/src/commands/status.js.map +1 -0
- package/dist/src/commands/wizard.d.ts +57 -0
- package/dist/src/commands/wizard.js +58 -0
- package/dist/src/commands/wizard.js.map +1 -0
- package/dist/src/commands/write-commands.d.ts +7 -0
- package/dist/src/commands/write-commands.js +167 -0
- package/dist/src/commands/write-commands.js.map +1 -0
- package/dist/src/constants.d.ts +25 -0
- package/dist/src/constants.js +26 -0
- package/dist/src/constants.js.map +1 -0
- package/dist/src/generators/agents.d.ts +3 -0
- package/dist/src/generators/agents.js +46 -0
- package/dist/src/generators/agents.js.map +1 -0
- package/dist/src/generators/hooks.d.ts +15 -0
- package/dist/src/generators/hooks.js +76 -0
- package/dist/src/generators/hooks.js.map +1 -0
- package/dist/src/generators/instructions.d.ts +13 -0
- package/dist/src/generators/instructions.js +66 -0
- package/dist/src/generators/instructions.js.map +1 -0
- package/dist/src/generators/local-plugin.d.ts +53 -0
- package/dist/src/generators/local-plugin.js +1268 -0
- package/dist/src/generators/local-plugin.js.map +1 -0
- package/dist/src/generators/permissions.d.ts +10 -0
- package/dist/src/generators/permissions.js +37 -0
- package/dist/src/generators/permissions.js.map +1 -0
- package/dist/src/generators/shared.d.ts +2 -0
- package/dist/src/generators/shared.js +15 -0
- package/dist/src/generators/shared.js.map +1 -0
- package/dist/src/index.d.ts +35 -0
- package/dist/src/index.js +2344 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/output/command-receipt.d.ts +90 -0
- package/dist/src/output/command-receipt.js +129 -0
- package/dist/src/output/command-receipt.js.map +1 -0
- package/dist/src/output/debug-log.d.ts +4 -0
- package/dist/src/output/debug-log.js +97 -0
- package/dist/src/output/debug-log.js.map +1 -0
- package/dist/src/output/equivalent-command.d.ts +9 -0
- package/dist/src/output/equivalent-command.js +39 -0
- package/dist/src/output/equivalent-command.js.map +1 -0
- package/dist/src/output/model.d.ts +117 -0
- package/dist/src/output/model.js +145 -0
- package/dist/src/output/model.js.map +1 -0
- package/dist/src/output/rebuild-progress.d.ts +21 -0
- package/dist/src/output/rebuild-progress.js +138 -0
- package/dist/src/output/rebuild-progress.js.map +1 -0
- package/dist/src/output/redact.d.ts +3 -0
- package/dist/src/output/redact.js +39 -0
- package/dist/src/output/redact.js.map +1 -0
- package/dist/src/output/reporter.d.ts +9 -0
- package/dist/src/output/reporter.js +133 -0
- package/dist/src/output/reporter.js.map +1 -0
- package/dist/src/portable/commands.d.ts +120 -0
- package/dist/src/portable/commands.js +506 -0
- package/dist/src/portable/commands.js.map +1 -0
- package/dist/src/portable/materializer.d.ts +50 -0
- package/dist/src/portable/materializer.js +408 -0
- package/dist/src/portable/materializer.js.map +1 -0
- package/dist/src/portable/skills-cli.d.ts +43 -0
- package/dist/src/portable/skills-cli.js +148 -0
- package/dist/src/portable/skills-cli.js.map +1 -0
- package/dist/src/tui/components.d.ts +32 -0
- package/dist/src/tui/components.js +42 -0
- package/dist/src/tui/components.js.map +1 -0
- package/dist/src/tui/console-app-v4.d.ts +20 -0
- package/dist/src/tui/console-app-v4.js +2613 -0
- package/dist/src/tui/console-app-v4.js.map +1 -0
- package/dist/src/tui/controller-runtime.d.ts +11 -0
- package/dist/src/tui/controller-runtime.js +902 -0
- package/dist/src/tui/controller-runtime.js.map +1 -0
- package/dist/src/tui/controller.d.ts +367 -0
- package/dist/src/tui/controller.js +1724 -0
- package/dist/src/tui/controller.js.map +1 -0
- package/dist/src/tui/index.d.ts +13 -0
- package/dist/src/tui/index.js +14 -0
- package/dist/src/tui/index.js.map +1 -0
- package/dist/src/tui/keys.d.ts +12 -0
- package/dist/src/tui/keys.js +22 -0
- package/dist/src/tui/keys.js.map +1 -0
- package/dist/src/tui/layout.d.ts +12 -0
- package/dist/src/tui/layout.js +19 -0
- package/dist/src/tui/layout.js.map +1 -0
- package/dist/src/tui/model.d.ts +279 -0
- package/dist/src/tui/model.js +652 -0
- package/dist/src/tui/model.js.map +1 -0
- package/dist/src/tui/prompt.d.ts +8 -0
- package/dist/src/tui/prompt.js +242 -0
- package/dist/src/tui/prompt.js.map +1 -0
- package/dist/src/tui/router.d.ts +153 -0
- package/dist/src/tui/router.js +102 -0
- package/dist/src/tui/router.js.map +1 -0
- package/dist/src/tui/runner.d.ts +11 -0
- package/dist/src/tui/runner.js +71 -0
- package/dist/src/tui/runner.js.map +1 -0
- package/dist/src/tui/theme.d.ts +18 -0
- package/dist/src/tui/theme.js +20 -0
- package/dist/src/tui/theme.js.map +1 -0
- package/dist/src/tui/views.d.ts +57 -0
- package/dist/src/tui/views.js +173 -0
- package/dist/src/tui/views.js.map +1 -0
- package/dist/src/tui/wizard.d.ts +11 -0
- package/dist/src/tui/wizard.js +321 -0
- package/dist/src/tui/wizard.js.map +1 -0
- package/dist/src/types.d.ts +313 -0
- package/dist/src/types.js +33 -0
- package/dist/src/types.js.map +1 -0
- package/dist/src/utils/active-marketplace-runtime-lock.d.ts +12 -0
- package/dist/src/utils/active-marketplace-runtime-lock.js +133 -0
- package/dist/src/utils/active-marketplace-runtime-lock.js.map +1 -0
- package/dist/src/utils/agent-version.d.ts +13 -0
- package/dist/src/utils/agent-version.js +172 -0
- package/dist/src/utils/agent-version.js.map +1 -0
- package/dist/src/utils/artifact-plan.d.ts +26 -0
- package/dist/src/utils/artifact-plan.js +444 -0
- package/dist/src/utils/artifact-plan.js.map +1 -0
- package/dist/src/utils/artifact-renderer.d.ts +124 -0
- package/dist/src/utils/artifact-renderer.js +442 -0
- package/dist/src/utils/artifact-renderer.js.map +1 -0
- package/dist/src/utils/artifact-sources.d.ts +8 -0
- package/dist/src/utils/artifact-sources.js +10 -0
- package/dist/src/utils/artifact-sources.js.map +1 -0
- package/dist/src/utils/aw-home-mutation-lock.d.ts +10 -0
- package/dist/src/utils/aw-home-mutation-lock.js +55 -0
- package/dist/src/utils/aw-home-mutation-lock.js.map +1 -0
- package/dist/src/utils/bundle-integrity.d.ts +3 -0
- package/dist/src/utils/bundle-integrity.js +88 -0
- package/dist/src/utils/bundle-integrity.js.map +1 -0
- package/dist/src/utils/bundle-layout.d.ts +4 -0
- package/dist/src/utils/bundle-layout.js +546 -0
- package/dist/src/utils/bundle-layout.js.map +1 -0
- package/dist/src/utils/catalog-digests.d.ts +8 -0
- package/dist/src/utils/catalog-digests.js +108 -0
- package/dist/src/utils/catalog-digests.js.map +1 -0
- package/dist/src/utils/catalog-manifest-v3.d.ts +2 -0
- package/dist/src/utils/catalog-manifest-v3.js +3 -0
- package/dist/src/utils/catalog-manifest-v3.js.map +1 -0
- package/dist/src/utils/catalog-manifest-v4.d.ts +5 -0
- package/dist/src/utils/catalog-manifest-v4.js +106 -0
- package/dist/src/utils/catalog-manifest-v4.js.map +1 -0
- package/dist/src/utils/catalog-public-error.d.ts +15 -0
- package/dist/src/utils/catalog-public-error.js +84 -0
- package/dist/src/utils/catalog-public-error.js.map +1 -0
- package/dist/src/utils/catalog-runtime-projection.d.ts +36 -0
- package/dist/src/utils/catalog-runtime-projection.js +172 -0
- package/dist/src/utils/catalog-runtime-projection.js.map +1 -0
- package/dist/src/utils/catalog-snapshot.d.ts +8 -0
- package/dist/src/utils/catalog-snapshot.js +12 -0
- package/dist/src/utils/catalog-snapshot.js.map +1 -0
- package/dist/src/utils/catalog-source-cache.d.ts +61 -0
- package/dist/src/utils/catalog-source-cache.js +276 -0
- package/dist/src/utils/catalog-source-cache.js.map +1 -0
- package/dist/src/utils/catalog-source-identity.d.ts +4 -0
- package/dist/src/utils/catalog-source-identity.js +118 -0
- package/dist/src/utils/catalog-source-identity.js.map +1 -0
- package/dist/src/utils/catalog-source-presentation.d.ts +1 -0
- package/dist/src/utils/catalog-source-presentation.js +32 -0
- package/dist/src/utils/catalog-source-presentation.js.map +1 -0
- package/dist/src/utils/catalog-source-references.d.ts +65 -0
- package/dist/src/utils/catalog-source-references.js +1418 -0
- package/dist/src/utils/catalog-source-references.js.map +1 -0
- package/dist/src/utils/catalog-sources.d.ts +39 -0
- package/dist/src/utils/catalog-sources.js +293 -0
- package/dist/src/utils/catalog-sources.js.map +1 -0
- package/dist/src/utils/codex-config.d.ts +124 -0
- package/dist/src/utils/codex-config.js +1011 -0
- package/dist/src/utils/codex-config.js.map +1 -0
- package/dist/src/utils/codex-project-surface.d.ts +3 -0
- package/dist/src/utils/codex-project-surface.js +49 -0
- package/dist/src/utils/codex-project-surface.js.map +1 -0
- package/dist/src/utils/codex-roles.d.ts +71 -0
- package/dist/src/utils/codex-roles.js +257 -0
- package/dist/src/utils/codex-roles.js.map +1 -0
- package/dist/src/utils/codex-skill-staging.d.ts +9 -0
- package/dist/src/utils/codex-skill-staging.js +8 -0
- package/dist/src/utils/codex-skill-staging.js.map +1 -0
- package/dist/src/utils/config-value.d.ts +3 -0
- package/dist/src/utils/config-value.js +23 -0
- package/dist/src/utils/config-value.js.map +1 -0
- package/dist/src/utils/dynamic-skill-tree.d.ts +32 -0
- package/dist/src/utils/dynamic-skill-tree.js +436 -0
- package/dist/src/utils/dynamic-skill-tree.js.map +1 -0
- package/dist/src/utils/file-rules.d.ts +1 -0
- package/dist/src/utils/file-rules.js +2 -0
- package/dist/src/utils/file-rules.js.map +1 -0
- package/dist/src/utils/git-catalog-provider.d.ts +7 -0
- package/dist/src/utils/git-catalog-provider.js +510 -0
- package/dist/src/utils/git-catalog-provider.js.map +1 -0
- package/dist/src/utils/hooks-contract.d.ts +1 -0
- package/dist/src/utils/hooks-contract.js +2 -0
- package/dist/src/utils/hooks-contract.js.map +1 -0
- package/dist/src/utils/json.d.ts +4 -0
- package/dist/src/utils/json.js +29 -0
- package/dist/src/utils/json.js.map +1 -0
- package/dist/src/utils/lifecycle-active-store.d.ts +175 -0
- package/dist/src/utils/lifecycle-active-store.js +1276 -0
- package/dist/src/utils/lifecycle-active-store.js.map +1 -0
- package/dist/src/utils/local-marketplace.d.ts +41 -0
- package/dist/src/utils/local-marketplace.js +317 -0
- package/dist/src/utils/local-marketplace.js.map +1 -0
- package/dist/src/utils/manifest.d.ts +14 -0
- package/dist/src/utils/manifest.js +36 -0
- package/dist/src/utils/manifest.js.map +1 -0
- package/dist/src/utils/marketplace.d.ts +3 -0
- package/dist/src/utils/marketplace.js +76 -0
- package/dist/src/utils/marketplace.js.map +1 -0
- package/dist/src/utils/multi-source-catalog.d.ts +72 -0
- package/dist/src/utils/multi-source-catalog.js +402 -0
- package/dist/src/utils/multi-source-catalog.js.map +1 -0
- package/dist/src/utils/native-cli.d.ts +75 -0
- package/dist/src/utils/native-cli.js +435 -0
- package/dist/src/utils/native-cli.js.map +1 -0
- package/dist/src/utils/orphan-marketplace-cleanup.d.ts +18 -0
- package/dist/src/utils/orphan-marketplace-cleanup.js +202 -0
- package/dist/src/utils/orphan-marketplace-cleanup.js.map +1 -0
- package/dist/src/utils/ownership.d.ts +130 -0
- package/dist/src/utils/ownership.js +766 -0
- package/dist/src/utils/ownership.js.map +1 -0
- package/dist/src/utils/path-catalog-provider.d.ts +7 -0
- package/dist/src/utils/path-catalog-provider.js +87 -0
- package/dist/src/utils/path-catalog-provider.js.map +1 -0
- package/dist/src/utils/paths.d.ts +41 -0
- package/dist/src/utils/paths.js +138 -0
- package/dist/src/utils/paths.js.map +1 -0
- package/dist/src/utils/platform-entries.d.ts +1 -0
- package/dist/src/utils/platform-entries.js +2 -0
- package/dist/src/utils/platform-entries.js.map +1 -0
- package/dist/src/utils/platform-support.d.ts +1 -0
- package/dist/src/utils/platform-support.js +2 -0
- package/dist/src/utils/platform-support.js.map +1 -0
- package/dist/src/utils/plugin-authoring-capabilities.d.ts +23 -0
- package/dist/src/utils/plugin-authoring-capabilities.js +37 -0
- package/dist/src/utils/plugin-authoring-capabilities.js.map +1 -0
- package/dist/src/utils/plugin-authoring-capabilities.json +92 -0
- package/dist/src/utils/plugin-config-write.d.ts +107 -0
- package/dist/src/utils/plugin-config-write.js +565 -0
- package/dist/src/utils/plugin-config-write.js.map +1 -0
- package/dist/src/utils/plugin-config.d.ts +396 -0
- package/dist/src/utils/plugin-config.js +1898 -0
- package/dist/src/utils/plugin-config.js.map +1 -0
- package/dist/src/utils/plugin-dependencies.d.ts +12 -0
- package/dist/src/utils/plugin-dependencies.js +162 -0
- package/dist/src/utils/plugin-dependencies.js.map +1 -0
- package/dist/src/utils/plugin-release.d.ts +2 -0
- package/dist/src/utils/plugin-release.js +2 -0
- package/dist/src/utils/plugin-release.js.map +1 -0
- package/dist/src/utils/plugin-script-contract.d.ts +1 -0
- package/dist/src/utils/plugin-script-contract.js +2 -0
- package/dist/src/utils/plugin-script-contract.js.map +1 -0
- package/dist/src/utils/plugin-scripts.d.ts +172 -0
- package/dist/src/utils/plugin-scripts.js +585 -0
- package/dist/src/utils/plugin-scripts.js.map +1 -0
- package/dist/src/utils/process-lock.d.ts +47 -0
- package/dist/src/utils/process-lock.js +532 -0
- package/dist/src/utils/process-lock.js.map +1 -0
- package/dist/src/utils/process-tree.d.ts +2 -0
- package/dist/src/utils/process-tree.js +2 -0
- package/dist/src/utils/process-tree.js.map +1 -0
- package/dist/src/utils/project-boundary.d.ts +21 -0
- package/dist/src/utils/project-boundary.js +95 -0
- package/dist/src/utils/project-boundary.js.map +1 -0
- package/dist/src/utils/rendered-contract.d.ts +8 -0
- package/dist/src/utils/rendered-contract.js +134 -0
- package/dist/src/utils/rendered-contract.js.map +1 -0
- package/dist/src/utils/runtime-skill-closure.d.ts +13 -0
- package/dist/src/utils/runtime-skill-closure.js +863 -0
- package/dist/src/utils/runtime-skill-closure.js.map +1 -0
- package/dist/src/utils/skill-authoring.d.ts +1 -0
- package/dist/src/utils/skill-authoring.js +2 -0
- package/dist/src/utils/skill-authoring.js.map +1 -0
- package/dist/src/utils/skill-frontmatter-capabilities.d.ts +201 -0
- package/dist/src/utils/skill-frontmatter-capabilities.js +5 -0
- package/dist/src/utils/skill-frontmatter-capabilities.js.map +1 -0
- package/dist/src/utils/skill-frontmatter-capabilities.json +200 -0
- package/dist/src/utils/skill-validation.d.ts +37 -0
- package/dist/src/utils/skill-validation.js +326 -0
- package/dist/src/utils/skill-validation.js.map +1 -0
- package/dist/src/utils/slash-commands.d.ts +1 -0
- package/dist/src/utils/slash-commands.js +2 -0
- package/dist/src/utils/slash-commands.js.map +1 -0
- package/dist/src/utils/state-paths.d.ts +13 -0
- package/dist/src/utils/state-paths.js +129 -0
- package/dist/src/utils/state-paths.js.map +1 -0
- package/dist/src/utils/target-eligibility.d.ts +7 -0
- package/dist/src/utils/target-eligibility.js +26 -0
- package/dist/src/utils/target-eligibility.js.map +1 -0
- package/dist/src/utils/target-order.d.ts +7 -0
- package/dist/src/utils/target-order.js +10 -0
- package/dist/src/utils/target-order.js.map +1 -0
- package/dist/src/utils/template-engine.d.ts +1 -0
- package/dist/src/utils/template-engine.js +2 -0
- package/dist/src/utils/template-engine.js.map +1 -0
- package/dist/src/utils/test-path-fence.d.ts +12 -0
- package/dist/src/utils/test-path-fence.js +31 -0
- package/dist/src/utils/test-path-fence.js.map +1 -0
- package/dist/vitest.config.d.ts +2 -0
- package/dist/vitest.config.js +16 -0
- package/dist/vitest.config.js.map +1 -0
- package/package.json +61 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"marketplace.js","sourceRoot":"","sources":["../../../src/utils/marketplace.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import type { CatalogFreshnessPolicy, CatalogSourceId, CatalogSourceResolution, PluginId, PluginMeta } from '../types.js';
|
|
2
|
+
import { type CatalogSourcesConfigSnapshot } from './catalog-sources.js';
|
|
3
|
+
import { catalogGitProviderInternal } from './git-catalog-provider.js';
|
|
4
|
+
import { catalogPathProviderInternal } from './path-catalog-provider.js';
|
|
5
|
+
export interface ParsedPluginId {
|
|
6
|
+
sourceId?: CatalogSourceId;
|
|
7
|
+
pluginName: string;
|
|
8
|
+
}
|
|
9
|
+
export interface MultiSourceResolutionItem {
|
|
10
|
+
sourceId: CatalogSourceId;
|
|
11
|
+
resolution?: CatalogSourceResolution;
|
|
12
|
+
error?: Error;
|
|
13
|
+
}
|
|
14
|
+
export interface MultiSourceCatalogResolution {
|
|
15
|
+
sources: MultiSourceResolutionItem[];
|
|
16
|
+
primarySourceId: CatalogSourceId;
|
|
17
|
+
configDigest: string;
|
|
18
|
+
compositeDigest: string;
|
|
19
|
+
}
|
|
20
|
+
export interface CatalogSourceProviderSet {
|
|
21
|
+
git: typeof catalogGitProviderInternal.resolve;
|
|
22
|
+
path: typeof catalogPathProviderInternal.resolve;
|
|
23
|
+
}
|
|
24
|
+
export interface ResolveMultiSourceCatalogOptions {
|
|
25
|
+
cliVersion: string;
|
|
26
|
+
freshnessPolicy: CatalogFreshnessPolicy;
|
|
27
|
+
sourceIds?: CatalogSourceId[];
|
|
28
|
+
configSnapshot?: CatalogSourcesConfigSnapshot;
|
|
29
|
+
env?: NodeJS.ProcessEnv;
|
|
30
|
+
signal?: AbortSignal;
|
|
31
|
+
providers?: CatalogSourceProviderSet;
|
|
32
|
+
}
|
|
33
|
+
export type ResolveCatalogPluginOptions = Omit<ResolveMultiSourceCatalogOptions, 'sourceIds'> & {
|
|
34
|
+
selector: PluginId;
|
|
35
|
+
};
|
|
36
|
+
export type WithResolvedMultiSourceCatalogOptions<T> = ResolveMultiSourceCatalogOptions & {
|
|
37
|
+
consume: (resolution: MultiSourceCatalogResolution) => Promise<T> | T;
|
|
38
|
+
};
|
|
39
|
+
export type WithResolvedCatalogPluginOptions<T> = ResolveCatalogPluginOptions & {
|
|
40
|
+
consume: (resolution: ResolvedCatalogPlugin) => Promise<T> | T;
|
|
41
|
+
};
|
|
42
|
+
export interface ResolvedCatalogPlugin {
|
|
43
|
+
pluginId: PluginId;
|
|
44
|
+
source: CatalogSourceResolution;
|
|
45
|
+
plugin: PluginMeta;
|
|
46
|
+
}
|
|
47
|
+
export declare class CatalogLeaseEscapeError extends Error {
|
|
48
|
+
constructor(message?: string);
|
|
49
|
+
}
|
|
50
|
+
type ProtectedLeaseResultKey = 'rootDir' | 'bundleRoot' | 'manifestPath';
|
|
51
|
+
export type LeaseSafeResult<T> = T extends CatalogSourceResolution | PluginMeta ? never : T extends string | number | boolean | null | undefined ? T : T extends URL ? URL : T extends readonly unknown[] ? {
|
|
52
|
+
[K in keyof T]: LeaseSafeResult<T[K]>;
|
|
53
|
+
} : T extends object ? {
|
|
54
|
+
[K in keyof T]: K extends ProtectedLeaseResultKey ? never : LeaseSafeResult<T[K]>;
|
|
55
|
+
} : never;
|
|
56
|
+
export interface DesiredArtifactSelection {
|
|
57
|
+
pluginId: PluginId;
|
|
58
|
+
targetKey: string;
|
|
59
|
+
artifactKeys: string[];
|
|
60
|
+
}
|
|
61
|
+
export interface DesiredArtifactCollision {
|
|
62
|
+
targetKey: string;
|
|
63
|
+
artifactKey: string;
|
|
64
|
+
pluginIds: PluginId[];
|
|
65
|
+
}
|
|
66
|
+
export declare function parsePluginId(value: string): ParsedPluginId;
|
|
67
|
+
export declare function formatPluginId(value: ParsedPluginId): PluginId;
|
|
68
|
+
export declare function planPluginSelectorSourceIds(selectors: readonly ParsedPluginId[]): CatalogSourceId[] | undefined;
|
|
69
|
+
export declare function withResolvedMultiSourceCatalog<T>(options: WithResolvedMultiSourceCatalogOptions<T>): Promise<LeaseSafeResult<T>>;
|
|
70
|
+
export declare function withResolvedCatalogPlugin<T>(options: WithResolvedCatalogPluginOptions<T>): Promise<LeaseSafeResult<T>>;
|
|
71
|
+
export declare function preflightDesiredArtifactCollisions(selections: DesiredArtifactSelection[]): DesiredArtifactCollision[];
|
|
72
|
+
export {};
|
|
@@ -0,0 +1,402 @@
|
|
|
1
|
+
import crypto from 'node:crypto';
|
|
2
|
+
import os from 'node:os';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
import { fileURLToPath } from 'node:url';
|
|
5
|
+
import fs from 'fs-extra';
|
|
6
|
+
import { CATALOG_SOURCE_ID_PATTERN, readCatalogSourcesConfigSnapshot, } from './catalog-sources.js';
|
|
7
|
+
import { catalogGitProviderInternal } from './git-catalog-provider.js';
|
|
8
|
+
import { ensurePluginName, readPluginManifest } from './manifest.js';
|
|
9
|
+
import { catalogPathProviderInternal } from './path-catalog-provider.js';
|
|
10
|
+
import { sanitizeCatalogSourceError } from './catalog-public-error.js';
|
|
11
|
+
import { canonicalizePathThroughExistingAncestor } from './state-paths.js';
|
|
12
|
+
import { validateCatalogSnapshot } from './catalog-snapshot.js';
|
|
13
|
+
export class CatalogLeaseEscapeError extends Error {
|
|
14
|
+
constructor(message = 'Catalog lease callback returned protected path evidence.') {
|
|
15
|
+
super(message);
|
|
16
|
+
this.name = 'CatalogLeaseEscapeError';
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
function createDigest(value) {
|
|
20
|
+
return `sha256:${crypto.createHash('sha256').update(JSON.stringify(value)).digest('hex')}`;
|
|
21
|
+
}
|
|
22
|
+
function compareText(left, right) {
|
|
23
|
+
return left < right ? -1 : left > right ? 1 : 0;
|
|
24
|
+
}
|
|
25
|
+
function throwIfAborted(signal) {
|
|
26
|
+
signal?.throwIfAborted();
|
|
27
|
+
}
|
|
28
|
+
function isAbortFailure(error, signal) {
|
|
29
|
+
return signal?.aborted === true
|
|
30
|
+
|| (error instanceof Error && error.name === 'AbortError');
|
|
31
|
+
}
|
|
32
|
+
function isPathInside(rootDir, candidate) {
|
|
33
|
+
const comparableRoot = process.platform === 'darwin' || process.platform === 'win32'
|
|
34
|
+
? rootDir.toLowerCase()
|
|
35
|
+
: rootDir;
|
|
36
|
+
const comparableCandidate = process.platform === 'darwin' || process.platform === 'win32'
|
|
37
|
+
? candidate.toLowerCase()
|
|
38
|
+
: candidate;
|
|
39
|
+
const relative = path.relative(comparableRoot, comparableCandidate);
|
|
40
|
+
return relative === '' || (relative !== '..'
|
|
41
|
+
&& !relative.startsWith(`..${path.sep}`)
|
|
42
|
+
&& !path.isAbsolute(relative));
|
|
43
|
+
}
|
|
44
|
+
async function assertLeaseSafeString(value, protectedPaths) {
|
|
45
|
+
let candidate = value;
|
|
46
|
+
if (value.startsWith('file:')) {
|
|
47
|
+
try {
|
|
48
|
+
candidate = fileURLToPath(value);
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
if (!path.isAbsolute(candidate))
|
|
55
|
+
return;
|
|
56
|
+
const logical = path.resolve(candidate);
|
|
57
|
+
const canonical = await canonicalizePathThroughExistingAncestor(logical);
|
|
58
|
+
if ([logical, canonical].some((pathEvidence) => protectedPaths.some((entry) => entry.directory
|
|
59
|
+
? isPathInside(entry.absolutePath, pathEvidence)
|
|
60
|
+
: isPathInside(entry.absolutePath, pathEvidence)))) {
|
|
61
|
+
throw new CatalogLeaseEscapeError();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
async function projectLeaseSafeResult(value, protectedPaths, ancestors = new Set()) {
|
|
65
|
+
if (value === null
|
|
66
|
+
|| value === undefined
|
|
67
|
+
|| typeof value === 'number'
|
|
68
|
+
|| typeof value === 'boolean')
|
|
69
|
+
return value;
|
|
70
|
+
if (typeof value === 'string') {
|
|
71
|
+
await assertLeaseSafeString(value, protectedPaths);
|
|
72
|
+
return value;
|
|
73
|
+
}
|
|
74
|
+
if (value instanceof URL) {
|
|
75
|
+
if (value.protocol === 'file:')
|
|
76
|
+
await assertLeaseSafeString(value.href, protectedPaths);
|
|
77
|
+
return new URL(value.href);
|
|
78
|
+
}
|
|
79
|
+
if (typeof value !== 'object') {
|
|
80
|
+
throw new CatalogLeaseEscapeError('Catalog lease callback must return plain data.');
|
|
81
|
+
}
|
|
82
|
+
if (ancestors.has(value)) {
|
|
83
|
+
throw new CatalogLeaseEscapeError('Catalog lease callback must return acyclic plain data.');
|
|
84
|
+
}
|
|
85
|
+
const prototype = Object.getPrototypeOf(value);
|
|
86
|
+
if (!Array.isArray(value) && prototype !== Object.prototype && prototype !== null) {
|
|
87
|
+
throw new CatalogLeaseEscapeError('Catalog lease callback must return plain data.');
|
|
88
|
+
}
|
|
89
|
+
ancestors.add(value);
|
|
90
|
+
try {
|
|
91
|
+
if (Array.isArray(value)) {
|
|
92
|
+
const output = [];
|
|
93
|
+
for (const entry of value) {
|
|
94
|
+
output.push(await projectLeaseSafeResult(entry, protectedPaths, ancestors));
|
|
95
|
+
}
|
|
96
|
+
return output;
|
|
97
|
+
}
|
|
98
|
+
if (Object.getOwnPropertySymbols(value).length > 0) {
|
|
99
|
+
throw new CatalogLeaseEscapeError('Catalog lease callback must return plain data.');
|
|
100
|
+
}
|
|
101
|
+
const output = {};
|
|
102
|
+
for (const [key, descriptor] of Object.entries(Object.getOwnPropertyDescriptors(value))) {
|
|
103
|
+
if (!descriptor.enumerable)
|
|
104
|
+
continue;
|
|
105
|
+
if (!('value' in descriptor)) {
|
|
106
|
+
throw new CatalogLeaseEscapeError('Catalog lease callback must return plain data.');
|
|
107
|
+
}
|
|
108
|
+
output[key] = await projectLeaseSafeResult(descriptor.value, protectedPaths, ancestors);
|
|
109
|
+
}
|
|
110
|
+
return output;
|
|
111
|
+
}
|
|
112
|
+
finally {
|
|
113
|
+
ancestors.delete(value);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
async function createProtectedCatalogDirectory(directory) {
|
|
117
|
+
const logical = path.resolve(directory);
|
|
118
|
+
const canonical = await canonicalizePathThroughExistingAncestor(logical);
|
|
119
|
+
return [...new Set([logical, canonical])].map((absolutePath) => ({
|
|
120
|
+
absolutePath,
|
|
121
|
+
directory: true,
|
|
122
|
+
}));
|
|
123
|
+
}
|
|
124
|
+
async function catalogResolutionProtectedPaths(resolution) {
|
|
125
|
+
const output = [];
|
|
126
|
+
for (const item of resolution.sources) {
|
|
127
|
+
if (item.resolution) {
|
|
128
|
+
output.push(...await createProtectedCatalogDirectory(item.resolution.rootDir));
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
return output;
|
|
132
|
+
}
|
|
133
|
+
async function materializeCallbackGeneration(resolution, signal) {
|
|
134
|
+
const generationRoot = await fs.mkdtemp(path.join(os.tmpdir(), 'aw-catalog-generation-'));
|
|
135
|
+
try {
|
|
136
|
+
const sources = [];
|
|
137
|
+
for (const item of resolution.sources) {
|
|
138
|
+
throwIfAborted(signal);
|
|
139
|
+
if (!item.resolution) {
|
|
140
|
+
sources.push(item);
|
|
141
|
+
continue;
|
|
142
|
+
}
|
|
143
|
+
const rootDir = path.join(generationRoot, item.sourceId);
|
|
144
|
+
await fs.copy(item.resolution.rootDir, rootDir, {
|
|
145
|
+
dereference: false,
|
|
146
|
+
preserveTimestamps: true,
|
|
147
|
+
});
|
|
148
|
+
const validation = await validateCatalogSnapshot(rootDir);
|
|
149
|
+
if (validation.manifestDigest !== item.resolution.manifestDigest
|
|
150
|
+
|| validation.snapshotDigest !== item.resolution.snapshotDigest) {
|
|
151
|
+
throw new Error(`Catalog source "${item.sourceId}" changed before callback materialization.`);
|
|
152
|
+
}
|
|
153
|
+
sources.push({
|
|
154
|
+
sourceId: item.sourceId,
|
|
155
|
+
resolution: {
|
|
156
|
+
...item.resolution,
|
|
157
|
+
rootDir,
|
|
158
|
+
manifest: validation.manifest,
|
|
159
|
+
},
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
throwIfAborted(signal);
|
|
163
|
+
return { resolution: { ...resolution, sources }, generationRoot };
|
|
164
|
+
}
|
|
165
|
+
catch (error) {
|
|
166
|
+
await fs.remove(generationRoot).catch(() => undefined);
|
|
167
|
+
throw error;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
export function parsePluginId(value) {
|
|
171
|
+
if (typeof value !== 'string' || value.trim() === '' || value !== value.trim()) {
|
|
172
|
+
throw new Error('Invalid plugin selector: expected a non-empty canonical plugin ID.');
|
|
173
|
+
}
|
|
174
|
+
const separator = value.indexOf('/');
|
|
175
|
+
if (separator < 0) {
|
|
176
|
+
return { pluginName: ensurePluginName(value, 'plugin selector') };
|
|
177
|
+
}
|
|
178
|
+
if (separator === 0 || separator !== value.lastIndexOf('/')) {
|
|
179
|
+
throw new Error('Invalid plugin selector: expected "plugin" or "source/plugin".');
|
|
180
|
+
}
|
|
181
|
+
const sourceId = value.slice(0, separator);
|
|
182
|
+
if (!CATALOG_SOURCE_ID_PATTERN.test(sourceId)) {
|
|
183
|
+
throw new Error('Invalid plugin selector source ID.');
|
|
184
|
+
}
|
|
185
|
+
return {
|
|
186
|
+
sourceId,
|
|
187
|
+
pluginName: ensurePluginName(value.slice(separator + 1), 'plugin selector name'),
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
export function formatPluginId(value) {
|
|
191
|
+
const pluginName = ensurePluginName(value.pluginName, 'plugin ID name');
|
|
192
|
+
if (value.sourceId === undefined)
|
|
193
|
+
return pluginName;
|
|
194
|
+
if (!CATALOG_SOURCE_ID_PATTERN.test(value.sourceId)) {
|
|
195
|
+
throw new Error('Invalid plugin ID source ID.');
|
|
196
|
+
}
|
|
197
|
+
return `${value.sourceId}/${pluginName}`;
|
|
198
|
+
}
|
|
199
|
+
export function planPluginSelectorSourceIds(selectors) {
|
|
200
|
+
if (selectors.some((selector) => selector.sourceId === undefined))
|
|
201
|
+
return undefined;
|
|
202
|
+
return [...new Set(selectors.map((selector) => selector.sourceId))];
|
|
203
|
+
}
|
|
204
|
+
async function mapWithFourWorkers(inputs, mapper, signal) {
|
|
205
|
+
const output = new Array(inputs.length);
|
|
206
|
+
let next = 0;
|
|
207
|
+
let failed = false;
|
|
208
|
+
let failure;
|
|
209
|
+
async function worker() {
|
|
210
|
+
while (!failed) {
|
|
211
|
+
try {
|
|
212
|
+
throwIfAborted(signal);
|
|
213
|
+
const index = next++;
|
|
214
|
+
if (index >= inputs.length)
|
|
215
|
+
return;
|
|
216
|
+
output[index] = await mapper(inputs[index]);
|
|
217
|
+
throwIfAborted(signal);
|
|
218
|
+
}
|
|
219
|
+
catch (error) {
|
|
220
|
+
if (!failed) {
|
|
221
|
+
failed = true;
|
|
222
|
+
failure = error;
|
|
223
|
+
}
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
await Promise.all(Array.from({ length: Math.min(4, inputs.length) }, () => worker()));
|
|
229
|
+
if (failed)
|
|
230
|
+
throw failure;
|
|
231
|
+
throwIfAborted(signal);
|
|
232
|
+
return output;
|
|
233
|
+
}
|
|
234
|
+
async function resolveOneSource(options) {
|
|
235
|
+
try {
|
|
236
|
+
throwIfAborted(options.signal);
|
|
237
|
+
const resolution = options.source.type === 'git'
|
|
238
|
+
? await options.providers.git(options.source, options)
|
|
239
|
+
: await options.providers.path(options.source, options);
|
|
240
|
+
throwIfAborted(options.signal);
|
|
241
|
+
return { sourceId: options.source.id, resolution };
|
|
242
|
+
}
|
|
243
|
+
catch (error) {
|
|
244
|
+
if (options.signal?.aborted)
|
|
245
|
+
throwIfAborted(options.signal);
|
|
246
|
+
if (isAbortFailure(error, options.signal))
|
|
247
|
+
throw error;
|
|
248
|
+
const sensitiveRoots = options.source.type === 'path'
|
|
249
|
+
? [
|
|
250
|
+
options.source.path,
|
|
251
|
+
path.resolve(options.source.path),
|
|
252
|
+
...await fs.realpath(options.source.path).then((value) => [value]).catch(() => []),
|
|
253
|
+
]
|
|
254
|
+
: [];
|
|
255
|
+
return {
|
|
256
|
+
sourceId: options.source.id,
|
|
257
|
+
error: sanitizeCatalogSourceError(error, options.env, sensitiveRoots),
|
|
258
|
+
};
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
async function resolveMultiSourceCatalog(options) {
|
|
262
|
+
throwIfAborted(options.signal);
|
|
263
|
+
const env = options.env ?? process.env;
|
|
264
|
+
const snapshot = options.configSnapshot ?? await readCatalogSourcesConfigSnapshot(env);
|
|
265
|
+
throwIfAborted(options.signal);
|
|
266
|
+
const configuredById = new Map(snapshot.config.sources.map((source) => [source.id, source]));
|
|
267
|
+
const requestedIds = options.sourceIds
|
|
268
|
+
? [...new Set(options.sourceIds)]
|
|
269
|
+
: snapshot.config.sources.map((source) => source.id);
|
|
270
|
+
const unknown = requestedIds.find((sourceId) => !configuredById.has(sourceId));
|
|
271
|
+
if (unknown)
|
|
272
|
+
throw new Error(`Catalog source "${unknown}" does not exist.`);
|
|
273
|
+
const sources = requestedIds
|
|
274
|
+
.map((sourceId) => configuredById.get(sourceId))
|
|
275
|
+
.sort((left, right) => compareText(left.id, right.id));
|
|
276
|
+
const providers = options.providers ?? {
|
|
277
|
+
git: catalogGitProviderInternal.resolve,
|
|
278
|
+
path: catalogPathProviderInternal.resolve,
|
|
279
|
+
};
|
|
280
|
+
const resolved = await mapWithFourWorkers(sources, (source) => resolveOneSource({
|
|
281
|
+
source,
|
|
282
|
+
cliVersion: options.cliVersion,
|
|
283
|
+
freshnessPolicy: options.freshnessPolicy,
|
|
284
|
+
env,
|
|
285
|
+
signal: options.signal,
|
|
286
|
+
providers,
|
|
287
|
+
}), options.signal);
|
|
288
|
+
throwIfAborted(options.signal);
|
|
289
|
+
const compositeDigest = createDigest(resolved.map((item) => item.resolution
|
|
290
|
+
? {
|
|
291
|
+
sourceId: item.sourceId,
|
|
292
|
+
resolvedCommit: item.resolution.resolvedCommit,
|
|
293
|
+
manifestDigest: item.resolution.manifestDigest,
|
|
294
|
+
snapshotDigest: item.resolution.snapshotDigest,
|
|
295
|
+
}
|
|
296
|
+
: { sourceId: item.sourceId, error: true }));
|
|
297
|
+
return {
|
|
298
|
+
sources: resolved,
|
|
299
|
+
primarySourceId: snapshot.config.sources.find((source) => source.primary).id,
|
|
300
|
+
configDigest: snapshot.digest,
|
|
301
|
+
compositeDigest,
|
|
302
|
+
};
|
|
303
|
+
}
|
|
304
|
+
export async function withResolvedMultiSourceCatalog(options) {
|
|
305
|
+
const resolved = await resolveMultiSourceCatalog(options);
|
|
306
|
+
const generation = await materializeCallbackGeneration(resolved, options.signal);
|
|
307
|
+
try {
|
|
308
|
+
const protectedPaths = await catalogResolutionProtectedPaths(generation.resolution);
|
|
309
|
+
throwIfAborted(options.signal);
|
|
310
|
+
const result = await options.consume(generation.resolution);
|
|
311
|
+
throwIfAborted(options.signal);
|
|
312
|
+
const projected = await projectLeaseSafeResult(result, protectedPaths);
|
|
313
|
+
throwIfAborted(options.signal);
|
|
314
|
+
return projected;
|
|
315
|
+
}
|
|
316
|
+
finally {
|
|
317
|
+
await fs.remove(generation.generationRoot).catch(() => undefined);
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
function throwSourceErrors(resolution) {
|
|
321
|
+
const failures = resolution.sources.filter((item) => item.error);
|
|
322
|
+
if (failures.length > 0) {
|
|
323
|
+
throw new AggregateError(failures.map((item) => item.error), `Cannot resolve required catalog sources: ${failures.map((item) => item.sourceId).join(', ')}.`);
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
export async function withResolvedCatalogPlugin(options) {
|
|
327
|
+
const selector = parsePluginId(options.selector);
|
|
328
|
+
const sourceIds = planPluginSelectorSourceIds([selector]);
|
|
329
|
+
const resolutionOptions = {
|
|
330
|
+
cliVersion: options.cliVersion,
|
|
331
|
+
freshnessPolicy: options.freshnessPolicy,
|
|
332
|
+
...(options.configSnapshot ? { configSnapshot: options.configSnapshot } : {}),
|
|
333
|
+
...(options.env ? { env: options.env } : {}),
|
|
334
|
+
...(options.signal ? { signal: options.signal } : {}),
|
|
335
|
+
...(options.providers ? { providers: options.providers } : {}),
|
|
336
|
+
};
|
|
337
|
+
const resolvedCatalog = await resolveMultiSourceCatalog({
|
|
338
|
+
...resolutionOptions,
|
|
339
|
+
...(sourceIds ? { sourceIds } : {}),
|
|
340
|
+
});
|
|
341
|
+
throwSourceErrors(resolvedCatalog);
|
|
342
|
+
const generation = await materializeCallbackGeneration(resolvedCatalog, options.signal);
|
|
343
|
+
try {
|
|
344
|
+
const catalog = generation.resolution;
|
|
345
|
+
const matches = catalog.sources.flatMap((item) => {
|
|
346
|
+
const source = item.resolution;
|
|
347
|
+
return source.manifest.entries.some((entry) => entry.name === selector.pluginName)
|
|
348
|
+
? [source]
|
|
349
|
+
: [];
|
|
350
|
+
});
|
|
351
|
+
if (matches.length === 0) {
|
|
352
|
+
throw new Error(`Plugin "${options.selector}" does not exist in the required catalog source set.`);
|
|
353
|
+
}
|
|
354
|
+
if (matches.length > 1) {
|
|
355
|
+
throw new Error(`Plugin "${selector.pluginName}" is ambiguous across sources: ${matches.map((match) => match.sourceId).join(', ')}.`);
|
|
356
|
+
}
|
|
357
|
+
const source = matches[0];
|
|
358
|
+
const plugin = await readPluginManifest(path.join(source.rootDir, 'plugins', selector.pluginName), { mode: 'bundle' });
|
|
359
|
+
plugin.sourceId = source.sourceId;
|
|
360
|
+
plugin.sourceIdentity = source.sourceIdentity;
|
|
361
|
+
plugin.pluginId = formatPluginId({ sourceId: source.sourceId, pluginName: selector.pluginName });
|
|
362
|
+
plugin.marketplaceName = source.sourceId === catalog.primarySourceId ? 'aw' : `aw-${source.sourceId}`;
|
|
363
|
+
const resolvedPlugin = { pluginId: plugin.pluginId, source, plugin };
|
|
364
|
+
const protectedPaths = [
|
|
365
|
+
...await catalogResolutionProtectedPaths(catalog),
|
|
366
|
+
...await createProtectedCatalogDirectory(plugin.rootDir),
|
|
367
|
+
...await createProtectedCatalogDirectory(path.dirname(plugin.manifestPath)),
|
|
368
|
+
];
|
|
369
|
+
throwIfAborted(options.signal);
|
|
370
|
+
const result = await options.consume(resolvedPlugin);
|
|
371
|
+
throwIfAborted(options.signal);
|
|
372
|
+
const projected = await projectLeaseSafeResult(result, protectedPaths);
|
|
373
|
+
throwIfAborted(options.signal);
|
|
374
|
+
return projected;
|
|
375
|
+
}
|
|
376
|
+
finally {
|
|
377
|
+
await fs.remove(generation.generationRoot).catch(() => undefined);
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
export function preflightDesiredArtifactCollisions(selections) {
|
|
381
|
+
const owners = new Map();
|
|
382
|
+
for (const selection of selections) {
|
|
383
|
+
for (const artifactKey of new Set(selection.artifactKeys)) {
|
|
384
|
+
const key = JSON.stringify([selection.targetKey, artifactKey]);
|
|
385
|
+
const plugins = owners.get(key) ?? new Set();
|
|
386
|
+
plugins.add(selection.pluginId);
|
|
387
|
+
owners.set(key, plugins);
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
return [...owners.entries()].flatMap(([key, pluginIds]) => {
|
|
391
|
+
if (pluginIds.size < 2)
|
|
392
|
+
return [];
|
|
393
|
+
const [targetKey, artifactKey] = JSON.parse(key);
|
|
394
|
+
return [{
|
|
395
|
+
targetKey,
|
|
396
|
+
artifactKey,
|
|
397
|
+
pluginIds: [...pluginIds].sort(compareText),
|
|
398
|
+
}];
|
|
399
|
+
}).sort((left, right) => compareText(left.targetKey, right.targetKey)
|
|
400
|
+
|| compareText(left.artifactKey, right.artifactKey));
|
|
401
|
+
}
|
|
402
|
+
//# sourceMappingURL=multi-source-catalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multi-source-catalog.js","sourceRoot":"","sources":["../../../src/utils/multi-source-catalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { observeProcessTree, terminateProcessTree } from './process-tree.js';
|
|
2
|
+
export interface NativeCliInvocation {
|
|
3
|
+
command: string;
|
|
4
|
+
args: string[];
|
|
5
|
+
cwd?: string;
|
|
6
|
+
env?: NodeJS.ProcessEnv;
|
|
7
|
+
signal?: AbortSignal;
|
|
8
|
+
timeoutMs?: number;
|
|
9
|
+
}
|
|
10
|
+
export interface NativeCliResult {
|
|
11
|
+
exitCode: number;
|
|
12
|
+
stdout: string;
|
|
13
|
+
stderr: string;
|
|
14
|
+
}
|
|
15
|
+
export interface NativeCliErrorOptions {
|
|
16
|
+
invocation: NativeCliInvocation;
|
|
17
|
+
exitCode: number;
|
|
18
|
+
stdout: string;
|
|
19
|
+
stderr: string;
|
|
20
|
+
cause?: unknown;
|
|
21
|
+
cleanupError?: Error;
|
|
22
|
+
reason?: NativeCliErrorReason;
|
|
23
|
+
}
|
|
24
|
+
export type NativeCliErrorReason = 'aborted' | 'exit' | 'timeout';
|
|
25
|
+
export declare class NativeCliError extends Error {
|
|
26
|
+
readonly invocation: NativeCliInvocation;
|
|
27
|
+
readonly exitCode: number;
|
|
28
|
+
readonly stdout: string;
|
|
29
|
+
readonly stderr: string;
|
|
30
|
+
readonly reason: NativeCliErrorReason;
|
|
31
|
+
readonly cleanupError?: Error;
|
|
32
|
+
constructor(options: NativeCliErrorOptions);
|
|
33
|
+
}
|
|
34
|
+
export type NativeCliRunner = (invocation: NativeCliInvocation) => Promise<NativeCliResult>;
|
|
35
|
+
export declare function setNativeCliRunnerOverrideForTests(runner: NativeCliRunner | null): void;
|
|
36
|
+
export declare function getDefaultNativeCliRunner(): NativeCliRunner;
|
|
37
|
+
export declare function isNativeCliExecutableMissingError(error: unknown): boolean;
|
|
38
|
+
export declare function isNativeCliTimeoutError(error: unknown): error is NativeCliError;
|
|
39
|
+
export declare function summarizeNativeCliFailure(error: unknown): string;
|
|
40
|
+
interface NativeCliOutputStream {
|
|
41
|
+
on: (event: 'data', listener: (chunk: unknown) => void) => unknown;
|
|
42
|
+
removeListener?: (event: 'data', listener: (chunk: unknown) => void) => unknown;
|
|
43
|
+
destroy?: () => unknown;
|
|
44
|
+
}
|
|
45
|
+
interface NativeCliChildProcess {
|
|
46
|
+
readonly pid?: number;
|
|
47
|
+
readonly exitCode?: number | null;
|
|
48
|
+
readonly signalCode?: NodeJS.Signals | null;
|
|
49
|
+
kill: (signal: 'SIGTERM' | 'SIGKILL') => boolean;
|
|
50
|
+
once: (event: 'spawn' | 'exit', listener: () => void) => unknown;
|
|
51
|
+
stdout?: NativeCliOutputStream | null;
|
|
52
|
+
stderr?: NativeCliOutputStream | null;
|
|
53
|
+
}
|
|
54
|
+
/** @internal Test-only dependency seam. It is not exported from the package entrypoint. */
|
|
55
|
+
interface ExecFileNativeCliRunnerDependencies {
|
|
56
|
+
execFile?: (command: string, args: string[], options: {
|
|
57
|
+
cwd?: string;
|
|
58
|
+
env?: NodeJS.ProcessEnv;
|
|
59
|
+
windowsHide: boolean;
|
|
60
|
+
}, callback: (error: unknown, stdout: string, stderr: string) => void) => NativeCliChildProcess;
|
|
61
|
+
observeProcessTree?: typeof observeProcessTree;
|
|
62
|
+
terminateProcessTree?: typeof terminateProcessTree;
|
|
63
|
+
}
|
|
64
|
+
/** @internal Test-only factory. Production uses execFileNativeCliRunner below. */
|
|
65
|
+
export declare function createExecFileNativeCliRunner(dependencies?: ExecFileNativeCliRunnerDependencies): NativeCliRunner;
|
|
66
|
+
export declare const execFileNativeCliRunner: NativeCliRunner;
|
|
67
|
+
export declare function runNativeCli(invocation: NativeCliInvocation, runner?: NativeCliRunner): Promise<NativeCliResult>;
|
|
68
|
+
export declare function buildCodexPluginAddInvocation(pluginId: string, cwd: string, env: NodeJS.ProcessEnv): NativeCliInvocation;
|
|
69
|
+
export declare function buildCodexPluginListInvocation(cwd: string, env: NodeJS.ProcessEnv): NativeCliInvocation;
|
|
70
|
+
export declare function buildCodexPluginRemoveInvocation(pluginId: string, cwd: string, env: NodeJS.ProcessEnv): NativeCliInvocation;
|
|
71
|
+
export declare function buildCodexMarketplaceAddInvocation(awHome: string, cwd: string, env: NodeJS.ProcessEnv): NativeCliInvocation;
|
|
72
|
+
export declare function buildCodexMarketplaceListInvocation(cwd: string, env: NodeJS.ProcessEnv): NativeCliInvocation;
|
|
73
|
+
export declare function buildCodexMarketplaceRemoveInvocation(marketplaceName: string, cwd: string, env: NodeJS.ProcessEnv): NativeCliInvocation;
|
|
74
|
+
export declare function runNativeCliChecked(invocation: NativeCliInvocation, runner?: NativeCliRunner): Promise<NativeCliResult>;
|
|
75
|
+
export {};
|