@lesliechan721/aw 0.1.0-beta.6 → 0.1.0-beta.60
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 -92
- package/dist/authoring/scripts/lib/skill-scaffold.mjs +99 -124
- 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 +552 -1142
- package/dist/authoring/scripts/validate-plugin.mjs.map +1 -1
- package/dist/native-runtime/reader-runtime.mjs +34 -0
- package/dist/native-runtime/reader.d.mts +6 -0
- package/dist/native-runtime/reader.mjs +11 -0
- 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 +19 -8
- 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/plugin-test-reporter.d.mts +2 -0
- package/dist/scripts/plugin-test-reporter.mjs +21 -0
- package/dist/scripts/plugin-test-reporter.mjs.map +1 -0
- package/dist/scripts/test-plugin-scripts.d.ts +5 -0
- package/dist/scripts/test-plugin-scripts.js +208 -89
- 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.d.ts +7 -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 +19 -1
- package/dist/src/authoring/workspace-commands.js +24 -5
- 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 +266 -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/managed-commands.d.ts +28 -0
- package/dist/src/commands/managed-commands.js +315 -0
- package/dist/src/commands/managed-commands.js.map +1 -0
- 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 +182 -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 +47 -0
- package/dist/src/commands/operation-planner.js +142 -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 +65 -4
- package/dist/src/commands/plugin-capabilities.js.map +1 -1
- package/dist/src/commands/rebuild-command.d.ts +78 -31
- package/dist/src/commands/rebuild-command.js +5229 -942
- package/dist/src/commands/rebuild-command.js.map +1 -1
- package/dist/src/commands/rebuild-integration.d.ts +143 -21
- package/dist/src/commands/rebuild-integration.js +3384 -1342
- package/dist/src/commands/rebuild-integration.js.map +1 -1
- package/dist/src/commands/rebuild-operations.d.ts +60 -30
- package/dist/src/commands/rebuild-operations.js +267 -320
- 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 +60 -0
- package/dist/src/commands/review-inspection.js +422 -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 +27 -53
- 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 +2785 -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 +254 -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 +136 -31
- package/dist/src/commands/write-commands.js.map +1 -1
- package/dist/src/constants.d.ts +7 -2
- package/dist/src/constants.js +7 -2
- package/dist/src/constants.js.map +1 -1
- package/dist/src/eval/manifest-v1.d.ts +68 -0
- package/dist/src/eval/manifest-v1.js +353 -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 +261 -109
- package/dist/src/generators/local-plugin.js.map +1 -1
- package/dist/src/generators/permissions.d.ts +5 -2
- package/dist/src/generators/permissions.js +28 -15
- package/dist/src/generators/permissions.js.map +1 -1
- package/dist/src/index.d.ts +10 -4
- package/dist/src/index.js +1774 -609
- package/dist/src/index.js.map +1 -1
- package/dist/src/output/command-receipt.d.ts +47 -46
- package/dist/src/output/command-receipt.js +277 -79
- 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 +15 -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 +186 -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 +26 -0
- package/dist/src/review/skill-materialization.js +217 -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 +19 -0
- package/dist/src/tui/config-leaf-editor.js +212 -0
- package/dist/src/tui/config-leaf-editor.js.map +1 -0
- package/dist/src/tui/config-references.d.ts +34 -0
- package/dist/src/tui/config-references.js +70 -0
- package/dist/src/tui/config-references.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 +9205 -1951
- 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 +3289 -388
- package/dist/src/tui/controller-runtime.js.map +1 -1
- package/dist/src/tui/controller.d.ts +622 -45
- package/dist/src/tui/controller.js +3589 -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 +595 -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 +224 -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 +1392 -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 +264 -21
- 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 +36 -7
- package/dist/src/utils/agent-version.js.map +1 -1
- package/dist/src/utils/artifact-plan.d.ts +8 -6
- package/dist/src/utils/artifact-plan.js +67 -13
- package/dist/src/utils/artifact-plan.js.map +1 -1
- package/dist/src/utils/artifact-renderer.d.ts +24 -10
- package/dist/src/utils/artifact-renderer.js +230 -220
- package/dist/src/utils/artifact-renderer.js.map +1 -1
- package/dist/src/utils/artifact-request.d.ts +32 -0
- package/dist/src/utils/artifact-request.js +90 -0
- package/dist/src/utils/artifact-request.js.map +1 -0
- package/dist/src/utils/artifact-sources.d.ts +4 -0
- package/dist/src/utils/artifact-sources.js +17 -0
- package/dist/src/utils/artifact-sources.js.map +1 -1
- 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 +29 -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/claude-skills-root.d.ts +8 -0
- package/dist/src/utils/claude-skills-root.js +76 -0
- package/dist/src/utils/claude-skills-root.js.map +1 -0
- 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 +735 -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-skills-root.d.ts +4 -0
- package/dist/src/utils/codex-skills-root.js +25 -0
- package/dist/src/utils/codex-skills-root.js.map +1 -0
- 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 +5 -0
- package/dist/src/utils/dynamic-skill-tree.js +56 -7
- 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 +27 -1
- package/dist/src/utils/local-marketplace.js +434 -84
- package/dist/src/utils/local-marketplace.js.map +1 -1
- package/dist/src/utils/managed-command-closure.d.ts +3 -0
- package/dist/src/utils/managed-command-closure.js +35 -0
- package/dist/src/utils/managed-command-closure.js.map +1 -0
- package/dist/src/utils/managed-command-evidence.d.ts +7 -0
- package/dist/src/utils/managed-command-evidence.js +86 -0
- package/dist/src/utils/managed-command-evidence.js.map +1 -0
- package/dist/src/utils/managed-command-materialization.d.ts +115 -0
- package/dist/src/utils/managed-command-materialization.js +359 -0
- package/dist/src/utils/managed-command-materialization.js.map +1 -0
- package/dist/src/utils/managed-command-runtime.d.ts +33 -0
- package/dist/src/utils/managed-command-runtime.js +121 -0
- package/dist/src/utils/managed-command-runtime.js.map +1 -0
- package/dist/src/utils/managed-command-store.d.ts +128 -0
- package/dist/src/utils/managed-command-store.js +589 -0
- package/dist/src/utils/managed-command-store.js.map +1 -0
- 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 +61 -7
- package/dist/src/utils/native-cli.js +426 -58
- package/dist/src/utils/native-cli.js.map +1 -1
- package/dist/src/utils/native-tool-context.d.ts +14 -0
- package/dist/src/utils/native-tool-context.js +38 -0
- package/dist/src/utils/native-tool-context.js.map +1 -0
- package/dist/src/utils/native-tool-review.d.ts +21 -0
- package/dist/src/utils/native-tool-review.js +102 -0
- package/dist/src/utils/native-tool-review.js.map +1 -0
- 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 +88 -20
- package/dist/src/utils/ownership.js +185 -223
- 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 +40 -0
- package/dist/src/utils/plugin-config-impact.js +373 -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 +1112 -298
- 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 +66 -125
- package/dist/src/utils/plugin-scripts.js +518 -526
- package/dist/src/utils/plugin-scripts.js.map +1 -1
- package/dist/src/utils/process-lock.js +14 -5
- package/dist/src/utils/process-lock.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/rendered-contract.js +18 -1
- package/dist/src/utils/rendered-contract.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/runtime-skill-closure.js +47 -6
- package/dist/src/utils/runtime-skill-closure.js.map +1 -1
- 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 +100 -9
- package/dist/vitest.config.js.map +1 -1
- package/package.json +31 -21
- 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/review-publication.d.ts +0 -99
- package/dist/src/commands/review-publication.js +0 -904
- package/dist/src/commands/review-publication.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
|
@@ -0,0 +1,589 @@
|
|
|
1
|
+
import crypto from 'node:crypto';
|
|
2
|
+
import * as fs from 'node:fs/promises';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
import { getCommandPackageId, getPluginCommandId, isManagedCommandId, normalizeCommandIdentity, normalizeCommandLaunch, normalizeInstalledCommandProducer as normalizeCoreProducer, normalizeUserCommandDefinition, normalizeProducerIdentity, COMMAND_PRODUCER_RECORD_FILE, validateNativeToolClosureFiles, } from '@lesliechan721/aw-plugin-core/manifest';
|
|
5
|
+
import { verifyManagedCommandArtifactEvidence } from './managed-command-evidence.js';
|
|
6
|
+
import { atomicReplaceSafeFile } from './safe-fs.js';
|
|
7
|
+
import { canonicalizePathThroughExistingAncestor, ensureRegularDirectoryPath, resolveAwHome, } from './state-paths.js';
|
|
8
|
+
export const COMMAND_PRODUCER_RECORD = COMMAND_PRODUCER_RECORD_FILE;
|
|
9
|
+
const USER_ID = /^cmdu_[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/u;
|
|
10
|
+
const PACKAGE_ID = /^pkg_[0-9a-f]{64}$/u;
|
|
11
|
+
export class ManagedCommandError extends Error {
|
|
12
|
+
code;
|
|
13
|
+
argumentError;
|
|
14
|
+
constructor(code, message, argumentError = false) {
|
|
15
|
+
super(message);
|
|
16
|
+
this.code = code;
|
|
17
|
+
this.argumentError = argumentError;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
function fail(code, message) { throw new ManagedCommandError(code, message); }
|
|
21
|
+
function object(value, keys, code) {
|
|
22
|
+
if (!value || typeof value !== 'object' || Array.isArray(value)
|
|
23
|
+
|| Object.keys(value).some((key) => !keys.includes(key))
|
|
24
|
+
|| keys.some((key) => !Object.hasOwn(value, key)))
|
|
25
|
+
fail(code, 'The managed command record has an invalid shape.');
|
|
26
|
+
return value;
|
|
27
|
+
}
|
|
28
|
+
function equal(left, right) {
|
|
29
|
+
if (left === right)
|
|
30
|
+
return true;
|
|
31
|
+
if (!left || !right || typeof left !== 'object' || typeof right !== 'object')
|
|
32
|
+
return false;
|
|
33
|
+
const a = Object.keys(left).sort();
|
|
34
|
+
const b = Object.keys(right).sort();
|
|
35
|
+
return a.length === b.length && a.every((key, index) => key === b[index]
|
|
36
|
+
&& equal(left[key], right[key]));
|
|
37
|
+
}
|
|
38
|
+
export function managedCommandDiagnostic(error, subject) {
|
|
39
|
+
return {
|
|
40
|
+
code: error instanceof ManagedCommandError ? error.code : 'commandResourceInvalid',
|
|
41
|
+
message: error instanceof ManagedCommandError ? error.message : 'The managed command resource could not be read or written.',
|
|
42
|
+
...(subject ? { subject } : {}),
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
export async function managedCommandRoot(env = process.env) {
|
|
46
|
+
return path.join(await canonicalizePathThroughExistingAncestor(resolveAwHome(env)), 'commands');
|
|
47
|
+
}
|
|
48
|
+
async function safePath(root, target) {
|
|
49
|
+
const relative = path.relative(path.resolve(root), path.resolve(target));
|
|
50
|
+
if (relative === '..' || relative.startsWith(`..${path.sep}`) || path.isAbsolute(relative))
|
|
51
|
+
fail('commandResourceInvalid', 'The managed command path escapes its allowed root.');
|
|
52
|
+
let current = path.resolve(root);
|
|
53
|
+
for (const segment of ['', ...relative.split(path.sep).filter(Boolean)]) {
|
|
54
|
+
if (segment)
|
|
55
|
+
current = path.join(current, segment);
|
|
56
|
+
const stat = await fs.lstat(current).catch((error) => {
|
|
57
|
+
if (error.code === 'ENOENT')
|
|
58
|
+
return null;
|
|
59
|
+
throw error;
|
|
60
|
+
});
|
|
61
|
+
if (stat?.isSymbolicLink() || (current !== path.resolve(target) && stat && !stat.isDirectory()))
|
|
62
|
+
fail('commandResourceInvalid', 'The managed command path is not a regular owned path.');
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
async function readJson(root, target, code) {
|
|
66
|
+
await safePath(root, target);
|
|
67
|
+
try {
|
|
68
|
+
if (!(await fs.lstat(target)).isFile())
|
|
69
|
+
fail(code, 'The managed command record must be a regular file.');
|
|
70
|
+
return JSON.parse(await fs.readFile(target, 'utf8'));
|
|
71
|
+
}
|
|
72
|
+
catch (error) {
|
|
73
|
+
if (error instanceof ManagedCommandError)
|
|
74
|
+
throw error;
|
|
75
|
+
fail(code, 'The managed command record is missing or invalid.');
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
async function writeJson(root, target, value) {
|
|
79
|
+
await ensureRegularDirectoryPath(root, 'Managed commands root');
|
|
80
|
+
await atomicReplaceSafeFile({ allowedRoot: root, filePath: target, content: `${JSON.stringify(value, null, 2)}\n`, label: 'Managed command record' });
|
|
81
|
+
}
|
|
82
|
+
export function assertUserCommandId(id) {
|
|
83
|
+
if (/^cmdp_[0-9a-f]{16}$/u.test(id))
|
|
84
|
+
fail('commandOwnerMismatch', 'Plugin commands must be maintained with their producer sync, reinstall, or package remove command.');
|
|
85
|
+
if (!USER_ID.test(id))
|
|
86
|
+
throw new ManagedCommandError('invalidArguments', 'A canonical user command ID is required.', true);
|
|
87
|
+
}
|
|
88
|
+
export function validateManagedCommandName(value) {
|
|
89
|
+
if (typeof value !== 'string' || !value.trim() || [...value].length > 128
|
|
90
|
+
|| /[\u0000-\u001f\u007f-\u009f]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/u.test(value)) {
|
|
91
|
+
throw new ManagedCommandError('invalidArguments', 'The command name must contain 1–128 characters and no control characters.', true);
|
|
92
|
+
}
|
|
93
|
+
return value;
|
|
94
|
+
}
|
|
95
|
+
export function parseManagedCommandLaunch(value) {
|
|
96
|
+
try {
|
|
97
|
+
return normalizeCommandLaunch(value);
|
|
98
|
+
}
|
|
99
|
+
catch {
|
|
100
|
+
fail('commandDefinitionInvalid', 'The managed command launch definition is invalid.');
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
async function assertUserOwner(root, id) {
|
|
104
|
+
assertUserCommandId(id);
|
|
105
|
+
const userRoot = path.join(root, 'users', id);
|
|
106
|
+
await safePath(root, userRoot);
|
|
107
|
+
if (!(await fs.lstat(userRoot).catch((error) => {
|
|
108
|
+
if (error.code === 'ENOENT')
|
|
109
|
+
return null;
|
|
110
|
+
throw error;
|
|
111
|
+
})))
|
|
112
|
+
fail('commandNotFound', 'The user command ID is not installed.');
|
|
113
|
+
const owner = object(await readJson(root, path.join(userRoot, 'owner.json'), 'commandOwnerMismatch'), ['schemaVersion', 'owner', 'kind', 'id'], 'commandOwnerMismatch');
|
|
114
|
+
if (owner.schemaVersion !== 1 || owner.owner !== 'agent-workflows' || owner.kind !== 'user-command' || owner.id !== id) {
|
|
115
|
+
fail('commandOwnerMismatch', 'The user command owner marker does not match this directory.');
|
|
116
|
+
}
|
|
117
|
+
return userRoot;
|
|
118
|
+
}
|
|
119
|
+
export async function readUserCommandDefinition(id, env = process.env) {
|
|
120
|
+
const root = await managedCommandRoot(env);
|
|
121
|
+
const userRoot = await assertUserOwner(root, id);
|
|
122
|
+
const value = await readJson(root, path.join(userRoot, 'definition.json'), 'commandDefinitionInvalid');
|
|
123
|
+
try {
|
|
124
|
+
const definition = normalizeUserCommandDefinition(value);
|
|
125
|
+
if (definition.id !== id || !equal(value, definition))
|
|
126
|
+
fail('commandDefinitionInvalid', 'The stored user command definition is not complete or does not match its directory.');
|
|
127
|
+
return definition;
|
|
128
|
+
}
|
|
129
|
+
catch {
|
|
130
|
+
fail('commandDefinitionInvalid', 'The stored user command definition is invalid.');
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
function contains(root, target) {
|
|
134
|
+
const relative = path.relative(root, target);
|
|
135
|
+
return relative === '' || (!relative.startsWith(`..${path.sep}`) && relative !== '..' && !path.isAbsolute(relative));
|
|
136
|
+
}
|
|
137
|
+
export async function validateManagedCommandResource(resourceRoot, launch) {
|
|
138
|
+
const root = path.resolve(resourceRoot);
|
|
139
|
+
await safePath(path.dirname(root), root);
|
|
140
|
+
async function visit(directory) {
|
|
141
|
+
const stat = await fs.lstat(directory).catch(() => null);
|
|
142
|
+
if (!stat?.isDirectory() || stat.isSymbolicLink())
|
|
143
|
+
fail('commandResourceInvalid', 'The command resource root must be a regular directory.');
|
|
144
|
+
for (const entry of await fs.readdir(directory, { withFileTypes: true })) {
|
|
145
|
+
if (entry.name === '.git' || entry.isSymbolicLink() || (!entry.isDirectory() && !entry.isFile())) {
|
|
146
|
+
fail('commandResourceInvalid', 'Command resources cannot contain links, special nodes, or .git directories.');
|
|
147
|
+
}
|
|
148
|
+
if (entry.isDirectory())
|
|
149
|
+
await visit(path.join(directory, entry.name));
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
await visit(root);
|
|
153
|
+
if (!launch)
|
|
154
|
+
return;
|
|
155
|
+
const entry = path.resolve(root, launch.entry);
|
|
156
|
+
if (!contains(root, entry) || entry === root)
|
|
157
|
+
fail('commandResourceInvalid', 'The command entry escapes its resource root.');
|
|
158
|
+
await safePath(root, entry);
|
|
159
|
+
const stat = await fs.lstat(entry).catch(() => null);
|
|
160
|
+
if (!stat?.isFile())
|
|
161
|
+
fail('commandResourceInvalid', 'The command entry is missing or is not a regular file.');
|
|
162
|
+
try {
|
|
163
|
+
await fs.access(entry, fs.constants.R_OK);
|
|
164
|
+
}
|
|
165
|
+
catch {
|
|
166
|
+
fail('commandResourceInvalid', 'The command entry cannot be read.');
|
|
167
|
+
}
|
|
168
|
+
if (launch.runner === 'executable') {
|
|
169
|
+
if (process.platform === 'win32') {
|
|
170
|
+
if (path.extname(entry).toLowerCase() !== '.exe')
|
|
171
|
+
fail('commandRunnerUnsupported', 'Windows commands require a directly runnable native .exe entry.');
|
|
172
|
+
const handle = await fs.open(entry, 'r');
|
|
173
|
+
try {
|
|
174
|
+
const magic = Buffer.alloc(2);
|
|
175
|
+
await handle.read(magic, 0, 2, 0);
|
|
176
|
+
if (magic.toString('ascii') !== 'MZ')
|
|
177
|
+
fail('commandRunnerUnsupported', 'The command entry is not a native Windows executable.');
|
|
178
|
+
}
|
|
179
|
+
finally {
|
|
180
|
+
await handle.close();
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
else if ((stat.mode & 0o111) === 0)
|
|
184
|
+
fail('commandRunnerUnsupported', 'The command executable has no execute permission.');
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
export async function copyManagedCommandDirectory(sourceDirectory, destination, env = process.env, options = {}) {
|
|
188
|
+
const source = path.resolve(sourceDirectory);
|
|
189
|
+
const stat = await fs.lstat(source).catch(() => null);
|
|
190
|
+
if (!stat?.isDirectory() || stat.isSymbolicLink())
|
|
191
|
+
fail('commandResourceInvalid', 'The command source must be a regular directory.');
|
|
192
|
+
const canonicalSource = await fs.realpath(source);
|
|
193
|
+
const awHome = await canonicalizePathThroughExistingAncestor(resolveAwHome(env));
|
|
194
|
+
const canonicalDestination = await canonicalizePathThroughExistingAncestor(destination);
|
|
195
|
+
if (contains(canonicalSource, awHome) || (!options.trustedPluginSource && contains(awHome, canonicalSource))
|
|
196
|
+
|| contains(canonicalSource, canonicalDestination) || contains(canonicalDestination, canonicalSource)) {
|
|
197
|
+
fail('commandResourceInvalid', 'The command source overlaps AW_HOME or the installation target.');
|
|
198
|
+
}
|
|
199
|
+
await validateManagedCommandResource(canonicalSource);
|
|
200
|
+
await fs.mkdir(destination, { recursive: true });
|
|
201
|
+
async function copy(sourceRoot, targetRoot) {
|
|
202
|
+
for (const entry of await fs.readdir(sourceRoot, { withFileTypes: true })) {
|
|
203
|
+
const sourcePath = path.join(sourceRoot, entry.name);
|
|
204
|
+
const targetPath = path.join(targetRoot, entry.name);
|
|
205
|
+
const sourceStat = await fs.lstat(sourcePath);
|
|
206
|
+
if (entry.name === '.git' || entry.name === COMMAND_PRODUCER_RECORD || entry.name === '.agent-workflows-owner.json' || sourceStat.isSymbolicLink())
|
|
207
|
+
fail('commandResourceInvalid', 'The command source contains a reserved path or a link.');
|
|
208
|
+
if (sourceStat.isDirectory()) {
|
|
209
|
+
await fs.mkdir(targetPath);
|
|
210
|
+
await copy(sourcePath, targetPath);
|
|
211
|
+
}
|
|
212
|
+
else if (sourceStat.isFile()) {
|
|
213
|
+
await fs.copyFile(sourcePath, targetPath, fs.constants.COPYFILE_EXCL);
|
|
214
|
+
await fs.chmod(targetPath, sourceStat.mode & 0o777);
|
|
215
|
+
}
|
|
216
|
+
else
|
|
217
|
+
fail('commandResourceInvalid', 'The command source contains a special node.');
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
await copy(canonicalSource, destination);
|
|
221
|
+
await validateManagedCommandResource(destination);
|
|
222
|
+
}
|
|
223
|
+
export async function installUserCommand(options) {
|
|
224
|
+
const root = await managedCommandRoot(options.env);
|
|
225
|
+
const id = `cmdu_${crypto.randomUUID()}`;
|
|
226
|
+
const userRoot = path.join(root, 'users', id);
|
|
227
|
+
const revision = crypto.randomUUID();
|
|
228
|
+
const name = validateManagedCommandName(options.name);
|
|
229
|
+
const launch = parseManagedCommandLaunch(options.launch);
|
|
230
|
+
await ensureRegularDirectoryPath(userRoot, 'User command root');
|
|
231
|
+
await writeJson(root, path.join(userRoot, 'owner.json'), { schemaVersion: 1, owner: 'agent-workflows', kind: 'user-command', id });
|
|
232
|
+
try {
|
|
233
|
+
const resourceRoot = path.join(userRoot, 'packages', revision);
|
|
234
|
+
await copyManagedCommandDirectory(options.sourceDirectory, resourceRoot, options.env);
|
|
235
|
+
await validateManagedCommandResource(resourceRoot, launch);
|
|
236
|
+
await writeJson(root, path.join(userRoot, 'definition.json'), { schemaVersion: 1, id, name, packageRevision: revision, launch });
|
|
237
|
+
return id;
|
|
238
|
+
}
|
|
239
|
+
catch (error) {
|
|
240
|
+
await safePath(root, userRoot);
|
|
241
|
+
await fs.rm(userRoot, { recursive: true, force: true });
|
|
242
|
+
throw error;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
export async function updateUserCommand(options) {
|
|
246
|
+
const old = await readUserCommandDefinition(options.id, options.env);
|
|
247
|
+
const root = await managedCommandRoot(options.env);
|
|
248
|
+
const userRoot = await assertUserOwner(root, options.id);
|
|
249
|
+
const revision = crypto.randomUUID();
|
|
250
|
+
const resourceRoot = path.join(userRoot, 'packages', revision);
|
|
251
|
+
const launch = parseManagedCommandLaunch({ ...old.launch, ...options.launch });
|
|
252
|
+
const name = options.name === undefined ? old.name : validateManagedCommandName(options.name);
|
|
253
|
+
try {
|
|
254
|
+
await copyManagedCommandDirectory(options.sourceDirectory, resourceRoot, options.env);
|
|
255
|
+
await validateManagedCommandResource(resourceRoot, launch);
|
|
256
|
+
await writeJson(root, path.join(userRoot, 'definition.json'), { ...old, name, launch, packageRevision: revision });
|
|
257
|
+
}
|
|
258
|
+
catch (error) {
|
|
259
|
+
await safePath(root, resourceRoot);
|
|
260
|
+
await fs.rm(resourceRoot, { recursive: true, force: true });
|
|
261
|
+
throw error;
|
|
262
|
+
}
|
|
263
|
+
const oldRoot = path.join(userRoot, 'packages', old.packageRevision);
|
|
264
|
+
try {
|
|
265
|
+
await safePath(root, oldRoot);
|
|
266
|
+
await fs.rm(oldRoot, { recursive: true, force: true });
|
|
267
|
+
return { errors: [], recoveryActions: [] };
|
|
268
|
+
}
|
|
269
|
+
catch {
|
|
270
|
+
return {
|
|
271
|
+
errors: [{ code: 'commandResourceInvalid', message: 'The new command revision is active, but the old revision could not be removed.' }],
|
|
272
|
+
recoveryActions: [`aw command remove ${options.id} --force --yes`],
|
|
273
|
+
};
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
export async function removeUserCommand(id, env = process.env) {
|
|
277
|
+
const root = await managedCommandRoot(env);
|
|
278
|
+
const userRoot = await assertUserOwner(root, id);
|
|
279
|
+
await fs.rm(userRoot, { recursive: true, force: true });
|
|
280
|
+
}
|
|
281
|
+
export function normalizeInstalledCommandProducer(value) {
|
|
282
|
+
try {
|
|
283
|
+
const record = normalizeCoreProducer(value);
|
|
284
|
+
if (!equal(value, record))
|
|
285
|
+
fail('commandBindingInvalid', 'The installed producer must contain all normalized fields.');
|
|
286
|
+
return record;
|
|
287
|
+
}
|
|
288
|
+
catch {
|
|
289
|
+
fail('commandBindingInvalid', 'The installed command producer record is invalid.');
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
export async function readInstalledCommandProducer(resourceRoot) {
|
|
293
|
+
const record = normalizeInstalledCommandProducer(await readJson(resourceRoot, path.join(resourceRoot, COMMAND_PRODUCER_RECORD), 'commandBindingInvalid'));
|
|
294
|
+
if (record.nativeTools) {
|
|
295
|
+
try {
|
|
296
|
+
await validateNativeToolClosureFiles(resourceRoot, record.nativeTools);
|
|
297
|
+
}
|
|
298
|
+
catch {
|
|
299
|
+
fail('commandBindingInvalid', 'The installed native tool closure does not match its files. Run producer sync or reinstall.');
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
return record;
|
|
303
|
+
}
|
|
304
|
+
export async function writeInstalledCommandProducer(resourceRoot, record) {
|
|
305
|
+
await writeJson(resourceRoot, path.join(resourceRoot, COMMAND_PRODUCER_RECORD), normalizeInstalledCommandProducer(record));
|
|
306
|
+
}
|
|
307
|
+
async function readBinding(root, id) {
|
|
308
|
+
const value = object(await readJson(root, path.join(root, 'bindings', `${id}.json`), 'commandBindingInvalid'), ['schemaVersion', 'id', 'identity', 'resourceRoot'], 'commandBindingInvalid');
|
|
309
|
+
let identity;
|
|
310
|
+
try {
|
|
311
|
+
identity = normalizeCommandIdentity(value.identity);
|
|
312
|
+
}
|
|
313
|
+
catch {
|
|
314
|
+
fail('commandBindingInvalid', 'The command binding identity is invalid.');
|
|
315
|
+
}
|
|
316
|
+
if (value.schemaVersion !== 1 || value.id !== id || getPluginCommandId(identity) !== id || typeof value.resourceRoot !== 'string' || !path.isAbsolute(value.resourceRoot))
|
|
317
|
+
fail('commandIdentityConflict', 'The command binding does not match its identity.');
|
|
318
|
+
return { schemaVersion: 1, id, identity, resourceRoot: value.resourceRoot };
|
|
319
|
+
}
|
|
320
|
+
async function entriesAt(directory) {
|
|
321
|
+
try {
|
|
322
|
+
return await fs.readdir(directory);
|
|
323
|
+
}
|
|
324
|
+
catch (error) {
|
|
325
|
+
if (error.code === 'ENOENT')
|
|
326
|
+
return [];
|
|
327
|
+
throw error;
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
export async function revokeManagedCommandBindings(producer, env = process.env) {
|
|
331
|
+
const root = await managedCommandRoot(env);
|
|
332
|
+
const removed = [];
|
|
333
|
+
await safePath(root, path.join(root, 'bindings'));
|
|
334
|
+
for (const file of await entriesAt(path.join(root, 'bindings'))) {
|
|
335
|
+
if (!/^cmdp_[0-9a-f]{16}\.json$/u.test(file))
|
|
336
|
+
continue;
|
|
337
|
+
const id = file.slice(0, -5);
|
|
338
|
+
try {
|
|
339
|
+
const binding = await readBinding(root, id);
|
|
340
|
+
if (!equal(binding.identity.producer, producer))
|
|
341
|
+
continue;
|
|
342
|
+
await fs.unlink(path.join(root, 'bindings', file));
|
|
343
|
+
removed.push(id);
|
|
344
|
+
}
|
|
345
|
+
catch { /* Corrupt indexes cannot authorize removal of other producers. */ }
|
|
346
|
+
}
|
|
347
|
+
return removed;
|
|
348
|
+
}
|
|
349
|
+
async function prepareManagedCommandIdentities(root, records) {
|
|
350
|
+
const candidates = new Map();
|
|
351
|
+
for (const record of records)
|
|
352
|
+
for (const set of record.sets)
|
|
353
|
+
for (const entry of set.entries) {
|
|
354
|
+
const identity = { schemaVersion: 1, producer: record.producer, set: set.set, key: entry.key, variant: entry.variant };
|
|
355
|
+
const id = getPluginCommandId(identity);
|
|
356
|
+
const candidate = candidates.get(id);
|
|
357
|
+
if (candidate && !equal(candidate, identity))
|
|
358
|
+
fail('commandIdentityConflict', 'commandIdentityConflict: the command ID already belongs to another identity.');
|
|
359
|
+
const existingPath = path.join(root, 'bindings', `${id}.json`);
|
|
360
|
+
if (await fs.lstat(existingPath).catch(() => null)) {
|
|
361
|
+
const existing = await readBinding(root, id);
|
|
362
|
+
if (!equal(existing.identity, identity))
|
|
363
|
+
fail('commandIdentityConflict', 'commandIdentityConflict: the command ID already belongs to another identity.');
|
|
364
|
+
}
|
|
365
|
+
candidates.set(id, identity);
|
|
366
|
+
}
|
|
367
|
+
return candidates;
|
|
368
|
+
}
|
|
369
|
+
export async function assertManagedCommandBindingIdentities(options) {
|
|
370
|
+
if (options.producers.length === 0)
|
|
371
|
+
return;
|
|
372
|
+
const records = options.producers.map((record) => normalizeInstalledCommandProducer({ schemaVersion: 1, producer: record.producer, sets: record.sets, ...(record.nativeTools ? { nativeTools: record.nativeTools } : {}) }));
|
|
373
|
+
await prepareManagedCommandIdentities(await managedCommandRoot(options.env), records);
|
|
374
|
+
}
|
|
375
|
+
export async function publishManagedCommandBindings(options) {
|
|
376
|
+
const record = normalizeInstalledCommandProducer({ schemaVersion: 1, producer: options.producer, sets: options.sets, ...(options.nativeTools ? { nativeTools: options.nativeTools } : {}) });
|
|
377
|
+
const root = await managedCommandRoot(options.env);
|
|
378
|
+
const resourceRoot = path.resolve(options.resourceRoot);
|
|
379
|
+
for (const set of record.sets)
|
|
380
|
+
for (const entry of set.entries)
|
|
381
|
+
await validateManagedCommandResource(resourceRoot, entry);
|
|
382
|
+
const candidates = await prepareManagedCommandIdentities(root, [record]);
|
|
383
|
+
if (record.nativeTools)
|
|
384
|
+
await validateNativeToolClosureFiles(resourceRoot, record.nativeTools);
|
|
385
|
+
await writeInstalledCommandProducer(resourceRoot, record);
|
|
386
|
+
await revokeManagedCommandBindings(record.producer, options.env);
|
|
387
|
+
for (const [id, identity] of candidates)
|
|
388
|
+
await writeJson(root, path.join(root, 'bindings', `${id}.json`), { schemaVersion: 1, id, identity, resourceRoot });
|
|
389
|
+
return [...candidates.keys()];
|
|
390
|
+
}
|
|
391
|
+
export async function readManagedCommandPackageOwner(id, env = process.env) {
|
|
392
|
+
if (!PACKAGE_ID.test(id))
|
|
393
|
+
throw new ManagedCommandError('invalidArguments', 'A canonical package ID is required.', true);
|
|
394
|
+
const root = await managedCommandRoot(env);
|
|
395
|
+
const packageRoot = path.join(root, 'packages', id);
|
|
396
|
+
const owner = object(await readJson(root, path.join(packageRoot, 'owner.json'), 'commandOwnerMismatch'), ['schemaVersion', 'owner', 'kind', 'producer'], 'commandOwnerMismatch');
|
|
397
|
+
let producer;
|
|
398
|
+
try {
|
|
399
|
+
producer = normalizeProducerIdentity(owner.producer);
|
|
400
|
+
}
|
|
401
|
+
catch {
|
|
402
|
+
fail('commandOwnerMismatch', 'The package owner identity is invalid.');
|
|
403
|
+
}
|
|
404
|
+
if (owner.schemaVersion !== 1 || owner.owner !== 'agent-workflows' || owner.kind !== 'plugin-command-package' || producer.kind !== 'package' || getCommandPackageId(producer) !== id)
|
|
405
|
+
fail('commandOwnerMismatch', 'The package owner marker does not match its directory.');
|
|
406
|
+
return { producer, resourceRoot: path.join(packageRoot, 'resource') };
|
|
407
|
+
}
|
|
408
|
+
export async function removeManagedCommandPackage(id, env = process.env) {
|
|
409
|
+
const { producer } = await readManagedCommandPackageOwner(id, env);
|
|
410
|
+
const root = await managedCommandRoot(env);
|
|
411
|
+
const removedCommandIds = await revokeManagedCommandBindings(producer, env);
|
|
412
|
+
await fs.rm(path.join(root, 'packages', id), { recursive: true, force: true });
|
|
413
|
+
return { producer, removedCommandIds };
|
|
414
|
+
}
|
|
415
|
+
export async function syncManagedCommandPackage(options) {
|
|
416
|
+
const producer = normalizeProducerIdentity(options.producer);
|
|
417
|
+
if (producer.kind !== 'package')
|
|
418
|
+
fail('commandOwnerMismatch', 'A package producer is required.');
|
|
419
|
+
const root = await managedCommandRoot(options.env);
|
|
420
|
+
const id = getCommandPackageId(producer);
|
|
421
|
+
const packagesRoot = path.join(root, 'packages');
|
|
422
|
+
await ensureRegularDirectoryPath(packagesRoot, 'Managed command packages');
|
|
423
|
+
const packageRoot = path.join(packagesRoot, id);
|
|
424
|
+
const staging = path.join(packagesRoot, `.${id}.${crypto.randomUUID()}.tmp`);
|
|
425
|
+
if (await fs.lstat(packageRoot).catch(() => null))
|
|
426
|
+
await readManagedCommandPackageOwner(id, options.env);
|
|
427
|
+
await ensureRegularDirectoryPath(staging, 'Managed command package staging');
|
|
428
|
+
try {
|
|
429
|
+
const resourceRoot = path.join(staging, 'resource');
|
|
430
|
+
await copyManagedCommandDirectory(options.sourceDirectory, resourceRoot, options.env);
|
|
431
|
+
const record = normalizeInstalledCommandProducer({ schemaVersion: 1, producer, sets: options.sets, ...(options.nativeTools ? { nativeTools: options.nativeTools } : {}) });
|
|
432
|
+
for (const set of record.sets)
|
|
433
|
+
for (const entry of set.entries)
|
|
434
|
+
await validateManagedCommandResource(resourceRoot, entry);
|
|
435
|
+
await prepareManagedCommandIdentities(root, [record]);
|
|
436
|
+
if (record.nativeTools)
|
|
437
|
+
await validateNativeToolClosureFiles(resourceRoot, record.nativeTools);
|
|
438
|
+
await writeInstalledCommandProducer(resourceRoot, record);
|
|
439
|
+
await writeJson(root, path.join(staging, 'owner.json'), { schemaVersion: 1, owner: 'agent-workflows', kind: 'plugin-command-package', producer });
|
|
440
|
+
const removed = await revokeManagedCommandBindings(producer, options.env);
|
|
441
|
+
if (await fs.lstat(packageRoot).catch(() => null)) {
|
|
442
|
+
await readManagedCommandPackageOwner(id, options.env);
|
|
443
|
+
await fs.rm(packageRoot, { recursive: true, force: true });
|
|
444
|
+
}
|
|
445
|
+
await fs.rename(staging, packageRoot);
|
|
446
|
+
const installedRoot = path.join(packageRoot, 'resource');
|
|
447
|
+
const commandIds = await publishManagedCommandBindings({ producer, resourceRoot: installedRoot, sets: record.sets, nativeTools: record.nativeTools, env: options.env });
|
|
448
|
+
return { id, resourceRoot: installedRoot, commandIds, removedCommandIds: removed.filter((commandId) => !commandIds.includes(commandId)) };
|
|
449
|
+
}
|
|
450
|
+
finally {
|
|
451
|
+
await safePath(root, staging);
|
|
452
|
+
await fs.rm(staging, { recursive: true, force: true });
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
export async function assertManagedCommandProducerOwnership(producer, resourceRoot, env = process.env) {
|
|
456
|
+
if (producer.kind === 'package') {
|
|
457
|
+
const owned = await readManagedCommandPackageOwner(getCommandPackageId(producer), env);
|
|
458
|
+
if (!equal(owned.producer, producer) || owned.resourceRoot !== resourceRoot)
|
|
459
|
+
fail('commandOwnerMismatch', 'The command package root does not match its owner.');
|
|
460
|
+
return;
|
|
461
|
+
}
|
|
462
|
+
try {
|
|
463
|
+
await verifyManagedCommandArtifactEvidence({ producer, resourceRoot, env });
|
|
464
|
+
}
|
|
465
|
+
catch {
|
|
466
|
+
fail('commandOwnerMismatch', 'The command producer has no matching live ownership or native receipt evidence.');
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
export async function resolveManagedCommand(id, env = process.env) {
|
|
470
|
+
if (!isManagedCommandId(id))
|
|
471
|
+
throw new ManagedCommandError('invalidArguments', 'A canonical managed command ID is required.', true);
|
|
472
|
+
const root = await managedCommandRoot(env);
|
|
473
|
+
if (USER_ID.test(id)) {
|
|
474
|
+
if (!(await fs.lstat(path.join(root, 'users', id)).catch(() => null)))
|
|
475
|
+
fail('commandNotFound', 'The command ID is not installed.');
|
|
476
|
+
const definition = await readUserCommandDefinition(id, env);
|
|
477
|
+
const resourceRoot = path.join(root, 'users', id, 'packages', definition.packageRevision);
|
|
478
|
+
await safePath(root, resourceRoot);
|
|
479
|
+
await validateManagedCommandResource(resourceRoot, definition.launch);
|
|
480
|
+
return { resourceRoot, launch: definition.launch, view: { id, name: definition.name, owner: { kind: 'user' }, availability: 'ready', resourceRoot, launch: definition.launch, errors: [], recoveryActions: [] } };
|
|
481
|
+
}
|
|
482
|
+
if (!(await fs.lstat(path.join(root, 'bindings', `${id}.json`)).catch(() => null)))
|
|
483
|
+
fail('commandNotFound', 'The command binding is missing. Use sync, reinstall, or package sync.');
|
|
484
|
+
const binding = await readBinding(root, id);
|
|
485
|
+
await assertManagedCommandProducerOwnership(binding.identity.producer, binding.resourceRoot, env);
|
|
486
|
+
const record = await readInstalledCommandProducer(binding.resourceRoot);
|
|
487
|
+
if (!equal(record.producer, binding.identity.producer))
|
|
488
|
+
fail('commandIdentityConflict', 'The installed producer does not match the command binding.');
|
|
489
|
+
const set = record.sets.find((candidate) => candidate.set === binding.identity.set && candidate.state === 'present');
|
|
490
|
+
const entry = set?.entries.find((candidate) => candidate.key === binding.identity.key && candidate.variant === binding.identity.variant);
|
|
491
|
+
if (!entry)
|
|
492
|
+
fail('commandBindingInvalid', 'The command is absent or disabled in the installed producer.');
|
|
493
|
+
const { key: _key, variant: _variant, ...launch } = entry;
|
|
494
|
+
await validateManagedCommandResource(binding.resourceRoot, launch);
|
|
495
|
+
return { resourceRoot: binding.resourceRoot, launch, producer: record, set: binding.identity.set, view: { id, name: `${binding.identity.set}/${entry.key}/${entry.variant}`, owner: { kind: 'plugin', producer: record.producer }, availability: 'ready', resourceRoot: binding.resourceRoot, launch, errors: [], recoveryActions: [] } };
|
|
496
|
+
}
|
|
497
|
+
export async function inspectManagedCommand(id, env = process.env) {
|
|
498
|
+
try {
|
|
499
|
+
return (await resolveManagedCommand(id, env)).view;
|
|
500
|
+
}
|
|
501
|
+
catch (error) {
|
|
502
|
+
if (error instanceof ManagedCommandError && (error.code === 'commandNotFound' || error.argumentError))
|
|
503
|
+
throw error;
|
|
504
|
+
const root = await managedCommandRoot(env);
|
|
505
|
+
let owner;
|
|
506
|
+
let name = id;
|
|
507
|
+
let resourceRoot = null;
|
|
508
|
+
let launch = null;
|
|
509
|
+
if (USER_ID.test(id)) {
|
|
510
|
+
await assertUserOwner(root, id);
|
|
511
|
+
owner = { kind: 'user' };
|
|
512
|
+
try {
|
|
513
|
+
const definition = await readUserCommandDefinition(id, env);
|
|
514
|
+
name = definition.name;
|
|
515
|
+
launch = definition.launch;
|
|
516
|
+
resourceRoot = path.join(root, 'users', id, 'packages', definition.packageRevision);
|
|
517
|
+
}
|
|
518
|
+
catch { /* Owner evidence still permits a diagnostic view and safe removal. */ }
|
|
519
|
+
}
|
|
520
|
+
else {
|
|
521
|
+
const binding = await readBinding(root, id);
|
|
522
|
+
owner = { kind: 'plugin', producer: binding.identity.producer };
|
|
523
|
+
name = `${binding.identity.set}/${binding.identity.key}/${binding.identity.variant}`;
|
|
524
|
+
resourceRoot = binding.resourceRoot;
|
|
525
|
+
}
|
|
526
|
+
return { id, name, owner, availability: 'unavailable', resourceRoot, launch, errors: [managedCommandDiagnostic(error)], recoveryActions: [owner.kind === 'user' ? `aw command remove ${id} --force --yes` : 'Run producer sync, reinstall, or package sync.'] };
|
|
527
|
+
}
|
|
528
|
+
}
|
|
529
|
+
export async function listManagedCommandPackages(env = process.env) {
|
|
530
|
+
const root = await managedCommandRoot(env);
|
|
531
|
+
const packages = [];
|
|
532
|
+
const errors = [];
|
|
533
|
+
await safePath(root, path.join(root, 'packages'));
|
|
534
|
+
for (const id of (await entriesAt(path.join(root, 'packages'))).sort()) {
|
|
535
|
+
if (!PACKAGE_ID.test(id)) {
|
|
536
|
+
if (!id.startsWith('.'))
|
|
537
|
+
errors.push({ code: 'commandOwnerMismatch', message: 'An unrecognized command package was retained.', subject: `commands/packages/${id}` });
|
|
538
|
+
continue;
|
|
539
|
+
}
|
|
540
|
+
try {
|
|
541
|
+
const { producer, resourceRoot } = await readManagedCommandPackageOwner(id, env);
|
|
542
|
+
const view = { id, producer, resourceRoot, availability: 'unavailable', sets: [], errors: [], recoveryActions: [] };
|
|
543
|
+
try {
|
|
544
|
+
const record = await readInstalledCommandProducer(resourceRoot);
|
|
545
|
+
if (!equal(record.producer, producer))
|
|
546
|
+
fail('commandIdentityConflict', 'The package content and owner identities differ.');
|
|
547
|
+
await validateManagedCommandResource(resourceRoot);
|
|
548
|
+
view.sets = record.sets.map((set) => ({ set: set.set, state: set.state, commandIds: set.entries.map((entry) => getPluginCommandId({ schemaVersion: 1, producer, set: set.set, key: entry.key, variant: entry.variant })) }));
|
|
549
|
+
for (const set of view.sets)
|
|
550
|
+
for (const commandId of set.commandIds)
|
|
551
|
+
await resolveManagedCommand(commandId, env);
|
|
552
|
+
view.availability = view.sets.some((set) => set.commandIds.length) ? 'ready' : 'empty';
|
|
553
|
+
}
|
|
554
|
+
catch (error) {
|
|
555
|
+
view.errors.push(managedCommandDiagnostic(error));
|
|
556
|
+
view.recoveryActions.push(`aw command package remove ${id} --force --yes`, 'Run package sync.');
|
|
557
|
+
}
|
|
558
|
+
packages.push(view);
|
|
559
|
+
}
|
|
560
|
+
catch (error) {
|
|
561
|
+
errors.push(managedCommandDiagnostic(error, `commands/packages/${id}`));
|
|
562
|
+
}
|
|
563
|
+
}
|
|
564
|
+
return { packages, errors };
|
|
565
|
+
}
|
|
566
|
+
export async function listManagedCommands(env = process.env) {
|
|
567
|
+
const root = await managedCommandRoot(env);
|
|
568
|
+
const commands = [];
|
|
569
|
+
const errors = [];
|
|
570
|
+
for (const kind of ['users', 'bindings']) {
|
|
571
|
+
await safePath(root, path.join(root, kind));
|
|
572
|
+
for (const file of (await entriesAt(path.join(root, kind))).sort()) {
|
|
573
|
+
const id = kind === 'bindings' ? file.replace(/\.json$/u, '') : file;
|
|
574
|
+
if (!(kind === 'users' ? USER_ID.test(id) : /^cmdp_[0-9a-f]{16}\.json$/u.test(file))) {
|
|
575
|
+
errors.push({ code: 'commandBindingInvalid', message: 'An unrecognized command record was retained.', subject: `commands/${kind}/${file}` });
|
|
576
|
+
continue;
|
|
577
|
+
}
|
|
578
|
+
try {
|
|
579
|
+
commands.push(await inspectManagedCommand(id, env));
|
|
580
|
+
}
|
|
581
|
+
catch (error) {
|
|
582
|
+
errors.push(managedCommandDiagnostic(error, `commands/${kind}/${file}`));
|
|
583
|
+
}
|
|
584
|
+
}
|
|
585
|
+
}
|
|
586
|
+
const packageResult = await listManagedCommandPackages(env);
|
|
587
|
+
return { commands, packages: packageResult.packages, errors: [...errors, ...packageResult.errors] };
|
|
588
|
+
}
|
|
589
|
+
//# sourceMappingURL=managed-command-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"managed-command-store.js","sourceRoot":"","sources":["../../../src/utils/managed-command-store.ts"],"names":[],"mappings":"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"}
|