@lesliechan721/aw 0.1.0-beta.6 → 0.1.0-beta.61
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 +263 -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
|
@@ -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))
|
|
@@ -174,21 +72,23 @@ function mergeCleanup(accumulator, cleanup, phase) {
|
|
|
174
72
|
phase,
|
|
175
73
|
label: failure.label,
|
|
176
74
|
message: failure.message,
|
|
75
|
+
...(failure.operationDiagnostic ? { operationDiagnostic: failure.operationDiagnostic } : {}),
|
|
177
76
|
})));
|
|
178
77
|
}
|
|
179
78
|
function succeeded(command, target, accumulator) {
|
|
180
79
|
return { status: 'succeeded', command, target: target.identity, ...accumulator };
|
|
181
80
|
}
|
|
182
|
-
function failed(command, target, accumulator, phase, message) {
|
|
81
|
+
function failed(command, target, accumulator, phase, message, operationDiagnostic) {
|
|
82
|
+
operationDiagnostic ??= accumulator.failures.find((failure) => failure.phase === phase && failure.message === message)?.operationDiagnostic;
|
|
183
83
|
if (!accumulator.failures.some((failure) => failure.phase === phase && failure.message === message)) {
|
|
184
|
-
accumulator.failures.unshift({ phase, message });
|
|
84
|
+
accumulator.failures.unshift({ phase, message, ...(operationDiagnostic ? { operationDiagnostic } : {}) });
|
|
185
85
|
}
|
|
186
86
|
return {
|
|
187
87
|
status: 'failed',
|
|
188
88
|
command,
|
|
189
89
|
target: target.identity,
|
|
190
90
|
...accumulator,
|
|
191
|
-
error: { phase, message },
|
|
91
|
+
error: { phase, message, ...(operationDiagnostic ? { operationDiagnostic } : {}) },
|
|
192
92
|
};
|
|
193
93
|
}
|
|
194
94
|
async function action(accumulator, name, operation, events, failureMessage) {
|
|
@@ -259,10 +159,10 @@ function validateDesiredTarget(target) {
|
|
|
259
159
|
throw new Error('Desired target has an invalid namespaced source identity.');
|
|
260
160
|
}
|
|
261
161
|
if (target.plugin.manifest.name !== pluginName
|
|
262
|
-
|| target.
|
|
162
|
+
|| target.preApplySource.manifest.name !== pluginName
|
|
263
163
|
|| target.plugin.manifest.version !== pluginVersion
|
|
264
|
-
|| target.
|
|
265
|
-
throw new Error('Desired target plugin name/version does not match its
|
|
164
|
+
|| target.preApplySource.manifest.version !== pluginVersion) {
|
|
165
|
+
throw new Error('Desired target plugin name/version does not match its preApply source and identity.');
|
|
266
166
|
}
|
|
267
167
|
if (platform !== 'codex' && platform !== 'claude') {
|
|
268
168
|
throw new Error(`Desired target platform is invalid: ${String(platform)}`);
|
|
@@ -272,15 +172,26 @@ function validateDesiredTarget(target) {
|
|
|
272
172
|
}
|
|
273
173
|
const identityKeys = new Set();
|
|
274
174
|
const componentPaths = new Set();
|
|
175
|
+
const desiredComponents = target.desiredOwnedComponents ?? target.ownedComponents;
|
|
176
|
+
const desiredComponentSet = new Set(desiredComponents);
|
|
177
|
+
const sharedNativeSkillKeys = new Set((target.plugin.manifest.artifacts?.targets ?? [])
|
|
178
|
+
.filter((artifactTarget) => artifactTarget.platform === 'codex'
|
|
179
|
+
&& artifactTarget.target === 'codex.skill'
|
|
180
|
+
&& artifactTarget.delivery?.mode === 'codex-native')
|
|
181
|
+
.map((artifactTarget) => artifactTarget.skillKey));
|
|
275
182
|
let nativeCount = 0;
|
|
276
183
|
for (const component of target.ownedComponents) {
|
|
277
184
|
validateOwnerIdentity(component.identity);
|
|
185
|
+
const crossScopeLegacyNativeSkill = platform === 'codex'
|
|
186
|
+
&& component.kind === 'skill-directory'
|
|
187
|
+
&& !desiredComponentSet.has(component)
|
|
188
|
+
&& sharedNativeSkillKeys.has(component.identity.artifactKey)
|
|
189
|
+
&& component.identity.scope !== scope;
|
|
278
190
|
if (component.identity.plugin !== pluginName
|
|
279
191
|
|| component.identity.sourceId !== sourceId
|
|
280
|
-
|| component.identity.sourceIdentity !== sourceIdentity
|
|
281
192
|
|| component.identity.pluginId !== pluginId
|
|
282
193
|
|| component.identity.platform !== platform
|
|
283
|
-
|| component.identity.scope !== scope) {
|
|
194
|
+
|| (component.identity.scope !== scope && !crossScopeLegacyNativeSkill)) {
|
|
284
195
|
throw new Error('Owned component identity does not match the desired target.');
|
|
285
196
|
}
|
|
286
197
|
const identityKey = [
|
|
@@ -289,6 +200,7 @@ function validateDesiredTarget(target) {
|
|
|
289
200
|
component.identity.artifactKey,
|
|
290
201
|
component.identity.platform,
|
|
291
202
|
component.identity.scope,
|
|
203
|
+
component.kind,
|
|
292
204
|
].join('\0');
|
|
293
205
|
if (identityKeys.has(identityKey)) {
|
|
294
206
|
throw new Error(`Desired target has a duplicate owned component identity: ${component.identity.artifactKey}`);
|
|
@@ -308,7 +220,9 @@ function validateDesiredTarget(target) {
|
|
|
308
220
|
}
|
|
309
221
|
}
|
|
310
222
|
}
|
|
311
|
-
|
|
223
|
+
if (target.forceExclusiveCleanup && target.ownedComponents.some((component) => component.kind !== 'skill-directory' && component.kind !== 'owned-text-file')) {
|
|
224
|
+
throw new Error('Force cleanup only supports exclusive skill directories and owned text files.');
|
|
225
|
+
}
|
|
312
226
|
nativeCount = desiredComponents.filter((component) => component.kind === 'native-plugin').length;
|
|
313
227
|
if (target.requiresNative ? nativeCount !== 1 : nativeCount !== 0) {
|
|
314
228
|
throw new Error(target.requiresNative
|
|
@@ -334,7 +248,7 @@ function collisionMessage(inspection) {
|
|
|
334
248
|
if (inspection.errors.length > 0) {
|
|
335
249
|
return inspection.errors.map((error) => `${error.label}: ${error.message}`).join('; ');
|
|
336
250
|
}
|
|
337
|
-
const collision = inspection.components.find((component) => (component.state === 'partial' || component.state === 'error'));
|
|
251
|
+
const collision = inspection.components.find((component) => (component.state === 'partial' || component.state === 'foreign' || component.state === 'error'));
|
|
338
252
|
if (collision) {
|
|
339
253
|
return collision.diagnostic ?? 'Owned component preflight failed.';
|
|
340
254
|
}
|
|
@@ -353,7 +267,7 @@ function isUninstallLiveOwnershipComponent(component) {
|
|
|
353
267
|
}
|
|
354
268
|
function recordInspectionResiduals(accumulator, inspection) {
|
|
355
269
|
pushUnique(accumulator.residual, inspection.components
|
|
356
|
-
.filter((component) => component.state === 'partial' || component.state === 'error')
|
|
270
|
+
.filter((component) => (component.state === 'partial' || component.state === 'foreign' || component.state === 'error'))
|
|
357
271
|
.map((component) => ownedComponentLabel(component.component)));
|
|
358
272
|
}
|
|
359
273
|
function postcheckMessage(accumulator, inspection) {
|
|
@@ -371,6 +285,11 @@ function postcheckMessage(accumulator, inspection) {
|
|
|
371
285
|
})));
|
|
372
286
|
return inspection.errors.map((error) => `${error.label}: ${error.message}`).join('; ');
|
|
373
287
|
}
|
|
288
|
+
if (invalid.some((component) => component.state === 'partial'
|
|
289
|
+
&& component.component.kind === 'native-plugin'
|
|
290
|
+
&& component.component.identity.platform === 'codex')) {
|
|
291
|
+
return 'codexActivationPostcheckFailed: Codex scope activation was not observed as enabled.';
|
|
292
|
+
}
|
|
374
293
|
const diagnostics = invalid
|
|
375
294
|
.map((component) => component.diagnostic)
|
|
376
295
|
.filter((diagnostic) => diagnostic !== undefined);
|
|
@@ -378,17 +297,24 @@ function postcheckMessage(accumulator, inspection) {
|
|
|
378
297
|
return diagnostics.join('; ');
|
|
379
298
|
return `Post-install ownership inspection failed for ${invalid.length} component(s).`;
|
|
380
299
|
}
|
|
381
|
-
async function cleanupOwned(target, driver, components = target.ownedComponents) {
|
|
382
|
-
return
|
|
300
|
+
async function cleanupOwned(target, driver, components = target.ownedComponents, hooks = {}) {
|
|
301
|
+
return cleanupOwnedComponents({
|
|
383
302
|
components,
|
|
303
|
+
executor: driver.ownership,
|
|
384
304
|
nativeProbe: driver.probeNative,
|
|
385
305
|
nativeRemove: driver.removeNative,
|
|
386
|
-
|
|
306
|
+
forceExclusive: target.forceExclusiveCleanup,
|
|
307
|
+
...hooks,
|
|
308
|
+
beforeMutation: async (component) => {
|
|
309
|
+
await hooks.beforeMutation?.(component);
|
|
310
|
+
await driver.beforeCleanupMutation?.(component);
|
|
311
|
+
},
|
|
312
|
+
});
|
|
387
313
|
}
|
|
388
|
-
async function cleanupTarget(target, driver,
|
|
314
|
+
async function cleanupTarget(target, driver, accumulator, ownedAction, events, components = target.ownedComponents, hooks = {}) {
|
|
389
315
|
accumulator.cleanupAttempted = true;
|
|
390
316
|
try {
|
|
391
|
-
const cleanup = await action(accumulator, ownedAction, () => cleanupOwned(target, driver), events, (value) => value.failures[0]?.message
|
|
317
|
+
const cleanup = await action(accumulator, ownedAction, () => cleanupOwned(target, driver, components, hooks), events, (value) => value.failures[0]?.message
|
|
392
318
|
?? (value.residual.length > 0
|
|
393
319
|
? `Ownership cleanup left residual components: ${value.residual.join(', ')}`
|
|
394
320
|
: value.quarantined.length > 0
|
|
@@ -412,41 +338,64 @@ async function cleanupTarget(target, driver, store, accumulator, ownedAction, ev
|
|
|
412
338
|
accumulator.failures.push({ phase: ownedAction, message });
|
|
413
339
|
return { phase: ownedAction, message };
|
|
414
340
|
}
|
|
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
341
|
return null;
|
|
424
342
|
}
|
|
343
|
+
export async function executeRebuildComponentCleanup(options) {
|
|
344
|
+
const accumulator = createAccumulator();
|
|
345
|
+
accumulator.actions.push(...(options.actions ?? []));
|
|
346
|
+
const cleanupError = await cleanupTarget(options.target, options.driver, accumulator, 'cleanup.owned', {
|
|
347
|
+
command: options.command,
|
|
348
|
+
target: options.target.identity,
|
|
349
|
+
emit: options.onActionEvent,
|
|
350
|
+
now: options.now ?? Date.now,
|
|
351
|
+
}, options.components, {
|
|
352
|
+
...(options.beforeMutation ? { beforeMutation: options.beforeMutation } : {}),
|
|
353
|
+
...(options.afterQuarantine ? { afterQuarantine: options.afterQuarantine } : {}),
|
|
354
|
+
});
|
|
355
|
+
return cleanupError
|
|
356
|
+
? failed(options.command, options.target, accumulator, cleanupError.phase, cleanupError.message)
|
|
357
|
+
: succeeded(options.command, options.target, accumulator);
|
|
358
|
+
}
|
|
425
359
|
async function materializeTarget(options) {
|
|
426
|
-
const { command,
|
|
427
|
-
let inspection;
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
await
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
360
|
+
const { command, target, driver, accumulator, events } = options;
|
|
361
|
+
let inspection = options.inspection;
|
|
362
|
+
if (!inspection) {
|
|
363
|
+
try {
|
|
364
|
+
inspection = await action(accumulator, 'preflight.inspect', async () => {
|
|
365
|
+
await driver.preflightMaterialize?.(target);
|
|
366
|
+
return inspectOwnedComponents({
|
|
367
|
+
components: target.ownedComponents,
|
|
368
|
+
executor: driver.ownership,
|
|
369
|
+
nativeProbe: driver.probeNative,
|
|
370
|
+
});
|
|
371
|
+
}, events, collisionMessage);
|
|
372
|
+
}
|
|
373
|
+
catch (error) {
|
|
374
|
+
return failed(command, target, accumulator, 'preflight.inspect', errorMessage(error), readSafeOperationError(error));
|
|
375
|
+
}
|
|
439
376
|
}
|
|
440
377
|
const collision = collisionMessage(inspection);
|
|
441
378
|
if (collision) {
|
|
442
379
|
recordInspectionResiduals(accumulator, inspection);
|
|
443
380
|
return failed(command, target, accumulator, 'preflight.inspect', collision);
|
|
444
381
|
}
|
|
382
|
+
if (!options.preApplyCompleted && target.preApplySource.manifest.scripts?.preApply) {
|
|
383
|
+
try {
|
|
384
|
+
await action(accumulator, 'preApply', () => driver.runPreApply({
|
|
385
|
+
target,
|
|
386
|
+
plugin: target.preApplySource,
|
|
387
|
+
}), events);
|
|
388
|
+
}
|
|
389
|
+
catch (error) {
|
|
390
|
+
return failed(command, target, accumulator, 'preApply', errorMessage(error), readSafeOperationError(error));
|
|
391
|
+
}
|
|
392
|
+
}
|
|
445
393
|
const desiredComponents = new Set(target.desiredOwnedComponents ?? target.ownedComponents);
|
|
446
394
|
const optionalComponents = new Set(target.optionalOwnedComponents ?? []);
|
|
447
395
|
const staleComponents = target.ownedComponents.filter((component) => !desiredComponents.has(component) && !optionalComponents.has(component));
|
|
448
396
|
const staleInspection = inspection.components.filter((entry) => staleComponents.includes(entry.component));
|
|
449
|
-
if (
|
|
397
|
+
if (!options.skipStaleCleanup
|
|
398
|
+
&& staleInspection.some((component) => component.state === 'present')) {
|
|
450
399
|
accumulator.cleanupAttempted = true;
|
|
451
400
|
let stale;
|
|
452
401
|
try {
|
|
@@ -456,7 +405,7 @@ async function materializeTarget(options) {
|
|
|
456
405
|
: undefined));
|
|
457
406
|
}
|
|
458
407
|
catch (error) {
|
|
459
|
-
return failed(command, target, accumulator, 'stale.cleanup', errorMessage(error));
|
|
408
|
+
return failed(command, target, accumulator, 'stale.cleanup', errorMessage(error), readSafeOperationError(error));
|
|
460
409
|
}
|
|
461
410
|
mergeCleanup(accumulator, stale, 'stale.cleanup');
|
|
462
411
|
if (stale.failures.length > 0 || stale.residual.length > 0) {
|
|
@@ -466,9 +415,8 @@ async function materializeTarget(options) {
|
|
|
466
415
|
}
|
|
467
416
|
}
|
|
468
417
|
let failurePhase = 'native.write';
|
|
469
|
-
let prepared;
|
|
470
418
|
try {
|
|
471
|
-
if (target.requiresNative) {
|
|
419
|
+
if (target.writeNativeRequired ?? target.requiresNative) {
|
|
472
420
|
failurePhase = 'native.write';
|
|
473
421
|
await action(accumulator, failurePhase, () => driver.writeNative(target), events);
|
|
474
422
|
}
|
|
@@ -477,69 +425,43 @@ async function materializeTarget(options) {
|
|
|
477
425
|
const writtenArtifacts = await driver.writeArtifacts(target);
|
|
478
426
|
bindWrittenArtifacts(target, writtenArtifacts);
|
|
479
427
|
}, 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 () => {
|
|
428
|
+
const postcheck = () => action(accumulator, 'postcheck.inspect', async () => {
|
|
493
429
|
const optional = new Set(target.optionalOwnedComponents ?? []);
|
|
494
|
-
const postcheck = await
|
|
430
|
+
const postcheck = await inspectOwnedComponents({
|
|
495
431
|
components: (target.desiredOwnedComponents ?? target.ownedComponents)
|
|
496
432
|
.filter((component) => !optional.has(component)),
|
|
497
433
|
nativeProbe: driver.probeNativeHealth ?? driver.probeNative,
|
|
434
|
+
executor: driver.ownership,
|
|
498
435
|
verifyHealth: true,
|
|
499
|
-
})
|
|
436
|
+
});
|
|
500
437
|
const postcheckFailure = postcheckMessage(accumulator, postcheck);
|
|
501
438
|
if (postcheckFailure)
|
|
502
439
|
throw new Error(postcheckFailure);
|
|
503
440
|
}, events);
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
await
|
|
441
|
+
failurePhase = 'postcheck.inspect';
|
|
442
|
+
if (driver.deferPostcheck?.(target, postcheck) !== true) {
|
|
443
|
+
await postcheck();
|
|
507
444
|
}
|
|
508
445
|
return succeeded(command, target, accumulator);
|
|
509
446
|
}
|
|
510
447
|
catch (error) {
|
|
511
448
|
const primary = errorMessage(error);
|
|
512
|
-
if (error.
|
|
513
|
-
return failed(command, target, accumulator, failurePhase, primary);
|
|
449
|
+
if (error.nativeMarketplaceGroupFailure === true) {
|
|
450
|
+
return failed(command, target, accumulator, failurePhase, primary, readSafeOperationError(error));
|
|
514
451
|
}
|
|
515
|
-
if (
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
catch (discardError) {
|
|
520
|
-
accumulator.failures.push({
|
|
521
|
-
phase: 'active.discard',
|
|
522
|
-
message: errorMessage(discardError),
|
|
523
|
-
});
|
|
524
|
-
}
|
|
452
|
+
if (target.identity.platform === 'codex') {
|
|
453
|
+
const recoveryComponents = target.ownedComponents.filter((component) => component.kind === 'skill-directory' || component.kind === 'owned-text-file');
|
|
454
|
+
await cleanupTarget(target, driver, accumulator, 'recovery.cleanup', events, driver.selectRecoveryCleanupComponents?.(target, recoveryComponents)
|
|
455
|
+
?? recoveryComponents);
|
|
525
456
|
}
|
|
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
|
-
}
|
|
457
|
+
else {
|
|
458
|
+
await cleanupTarget(target, driver, accumulator, 'recovery.cleanup', events);
|
|
537
459
|
}
|
|
538
|
-
return failed(command, target, accumulator, failurePhase, primary);
|
|
460
|
+
return failed(command, target, accumulator, failurePhase, primary, readSafeOperationError(error));
|
|
539
461
|
}
|
|
540
462
|
}
|
|
541
463
|
async function executeCleanup(options) {
|
|
542
|
-
const cleanupError = await cleanupTarget(options.target, options.driver, options.
|
|
464
|
+
const cleanupError = await cleanupTarget(options.target, options.driver, options.accumulator, 'cleanup.owned', options.events);
|
|
543
465
|
if (cleanupError) {
|
|
544
466
|
return failed(options.command, options.target, options.accumulator, cleanupError.phase, cleanupError.message);
|
|
545
467
|
}
|
|
@@ -554,13 +476,14 @@ async function executeCleanup(options) {
|
|
|
554
476
|
return succeeded(options.command, options.target, options.accumulator);
|
|
555
477
|
}
|
|
556
478
|
async function executeUninstall(options) {
|
|
557
|
-
const { target, driver,
|
|
479
|
+
const { target, driver, accumulator, events } = options;
|
|
558
480
|
let inspection;
|
|
559
481
|
try {
|
|
560
|
-
inspection = await action(accumulator, 'preflight.inspect', () =>
|
|
482
|
+
inspection = await action(accumulator, 'preflight.inspect', () => inspectOwnedComponents({
|
|
561
483
|
components: target.ownedComponents,
|
|
484
|
+
executor: driver.ownership,
|
|
562
485
|
nativeProbe: driver.probeNative,
|
|
563
|
-
})
|
|
486
|
+
}), events, collisionMessage);
|
|
564
487
|
}
|
|
565
488
|
catch (error) {
|
|
566
489
|
return failed('uninstall', target, accumulator, 'preflight.inspect', errorMessage(error));
|
|
@@ -570,82 +493,13 @@ async function executeUninstall(options) {
|
|
|
570
493
|
recordInspectionResiduals(accumulator, inspection);
|
|
571
494
|
return failed('uninstall', target, accumulator, 'preflight.inspect', preflightCollision);
|
|
572
495
|
}
|
|
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'
|
|
496
|
+
const live = inspection.components.filter((component) => component.state !== 'absent'
|
|
606
497
|
&& isUninstallLiveOwnershipComponent(component.component));
|
|
607
|
-
if (live.length
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
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);
|
|
498
|
+
if (live.length > 0) {
|
|
499
|
+
const cleanupError = await cleanupTarget(target, driver, accumulator, 'cleanup.owned', events);
|
|
500
|
+
if (cleanupError) {
|
|
501
|
+
return failed('uninstall', target, accumulator, cleanupError.phase, cleanupError.message);
|
|
634
502
|
}
|
|
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);
|
|
647
|
-
if (cleanupError) {
|
|
648
|
-
return failed('uninstall', target, accumulator, cleanupError.phase, cleanupError.message);
|
|
649
503
|
}
|
|
650
504
|
if (driver.finalizeCleanup) {
|
|
651
505
|
try {
|
|
@@ -659,62 +513,62 @@ async function executeUninstall(options) {
|
|
|
659
513
|
}
|
|
660
514
|
export async function executeRebuildOperation(options) {
|
|
661
515
|
const accumulator = createAccumulator();
|
|
662
|
-
const store = options.activeStore;
|
|
663
516
|
const events = {
|
|
664
517
|
command: options.command,
|
|
665
518
|
target: options.target.identity,
|
|
666
519
|
emit: options.onActionEvent,
|
|
667
520
|
now: options.now ?? Date.now,
|
|
668
521
|
};
|
|
522
|
+
if (options.preparation) {
|
|
523
|
+
if (options.preparation.command !== options.command
|
|
524
|
+
|| options.preparation.target !== options.target) {
|
|
525
|
+
return failed(options.command, options.target, accumulator, 'preflight', 'Prepared rebuild operation does not match the requested target.');
|
|
526
|
+
}
|
|
527
|
+
accumulator.actions.push(...options.preparation.actions);
|
|
528
|
+
try {
|
|
529
|
+
await options.driver.preflightMutation?.(options.target);
|
|
530
|
+
}
|
|
531
|
+
catch (error) {
|
|
532
|
+
return failed(options.command, options.target, accumulator, 'preflight', errorMessage(error));
|
|
533
|
+
}
|
|
534
|
+
try {
|
|
535
|
+
return await executeRebuildOperationCore(options, accumulator, events, options.preparation);
|
|
536
|
+
}
|
|
537
|
+
catch (error) {
|
|
538
|
+
return failed(options.command, options.target, accumulator, 'preflight', errorMessage(error));
|
|
539
|
+
}
|
|
540
|
+
}
|
|
669
541
|
try {
|
|
670
542
|
validateDesiredTarget(options.target);
|
|
671
543
|
}
|
|
672
544
|
catch (error) {
|
|
673
545
|
return failed(options.command, options.target, accumulator, 'preflight', errorMessage(error));
|
|
674
546
|
}
|
|
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
547
|
try {
|
|
686
|
-
|
|
687
|
-
result = options.target.identity.sourceId !== undefined
|
|
688
|
-
? await (options.driver.withMaterializeLease?.(options.target, execute) ?? execute())
|
|
689
|
-
: await execute();
|
|
548
|
+
await options.driver.preflightMutation?.(options.target);
|
|
690
549
|
}
|
|
691
550
|
catch (error) {
|
|
692
|
-
|
|
551
|
+
return failed(options.command, options.target, accumulator, 'preflight', errorMessage(error));
|
|
693
552
|
}
|
|
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
|
-
}
|
|
553
|
+
try {
|
|
554
|
+
return await executeRebuildOperationCore(options, accumulator, events);
|
|
555
|
+
}
|
|
556
|
+
catch (error) {
|
|
557
|
+
return failed(options.command, options.target, accumulator, 'preflight', errorMessage(error));
|
|
705
558
|
}
|
|
706
|
-
return result;
|
|
707
559
|
}
|
|
708
|
-
async function
|
|
709
|
-
if (options.command === 'install'
|
|
560
|
+
async function executeRebuildOperationCore(options, accumulator, events, preparation) {
|
|
561
|
+
if (options.command === 'install') {
|
|
710
562
|
return materializeTarget({
|
|
711
563
|
command: options.command,
|
|
712
|
-
lifecycleEvent: options.command,
|
|
713
564
|
target: options.target,
|
|
714
565
|
driver: options.driver,
|
|
715
|
-
store,
|
|
716
566
|
accumulator,
|
|
717
567
|
events,
|
|
568
|
+
...(preparation ? {
|
|
569
|
+
inspection: preparation.inspection,
|
|
570
|
+
preApplyCompleted: true,
|
|
571
|
+
} : {}),
|
|
718
572
|
});
|
|
719
573
|
}
|
|
720
574
|
if (options.command === 'cleanup') {
|
|
@@ -722,7 +576,6 @@ async function executeRebuildOperationLocked(options, accumulator, store, events
|
|
|
722
576
|
command: 'cleanup',
|
|
723
577
|
target: options.target,
|
|
724
578
|
driver: options.driver,
|
|
725
|
-
store,
|
|
726
579
|
accumulator,
|
|
727
580
|
events,
|
|
728
581
|
});
|
|
@@ -731,34 +584,46 @@ async function executeRebuildOperationLocked(options, accumulator, store, events
|
|
|
731
584
|
return executeUninstall({
|
|
732
585
|
target: options.target,
|
|
733
586
|
driver: options.driver,
|
|
734
|
-
store,
|
|
735
587
|
accumulator,
|
|
736
588
|
events,
|
|
737
589
|
});
|
|
738
590
|
}
|
|
739
|
-
let inspection;
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
await
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
591
|
+
let inspection = preparation?.inspection;
|
|
592
|
+
if (!inspection) {
|
|
593
|
+
try {
|
|
594
|
+
inspection = await action(accumulator, 'preflight.inspect', async () => {
|
|
595
|
+
await options.driver.preflightMaterialize?.(options.target);
|
|
596
|
+
return inspectOwnedComponents({
|
|
597
|
+
components: options.target.ownedComponents,
|
|
598
|
+
executor: options.driver.ownership,
|
|
599
|
+
nativeProbe: options.driver.probeNative,
|
|
600
|
+
});
|
|
601
|
+
}, events, collisionMessage);
|
|
602
|
+
}
|
|
603
|
+
catch (error) {
|
|
604
|
+
return failed('reinstall', options.target, accumulator, 'preflight.inspect', errorMessage(error));
|
|
605
|
+
}
|
|
606
|
+
const collision = collisionMessage(inspection);
|
|
607
|
+
if (collision) {
|
|
608
|
+
recordInspectionResiduals(accumulator, inspection);
|
|
609
|
+
return failed('reinstall', options.target, accumulator, 'preflight.inspect', collision);
|
|
610
|
+
}
|
|
611
|
+
if (options.target.preApplySource.manifest.scripts?.preApply) {
|
|
612
|
+
try {
|
|
613
|
+
await action(accumulator, 'preApply', () => options.driver.runPreApply({
|
|
614
|
+
target: options.target,
|
|
615
|
+
plugin: options.target.preApplySource,
|
|
616
|
+
}), events);
|
|
617
|
+
}
|
|
618
|
+
catch (error) {
|
|
619
|
+
return failed('reinstall', options.target, accumulator, 'preApply', errorMessage(error), readSafeOperationError(error));
|
|
620
|
+
}
|
|
621
|
+
}
|
|
756
622
|
}
|
|
757
623
|
const cleanupResult = await executeCleanup({
|
|
758
624
|
command: 'reinstall',
|
|
759
625
|
target: options.target,
|
|
760
626
|
driver: options.driver,
|
|
761
|
-
store,
|
|
762
627
|
accumulator,
|
|
763
628
|
events,
|
|
764
629
|
});
|
|
@@ -766,14 +631,83 @@ async function executeRebuildOperationLocked(options, accumulator, store, events
|
|
|
766
631
|
return cleanupResult;
|
|
767
632
|
return materializeTarget({
|
|
768
633
|
command: 'reinstall',
|
|
769
|
-
lifecycleEvent: 'install',
|
|
770
634
|
target: options.target,
|
|
771
635
|
driver: options.driver,
|
|
772
|
-
store,
|
|
773
636
|
accumulator,
|
|
774
637
|
events,
|
|
638
|
+
inspection,
|
|
639
|
+
preApplyCompleted: true,
|
|
640
|
+
skipStaleCleanup: true,
|
|
775
641
|
});
|
|
776
642
|
}
|
|
643
|
+
export async function prepareRebuildOperation(options) {
|
|
644
|
+
const accumulator = createAccumulator();
|
|
645
|
+
const events = {
|
|
646
|
+
command: options.command,
|
|
647
|
+
target: options.target.identity,
|
|
648
|
+
emit: options.onActionEvent,
|
|
649
|
+
now: options.now ?? Date.now,
|
|
650
|
+
};
|
|
651
|
+
try {
|
|
652
|
+
validateDesiredTarget(options.target);
|
|
653
|
+
}
|
|
654
|
+
catch (error) {
|
|
655
|
+
return {
|
|
656
|
+
status: 'failed',
|
|
657
|
+
result: failed(options.command, options.target, accumulator, 'preflight', errorMessage(error)),
|
|
658
|
+
};
|
|
659
|
+
}
|
|
660
|
+
let inspection;
|
|
661
|
+
try {
|
|
662
|
+
inspection = await action(accumulator, 'preflight.inspect', async () => {
|
|
663
|
+
await options.driver.preflightMaterialize?.(options.target);
|
|
664
|
+
return inspectOwnedComponents({
|
|
665
|
+
components: options.deferNativeInspection
|
|
666
|
+
? options.target.ownedComponents.filter((component) => component.kind !== 'native-plugin')
|
|
667
|
+
: options.target.ownedComponents,
|
|
668
|
+
executor: options.driver.ownership,
|
|
669
|
+
nativeProbe: options.driver.probeNative,
|
|
670
|
+
});
|
|
671
|
+
}, events, collisionMessage);
|
|
672
|
+
}
|
|
673
|
+
catch (error) {
|
|
674
|
+
return {
|
|
675
|
+
status: 'failed',
|
|
676
|
+
result: failed(options.command, options.target, accumulator, 'preflight.inspect', errorMessage(error)),
|
|
677
|
+
};
|
|
678
|
+
}
|
|
679
|
+
const collision = collisionMessage(inspection);
|
|
680
|
+
if (collision) {
|
|
681
|
+
recordInspectionResiduals(accumulator, inspection);
|
|
682
|
+
return {
|
|
683
|
+
status: 'failed',
|
|
684
|
+
result: failed(options.command, options.target, accumulator, 'preflight.inspect', collision),
|
|
685
|
+
};
|
|
686
|
+
}
|
|
687
|
+
if (!options.skipPreApply && options.target.preApplySource.manifest.scripts?.preApply) {
|
|
688
|
+
try {
|
|
689
|
+
await action(accumulator, 'preApply', () => options.driver.runPreApply({
|
|
690
|
+
target: options.target,
|
|
691
|
+
plugin: options.target.preApplySource,
|
|
692
|
+
}), events);
|
|
693
|
+
}
|
|
694
|
+
catch (error) {
|
|
695
|
+
return {
|
|
696
|
+
status: 'failed',
|
|
697
|
+
result: failed(options.command, options.target, accumulator, 'preApply', errorMessage(error), readSafeOperationError(error)),
|
|
698
|
+
};
|
|
699
|
+
}
|
|
700
|
+
}
|
|
701
|
+
return {
|
|
702
|
+
status: 'ready',
|
|
703
|
+
preparation: {
|
|
704
|
+
command: options.command,
|
|
705
|
+
target: options.target,
|
|
706
|
+
inspection,
|
|
707
|
+
actions: accumulator.actions,
|
|
708
|
+
},
|
|
709
|
+
};
|
|
710
|
+
}
|
|
777
711
|
export async function executeRebuildTargets(options) {
|
|
778
712
|
const results = [];
|
|
779
713
|
for (const target of options.targets) {
|
|
@@ -781,11 +715,24 @@ export async function executeRebuildTargets(options) {
|
|
|
781
715
|
command: options.command,
|
|
782
716
|
target,
|
|
783
717
|
driver: options.driver,
|
|
784
|
-
activeStore: options.activeStore,
|
|
785
718
|
...(options.onActionEvent ? { onActionEvent: options.onActionEvent } : {}),
|
|
786
719
|
...(options.now ? { now: options.now } : {}),
|
|
787
720
|
}));
|
|
788
721
|
}
|
|
722
|
+
const postcheckFailures = await options.driver.completePostchecks?.() ?? [];
|
|
723
|
+
for (const failure of postcheckFailures) {
|
|
724
|
+
const index = results.findIndex((result) => result.target === failure.target.identity);
|
|
725
|
+
if (index === -1 || results[index].status === 'failed')
|
|
726
|
+
continue;
|
|
727
|
+
const result = results[index];
|
|
728
|
+
const message = errorMessage(failure.error);
|
|
729
|
+
result.failures.unshift({ phase: 'postcheck.inspect', message });
|
|
730
|
+
results[index] = {
|
|
731
|
+
...result,
|
|
732
|
+
status: 'failed',
|
|
733
|
+
error: { phase: 'postcheck.inspect', message },
|
|
734
|
+
};
|
|
735
|
+
}
|
|
789
736
|
return results;
|
|
790
737
|
}
|
|
791
738
|
//# sourceMappingURL=rebuild-operations.js.map
|