@lesliechan721/aw 0.1.0-beta.5 → 0.1.0-beta.50
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.mjs +100 -501
- package/dist/authoring/assets/aw-config.mjs.map +1 -1
- package/dist/authoring/assets/aw-runtime-config.d.mts +13 -0
- package/dist/authoring/assets/aw-runtime-config.mjs +199 -0
- package/dist/authoring/assets/aw-runtime-config.mjs.map +1 -0
- package/dist/authoring/scripts/add-skill.mjs +4 -4
- package/dist/authoring/scripts/add-skill.mjs.map +1 -1
- package/dist/authoring/scripts/init-plugin.mjs +67 -97
- package/dist/authoring/scripts/init-plugin.mjs.map +1 -1
- package/dist/authoring/scripts/lib/plugin-root.mjs +4 -4
- package/dist/authoring/scripts/lib/plugin-root.mjs.map +1 -1
- package/dist/authoring/scripts/lib/plugin-version-check.d.mts +1 -0
- package/dist/authoring/scripts/lib/plugin-version-check.mjs +229 -8
- package/dist/authoring/scripts/lib/plugin-version-check.mjs.map +1 -1
- package/dist/authoring/scripts/lib/skill-scaffold.d.mts +77 -90
- package/dist/authoring/scripts/lib/skill-scaffold.mjs +99 -120
- package/dist/authoring/scripts/lib/skill-scaffold.mjs.map +1 -1
- package/dist/authoring/scripts/plugin-status.mjs +8 -11
- package/dist/authoring/scripts/plugin-status.mjs.map +1 -1
- package/dist/authoring/scripts/remove-plugin.mjs +3 -2
- package/dist/authoring/scripts/remove-plugin.mjs.map +1 -1
- package/dist/authoring/scripts/validate-plugin.mjs +346 -1131
- package/dist/authoring/scripts/validate-plugin.mjs.map +1 -1
- package/dist/scripts/aw-skill-eval-materializer.d.ts +26 -0
- package/dist/scripts/aw-skill-eval-materializer.js +306 -0
- package/dist/scripts/aw-skill-eval-materializer.js.map +1 -0
- package/dist/scripts/bundle-plugins.d.ts +1 -0
- package/dist/scripts/bundle-plugins.js +20 -5
- package/dist/scripts/bundle-plugins.js.map +1 -1
- package/dist/scripts/plugin-staging.d.ts +7 -9
- package/dist/scripts/plugin-staging.js +18 -29
- package/dist/scripts/plugin-staging.js.map +1 -1
- package/dist/scripts/test-plugin-scripts.d.ts +2 -0
- package/dist/scripts/test-plugin-scripts.js +47 -76
- package/dist/scripts/test-plugin-scripts.js.map +1 -1
- package/dist/scripts/test-workers.d.mts +24 -0
- package/dist/scripts/test-workers.mjs +59 -0
- package/dist/scripts/test-workers.mjs.map +1 -0
- package/dist/src/adapters/helpers.js +2 -2
- package/dist/src/adapters/helpers.js.map +1 -1
- package/dist/src/authoring/workspace-commands.d.ts +17 -1
- package/dist/src/authoring/workspace-commands.js +21 -4
- package/dist/src/authoring/workspace-commands.js.map +1 -1
- package/dist/src/commands/aw-capabilities.d.ts +78 -0
- package/dist/src/commands/aw-capabilities.js +264 -0
- package/dist/src/commands/aw-capabilities.js.map +1 -0
- package/dist/src/commands/catalog-dev-source.d.ts +154 -0
- package/dist/src/commands/catalog-dev-source.js +655 -0
- package/dist/src/commands/catalog-dev-source.js.map +1 -0
- package/dist/src/commands/catalog-generation.d.ts +21 -0
- package/dist/src/commands/catalog-generation.js +9 -0
- package/dist/src/commands/catalog-generation.js.map +1 -0
- package/dist/src/commands/catalog-publication-inspection.d.ts +71 -30
- package/dist/src/commands/catalog-publication-inspection.js +475 -63
- package/dist/src/commands/catalog-publication-inspection.js.map +1 -1
- package/dist/src/commands/catalog-publication-journal.d.ts +68 -0
- package/dist/src/commands/catalog-publication-journal.js +292 -0
- package/dist/src/commands/catalog-publication-journal.js.map +1 -0
- package/dist/src/commands/catalog-publication-target.d.ts +18 -0
- package/dist/src/commands/catalog-publication-target.js +95 -0
- package/dist/src/commands/catalog-publication-target.js.map +1 -0
- package/dist/src/commands/catalog-publish.d.ts +73 -15
- package/dist/src/commands/catalog-publish.js +701 -212
- package/dist/src/commands/catalog-publish.js.map +1 -1
- package/dist/src/commands/catalog-source.d.ts +60 -22
- package/dist/src/commands/catalog-source.js +311 -91
- package/dist/src/commands/catalog-source.js.map +1 -1
- package/dist/src/commands/catalog-status.d.ts +18 -22
- package/dist/src/commands/catalog-status.js +81 -115
- package/dist/src/commands/catalog-status.js.map +1 -1
- package/dist/src/commands/catalog-store.d.ts +104 -0
- package/dist/src/commands/catalog-store.js +685 -0
- package/dist/src/commands/catalog-store.js.map +1 -0
- package/dist/src/commands/catalog-workspace-resolution.d.ts +13 -0
- package/dist/src/commands/catalog-workspace-resolution.js +42 -0
- package/dist/src/commands/catalog-workspace-resolution.js.map +1 -0
- package/dist/src/commands/console.js +28 -17
- package/dist/src/commands/console.js.map +1 -1
- package/dist/src/commands/dependency-operation-plan.d.ts +52 -15
- package/dist/src/commands/dependency-operation-plan.js +289 -7
- package/dist/src/commands/dependency-operation-plan.js.map +1 -1
- package/dist/src/commands/init.d.ts +5 -11
- package/dist/src/commands/init.js +30 -51
- package/dist/src/commands/init.js.map +1 -1
- package/dist/src/commands/offline-cleanup-evidence.d.ts +67 -0
- package/dist/src/commands/offline-cleanup-evidence.js +181 -0
- package/dist/src/commands/offline-cleanup-evidence.js.map +1 -0
- package/dist/src/commands/operation-plan.d.ts +146 -0
- package/dist/src/commands/operation-plan.js +71 -0
- package/dist/src/commands/operation-plan.js.map +1 -0
- package/dist/src/commands/operation-planner.d.ts +46 -0
- package/dist/src/commands/operation-planner.js +141 -0
- package/dist/src/commands/operation-planner.js.map +1 -0
- package/dist/src/commands/options.d.ts +9 -7
- package/dist/src/commands/options.js +83 -21
- package/dist/src/commands/options.js.map +1 -1
- package/dist/src/commands/plugin-capabilities.js +23 -3
- package/dist/src/commands/plugin-capabilities.js.map +1 -1
- package/dist/src/commands/rebuild-command.d.ts +77 -31
- package/dist/src/commands/rebuild-command.js +4862 -729
- package/dist/src/commands/rebuild-command.js.map +1 -1
- package/dist/src/commands/rebuild-integration.d.ts +131 -21
- package/dist/src/commands/rebuild-integration.js +2866 -1339
- package/dist/src/commands/rebuild-integration.js.map +1 -1
- package/dist/src/commands/rebuild-operations.d.ts +58 -30
- package/dist/src/commands/rebuild-operations.js +260 -319
- package/dist/src/commands/rebuild-operations.js.map +1 -1
- package/dist/src/commands/reconcile-operation-plan.d.ts +28 -0
- package/dist/src/commands/reconcile-operation-plan.js +47 -0
- package/dist/src/commands/reconcile-operation-plan.js.map +1 -0
- package/dist/src/commands/review-inspection.d.ts +228 -0
- package/dist/src/commands/review-inspection.js +1341 -0
- package/dist/src/commands/review-inspection.js.map +1 -0
- package/dist/src/commands/review-preparation.d.ts +49 -0
- package/dist/src/commands/review-preparation.js +427 -0
- package/dist/src/commands/review-preparation.js.map +1 -0
- package/dist/src/commands/runtime.d.ts +1 -5
- package/dist/src/commands/runtime.js +24 -50
- package/dist/src/commands/runtime.js.map +1 -1
- package/dist/src/commands/skill-eval.d.ts +39 -0
- package/dist/src/commands/skill-eval.js +400 -0
- package/dist/src/commands/skill-eval.js.map +1 -0
- package/dist/src/commands/status-v6.d.ts +279 -0
- package/dist/src/commands/status-v6.js +2787 -0
- package/dist/src/commands/status-v6.js.map +1 -0
- package/dist/src/commands/sync-command.d.ts +40 -0
- package/dist/src/commands/sync-command.js +250 -0
- package/dist/src/commands/sync-command.js.map +1 -0
- package/dist/src/commands/wizard.d.ts +8 -5
- package/dist/src/commands/wizard.js +6 -4
- package/dist/src/commands/wizard.js.map +1 -1
- package/dist/src/commands/write-commands.d.ts +9 -3
- package/dist/src/commands/write-commands.js +127 -31
- package/dist/src/commands/write-commands.js.map +1 -1
- package/dist/src/constants.d.ts +7 -1
- package/dist/src/constants.js +7 -1
- package/dist/src/constants.js.map +1 -1
- package/dist/src/eval/manifest-v1.d.ts +71 -0
- package/dist/src/eval/manifest-v1.js +370 -0
- package/dist/src/eval/manifest-v1.js.map +1 -0
- package/dist/src/generators/local-plugin.d.ts +5 -1
- package/dist/src/generators/local-plugin.js +236 -109
- package/dist/src/generators/local-plugin.js.map +1 -1
- package/dist/src/index.d.ts +10 -4
- package/dist/src/index.js +1793 -486
- package/dist/src/index.js.map +1 -1
- package/dist/src/output/command-receipt.d.ts +43 -46
- package/dist/src/output/command-receipt.js +256 -80
- package/dist/src/output/command-receipt.js.map +1 -1
- package/dist/src/output/model.d.ts +3 -44
- package/dist/src/output/model.js +1 -144
- package/dist/src/output/model.js.map +1 -1
- package/dist/src/output/rebuild-progress.js +1 -13
- package/dist/src/output/rebuild-progress.js.map +1 -1
- package/dist/src/portable/commands.d.ts +46 -7
- package/dist/src/portable/commands.js +349 -37
- package/dist/src/portable/commands.js.map +1 -1
- package/dist/src/portable/materializer.d.ts +17 -4
- package/dist/src/portable/materializer.js +179 -41
- package/dist/src/portable/materializer.js.map +1 -1
- package/dist/src/portable/skills-cli.d.ts +15 -7
- package/dist/src/portable/skills-cli.js +74 -20
- package/dist/src/portable/skills-cli.js.map +1 -1
- package/dist/src/review/eval-source-input.d.ts +43 -0
- package/dist/src/review/eval-source-input.js +207 -0
- package/dist/src/review/eval-source-input.js.map +1 -0
- package/dist/src/review/review-profile.d.ts +17 -0
- package/dist/src/review/review-profile.js +234 -0
- package/dist/src/review/review-profile.js.map +1 -0
- package/dist/src/review/review-selection.d.ts +30 -0
- package/dist/src/review/review-selection.js +527 -0
- package/dist/src/review/review-selection.js.map +1 -0
- package/dist/src/review/review-types.d.ts +68 -0
- package/dist/src/review/review-types.js +16 -0
- package/dist/src/review/review-types.js.map +1 -0
- package/dist/src/review/skill-materialization.d.ts +13 -0
- package/dist/src/review/skill-materialization.js +75 -0
- package/dist/src/review/skill-materialization.js.map +1 -0
- package/dist/src/review/source-binding.d.ts +183 -0
- package/dist/src/review/source-binding.js +708 -0
- package/dist/src/review/source-binding.js.map +1 -0
- package/dist/src/tui/catalog-freshness.d.ts +1 -0
- package/dist/src/tui/catalog-freshness.js +2 -0
- package/dist/src/tui/catalog-freshness.js.map +1 -0
- package/dist/src/tui/catalog-generation.d.ts +21 -0
- package/dist/src/tui/catalog-generation.js +156 -0
- package/dist/src/tui/catalog-generation.js.map +1 -0
- package/dist/src/tui/catalog-sources/projection.d.ts +4 -0
- package/dist/src/tui/catalog-sources/projection.js +17 -0
- package/dist/src/tui/catalog-sources/projection.js.map +1 -0
- package/dist/src/tui/catalog-sources/review.d.ts +3 -0
- package/dist/src/tui/catalog-sources/review.js +13 -0
- package/dist/src/tui/catalog-sources/review.js.map +1 -0
- package/dist/src/tui/catalog-sources/screens.d.ts +12 -0
- package/dist/src/tui/catalog-sources/screens.js +40 -0
- package/dist/src/tui/catalog-sources/screens.js.map +1 -0
- package/dist/src/tui/catalog-sources/session.d.ts +32 -0
- package/dist/src/tui/catalog-sources/session.js +300 -0
- package/dist/src/tui/catalog-sources/session.js.map +1 -0
- package/dist/src/tui/catalog-sources/types.d.ts +54 -0
- package/dist/src/tui/catalog-sources/types.js +2 -0
- package/dist/src/tui/catalog-sources/types.js.map +1 -0
- package/dist/src/tui/catalog-store-task.d.ts +16 -0
- package/dist/src/tui/catalog-store-task.js +19 -0
- package/dist/src/tui/catalog-store-task.js.map +1 -0
- package/dist/src/tui/clipboard.d.ts +13 -0
- package/dist/src/tui/clipboard.js +95 -0
- package/dist/src/tui/clipboard.js.map +1 -0
- package/dist/src/tui/components.d.ts +110 -3
- package/dist/src/tui/components.js +183 -36
- package/dist/src/tui/components.js.map +1 -1
- package/dist/src/tui/config-array-draft.d.ts +29 -0
- package/dist/src/tui/config-array-draft.js +48 -0
- package/dist/src/tui/config-array-draft.js.map +1 -0
- package/dist/src/tui/config-leaf-editor.d.ts +16 -0
- package/dist/src/tui/config-leaf-editor.js +206 -0
- package/dist/src/tui/config-leaf-editor.js.map +1 -0
- package/dist/src/tui/config-value-presentation.d.ts +20 -0
- package/dist/src/tui/config-value-presentation.js +104 -0
- package/dist/src/tui/config-value-presentation.js.map +1 -0
- package/dist/src/tui/console-app-v4.d.ts +14 -4
- package/dist/src/tui/console-app-v4.js +8941 -1872
- package/dist/src/tui/console-app-v4.js.map +1 -1
- package/dist/src/tui/content-item-card.d.ts +13 -0
- package/dist/src/tui/content-item-card.js +51 -0
- package/dist/src/tui/content-item-card.js.map +1 -0
- package/dist/src/tui/controller-runtime.d.ts +10 -2
- package/dist/src/tui/controller-runtime.js +3211 -388
- package/dist/src/tui/controller-runtime.js.map +1 -1
- package/dist/src/tui/controller.d.ts +615 -45
- package/dist/src/tui/controller.js +3558 -768
- package/dist/src/tui/controller.js.map +1 -1
- package/dist/src/tui/dependency-graph-view.d.ts +39 -0
- package/dist/src/tui/dependency-graph-view.js +121 -0
- package/dist/src/tui/dependency-graph-view.js.map +1 -0
- package/dist/src/tui/dependency-graph.d.ts +81 -0
- package/dist/src/tui/dependency-graph.js +452 -0
- package/dist/src/tui/dependency-graph.js.map +1 -0
- package/dist/src/tui/diagnostic-projection.d.ts +23 -0
- package/dist/src/tui/diagnostic-projection.js +567 -0
- package/dist/src/tui/diagnostic-projection.js.map +1 -0
- package/dist/src/tui/diagnostics.d.ts +3 -3
- package/dist/src/tui/diagnostics.js +14 -2
- package/dist/src/tui/diagnostics.js.map +1 -1
- package/dist/src/tui/entity-cards.d.ts +55 -0
- package/dist/src/tui/entity-cards.js +220 -0
- package/dist/src/tui/entity-cards.js.map +1 -0
- package/dist/src/tui/glossary.d.ts +23 -0
- package/dist/src/tui/glossary.js +42 -0
- package/dist/src/tui/glossary.js.map +1 -0
- package/dist/src/tui/index.d.ts +6 -1
- package/dist/src/tui/index.js +5 -1
- package/dist/src/tui/index.js.map +1 -1
- package/dist/src/tui/input-display.d.ts +9 -0
- package/dist/src/tui/input-display.js +58 -0
- package/dist/src/tui/input-display.js.map +1 -0
- package/dist/src/tui/keys.d.ts +44 -0
- package/dist/src/tui/keys.js +43 -15
- package/dist/src/tui/keys.js.map +1 -1
- package/dist/src/tui/lifecycle-action-view.d.ts +6 -0
- package/dist/src/tui/lifecycle-action-view.js +36 -0
- package/dist/src/tui/lifecycle-action-view.js.map +1 -0
- package/dist/src/tui/model.d.ts +223 -31
- package/dist/src/tui/model.js +1510 -397
- package/dist/src/tui/model.js.map +1 -1
- package/dist/src/tui/operation-diagnostic-screens.d.ts +8 -0
- package/dist/src/tui/operation-diagnostic-screens.js +71 -0
- package/dist/src/tui/operation-diagnostic-screens.js.map +1 -0
- package/dist/src/tui/operation-history.d.ts +81 -0
- package/dist/src/tui/operation-history.js +136 -0
- package/dist/src/tui/operation-history.js.map +1 -0
- package/dist/src/tui/operation-review-planner.d.ts +21 -0
- package/dist/src/tui/operation-review-planner.js +1295 -0
- package/dist/src/tui/operation-review-planner.js.map +1 -0
- package/dist/src/tui/plugin-content.d.ts +31 -0
- package/dist/src/tui/plugin-content.js +680 -0
- package/dist/src/tui/plugin-content.js.map +1 -0
- package/dist/src/tui/plugin-detail.d.ts +52 -0
- package/dist/src/tui/plugin-detail.js +165 -0
- package/dist/src/tui/plugin-detail.js.map +1 -0
- package/dist/src/tui/plugin-write-task.d.ts +69 -0
- package/dist/src/tui/plugin-write-task.js +286 -0
- package/dist/src/tui/plugin-write-task.js.map +1 -0
- package/dist/src/tui/project-inventory.d.ts +68 -0
- package/dist/src/tui/project-inventory.js +203 -0
- package/dist/src/tui/project-inventory.js.map +1 -0
- package/dist/src/tui/prompt.js +4 -15
- package/dist/src/tui/prompt.js.map +1 -1
- package/dist/src/tui/query-header.d.ts +30 -0
- package/dist/src/tui/query-header.js +40 -0
- package/dist/src/tui/query-header.js.map +1 -0
- package/dist/src/tui/reader.d.ts +37 -0
- package/dist/src/tui/reader.js +47 -0
- package/dist/src/tui/reader.js.map +1 -0
- package/dist/src/tui/router.d.ts +197 -10
- package/dist/src/tui/router.js +338 -50
- package/dist/src/tui/router.js.map +1 -1
- package/dist/src/tui/screen-registry.d.ts +701 -0
- package/dist/src/tui/screen-registry.js +230 -0
- package/dist/src/tui/screen-registry.js.map +1 -0
- package/dist/src/tui/session-console-app.d.ts +6 -0
- package/dist/src/tui/session-console-app.js +13 -0
- package/dist/src/tui/session-console-app.js.map +1 -0
- package/dist/src/tui/session-host.d.ts +45 -0
- package/dist/src/tui/session-host.js +209 -0
- package/dist/src/tui/session-host.js.map +1 -0
- package/dist/src/tui/source-detail-card.d.ts +29 -0
- package/dist/src/tui/source-detail-card.js +45 -0
- package/dist/src/tui/source-detail-card.js.map +1 -0
- package/dist/src/tui/source-ref-presets.d.ts +3 -0
- package/dist/src/tui/source-ref-presets.js +11 -0
- package/dist/src/tui/source-ref-presets.js.map +1 -0
- package/dist/src/tui/theme.d.ts +12 -0
- package/dist/src/tui/theme.js +12 -0
- package/dist/src/tui/theme.js.map +1 -1
- package/dist/src/tui/viewport.d.ts +1 -0
- package/dist/src/tui/viewport.js +23 -0
- package/dist/src/tui/viewport.js.map +1 -1
- package/dist/src/tui/views.js +31 -3
- package/dist/src/tui/views.js.map +1 -1
- package/dist/src/tui/wizard.js +37 -13
- package/dist/src/tui/wizard.js.map +1 -1
- package/dist/src/types.d.ts +244 -20
- package/dist/src/types.js +1 -0
- package/dist/src/types.js.map +1 -1
- package/dist/src/utils/agent-version.d.ts +7 -1
- package/dist/src/utils/agent-version.js +41 -8
- package/dist/src/utils/agent-version.js.map +1 -1
- package/dist/src/utils/artifact-plan.d.ts +5 -4
- package/dist/src/utils/artifact-plan.js +18 -7
- package/dist/src/utils/artifact-plan.js.map +1 -1
- package/dist/src/utils/artifact-renderer.d.ts +17 -7
- package/dist/src/utils/artifact-renderer.js +214 -216
- package/dist/src/utils/artifact-renderer.js.map +1 -1
- package/dist/src/utils/artifact-request.d.ts +21 -0
- package/dist/src/utils/artifact-request.js +78 -0
- package/dist/src/utils/artifact-request.js.map +1 -0
- package/dist/src/utils/aw-home-mutation-lock.d.ts +1 -0
- package/dist/src/utils/aw-home-mutation-lock.js +32 -4
- package/dist/src/utils/aw-home-mutation-lock.js.map +1 -1
- package/dist/src/utils/bundle-integrity.d.ts +0 -1
- package/dist/src/utils/bundle-integrity.js +0 -25
- package/dist/src/utils/bundle-integrity.js.map +1 -1
- package/dist/src/utils/bundle-layout.js +22 -29
- package/dist/src/utils/bundle-layout.js.map +1 -1
- package/dist/src/utils/catalog-capability-projection.d.ts +8 -0
- package/dist/src/utils/catalog-capability-projection.js +14 -0
- package/dist/src/utils/catalog-capability-projection.js.map +1 -0
- package/dist/src/utils/catalog-digests.d.ts +10 -0
- package/dist/src/utils/catalog-digests.js +57 -20
- package/dist/src/utils/catalog-digests.js.map +1 -1
- package/dist/src/utils/catalog-generation-control-snapshot.d.ts +11 -0
- package/dist/src/utils/catalog-generation-control-snapshot.js +45 -0
- package/dist/src/utils/catalog-generation-control-snapshot.js.map +1 -0
- package/dist/src/utils/catalog-generation-error.d.ts +16 -0
- package/dist/src/utils/catalog-generation-error.js +30 -0
- package/dist/src/utils/catalog-generation-error.js.map +1 -0
- package/dist/src/utils/catalog-generation-resolver.d.ts +44 -0
- package/dist/src/utils/catalog-generation-resolver.js +273 -0
- package/dist/src/utils/catalog-generation-resolver.js.map +1 -0
- package/dist/src/utils/catalog-generation-service.d.ts +172 -0
- package/dist/src/utils/catalog-generation-service.js +1271 -0
- package/dist/src/utils/catalog-generation-service.js.map +1 -0
- package/dist/src/utils/catalog-generation-state.d.ts +22 -0
- package/dist/src/utils/catalog-generation-state.js +192 -0
- package/dist/src/utils/catalog-generation-state.js.map +1 -0
- package/dist/src/utils/catalog-generation-store.d.ts +58 -0
- package/dist/src/utils/catalog-generation-store.js +452 -0
- package/dist/src/utils/catalog-generation-store.js.map +1 -0
- package/dist/src/utils/catalog-manifest-v7.d.ts +5 -0
- package/dist/src/utils/{catalog-manifest-v4.js → catalog-manifest-v7.js} +35 -43
- package/dist/src/utils/catalog-manifest-v7.js.map +1 -0
- package/dist/src/utils/catalog-operation-context.d.ts +20 -0
- package/dist/src/utils/catalog-operation-context.js +142 -0
- package/dist/src/utils/catalog-operation-context.js.map +1 -0
- package/dist/src/utils/catalog-public-error.d.ts +7 -3
- package/dist/src/utils/catalog-public-error.js +28 -8
- package/dist/src/utils/catalog-public-error.js.map +1 -1
- package/dist/src/utils/catalog-runtime-projection.d.ts +3 -0
- package/dist/src/utils/catalog-runtime-projection.js +5 -40
- package/dist/src/utils/catalog-runtime-projection.js.map +1 -1
- package/dist/src/utils/catalog-snapshot.d.ts +5 -3
- package/dist/src/utils/catalog-snapshot.js +11 -3
- package/dist/src/utils/catalog-snapshot.js.map +1 -1
- package/dist/src/utils/catalog-source-identity.d.ts +1 -0
- package/dist/src/utils/catalog-source-identity.js +21 -2
- package/dist/src/utils/catalog-source-identity.js.map +1 -1
- package/dist/src/utils/catalog-source-impact.d.ts +21 -0
- package/dist/src/utils/catalog-source-impact.js +344 -0
- package/dist/src/utils/catalog-source-impact.js.map +1 -0
- package/dist/src/utils/catalog-source-references.d.ts +3 -2
- package/dist/src/utils/catalog-source-references.js +195 -347
- package/dist/src/utils/catalog-source-references.js.map +1 -1
- package/dist/src/utils/catalog-sources.d.ts +15 -1
- package/dist/src/utils/catalog-sources.js +206 -27
- package/dist/src/utils/catalog-sources.js.map +1 -1
- package/dist/src/utils/codex-config.d.ts +2 -0
- package/dist/src/utils/codex-config.js +26 -5
- package/dist/src/utils/codex-config.js.map +1 -1
- package/dist/src/utils/codex-manager.d.ts +79 -0
- package/dist/src/utils/codex-manager.js +747 -0
- package/dist/src/utils/codex-manager.js.map +1 -0
- package/dist/src/utils/codex-marketplace-path.d.ts +5 -0
- package/dist/src/utils/codex-marketplace-path.js +45 -0
- package/dist/src/utils/codex-marketplace-path.js.map +1 -0
- package/dist/src/utils/codex-native-observation.d.ts +49 -0
- package/dist/src/utils/codex-native-observation.js +154 -0
- package/dist/src/utils/codex-native-observation.js.map +1 -0
- package/dist/src/utils/codex-native-render-receipt.d.ts +40 -0
- package/dist/src/utils/codex-native-render-receipt.js +205 -0
- package/dist/src/utils/codex-native-render-receipt.js.map +1 -0
- package/dist/src/utils/codex-reconciler.d.ts +126 -0
- package/dist/src/utils/codex-reconciler.js +298 -0
- package/dist/src/utils/codex-reconciler.js.map +1 -0
- package/dist/src/utils/codex-shared-native.d.ts +43 -0
- package/dist/src/utils/codex-shared-native.js +81 -0
- package/dist/src/utils/codex-shared-native.js.map +1 -0
- package/dist/src/utils/codex-skill-staging.d.ts +2 -0
- package/dist/src/utils/codex-skill-staging.js.map +1 -1
- package/dist/src/utils/codex-surface-analysis.d.ts +46 -0
- package/dist/src/utils/codex-surface-analysis.js +247 -0
- package/dist/src/utils/codex-surface-analysis.js.map +1 -0
- package/dist/src/utils/dynamic-skill-tree.d.ts +4 -0
- package/dist/src/utils/dynamic-skill-tree.js +35 -5
- package/dist/src/utils/dynamic-skill-tree.js.map +1 -1
- package/dist/src/utils/git-catalog-provider.d.ts +16 -0
- package/dist/src/utils/git-catalog-provider.js +177 -145
- package/dist/src/utils/git-catalog-provider.js.map +1 -1
- package/dist/src/utils/local-marketplace.d.ts +18 -1
- package/dist/src/utils/local-marketplace.js +354 -84
- package/dist/src/utils/local-marketplace.js.map +1 -1
- package/dist/src/utils/manifest.d.ts +1 -3
- package/dist/src/utils/manifest.js +1 -3
- package/dist/src/utils/manifest.js.map +1 -1
- package/dist/src/utils/multi-source-catalog.d.ts +3 -9
- package/dist/src/utils/multi-source-catalog.js +54 -110
- package/dist/src/utils/multi-source-catalog.js.map +1 -1
- package/dist/src/utils/native-cli.d.ts +55 -7
- package/dist/src/utils/native-cli.js +400 -58
- package/dist/src/utils/native-cli.js.map +1 -1
- package/dist/src/utils/orphan-marketplace-cleanup.js +0 -4
- package/dist/src/utils/orphan-marketplace-cleanup.js.map +1 -1
- package/dist/src/utils/ownership.d.ts +84 -20
- package/dist/src/utils/ownership.js +179 -222
- package/dist/src/utils/ownership.js.map +1 -1
- package/dist/src/utils/path-catalog-provider.d.ts +1 -1
- package/dist/src/utils/path-catalog-provider.js +54 -65
- package/dist/src/utils/path-catalog-provider.js.map +1 -1
- package/dist/src/utils/paths.d.ts +0 -1
- package/dist/src/utils/paths.js +0 -1
- package/dist/src/utils/paths.js.map +1 -1
- package/dist/src/utils/plugin-config-impact.d.ts +33 -0
- package/dist/src/utils/plugin-config-impact.js +298 -0
- package/dist/src/utils/plugin-config-impact.js.map +1 -0
- package/dist/src/utils/plugin-config-write.d.ts +52 -27
- package/dist/src/utils/plugin-config-write.js +1000 -296
- package/dist/src/utils/plugin-config-write.js.map +1 -1
- package/dist/src/utils/plugin-config.d.ts +153 -93
- package/dist/src/utils/plugin-config.js +1116 -968
- package/dist/src/utils/plugin-config.js.map +1 -1
- package/dist/src/utils/plugin-intent-state.d.ts +49 -0
- package/dist/src/utils/plugin-intent-state.js +320 -0
- package/dist/src/utils/plugin-intent-state.js.map +1 -0
- package/dist/src/utils/plugin-scripts.d.ts +65 -125
- package/dist/src/utils/plugin-scripts.js +484 -524
- package/dist/src/utils/plugin-scripts.js.map +1 -1
- package/dist/src/utils/process-tree.d.ts +2 -2
- package/dist/src/utils/process-tree.js +1 -1
- package/dist/src/utils/process-tree.js.map +1 -1
- package/dist/src/utils/project-boundary.d.ts +11 -13
- package/dist/src/utils/project-boundary.js +28 -34
- package/dist/src/utils/project-boundary.js.map +1 -1
- package/dist/src/utils/runtime-config.d.ts +20 -0
- package/dist/src/utils/runtime-config.js +75 -0
- package/dist/src/utils/runtime-config.js.map +1 -0
- package/dist/src/utils/safe-fs.d.ts +21 -0
- package/dist/src/utils/safe-fs.js +111 -0
- package/dist/src/utils/safe-fs.js.map +1 -0
- package/dist/src/utils/safe-operation-diagnostic.d.ts +15 -0
- package/dist/src/utils/safe-operation-diagnostic.js +33 -0
- package/dist/src/utils/safe-operation-diagnostic.js.map +1 -0
- package/dist/src/utils/sensitive-content.d.ts +4 -0
- package/dist/src/utils/sensitive-content.js +36 -0
- package/dist/src/utils/sensitive-content.js.map +1 -0
- package/dist/src/utils/state-paths.js +7 -2
- package/dist/src/utils/state-paths.js.map +1 -1
- package/dist/src/utils/target-eligibility.d.ts +8 -2
- package/dist/src/utils/target-eligibility.js +17 -8
- package/dist/src/utils/target-eligibility.js.map +1 -1
- package/dist/src/utils/windows-claude-shim.d.ts +7 -0
- package/dist/src/utils/windows-claude-shim.js +10 -0
- package/dist/src/utils/windows-claude-shim.js.map +1 -0
- package/dist/src/utils/windows-npm-shim.d.ts +14 -0
- package/dist/src/utils/windows-npm-shim.js +140 -0
- package/dist/src/utils/windows-npm-shim.js.map +1 -0
- package/dist/vitest.config.js +92 -10
- package/dist/vitest.config.js.map +1 -1
- package/package.json +27 -18
- package/dist/authoring/scripts/check-plugin-versions.d.mts +0 -2
- package/dist/authoring/scripts/check-plugin-versions.mjs +0 -5
- package/dist/authoring/scripts/check-plugin-versions.mjs.map +0 -1
- package/dist/scripts/aw-skill-eval-engine.d.ts +0 -13
- package/dist/scripts/aw-skill-eval-engine.js +0 -31
- package/dist/scripts/aw-skill-eval-engine.js.map +0 -1
- package/dist/scripts/codex-eval-app-server.d.ts +0 -89
- package/dist/scripts/codex-eval-app-server.js +0 -1228
- package/dist/scripts/codex-eval-app-server.js.map +0 -1
- package/dist/scripts/codex-eval-isolation.d.ts +0 -61
- package/dist/scripts/codex-eval-isolation.js +0 -318
- package/dist/scripts/codex-eval-isolation.js.map +0 -1
- package/dist/scripts/codex-eval-process-management.d.ts +0 -8
- package/dist/scripts/codex-eval-process-management.js +0 -69
- package/dist/scripts/codex-eval-process-management.js.map +0 -1
- package/dist/scripts/codex-eval-process-tree.d.ts +0 -38
- package/dist/scripts/codex-eval-process-tree.js +0 -803
- package/dist/scripts/codex-eval-process-tree.js.map +0 -1
- package/dist/scripts/codex-eval-runtime-config.d.ts +0 -62
- package/dist/scripts/codex-eval-runtime-config.js +0 -843
- package/dist/scripts/codex-eval-runtime-config.js.map +0 -1
- package/dist/scripts/codex-trigger-eval.d.ts +0 -84
- package/dist/scripts/codex-trigger-eval.js +0 -968
- package/dist/scripts/codex-trigger-eval.js.map +0 -1
- package/dist/scripts/eval-plugin-skills-audited.d.ts +0 -6
- package/dist/scripts/eval-plugin-skills-audited.js +0 -261
- package/dist/scripts/eval-plugin-skills-audited.js.map +0 -1
- package/dist/scripts/eval-plugin-skills.d.ts +0 -45
- package/dist/scripts/eval-plugin-skills.js +0 -1586
- package/dist/scripts/eval-plugin-skills.js.map +0 -1
- package/dist/scripts/eval-run-layout.d.ts +0 -17
- package/dist/scripts/eval-run-layout.js +0 -26
- package/dist/scripts/eval-run-layout.js.map +0 -1
- package/dist/scripts/plugin-eval-contract.d.ts +0 -185
- package/dist/scripts/plugin-eval-contract.js +0 -695
- package/dist/scripts/plugin-eval-contract.js.map +0 -1
- package/dist/scripts/plugin-eval-materializer.d.ts +0 -13
- package/dist/scripts/plugin-eval-materializer.js +0 -421
- package/dist/scripts/plugin-eval-materializer.js.map +0 -1
- package/dist/scripts/skill-reporting.d.ts +0 -212
- package/dist/scripts/skill-reporting.js +0 -922
- package/dist/scripts/skill-reporting.js.map +0 -1
- package/dist/src/commands/status-v4.d.ts +0 -123
- package/dist/src/commands/status-v4.js +0 -905
- package/dist/src/commands/status-v4.js.map +0 -1
- package/dist/src/commands/status.d.ts +0 -93
- package/dist/src/commands/status.js +0 -442
- package/dist/src/commands/status.js.map +0 -1
- package/dist/src/utils/active-marketplace-runtime-lock.d.ts +0 -12
- package/dist/src/utils/active-marketplace-runtime-lock.js +0 -133
- package/dist/src/utils/active-marketplace-runtime-lock.js.map +0 -1
- package/dist/src/utils/catalog-manifest-v3.d.ts +0 -2
- package/dist/src/utils/catalog-manifest-v3.js +0 -3
- package/dist/src/utils/catalog-manifest-v3.js.map +0 -1
- package/dist/src/utils/catalog-manifest-v4.d.ts +0 -5
- package/dist/src/utils/catalog-manifest-v4.js.map +0 -1
- package/dist/src/utils/catalog-source-cache.d.ts +0 -62
- package/dist/src/utils/catalog-source-cache.js +0 -296
- package/dist/src/utils/catalog-source-cache.js.map +0 -1
- package/dist/src/utils/codex-project-surface.d.ts +0 -3
- package/dist/src/utils/codex-project-surface.js +0 -49
- package/dist/src/utils/codex-project-surface.js.map +0 -1
- package/dist/src/utils/lifecycle-active-store.d.ts +0 -175
- package/dist/src/utils/lifecycle-active-store.js +0 -1276
- package/dist/src/utils/lifecycle-active-store.js.map +0 -1
- package/dist/src/utils/plugin-release.d.ts +0 -2
- package/dist/src/utils/plugin-release.js +0 -2
- package/dist/src/utils/plugin-release.js.map +0 -1
|
@@ -4,13 +4,10 @@ import { readClaudeSettings } from '../adapters/helpers.js';
|
|
|
4
4
|
import { readCodexConfigFile } from './codex-config.js';
|
|
5
5
|
import { readJsonFileIfExists } from './json.js';
|
|
6
6
|
import { getClaudeHome, getCodexHome, canonicalizePathThroughExistingAncestorSync, resolveAwHome, resolveAwHomeCanonical, resolveRepoRootSync, } from './state-paths.js';
|
|
7
|
-
import { OWNED_TEXT_HEADER_PREFIX, parseSharedOwnerToken, parseOwnedTextHeader, readSkillOwnerMarker, SKILL_OWNER_MARKER, } from './ownership.js';
|
|
8
|
-
import { createLifecycleProjectLocationKey, inspectLifecycleActiveSnapshotForInventory, } from './lifecycle-active-store.js';
|
|
9
|
-
import { CodexNativeResidueProbeError, discoverCodexNativeResidueNames, } from '../commands/rebuild-integration.js';
|
|
10
|
-
import { parseCodexSharedHooksFile } from './hooks-contract.js';
|
|
7
|
+
import { OWNED_TEXT_HEADER_PREFIX, SHARED_OWNER_TOKEN_PREFIX, parseSharedOwnerToken, parseOwnedTextHeader, readSkillOwnerMarker, SKILL_OWNER_MARKER, } from './ownership.js';
|
|
11
8
|
import { sanitizeCatalogSourceErrorMessage } from './catalog-public-error.js';
|
|
12
|
-
import { readPluginManifest } from './manifest.js';
|
|
13
9
|
import { readStrictNamespacedMarketplaceRoot } from './local-marketplace.js';
|
|
10
|
+
import { readPluginIntentState, resolvePluginIntentStatePath, } from './plugin-intent-state.js';
|
|
14
11
|
export function canonicalMarketplaceRegistrationNames(references, sourceId) {
|
|
15
12
|
return [...new Set(references.flatMap((reference) => reference.kind === 'namespacedMarketplace'
|
|
16
13
|
&& reference.sourceId === sourceId
|
|
@@ -47,7 +44,7 @@ function claudeConsumersFromSettings(value, marketplaceName, scope) {
|
|
|
47
44
|
}
|
|
48
45
|
return output;
|
|
49
46
|
}
|
|
50
|
-
function claudeConsumersFromInstalled(value, marketplaceName, currentProject, includeHistoricalProjects) {
|
|
47
|
+
function claudeConsumersFromInstalled(value, marketplaceName, currentProject, includeHistoricalProjects = false) {
|
|
51
48
|
const output = [];
|
|
52
49
|
if (value !== null && !isRecord(value)) {
|
|
53
50
|
throw new Error('Claude installed_plugins must be a JSON object.');
|
|
@@ -90,7 +87,7 @@ function claudeConsumersFromInstalled(value, marketplaceName, currentProject, in
|
|
|
90
87
|
? canonicalizePathThroughExistingAncestorSync(item.projectPath)
|
|
91
88
|
: null
|
|
92
89
|
: undefined;
|
|
93
|
-
if (
|
|
90
|
+
if (scope === 'project' && !includeHistoricalProjects && projectKey !== currentProject)
|
|
94
91
|
continue;
|
|
95
92
|
const pluginName = typeof item.name === 'string'
|
|
96
93
|
? item.name
|
|
@@ -156,9 +153,7 @@ function inventoryErrorRelevance(location, env, cwd) {
|
|
|
156
153
|
[path.join(awHome, 'plugin-config'), 'user'],
|
|
157
154
|
[path.join(canonicalAwHome, 'plugin-config'), 'user'],
|
|
158
155
|
[path.join(repoRoot, '.agent-workflows', 'plugin-config'), 'project'],
|
|
159
|
-
[path.join(repoRoot, '.agent-workflows', 'plugin-config.local'), 'project'],
|
|
160
156
|
[path.join(canonicalRepoRoot, '.agent-workflows', 'plugin-config'), 'project'],
|
|
161
|
-
[path.join(canonicalRepoRoot, '.agent-workflows', 'plugin-config.local'), 'project'],
|
|
162
157
|
]) {
|
|
163
158
|
const segments = pathSegmentsWithin(root, location);
|
|
164
159
|
if (segments !== null) {
|
|
@@ -175,26 +170,6 @@ function inventoryErrorRelevance(location, env, cwd) {
|
|
|
175
170
|
return { global: false, scope: 'project' };
|
|
176
171
|
}
|
|
177
172
|
}
|
|
178
|
-
const lifecycle = pathSegmentsWithin(path.join(awHome, 'lifecycle-active'), location);
|
|
179
|
-
if (lifecycle?.[0]) {
|
|
180
|
-
const platform = lifecycle[1] === 'codex' || lifecycle[1] === 'claude'
|
|
181
|
-
? lifecycle[1]
|
|
182
|
-
: undefined;
|
|
183
|
-
const scope = lifecycle[2] === 'user' || lifecycle[2] === 'project'
|
|
184
|
-
? lifecycle[2]
|
|
185
|
-
: undefined;
|
|
186
|
-
const pluginName = platform && scope && lifecycle.length >= 5
|
|
187
|
-
&& (scope === 'project' || lifecycle[3] === 'user')
|
|
188
|
-
? lifecycle[4]
|
|
189
|
-
: undefined;
|
|
190
|
-
return {
|
|
191
|
-
global: false,
|
|
192
|
-
sourceId: lifecycle[0],
|
|
193
|
-
...(pluginName ? { pluginName } : {}),
|
|
194
|
-
...(platform ? { platform } : {}),
|
|
195
|
-
...(scope ? { scope } : {}),
|
|
196
|
-
};
|
|
197
|
-
}
|
|
198
173
|
return { global: true };
|
|
199
174
|
}
|
|
200
175
|
function isAbsentState(error) {
|
|
@@ -297,7 +272,7 @@ async function inventoryPluginConfigRoots(options) {
|
|
|
297
272
|
cwd: options.cwd,
|
|
298
273
|
});
|
|
299
274
|
if (userRoot)
|
|
300
|
-
roots.push(userRoot);
|
|
275
|
+
roots.push({ root: userRoot, scope: 'user' });
|
|
301
276
|
}
|
|
302
277
|
const rawRepoRoot = resolveRepoRootSync(options.cwd);
|
|
303
278
|
const repoRoot = await inventoryRead({
|
|
@@ -317,18 +292,16 @@ async function inventoryPluginConfigRoots(options) {
|
|
|
317
292
|
env: options.env,
|
|
318
293
|
cwd: options.cwd,
|
|
319
294
|
})) {
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
roots.push(projectRoot);
|
|
331
|
-
}
|
|
295
|
+
const projectRoot = await inventoryCanonicalDescendantDirectory({
|
|
296
|
+
root: rawRepoRoot,
|
|
297
|
+
segments: ['.agent-workflows', 'plugin-config'],
|
|
298
|
+
errors: options.errors,
|
|
299
|
+
kind: 'configDirectoryRead',
|
|
300
|
+
env: options.env,
|
|
301
|
+
cwd: options.cwd,
|
|
302
|
+
});
|
|
303
|
+
if (projectRoot)
|
|
304
|
+
roots.push({ root: projectRoot, scope: 'project', projectKey: repoRoot });
|
|
332
305
|
}
|
|
333
306
|
return roots;
|
|
334
307
|
}
|
|
@@ -341,7 +314,6 @@ export async function inventoryLegacyOwnerReferences(options) {
|
|
|
341
314
|
const skillRoots = new Set([
|
|
342
315
|
path.join(getCodexHome(env), 'skills'),
|
|
343
316
|
path.join(getClaudeHome(env), 'skills'),
|
|
344
|
-
path.join(repoRoot, '.agents', 'skills'),
|
|
345
317
|
path.join(repoRoot, '.claude', 'skills'),
|
|
346
318
|
]);
|
|
347
319
|
const legacyPluginsRoot = path.join(awHome, 'plugins');
|
|
@@ -355,54 +327,23 @@ export async function inventoryLegacyOwnerReferences(options) {
|
|
|
355
327
|
for (const root of await resolveCanonicalPluginSkillRoots(path.join(legacyPluginsRoot, plugin.name), true, errors, env, options.cwd))
|
|
356
328
|
skillRoots.add(root);
|
|
357
329
|
}
|
|
358
|
-
const marketplacesRoot = path.join(awHome, 'marketplaces');
|
|
359
|
-
const marketplaces = await inventoryCanonicalDirectoryEntries({
|
|
360
|
-
errors, location: marketplacesRoot, kind: 'marketplaceDirectoryRead', env, cwd: options.cwd,
|
|
361
|
-
});
|
|
362
|
-
for (const entry of marketplaces) {
|
|
363
|
-
const marketplaceRoot = path.join(marketplacesRoot, entry.name);
|
|
364
|
-
if (!await inventoryCanonicalDirectory({
|
|
365
|
-
errors,
|
|
366
|
-
location: marketplaceRoot,
|
|
367
|
-
kind: 'marketplaceRootValidation',
|
|
368
|
-
env,
|
|
369
|
-
cwd: options.cwd,
|
|
370
|
-
}))
|
|
371
|
-
continue;
|
|
372
|
-
const pluginsRoot = path.join(marketplacesRoot, entry.name, 'plugins');
|
|
373
|
-
const plugins = await inventoryCanonicalDirectoryEntries({
|
|
374
|
-
errors, location: pluginsRoot, kind: 'pluginDirectoryRead', env, cwd: options.cwd,
|
|
375
|
-
});
|
|
376
|
-
for (const plugin of plugins) {
|
|
377
|
-
const pluginRoot = path.join(pluginsRoot, plugin.name);
|
|
378
|
-
if (!await inventoryCanonicalDirectory({
|
|
379
|
-
errors,
|
|
380
|
-
location: pluginRoot,
|
|
381
|
-
kind: 'pluginDirectoryRead',
|
|
382
|
-
env,
|
|
383
|
-
cwd: options.cwd,
|
|
384
|
-
}))
|
|
385
|
-
continue;
|
|
386
|
-
for (const root of await resolveCanonicalPluginSkillRoots(pluginRoot, false, errors, env, options.cwd))
|
|
387
|
-
skillRoots.add(root);
|
|
388
|
-
}
|
|
389
|
-
}
|
|
390
330
|
for (const root of skillRoots) {
|
|
391
331
|
references.push(...await findDirectSkillOwnerMarkers(root, errors, env, options.cwd));
|
|
392
332
|
}
|
|
393
333
|
for (const configRoot of [
|
|
394
334
|
getCodexHome(env),
|
|
395
335
|
getClaudeHome(env),
|
|
396
|
-
path.join(repoRoot, '.codex'),
|
|
397
336
|
path.join(repoRoot, '.claude'),
|
|
398
337
|
]) {
|
|
399
338
|
references.push(...await findOwnedHeadersInDirectory(path.join(configRoot, 'rules'), new Set(['.md', '.rules']), true, errors, env, options.cwd), ...await findOwnedHeadersInDirectory(path.join(configRoot, 'agents'), new Set(['.md', '.toml']), true, errors, env, options.cwd));
|
|
400
339
|
}
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
path.join(
|
|
404
|
-
path.join(repoRoot, '.codex', 'AGENTS.md'),
|
|
340
|
+
for (const [directory, extensions] of [
|
|
341
|
+
[path.join(repoRoot, '.codex', 'rules'), new Set(['.md', '.rules'])],
|
|
342
|
+
[path.join(repoRoot, '.codex', 'agents'), new Set(['.md', '.toml'])],
|
|
405
343
|
]) {
|
|
344
|
+
references.push(...(await findOwnedHeadersInDirectory(directory, extensions, true, errors, env, options.cwd)).filter((reference) => reference.kind === 'namespacedOwner'));
|
|
345
|
+
}
|
|
346
|
+
for (const filePath of [path.join(getCodexHome(env), 'AGENTS.md')]) {
|
|
406
347
|
const reference = await readOwnedHeaderReference(filePath, false, errors, env, options.cwd);
|
|
407
348
|
if (reference)
|
|
408
349
|
references.push(reference);
|
|
@@ -424,7 +365,8 @@ export async function inventoryLegacyConfigReferences(options) {
|
|
|
424
365
|
const env = options.env ?? process.env;
|
|
425
366
|
const references = [];
|
|
426
367
|
const errors = [];
|
|
427
|
-
for (const
|
|
368
|
+
for (const configRoot of await inventoryPluginConfigRoots({ errors, env, cwd: options.cwd })) {
|
|
369
|
+
const directory = configRoot.root;
|
|
428
370
|
const entries = await inventoryRead({
|
|
429
371
|
operation: () => fs.readdir(directory, { withFileTypes: true }),
|
|
430
372
|
absent: [], errors, location: directory, kind: 'configDirectoryRead', env, cwd: options.cwd,
|
|
@@ -441,7 +383,13 @@ export async function inventoryLegacyConfigReferences(options) {
|
|
|
441
383
|
absent: null, errors, location: legacyFile, kind: 'configFileStat', env, cwd: options.cwd,
|
|
442
384
|
});
|
|
443
385
|
if (stat?.isFile()) {
|
|
444
|
-
references.push({
|
|
386
|
+
references.push({
|
|
387
|
+
kind: 'legacyConfig',
|
|
388
|
+
location: legacyFile,
|
|
389
|
+
pluginName: entry.name,
|
|
390
|
+
scope: configRoot.scope,
|
|
391
|
+
...(configRoot.projectKey ? { projectKey: configRoot.projectKey } : {}),
|
|
392
|
+
});
|
|
445
393
|
}
|
|
446
394
|
}
|
|
447
395
|
}
|
|
@@ -458,13 +406,13 @@ function ownerReferenceFromRaw(entryPath, raw) {
|
|
|
458
406
|
...(typeof raw.scope === 'string' ? { scope: raw.scope } : {}),
|
|
459
407
|
};
|
|
460
408
|
}
|
|
461
|
-
if (raw?.schemaVersion ===
|
|
462
|
-
&& typeof raw.sourceId === 'string'
|
|
409
|
+
if (raw?.schemaVersion === 3 && raw.owner === 'agent-workflows'
|
|
410
|
+
&& typeof raw.sourceId === 'string'
|
|
411
|
+
&& raw.pluginId === `${raw.sourceId}/${raw.plugin}`) {
|
|
463
412
|
return {
|
|
464
413
|
kind: 'namespacedOwner',
|
|
465
414
|
location: entryPath,
|
|
466
415
|
sourceId: raw.sourceId,
|
|
467
|
-
...(typeof raw.sourceIdentity === 'string' ? { sourceIdentity: raw.sourceIdentity } : {}),
|
|
468
416
|
...(typeof raw.plugin === 'string' ? { pluginName: raw.plugin } : {}),
|
|
469
417
|
...(typeof raw.platform === 'string' ? { platform: raw.platform } : {}),
|
|
470
418
|
...(typeof raw.scope === 'string' ? { scope: raw.scope } : {}),
|
|
@@ -472,6 +420,27 @@ function ownerReferenceFromRaw(entryPath, raw) {
|
|
|
472
420
|
}
|
|
473
421
|
return null;
|
|
474
422
|
}
|
|
423
|
+
function legacyOwnedHeaderReference(filePath, content) {
|
|
424
|
+
const normalized = content.replace(/\r\n/gu, '\n');
|
|
425
|
+
const frontmatterEnd = normalized.startsWith('---\n')
|
|
426
|
+
? normalized.indexOf('\n---\n', 4)
|
|
427
|
+
: -1;
|
|
428
|
+
const headerIndex = frontmatterEnd === -1 ? 0 : frontmatterEnd + '\n---\n'.length;
|
|
429
|
+
const lineEnd = normalized.indexOf('\n', headerIndex);
|
|
430
|
+
const line = normalized.slice(headerIndex, lineEnd === -1 ? normalized.length : lineEnd);
|
|
431
|
+
if (!line.startsWith(OWNED_TEXT_HEADER_PREFIX))
|
|
432
|
+
return null;
|
|
433
|
+
const raw = (() => {
|
|
434
|
+
try {
|
|
435
|
+
return JSON.parse(line.slice(OWNED_TEXT_HEADER_PREFIX.length));
|
|
436
|
+
}
|
|
437
|
+
catch {
|
|
438
|
+
return null;
|
|
439
|
+
}
|
|
440
|
+
})();
|
|
441
|
+
const reference = ownerReferenceFromRaw(filePath, raw);
|
|
442
|
+
return reference?.kind === 'legacyOwner' ? reference : null;
|
|
443
|
+
}
|
|
475
444
|
async function readOwnedHeaderReference(filePath, requireGeneratedName, errors, env, cwd) {
|
|
476
445
|
const stats = await inventoryRead({
|
|
477
446
|
operation: () => fs.stat(filePath),
|
|
@@ -497,6 +466,16 @@ async function readOwnedHeaderReference(filePath, requireGeneratedName, errors,
|
|
|
497
466
|
return null;
|
|
498
467
|
if (!content.includes(OWNED_TEXT_HEADER_PREFIX))
|
|
499
468
|
return null;
|
|
469
|
+
const legacyReference = legacyOwnedHeaderReference(filePath, content);
|
|
470
|
+
if (legacyReference) {
|
|
471
|
+
if (requireGeneratedName
|
|
472
|
+
&& legacyReference.pluginName
|
|
473
|
+
&& !path.basename(filePath).startsWith(`aw-${legacyReference.pluginName}-`)) {
|
|
474
|
+
errors.push(inventoryError(new Error('Owned text header path does not match its plugin identity.'), filePath, 'ownerHeaderPathValidation', env, cwd));
|
|
475
|
+
return null;
|
|
476
|
+
}
|
|
477
|
+
return legacyReference;
|
|
478
|
+
}
|
|
500
479
|
let parsed;
|
|
501
480
|
try {
|
|
502
481
|
parsed = parseOwnedTextHeader(content);
|
|
@@ -509,11 +488,17 @@ async function readOwnedHeaderReference(filePath, requireGeneratedName, errors,
|
|
|
509
488
|
return null;
|
|
510
489
|
if (requireGeneratedName
|
|
511
490
|
&& !path.basename(filePath).startsWith(`aw-${parsed.identity.plugin}-`)) {
|
|
512
|
-
errors.push(inventoryError(new Error('Owned text header path does not match its plugin identity.'), filePath, 'ownerHeaderPathValidation', env, cwd
|
|
491
|
+
errors.push(inventoryError(new Error('Owned text header path does not match its plugin identity.'), filePath, 'ownerHeaderPathValidation', env, cwd, {
|
|
492
|
+
global: false,
|
|
493
|
+
...(parsed.identity.sourceId ? { sourceId: parsed.identity.sourceId } : {}),
|
|
494
|
+
pluginName: parsed.identity.plugin,
|
|
495
|
+
platform: parsed.identity.platform,
|
|
496
|
+
scope: parsed.identity.scope,
|
|
497
|
+
}));
|
|
513
498
|
return null;
|
|
514
499
|
}
|
|
515
500
|
return ownerReferenceFromRaw(filePath, {
|
|
516
|
-
schemaVersion:
|
|
501
|
+
schemaVersion: 3,
|
|
517
502
|
...parsed.identity,
|
|
518
503
|
});
|
|
519
504
|
}
|
|
@@ -608,6 +593,12 @@ async function findDirectSkillOwnerMarkers(root, errors, env, cwd) {
|
|
|
608
593
|
marker = await readSkillOwnerMarker({ skillRoot, allowedRoot: root });
|
|
609
594
|
}
|
|
610
595
|
catch (error) {
|
|
596
|
+
const legacy = await fs.readJson(markerPath).catch(() => null);
|
|
597
|
+
const legacyReference = ownerReferenceFromRaw(markerPath, legacy);
|
|
598
|
+
if (legacyReference?.kind === 'legacyOwner') {
|
|
599
|
+
output.push(legacyReference);
|
|
600
|
+
continue;
|
|
601
|
+
}
|
|
611
602
|
if (!isAbsentState(error)) {
|
|
612
603
|
const code = error.code;
|
|
613
604
|
const message = error instanceof Error ? error.message : String(error);
|
|
@@ -640,7 +631,6 @@ function sharedOwnerTokenReferences(filePath, tokens, errors, env, cwd) {
|
|
|
640
631
|
kind: 'namespacedOwner',
|
|
641
632
|
location: filePath,
|
|
642
633
|
sourceId: identity.sourceId,
|
|
643
|
-
sourceIdentity: identity.sourceIdentity,
|
|
644
634
|
pluginName: identity.plugin,
|
|
645
635
|
platform: identity.platform,
|
|
646
636
|
scope: identity.scope,
|
|
@@ -655,25 +645,21 @@ async function codexSharedOwnerReferences(filePath, scope, errors, env, cwd) {
|
|
|
655
645
|
value,
|
|
656
646
|
location: filePath,
|
|
657
647
|
})),
|
|
658
|
-
...Object.values(config.snapshot.mcpServers).flatMap((server) => {
|
|
659
|
-
const env = server.value?.env;
|
|
660
|
-
const value = isRecord(env) && typeof env.AW_AGENT_WORKFLOWS_OWNER === 'string'
|
|
661
|
-
? env.AW_AGENT_WORKFLOWS_OWNER
|
|
662
|
-
: null;
|
|
663
|
-
return value ? [{ value, location: filePath }] : [];
|
|
664
|
-
}),
|
|
665
648
|
];
|
|
666
|
-
const references = sharedOwnerTokenReferences(filePath, ownerValues.map((entry) => entry.value).filter((value) => value.startsWith(
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
649
|
+
const references = sharedOwnerTokenReferences(filePath, ownerValues.map((entry) => entry.value).filter((value) => value.startsWith(SHARED_OWNER_TOKEN_PREFIX)), errors, env, cwd);
|
|
650
|
+
if (scope === 'user') {
|
|
651
|
+
for (const { value, location } of ownerValues) {
|
|
652
|
+
if (value.startsWith(SHARED_OWNER_TOKEN_PREFIX)
|
|
653
|
+
|| !/^[a-z0-9]+(?:-[a-z0-9]+)*$/u.test(value))
|
|
654
|
+
continue;
|
|
655
|
+
references.push({
|
|
656
|
+
kind: 'legacyOwner',
|
|
657
|
+
location,
|
|
658
|
+
pluginName: value,
|
|
659
|
+
platform: 'codex',
|
|
660
|
+
scope,
|
|
661
|
+
});
|
|
662
|
+
}
|
|
677
663
|
}
|
|
678
664
|
return references;
|
|
679
665
|
}
|
|
@@ -682,72 +668,50 @@ async function claudeSharedOwnerReferences(filePath, scope, errors, env, cwd) {
|
|
|
682
668
|
const generated = settings && isRecord(settings.awGenerated) ? settings.awGenerated : null;
|
|
683
669
|
const permissions = generated && isRecord(generated.permissions) ? generated.permissions : {};
|
|
684
670
|
const keys = Object.keys(permissions);
|
|
685
|
-
const references = sharedOwnerTokenReferences(filePath, keys.filter((token) => token.startsWith(
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
}
|
|
699
|
-
async function codexHookOwnerReferences(filePath, errors, env, cwd) {
|
|
700
|
-
const raw = await readJsonFileIfExists(filePath);
|
|
701
|
-
if (!raw)
|
|
702
|
-
return [];
|
|
703
|
-
const parsed = parseCodexSharedHooksFile(raw);
|
|
704
|
-
const output = [];
|
|
705
|
-
for (const hook of parsed.managedIdentities) {
|
|
706
|
-
if (!hook.command.includes(OWNED_TEXT_HEADER_PREFIX))
|
|
707
|
-
continue;
|
|
708
|
-
let owner;
|
|
709
|
-
try {
|
|
710
|
-
owner = parseOwnedTextHeader(hook.command)?.identity;
|
|
711
|
-
}
|
|
712
|
-
catch (error) {
|
|
713
|
-
errors.push(inventoryError(error, filePath, 'ownerHeaderParse', env, cwd));
|
|
714
|
-
continue;
|
|
671
|
+
const references = sharedOwnerTokenReferences(filePath, keys.filter((token) => token.startsWith(SHARED_OWNER_TOKEN_PREFIX)), errors, env, cwd);
|
|
672
|
+
if (scope === 'user') {
|
|
673
|
+
for (const key of keys) {
|
|
674
|
+
if (key.startsWith(SHARED_OWNER_TOKEN_PREFIX)
|
|
675
|
+
|| !/^[a-z0-9]+(?:-[a-z0-9]+)*$/u.test(key))
|
|
676
|
+
continue;
|
|
677
|
+
references.push({
|
|
678
|
+
kind: 'legacyOwner',
|
|
679
|
+
location: filePath,
|
|
680
|
+
pluginName: key,
|
|
681
|
+
platform: 'claude',
|
|
682
|
+
scope,
|
|
683
|
+
});
|
|
715
684
|
}
|
|
716
|
-
if (!owner)
|
|
717
|
-
continue;
|
|
718
|
-
output.push(owner.sourceId ? {
|
|
719
|
-
kind: 'namespacedOwner',
|
|
720
|
-
location: filePath,
|
|
721
|
-
sourceId: owner.sourceId,
|
|
722
|
-
sourceIdentity: owner.sourceIdentity,
|
|
723
|
-
pluginName: owner.plugin,
|
|
724
|
-
platform: owner.platform,
|
|
725
|
-
scope: owner.scope,
|
|
726
|
-
} : {
|
|
727
|
-
kind: 'legacyOwner',
|
|
728
|
-
location: filePath,
|
|
729
|
-
pluginName: owner.plugin,
|
|
730
|
-
platform: owner.platform,
|
|
731
|
-
scope: owner.scope,
|
|
732
|
-
});
|
|
733
685
|
}
|
|
734
|
-
return
|
|
686
|
+
return references;
|
|
735
687
|
}
|
|
736
688
|
function isRecord(value) {
|
|
737
689
|
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
738
690
|
}
|
|
739
|
-
function assertNamespacedConfigEnvelope(value, sourceId, pluginName) {
|
|
691
|
+
function assertNamespacedConfigEnvelope(value, sourceId, pluginName, scope) {
|
|
740
692
|
if (!isRecord(value)
|
|
741
|
-
|| value.schemaVersion !==
|
|
693
|
+
|| value.schemaVersion !== 5
|
|
742
694
|
|| typeof value.sourceId !== 'string'
|
|
743
|
-
|| typeof value.sourceIdentity !== 'string'
|
|
744
|
-
|| !/^sha256:[0-9a-f]{64}$/u.test(value.sourceIdentity)
|
|
745
695
|
|| typeof value.pluginName !== 'string'
|
|
696
|
+
|| !isRecord(value.binding)
|
|
746
697
|
|| !isRecord(value.values)
|
|
747
698
|
|| Object.keys(value).some((key) => ![
|
|
748
|
-
'schemaVersion', 'sourceId', '
|
|
699
|
+
'schemaVersion', 'sourceId', 'pluginName', 'binding', 'values',
|
|
749
700
|
].includes(key))) {
|
|
750
|
-
throw new Error('Namespaced plugin config is not a valid schema
|
|
701
|
+
throw new Error('Namespaced plugin config is not a valid schema 5 envelope.');
|
|
702
|
+
}
|
|
703
|
+
const binding = value.binding;
|
|
704
|
+
const validBinding = scope === 'user'
|
|
705
|
+
? binding.kind === 'source'
|
|
706
|
+
&& typeof binding.sourceIdentity === 'string'
|
|
707
|
+
&& /^sha256:[0-9a-f]{64}$/u.test(binding.sourceIdentity)
|
|
708
|
+
&& Object.keys(binding).every((key) => ['kind', 'sourceIdentity'].includes(key))
|
|
709
|
+
: binding.kind === 'catalog'
|
|
710
|
+
&& typeof binding.logicalIdentity === 'string'
|
|
711
|
+
&& binding.logicalIdentity.trim().length > 0
|
|
712
|
+
&& Object.keys(binding).every((key) => ['kind', 'logicalIdentity'].includes(key));
|
|
713
|
+
if (!validBinding) {
|
|
714
|
+
throw new Error(`Namespaced ${scope} plugin config has an invalid binding.`);
|
|
751
715
|
}
|
|
752
716
|
if (value.sourceId !== sourceId || value.pluginName !== pluginName) {
|
|
753
717
|
throw new Error('Namespaced plugin config identity does not match its directory path.');
|
|
@@ -768,7 +732,7 @@ function isAwPluginConsumerKey(value) {
|
|
|
768
732
|
function hasAwPluginConsumerKeys(value) {
|
|
769
733
|
return isRecord(value) && Object.keys(value).some(isAwPluginConsumerKey);
|
|
770
734
|
}
|
|
771
|
-
async function oldMarketplaceReferences(env, cwd, errors) {
|
|
735
|
+
async function oldMarketplaceReferences(env, cwd, errors, includePlatformHistoricalProjects) {
|
|
772
736
|
const codexPath = path.join(getCodexHome(env), 'config.toml');
|
|
773
737
|
const claudeSettingsPath = path.join(getClaudeHome(env), 'settings.json');
|
|
774
738
|
const claudeKnownPath = path.join(getClaudeHome(env), 'plugins', 'known_marketplaces.json');
|
|
@@ -864,7 +828,7 @@ async function oldMarketplaceReferences(env, cwd, errors) {
|
|
|
864
828
|
location: resolveRepoRootSync(cwd), kind: 'projectRootRead', env, cwd,
|
|
865
829
|
});
|
|
866
830
|
try {
|
|
867
|
-
for (const consumer of claudeConsumersFromInstalled(installed, 'aw', path.normalize(canonicalProjectRoot),
|
|
831
|
+
for (const consumer of claudeConsumersFromInstalled(installed, 'aw', path.normalize(canonicalProjectRoot), includePlatformHistoricalProjects)) {
|
|
868
832
|
output.push({ kind: 'legacyMarketplace', location: claudeInstalledPath, ...consumer });
|
|
869
833
|
}
|
|
870
834
|
}
|
|
@@ -931,10 +895,49 @@ export async function inventoryCatalogSourceReferences(options) {
|
|
|
931
895
|
const awHome = resolveAwHome(env);
|
|
932
896
|
const references = [];
|
|
933
897
|
const errors = [];
|
|
898
|
+
const canonicalProjectRoot = await inventoryRead({
|
|
899
|
+
operation: () => fs.realpath(resolveRepoRootSync(options.cwd)),
|
|
900
|
+
absent: path.resolve(resolveRepoRootSync(options.cwd)),
|
|
901
|
+
errors,
|
|
902
|
+
location: resolveRepoRootSync(options.cwd),
|
|
903
|
+
kind: 'projectRootRead',
|
|
904
|
+
env,
|
|
905
|
+
cwd: options.cwd,
|
|
906
|
+
});
|
|
934
907
|
const legacyConfig = await inventoryLegacyConfigReferences(options);
|
|
935
908
|
references.push(...legacyConfig.references);
|
|
936
909
|
errors.push(...legacyConfig.errors);
|
|
937
|
-
for (const
|
|
910
|
+
for (const scope of ['user', 'project']) {
|
|
911
|
+
const location = resolvePluginIntentStatePath({ scope, cwd: options.cwd, env });
|
|
912
|
+
const state = await inventoryRead({
|
|
913
|
+
operation: () => readPluginIntentState({ scope, cwd: options.cwd, env }),
|
|
914
|
+
absent: null,
|
|
915
|
+
errors,
|
|
916
|
+
location,
|
|
917
|
+
kind: 'lifecycleIntentRead',
|
|
918
|
+
env,
|
|
919
|
+
cwd: options.cwd,
|
|
920
|
+
});
|
|
921
|
+
if (!state)
|
|
922
|
+
continue;
|
|
923
|
+
for (const pluginId of new Set([
|
|
924
|
+
...state.roots.map((root) => root.pluginId),
|
|
925
|
+
...state.dependencyScopeOverrides.map((override) => override.pluginId),
|
|
926
|
+
])) {
|
|
927
|
+
const separator = pluginId.indexOf('/');
|
|
928
|
+
if (separator <= 0 || separator === pluginId.length - 1)
|
|
929
|
+
continue;
|
|
930
|
+
references.push({
|
|
931
|
+
kind: 'namespacedLifecycle',
|
|
932
|
+
location,
|
|
933
|
+
sourceId: pluginId.slice(0, separator),
|
|
934
|
+
pluginName: pluginId.slice(separator + 1),
|
|
935
|
+
scope,
|
|
936
|
+
});
|
|
937
|
+
}
|
|
938
|
+
}
|
|
939
|
+
for (const configInventory of await inventoryPluginConfigRoots({ errors, env, cwd: options.cwd })) {
|
|
940
|
+
const configRoot = configInventory.root;
|
|
938
941
|
const sourceEntries = await inventoryRead({
|
|
939
942
|
operation: () => fs.readdir(configRoot, { withFileTypes: true }),
|
|
940
943
|
absent: [], errors, location: configRoot, kind: 'configDirectoryRead', env, cwd: options.cwd,
|
|
@@ -974,7 +977,7 @@ export async function inventoryCatalogSourceReferences(options) {
|
|
|
974
977
|
if (value === null)
|
|
975
978
|
continue;
|
|
976
979
|
try {
|
|
977
|
-
assertNamespacedConfigEnvelope(value, sourceEntry.name, pluginEntry.name);
|
|
980
|
+
assertNamespacedConfigEnvelope(value, sourceEntry.name, pluginEntry.name, configInventory.scope);
|
|
978
981
|
}
|
|
979
982
|
catch (error) {
|
|
980
983
|
errors.push(inventoryError(error, configPath, 'configFileValidation', env, options.cwd));
|
|
@@ -984,160 +987,9 @@ export async function inventoryCatalogSourceReferences(options) {
|
|
|
984
987
|
kind: 'namespacedConfig',
|
|
985
988
|
location: configPath,
|
|
986
989
|
sourceId: sourceEntry.name,
|
|
987
|
-
sourceIdentity: value.sourceIdentity,
|
|
988
990
|
pluginName: pluginEntry.name,
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
}
|
|
992
|
-
}
|
|
993
|
-
const lifecycleRoot = path.join(awHome, 'lifecycle-active');
|
|
994
|
-
const lifecycleSources = await inventoryCanonicalDirectoryEntries({
|
|
995
|
-
errors, location: lifecycleRoot, kind: 'lifecycleDirectoryRead', env, cwd: options.cwd,
|
|
996
|
-
});
|
|
997
|
-
for (const platform of ['codex', 'claude']) {
|
|
998
|
-
const legacyRoot = path.join(lifecycleRoot, platform);
|
|
999
|
-
if (!lifecycleSources.some((entry) => entry.name === platform))
|
|
1000
|
-
continue;
|
|
1001
|
-
const legacyEntries = await inventoryCanonicalDirectoryEntries({
|
|
1002
|
-
errors, location: legacyRoot, kind: 'lifecycleNamespaceValidation', env, cwd: options.cwd,
|
|
1003
|
-
});
|
|
1004
|
-
if (legacyEntries.length > 0) {
|
|
1005
|
-
references.push({ kind: 'legacyLifecycle', location: legacyRoot });
|
|
1006
|
-
}
|
|
1007
|
-
}
|
|
1008
|
-
const canonicalProjectRoot = await inventoryRead({
|
|
1009
|
-
operation: () => fs.realpath(resolveRepoRootSync(options.cwd)),
|
|
1010
|
-
absent: path.resolve(resolveRepoRootSync(options.cwd)), errors,
|
|
1011
|
-
location: resolveRepoRootSync(options.cwd), kind: 'projectRootRead', env, cwd: options.cwd,
|
|
1012
|
-
});
|
|
1013
|
-
const projectLocationKey = createLifecycleProjectLocationKey(canonicalProjectRoot);
|
|
1014
|
-
for (const sourceEntry of lifecycleSources) {
|
|
1015
|
-
if (sourceEntry.name === 'codex' || sourceEntry.name === 'claude')
|
|
1016
|
-
continue;
|
|
1017
|
-
const sourceLifecycleRoot = path.join(lifecycleRoot, sourceEntry.name);
|
|
1018
|
-
if (!await inventoryCanonicalDirectory({
|
|
1019
|
-
errors,
|
|
1020
|
-
location: sourceLifecycleRoot,
|
|
1021
|
-
kind: 'lifecycleNamespaceValidation',
|
|
1022
|
-
env,
|
|
1023
|
-
cwd: options.cwd,
|
|
1024
|
-
}))
|
|
1025
|
-
continue;
|
|
1026
|
-
const relevantRoots = [];
|
|
1027
|
-
for (const platform of ['codex', 'claude']) {
|
|
1028
|
-
const userRoot = await inventoryCanonicalDescendantDirectory({
|
|
1029
|
-
root: sourceLifecycleRoot,
|
|
1030
|
-
segments: [platform, 'user', 'user'],
|
|
1031
|
-
errors,
|
|
1032
|
-
kind: 'lifecycleDirectoryRead',
|
|
1033
|
-
env,
|
|
1034
|
-
cwd: options.cwd,
|
|
1035
|
-
});
|
|
1036
|
-
if (userRoot)
|
|
1037
|
-
relevantRoots.push(userRoot);
|
|
1038
|
-
const projectRoot = await inventoryCanonicalDescendantDirectory({
|
|
1039
|
-
root: sourceLifecycleRoot,
|
|
1040
|
-
segments: [platform, 'project'],
|
|
1041
|
-
errors,
|
|
1042
|
-
kind: 'lifecycleDirectoryRead',
|
|
1043
|
-
env,
|
|
1044
|
-
cwd: options.cwd,
|
|
1045
|
-
});
|
|
1046
|
-
if (!projectRoot)
|
|
1047
|
-
continue;
|
|
1048
|
-
if (options.includeHistoricalProjects) {
|
|
1049
|
-
const projectLocations = await inventoryRead({
|
|
1050
|
-
operation: () => fs.readdir(projectRoot, { withFileTypes: true }),
|
|
1051
|
-
absent: [], errors, location: projectRoot, kind: 'lifecycleDirectoryRead', env, cwd: options.cwd,
|
|
1052
|
-
});
|
|
1053
|
-
for (const location of projectLocations) {
|
|
1054
|
-
const projectLocationRoot = path.join(projectRoot, location.name);
|
|
1055
|
-
if (await inventoryCanonicalDirectory({
|
|
1056
|
-
errors,
|
|
1057
|
-
location: projectLocationRoot,
|
|
1058
|
-
kind: 'lifecycleLocationValidation',
|
|
1059
|
-
env,
|
|
1060
|
-
cwd: options.cwd,
|
|
1061
|
-
}))
|
|
1062
|
-
relevantRoots.push(projectLocationRoot);
|
|
1063
|
-
}
|
|
1064
|
-
}
|
|
1065
|
-
else {
|
|
1066
|
-
const projectLocationRoot = path.join(projectRoot, projectLocationKey);
|
|
1067
|
-
if (await inventoryCanonicalDirectory({
|
|
1068
|
-
errors,
|
|
1069
|
-
location: projectLocationRoot,
|
|
1070
|
-
kind: 'lifecycleLocationValidation',
|
|
1071
|
-
env,
|
|
1072
|
-
cwd: options.cwd,
|
|
1073
|
-
}))
|
|
1074
|
-
relevantRoots.push(projectLocationRoot);
|
|
1075
|
-
}
|
|
1076
|
-
}
|
|
1077
|
-
for (const relevantRoot of relevantRoots) {
|
|
1078
|
-
const pluginEntries = await inventoryRead({
|
|
1079
|
-
operation: () => fs.readdir(relevantRoot, { withFileTypes: true }),
|
|
1080
|
-
absent: [], errors, location: relevantRoot, kind: 'lifecycleDirectoryRead', env, cwd: options.cwd,
|
|
1081
|
-
});
|
|
1082
|
-
const parts = path.relative(sourceLifecycleRoot, relevantRoot).split(path.sep);
|
|
1083
|
-
const platform = parts[0];
|
|
1084
|
-
const scope = parts[1];
|
|
1085
|
-
if ((platform !== 'codex' && platform !== 'claude')
|
|
1086
|
-
|| (scope !== 'user' && scope !== 'project'))
|
|
1087
|
-
continue;
|
|
1088
|
-
for (const pluginEntry of pluginEntries) {
|
|
1089
|
-
const pluginName = pluginEntry.name;
|
|
1090
|
-
const pluginRoot = path.join(relevantRoot, pluginName);
|
|
1091
|
-
if (!await inventoryCanonicalDirectory({
|
|
1092
|
-
errors,
|
|
1093
|
-
location: pluginRoot,
|
|
1094
|
-
kind: 'lifecyclePluginRootValidation',
|
|
1095
|
-
env,
|
|
1096
|
-
cwd: options.cwd,
|
|
1097
|
-
}))
|
|
1098
|
-
continue;
|
|
1099
|
-
const metadataPath = path.join(relevantRoot, pluginName, 'active', 'metadata.json');
|
|
1100
|
-
const raw = await inventoryRead({
|
|
1101
|
-
operation: () => fs.readJson(metadataPath), absent: null, errors,
|
|
1102
|
-
location: metadataPath, kind: 'lifecycleMetadataRead', env, cwd: options.cwd,
|
|
1103
|
-
});
|
|
1104
|
-
if (!raw)
|
|
1105
|
-
continue;
|
|
1106
|
-
if (raw.schemaVersion !== 2 || typeof raw.sourceIdentity !== 'string') {
|
|
1107
|
-
errors.push(inventoryError(new Error('Lifecycle active metadata is not valid schema 2 state.'), metadataPath, 'lifecycleMetadataValidation', env, options.cwd));
|
|
1108
|
-
continue;
|
|
1109
|
-
}
|
|
1110
|
-
const snapshot = await inventoryRead({
|
|
1111
|
-
operation: () => inspectLifecycleActiveSnapshotForInventory({
|
|
1112
|
-
sourceId: sourceEntry.name,
|
|
1113
|
-
sourceIdentity: raw.sourceIdentity,
|
|
1114
|
-
pluginName,
|
|
1115
|
-
platform,
|
|
1116
|
-
scope,
|
|
1117
|
-
cwd: scope === 'project' && typeof raw.projectKey === 'string'
|
|
1118
|
-
? raw.projectKey
|
|
1119
|
-
: options.cwd,
|
|
1120
|
-
env,
|
|
1121
|
-
loadPlugin: (bundleRoot) => readPluginManifest(bundleRoot, { mode: 'bundle' }),
|
|
1122
|
-
}),
|
|
1123
|
-
absent: null,
|
|
1124
|
-
errors,
|
|
1125
|
-
location: metadataPath,
|
|
1126
|
-
kind: 'lifecycleSnapshotValidation',
|
|
1127
|
-
env,
|
|
1128
|
-
cwd: options.cwd,
|
|
1129
|
-
});
|
|
1130
|
-
if (!snapshot)
|
|
1131
|
-
continue;
|
|
1132
|
-
references.push({
|
|
1133
|
-
kind: 'namespacedLifecycle',
|
|
1134
|
-
location: snapshot.activeRoot,
|
|
1135
|
-
sourceId: snapshot.metadata.sourceId,
|
|
1136
|
-
sourceIdentity: snapshot.metadata.sourceIdentity,
|
|
1137
|
-
pluginName: snapshot.metadata.pluginName,
|
|
1138
|
-
platform: snapshot.metadata.platform,
|
|
1139
|
-
scope: snapshot.metadata.scope,
|
|
1140
|
-
projectKey: snapshot.metadata.projectKey,
|
|
991
|
+
scope: configInventory.scope,
|
|
992
|
+
...(configInventory.projectKey ? { projectKey: configInventory.projectKey } : {}),
|
|
1141
993
|
});
|
|
1142
994
|
}
|
|
1143
995
|
}
|
|
@@ -1150,19 +1002,23 @@ export async function inventoryCatalogSourceReferences(options) {
|
|
|
1150
1002
|
[path.join(getClaudeHome(env), 'settings.json'), 'nativeStateRead', () => claudeSharedOwnerReferences(path.join(getClaudeHome(env), 'settings.json'), 'user', errors, env, options.cwd)],
|
|
1151
1003
|
[path.join(resolveRepoRootSync(options.cwd), '.codex', 'config.toml'), 'nativeStateRead', () => codexSharedOwnerReferences(path.join(resolveRepoRootSync(options.cwd), '.codex', 'config.toml'), 'project', errors, env, options.cwd)],
|
|
1152
1004
|
[path.join(resolveRepoRootSync(options.cwd), '.claude', 'settings.json'), 'nativeStateRead', () => claudeSharedOwnerReferences(path.join(resolveRepoRootSync(options.cwd), '.claude', 'settings.json'), 'project', errors, env, options.cwd)],
|
|
1153
|
-
[path.join(resolveRepoRootSync(options.cwd), '.codex', 'hooks.json'), 'nativeStateRead', () => codexHookOwnerReferences(path.join(resolveRepoRootSync(options.cwd), '.codex', 'hooks.json'), errors, env, options.cwd)],
|
|
1154
1005
|
]) {
|
|
1155
1006
|
references.push(...await inventoryRead({
|
|
1156
1007
|
operation, absent: [], errors, location, kind, env, cwd: options.cwd,
|
|
1157
1008
|
}));
|
|
1158
1009
|
}
|
|
1159
|
-
references.push(...await oldMarketplaceReferences(env, options.cwd, errors));
|
|
1010
|
+
references.push(...await oldMarketplaceReferences(env, options.cwd, errors, options.includePlatformHistoricalProjects === true));
|
|
1160
1011
|
const marketplacesRoot = path.join(awHome, 'marketplaces');
|
|
1161
1012
|
const codexConfigPath = path.join(getCodexHome(env), 'config.toml');
|
|
1162
1013
|
const codexConfig = await inventoryRead({
|
|
1163
1014
|
operation: () => readCodexConfigFile(codexConfigPath), absent: null, errors,
|
|
1164
1015
|
location: codexConfigPath, kind: 'nativeStateRead', env, cwd: options.cwd,
|
|
1165
1016
|
});
|
|
1017
|
+
const projectCodexConfigPath = path.join(resolveRepoRootSync(options.cwd), '.codex', 'config.toml');
|
|
1018
|
+
const projectCodexConfig = await inventoryRead({
|
|
1019
|
+
operation: () => readCodexConfigFile(projectCodexConfigPath), absent: null, errors,
|
|
1020
|
+
location: projectCodexConfigPath, kind: 'nativeStateRead', env, cwd: options.cwd,
|
|
1021
|
+
});
|
|
1166
1022
|
const userClaudeSettingsPath = path.join(getClaudeHome(env), 'settings.json');
|
|
1167
1023
|
const userClaudeSettings = await inventoryRead({
|
|
1168
1024
|
operation: () => readJsonFileIfExists(userClaudeSettingsPath), absent: null, errors,
|
|
@@ -1199,6 +1055,19 @@ export async function inventoryCatalogSourceReferences(options) {
|
|
|
1199
1055
|
scope: 'user',
|
|
1200
1056
|
});
|
|
1201
1057
|
}
|
|
1058
|
+
for (const pluginId of Object.keys(projectCodexConfig?.snapshot.plugins ?? {})) {
|
|
1059
|
+
const separator = pluginId.lastIndexOf('@');
|
|
1060
|
+
if (separator <= 0 || separator === pluginId.length - 1)
|
|
1061
|
+
continue;
|
|
1062
|
+
references.push({
|
|
1063
|
+
kind: 'namespacedMarketplace',
|
|
1064
|
+
location: projectCodexConfigPath,
|
|
1065
|
+
pluginName: pluginId.slice(0, separator),
|
|
1066
|
+
marketplaceName: pluginId.slice(separator + 1),
|
|
1067
|
+
platform: 'codex',
|
|
1068
|
+
scope: 'project',
|
|
1069
|
+
});
|
|
1070
|
+
}
|
|
1202
1071
|
for (const [location, registrations] of [
|
|
1203
1072
|
[codexConfigPath, Object.entries(codexConfig?.snapshot.marketplaces ?? {}).flatMap(([marketplaceName, marketplace]) => {
|
|
1204
1073
|
const sourceId = marketplace.sourceType === 'local' && !marketplace.sourcePointsToManifest
|
|
@@ -1293,43 +1162,22 @@ export async function inventoryCatalogSourceReferences(options) {
|
|
|
1293
1162
|
&& !codexMarketplace.sourcePointsToManifest
|
|
1294
1163
|
&& path.normalize(codexMarketplace.source ?? '') === path.normalize(marketplaceRoot);
|
|
1295
1164
|
const consumers = [];
|
|
1296
|
-
if (marketplaceName !== null
|
|
1297
|
-
&& (strictRoot !== null || (canonicalRoot && codexMarketplaceIsCanonical))) {
|
|
1298
|
-
let residueNames = [];
|
|
1299
|
-
try {
|
|
1300
|
-
residueNames = await discoverCodexNativeResidueNames({
|
|
1301
|
-
cwd: options.cwd,
|
|
1302
|
-
env,
|
|
1303
|
-
marketplaceName,
|
|
1304
|
-
marketplaceRoot,
|
|
1305
|
-
});
|
|
1306
|
-
}
|
|
1307
|
-
catch (error) {
|
|
1308
|
-
const residueError = error instanceof CodexNativeResidueProbeError ? error : null;
|
|
1309
|
-
const pluginName = residueError?.pluginName;
|
|
1310
|
-
errors.push(inventoryError(error, residueError?.location ?? configPath, 'nativeStateRead', env, options.cwd, {
|
|
1311
|
-
global: false,
|
|
1312
|
-
sourceId: sourceEntry.name,
|
|
1313
|
-
...(pluginName ? { pluginName } : {}),
|
|
1314
|
-
platform: 'codex',
|
|
1315
|
-
scope: 'user',
|
|
1316
|
-
}));
|
|
1317
|
-
}
|
|
1318
|
-
for (const pluginName of residueNames) {
|
|
1319
|
-
consumers.push({ pluginName, platform: 'codex', scope: 'user' });
|
|
1320
|
-
}
|
|
1321
|
-
}
|
|
1322
1165
|
if (marketplaceName !== null && (strictRoot !== null || codexMarketplaceIsCanonical)) {
|
|
1323
1166
|
for (const pluginId of Object.keys(codexConfig?.snapshot.plugins ?? {})) {
|
|
1324
1167
|
const pluginName = pluginNameFromMarketplaceId(pluginId, marketplaceName);
|
|
1325
1168
|
if (pluginName)
|
|
1326
1169
|
consumers.push({ pluginName, platform: 'codex', scope: 'user' });
|
|
1327
1170
|
}
|
|
1171
|
+
for (const pluginId of Object.keys(projectCodexConfig?.snapshot.plugins ?? {})) {
|
|
1172
|
+
const pluginName = pluginNameFromMarketplaceId(pluginId, marketplaceName);
|
|
1173
|
+
if (pluginName)
|
|
1174
|
+
consumers.push({ pluginName, platform: 'codex', scope: 'project' });
|
|
1175
|
+
}
|
|
1328
1176
|
}
|
|
1329
1177
|
if (marketplaceName !== null) {
|
|
1330
1178
|
consumers.push(...claudeConsumersFromSettings(userClaudeSettings, marketplaceName, 'user'), ...claudeConsumersFromSettings(projectClaudeSettings, marketplaceName, 'project'));
|
|
1331
1179
|
try {
|
|
1332
|
-
consumers.push(...claudeConsumersFromInstalled(claudeInstalled, marketplaceName, path.normalize(canonicalProjectRoot), options.
|
|
1180
|
+
consumers.push(...claudeConsumersFromInstalled(claudeInstalled, marketplaceName, path.normalize(canonicalProjectRoot), options.includePlatformHistoricalProjects === true));
|
|
1333
1181
|
}
|
|
1334
1182
|
catch (error) {
|
|
1335
1183
|
errors.push(inventoryError(error, claudeInstalledPath, 'nativeStateRead', env, options.cwd));
|
|
@@ -1379,7 +1227,7 @@ export class LegacyCatalogStateUnsupportedError extends Error {
|
|
|
1379
1227
|
code = 'legacyStateUnsupported';
|
|
1380
1228
|
inventory;
|
|
1381
1229
|
constructor(inventory) {
|
|
1382
|
-
super('legacyStateUnsupported: legacy owner
|
|
1230
|
+
super('legacyStateUnsupported: legacy owner or config state is unsupported. Use a new AW_HOME, or cleanup with the old CLI first.');
|
|
1383
1231
|
this.name = 'LegacyCatalogStateUnsupportedError';
|
|
1384
1232
|
this.inventory = inventory;
|
|
1385
1233
|
}
|