@lesliechan721/aw 0.1.0-beta.5 → 0.1.0-beta.50

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