@lesliechan721/aw 0.1.0-beta.4 → 0.1.0-beta.40

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