@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,12 +1,32 @@
|
|
|
1
1
|
import { execFile } from 'node:child_process';
|
|
2
2
|
import { randomUUID } from 'node:crypto';
|
|
3
|
-
import
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
import { createWindowsJobInvocation, observeProcessTree, terminateProcessTree, } from './process-tree.js';
|
|
5
|
+
import { getCodexHome } from './state-paths.js';
|
|
6
|
+
import { resolveWindowsClaudeCommand } from './windows-claude-shim.js';
|
|
7
|
+
import { resolveWindowsNpmCommand } from './windows-npm-shim.js';
|
|
4
8
|
const NATIVE_CLI_TIMEOUT_ENV = 'AW_NATIVE_CLI_TIMEOUT_MS';
|
|
5
9
|
const DEFAULT_NATIVE_CLI_TIMEOUT_MS = 60_000;
|
|
6
10
|
const MIN_NATIVE_CLI_TIMEOUT_MS = 1_000;
|
|
7
11
|
const MAX_NATIVE_CLI_TIMEOUT_MS = 600_000;
|
|
8
12
|
const NATIVE_CLI_CLEANUP_TIMEOUT_MS = 4_500;
|
|
13
|
+
const NATIVE_CLI_PROCESS_GROUP_TERM_GRACE_MS = 100;
|
|
14
|
+
const NATIVE_CLI_PROCESS_GROUP_POLL_MS = 25;
|
|
15
|
+
const NATIVE_CLI_PROCESS_GROUP_VERIFY_MS = 4_000;
|
|
9
16
|
const NATIVE_CLI_PROCESS_MARKER_ENV = 'AW_NATIVE_CLI_PROCESS_MARKER';
|
|
17
|
+
export const SYSTEM_CODEX_MANAGER = {
|
|
18
|
+
kind: 'system',
|
|
19
|
+
version: 'unknown',
|
|
20
|
+
command: 'codex',
|
|
21
|
+
argsPrefix: [],
|
|
22
|
+
};
|
|
23
|
+
export class CodexProjectConfigNotEffectiveError extends Error {
|
|
24
|
+
code = 'codexProjectConfigNotEffective';
|
|
25
|
+
constructor(pluginId) {
|
|
26
|
+
super(`codexProjectConfigNotEffective: Codex did not apply the expected project activation for ${pluginId}.`);
|
|
27
|
+
this.name = 'CodexProjectConfigNotEffectiveError';
|
|
28
|
+
}
|
|
29
|
+
}
|
|
10
30
|
function renderNativeCliCleanupError(error) {
|
|
11
31
|
return error.message
|
|
12
32
|
.replace(/^Native CLI cleanup unconfirmed:\s*/u, '')
|
|
@@ -19,6 +39,7 @@ export class NativeCliError extends Error {
|
|
|
19
39
|
stderr;
|
|
20
40
|
reason;
|
|
21
41
|
cleanupError;
|
|
42
|
+
operationDiagnostic;
|
|
22
43
|
constructor(options) {
|
|
23
44
|
const renderedArgs = options.invocation.args.join(' ');
|
|
24
45
|
const detail = options.stderr.trim() ||
|
|
@@ -36,6 +57,20 @@ export class NativeCliError extends Error {
|
|
|
36
57
|
this.reason = options.reason ?? 'exit';
|
|
37
58
|
this.cleanupError = options.cleanupError;
|
|
38
59
|
this.cause = options.cause;
|
|
60
|
+
const causeCode = readNativeCliErrorCode(options.cause);
|
|
61
|
+
const safeCauseCode = causeCode === 'ENOENT' || causeCode === 'EACCES' || causeCode === 'EPERM'
|
|
62
|
+
? causeCode : undefined;
|
|
63
|
+
this.operationDiagnostic = {
|
|
64
|
+
code: safeCauseCode === 'ENOENT' ? 'nativeCliExecutableMissing'
|
|
65
|
+
: this.reason === 'timeout' ? 'nativeCliTimedOut' : 'nativeCliFailed',
|
|
66
|
+
safeMessage: causeCode === 'ENOENT' ? 'The required platform CLI is not installed or cannot be found.'
|
|
67
|
+
: this.reason === 'timeout' ? 'The platform CLI timed out.'
|
|
68
|
+
: 'The platform CLI exited unsuccessfully.',
|
|
69
|
+
exitCode: options.exitCode,
|
|
70
|
+
...(safeCauseCode === undefined ? {} : {
|
|
71
|
+
cause: { code: safeCauseCode, safeMessage: `The platform CLI reported ${safeCauseCode}.` },
|
|
72
|
+
}),
|
|
73
|
+
};
|
|
39
74
|
}
|
|
40
75
|
}
|
|
41
76
|
let nativeCliRunnerOverrideForTests = null;
|
|
@@ -105,7 +140,57 @@ function isTimeoutLikeError(error, timeoutMs) {
|
|
|
105
140
|
const defaultNativeCliExecFile = (command, args, options, callback) => execFile(command, args, options, (error, stdout, stderr) => {
|
|
106
141
|
callback(error, stdout, stderr);
|
|
107
142
|
});
|
|
108
|
-
function
|
|
143
|
+
function delayNativeCliCleanup(delayMs) {
|
|
144
|
+
return new Promise((resolve) => {
|
|
145
|
+
setTimeout(resolve, delayMs);
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
function isProcessGroupMissing(error) {
|
|
149
|
+
return Boolean(error &&
|
|
150
|
+
typeof error === 'object' &&
|
|
151
|
+
'code' in error &&
|
|
152
|
+
error.code === 'ESRCH');
|
|
153
|
+
}
|
|
154
|
+
function isPosixProcessInspectionUnavailableError(error) {
|
|
155
|
+
return /POSIX (?:process (?:identity|marker) lookup|termination (?:audit|verification)) failed/u
|
|
156
|
+
.test(error.message);
|
|
157
|
+
}
|
|
158
|
+
async function terminateNativeCliProcessGroup(pid, killProcess) {
|
|
159
|
+
const groupPid = -pid;
|
|
160
|
+
const signalGroup = (signal) => {
|
|
161
|
+
try {
|
|
162
|
+
killProcess(groupPid, signal);
|
|
163
|
+
}
|
|
164
|
+
catch (error) {
|
|
165
|
+
if (isProcessGroupMissing(error)) {
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
throw new Error(`Native CLI cleanup unconfirmed: could not signal process group ${signal}.`, { cause: error });
|
|
169
|
+
}
|
|
170
|
+
};
|
|
171
|
+
const groupExists = () => {
|
|
172
|
+
try {
|
|
173
|
+
killProcess(groupPid, 0);
|
|
174
|
+
return true;
|
|
175
|
+
}
|
|
176
|
+
catch (error) {
|
|
177
|
+
if (isProcessGroupMissing(error)) {
|
|
178
|
+
return false;
|
|
179
|
+
}
|
|
180
|
+
throw new Error('Native CLI cleanup unconfirmed: could not verify process group exit.', { cause: error });
|
|
181
|
+
}
|
|
182
|
+
};
|
|
183
|
+
signalGroup('SIGTERM');
|
|
184
|
+
await delayNativeCliCleanup(NATIVE_CLI_PROCESS_GROUP_TERM_GRACE_MS);
|
|
185
|
+
signalGroup('SIGKILL');
|
|
186
|
+
for (let elapsedMs = 0; groupExists(); elapsedMs += NATIVE_CLI_PROCESS_GROUP_POLL_MS) {
|
|
187
|
+
if (elapsedMs >= NATIVE_CLI_PROCESS_GROUP_VERIFY_MS) {
|
|
188
|
+
throw new Error('Native CLI cleanup unconfirmed: process group is still running.');
|
|
189
|
+
}
|
|
190
|
+
await delayNativeCliCleanup(NATIVE_CLI_PROCESS_GROUP_POLL_MS);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
function settleNativeCliTerminationCleanup(child, terminateProcessTreeImpl, observation, requireConfirmedCleanup, allowUnobservedWindowsProcessOnNormalCompletion, processGroup, allowUnavailablePosixAudit, processTreeAuditPreparationError, killProcess) {
|
|
109
194
|
let directKillAttempted = false;
|
|
110
195
|
const killDirectChild = () => {
|
|
111
196
|
if (directKillAttempted) {
|
|
@@ -148,7 +233,42 @@ function settleNativeCliTerminationCleanup(child, terminateProcessTreeImpl, obse
|
|
|
148
233
|
timeout.unref();
|
|
149
234
|
let cleanup;
|
|
150
235
|
try {
|
|
151
|
-
cleanup =
|
|
236
|
+
cleanup = processGroup
|
|
237
|
+
? (async () => {
|
|
238
|
+
let processGroupError;
|
|
239
|
+
try {
|
|
240
|
+
await terminateNativeCliProcessGroup(childPid, killProcess);
|
|
241
|
+
}
|
|
242
|
+
catch (error) {
|
|
243
|
+
processGroupError = error instanceof Error
|
|
244
|
+
? error
|
|
245
|
+
: new Error('Native CLI cleanup unconfirmed: process-group cleanup rejected.');
|
|
246
|
+
}
|
|
247
|
+
let auditError = processTreeAuditPreparationError;
|
|
248
|
+
if (observation) {
|
|
249
|
+
try {
|
|
250
|
+
await terminateProcessTreeImpl(childPid, () => killDirectChild(), {}, { observation, requireConfirmedCleanup: true });
|
|
251
|
+
}
|
|
252
|
+
catch (error) {
|
|
253
|
+
auditError = error instanceof Error
|
|
254
|
+
? error
|
|
255
|
+
: new Error('Native CLI cleanup unconfirmed: cleanup audit rejected.');
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
if (processGroupError)
|
|
259
|
+
throw processGroupError;
|
|
260
|
+
if (auditError &&
|
|
261
|
+
!(allowUnavailablePosixAudit && isPosixProcessInspectionUnavailableError(auditError))) {
|
|
262
|
+
throw auditError;
|
|
263
|
+
}
|
|
264
|
+
})()
|
|
265
|
+
: terminateProcessTreeImpl(childPid, () => killDirectChild(), {}, {
|
|
266
|
+
observation,
|
|
267
|
+
requireConfirmedCleanup,
|
|
268
|
+
...(allowUnobservedWindowsProcessOnNormalCompletion
|
|
269
|
+
? { allowUnobservedWindowsProcessOnNormalCompletion: true }
|
|
270
|
+
: {}),
|
|
271
|
+
});
|
|
152
272
|
}
|
|
153
273
|
catch (error) {
|
|
154
274
|
finish(error instanceof Error
|
|
@@ -180,10 +300,44 @@ export function createExecFileNativeCliRunner(dependencies = {}) {
|
|
|
180
300
|
const observeProcessTreeImpl = dependencies.observeProcessTree ??
|
|
181
301
|
(dependencies.terminateProcessTree ? undefined : observeProcessTree);
|
|
182
302
|
const terminateProcessTreeImpl = dependencies.terminateProcessTree ?? terminateProcessTree;
|
|
303
|
+
const platform = dependencies.platform ?? process.platform;
|
|
304
|
+
const killProcess = dependencies.killProcess ?? process.kill;
|
|
305
|
+
const createWindowsJobInvocationImpl = dependencies.createWindowsJobInvocation ??
|
|
306
|
+
(dependencies.execFile ? undefined : createWindowsJobInvocation);
|
|
183
307
|
return async (invocation) => {
|
|
184
308
|
if (invocation.signal?.aborted) {
|
|
185
309
|
throw createAbortedNativeCliError(invocation);
|
|
186
310
|
}
|
|
311
|
+
let executableCommand = invocation.command;
|
|
312
|
+
let executableArgs = invocation.args;
|
|
313
|
+
const commandName = normalizeNativeCliCommandName(invocation.command);
|
|
314
|
+
if (platform === 'win32'
|
|
315
|
+
&& createWindowsJobInvocationImpl
|
|
316
|
+
&& (commandName === 'claude' || commandName === 'codex')) {
|
|
317
|
+
const commandOptions = {
|
|
318
|
+
command: invocation.command,
|
|
319
|
+
cwd: invocation.cwd,
|
|
320
|
+
env: invocation.env,
|
|
321
|
+
};
|
|
322
|
+
const resolved = commandName === 'claude'
|
|
323
|
+
? await resolveWindowsClaudeCommand(commandOptions)
|
|
324
|
+
: await resolveWindowsNpmCommand({
|
|
325
|
+
...commandOptions,
|
|
326
|
+
packageName: '@openai/codex',
|
|
327
|
+
binName: 'codex',
|
|
328
|
+
displayName: 'Codex',
|
|
329
|
+
});
|
|
330
|
+
executableCommand = resolved.command;
|
|
331
|
+
executableArgs = [...resolved.argsPrefix, ...invocation.args];
|
|
332
|
+
}
|
|
333
|
+
const windowsJobInvocation = platform === 'win32' && createWindowsJobInvocationImpl
|
|
334
|
+
? createWindowsJobInvocationImpl(executableCommand, executableArgs)
|
|
335
|
+
: undefined;
|
|
336
|
+
const cleanupStrategy = windowsJobInvocation
|
|
337
|
+
? 'windows-job'
|
|
338
|
+
: platform !== 'win32'
|
|
339
|
+
? 'process-group'
|
|
340
|
+
: isAgentNativeCliInvocation(invocation) ? 'on-demand-tree' : 'observed-tree';
|
|
187
341
|
return new Promise((resolve, reject) => {
|
|
188
342
|
let settled = false;
|
|
189
343
|
let terminationReason;
|
|
@@ -194,15 +348,38 @@ export function createExecFileNativeCliRunner(dependencies = {}) {
|
|
|
194
348
|
let streamedStderr = '';
|
|
195
349
|
let timeout;
|
|
196
350
|
let processTreeObservation;
|
|
351
|
+
let processTreeCleanup;
|
|
352
|
+
let processTreeAuditPreparationError;
|
|
353
|
+
let completionStarted = false;
|
|
354
|
+
let windowsJobCloseTimer;
|
|
197
355
|
let detachOutputListeners = () => { };
|
|
198
356
|
const abortListener = () => {
|
|
199
357
|
startTermination('aborted', invocation.signal?.reason);
|
|
200
358
|
};
|
|
359
|
+
const cleanupProcessTree = (requireConfirmedCleanup, allowUnobservedWindowsProcessOnNormalCompletion = false, allowUnavailablePosixAudit = false, auditTrustedPosixFailure = false) => {
|
|
360
|
+
if (cleanupStrategy === 'process-group' &&
|
|
361
|
+
(!trustedAgentCli || auditTrustedPosixFailure) &&
|
|
362
|
+
processTreeObservation === undefined &&
|
|
363
|
+
child.pid !== undefined) {
|
|
364
|
+
try {
|
|
365
|
+
processTreeObservation = observeProcessTreeImpl?.(child.pid, processMarker);
|
|
366
|
+
}
|
|
367
|
+
catch (error) {
|
|
368
|
+
processTreeAuditPreparationError = new Error('Native CLI cleanup unconfirmed: POSIX process marker lookup failed.', { cause: error });
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
processTreeCleanup ??= settleNativeCliTerminationCleanup(child, terminateProcessTreeImpl, processTreeObservation, requireConfirmedCleanup, allowUnobservedWindowsProcessOnNormalCompletion, cleanupStrategy === 'process-group', allowUnavailablePosixAudit, processTreeAuditPreparationError, killProcess);
|
|
372
|
+
return processTreeCleanup;
|
|
373
|
+
};
|
|
201
374
|
const clearLifecycle = () => {
|
|
202
375
|
if (timeout) {
|
|
203
376
|
clearTimeout(timeout);
|
|
204
377
|
timeout = undefined;
|
|
205
378
|
}
|
|
379
|
+
if (windowsJobCloseTimer) {
|
|
380
|
+
clearTimeout(windowsJobCloseTimer);
|
|
381
|
+
windowsJobCloseTimer = undefined;
|
|
382
|
+
}
|
|
206
383
|
invocation.signal?.removeEventListener('abort', abortListener);
|
|
207
384
|
detachOutputListeners();
|
|
208
385
|
processTreeObservation?.dispose();
|
|
@@ -255,17 +432,113 @@ export function createExecFileNativeCliRunner(dependencies = {}) {
|
|
|
255
432
|
clearTimeout(timeout);
|
|
256
433
|
timeout = undefined;
|
|
257
434
|
}
|
|
435
|
+
if (cleanupStrategy === 'windows-job') {
|
|
436
|
+
try {
|
|
437
|
+
if (child.exitCode == null &&
|
|
438
|
+
child.signalCode == null &&
|
|
439
|
+
child.kill('SIGKILL') === false) {
|
|
440
|
+
throw new Error('Windows Job helper did not accept termination.');
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
catch (error) {
|
|
444
|
+
finishTermination(error instanceof Error
|
|
445
|
+
? error
|
|
446
|
+
: new Error('Windows Job helper termination failed.'));
|
|
447
|
+
return;
|
|
448
|
+
}
|
|
449
|
+
windowsJobCloseTimer = setTimeout(() => finishTermination(new Error('Windows Job helper exit could not be confirmed.')), NATIVE_CLI_CLEANUP_TIMEOUT_MS);
|
|
450
|
+
windowsJobCloseTimer.unref();
|
|
451
|
+
return;
|
|
452
|
+
}
|
|
453
|
+
if (cleanupStrategy === 'on-demand-tree' && child.pid !== undefined) {
|
|
454
|
+
try {
|
|
455
|
+
processTreeObservation = (observeProcessTreeImpl ?? observeProcessTree)(child.pid, processMarker);
|
|
456
|
+
}
|
|
457
|
+
catch (error) {
|
|
458
|
+
child.stdout?.destroy?.();
|
|
459
|
+
child.stderr?.destroy?.();
|
|
460
|
+
try {
|
|
461
|
+
child.kill('SIGKILL');
|
|
462
|
+
}
|
|
463
|
+
catch {
|
|
464
|
+
// The direct child can exit before fallback termination runs.
|
|
465
|
+
}
|
|
466
|
+
finishTermination(error instanceof Error
|
|
467
|
+
? error
|
|
468
|
+
: new Error('Native CLI cleanup unconfirmed: process observation threw.'));
|
|
469
|
+
return;
|
|
470
|
+
}
|
|
471
|
+
}
|
|
258
472
|
Promise.resolve()
|
|
259
|
-
.then(() =>
|
|
473
|
+
.then(() => cleanupProcessTree(cleanupStrategy === 'observed-tree'
|
|
474
|
+
? (child.exitCode != null || child.signalCode != null) && callbackOutput === undefined
|
|
475
|
+
: true, false, false, true))
|
|
260
476
|
.then(finishTermination);
|
|
261
477
|
}
|
|
478
|
+
const finishCallback = (cleanupError) => {
|
|
479
|
+
if (terminationReason)
|
|
480
|
+
return;
|
|
481
|
+
const output = callbackOutput ?? { stdout: streamedStdout, stderr: streamedStderr };
|
|
482
|
+
const childFailed = child.exitCode != null && child.exitCode !== 0 || child.signalCode != null;
|
|
483
|
+
if (callbackError || childFailed) {
|
|
484
|
+
const callbackExitCode = callbackError && typeof callbackError === 'object' &&
|
|
485
|
+
typeof callbackError.code === 'number'
|
|
486
|
+
? callbackError.code
|
|
487
|
+
: undefined;
|
|
488
|
+
const exitCode = callbackExitCode !== undefined
|
|
489
|
+
? callbackExitCode
|
|
490
|
+
: child.exitCode != null
|
|
491
|
+
? child.exitCode
|
|
492
|
+
: isAbortLikeError(callbackError) ||
|
|
493
|
+
isTimeoutLikeError(callbackError, invocation.timeoutMs)
|
|
494
|
+
? 124
|
|
495
|
+
: 1;
|
|
496
|
+
rejectOnce(new NativeCliError({
|
|
497
|
+
invocation,
|
|
498
|
+
exitCode,
|
|
499
|
+
...output,
|
|
500
|
+
cause: callbackError ?? new Error(`Command exited with ${child.signalCode ?? `code ${exitCode}`}.`),
|
|
501
|
+
cleanupError,
|
|
502
|
+
}));
|
|
503
|
+
return;
|
|
504
|
+
}
|
|
505
|
+
if (cleanupError) {
|
|
506
|
+
rejectOnce(new NativeCliError({
|
|
507
|
+
invocation,
|
|
508
|
+
exitCode: 1,
|
|
509
|
+
...output,
|
|
510
|
+
cause: cleanupError,
|
|
511
|
+
cleanupError,
|
|
512
|
+
reason: 'exit',
|
|
513
|
+
}));
|
|
514
|
+
return;
|
|
515
|
+
}
|
|
516
|
+
resolveOnce({ exitCode: 0, ...output });
|
|
517
|
+
};
|
|
518
|
+
const startCompletion = (allowUnobservedWindowsProcessOnNormalCompletion = false) => {
|
|
519
|
+
if (settled || terminationReason || completionStarted)
|
|
520
|
+
return;
|
|
521
|
+
completionStarted = true;
|
|
522
|
+
if (timeout) {
|
|
523
|
+
clearTimeout(timeout);
|
|
524
|
+
timeout = undefined;
|
|
525
|
+
}
|
|
526
|
+
void cleanupProcessTree(true, allowUnobservedWindowsProcessOnNormalCompletion, platform !== 'win32' && callbackError == null &&
|
|
527
|
+
(child.exitCode == null || child.exitCode === 0) && child.signalCode == null, platform !== 'win32' && trustedAgentCli && Boolean(callbackError
|
|
528
|
+
|| child.exitCode != null && child.exitCode !== 0
|
|
529
|
+
|| child.signalCode != null)).then(finishCallback);
|
|
530
|
+
};
|
|
262
531
|
const processMarker = randomUUID();
|
|
263
|
-
|
|
264
|
-
|
|
532
|
+
const trustedAgentCli = isAgentNativeCliInvocation(invocation);
|
|
533
|
+
child = execFileImpl(windowsJobInvocation?.command ?? executableCommand, windowsJobInvocation?.args ?? executableArgs, {
|
|
534
|
+
cwd: platform === 'win32' && invocation.cwd !== undefined
|
|
535
|
+
? path.win32.toNamespacedPath(invocation.cwd)
|
|
536
|
+
: invocation.cwd,
|
|
265
537
|
env: {
|
|
266
538
|
...(invocation.env ?? process.env),
|
|
267
539
|
[NATIVE_CLI_PROCESS_MARKER_ENV]: processMarker,
|
|
268
540
|
},
|
|
541
|
+
detached: platform !== 'win32',
|
|
269
542
|
windowsHide: true,
|
|
270
543
|
}, (error, stdout, stderr) => {
|
|
271
544
|
if (settled) {
|
|
@@ -274,30 +547,29 @@ export function createExecFileNativeCliRunner(dependencies = {}) {
|
|
|
274
547
|
callbackError = error;
|
|
275
548
|
callbackOutput = { stdout, stderr };
|
|
276
549
|
if (terminationReason) {
|
|
550
|
+
if (cleanupStrategy === 'windows-job') {
|
|
551
|
+
if (windowsJobCloseTimer) {
|
|
552
|
+
clearTimeout(windowsJobCloseTimer);
|
|
553
|
+
windowsJobCloseTimer = undefined;
|
|
554
|
+
}
|
|
555
|
+
finishTermination();
|
|
556
|
+
}
|
|
277
557
|
return;
|
|
278
558
|
}
|
|
279
|
-
if (
|
|
280
|
-
|
|
281
|
-
exitCode: 0,
|
|
282
|
-
stdout,
|
|
283
|
-
stderr,
|
|
284
|
-
});
|
|
559
|
+
if (cleanupStrategy === 'windows-job') {
|
|
560
|
+
queueMicrotask(() => finishCallback());
|
|
285
561
|
return;
|
|
286
562
|
}
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
stdout,
|
|
296
|
-
stderr,
|
|
297
|
-
cause: error,
|
|
298
|
-
}));
|
|
563
|
+
if (cleanupStrategy === 'on-demand-tree') {
|
|
564
|
+
queueMicrotask(() => finishCallback());
|
|
565
|
+
return;
|
|
566
|
+
}
|
|
567
|
+
queueMicrotask(() => startCompletion(platform === 'win32' &&
|
|
568
|
+
error === null &&
|
|
569
|
+
(child.exitCode == null || child.exitCode === 0) &&
|
|
570
|
+
child.signalCode == null));
|
|
299
571
|
});
|
|
300
|
-
if (child.pid !== undefined) {
|
|
572
|
+
if (cleanupStrategy === 'observed-tree' && child.pid !== undefined) {
|
|
301
573
|
processTreeObservation = observeProcessTreeImpl?.(child.pid, processMarker);
|
|
302
574
|
}
|
|
303
575
|
const stdoutListener = (chunk) => {
|
|
@@ -312,6 +584,13 @@ export function createExecFileNativeCliRunner(dependencies = {}) {
|
|
|
312
584
|
child.stdout?.removeListener?.('data', stdoutListener);
|
|
313
585
|
child.stderr?.removeListener?.('data', stderrListener);
|
|
314
586
|
};
|
|
587
|
+
if (cleanupStrategy !== 'on-demand-tree' && cleanupStrategy !== 'windows-job') {
|
|
588
|
+
child.once('exit', () => {
|
|
589
|
+
if (!terminationReason) {
|
|
590
|
+
startCompletion(platform === 'win32' && child.exitCode === 0 && child.signalCode == null);
|
|
591
|
+
}
|
|
592
|
+
});
|
|
593
|
+
}
|
|
315
594
|
if (invocation.timeoutMs && invocation.timeoutMs > 0) {
|
|
316
595
|
child.once('spawn', () => {
|
|
317
596
|
if (settled || terminationReason) {
|
|
@@ -337,6 +616,9 @@ function normalizeNativeCliCommandName(command) {
|
|
|
337
616
|
return baseName.replace(/\.(?:bat|cmd|com|exe)$/u, '');
|
|
338
617
|
}
|
|
339
618
|
function isAgentNativeCliInvocation(invocation) {
|
|
619
|
+
if (invocation.agentKind !== undefined) {
|
|
620
|
+
return true;
|
|
621
|
+
}
|
|
340
622
|
const commandName = normalizeNativeCliCommandName(invocation.command);
|
|
341
623
|
return commandName === 'codex' || commandName === 'claude';
|
|
342
624
|
}
|
|
@@ -372,54 +654,114 @@ export async function runNativeCli(invocation, runner) {
|
|
|
372
654
|
const resolvedInvocation = applyAgentNativeCliDefaultTimeout(invocation);
|
|
373
655
|
return (runner ?? getDefaultNativeCliRunner())(resolvedInvocation);
|
|
374
656
|
}
|
|
375
|
-
|
|
657
|
+
function buildCodexInvocation(manager, args, cwd, env) {
|
|
376
658
|
return {
|
|
377
|
-
command:
|
|
378
|
-
args: [
|
|
659
|
+
command: manager.command,
|
|
660
|
+
args: [...manager.argsPrefix, ...args],
|
|
661
|
+
agentKind: 'codex',
|
|
379
662
|
cwd,
|
|
380
|
-
env
|
|
663
|
+
env: {
|
|
664
|
+
...env,
|
|
665
|
+
CODEX_HOME: getCodexHome(env),
|
|
666
|
+
},
|
|
381
667
|
};
|
|
382
668
|
}
|
|
383
|
-
export function
|
|
384
|
-
return
|
|
385
|
-
command: 'codex',
|
|
386
|
-
args: ['plugin', 'list'],
|
|
387
|
-
cwd,
|
|
388
|
-
env,
|
|
389
|
-
};
|
|
669
|
+
export function buildCodexPluginAddInvocation(manager, pluginId, cwd, env) {
|
|
670
|
+
return buildCodexInvocation(manager, ['plugin', 'add', pluginId], cwd, env);
|
|
390
671
|
}
|
|
391
|
-
export function
|
|
392
|
-
return
|
|
393
|
-
command: 'codex',
|
|
394
|
-
args: ['plugin', 'remove', pluginId],
|
|
395
|
-
cwd,
|
|
396
|
-
env,
|
|
397
|
-
};
|
|
672
|
+
export function buildCodexPluginListJsonInvocation(manager, marketplaceName, cwd, env) {
|
|
673
|
+
return buildCodexInvocation(manager, ['plugin', 'list', '--marketplace', marketplaceName, '--json'], cwd, env);
|
|
398
674
|
}
|
|
399
|
-
export function
|
|
675
|
+
export function buildCodexProjectPluginListInvocations(manager, options) {
|
|
400
676
|
return {
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
cwd,
|
|
404
|
-
env,
|
|
677
|
+
exact: buildCodexPluginListJsonInvocation(manager, options.marketplaceName, options.exactCwd, options.env),
|
|
678
|
+
neutral: buildCodexPluginListJsonInvocation(manager, options.marketplaceName, options.neutralCwd, options.env),
|
|
405
679
|
};
|
|
406
680
|
}
|
|
407
|
-
|
|
681
|
+
function readCodexPluginListEntry(value, index) {
|
|
682
|
+
if (!value || typeof value !== 'object' || Array.isArray(value)) {
|
|
683
|
+
throw new Error(`codexPluginListInvalid: installed[${index}] must be an object.`);
|
|
684
|
+
}
|
|
685
|
+
const record = value;
|
|
686
|
+
const pluginId = record.pluginId;
|
|
687
|
+
if (typeof pluginId !== 'string'
|
|
688
|
+
|| pluginId !== pluginId.trim()
|
|
689
|
+
|| !/^[^@\s]+@[^@\s]+$/u.test(pluginId)) {
|
|
690
|
+
throw new Error(`codexPluginListInvalid: installed[${index}].pluginId must be an exact namespaced ID.`);
|
|
691
|
+
}
|
|
692
|
+
if (record.installed !== true) {
|
|
693
|
+
throw new Error(`codexPluginListInvalid: installed[${index}].installed must be true.`);
|
|
694
|
+
}
|
|
695
|
+
if (typeof record.enabled !== 'boolean') {
|
|
696
|
+
throw new Error(`codexPluginListInvalid: installed[${index}].enabled must be boolean.`);
|
|
697
|
+
}
|
|
698
|
+
if (record.version !== undefined && typeof record.version !== 'string') {
|
|
699
|
+
throw new Error(`codexPluginListInvalid: installed[${index}].version must be string.`);
|
|
700
|
+
}
|
|
701
|
+
const source = record.source;
|
|
702
|
+
if (source !== undefined && (!source || typeof source !== 'object' || Array.isArray(source))) {
|
|
703
|
+
throw new Error(`codexPluginListInvalid: installed[${index}].source must be an object.`);
|
|
704
|
+
}
|
|
705
|
+
const pluginPath = source && typeof source === 'object'
|
|
706
|
+
? source.path
|
|
707
|
+
: undefined;
|
|
708
|
+
if (pluginPath !== undefined && typeof pluginPath !== 'string') {
|
|
709
|
+
throw new Error(`codexPluginListInvalid: installed[${index}].source.path must be string.`);
|
|
710
|
+
}
|
|
408
711
|
return {
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
712
|
+
pluginId,
|
|
713
|
+
enabled: record.enabled,
|
|
714
|
+
...(typeof record.version === 'string' ? { version: record.version } : {}),
|
|
715
|
+
...(typeof pluginPath === 'string' ? { path: pluginPath } : {}),
|
|
413
716
|
};
|
|
414
717
|
}
|
|
415
|
-
export function
|
|
718
|
+
export function parseCodexPluginListJson(stdout) {
|
|
719
|
+
let value;
|
|
720
|
+
try {
|
|
721
|
+
value = JSON.parse(stdout);
|
|
722
|
+
}
|
|
723
|
+
catch {
|
|
724
|
+
throw new Error('codexPluginListInvalid: Codex plugin list did not return JSON.');
|
|
725
|
+
}
|
|
726
|
+
if (!value || typeof value !== 'object' || Array.isArray(value)) {
|
|
727
|
+
throw new Error('codexPluginListInvalid: expected a Codex 0.151 plugin list object.');
|
|
728
|
+
}
|
|
729
|
+
const record = value;
|
|
730
|
+
if (!Array.isArray(record.installed) || !Array.isArray(record.available)) {
|
|
731
|
+
throw new Error('codexPluginListInvalid: expected installed[] and available[].');
|
|
732
|
+
}
|
|
733
|
+
return record.installed.map(readCodexPluginListEntry);
|
|
734
|
+
}
|
|
735
|
+
function isCodexPluginActive(entries, pluginId) {
|
|
736
|
+
const matches = entries.filter((entry) => entry.pluginId === pluginId);
|
|
737
|
+
if (matches.length > 1) {
|
|
738
|
+
throw new Error(`codexPluginListInvalid: duplicate plugin ID ${pluginId}.`);
|
|
739
|
+
}
|
|
740
|
+
return matches.length === 1 && matches[0].enabled;
|
|
741
|
+
}
|
|
742
|
+
export function postcheckCodexProjectPluginActivation(options) {
|
|
743
|
+
const exactActive = isCodexPluginActive(parseCodexPluginListJson(options.exactResult.stdout), options.pluginId);
|
|
744
|
+
const neutralActive = isCodexPluginActive(parseCodexPluginListJson(options.neutralResult.stdout), options.pluginId);
|
|
745
|
+
if (exactActive !== (options.userEnabled || options.projectEnabled)
|
|
746
|
+
|| neutralActive !== options.userEnabled) {
|
|
747
|
+
throw new CodexProjectConfigNotEffectiveError(options.pluginId);
|
|
748
|
+
}
|
|
416
749
|
return {
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
750
|
+
effective: true,
|
|
751
|
+
pluginId: options.pluginId,
|
|
752
|
+
exactActive,
|
|
753
|
+
neutralActive,
|
|
421
754
|
};
|
|
422
755
|
}
|
|
756
|
+
export function buildCodexPluginRemoveInvocation(manager, pluginId, cwd, env) {
|
|
757
|
+
return buildCodexInvocation(manager, ['plugin', 'remove', pluginId], cwd, env);
|
|
758
|
+
}
|
|
759
|
+
export function buildCodexMarketplaceAddInvocation(manager, awHome, cwd, env) {
|
|
760
|
+
return buildCodexInvocation(manager, ['plugin', 'marketplace', 'add', awHome], cwd, env);
|
|
761
|
+
}
|
|
762
|
+
export function buildCodexMarketplaceRemoveInvocation(manager, marketplaceName, cwd, env) {
|
|
763
|
+
return buildCodexInvocation(manager, ['plugin', 'marketplace', 'remove', marketplaceName], cwd, env);
|
|
764
|
+
}
|
|
423
765
|
export async function runNativeCliChecked(invocation, runner) {
|
|
424
766
|
const result = await runNativeCli(invocation, runner);
|
|
425
767
|
if (result.exitCode !== 0) {
|