@lesliechan721/aw 0.1.0-beta.3 → 0.1.0-beta.31

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 (529) 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/scripts/add-skill.mjs +4 -4
  4. package/dist/authoring/scripts/add-skill.mjs.map +1 -1
  5. package/dist/authoring/scripts/init-plugin.mjs +67 -97
  6. package/dist/authoring/scripts/init-plugin.mjs.map +1 -1
  7. package/dist/authoring/scripts/lib/plugin-version-check.d.mts +15 -0
  8. package/dist/authoring/scripts/lib/plugin-version-check.mjs +239 -232
  9. package/dist/authoring/scripts/lib/plugin-version-check.mjs.map +1 -1
  10. package/dist/authoring/scripts/lib/skill-scaffold.d.mts +77 -90
  11. package/dist/authoring/scripts/lib/skill-scaffold.mjs +99 -120
  12. package/dist/authoring/scripts/lib/skill-scaffold.mjs.map +1 -1
  13. package/dist/authoring/scripts/plugin-status.mjs +8 -11
  14. package/dist/authoring/scripts/plugin-status.mjs.map +1 -1
  15. package/dist/authoring/scripts/remove-plugin.mjs +367 -0
  16. package/dist/authoring/scripts/remove-plugin.mjs.map +1 -0
  17. package/dist/authoring/scripts/validate-plugin.mjs +307 -1173
  18. package/dist/authoring/scripts/validate-plugin.mjs.map +1 -1
  19. package/dist/scripts/aw-skill-eval-materializer.d.ts +26 -0
  20. package/dist/scripts/aw-skill-eval-materializer.js +306 -0
  21. package/dist/scripts/aw-skill-eval-materializer.js.map +1 -0
  22. package/dist/scripts/bundle-plugins.d.ts +1 -2
  23. package/dist/scripts/bundle-plugins.js +24 -7
  24. package/dist/scripts/bundle-plugins.js.map +1 -1
  25. package/dist/scripts/plugin-staging.d.ts +7 -24
  26. package/dist/scripts/plugin-staging.js +22 -142
  27. package/dist/scripts/plugin-staging.js.map +1 -1
  28. package/dist/scripts/test-plugin-scripts.d.ts +2 -0
  29. package/dist/scripts/test-plugin-scripts.js +27 -75
  30. package/dist/scripts/test-plugin-scripts.js.map +1 -1
  31. package/dist/src/adapters/helpers.js +2 -2
  32. package/dist/src/adapters/helpers.js.map +1 -1
  33. package/dist/src/authoring/workspace-commands.d.ts +26 -2
  34. package/dist/src/authoring/workspace-commands.js +44 -19
  35. package/dist/src/authoring/workspace-commands.js.map +1 -1
  36. package/dist/src/commands/aw-capabilities.d.ts +78 -0
  37. package/dist/src/commands/aw-capabilities.js +256 -0
  38. package/dist/src/commands/aw-capabilities.js.map +1 -0
  39. package/dist/src/commands/catalog-dev-source.d.ts +154 -0
  40. package/dist/src/commands/catalog-dev-source.js +655 -0
  41. package/dist/src/commands/catalog-dev-source.js.map +1 -0
  42. package/dist/src/commands/catalog-generation.d.ts +21 -0
  43. package/dist/src/commands/catalog-generation.js +9 -0
  44. package/dist/src/commands/catalog-generation.js.map +1 -0
  45. package/dist/src/commands/catalog-publication-inspection.d.ts +138 -0
  46. package/dist/src/commands/catalog-publication-inspection.js +757 -0
  47. package/dist/src/commands/catalog-publication-inspection.js.map +1 -0
  48. package/dist/src/commands/catalog-publication-journal.d.ts +68 -0
  49. package/dist/src/commands/catalog-publication-journal.js +292 -0
  50. package/dist/src/commands/catalog-publication-journal.js.map +1 -0
  51. package/dist/src/commands/catalog-publication-target.d.ts +18 -0
  52. package/dist/src/commands/catalog-publication-target.js +95 -0
  53. package/dist/src/commands/catalog-publication-target.js.map +1 -0
  54. package/dist/src/commands/catalog-publish.d.ts +77 -7
  55. package/dist/src/commands/catalog-publish.js +746 -316
  56. package/dist/src/commands/catalog-publish.js.map +1 -1
  57. package/dist/src/commands/catalog-source.d.ts +60 -22
  58. package/dist/src/commands/catalog-source.js +311 -91
  59. package/dist/src/commands/catalog-source.js.map +1 -1
  60. package/dist/src/commands/catalog-status.d.ts +56 -0
  61. package/dist/src/commands/catalog-status.js +217 -0
  62. package/dist/src/commands/catalog-status.js.map +1 -0
  63. package/dist/src/commands/catalog-store.d.ts +104 -0
  64. package/dist/src/commands/catalog-store.js +685 -0
  65. package/dist/src/commands/catalog-store.js.map +1 -0
  66. package/dist/src/commands/catalog-workspace-resolution.d.ts +13 -0
  67. package/dist/src/commands/catalog-workspace-resolution.js +42 -0
  68. package/dist/src/commands/catalog-workspace-resolution.js.map +1 -0
  69. package/dist/src/commands/console.js +28 -17
  70. package/dist/src/commands/console.js.map +1 -1
  71. package/dist/src/commands/dependency-operation-plan.d.ts +52 -15
  72. package/dist/src/commands/dependency-operation-plan.js +289 -7
  73. package/dist/src/commands/dependency-operation-plan.js.map +1 -1
  74. package/dist/src/commands/init.d.ts +5 -11
  75. package/dist/src/commands/init.js +30 -51
  76. package/dist/src/commands/init.js.map +1 -1
  77. package/dist/src/commands/offline-cleanup-evidence.d.ts +67 -0
  78. package/dist/src/commands/offline-cleanup-evidence.js +181 -0
  79. package/dist/src/commands/offline-cleanup-evidence.js.map +1 -0
  80. package/dist/src/commands/operation-plan.d.ts +127 -0
  81. package/dist/src/commands/operation-plan.js +71 -0
  82. package/dist/src/commands/operation-plan.js.map +1 -0
  83. package/dist/src/commands/operation-planner.d.ts +46 -0
  84. package/dist/src/commands/operation-planner.js +141 -0
  85. package/dist/src/commands/operation-planner.js.map +1 -0
  86. package/dist/src/commands/options.d.ts +9 -7
  87. package/dist/src/commands/options.js +83 -21
  88. package/dist/src/commands/options.js.map +1 -1
  89. package/dist/src/commands/plugin-capabilities.d.ts +22 -0
  90. package/dist/src/commands/plugin-capabilities.js +159 -0
  91. package/dist/src/commands/plugin-capabilities.js.map +1 -0
  92. package/dist/src/commands/rebuild-command.d.ts +77 -30
  93. package/dist/src/commands/rebuild-command.js +3993 -711
  94. package/dist/src/commands/rebuild-command.js.map +1 -1
  95. package/dist/src/commands/rebuild-integration.d.ts +120 -21
  96. package/dist/src/commands/rebuild-integration.js +2765 -1326
  97. package/dist/src/commands/rebuild-integration.js.map +1 -1
  98. package/dist/src/commands/rebuild-operations.d.ts +58 -30
  99. package/dist/src/commands/rebuild-operations.js +260 -319
  100. package/dist/src/commands/rebuild-operations.js.map +1 -1
  101. package/dist/src/commands/reconcile-operation-plan.d.ts +28 -0
  102. package/dist/src/commands/reconcile-operation-plan.js +47 -0
  103. package/dist/src/commands/reconcile-operation-plan.js.map +1 -0
  104. package/dist/src/commands/review-inspection.d.ts +228 -0
  105. package/dist/src/commands/review-inspection.js +1341 -0
  106. package/dist/src/commands/review-inspection.js.map +1 -0
  107. package/dist/src/commands/review-preparation.d.ts +49 -0
  108. package/dist/src/commands/review-preparation.js +427 -0
  109. package/dist/src/commands/review-preparation.js.map +1 -0
  110. package/dist/src/commands/runtime.d.ts +1 -5
  111. package/dist/src/commands/runtime.js +24 -50
  112. package/dist/src/commands/runtime.js.map +1 -1
  113. package/dist/src/commands/skill-eval.d.ts +38 -0
  114. package/dist/src/commands/skill-eval.js +388 -0
  115. package/dist/src/commands/skill-eval.js.map +1 -0
  116. package/dist/src/commands/status-v6.d.ts +279 -0
  117. package/dist/src/commands/status-v6.js +2697 -0
  118. package/dist/src/commands/status-v6.js.map +1 -0
  119. package/dist/src/commands/sync-command.d.ts +40 -0
  120. package/dist/src/commands/sync-command.js +250 -0
  121. package/dist/src/commands/sync-command.js.map +1 -0
  122. package/dist/src/commands/wizard.d.ts +3 -4
  123. package/dist/src/commands/wizard.js +2 -2
  124. package/dist/src/commands/wizard.js.map +1 -1
  125. package/dist/src/commands/write-commands.d.ts +9 -3
  126. package/dist/src/commands/write-commands.js +124 -31
  127. package/dist/src/commands/write-commands.js.map +1 -1
  128. package/dist/src/constants.d.ts +7 -1
  129. package/dist/src/constants.js +7 -1
  130. package/dist/src/constants.js.map +1 -1
  131. package/dist/src/eval/manifest-v1.d.ts +71 -0
  132. package/dist/src/eval/manifest-v1.js +370 -0
  133. package/dist/src/eval/manifest-v1.js.map +1 -0
  134. package/dist/src/generators/local-plugin.d.ts +5 -1
  135. package/dist/src/generators/local-plugin.js +225 -104
  136. package/dist/src/generators/local-plugin.js.map +1 -1
  137. package/dist/src/index.d.ts +10 -4
  138. package/dist/src/index.js +1787 -476
  139. package/dist/src/index.js.map +1 -1
  140. package/dist/src/output/command-receipt.d.ts +43 -46
  141. package/dist/src/output/command-receipt.js +256 -80
  142. package/dist/src/output/command-receipt.js.map +1 -1
  143. package/dist/src/output/model.d.ts +3 -44
  144. package/dist/src/output/model.js +1 -144
  145. package/dist/src/output/model.js.map +1 -1
  146. package/dist/src/output/rebuild-progress.js +1 -13
  147. package/dist/src/output/rebuild-progress.js.map +1 -1
  148. package/dist/src/portable/commands.d.ts +46 -7
  149. package/dist/src/portable/commands.js +349 -37
  150. package/dist/src/portable/commands.js.map +1 -1
  151. package/dist/src/portable/materializer.d.ts +17 -4
  152. package/dist/src/portable/materializer.js +160 -38
  153. package/dist/src/portable/materializer.js.map +1 -1
  154. package/dist/src/portable/skills-cli.d.ts +15 -7
  155. package/dist/src/portable/skills-cli.js +66 -19
  156. package/dist/src/portable/skills-cli.js.map +1 -1
  157. package/dist/src/review/eval-source-input.d.ts +43 -0
  158. package/dist/src/review/eval-source-input.js +207 -0
  159. package/dist/src/review/eval-source-input.js.map +1 -0
  160. package/dist/src/review/review-profile.d.ts +17 -0
  161. package/dist/src/review/review-profile.js +177 -0
  162. package/dist/src/review/review-profile.js.map +1 -0
  163. package/dist/src/review/review-selection.d.ts +30 -0
  164. package/dist/src/review/review-selection.js +527 -0
  165. package/dist/src/review/review-selection.js.map +1 -0
  166. package/dist/src/review/review-types.d.ts +68 -0
  167. package/dist/src/review/review-types.js +16 -0
  168. package/dist/src/review/review-types.js.map +1 -0
  169. package/dist/src/review/skill-materialization.d.ts +13 -0
  170. package/dist/src/review/skill-materialization.js +75 -0
  171. package/dist/src/review/skill-materialization.js.map +1 -0
  172. package/dist/src/review/source-binding.d.ts +182 -0
  173. package/dist/src/review/source-binding.js +682 -0
  174. package/dist/src/review/source-binding.js.map +1 -0
  175. package/dist/src/tui/catalog-freshness.d.ts +1 -0
  176. package/dist/src/tui/catalog-freshness.js +2 -0
  177. package/dist/src/tui/catalog-freshness.js.map +1 -0
  178. package/dist/src/tui/catalog-generation.d.ts +21 -0
  179. package/dist/src/tui/catalog-generation.js +156 -0
  180. package/dist/src/tui/catalog-generation.js.map +1 -0
  181. package/dist/src/tui/catalog-sources/projection.d.ts +4 -0
  182. package/dist/src/tui/catalog-sources/projection.js +17 -0
  183. package/dist/src/tui/catalog-sources/projection.js.map +1 -0
  184. package/dist/src/tui/catalog-sources/review.d.ts +3 -0
  185. package/dist/src/tui/catalog-sources/review.js +13 -0
  186. package/dist/src/tui/catalog-sources/review.js.map +1 -0
  187. package/dist/src/tui/catalog-sources/screens.d.ts +12 -0
  188. package/dist/src/tui/catalog-sources/screens.js +40 -0
  189. package/dist/src/tui/catalog-sources/screens.js.map +1 -0
  190. package/dist/src/tui/catalog-sources/session.d.ts +28 -0
  191. package/dist/src/tui/catalog-sources/session.js +295 -0
  192. package/dist/src/tui/catalog-sources/session.js.map +1 -0
  193. package/dist/src/tui/catalog-sources/types.d.ts +53 -0
  194. package/dist/src/tui/catalog-sources/types.js +2 -0
  195. package/dist/src/tui/catalog-sources/types.js.map +1 -0
  196. package/dist/src/tui/catalog-store-task.d.ts +16 -0
  197. package/dist/src/tui/catalog-store-task.js +19 -0
  198. package/dist/src/tui/catalog-store-task.js.map +1 -0
  199. package/dist/src/tui/components.d.ts +128 -0
  200. package/dist/src/tui/components.js +251 -7
  201. package/dist/src/tui/components.js.map +1 -1
  202. package/dist/src/tui/console-app-v4.d.ts +14 -4
  203. package/dist/src/tui/console-app-v4.js +9248 -1461
  204. package/dist/src/tui/console-app-v4.js.map +1 -1
  205. package/dist/src/tui/controller-runtime.d.ts +13 -1
  206. package/dist/src/tui/controller-runtime.js +3338 -410
  207. package/dist/src/tui/controller-runtime.js.map +1 -1
  208. package/dist/src/tui/controller.d.ts +614 -40
  209. package/dist/src/tui/controller.js +3478 -708
  210. package/dist/src/tui/controller.js.map +1 -1
  211. package/dist/src/tui/dependency-graph.d.ts +81 -0
  212. package/dist/src/tui/dependency-graph.js +455 -0
  213. package/dist/src/tui/dependency-graph.js.map +1 -0
  214. package/dist/src/tui/diagnostic-projection.d.ts +23 -0
  215. package/dist/src/tui/diagnostic-projection.js +567 -0
  216. package/dist/src/tui/diagnostic-projection.js.map +1 -0
  217. package/dist/src/tui/diagnostics.d.ts +30 -0
  218. package/dist/src/tui/diagnostics.js +76 -0
  219. package/dist/src/tui/diagnostics.js.map +1 -0
  220. package/dist/src/tui/glossary.d.ts +23 -0
  221. package/dist/src/tui/glossary.js +42 -0
  222. package/dist/src/tui/glossary.js.map +1 -0
  223. package/dist/src/tui/index.d.ts +11 -4
  224. package/dist/src/tui/index.js +8 -2
  225. package/dist/src/tui/index.js.map +1 -1
  226. package/dist/src/tui/input-display.d.ts +8 -0
  227. package/dist/src/tui/input-display.js +36 -0
  228. package/dist/src/tui/input-display.js.map +1 -0
  229. package/dist/src/tui/keys.d.ts +44 -0
  230. package/dist/src/tui/keys.js +43 -15
  231. package/dist/src/tui/keys.js.map +1 -1
  232. package/dist/src/tui/lifecycle-action-view.d.ts +6 -0
  233. package/dist/src/tui/lifecycle-action-view.js +36 -0
  234. package/dist/src/tui/lifecycle-action-view.js.map +1 -0
  235. package/dist/src/tui/model.d.ts +235 -27
  236. package/dist/src/tui/model.js +1652 -304
  237. package/dist/src/tui/model.js.map +1 -1
  238. package/dist/src/tui/operation-diagnostic-screens.d.ts +21 -0
  239. package/dist/src/tui/operation-diagnostic-screens.js +102 -0
  240. package/dist/src/tui/operation-diagnostic-screens.js.map +1 -0
  241. package/dist/src/tui/operation-history.d.ts +81 -0
  242. package/dist/src/tui/operation-history.js +135 -0
  243. package/dist/src/tui/operation-history.js.map +1 -0
  244. package/dist/src/tui/operation-review-planner.d.ts +21 -0
  245. package/dist/src/tui/operation-review-planner.js +1254 -0
  246. package/dist/src/tui/operation-review-planner.js.map +1 -0
  247. package/dist/src/tui/plugin-content.d.ts +23 -0
  248. package/dist/src/tui/plugin-content.js +336 -0
  249. package/dist/src/tui/plugin-content.js.map +1 -0
  250. package/dist/src/tui/plugin-write-task.d.ts +69 -0
  251. package/dist/src/tui/plugin-write-task.js +286 -0
  252. package/dist/src/tui/plugin-write-task.js.map +1 -0
  253. package/dist/src/tui/prompt.js +4 -15
  254. package/dist/src/tui/prompt.js.map +1 -1
  255. package/dist/src/tui/router.d.ts +183 -11
  256. package/dist/src/tui/router.js +352 -29
  257. package/dist/src/tui/router.js.map +1 -1
  258. package/dist/src/tui/screen-registry.d.ts +702 -0
  259. package/dist/src/tui/screen-registry.js +231 -0
  260. package/dist/src/tui/screen-registry.js.map +1 -0
  261. package/dist/src/tui/session-console-app.d.ts +6 -0
  262. package/dist/src/tui/session-console-app.js +13 -0
  263. package/dist/src/tui/session-console-app.js.map +1 -0
  264. package/dist/src/tui/session-host.d.ts +45 -0
  265. package/dist/src/tui/session-host.js +209 -0
  266. package/dist/src/tui/session-host.js.map +1 -0
  267. package/dist/src/tui/source-ref-presets.d.ts +3 -0
  268. package/dist/src/tui/source-ref-presets.js +11 -0
  269. package/dist/src/tui/source-ref-presets.js.map +1 -0
  270. package/dist/src/tui/theme.d.ts +18 -10
  271. package/dist/src/tui/theme.js +18 -10
  272. package/dist/src/tui/theme.js.map +1 -1
  273. package/dist/src/tui/viewport.d.ts +20 -0
  274. package/dist/src/tui/viewport.js +29 -0
  275. package/dist/src/tui/viewport.js.map +1 -0
  276. package/dist/src/tui/views.js +31 -3
  277. package/dist/src/tui/views.js.map +1 -1
  278. package/dist/src/tui/wizard.js +11 -9
  279. package/dist/src/tui/wizard.js.map +1 -1
  280. package/dist/src/types.d.ts +242 -20
  281. package/dist/src/types.js +1 -0
  282. package/dist/src/types.js.map +1 -1
  283. package/dist/src/utils/agent-version.d.ts +7 -1
  284. package/dist/src/utils/agent-version.js +41 -8
  285. package/dist/src/utils/agent-version.js.map +1 -1
  286. package/dist/src/utils/artifact-plan.d.ts +5 -4
  287. package/dist/src/utils/artifact-plan.js +18 -7
  288. package/dist/src/utils/artifact-plan.js.map +1 -1
  289. package/dist/src/utils/artifact-renderer.d.ts +13 -7
  290. package/dist/src/utils/artifact-renderer.js +196 -219
  291. package/dist/src/utils/artifact-renderer.js.map +1 -1
  292. package/dist/src/utils/artifact-request.d.ts +21 -0
  293. package/dist/src/utils/artifact-request.js +82 -0
  294. package/dist/src/utils/artifact-request.js.map +1 -0
  295. package/dist/src/utils/aw-home-mutation-lock.d.ts +1 -0
  296. package/dist/src/utils/aw-home-mutation-lock.js +32 -4
  297. package/dist/src/utils/aw-home-mutation-lock.js.map +1 -1
  298. package/dist/src/utils/bundle-integrity.d.ts +0 -1
  299. package/dist/src/utils/bundle-integrity.js +0 -25
  300. package/dist/src/utils/bundle-integrity.js.map +1 -1
  301. package/dist/src/utils/bundle-layout.js +14 -29
  302. package/dist/src/utils/bundle-layout.js.map +1 -1
  303. package/dist/src/utils/catalog-capability-projection.d.ts +8 -0
  304. package/dist/src/utils/catalog-capability-projection.js +14 -0
  305. package/dist/src/utils/catalog-capability-projection.js.map +1 -0
  306. package/dist/src/utils/catalog-digests.d.ts +10 -0
  307. package/dist/src/utils/catalog-digests.js +50 -2
  308. package/dist/src/utils/catalog-digests.js.map +1 -1
  309. package/dist/src/utils/catalog-generation-control-snapshot.d.ts +11 -0
  310. package/dist/src/utils/catalog-generation-control-snapshot.js +45 -0
  311. package/dist/src/utils/catalog-generation-control-snapshot.js.map +1 -0
  312. package/dist/src/utils/catalog-generation-error.d.ts +16 -0
  313. package/dist/src/utils/catalog-generation-error.js +30 -0
  314. package/dist/src/utils/catalog-generation-error.js.map +1 -0
  315. package/dist/src/utils/catalog-generation-resolver.d.ts +44 -0
  316. package/dist/src/utils/catalog-generation-resolver.js +273 -0
  317. package/dist/src/utils/catalog-generation-resolver.js.map +1 -0
  318. package/dist/src/utils/catalog-generation-service.d.ts +172 -0
  319. package/dist/src/utils/catalog-generation-service.js +1271 -0
  320. package/dist/src/utils/catalog-generation-service.js.map +1 -0
  321. package/dist/src/utils/catalog-generation-state.d.ts +22 -0
  322. package/dist/src/utils/catalog-generation-state.js +192 -0
  323. package/dist/src/utils/catalog-generation-state.js.map +1 -0
  324. package/dist/src/utils/catalog-generation-store.d.ts +58 -0
  325. package/dist/src/utils/catalog-generation-store.js +452 -0
  326. package/dist/src/utils/catalog-generation-store.js.map +1 -0
  327. package/dist/src/utils/catalog-manifest-v7.d.ts +5 -0
  328. package/dist/src/utils/{catalog-manifest-v4.js → catalog-manifest-v7.js} +35 -43
  329. package/dist/src/utils/catalog-manifest-v7.js.map +1 -0
  330. package/dist/src/utils/catalog-operation-context.d.ts +20 -0
  331. package/dist/src/utils/catalog-operation-context.js +142 -0
  332. package/dist/src/utils/catalog-operation-context.js.map +1 -0
  333. package/dist/src/utils/catalog-public-error.d.ts +7 -3
  334. package/dist/src/utils/catalog-public-error.js +28 -8
  335. package/dist/src/utils/catalog-public-error.js.map +1 -1
  336. package/dist/src/utils/catalog-runtime-projection.d.ts +4 -7
  337. package/dist/src/utils/catalog-runtime-projection.js +7 -102
  338. package/dist/src/utils/catalog-runtime-projection.js.map +1 -1
  339. package/dist/src/utils/catalog-snapshot.d.ts +5 -3
  340. package/dist/src/utils/catalog-snapshot.js +11 -3
  341. package/dist/src/utils/catalog-snapshot.js.map +1 -1
  342. package/dist/src/utils/catalog-source-identity.d.ts +1 -0
  343. package/dist/src/utils/catalog-source-identity.js +21 -2
  344. package/dist/src/utils/catalog-source-identity.js.map +1 -1
  345. package/dist/src/utils/catalog-source-impact.d.ts +21 -0
  346. package/dist/src/utils/catalog-source-impact.js +344 -0
  347. package/dist/src/utils/catalog-source-impact.js.map +1 -0
  348. package/dist/src/utils/catalog-source-references.d.ts +3 -2
  349. package/dist/src/utils/catalog-source-references.js +195 -347
  350. package/dist/src/utils/catalog-source-references.js.map +1 -1
  351. package/dist/src/utils/catalog-sources.d.ts +15 -1
  352. package/dist/src/utils/catalog-sources.js +206 -27
  353. package/dist/src/utils/catalog-sources.js.map +1 -1
  354. package/dist/src/utils/codex-config.d.ts +2 -0
  355. package/dist/src/utils/codex-config.js +26 -5
  356. package/dist/src/utils/codex-config.js.map +1 -1
  357. package/dist/src/utils/codex-manager.d.ts +79 -0
  358. package/dist/src/utils/codex-manager.js +745 -0
  359. package/dist/src/utils/codex-manager.js.map +1 -0
  360. package/dist/src/utils/codex-marketplace-path.d.ts +5 -0
  361. package/dist/src/utils/codex-marketplace-path.js +45 -0
  362. package/dist/src/utils/codex-marketplace-path.js.map +1 -0
  363. package/dist/src/utils/codex-native-observation.d.ts +49 -0
  364. package/dist/src/utils/codex-native-observation.js +154 -0
  365. package/dist/src/utils/codex-native-observation.js.map +1 -0
  366. package/dist/src/utils/codex-native-render-receipt.d.ts +40 -0
  367. package/dist/src/utils/codex-native-render-receipt.js +205 -0
  368. package/dist/src/utils/codex-native-render-receipt.js.map +1 -0
  369. package/dist/src/utils/codex-reconciler.d.ts +126 -0
  370. package/dist/src/utils/codex-reconciler.js +298 -0
  371. package/dist/src/utils/codex-reconciler.js.map +1 -0
  372. package/dist/src/utils/codex-shared-native.d.ts +43 -0
  373. package/dist/src/utils/codex-shared-native.js +81 -0
  374. package/dist/src/utils/codex-shared-native.js.map +1 -0
  375. package/dist/src/utils/codex-skill-staging.d.ts +2 -0
  376. package/dist/src/utils/codex-skill-staging.js.map +1 -1
  377. package/dist/src/utils/codex-surface-analysis.d.ts +46 -0
  378. package/dist/src/utils/codex-surface-analysis.js +247 -0
  379. package/dist/src/utils/codex-surface-analysis.js.map +1 -0
  380. package/dist/src/utils/dynamic-skill-tree.d.ts +4 -0
  381. package/dist/src/utils/dynamic-skill-tree.js +36 -6
  382. package/dist/src/utils/dynamic-skill-tree.js.map +1 -1
  383. package/dist/src/utils/git-catalog-provider.d.ts +18 -0
  384. package/dist/src/utils/git-catalog-provider.js +170 -144
  385. package/dist/src/utils/git-catalog-provider.js.map +1 -1
  386. package/dist/src/utils/local-marketplace.d.ts +15 -1
  387. package/dist/src/utils/local-marketplace.js +307 -84
  388. package/dist/src/utils/local-marketplace.js.map +1 -1
  389. package/dist/src/utils/manifest.d.ts +1 -4
  390. package/dist/src/utils/manifest.js +1 -4
  391. package/dist/src/utils/manifest.js.map +1 -1
  392. package/dist/src/utils/multi-source-catalog.d.ts +3 -9
  393. package/dist/src/utils/multi-source-catalog.js +54 -110
  394. package/dist/src/utils/multi-source-catalog.js.map +1 -1
  395. package/dist/src/utils/native-cli.d.ts +55 -7
  396. package/dist/src/utils/native-cli.js +386 -57
  397. package/dist/src/utils/native-cli.js.map +1 -1
  398. package/dist/src/utils/orphan-marketplace-cleanup.js +0 -4
  399. package/dist/src/utils/orphan-marketplace-cleanup.js.map +1 -1
  400. package/dist/src/utils/ownership.d.ts +84 -20
  401. package/dist/src/utils/ownership.js +179 -222
  402. package/dist/src/utils/ownership.js.map +1 -1
  403. package/dist/src/utils/path-catalog-provider.d.ts +1 -1
  404. package/dist/src/utils/path-catalog-provider.js +54 -65
  405. package/dist/src/utils/path-catalog-provider.js.map +1 -1
  406. package/dist/src/utils/paths.d.ts +0 -1
  407. package/dist/src/utils/paths.js +0 -1
  408. package/dist/src/utils/paths.js.map +1 -1
  409. package/dist/src/utils/plugin-config-impact.d.ts +33 -0
  410. package/dist/src/utils/plugin-config-impact.js +298 -0
  411. package/dist/src/utils/plugin-config-impact.js.map +1 -0
  412. package/dist/src/utils/plugin-config-write.d.ts +52 -27
  413. package/dist/src/utils/plugin-config-write.js +990 -298
  414. package/dist/src/utils/plugin-config-write.js.map +1 -1
  415. package/dist/src/utils/plugin-config.d.ts +140 -93
  416. package/dist/src/utils/plugin-config.js +992 -980
  417. package/dist/src/utils/plugin-config.js.map +1 -1
  418. package/dist/src/utils/plugin-intent-state.d.ts +49 -0
  419. package/dist/src/utils/plugin-intent-state.js +320 -0
  420. package/dist/src/utils/plugin-intent-state.js.map +1 -0
  421. package/dist/src/utils/plugin-scripts.d.ts +62 -125
  422. package/dist/src/utils/plugin-scripts.js +468 -525
  423. package/dist/src/utils/plugin-scripts.js.map +1 -1
  424. package/dist/src/utils/process-tree.d.ts +2 -2
  425. package/dist/src/utils/process-tree.js +1 -1
  426. package/dist/src/utils/process-tree.js.map +1 -1
  427. package/dist/src/utils/project-boundary.d.ts +11 -13
  428. package/dist/src/utils/project-boundary.js +28 -34
  429. package/dist/src/utils/project-boundary.js.map +1 -1
  430. package/dist/src/utils/safe-fs.d.ts +21 -0
  431. package/dist/src/utils/safe-fs.js +111 -0
  432. package/dist/src/utils/safe-fs.js.map +1 -0
  433. package/dist/src/utils/safe-operation-diagnostic.d.ts +15 -0
  434. package/dist/src/utils/safe-operation-diagnostic.js +33 -0
  435. package/dist/src/utils/safe-operation-diagnostic.js.map +1 -0
  436. package/dist/src/utils/sensitive-content.d.ts +4 -0
  437. package/dist/src/utils/sensitive-content.js +36 -0
  438. package/dist/src/utils/sensitive-content.js.map +1 -0
  439. package/dist/src/utils/skill-validation.d.ts +1 -1
  440. package/dist/src/utils/skill-validation.js +1 -1
  441. package/dist/src/utils/skill-validation.js.map +1 -1
  442. package/dist/src/utils/state-paths.d.ts +1 -0
  443. package/dist/src/utils/state-paths.js +12 -2
  444. package/dist/src/utils/state-paths.js.map +1 -1
  445. package/dist/src/utils/target-eligibility.d.ts +8 -2
  446. package/dist/src/utils/target-eligibility.js +17 -8
  447. package/dist/src/utils/target-eligibility.js.map +1 -1
  448. package/dist/src/utils/windows-claude-shim.d.ts +9 -0
  449. package/dist/src/utils/windows-claude-shim.js +141 -0
  450. package/dist/src/utils/windows-claude-shim.js.map +1 -0
  451. package/dist/vitest.config.js +91 -10
  452. package/dist/vitest.config.js.map +1 -1
  453. package/package.json +22 -19
  454. package/dist/authoring/scripts/check-plugin-versions.mjs +0 -5
  455. package/dist/authoring/scripts/check-plugin-versions.mjs.map +0 -1
  456. package/dist/scripts/aw-skill-eval-engine.d.ts +0 -13
  457. package/dist/scripts/aw-skill-eval-engine.js +0 -31
  458. package/dist/scripts/aw-skill-eval-engine.js.map +0 -1
  459. package/dist/scripts/codex-eval-app-server.d.ts +0 -89
  460. package/dist/scripts/codex-eval-app-server.js +0 -1228
  461. package/dist/scripts/codex-eval-app-server.js.map +0 -1
  462. package/dist/scripts/codex-eval-isolation.d.ts +0 -61
  463. package/dist/scripts/codex-eval-isolation.js +0 -318
  464. package/dist/scripts/codex-eval-isolation.js.map +0 -1
  465. package/dist/scripts/codex-eval-process-management.d.ts +0 -8
  466. package/dist/scripts/codex-eval-process-management.js +0 -69
  467. package/dist/scripts/codex-eval-process-management.js.map +0 -1
  468. package/dist/scripts/codex-eval-process-tree.d.ts +0 -38
  469. package/dist/scripts/codex-eval-process-tree.js +0 -803
  470. package/dist/scripts/codex-eval-process-tree.js.map +0 -1
  471. package/dist/scripts/codex-eval-runtime-config.d.ts +0 -62
  472. package/dist/scripts/codex-eval-runtime-config.js +0 -843
  473. package/dist/scripts/codex-eval-runtime-config.js.map +0 -1
  474. package/dist/scripts/codex-trigger-eval.d.ts +0 -84
  475. package/dist/scripts/codex-trigger-eval.js +0 -968
  476. package/dist/scripts/codex-trigger-eval.js.map +0 -1
  477. package/dist/scripts/eval-plugin-skills-audited.d.ts +0 -6
  478. package/dist/scripts/eval-plugin-skills-audited.js +0 -261
  479. package/dist/scripts/eval-plugin-skills-audited.js.map +0 -1
  480. package/dist/scripts/eval-plugin-skills.d.ts +0 -45
  481. package/dist/scripts/eval-plugin-skills.js +0 -1586
  482. package/dist/scripts/eval-plugin-skills.js.map +0 -1
  483. package/dist/scripts/eval-run-layout.d.ts +0 -17
  484. package/dist/scripts/eval-run-layout.js +0 -26
  485. package/dist/scripts/eval-run-layout.js.map +0 -1
  486. package/dist/scripts/plugin-eval-contract.d.ts +0 -185
  487. package/dist/scripts/plugin-eval-contract.js +0 -695
  488. package/dist/scripts/plugin-eval-contract.js.map +0 -1
  489. package/dist/scripts/plugin-eval-materializer.d.ts +0 -13
  490. package/dist/scripts/plugin-eval-materializer.js +0 -421
  491. package/dist/scripts/plugin-eval-materializer.js.map +0 -1
  492. package/dist/scripts/skill-reporting.d.ts +0 -212
  493. package/dist/scripts/skill-reporting.js +0 -922
  494. package/dist/scripts/skill-reporting.js.map +0 -1
  495. package/dist/src/commands/status-v4.d.ts +0 -102
  496. package/dist/src/commands/status-v4.js +0 -844
  497. package/dist/src/commands/status-v4.js.map +0 -1
  498. package/dist/src/commands/status.d.ts +0 -93
  499. package/dist/src/commands/status.js +0 -442
  500. package/dist/src/commands/status.js.map +0 -1
  501. package/dist/src/utils/active-marketplace-runtime-lock.d.ts +0 -12
  502. package/dist/src/utils/active-marketplace-runtime-lock.js +0 -133
  503. package/dist/src/utils/active-marketplace-runtime-lock.js.map +0 -1
  504. package/dist/src/utils/catalog-manifest-v3.d.ts +0 -2
  505. package/dist/src/utils/catalog-manifest-v3.js +0 -3
  506. package/dist/src/utils/catalog-manifest-v3.js.map +0 -1
  507. package/dist/src/utils/catalog-manifest-v4.d.ts +0 -5
  508. package/dist/src/utils/catalog-manifest-v4.js.map +0 -1
  509. package/dist/src/utils/catalog-source-cache.d.ts +0 -61
  510. package/dist/src/utils/catalog-source-cache.js +0 -276
  511. package/dist/src/utils/catalog-source-cache.js.map +0 -1
  512. package/dist/src/utils/codex-project-surface.d.ts +0 -3
  513. package/dist/src/utils/codex-project-surface.js +0 -49
  514. package/dist/src/utils/codex-project-surface.js.map +0 -1
  515. package/dist/src/utils/lifecycle-active-store.d.ts +0 -175
  516. package/dist/src/utils/lifecycle-active-store.js +0 -1276
  517. package/dist/src/utils/lifecycle-active-store.js.map +0 -1
  518. package/dist/src/utils/plugin-authoring-capabilities.d.ts +0 -23
  519. package/dist/src/utils/plugin-authoring-capabilities.js +0 -37
  520. package/dist/src/utils/plugin-authoring-capabilities.js.map +0 -1
  521. package/dist/src/utils/plugin-authoring-capabilities.json +0 -92
  522. package/dist/src/utils/plugin-release.d.ts +0 -2
  523. package/dist/src/utils/plugin-release.js +0 -2
  524. package/dist/src/utils/plugin-release.js.map +0 -1
  525. package/dist/src/utils/skill-frontmatter-capabilities.d.ts +0 -201
  526. package/dist/src/utils/skill-frontmatter-capabilities.js +0 -5
  527. package/dist/src/utils/skill-frontmatter-capabilities.js.map +0 -1
  528. package/dist/src/utils/skill-frontmatter-capabilities.json +0 -200
  529. /package/dist/authoring/scripts/{check-plugin-versions.d.mts → remove-plugin.d.mts} +0 -0
@@ -11,7 +11,8 @@ import { calculateFileDigest } from '../utils/bundle-integrity.js';
11
11
  import { resolveCanonicalRuntimeSourceIdentity } from '../utils/catalog-runtime-projection.js';
12
12
  import { getArtifactSourceBundleRelativePath } from '../utils/artifact-sources.js';
13
13
  import { resolvePlatformHookDefinitions } from '../utils/hooks-contract.js';
14
- import { assertManifestPlatformSupport, assertPluginInputTree, createBundleSourceManifest, createPlatformManifestBase, isIgnoredPluginInputDirectory, normalizePluginRelativePath, readPluginManifest, } from '../utils/manifest.js';
14
+ import { assertManifestPlatformSupport, assertPluginInputTree, checkAwCapabilitySupport, computeAwCapabilitySetDigest, createAwPluginRequirementsReceipt, createBundleSourceManifest, createPlatformManifestBase, isIgnoredPluginInputDirectory, normalizePluginRelativePath, normalizeAwCapabilities, readPluginManifest, resolvePluginRequirements, } from '../utils/manifest.js';
15
+ import { AwCapabilityUnsupportedError, IMPLEMENTED_AW_CAPABILITIES, } from '../commands/aw-capabilities.js';
15
16
  import { writeJsonFile } from '../utils/json.js';
16
17
  import { resolveSupportedPlatforms } from '../utils/platform-support.js';
17
18
  import { renderTemplate } from '../utils/template-engine.js';
@@ -21,7 +22,7 @@ import { isSkillAuthorOnlyPath, isSkillCollectionAuthorOnlyPath, } from '../util
21
22
  import { assertTestWritablePath } from '../utils/test-path-fence.js';
22
23
  import { resolveCliPackageRoot } from '../utils/paths.js';
23
24
  import { validateRuntimeSkillClosuresRoot, validateSkillRuntimeProjectionFreshness, } from '../utils/runtime-skill-closure.js';
24
- import { validatePortableSkillDirectoriesRoot } from '../utils/dynamic-skill-tree.js';
25
+ import { AW_PLUGIN_REQUIREMENTS_RECEIPT_PATH, validatePortableSkillDirectoriesRoot, } from '../utils/dynamic-skill-tree.js';
25
26
  import { renderClaudeSlashCommand, renderCodexSlashCommandOpenAiYaml, renderCodexSlashCommandSkillMarkdown, resolveSlashCommands, } from '../utils/slash-commands.js';
26
27
  const execFileAsync = promisify(execFile);
27
28
  const requireFromCli = createRequire(import.meta.url);
@@ -98,34 +99,36 @@ async function resolveRuntimePnpmEntry(supportedPackageManager) {
98
99
  const stats = await fs.stat(entryPath).catch(() => undefined);
99
100
  return stats?.isFile() ? entryPath : undefined;
100
101
  }
101
- const defaultStagingRunner = {
102
- async installPackageRoot(packageRoot) {
103
- const supportedPackageManager = await validateStagingPackageManager(packageRoot);
104
- const fixedPnpmEntry = await resolveFixedPnpmEntry(supportedPackageManager, process.env)
105
- ?? await resolveRuntimePnpmEntry(supportedPackageManager);
106
- if (!fixedPnpmEntry) {
107
- throw new Error(`Cannot stage scripts.node.packageRoot: missing bundled ${supportedPackageManager} runtime dependency.`);
108
- }
109
- const args = [
110
- fixedPnpmEntry,
111
- 'install',
112
- '--frozen-lockfile',
113
- '--ignore-scripts',
114
- ];
115
- await execFileAsync(process.execPath, args, {
116
- cwd: packageRoot,
117
- env: process.env,
118
- maxBuffer: 10 * 1024 * 1024,
119
- });
120
- },
121
- async runNodeBuild({ pluginRoot, scriptPath, args, env }) {
122
- await execFileAsync(process.execPath, [path.join(pluginRoot, stripDotSlash(scriptPath)), ...args], {
123
- cwd: pluginRoot,
124
- env,
125
- maxBuffer: 10 * 1024 * 1024,
126
- });
127
- },
128
- };
102
+ function createDefaultStagingRunner(commandEnv) {
103
+ return {
104
+ async installPackageRoot(packageRoot) {
105
+ const supportedPackageManager = await validateStagingPackageManager(packageRoot);
106
+ const fixedPnpmEntry = await resolveFixedPnpmEntry(supportedPackageManager, commandEnv)
107
+ ?? await resolveRuntimePnpmEntry(supportedPackageManager);
108
+ if (!fixedPnpmEntry) {
109
+ throw new Error(`Cannot stage scripts.node.packageRoot: missing bundled ${supportedPackageManager} runtime dependency.`);
110
+ }
111
+ const args = [
112
+ fixedPnpmEntry,
113
+ 'install',
114
+ '--frozen-lockfile',
115
+ '--ignore-scripts',
116
+ ];
117
+ await execFileAsync(process.execPath, args, {
118
+ cwd: packageRoot,
119
+ env: commandEnv,
120
+ maxBuffer: 10 * 1024 * 1024,
121
+ });
122
+ },
123
+ async runNodeBuild({ pluginRoot, scriptPath, args, env }) {
124
+ await execFileAsync(process.execPath, [path.join(pluginRoot, stripDotSlash(scriptPath)), ...args], {
125
+ cwd: pluginRoot,
126
+ env,
127
+ maxBuffer: 10 * 1024 * 1024,
128
+ });
129
+ },
130
+ };
131
+ }
129
132
  function stripDotSlash(value) {
130
133
  return value.startsWith('./') ? value.slice(2) : value;
131
134
  }
@@ -239,6 +242,9 @@ async function assertArtifactSourceTreePortable(rootDir, fieldName, relativeRoot
239
242
  continue;
240
243
  if (isMacOsMetadataName(entry.name))
241
244
  continue;
245
+ if (relativePath === AW_PLUGIN_REQUIREMENTS_RECEIPT_PATH) {
246
+ throw new Error(`Invalid ${fieldName}: source root cannot declare reserved file ${AW_PLUGIN_REQUIREMENTS_RECEIPT_PATH}.`);
247
+ }
242
248
  const entryPath = path.join(rootDir, entry.name);
243
249
  if (entry.isSymbolicLink()) {
244
250
  throw new Error(`Invalid ${fieldName}: symbolic links are not supported (${entry.name}).`);
@@ -289,6 +295,8 @@ async function copyPortableStaticSkills(plugin, outputRoot) {
289
295
  }
290
296
  async function resolveArtifactRuntimeImports(options) {
291
297
  const manifest = createBundleSourceManifest(options.plugin);
298
+ const requiredCapabilities = [];
299
+ const projections = [];
292
300
  for (const [targetIndex, target] of (manifest.artifacts?.targets ?? []).entries()) {
293
301
  for (const [importIndex, runtimeImport] of (target.runtimeImports ?? []).entries()) {
294
302
  if (!options.resolver) {
@@ -299,27 +307,64 @@ async function resolveArtifactRuntimeImports(options) {
299
307
  reference: runtimeImport,
300
308
  purpose: 'artifact-runtime',
301
309
  });
310
+ requiredCapabilities.push(...resolution.requiredCapabilities);
302
311
  const relativePath = `./.agents-plugin/runtime-imports/${target.id}/${runtimeImport.name}`;
303
312
  const targetPath = path.join(options.outputRoot, stripDotSlash(relativePath));
304
- await fs.ensureDir(path.dirname(targetPath));
305
- await fs.copyFile(resolution.sourcePath, targetPath);
306
- const digest = await calculateFileDigest(targetPath);
307
- if (digest !== resolution.sourceDigest) {
308
- throw new Error(`Artifact runtime import digest mismatch at "${target.id}/${runtimeImport.name}".`);
309
- }
313
+ const digest = resolution.sourceDigest;
314
+ projections.push({
315
+ sourcePath: resolution.sourcePath,
316
+ targetPath,
317
+ sourceDigest: resolution.sourceDigest,
318
+ label: `${target.id}/${runtimeImport.name}`,
319
+ });
310
320
  runtimeImport.resolved = {
311
321
  path: relativePath,
312
322
  digest,
313
323
  providerPluginId: resolution.provider,
314
324
  providerVersion: resolution.providerVersion,
315
325
  source: resolution.source,
326
+ requiredCapabilities: resolution.requiredCapabilities,
327
+ capabilitySetDigest: resolution.capabilitySetDigest,
316
328
  };
317
329
  }
318
330
  }
319
331
  if (manifest.distributions?.agentSkills?.skills) {
320
332
  manifest.distributions.agentSkills.skills = './agent-skills/skills';
321
333
  }
322
- return manifest;
334
+ return {
335
+ manifest,
336
+ requiredCapabilities: normalizeAwCapabilities(requiredCapabilities),
337
+ projections,
338
+ };
339
+ }
340
+ async function materializeArtifactRuntimeImports(projections) {
341
+ for (const projection of projections) {
342
+ await fs.ensureDir(path.dirname(projection.targetPath));
343
+ await fs.copyFile(projection.sourcePath, projection.targetPath);
344
+ if (await calculateFileDigest(projection.targetPath) !== projection.sourceDigest) {
345
+ throw new Error(`Artifact runtime import digest mismatch at "${projection.label}".`);
346
+ }
347
+ }
348
+ }
349
+ async function injectRequirementsReceipts(options) {
350
+ const receipt = createAwPluginRequirementsReceipt({ name: options.plugin.manifest.name, version: options.plugin.manifest.version }, options.requiredCapabilities);
351
+ for (const relativeRoot of ['claude/skills', 'codex/skills', 'agent-skills/skills']) {
352
+ const skillsRoot = path.join(options.outputRoot, relativeRoot);
353
+ if (!(await fs.pathExists(skillsRoot)))
354
+ continue;
355
+ for (const entry of await fs.readdir(skillsRoot, { withFileTypes: true })) {
356
+ if (!entry.isDirectory() || entry.isSymbolicLink())
357
+ continue;
358
+ const skillRoot = path.join(skillsRoot, entry.name);
359
+ if (!(await fs.pathExists(path.join(skillRoot, 'SKILL.md'))))
360
+ continue;
361
+ const receiptPath = path.join(skillRoot, 'aw-plugin-requirements.json');
362
+ if (await fs.pathExists(receiptPath)) {
363
+ throw new Error(`Reserved runtime requirements receipt conflicts with source content: ${receiptPath}`);
364
+ }
365
+ await writeJsonFile(receiptPath, receipt);
366
+ }
367
+ }
323
368
  }
324
369
  async function copySlashCommandAsset(pluginRoot, outputRoot, skillName, sourceRelativePath, generatedRelativePath) {
325
370
  const sourcePath = path.join(pluginRoot, sourceRelativePath);
@@ -433,30 +478,13 @@ async function addDeclaredLspServerFiles(plugin, value, targetFiles) {
433
478
  }
434
479
  return value;
435
480
  }
436
- function isNodeRuntimeEntry(entry) {
437
- return entry.runner === 'node' || (entry.runner === 'auto' &&
438
- NODE_RUNTIME_EXTENSIONS.has(path.posix.extname(entry.path).toLowerCase()));
439
- }
440
- function addLifecycleRuntimeEntries(plugin, rootFiles, nodeEntries) {
441
- const lifecycle = plugin.manifest.scripts?.lifecycle;
442
- if (!lifecycle) {
481
+ function addPreApplyRuntimeEntry(plugin, rootFiles, nodeEntries) {
482
+ const entry = plugin.manifest.scripts?.preApply;
483
+ if (!entry)
443
484
  return;
444
- }
445
- for (const selector of Object.values(lifecycle)) {
446
- if (!selector) {
447
- continue;
448
- }
449
- for (const entry of Object.values(selector)) {
450
- if (!entry) {
451
- continue;
452
- }
453
- const filePath = stripDotSlash(entry.path);
454
- rootFiles.add(filePath);
455
- if (isNodeRuntimeEntry(entry)) {
456
- nodeEntries.add(filePath);
457
- }
458
- }
459
- }
485
+ const filePath = stripDotSlash(entry.path);
486
+ rootFiles.add(filePath);
487
+ nodeEntries.add(filePath);
460
488
  }
461
489
  function addHelperRuntimeEntries(plugin, rootFiles, nodeEntries) {
462
490
  const configHelper = plugin.manifest.scripts?.helpers?.config;
@@ -529,12 +557,22 @@ async function collectRuntimeClosureFiles(plugin, entryFiles) {
529
557
  async function collectAwRuntimeFiles(plugin) {
530
558
  const rootFiles = new Set();
531
559
  const nodeEntries = new Set();
532
- addLifecycleRuntimeEntries(plugin, rootFiles, nodeEntries);
560
+ addPreApplyRuntimeEntry(plugin, rootFiles, nodeEntries);
533
561
  addHelperRuntimeEntries(plugin, rootFiles, nodeEntries);
534
562
  addArtifactRendererRuntimeEntry(plugin, rootFiles, nodeEntries);
535
- for (const filePath of await collectRuntimeClosureFiles(plugin, [...nodeEntries])) {
563
+ const closureFiles = await collectRuntimeClosureFiles(plugin, [...nodeEntries]);
564
+ for (const filePath of closureFiles) {
536
565
  rootFiles.add(filePath);
537
566
  }
567
+ const configHelper = plugin.manifest.scripts?.helpers?.config;
568
+ if (configHelper) {
569
+ const helperDir = path.posix.dirname(stripDotSlash(configHelper));
570
+ const re2RuntimeRoot = path.posix.join(helperDir, 're2-wasm');
571
+ if (closureFiles.includes(path.posix.join(re2RuntimeRoot, 'build/src/re2.js'))) {
572
+ rootFiles.add(path.posix.join(re2RuntimeRoot, 'build/wasm/re2.wasm'));
573
+ rootFiles.add(path.posix.join(re2RuntimeRoot, 'LICENSE'));
574
+ }
575
+ }
538
576
  return [...rootFiles].sort();
539
577
  }
540
578
  function packageRootPath(plugin) {
@@ -718,6 +756,8 @@ function toRuntimeImportProvenance(resolution) {
718
756
  name: resolution.name,
719
757
  source: resolution.source,
720
758
  sourceDigest: resolution.sourceDigest,
759
+ requiredCapabilities: resolution.requiredCapabilities,
760
+ capabilitySetDigest: resolution.capabilitySetDigest,
721
761
  };
722
762
  }
723
763
  async function resolveOwnSkillRuntimeSource(plugin, source) {
@@ -823,6 +863,8 @@ async function projectSkillRuntimeFiles(options) {
823
863
  name: entry.source,
824
864
  source: entry.source,
825
865
  sourceDigest,
866
+ requiredCapabilities: [],
867
+ capabilitySetDigest: computeAwCapabilitySetDigest([]),
826
868
  };
827
869
  }
828
870
  else {
@@ -842,31 +884,37 @@ async function projectSkillRuntimeFiles(options) {
842
884
  runtimeProvenance = toRuntimeImportProvenance(resolution);
843
885
  }
844
886
  const targetPath = path.join(options.outputRoot, platform ?? distribution, 'skills', entry.skill, ...entry.target.split('/'));
845
- if (await fs.pathExists(targetPath)) {
846
- throw new Error(`Invalid buildConfig.skillRuntimeFiles: bundle target already exists at "${claim}".`);
847
- }
848
- await fs.ensureDir(path.dirname(targetPath));
849
- await fs.copyFile(sourcePath, targetPath);
850
- const targetDigest = await calculateFileDigest(targetPath);
851
- if (sourceDigest !== targetDigest) {
852
- throw new Error(`Invalid buildConfig.skillRuntimeFiles: digest mismatch at "${claim}".`);
853
- }
854
887
  projections.push({
855
888
  bindingKey,
856
889
  canonicalSource,
890
+ sourcePath,
891
+ targetPath,
857
892
  provenance: {
858
893
  ...runtimeProvenance,
859
894
  platform,
860
895
  distribution,
861
896
  skill: entry.skill,
862
897
  target: entry.target,
863
- targetDigest,
898
+ targetDigest: sourceDigest,
864
899
  },
865
900
  });
866
901
  }
867
902
  }
868
903
  return projections;
869
904
  }
905
+ async function materializeSkillRuntimeFiles(projections) {
906
+ for (const projection of projections) {
907
+ if (await fs.pathExists(projection.targetPath)) {
908
+ const surface = projection.provenance.platform ?? projection.provenance.distribution;
909
+ throw new Error(`Invalid buildConfig.skillRuntimeFiles: bundle target already exists at "${surface}:${projection.provenance.skill}/${projection.provenance.target}".`);
910
+ }
911
+ await fs.ensureDir(path.dirname(projection.targetPath));
912
+ await fs.copyFile(projection.sourcePath, projection.targetPath);
913
+ if (await calculateFileDigest(projection.targetPath) !== projection.provenance.sourceDigest) {
914
+ throw new Error(`Canonical source "${projection.provenance.source}" changed during runtime Skill projection.`);
915
+ }
916
+ }
917
+ }
870
918
  function hasSameCanonicalSource(left, right) {
871
919
  return left.rootPath === right.rootPath
872
920
  && left.rootRealPath === right.rootRealPath
@@ -883,6 +931,9 @@ async function validateSkillRuntimeProjectionSources(projections) {
883
931
  || existing.provenance.name !== projection.provenance.name
884
932
  || existing.provenance.source !== projection.provenance.source
885
933
  || existing.provenance.sourceDigest !== projection.provenance.sourceDigest
934
+ || existing.provenance.capabilitySetDigest !== projection.provenance.capabilitySetDigest
935
+ || JSON.stringify(existing.provenance.requiredCapabilities)
936
+ !== JSON.stringify(projection.provenance.requiredCapabilities)
886
937
  || !hasSameCanonicalSource(existing.canonicalSource, projection.canonicalSource))) {
887
938
  throw new Error(`Canonical source "${projection.provenance.source}" changed during runtime Skill projection.`);
888
939
  }
@@ -912,6 +963,9 @@ async function validateBuildImportProjectionSources(projections) {
912
963
  || existing.provenance.name !== projection.provenance.name
913
964
  || existing.provenance.source !== projection.provenance.source
914
965
  || existing.provenance.sourceDigest !== projection.provenance.sourceDigest
966
+ || existing.provenance.capabilitySetDigest !== projection.provenance.capabilitySetDigest
967
+ || JSON.stringify(existing.provenance.requiredCapabilities)
968
+ !== JSON.stringify(projection.provenance.requiredCapabilities)
915
969
  || !hasSameCanonicalSource(existing.canonicalSource, projection.canonicalSource))) {
916
970
  throw new Error(`Catalog runtime import "${projection.provenance.provider}/${projection.provenance.name}" changed during build import projection.`);
917
971
  }
@@ -930,7 +984,7 @@ async function validateBuildImportProjectionSources(projections) {
930
984
  }
931
985
  }
932
986
  }
933
- async function createStagedPlugin(plugin, runner, resolver) {
987
+ async function createStagedPlugin(plugin, runner, resolver, commandEnv = process.env) {
934
988
  const stagingRoot = await fs.mkdtemp(assertLocalPluginStagingPathForTests(path.join(os.tmpdir(), 'aw-plugin-staging-'), 'local plugin bundle staging root'));
935
989
  const stagingPluginRoot = assertLocalPluginStagingPathForTests(path.join(stagingRoot, 'plugin'), 'local plugin staged plugin root');
936
990
  try {
@@ -945,14 +999,14 @@ async function createStagedPlugin(plugin, runner, resolver) {
945
999
  if (declaredBuildImports.length > 0 && !sourceBuild) {
946
1000
  throw new Error(`Invalid plugin "${plugin.manifest.name}": buildConfig.buildImports requires scripts.node.build.`);
947
1001
  }
948
- const buildEnv = { ...process.env };
1002
+ const buildEnv = { ...commandEnv };
949
1003
  const buildImportProvenance = [];
950
1004
  const buildImportProjections = [];
951
1005
  for (const buildImport of declaredBuildImports) {
952
1006
  if (!resolver) {
953
1007
  throw new Error(`Cannot resolve buildConfig.buildImports for plugin "${plugin.manifest.name}": catalog runtime import resolver is required.`);
954
1008
  }
955
- if (Object.hasOwn(process.env, buildImport.env)) {
1009
+ if (Object.hasOwn(commandEnv, buildImport.env)) {
956
1010
  throw new Error(`Invalid buildConfig.buildImports env "${buildImport.env}": refusing to overwrite an existing environment variable.`);
957
1011
  }
958
1012
  const resolution = await resolver.resolve({
@@ -1044,34 +1098,119 @@ async function resolveBuildPlugin(plugin, options) {
1044
1098
  cleanup: async () => { },
1045
1099
  };
1046
1100
  }
1047
- return createStagedPlugin(plugin, options.stagingRunner, options.runtimeResolver);
1101
+ return createStagedPlugin(plugin, options.stagingRunner, options.runtimeResolver, options.commandEnv);
1048
1102
  }
1049
1103
  export async function prepareLocalPluginBundleSource(plugin, options = {}) {
1050
1104
  await assertPluginInputTree(plugin.rootDir);
1051
1105
  const buildOptions = {
1052
1106
  buildMode: options.buildMode ?? 'staging',
1053
- stagingRunner: options.stagingRunner ?? defaultStagingRunner,
1107
+ stagingRunner: options.stagingRunner
1108
+ ?? createDefaultStagingRunner(options.commandEnv ?? process.env),
1109
+ commandEnv: options.commandEnv,
1054
1110
  runtimeResolver: options.runtimeResolver,
1055
1111
  preparedRuntimeContext: undefined,
1056
1112
  };
1057
1113
  return resolveBuildPlugin(plugin, buildOptions);
1058
1114
  }
1115
+ function assertPluginRequirementsSupported(pluginName, requirements, strictRequirements = false) {
1116
+ if (requirements.unsupportedByCurrentAw.length > 0) {
1117
+ throw new AwCapabilityUnsupportedError(pluginName, requirements.unsupportedByCurrentAw);
1118
+ }
1119
+ if (!strictRequirements)
1120
+ return;
1121
+ const satisfied = new Set([...requirements.declared, ...requirements.derived]);
1122
+ const strictObservations = requirements.observations.filter((observation) => (observation.code !== 'aw-command-detected'
1123
+ || observation.capability === undefined
1124
+ || !satisfied.has(observation.capability)));
1125
+ if (strictObservations.length > 0) {
1126
+ const error = new Error(`Official strict requirements failed: ${strictObservations.map((observation) => (`plugin=${JSON.stringify(pluginName)} path=${JSON.stringify(observation.path)} `
1127
+ + `command=${JSON.stringify(observation.command ?? '<dynamic>')} `
1128
+ + `capability=${JSON.stringify(observation.capability ?? (observation.code === 'aw-command-dynamic' ? '<dynamic>' : '<unmapped>'))}`)).join('; ')}`);
1129
+ error.code = 'awCapabilityStrictRequirements';
1130
+ error.observations = strictObservations;
1131
+ throw error;
1132
+ }
1133
+ }
1134
+ function assertRequiredCapabilitiesSupported(pluginName, requiredCapabilities) {
1135
+ const support = checkAwCapabilitySupport(requiredCapabilities, IMPLEMENTED_AW_CAPABILITIES);
1136
+ if (!support.supported) {
1137
+ throw new AwCapabilityUnsupportedError(pluginName, support.missing);
1138
+ }
1139
+ }
1059
1140
  export async function bundleLocalPlugin(plugin, outputRoot, options = {}) {
1141
+ const historicalComparison = options.runtimeSkillClosureValidation === 'historical';
1060
1142
  const buildOptions = {
1061
1143
  buildMode: options.buildMode ?? 'build-free',
1062
- stagingRunner: options.stagingRunner ?? defaultStagingRunner,
1144
+ stagingRunner: options.stagingRunner
1145
+ ?? createDefaultStagingRunner(options.commandEnv ?? process.env),
1146
+ commandEnv: options.commandEnv,
1063
1147
  runtimeResolver: options.runtimeResolver,
1064
1148
  preparedRuntimeContext: options.preparedRuntimeContext,
1065
1149
  };
1066
1150
  await assertPluginInputTree(plugin.rootDir);
1151
+ const sourceRequirements = await resolvePluginRequirements({
1152
+ pluginRoot: plugin.rootDir,
1153
+ manifest: plugin.manifest,
1154
+ implementedCapabilities: IMPLEMENTED_AW_CAPABILITIES,
1155
+ });
1156
+ if (!historicalComparison) {
1157
+ assertPluginRequirementsSupported(plugin.manifest.name, sourceRequirements, options.strictRequirements ?? false);
1158
+ }
1067
1159
  await fs.remove(outputRoot);
1068
1160
  const buildPlugin = await resolveBuildPlugin(plugin, buildOptions);
1069
1161
  try {
1070
1162
  plugin = buildPlugin.plugin;
1163
+ const requirements = await resolvePluginRequirements({
1164
+ pluginRoot: plugin.rootDir,
1165
+ manifest: plugin.manifest,
1166
+ implementedCapabilities: IMPLEMENTED_AW_CAPABILITIES,
1167
+ });
1168
+ if (!historicalComparison) {
1169
+ assertPluginRequirementsSupported(plugin.manifest.name, requirements, options.strictRequirements ?? false);
1170
+ }
1071
1171
  assertManifestPlatformSupport(plugin.manifest.name, plugin.manifest);
1072
- await fs.ensureDir(outputRoot);
1073
1172
  const supportedPlatforms = resolveSupportedPlatforms(plugin.manifest);
1074
1173
  await assertSkillRuntimeProjectionTargets(plugin);
1174
+ const skillRuntimeFileProjections = await projectSkillRuntimeFiles({
1175
+ plugin,
1176
+ outputRoot,
1177
+ supportedPlatforms,
1178
+ resolver: buildPlugin.runtimeContext.resolver,
1179
+ });
1180
+ const skillRuntimeFiles = skillRuntimeFileProjections.map(({ provenance }) => provenance);
1181
+ const portableRuntimeFiles = skillRuntimeFiles
1182
+ .filter((entry) => entry.distribution === 'agent-skills')
1183
+ .map((entry) => ({
1184
+ skill: entry.skill,
1185
+ target: entry.target,
1186
+ path: `./agent-skills/skills/${entry.skill}/${entry.target}`,
1187
+ digest: entry.targetDigest,
1188
+ provider: entry.provider,
1189
+ providerVersion: entry.providerVersion,
1190
+ exportName: entry.name,
1191
+ source: entry.source,
1192
+ sourceDigest: entry.sourceDigest,
1193
+ requiredCapabilities: entry.requiredCapabilities,
1194
+ capabilitySetDigest: entry.capabilitySetDigest,
1195
+ }));
1196
+ const artifactRuntimeProjection = await resolveArtifactRuntimeImports({
1197
+ plugin,
1198
+ outputRoot,
1199
+ resolver: buildPlugin.runtimeContext.resolver,
1200
+ });
1201
+ const finalEffective = normalizeAwCapabilities([
1202
+ ...requirements.effective,
1203
+ ...skillRuntimeFiles.flatMap((entry) => entry.requiredCapabilities),
1204
+ ...artifactRuntimeProjection.requiredCapabilities,
1205
+ ]);
1206
+ if (!historicalComparison) {
1207
+ assertRequiredCapabilitiesSupported(plugin.manifest.name, finalEffective);
1208
+ }
1209
+ artifactRuntimeProjection.manifest.requires = {
1210
+ aw: { capabilities: finalEffective },
1211
+ };
1212
+ const bundleManifest = artifactRuntimeProjection.manifest;
1213
+ await fs.ensureDir(outputRoot);
1075
1214
  const platformFiles = {};
1076
1215
  const platformManifests = {};
1077
1216
  const buildConfig = plugin.manifest.buildConfig;
@@ -1186,26 +1325,7 @@ export async function bundleLocalPlugin(plugin, outputRoot, options = {}) {
1186
1325
  }
1187
1326
  }
1188
1327
  }
1189
- const skillRuntimeFileProjections = await projectSkillRuntimeFiles({
1190
- plugin,
1191
- outputRoot,
1192
- supportedPlatforms,
1193
- resolver: buildPlugin.runtimeContext.resolver,
1194
- });
1195
- const skillRuntimeFiles = skillRuntimeFileProjections.map(({ provenance }) => provenance);
1196
- const portableRuntimeFiles = skillRuntimeFiles
1197
- .filter((entry) => entry.distribution === 'agent-skills')
1198
- .map((entry) => ({
1199
- skill: entry.skill,
1200
- target: entry.target,
1201
- path: `./agent-skills/skills/${entry.skill}/${entry.target}`,
1202
- digest: entry.targetDigest,
1203
- provider: entry.provider,
1204
- providerVersion: entry.providerVersion,
1205
- exportName: entry.name,
1206
- source: entry.source,
1207
- sourceDigest: entry.sourceDigest,
1208
- }));
1328
+ await materializeSkillRuntimeFiles(skillRuntimeFileProjections);
1209
1329
  await copyPortableStaticSkills(plugin, outputRoot);
1210
1330
  if (await fs.pathExists(path.join(plugin.rootDir, 'README.md'))) {
1211
1331
  await copyBundleRootFile(plugin.rootDir, outputRoot, 'README.md');
@@ -1215,11 +1335,7 @@ export async function bundleLocalPlugin(plugin, outputRoot, options = {}) {
1215
1335
  }
1216
1336
  await copyArtifactSourceDirectories(plugin, outputRoot);
1217
1337
  await copyProductionPackageRoot(plugin, outputRoot);
1218
- const bundleManifest = await resolveArtifactRuntimeImports({
1219
- plugin,
1220
- outputRoot,
1221
- resolver: buildPlugin.runtimeContext.resolver,
1222
- });
1338
+ await materializeArtifactRuntimeImports(artifactRuntimeProjection.projections);
1223
1339
  await writeJsonFile(path.join(outputRoot, '.agents-plugin', 'plugin.json'), bundleManifest);
1224
1340
  if (portableRuntimeFiles.length > 0) {
1225
1341
  await writeJsonFile(path.join(outputRoot, '.agents-plugin', 'portable-runtime-files.json'), portableRuntimeFiles);
@@ -1231,6 +1347,11 @@ export async function bundleLocalPlugin(plugin, outputRoot, options = {}) {
1231
1347
  }
1232
1348
  await writeJsonFile(path.join(outputRoot, PLATFORM_MANIFEST_DIRS[platform], 'plugin.json'), manifest);
1233
1349
  }
1350
+ await injectRequirementsReceipts({
1351
+ outputRoot,
1352
+ plugin,
1353
+ requiredCapabilities: finalEffective,
1354
+ });
1234
1355
  await validateSkillRuntimeProjectionSources(skillRuntimeFileProjections);
1235
1356
  await validateSkillRuntimeProjectionFreshness(outputRoot, skillRuntimeFiles.filter((entry) => entry.platform !== undefined));
1236
1357
  await validateGeneratedSkillRuntimeFiles(plugin, outputRoot, supportedPlatforms);