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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (621) hide show
  1. package/dist/authoring/assets/aw-config.mjs +100 -501
  2. package/dist/authoring/assets/aw-config.mjs.map +1 -1
  3. package/dist/authoring/assets/aw-runtime-config.d.mts +13 -0
  4. package/dist/authoring/assets/aw-runtime-config.mjs +199 -0
  5. package/dist/authoring/assets/aw-runtime-config.mjs.map +1 -0
  6. package/dist/authoring/scripts/add-skill.mjs +4 -4
  7. package/dist/authoring/scripts/add-skill.mjs.map +1 -1
  8. package/dist/authoring/scripts/init-plugin.mjs +67 -97
  9. package/dist/authoring/scripts/init-plugin.mjs.map +1 -1
  10. package/dist/authoring/scripts/lib/plugin-root.mjs +4 -4
  11. package/dist/authoring/scripts/lib/plugin-root.mjs.map +1 -1
  12. package/dist/authoring/scripts/lib/plugin-version-check.d.mts +1 -0
  13. package/dist/authoring/scripts/lib/plugin-version-check.mjs +229 -8
  14. package/dist/authoring/scripts/lib/plugin-version-check.mjs.map +1 -1
  15. package/dist/authoring/scripts/lib/skill-scaffold.d.mts +77 -92
  16. package/dist/authoring/scripts/lib/skill-scaffold.mjs +99 -124
  17. package/dist/authoring/scripts/lib/skill-scaffold.mjs.map +1 -1
  18. package/dist/authoring/scripts/plugin-status.mjs +8 -11
  19. package/dist/authoring/scripts/plugin-status.mjs.map +1 -1
  20. package/dist/authoring/scripts/remove-plugin.mjs +3 -2
  21. package/dist/authoring/scripts/remove-plugin.mjs.map +1 -1
  22. package/dist/authoring/scripts/validate-plugin.mjs +552 -1142
  23. package/dist/authoring/scripts/validate-plugin.mjs.map +1 -1
  24. package/dist/native-runtime/reader-runtime.mjs +34 -0
  25. package/dist/native-runtime/reader.d.mts +6 -0
  26. package/dist/native-runtime/reader.mjs +11 -0
  27. package/dist/scripts/aw-skill-eval-materializer.d.ts +26 -0
  28. package/dist/scripts/aw-skill-eval-materializer.js +306 -0
  29. package/dist/scripts/aw-skill-eval-materializer.js.map +1 -0
  30. package/dist/scripts/bundle-plugins.d.ts +1 -0
  31. package/dist/scripts/bundle-plugins.js +19 -8
  32. package/dist/scripts/bundle-plugins.js.map +1 -1
  33. package/dist/scripts/plugin-staging.d.ts +7 -9
  34. package/dist/scripts/plugin-staging.js +18 -29
  35. package/dist/scripts/plugin-staging.js.map +1 -1
  36. package/dist/scripts/plugin-test-reporter.d.mts +2 -0
  37. package/dist/scripts/plugin-test-reporter.mjs +21 -0
  38. package/dist/scripts/plugin-test-reporter.mjs.map +1 -0
  39. package/dist/scripts/test-plugin-scripts.d.ts +5 -0
  40. package/dist/scripts/test-plugin-scripts.js +208 -89
  41. package/dist/scripts/test-plugin-scripts.js.map +1 -1
  42. package/dist/scripts/test-workers.d.mts +24 -0
  43. package/dist/scripts/test-workers.mjs +59 -0
  44. package/dist/scripts/test-workers.mjs.map +1 -0
  45. package/dist/src/adapters/helpers.d.ts +7 -0
  46. package/dist/src/adapters/helpers.js +2 -2
  47. package/dist/src/adapters/helpers.js.map +1 -1
  48. package/dist/src/authoring/workspace-commands.d.ts +19 -1
  49. package/dist/src/authoring/workspace-commands.js +24 -5
  50. package/dist/src/authoring/workspace-commands.js.map +1 -1
  51. package/dist/src/commands/aw-capabilities.d.ts +78 -0
  52. package/dist/src/commands/aw-capabilities.js +266 -0
  53. package/dist/src/commands/aw-capabilities.js.map +1 -0
  54. package/dist/src/commands/catalog-dev-source.d.ts +154 -0
  55. package/dist/src/commands/catalog-dev-source.js +655 -0
  56. package/dist/src/commands/catalog-dev-source.js.map +1 -0
  57. package/dist/src/commands/catalog-generation.d.ts +21 -0
  58. package/dist/src/commands/catalog-generation.js +9 -0
  59. package/dist/src/commands/catalog-generation.js.map +1 -0
  60. package/dist/src/commands/catalog-publication-inspection.d.ts +71 -30
  61. package/dist/src/commands/catalog-publication-inspection.js +475 -63
  62. package/dist/src/commands/catalog-publication-inspection.js.map +1 -1
  63. package/dist/src/commands/catalog-publication-journal.d.ts +68 -0
  64. package/dist/src/commands/catalog-publication-journal.js +292 -0
  65. package/dist/src/commands/catalog-publication-journal.js.map +1 -0
  66. package/dist/src/commands/catalog-publication-target.d.ts +18 -0
  67. package/dist/src/commands/catalog-publication-target.js +95 -0
  68. package/dist/src/commands/catalog-publication-target.js.map +1 -0
  69. package/dist/src/commands/catalog-publish.d.ts +73 -15
  70. package/dist/src/commands/catalog-publish.js +701 -212
  71. package/dist/src/commands/catalog-publish.js.map +1 -1
  72. package/dist/src/commands/catalog-source.d.ts +60 -22
  73. package/dist/src/commands/catalog-source.js +311 -91
  74. package/dist/src/commands/catalog-source.js.map +1 -1
  75. package/dist/src/commands/catalog-status.d.ts +18 -22
  76. package/dist/src/commands/catalog-status.js +81 -115
  77. package/dist/src/commands/catalog-status.js.map +1 -1
  78. package/dist/src/commands/catalog-store.d.ts +104 -0
  79. package/dist/src/commands/catalog-store.js +685 -0
  80. package/dist/src/commands/catalog-store.js.map +1 -0
  81. package/dist/src/commands/catalog-workspace-resolution.d.ts +13 -0
  82. package/dist/src/commands/catalog-workspace-resolution.js +42 -0
  83. package/dist/src/commands/catalog-workspace-resolution.js.map +1 -0
  84. package/dist/src/commands/console.js +28 -17
  85. package/dist/src/commands/console.js.map +1 -1
  86. package/dist/src/commands/dependency-operation-plan.d.ts +52 -15
  87. package/dist/src/commands/dependency-operation-plan.js +289 -7
  88. package/dist/src/commands/dependency-operation-plan.js.map +1 -1
  89. package/dist/src/commands/init.d.ts +5 -11
  90. package/dist/src/commands/init.js +30 -51
  91. package/dist/src/commands/init.js.map +1 -1
  92. package/dist/src/commands/managed-commands.d.ts +28 -0
  93. package/dist/src/commands/managed-commands.js +315 -0
  94. package/dist/src/commands/managed-commands.js.map +1 -0
  95. package/dist/src/commands/offline-cleanup-evidence.d.ts +67 -0
  96. package/dist/src/commands/offline-cleanup-evidence.js +181 -0
  97. package/dist/src/commands/offline-cleanup-evidence.js.map +1 -0
  98. package/dist/src/commands/operation-plan.d.ts +182 -0
  99. package/dist/src/commands/operation-plan.js +71 -0
  100. package/dist/src/commands/operation-plan.js.map +1 -0
  101. package/dist/src/commands/operation-planner.d.ts +47 -0
  102. package/dist/src/commands/operation-planner.js +142 -0
  103. package/dist/src/commands/operation-planner.js.map +1 -0
  104. package/dist/src/commands/options.d.ts +9 -7
  105. package/dist/src/commands/options.js +83 -21
  106. package/dist/src/commands/options.js.map +1 -1
  107. package/dist/src/commands/plugin-capabilities.js +65 -4
  108. package/dist/src/commands/plugin-capabilities.js.map +1 -1
  109. package/dist/src/commands/rebuild-command.d.ts +78 -31
  110. package/dist/src/commands/rebuild-command.js +5229 -942
  111. package/dist/src/commands/rebuild-command.js.map +1 -1
  112. package/dist/src/commands/rebuild-integration.d.ts +143 -21
  113. package/dist/src/commands/rebuild-integration.js +3384 -1342
  114. package/dist/src/commands/rebuild-integration.js.map +1 -1
  115. package/dist/src/commands/rebuild-operations.d.ts +60 -30
  116. package/dist/src/commands/rebuild-operations.js +267 -320
  117. package/dist/src/commands/rebuild-operations.js.map +1 -1
  118. package/dist/src/commands/reconcile-operation-plan.d.ts +28 -0
  119. package/dist/src/commands/reconcile-operation-plan.js +47 -0
  120. package/dist/src/commands/reconcile-operation-plan.js.map +1 -0
  121. package/dist/src/commands/review-inspection.d.ts +60 -0
  122. package/dist/src/commands/review-inspection.js +422 -0
  123. package/dist/src/commands/review-inspection.js.map +1 -0
  124. package/dist/src/commands/review-preparation.d.ts +49 -0
  125. package/dist/src/commands/review-preparation.js +427 -0
  126. package/dist/src/commands/review-preparation.js.map +1 -0
  127. package/dist/src/commands/runtime.d.ts +1 -5
  128. package/dist/src/commands/runtime.js +27 -53
  129. package/dist/src/commands/runtime.js.map +1 -1
  130. package/dist/src/commands/skill-eval.d.ts +39 -0
  131. package/dist/src/commands/skill-eval.js +400 -0
  132. package/dist/src/commands/skill-eval.js.map +1 -0
  133. package/dist/src/commands/status-v6.d.ts +279 -0
  134. package/dist/src/commands/status-v6.js +2785 -0
  135. package/dist/src/commands/status-v6.js.map +1 -0
  136. package/dist/src/commands/sync-command.d.ts +40 -0
  137. package/dist/src/commands/sync-command.js +254 -0
  138. package/dist/src/commands/sync-command.js.map +1 -0
  139. package/dist/src/commands/wizard.d.ts +8 -5
  140. package/dist/src/commands/wizard.js +6 -4
  141. package/dist/src/commands/wizard.js.map +1 -1
  142. package/dist/src/commands/write-commands.d.ts +9 -3
  143. package/dist/src/commands/write-commands.js +136 -31
  144. package/dist/src/commands/write-commands.js.map +1 -1
  145. package/dist/src/constants.d.ts +7 -2
  146. package/dist/src/constants.js +7 -2
  147. package/dist/src/constants.js.map +1 -1
  148. package/dist/src/eval/manifest-v1.d.ts +68 -0
  149. package/dist/src/eval/manifest-v1.js +353 -0
  150. package/dist/src/eval/manifest-v1.js.map +1 -0
  151. package/dist/src/generators/local-plugin.d.ts +5 -1
  152. package/dist/src/generators/local-plugin.js +261 -109
  153. package/dist/src/generators/local-plugin.js.map +1 -1
  154. package/dist/src/generators/permissions.d.ts +5 -2
  155. package/dist/src/generators/permissions.js +28 -15
  156. package/dist/src/generators/permissions.js.map +1 -1
  157. package/dist/src/index.d.ts +10 -4
  158. package/dist/src/index.js +1774 -609
  159. package/dist/src/index.js.map +1 -1
  160. package/dist/src/output/command-receipt.d.ts +47 -46
  161. package/dist/src/output/command-receipt.js +277 -79
  162. package/dist/src/output/command-receipt.js.map +1 -1
  163. package/dist/src/output/model.d.ts +3 -44
  164. package/dist/src/output/model.js +1 -144
  165. package/dist/src/output/model.js.map +1 -1
  166. package/dist/src/output/rebuild-progress.js +15 -13
  167. package/dist/src/output/rebuild-progress.js.map +1 -1
  168. package/dist/src/portable/commands.d.ts +46 -7
  169. package/dist/src/portable/commands.js +349 -37
  170. package/dist/src/portable/commands.js.map +1 -1
  171. package/dist/src/portable/materializer.d.ts +17 -4
  172. package/dist/src/portable/materializer.js +186 -41
  173. package/dist/src/portable/materializer.js.map +1 -1
  174. package/dist/src/portable/skills-cli.d.ts +15 -7
  175. package/dist/src/portable/skills-cli.js +74 -20
  176. package/dist/src/portable/skills-cli.js.map +1 -1
  177. package/dist/src/review/eval-source-input.d.ts +43 -0
  178. package/dist/src/review/eval-source-input.js +207 -0
  179. package/dist/src/review/eval-source-input.js.map +1 -0
  180. package/dist/src/review/review-profile.d.ts +17 -0
  181. package/dist/src/review/review-profile.js +234 -0
  182. package/dist/src/review/review-profile.js.map +1 -0
  183. package/dist/src/review/review-selection.d.ts +30 -0
  184. package/dist/src/review/review-selection.js +527 -0
  185. package/dist/src/review/review-selection.js.map +1 -0
  186. package/dist/src/review/review-types.d.ts +68 -0
  187. package/dist/src/review/review-types.js +16 -0
  188. package/dist/src/review/review-types.js.map +1 -0
  189. package/dist/src/review/skill-materialization.d.ts +26 -0
  190. package/dist/src/review/skill-materialization.js +217 -0
  191. package/dist/src/review/skill-materialization.js.map +1 -0
  192. package/dist/src/review/source-binding.d.ts +183 -0
  193. package/dist/src/review/source-binding.js +708 -0
  194. package/dist/src/review/source-binding.js.map +1 -0
  195. package/dist/src/tui/catalog-freshness.d.ts +1 -0
  196. package/dist/src/tui/catalog-freshness.js +2 -0
  197. package/dist/src/tui/catalog-freshness.js.map +1 -0
  198. package/dist/src/tui/catalog-generation.d.ts +21 -0
  199. package/dist/src/tui/catalog-generation.js +156 -0
  200. package/dist/src/tui/catalog-generation.js.map +1 -0
  201. package/dist/src/tui/catalog-sources/projection.d.ts +4 -0
  202. package/dist/src/tui/catalog-sources/projection.js +17 -0
  203. package/dist/src/tui/catalog-sources/projection.js.map +1 -0
  204. package/dist/src/tui/catalog-sources/review.d.ts +3 -0
  205. package/dist/src/tui/catalog-sources/review.js +13 -0
  206. package/dist/src/tui/catalog-sources/review.js.map +1 -0
  207. package/dist/src/tui/catalog-sources/screens.d.ts +12 -0
  208. package/dist/src/tui/catalog-sources/screens.js +40 -0
  209. package/dist/src/tui/catalog-sources/screens.js.map +1 -0
  210. package/dist/src/tui/catalog-sources/session.d.ts +32 -0
  211. package/dist/src/tui/catalog-sources/session.js +300 -0
  212. package/dist/src/tui/catalog-sources/session.js.map +1 -0
  213. package/dist/src/tui/catalog-sources/types.d.ts +54 -0
  214. package/dist/src/tui/catalog-sources/types.js +2 -0
  215. package/dist/src/tui/catalog-sources/types.js.map +1 -0
  216. package/dist/src/tui/catalog-store-task.d.ts +16 -0
  217. package/dist/src/tui/catalog-store-task.js +19 -0
  218. package/dist/src/tui/catalog-store-task.js.map +1 -0
  219. package/dist/src/tui/clipboard.d.ts +13 -0
  220. package/dist/src/tui/clipboard.js +95 -0
  221. package/dist/src/tui/clipboard.js.map +1 -0
  222. package/dist/src/tui/components.d.ts +110 -3
  223. package/dist/src/tui/components.js +183 -36
  224. package/dist/src/tui/components.js.map +1 -1
  225. package/dist/src/tui/config-array-draft.d.ts +29 -0
  226. package/dist/src/tui/config-array-draft.js +48 -0
  227. package/dist/src/tui/config-array-draft.js.map +1 -0
  228. package/dist/src/tui/config-leaf-editor.d.ts +19 -0
  229. package/dist/src/tui/config-leaf-editor.js +212 -0
  230. package/dist/src/tui/config-leaf-editor.js.map +1 -0
  231. package/dist/src/tui/config-references.d.ts +34 -0
  232. package/dist/src/tui/config-references.js +70 -0
  233. package/dist/src/tui/config-references.js.map +1 -0
  234. package/dist/src/tui/config-value-presentation.d.ts +20 -0
  235. package/dist/src/tui/config-value-presentation.js +104 -0
  236. package/dist/src/tui/config-value-presentation.js.map +1 -0
  237. package/dist/src/tui/console-app-v4.d.ts +14 -4
  238. package/dist/src/tui/console-app-v4.js +9205 -1951
  239. package/dist/src/tui/console-app-v4.js.map +1 -1
  240. package/dist/src/tui/content-item-card.d.ts +13 -0
  241. package/dist/src/tui/content-item-card.js +51 -0
  242. package/dist/src/tui/content-item-card.js.map +1 -0
  243. package/dist/src/tui/controller-runtime.d.ts +10 -2
  244. package/dist/src/tui/controller-runtime.js +3289 -388
  245. package/dist/src/tui/controller-runtime.js.map +1 -1
  246. package/dist/src/tui/controller.d.ts +622 -45
  247. package/dist/src/tui/controller.js +3589 -768
  248. package/dist/src/tui/controller.js.map +1 -1
  249. package/dist/src/tui/dependency-graph-view.d.ts +39 -0
  250. package/dist/src/tui/dependency-graph-view.js +121 -0
  251. package/dist/src/tui/dependency-graph-view.js.map +1 -0
  252. package/dist/src/tui/dependency-graph.d.ts +81 -0
  253. package/dist/src/tui/dependency-graph.js +452 -0
  254. package/dist/src/tui/dependency-graph.js.map +1 -0
  255. package/dist/src/tui/diagnostic-projection.d.ts +23 -0
  256. package/dist/src/tui/diagnostic-projection.js +595 -0
  257. package/dist/src/tui/diagnostic-projection.js.map +1 -0
  258. package/dist/src/tui/diagnostics.d.ts +3 -3
  259. package/dist/src/tui/diagnostics.js +14 -2
  260. package/dist/src/tui/diagnostics.js.map +1 -1
  261. package/dist/src/tui/entity-cards.d.ts +55 -0
  262. package/dist/src/tui/entity-cards.js +220 -0
  263. package/dist/src/tui/entity-cards.js.map +1 -0
  264. package/dist/src/tui/glossary.d.ts +23 -0
  265. package/dist/src/tui/glossary.js +42 -0
  266. package/dist/src/tui/glossary.js.map +1 -0
  267. package/dist/src/tui/index.d.ts +6 -1
  268. package/dist/src/tui/index.js +5 -1
  269. package/dist/src/tui/index.js.map +1 -1
  270. package/dist/src/tui/input-display.d.ts +9 -0
  271. package/dist/src/tui/input-display.js +58 -0
  272. package/dist/src/tui/input-display.js.map +1 -0
  273. package/dist/src/tui/keys.d.ts +44 -0
  274. package/dist/src/tui/keys.js +43 -15
  275. package/dist/src/tui/keys.js.map +1 -1
  276. package/dist/src/tui/lifecycle-action-view.d.ts +6 -0
  277. package/dist/src/tui/lifecycle-action-view.js +36 -0
  278. package/dist/src/tui/lifecycle-action-view.js.map +1 -0
  279. package/dist/src/tui/model.d.ts +224 -31
  280. package/dist/src/tui/model.js +1510 -397
  281. package/dist/src/tui/model.js.map +1 -1
  282. package/dist/src/tui/operation-diagnostic-screens.d.ts +8 -0
  283. package/dist/src/tui/operation-diagnostic-screens.js +71 -0
  284. package/dist/src/tui/operation-diagnostic-screens.js.map +1 -0
  285. package/dist/src/tui/operation-history.d.ts +81 -0
  286. package/dist/src/tui/operation-history.js +136 -0
  287. package/dist/src/tui/operation-history.js.map +1 -0
  288. package/dist/src/tui/operation-review-planner.d.ts +21 -0
  289. package/dist/src/tui/operation-review-planner.js +1392 -0
  290. package/dist/src/tui/operation-review-planner.js.map +1 -0
  291. package/dist/src/tui/plugin-content.d.ts +31 -0
  292. package/dist/src/tui/plugin-content.js +680 -0
  293. package/dist/src/tui/plugin-content.js.map +1 -0
  294. package/dist/src/tui/plugin-detail.d.ts +52 -0
  295. package/dist/src/tui/plugin-detail.js +165 -0
  296. package/dist/src/tui/plugin-detail.js.map +1 -0
  297. package/dist/src/tui/plugin-write-task.d.ts +69 -0
  298. package/dist/src/tui/plugin-write-task.js +286 -0
  299. package/dist/src/tui/plugin-write-task.js.map +1 -0
  300. package/dist/src/tui/project-inventory.d.ts +68 -0
  301. package/dist/src/tui/project-inventory.js +203 -0
  302. package/dist/src/tui/project-inventory.js.map +1 -0
  303. package/dist/src/tui/prompt.js +4 -15
  304. package/dist/src/tui/prompt.js.map +1 -1
  305. package/dist/src/tui/query-header.d.ts +30 -0
  306. package/dist/src/tui/query-header.js +40 -0
  307. package/dist/src/tui/query-header.js.map +1 -0
  308. package/dist/src/tui/reader.d.ts +37 -0
  309. package/dist/src/tui/reader.js +47 -0
  310. package/dist/src/tui/reader.js.map +1 -0
  311. package/dist/src/tui/router.d.ts +197 -10
  312. package/dist/src/tui/router.js +338 -50
  313. package/dist/src/tui/router.js.map +1 -1
  314. package/dist/src/tui/screen-registry.d.ts +701 -0
  315. package/dist/src/tui/screen-registry.js +230 -0
  316. package/dist/src/tui/screen-registry.js.map +1 -0
  317. package/dist/src/tui/session-console-app.d.ts +6 -0
  318. package/dist/src/tui/session-console-app.js +13 -0
  319. package/dist/src/tui/session-console-app.js.map +1 -0
  320. package/dist/src/tui/session-host.d.ts +45 -0
  321. package/dist/src/tui/session-host.js +209 -0
  322. package/dist/src/tui/session-host.js.map +1 -0
  323. package/dist/src/tui/source-detail-card.d.ts +29 -0
  324. package/dist/src/tui/source-detail-card.js +45 -0
  325. package/dist/src/tui/source-detail-card.js.map +1 -0
  326. package/dist/src/tui/source-ref-presets.d.ts +3 -0
  327. package/dist/src/tui/source-ref-presets.js +11 -0
  328. package/dist/src/tui/source-ref-presets.js.map +1 -0
  329. package/dist/src/tui/theme.d.ts +12 -0
  330. package/dist/src/tui/theme.js +12 -0
  331. package/dist/src/tui/theme.js.map +1 -1
  332. package/dist/src/tui/viewport.d.ts +1 -0
  333. package/dist/src/tui/viewport.js +23 -0
  334. package/dist/src/tui/viewport.js.map +1 -1
  335. package/dist/src/tui/views.js +31 -3
  336. package/dist/src/tui/views.js.map +1 -1
  337. package/dist/src/tui/wizard.js +37 -13
  338. package/dist/src/tui/wizard.js.map +1 -1
  339. package/dist/src/types.d.ts +264 -21
  340. package/dist/src/types.js +1 -0
  341. package/dist/src/types.js.map +1 -1
  342. package/dist/src/utils/agent-version.d.ts +7 -1
  343. package/dist/src/utils/agent-version.js +36 -7
  344. package/dist/src/utils/agent-version.js.map +1 -1
  345. package/dist/src/utils/artifact-plan.d.ts +8 -6
  346. package/dist/src/utils/artifact-plan.js +67 -13
  347. package/dist/src/utils/artifact-plan.js.map +1 -1
  348. package/dist/src/utils/artifact-renderer.d.ts +24 -10
  349. package/dist/src/utils/artifact-renderer.js +230 -220
  350. package/dist/src/utils/artifact-renderer.js.map +1 -1
  351. package/dist/src/utils/artifact-request.d.ts +32 -0
  352. package/dist/src/utils/artifact-request.js +90 -0
  353. package/dist/src/utils/artifact-request.js.map +1 -0
  354. package/dist/src/utils/artifact-sources.d.ts +4 -0
  355. package/dist/src/utils/artifact-sources.js +17 -0
  356. package/dist/src/utils/artifact-sources.js.map +1 -1
  357. package/dist/src/utils/aw-home-mutation-lock.d.ts +1 -0
  358. package/dist/src/utils/aw-home-mutation-lock.js +32 -4
  359. package/dist/src/utils/aw-home-mutation-lock.js.map +1 -1
  360. package/dist/src/utils/bundle-integrity.d.ts +0 -1
  361. package/dist/src/utils/bundle-integrity.js +0 -25
  362. package/dist/src/utils/bundle-integrity.js.map +1 -1
  363. package/dist/src/utils/bundle-layout.js +29 -29
  364. package/dist/src/utils/bundle-layout.js.map +1 -1
  365. package/dist/src/utils/catalog-capability-projection.d.ts +8 -0
  366. package/dist/src/utils/catalog-capability-projection.js +14 -0
  367. package/dist/src/utils/catalog-capability-projection.js.map +1 -0
  368. package/dist/src/utils/catalog-digests.d.ts +10 -0
  369. package/dist/src/utils/catalog-digests.js +57 -20
  370. package/dist/src/utils/catalog-digests.js.map +1 -1
  371. package/dist/src/utils/catalog-generation-control-snapshot.d.ts +11 -0
  372. package/dist/src/utils/catalog-generation-control-snapshot.js +45 -0
  373. package/dist/src/utils/catalog-generation-control-snapshot.js.map +1 -0
  374. package/dist/src/utils/catalog-generation-error.d.ts +16 -0
  375. package/dist/src/utils/catalog-generation-error.js +30 -0
  376. package/dist/src/utils/catalog-generation-error.js.map +1 -0
  377. package/dist/src/utils/catalog-generation-resolver.d.ts +44 -0
  378. package/dist/src/utils/catalog-generation-resolver.js +273 -0
  379. package/dist/src/utils/catalog-generation-resolver.js.map +1 -0
  380. package/dist/src/utils/catalog-generation-service.d.ts +172 -0
  381. package/dist/src/utils/catalog-generation-service.js +1271 -0
  382. package/dist/src/utils/catalog-generation-service.js.map +1 -0
  383. package/dist/src/utils/catalog-generation-state.d.ts +22 -0
  384. package/dist/src/utils/catalog-generation-state.js +192 -0
  385. package/dist/src/utils/catalog-generation-state.js.map +1 -0
  386. package/dist/src/utils/catalog-generation-store.d.ts +58 -0
  387. package/dist/src/utils/catalog-generation-store.js +452 -0
  388. package/dist/src/utils/catalog-generation-store.js.map +1 -0
  389. package/dist/src/utils/catalog-manifest-v7.d.ts +5 -0
  390. package/dist/src/utils/{catalog-manifest-v4.js → catalog-manifest-v7.js} +35 -43
  391. package/dist/src/utils/catalog-manifest-v7.js.map +1 -0
  392. package/dist/src/utils/catalog-operation-context.d.ts +20 -0
  393. package/dist/src/utils/catalog-operation-context.js +142 -0
  394. package/dist/src/utils/catalog-operation-context.js.map +1 -0
  395. package/dist/src/utils/catalog-public-error.d.ts +7 -3
  396. package/dist/src/utils/catalog-public-error.js +28 -8
  397. package/dist/src/utils/catalog-public-error.js.map +1 -1
  398. package/dist/src/utils/catalog-runtime-projection.d.ts +3 -0
  399. package/dist/src/utils/catalog-runtime-projection.js +5 -40
  400. package/dist/src/utils/catalog-runtime-projection.js.map +1 -1
  401. package/dist/src/utils/catalog-snapshot.d.ts +5 -3
  402. package/dist/src/utils/catalog-snapshot.js +11 -3
  403. package/dist/src/utils/catalog-snapshot.js.map +1 -1
  404. package/dist/src/utils/catalog-source-identity.d.ts +1 -0
  405. package/dist/src/utils/catalog-source-identity.js +21 -2
  406. package/dist/src/utils/catalog-source-identity.js.map +1 -1
  407. package/dist/src/utils/catalog-source-impact.d.ts +21 -0
  408. package/dist/src/utils/catalog-source-impact.js +344 -0
  409. package/dist/src/utils/catalog-source-impact.js.map +1 -0
  410. package/dist/src/utils/catalog-source-references.d.ts +3 -2
  411. package/dist/src/utils/catalog-source-references.js +195 -347
  412. package/dist/src/utils/catalog-source-references.js.map +1 -1
  413. package/dist/src/utils/catalog-sources.d.ts +15 -1
  414. package/dist/src/utils/catalog-sources.js +206 -27
  415. package/dist/src/utils/catalog-sources.js.map +1 -1
  416. package/dist/src/utils/claude-skills-root.d.ts +8 -0
  417. package/dist/src/utils/claude-skills-root.js +76 -0
  418. package/dist/src/utils/claude-skills-root.js.map +1 -0
  419. package/dist/src/utils/codex-config.d.ts +2 -0
  420. package/dist/src/utils/codex-config.js +26 -5
  421. package/dist/src/utils/codex-config.js.map +1 -1
  422. package/dist/src/utils/codex-manager.d.ts +79 -0
  423. package/dist/src/utils/codex-manager.js +735 -0
  424. package/dist/src/utils/codex-manager.js.map +1 -0
  425. package/dist/src/utils/codex-marketplace-path.d.ts +5 -0
  426. package/dist/src/utils/codex-marketplace-path.js +45 -0
  427. package/dist/src/utils/codex-marketplace-path.js.map +1 -0
  428. package/dist/src/utils/codex-native-observation.d.ts +49 -0
  429. package/dist/src/utils/codex-native-observation.js +154 -0
  430. package/dist/src/utils/codex-native-observation.js.map +1 -0
  431. package/dist/src/utils/codex-native-render-receipt.d.ts +40 -0
  432. package/dist/src/utils/codex-native-render-receipt.js +205 -0
  433. package/dist/src/utils/codex-native-render-receipt.js.map +1 -0
  434. package/dist/src/utils/codex-reconciler.d.ts +126 -0
  435. package/dist/src/utils/codex-reconciler.js +298 -0
  436. package/dist/src/utils/codex-reconciler.js.map +1 -0
  437. package/dist/src/utils/codex-shared-native.d.ts +43 -0
  438. package/dist/src/utils/codex-shared-native.js +81 -0
  439. package/dist/src/utils/codex-shared-native.js.map +1 -0
  440. package/dist/src/utils/codex-skill-staging.d.ts +2 -0
  441. package/dist/src/utils/codex-skill-staging.js.map +1 -1
  442. package/dist/src/utils/codex-skills-root.d.ts +4 -0
  443. package/dist/src/utils/codex-skills-root.js +25 -0
  444. package/dist/src/utils/codex-skills-root.js.map +1 -0
  445. package/dist/src/utils/codex-surface-analysis.d.ts +46 -0
  446. package/dist/src/utils/codex-surface-analysis.js +247 -0
  447. package/dist/src/utils/codex-surface-analysis.js.map +1 -0
  448. package/dist/src/utils/dynamic-skill-tree.d.ts +5 -0
  449. package/dist/src/utils/dynamic-skill-tree.js +56 -7
  450. package/dist/src/utils/dynamic-skill-tree.js.map +1 -1
  451. package/dist/src/utils/git-catalog-provider.d.ts +16 -0
  452. package/dist/src/utils/git-catalog-provider.js +177 -145
  453. package/dist/src/utils/git-catalog-provider.js.map +1 -1
  454. package/dist/src/utils/local-marketplace.d.ts +27 -1
  455. package/dist/src/utils/local-marketplace.js +434 -84
  456. package/dist/src/utils/local-marketplace.js.map +1 -1
  457. package/dist/src/utils/managed-command-closure.d.ts +3 -0
  458. package/dist/src/utils/managed-command-closure.js +35 -0
  459. package/dist/src/utils/managed-command-closure.js.map +1 -0
  460. package/dist/src/utils/managed-command-evidence.d.ts +7 -0
  461. package/dist/src/utils/managed-command-evidence.js +86 -0
  462. package/dist/src/utils/managed-command-evidence.js.map +1 -0
  463. package/dist/src/utils/managed-command-materialization.d.ts +115 -0
  464. package/dist/src/utils/managed-command-materialization.js +359 -0
  465. package/dist/src/utils/managed-command-materialization.js.map +1 -0
  466. package/dist/src/utils/managed-command-runtime.d.ts +33 -0
  467. package/dist/src/utils/managed-command-runtime.js +121 -0
  468. package/dist/src/utils/managed-command-runtime.js.map +1 -0
  469. package/dist/src/utils/managed-command-store.d.ts +128 -0
  470. package/dist/src/utils/managed-command-store.js +589 -0
  471. package/dist/src/utils/managed-command-store.js.map +1 -0
  472. package/dist/src/utils/manifest.d.ts +1 -3
  473. package/dist/src/utils/manifest.js +1 -3
  474. package/dist/src/utils/manifest.js.map +1 -1
  475. package/dist/src/utils/multi-source-catalog.d.ts +3 -9
  476. package/dist/src/utils/multi-source-catalog.js +54 -110
  477. package/dist/src/utils/multi-source-catalog.js.map +1 -1
  478. package/dist/src/utils/native-cli.d.ts +61 -7
  479. package/dist/src/utils/native-cli.js +426 -58
  480. package/dist/src/utils/native-cli.js.map +1 -1
  481. package/dist/src/utils/native-tool-context.d.ts +14 -0
  482. package/dist/src/utils/native-tool-context.js +38 -0
  483. package/dist/src/utils/native-tool-context.js.map +1 -0
  484. package/dist/src/utils/native-tool-review.d.ts +21 -0
  485. package/dist/src/utils/native-tool-review.js +102 -0
  486. package/dist/src/utils/native-tool-review.js.map +1 -0
  487. package/dist/src/utils/orphan-marketplace-cleanup.js +0 -4
  488. package/dist/src/utils/orphan-marketplace-cleanup.js.map +1 -1
  489. package/dist/src/utils/ownership.d.ts +88 -20
  490. package/dist/src/utils/ownership.js +185 -223
  491. package/dist/src/utils/ownership.js.map +1 -1
  492. package/dist/src/utils/path-catalog-provider.d.ts +1 -1
  493. package/dist/src/utils/path-catalog-provider.js +54 -65
  494. package/dist/src/utils/path-catalog-provider.js.map +1 -1
  495. package/dist/src/utils/paths.d.ts +0 -1
  496. package/dist/src/utils/paths.js +0 -1
  497. package/dist/src/utils/paths.js.map +1 -1
  498. package/dist/src/utils/plugin-config-impact.d.ts +40 -0
  499. package/dist/src/utils/plugin-config-impact.js +373 -0
  500. package/dist/src/utils/plugin-config-impact.js.map +1 -0
  501. package/dist/src/utils/plugin-config-write.d.ts +52 -27
  502. package/dist/src/utils/plugin-config-write.js +1112 -298
  503. package/dist/src/utils/plugin-config-write.js.map +1 -1
  504. package/dist/src/utils/plugin-config.d.ts +153 -93
  505. package/dist/src/utils/plugin-config.js +1116 -968
  506. package/dist/src/utils/plugin-config.js.map +1 -1
  507. package/dist/src/utils/plugin-intent-state.d.ts +49 -0
  508. package/dist/src/utils/plugin-intent-state.js +320 -0
  509. package/dist/src/utils/plugin-intent-state.js.map +1 -0
  510. package/dist/src/utils/plugin-scripts.d.ts +66 -125
  511. package/dist/src/utils/plugin-scripts.js +518 -526
  512. package/dist/src/utils/plugin-scripts.js.map +1 -1
  513. package/dist/src/utils/process-lock.js +14 -5
  514. package/dist/src/utils/process-lock.js.map +1 -1
  515. package/dist/src/utils/process-tree.d.ts +2 -2
  516. package/dist/src/utils/process-tree.js +1 -1
  517. package/dist/src/utils/process-tree.js.map +1 -1
  518. package/dist/src/utils/project-boundary.d.ts +11 -13
  519. package/dist/src/utils/project-boundary.js +28 -34
  520. package/dist/src/utils/project-boundary.js.map +1 -1
  521. package/dist/src/utils/rendered-contract.js +18 -1
  522. package/dist/src/utils/rendered-contract.js.map +1 -1
  523. package/dist/src/utils/runtime-config.d.ts +20 -0
  524. package/dist/src/utils/runtime-config.js +75 -0
  525. package/dist/src/utils/runtime-config.js.map +1 -0
  526. package/dist/src/utils/runtime-skill-closure.js +47 -6
  527. package/dist/src/utils/runtime-skill-closure.js.map +1 -1
  528. package/dist/src/utils/safe-fs.d.ts +21 -0
  529. package/dist/src/utils/safe-fs.js +111 -0
  530. package/dist/src/utils/safe-fs.js.map +1 -0
  531. package/dist/src/utils/safe-operation-diagnostic.d.ts +15 -0
  532. package/dist/src/utils/safe-operation-diagnostic.js +33 -0
  533. package/dist/src/utils/safe-operation-diagnostic.js.map +1 -0
  534. package/dist/src/utils/sensitive-content.d.ts +4 -0
  535. package/dist/src/utils/sensitive-content.js +36 -0
  536. package/dist/src/utils/sensitive-content.js.map +1 -0
  537. package/dist/src/utils/state-paths.js +7 -2
  538. package/dist/src/utils/state-paths.js.map +1 -1
  539. package/dist/src/utils/target-eligibility.d.ts +8 -2
  540. package/dist/src/utils/target-eligibility.js +17 -8
  541. package/dist/src/utils/target-eligibility.js.map +1 -1
  542. package/dist/src/utils/windows-claude-shim.d.ts +7 -0
  543. package/dist/src/utils/windows-claude-shim.js +10 -0
  544. package/dist/src/utils/windows-claude-shim.js.map +1 -0
  545. package/dist/src/utils/windows-npm-shim.d.ts +14 -0
  546. package/dist/src/utils/windows-npm-shim.js +140 -0
  547. package/dist/src/utils/windows-npm-shim.js.map +1 -0
  548. package/dist/vitest.config.js +100 -9
  549. package/dist/vitest.config.js.map +1 -1
  550. package/package.json +31 -21
  551. package/dist/authoring/scripts/check-plugin-versions.d.mts +0 -2
  552. package/dist/authoring/scripts/check-plugin-versions.mjs +0 -5
  553. package/dist/authoring/scripts/check-plugin-versions.mjs.map +0 -1
  554. package/dist/scripts/aw-skill-eval-engine.d.ts +0 -13
  555. package/dist/scripts/aw-skill-eval-engine.js +0 -31
  556. package/dist/scripts/aw-skill-eval-engine.js.map +0 -1
  557. package/dist/scripts/codex-eval-app-server.d.ts +0 -89
  558. package/dist/scripts/codex-eval-app-server.js +0 -1228
  559. package/dist/scripts/codex-eval-app-server.js.map +0 -1
  560. package/dist/scripts/codex-eval-isolation.d.ts +0 -61
  561. package/dist/scripts/codex-eval-isolation.js +0 -318
  562. package/dist/scripts/codex-eval-isolation.js.map +0 -1
  563. package/dist/scripts/codex-eval-process-management.d.ts +0 -8
  564. package/dist/scripts/codex-eval-process-management.js +0 -69
  565. package/dist/scripts/codex-eval-process-management.js.map +0 -1
  566. package/dist/scripts/codex-eval-process-tree.d.ts +0 -38
  567. package/dist/scripts/codex-eval-process-tree.js +0 -803
  568. package/dist/scripts/codex-eval-process-tree.js.map +0 -1
  569. package/dist/scripts/codex-eval-runtime-config.d.ts +0 -62
  570. package/dist/scripts/codex-eval-runtime-config.js +0 -843
  571. package/dist/scripts/codex-eval-runtime-config.js.map +0 -1
  572. package/dist/scripts/codex-trigger-eval.d.ts +0 -84
  573. package/dist/scripts/codex-trigger-eval.js +0 -968
  574. package/dist/scripts/codex-trigger-eval.js.map +0 -1
  575. package/dist/scripts/eval-plugin-skills-audited.d.ts +0 -6
  576. package/dist/scripts/eval-plugin-skills-audited.js +0 -261
  577. package/dist/scripts/eval-plugin-skills-audited.js.map +0 -1
  578. package/dist/scripts/eval-plugin-skills.d.ts +0 -45
  579. package/dist/scripts/eval-plugin-skills.js +0 -1586
  580. package/dist/scripts/eval-plugin-skills.js.map +0 -1
  581. package/dist/scripts/eval-run-layout.d.ts +0 -17
  582. package/dist/scripts/eval-run-layout.js +0 -26
  583. package/dist/scripts/eval-run-layout.js.map +0 -1
  584. package/dist/scripts/plugin-eval-contract.d.ts +0 -185
  585. package/dist/scripts/plugin-eval-contract.js +0 -695
  586. package/dist/scripts/plugin-eval-contract.js.map +0 -1
  587. package/dist/scripts/plugin-eval-materializer.d.ts +0 -13
  588. package/dist/scripts/plugin-eval-materializer.js +0 -421
  589. package/dist/scripts/plugin-eval-materializer.js.map +0 -1
  590. package/dist/scripts/skill-reporting.d.ts +0 -212
  591. package/dist/scripts/skill-reporting.js +0 -922
  592. package/dist/scripts/skill-reporting.js.map +0 -1
  593. package/dist/src/commands/review-publication.d.ts +0 -99
  594. package/dist/src/commands/review-publication.js +0 -904
  595. package/dist/src/commands/review-publication.js.map +0 -1
  596. package/dist/src/commands/status-v4.d.ts +0 -123
  597. package/dist/src/commands/status-v4.js +0 -905
  598. package/dist/src/commands/status-v4.js.map +0 -1
  599. package/dist/src/commands/status.d.ts +0 -93
  600. package/dist/src/commands/status.js +0 -442
  601. package/dist/src/commands/status.js.map +0 -1
  602. package/dist/src/utils/active-marketplace-runtime-lock.d.ts +0 -12
  603. package/dist/src/utils/active-marketplace-runtime-lock.js +0 -133
  604. package/dist/src/utils/active-marketplace-runtime-lock.js.map +0 -1
  605. package/dist/src/utils/catalog-manifest-v3.d.ts +0 -2
  606. package/dist/src/utils/catalog-manifest-v3.js +0 -3
  607. package/dist/src/utils/catalog-manifest-v3.js.map +0 -1
  608. package/dist/src/utils/catalog-manifest-v4.d.ts +0 -5
  609. package/dist/src/utils/catalog-manifest-v4.js.map +0 -1
  610. package/dist/src/utils/catalog-source-cache.d.ts +0 -62
  611. package/dist/src/utils/catalog-source-cache.js +0 -296
  612. package/dist/src/utils/catalog-source-cache.js.map +0 -1
  613. package/dist/src/utils/codex-project-surface.d.ts +0 -3
  614. package/dist/src/utils/codex-project-surface.js +0 -49
  615. package/dist/src/utils/codex-project-surface.js.map +0 -1
  616. package/dist/src/utils/lifecycle-active-store.d.ts +0 -175
  617. package/dist/src/utils/lifecycle-active-store.js +0 -1276
  618. package/dist/src/utils/lifecycle-active-store.js.map +0 -1
  619. package/dist/src/utils/plugin-release.d.ts +0 -2
  620. package/dist/src/utils/plugin-release.js +0 -2
  621. package/dist/src/utils/plugin-release.js.map +0 -1
@@ -4,14 +4,17 @@ import os from 'node:os';
4
4
  import path from 'node:path';
5
5
  import { promisify } from 'node:util';
6
6
  import fs from 'fs-extra';
7
+ import { preparePluginNativeTools, validateManagedCommandSources } from '@lesliechan721/aw-plugin-core/manifest';
7
8
  import { renderResolvedHooksArtifact } from './hooks.js';
8
9
  import { buildGeneratedName } from './shared.js';
9
10
  import { applyFileRules } from '../utils/file-rules.js';
10
11
  import { calculateFileDigest } from '../utils/bundle-integrity.js';
11
12
  import { resolveCanonicalRuntimeSourceIdentity } from '../utils/catalog-runtime-projection.js';
12
13
  import { getArtifactSourceBundleRelativePath } from '../utils/artifact-sources.js';
14
+ import { validateManagedCommandPackageClosure } from '../utils/managed-command-closure.js';
13
15
  import { resolvePlatformHookDefinitions } from '../utils/hooks-contract.js';
14
- import { assertManifestPlatformSupport, assertPluginInputTree, createBundleSourceManifest, createPlatformManifestBase, isIgnoredPluginInputDirectory, normalizePluginRelativePath, readPluginManifest, } from '../utils/manifest.js';
16
+ import { assertManifestPlatformSupport, assertPluginInputTree, checkAwCapabilitySupport, computeAwCapabilitySetDigest, createAwPluginRequirementsReceipt, createBundleSourceManifest, createPlatformManifestBase, isIgnoredPluginInputDirectory, normalizePluginRelativePath, normalizeAwCapabilities, readPluginManifest, resolvePluginRequirements, } from '../utils/manifest.js';
17
+ import { AwCapabilityUnsupportedError, IMPLEMENTED_AW_CAPABILITIES, } from '../commands/aw-capabilities.js';
15
18
  import { writeJsonFile } from '../utils/json.js';
16
19
  import { resolveSupportedPlatforms } from '../utils/platform-support.js';
17
20
  import { renderTemplate } from '../utils/template-engine.js';
@@ -21,7 +24,7 @@ import { isSkillAuthorOnlyPath, isSkillCollectionAuthorOnlyPath, } from '../util
21
24
  import { assertTestWritablePath } from '../utils/test-path-fence.js';
22
25
  import { resolveCliPackageRoot } from '../utils/paths.js';
23
26
  import { validateRuntimeSkillClosuresRoot, validateSkillRuntimeProjectionFreshness, } from '../utils/runtime-skill-closure.js';
24
- import { validatePortableSkillDirectoriesRoot } from '../utils/dynamic-skill-tree.js';
27
+ import { AW_PLUGIN_REQUIREMENTS_RECEIPT_PATH, validatePortableSkillDirectoriesRoot, } from '../utils/dynamic-skill-tree.js';
25
28
  import { renderClaudeSlashCommand, renderCodexSlashCommandOpenAiYaml, renderCodexSlashCommandSkillMarkdown, resolveSlashCommands, } from '../utils/slash-commands.js';
26
29
  const execFileAsync = promisify(execFile);
27
30
  const requireFromCli = createRequire(import.meta.url);
@@ -32,7 +35,7 @@ const PLATFORM_MANIFEST_DIRS = {
32
35
  claude: '.claude-plugin',
33
36
  codex: '.codex-plugin',
34
37
  };
35
- const EXACT_PNPM_PACKAGE_MANAGER_PATTERN = /^pnpm@\d+\.\d+\.\d+$/u;
38
+ const EXACT_PNPM_VERSION_PATTERN = /^\d+\.\d+\.\d+$/u;
36
39
  function assertLocalPluginStagingPathForTests(targetPath, source) {
37
40
  return assertTestWritablePath(targetPath, source, '用 createIsolatedTestEnv() 生成默认 TMPDIR,或通过 registerWritableStateRoot() 登记 local plugin staging 路径。');
38
41
  }
@@ -42,11 +45,14 @@ export async function validateStagingPackageManager(packageRoot) {
42
45
  readJsonObject(path.join(resolveCliPackageRoot(), 'package.json'), '@lesliechan721/aw package.json'),
43
46
  readJsonObject(path.join(packageRoot, 'package.json'), 'scripts.node.packageRoot.package.json'),
44
47
  ]);
45
- const supportedPackageManager = cliPackageJson.packageManager;
46
- if (typeof supportedPackageManager !== 'string'
47
- || !EXACT_PNPM_PACKAGE_MANAGER_PATTERN.test(supportedPackageManager)) {
48
- throw new Error('Invalid @lesliechan721/aw packageManager: expected an exact "pnpm@<version>" declaration.');
48
+ // pnpm pack removes packageManager, but preserves runtime dependencies.
49
+ const dependencies = cliPackageJson.dependencies;
50
+ const supportedPnpmVersion = dependencies?.pnpm;
51
+ if (typeof supportedPnpmVersion !== 'string'
52
+ || !EXACT_PNPM_VERSION_PATTERN.test(supportedPnpmVersion)) {
53
+ throw new Error('Invalid @lesliechan721/aw dependencies.pnpm: expected an exact "<major>.<minor>.<patch>" version.');
49
54
  }
55
+ const supportedPackageManager = `pnpm@${supportedPnpmVersion}`;
50
56
  if (packageJson.packageManager !== supportedPackageManager) {
51
57
  throw new Error('Invalid scripts.node.packageRoot.package.json.packageManager: '
52
58
  + `expected "${supportedPackageManager}".`);
@@ -98,34 +104,36 @@ async function resolveRuntimePnpmEntry(supportedPackageManager) {
98
104
  const stats = await fs.stat(entryPath).catch(() => undefined);
99
105
  return stats?.isFile() ? entryPath : undefined;
100
106
  }
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
- };
107
+ function createDefaultStagingRunner(commandEnv) {
108
+ return {
109
+ async installPackageRoot(packageRoot) {
110
+ const supportedPackageManager = await validateStagingPackageManager(packageRoot);
111
+ const fixedPnpmEntry = await resolveFixedPnpmEntry(supportedPackageManager, commandEnv)
112
+ ?? await resolveRuntimePnpmEntry(supportedPackageManager);
113
+ if (!fixedPnpmEntry) {
114
+ throw new Error(`Cannot stage scripts.node.packageRoot: missing bundled ${supportedPackageManager} runtime dependency.`);
115
+ }
116
+ const args = [
117
+ fixedPnpmEntry,
118
+ 'install',
119
+ '--frozen-lockfile',
120
+ '--ignore-scripts',
121
+ ];
122
+ await execFileAsync(process.execPath, args, {
123
+ cwd: packageRoot,
124
+ env: commandEnv,
125
+ maxBuffer: 10 * 1024 * 1024,
126
+ });
127
+ },
128
+ async runNodeBuild({ pluginRoot, scriptPath, args, env }) {
129
+ await execFileAsync(process.execPath, [path.join(pluginRoot, stripDotSlash(scriptPath)), ...args], {
130
+ cwd: pluginRoot,
131
+ env,
132
+ maxBuffer: 10 * 1024 * 1024,
133
+ });
134
+ },
135
+ };
136
+ }
129
137
  function stripDotSlash(value) {
130
138
  return value.startsWith('./') ? value.slice(2) : value;
131
139
  }
@@ -239,6 +247,9 @@ async function assertArtifactSourceTreePortable(rootDir, fieldName, relativeRoot
239
247
  continue;
240
248
  if (isMacOsMetadataName(entry.name))
241
249
  continue;
250
+ if (relativePath === AW_PLUGIN_REQUIREMENTS_RECEIPT_PATH) {
251
+ throw new Error(`Invalid ${fieldName}: source root cannot declare reserved file ${AW_PLUGIN_REQUIREMENTS_RECEIPT_PATH}.`);
252
+ }
242
253
  const entryPath = path.join(rootDir, entry.name);
243
254
  if (entry.isSymbolicLink()) {
244
255
  throw new Error(`Invalid ${fieldName}: symbolic links are not supported (${entry.name}).`);
@@ -271,6 +282,19 @@ async function copyArtifactSourceDirectories(plugin, outputRoot) {
271
282
  }
272
283
  }
273
284
  }
285
+ async function copyManagedCommandPackages(plugin, outputRoot) {
286
+ await validateManagedCommandSources(plugin.rootDir, plugin.manifest);
287
+ for (const commandPackage of plugin.manifest.managedCommands?.packages ?? []) {
288
+ const relativePath = stripDotSlash(commandPackage.sourceDir);
289
+ await fs.copy(path.join(plugin.rootDir, relativePath), path.join(outputRoot, relativePath), {
290
+ overwrite: true,
291
+ dereference: false,
292
+ });
293
+ const entries = (plugin.manifest.managedCommands?.sets ?? []).flatMap((set) => set.producer.kind === 'package' && set.producer.packageKey === commandPackage.key && set.mode === 'static' ? set.entries : []);
294
+ await validateManagedCommandPackageClosure(path.join(outputRoot, relativePath), entries);
295
+ }
296
+ await validateManagedCommandSources(outputRoot, plugin.manifest);
297
+ }
274
298
  async function copyPortableStaticSkills(plugin, outputRoot) {
275
299
  const skillsPath = plugin.manifest.distributions?.agentSkills?.skills;
276
300
  if (!skillsPath)
@@ -289,6 +313,8 @@ async function copyPortableStaticSkills(plugin, outputRoot) {
289
313
  }
290
314
  async function resolveArtifactRuntimeImports(options) {
291
315
  const manifest = createBundleSourceManifest(options.plugin);
316
+ const requiredCapabilities = [];
317
+ const projections = [];
292
318
  for (const [targetIndex, target] of (manifest.artifacts?.targets ?? []).entries()) {
293
319
  for (const [importIndex, runtimeImport] of (target.runtimeImports ?? []).entries()) {
294
320
  if (!options.resolver) {
@@ -299,27 +325,64 @@ async function resolveArtifactRuntimeImports(options) {
299
325
  reference: runtimeImport,
300
326
  purpose: 'artifact-runtime',
301
327
  });
328
+ requiredCapabilities.push(...resolution.requiredCapabilities);
302
329
  const relativePath = `./.agents-plugin/runtime-imports/${target.id}/${runtimeImport.name}`;
303
330
  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
- }
331
+ const digest = resolution.sourceDigest;
332
+ projections.push({
333
+ sourcePath: resolution.sourcePath,
334
+ targetPath,
335
+ sourceDigest: resolution.sourceDigest,
336
+ label: `${target.id}/${runtimeImport.name}`,
337
+ });
310
338
  runtimeImport.resolved = {
311
339
  path: relativePath,
312
340
  digest,
313
341
  providerPluginId: resolution.provider,
314
342
  providerVersion: resolution.providerVersion,
315
343
  source: resolution.source,
344
+ requiredCapabilities: resolution.requiredCapabilities,
345
+ capabilitySetDigest: resolution.capabilitySetDigest,
316
346
  };
317
347
  }
318
348
  }
319
349
  if (manifest.distributions?.agentSkills?.skills) {
320
350
  manifest.distributions.agentSkills.skills = './agent-skills/skills';
321
351
  }
322
- return manifest;
352
+ return {
353
+ manifest,
354
+ requiredCapabilities: normalizeAwCapabilities(requiredCapabilities),
355
+ projections,
356
+ };
357
+ }
358
+ async function materializeArtifactRuntimeImports(projections) {
359
+ for (const projection of projections) {
360
+ await fs.ensureDir(path.dirname(projection.targetPath));
361
+ await fs.copyFile(projection.sourcePath, projection.targetPath);
362
+ if (await calculateFileDigest(projection.targetPath) !== projection.sourceDigest) {
363
+ throw new Error(`Artifact runtime import digest mismatch at "${projection.label}".`);
364
+ }
365
+ }
366
+ }
367
+ async function injectRequirementsReceipts(options) {
368
+ const receipt = createAwPluginRequirementsReceipt({ name: options.plugin.manifest.name, version: options.plugin.manifest.version }, options.requiredCapabilities);
369
+ for (const relativeRoot of ['claude/skills', 'codex/skills', 'agent-skills/skills']) {
370
+ const skillsRoot = path.join(options.outputRoot, relativeRoot);
371
+ if (!(await fs.pathExists(skillsRoot)))
372
+ continue;
373
+ for (const entry of await fs.readdir(skillsRoot, { withFileTypes: true })) {
374
+ if (!entry.isDirectory() || entry.isSymbolicLink())
375
+ continue;
376
+ const skillRoot = path.join(skillsRoot, entry.name);
377
+ if (!(await fs.pathExists(path.join(skillRoot, 'SKILL.md'))))
378
+ continue;
379
+ const receiptPath = path.join(skillRoot, 'aw-plugin-requirements.json');
380
+ if (await fs.pathExists(receiptPath)) {
381
+ throw new Error(`Reserved runtime requirements receipt conflicts with source content: ${receiptPath}`);
382
+ }
383
+ await writeJsonFile(receiptPath, receipt);
384
+ }
385
+ }
323
386
  }
324
387
  async function copySlashCommandAsset(pluginRoot, outputRoot, skillName, sourceRelativePath, generatedRelativePath) {
325
388
  const sourcePath = path.join(pluginRoot, sourceRelativePath);
@@ -433,30 +496,13 @@ async function addDeclaredLspServerFiles(plugin, value, targetFiles) {
433
496
  }
434
497
  return value;
435
498
  }
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) {
499
+ function addPreApplyRuntimeEntry(plugin, rootFiles, nodeEntries) {
500
+ const entry = plugin.manifest.scripts?.preApply;
501
+ if (!entry)
443
502
  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
- }
503
+ const filePath = stripDotSlash(entry.path);
504
+ rootFiles.add(filePath);
505
+ nodeEntries.add(filePath);
460
506
  }
461
507
  function addHelperRuntimeEntries(plugin, rootFiles, nodeEntries) {
462
508
  const configHelper = plugin.manifest.scripts?.helpers?.config;
@@ -520,6 +566,9 @@ async function collectRuntimeClosureFiles(plugin, entryFiles) {
520
566
  entryFiles,
521
567
  dependencies,
522
568
  devDependencies,
569
+ runtimeConfigSkillRoots: (plugin.manifest.artifacts?.targets ?? [])
570
+ .filter((target) => target.runtimeConfig !== undefined)
571
+ .flatMap((target) => target.sourceDirs ?? []),
523
572
  });
524
573
  if (scan.errors.length > 0) {
525
574
  throw new Error(`Invalid scripts.node runtime imports:\n${scan.errors.join('\n')}`);
@@ -529,12 +578,25 @@ async function collectRuntimeClosureFiles(plugin, entryFiles) {
529
578
  async function collectAwRuntimeFiles(plugin) {
530
579
  const rootFiles = new Set();
531
580
  const nodeEntries = new Set();
532
- addLifecycleRuntimeEntries(plugin, rootFiles, nodeEntries);
581
+ addPreApplyRuntimeEntry(plugin, rootFiles, nodeEntries);
533
582
  addHelperRuntimeEntries(plugin, rootFiles, nodeEntries);
534
583
  addArtifactRendererRuntimeEntry(plugin, rootFiles, nodeEntries);
535
- for (const filePath of await collectRuntimeClosureFiles(plugin, [...nodeEntries])) {
584
+ if (plugin.manifest.nativeTools) {
585
+ rootFiles.add(stripDotSlash(plugin.manifest.nativeTools.reader));
586
+ }
587
+ const closureFiles = await collectRuntimeClosureFiles(plugin, [...nodeEntries]);
588
+ for (const filePath of closureFiles) {
536
589
  rootFiles.add(filePath);
537
590
  }
591
+ const configHelper = plugin.manifest.scripts?.helpers?.config;
592
+ if (configHelper) {
593
+ const helperDir = path.posix.dirname(stripDotSlash(configHelper));
594
+ const re2RuntimeRoot = path.posix.join(helperDir, 're2-wasm');
595
+ if (closureFiles.includes(path.posix.join(re2RuntimeRoot, 'build/src/re2.js'))) {
596
+ rootFiles.add(path.posix.join(re2RuntimeRoot, 'build/wasm/re2.wasm'));
597
+ rootFiles.add(path.posix.join(re2RuntimeRoot, 'LICENSE'));
598
+ }
599
+ }
538
600
  return [...rootFiles].sort();
539
601
  }
540
602
  function packageRootPath(plugin) {
@@ -718,6 +780,8 @@ function toRuntimeImportProvenance(resolution) {
718
780
  name: resolution.name,
719
781
  source: resolution.source,
720
782
  sourceDigest: resolution.sourceDigest,
783
+ requiredCapabilities: resolution.requiredCapabilities,
784
+ capabilitySetDigest: resolution.capabilitySetDigest,
721
785
  };
722
786
  }
723
787
  async function resolveOwnSkillRuntimeSource(plugin, source) {
@@ -823,6 +887,8 @@ async function projectSkillRuntimeFiles(options) {
823
887
  name: entry.source,
824
888
  source: entry.source,
825
889
  sourceDigest,
890
+ requiredCapabilities: [],
891
+ capabilitySetDigest: computeAwCapabilitySetDigest([]),
826
892
  };
827
893
  }
828
894
  else {
@@ -842,31 +908,37 @@ async function projectSkillRuntimeFiles(options) {
842
908
  runtimeProvenance = toRuntimeImportProvenance(resolution);
843
909
  }
844
910
  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
911
  projections.push({
855
912
  bindingKey,
856
913
  canonicalSource,
914
+ sourcePath,
915
+ targetPath,
857
916
  provenance: {
858
917
  ...runtimeProvenance,
859
918
  platform,
860
919
  distribution,
861
920
  skill: entry.skill,
862
921
  target: entry.target,
863
- targetDigest,
922
+ targetDigest: sourceDigest,
864
923
  },
865
924
  });
866
925
  }
867
926
  }
868
927
  return projections;
869
928
  }
929
+ async function materializeSkillRuntimeFiles(projections) {
930
+ for (const projection of projections) {
931
+ if (await fs.pathExists(projection.targetPath)) {
932
+ const surface = projection.provenance.platform ?? projection.provenance.distribution;
933
+ throw new Error(`Invalid buildConfig.skillRuntimeFiles: bundle target already exists at "${surface}:${projection.provenance.skill}/${projection.provenance.target}".`);
934
+ }
935
+ await fs.ensureDir(path.dirname(projection.targetPath));
936
+ await fs.copyFile(projection.sourcePath, projection.targetPath);
937
+ if (await calculateFileDigest(projection.targetPath) !== projection.provenance.sourceDigest) {
938
+ throw new Error(`Canonical source "${projection.provenance.source}" changed during runtime Skill projection.`);
939
+ }
940
+ }
941
+ }
870
942
  function hasSameCanonicalSource(left, right) {
871
943
  return left.rootPath === right.rootPath
872
944
  && left.rootRealPath === right.rootRealPath
@@ -883,6 +955,9 @@ async function validateSkillRuntimeProjectionSources(projections) {
883
955
  || existing.provenance.name !== projection.provenance.name
884
956
  || existing.provenance.source !== projection.provenance.source
885
957
  || existing.provenance.sourceDigest !== projection.provenance.sourceDigest
958
+ || existing.provenance.capabilitySetDigest !== projection.provenance.capabilitySetDigest
959
+ || JSON.stringify(existing.provenance.requiredCapabilities)
960
+ !== JSON.stringify(projection.provenance.requiredCapabilities)
886
961
  || !hasSameCanonicalSource(existing.canonicalSource, projection.canonicalSource))) {
887
962
  throw new Error(`Canonical source "${projection.provenance.source}" changed during runtime Skill projection.`);
888
963
  }
@@ -912,6 +987,9 @@ async function validateBuildImportProjectionSources(projections) {
912
987
  || existing.provenance.name !== projection.provenance.name
913
988
  || existing.provenance.source !== projection.provenance.source
914
989
  || existing.provenance.sourceDigest !== projection.provenance.sourceDigest
990
+ || existing.provenance.capabilitySetDigest !== projection.provenance.capabilitySetDigest
991
+ || JSON.stringify(existing.provenance.requiredCapabilities)
992
+ !== JSON.stringify(projection.provenance.requiredCapabilities)
915
993
  || !hasSameCanonicalSource(existing.canonicalSource, projection.canonicalSource))) {
916
994
  throw new Error(`Catalog runtime import "${projection.provenance.provider}/${projection.provenance.name}" changed during build import projection.`);
917
995
  }
@@ -930,7 +1008,7 @@ async function validateBuildImportProjectionSources(projections) {
930
1008
  }
931
1009
  }
932
1010
  }
933
- async function createStagedPlugin(plugin, runner, resolver) {
1011
+ async function createStagedPlugin(plugin, runner, resolver, commandEnv = process.env) {
934
1012
  const stagingRoot = await fs.mkdtemp(assertLocalPluginStagingPathForTests(path.join(os.tmpdir(), 'aw-plugin-staging-'), 'local plugin bundle staging root'));
935
1013
  const stagingPluginRoot = assertLocalPluginStagingPathForTests(path.join(stagingRoot, 'plugin'), 'local plugin staged plugin root');
936
1014
  try {
@@ -940,19 +1018,25 @@ async function createStagedPlugin(plugin, runner, resolver) {
940
1018
  && !isMacOsMetadataName(path.basename(source));
941
1019
  },
942
1020
  });
1021
+ const nativeReader = await preparePluginNativeTools(stagingPluginRoot, plugin.manifest);
943
1022
  const sourceBuild = plugin.manifest.scripts?.node?.build;
944
1023
  const declaredBuildImports = plugin.manifest.buildConfig?.buildImports ?? [];
945
1024
  if (declaredBuildImports.length > 0 && !sourceBuild) {
946
1025
  throw new Error(`Invalid plugin "${plugin.manifest.name}": buildConfig.buildImports requires scripts.node.build.`);
947
1026
  }
948
- const buildEnv = { ...process.env };
1027
+ const buildEnv = { ...commandEnv };
1028
+ for (const key of Object.keys(buildEnv))
1029
+ if (key.toUpperCase() === 'AW_PLUGIN_NATIVE_READER')
1030
+ delete buildEnv[key];
1031
+ if (nativeReader)
1032
+ buildEnv.AW_PLUGIN_NATIVE_READER = nativeReader;
949
1033
  const buildImportProvenance = [];
950
1034
  const buildImportProjections = [];
951
1035
  for (const buildImport of declaredBuildImports) {
952
1036
  if (!resolver) {
953
1037
  throw new Error(`Cannot resolve buildConfig.buildImports for plugin "${plugin.manifest.name}": catalog runtime import resolver is required.`);
954
1038
  }
955
- if (Object.hasOwn(process.env, buildImport.env)) {
1039
+ if (Object.hasOwn(commandEnv, buildImport.env)) {
956
1040
  throw new Error(`Invalid buildConfig.buildImports env "${buildImport.env}": refusing to overwrite an existing environment variable.`);
957
1041
  }
958
1042
  const resolution = await resolver.resolve({
@@ -1044,34 +1128,119 @@ async function resolveBuildPlugin(plugin, options) {
1044
1128
  cleanup: async () => { },
1045
1129
  };
1046
1130
  }
1047
- return createStagedPlugin(plugin, options.stagingRunner, options.runtimeResolver);
1131
+ return createStagedPlugin(plugin, options.stagingRunner, options.runtimeResolver, options.commandEnv);
1048
1132
  }
1049
1133
  export async function prepareLocalPluginBundleSource(plugin, options = {}) {
1050
1134
  await assertPluginInputTree(plugin.rootDir);
1051
1135
  const buildOptions = {
1052
1136
  buildMode: options.buildMode ?? 'staging',
1053
- stagingRunner: options.stagingRunner ?? defaultStagingRunner,
1137
+ stagingRunner: options.stagingRunner
1138
+ ?? createDefaultStagingRunner(options.commandEnv ?? process.env),
1139
+ commandEnv: options.commandEnv,
1054
1140
  runtimeResolver: options.runtimeResolver,
1055
1141
  preparedRuntimeContext: undefined,
1056
1142
  };
1057
1143
  return resolveBuildPlugin(plugin, buildOptions);
1058
1144
  }
1145
+ function assertPluginRequirementsSupported(pluginName, requirements, strictRequirements = false) {
1146
+ if (requirements.unsupportedByCurrentAw.length > 0) {
1147
+ throw new AwCapabilityUnsupportedError(pluginName, requirements.unsupportedByCurrentAw);
1148
+ }
1149
+ if (!strictRequirements)
1150
+ return;
1151
+ const satisfied = new Set([...requirements.declared, ...requirements.derived]);
1152
+ const strictObservations = requirements.observations.filter((observation) => (observation.code !== 'aw-command-detected'
1153
+ || observation.capability === undefined
1154
+ || !satisfied.has(observation.capability)));
1155
+ if (strictObservations.length > 0) {
1156
+ const error = new Error(`Official strict requirements failed: ${strictObservations.map((observation) => (`plugin=${JSON.stringify(pluginName)} path=${JSON.stringify(observation.path)} `
1157
+ + `command=${JSON.stringify(observation.command ?? '<dynamic>')} `
1158
+ + `capability=${JSON.stringify(observation.capability ?? (observation.code === 'aw-command-dynamic' ? '<dynamic>' : '<unmapped>'))}`)).join('; ')}`);
1159
+ error.code = 'awCapabilityStrictRequirements';
1160
+ error.observations = strictObservations;
1161
+ throw error;
1162
+ }
1163
+ }
1164
+ function assertRequiredCapabilitiesSupported(pluginName, requiredCapabilities) {
1165
+ const support = checkAwCapabilitySupport(requiredCapabilities, IMPLEMENTED_AW_CAPABILITIES);
1166
+ if (!support.supported) {
1167
+ throw new AwCapabilityUnsupportedError(pluginName, support.missing);
1168
+ }
1169
+ }
1059
1170
  export async function bundleLocalPlugin(plugin, outputRoot, options = {}) {
1171
+ const historicalComparison = options.runtimeSkillClosureValidation === 'historical';
1060
1172
  const buildOptions = {
1061
1173
  buildMode: options.buildMode ?? 'build-free',
1062
- stagingRunner: options.stagingRunner ?? defaultStagingRunner,
1174
+ stagingRunner: options.stagingRunner
1175
+ ?? createDefaultStagingRunner(options.commandEnv ?? process.env),
1176
+ commandEnv: options.commandEnv,
1063
1177
  runtimeResolver: options.runtimeResolver,
1064
1178
  preparedRuntimeContext: options.preparedRuntimeContext,
1065
1179
  };
1066
1180
  await assertPluginInputTree(plugin.rootDir);
1181
+ const sourceRequirements = await resolvePluginRequirements({
1182
+ pluginRoot: plugin.rootDir,
1183
+ manifest: plugin.manifest,
1184
+ implementedCapabilities: IMPLEMENTED_AW_CAPABILITIES,
1185
+ });
1186
+ if (!historicalComparison) {
1187
+ assertPluginRequirementsSupported(plugin.manifest.name, sourceRequirements, options.strictRequirements ?? false);
1188
+ }
1067
1189
  await fs.remove(outputRoot);
1068
1190
  const buildPlugin = await resolveBuildPlugin(plugin, buildOptions);
1069
1191
  try {
1070
1192
  plugin = buildPlugin.plugin;
1193
+ const requirements = await resolvePluginRequirements({
1194
+ pluginRoot: plugin.rootDir,
1195
+ manifest: plugin.manifest,
1196
+ implementedCapabilities: IMPLEMENTED_AW_CAPABILITIES,
1197
+ });
1198
+ if (!historicalComparison) {
1199
+ assertPluginRequirementsSupported(plugin.manifest.name, requirements, options.strictRequirements ?? false);
1200
+ }
1071
1201
  assertManifestPlatformSupport(plugin.manifest.name, plugin.manifest);
1072
- await fs.ensureDir(outputRoot);
1073
1202
  const supportedPlatforms = resolveSupportedPlatforms(plugin.manifest);
1074
1203
  await assertSkillRuntimeProjectionTargets(plugin);
1204
+ const skillRuntimeFileProjections = await projectSkillRuntimeFiles({
1205
+ plugin,
1206
+ outputRoot,
1207
+ supportedPlatforms,
1208
+ resolver: buildPlugin.runtimeContext.resolver,
1209
+ });
1210
+ const skillRuntimeFiles = skillRuntimeFileProjections.map(({ provenance }) => provenance);
1211
+ const portableRuntimeFiles = skillRuntimeFiles
1212
+ .filter((entry) => entry.distribution === 'agent-skills')
1213
+ .map((entry) => ({
1214
+ skill: entry.skill,
1215
+ target: entry.target,
1216
+ path: `./agent-skills/skills/${entry.skill}/${entry.target}`,
1217
+ digest: entry.targetDigest,
1218
+ provider: entry.provider,
1219
+ providerVersion: entry.providerVersion,
1220
+ exportName: entry.name,
1221
+ source: entry.source,
1222
+ sourceDigest: entry.sourceDigest,
1223
+ requiredCapabilities: entry.requiredCapabilities,
1224
+ capabilitySetDigest: entry.capabilitySetDigest,
1225
+ }));
1226
+ const artifactRuntimeProjection = await resolveArtifactRuntimeImports({
1227
+ plugin,
1228
+ outputRoot,
1229
+ resolver: buildPlugin.runtimeContext.resolver,
1230
+ });
1231
+ const finalEffective = normalizeAwCapabilities([
1232
+ ...requirements.effective,
1233
+ ...skillRuntimeFiles.flatMap((entry) => entry.requiredCapabilities),
1234
+ ...artifactRuntimeProjection.requiredCapabilities,
1235
+ ]);
1236
+ if (!historicalComparison) {
1237
+ assertRequiredCapabilitiesSupported(plugin.manifest.name, finalEffective);
1238
+ }
1239
+ artifactRuntimeProjection.manifest.requires = {
1240
+ aw: { capabilities: finalEffective },
1241
+ };
1242
+ const bundleManifest = artifactRuntimeProjection.manifest;
1243
+ await fs.ensureDir(outputRoot);
1075
1244
  const platformFiles = {};
1076
1245
  const platformManifests = {};
1077
1246
  const buildConfig = plugin.manifest.buildConfig;
@@ -1186,26 +1355,7 @@ export async function bundleLocalPlugin(plugin, outputRoot, options = {}) {
1186
1355
  }
1187
1356
  }
1188
1357
  }
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
- }));
1358
+ await materializeSkillRuntimeFiles(skillRuntimeFileProjections);
1209
1359
  await copyPortableStaticSkills(plugin, outputRoot);
1210
1360
  if (await fs.pathExists(path.join(plugin.rootDir, 'README.md'))) {
1211
1361
  await copyBundleRootFile(plugin.rootDir, outputRoot, 'README.md');
@@ -1214,12 +1364,9 @@ export async function bundleLocalPlugin(plugin, outputRoot, options = {}) {
1214
1364
  await copyBundleRootFile(plugin.rootDir, outputRoot, filePath);
1215
1365
  }
1216
1366
  await copyArtifactSourceDirectories(plugin, outputRoot);
1367
+ await copyManagedCommandPackages(plugin, outputRoot);
1217
1368
  await copyProductionPackageRoot(plugin, outputRoot);
1218
- const bundleManifest = await resolveArtifactRuntimeImports({
1219
- plugin,
1220
- outputRoot,
1221
- resolver: buildPlugin.runtimeContext.resolver,
1222
- });
1369
+ await materializeArtifactRuntimeImports(artifactRuntimeProjection.projections);
1223
1370
  await writeJsonFile(path.join(outputRoot, '.agents-plugin', 'plugin.json'), bundleManifest);
1224
1371
  if (portableRuntimeFiles.length > 0) {
1225
1372
  await writeJsonFile(path.join(outputRoot, '.agents-plugin', 'portable-runtime-files.json'), portableRuntimeFiles);
@@ -1231,6 +1378,11 @@ export async function bundleLocalPlugin(plugin, outputRoot, options = {}) {
1231
1378
  }
1232
1379
  await writeJsonFile(path.join(outputRoot, PLATFORM_MANIFEST_DIRS[platform], 'plugin.json'), manifest);
1233
1380
  }
1381
+ await injectRequirementsReceipts({
1382
+ outputRoot,
1383
+ plugin,
1384
+ requiredCapabilities: finalEffective,
1385
+ });
1234
1386
  await validateSkillRuntimeProjectionSources(skillRuntimeFileProjections);
1235
1387
  await validateSkillRuntimeProjectionFreshness(outputRoot, skillRuntimeFiles.filter((entry) => entry.platform !== undefined));
1236
1388
  await validateGeneratedSkillRuntimeFiles(plugin, outputRoot, supportedPlatforms);