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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (529) hide show
  1. package/dist/authoring/assets/aw-config.mjs +100 -501
  2. package/dist/authoring/assets/aw-config.mjs.map +1 -1
  3. package/dist/authoring/scripts/add-skill.mjs +4 -4
  4. package/dist/authoring/scripts/add-skill.mjs.map +1 -1
  5. package/dist/authoring/scripts/init-plugin.mjs +67 -97
  6. package/dist/authoring/scripts/init-plugin.mjs.map +1 -1
  7. package/dist/authoring/scripts/lib/plugin-version-check.d.mts +15 -0
  8. package/dist/authoring/scripts/lib/plugin-version-check.mjs +239 -232
  9. package/dist/authoring/scripts/lib/plugin-version-check.mjs.map +1 -1
  10. package/dist/authoring/scripts/lib/skill-scaffold.d.mts +77 -90
  11. package/dist/authoring/scripts/lib/skill-scaffold.mjs +99 -120
  12. package/dist/authoring/scripts/lib/skill-scaffold.mjs.map +1 -1
  13. package/dist/authoring/scripts/plugin-status.mjs +8 -11
  14. package/dist/authoring/scripts/plugin-status.mjs.map +1 -1
  15. package/dist/authoring/scripts/remove-plugin.mjs +367 -0
  16. package/dist/authoring/scripts/remove-plugin.mjs.map +1 -0
  17. package/dist/authoring/scripts/validate-plugin.mjs +307 -1173
  18. package/dist/authoring/scripts/validate-plugin.mjs.map +1 -1
  19. package/dist/scripts/aw-skill-eval-materializer.d.ts +26 -0
  20. package/dist/scripts/aw-skill-eval-materializer.js +306 -0
  21. package/dist/scripts/aw-skill-eval-materializer.js.map +1 -0
  22. package/dist/scripts/bundle-plugins.d.ts +1 -2
  23. package/dist/scripts/bundle-plugins.js +24 -7
  24. package/dist/scripts/bundle-plugins.js.map +1 -1
  25. package/dist/scripts/plugin-staging.d.ts +7 -24
  26. package/dist/scripts/plugin-staging.js +22 -142
  27. package/dist/scripts/plugin-staging.js.map +1 -1
  28. package/dist/scripts/test-plugin-scripts.d.ts +2 -0
  29. package/dist/scripts/test-plugin-scripts.js +27 -75
  30. package/dist/scripts/test-plugin-scripts.js.map +1 -1
  31. package/dist/src/adapters/helpers.js +2 -2
  32. package/dist/src/adapters/helpers.js.map +1 -1
  33. package/dist/src/authoring/workspace-commands.d.ts +26 -2
  34. package/dist/src/authoring/workspace-commands.js +44 -19
  35. package/dist/src/authoring/workspace-commands.js.map +1 -1
  36. package/dist/src/commands/aw-capabilities.d.ts +78 -0
  37. package/dist/src/commands/aw-capabilities.js +256 -0
  38. package/dist/src/commands/aw-capabilities.js.map +1 -0
  39. package/dist/src/commands/catalog-dev-source.d.ts +154 -0
  40. package/dist/src/commands/catalog-dev-source.js +655 -0
  41. package/dist/src/commands/catalog-dev-source.js.map +1 -0
  42. package/dist/src/commands/catalog-generation.d.ts +21 -0
  43. package/dist/src/commands/catalog-generation.js +9 -0
  44. package/dist/src/commands/catalog-generation.js.map +1 -0
  45. package/dist/src/commands/catalog-publication-inspection.d.ts +138 -0
  46. package/dist/src/commands/catalog-publication-inspection.js +757 -0
  47. package/dist/src/commands/catalog-publication-inspection.js.map +1 -0
  48. package/dist/src/commands/catalog-publication-journal.d.ts +68 -0
  49. package/dist/src/commands/catalog-publication-journal.js +292 -0
  50. package/dist/src/commands/catalog-publication-journal.js.map +1 -0
  51. package/dist/src/commands/catalog-publication-target.d.ts +18 -0
  52. package/dist/src/commands/catalog-publication-target.js +95 -0
  53. package/dist/src/commands/catalog-publication-target.js.map +1 -0
  54. package/dist/src/commands/catalog-publish.d.ts +77 -7
  55. package/dist/src/commands/catalog-publish.js +746 -316
  56. package/dist/src/commands/catalog-publish.js.map +1 -1
  57. package/dist/src/commands/catalog-source.d.ts +60 -22
  58. package/dist/src/commands/catalog-source.js +311 -91
  59. package/dist/src/commands/catalog-source.js.map +1 -1
  60. package/dist/src/commands/catalog-status.d.ts +56 -0
  61. package/dist/src/commands/catalog-status.js +217 -0
  62. package/dist/src/commands/catalog-status.js.map +1 -0
  63. package/dist/src/commands/catalog-store.d.ts +104 -0
  64. package/dist/src/commands/catalog-store.js +685 -0
  65. package/dist/src/commands/catalog-store.js.map +1 -0
  66. package/dist/src/commands/catalog-workspace-resolution.d.ts +13 -0
  67. package/dist/src/commands/catalog-workspace-resolution.js +42 -0
  68. package/dist/src/commands/catalog-workspace-resolution.js.map +1 -0
  69. package/dist/src/commands/console.js +28 -17
  70. package/dist/src/commands/console.js.map +1 -1
  71. package/dist/src/commands/dependency-operation-plan.d.ts +52 -15
  72. package/dist/src/commands/dependency-operation-plan.js +289 -7
  73. package/dist/src/commands/dependency-operation-plan.js.map +1 -1
  74. package/dist/src/commands/init.d.ts +5 -11
  75. package/dist/src/commands/init.js +30 -51
  76. package/dist/src/commands/init.js.map +1 -1
  77. package/dist/src/commands/offline-cleanup-evidence.d.ts +67 -0
  78. package/dist/src/commands/offline-cleanup-evidence.js +181 -0
  79. package/dist/src/commands/offline-cleanup-evidence.js.map +1 -0
  80. package/dist/src/commands/operation-plan.d.ts +127 -0
  81. package/dist/src/commands/operation-plan.js +71 -0
  82. package/dist/src/commands/operation-plan.js.map +1 -0
  83. package/dist/src/commands/operation-planner.d.ts +46 -0
  84. package/dist/src/commands/operation-planner.js +141 -0
  85. package/dist/src/commands/operation-planner.js.map +1 -0
  86. package/dist/src/commands/options.d.ts +9 -7
  87. package/dist/src/commands/options.js +83 -21
  88. package/dist/src/commands/options.js.map +1 -1
  89. package/dist/src/commands/plugin-capabilities.d.ts +22 -0
  90. package/dist/src/commands/plugin-capabilities.js +159 -0
  91. package/dist/src/commands/plugin-capabilities.js.map +1 -0
  92. package/dist/src/commands/rebuild-command.d.ts +77 -30
  93. package/dist/src/commands/rebuild-command.js +3993 -711
  94. package/dist/src/commands/rebuild-command.js.map +1 -1
  95. package/dist/src/commands/rebuild-integration.d.ts +120 -21
  96. package/dist/src/commands/rebuild-integration.js +2765 -1326
  97. package/dist/src/commands/rebuild-integration.js.map +1 -1
  98. package/dist/src/commands/rebuild-operations.d.ts +58 -30
  99. package/dist/src/commands/rebuild-operations.js +259 -319
  100. package/dist/src/commands/rebuild-operations.js.map +1 -1
  101. package/dist/src/commands/reconcile-operation-plan.d.ts +28 -0
  102. package/dist/src/commands/reconcile-operation-plan.js +47 -0
  103. package/dist/src/commands/reconcile-operation-plan.js.map +1 -0
  104. package/dist/src/commands/review-inspection.d.ts +228 -0
  105. package/dist/src/commands/review-inspection.js +1341 -0
  106. package/dist/src/commands/review-inspection.js.map +1 -0
  107. package/dist/src/commands/review-preparation.d.ts +49 -0
  108. package/dist/src/commands/review-preparation.js +427 -0
  109. package/dist/src/commands/review-preparation.js.map +1 -0
  110. package/dist/src/commands/runtime.d.ts +1 -5
  111. package/dist/src/commands/runtime.js +24 -50
  112. package/dist/src/commands/runtime.js.map +1 -1
  113. package/dist/src/commands/skill-eval.d.ts +38 -0
  114. package/dist/src/commands/skill-eval.js +388 -0
  115. package/dist/src/commands/skill-eval.js.map +1 -0
  116. package/dist/src/commands/status-v6.d.ts +279 -0
  117. package/dist/src/commands/status-v6.js +2697 -0
  118. package/dist/src/commands/status-v6.js.map +1 -0
  119. package/dist/src/commands/sync-command.d.ts +40 -0
  120. package/dist/src/commands/sync-command.js +250 -0
  121. package/dist/src/commands/sync-command.js.map +1 -0
  122. package/dist/src/commands/wizard.d.ts +3 -4
  123. package/dist/src/commands/wizard.js +2 -2
  124. package/dist/src/commands/wizard.js.map +1 -1
  125. package/dist/src/commands/write-commands.d.ts +9 -3
  126. package/dist/src/commands/write-commands.js +124 -31
  127. package/dist/src/commands/write-commands.js.map +1 -1
  128. package/dist/src/constants.d.ts +7 -1
  129. package/dist/src/constants.js +7 -1
  130. package/dist/src/constants.js.map +1 -1
  131. package/dist/src/eval/manifest-v1.d.ts +71 -0
  132. package/dist/src/eval/manifest-v1.js +370 -0
  133. package/dist/src/eval/manifest-v1.js.map +1 -0
  134. package/dist/src/generators/local-plugin.d.ts +5 -1
  135. package/dist/src/generators/local-plugin.js +225 -104
  136. package/dist/src/generators/local-plugin.js.map +1 -1
  137. package/dist/src/index.d.ts +10 -4
  138. package/dist/src/index.js +1787 -476
  139. package/dist/src/index.js.map +1 -1
  140. package/dist/src/output/command-receipt.d.ts +43 -46
  141. package/dist/src/output/command-receipt.js +256 -80
  142. package/dist/src/output/command-receipt.js.map +1 -1
  143. package/dist/src/output/model.d.ts +3 -44
  144. package/dist/src/output/model.js +1 -144
  145. package/dist/src/output/model.js.map +1 -1
  146. package/dist/src/output/rebuild-progress.js +1 -13
  147. package/dist/src/output/rebuild-progress.js.map +1 -1
  148. package/dist/src/portable/commands.d.ts +46 -7
  149. package/dist/src/portable/commands.js +349 -37
  150. package/dist/src/portable/commands.js.map +1 -1
  151. package/dist/src/portable/materializer.d.ts +17 -4
  152. package/dist/src/portable/materializer.js +160 -38
  153. package/dist/src/portable/materializer.js.map +1 -1
  154. package/dist/src/portable/skills-cli.d.ts +15 -7
  155. package/dist/src/portable/skills-cli.js +66 -19
  156. package/dist/src/portable/skills-cli.js.map +1 -1
  157. package/dist/src/review/eval-source-input.d.ts +43 -0
  158. package/dist/src/review/eval-source-input.js +207 -0
  159. package/dist/src/review/eval-source-input.js.map +1 -0
  160. package/dist/src/review/review-profile.d.ts +17 -0
  161. package/dist/src/review/review-profile.js +177 -0
  162. package/dist/src/review/review-profile.js.map +1 -0
  163. package/dist/src/review/review-selection.d.ts +30 -0
  164. package/dist/src/review/review-selection.js +527 -0
  165. package/dist/src/review/review-selection.js.map +1 -0
  166. package/dist/src/review/review-types.d.ts +68 -0
  167. package/dist/src/review/review-types.js +16 -0
  168. package/dist/src/review/review-types.js.map +1 -0
  169. package/dist/src/review/skill-materialization.d.ts +13 -0
  170. package/dist/src/review/skill-materialization.js +75 -0
  171. package/dist/src/review/skill-materialization.js.map +1 -0
  172. package/dist/src/review/source-binding.d.ts +182 -0
  173. package/dist/src/review/source-binding.js +682 -0
  174. package/dist/src/review/source-binding.js.map +1 -0
  175. package/dist/src/tui/catalog-freshness.d.ts +1 -0
  176. package/dist/src/tui/catalog-freshness.js +2 -0
  177. package/dist/src/tui/catalog-freshness.js.map +1 -0
  178. package/dist/src/tui/catalog-generation.d.ts +21 -0
  179. package/dist/src/tui/catalog-generation.js +156 -0
  180. package/dist/src/tui/catalog-generation.js.map +1 -0
  181. package/dist/src/tui/catalog-sources/projection.d.ts +4 -0
  182. package/dist/src/tui/catalog-sources/projection.js +17 -0
  183. package/dist/src/tui/catalog-sources/projection.js.map +1 -0
  184. package/dist/src/tui/catalog-sources/review.d.ts +3 -0
  185. package/dist/src/tui/catalog-sources/review.js +13 -0
  186. package/dist/src/tui/catalog-sources/review.js.map +1 -0
  187. package/dist/src/tui/catalog-sources/screens.d.ts +12 -0
  188. package/dist/src/tui/catalog-sources/screens.js +40 -0
  189. package/dist/src/tui/catalog-sources/screens.js.map +1 -0
  190. package/dist/src/tui/catalog-sources/session.d.ts +28 -0
  191. package/dist/src/tui/catalog-sources/session.js +295 -0
  192. package/dist/src/tui/catalog-sources/session.js.map +1 -0
  193. package/dist/src/tui/catalog-sources/types.d.ts +53 -0
  194. package/dist/src/tui/catalog-sources/types.js +2 -0
  195. package/dist/src/tui/catalog-sources/types.js.map +1 -0
  196. package/dist/src/tui/catalog-store-task.d.ts +16 -0
  197. package/dist/src/tui/catalog-store-task.js +19 -0
  198. package/dist/src/tui/catalog-store-task.js.map +1 -0
  199. package/dist/src/tui/components.d.ts +128 -0
  200. package/dist/src/tui/components.js +251 -7
  201. package/dist/src/tui/components.js.map +1 -1
  202. package/dist/src/tui/console-app-v4.d.ts +14 -4
  203. package/dist/src/tui/console-app-v4.js +9248 -1461
  204. package/dist/src/tui/console-app-v4.js.map +1 -1
  205. package/dist/src/tui/controller-runtime.d.ts +13 -1
  206. package/dist/src/tui/controller-runtime.js +3338 -410
  207. package/dist/src/tui/controller-runtime.js.map +1 -1
  208. package/dist/src/tui/controller.d.ts +614 -40
  209. package/dist/src/tui/controller.js +3478 -708
  210. package/dist/src/tui/controller.js.map +1 -1
  211. package/dist/src/tui/dependency-graph.d.ts +81 -0
  212. package/dist/src/tui/dependency-graph.js +455 -0
  213. package/dist/src/tui/dependency-graph.js.map +1 -0
  214. package/dist/src/tui/diagnostic-projection.d.ts +23 -0
  215. package/dist/src/tui/diagnostic-projection.js +567 -0
  216. package/dist/src/tui/diagnostic-projection.js.map +1 -0
  217. package/dist/src/tui/diagnostics.d.ts +30 -0
  218. package/dist/src/tui/diagnostics.js +76 -0
  219. package/dist/src/tui/diagnostics.js.map +1 -0
  220. package/dist/src/tui/glossary.d.ts +23 -0
  221. package/dist/src/tui/glossary.js +42 -0
  222. package/dist/src/tui/glossary.js.map +1 -0
  223. package/dist/src/tui/index.d.ts +11 -4
  224. package/dist/src/tui/index.js +8 -2
  225. package/dist/src/tui/index.js.map +1 -1
  226. package/dist/src/tui/input-display.d.ts +8 -0
  227. package/dist/src/tui/input-display.js +36 -0
  228. package/dist/src/tui/input-display.js.map +1 -0
  229. package/dist/src/tui/keys.d.ts +44 -0
  230. package/dist/src/tui/keys.js +43 -15
  231. package/dist/src/tui/keys.js.map +1 -1
  232. package/dist/src/tui/lifecycle-action-view.d.ts +6 -0
  233. package/dist/src/tui/lifecycle-action-view.js +36 -0
  234. package/dist/src/tui/lifecycle-action-view.js.map +1 -0
  235. package/dist/src/tui/model.d.ts +235 -27
  236. package/dist/src/tui/model.js +1652 -304
  237. package/dist/src/tui/model.js.map +1 -1
  238. package/dist/src/tui/operation-diagnostic-screens.d.ts +21 -0
  239. package/dist/src/tui/operation-diagnostic-screens.js +102 -0
  240. package/dist/src/tui/operation-diagnostic-screens.js.map +1 -0
  241. package/dist/src/tui/operation-history.d.ts +81 -0
  242. package/dist/src/tui/operation-history.js +135 -0
  243. package/dist/src/tui/operation-history.js.map +1 -0
  244. package/dist/src/tui/operation-review-planner.d.ts +21 -0
  245. package/dist/src/tui/operation-review-planner.js +1254 -0
  246. package/dist/src/tui/operation-review-planner.js.map +1 -0
  247. package/dist/src/tui/plugin-content.d.ts +23 -0
  248. package/dist/src/tui/plugin-content.js +336 -0
  249. package/dist/src/tui/plugin-content.js.map +1 -0
  250. package/dist/src/tui/plugin-write-task.d.ts +69 -0
  251. package/dist/src/tui/plugin-write-task.js +286 -0
  252. package/dist/src/tui/plugin-write-task.js.map +1 -0
  253. package/dist/src/tui/prompt.js +4 -15
  254. package/dist/src/tui/prompt.js.map +1 -1
  255. package/dist/src/tui/router.d.ts +183 -11
  256. package/dist/src/tui/router.js +352 -29
  257. package/dist/src/tui/router.js.map +1 -1
  258. package/dist/src/tui/screen-registry.d.ts +702 -0
  259. package/dist/src/tui/screen-registry.js +231 -0
  260. package/dist/src/tui/screen-registry.js.map +1 -0
  261. package/dist/src/tui/session-console-app.d.ts +6 -0
  262. package/dist/src/tui/session-console-app.js +13 -0
  263. package/dist/src/tui/session-console-app.js.map +1 -0
  264. package/dist/src/tui/session-host.d.ts +45 -0
  265. package/dist/src/tui/session-host.js +209 -0
  266. package/dist/src/tui/session-host.js.map +1 -0
  267. package/dist/src/tui/source-ref-presets.d.ts +3 -0
  268. package/dist/src/tui/source-ref-presets.js +11 -0
  269. package/dist/src/tui/source-ref-presets.js.map +1 -0
  270. package/dist/src/tui/theme.d.ts +18 -10
  271. package/dist/src/tui/theme.js +18 -10
  272. package/dist/src/tui/theme.js.map +1 -1
  273. package/dist/src/tui/viewport.d.ts +20 -0
  274. package/dist/src/tui/viewport.js +29 -0
  275. package/dist/src/tui/viewport.js.map +1 -0
  276. package/dist/src/tui/views.js +31 -3
  277. package/dist/src/tui/views.js.map +1 -1
  278. package/dist/src/tui/wizard.js +11 -9
  279. package/dist/src/tui/wizard.js.map +1 -1
  280. package/dist/src/types.d.ts +242 -20
  281. package/dist/src/types.js +1 -0
  282. package/dist/src/types.js.map +1 -1
  283. package/dist/src/utils/agent-version.d.ts +7 -1
  284. package/dist/src/utils/agent-version.js +41 -8
  285. package/dist/src/utils/agent-version.js.map +1 -1
  286. package/dist/src/utils/artifact-plan.d.ts +5 -4
  287. package/dist/src/utils/artifact-plan.js +18 -7
  288. package/dist/src/utils/artifact-plan.js.map +1 -1
  289. package/dist/src/utils/artifact-renderer.d.ts +13 -7
  290. package/dist/src/utils/artifact-renderer.js +196 -219
  291. package/dist/src/utils/artifact-renderer.js.map +1 -1
  292. package/dist/src/utils/artifact-request.d.ts +21 -0
  293. package/dist/src/utils/artifact-request.js +82 -0
  294. package/dist/src/utils/artifact-request.js.map +1 -0
  295. package/dist/src/utils/aw-home-mutation-lock.d.ts +1 -0
  296. package/dist/src/utils/aw-home-mutation-lock.js +32 -4
  297. package/dist/src/utils/aw-home-mutation-lock.js.map +1 -1
  298. package/dist/src/utils/bundle-integrity.d.ts +0 -1
  299. package/dist/src/utils/bundle-integrity.js +0 -25
  300. package/dist/src/utils/bundle-integrity.js.map +1 -1
  301. package/dist/src/utils/bundle-layout.js +14 -29
  302. package/dist/src/utils/bundle-layout.js.map +1 -1
  303. package/dist/src/utils/catalog-capability-projection.d.ts +8 -0
  304. package/dist/src/utils/catalog-capability-projection.js +14 -0
  305. package/dist/src/utils/catalog-capability-projection.js.map +1 -0
  306. package/dist/src/utils/catalog-digests.d.ts +10 -0
  307. package/dist/src/utils/catalog-digests.js +50 -2
  308. package/dist/src/utils/catalog-digests.js.map +1 -1
  309. package/dist/src/utils/catalog-generation-control-snapshot.d.ts +11 -0
  310. package/dist/src/utils/catalog-generation-control-snapshot.js +45 -0
  311. package/dist/src/utils/catalog-generation-control-snapshot.js.map +1 -0
  312. package/dist/src/utils/catalog-generation-error.d.ts +16 -0
  313. package/dist/src/utils/catalog-generation-error.js +30 -0
  314. package/dist/src/utils/catalog-generation-error.js.map +1 -0
  315. package/dist/src/utils/catalog-generation-resolver.d.ts +44 -0
  316. package/dist/src/utils/catalog-generation-resolver.js +273 -0
  317. package/dist/src/utils/catalog-generation-resolver.js.map +1 -0
  318. package/dist/src/utils/catalog-generation-service.d.ts +172 -0
  319. package/dist/src/utils/catalog-generation-service.js +1271 -0
  320. package/dist/src/utils/catalog-generation-service.js.map +1 -0
  321. package/dist/src/utils/catalog-generation-state.d.ts +22 -0
  322. package/dist/src/utils/catalog-generation-state.js +192 -0
  323. package/dist/src/utils/catalog-generation-state.js.map +1 -0
  324. package/dist/src/utils/catalog-generation-store.d.ts +58 -0
  325. package/dist/src/utils/catalog-generation-store.js +452 -0
  326. package/dist/src/utils/catalog-generation-store.js.map +1 -0
  327. package/dist/src/utils/catalog-manifest-v7.d.ts +5 -0
  328. package/dist/src/utils/{catalog-manifest-v4.js → catalog-manifest-v7.js} +35 -43
  329. package/dist/src/utils/catalog-manifest-v7.js.map +1 -0
  330. package/dist/src/utils/catalog-operation-context.d.ts +20 -0
  331. package/dist/src/utils/catalog-operation-context.js +142 -0
  332. package/dist/src/utils/catalog-operation-context.js.map +1 -0
  333. package/dist/src/utils/catalog-public-error.d.ts +7 -3
  334. package/dist/src/utils/catalog-public-error.js +28 -8
  335. package/dist/src/utils/catalog-public-error.js.map +1 -1
  336. package/dist/src/utils/catalog-runtime-projection.d.ts +4 -7
  337. package/dist/src/utils/catalog-runtime-projection.js +7 -102
  338. package/dist/src/utils/catalog-runtime-projection.js.map +1 -1
  339. package/dist/src/utils/catalog-snapshot.d.ts +5 -3
  340. package/dist/src/utils/catalog-snapshot.js +11 -3
  341. package/dist/src/utils/catalog-snapshot.js.map +1 -1
  342. package/dist/src/utils/catalog-source-identity.d.ts +1 -0
  343. package/dist/src/utils/catalog-source-identity.js +21 -2
  344. package/dist/src/utils/catalog-source-identity.js.map +1 -1
  345. package/dist/src/utils/catalog-source-impact.d.ts +21 -0
  346. package/dist/src/utils/catalog-source-impact.js +344 -0
  347. package/dist/src/utils/catalog-source-impact.js.map +1 -0
  348. package/dist/src/utils/catalog-source-references.d.ts +3 -2
  349. package/dist/src/utils/catalog-source-references.js +195 -347
  350. package/dist/src/utils/catalog-source-references.js.map +1 -1
  351. package/dist/src/utils/catalog-sources.d.ts +15 -1
  352. package/dist/src/utils/catalog-sources.js +206 -27
  353. package/dist/src/utils/catalog-sources.js.map +1 -1
  354. package/dist/src/utils/codex-config.d.ts +2 -0
  355. package/dist/src/utils/codex-config.js +26 -5
  356. package/dist/src/utils/codex-config.js.map +1 -1
  357. package/dist/src/utils/codex-manager.d.ts +79 -0
  358. package/dist/src/utils/codex-manager.js +745 -0
  359. package/dist/src/utils/codex-manager.js.map +1 -0
  360. package/dist/src/utils/codex-marketplace-path.d.ts +5 -0
  361. package/dist/src/utils/codex-marketplace-path.js +45 -0
  362. package/dist/src/utils/codex-marketplace-path.js.map +1 -0
  363. package/dist/src/utils/codex-native-observation.d.ts +49 -0
  364. package/dist/src/utils/codex-native-observation.js +154 -0
  365. package/dist/src/utils/codex-native-observation.js.map +1 -0
  366. package/dist/src/utils/codex-native-render-receipt.d.ts +40 -0
  367. package/dist/src/utils/codex-native-render-receipt.js +205 -0
  368. package/dist/src/utils/codex-native-render-receipt.js.map +1 -0
  369. package/dist/src/utils/codex-reconciler.d.ts +126 -0
  370. package/dist/src/utils/codex-reconciler.js +298 -0
  371. package/dist/src/utils/codex-reconciler.js.map +1 -0
  372. package/dist/src/utils/codex-shared-native.d.ts +43 -0
  373. package/dist/src/utils/codex-shared-native.js +81 -0
  374. package/dist/src/utils/codex-shared-native.js.map +1 -0
  375. package/dist/src/utils/codex-skill-staging.d.ts +2 -0
  376. package/dist/src/utils/codex-skill-staging.js.map +1 -1
  377. package/dist/src/utils/codex-surface-analysis.d.ts +46 -0
  378. package/dist/src/utils/codex-surface-analysis.js +247 -0
  379. package/dist/src/utils/codex-surface-analysis.js.map +1 -0
  380. package/dist/src/utils/dynamic-skill-tree.d.ts +4 -0
  381. package/dist/src/utils/dynamic-skill-tree.js +36 -6
  382. package/dist/src/utils/dynamic-skill-tree.js.map +1 -1
  383. package/dist/src/utils/git-catalog-provider.d.ts +18 -0
  384. package/dist/src/utils/git-catalog-provider.js +170 -144
  385. package/dist/src/utils/git-catalog-provider.js.map +1 -1
  386. package/dist/src/utils/local-marketplace.d.ts +15 -1
  387. package/dist/src/utils/local-marketplace.js +307 -84
  388. package/dist/src/utils/local-marketplace.js.map +1 -1
  389. package/dist/src/utils/manifest.d.ts +1 -4
  390. package/dist/src/utils/manifest.js +1 -4
  391. package/dist/src/utils/manifest.js.map +1 -1
  392. package/dist/src/utils/multi-source-catalog.d.ts +3 -9
  393. package/dist/src/utils/multi-source-catalog.js +54 -110
  394. package/dist/src/utils/multi-source-catalog.js.map +1 -1
  395. package/dist/src/utils/native-cli.d.ts +55 -7
  396. package/dist/src/utils/native-cli.js +386 -57
  397. package/dist/src/utils/native-cli.js.map +1 -1
  398. package/dist/src/utils/orphan-marketplace-cleanup.js +0 -4
  399. package/dist/src/utils/orphan-marketplace-cleanup.js.map +1 -1
  400. package/dist/src/utils/ownership.d.ts +84 -20
  401. package/dist/src/utils/ownership.js +179 -222
  402. package/dist/src/utils/ownership.js.map +1 -1
  403. package/dist/src/utils/path-catalog-provider.d.ts +1 -1
  404. package/dist/src/utils/path-catalog-provider.js +54 -65
  405. package/dist/src/utils/path-catalog-provider.js.map +1 -1
  406. package/dist/src/utils/paths.d.ts +0 -1
  407. package/dist/src/utils/paths.js +0 -1
  408. package/dist/src/utils/paths.js.map +1 -1
  409. package/dist/src/utils/plugin-config-impact.d.ts +33 -0
  410. package/dist/src/utils/plugin-config-impact.js +298 -0
  411. package/dist/src/utils/plugin-config-impact.js.map +1 -0
  412. package/dist/src/utils/plugin-config-write.d.ts +52 -27
  413. package/dist/src/utils/plugin-config-write.js +990 -298
  414. package/dist/src/utils/plugin-config-write.js.map +1 -1
  415. package/dist/src/utils/plugin-config.d.ts +140 -93
  416. package/dist/src/utils/plugin-config.js +992 -980
  417. package/dist/src/utils/plugin-config.js.map +1 -1
  418. package/dist/src/utils/plugin-intent-state.d.ts +49 -0
  419. package/dist/src/utils/plugin-intent-state.js +320 -0
  420. package/dist/src/utils/plugin-intent-state.js.map +1 -0
  421. package/dist/src/utils/plugin-scripts.d.ts +62 -125
  422. package/dist/src/utils/plugin-scripts.js +468 -525
  423. package/dist/src/utils/plugin-scripts.js.map +1 -1
  424. package/dist/src/utils/process-tree.d.ts +2 -2
  425. package/dist/src/utils/process-tree.js +1 -1
  426. package/dist/src/utils/process-tree.js.map +1 -1
  427. package/dist/src/utils/project-boundary.d.ts +11 -13
  428. package/dist/src/utils/project-boundary.js +28 -34
  429. package/dist/src/utils/project-boundary.js.map +1 -1
  430. package/dist/src/utils/safe-fs.d.ts +21 -0
  431. package/dist/src/utils/safe-fs.js +111 -0
  432. package/dist/src/utils/safe-fs.js.map +1 -0
  433. package/dist/src/utils/safe-operation-diagnostic.d.ts +15 -0
  434. package/dist/src/utils/safe-operation-diagnostic.js +33 -0
  435. package/dist/src/utils/safe-operation-diagnostic.js.map +1 -0
  436. package/dist/src/utils/sensitive-content.d.ts +4 -0
  437. package/dist/src/utils/sensitive-content.js +36 -0
  438. package/dist/src/utils/sensitive-content.js.map +1 -0
  439. package/dist/src/utils/skill-validation.d.ts +1 -1
  440. package/dist/src/utils/skill-validation.js +1 -1
  441. package/dist/src/utils/skill-validation.js.map +1 -1
  442. package/dist/src/utils/state-paths.d.ts +1 -0
  443. package/dist/src/utils/state-paths.js +12 -2
  444. package/dist/src/utils/state-paths.js.map +1 -1
  445. package/dist/src/utils/target-eligibility.d.ts +8 -2
  446. package/dist/src/utils/target-eligibility.js +17 -8
  447. package/dist/src/utils/target-eligibility.js.map +1 -1
  448. package/dist/src/utils/windows-claude-shim.d.ts +9 -0
  449. package/dist/src/utils/windows-claude-shim.js +141 -0
  450. package/dist/src/utils/windows-claude-shim.js.map +1 -0
  451. package/dist/vitest.config.js +91 -10
  452. package/dist/vitest.config.js.map +1 -1
  453. package/package.json +22 -19
  454. package/dist/authoring/scripts/check-plugin-versions.mjs +0 -5
  455. package/dist/authoring/scripts/check-plugin-versions.mjs.map +0 -1
  456. package/dist/scripts/aw-skill-eval-engine.d.ts +0 -13
  457. package/dist/scripts/aw-skill-eval-engine.js +0 -31
  458. package/dist/scripts/aw-skill-eval-engine.js.map +0 -1
  459. package/dist/scripts/codex-eval-app-server.d.ts +0 -89
  460. package/dist/scripts/codex-eval-app-server.js +0 -1228
  461. package/dist/scripts/codex-eval-app-server.js.map +0 -1
  462. package/dist/scripts/codex-eval-isolation.d.ts +0 -61
  463. package/dist/scripts/codex-eval-isolation.js +0 -318
  464. package/dist/scripts/codex-eval-isolation.js.map +0 -1
  465. package/dist/scripts/codex-eval-process-management.d.ts +0 -8
  466. package/dist/scripts/codex-eval-process-management.js +0 -69
  467. package/dist/scripts/codex-eval-process-management.js.map +0 -1
  468. package/dist/scripts/codex-eval-process-tree.d.ts +0 -38
  469. package/dist/scripts/codex-eval-process-tree.js +0 -803
  470. package/dist/scripts/codex-eval-process-tree.js.map +0 -1
  471. package/dist/scripts/codex-eval-runtime-config.d.ts +0 -62
  472. package/dist/scripts/codex-eval-runtime-config.js +0 -843
  473. package/dist/scripts/codex-eval-runtime-config.js.map +0 -1
  474. package/dist/scripts/codex-trigger-eval.d.ts +0 -84
  475. package/dist/scripts/codex-trigger-eval.js +0 -968
  476. package/dist/scripts/codex-trigger-eval.js.map +0 -1
  477. package/dist/scripts/eval-plugin-skills-audited.d.ts +0 -6
  478. package/dist/scripts/eval-plugin-skills-audited.js +0 -261
  479. package/dist/scripts/eval-plugin-skills-audited.js.map +0 -1
  480. package/dist/scripts/eval-plugin-skills.d.ts +0 -45
  481. package/dist/scripts/eval-plugin-skills.js +0 -1586
  482. package/dist/scripts/eval-plugin-skills.js.map +0 -1
  483. package/dist/scripts/eval-run-layout.d.ts +0 -17
  484. package/dist/scripts/eval-run-layout.js +0 -26
  485. package/dist/scripts/eval-run-layout.js.map +0 -1
  486. package/dist/scripts/plugin-eval-contract.d.ts +0 -185
  487. package/dist/scripts/plugin-eval-contract.js +0 -695
  488. package/dist/scripts/plugin-eval-contract.js.map +0 -1
  489. package/dist/scripts/plugin-eval-materializer.d.ts +0 -13
  490. package/dist/scripts/plugin-eval-materializer.js +0 -421
  491. package/dist/scripts/plugin-eval-materializer.js.map +0 -1
  492. package/dist/scripts/skill-reporting.d.ts +0 -212
  493. package/dist/scripts/skill-reporting.js +0 -922
  494. package/dist/scripts/skill-reporting.js.map +0 -1
  495. package/dist/src/commands/status-v4.d.ts +0 -102
  496. package/dist/src/commands/status-v4.js +0 -844
  497. package/dist/src/commands/status-v4.js.map +0 -1
  498. package/dist/src/commands/status.d.ts +0 -93
  499. package/dist/src/commands/status.js +0 -442
  500. package/dist/src/commands/status.js.map +0 -1
  501. package/dist/src/utils/active-marketplace-runtime-lock.d.ts +0 -12
  502. package/dist/src/utils/active-marketplace-runtime-lock.js +0 -133
  503. package/dist/src/utils/active-marketplace-runtime-lock.js.map +0 -1
  504. package/dist/src/utils/catalog-manifest-v3.d.ts +0 -2
  505. package/dist/src/utils/catalog-manifest-v3.js +0 -3
  506. package/dist/src/utils/catalog-manifest-v3.js.map +0 -1
  507. package/dist/src/utils/catalog-manifest-v4.d.ts +0 -5
  508. package/dist/src/utils/catalog-manifest-v4.js.map +0 -1
  509. package/dist/src/utils/catalog-source-cache.d.ts +0 -61
  510. package/dist/src/utils/catalog-source-cache.js +0 -276
  511. package/dist/src/utils/catalog-source-cache.js.map +0 -1
  512. package/dist/src/utils/codex-project-surface.d.ts +0 -3
  513. package/dist/src/utils/codex-project-surface.js +0 -49
  514. package/dist/src/utils/codex-project-surface.js.map +0 -1
  515. package/dist/src/utils/lifecycle-active-store.d.ts +0 -175
  516. package/dist/src/utils/lifecycle-active-store.js +0 -1276
  517. package/dist/src/utils/lifecycle-active-store.js.map +0 -1
  518. package/dist/src/utils/plugin-authoring-capabilities.d.ts +0 -23
  519. package/dist/src/utils/plugin-authoring-capabilities.js +0 -37
  520. package/dist/src/utils/plugin-authoring-capabilities.js.map +0 -1
  521. package/dist/src/utils/plugin-authoring-capabilities.json +0 -92
  522. package/dist/src/utils/plugin-release.d.ts +0 -2
  523. package/dist/src/utils/plugin-release.js +0 -2
  524. package/dist/src/utils/plugin-release.js.map +0 -1
  525. package/dist/src/utils/skill-frontmatter-capabilities.d.ts +0 -201
  526. package/dist/src/utils/skill-frontmatter-capabilities.js +0 -5
  527. package/dist/src/utils/skill-frontmatter-capabilities.js.map +0 -1
  528. package/dist/src/utils/skill-frontmatter-capabilities.json +0 -200
  529. /package/dist/authoring/scripts/{check-plugin-versions.d.mts → remove-plugin.d.mts} +0 -0
@@ -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