@lesliechan721/aw 0.1.0-beta.5 → 0.1.0-beta.50
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/authoring/assets/aw-config.mjs +100 -501
- package/dist/authoring/assets/aw-config.mjs.map +1 -1
- package/dist/authoring/assets/aw-runtime-config.d.mts +13 -0
- package/dist/authoring/assets/aw-runtime-config.mjs +199 -0
- package/dist/authoring/assets/aw-runtime-config.mjs.map +1 -0
- package/dist/authoring/scripts/add-skill.mjs +4 -4
- package/dist/authoring/scripts/add-skill.mjs.map +1 -1
- package/dist/authoring/scripts/init-plugin.mjs +67 -97
- package/dist/authoring/scripts/init-plugin.mjs.map +1 -1
- package/dist/authoring/scripts/lib/plugin-root.mjs +4 -4
- package/dist/authoring/scripts/lib/plugin-root.mjs.map +1 -1
- package/dist/authoring/scripts/lib/plugin-version-check.d.mts +1 -0
- package/dist/authoring/scripts/lib/plugin-version-check.mjs +229 -8
- package/dist/authoring/scripts/lib/plugin-version-check.mjs.map +1 -1
- package/dist/authoring/scripts/lib/skill-scaffold.d.mts +77 -90
- package/dist/authoring/scripts/lib/skill-scaffold.mjs +99 -120
- package/dist/authoring/scripts/lib/skill-scaffold.mjs.map +1 -1
- package/dist/authoring/scripts/plugin-status.mjs +8 -11
- package/dist/authoring/scripts/plugin-status.mjs.map +1 -1
- package/dist/authoring/scripts/remove-plugin.mjs +3 -2
- package/dist/authoring/scripts/remove-plugin.mjs.map +1 -1
- package/dist/authoring/scripts/validate-plugin.mjs +346 -1131
- package/dist/authoring/scripts/validate-plugin.mjs.map +1 -1
- package/dist/scripts/aw-skill-eval-materializer.d.ts +26 -0
- package/dist/scripts/aw-skill-eval-materializer.js +306 -0
- package/dist/scripts/aw-skill-eval-materializer.js.map +1 -0
- package/dist/scripts/bundle-plugins.d.ts +1 -0
- package/dist/scripts/bundle-plugins.js +20 -5
- package/dist/scripts/bundle-plugins.js.map +1 -1
- package/dist/scripts/plugin-staging.d.ts +7 -9
- package/dist/scripts/plugin-staging.js +18 -29
- package/dist/scripts/plugin-staging.js.map +1 -1
- package/dist/scripts/test-plugin-scripts.d.ts +2 -0
- package/dist/scripts/test-plugin-scripts.js +47 -76
- package/dist/scripts/test-plugin-scripts.js.map +1 -1
- package/dist/scripts/test-workers.d.mts +24 -0
- package/dist/scripts/test-workers.mjs +59 -0
- package/dist/scripts/test-workers.mjs.map +1 -0
- package/dist/src/adapters/helpers.js +2 -2
- package/dist/src/adapters/helpers.js.map +1 -1
- package/dist/src/authoring/workspace-commands.d.ts +17 -1
- package/dist/src/authoring/workspace-commands.js +21 -4
- package/dist/src/authoring/workspace-commands.js.map +1 -1
- package/dist/src/commands/aw-capabilities.d.ts +78 -0
- package/dist/src/commands/aw-capabilities.js +264 -0
- package/dist/src/commands/aw-capabilities.js.map +1 -0
- package/dist/src/commands/catalog-dev-source.d.ts +154 -0
- package/dist/src/commands/catalog-dev-source.js +655 -0
- package/dist/src/commands/catalog-dev-source.js.map +1 -0
- package/dist/src/commands/catalog-generation.d.ts +21 -0
- package/dist/src/commands/catalog-generation.js +9 -0
- package/dist/src/commands/catalog-generation.js.map +1 -0
- package/dist/src/commands/catalog-publication-inspection.d.ts +71 -30
- package/dist/src/commands/catalog-publication-inspection.js +475 -63
- package/dist/src/commands/catalog-publication-inspection.js.map +1 -1
- package/dist/src/commands/catalog-publication-journal.d.ts +68 -0
- package/dist/src/commands/catalog-publication-journal.js +292 -0
- package/dist/src/commands/catalog-publication-journal.js.map +1 -0
- package/dist/src/commands/catalog-publication-target.d.ts +18 -0
- package/dist/src/commands/catalog-publication-target.js +95 -0
- package/dist/src/commands/catalog-publication-target.js.map +1 -0
- package/dist/src/commands/catalog-publish.d.ts +73 -15
- package/dist/src/commands/catalog-publish.js +701 -212
- package/dist/src/commands/catalog-publish.js.map +1 -1
- package/dist/src/commands/catalog-source.d.ts +60 -22
- package/dist/src/commands/catalog-source.js +311 -91
- package/dist/src/commands/catalog-source.js.map +1 -1
- package/dist/src/commands/catalog-status.d.ts +18 -22
- package/dist/src/commands/catalog-status.js +81 -115
- package/dist/src/commands/catalog-status.js.map +1 -1
- package/dist/src/commands/catalog-store.d.ts +104 -0
- package/dist/src/commands/catalog-store.js +685 -0
- package/dist/src/commands/catalog-store.js.map +1 -0
- package/dist/src/commands/catalog-workspace-resolution.d.ts +13 -0
- package/dist/src/commands/catalog-workspace-resolution.js +42 -0
- package/dist/src/commands/catalog-workspace-resolution.js.map +1 -0
- package/dist/src/commands/console.js +28 -17
- package/dist/src/commands/console.js.map +1 -1
- package/dist/src/commands/dependency-operation-plan.d.ts +52 -15
- package/dist/src/commands/dependency-operation-plan.js +289 -7
- package/dist/src/commands/dependency-operation-plan.js.map +1 -1
- package/dist/src/commands/init.d.ts +5 -11
- package/dist/src/commands/init.js +30 -51
- package/dist/src/commands/init.js.map +1 -1
- package/dist/src/commands/offline-cleanup-evidence.d.ts +67 -0
- package/dist/src/commands/offline-cleanup-evidence.js +181 -0
- package/dist/src/commands/offline-cleanup-evidence.js.map +1 -0
- package/dist/src/commands/operation-plan.d.ts +146 -0
- package/dist/src/commands/operation-plan.js +71 -0
- package/dist/src/commands/operation-plan.js.map +1 -0
- package/dist/src/commands/operation-planner.d.ts +46 -0
- package/dist/src/commands/operation-planner.js +141 -0
- package/dist/src/commands/operation-planner.js.map +1 -0
- package/dist/src/commands/options.d.ts +9 -7
- package/dist/src/commands/options.js +83 -21
- package/dist/src/commands/options.js.map +1 -1
- package/dist/src/commands/plugin-capabilities.js +23 -3
- package/dist/src/commands/plugin-capabilities.js.map +1 -1
- package/dist/src/commands/rebuild-command.d.ts +77 -31
- package/dist/src/commands/rebuild-command.js +4862 -729
- package/dist/src/commands/rebuild-command.js.map +1 -1
- package/dist/src/commands/rebuild-integration.d.ts +131 -21
- package/dist/src/commands/rebuild-integration.js +2866 -1339
- package/dist/src/commands/rebuild-integration.js.map +1 -1
- package/dist/src/commands/rebuild-operations.d.ts +58 -30
- package/dist/src/commands/rebuild-operations.js +260 -319
- package/dist/src/commands/rebuild-operations.js.map +1 -1
- package/dist/src/commands/reconcile-operation-plan.d.ts +28 -0
- package/dist/src/commands/reconcile-operation-plan.js +47 -0
- package/dist/src/commands/reconcile-operation-plan.js.map +1 -0
- package/dist/src/commands/review-inspection.d.ts +228 -0
- package/dist/src/commands/review-inspection.js +1341 -0
- package/dist/src/commands/review-inspection.js.map +1 -0
- package/dist/src/commands/review-preparation.d.ts +49 -0
- package/dist/src/commands/review-preparation.js +427 -0
- package/dist/src/commands/review-preparation.js.map +1 -0
- package/dist/src/commands/runtime.d.ts +1 -5
- package/dist/src/commands/runtime.js +24 -50
- package/dist/src/commands/runtime.js.map +1 -1
- package/dist/src/commands/skill-eval.d.ts +39 -0
- package/dist/src/commands/skill-eval.js +400 -0
- package/dist/src/commands/skill-eval.js.map +1 -0
- package/dist/src/commands/status-v6.d.ts +279 -0
- package/dist/src/commands/status-v6.js +2787 -0
- package/dist/src/commands/status-v6.js.map +1 -0
- package/dist/src/commands/sync-command.d.ts +40 -0
- package/dist/src/commands/sync-command.js +250 -0
- package/dist/src/commands/sync-command.js.map +1 -0
- package/dist/src/commands/wizard.d.ts +8 -5
- package/dist/src/commands/wizard.js +6 -4
- package/dist/src/commands/wizard.js.map +1 -1
- package/dist/src/commands/write-commands.d.ts +9 -3
- package/dist/src/commands/write-commands.js +127 -31
- package/dist/src/commands/write-commands.js.map +1 -1
- package/dist/src/constants.d.ts +7 -1
- package/dist/src/constants.js +7 -1
- package/dist/src/constants.js.map +1 -1
- package/dist/src/eval/manifest-v1.d.ts +71 -0
- package/dist/src/eval/manifest-v1.js +370 -0
- package/dist/src/eval/manifest-v1.js.map +1 -0
- package/dist/src/generators/local-plugin.d.ts +5 -1
- package/dist/src/generators/local-plugin.js +236 -109
- package/dist/src/generators/local-plugin.js.map +1 -1
- package/dist/src/index.d.ts +10 -4
- package/dist/src/index.js +1793 -486
- package/dist/src/index.js.map +1 -1
- package/dist/src/output/command-receipt.d.ts +43 -46
- package/dist/src/output/command-receipt.js +256 -80
- package/dist/src/output/command-receipt.js.map +1 -1
- package/dist/src/output/model.d.ts +3 -44
- package/dist/src/output/model.js +1 -144
- package/dist/src/output/model.js.map +1 -1
- package/dist/src/output/rebuild-progress.js +1 -13
- package/dist/src/output/rebuild-progress.js.map +1 -1
- package/dist/src/portable/commands.d.ts +46 -7
- package/dist/src/portable/commands.js +349 -37
- package/dist/src/portable/commands.js.map +1 -1
- package/dist/src/portable/materializer.d.ts +17 -4
- package/dist/src/portable/materializer.js +179 -41
- package/dist/src/portable/materializer.js.map +1 -1
- package/dist/src/portable/skills-cli.d.ts +15 -7
- package/dist/src/portable/skills-cli.js +74 -20
- package/dist/src/portable/skills-cli.js.map +1 -1
- package/dist/src/review/eval-source-input.d.ts +43 -0
- package/dist/src/review/eval-source-input.js +207 -0
- package/dist/src/review/eval-source-input.js.map +1 -0
- package/dist/src/review/review-profile.d.ts +17 -0
- package/dist/src/review/review-profile.js +234 -0
- package/dist/src/review/review-profile.js.map +1 -0
- package/dist/src/review/review-selection.d.ts +30 -0
- package/dist/src/review/review-selection.js +527 -0
- package/dist/src/review/review-selection.js.map +1 -0
- package/dist/src/review/review-types.d.ts +68 -0
- package/dist/src/review/review-types.js +16 -0
- package/dist/src/review/review-types.js.map +1 -0
- package/dist/src/review/skill-materialization.d.ts +13 -0
- package/dist/src/review/skill-materialization.js +75 -0
- package/dist/src/review/skill-materialization.js.map +1 -0
- package/dist/src/review/source-binding.d.ts +183 -0
- package/dist/src/review/source-binding.js +708 -0
- package/dist/src/review/source-binding.js.map +1 -0
- package/dist/src/tui/catalog-freshness.d.ts +1 -0
- package/dist/src/tui/catalog-freshness.js +2 -0
- package/dist/src/tui/catalog-freshness.js.map +1 -0
- package/dist/src/tui/catalog-generation.d.ts +21 -0
- package/dist/src/tui/catalog-generation.js +156 -0
- package/dist/src/tui/catalog-generation.js.map +1 -0
- package/dist/src/tui/catalog-sources/projection.d.ts +4 -0
- package/dist/src/tui/catalog-sources/projection.js +17 -0
- package/dist/src/tui/catalog-sources/projection.js.map +1 -0
- package/dist/src/tui/catalog-sources/review.d.ts +3 -0
- package/dist/src/tui/catalog-sources/review.js +13 -0
- package/dist/src/tui/catalog-sources/review.js.map +1 -0
- package/dist/src/tui/catalog-sources/screens.d.ts +12 -0
- package/dist/src/tui/catalog-sources/screens.js +40 -0
- package/dist/src/tui/catalog-sources/screens.js.map +1 -0
- package/dist/src/tui/catalog-sources/session.d.ts +32 -0
- package/dist/src/tui/catalog-sources/session.js +300 -0
- package/dist/src/tui/catalog-sources/session.js.map +1 -0
- package/dist/src/tui/catalog-sources/types.d.ts +54 -0
- package/dist/src/tui/catalog-sources/types.js +2 -0
- package/dist/src/tui/catalog-sources/types.js.map +1 -0
- package/dist/src/tui/catalog-store-task.d.ts +16 -0
- package/dist/src/tui/catalog-store-task.js +19 -0
- package/dist/src/tui/catalog-store-task.js.map +1 -0
- package/dist/src/tui/clipboard.d.ts +13 -0
- package/dist/src/tui/clipboard.js +95 -0
- package/dist/src/tui/clipboard.js.map +1 -0
- package/dist/src/tui/components.d.ts +110 -3
- package/dist/src/tui/components.js +183 -36
- package/dist/src/tui/components.js.map +1 -1
- package/dist/src/tui/config-array-draft.d.ts +29 -0
- package/dist/src/tui/config-array-draft.js +48 -0
- package/dist/src/tui/config-array-draft.js.map +1 -0
- package/dist/src/tui/config-leaf-editor.d.ts +16 -0
- package/dist/src/tui/config-leaf-editor.js +206 -0
- package/dist/src/tui/config-leaf-editor.js.map +1 -0
- package/dist/src/tui/config-value-presentation.d.ts +20 -0
- package/dist/src/tui/config-value-presentation.js +104 -0
- package/dist/src/tui/config-value-presentation.js.map +1 -0
- package/dist/src/tui/console-app-v4.d.ts +14 -4
- package/dist/src/tui/console-app-v4.js +8941 -1872
- package/dist/src/tui/console-app-v4.js.map +1 -1
- package/dist/src/tui/content-item-card.d.ts +13 -0
- package/dist/src/tui/content-item-card.js +51 -0
- package/dist/src/tui/content-item-card.js.map +1 -0
- package/dist/src/tui/controller-runtime.d.ts +10 -2
- package/dist/src/tui/controller-runtime.js +3211 -388
- package/dist/src/tui/controller-runtime.js.map +1 -1
- package/dist/src/tui/controller.d.ts +615 -45
- package/dist/src/tui/controller.js +3558 -768
- package/dist/src/tui/controller.js.map +1 -1
- package/dist/src/tui/dependency-graph-view.d.ts +39 -0
- package/dist/src/tui/dependency-graph-view.js +121 -0
- package/dist/src/tui/dependency-graph-view.js.map +1 -0
- package/dist/src/tui/dependency-graph.d.ts +81 -0
- package/dist/src/tui/dependency-graph.js +452 -0
- package/dist/src/tui/dependency-graph.js.map +1 -0
- package/dist/src/tui/diagnostic-projection.d.ts +23 -0
- package/dist/src/tui/diagnostic-projection.js +567 -0
- package/dist/src/tui/diagnostic-projection.js.map +1 -0
- package/dist/src/tui/diagnostics.d.ts +3 -3
- package/dist/src/tui/diagnostics.js +14 -2
- package/dist/src/tui/diagnostics.js.map +1 -1
- package/dist/src/tui/entity-cards.d.ts +55 -0
- package/dist/src/tui/entity-cards.js +220 -0
- package/dist/src/tui/entity-cards.js.map +1 -0
- package/dist/src/tui/glossary.d.ts +23 -0
- package/dist/src/tui/glossary.js +42 -0
- package/dist/src/tui/glossary.js.map +1 -0
- package/dist/src/tui/index.d.ts +6 -1
- package/dist/src/tui/index.js +5 -1
- package/dist/src/tui/index.js.map +1 -1
- package/dist/src/tui/input-display.d.ts +9 -0
- package/dist/src/tui/input-display.js +58 -0
- package/dist/src/tui/input-display.js.map +1 -0
- package/dist/src/tui/keys.d.ts +44 -0
- package/dist/src/tui/keys.js +43 -15
- package/dist/src/tui/keys.js.map +1 -1
- package/dist/src/tui/lifecycle-action-view.d.ts +6 -0
- package/dist/src/tui/lifecycle-action-view.js +36 -0
- package/dist/src/tui/lifecycle-action-view.js.map +1 -0
- package/dist/src/tui/model.d.ts +223 -31
- package/dist/src/tui/model.js +1510 -397
- package/dist/src/tui/model.js.map +1 -1
- package/dist/src/tui/operation-diagnostic-screens.d.ts +8 -0
- package/dist/src/tui/operation-diagnostic-screens.js +71 -0
- package/dist/src/tui/operation-diagnostic-screens.js.map +1 -0
- package/dist/src/tui/operation-history.d.ts +81 -0
- package/dist/src/tui/operation-history.js +136 -0
- package/dist/src/tui/operation-history.js.map +1 -0
- package/dist/src/tui/operation-review-planner.d.ts +21 -0
- package/dist/src/tui/operation-review-planner.js +1295 -0
- package/dist/src/tui/operation-review-planner.js.map +1 -0
- package/dist/src/tui/plugin-content.d.ts +31 -0
- package/dist/src/tui/plugin-content.js +680 -0
- package/dist/src/tui/plugin-content.js.map +1 -0
- package/dist/src/tui/plugin-detail.d.ts +52 -0
- package/dist/src/tui/plugin-detail.js +165 -0
- package/dist/src/tui/plugin-detail.js.map +1 -0
- package/dist/src/tui/plugin-write-task.d.ts +69 -0
- package/dist/src/tui/plugin-write-task.js +286 -0
- package/dist/src/tui/plugin-write-task.js.map +1 -0
- package/dist/src/tui/project-inventory.d.ts +68 -0
- package/dist/src/tui/project-inventory.js +203 -0
- package/dist/src/tui/project-inventory.js.map +1 -0
- package/dist/src/tui/prompt.js +4 -15
- package/dist/src/tui/prompt.js.map +1 -1
- package/dist/src/tui/query-header.d.ts +30 -0
- package/dist/src/tui/query-header.js +40 -0
- package/dist/src/tui/query-header.js.map +1 -0
- package/dist/src/tui/reader.d.ts +37 -0
- package/dist/src/tui/reader.js +47 -0
- package/dist/src/tui/reader.js.map +1 -0
- package/dist/src/tui/router.d.ts +197 -10
- package/dist/src/tui/router.js +338 -50
- package/dist/src/tui/router.js.map +1 -1
- package/dist/src/tui/screen-registry.d.ts +701 -0
- package/dist/src/tui/screen-registry.js +230 -0
- package/dist/src/tui/screen-registry.js.map +1 -0
- package/dist/src/tui/session-console-app.d.ts +6 -0
- package/dist/src/tui/session-console-app.js +13 -0
- package/dist/src/tui/session-console-app.js.map +1 -0
- package/dist/src/tui/session-host.d.ts +45 -0
- package/dist/src/tui/session-host.js +209 -0
- package/dist/src/tui/session-host.js.map +1 -0
- package/dist/src/tui/source-detail-card.d.ts +29 -0
- package/dist/src/tui/source-detail-card.js +45 -0
- package/dist/src/tui/source-detail-card.js.map +1 -0
- package/dist/src/tui/source-ref-presets.d.ts +3 -0
- package/dist/src/tui/source-ref-presets.js +11 -0
- package/dist/src/tui/source-ref-presets.js.map +1 -0
- package/dist/src/tui/theme.d.ts +12 -0
- package/dist/src/tui/theme.js +12 -0
- package/dist/src/tui/theme.js.map +1 -1
- package/dist/src/tui/viewport.d.ts +1 -0
- package/dist/src/tui/viewport.js +23 -0
- package/dist/src/tui/viewport.js.map +1 -1
- package/dist/src/tui/views.js +31 -3
- package/dist/src/tui/views.js.map +1 -1
- package/dist/src/tui/wizard.js +37 -13
- package/dist/src/tui/wizard.js.map +1 -1
- package/dist/src/types.d.ts +244 -20
- package/dist/src/types.js +1 -0
- package/dist/src/types.js.map +1 -1
- package/dist/src/utils/agent-version.d.ts +7 -1
- package/dist/src/utils/agent-version.js +41 -8
- package/dist/src/utils/agent-version.js.map +1 -1
- package/dist/src/utils/artifact-plan.d.ts +5 -4
- package/dist/src/utils/artifact-plan.js +18 -7
- package/dist/src/utils/artifact-plan.js.map +1 -1
- package/dist/src/utils/artifact-renderer.d.ts +17 -7
- package/dist/src/utils/artifact-renderer.js +214 -216
- package/dist/src/utils/artifact-renderer.js.map +1 -1
- package/dist/src/utils/artifact-request.d.ts +21 -0
- package/dist/src/utils/artifact-request.js +78 -0
- package/dist/src/utils/artifact-request.js.map +1 -0
- package/dist/src/utils/aw-home-mutation-lock.d.ts +1 -0
- package/dist/src/utils/aw-home-mutation-lock.js +32 -4
- package/dist/src/utils/aw-home-mutation-lock.js.map +1 -1
- package/dist/src/utils/bundle-integrity.d.ts +0 -1
- package/dist/src/utils/bundle-integrity.js +0 -25
- package/dist/src/utils/bundle-integrity.js.map +1 -1
- package/dist/src/utils/bundle-layout.js +22 -29
- package/dist/src/utils/bundle-layout.js.map +1 -1
- package/dist/src/utils/catalog-capability-projection.d.ts +8 -0
- package/dist/src/utils/catalog-capability-projection.js +14 -0
- package/dist/src/utils/catalog-capability-projection.js.map +1 -0
- package/dist/src/utils/catalog-digests.d.ts +10 -0
- package/dist/src/utils/catalog-digests.js +57 -20
- package/dist/src/utils/catalog-digests.js.map +1 -1
- package/dist/src/utils/catalog-generation-control-snapshot.d.ts +11 -0
- package/dist/src/utils/catalog-generation-control-snapshot.js +45 -0
- package/dist/src/utils/catalog-generation-control-snapshot.js.map +1 -0
- package/dist/src/utils/catalog-generation-error.d.ts +16 -0
- package/dist/src/utils/catalog-generation-error.js +30 -0
- package/dist/src/utils/catalog-generation-error.js.map +1 -0
- package/dist/src/utils/catalog-generation-resolver.d.ts +44 -0
- package/dist/src/utils/catalog-generation-resolver.js +273 -0
- package/dist/src/utils/catalog-generation-resolver.js.map +1 -0
- package/dist/src/utils/catalog-generation-service.d.ts +172 -0
- package/dist/src/utils/catalog-generation-service.js +1271 -0
- package/dist/src/utils/catalog-generation-service.js.map +1 -0
- package/dist/src/utils/catalog-generation-state.d.ts +22 -0
- package/dist/src/utils/catalog-generation-state.js +192 -0
- package/dist/src/utils/catalog-generation-state.js.map +1 -0
- package/dist/src/utils/catalog-generation-store.d.ts +58 -0
- package/dist/src/utils/catalog-generation-store.js +452 -0
- package/dist/src/utils/catalog-generation-store.js.map +1 -0
- package/dist/src/utils/catalog-manifest-v7.d.ts +5 -0
- package/dist/src/utils/{catalog-manifest-v4.js → catalog-manifest-v7.js} +35 -43
- package/dist/src/utils/catalog-manifest-v7.js.map +1 -0
- package/dist/src/utils/catalog-operation-context.d.ts +20 -0
- package/dist/src/utils/catalog-operation-context.js +142 -0
- package/dist/src/utils/catalog-operation-context.js.map +1 -0
- package/dist/src/utils/catalog-public-error.d.ts +7 -3
- package/dist/src/utils/catalog-public-error.js +28 -8
- package/dist/src/utils/catalog-public-error.js.map +1 -1
- package/dist/src/utils/catalog-runtime-projection.d.ts +3 -0
- package/dist/src/utils/catalog-runtime-projection.js +5 -40
- package/dist/src/utils/catalog-runtime-projection.js.map +1 -1
- package/dist/src/utils/catalog-snapshot.d.ts +5 -3
- package/dist/src/utils/catalog-snapshot.js +11 -3
- package/dist/src/utils/catalog-snapshot.js.map +1 -1
- package/dist/src/utils/catalog-source-identity.d.ts +1 -0
- package/dist/src/utils/catalog-source-identity.js +21 -2
- package/dist/src/utils/catalog-source-identity.js.map +1 -1
- package/dist/src/utils/catalog-source-impact.d.ts +21 -0
- package/dist/src/utils/catalog-source-impact.js +344 -0
- package/dist/src/utils/catalog-source-impact.js.map +1 -0
- package/dist/src/utils/catalog-source-references.d.ts +3 -2
- package/dist/src/utils/catalog-source-references.js +195 -347
- package/dist/src/utils/catalog-source-references.js.map +1 -1
- package/dist/src/utils/catalog-sources.d.ts +15 -1
- package/dist/src/utils/catalog-sources.js +206 -27
- package/dist/src/utils/catalog-sources.js.map +1 -1
- package/dist/src/utils/codex-config.d.ts +2 -0
- package/dist/src/utils/codex-config.js +26 -5
- package/dist/src/utils/codex-config.js.map +1 -1
- package/dist/src/utils/codex-manager.d.ts +79 -0
- package/dist/src/utils/codex-manager.js +747 -0
- package/dist/src/utils/codex-manager.js.map +1 -0
- package/dist/src/utils/codex-marketplace-path.d.ts +5 -0
- package/dist/src/utils/codex-marketplace-path.js +45 -0
- package/dist/src/utils/codex-marketplace-path.js.map +1 -0
- package/dist/src/utils/codex-native-observation.d.ts +49 -0
- package/dist/src/utils/codex-native-observation.js +154 -0
- package/dist/src/utils/codex-native-observation.js.map +1 -0
- package/dist/src/utils/codex-native-render-receipt.d.ts +40 -0
- package/dist/src/utils/codex-native-render-receipt.js +205 -0
- package/dist/src/utils/codex-native-render-receipt.js.map +1 -0
- package/dist/src/utils/codex-reconciler.d.ts +126 -0
- package/dist/src/utils/codex-reconciler.js +298 -0
- package/dist/src/utils/codex-reconciler.js.map +1 -0
- package/dist/src/utils/codex-shared-native.d.ts +43 -0
- package/dist/src/utils/codex-shared-native.js +81 -0
- package/dist/src/utils/codex-shared-native.js.map +1 -0
- package/dist/src/utils/codex-skill-staging.d.ts +2 -0
- package/dist/src/utils/codex-skill-staging.js.map +1 -1
- package/dist/src/utils/codex-surface-analysis.d.ts +46 -0
- package/dist/src/utils/codex-surface-analysis.js +247 -0
- package/dist/src/utils/codex-surface-analysis.js.map +1 -0
- package/dist/src/utils/dynamic-skill-tree.d.ts +4 -0
- package/dist/src/utils/dynamic-skill-tree.js +35 -5
- package/dist/src/utils/dynamic-skill-tree.js.map +1 -1
- package/dist/src/utils/git-catalog-provider.d.ts +16 -0
- package/dist/src/utils/git-catalog-provider.js +177 -145
- package/dist/src/utils/git-catalog-provider.js.map +1 -1
- package/dist/src/utils/local-marketplace.d.ts +18 -1
- package/dist/src/utils/local-marketplace.js +354 -84
- package/dist/src/utils/local-marketplace.js.map +1 -1
- package/dist/src/utils/manifest.d.ts +1 -3
- package/dist/src/utils/manifest.js +1 -3
- package/dist/src/utils/manifest.js.map +1 -1
- package/dist/src/utils/multi-source-catalog.d.ts +3 -9
- package/dist/src/utils/multi-source-catalog.js +54 -110
- package/dist/src/utils/multi-source-catalog.js.map +1 -1
- package/dist/src/utils/native-cli.d.ts +55 -7
- package/dist/src/utils/native-cli.js +400 -58
- package/dist/src/utils/native-cli.js.map +1 -1
- package/dist/src/utils/orphan-marketplace-cleanup.js +0 -4
- package/dist/src/utils/orphan-marketplace-cleanup.js.map +1 -1
- package/dist/src/utils/ownership.d.ts +84 -20
- package/dist/src/utils/ownership.js +179 -222
- package/dist/src/utils/ownership.js.map +1 -1
- package/dist/src/utils/path-catalog-provider.d.ts +1 -1
- package/dist/src/utils/path-catalog-provider.js +54 -65
- package/dist/src/utils/path-catalog-provider.js.map +1 -1
- package/dist/src/utils/paths.d.ts +0 -1
- package/dist/src/utils/paths.js +0 -1
- package/dist/src/utils/paths.js.map +1 -1
- package/dist/src/utils/plugin-config-impact.d.ts +33 -0
- package/dist/src/utils/plugin-config-impact.js +298 -0
- package/dist/src/utils/plugin-config-impact.js.map +1 -0
- package/dist/src/utils/plugin-config-write.d.ts +52 -27
- package/dist/src/utils/plugin-config-write.js +1000 -296
- package/dist/src/utils/plugin-config-write.js.map +1 -1
- package/dist/src/utils/plugin-config.d.ts +153 -93
- package/dist/src/utils/plugin-config.js +1116 -968
- package/dist/src/utils/plugin-config.js.map +1 -1
- package/dist/src/utils/plugin-intent-state.d.ts +49 -0
- package/dist/src/utils/plugin-intent-state.js +320 -0
- package/dist/src/utils/plugin-intent-state.js.map +1 -0
- package/dist/src/utils/plugin-scripts.d.ts +65 -125
- package/dist/src/utils/plugin-scripts.js +484 -524
- package/dist/src/utils/plugin-scripts.js.map +1 -1
- package/dist/src/utils/process-tree.d.ts +2 -2
- package/dist/src/utils/process-tree.js +1 -1
- package/dist/src/utils/process-tree.js.map +1 -1
- package/dist/src/utils/project-boundary.d.ts +11 -13
- package/dist/src/utils/project-boundary.js +28 -34
- package/dist/src/utils/project-boundary.js.map +1 -1
- package/dist/src/utils/runtime-config.d.ts +20 -0
- package/dist/src/utils/runtime-config.js +75 -0
- package/dist/src/utils/runtime-config.js.map +1 -0
- package/dist/src/utils/safe-fs.d.ts +21 -0
- package/dist/src/utils/safe-fs.js +111 -0
- package/dist/src/utils/safe-fs.js.map +1 -0
- package/dist/src/utils/safe-operation-diagnostic.d.ts +15 -0
- package/dist/src/utils/safe-operation-diagnostic.js +33 -0
- package/dist/src/utils/safe-operation-diagnostic.js.map +1 -0
- package/dist/src/utils/sensitive-content.d.ts +4 -0
- package/dist/src/utils/sensitive-content.js +36 -0
- package/dist/src/utils/sensitive-content.js.map +1 -0
- package/dist/src/utils/state-paths.js +7 -2
- package/dist/src/utils/state-paths.js.map +1 -1
- package/dist/src/utils/target-eligibility.d.ts +8 -2
- package/dist/src/utils/target-eligibility.js +17 -8
- package/dist/src/utils/target-eligibility.js.map +1 -1
- package/dist/src/utils/windows-claude-shim.d.ts +7 -0
- package/dist/src/utils/windows-claude-shim.js +10 -0
- package/dist/src/utils/windows-claude-shim.js.map +1 -0
- package/dist/src/utils/windows-npm-shim.d.ts +14 -0
- package/dist/src/utils/windows-npm-shim.js +140 -0
- package/dist/src/utils/windows-npm-shim.js.map +1 -0
- package/dist/vitest.config.js +92 -10
- package/dist/vitest.config.js.map +1 -1
- package/package.json +27 -18
- package/dist/authoring/scripts/check-plugin-versions.d.mts +0 -2
- package/dist/authoring/scripts/check-plugin-versions.mjs +0 -5
- package/dist/authoring/scripts/check-plugin-versions.mjs.map +0 -1
- package/dist/scripts/aw-skill-eval-engine.d.ts +0 -13
- package/dist/scripts/aw-skill-eval-engine.js +0 -31
- package/dist/scripts/aw-skill-eval-engine.js.map +0 -1
- package/dist/scripts/codex-eval-app-server.d.ts +0 -89
- package/dist/scripts/codex-eval-app-server.js +0 -1228
- package/dist/scripts/codex-eval-app-server.js.map +0 -1
- package/dist/scripts/codex-eval-isolation.d.ts +0 -61
- package/dist/scripts/codex-eval-isolation.js +0 -318
- package/dist/scripts/codex-eval-isolation.js.map +0 -1
- package/dist/scripts/codex-eval-process-management.d.ts +0 -8
- package/dist/scripts/codex-eval-process-management.js +0 -69
- package/dist/scripts/codex-eval-process-management.js.map +0 -1
- package/dist/scripts/codex-eval-process-tree.d.ts +0 -38
- package/dist/scripts/codex-eval-process-tree.js +0 -803
- package/dist/scripts/codex-eval-process-tree.js.map +0 -1
- package/dist/scripts/codex-eval-runtime-config.d.ts +0 -62
- package/dist/scripts/codex-eval-runtime-config.js +0 -843
- package/dist/scripts/codex-eval-runtime-config.js.map +0 -1
- package/dist/scripts/codex-trigger-eval.d.ts +0 -84
- package/dist/scripts/codex-trigger-eval.js +0 -968
- package/dist/scripts/codex-trigger-eval.js.map +0 -1
- package/dist/scripts/eval-plugin-skills-audited.d.ts +0 -6
- package/dist/scripts/eval-plugin-skills-audited.js +0 -261
- package/dist/scripts/eval-plugin-skills-audited.js.map +0 -1
- package/dist/scripts/eval-plugin-skills.d.ts +0 -45
- package/dist/scripts/eval-plugin-skills.js +0 -1586
- package/dist/scripts/eval-plugin-skills.js.map +0 -1
- package/dist/scripts/eval-run-layout.d.ts +0 -17
- package/dist/scripts/eval-run-layout.js +0 -26
- package/dist/scripts/eval-run-layout.js.map +0 -1
- package/dist/scripts/plugin-eval-contract.d.ts +0 -185
- package/dist/scripts/plugin-eval-contract.js +0 -695
- package/dist/scripts/plugin-eval-contract.js.map +0 -1
- package/dist/scripts/plugin-eval-materializer.d.ts +0 -13
- package/dist/scripts/plugin-eval-materializer.js +0 -421
- package/dist/scripts/plugin-eval-materializer.js.map +0 -1
- package/dist/scripts/skill-reporting.d.ts +0 -212
- package/dist/scripts/skill-reporting.js +0 -922
- package/dist/scripts/skill-reporting.js.map +0 -1
- package/dist/src/commands/status-v4.d.ts +0 -123
- package/dist/src/commands/status-v4.js +0 -905
- package/dist/src/commands/status-v4.js.map +0 -1
- package/dist/src/commands/status.d.ts +0 -93
- package/dist/src/commands/status.js +0 -442
- package/dist/src/commands/status.js.map +0 -1
- package/dist/src/utils/active-marketplace-runtime-lock.d.ts +0 -12
- package/dist/src/utils/active-marketplace-runtime-lock.js +0 -133
- package/dist/src/utils/active-marketplace-runtime-lock.js.map +0 -1
- package/dist/src/utils/catalog-manifest-v3.d.ts +0 -2
- package/dist/src/utils/catalog-manifest-v3.js +0 -3
- package/dist/src/utils/catalog-manifest-v3.js.map +0 -1
- package/dist/src/utils/catalog-manifest-v4.d.ts +0 -5
- package/dist/src/utils/catalog-manifest-v4.js.map +0 -1
- package/dist/src/utils/catalog-source-cache.d.ts +0 -62
- package/dist/src/utils/catalog-source-cache.js +0 -296
- package/dist/src/utils/catalog-source-cache.js.map +0 -1
- package/dist/src/utils/codex-project-surface.d.ts +0 -3
- package/dist/src/utils/codex-project-surface.js +0 -49
- package/dist/src/utils/codex-project-surface.js.map +0 -1
- package/dist/src/utils/lifecycle-active-store.d.ts +0 -175
- package/dist/src/utils/lifecycle-active-store.js +0 -1276
- package/dist/src/utils/lifecycle-active-store.js.map +0 -1
- package/dist/src/utils/plugin-release.d.ts +0 -2
- package/dist/src/utils/plugin-release.js +0 -2
- package/dist/src/utils/plugin-release.js.map +0 -1
|
@@ -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 = [
|
|
@@ -289,6 +198,7 @@ function validateDesiredTarget(target) {
|
|
|
289
198
|
component.identity.artifactKey,
|
|
290
199
|
component.identity.platform,
|
|
291
200
|
component.identity.scope,
|
|
201
|
+
component.kind,
|
|
292
202
|
].join('\0');
|
|
293
203
|
if (identityKeys.has(identityKey)) {
|
|
294
204
|
throw new Error(`Desired target has a duplicate owned component identity: ${component.identity.artifactKey}`);
|
|
@@ -308,7 +218,9 @@ function validateDesiredTarget(target) {
|
|
|
308
218
|
}
|
|
309
219
|
}
|
|
310
220
|
}
|
|
311
|
-
|
|
221
|
+
if (target.forceExclusiveCleanup && target.ownedComponents.some((component) => component.kind !== 'skill-directory' && component.kind !== 'owned-text-file')) {
|
|
222
|
+
throw new Error('Force cleanup only supports exclusive skill directories and owned text files.');
|
|
223
|
+
}
|
|
312
224
|
nativeCount = desiredComponents.filter((component) => component.kind === 'native-plugin').length;
|
|
313
225
|
if (target.requiresNative ? nativeCount !== 1 : nativeCount !== 0) {
|
|
314
226
|
throw new Error(target.requiresNative
|
|
@@ -334,7 +246,7 @@ function collisionMessage(inspection) {
|
|
|
334
246
|
if (inspection.errors.length > 0) {
|
|
335
247
|
return inspection.errors.map((error) => `${error.label}: ${error.message}`).join('; ');
|
|
336
248
|
}
|
|
337
|
-
const collision = inspection.components.find((component) => (component.state === 'partial' || component.state === 'error'));
|
|
249
|
+
const collision = inspection.components.find((component) => (component.state === 'partial' || component.state === 'foreign' || component.state === 'error'));
|
|
338
250
|
if (collision) {
|
|
339
251
|
return collision.diagnostic ?? 'Owned component preflight failed.';
|
|
340
252
|
}
|
|
@@ -353,7 +265,7 @@ function isUninstallLiveOwnershipComponent(component) {
|
|
|
353
265
|
}
|
|
354
266
|
function recordInspectionResiduals(accumulator, inspection) {
|
|
355
267
|
pushUnique(accumulator.residual, inspection.components
|
|
356
|
-
.filter((component) => component.state === 'partial' || component.state === 'error')
|
|
268
|
+
.filter((component) => (component.state === 'partial' || component.state === 'foreign' || component.state === 'error'))
|
|
357
269
|
.map((component) => ownedComponentLabel(component.component)));
|
|
358
270
|
}
|
|
359
271
|
function postcheckMessage(accumulator, inspection) {
|
|
@@ -371,6 +283,11 @@ function postcheckMessage(accumulator, inspection) {
|
|
|
371
283
|
})));
|
|
372
284
|
return inspection.errors.map((error) => `${error.label}: ${error.message}`).join('; ');
|
|
373
285
|
}
|
|
286
|
+
if (invalid.some((component) => component.state === 'partial'
|
|
287
|
+
&& component.component.kind === 'native-plugin'
|
|
288
|
+
&& component.component.identity.platform === 'codex')) {
|
|
289
|
+
return 'codexActivationPostcheckFailed: Codex scope activation was not observed as enabled.';
|
|
290
|
+
}
|
|
374
291
|
const diagnostics = invalid
|
|
375
292
|
.map((component) => component.diagnostic)
|
|
376
293
|
.filter((diagnostic) => diagnostic !== undefined);
|
|
@@ -378,17 +295,20 @@ function postcheckMessage(accumulator, inspection) {
|
|
|
378
295
|
return diagnostics.join('; ');
|
|
379
296
|
return `Post-install ownership inspection failed for ${invalid.length} component(s).`;
|
|
380
297
|
}
|
|
381
|
-
async function cleanupOwned(target, driver, components = target.ownedComponents) {
|
|
382
|
-
return
|
|
298
|
+
async function cleanupOwned(target, driver, components = target.ownedComponents, hooks = {}) {
|
|
299
|
+
return cleanupOwnedComponents({
|
|
383
300
|
components,
|
|
301
|
+
executor: driver.ownership,
|
|
384
302
|
nativeProbe: driver.probeNative,
|
|
385
303
|
nativeRemove: driver.removeNative,
|
|
386
|
-
|
|
304
|
+
forceExclusive: target.forceExclusiveCleanup,
|
|
305
|
+
...hooks,
|
|
306
|
+
});
|
|
387
307
|
}
|
|
388
|
-
async function cleanupTarget(target, driver,
|
|
308
|
+
async function cleanupTarget(target, driver, accumulator, ownedAction, events, components = target.ownedComponents, hooks = {}) {
|
|
389
309
|
accumulator.cleanupAttempted = true;
|
|
390
310
|
try {
|
|
391
|
-
const cleanup = await action(accumulator, ownedAction, () => cleanupOwned(target, driver), events, (value) => value.failures[0]?.message
|
|
311
|
+
const cleanup = await action(accumulator, ownedAction, () => cleanupOwned(target, driver, components, hooks), events, (value) => value.failures[0]?.message
|
|
392
312
|
?? (value.residual.length > 0
|
|
393
313
|
? `Ownership cleanup left residual components: ${value.residual.join(', ')}`
|
|
394
314
|
: value.quarantined.length > 0
|
|
@@ -412,41 +332,64 @@ async function cleanupTarget(target, driver, store, accumulator, ownedAction, ev
|
|
|
412
332
|
accumulator.failures.push({ phase: ownedAction, message });
|
|
413
333
|
return { phase: ownedAction, message };
|
|
414
334
|
}
|
|
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
335
|
return null;
|
|
424
336
|
}
|
|
337
|
+
export async function executeRebuildComponentCleanup(options) {
|
|
338
|
+
const accumulator = createAccumulator();
|
|
339
|
+
accumulator.actions.push(...(options.actions ?? []));
|
|
340
|
+
const cleanupError = await cleanupTarget(options.target, options.driver, accumulator, 'cleanup.owned', {
|
|
341
|
+
command: options.command,
|
|
342
|
+
target: options.target.identity,
|
|
343
|
+
emit: options.onActionEvent,
|
|
344
|
+
now: options.now ?? Date.now,
|
|
345
|
+
}, options.components, {
|
|
346
|
+
...(options.beforeMutation ? { beforeMutation: options.beforeMutation } : {}),
|
|
347
|
+
...(options.afterQuarantine ? { afterQuarantine: options.afterQuarantine } : {}),
|
|
348
|
+
});
|
|
349
|
+
return cleanupError
|
|
350
|
+
? failed(options.command, options.target, accumulator, cleanupError.phase, cleanupError.message)
|
|
351
|
+
: succeeded(options.command, options.target, accumulator);
|
|
352
|
+
}
|
|
425
353
|
async function materializeTarget(options) {
|
|
426
|
-
const { command,
|
|
427
|
-
let inspection;
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
await
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
354
|
+
const { command, target, driver, accumulator, events } = options;
|
|
355
|
+
let inspection = options.inspection;
|
|
356
|
+
if (!inspection) {
|
|
357
|
+
try {
|
|
358
|
+
inspection = await action(accumulator, 'preflight.inspect', async () => {
|
|
359
|
+
await driver.preflightMaterialize?.(target);
|
|
360
|
+
return inspectOwnedComponents({
|
|
361
|
+
components: target.ownedComponents,
|
|
362
|
+
executor: driver.ownership,
|
|
363
|
+
nativeProbe: driver.probeNative,
|
|
364
|
+
});
|
|
365
|
+
}, events, collisionMessage);
|
|
366
|
+
}
|
|
367
|
+
catch (error) {
|
|
368
|
+
return failed(command, target, accumulator, 'preflight.inspect', errorMessage(error), readSafeOperationError(error));
|
|
369
|
+
}
|
|
439
370
|
}
|
|
440
371
|
const collision = collisionMessage(inspection);
|
|
441
372
|
if (collision) {
|
|
442
373
|
recordInspectionResiduals(accumulator, inspection);
|
|
443
374
|
return failed(command, target, accumulator, 'preflight.inspect', collision);
|
|
444
375
|
}
|
|
376
|
+
if (!options.preApplyCompleted && target.preApplySource.manifest.scripts?.preApply) {
|
|
377
|
+
try {
|
|
378
|
+
await action(accumulator, 'preApply', () => driver.runPreApply({
|
|
379
|
+
target,
|
|
380
|
+
plugin: target.preApplySource,
|
|
381
|
+
}), events);
|
|
382
|
+
}
|
|
383
|
+
catch (error) {
|
|
384
|
+
return failed(command, target, accumulator, 'preApply', errorMessage(error), readSafeOperationError(error));
|
|
385
|
+
}
|
|
386
|
+
}
|
|
445
387
|
const desiredComponents = new Set(target.desiredOwnedComponents ?? target.ownedComponents);
|
|
446
388
|
const optionalComponents = new Set(target.optionalOwnedComponents ?? []);
|
|
447
389
|
const staleComponents = target.ownedComponents.filter((component) => !desiredComponents.has(component) && !optionalComponents.has(component));
|
|
448
390
|
const staleInspection = inspection.components.filter((entry) => staleComponents.includes(entry.component));
|
|
449
|
-
if (
|
|
391
|
+
if (!options.skipStaleCleanup
|
|
392
|
+
&& staleInspection.some((component) => component.state === 'present')) {
|
|
450
393
|
accumulator.cleanupAttempted = true;
|
|
451
394
|
let stale;
|
|
452
395
|
try {
|
|
@@ -456,7 +399,7 @@ async function materializeTarget(options) {
|
|
|
456
399
|
: undefined));
|
|
457
400
|
}
|
|
458
401
|
catch (error) {
|
|
459
|
-
return failed(command, target, accumulator, 'stale.cleanup', errorMessage(error));
|
|
402
|
+
return failed(command, target, accumulator, 'stale.cleanup', errorMessage(error), readSafeOperationError(error));
|
|
460
403
|
}
|
|
461
404
|
mergeCleanup(accumulator, stale, 'stale.cleanup');
|
|
462
405
|
if (stale.failures.length > 0 || stale.residual.length > 0) {
|
|
@@ -466,9 +409,8 @@ async function materializeTarget(options) {
|
|
|
466
409
|
}
|
|
467
410
|
}
|
|
468
411
|
let failurePhase = 'native.write';
|
|
469
|
-
let prepared;
|
|
470
412
|
try {
|
|
471
|
-
if (target.requiresNative) {
|
|
413
|
+
if (target.writeNativeRequired ?? target.requiresNative) {
|
|
472
414
|
failurePhase = 'native.write';
|
|
473
415
|
await action(accumulator, failurePhase, () => driver.writeNative(target), events);
|
|
474
416
|
}
|
|
@@ -477,69 +419,43 @@ async function materializeTarget(options) {
|
|
|
477
419
|
const writtenArtifacts = await driver.writeArtifacts(target);
|
|
478
420
|
bindWrittenArtifacts(target, writtenArtifacts);
|
|
479
421
|
}, 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 () => {
|
|
422
|
+
const postcheck = () => action(accumulator, 'postcheck.inspect', async () => {
|
|
493
423
|
const optional = new Set(target.optionalOwnedComponents ?? []);
|
|
494
|
-
const postcheck = await
|
|
424
|
+
const postcheck = await inspectOwnedComponents({
|
|
495
425
|
components: (target.desiredOwnedComponents ?? target.ownedComponents)
|
|
496
426
|
.filter((component) => !optional.has(component)),
|
|
497
427
|
nativeProbe: driver.probeNativeHealth ?? driver.probeNative,
|
|
428
|
+
executor: driver.ownership,
|
|
498
429
|
verifyHealth: true,
|
|
499
|
-
})
|
|
430
|
+
});
|
|
500
431
|
const postcheckFailure = postcheckMessage(accumulator, postcheck);
|
|
501
432
|
if (postcheckFailure)
|
|
502
433
|
throw new Error(postcheckFailure);
|
|
503
434
|
}, events);
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
await
|
|
435
|
+
failurePhase = 'postcheck.inspect';
|
|
436
|
+
if (driver.deferPostcheck?.(target, postcheck) !== true) {
|
|
437
|
+
await postcheck();
|
|
507
438
|
}
|
|
508
439
|
return succeeded(command, target, accumulator);
|
|
509
440
|
}
|
|
510
441
|
catch (error) {
|
|
511
442
|
const primary = errorMessage(error);
|
|
512
|
-
if (error.
|
|
513
|
-
return failed(command, target, accumulator, failurePhase, primary);
|
|
443
|
+
if (error.nativeMarketplaceGroupFailure === true) {
|
|
444
|
+
return failed(command, target, accumulator, failurePhase, primary, readSafeOperationError(error));
|
|
514
445
|
}
|
|
515
|
-
if (
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
catch (discardError) {
|
|
520
|
-
accumulator.failures.push({
|
|
521
|
-
phase: 'active.discard',
|
|
522
|
-
message: errorMessage(discardError),
|
|
523
|
-
});
|
|
524
|
-
}
|
|
446
|
+
if (target.identity.platform === 'codex') {
|
|
447
|
+
const recoveryComponents = target.ownedComponents.filter((component) => component.kind === 'skill-directory' || component.kind === 'owned-text-file');
|
|
448
|
+
await cleanupTarget(target, driver, accumulator, 'recovery.cleanup', events, driver.selectRecoveryCleanupComponents?.(target, recoveryComponents)
|
|
449
|
+
?? recoveryComponents);
|
|
525
450
|
}
|
|
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
|
-
}
|
|
451
|
+
else {
|
|
452
|
+
await cleanupTarget(target, driver, accumulator, 'recovery.cleanup', events);
|
|
537
453
|
}
|
|
538
|
-
return failed(command, target, accumulator, failurePhase, primary);
|
|
454
|
+
return failed(command, target, accumulator, failurePhase, primary, readSafeOperationError(error));
|
|
539
455
|
}
|
|
540
456
|
}
|
|
541
457
|
async function executeCleanup(options) {
|
|
542
|
-
const cleanupError = await cleanupTarget(options.target, options.driver, options.
|
|
458
|
+
const cleanupError = await cleanupTarget(options.target, options.driver, options.accumulator, 'cleanup.owned', options.events);
|
|
543
459
|
if (cleanupError) {
|
|
544
460
|
return failed(options.command, options.target, options.accumulator, cleanupError.phase, cleanupError.message);
|
|
545
461
|
}
|
|
@@ -554,13 +470,14 @@ async function executeCleanup(options) {
|
|
|
554
470
|
return succeeded(options.command, options.target, options.accumulator);
|
|
555
471
|
}
|
|
556
472
|
async function executeUninstall(options) {
|
|
557
|
-
const { target, driver,
|
|
473
|
+
const { target, driver, accumulator, events } = options;
|
|
558
474
|
let inspection;
|
|
559
475
|
try {
|
|
560
|
-
inspection = await action(accumulator, 'preflight.inspect', () =>
|
|
476
|
+
inspection = await action(accumulator, 'preflight.inspect', () => inspectOwnedComponents({
|
|
561
477
|
components: target.ownedComponents,
|
|
478
|
+
executor: driver.ownership,
|
|
562
479
|
nativeProbe: driver.probeNative,
|
|
563
|
-
})
|
|
480
|
+
}), events, collisionMessage);
|
|
564
481
|
}
|
|
565
482
|
catch (error) {
|
|
566
483
|
return failed('uninstall', target, accumulator, 'preflight.inspect', errorMessage(error));
|
|
@@ -570,80 +487,11 @@ async function executeUninstall(options) {
|
|
|
570
487
|
recordInspectionResiduals(accumulator, inspection);
|
|
571
488
|
return failed('uninstall', target, accumulator, 'preflight.inspect', preflightCollision);
|
|
572
489
|
}
|
|
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'
|
|
490
|
+
const live = inspection.components.filter((component) => component.state !== 'absent'
|
|
606
491
|
&& 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);
|
|
492
|
+
if (live.length === 0)
|
|
493
|
+
return succeeded('uninstall', target, accumulator);
|
|
494
|
+
const cleanupError = await cleanupTarget(target, driver, accumulator, 'cleanup.owned', events);
|
|
647
495
|
if (cleanupError) {
|
|
648
496
|
return failed('uninstall', target, accumulator, cleanupError.phase, cleanupError.message);
|
|
649
497
|
}
|
|
@@ -659,62 +507,62 @@ async function executeUninstall(options) {
|
|
|
659
507
|
}
|
|
660
508
|
export async function executeRebuildOperation(options) {
|
|
661
509
|
const accumulator = createAccumulator();
|
|
662
|
-
const store = options.activeStore;
|
|
663
510
|
const events = {
|
|
664
511
|
command: options.command,
|
|
665
512
|
target: options.target.identity,
|
|
666
513
|
emit: options.onActionEvent,
|
|
667
514
|
now: options.now ?? Date.now,
|
|
668
515
|
};
|
|
516
|
+
if (options.preparation) {
|
|
517
|
+
if (options.preparation.command !== options.command
|
|
518
|
+
|| options.preparation.target !== options.target) {
|
|
519
|
+
return failed(options.command, options.target, accumulator, 'preflight', 'Prepared rebuild operation does not match the requested target.');
|
|
520
|
+
}
|
|
521
|
+
accumulator.actions.push(...options.preparation.actions);
|
|
522
|
+
try {
|
|
523
|
+
await options.driver.preflightMutation?.(options.target);
|
|
524
|
+
}
|
|
525
|
+
catch (error) {
|
|
526
|
+
return failed(options.command, options.target, accumulator, 'preflight', errorMessage(error));
|
|
527
|
+
}
|
|
528
|
+
try {
|
|
529
|
+
return await executeRebuildOperationCore(options, accumulator, events, options.preparation);
|
|
530
|
+
}
|
|
531
|
+
catch (error) {
|
|
532
|
+
return failed(options.command, options.target, accumulator, 'preflight', errorMessage(error));
|
|
533
|
+
}
|
|
534
|
+
}
|
|
669
535
|
try {
|
|
670
536
|
validateDesiredTarget(options.target);
|
|
671
537
|
}
|
|
672
538
|
catch (error) {
|
|
673
539
|
return failed(options.command, options.target, accumulator, 'preflight', errorMessage(error));
|
|
674
540
|
}
|
|
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
541
|
try {
|
|
686
|
-
|
|
687
|
-
result = options.target.identity.sourceId !== undefined
|
|
688
|
-
? await (options.driver.withMaterializeLease?.(options.target, execute) ?? execute())
|
|
689
|
-
: await execute();
|
|
542
|
+
await options.driver.preflightMutation?.(options.target);
|
|
690
543
|
}
|
|
691
544
|
catch (error) {
|
|
692
|
-
|
|
545
|
+
return failed(options.command, options.target, accumulator, 'preflight', errorMessage(error));
|
|
693
546
|
}
|
|
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
|
-
}
|
|
547
|
+
try {
|
|
548
|
+
return await executeRebuildOperationCore(options, accumulator, events);
|
|
549
|
+
}
|
|
550
|
+
catch (error) {
|
|
551
|
+
return failed(options.command, options.target, accumulator, 'preflight', errorMessage(error));
|
|
705
552
|
}
|
|
706
|
-
return result;
|
|
707
553
|
}
|
|
708
|
-
async function
|
|
709
|
-
if (options.command === 'install'
|
|
554
|
+
async function executeRebuildOperationCore(options, accumulator, events, preparation) {
|
|
555
|
+
if (options.command === 'install') {
|
|
710
556
|
return materializeTarget({
|
|
711
557
|
command: options.command,
|
|
712
|
-
lifecycleEvent: options.command,
|
|
713
558
|
target: options.target,
|
|
714
559
|
driver: options.driver,
|
|
715
|
-
store,
|
|
716
560
|
accumulator,
|
|
717
561
|
events,
|
|
562
|
+
...(preparation ? {
|
|
563
|
+
inspection: preparation.inspection,
|
|
564
|
+
preApplyCompleted: true,
|
|
565
|
+
} : {}),
|
|
718
566
|
});
|
|
719
567
|
}
|
|
720
568
|
if (options.command === 'cleanup') {
|
|
@@ -722,7 +570,6 @@ async function executeRebuildOperationLocked(options, accumulator, store, events
|
|
|
722
570
|
command: 'cleanup',
|
|
723
571
|
target: options.target,
|
|
724
572
|
driver: options.driver,
|
|
725
|
-
store,
|
|
726
573
|
accumulator,
|
|
727
574
|
events,
|
|
728
575
|
});
|
|
@@ -731,34 +578,46 @@ async function executeRebuildOperationLocked(options, accumulator, store, events
|
|
|
731
578
|
return executeUninstall({
|
|
732
579
|
target: options.target,
|
|
733
580
|
driver: options.driver,
|
|
734
|
-
store,
|
|
735
581
|
accumulator,
|
|
736
582
|
events,
|
|
737
583
|
});
|
|
738
584
|
}
|
|
739
|
-
let inspection;
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
await
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
585
|
+
let inspection = preparation?.inspection;
|
|
586
|
+
if (!inspection) {
|
|
587
|
+
try {
|
|
588
|
+
inspection = await action(accumulator, 'preflight.inspect', async () => {
|
|
589
|
+
await options.driver.preflightMaterialize?.(options.target);
|
|
590
|
+
return inspectOwnedComponents({
|
|
591
|
+
components: options.target.ownedComponents,
|
|
592
|
+
executor: options.driver.ownership,
|
|
593
|
+
nativeProbe: options.driver.probeNative,
|
|
594
|
+
});
|
|
595
|
+
}, events, collisionMessage);
|
|
596
|
+
}
|
|
597
|
+
catch (error) {
|
|
598
|
+
return failed('reinstall', options.target, accumulator, 'preflight.inspect', errorMessage(error));
|
|
599
|
+
}
|
|
600
|
+
const collision = collisionMessage(inspection);
|
|
601
|
+
if (collision) {
|
|
602
|
+
recordInspectionResiduals(accumulator, inspection);
|
|
603
|
+
return failed('reinstall', options.target, accumulator, 'preflight.inspect', collision);
|
|
604
|
+
}
|
|
605
|
+
if (options.target.preApplySource.manifest.scripts?.preApply) {
|
|
606
|
+
try {
|
|
607
|
+
await action(accumulator, 'preApply', () => options.driver.runPreApply({
|
|
608
|
+
target: options.target,
|
|
609
|
+
plugin: options.target.preApplySource,
|
|
610
|
+
}), events);
|
|
611
|
+
}
|
|
612
|
+
catch (error) {
|
|
613
|
+
return failed('reinstall', options.target, accumulator, 'preApply', errorMessage(error), readSafeOperationError(error));
|
|
614
|
+
}
|
|
615
|
+
}
|
|
756
616
|
}
|
|
757
617
|
const cleanupResult = await executeCleanup({
|
|
758
618
|
command: 'reinstall',
|
|
759
619
|
target: options.target,
|
|
760
620
|
driver: options.driver,
|
|
761
|
-
store,
|
|
762
621
|
accumulator,
|
|
763
622
|
events,
|
|
764
623
|
});
|
|
@@ -766,14 +625,83 @@ async function executeRebuildOperationLocked(options, accumulator, store, events
|
|
|
766
625
|
return cleanupResult;
|
|
767
626
|
return materializeTarget({
|
|
768
627
|
command: 'reinstall',
|
|
769
|
-
lifecycleEvent: 'install',
|
|
770
628
|
target: options.target,
|
|
771
629
|
driver: options.driver,
|
|
772
|
-
store,
|
|
773
630
|
accumulator,
|
|
774
631
|
events,
|
|
632
|
+
inspection,
|
|
633
|
+
preApplyCompleted: true,
|
|
634
|
+
skipStaleCleanup: true,
|
|
775
635
|
});
|
|
776
636
|
}
|
|
637
|
+
export async function prepareRebuildOperation(options) {
|
|
638
|
+
const accumulator = createAccumulator();
|
|
639
|
+
const events = {
|
|
640
|
+
command: options.command,
|
|
641
|
+
target: options.target.identity,
|
|
642
|
+
emit: options.onActionEvent,
|
|
643
|
+
now: options.now ?? Date.now,
|
|
644
|
+
};
|
|
645
|
+
try {
|
|
646
|
+
validateDesiredTarget(options.target);
|
|
647
|
+
}
|
|
648
|
+
catch (error) {
|
|
649
|
+
return {
|
|
650
|
+
status: 'failed',
|
|
651
|
+
result: failed(options.command, options.target, accumulator, 'preflight', errorMessage(error)),
|
|
652
|
+
};
|
|
653
|
+
}
|
|
654
|
+
let inspection;
|
|
655
|
+
try {
|
|
656
|
+
inspection = await action(accumulator, 'preflight.inspect', async () => {
|
|
657
|
+
await options.driver.preflightMaterialize?.(options.target);
|
|
658
|
+
return inspectOwnedComponents({
|
|
659
|
+
components: options.deferNativeInspection
|
|
660
|
+
? options.target.ownedComponents.filter((component) => component.kind !== 'native-plugin')
|
|
661
|
+
: options.target.ownedComponents,
|
|
662
|
+
executor: options.driver.ownership,
|
|
663
|
+
nativeProbe: options.driver.probeNative,
|
|
664
|
+
});
|
|
665
|
+
}, events, collisionMessage);
|
|
666
|
+
}
|
|
667
|
+
catch (error) {
|
|
668
|
+
return {
|
|
669
|
+
status: 'failed',
|
|
670
|
+
result: failed(options.command, options.target, accumulator, 'preflight.inspect', errorMessage(error)),
|
|
671
|
+
};
|
|
672
|
+
}
|
|
673
|
+
const collision = collisionMessage(inspection);
|
|
674
|
+
if (collision) {
|
|
675
|
+
recordInspectionResiduals(accumulator, inspection);
|
|
676
|
+
return {
|
|
677
|
+
status: 'failed',
|
|
678
|
+
result: failed(options.command, options.target, accumulator, 'preflight.inspect', collision),
|
|
679
|
+
};
|
|
680
|
+
}
|
|
681
|
+
if (!options.skipPreApply && options.target.preApplySource.manifest.scripts?.preApply) {
|
|
682
|
+
try {
|
|
683
|
+
await action(accumulator, 'preApply', () => options.driver.runPreApply({
|
|
684
|
+
target: options.target,
|
|
685
|
+
plugin: options.target.preApplySource,
|
|
686
|
+
}), events);
|
|
687
|
+
}
|
|
688
|
+
catch (error) {
|
|
689
|
+
return {
|
|
690
|
+
status: 'failed',
|
|
691
|
+
result: failed(options.command, options.target, accumulator, 'preApply', errorMessage(error), readSafeOperationError(error)),
|
|
692
|
+
};
|
|
693
|
+
}
|
|
694
|
+
}
|
|
695
|
+
return {
|
|
696
|
+
status: 'ready',
|
|
697
|
+
preparation: {
|
|
698
|
+
command: options.command,
|
|
699
|
+
target: options.target,
|
|
700
|
+
inspection,
|
|
701
|
+
actions: accumulator.actions,
|
|
702
|
+
},
|
|
703
|
+
};
|
|
704
|
+
}
|
|
777
705
|
export async function executeRebuildTargets(options) {
|
|
778
706
|
const results = [];
|
|
779
707
|
for (const target of options.targets) {
|
|
@@ -781,11 +709,24 @@ export async function executeRebuildTargets(options) {
|
|
|
781
709
|
command: options.command,
|
|
782
710
|
target,
|
|
783
711
|
driver: options.driver,
|
|
784
|
-
activeStore: options.activeStore,
|
|
785
712
|
...(options.onActionEvent ? { onActionEvent: options.onActionEvent } : {}),
|
|
786
713
|
...(options.now ? { now: options.now } : {}),
|
|
787
714
|
}));
|
|
788
715
|
}
|
|
716
|
+
const postcheckFailures = await options.driver.completePostchecks?.() ?? [];
|
|
717
|
+
for (const failure of postcheckFailures) {
|
|
718
|
+
const index = results.findIndex((result) => result.target === failure.target.identity);
|
|
719
|
+
if (index === -1 || results[index].status === 'failed')
|
|
720
|
+
continue;
|
|
721
|
+
const result = results[index];
|
|
722
|
+
const message = errorMessage(failure.error);
|
|
723
|
+
result.failures.unshift({ phase: 'postcheck.inspect', message });
|
|
724
|
+
results[index] = {
|
|
725
|
+
...result,
|
|
726
|
+
status: 'failed',
|
|
727
|
+
error: { phase: 'postcheck.inspect', message },
|
|
728
|
+
};
|
|
729
|
+
}
|
|
789
730
|
return results;
|
|
790
731
|
}
|
|
791
732
|
//# sourceMappingURL=rebuild-operations.js.map
|