@lesliechan721/aw 0.1.0-beta.6 → 0.1.0-beta.60

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (621) hide show
  1. package/dist/authoring/assets/aw-config.mjs +100 -501
  2. package/dist/authoring/assets/aw-config.mjs.map +1 -1
  3. package/dist/authoring/assets/aw-runtime-config.d.mts +13 -0
  4. package/dist/authoring/assets/aw-runtime-config.mjs +199 -0
  5. package/dist/authoring/assets/aw-runtime-config.mjs.map +1 -0
  6. package/dist/authoring/scripts/add-skill.mjs +4 -4
  7. package/dist/authoring/scripts/add-skill.mjs.map +1 -1
  8. package/dist/authoring/scripts/init-plugin.mjs +67 -97
  9. package/dist/authoring/scripts/init-plugin.mjs.map +1 -1
  10. package/dist/authoring/scripts/lib/plugin-root.mjs +4 -4
  11. package/dist/authoring/scripts/lib/plugin-root.mjs.map +1 -1
  12. package/dist/authoring/scripts/lib/plugin-version-check.d.mts +1 -0
  13. package/dist/authoring/scripts/lib/plugin-version-check.mjs +229 -8
  14. package/dist/authoring/scripts/lib/plugin-version-check.mjs.map +1 -1
  15. package/dist/authoring/scripts/lib/skill-scaffold.d.mts +77 -92
  16. package/dist/authoring/scripts/lib/skill-scaffold.mjs +99 -124
  17. package/dist/authoring/scripts/lib/skill-scaffold.mjs.map +1 -1
  18. package/dist/authoring/scripts/plugin-status.mjs +8 -11
  19. package/dist/authoring/scripts/plugin-status.mjs.map +1 -1
  20. package/dist/authoring/scripts/remove-plugin.mjs +3 -2
  21. package/dist/authoring/scripts/remove-plugin.mjs.map +1 -1
  22. package/dist/authoring/scripts/validate-plugin.mjs +552 -1142
  23. package/dist/authoring/scripts/validate-plugin.mjs.map +1 -1
  24. package/dist/native-runtime/reader-runtime.mjs +34 -0
  25. package/dist/native-runtime/reader.d.mts +6 -0
  26. package/dist/native-runtime/reader.mjs +11 -0
  27. package/dist/scripts/aw-skill-eval-materializer.d.ts +26 -0
  28. package/dist/scripts/aw-skill-eval-materializer.js +306 -0
  29. package/dist/scripts/aw-skill-eval-materializer.js.map +1 -0
  30. package/dist/scripts/bundle-plugins.d.ts +1 -0
  31. package/dist/scripts/bundle-plugins.js +19 -8
  32. package/dist/scripts/bundle-plugins.js.map +1 -1
  33. package/dist/scripts/plugin-staging.d.ts +7 -9
  34. package/dist/scripts/plugin-staging.js +18 -29
  35. package/dist/scripts/plugin-staging.js.map +1 -1
  36. package/dist/scripts/plugin-test-reporter.d.mts +2 -0
  37. package/dist/scripts/plugin-test-reporter.mjs +21 -0
  38. package/dist/scripts/plugin-test-reporter.mjs.map +1 -0
  39. package/dist/scripts/test-plugin-scripts.d.ts +5 -0
  40. package/dist/scripts/test-plugin-scripts.js +208 -89
  41. package/dist/scripts/test-plugin-scripts.js.map +1 -1
  42. package/dist/scripts/test-workers.d.mts +24 -0
  43. package/dist/scripts/test-workers.mjs +59 -0
  44. package/dist/scripts/test-workers.mjs.map +1 -0
  45. package/dist/src/adapters/helpers.d.ts +7 -0
  46. package/dist/src/adapters/helpers.js +2 -2
  47. package/dist/src/adapters/helpers.js.map +1 -1
  48. package/dist/src/authoring/workspace-commands.d.ts +19 -1
  49. package/dist/src/authoring/workspace-commands.js +24 -5
  50. package/dist/src/authoring/workspace-commands.js.map +1 -1
  51. package/dist/src/commands/aw-capabilities.d.ts +78 -0
  52. package/dist/src/commands/aw-capabilities.js +266 -0
  53. package/dist/src/commands/aw-capabilities.js.map +1 -0
  54. package/dist/src/commands/catalog-dev-source.d.ts +154 -0
  55. package/dist/src/commands/catalog-dev-source.js +655 -0
  56. package/dist/src/commands/catalog-dev-source.js.map +1 -0
  57. package/dist/src/commands/catalog-generation.d.ts +21 -0
  58. package/dist/src/commands/catalog-generation.js +9 -0
  59. package/dist/src/commands/catalog-generation.js.map +1 -0
  60. package/dist/src/commands/catalog-publication-inspection.d.ts +71 -30
  61. package/dist/src/commands/catalog-publication-inspection.js +475 -63
  62. package/dist/src/commands/catalog-publication-inspection.js.map +1 -1
  63. package/dist/src/commands/catalog-publication-journal.d.ts +68 -0
  64. package/dist/src/commands/catalog-publication-journal.js +292 -0
  65. package/dist/src/commands/catalog-publication-journal.js.map +1 -0
  66. package/dist/src/commands/catalog-publication-target.d.ts +18 -0
  67. package/dist/src/commands/catalog-publication-target.js +95 -0
  68. package/dist/src/commands/catalog-publication-target.js.map +1 -0
  69. package/dist/src/commands/catalog-publish.d.ts +73 -15
  70. package/dist/src/commands/catalog-publish.js +701 -212
  71. package/dist/src/commands/catalog-publish.js.map +1 -1
  72. package/dist/src/commands/catalog-source.d.ts +60 -22
  73. package/dist/src/commands/catalog-source.js +311 -91
  74. package/dist/src/commands/catalog-source.js.map +1 -1
  75. package/dist/src/commands/catalog-status.d.ts +18 -22
  76. package/dist/src/commands/catalog-status.js +81 -115
  77. package/dist/src/commands/catalog-status.js.map +1 -1
  78. package/dist/src/commands/catalog-store.d.ts +104 -0
  79. package/dist/src/commands/catalog-store.js +685 -0
  80. package/dist/src/commands/catalog-store.js.map +1 -0
  81. package/dist/src/commands/catalog-workspace-resolution.d.ts +13 -0
  82. package/dist/src/commands/catalog-workspace-resolution.js +42 -0
  83. package/dist/src/commands/catalog-workspace-resolution.js.map +1 -0
  84. package/dist/src/commands/console.js +28 -17
  85. package/dist/src/commands/console.js.map +1 -1
  86. package/dist/src/commands/dependency-operation-plan.d.ts +52 -15
  87. package/dist/src/commands/dependency-operation-plan.js +289 -7
  88. package/dist/src/commands/dependency-operation-plan.js.map +1 -1
  89. package/dist/src/commands/init.d.ts +5 -11
  90. package/dist/src/commands/init.js +30 -51
  91. package/dist/src/commands/init.js.map +1 -1
  92. package/dist/src/commands/managed-commands.d.ts +28 -0
  93. package/dist/src/commands/managed-commands.js +315 -0
  94. package/dist/src/commands/managed-commands.js.map +1 -0
  95. package/dist/src/commands/offline-cleanup-evidence.d.ts +67 -0
  96. package/dist/src/commands/offline-cleanup-evidence.js +181 -0
  97. package/dist/src/commands/offline-cleanup-evidence.js.map +1 -0
  98. package/dist/src/commands/operation-plan.d.ts +182 -0
  99. package/dist/src/commands/operation-plan.js +71 -0
  100. package/dist/src/commands/operation-plan.js.map +1 -0
  101. package/dist/src/commands/operation-planner.d.ts +47 -0
  102. package/dist/src/commands/operation-planner.js +142 -0
  103. package/dist/src/commands/operation-planner.js.map +1 -0
  104. package/dist/src/commands/options.d.ts +9 -7
  105. package/dist/src/commands/options.js +83 -21
  106. package/dist/src/commands/options.js.map +1 -1
  107. package/dist/src/commands/plugin-capabilities.js +65 -4
  108. package/dist/src/commands/plugin-capabilities.js.map +1 -1
  109. package/dist/src/commands/rebuild-command.d.ts +78 -31
  110. package/dist/src/commands/rebuild-command.js +5229 -942
  111. package/dist/src/commands/rebuild-command.js.map +1 -1
  112. package/dist/src/commands/rebuild-integration.d.ts +143 -21
  113. package/dist/src/commands/rebuild-integration.js +3384 -1342
  114. package/dist/src/commands/rebuild-integration.js.map +1 -1
  115. package/dist/src/commands/rebuild-operations.d.ts +60 -30
  116. package/dist/src/commands/rebuild-operations.js +267 -320
  117. package/dist/src/commands/rebuild-operations.js.map +1 -1
  118. package/dist/src/commands/reconcile-operation-plan.d.ts +28 -0
  119. package/dist/src/commands/reconcile-operation-plan.js +47 -0
  120. package/dist/src/commands/reconcile-operation-plan.js.map +1 -0
  121. package/dist/src/commands/review-inspection.d.ts +60 -0
  122. package/dist/src/commands/review-inspection.js +422 -0
  123. package/dist/src/commands/review-inspection.js.map +1 -0
  124. package/dist/src/commands/review-preparation.d.ts +49 -0
  125. package/dist/src/commands/review-preparation.js +427 -0
  126. package/dist/src/commands/review-preparation.js.map +1 -0
  127. package/dist/src/commands/runtime.d.ts +1 -5
  128. package/dist/src/commands/runtime.js +27 -53
  129. package/dist/src/commands/runtime.js.map +1 -1
  130. package/dist/src/commands/skill-eval.d.ts +39 -0
  131. package/dist/src/commands/skill-eval.js +400 -0
  132. package/dist/src/commands/skill-eval.js.map +1 -0
  133. package/dist/src/commands/status-v6.d.ts +279 -0
  134. package/dist/src/commands/status-v6.js +2785 -0
  135. package/dist/src/commands/status-v6.js.map +1 -0
  136. package/dist/src/commands/sync-command.d.ts +40 -0
  137. package/dist/src/commands/sync-command.js +254 -0
  138. package/dist/src/commands/sync-command.js.map +1 -0
  139. package/dist/src/commands/wizard.d.ts +8 -5
  140. package/dist/src/commands/wizard.js +6 -4
  141. package/dist/src/commands/wizard.js.map +1 -1
  142. package/dist/src/commands/write-commands.d.ts +9 -3
  143. package/dist/src/commands/write-commands.js +136 -31
  144. package/dist/src/commands/write-commands.js.map +1 -1
  145. package/dist/src/constants.d.ts +7 -2
  146. package/dist/src/constants.js +7 -2
  147. package/dist/src/constants.js.map +1 -1
  148. package/dist/src/eval/manifest-v1.d.ts +68 -0
  149. package/dist/src/eval/manifest-v1.js +353 -0
  150. package/dist/src/eval/manifest-v1.js.map +1 -0
  151. package/dist/src/generators/local-plugin.d.ts +5 -1
  152. package/dist/src/generators/local-plugin.js +261 -109
  153. package/dist/src/generators/local-plugin.js.map +1 -1
  154. package/dist/src/generators/permissions.d.ts +5 -2
  155. package/dist/src/generators/permissions.js +28 -15
  156. package/dist/src/generators/permissions.js.map +1 -1
  157. package/dist/src/index.d.ts +10 -4
  158. package/dist/src/index.js +1774 -609
  159. package/dist/src/index.js.map +1 -1
  160. package/dist/src/output/command-receipt.d.ts +47 -46
  161. package/dist/src/output/command-receipt.js +277 -79
  162. package/dist/src/output/command-receipt.js.map +1 -1
  163. package/dist/src/output/model.d.ts +3 -44
  164. package/dist/src/output/model.js +1 -144
  165. package/dist/src/output/model.js.map +1 -1
  166. package/dist/src/output/rebuild-progress.js +15 -13
  167. package/dist/src/output/rebuild-progress.js.map +1 -1
  168. package/dist/src/portable/commands.d.ts +46 -7
  169. package/dist/src/portable/commands.js +349 -37
  170. package/dist/src/portable/commands.js.map +1 -1
  171. package/dist/src/portable/materializer.d.ts +17 -4
  172. package/dist/src/portable/materializer.js +186 -41
  173. package/dist/src/portable/materializer.js.map +1 -1
  174. package/dist/src/portable/skills-cli.d.ts +15 -7
  175. package/dist/src/portable/skills-cli.js +74 -20
  176. package/dist/src/portable/skills-cli.js.map +1 -1
  177. package/dist/src/review/eval-source-input.d.ts +43 -0
  178. package/dist/src/review/eval-source-input.js +207 -0
  179. package/dist/src/review/eval-source-input.js.map +1 -0
  180. package/dist/src/review/review-profile.d.ts +17 -0
  181. package/dist/src/review/review-profile.js +234 -0
  182. package/dist/src/review/review-profile.js.map +1 -0
  183. package/dist/src/review/review-selection.d.ts +30 -0
  184. package/dist/src/review/review-selection.js +527 -0
  185. package/dist/src/review/review-selection.js.map +1 -0
  186. package/dist/src/review/review-types.d.ts +68 -0
  187. package/dist/src/review/review-types.js +16 -0
  188. package/dist/src/review/review-types.js.map +1 -0
  189. package/dist/src/review/skill-materialization.d.ts +26 -0
  190. package/dist/src/review/skill-materialization.js +217 -0
  191. package/dist/src/review/skill-materialization.js.map +1 -0
  192. package/dist/src/review/source-binding.d.ts +183 -0
  193. package/dist/src/review/source-binding.js +708 -0
  194. package/dist/src/review/source-binding.js.map +1 -0
  195. package/dist/src/tui/catalog-freshness.d.ts +1 -0
  196. package/dist/src/tui/catalog-freshness.js +2 -0
  197. package/dist/src/tui/catalog-freshness.js.map +1 -0
  198. package/dist/src/tui/catalog-generation.d.ts +21 -0
  199. package/dist/src/tui/catalog-generation.js +156 -0
  200. package/dist/src/tui/catalog-generation.js.map +1 -0
  201. package/dist/src/tui/catalog-sources/projection.d.ts +4 -0
  202. package/dist/src/tui/catalog-sources/projection.js +17 -0
  203. package/dist/src/tui/catalog-sources/projection.js.map +1 -0
  204. package/dist/src/tui/catalog-sources/review.d.ts +3 -0
  205. package/dist/src/tui/catalog-sources/review.js +13 -0
  206. package/dist/src/tui/catalog-sources/review.js.map +1 -0
  207. package/dist/src/tui/catalog-sources/screens.d.ts +12 -0
  208. package/dist/src/tui/catalog-sources/screens.js +40 -0
  209. package/dist/src/tui/catalog-sources/screens.js.map +1 -0
  210. package/dist/src/tui/catalog-sources/session.d.ts +32 -0
  211. package/dist/src/tui/catalog-sources/session.js +300 -0
  212. package/dist/src/tui/catalog-sources/session.js.map +1 -0
  213. package/dist/src/tui/catalog-sources/types.d.ts +54 -0
  214. package/dist/src/tui/catalog-sources/types.js +2 -0
  215. package/dist/src/tui/catalog-sources/types.js.map +1 -0
  216. package/dist/src/tui/catalog-store-task.d.ts +16 -0
  217. package/dist/src/tui/catalog-store-task.js +19 -0
  218. package/dist/src/tui/catalog-store-task.js.map +1 -0
  219. package/dist/src/tui/clipboard.d.ts +13 -0
  220. package/dist/src/tui/clipboard.js +95 -0
  221. package/dist/src/tui/clipboard.js.map +1 -0
  222. package/dist/src/tui/components.d.ts +110 -3
  223. package/dist/src/tui/components.js +183 -36
  224. package/dist/src/tui/components.js.map +1 -1
  225. package/dist/src/tui/config-array-draft.d.ts +29 -0
  226. package/dist/src/tui/config-array-draft.js +48 -0
  227. package/dist/src/tui/config-array-draft.js.map +1 -0
  228. package/dist/src/tui/config-leaf-editor.d.ts +19 -0
  229. package/dist/src/tui/config-leaf-editor.js +212 -0
  230. package/dist/src/tui/config-leaf-editor.js.map +1 -0
  231. package/dist/src/tui/config-references.d.ts +34 -0
  232. package/dist/src/tui/config-references.js +70 -0
  233. package/dist/src/tui/config-references.js.map +1 -0
  234. package/dist/src/tui/config-value-presentation.d.ts +20 -0
  235. package/dist/src/tui/config-value-presentation.js +104 -0
  236. package/dist/src/tui/config-value-presentation.js.map +1 -0
  237. package/dist/src/tui/console-app-v4.d.ts +14 -4
  238. package/dist/src/tui/console-app-v4.js +9205 -1951
  239. package/dist/src/tui/console-app-v4.js.map +1 -1
  240. package/dist/src/tui/content-item-card.d.ts +13 -0
  241. package/dist/src/tui/content-item-card.js +51 -0
  242. package/dist/src/tui/content-item-card.js.map +1 -0
  243. package/dist/src/tui/controller-runtime.d.ts +10 -2
  244. package/dist/src/tui/controller-runtime.js +3289 -388
  245. package/dist/src/tui/controller-runtime.js.map +1 -1
  246. package/dist/src/tui/controller.d.ts +622 -45
  247. package/dist/src/tui/controller.js +3589 -768
  248. package/dist/src/tui/controller.js.map +1 -1
  249. package/dist/src/tui/dependency-graph-view.d.ts +39 -0
  250. package/dist/src/tui/dependency-graph-view.js +121 -0
  251. package/dist/src/tui/dependency-graph-view.js.map +1 -0
  252. package/dist/src/tui/dependency-graph.d.ts +81 -0
  253. package/dist/src/tui/dependency-graph.js +452 -0
  254. package/dist/src/tui/dependency-graph.js.map +1 -0
  255. package/dist/src/tui/diagnostic-projection.d.ts +23 -0
  256. package/dist/src/tui/diagnostic-projection.js +595 -0
  257. package/dist/src/tui/diagnostic-projection.js.map +1 -0
  258. package/dist/src/tui/diagnostics.d.ts +3 -3
  259. package/dist/src/tui/diagnostics.js +14 -2
  260. package/dist/src/tui/diagnostics.js.map +1 -1
  261. package/dist/src/tui/entity-cards.d.ts +55 -0
  262. package/dist/src/tui/entity-cards.js +220 -0
  263. package/dist/src/tui/entity-cards.js.map +1 -0
  264. package/dist/src/tui/glossary.d.ts +23 -0
  265. package/dist/src/tui/glossary.js +42 -0
  266. package/dist/src/tui/glossary.js.map +1 -0
  267. package/dist/src/tui/index.d.ts +6 -1
  268. package/dist/src/tui/index.js +5 -1
  269. package/dist/src/tui/index.js.map +1 -1
  270. package/dist/src/tui/input-display.d.ts +9 -0
  271. package/dist/src/tui/input-display.js +58 -0
  272. package/dist/src/tui/input-display.js.map +1 -0
  273. package/dist/src/tui/keys.d.ts +44 -0
  274. package/dist/src/tui/keys.js +43 -15
  275. package/dist/src/tui/keys.js.map +1 -1
  276. package/dist/src/tui/lifecycle-action-view.d.ts +6 -0
  277. package/dist/src/tui/lifecycle-action-view.js +36 -0
  278. package/dist/src/tui/lifecycle-action-view.js.map +1 -0
  279. package/dist/src/tui/model.d.ts +224 -31
  280. package/dist/src/tui/model.js +1510 -397
  281. package/dist/src/tui/model.js.map +1 -1
  282. package/dist/src/tui/operation-diagnostic-screens.d.ts +8 -0
  283. package/dist/src/tui/operation-diagnostic-screens.js +71 -0
  284. package/dist/src/tui/operation-diagnostic-screens.js.map +1 -0
  285. package/dist/src/tui/operation-history.d.ts +81 -0
  286. package/dist/src/tui/operation-history.js +136 -0
  287. package/dist/src/tui/operation-history.js.map +1 -0
  288. package/dist/src/tui/operation-review-planner.d.ts +21 -0
  289. package/dist/src/tui/operation-review-planner.js +1392 -0
  290. package/dist/src/tui/operation-review-planner.js.map +1 -0
  291. package/dist/src/tui/plugin-content.d.ts +31 -0
  292. package/dist/src/tui/plugin-content.js +680 -0
  293. package/dist/src/tui/plugin-content.js.map +1 -0
  294. package/dist/src/tui/plugin-detail.d.ts +52 -0
  295. package/dist/src/tui/plugin-detail.js +165 -0
  296. package/dist/src/tui/plugin-detail.js.map +1 -0
  297. package/dist/src/tui/plugin-write-task.d.ts +69 -0
  298. package/dist/src/tui/plugin-write-task.js +286 -0
  299. package/dist/src/tui/plugin-write-task.js.map +1 -0
  300. package/dist/src/tui/project-inventory.d.ts +68 -0
  301. package/dist/src/tui/project-inventory.js +203 -0
  302. package/dist/src/tui/project-inventory.js.map +1 -0
  303. package/dist/src/tui/prompt.js +4 -15
  304. package/dist/src/tui/prompt.js.map +1 -1
  305. package/dist/src/tui/query-header.d.ts +30 -0
  306. package/dist/src/tui/query-header.js +40 -0
  307. package/dist/src/tui/query-header.js.map +1 -0
  308. package/dist/src/tui/reader.d.ts +37 -0
  309. package/dist/src/tui/reader.js +47 -0
  310. package/dist/src/tui/reader.js.map +1 -0
  311. package/dist/src/tui/router.d.ts +197 -10
  312. package/dist/src/tui/router.js +338 -50
  313. package/dist/src/tui/router.js.map +1 -1
  314. package/dist/src/tui/screen-registry.d.ts +701 -0
  315. package/dist/src/tui/screen-registry.js +230 -0
  316. package/dist/src/tui/screen-registry.js.map +1 -0
  317. package/dist/src/tui/session-console-app.d.ts +6 -0
  318. package/dist/src/tui/session-console-app.js +13 -0
  319. package/dist/src/tui/session-console-app.js.map +1 -0
  320. package/dist/src/tui/session-host.d.ts +45 -0
  321. package/dist/src/tui/session-host.js +209 -0
  322. package/dist/src/tui/session-host.js.map +1 -0
  323. package/dist/src/tui/source-detail-card.d.ts +29 -0
  324. package/dist/src/tui/source-detail-card.js +45 -0
  325. package/dist/src/tui/source-detail-card.js.map +1 -0
  326. package/dist/src/tui/source-ref-presets.d.ts +3 -0
  327. package/dist/src/tui/source-ref-presets.js +11 -0
  328. package/dist/src/tui/source-ref-presets.js.map +1 -0
  329. package/dist/src/tui/theme.d.ts +12 -0
  330. package/dist/src/tui/theme.js +12 -0
  331. package/dist/src/tui/theme.js.map +1 -1
  332. package/dist/src/tui/viewport.d.ts +1 -0
  333. package/dist/src/tui/viewport.js +23 -0
  334. package/dist/src/tui/viewport.js.map +1 -1
  335. package/dist/src/tui/views.js +31 -3
  336. package/dist/src/tui/views.js.map +1 -1
  337. package/dist/src/tui/wizard.js +37 -13
  338. package/dist/src/tui/wizard.js.map +1 -1
  339. package/dist/src/types.d.ts +264 -21
  340. package/dist/src/types.js +1 -0
  341. package/dist/src/types.js.map +1 -1
  342. package/dist/src/utils/agent-version.d.ts +7 -1
  343. package/dist/src/utils/agent-version.js +36 -7
  344. package/dist/src/utils/agent-version.js.map +1 -1
  345. package/dist/src/utils/artifact-plan.d.ts +8 -6
  346. package/dist/src/utils/artifact-plan.js +67 -13
  347. package/dist/src/utils/artifact-plan.js.map +1 -1
  348. package/dist/src/utils/artifact-renderer.d.ts +24 -10
  349. package/dist/src/utils/artifact-renderer.js +230 -220
  350. package/dist/src/utils/artifact-renderer.js.map +1 -1
  351. package/dist/src/utils/artifact-request.d.ts +32 -0
  352. package/dist/src/utils/artifact-request.js +90 -0
  353. package/dist/src/utils/artifact-request.js.map +1 -0
  354. package/dist/src/utils/artifact-sources.d.ts +4 -0
  355. package/dist/src/utils/artifact-sources.js +17 -0
  356. package/dist/src/utils/artifact-sources.js.map +1 -1
  357. package/dist/src/utils/aw-home-mutation-lock.d.ts +1 -0
  358. package/dist/src/utils/aw-home-mutation-lock.js +32 -4
  359. package/dist/src/utils/aw-home-mutation-lock.js.map +1 -1
  360. package/dist/src/utils/bundle-integrity.d.ts +0 -1
  361. package/dist/src/utils/bundle-integrity.js +0 -25
  362. package/dist/src/utils/bundle-integrity.js.map +1 -1
  363. package/dist/src/utils/bundle-layout.js +29 -29
  364. package/dist/src/utils/bundle-layout.js.map +1 -1
  365. package/dist/src/utils/catalog-capability-projection.d.ts +8 -0
  366. package/dist/src/utils/catalog-capability-projection.js +14 -0
  367. package/dist/src/utils/catalog-capability-projection.js.map +1 -0
  368. package/dist/src/utils/catalog-digests.d.ts +10 -0
  369. package/dist/src/utils/catalog-digests.js +57 -20
  370. package/dist/src/utils/catalog-digests.js.map +1 -1
  371. package/dist/src/utils/catalog-generation-control-snapshot.d.ts +11 -0
  372. package/dist/src/utils/catalog-generation-control-snapshot.js +45 -0
  373. package/dist/src/utils/catalog-generation-control-snapshot.js.map +1 -0
  374. package/dist/src/utils/catalog-generation-error.d.ts +16 -0
  375. package/dist/src/utils/catalog-generation-error.js +30 -0
  376. package/dist/src/utils/catalog-generation-error.js.map +1 -0
  377. package/dist/src/utils/catalog-generation-resolver.d.ts +44 -0
  378. package/dist/src/utils/catalog-generation-resolver.js +273 -0
  379. package/dist/src/utils/catalog-generation-resolver.js.map +1 -0
  380. package/dist/src/utils/catalog-generation-service.d.ts +172 -0
  381. package/dist/src/utils/catalog-generation-service.js +1271 -0
  382. package/dist/src/utils/catalog-generation-service.js.map +1 -0
  383. package/dist/src/utils/catalog-generation-state.d.ts +22 -0
  384. package/dist/src/utils/catalog-generation-state.js +192 -0
  385. package/dist/src/utils/catalog-generation-state.js.map +1 -0
  386. package/dist/src/utils/catalog-generation-store.d.ts +58 -0
  387. package/dist/src/utils/catalog-generation-store.js +452 -0
  388. package/dist/src/utils/catalog-generation-store.js.map +1 -0
  389. package/dist/src/utils/catalog-manifest-v7.d.ts +5 -0
  390. package/dist/src/utils/{catalog-manifest-v4.js → catalog-manifest-v7.js} +35 -43
  391. package/dist/src/utils/catalog-manifest-v7.js.map +1 -0
  392. package/dist/src/utils/catalog-operation-context.d.ts +20 -0
  393. package/dist/src/utils/catalog-operation-context.js +142 -0
  394. package/dist/src/utils/catalog-operation-context.js.map +1 -0
  395. package/dist/src/utils/catalog-public-error.d.ts +7 -3
  396. package/dist/src/utils/catalog-public-error.js +28 -8
  397. package/dist/src/utils/catalog-public-error.js.map +1 -1
  398. package/dist/src/utils/catalog-runtime-projection.d.ts +3 -0
  399. package/dist/src/utils/catalog-runtime-projection.js +5 -40
  400. package/dist/src/utils/catalog-runtime-projection.js.map +1 -1
  401. package/dist/src/utils/catalog-snapshot.d.ts +5 -3
  402. package/dist/src/utils/catalog-snapshot.js +11 -3
  403. package/dist/src/utils/catalog-snapshot.js.map +1 -1
  404. package/dist/src/utils/catalog-source-identity.d.ts +1 -0
  405. package/dist/src/utils/catalog-source-identity.js +21 -2
  406. package/dist/src/utils/catalog-source-identity.js.map +1 -1
  407. package/dist/src/utils/catalog-source-impact.d.ts +21 -0
  408. package/dist/src/utils/catalog-source-impact.js +344 -0
  409. package/dist/src/utils/catalog-source-impact.js.map +1 -0
  410. package/dist/src/utils/catalog-source-references.d.ts +3 -2
  411. package/dist/src/utils/catalog-source-references.js +195 -347
  412. package/dist/src/utils/catalog-source-references.js.map +1 -1
  413. package/dist/src/utils/catalog-sources.d.ts +15 -1
  414. package/dist/src/utils/catalog-sources.js +206 -27
  415. package/dist/src/utils/catalog-sources.js.map +1 -1
  416. package/dist/src/utils/claude-skills-root.d.ts +8 -0
  417. package/dist/src/utils/claude-skills-root.js +76 -0
  418. package/dist/src/utils/claude-skills-root.js.map +1 -0
  419. package/dist/src/utils/codex-config.d.ts +2 -0
  420. package/dist/src/utils/codex-config.js +26 -5
  421. package/dist/src/utils/codex-config.js.map +1 -1
  422. package/dist/src/utils/codex-manager.d.ts +79 -0
  423. package/dist/src/utils/codex-manager.js +735 -0
  424. package/dist/src/utils/codex-manager.js.map +1 -0
  425. package/dist/src/utils/codex-marketplace-path.d.ts +5 -0
  426. package/dist/src/utils/codex-marketplace-path.js +45 -0
  427. package/dist/src/utils/codex-marketplace-path.js.map +1 -0
  428. package/dist/src/utils/codex-native-observation.d.ts +49 -0
  429. package/dist/src/utils/codex-native-observation.js +154 -0
  430. package/dist/src/utils/codex-native-observation.js.map +1 -0
  431. package/dist/src/utils/codex-native-render-receipt.d.ts +40 -0
  432. package/dist/src/utils/codex-native-render-receipt.js +205 -0
  433. package/dist/src/utils/codex-native-render-receipt.js.map +1 -0
  434. package/dist/src/utils/codex-reconciler.d.ts +126 -0
  435. package/dist/src/utils/codex-reconciler.js +298 -0
  436. package/dist/src/utils/codex-reconciler.js.map +1 -0
  437. package/dist/src/utils/codex-shared-native.d.ts +43 -0
  438. package/dist/src/utils/codex-shared-native.js +81 -0
  439. package/dist/src/utils/codex-shared-native.js.map +1 -0
  440. package/dist/src/utils/codex-skill-staging.d.ts +2 -0
  441. package/dist/src/utils/codex-skill-staging.js.map +1 -1
  442. package/dist/src/utils/codex-skills-root.d.ts +4 -0
  443. package/dist/src/utils/codex-skills-root.js +25 -0
  444. package/dist/src/utils/codex-skills-root.js.map +1 -0
  445. package/dist/src/utils/codex-surface-analysis.d.ts +46 -0
  446. package/dist/src/utils/codex-surface-analysis.js +247 -0
  447. package/dist/src/utils/codex-surface-analysis.js.map +1 -0
  448. package/dist/src/utils/dynamic-skill-tree.d.ts +5 -0
  449. package/dist/src/utils/dynamic-skill-tree.js +56 -7
  450. package/dist/src/utils/dynamic-skill-tree.js.map +1 -1
  451. package/dist/src/utils/git-catalog-provider.d.ts +16 -0
  452. package/dist/src/utils/git-catalog-provider.js +177 -145
  453. package/dist/src/utils/git-catalog-provider.js.map +1 -1
  454. package/dist/src/utils/local-marketplace.d.ts +27 -1
  455. package/dist/src/utils/local-marketplace.js +434 -84
  456. package/dist/src/utils/local-marketplace.js.map +1 -1
  457. package/dist/src/utils/managed-command-closure.d.ts +3 -0
  458. package/dist/src/utils/managed-command-closure.js +35 -0
  459. package/dist/src/utils/managed-command-closure.js.map +1 -0
  460. package/dist/src/utils/managed-command-evidence.d.ts +7 -0
  461. package/dist/src/utils/managed-command-evidence.js +86 -0
  462. package/dist/src/utils/managed-command-evidence.js.map +1 -0
  463. package/dist/src/utils/managed-command-materialization.d.ts +115 -0
  464. package/dist/src/utils/managed-command-materialization.js +359 -0
  465. package/dist/src/utils/managed-command-materialization.js.map +1 -0
  466. package/dist/src/utils/managed-command-runtime.d.ts +33 -0
  467. package/dist/src/utils/managed-command-runtime.js +121 -0
  468. package/dist/src/utils/managed-command-runtime.js.map +1 -0
  469. package/dist/src/utils/managed-command-store.d.ts +128 -0
  470. package/dist/src/utils/managed-command-store.js +589 -0
  471. package/dist/src/utils/managed-command-store.js.map +1 -0
  472. package/dist/src/utils/manifest.d.ts +1 -3
  473. package/dist/src/utils/manifest.js +1 -3
  474. package/dist/src/utils/manifest.js.map +1 -1
  475. package/dist/src/utils/multi-source-catalog.d.ts +3 -9
  476. package/dist/src/utils/multi-source-catalog.js +54 -110
  477. package/dist/src/utils/multi-source-catalog.js.map +1 -1
  478. package/dist/src/utils/native-cli.d.ts +61 -7
  479. package/dist/src/utils/native-cli.js +426 -58
  480. package/dist/src/utils/native-cli.js.map +1 -1
  481. package/dist/src/utils/native-tool-context.d.ts +14 -0
  482. package/dist/src/utils/native-tool-context.js +38 -0
  483. package/dist/src/utils/native-tool-context.js.map +1 -0
  484. package/dist/src/utils/native-tool-review.d.ts +21 -0
  485. package/dist/src/utils/native-tool-review.js +102 -0
  486. package/dist/src/utils/native-tool-review.js.map +1 -0
  487. package/dist/src/utils/orphan-marketplace-cleanup.js +0 -4
  488. package/dist/src/utils/orphan-marketplace-cleanup.js.map +1 -1
  489. package/dist/src/utils/ownership.d.ts +88 -20
  490. package/dist/src/utils/ownership.js +185 -223
  491. package/dist/src/utils/ownership.js.map +1 -1
  492. package/dist/src/utils/path-catalog-provider.d.ts +1 -1
  493. package/dist/src/utils/path-catalog-provider.js +54 -65
  494. package/dist/src/utils/path-catalog-provider.js.map +1 -1
  495. package/dist/src/utils/paths.d.ts +0 -1
  496. package/dist/src/utils/paths.js +0 -1
  497. package/dist/src/utils/paths.js.map +1 -1
  498. package/dist/src/utils/plugin-config-impact.d.ts +40 -0
  499. package/dist/src/utils/plugin-config-impact.js +373 -0
  500. package/dist/src/utils/plugin-config-impact.js.map +1 -0
  501. package/dist/src/utils/plugin-config-write.d.ts +52 -27
  502. package/dist/src/utils/plugin-config-write.js +1112 -298
  503. package/dist/src/utils/plugin-config-write.js.map +1 -1
  504. package/dist/src/utils/plugin-config.d.ts +153 -93
  505. package/dist/src/utils/plugin-config.js +1116 -968
  506. package/dist/src/utils/plugin-config.js.map +1 -1
  507. package/dist/src/utils/plugin-intent-state.d.ts +49 -0
  508. package/dist/src/utils/plugin-intent-state.js +320 -0
  509. package/dist/src/utils/plugin-intent-state.js.map +1 -0
  510. package/dist/src/utils/plugin-scripts.d.ts +66 -125
  511. package/dist/src/utils/plugin-scripts.js +518 -526
  512. package/dist/src/utils/plugin-scripts.js.map +1 -1
  513. package/dist/src/utils/process-lock.js +14 -5
  514. package/dist/src/utils/process-lock.js.map +1 -1
  515. package/dist/src/utils/process-tree.d.ts +2 -2
  516. package/dist/src/utils/process-tree.js +1 -1
  517. package/dist/src/utils/process-tree.js.map +1 -1
  518. package/dist/src/utils/project-boundary.d.ts +11 -13
  519. package/dist/src/utils/project-boundary.js +28 -34
  520. package/dist/src/utils/project-boundary.js.map +1 -1
  521. package/dist/src/utils/rendered-contract.js +18 -1
  522. package/dist/src/utils/rendered-contract.js.map +1 -1
  523. package/dist/src/utils/runtime-config.d.ts +20 -0
  524. package/dist/src/utils/runtime-config.js +75 -0
  525. package/dist/src/utils/runtime-config.js.map +1 -0
  526. package/dist/src/utils/runtime-skill-closure.js +47 -6
  527. package/dist/src/utils/runtime-skill-closure.js.map +1 -1
  528. package/dist/src/utils/safe-fs.d.ts +21 -0
  529. package/dist/src/utils/safe-fs.js +111 -0
  530. package/dist/src/utils/safe-fs.js.map +1 -0
  531. package/dist/src/utils/safe-operation-diagnostic.d.ts +15 -0
  532. package/dist/src/utils/safe-operation-diagnostic.js +33 -0
  533. package/dist/src/utils/safe-operation-diagnostic.js.map +1 -0
  534. package/dist/src/utils/sensitive-content.d.ts +4 -0
  535. package/dist/src/utils/sensitive-content.js +36 -0
  536. package/dist/src/utils/sensitive-content.js.map +1 -0
  537. package/dist/src/utils/state-paths.js +7 -2
  538. package/dist/src/utils/state-paths.js.map +1 -1
  539. package/dist/src/utils/target-eligibility.d.ts +8 -2
  540. package/dist/src/utils/target-eligibility.js +17 -8
  541. package/dist/src/utils/target-eligibility.js.map +1 -1
  542. package/dist/src/utils/windows-claude-shim.d.ts +7 -0
  543. package/dist/src/utils/windows-claude-shim.js +10 -0
  544. package/dist/src/utils/windows-claude-shim.js.map +1 -0
  545. package/dist/src/utils/windows-npm-shim.d.ts +14 -0
  546. package/dist/src/utils/windows-npm-shim.js +140 -0
  547. package/dist/src/utils/windows-npm-shim.js.map +1 -0
  548. package/dist/vitest.config.js +100 -9
  549. package/dist/vitest.config.js.map +1 -1
  550. package/package.json +31 -21
  551. package/dist/authoring/scripts/check-plugin-versions.d.mts +0 -2
  552. package/dist/authoring/scripts/check-plugin-versions.mjs +0 -5
  553. package/dist/authoring/scripts/check-plugin-versions.mjs.map +0 -1
  554. package/dist/scripts/aw-skill-eval-engine.d.ts +0 -13
  555. package/dist/scripts/aw-skill-eval-engine.js +0 -31
  556. package/dist/scripts/aw-skill-eval-engine.js.map +0 -1
  557. package/dist/scripts/codex-eval-app-server.d.ts +0 -89
  558. package/dist/scripts/codex-eval-app-server.js +0 -1228
  559. package/dist/scripts/codex-eval-app-server.js.map +0 -1
  560. package/dist/scripts/codex-eval-isolation.d.ts +0 -61
  561. package/dist/scripts/codex-eval-isolation.js +0 -318
  562. package/dist/scripts/codex-eval-isolation.js.map +0 -1
  563. package/dist/scripts/codex-eval-process-management.d.ts +0 -8
  564. package/dist/scripts/codex-eval-process-management.js +0 -69
  565. package/dist/scripts/codex-eval-process-management.js.map +0 -1
  566. package/dist/scripts/codex-eval-process-tree.d.ts +0 -38
  567. package/dist/scripts/codex-eval-process-tree.js +0 -803
  568. package/dist/scripts/codex-eval-process-tree.js.map +0 -1
  569. package/dist/scripts/codex-eval-runtime-config.d.ts +0 -62
  570. package/dist/scripts/codex-eval-runtime-config.js +0 -843
  571. package/dist/scripts/codex-eval-runtime-config.js.map +0 -1
  572. package/dist/scripts/codex-trigger-eval.d.ts +0 -84
  573. package/dist/scripts/codex-trigger-eval.js +0 -968
  574. package/dist/scripts/codex-trigger-eval.js.map +0 -1
  575. package/dist/scripts/eval-plugin-skills-audited.d.ts +0 -6
  576. package/dist/scripts/eval-plugin-skills-audited.js +0 -261
  577. package/dist/scripts/eval-plugin-skills-audited.js.map +0 -1
  578. package/dist/scripts/eval-plugin-skills.d.ts +0 -45
  579. package/dist/scripts/eval-plugin-skills.js +0 -1586
  580. package/dist/scripts/eval-plugin-skills.js.map +0 -1
  581. package/dist/scripts/eval-run-layout.d.ts +0 -17
  582. package/dist/scripts/eval-run-layout.js +0 -26
  583. package/dist/scripts/eval-run-layout.js.map +0 -1
  584. package/dist/scripts/plugin-eval-contract.d.ts +0 -185
  585. package/dist/scripts/plugin-eval-contract.js +0 -695
  586. package/dist/scripts/plugin-eval-contract.js.map +0 -1
  587. package/dist/scripts/plugin-eval-materializer.d.ts +0 -13
  588. package/dist/scripts/plugin-eval-materializer.js +0 -421
  589. package/dist/scripts/plugin-eval-materializer.js.map +0 -1
  590. package/dist/scripts/skill-reporting.d.ts +0 -212
  591. package/dist/scripts/skill-reporting.js +0 -922
  592. package/dist/scripts/skill-reporting.js.map +0 -1
  593. package/dist/src/commands/review-publication.d.ts +0 -99
  594. package/dist/src/commands/review-publication.js +0 -904
  595. package/dist/src/commands/review-publication.js.map +0 -1
  596. package/dist/src/commands/status-v4.d.ts +0 -123
  597. package/dist/src/commands/status-v4.js +0 -905
  598. package/dist/src/commands/status-v4.js.map +0 -1
  599. package/dist/src/commands/status.d.ts +0 -93
  600. package/dist/src/commands/status.js +0 -442
  601. package/dist/src/commands/status.js.map +0 -1
  602. package/dist/src/utils/active-marketplace-runtime-lock.d.ts +0 -12
  603. package/dist/src/utils/active-marketplace-runtime-lock.js +0 -133
  604. package/dist/src/utils/active-marketplace-runtime-lock.js.map +0 -1
  605. package/dist/src/utils/catalog-manifest-v3.d.ts +0 -2
  606. package/dist/src/utils/catalog-manifest-v3.js +0 -3
  607. package/dist/src/utils/catalog-manifest-v3.js.map +0 -1
  608. package/dist/src/utils/catalog-manifest-v4.d.ts +0 -5
  609. package/dist/src/utils/catalog-manifest-v4.js.map +0 -1
  610. package/dist/src/utils/catalog-source-cache.d.ts +0 -62
  611. package/dist/src/utils/catalog-source-cache.js +0 -296
  612. package/dist/src/utils/catalog-source-cache.js.map +0 -1
  613. package/dist/src/utils/codex-project-surface.d.ts +0 -3
  614. package/dist/src/utils/codex-project-surface.js +0 -49
  615. package/dist/src/utils/codex-project-surface.js.map +0 -1
  616. package/dist/src/utils/lifecycle-active-store.d.ts +0 -175
  617. package/dist/src/utils/lifecycle-active-store.js +0 -1276
  618. package/dist/src/utils/lifecycle-active-store.js.map +0 -1
  619. package/dist/src/utils/plugin-release.d.ts +0 -2
  620. package/dist/src/utils/plugin-release.js +0 -2
  621. 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 { observeProcessTree, terminateProcessTree, } from './process-tree.js';
3
+ import path from 'node:path';
4
+ import { createWindowsJobInvocation, observeProcessTree, prepareWindowsJobHelper, 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,15 +57,49 @@ 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;
77
+ const nativeCliRunnerBases = new WeakMap();
78
+ export function retainNativeCliRunnerBackend(wrapper, base) {
79
+ nativeCliRunnerBases.set(wrapper, base);
80
+ return wrapper;
81
+ }
82
+ function usesDefaultNativeCliBackend(runner) {
83
+ const seen = new Set();
84
+ while (nativeCliRunnerBases.has(runner) && !seen.has(runner)) {
85
+ seen.add(runner);
86
+ runner = nativeCliRunnerBases.get(runner);
87
+ }
88
+ return runner === execFileNativeCliRunner;
89
+ }
42
90
  export function setNativeCliRunnerOverrideForTests(runner) {
43
91
  nativeCliRunnerOverrideForTests = runner;
44
92
  }
45
93
  export function getDefaultNativeCliRunner() {
46
94
  return nativeCliRunnerOverrideForTests ?? execFileNativeCliRunner;
47
95
  }
96
+ /** Prepare outside the AW_HOME write lock. Injected runners own their admission. */
97
+ export async function prepareNativeCliExecution(options = {}) {
98
+ if (process.platform !== 'win32'
99
+ || !usesDefaultNativeCliBackend(options.runner ?? getDefaultNativeCliRunner()))
100
+ return;
101
+ await prepareWindowsJobHelper();
102
+ }
48
103
  function readNativeCliErrorCode(error) {
49
104
  if (!error || typeof error !== 'object') {
50
105
  return undefined;
@@ -105,7 +160,57 @@ function isTimeoutLikeError(error, timeoutMs) {
105
160
  const defaultNativeCliExecFile = (command, args, options, callback) => execFile(command, args, options, (error, stdout, stderr) => {
106
161
  callback(error, stdout, stderr);
107
162
  });
108
- function settleNativeCliTerminationCleanup(child, terminateProcessTreeImpl, observation, requireConfirmedCleanup) {
163
+ function delayNativeCliCleanup(delayMs) {
164
+ return new Promise((resolve) => {
165
+ setTimeout(resolve, delayMs);
166
+ });
167
+ }
168
+ function isProcessGroupMissing(error) {
169
+ return Boolean(error &&
170
+ typeof error === 'object' &&
171
+ 'code' in error &&
172
+ error.code === 'ESRCH');
173
+ }
174
+ function isPosixProcessInspectionUnavailableError(error) {
175
+ return /POSIX (?:process (?:identity|marker) lookup|termination (?:audit|verification)) failed/u
176
+ .test(error.message);
177
+ }
178
+ async function terminateNativeCliProcessGroup(pid, killProcess) {
179
+ const groupPid = -pid;
180
+ const signalGroup = (signal) => {
181
+ try {
182
+ killProcess(groupPid, signal);
183
+ }
184
+ catch (error) {
185
+ if (isProcessGroupMissing(error)) {
186
+ return;
187
+ }
188
+ throw new Error(`Native CLI cleanup unconfirmed: could not signal process group ${signal}.`, { cause: error });
189
+ }
190
+ };
191
+ const groupExists = () => {
192
+ try {
193
+ killProcess(groupPid, 0);
194
+ return true;
195
+ }
196
+ catch (error) {
197
+ if (isProcessGroupMissing(error)) {
198
+ return false;
199
+ }
200
+ throw new Error('Native CLI cleanup unconfirmed: could not verify process group exit.', { cause: error });
201
+ }
202
+ };
203
+ signalGroup('SIGTERM');
204
+ await delayNativeCliCleanup(NATIVE_CLI_PROCESS_GROUP_TERM_GRACE_MS);
205
+ signalGroup('SIGKILL');
206
+ for (let elapsedMs = 0; groupExists(); elapsedMs += NATIVE_CLI_PROCESS_GROUP_POLL_MS) {
207
+ if (elapsedMs >= NATIVE_CLI_PROCESS_GROUP_VERIFY_MS) {
208
+ throw new Error('Native CLI cleanup unconfirmed: process group is still running.');
209
+ }
210
+ await delayNativeCliCleanup(NATIVE_CLI_PROCESS_GROUP_POLL_MS);
211
+ }
212
+ }
213
+ function settleNativeCliTerminationCleanup(child, terminateProcessTreeImpl, observation, requireConfirmedCleanup, allowUnobservedWindowsProcessOnNormalCompletion, processGroup, allowUnavailablePosixAudit, processTreeAuditPreparationError, killProcess) {
109
214
  let directKillAttempted = false;
110
215
  const killDirectChild = () => {
111
216
  if (directKillAttempted) {
@@ -148,7 +253,42 @@ function settleNativeCliTerminationCleanup(child, terminateProcessTreeImpl, obse
148
253
  timeout.unref();
149
254
  let cleanup;
150
255
  try {
151
- cleanup = terminateProcessTreeImpl(childPid, () => killDirectChild(), {}, { observation, requireConfirmedCleanup });
256
+ cleanup = processGroup
257
+ ? (async () => {
258
+ let processGroupError;
259
+ try {
260
+ await terminateNativeCliProcessGroup(childPid, killProcess);
261
+ }
262
+ catch (error) {
263
+ processGroupError = error instanceof Error
264
+ ? error
265
+ : new Error('Native CLI cleanup unconfirmed: process-group cleanup rejected.');
266
+ }
267
+ let auditError = processTreeAuditPreparationError;
268
+ if (observation) {
269
+ try {
270
+ await terminateProcessTreeImpl(childPid, () => killDirectChild(), {}, { observation, requireConfirmedCleanup: true });
271
+ }
272
+ catch (error) {
273
+ auditError = error instanceof Error
274
+ ? error
275
+ : new Error('Native CLI cleanup unconfirmed: cleanup audit rejected.');
276
+ }
277
+ }
278
+ if (processGroupError)
279
+ throw processGroupError;
280
+ if (auditError &&
281
+ !(allowUnavailablePosixAudit && isPosixProcessInspectionUnavailableError(auditError))) {
282
+ throw auditError;
283
+ }
284
+ })()
285
+ : terminateProcessTreeImpl(childPid, () => killDirectChild(), {}, {
286
+ observation,
287
+ requireConfirmedCleanup,
288
+ ...(allowUnobservedWindowsProcessOnNormalCompletion
289
+ ? { allowUnobservedWindowsProcessOnNormalCompletion: true }
290
+ : {}),
291
+ });
152
292
  }
153
293
  catch (error) {
154
294
  finish(error instanceof Error
@@ -180,10 +320,50 @@ export function createExecFileNativeCliRunner(dependencies = {}) {
180
320
  const observeProcessTreeImpl = dependencies.observeProcessTree ??
181
321
  (dependencies.terminateProcessTree ? undefined : observeProcessTree);
182
322
  const terminateProcessTreeImpl = dependencies.terminateProcessTree ?? terminateProcessTree;
323
+ const platform = dependencies.platform ?? process.platform;
324
+ const killProcess = dependencies.killProcess ?? process.kill;
325
+ const createWindowsJobInvocationImpl = dependencies.createWindowsJobInvocation;
326
+ const usesDefaultWindowsJob = !dependencies.execFile && !createWindowsJobInvocationImpl;
183
327
  return async (invocation) => {
184
328
  if (invocation.signal?.aborted) {
185
329
  throw createAbortedNativeCliError(invocation);
186
330
  }
331
+ let executableCommand = invocation.command;
332
+ let executableArgs = invocation.args;
333
+ const commandName = normalizeNativeCliCommandName(invocation.command);
334
+ if (platform === 'win32'
335
+ && (createWindowsJobInvocationImpl || usesDefaultWindowsJob)
336
+ && (commandName === 'claude' || commandName === 'codex')) {
337
+ const commandOptions = {
338
+ command: invocation.command,
339
+ cwd: invocation.cwd,
340
+ env: invocation.env,
341
+ };
342
+ const resolved = commandName === 'claude'
343
+ ? await resolveWindowsClaudeCommand(commandOptions)
344
+ : await resolveWindowsNpmCommand({
345
+ ...commandOptions,
346
+ packageName: '@openai/codex',
347
+ binName: 'codex',
348
+ displayName: 'Codex',
349
+ });
350
+ executableCommand = resolved.command;
351
+ executableArgs = [...resolved.argsPrefix, ...invocation.args];
352
+ }
353
+ const windowsJobInvocation = platform === 'win32'
354
+ ? createWindowsJobInvocationImpl
355
+ ? createWindowsJobInvocationImpl(executableCommand, executableArgs)
356
+ : usesDefaultWindowsJob
357
+ ? createWindowsJobInvocation(executableCommand, executableArgs, {
358
+ helperPath: await prepareWindowsJobHelper(),
359
+ })
360
+ : undefined
361
+ : undefined;
362
+ const cleanupStrategy = windowsJobInvocation
363
+ ? 'windows-job'
364
+ : platform !== 'win32'
365
+ ? 'process-group'
366
+ : isAgentNativeCliInvocation(invocation) ? 'on-demand-tree' : 'observed-tree';
187
367
  return new Promise((resolve, reject) => {
188
368
  let settled = false;
189
369
  let terminationReason;
@@ -194,15 +374,38 @@ export function createExecFileNativeCliRunner(dependencies = {}) {
194
374
  let streamedStderr = '';
195
375
  let timeout;
196
376
  let processTreeObservation;
377
+ let processTreeCleanup;
378
+ let processTreeAuditPreparationError;
379
+ let completionStarted = false;
380
+ let windowsJobCloseTimer;
197
381
  let detachOutputListeners = () => { };
198
382
  const abortListener = () => {
199
383
  startTermination('aborted', invocation.signal?.reason);
200
384
  };
385
+ const cleanupProcessTree = (requireConfirmedCleanup, allowUnobservedWindowsProcessOnNormalCompletion = false, allowUnavailablePosixAudit = false, auditTrustedPosixFailure = false) => {
386
+ if (cleanupStrategy === 'process-group' &&
387
+ (!trustedAgentCli || auditTrustedPosixFailure) &&
388
+ processTreeObservation === undefined &&
389
+ child.pid !== undefined) {
390
+ try {
391
+ processTreeObservation = observeProcessTreeImpl?.(child.pid, processMarker);
392
+ }
393
+ catch (error) {
394
+ processTreeAuditPreparationError = new Error('Native CLI cleanup unconfirmed: POSIX process marker lookup failed.', { cause: error });
395
+ }
396
+ }
397
+ processTreeCleanup ??= settleNativeCliTerminationCleanup(child, terminateProcessTreeImpl, processTreeObservation, requireConfirmedCleanup, allowUnobservedWindowsProcessOnNormalCompletion, cleanupStrategy === 'process-group', allowUnavailablePosixAudit, processTreeAuditPreparationError, killProcess);
398
+ return processTreeCleanup;
399
+ };
201
400
  const clearLifecycle = () => {
202
401
  if (timeout) {
203
402
  clearTimeout(timeout);
204
403
  timeout = undefined;
205
404
  }
405
+ if (windowsJobCloseTimer) {
406
+ clearTimeout(windowsJobCloseTimer);
407
+ windowsJobCloseTimer = undefined;
408
+ }
206
409
  invocation.signal?.removeEventListener('abort', abortListener);
207
410
  detachOutputListeners();
208
411
  processTreeObservation?.dispose();
@@ -255,17 +458,113 @@ export function createExecFileNativeCliRunner(dependencies = {}) {
255
458
  clearTimeout(timeout);
256
459
  timeout = undefined;
257
460
  }
461
+ if (cleanupStrategy === 'windows-job') {
462
+ try {
463
+ if (child.exitCode == null &&
464
+ child.signalCode == null &&
465
+ child.kill('SIGKILL') === false) {
466
+ throw new Error('Windows Job helper did not accept termination.');
467
+ }
468
+ }
469
+ catch (error) {
470
+ finishTermination(error instanceof Error
471
+ ? error
472
+ : new Error('Windows Job helper termination failed.'));
473
+ return;
474
+ }
475
+ windowsJobCloseTimer = setTimeout(() => finishTermination(new Error('Windows Job helper exit could not be confirmed.')), NATIVE_CLI_CLEANUP_TIMEOUT_MS);
476
+ windowsJobCloseTimer.unref();
477
+ return;
478
+ }
479
+ if (cleanupStrategy === 'on-demand-tree' && child.pid !== undefined) {
480
+ try {
481
+ processTreeObservation = (observeProcessTreeImpl ?? observeProcessTree)(child.pid, processMarker);
482
+ }
483
+ catch (error) {
484
+ child.stdout?.destroy?.();
485
+ child.stderr?.destroy?.();
486
+ try {
487
+ child.kill('SIGKILL');
488
+ }
489
+ catch {
490
+ // The direct child can exit before fallback termination runs.
491
+ }
492
+ finishTermination(error instanceof Error
493
+ ? error
494
+ : new Error('Native CLI cleanup unconfirmed: process observation threw.'));
495
+ return;
496
+ }
497
+ }
258
498
  Promise.resolve()
259
- .then(() => settleNativeCliTerminationCleanup(child, terminateProcessTreeImpl, processTreeObservation, (child.exitCode != null || child.signalCode != null) && callbackOutput === undefined))
499
+ .then(() => cleanupProcessTree(cleanupStrategy === 'observed-tree'
500
+ ? (child.exitCode != null || child.signalCode != null) && callbackOutput === undefined
501
+ : true, false, false, true))
260
502
  .then(finishTermination);
261
503
  }
504
+ const finishCallback = (cleanupError) => {
505
+ if (terminationReason)
506
+ return;
507
+ const output = callbackOutput ?? { stdout: streamedStdout, stderr: streamedStderr };
508
+ const childFailed = child.exitCode != null && child.exitCode !== 0 || child.signalCode != null;
509
+ if (callbackError || childFailed) {
510
+ const callbackExitCode = callbackError && typeof callbackError === 'object' &&
511
+ typeof callbackError.code === 'number'
512
+ ? callbackError.code
513
+ : undefined;
514
+ const exitCode = callbackExitCode !== undefined
515
+ ? callbackExitCode
516
+ : child.exitCode != null
517
+ ? child.exitCode
518
+ : isAbortLikeError(callbackError) ||
519
+ isTimeoutLikeError(callbackError, invocation.timeoutMs)
520
+ ? 124
521
+ : 1;
522
+ rejectOnce(new NativeCliError({
523
+ invocation,
524
+ exitCode,
525
+ ...output,
526
+ cause: callbackError ?? new Error(`Command exited with ${child.signalCode ?? `code ${exitCode}`}.`),
527
+ cleanupError,
528
+ }));
529
+ return;
530
+ }
531
+ if (cleanupError) {
532
+ rejectOnce(new NativeCliError({
533
+ invocation,
534
+ exitCode: 1,
535
+ ...output,
536
+ cause: cleanupError,
537
+ cleanupError,
538
+ reason: 'exit',
539
+ }));
540
+ return;
541
+ }
542
+ resolveOnce({ exitCode: 0, ...output });
543
+ };
544
+ const startCompletion = (allowUnobservedWindowsProcessOnNormalCompletion = false) => {
545
+ if (settled || terminationReason || completionStarted)
546
+ return;
547
+ completionStarted = true;
548
+ if (timeout) {
549
+ clearTimeout(timeout);
550
+ timeout = undefined;
551
+ }
552
+ void cleanupProcessTree(true, allowUnobservedWindowsProcessOnNormalCompletion, platform !== 'win32' && callbackError == null &&
553
+ (child.exitCode == null || child.exitCode === 0) && child.signalCode == null, platform !== 'win32' && trustedAgentCli && Boolean(callbackError
554
+ || child.exitCode != null && child.exitCode !== 0
555
+ || child.signalCode != null)).then(finishCallback);
556
+ };
262
557
  const processMarker = randomUUID();
263
- child = execFileImpl(invocation.command, invocation.args, {
264
- cwd: invocation.cwd,
558
+ const trustedAgentCli = isAgentNativeCliInvocation(invocation);
559
+ child = execFileImpl(windowsJobInvocation?.command ?? executableCommand, windowsJobInvocation?.args ?? executableArgs, {
560
+ cwd: platform === 'win32' && invocation.cwd !== undefined
561
+ ? path.win32.toNamespacedPath(invocation.cwd)
562
+ : invocation.cwd,
265
563
  env: {
266
564
  ...(invocation.env ?? process.env),
267
565
  [NATIVE_CLI_PROCESS_MARKER_ENV]: processMarker,
268
566
  },
567
+ detached: platform !== 'win32',
269
568
  windowsHide: true,
270
569
  }, (error, stdout, stderr) => {
271
570
  if (settled) {
@@ -274,30 +573,29 @@ export function createExecFileNativeCliRunner(dependencies = {}) {
274
573
  callbackError = error;
275
574
  callbackOutput = { stdout, stderr };
276
575
  if (terminationReason) {
576
+ if (cleanupStrategy === 'windows-job') {
577
+ if (windowsJobCloseTimer) {
578
+ clearTimeout(windowsJobCloseTimer);
579
+ windowsJobCloseTimer = undefined;
580
+ }
581
+ finishTermination();
582
+ }
277
583
  return;
278
584
  }
279
- if (!error) {
280
- resolveOnce({
281
- exitCode: 0,
282
- stdout,
283
- stderr,
284
- });
585
+ if (cleanupStrategy === 'windows-job') {
586
+ queueMicrotask(() => finishCallback());
285
587
  return;
286
588
  }
287
- const exitCode = typeof error.code === 'number'
288
- ? (error.code)
289
- : isAbortLikeError(error) || isTimeoutLikeError(error, invocation.timeoutMs)
290
- ? 124
291
- : 1;
292
- rejectOnce(new NativeCliError({
293
- invocation,
294
- exitCode,
295
- stdout,
296
- stderr,
297
- cause: error,
298
- }));
589
+ if (cleanupStrategy === 'on-demand-tree') {
590
+ queueMicrotask(() => finishCallback());
591
+ return;
592
+ }
593
+ queueMicrotask(() => startCompletion(platform === 'win32' &&
594
+ error === null &&
595
+ (child.exitCode == null || child.exitCode === 0) &&
596
+ child.signalCode == null));
299
597
  });
300
- if (child.pid !== undefined) {
598
+ if (cleanupStrategy === 'observed-tree' && child.pid !== undefined) {
301
599
  processTreeObservation = observeProcessTreeImpl?.(child.pid, processMarker);
302
600
  }
303
601
  const stdoutListener = (chunk) => {
@@ -312,6 +610,13 @@ export function createExecFileNativeCliRunner(dependencies = {}) {
312
610
  child.stdout?.removeListener?.('data', stdoutListener);
313
611
  child.stderr?.removeListener?.('data', stderrListener);
314
612
  };
613
+ if (cleanupStrategy !== 'on-demand-tree' && cleanupStrategy !== 'windows-job') {
614
+ child.once('exit', () => {
615
+ if (!terminationReason) {
616
+ startCompletion(platform === 'win32' && child.exitCode === 0 && child.signalCode == null);
617
+ }
618
+ });
619
+ }
315
620
  if (invocation.timeoutMs && invocation.timeoutMs > 0) {
316
621
  child.once('spawn', () => {
317
622
  if (settled || terminationReason) {
@@ -337,6 +642,9 @@ function normalizeNativeCliCommandName(command) {
337
642
  return baseName.replace(/\.(?:bat|cmd|com|exe)$/u, '');
338
643
  }
339
644
  function isAgentNativeCliInvocation(invocation) {
645
+ if (invocation.agentKind !== undefined) {
646
+ return true;
647
+ }
340
648
  const commandName = normalizeNativeCliCommandName(invocation.command);
341
649
  return commandName === 'codex' || commandName === 'claude';
342
650
  }
@@ -372,54 +680,114 @@ export async function runNativeCli(invocation, runner) {
372
680
  const resolvedInvocation = applyAgentNativeCliDefaultTimeout(invocation);
373
681
  return (runner ?? getDefaultNativeCliRunner())(resolvedInvocation);
374
682
  }
375
- export function buildCodexPluginAddInvocation(pluginId, cwd, env) {
683
+ function buildCodexInvocation(manager, args, cwd, env) {
376
684
  return {
377
- command: 'codex',
378
- args: ['plugin', 'add', pluginId],
685
+ command: manager.command,
686
+ args: [...manager.argsPrefix, ...args],
687
+ agentKind: 'codex',
379
688
  cwd,
380
- env,
689
+ env: {
690
+ ...env,
691
+ CODEX_HOME: getCodexHome(env),
692
+ },
381
693
  };
382
694
  }
383
- export function buildCodexPluginListInvocation(cwd, env) {
384
- return {
385
- command: 'codex',
386
- args: ['plugin', 'list'],
387
- cwd,
388
- env,
389
- };
695
+ export function buildCodexPluginAddInvocation(manager, pluginId, cwd, env) {
696
+ return buildCodexInvocation(manager, ['plugin', 'add', pluginId], cwd, env);
390
697
  }
391
- export function buildCodexPluginRemoveInvocation(pluginId, cwd, env) {
392
- return {
393
- command: 'codex',
394
- args: ['plugin', 'remove', pluginId],
395
- cwd,
396
- env,
397
- };
698
+ export function buildCodexPluginListJsonInvocation(manager, marketplaceName, cwd, env) {
699
+ return buildCodexInvocation(manager, ['plugin', 'list', '--marketplace', marketplaceName, '--json'], cwd, env);
398
700
  }
399
- export function buildCodexMarketplaceAddInvocation(awHome, cwd, env) {
701
+ export function buildCodexProjectPluginListInvocations(manager, options) {
400
702
  return {
401
- command: 'codex',
402
- args: ['plugin', 'marketplace', 'add', awHome],
403
- cwd,
404
- env,
703
+ exact: buildCodexPluginListJsonInvocation(manager, options.marketplaceName, options.exactCwd, options.env),
704
+ neutral: buildCodexPluginListJsonInvocation(manager, options.marketplaceName, options.neutralCwd, options.env),
405
705
  };
406
706
  }
407
- export function buildCodexMarketplaceListInvocation(cwd, env) {
707
+ function readCodexPluginListEntry(value, index) {
708
+ if (!value || typeof value !== 'object' || Array.isArray(value)) {
709
+ throw new Error(`codexPluginListInvalid: installed[${index}] must be an object.`);
710
+ }
711
+ const record = value;
712
+ const pluginId = record.pluginId;
713
+ if (typeof pluginId !== 'string'
714
+ || pluginId !== pluginId.trim()
715
+ || !/^[^@\s]+@[^@\s]+$/u.test(pluginId)) {
716
+ throw new Error(`codexPluginListInvalid: installed[${index}].pluginId must be an exact namespaced ID.`);
717
+ }
718
+ if (record.installed !== true) {
719
+ throw new Error(`codexPluginListInvalid: installed[${index}].installed must be true.`);
720
+ }
721
+ if (typeof record.enabled !== 'boolean') {
722
+ throw new Error(`codexPluginListInvalid: installed[${index}].enabled must be boolean.`);
723
+ }
724
+ if (record.version !== undefined && typeof record.version !== 'string') {
725
+ throw new Error(`codexPluginListInvalid: installed[${index}].version must be string.`);
726
+ }
727
+ const source = record.source;
728
+ if (source !== undefined && (!source || typeof source !== 'object' || Array.isArray(source))) {
729
+ throw new Error(`codexPluginListInvalid: installed[${index}].source must be an object.`);
730
+ }
731
+ const pluginPath = source && typeof source === 'object'
732
+ ? source.path
733
+ : undefined;
734
+ if (pluginPath !== undefined && typeof pluginPath !== 'string') {
735
+ throw new Error(`codexPluginListInvalid: installed[${index}].source.path must be string.`);
736
+ }
408
737
  return {
409
- command: 'codex',
410
- args: ['plugin', 'marketplace', 'list'],
411
- cwd,
412
- env,
738
+ pluginId,
739
+ enabled: record.enabled,
740
+ ...(typeof record.version === 'string' ? { version: record.version } : {}),
741
+ ...(typeof pluginPath === 'string' ? { path: pluginPath } : {}),
413
742
  };
414
743
  }
415
- export function buildCodexMarketplaceRemoveInvocation(marketplaceName, cwd, env) {
744
+ export function parseCodexPluginListJson(stdout) {
745
+ let value;
746
+ try {
747
+ value = JSON.parse(stdout);
748
+ }
749
+ catch {
750
+ throw new Error('codexPluginListInvalid: Codex plugin list did not return JSON.');
751
+ }
752
+ if (!value || typeof value !== 'object' || Array.isArray(value)) {
753
+ throw new Error('codexPluginListInvalid: expected a Codex 0.151 plugin list object.');
754
+ }
755
+ const record = value;
756
+ if (!Array.isArray(record.installed) || !Array.isArray(record.available)) {
757
+ throw new Error('codexPluginListInvalid: expected installed[] and available[].');
758
+ }
759
+ return record.installed.map(readCodexPluginListEntry);
760
+ }
761
+ function isCodexPluginActive(entries, pluginId) {
762
+ const matches = entries.filter((entry) => entry.pluginId === pluginId);
763
+ if (matches.length > 1) {
764
+ throw new Error(`codexPluginListInvalid: duplicate plugin ID ${pluginId}.`);
765
+ }
766
+ return matches.length === 1 && matches[0].enabled;
767
+ }
768
+ export function postcheckCodexProjectPluginActivation(options) {
769
+ const exactActive = isCodexPluginActive(parseCodexPluginListJson(options.exactResult.stdout), options.pluginId);
770
+ const neutralActive = isCodexPluginActive(parseCodexPluginListJson(options.neutralResult.stdout), options.pluginId);
771
+ if (exactActive !== (options.userEnabled || options.projectEnabled)
772
+ || neutralActive !== options.userEnabled) {
773
+ throw new CodexProjectConfigNotEffectiveError(options.pluginId);
774
+ }
416
775
  return {
417
- command: 'codex',
418
- args: ['plugin', 'marketplace', 'remove', marketplaceName],
419
- cwd,
420
- env,
776
+ effective: true,
777
+ pluginId: options.pluginId,
778
+ exactActive,
779
+ neutralActive,
421
780
  };
422
781
  }
782
+ export function buildCodexPluginRemoveInvocation(manager, pluginId, cwd, env) {
783
+ return buildCodexInvocation(manager, ['plugin', 'remove', pluginId], cwd, env);
784
+ }
785
+ export function buildCodexMarketplaceAddInvocation(manager, awHome, cwd, env) {
786
+ return buildCodexInvocation(manager, ['plugin', 'marketplace', 'add', awHome], cwd, env);
787
+ }
788
+ export function buildCodexMarketplaceRemoveInvocation(manager, marketplaceName, cwd, env) {
789
+ return buildCodexInvocation(manager, ['plugin', 'marketplace', 'remove', marketplaceName], cwd, env);
790
+ }
423
791
  export async function runNativeCliChecked(invocation, runner) {
424
792
  const result = await runNativeCli(invocation, runner);
425
793
  if (result.exitCode !== 0) {