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

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 +263 -109
  153. package/dist/src/generators/local-plugin.js.map +1 -1
  154. package/dist/src/generators/permissions.d.ts +5 -2
  155. package/dist/src/generators/permissions.js +28 -15
  156. package/dist/src/generators/permissions.js.map +1 -1
  157. package/dist/src/index.d.ts +10 -4
  158. package/dist/src/index.js +1774 -609
  159. package/dist/src/index.js.map +1 -1
  160. package/dist/src/output/command-receipt.d.ts +47 -46
  161. package/dist/src/output/command-receipt.js +277 -79
  162. package/dist/src/output/command-receipt.js.map +1 -1
  163. package/dist/src/output/model.d.ts +3 -44
  164. package/dist/src/output/model.js +1 -144
  165. package/dist/src/output/model.js.map +1 -1
  166. package/dist/src/output/rebuild-progress.js +15 -13
  167. package/dist/src/output/rebuild-progress.js.map +1 -1
  168. package/dist/src/portable/commands.d.ts +46 -7
  169. package/dist/src/portable/commands.js +349 -37
  170. package/dist/src/portable/commands.js.map +1 -1
  171. package/dist/src/portable/materializer.d.ts +17 -4
  172. package/dist/src/portable/materializer.js +186 -41
  173. package/dist/src/portable/materializer.js.map +1 -1
  174. package/dist/src/portable/skills-cli.d.ts +15 -7
  175. package/dist/src/portable/skills-cli.js +74 -20
  176. package/dist/src/portable/skills-cli.js.map +1 -1
  177. package/dist/src/review/eval-source-input.d.ts +43 -0
  178. package/dist/src/review/eval-source-input.js +207 -0
  179. package/dist/src/review/eval-source-input.js.map +1 -0
  180. package/dist/src/review/review-profile.d.ts +17 -0
  181. package/dist/src/review/review-profile.js +234 -0
  182. package/dist/src/review/review-profile.js.map +1 -0
  183. package/dist/src/review/review-selection.d.ts +30 -0
  184. package/dist/src/review/review-selection.js +527 -0
  185. package/dist/src/review/review-selection.js.map +1 -0
  186. package/dist/src/review/review-types.d.ts +68 -0
  187. package/dist/src/review/review-types.js +16 -0
  188. package/dist/src/review/review-types.js.map +1 -0
  189. package/dist/src/review/skill-materialization.d.ts +26 -0
  190. package/dist/src/review/skill-materialization.js +217 -0
  191. package/dist/src/review/skill-materialization.js.map +1 -0
  192. package/dist/src/review/source-binding.d.ts +183 -0
  193. package/dist/src/review/source-binding.js +708 -0
  194. package/dist/src/review/source-binding.js.map +1 -0
  195. package/dist/src/tui/catalog-freshness.d.ts +1 -0
  196. package/dist/src/tui/catalog-freshness.js +2 -0
  197. package/dist/src/tui/catalog-freshness.js.map +1 -0
  198. package/dist/src/tui/catalog-generation.d.ts +21 -0
  199. package/dist/src/tui/catalog-generation.js +156 -0
  200. package/dist/src/tui/catalog-generation.js.map +1 -0
  201. package/dist/src/tui/catalog-sources/projection.d.ts +4 -0
  202. package/dist/src/tui/catalog-sources/projection.js +17 -0
  203. package/dist/src/tui/catalog-sources/projection.js.map +1 -0
  204. package/dist/src/tui/catalog-sources/review.d.ts +3 -0
  205. package/dist/src/tui/catalog-sources/review.js +13 -0
  206. package/dist/src/tui/catalog-sources/review.js.map +1 -0
  207. package/dist/src/tui/catalog-sources/screens.d.ts +12 -0
  208. package/dist/src/tui/catalog-sources/screens.js +40 -0
  209. package/dist/src/tui/catalog-sources/screens.js.map +1 -0
  210. package/dist/src/tui/catalog-sources/session.d.ts +32 -0
  211. package/dist/src/tui/catalog-sources/session.js +300 -0
  212. package/dist/src/tui/catalog-sources/session.js.map +1 -0
  213. package/dist/src/tui/catalog-sources/types.d.ts +54 -0
  214. package/dist/src/tui/catalog-sources/types.js +2 -0
  215. package/dist/src/tui/catalog-sources/types.js.map +1 -0
  216. package/dist/src/tui/catalog-store-task.d.ts +16 -0
  217. package/dist/src/tui/catalog-store-task.js +19 -0
  218. package/dist/src/tui/catalog-store-task.js.map +1 -0
  219. package/dist/src/tui/clipboard.d.ts +13 -0
  220. package/dist/src/tui/clipboard.js +95 -0
  221. package/dist/src/tui/clipboard.js.map +1 -0
  222. package/dist/src/tui/components.d.ts +110 -3
  223. package/dist/src/tui/components.js +183 -36
  224. package/dist/src/tui/components.js.map +1 -1
  225. package/dist/src/tui/config-array-draft.d.ts +29 -0
  226. package/dist/src/tui/config-array-draft.js +48 -0
  227. package/dist/src/tui/config-array-draft.js.map +1 -0
  228. package/dist/src/tui/config-leaf-editor.d.ts +19 -0
  229. package/dist/src/tui/config-leaf-editor.js +212 -0
  230. package/dist/src/tui/config-leaf-editor.js.map +1 -0
  231. package/dist/src/tui/config-references.d.ts +34 -0
  232. package/dist/src/tui/config-references.js +70 -0
  233. package/dist/src/tui/config-references.js.map +1 -0
  234. package/dist/src/tui/config-value-presentation.d.ts +20 -0
  235. package/dist/src/tui/config-value-presentation.js +104 -0
  236. package/dist/src/tui/config-value-presentation.js.map +1 -0
  237. package/dist/src/tui/console-app-v4.d.ts +14 -4
  238. package/dist/src/tui/console-app-v4.js +9205 -1951
  239. package/dist/src/tui/console-app-v4.js.map +1 -1
  240. package/dist/src/tui/content-item-card.d.ts +13 -0
  241. package/dist/src/tui/content-item-card.js +51 -0
  242. package/dist/src/tui/content-item-card.js.map +1 -0
  243. package/dist/src/tui/controller-runtime.d.ts +10 -2
  244. package/dist/src/tui/controller-runtime.js +3289 -388
  245. package/dist/src/tui/controller-runtime.js.map +1 -1
  246. package/dist/src/tui/controller.d.ts +622 -45
  247. package/dist/src/tui/controller.js +3589 -768
  248. package/dist/src/tui/controller.js.map +1 -1
  249. package/dist/src/tui/dependency-graph-view.d.ts +39 -0
  250. package/dist/src/tui/dependency-graph-view.js +121 -0
  251. package/dist/src/tui/dependency-graph-view.js.map +1 -0
  252. package/dist/src/tui/dependency-graph.d.ts +81 -0
  253. package/dist/src/tui/dependency-graph.js +452 -0
  254. package/dist/src/tui/dependency-graph.js.map +1 -0
  255. package/dist/src/tui/diagnostic-projection.d.ts +23 -0
  256. package/dist/src/tui/diagnostic-projection.js +595 -0
  257. package/dist/src/tui/diagnostic-projection.js.map +1 -0
  258. package/dist/src/tui/diagnostics.d.ts +3 -3
  259. package/dist/src/tui/diagnostics.js +14 -2
  260. package/dist/src/tui/diagnostics.js.map +1 -1
  261. package/dist/src/tui/entity-cards.d.ts +55 -0
  262. package/dist/src/tui/entity-cards.js +220 -0
  263. package/dist/src/tui/entity-cards.js.map +1 -0
  264. package/dist/src/tui/glossary.d.ts +23 -0
  265. package/dist/src/tui/glossary.js +42 -0
  266. package/dist/src/tui/glossary.js.map +1 -0
  267. package/dist/src/tui/index.d.ts +6 -1
  268. package/dist/src/tui/index.js +5 -1
  269. package/dist/src/tui/index.js.map +1 -1
  270. package/dist/src/tui/input-display.d.ts +9 -0
  271. package/dist/src/tui/input-display.js +58 -0
  272. package/dist/src/tui/input-display.js.map +1 -0
  273. package/dist/src/tui/keys.d.ts +44 -0
  274. package/dist/src/tui/keys.js +43 -15
  275. package/dist/src/tui/keys.js.map +1 -1
  276. package/dist/src/tui/lifecycle-action-view.d.ts +6 -0
  277. package/dist/src/tui/lifecycle-action-view.js +36 -0
  278. package/dist/src/tui/lifecycle-action-view.js.map +1 -0
  279. package/dist/src/tui/model.d.ts +224 -31
  280. package/dist/src/tui/model.js +1510 -397
  281. package/dist/src/tui/model.js.map +1 -1
  282. package/dist/src/tui/operation-diagnostic-screens.d.ts +8 -0
  283. package/dist/src/tui/operation-diagnostic-screens.js +71 -0
  284. package/dist/src/tui/operation-diagnostic-screens.js.map +1 -0
  285. package/dist/src/tui/operation-history.d.ts +81 -0
  286. package/dist/src/tui/operation-history.js +136 -0
  287. package/dist/src/tui/operation-history.js.map +1 -0
  288. package/dist/src/tui/operation-review-planner.d.ts +21 -0
  289. package/dist/src/tui/operation-review-planner.js +1392 -0
  290. package/dist/src/tui/operation-review-planner.js.map +1 -0
  291. package/dist/src/tui/plugin-content.d.ts +31 -0
  292. package/dist/src/tui/plugin-content.js +680 -0
  293. package/dist/src/tui/plugin-content.js.map +1 -0
  294. package/dist/src/tui/plugin-detail.d.ts +52 -0
  295. package/dist/src/tui/plugin-detail.js +165 -0
  296. package/dist/src/tui/plugin-detail.js.map +1 -0
  297. package/dist/src/tui/plugin-write-task.d.ts +69 -0
  298. package/dist/src/tui/plugin-write-task.js +286 -0
  299. package/dist/src/tui/plugin-write-task.js.map +1 -0
  300. package/dist/src/tui/project-inventory.d.ts +68 -0
  301. package/dist/src/tui/project-inventory.js +203 -0
  302. package/dist/src/tui/project-inventory.js.map +1 -0
  303. package/dist/src/tui/prompt.js +4 -15
  304. package/dist/src/tui/prompt.js.map +1 -1
  305. package/dist/src/tui/query-header.d.ts +30 -0
  306. package/dist/src/tui/query-header.js +40 -0
  307. package/dist/src/tui/query-header.js.map +1 -0
  308. package/dist/src/tui/reader.d.ts +37 -0
  309. package/dist/src/tui/reader.js +47 -0
  310. package/dist/src/tui/reader.js.map +1 -0
  311. package/dist/src/tui/router.d.ts +197 -10
  312. package/dist/src/tui/router.js +338 -50
  313. package/dist/src/tui/router.js.map +1 -1
  314. package/dist/src/tui/screen-registry.d.ts +701 -0
  315. package/dist/src/tui/screen-registry.js +230 -0
  316. package/dist/src/tui/screen-registry.js.map +1 -0
  317. package/dist/src/tui/session-console-app.d.ts +6 -0
  318. package/dist/src/tui/session-console-app.js +13 -0
  319. package/dist/src/tui/session-console-app.js.map +1 -0
  320. package/dist/src/tui/session-host.d.ts +45 -0
  321. package/dist/src/tui/session-host.js +209 -0
  322. package/dist/src/tui/session-host.js.map +1 -0
  323. package/dist/src/tui/source-detail-card.d.ts +29 -0
  324. package/dist/src/tui/source-detail-card.js +45 -0
  325. package/dist/src/tui/source-detail-card.js.map +1 -0
  326. package/dist/src/tui/source-ref-presets.d.ts +3 -0
  327. package/dist/src/tui/source-ref-presets.js +11 -0
  328. package/dist/src/tui/source-ref-presets.js.map +1 -0
  329. package/dist/src/tui/theme.d.ts +12 -0
  330. package/dist/src/tui/theme.js +12 -0
  331. package/dist/src/tui/theme.js.map +1 -1
  332. package/dist/src/tui/viewport.d.ts +1 -0
  333. package/dist/src/tui/viewport.js +23 -0
  334. package/dist/src/tui/viewport.js.map +1 -1
  335. package/dist/src/tui/views.js +31 -3
  336. package/dist/src/tui/views.js.map +1 -1
  337. package/dist/src/tui/wizard.js +37 -13
  338. package/dist/src/tui/wizard.js.map +1 -1
  339. package/dist/src/types.d.ts +264 -21
  340. package/dist/src/types.js +1 -0
  341. package/dist/src/types.js.map +1 -1
  342. package/dist/src/utils/agent-version.d.ts +7 -1
  343. package/dist/src/utils/agent-version.js +36 -7
  344. package/dist/src/utils/agent-version.js.map +1 -1
  345. package/dist/src/utils/artifact-plan.d.ts +8 -6
  346. package/dist/src/utils/artifact-plan.js +67 -13
  347. package/dist/src/utils/artifact-plan.js.map +1 -1
  348. package/dist/src/utils/artifact-renderer.d.ts +24 -10
  349. package/dist/src/utils/artifact-renderer.js +230 -220
  350. package/dist/src/utils/artifact-renderer.js.map +1 -1
  351. package/dist/src/utils/artifact-request.d.ts +32 -0
  352. package/dist/src/utils/artifact-request.js +90 -0
  353. package/dist/src/utils/artifact-request.js.map +1 -0
  354. package/dist/src/utils/artifact-sources.d.ts +4 -0
  355. package/dist/src/utils/artifact-sources.js +17 -0
  356. package/dist/src/utils/artifact-sources.js.map +1 -1
  357. package/dist/src/utils/aw-home-mutation-lock.d.ts +1 -0
  358. package/dist/src/utils/aw-home-mutation-lock.js +32 -4
  359. package/dist/src/utils/aw-home-mutation-lock.js.map +1 -1
  360. package/dist/src/utils/bundle-integrity.d.ts +0 -1
  361. package/dist/src/utils/bundle-integrity.js +0 -25
  362. package/dist/src/utils/bundle-integrity.js.map +1 -1
  363. package/dist/src/utils/bundle-layout.js +29 -29
  364. package/dist/src/utils/bundle-layout.js.map +1 -1
  365. package/dist/src/utils/catalog-capability-projection.d.ts +8 -0
  366. package/dist/src/utils/catalog-capability-projection.js +14 -0
  367. package/dist/src/utils/catalog-capability-projection.js.map +1 -0
  368. package/dist/src/utils/catalog-digests.d.ts +10 -0
  369. package/dist/src/utils/catalog-digests.js +57 -20
  370. package/dist/src/utils/catalog-digests.js.map +1 -1
  371. package/dist/src/utils/catalog-generation-control-snapshot.d.ts +11 -0
  372. package/dist/src/utils/catalog-generation-control-snapshot.js +45 -0
  373. package/dist/src/utils/catalog-generation-control-snapshot.js.map +1 -0
  374. package/dist/src/utils/catalog-generation-error.d.ts +16 -0
  375. package/dist/src/utils/catalog-generation-error.js +30 -0
  376. package/dist/src/utils/catalog-generation-error.js.map +1 -0
  377. package/dist/src/utils/catalog-generation-resolver.d.ts +44 -0
  378. package/dist/src/utils/catalog-generation-resolver.js +273 -0
  379. package/dist/src/utils/catalog-generation-resolver.js.map +1 -0
  380. package/dist/src/utils/catalog-generation-service.d.ts +172 -0
  381. package/dist/src/utils/catalog-generation-service.js +1271 -0
  382. package/dist/src/utils/catalog-generation-service.js.map +1 -0
  383. package/dist/src/utils/catalog-generation-state.d.ts +22 -0
  384. package/dist/src/utils/catalog-generation-state.js +192 -0
  385. package/dist/src/utils/catalog-generation-state.js.map +1 -0
  386. package/dist/src/utils/catalog-generation-store.d.ts +58 -0
  387. package/dist/src/utils/catalog-generation-store.js +452 -0
  388. package/dist/src/utils/catalog-generation-store.js.map +1 -0
  389. package/dist/src/utils/catalog-manifest-v7.d.ts +5 -0
  390. package/dist/src/utils/{catalog-manifest-v4.js → catalog-manifest-v7.js} +35 -43
  391. package/dist/src/utils/catalog-manifest-v7.js.map +1 -0
  392. package/dist/src/utils/catalog-operation-context.d.ts +20 -0
  393. package/dist/src/utils/catalog-operation-context.js +142 -0
  394. package/dist/src/utils/catalog-operation-context.js.map +1 -0
  395. package/dist/src/utils/catalog-public-error.d.ts +7 -3
  396. package/dist/src/utils/catalog-public-error.js +28 -8
  397. package/dist/src/utils/catalog-public-error.js.map +1 -1
  398. package/dist/src/utils/catalog-runtime-projection.d.ts +3 -0
  399. package/dist/src/utils/catalog-runtime-projection.js +5 -40
  400. package/dist/src/utils/catalog-runtime-projection.js.map +1 -1
  401. package/dist/src/utils/catalog-snapshot.d.ts +5 -3
  402. package/dist/src/utils/catalog-snapshot.js +11 -3
  403. package/dist/src/utils/catalog-snapshot.js.map +1 -1
  404. package/dist/src/utils/catalog-source-identity.d.ts +1 -0
  405. package/dist/src/utils/catalog-source-identity.js +21 -2
  406. package/dist/src/utils/catalog-source-identity.js.map +1 -1
  407. package/dist/src/utils/catalog-source-impact.d.ts +21 -0
  408. package/dist/src/utils/catalog-source-impact.js +344 -0
  409. package/dist/src/utils/catalog-source-impact.js.map +1 -0
  410. package/dist/src/utils/catalog-source-references.d.ts +3 -2
  411. package/dist/src/utils/catalog-source-references.js +195 -347
  412. package/dist/src/utils/catalog-source-references.js.map +1 -1
  413. package/dist/src/utils/catalog-sources.d.ts +15 -1
  414. package/dist/src/utils/catalog-sources.js +206 -27
  415. package/dist/src/utils/catalog-sources.js.map +1 -1
  416. package/dist/src/utils/claude-skills-root.d.ts +8 -0
  417. package/dist/src/utils/claude-skills-root.js +76 -0
  418. package/dist/src/utils/claude-skills-root.js.map +1 -0
  419. package/dist/src/utils/codex-config.d.ts +2 -0
  420. package/dist/src/utils/codex-config.js +26 -5
  421. package/dist/src/utils/codex-config.js.map +1 -1
  422. package/dist/src/utils/codex-manager.d.ts +79 -0
  423. package/dist/src/utils/codex-manager.js +735 -0
  424. package/dist/src/utils/codex-manager.js.map +1 -0
  425. package/dist/src/utils/codex-marketplace-path.d.ts +5 -0
  426. package/dist/src/utils/codex-marketplace-path.js +45 -0
  427. package/dist/src/utils/codex-marketplace-path.js.map +1 -0
  428. package/dist/src/utils/codex-native-observation.d.ts +49 -0
  429. package/dist/src/utils/codex-native-observation.js +154 -0
  430. package/dist/src/utils/codex-native-observation.js.map +1 -0
  431. package/dist/src/utils/codex-native-render-receipt.d.ts +40 -0
  432. package/dist/src/utils/codex-native-render-receipt.js +205 -0
  433. package/dist/src/utils/codex-native-render-receipt.js.map +1 -0
  434. package/dist/src/utils/codex-reconciler.d.ts +126 -0
  435. package/dist/src/utils/codex-reconciler.js +298 -0
  436. package/dist/src/utils/codex-reconciler.js.map +1 -0
  437. package/dist/src/utils/codex-shared-native.d.ts +43 -0
  438. package/dist/src/utils/codex-shared-native.js +81 -0
  439. package/dist/src/utils/codex-shared-native.js.map +1 -0
  440. package/dist/src/utils/codex-skill-staging.d.ts +2 -0
  441. package/dist/src/utils/codex-skill-staging.js.map +1 -1
  442. package/dist/src/utils/codex-skills-root.d.ts +4 -0
  443. package/dist/src/utils/codex-skills-root.js +25 -0
  444. package/dist/src/utils/codex-skills-root.js.map +1 -0
  445. package/dist/src/utils/codex-surface-analysis.d.ts +46 -0
  446. package/dist/src/utils/codex-surface-analysis.js +247 -0
  447. package/dist/src/utils/codex-surface-analysis.js.map +1 -0
  448. package/dist/src/utils/dynamic-skill-tree.d.ts +5 -0
  449. package/dist/src/utils/dynamic-skill-tree.js +56 -7
  450. package/dist/src/utils/dynamic-skill-tree.js.map +1 -1
  451. package/dist/src/utils/git-catalog-provider.d.ts +16 -0
  452. package/dist/src/utils/git-catalog-provider.js +177 -145
  453. package/dist/src/utils/git-catalog-provider.js.map +1 -1
  454. package/dist/src/utils/local-marketplace.d.ts +27 -1
  455. package/dist/src/utils/local-marketplace.js +434 -84
  456. package/dist/src/utils/local-marketplace.js.map +1 -1
  457. package/dist/src/utils/managed-command-closure.d.ts +3 -0
  458. package/dist/src/utils/managed-command-closure.js +35 -0
  459. package/dist/src/utils/managed-command-closure.js.map +1 -0
  460. package/dist/src/utils/managed-command-evidence.d.ts +7 -0
  461. package/dist/src/utils/managed-command-evidence.js +86 -0
  462. package/dist/src/utils/managed-command-evidence.js.map +1 -0
  463. package/dist/src/utils/managed-command-materialization.d.ts +115 -0
  464. package/dist/src/utils/managed-command-materialization.js +359 -0
  465. package/dist/src/utils/managed-command-materialization.js.map +1 -0
  466. package/dist/src/utils/managed-command-runtime.d.ts +33 -0
  467. package/dist/src/utils/managed-command-runtime.js +121 -0
  468. package/dist/src/utils/managed-command-runtime.js.map +1 -0
  469. package/dist/src/utils/managed-command-store.d.ts +128 -0
  470. package/dist/src/utils/managed-command-store.js +589 -0
  471. package/dist/src/utils/managed-command-store.js.map +1 -0
  472. package/dist/src/utils/manifest.d.ts +1 -3
  473. package/dist/src/utils/manifest.js +1 -3
  474. package/dist/src/utils/manifest.js.map +1 -1
  475. package/dist/src/utils/multi-source-catalog.d.ts +3 -9
  476. package/dist/src/utils/multi-source-catalog.js +54 -110
  477. package/dist/src/utils/multi-source-catalog.js.map +1 -1
  478. package/dist/src/utils/native-cli.d.ts +61 -7
  479. package/dist/src/utils/native-cli.js +426 -58
  480. package/dist/src/utils/native-cli.js.map +1 -1
  481. package/dist/src/utils/native-tool-context.d.ts +14 -0
  482. package/dist/src/utils/native-tool-context.js +38 -0
  483. package/dist/src/utils/native-tool-context.js.map +1 -0
  484. package/dist/src/utils/native-tool-review.d.ts +21 -0
  485. package/dist/src/utils/native-tool-review.js +102 -0
  486. package/dist/src/utils/native-tool-review.js.map +1 -0
  487. package/dist/src/utils/orphan-marketplace-cleanup.js +0 -4
  488. package/dist/src/utils/orphan-marketplace-cleanup.js.map +1 -1
  489. package/dist/src/utils/ownership.d.ts +88 -20
  490. package/dist/src/utils/ownership.js +185 -223
  491. package/dist/src/utils/ownership.js.map +1 -1
  492. package/dist/src/utils/path-catalog-provider.d.ts +1 -1
  493. package/dist/src/utils/path-catalog-provider.js +54 -65
  494. package/dist/src/utils/path-catalog-provider.js.map +1 -1
  495. package/dist/src/utils/paths.d.ts +0 -1
  496. package/dist/src/utils/paths.js +0 -1
  497. package/dist/src/utils/paths.js.map +1 -1
  498. package/dist/src/utils/plugin-config-impact.d.ts +40 -0
  499. package/dist/src/utils/plugin-config-impact.js +373 -0
  500. package/dist/src/utils/plugin-config-impact.js.map +1 -0
  501. package/dist/src/utils/plugin-config-write.d.ts +52 -27
  502. package/dist/src/utils/plugin-config-write.js +1112 -298
  503. package/dist/src/utils/plugin-config-write.js.map +1 -1
  504. package/dist/src/utils/plugin-config.d.ts +153 -93
  505. package/dist/src/utils/plugin-config.js +1116 -968
  506. package/dist/src/utils/plugin-config.js.map +1 -1
  507. package/dist/src/utils/plugin-intent-state.d.ts +49 -0
  508. package/dist/src/utils/plugin-intent-state.js +320 -0
  509. package/dist/src/utils/plugin-intent-state.js.map +1 -0
  510. package/dist/src/utils/plugin-scripts.d.ts +66 -125
  511. package/dist/src/utils/plugin-scripts.js +518 -526
  512. package/dist/src/utils/plugin-scripts.js.map +1 -1
  513. package/dist/src/utils/process-lock.js +14 -5
  514. package/dist/src/utils/process-lock.js.map +1 -1
  515. package/dist/src/utils/process-tree.d.ts +2 -2
  516. package/dist/src/utils/process-tree.js +1 -1
  517. package/dist/src/utils/process-tree.js.map +1 -1
  518. package/dist/src/utils/project-boundary.d.ts +11 -13
  519. package/dist/src/utils/project-boundary.js +28 -34
  520. package/dist/src/utils/project-boundary.js.map +1 -1
  521. package/dist/src/utils/rendered-contract.js +18 -1
  522. package/dist/src/utils/rendered-contract.js.map +1 -1
  523. package/dist/src/utils/runtime-config.d.ts +20 -0
  524. package/dist/src/utils/runtime-config.js +75 -0
  525. package/dist/src/utils/runtime-config.js.map +1 -0
  526. package/dist/src/utils/runtime-skill-closure.js +47 -6
  527. package/dist/src/utils/runtime-skill-closure.js.map +1 -1
  528. package/dist/src/utils/safe-fs.d.ts +21 -0
  529. package/dist/src/utils/safe-fs.js +111 -0
  530. package/dist/src/utils/safe-fs.js.map +1 -0
  531. package/dist/src/utils/safe-operation-diagnostic.d.ts +15 -0
  532. package/dist/src/utils/safe-operation-diagnostic.js +33 -0
  533. package/dist/src/utils/safe-operation-diagnostic.js.map +1 -0
  534. package/dist/src/utils/sensitive-content.d.ts +4 -0
  535. package/dist/src/utils/sensitive-content.js +36 -0
  536. package/dist/src/utils/sensitive-content.js.map +1 -0
  537. package/dist/src/utils/state-paths.js +7 -2
  538. package/dist/src/utils/state-paths.js.map +1 -1
  539. package/dist/src/utils/target-eligibility.d.ts +8 -2
  540. package/dist/src/utils/target-eligibility.js +17 -8
  541. package/dist/src/utils/target-eligibility.js.map +1 -1
  542. package/dist/src/utils/windows-claude-shim.d.ts +7 -0
  543. package/dist/src/utils/windows-claude-shim.js +10 -0
  544. package/dist/src/utils/windows-claude-shim.js.map +1 -0
  545. package/dist/src/utils/windows-npm-shim.d.ts +14 -0
  546. package/dist/src/utils/windows-npm-shim.js +140 -0
  547. package/dist/src/utils/windows-npm-shim.js.map +1 -0
  548. package/dist/vitest.config.js +100 -9
  549. package/dist/vitest.config.js.map +1 -1
  550. package/package.json +31 -21
  551. package/dist/authoring/scripts/check-plugin-versions.d.mts +0 -2
  552. package/dist/authoring/scripts/check-plugin-versions.mjs +0 -5
  553. package/dist/authoring/scripts/check-plugin-versions.mjs.map +0 -1
  554. package/dist/scripts/aw-skill-eval-engine.d.ts +0 -13
  555. package/dist/scripts/aw-skill-eval-engine.js +0 -31
  556. package/dist/scripts/aw-skill-eval-engine.js.map +0 -1
  557. package/dist/scripts/codex-eval-app-server.d.ts +0 -89
  558. package/dist/scripts/codex-eval-app-server.js +0 -1228
  559. package/dist/scripts/codex-eval-app-server.js.map +0 -1
  560. package/dist/scripts/codex-eval-isolation.d.ts +0 -61
  561. package/dist/scripts/codex-eval-isolation.js +0 -318
  562. package/dist/scripts/codex-eval-isolation.js.map +0 -1
  563. package/dist/scripts/codex-eval-process-management.d.ts +0 -8
  564. package/dist/scripts/codex-eval-process-management.js +0 -69
  565. package/dist/scripts/codex-eval-process-management.js.map +0 -1
  566. package/dist/scripts/codex-eval-process-tree.d.ts +0 -38
  567. package/dist/scripts/codex-eval-process-tree.js +0 -803
  568. package/dist/scripts/codex-eval-process-tree.js.map +0 -1
  569. package/dist/scripts/codex-eval-runtime-config.d.ts +0 -62
  570. package/dist/scripts/codex-eval-runtime-config.js +0 -843
  571. package/dist/scripts/codex-eval-runtime-config.js.map +0 -1
  572. package/dist/scripts/codex-trigger-eval.d.ts +0 -84
  573. package/dist/scripts/codex-trigger-eval.js +0 -968
  574. package/dist/scripts/codex-trigger-eval.js.map +0 -1
  575. package/dist/scripts/eval-plugin-skills-audited.d.ts +0 -6
  576. package/dist/scripts/eval-plugin-skills-audited.js +0 -261
  577. package/dist/scripts/eval-plugin-skills-audited.js.map +0 -1
  578. package/dist/scripts/eval-plugin-skills.d.ts +0 -45
  579. package/dist/scripts/eval-plugin-skills.js +0 -1586
  580. package/dist/scripts/eval-plugin-skills.js.map +0 -1
  581. package/dist/scripts/eval-run-layout.d.ts +0 -17
  582. package/dist/scripts/eval-run-layout.js +0 -26
  583. package/dist/scripts/eval-run-layout.js.map +0 -1
  584. package/dist/scripts/plugin-eval-contract.d.ts +0 -185
  585. package/dist/scripts/plugin-eval-contract.js +0 -695
  586. package/dist/scripts/plugin-eval-contract.js.map +0 -1
  587. package/dist/scripts/plugin-eval-materializer.d.ts +0 -13
  588. package/dist/scripts/plugin-eval-materializer.js +0 -421
  589. package/dist/scripts/plugin-eval-materializer.js.map +0 -1
  590. package/dist/scripts/skill-reporting.d.ts +0 -212
  591. package/dist/scripts/skill-reporting.js +0 -922
  592. package/dist/scripts/skill-reporting.js.map +0 -1
  593. package/dist/src/commands/review-publication.d.ts +0 -99
  594. package/dist/src/commands/review-publication.js +0 -904
  595. package/dist/src/commands/review-publication.js.map +0 -1
  596. package/dist/src/commands/status-v4.d.ts +0 -123
  597. package/dist/src/commands/status-v4.js +0 -905
  598. package/dist/src/commands/status-v4.js.map +0 -1
  599. package/dist/src/commands/status.d.ts +0 -93
  600. package/dist/src/commands/status.js +0 -442
  601. package/dist/src/commands/status.js.map +0 -1
  602. package/dist/src/utils/active-marketplace-runtime-lock.d.ts +0 -12
  603. package/dist/src/utils/active-marketplace-runtime-lock.js +0 -133
  604. package/dist/src/utils/active-marketplace-runtime-lock.js.map +0 -1
  605. package/dist/src/utils/catalog-manifest-v3.d.ts +0 -2
  606. package/dist/src/utils/catalog-manifest-v3.js +0 -3
  607. package/dist/src/utils/catalog-manifest-v3.js.map +0 -1
  608. package/dist/src/utils/catalog-manifest-v4.d.ts +0 -5
  609. package/dist/src/utils/catalog-manifest-v4.js.map +0 -1
  610. package/dist/src/utils/catalog-source-cache.d.ts +0 -62
  611. package/dist/src/utils/catalog-source-cache.js +0 -296
  612. package/dist/src/utils/catalog-source-cache.js.map +0 -1
  613. package/dist/src/utils/codex-project-surface.d.ts +0 -3
  614. package/dist/src/utils/codex-project-surface.js +0 -49
  615. package/dist/src/utils/codex-project-surface.js.map +0 -1
  616. package/dist/src/utils/lifecycle-active-store.d.ts +0 -175
  617. package/dist/src/utils/lifecycle-active-store.js +0 -1276
  618. package/dist/src/utils/lifecycle-active-store.js.map +0 -1
  619. package/dist/src/utils/plugin-release.d.ts +0 -2
  620. package/dist/src/utils/plugin-release.js +0 -2
  621. package/dist/src/utils/plugin-release.js.map +0 -1
@@ -1,498 +1,93 @@
1
1
  #!/usr/bin/env node
2
2
  import fs from 'node:fs';
3
- import os from 'node:os';
4
3
  import path from 'node:path';
5
4
  import { fileURLToPath } from 'node:url';
6
- const CONFIG_DIR = 'plugin-config';
7
- const LOCAL_CONFIG_DIR = 'plugin-config.local';
8
- const CONFIG_FILE = 'config.json';
9
- const SUPPORTED_TYPES = new Set(['string', 'number', 'boolean', 'enum', 'file', 'directory']);
10
- const REDACTED = '[redacted]';
11
- const SOURCE_IDENTITY_PATTERN = /^sha256:[0-9a-f]{64}$/;
12
5
  function isRecord(value) {
13
6
  return value !== null && typeof value === 'object' && !Array.isArray(value);
14
7
  }
15
8
  function fail(message) {
16
9
  throw new Error(message);
17
10
  }
18
- function readJsonFile(filePath, label) {
19
- let content;
20
- try {
21
- content = fs.readFileSync(filePath, 'utf8');
22
- }
23
- catch {
24
- fail(`Unable to read ${label}.`);
25
- }
11
+ function readContext() {
12
+ const contextPath = process.env.AW_PLUGIN_CONTEXT;
13
+ if (!contextPath)
14
+ fail('AW_PLUGIN_CONTEXT is required.');
15
+ let context;
26
16
  try {
27
- return JSON.parse(content);
17
+ context = JSON.parse(fs.readFileSync(contextPath, 'utf8'));
28
18
  }
29
19
  catch {
30
- fail(`Unable to parse ${label} as JSON.`);
31
- }
32
- }
33
- function safePluginSegment(pluginName) {
34
- if (typeof pluginName !== 'string' || pluginName.trim() === '') {
35
- fail('Invalid plugin config segment.');
36
- }
37
- if (pluginName !== pluginName.trim() ||
38
- pluginName === '.' ||
39
- pluginName === '..' ||
40
- pluginName.includes('/') ||
41
- pluginName.includes('\\') ||
42
- path.posix.isAbsolute(pluginName) ||
43
- path.win32.isAbsolute(pluginName) ||
44
- /^[A-Za-z][A-Za-z0-9+.-]*:/.test(pluginName)) {
45
- fail('Invalid plugin config segment.');
46
- }
47
- return pluginName;
48
- }
49
- function validateConfigSchema(rawSchema) {
50
- if (!isRecord(rawSchema)) {
51
- fail('Plugin manifest does not declare a valid AW config schema.');
52
- }
53
- const schema = {};
54
- for (const [key, rawField] of Object.entries(rawSchema)) {
55
- if (!/^[A-Za-z][A-Za-z0-9_]*$/.test(key)) {
56
- fail('Plugin manifest declares an invalid config key.');
57
- }
58
- if (!isRecord(rawField)) {
59
- fail(`Config schema field "${key}" must be an object.`);
60
- }
61
- const allowed = new Set([
62
- 'type',
63
- 'title',
64
- 'description',
65
- 'default',
66
- 'required',
67
- 'sensitive',
68
- 'values',
69
- 'min',
70
- 'max',
71
- ]);
72
- for (const fieldKey of Object.keys(rawField)) {
73
- if (!allowed.has(fieldKey)) {
74
- fail(`Config schema field "${key}" contains an unsupported property.`);
75
- }
76
- }
77
- if (typeof rawField.type !== 'string' || !SUPPORTED_TYPES.has(rawField.type)) {
78
- fail(`Config schema field "${key}" has an unsupported type.`);
79
- }
80
- if (rawField.required !== undefined && typeof rawField.required !== 'boolean') {
81
- fail(`Config schema field "${key}" has an invalid required flag.`);
82
- }
83
- if (rawField.sensitive !== undefined && typeof rawField.sensitive !== 'boolean') {
84
- fail(`Config schema field "${key}" has an invalid sensitive flag.`);
85
- }
86
- if (rawField.values !== undefined) {
87
- if (rawField.type !== 'enum' || !Array.isArray(rawField.values) || rawField.values.length === 0) {
88
- fail(`Config schema field "${key}" has invalid enum values.`);
89
- }
90
- for (const value of rawField.values) {
91
- if (typeof value !== 'string') {
92
- fail(`Config schema field "${key}" has a non-string enum value.`);
93
- }
94
- }
95
- }
96
- if (rawField.type !== 'number' && (rawField.min !== undefined || rawField.max !== undefined)) {
97
- fail(`Config schema field "${key}" uses min/max on a non-number field.`);
98
- }
99
- if (rawField.min !== undefined && (!Number.isFinite(rawField.min) || typeof rawField.min !== 'number')) {
100
- fail(`Config schema field "${key}" has an invalid min.`);
101
- }
102
- if (rawField.max !== undefined && (!Number.isFinite(rawField.max) || typeof rawField.max !== 'number')) {
103
- fail(`Config schema field "${key}" has an invalid max.`);
104
- }
105
- if (rawField.min !== undefined && rawField.max !== undefined && rawField.min > rawField.max) {
106
- fail(`Config schema field "${key}" has min greater than max.`);
107
- }
108
- schema[key] = {
109
- type: rawField.type,
110
- title: rawField.title,
111
- description: rawField.description,
112
- default: rawField.default,
113
- required: rawField.required,
114
- sensitive: rawField.sensitive,
115
- values: rawField.values,
116
- min: rawField.min,
117
- max: rawField.max,
118
- };
119
- }
120
- return schema;
121
- }
122
- function validateManifest(rawManifest) {
123
- if (!isRecord(rawManifest)) {
124
- fail('Bundle manifest is not a JSON object.');
125
- }
126
- const pluginName = safePluginSegment(rawManifest.name);
127
- if (!isRecord(rawManifest.config) || !isRecord(rawManifest.config.schema)) {
128
- fail(`Plugin "${pluginName}" does not declare an AW config schema.`);
129
- }
130
- return {
131
- pluginName,
132
- schema: validateConfigSchema(rawManifest.config.schema),
133
- };
134
- }
135
- function locateBundleManifest() {
136
- let currentDir = path.dirname(fileURLToPath(import.meta.url));
137
- while (true) {
138
- const manifestPath = path.join(currentDir, '.agents-plugin', 'plugin.json');
139
- if (fs.existsSync(manifestPath)) {
140
- return {
141
- bundleRoot: currentDir,
142
- manifestPath,
143
- };
144
- }
145
- const parentDir = path.dirname(currentDir);
146
- if (parentDir === currentDir) {
147
- fail('Unable to locate bundle .agents-plugin/plugin.json.');
148
- }
149
- currentDir = parentDir;
150
- }
151
- }
152
- function resolveAwProjectRoot(cwd) {
153
- let currentDir = path.resolve(cwd);
154
- while (true) {
155
- if (fs.existsSync(path.join(currentDir, '.git')) ||
156
- fs.existsSync(path.join(currentDir, 'pnpm-workspace.yaml'))) {
157
- return currentDir;
158
- }
159
- const parentDir = path.dirname(currentDir);
160
- if (parentDir === currentDir) {
161
- return path.resolve(cwd);
162
- }
163
- currentDir = parentDir;
164
- }
165
- }
166
- function resolveAwHome() {
167
- return process.env.AW_HOME || path.join(os.homedir(), '.aw');
168
- }
169
- function resolveConfigStorePath(sourceId, pluginName, scope, cwd) {
170
- if (scope === 'user') {
171
- return path.join(resolveAwHome(), CONFIG_DIR, sourceId, pluginName, CONFIG_FILE);
172
- }
173
- const projectRoot = resolveAwProjectRoot(cwd);
174
- if (scope === 'projectLocal') {
175
- return path.join(projectRoot, '.agent-workflows', LOCAL_CONFIG_DIR, sourceId, pluginName, CONFIG_FILE);
176
- }
177
- return path.join(projectRoot, '.agent-workflows', CONFIG_DIR, sourceId, pluginName, CONFIG_FILE);
178
- }
179
- function readStore(filePath, identity) {
180
- if (!fs.existsSync(filePath)) {
181
- return { path: filePath, exists: false, values: {} };
182
- }
183
- const envelope = readJsonFile(filePath, 'plugin config store');
184
- if (!isRecord(envelope) ||
185
- envelope.schemaVersion !== 2 ||
186
- envelope.sourceId !== identity.sourceId ||
187
- envelope.sourceIdentity !== identity.sourceIdentity ||
188
- envelope.pluginName !== identity.pluginName ||
189
- !isRecord(envelope.values)) {
190
- fail('Plugin config store does not match its schema 2 source identity.');
191
- }
192
- return { path: filePath, exists: true, values: envelope.values };
193
- }
194
- function coerceValue(key, field, value, options = {}) {
195
- if (field.type === 'string') {
196
- if (typeof value !== 'string')
197
- fail(`Config "${key}" must be a string.`);
198
- return value;
199
- }
200
- if (field.type === 'number') {
201
- const numberValue = typeof value === 'number'
202
- ? value
203
- : typeof value === 'string' && value.trim() !== ''
204
- ? Number(value)
205
- : Number.NaN;
206
- if (!Number.isFinite(numberValue))
207
- fail(`Config "${key}" must be a number.`);
208
- if (field.min !== undefined && numberValue < field.min) {
209
- fail(`Config "${key}" is smaller than the allowed minimum.`);
210
- }
211
- if (field.max !== undefined && numberValue > field.max) {
212
- fail(`Config "${key}" is greater than the allowed maximum.`);
213
- }
214
- return numberValue;
215
- }
216
- if (field.type === 'boolean') {
217
- if (typeof value === 'boolean')
218
- return value;
219
- if (typeof value === 'string') {
220
- const normalized = value.trim().toLowerCase();
221
- if (['true', '1', 'yes', 'y'].includes(normalized))
222
- return true;
223
- if (['false', '0', 'no', 'n'].includes(normalized))
224
- return false;
225
- }
226
- fail(`Config "${key}" must be a boolean.`);
227
- }
228
- if (field.type === 'enum') {
229
- if (typeof value !== 'string' || !field.values?.includes(value)) {
230
- fail(`Config "${key}" must be one of the declared enum values.`);
231
- }
232
- return value;
233
- }
234
- if (field.type === 'file' || field.type === 'directory') {
235
- if (typeof value !== 'string' || value.trim() === '') {
236
- fail(`Config "${key}" must be a path string.`);
237
- }
238
- if (options.skipPathValidation) {
239
- return value;
240
- }
241
- const resolvedPath = path.isAbsolute(value)
242
- ? value
243
- : path.resolve(options.projectRoot || process.cwd(), value);
244
- let realPath;
245
- let stats;
246
- try {
247
- realPath = fs.realpathSync(resolvedPath);
248
- stats = fs.statSync(realPath);
249
- }
250
- catch {
251
- fail(`Config "${key}" points to a missing path.`);
252
- }
253
- if (field.type === 'file' && !stats.isFile()) {
254
- fail(`Config "${key}" must point to an existing file.`);
255
- }
256
- if (field.type === 'directory' && !stats.isDirectory()) {
257
- fail(`Config "${key}" must point to an existing directory.`);
258
- }
259
- return realPath;
260
- }
261
- fail(`Config "${key}" has an unsupported type.`);
262
- }
263
- function applyLayer(state, schema, entries, source, projectRoot, options = {}) {
264
- for (const [key, field] of Object.entries(schema)) {
265
- if (!Object.hasOwn(entries, key))
266
- continue;
267
- const value = coerceValue(key, field, entries[key], {
268
- projectRoot,
269
- skipPathValidation: options.skipPathValidation,
270
- });
271
- state.values[key] = value;
272
- state.redactedValues[key] = field.sensitive ? REDACTED : value;
273
- state.sources[key] = source;
274
- }
275
- }
276
- function buildState(schema) {
277
- const sources = {};
278
- for (const key of Object.keys(schema)) {
279
- sources[key] = 'missing';
20
+ fail('Unable to read AW_PLUGIN_CONTEXT as JSON.');
21
+ }
22
+ if (!isRecord(context)
23
+ || !isRecord(context.plugin)
24
+ || typeof context.plugin.name !== 'string'
25
+ || context.plugin.name.trim() === ''
26
+ || !isRecord(context.config)
27
+ || !isRecord(context.config.schema)
28
+ || !isRecord(context.config.values)) {
29
+ fail('AW_PLUGIN_CONTEXT does not contain config data.');
280
30
  }
281
- return {
282
- values: {},
283
- redactedValues: {},
284
- sources,
285
- ignoredUnknownKeys: [],
286
- issues: [],
31
+ return context;
32
+ }
33
+ function redactValues(schema, values) {
34
+ return Object.fromEntries(Object.entries(values).map(([key, value]) => [
35
+ key,
36
+ isRecord(schema[key]) && schema[key].sensitive === true ? '[redacted]' : value,
37
+ ]));
38
+ }
39
+ function resolveConfig(scope) {
40
+ if (scope !== 'effective') {
41
+ fail('AW_PLUGIN_CONTEXT only supports effective config reads; use aw config for user or project scope.');
42
+ }
43
+ const context = readContext();
44
+ const schema = context.config.schema;
45
+ const values = Object.fromEntries(Object.entries(context.config.values).filter(([key]) => Object.hasOwn(schema, key)));
46
+ const sources = isRecord(context.config.sources)
47
+ ? Object.fromEntries(Object.entries(context.config.sources).filter(([key]) => Object.hasOwn(schema, key)))
48
+ : {};
49
+ const identity = {
50
+ ...(typeof context.plugin.sourceId === 'string' ? { sourceId: context.plugin.sourceId } : {}),
51
+ ...(typeof context.plugin.sourceIdentity === 'string'
52
+ ? { sourceIdentity: context.plugin.sourceIdentity }
53
+ : {}),
54
+ ...(typeof context.plugin.logicalIdentity === 'string'
55
+ ? { logicalIdentity: context.plugin.logicalIdentity }
56
+ : {}),
57
+ ...(typeof context.plugin.pluginId === 'string' ? { pluginId: context.plugin.pluginId } : {}),
287
58
  };
288
- }
289
- function collectUnknownKeys(state, schema, store, scope) {
290
- const schemaKeys = new Set(Object.keys(schema));
291
- for (const key of Object.keys(store.values)) {
292
- if (!schemaKeys.has(key)) {
293
- state.ignoredUnknownKeys.push({ scope, key });
294
- }
295
- }
296
- }
297
- function addMissingRequiredIssues(state, schema) {
298
- for (const [key, field] of Object.entries(schema)) {
299
- if (field.required && state.values[key] === undefined) {
300
- state.issues.push({
301
- type: 'missing-required',
302
- key,
303
- source: state.sources[key],
304
- message: `Config "${key}" is required.`,
305
- });
306
- }
307
- }
308
- }
309
- function resolveFromStores({ identity, schema, scope, stores, projectRoot }) {
310
- const state = buildState(schema);
311
- if (scope === 'effective') {
312
- for (const [key, field] of Object.entries(schema)) {
313
- if (field.default !== undefined) {
314
- applyLayer(state, { [key]: field }, { [key]: field.default }, 'default', projectRoot);
315
- }
316
- }
317
- for (const [storeKey, source] of [
318
- ['user', 'user'],
319
- ['project', 'projectShared'],
320
- ['projectLocal', 'projectLocal'],
321
- ]) {
322
- collectUnknownKeys(state, schema, stores[storeKey], source);
323
- applyLayer(state, schema, stores[storeKey].values, source, projectRoot);
324
- }
325
- addMissingRequiredIssues(state, schema);
326
- }
327
- else {
328
- collectUnknownKeys(state, schema, stores[scope], scope);
329
- applyLayer(state, schema, stores[scope].values, scope, projectRoot);
330
- }
331
59
  return {
332
- pluginName: identity.pluginName,
333
- sourceId: identity.sourceId,
334
- sourceIdentity: identity.sourceIdentity,
335
- pluginId: `${identity.sourceId}/${identity.pluginName}`,
60
+ pluginName: context.plugin.name,
61
+ ...identity,
336
62
  scope,
337
- values: state.values,
338
- redactedValues: state.redactedValues,
339
- sources: state.sources,
63
+ values,
64
+ redactedValues: redactValues(schema, values),
65
+ sources,
340
66
  schema,
341
67
  diagnostics: {
342
- issues: state.issues,
343
- ignoredUnknownKeys: state.ignoredUnknownKeys,
344
- },
345
- paths: {
346
- configStores: {
347
- user: stores.user.path,
348
- project: stores.project.path,
349
- projectLocal: stores.projectLocal.path,
350
- },
68
+ issues: Array.isArray(context.config.issues) ? context.config.issues : [],
69
+ ignoredUnknownKeys: Array.isArray(context.config.ignoredUnknownKeys)
70
+ ? context.config.ignoredUnknownKeys
71
+ : [],
351
72
  },
73
+ paths: { configStores: {} },
352
74
  };
353
75
  }
354
- function normalizeContextConfig(context) {
355
- if (!isRecord(context) || !isRecord(context.config)) {
356
- fail('AW_PLUGIN_CONTEXT does not contain config data.');
357
- }
358
- const schema = validateConfigSchema(context.config.schema);
359
- const pluginName = safePluginSegment(context.plugin?.name || context.pluginName || context.config.pluginName || 'plugin');
360
- const sourceId = context.plugin?.sourceId;
361
- const sourceIdentity = context.plugin?.sourceIdentity;
362
- if ((sourceId === undefined) !== (sourceIdentity === undefined)) {
363
- fail('AW_PLUGIN_CONTEXT contains an incomplete source identity.');
364
- }
365
- const identity = sourceId === undefined
366
- ? null
367
- : {
368
- pluginName,
369
- sourceId: safePluginSegment(sourceId),
370
- sourceIdentity,
371
- };
372
- if (identity && !SOURCE_IDENTITY_PATTERN.test(identity.sourceIdentity)) {
373
- fail('AW_PLUGIN_CONTEXT contains an invalid source identity.');
374
- }
375
- return { pluginName, schema, identity };
376
- }
377
- function resolveFromContext(scope) {
378
- const contextPath = process.env.AW_PLUGIN_CONTEXT;
379
- if (!contextPath)
380
- return null;
381
- const context = readJsonFile(contextPath, 'AW_PLUGIN_CONTEXT');
382
- const { pluginName, schema, identity } = normalizeContextConfig(context);
383
- if (scope === 'effective') {
384
- const state = buildState(schema);
385
- const values = isRecord(context.config.values) ? context.config.values : {};
386
- const sources = isRecord(context.config.sources) ? context.config.sources : {};
387
- applyLayer(state, schema, values, 'context', process.cwd(), { skipPathValidation: true });
388
- for (const key of Object.keys(schema)) {
389
- if (typeof sources[key] === 'string') {
390
- state.sources[key] = sources[key];
391
- }
392
- }
393
- for (const key of Object.keys(values)) {
394
- if (!Object.hasOwn(schema, key)) {
395
- state.ignoredUnknownKeys.push({ scope: 'context', key });
396
- }
397
- }
398
- return {
399
- pluginName,
400
- ...(identity ? {
401
- sourceId: identity.sourceId,
402
- sourceIdentity: identity.sourceIdentity,
403
- pluginId: `${identity.sourceId}/${pluginName}`,
404
- } : {}),
405
- scope,
406
- values: state.values,
407
- redactedValues: state.redactedValues,
408
- sources: state.sources,
409
- schema,
410
- diagnostics: {
411
- issues: Array.isArray(context.config.issues) ? context.config.issues : [],
412
- ignoredUnknownKeys: [
413
- ...(Array.isArray(context.config.ignoredUnknownKeys) ? context.config.ignoredUnknownKeys : []),
414
- ...state.ignoredUnknownKeys,
415
- ],
416
- },
417
- paths: {
418
- configStores: isRecord(context.paths?.configStores) ? context.paths.configStores : {},
419
- },
420
- };
421
- }
422
- const storePath = context.paths?.configStores?.[scope];
423
- if (typeof storePath !== 'string' || storePath.trim() === '') {
424
- fail(`AW_PLUGIN_CONTEXT does not provide a ${scope} config store path.`);
425
- }
426
- if (!identity) {
427
- fail('AW_PLUGIN_CONTEXT must provide a source identity for scoped config reads.');
428
- }
429
- const store = readStore(storePath, identity);
430
- return resolveFromStores({
431
- identity,
432
- schema,
433
- scope,
434
- stores: {
435
- user: scope === 'user' ? store : { path: '', exists: false, values: {} },
436
- project: scope === 'project' ? store : { path: '', exists: false, values: {} },
437
- projectLocal: scope === 'projectLocal' ? store : { path: '', exists: false, values: {} },
438
- },
439
- projectRoot: context.cwd || process.cwd(),
440
- });
441
- }
442
- function resolveFallback(scope) {
443
- const { bundleRoot, manifestPath } = locateBundleManifest();
444
- const { pluginName, schema } = validateManifest(readJsonFile(manifestPath, 'bundle manifest'));
445
- const pluginsRoot = path.dirname(bundleRoot);
446
- const marketplaceRoot = path.dirname(pluginsRoot);
447
- if (path.basename(pluginsRoot) !== 'plugins' || path.basename(bundleRoot) !== pluginName) {
448
- fail('Bundle manifest is not inside a namespaced local marketplace.');
449
- }
450
- const marketplace = readJsonFile(path.join(marketplaceRoot, 'config.json'), 'marketplace config');
451
- const sourceId = safePluginSegment(marketplace.sourceId);
452
- const sourceIdentity = marketplace.sourceIdentity;
453
- if (marketplace.schemaVersion !== 2 ||
454
- sourceId !== path.basename(marketplaceRoot) ||
455
- typeof sourceIdentity !== 'string' ||
456
- !SOURCE_IDENTITY_PATTERN.test(sourceIdentity) ||
457
- !['aw', `aw-${sourceId}`].includes(marketplace.marketplaceName)) {
458
- fail('Marketplace config does not contain a canonical schema 2 source identity.');
459
- }
460
- const identity = { sourceId, sourceIdentity, pluginName };
461
- const cwd = process.cwd();
462
- const projectRoot = resolveAwProjectRoot(cwd);
463
- for (const legacyPath of [
464
- path.join(resolveAwHome(), CONFIG_DIR, pluginName, CONFIG_FILE),
465
- path.join(projectRoot, '.agent-workflows', CONFIG_DIR, pluginName, CONFIG_FILE),
466
- path.join(projectRoot, '.agent-workflows', LOCAL_CONFIG_DIR, pluginName, CONFIG_FILE),
467
- ]) {
468
- if (fs.existsSync(legacyPath)) {
469
- fail('Legacy non-namespaced plugin config is not supported.');
470
- }
471
- }
472
- const stores = {
473
- user: readStore(resolveConfigStorePath(sourceId, pluginName, 'user', cwd), identity),
474
- project: readStore(resolveConfigStorePath(sourceId, pluginName, 'project', cwd), identity),
475
- projectLocal: readStore(resolveConfigStorePath(sourceId, pluginName, 'projectLocal', cwd), identity),
476
- };
477
- return resolveFromStores({ identity, schema, scope, stores, projectRoot });
478
- }
479
76
  function printUsage() {
480
77
  process.stdout.write(`Usage:
481
- node aw-config.mjs get <key> [--scope effective|user|project|project-local]
482
- node aw-config.mjs json [--scope effective|user|project|project-local]
78
+ node aw-config.mjs get <key> [--scope effective]
79
+ node aw-config.mjs json [--scope effective]
483
80
 
484
81
  Options:
485
- --scope <scope> Read effective, user, project, or project-local config. Default: effective.
82
+ --scope <scope> Read effective config from AW_PLUGIN_CONTEXT. Default: effective.
486
83
  -h, --help Show this help message.
487
84
  `);
488
85
  }
489
86
  function parseArgs(argv) {
490
87
  const args = argv.slice(2);
491
88
  const command = args.shift();
492
- if (command === '-h' || command === '--help') {
493
- printUsage();
494
- process.exit(0);
495
- }
89
+ if (command === '-h' || command === '--help')
90
+ return { help: true };
496
91
  let scope = 'effective';
497
92
  const positional = [];
498
93
  for (let index = 0; index < args.length; index += 1) {
@@ -503,54 +98,58 @@ function parseArgs(argv) {
503
98
  fail('--scope requires a value.');
504
99
  scope = value;
505
100
  index += 1;
506
- continue;
507
101
  }
508
- if (arg.startsWith('--scope=')) {
102
+ else if (arg.startsWith('--scope=')) {
509
103
  scope = arg.slice('--scope='.length);
510
- continue;
511
104
  }
512
- positional.push(arg);
513
- }
514
- if (scope === 'project-local')
515
- scope = 'projectLocal';
516
- if (!['effective', 'user', 'project', 'projectLocal'].includes(scope)) {
517
- fail('--scope must be effective, user, project, or project-local.');
105
+ else {
106
+ positional.push(arg);
107
+ }
518
108
  }
519
- if (command !== 'get' && command !== 'json') {
520
- fail('Usage: node aw-config.mjs get <key> [--scope effective|user|project|project-local] | json [--scope effective|user|project|project-local]');
109
+ if (command !== 'get' && command !== 'json')
110
+ fail('Usage: node aw-config.mjs get <key> | json');
111
+ if (command === 'get' && positional.length !== 1)
112
+ fail('Usage: node aw-config.mjs get <key>');
113
+ if (command === 'json' && positional.length !== 0)
114
+ fail('Usage: node aw-config.mjs json');
115
+ return { command, key: positional[0], scope };
116
+ }
117
+ function main() {
118
+ const args = parseArgs(process.argv);
119
+ if (args.help) {
120
+ printUsage();
121
+ return;
521
122
  }
522
- if (command === 'get' && positional.length !== 1) {
523
- fail('Usage: node aw-config.mjs get <key> [--scope effective|user|project|project-local]');
123
+ const result = resolveConfig(args.scope);
124
+ if (args.command === 'get') {
125
+ if (!Object.hasOwn(result.schema, args.key))
126
+ fail(`Unknown config key "${args.key}".`);
127
+ if (!Object.hasOwn(result.values, args.key))
128
+ fail(`Config key "${args.key}" is not set.`);
129
+ const value = result.redactedValues[args.key];
130
+ process.stdout.write(typeof value === 'string' ? `${value}\n` : `${JSON.stringify(value)}\n`);
524
131
  }
525
- if (command === 'json' && positional.length !== 0) {
526
- fail('Usage: node aw-config.mjs json [--scope effective|user|project|project-local]');
132
+ else {
133
+ process.stdout.write(`${JSON.stringify({ ...result, values: result.redactedValues }, null, 2)}\n`);
527
134
  }
528
- return { command, key: positional[0], scope };
529
135
  }
530
- function renderGet(result, key) {
531
- if (!Object.hasOwn(result.schema, key)) {
532
- fail(`Unknown config key "${key}".`);
136
+ function isDirectExecution() {
137
+ if (!process.argv[1])
138
+ return false;
139
+ try {
140
+ return fs.realpathSync(fileURLToPath(import.meta.url)) === fs.realpathSync(process.argv[1]);
533
141
  }
534
- if (!Object.hasOwn(result.values, key)) {
535
- fail(`Config key "${key}" is not set.`);
142
+ catch {
143
+ return fileURLToPath(import.meta.url) === path.resolve(process.argv[1]);
536
144
  }
537
- const value = result.values[key];
538
- return typeof value === 'string' ? `${value}\n` : `${JSON.stringify(value)}\n`;
539
145
  }
540
- function main() {
541
- const args = parseArgs(process.argv);
542
- const result = resolveFromContext(args.scope) || resolveFallback(args.scope);
543
- const output = args.command === 'get'
544
- ? renderGet(result, args.key)
545
- : `${JSON.stringify(result, null, 2)}\n`;
546
- process.stdout.write(output);
547
- }
548
- try {
549
- main();
550
- }
551
- catch (error) {
552
- const message = error instanceof Error ? error.message : String(error);
553
- process.stderr.write(`[aw-config] ${message}\n`);
554
- process.exit(1);
146
+ if (isDirectExecution()) {
147
+ try {
148
+ main();
149
+ }
150
+ catch (error) {
151
+ process.stderr.write(`[aw-config] ${error instanceof Error ? error.message : String(error)}\n`);
152
+ process.exitCode = 1;
153
+ }
555
154
  }
556
155
  //# sourceMappingURL=aw-config.mjs.map