@lesliechan721/aw 0.1.0-beta.3 → 0.1.0-beta.30
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/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-version-check.d.mts +15 -0
- package/dist/authoring/scripts/lib/plugin-version-check.mjs +239 -232
- 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 +367 -0
- package/dist/authoring/scripts/remove-plugin.mjs.map +1 -0
- package/dist/authoring/scripts/validate-plugin.mjs +307 -1173
- 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 -2
- package/dist/scripts/bundle-plugins.js +24 -7
- package/dist/scripts/bundle-plugins.js.map +1 -1
- package/dist/scripts/plugin-staging.d.ts +7 -24
- package/dist/scripts/plugin-staging.js +22 -142
- 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 +27 -75
- package/dist/scripts/test-plugin-scripts.js.map +1 -1
- 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 +26 -2
- package/dist/src/authoring/workspace-commands.js +44 -19
- 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 +256 -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 +138 -0
- package/dist/src/commands/catalog-publication-inspection.js +757 -0
- package/dist/src/commands/catalog-publication-inspection.js.map +1 -0
- 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 +77 -7
- package/dist/src/commands/catalog-publish.js +746 -316
- 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 +56 -0
- package/dist/src/commands/catalog-status.js +217 -0
- package/dist/src/commands/catalog-status.js.map +1 -0
- 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 +127 -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.d.ts +22 -0
- package/dist/src/commands/plugin-capabilities.js +159 -0
- package/dist/src/commands/plugin-capabilities.js.map +1 -0
- package/dist/src/commands/rebuild-command.d.ts +77 -30
- package/dist/src/commands/rebuild-command.js +3993 -711
- package/dist/src/commands/rebuild-command.js.map +1 -1
- package/dist/src/commands/rebuild-integration.d.ts +120 -21
- package/dist/src/commands/rebuild-integration.js +2765 -1326
- 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 +259 -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 +38 -0
- package/dist/src/commands/skill-eval.js +388 -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 +2697 -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 +3 -4
- package/dist/src/commands/wizard.js +2 -2
- 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 +124 -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 +225 -104
- package/dist/src/generators/local-plugin.js.map +1 -1
- package/dist/src/index.d.ts +10 -4
- package/dist/src/index.js +1787 -476
- 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 +160 -38
- 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 +66 -19
- 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 +177 -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 +182 -0
- package/dist/src/review/source-binding.js +682 -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 +28 -0
- package/dist/src/tui/catalog-sources/session.js +295 -0
- package/dist/src/tui/catalog-sources/session.js.map +1 -0
- package/dist/src/tui/catalog-sources/types.d.ts +53 -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/components.d.ts +128 -0
- package/dist/src/tui/components.js +251 -7
- package/dist/src/tui/components.js.map +1 -1
- package/dist/src/tui/console-app-v4.d.ts +14 -4
- package/dist/src/tui/console-app-v4.js +9248 -1461
- package/dist/src/tui/console-app-v4.js.map +1 -1
- package/dist/src/tui/controller-runtime.d.ts +13 -1
- package/dist/src/tui/controller-runtime.js +3338 -410
- package/dist/src/tui/controller-runtime.js.map +1 -1
- package/dist/src/tui/controller.d.ts +614 -40
- package/dist/src/tui/controller.js +3478 -708
- package/dist/src/tui/controller.js.map +1 -1
- package/dist/src/tui/dependency-graph.d.ts +81 -0
- package/dist/src/tui/dependency-graph.js +455 -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 +30 -0
- package/dist/src/tui/diagnostics.js +76 -0
- package/dist/src/tui/diagnostics.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 +11 -4
- package/dist/src/tui/index.js +8 -2
- package/dist/src/tui/index.js.map +1 -1
- package/dist/src/tui/input-display.d.ts +8 -0
- package/dist/src/tui/input-display.js +36 -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 +235 -27
- package/dist/src/tui/model.js +1652 -304
- package/dist/src/tui/model.js.map +1 -1
- package/dist/src/tui/operation-diagnostic-screens.d.ts +21 -0
- package/dist/src/tui/operation-diagnostic-screens.js +102 -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 +135 -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 +1254 -0
- package/dist/src/tui/operation-review-planner.js.map +1 -0
- package/dist/src/tui/plugin-content.d.ts +23 -0
- package/dist/src/tui/plugin-content.js +336 -0
- package/dist/src/tui/plugin-content.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/prompt.js +4 -15
- package/dist/src/tui/prompt.js.map +1 -1
- package/dist/src/tui/router.d.ts +183 -11
- package/dist/src/tui/router.js +352 -29
- package/dist/src/tui/router.js.map +1 -1
- package/dist/src/tui/screen-registry.d.ts +702 -0
- package/dist/src/tui/screen-registry.js +231 -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-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 +18 -10
- package/dist/src/tui/theme.js +18 -10
- package/dist/src/tui/theme.js.map +1 -1
- package/dist/src/tui/viewport.d.ts +20 -0
- package/dist/src/tui/viewport.js +29 -0
- package/dist/src/tui/viewport.js.map +1 -0
- package/dist/src/tui/views.js +31 -3
- package/dist/src/tui/views.js.map +1 -1
- package/dist/src/tui/wizard.js +11 -9
- package/dist/src/tui/wizard.js.map +1 -1
- package/dist/src/types.d.ts +242 -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 +13 -7
- package/dist/src/utils/artifact-renderer.js +196 -219
- 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 +82 -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 +14 -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 +50 -2
- 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 +4 -7
- package/dist/src/utils/catalog-runtime-projection.js +7 -102
- 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 +745 -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 +36 -6
- package/dist/src/utils/dynamic-skill-tree.js.map +1 -1
- package/dist/src/utils/git-catalog-provider.d.ts +18 -0
- package/dist/src/utils/git-catalog-provider.js +170 -144
- package/dist/src/utils/git-catalog-provider.js.map +1 -1
- package/dist/src/utils/local-marketplace.d.ts +15 -1
- package/dist/src/utils/local-marketplace.js +307 -84
- package/dist/src/utils/local-marketplace.js.map +1 -1
- package/dist/src/utils/manifest.d.ts +1 -4
- package/dist/src/utils/manifest.js +1 -4
- 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 +386 -57
- 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 +990 -298
- package/dist/src/utils/plugin-config-write.js.map +1 -1
- package/dist/src/utils/plugin-config.d.ts +140 -93
- package/dist/src/utils/plugin-config.js +992 -980
- 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 +62 -125
- package/dist/src/utils/plugin-scripts.js +468 -525
- 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/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/skill-validation.d.ts +1 -1
- package/dist/src/utils/skill-validation.js +1 -1
- package/dist/src/utils/skill-validation.js.map +1 -1
- package/dist/src/utils/state-paths.d.ts +1 -0
- package/dist/src/utils/state-paths.js +12 -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 +9 -0
- package/dist/src/utils/windows-claude-shim.js +141 -0
- package/dist/src/utils/windows-claude-shim.js.map +1 -0
- package/dist/vitest.config.js +91 -10
- package/dist/vitest.config.js.map +1 -1
- package/package.json +22 -19
- 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 -102
- package/dist/src/commands/status-v4.js +0 -844
- 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 -61
- package/dist/src/utils/catalog-source-cache.js +0 -276
- 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-authoring-capabilities.d.ts +0 -23
- package/dist/src/utils/plugin-authoring-capabilities.js +0 -37
- package/dist/src/utils/plugin-authoring-capabilities.js.map +0 -1
- package/dist/src/utils/plugin-authoring-capabilities.json +0 -92
- 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
- package/dist/src/utils/skill-frontmatter-capabilities.d.ts +0 -201
- package/dist/src/utils/skill-frontmatter-capabilities.js +0 -5
- package/dist/src/utils/skill-frontmatter-capabilities.js.map +0 -1
- package/dist/src/utils/skill-frontmatter-capabilities.json +0 -200
- /package/dist/authoring/scripts/{check-plugin-versions.d.mts → remove-plugin.d.mts} +0 -0
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
import path from 'node:path';
|
|
2
|
-
import {
|
|
2
|
+
import { readSafeOperationError } from '../utils/safe-operation-diagnostic.js';
|
|
3
3
|
import { cleanupOwnedComponents, inspectOwnedComponents, validateOwnerIdentity, } from '../utils/ownership.js';
|
|
4
|
-
async function withOwnershipLease(target, driver, operation) {
|
|
5
|
-
return driver.withOwnershipLease
|
|
6
|
-
? driver.withOwnershipLease(target, operation)
|
|
7
|
-
: operation();
|
|
8
|
-
}
|
|
9
4
|
function artifactIdentity(artifact) {
|
|
10
5
|
return [
|
|
11
6
|
artifact.platform,
|
|
@@ -27,75 +22,6 @@ function bindWrittenArtifacts(target, written) {
|
|
|
27
22
|
}
|
|
28
23
|
target.artifacts = [...written];
|
|
29
24
|
}
|
|
30
|
-
export function createRebuildActiveStore(options) {
|
|
31
|
-
return {
|
|
32
|
-
prepare: (target) => prepareLifecycleActiveSnapshot({
|
|
33
|
-
...(target.identity.sourceId ? {
|
|
34
|
-
sourceId: target.identity.sourceId,
|
|
35
|
-
sourceIdentity: target.identity.sourceIdentity,
|
|
36
|
-
} : {}),
|
|
37
|
-
plugin: target.lifecycleSource,
|
|
38
|
-
platform: target.identity.platform,
|
|
39
|
-
scope: target.identity.scope,
|
|
40
|
-
cwd: target.identity.cwd,
|
|
41
|
-
artifacts: target.artifacts,
|
|
42
|
-
loadPlugin: options.loadPlugin,
|
|
43
|
-
env: options.env,
|
|
44
|
-
lifecycleLeaseHeld: options.isLifecycleLeaseHeld?.() === true,
|
|
45
|
-
}),
|
|
46
|
-
discard: discardLifecycleActiveSnapshot,
|
|
47
|
-
promote: promoteLifecycleActiveSnapshot,
|
|
48
|
-
read: (target) => readLifecycleActiveSnapshot({
|
|
49
|
-
...(target.identity.sourceId ? {
|
|
50
|
-
sourceId: target.identity.sourceId,
|
|
51
|
-
sourceIdentity: target.identity.sourceIdentity,
|
|
52
|
-
} : {}),
|
|
53
|
-
pluginName: target.identity.pluginName,
|
|
54
|
-
platform: target.identity.platform,
|
|
55
|
-
scope: target.identity.scope,
|
|
56
|
-
cwd: target.identity.cwd,
|
|
57
|
-
loadPlugin: options.loadPlugin,
|
|
58
|
-
env: options.env,
|
|
59
|
-
}),
|
|
60
|
-
readStable: (target) => leaseLifecycleActiveSnapshot({
|
|
61
|
-
...(target.identity.sourceId ? {
|
|
62
|
-
sourceId: target.identity.sourceId,
|
|
63
|
-
sourceIdentity: target.identity.sourceIdentity,
|
|
64
|
-
} : {}),
|
|
65
|
-
pluginName: target.identity.pluginName,
|
|
66
|
-
platform: target.identity.platform,
|
|
67
|
-
scope: target.identity.scope,
|
|
68
|
-
cwd: target.identity.cwd,
|
|
69
|
-
loadPlugin: options.loadPlugin,
|
|
70
|
-
env: options.env,
|
|
71
|
-
lifecycleLeaseHeld: options.isLifecycleLeaseHeld?.() === true,
|
|
72
|
-
}),
|
|
73
|
-
remove: (target) => removeLifecycleActiveSnapshot({
|
|
74
|
-
...(target.identity.sourceId ? {
|
|
75
|
-
sourceId: target.identity.sourceId,
|
|
76
|
-
sourceIdentity: target.identity.sourceIdentity,
|
|
77
|
-
} : {}),
|
|
78
|
-
pluginName: target.identity.pluginName,
|
|
79
|
-
platform: target.identity.platform,
|
|
80
|
-
scope: target.identity.scope,
|
|
81
|
-
cwd: target.identity.cwd,
|
|
82
|
-
env: options.env,
|
|
83
|
-
lifecycleLeaseHeld: options.isLifecycleLeaseHeld?.() === true,
|
|
84
|
-
}),
|
|
85
|
-
acquireOperation: (identity) => acquireLifecycleOperationLock({
|
|
86
|
-
...(identity.sourceId ? {
|
|
87
|
-
sourceId: identity.sourceId,
|
|
88
|
-
sourceIdentity: identity.sourceIdentity,
|
|
89
|
-
} : {}),
|
|
90
|
-
pluginName: identity.pluginName,
|
|
91
|
-
platform: identity.platform,
|
|
92
|
-
scope: identity.scope,
|
|
93
|
-
cwd: identity.cwd,
|
|
94
|
-
env: options.env,
|
|
95
|
-
}),
|
|
96
|
-
releaseRead: releaseLifecycleActiveSnapshot,
|
|
97
|
-
};
|
|
98
|
-
}
|
|
99
25
|
function createAccumulator() {
|
|
100
26
|
return {
|
|
101
27
|
actions: [],
|
|
@@ -111,26 +37,14 @@ function errorMessage(error) {
|
|
|
111
37
|
return error instanceof Error ? error.message : String(error);
|
|
112
38
|
}
|
|
113
39
|
const REBUILD_ACTION_FAILURE_MESSAGES = {
|
|
114
|
-
'operation.lock': '获取操作锁失败。',
|
|
115
40
|
'preflight.inspect': '检查当前组件失败。',
|
|
116
41
|
'stale.cleanup': '清理过期组件失败。',
|
|
117
42
|
'native.write': '写入平台插件失败。',
|
|
118
43
|
'artifacts.write': '写入插件文件失败。',
|
|
119
|
-
|
|
120
|
-
'active.discard': '丢弃生命周期快照失败。',
|
|
121
|
-
'lifecycle.install': '运行安装生命周期失败。',
|
|
122
|
-
'lifecycle.upgrade': '运行升级生命周期失败。',
|
|
123
|
-
'lifecycle.uninstall': '运行卸载生命周期失败。',
|
|
124
|
-
'active.promote': '启用生命周期快照失败。',
|
|
44
|
+
preApply: '运行 preApply 失败。',
|
|
125
45
|
'postcheck.inspect': '检查写入结果失败。',
|
|
126
|
-
'marketplace.commit': '提交 marketplace generation 失败。',
|
|
127
|
-
'marketplace.rollback': '回滚 marketplace generation 失败。',
|
|
128
46
|
'recovery.cleanup': '清理失败写入失败。',
|
|
129
47
|
'cleanup.owned': '清理 AW 组件失败。',
|
|
130
|
-
'active.read': '读取生命周期快照失败。',
|
|
131
|
-
'active.remove': '删除生命周期快照失败。',
|
|
132
|
-
'active.release': '释放生命周期快照失败。',
|
|
133
|
-
'operation.release': '释放操作锁失败。',
|
|
134
48
|
};
|
|
135
49
|
function rebuildActionFailureMessage(name) {
|
|
136
50
|
return REBUILD_ACTION_FAILURE_MESSAGES[name];
|
|
@@ -143,22 +57,6 @@ async function emitRebuildAction(events, event) {
|
|
|
143
57
|
// Progress diagnostics must not change the rebuild result.
|
|
144
58
|
}
|
|
145
59
|
}
|
|
146
|
-
export async function releaseRebuildOperationLease(lock) {
|
|
147
|
-
let lastError;
|
|
148
|
-
for (let attempt = 0; attempt < 3; attempt += 1) {
|
|
149
|
-
try {
|
|
150
|
-
await lock.release();
|
|
151
|
-
return;
|
|
152
|
-
}
|
|
153
|
-
catch (error) {
|
|
154
|
-
lastError = error;
|
|
155
|
-
if (!new Set(['EACCES', 'EBUSY', 'EINTR', 'EIO', 'ENOTEMPTY', 'EPERM']).has(error.code ?? '')) {
|
|
156
|
-
throw error;
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
throw lastError;
|
|
161
|
-
}
|
|
162
60
|
function pushUnique(target, values) {
|
|
163
61
|
for (const value of values) {
|
|
164
62
|
if (!target.includes(value))
|
|
@@ -179,16 +77,16 @@ function mergeCleanup(accumulator, cleanup, phase) {
|
|
|
179
77
|
function succeeded(command, target, accumulator) {
|
|
180
78
|
return { status: 'succeeded', command, target: target.identity, ...accumulator };
|
|
181
79
|
}
|
|
182
|
-
function failed(command, target, accumulator, phase, message) {
|
|
80
|
+
function failed(command, target, accumulator, phase, message, operationDiagnostic) {
|
|
183
81
|
if (!accumulator.failures.some((failure) => failure.phase === phase && failure.message === message)) {
|
|
184
|
-
accumulator.failures.unshift({ phase, message });
|
|
82
|
+
accumulator.failures.unshift({ phase, message, ...(operationDiagnostic ? { operationDiagnostic } : {}) });
|
|
185
83
|
}
|
|
186
84
|
return {
|
|
187
85
|
status: 'failed',
|
|
188
86
|
command,
|
|
189
87
|
target: target.identity,
|
|
190
88
|
...accumulator,
|
|
191
|
-
error: { phase, message },
|
|
89
|
+
error: { phase, message, ...(operationDiagnostic ? { operationDiagnostic } : {}) },
|
|
192
90
|
};
|
|
193
91
|
}
|
|
194
92
|
async function action(accumulator, name, operation, events, failureMessage) {
|
|
@@ -259,10 +157,10 @@ function validateDesiredTarget(target) {
|
|
|
259
157
|
throw new Error('Desired target has an invalid namespaced source identity.');
|
|
260
158
|
}
|
|
261
159
|
if (target.plugin.manifest.name !== pluginName
|
|
262
|
-
|| target.
|
|
160
|
+
|| target.preApplySource.manifest.name !== pluginName
|
|
263
161
|
|| target.plugin.manifest.version !== pluginVersion
|
|
264
|
-
|| target.
|
|
265
|
-
throw new Error('Desired target plugin name/version does not match its
|
|
162
|
+
|| target.preApplySource.manifest.version !== pluginVersion) {
|
|
163
|
+
throw new Error('Desired target plugin name/version does not match its preApply source and identity.');
|
|
266
164
|
}
|
|
267
165
|
if (platform !== 'codex' && platform !== 'claude') {
|
|
268
166
|
throw new Error(`Desired target platform is invalid: ${String(platform)}`);
|
|
@@ -272,15 +170,26 @@ function validateDesiredTarget(target) {
|
|
|
272
170
|
}
|
|
273
171
|
const identityKeys = new Set();
|
|
274
172
|
const componentPaths = new Set();
|
|
173
|
+
const desiredComponents = target.desiredOwnedComponents ?? target.ownedComponents;
|
|
174
|
+
const desiredComponentSet = new Set(desiredComponents);
|
|
175
|
+
const sharedNativeSkillKeys = new Set((target.plugin.manifest.artifacts?.targets ?? [])
|
|
176
|
+
.filter((artifactTarget) => artifactTarget.platform === 'codex'
|
|
177
|
+
&& artifactTarget.target === 'codex.skill'
|
|
178
|
+
&& artifactTarget.delivery?.mode === 'codex-native')
|
|
179
|
+
.map((artifactTarget) => artifactTarget.skillKey));
|
|
275
180
|
let nativeCount = 0;
|
|
276
181
|
for (const component of target.ownedComponents) {
|
|
277
182
|
validateOwnerIdentity(component.identity);
|
|
183
|
+
const crossScopeLegacyNativeSkill = platform === 'codex'
|
|
184
|
+
&& component.kind === 'skill-directory'
|
|
185
|
+
&& !desiredComponentSet.has(component)
|
|
186
|
+
&& sharedNativeSkillKeys.has(component.identity.artifactKey)
|
|
187
|
+
&& component.identity.scope !== scope;
|
|
278
188
|
if (component.identity.plugin !== pluginName
|
|
279
189
|
|| component.identity.sourceId !== sourceId
|
|
280
|
-
|| component.identity.sourceIdentity !== sourceIdentity
|
|
281
190
|
|| component.identity.pluginId !== pluginId
|
|
282
191
|
|| component.identity.platform !== platform
|
|
283
|
-
|| component.identity.scope !== scope) {
|
|
192
|
+
|| (component.identity.scope !== scope && !crossScopeLegacyNativeSkill)) {
|
|
284
193
|
throw new Error('Owned component identity does not match the desired target.');
|
|
285
194
|
}
|
|
286
195
|
const identityKey = [
|
|
@@ -308,7 +217,9 @@ function validateDesiredTarget(target) {
|
|
|
308
217
|
}
|
|
309
218
|
}
|
|
310
219
|
}
|
|
311
|
-
|
|
220
|
+
if (target.forceExclusiveCleanup && target.ownedComponents.some((component) => component.kind !== 'skill-directory' && component.kind !== 'owned-text-file')) {
|
|
221
|
+
throw new Error('Force cleanup only supports exclusive skill directories and owned text files.');
|
|
222
|
+
}
|
|
312
223
|
nativeCount = desiredComponents.filter((component) => component.kind === 'native-plugin').length;
|
|
313
224
|
if (target.requiresNative ? nativeCount !== 1 : nativeCount !== 0) {
|
|
314
225
|
throw new Error(target.requiresNative
|
|
@@ -334,7 +245,7 @@ function collisionMessage(inspection) {
|
|
|
334
245
|
if (inspection.errors.length > 0) {
|
|
335
246
|
return inspection.errors.map((error) => `${error.label}: ${error.message}`).join('; ');
|
|
336
247
|
}
|
|
337
|
-
const collision = inspection.components.find((component) => (component.state === 'partial' || component.state === 'error'));
|
|
248
|
+
const collision = inspection.components.find((component) => (component.state === 'partial' || component.state === 'foreign' || component.state === 'error'));
|
|
338
249
|
if (collision) {
|
|
339
250
|
return collision.diagnostic ?? 'Owned component preflight failed.';
|
|
340
251
|
}
|
|
@@ -353,7 +264,7 @@ function isUninstallLiveOwnershipComponent(component) {
|
|
|
353
264
|
}
|
|
354
265
|
function recordInspectionResiduals(accumulator, inspection) {
|
|
355
266
|
pushUnique(accumulator.residual, inspection.components
|
|
356
|
-
.filter((component) => component.state === 'partial' || component.state === 'error')
|
|
267
|
+
.filter((component) => (component.state === 'partial' || component.state === 'foreign' || component.state === 'error'))
|
|
357
268
|
.map((component) => ownedComponentLabel(component.component)));
|
|
358
269
|
}
|
|
359
270
|
function postcheckMessage(accumulator, inspection) {
|
|
@@ -371,6 +282,11 @@ function postcheckMessage(accumulator, inspection) {
|
|
|
371
282
|
})));
|
|
372
283
|
return inspection.errors.map((error) => `${error.label}: ${error.message}`).join('; ');
|
|
373
284
|
}
|
|
285
|
+
if (invalid.some((component) => component.state === 'partial'
|
|
286
|
+
&& component.component.kind === 'native-plugin'
|
|
287
|
+
&& component.component.identity.platform === 'codex')) {
|
|
288
|
+
return 'codexActivationPostcheckFailed: Codex scope activation was not observed as enabled.';
|
|
289
|
+
}
|
|
374
290
|
const diagnostics = invalid
|
|
375
291
|
.map((component) => component.diagnostic)
|
|
376
292
|
.filter((diagnostic) => diagnostic !== undefined);
|
|
@@ -378,17 +294,20 @@ function postcheckMessage(accumulator, inspection) {
|
|
|
378
294
|
return diagnostics.join('; ');
|
|
379
295
|
return `Post-install ownership inspection failed for ${invalid.length} component(s).`;
|
|
380
296
|
}
|
|
381
|
-
async function cleanupOwned(target, driver, components = target.ownedComponents) {
|
|
382
|
-
return
|
|
297
|
+
async function cleanupOwned(target, driver, components = target.ownedComponents, hooks = {}) {
|
|
298
|
+
return cleanupOwnedComponents({
|
|
383
299
|
components,
|
|
300
|
+
executor: driver.ownership,
|
|
384
301
|
nativeProbe: driver.probeNative,
|
|
385
302
|
nativeRemove: driver.removeNative,
|
|
386
|
-
|
|
303
|
+
forceExclusive: target.forceExclusiveCleanup,
|
|
304
|
+
...hooks,
|
|
305
|
+
});
|
|
387
306
|
}
|
|
388
|
-
async function cleanupTarget(target, driver,
|
|
307
|
+
async function cleanupTarget(target, driver, accumulator, ownedAction, events, components = target.ownedComponents, hooks = {}) {
|
|
389
308
|
accumulator.cleanupAttempted = true;
|
|
390
309
|
try {
|
|
391
|
-
const cleanup = await action(accumulator, ownedAction, () => cleanupOwned(target, driver), events, (value) => value.failures[0]?.message
|
|
310
|
+
const cleanup = await action(accumulator, ownedAction, () => cleanupOwned(target, driver, components, hooks), events, (value) => value.failures[0]?.message
|
|
392
311
|
?? (value.residual.length > 0
|
|
393
312
|
? `Ownership cleanup left residual components: ${value.residual.join(', ')}`
|
|
394
313
|
: value.quarantined.length > 0
|
|
@@ -412,41 +331,64 @@ async function cleanupTarget(target, driver, store, accumulator, ownedAction, ev
|
|
|
412
331
|
accumulator.failures.push({ phase: ownedAction, message });
|
|
413
332
|
return { phase: ownedAction, message };
|
|
414
333
|
}
|
|
415
|
-
try {
|
|
416
|
-
await action(accumulator, 'active.remove', () => store.remove(target), events);
|
|
417
|
-
}
|
|
418
|
-
catch (error) {
|
|
419
|
-
const message = errorMessage(error);
|
|
420
|
-
accumulator.failures.push({ phase: 'active.remove', message });
|
|
421
|
-
return { phase: 'active.remove', message };
|
|
422
|
-
}
|
|
423
334
|
return null;
|
|
424
335
|
}
|
|
336
|
+
export async function executeRebuildComponentCleanup(options) {
|
|
337
|
+
const accumulator = createAccumulator();
|
|
338
|
+
accumulator.actions.push(...(options.actions ?? []));
|
|
339
|
+
const cleanupError = await cleanupTarget(options.target, options.driver, accumulator, 'cleanup.owned', {
|
|
340
|
+
command: options.command,
|
|
341
|
+
target: options.target.identity,
|
|
342
|
+
emit: options.onActionEvent,
|
|
343
|
+
now: options.now ?? Date.now,
|
|
344
|
+
}, options.components, {
|
|
345
|
+
...(options.beforeMutation ? { beforeMutation: options.beforeMutation } : {}),
|
|
346
|
+
...(options.afterQuarantine ? { afterQuarantine: options.afterQuarantine } : {}),
|
|
347
|
+
});
|
|
348
|
+
return cleanupError
|
|
349
|
+
? failed(options.command, options.target, accumulator, cleanupError.phase, cleanupError.message)
|
|
350
|
+
: succeeded(options.command, options.target, accumulator);
|
|
351
|
+
}
|
|
425
352
|
async function materializeTarget(options) {
|
|
426
|
-
const { command,
|
|
427
|
-
let inspection;
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
await
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
353
|
+
const { command, target, driver, accumulator, events } = options;
|
|
354
|
+
let inspection = options.inspection;
|
|
355
|
+
if (!inspection) {
|
|
356
|
+
try {
|
|
357
|
+
inspection = await action(accumulator, 'preflight.inspect', async () => {
|
|
358
|
+
await driver.preflightMaterialize?.(target);
|
|
359
|
+
return inspectOwnedComponents({
|
|
360
|
+
components: target.ownedComponents,
|
|
361
|
+
executor: driver.ownership,
|
|
362
|
+
nativeProbe: driver.probeNative,
|
|
363
|
+
});
|
|
364
|
+
}, events, collisionMessage);
|
|
365
|
+
}
|
|
366
|
+
catch (error) {
|
|
367
|
+
return failed(command, target, accumulator, 'preflight.inspect', errorMessage(error), readSafeOperationError(error));
|
|
368
|
+
}
|
|
439
369
|
}
|
|
440
370
|
const collision = collisionMessage(inspection);
|
|
441
371
|
if (collision) {
|
|
442
372
|
recordInspectionResiduals(accumulator, inspection);
|
|
443
373
|
return failed(command, target, accumulator, 'preflight.inspect', collision);
|
|
444
374
|
}
|
|
375
|
+
if (!options.preApplyCompleted && target.preApplySource.manifest.scripts?.preApply) {
|
|
376
|
+
try {
|
|
377
|
+
await action(accumulator, 'preApply', () => driver.runPreApply({
|
|
378
|
+
target,
|
|
379
|
+
plugin: target.preApplySource,
|
|
380
|
+
}), events);
|
|
381
|
+
}
|
|
382
|
+
catch (error) {
|
|
383
|
+
return failed(command, target, accumulator, 'preApply', errorMessage(error), readSafeOperationError(error));
|
|
384
|
+
}
|
|
385
|
+
}
|
|
445
386
|
const desiredComponents = new Set(target.desiredOwnedComponents ?? target.ownedComponents);
|
|
446
387
|
const optionalComponents = new Set(target.optionalOwnedComponents ?? []);
|
|
447
388
|
const staleComponents = target.ownedComponents.filter((component) => !desiredComponents.has(component) && !optionalComponents.has(component));
|
|
448
389
|
const staleInspection = inspection.components.filter((entry) => staleComponents.includes(entry.component));
|
|
449
|
-
if (
|
|
390
|
+
if (!options.skipStaleCleanup
|
|
391
|
+
&& staleInspection.some((component) => component.state === 'present')) {
|
|
450
392
|
accumulator.cleanupAttempted = true;
|
|
451
393
|
let stale;
|
|
452
394
|
try {
|
|
@@ -456,7 +398,7 @@ async function materializeTarget(options) {
|
|
|
456
398
|
: undefined));
|
|
457
399
|
}
|
|
458
400
|
catch (error) {
|
|
459
|
-
return failed(command, target, accumulator, 'stale.cleanup', errorMessage(error));
|
|
401
|
+
return failed(command, target, accumulator, 'stale.cleanup', errorMessage(error), readSafeOperationError(error));
|
|
460
402
|
}
|
|
461
403
|
mergeCleanup(accumulator, stale, 'stale.cleanup');
|
|
462
404
|
if (stale.failures.length > 0 || stale.residual.length > 0) {
|
|
@@ -466,9 +408,8 @@ async function materializeTarget(options) {
|
|
|
466
408
|
}
|
|
467
409
|
}
|
|
468
410
|
let failurePhase = 'native.write';
|
|
469
|
-
let prepared;
|
|
470
411
|
try {
|
|
471
|
-
if (target.requiresNative) {
|
|
412
|
+
if (target.writeNativeRequired ?? target.requiresNative) {
|
|
472
413
|
failurePhase = 'native.write';
|
|
473
414
|
await action(accumulator, failurePhase, () => driver.writeNative(target), events);
|
|
474
415
|
}
|
|
@@ -477,69 +418,43 @@ async function materializeTarget(options) {
|
|
|
477
418
|
const writtenArtifacts = await driver.writeArtifacts(target);
|
|
478
419
|
bindWrittenArtifacts(target, writtenArtifacts);
|
|
479
420
|
}, events);
|
|
480
|
-
|
|
481
|
-
prepared = await action(accumulator, failurePhase, () => store.prepare(target), events);
|
|
482
|
-
failurePhase = `lifecycle.${lifecycleEvent}`;
|
|
483
|
-
await action(accumulator, failurePhase, () => driver.runLifecycle({
|
|
484
|
-
event: lifecycleEvent,
|
|
485
|
-
target,
|
|
486
|
-
plugin: target.lifecycleSource,
|
|
487
|
-
artifacts: target.artifacts,
|
|
488
|
-
}), events);
|
|
489
|
-
failurePhase = 'active.promote';
|
|
490
|
-
await action(accumulator, failurePhase, () => store.promote(prepared), events);
|
|
491
|
-
failurePhase = 'postcheck.inspect';
|
|
492
|
-
await action(accumulator, failurePhase, async () => {
|
|
421
|
+
const postcheck = () => action(accumulator, 'postcheck.inspect', async () => {
|
|
493
422
|
const optional = new Set(target.optionalOwnedComponents ?? []);
|
|
494
|
-
const postcheck = await
|
|
423
|
+
const postcheck = await inspectOwnedComponents({
|
|
495
424
|
components: (target.desiredOwnedComponents ?? target.ownedComponents)
|
|
496
425
|
.filter((component) => !optional.has(component)),
|
|
497
426
|
nativeProbe: driver.probeNativeHealth ?? driver.probeNative,
|
|
427
|
+
executor: driver.ownership,
|
|
498
428
|
verifyHealth: true,
|
|
499
|
-
})
|
|
429
|
+
});
|
|
500
430
|
const postcheckFailure = postcheckMessage(accumulator, postcheck);
|
|
501
431
|
if (postcheckFailure)
|
|
502
432
|
throw new Error(postcheckFailure);
|
|
503
433
|
}, events);
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
await
|
|
434
|
+
failurePhase = 'postcheck.inspect';
|
|
435
|
+
if (driver.deferPostcheck?.(target, postcheck) !== true) {
|
|
436
|
+
await postcheck();
|
|
507
437
|
}
|
|
508
438
|
return succeeded(command, target, accumulator);
|
|
509
439
|
}
|
|
510
440
|
catch (error) {
|
|
511
441
|
const primary = errorMessage(error);
|
|
512
|
-
if (error.
|
|
513
|
-
return failed(command, target, accumulator, failurePhase, primary);
|
|
442
|
+
if (error.nativeMarketplaceGroupFailure === true) {
|
|
443
|
+
return failed(command, target, accumulator, failurePhase, primary, readSafeOperationError(error));
|
|
514
444
|
}
|
|
515
|
-
if (
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
catch (discardError) {
|
|
520
|
-
accumulator.failures.push({
|
|
521
|
-
phase: 'active.discard',
|
|
522
|
-
message: errorMessage(discardError),
|
|
523
|
-
});
|
|
524
|
-
}
|
|
445
|
+
if (target.identity.platform === 'codex') {
|
|
446
|
+
const recoveryComponents = target.ownedComponents.filter((component) => component.kind === 'skill-directory' || component.kind === 'owned-text-file');
|
|
447
|
+
await cleanupTarget(target, driver, accumulator, 'recovery.cleanup', events, driver.selectRecoveryCleanupComponents?.(target, recoveryComponents)
|
|
448
|
+
?? recoveryComponents);
|
|
525
449
|
}
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
try {
|
|
529
|
-
await action(accumulator, 'marketplace.rollback', () => driver.rollbackMaterialize(target), events);
|
|
530
|
-
}
|
|
531
|
-
catch (rollbackError) {
|
|
532
|
-
accumulator.failures.push({
|
|
533
|
-
phase: 'marketplace.rollback',
|
|
534
|
-
message: errorMessage(rollbackError),
|
|
535
|
-
});
|
|
536
|
-
}
|
|
450
|
+
else {
|
|
451
|
+
await cleanupTarget(target, driver, accumulator, 'recovery.cleanup', events);
|
|
537
452
|
}
|
|
538
|
-
return failed(command, target, accumulator, failurePhase, primary);
|
|
453
|
+
return failed(command, target, accumulator, failurePhase, primary, readSafeOperationError(error));
|
|
539
454
|
}
|
|
540
455
|
}
|
|
541
456
|
async function executeCleanup(options) {
|
|
542
|
-
const cleanupError = await cleanupTarget(options.target, options.driver, options.
|
|
457
|
+
const cleanupError = await cleanupTarget(options.target, options.driver, options.accumulator, 'cleanup.owned', options.events);
|
|
543
458
|
if (cleanupError) {
|
|
544
459
|
return failed(options.command, options.target, options.accumulator, cleanupError.phase, cleanupError.message);
|
|
545
460
|
}
|
|
@@ -554,13 +469,14 @@ async function executeCleanup(options) {
|
|
|
554
469
|
return succeeded(options.command, options.target, options.accumulator);
|
|
555
470
|
}
|
|
556
471
|
async function executeUninstall(options) {
|
|
557
|
-
const { target, driver,
|
|
472
|
+
const { target, driver, accumulator, events } = options;
|
|
558
473
|
let inspection;
|
|
559
474
|
try {
|
|
560
|
-
inspection = await action(accumulator, 'preflight.inspect', () =>
|
|
475
|
+
inspection = await action(accumulator, 'preflight.inspect', () => inspectOwnedComponents({
|
|
561
476
|
components: target.ownedComponents,
|
|
477
|
+
executor: driver.ownership,
|
|
562
478
|
nativeProbe: driver.probeNative,
|
|
563
|
-
})
|
|
479
|
+
}), events, collisionMessage);
|
|
564
480
|
}
|
|
565
481
|
catch (error) {
|
|
566
482
|
return failed('uninstall', target, accumulator, 'preflight.inspect', errorMessage(error));
|
|
@@ -570,80 +486,11 @@ async function executeUninstall(options) {
|
|
|
570
486
|
recordInspectionResiduals(accumulator, inspection);
|
|
571
487
|
return failed('uninstall', target, accumulator, 'preflight.inspect', preflightCollision);
|
|
572
488
|
}
|
|
573
|
-
|
|
574
|
-
const stableRead = store.readStable !== undefined;
|
|
575
|
-
try {
|
|
576
|
-
snapshot = await action(accumulator, 'active.read', () => (store.readStable ?? store.read)(target), events);
|
|
577
|
-
}
|
|
578
|
-
catch (error) {
|
|
579
|
-
const message = `Active lifecycle snapshot is corrupt. Run cleanup to remove live outputs without lifecycle: ${errorMessage(error)}`;
|
|
580
|
-
return failed('uninstall', target, accumulator, 'active.read', message);
|
|
581
|
-
}
|
|
582
|
-
if (!snapshot) {
|
|
583
|
-
const live = inspection.components.filter((component) => component.state !== 'absent'
|
|
584
|
-
&& isUninstallLiveOwnershipComponent(component.component));
|
|
585
|
-
if (live.length === 0)
|
|
586
|
-
return succeeded('uninstall', target, accumulator);
|
|
587
|
-
if (!target.plugin.manifest.scripts?.lifecycle?.uninstall) {
|
|
588
|
-
const cleanupError = await cleanupTarget(target, driver, store, accumulator, 'cleanup.owned', events);
|
|
589
|
-
if (cleanupError) {
|
|
590
|
-
return failed('uninstall', target, accumulator, cleanupError.phase, cleanupError.message);
|
|
591
|
-
}
|
|
592
|
-
if (driver.finalizeCleanup) {
|
|
593
|
-
try {
|
|
594
|
-
await driver.finalizeCleanup(target);
|
|
595
|
-
}
|
|
596
|
-
catch (error) {
|
|
597
|
-
return failed('uninstall', target, accumulator, 'cleanup.owned', errorMessage(error));
|
|
598
|
-
}
|
|
599
|
-
}
|
|
600
|
-
return succeeded('uninstall', target, accumulator);
|
|
601
|
-
}
|
|
602
|
-
pushUnique(accumulator.residual, live.map((component) => ownedComponentLabel(component.component)));
|
|
603
|
-
return failed('uninstall', target, accumulator, 'active.read', 'Active lifecycle snapshot is missing while live owned components exist. Run cleanup to remove them without lifecycle.');
|
|
604
|
-
}
|
|
605
|
-
const live = inspection.components.filter((component) => component.state === 'present'
|
|
489
|
+
const live = inspection.components.filter((component) => component.state !== 'absent'
|
|
606
490
|
&& isUninstallLiveOwnershipComponent(component.component));
|
|
607
|
-
if (live.length === 0)
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
await action(accumulator, 'active.release', () => store.releaseRead(snapshot), events);
|
|
611
|
-
}
|
|
612
|
-
catch (error) {
|
|
613
|
-
return failed('uninstall', target, accumulator, 'active.release', errorMessage(error));
|
|
614
|
-
}
|
|
615
|
-
}
|
|
616
|
-
return failed('uninstall', target, accumulator, 'preflight.inspect', 'liveOwnershipRequired: uninstall requires at least one live owned or native component. Run cleanup to remove orphan lifecycle metadata.');
|
|
617
|
-
}
|
|
618
|
-
const historical = restoreLifecycleActiveScriptInputs(snapshot);
|
|
619
|
-
let lifecycleError;
|
|
620
|
-
try {
|
|
621
|
-
await action(accumulator, 'lifecycle.uninstall', () => driver.runLifecycle({
|
|
622
|
-
event: 'uninstall',
|
|
623
|
-
target,
|
|
624
|
-
plugin: historical.currentPlugin,
|
|
625
|
-
artifacts: historical.artifacts,
|
|
626
|
-
}), events);
|
|
627
|
-
}
|
|
628
|
-
catch (error) {
|
|
629
|
-
lifecycleError = error;
|
|
630
|
-
}
|
|
631
|
-
if (stableRead && store.releaseRead) {
|
|
632
|
-
try {
|
|
633
|
-
await action(accumulator, 'active.release', () => store.releaseRead(snapshot), events);
|
|
634
|
-
}
|
|
635
|
-
catch (error) {
|
|
636
|
-
const message = errorMessage(error);
|
|
637
|
-
accumulator.failures.push({ phase: 'active.release', message });
|
|
638
|
-
if (lifecycleError === undefined) {
|
|
639
|
-
return failed('uninstall', target, accumulator, 'active.release', message);
|
|
640
|
-
}
|
|
641
|
-
}
|
|
642
|
-
}
|
|
643
|
-
if (lifecycleError !== undefined) {
|
|
644
|
-
return failed('uninstall', target, accumulator, 'lifecycle.uninstall', errorMessage(lifecycleError));
|
|
645
|
-
}
|
|
646
|
-
const cleanupError = await cleanupTarget(target, driver, store, accumulator, 'cleanup.owned', events);
|
|
491
|
+
if (live.length === 0)
|
|
492
|
+
return succeeded('uninstall', target, accumulator);
|
|
493
|
+
const cleanupError = await cleanupTarget(target, driver, accumulator, 'cleanup.owned', events);
|
|
647
494
|
if (cleanupError) {
|
|
648
495
|
return failed('uninstall', target, accumulator, cleanupError.phase, cleanupError.message);
|
|
649
496
|
}
|
|
@@ -659,62 +506,62 @@ async function executeUninstall(options) {
|
|
|
659
506
|
}
|
|
660
507
|
export async function executeRebuildOperation(options) {
|
|
661
508
|
const accumulator = createAccumulator();
|
|
662
|
-
const store = options.activeStore;
|
|
663
509
|
const events = {
|
|
664
510
|
command: options.command,
|
|
665
511
|
target: options.target.identity,
|
|
666
512
|
emit: options.onActionEvent,
|
|
667
513
|
now: options.now ?? Date.now,
|
|
668
514
|
};
|
|
515
|
+
if (options.preparation) {
|
|
516
|
+
if (options.preparation.command !== options.command
|
|
517
|
+
|| options.preparation.target !== options.target) {
|
|
518
|
+
return failed(options.command, options.target, accumulator, 'preflight', 'Prepared rebuild operation does not match the requested target.');
|
|
519
|
+
}
|
|
520
|
+
accumulator.actions.push(...options.preparation.actions);
|
|
521
|
+
try {
|
|
522
|
+
await options.driver.preflightMutation?.(options.target);
|
|
523
|
+
}
|
|
524
|
+
catch (error) {
|
|
525
|
+
return failed(options.command, options.target, accumulator, 'preflight', errorMessage(error));
|
|
526
|
+
}
|
|
527
|
+
try {
|
|
528
|
+
return await executeRebuildOperationCore(options, accumulator, events, options.preparation);
|
|
529
|
+
}
|
|
530
|
+
catch (error) {
|
|
531
|
+
return failed(options.command, options.target, accumulator, 'preflight', errorMessage(error));
|
|
532
|
+
}
|
|
533
|
+
}
|
|
669
534
|
try {
|
|
670
535
|
validateDesiredTarget(options.target);
|
|
671
536
|
}
|
|
672
537
|
catch (error) {
|
|
673
538
|
return failed(options.command, options.target, accumulator, 'preflight', errorMessage(error));
|
|
674
539
|
}
|
|
675
|
-
let operationLock;
|
|
676
|
-
if (store.acquireOperation) {
|
|
677
|
-
try {
|
|
678
|
-
operationLock = await action(accumulator, 'operation.lock', () => store.acquireOperation(options.target.identity), events);
|
|
679
|
-
}
|
|
680
|
-
catch (error) {
|
|
681
|
-
return failed(options.command, options.target, accumulator, 'operation.lock', errorMessage(error));
|
|
682
|
-
}
|
|
683
|
-
}
|
|
684
|
-
let result;
|
|
685
540
|
try {
|
|
686
|
-
|
|
687
|
-
result = options.target.identity.sourceId !== undefined
|
|
688
|
-
? await (options.driver.withMaterializeLease?.(options.target, execute) ?? execute())
|
|
689
|
-
: await execute();
|
|
541
|
+
await options.driver.preflightMutation?.(options.target);
|
|
690
542
|
}
|
|
691
543
|
catch (error) {
|
|
692
|
-
|
|
544
|
+
return failed(options.command, options.target, accumulator, 'preflight', errorMessage(error));
|
|
693
545
|
}
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
const message = errorMessage(error);
|
|
700
|
-
accumulator.failures.push({ phase: 'operation.release', message });
|
|
701
|
-
if (result.status === 'succeeded') {
|
|
702
|
-
return failed(options.command, options.target, accumulator, 'operation.release', message);
|
|
703
|
-
}
|
|
704
|
-
}
|
|
546
|
+
try {
|
|
547
|
+
return await executeRebuildOperationCore(options, accumulator, events);
|
|
548
|
+
}
|
|
549
|
+
catch (error) {
|
|
550
|
+
return failed(options.command, options.target, accumulator, 'preflight', errorMessage(error));
|
|
705
551
|
}
|
|
706
|
-
return result;
|
|
707
552
|
}
|
|
708
|
-
async function
|
|
709
|
-
if (options.command === 'install'
|
|
553
|
+
async function executeRebuildOperationCore(options, accumulator, events, preparation) {
|
|
554
|
+
if (options.command === 'install') {
|
|
710
555
|
return materializeTarget({
|
|
711
556
|
command: options.command,
|
|
712
|
-
lifecycleEvent: options.command,
|
|
713
557
|
target: options.target,
|
|
714
558
|
driver: options.driver,
|
|
715
|
-
store,
|
|
716
559
|
accumulator,
|
|
717
560
|
events,
|
|
561
|
+
...(preparation ? {
|
|
562
|
+
inspection: preparation.inspection,
|
|
563
|
+
preApplyCompleted: true,
|
|
564
|
+
} : {}),
|
|
718
565
|
});
|
|
719
566
|
}
|
|
720
567
|
if (options.command === 'cleanup') {
|
|
@@ -722,7 +569,6 @@ async function executeRebuildOperationLocked(options, accumulator, store, events
|
|
|
722
569
|
command: 'cleanup',
|
|
723
570
|
target: options.target,
|
|
724
571
|
driver: options.driver,
|
|
725
|
-
store,
|
|
726
572
|
accumulator,
|
|
727
573
|
events,
|
|
728
574
|
});
|
|
@@ -731,34 +577,46 @@ async function executeRebuildOperationLocked(options, accumulator, store, events
|
|
|
731
577
|
return executeUninstall({
|
|
732
578
|
target: options.target,
|
|
733
579
|
driver: options.driver,
|
|
734
|
-
store,
|
|
735
580
|
accumulator,
|
|
736
581
|
events,
|
|
737
582
|
});
|
|
738
583
|
}
|
|
739
|
-
let inspection;
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
await
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
584
|
+
let inspection = preparation?.inspection;
|
|
585
|
+
if (!inspection) {
|
|
586
|
+
try {
|
|
587
|
+
inspection = await action(accumulator, 'preflight.inspect', async () => {
|
|
588
|
+
await options.driver.preflightMaterialize?.(options.target);
|
|
589
|
+
return inspectOwnedComponents({
|
|
590
|
+
components: options.target.ownedComponents,
|
|
591
|
+
executor: options.driver.ownership,
|
|
592
|
+
nativeProbe: options.driver.probeNative,
|
|
593
|
+
});
|
|
594
|
+
}, events, collisionMessage);
|
|
595
|
+
}
|
|
596
|
+
catch (error) {
|
|
597
|
+
return failed('reinstall', options.target, accumulator, 'preflight.inspect', errorMessage(error));
|
|
598
|
+
}
|
|
599
|
+
const collision = collisionMessage(inspection);
|
|
600
|
+
if (collision) {
|
|
601
|
+
recordInspectionResiduals(accumulator, inspection);
|
|
602
|
+
return failed('reinstall', options.target, accumulator, 'preflight.inspect', collision);
|
|
603
|
+
}
|
|
604
|
+
if (options.target.preApplySource.manifest.scripts?.preApply) {
|
|
605
|
+
try {
|
|
606
|
+
await action(accumulator, 'preApply', () => options.driver.runPreApply({
|
|
607
|
+
target: options.target,
|
|
608
|
+
plugin: options.target.preApplySource,
|
|
609
|
+
}), events);
|
|
610
|
+
}
|
|
611
|
+
catch (error) {
|
|
612
|
+
return failed('reinstall', options.target, accumulator, 'preApply', errorMessage(error), readSafeOperationError(error));
|
|
613
|
+
}
|
|
614
|
+
}
|
|
756
615
|
}
|
|
757
616
|
const cleanupResult = await executeCleanup({
|
|
758
617
|
command: 'reinstall',
|
|
759
618
|
target: options.target,
|
|
760
619
|
driver: options.driver,
|
|
761
|
-
store,
|
|
762
620
|
accumulator,
|
|
763
621
|
events,
|
|
764
622
|
});
|
|
@@ -766,14 +624,83 @@ async function executeRebuildOperationLocked(options, accumulator, store, events
|
|
|
766
624
|
return cleanupResult;
|
|
767
625
|
return materializeTarget({
|
|
768
626
|
command: 'reinstall',
|
|
769
|
-
lifecycleEvent: 'install',
|
|
770
627
|
target: options.target,
|
|
771
628
|
driver: options.driver,
|
|
772
|
-
store,
|
|
773
629
|
accumulator,
|
|
774
630
|
events,
|
|
631
|
+
inspection,
|
|
632
|
+
preApplyCompleted: true,
|
|
633
|
+
skipStaleCleanup: true,
|
|
775
634
|
});
|
|
776
635
|
}
|
|
636
|
+
export async function prepareRebuildOperation(options) {
|
|
637
|
+
const accumulator = createAccumulator();
|
|
638
|
+
const events = {
|
|
639
|
+
command: options.command,
|
|
640
|
+
target: options.target.identity,
|
|
641
|
+
emit: options.onActionEvent,
|
|
642
|
+
now: options.now ?? Date.now,
|
|
643
|
+
};
|
|
644
|
+
try {
|
|
645
|
+
validateDesiredTarget(options.target);
|
|
646
|
+
}
|
|
647
|
+
catch (error) {
|
|
648
|
+
return {
|
|
649
|
+
status: 'failed',
|
|
650
|
+
result: failed(options.command, options.target, accumulator, 'preflight', errorMessage(error)),
|
|
651
|
+
};
|
|
652
|
+
}
|
|
653
|
+
let inspection;
|
|
654
|
+
try {
|
|
655
|
+
inspection = await action(accumulator, 'preflight.inspect', async () => {
|
|
656
|
+
await options.driver.preflightMaterialize?.(options.target);
|
|
657
|
+
return inspectOwnedComponents({
|
|
658
|
+
components: options.deferNativeInspection
|
|
659
|
+
? options.target.ownedComponents.filter((component) => component.kind !== 'native-plugin')
|
|
660
|
+
: options.target.ownedComponents,
|
|
661
|
+
executor: options.driver.ownership,
|
|
662
|
+
nativeProbe: options.driver.probeNative,
|
|
663
|
+
});
|
|
664
|
+
}, events, collisionMessage);
|
|
665
|
+
}
|
|
666
|
+
catch (error) {
|
|
667
|
+
return {
|
|
668
|
+
status: 'failed',
|
|
669
|
+
result: failed(options.command, options.target, accumulator, 'preflight.inspect', errorMessage(error)),
|
|
670
|
+
};
|
|
671
|
+
}
|
|
672
|
+
const collision = collisionMessage(inspection);
|
|
673
|
+
if (collision) {
|
|
674
|
+
recordInspectionResiduals(accumulator, inspection);
|
|
675
|
+
return {
|
|
676
|
+
status: 'failed',
|
|
677
|
+
result: failed(options.command, options.target, accumulator, 'preflight.inspect', collision),
|
|
678
|
+
};
|
|
679
|
+
}
|
|
680
|
+
if (!options.skipPreApply && options.target.preApplySource.manifest.scripts?.preApply) {
|
|
681
|
+
try {
|
|
682
|
+
await action(accumulator, 'preApply', () => options.driver.runPreApply({
|
|
683
|
+
target: options.target,
|
|
684
|
+
plugin: options.target.preApplySource,
|
|
685
|
+
}), events);
|
|
686
|
+
}
|
|
687
|
+
catch (error) {
|
|
688
|
+
return {
|
|
689
|
+
status: 'failed',
|
|
690
|
+
result: failed(options.command, options.target, accumulator, 'preApply', errorMessage(error), readSafeOperationError(error)),
|
|
691
|
+
};
|
|
692
|
+
}
|
|
693
|
+
}
|
|
694
|
+
return {
|
|
695
|
+
status: 'ready',
|
|
696
|
+
preparation: {
|
|
697
|
+
command: options.command,
|
|
698
|
+
target: options.target,
|
|
699
|
+
inspection,
|
|
700
|
+
actions: accumulator.actions,
|
|
701
|
+
},
|
|
702
|
+
};
|
|
703
|
+
}
|
|
777
704
|
export async function executeRebuildTargets(options) {
|
|
778
705
|
const results = [];
|
|
779
706
|
for (const target of options.targets) {
|
|
@@ -781,11 +708,24 @@ export async function executeRebuildTargets(options) {
|
|
|
781
708
|
command: options.command,
|
|
782
709
|
target,
|
|
783
710
|
driver: options.driver,
|
|
784
|
-
activeStore: options.activeStore,
|
|
785
711
|
...(options.onActionEvent ? { onActionEvent: options.onActionEvent } : {}),
|
|
786
712
|
...(options.now ? { now: options.now } : {}),
|
|
787
713
|
}));
|
|
788
714
|
}
|
|
715
|
+
const postcheckFailures = await options.driver.completePostchecks?.() ?? [];
|
|
716
|
+
for (const failure of postcheckFailures) {
|
|
717
|
+
const index = results.findIndex((result) => result.target === failure.target.identity);
|
|
718
|
+
if (index === -1 || results[index].status === 'failed')
|
|
719
|
+
continue;
|
|
720
|
+
const result = results[index];
|
|
721
|
+
const message = errorMessage(failure.error);
|
|
722
|
+
result.failures.unshift({ phase: 'postcheck.inspect', message });
|
|
723
|
+
results[index] = {
|
|
724
|
+
...result,
|
|
725
|
+
status: 'failed',
|
|
726
|
+
error: { phase: 'postcheck.inspect', message },
|
|
727
|
+
};
|
|
728
|
+
}
|
|
789
729
|
return results;
|
|
790
730
|
}
|
|
791
731
|
//# sourceMappingURL=rebuild-operations.js.map
|