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

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 +260 -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
@@ -0,0 +1,320 @@
1
+ import crypto from 'node:crypto';
2
+ import path from 'node:path';
3
+ import fs from 'fs-extra';
4
+ import { parsePluginId } from './multi-source-catalog.js';
5
+ import { atomicReplaceConfigFile, resolveAwProjectRoot, } from './plugin-config.js';
6
+ import { assertCanonicalProjectManagedRoots, assertProjectSharedConfigPathVisible, } from './project-boundary.js';
7
+ import { resolveAwHome } from './state-paths.js';
8
+ import { assertTestReadablePath, assertTestWritablePath, } from './test-path-fence.js';
9
+ export const PLUGIN_INTENT_SCHEMA_VERSION = 2;
10
+ export const PLUGIN_INTENT_KIND = 'aw-plugin-intents';
11
+ function compareText(left, right) {
12
+ return left < right ? -1 : left > right ? 1 : 0;
13
+ }
14
+ function isRecord(value) {
15
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
16
+ }
17
+ function assertExactKeys(value, expected, fieldName) {
18
+ const allowed = new Set(expected);
19
+ const unknown = Object.keys(value).filter((key) => !allowed.has(key));
20
+ const missing = expected.filter((key) => !(key in value));
21
+ if (unknown.length > 0 || missing.length > 0) {
22
+ throw new Error(`Invalid ${fieldName}: expected exactly ${expected.join(', ')}.`
23
+ + `${unknown.length > 0 ? ` Unknown: ${unknown.sort(compareText).join(', ')}.` : ''}`
24
+ + `${missing.length > 0 ? ` Missing: ${missing.join(', ')}.` : ''}`);
25
+ }
26
+ }
27
+ function parseCanonicalPluginId(value, fieldName) {
28
+ if (typeof value !== 'string') {
29
+ throw new Error(`Invalid ${fieldName}: expected a source-qualified plugin ID.`);
30
+ }
31
+ const parsed = parsePluginId(value);
32
+ if (!parsed.sourceId) {
33
+ throw new Error(`Invalid ${fieldName}: expected a source-qualified plugin ID.`);
34
+ }
35
+ return `${parsed.sourceId}/${parsed.pluginName}`;
36
+ }
37
+ function parsePlatform(value, fieldName) {
38
+ if (value !== 'codex' && value !== 'claude') {
39
+ throw new Error(`Invalid ${fieldName}: expected codex or claude.`);
40
+ }
41
+ return value;
42
+ }
43
+ function parseScope(value, fieldName) {
44
+ if (value !== 'project' && value !== 'user') {
45
+ throw new Error(`Invalid ${fieldName}: expected project or user.`);
46
+ }
47
+ return value;
48
+ }
49
+ function canonicalPlatforms(platforms) {
50
+ return [...new Set(platforms)].sort(compareText);
51
+ }
52
+ export function createEmptyPluginIntentState() {
53
+ return {
54
+ schemaVersion: PLUGIN_INTENT_SCHEMA_VERSION,
55
+ kind: PLUGIN_INTENT_KIND,
56
+ roots: [],
57
+ dependencyScopeOverrides: [],
58
+ };
59
+ }
60
+ export function canonicalizePluginIntentState(state) {
61
+ const roots = state.roots.map((root) => ({
62
+ pluginId: parseCanonicalPluginId(root.pluginId, 'roots[].pluginId'),
63
+ platforms: canonicalPlatforms(root.platforms.map((platform) => parsePlatform(platform, 'roots[].platforms[]'))),
64
+ }));
65
+ if (roots.some((root) => root.platforms.length === 0)) {
66
+ throw new Error('Invalid roots[].platforms: expected at least one platform.');
67
+ }
68
+ if (new Set(roots.map((root) => root.pluginId)).size !== roots.length) {
69
+ throw new Error('Invalid roots: duplicate pluginId.');
70
+ }
71
+ const dependencyScopeOverrides = state.dependencyScopeOverrides.map((override) => ({
72
+ pluginId: parseCanonicalPluginId(override.pluginId, 'dependencyScopeOverrides[].pluginId'),
73
+ platform: parsePlatform(override.platform, 'dependencyScopeOverrides[].platform'),
74
+ scope: parseScope(override.scope, 'dependencyScopeOverrides[].scope'),
75
+ }));
76
+ const overrideKeys = dependencyScopeOverrides.map((override) => `${override.pluginId}\0${override.platform}`);
77
+ if (new Set(overrideKeys).size !== overrideKeys.length) {
78
+ throw new Error('Invalid dependencyScopeOverrides: duplicate pluginId/platform target.');
79
+ }
80
+ return {
81
+ schemaVersion: PLUGIN_INTENT_SCHEMA_VERSION,
82
+ kind: PLUGIN_INTENT_KIND,
83
+ roots: roots.sort((left, right) => compareText(left.pluginId, right.pluginId)),
84
+ dependencyScopeOverrides: dependencyScopeOverrides.sort((left, right) => compareText(`${left.pluginId}\0${left.platform}`, `${right.pluginId}\0${right.platform}`)),
85
+ };
86
+ }
87
+ export function parsePluginIntentState(value) {
88
+ if (!isRecord(value))
89
+ throw new Error('Invalid plugin intent state: expected an object.');
90
+ assertExactKeys(value, ['schemaVersion', 'kind', 'roots', 'dependencyScopeOverrides'], 'plugin intent state');
91
+ if (value.schemaVersion !== PLUGIN_INTENT_SCHEMA_VERSION) {
92
+ throw new Error('Invalid plugin intent state schemaVersion: expected 2.');
93
+ }
94
+ if (value.kind !== PLUGIN_INTENT_KIND) {
95
+ throw new Error(`Invalid plugin intent state kind: expected ${PLUGIN_INTENT_KIND}.`);
96
+ }
97
+ if (!Array.isArray(value.roots))
98
+ throw new Error('Invalid roots: expected an array.');
99
+ if (!Array.isArray(value.dependencyScopeOverrides)) {
100
+ throw new Error('Invalid dependencyScopeOverrides: expected an array.');
101
+ }
102
+ const roots = value.roots.map((entry, index) => {
103
+ if (!isRecord(entry))
104
+ throw new Error(`Invalid roots[${index}]: expected an object.`);
105
+ assertExactKeys(entry, ['pluginId', 'platforms'], `roots[${index}]`);
106
+ if (!Array.isArray(entry.platforms)) {
107
+ throw new Error(`Invalid roots[${index}].platforms: expected an array.`);
108
+ }
109
+ return {
110
+ pluginId: parseCanonicalPluginId(entry.pluginId, `roots[${index}].pluginId`),
111
+ platforms: entry.platforms.map((platform, platformIndex) => parsePlatform(platform, `roots[${index}].platforms[${platformIndex}]`)),
112
+ };
113
+ });
114
+ const dependencyScopeOverrides = value.dependencyScopeOverrides.map((entry, index) => {
115
+ if (!isRecord(entry)) {
116
+ throw new Error(`Invalid dependencyScopeOverrides[${index}]: expected an object.`);
117
+ }
118
+ assertExactKeys(entry, ['pluginId', 'platform', 'scope'], `dependencyScopeOverrides[${index}]`);
119
+ return {
120
+ pluginId: parseCanonicalPluginId(entry.pluginId, `dependencyScopeOverrides[${index}].pluginId`),
121
+ platform: parsePlatform(entry.platform, `dependencyScopeOverrides[${index}].platform`),
122
+ scope: parseScope(entry.scope, `dependencyScopeOverrides[${index}].scope`),
123
+ };
124
+ });
125
+ return canonicalizePluginIntentState({
126
+ schemaVersion: PLUGIN_INTENT_SCHEMA_VERSION,
127
+ kind: PLUGIN_INTENT_KIND,
128
+ roots,
129
+ dependencyScopeOverrides,
130
+ });
131
+ }
132
+ export function serializePluginIntentState(state) {
133
+ return `${JSON.stringify(canonicalizePluginIntentState(state), null, 2)}\n`;
134
+ }
135
+ export function calculatePluginIntentDigest(state) {
136
+ const canonical = canonicalizePluginIntentState(state);
137
+ const digest = crypto.createHash('sha256').update(JSON.stringify(canonical)).digest('hex');
138
+ return `sha256:${digest}`;
139
+ }
140
+ export function upsertPluginIntentRoot(state, root) {
141
+ const pluginId = parseCanonicalPluginId(root.pluginId, 'root.pluginId');
142
+ return canonicalizePluginIntentState({
143
+ ...state,
144
+ roots: [
145
+ ...state.roots.filter((entry) => entry.pluginId !== pluginId),
146
+ { pluginId, platforms: [...root.platforms] },
147
+ ],
148
+ });
149
+ }
150
+ export function mergePluginIntentRootPlatforms(state, root) {
151
+ const pluginId = parseCanonicalPluginId(root.pluginId, 'root.pluginId');
152
+ const current = state.roots.find((entry) => entry.pluginId === pluginId);
153
+ return upsertPluginIntentRoot(state, {
154
+ pluginId,
155
+ platforms: [...(current?.platforms ?? []), ...root.platforms],
156
+ });
157
+ }
158
+ export function addPluginIntentRoot(state, root) {
159
+ const pluginId = parseCanonicalPluginId(root.pluginId, 'root.pluginId');
160
+ if (state.roots.some((entry) => entry.pluginId === pluginId)) {
161
+ throw new Error(`Plugin intent root already exists: ${pluginId}`);
162
+ }
163
+ return upsertPluginIntentRoot(state, { ...root, pluginId });
164
+ }
165
+ export function removePluginIntentRoot(state, pluginId) {
166
+ const canonicalPluginId = parseCanonicalPluginId(pluginId, 'pluginId');
167
+ return canonicalizePluginIntentState({
168
+ ...state,
169
+ roots: state.roots.filter((entry) => entry.pluginId !== canonicalPluginId),
170
+ });
171
+ }
172
+ export function removePluginIntentRootPlatforms(state, root) {
173
+ const pluginId = parseCanonicalPluginId(root.pluginId, 'root.pluginId');
174
+ const removed = new Set(root.platforms.map((platform) => parsePlatform(platform, 'root.platforms[]')));
175
+ const current = state.roots.find((entry) => entry.pluginId === pluginId);
176
+ if (!current)
177
+ return state;
178
+ const platforms = current.platforms.filter((platform) => !removed.has(platform));
179
+ return platforms.length === 0
180
+ ? removePluginIntentRoot(state, pluginId)
181
+ : upsertPluginIntentRoot(state, { pluginId, platforms });
182
+ }
183
+ export function resolvePluginIntentStatePath(location, access) {
184
+ const filePath = location.scope === 'user'
185
+ ? path.join(resolveAwHome(location.env), 'plugin-intents.json')
186
+ : path.join(resolveAwProjectRoot(location.cwd), '.agent-workflows', 'plugin-intents.json');
187
+ if (access === 'read') {
188
+ return assertTestReadablePath(filePath, `${location.scope} plugin intent state`, '用测试隔离环境登记可读 project 或 AW_HOME 根。');
189
+ }
190
+ if (access === 'write') {
191
+ return assertTestWritablePath(filePath, `${location.scope} plugin intent state`, '用 createIsolatedTestEnv() 或 withSafeTestCwd() 登记可写根。');
192
+ }
193
+ return filePath;
194
+ }
195
+ function assertPathInsideRoot(allowedRoot, filePath) {
196
+ const relative = path.relative(path.resolve(allowedRoot), path.resolve(filePath));
197
+ if (relative === ''
198
+ || relative === '..'
199
+ || relative.startsWith(`..${path.sep}`)
200
+ || path.isAbsolute(relative)) {
201
+ throw new Error('Plugin intent path escapes its allowed root.');
202
+ }
203
+ }
204
+ async function assertReadableIntentPath(allowedRoot, filePath) {
205
+ assertPathInsideRoot(allowedRoot, filePath);
206
+ const root = path.resolve(allowedRoot);
207
+ const rootStats = await fs.lstat(root).catch((error) => {
208
+ if (error.code === 'ENOENT')
209
+ return null;
210
+ throw error;
211
+ });
212
+ if (!rootStats)
213
+ return false;
214
+ if (rootStats.isSymbolicLink() || !rootStats.isDirectory()) {
215
+ throw new Error(`Plugin intent root must be a regular directory: ${root}`);
216
+ }
217
+ let current = root;
218
+ for (const segment of path.relative(root, path.resolve(filePath)).split(path.sep).filter(Boolean)) {
219
+ current = path.join(current, segment);
220
+ const stats = await fs.lstat(current).catch((error) => {
221
+ if (error.code === 'ENOENT')
222
+ return null;
223
+ throw error;
224
+ });
225
+ if (!stats)
226
+ return false;
227
+ if (stats.isSymbolicLink()) {
228
+ throw new Error(`Plugin intent path cannot contain a symbolic link: ${current}`);
229
+ }
230
+ if (current === path.resolve(filePath) && !stats.isFile()) {
231
+ throw new Error(`Plugin intent target must be a regular file: ${filePath}`);
232
+ }
233
+ if (current !== path.resolve(filePath) && !stats.isDirectory()) {
234
+ throw new Error(`Plugin intent path parent must be a directory: ${current}`);
235
+ }
236
+ }
237
+ return true;
238
+ }
239
+ async function resolveIntentLocation(location) {
240
+ if (location.scope === 'user') {
241
+ const allowedRoot = resolveAwHome(location.env);
242
+ return {
243
+ allowedRoot,
244
+ filePath: resolvePluginIntentStatePath(location),
245
+ };
246
+ }
247
+ const allowedRoot = await assertCanonicalProjectManagedRoots({
248
+ cwd: location.cwd,
249
+ rootNames: [],
250
+ managedPaths: ['.agent-workflows'],
251
+ });
252
+ return {
253
+ allowedRoot,
254
+ filePath: path.join(allowedRoot, '.agent-workflows', 'plugin-intents.json'),
255
+ };
256
+ }
257
+ async function readPluginIntentStateObservationUnsafe(location) {
258
+ resolvePluginIntentStatePath(location, 'read');
259
+ const { allowedRoot, filePath } = await resolveIntentLocation(location);
260
+ if (!await assertReadableIntentPath(allowedRoot, filePath)) {
261
+ return { state: 'absent' };
262
+ }
263
+ let value;
264
+ try {
265
+ value = JSON.parse(await fs.readFile(filePath, 'utf8'));
266
+ }
267
+ catch (error) {
268
+ if (error instanceof SyntaxError) {
269
+ throw new Error('Invalid plugin intent state JSON.');
270
+ }
271
+ throw error;
272
+ }
273
+ return { state: 'ready', value: parsePluginIntentState(value) };
274
+ }
275
+ function invalidIntentPathError(error) {
276
+ if (!(error instanceof Error))
277
+ return false;
278
+ return /(?:symbolic link|regular (?:directory|file)|escapes its allowed root|符号链接|realpath 越界|必须位于 repo 内)/iu
279
+ .test(error.message);
280
+ }
281
+ export async function observePluginIntentState(location) {
282
+ try {
283
+ return await readPluginIntentStateObservationUnsafe(location);
284
+ }
285
+ catch (error) {
286
+ if (error instanceof Error && error.name === 'AbortError')
287
+ throw error;
288
+ const invalid = invalidIntentPathError(error)
289
+ || error instanceof SyntaxError
290
+ || error instanceof Error && /^Invalid (?:plugin intent|roots|dependencyScopeOverrides)/u.test(error.message);
291
+ return invalid ? {
292
+ state: 'invalid',
293
+ code: 'pluginIntentStateInvalid',
294
+ message: '插件声明格式无效或路径不安全。',
295
+ } : {
296
+ state: 'unavailable',
297
+ code: 'pluginIntentStateUnavailable',
298
+ message: '无法读取插件声明。',
299
+ };
300
+ }
301
+ }
302
+ export async function readPluginIntentState(location) {
303
+ const observation = await readPluginIntentStateObservationUnsafe(location);
304
+ return observation.state === 'ready' ? observation.value : createEmptyPluginIntentState();
305
+ }
306
+ export async function writePluginIntentState(location, state) {
307
+ const requestedPath = resolvePluginIntentStatePath(location, 'write');
308
+ if (location.scope === 'project') {
309
+ await assertProjectSharedConfigPathVisible({ cwd: location.cwd, targetPath: requestedPath });
310
+ }
311
+ const { allowedRoot, filePath } = await resolveIntentLocation(location);
312
+ const canonical = canonicalizePluginIntentState(state);
313
+ await atomicReplaceConfigFile({
314
+ filePath,
315
+ allowedRoot,
316
+ content: serializePluginIntentState(canonical),
317
+ });
318
+ return canonical;
319
+ }
320
+ //# sourceMappingURL=plugin-intent-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-intent-state.js","sourceRoot":"","sources":["../../../src/utils/plugin-intent-state.ts"],"names":[],"mappings":"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"}
@@ -1,118 +1,56 @@
1
+ import { spawn } from 'node:child_process';
1
2
  import type { CommandExecutionContext } from '../commands/runtime.js';
2
- import type { GeneratedArtifact, PlatformName, DistributionName, PluginLifecycleEvent, PluginLifecycleRuntimeOs, PluginLifecycleScriptEntry, NormalizedPluginManifest, PluginMeta, Scope } from '../types.js';
3
- export { calculateFileDigest, calculatePluginBundleFingerprint, } from './bundle-integrity.js';
4
- export type LifecycleScriptTargetSource = 'currentCatalog' | 'none';
5
- export interface LifecycleScriptTarget {
6
- noOp: boolean;
7
- source: LifecycleScriptTargetSource;
8
- entry?: PluginLifecycleScriptEntry;
9
- entryPath?: string;
10
- bundleRoot?: string;
11
- sourceManifest?: NormalizedPluginManifest;
12
- manifestPath?: string;
13
- manifestDigest?: string;
14
- warnings: string[];
15
- }
16
- export interface ResolveLifecycleScriptTargetOptions {
17
- event: PluginLifecycleEvent;
18
- pluginName: string;
19
- platform: PlatformName;
20
- currentPlugin?: PluginMeta;
21
- cwd: string;
22
- env?: NodeJS.ProcessEnv;
23
- runtimeOs?: PluginLifecycleRuntimeOs;
24
- }
25
- export interface LifecycleScriptContext {
26
- event: PluginLifecycleEvent | 'test';
27
- plugin: {
28
- name: string;
29
- version: string;
30
- rootDir: string;
31
- sourceId?: string;
32
- sourceIdentity?: string;
33
- pluginId?: string;
34
- };
35
- platform: PlatformName;
36
- scope: Scope;
37
- cwd: string;
38
- paths: {
39
- awHome: string;
40
- codexHome: string;
41
- claudeHome: string;
42
- manifestPath: string;
43
- configStores?: {
44
- user: string;
45
- project: string;
46
- projectLocal: string;
47
- };
48
- };
49
- config: {
50
- schema?: NonNullable<NormalizedPluginManifest['config']>['schema'];
51
- values: Record<string, string | number | boolean>;
52
- sources: Record<string, string>;
53
- issues: unknown[];
54
- };
55
- script: {
56
- runner: PluginLifecycleScriptEntry['runner'];
57
- path: string;
58
- args: string[];
59
- source: LifecycleScriptTargetSource;
60
- manifestDigest: string;
61
- };
62
- artifacts: GeneratedArtifact[];
63
- }
64
- export interface WrittenLifecycleScriptContext {
65
- context: LifecycleScriptContext;
66
- contextPath: string;
67
- tempDir: string;
68
- sensitiveValues: string[];
69
- cleanup: () => Promise<void>;
70
- }
71
- export interface LifecycleScriptInvocation {
3
+ import type { DistributionName, NormalizedPluginManifest, PlatformName, PluginConfigValue, PluginMeta, Scope } from '../types.js';
4
+ import { observeProcessTree, terminateProcessTree, type WindowsJobInvocation } from './process-tree.js';
5
+ export { calculateFileDigest } from './bundle-integrity.js';
6
+ export declare const PLUGIN_SCRIPT_TIMEOUT_DEFAULT_MS = 300000;
7
+ export declare const PLUGIN_SCRIPT_TIMEOUT_MIN_MS = 1000;
8
+ export declare const PLUGIN_SCRIPT_TIMEOUT_MAX_MS = 1800000;
9
+ export interface PluginScriptInvocation {
72
10
  command: string;
73
11
  args: string[];
74
12
  cwd: string;
75
13
  env: NodeJS.ProcessEnv;
14
+ stdin?: string;
76
15
  }
77
- export interface LifecycleProcessResult {
16
+ export interface PluginProcessResult {
78
17
  exitCode: number | null;
79
18
  signal: NodeJS.Signals | null;
80
19
  stdout: string;
81
20
  stderr: string;
82
21
  timedOut: boolean;
83
22
  }
84
- export interface LifecycleProcessRunner {
85
- run(invocation: LifecycleScriptInvocation, options: {
23
+ export interface PluginProcessRunner {
24
+ run(invocation: PluginScriptInvocation, options: {
86
25
  timeoutMs: number;
87
26
  signal?: AbortSignal;
88
- }): Promise<LifecycleProcessResult>;
27
+ }): Promise<PluginProcessResult>;
28
+ }
29
+ interface DefaultPluginProcessRunOptions {
30
+ timeoutMs: number;
31
+ signal?: AbortSignal;
32
+ sensitiveValues?: readonly string[];
89
33
  }
90
- export interface RunLifecycleScriptResult {
91
- executed: boolean;
92
- target: LifecycleScriptTarget;
93
- exitCode?: number | null;
94
- signal?: NodeJS.Signals | null;
95
- stdout?: string;
96
- stderr?: string;
97
- timedOut?: boolean;
34
+ /** @internal Test-only dependency seam. It is not exported from the package entrypoint. */
35
+ interface DefaultPluginProcessRunnerDependencies {
36
+ platform?: NodeJS.Platform;
37
+ spawn?: typeof spawn;
38
+ observeProcessTree?: typeof observeProcessTree;
39
+ terminateProcessTree?: typeof terminateProcessTree;
40
+ createWindowsJobInvocation?: (executable: string, args: readonly string[]) => WindowsJobInvocation;
98
41
  }
99
42
  export declare function resolveBundledPluginFilePath(options: {
100
43
  bundleRoot: string;
101
44
  pluginRelativePath: string;
102
45
  fieldName: string;
103
46
  }): Promise<string>;
104
- export declare function resolveLifecycleScriptTarget(options: ResolveLifecycleScriptTargetOptions): Promise<LifecycleScriptTarget>;
105
- export declare function quoteCmdArgument(value: string): string;
106
- export declare function buildLifecycleScriptInvocation(options: {
107
- entry: PluginLifecycleScriptEntry;
47
+ export declare function buildNodeScriptInvocation(options: {
108
48
  entryPath: string;
109
49
  cwd: string;
110
50
  env: NodeJS.ProcessEnv;
111
- }): LifecycleScriptInvocation;
112
- export declare function resolveLifecycleScriptTimeoutMs(options: {
113
- cliTimeoutMs?: number;
114
- manifest?: NormalizedPluginManifest;
115
- }): number;
51
+ args?: string[];
52
+ stdin?: string;
53
+ }): PluginScriptInvocation;
116
54
  export declare function buildPluginScriptSpawnEnv(options: {
117
55
  commandEnv: NodeJS.ProcessEnv;
118
56
  contextPath: string;
@@ -126,47 +64,46 @@ export declare function buildPluginScriptSpawnEnv(options: {
126
64
  distribution?: DistributionName;
127
65
  scope: Scope;
128
66
  bundleRoot: string;
129
- runtimeOs?: PluginLifecycleRuntimeOs;
130
67
  }): NodeJS.ProcessEnv;
131
- export declare function buildLifecycleSpawnEnv(options: {
132
- commandEnv: NodeJS.ProcessEnv;
133
- contextPath: string;
134
- tempDir: string;
68
+ export declare function resolvePluginScriptTimeoutMs(options: {
69
+ cliTimeoutMs?: number;
70
+ manifestTimeoutMs?: number;
71
+ }): number;
72
+ export declare function collectSensitivePluginConfigValues(manifest: NormalizedPluginManifest, values: Record<string, PluginConfigValue>): string[];
73
+ export declare function assertNoSensitiveConfigValues(value: unknown, sensitiveValues: readonly string[], message: string): void;
74
+ export declare function assertNoSensitiveConfigInFiles(files: Readonly<Record<string, Buffer>>, sensitiveValues: readonly string[], message: string): void;
75
+ export declare function redactPluginScriptOutput(value: string, sensitiveValues: readonly string[]): string;
76
+ export declare function truncatePluginScriptOutput(value: string): string;
77
+ export declare function summarizePluginScriptOutput(value: string, sensitiveValues: readonly string[]): string;
78
+ export declare function createDefaultPluginProcessRunner(dependencies?: DefaultPluginProcessRunnerDependencies): {
79
+ run(invocation: PluginScriptInvocation, options: DefaultPluginProcessRunOptions): Promise<PluginProcessResult>;
80
+ };
81
+ export declare const defaultPluginProcessRunner: {
82
+ run(invocation: PluginScriptInvocation, options: DefaultPluginProcessRunOptions): Promise<PluginProcessResult>;
83
+ };
84
+ export interface PreApplyContextV1 {
85
+ schemaVersion: 1;
135
86
  plugin: {
87
+ pluginId: string;
136
88
  name: string;
137
89
  version: string;
90
+ rootDir: string;
138
91
  };
139
- event: PluginLifecycleEvent | 'test';
140
- platform: PlatformName;
141
- scope: Scope;
142
- bundleRoot: string;
143
- runtimeOs?: PluginLifecycleRuntimeOs;
144
- }): NodeJS.ProcessEnv;
145
- export declare function collectSensitivePluginConfigValues(manifest: NormalizedPluginManifest, values: Record<string, string | number | boolean>): string[];
146
- export declare function redactPluginScriptOutput(value: string, sensitiveValues: readonly string[]): string;
147
- export declare function summarizePluginScriptOutput(value: string, sensitiveValues: readonly string[]): string;
148
- export declare function writeLifecycleScriptContext(options: {
149
- sourceId?: string;
150
- sourceIdentity?: string;
151
- target: LifecycleScriptTarget;
152
- event: PluginLifecycleEvent | 'test';
153
- platform: PlatformName;
154
- scope: Scope;
155
- cwd: string;
156
- commandEnv: NodeJS.ProcessEnv;
157
- artifacts?: GeneratedArtifact[];
158
- }): Promise<WrittenLifecycleScriptContext>;
159
- export declare const defaultPluginProcessRunner: LifecycleProcessRunner;
160
- export declare function runLifecycleScript(options: {
161
- event: PluginLifecycleEvent;
162
- pluginName: string;
92
+ target: {
93
+ platform: PlatformName;
94
+ scope: Scope;
95
+ projectRoot?: string;
96
+ };
97
+ config: {
98
+ values: Record<string, PluginConfigValue>;
99
+ };
100
+ }
101
+ export declare function runPreApplyScript(options: {
102
+ plugin: PluginMeta;
163
103
  platform: PlatformName;
164
104
  scope: Scope;
165
105
  cwd: string;
166
106
  context: CommandExecutionContext;
167
- currentPlugin?: PluginMeta;
168
- artifacts?: GeneratedArtifact[];
169
107
  scriptTimeoutMs?: number;
170
- runner?: LifecycleProcessRunner;
171
- runtimeOs?: PluginLifecycleRuntimeOs;
172
- }): Promise<RunLifecycleScriptResult>;
108
+ runner?: PluginProcessRunner;
109
+ }): Promise<void>;