@lesliechan721/aw 0.1.0-beta.4 → 0.1.0-beta.40

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 (571) hide show
  1. package/dist/authoring/assets/aw-config.mjs +100 -501
  2. package/dist/authoring/assets/aw-config.mjs.map +1 -1
  3. package/dist/authoring/assets/aw-runtime-config.d.mts +13 -0
  4. package/dist/authoring/assets/aw-runtime-config.mjs +199 -0
  5. package/dist/authoring/assets/aw-runtime-config.mjs.map +1 -0
  6. package/dist/authoring/scripts/add-skill.mjs +4 -4
  7. package/dist/authoring/scripts/add-skill.mjs.map +1 -1
  8. package/dist/authoring/scripts/init-plugin.mjs +67 -97
  9. package/dist/authoring/scripts/init-plugin.mjs.map +1 -1
  10. package/dist/authoring/scripts/lib/plugin-version-check.d.mts +15 -0
  11. package/dist/authoring/scripts/lib/plugin-version-check.mjs +239 -232
  12. package/dist/authoring/scripts/lib/plugin-version-check.mjs.map +1 -1
  13. package/dist/authoring/scripts/lib/skill-scaffold.d.mts +77 -90
  14. package/dist/authoring/scripts/lib/skill-scaffold.mjs +99 -120
  15. package/dist/authoring/scripts/lib/skill-scaffold.mjs.map +1 -1
  16. package/dist/authoring/scripts/plugin-status.mjs +8 -11
  17. package/dist/authoring/scripts/plugin-status.mjs.map +1 -1
  18. package/dist/authoring/scripts/remove-plugin.mjs +367 -0
  19. package/dist/authoring/scripts/remove-plugin.mjs.map +1 -0
  20. package/dist/authoring/scripts/validate-plugin.mjs +353 -1175
  21. package/dist/authoring/scripts/validate-plugin.mjs.map +1 -1
  22. package/dist/scripts/aw-skill-eval-materializer.d.ts +26 -0
  23. package/dist/scripts/aw-skill-eval-materializer.js +306 -0
  24. package/dist/scripts/aw-skill-eval-materializer.js.map +1 -0
  25. package/dist/scripts/bundle-plugins.d.ts +1 -2
  26. package/dist/scripts/bundle-plugins.js +24 -7
  27. package/dist/scripts/bundle-plugins.js.map +1 -1
  28. package/dist/scripts/plugin-staging.d.ts +7 -24
  29. package/dist/scripts/plugin-staging.js +22 -142
  30. package/dist/scripts/plugin-staging.js.map +1 -1
  31. package/dist/scripts/test-plugin-scripts.d.ts +2 -0
  32. package/dist/scripts/test-plugin-scripts.js +30 -75
  33. package/dist/scripts/test-plugin-scripts.js.map +1 -1
  34. package/dist/src/adapters/helpers.js +2 -2
  35. package/dist/src/adapters/helpers.js.map +1 -1
  36. package/dist/src/authoring/workspace-commands.d.ts +26 -2
  37. package/dist/src/authoring/workspace-commands.js +44 -19
  38. package/dist/src/authoring/workspace-commands.js.map +1 -1
  39. package/dist/src/commands/aw-capabilities.d.ts +78 -0
  40. package/dist/src/commands/aw-capabilities.js +263 -0
  41. package/dist/src/commands/aw-capabilities.js.map +1 -0
  42. package/dist/src/commands/catalog-dev-source.d.ts +154 -0
  43. package/dist/src/commands/catalog-dev-source.js +655 -0
  44. package/dist/src/commands/catalog-dev-source.js.map +1 -0
  45. package/dist/src/commands/catalog-generation.d.ts +21 -0
  46. package/dist/src/commands/catalog-generation.js +9 -0
  47. package/dist/src/commands/catalog-generation.js.map +1 -0
  48. package/dist/src/commands/catalog-publication-inspection.d.ts +138 -0
  49. package/dist/src/commands/catalog-publication-inspection.js +757 -0
  50. package/dist/src/commands/catalog-publication-inspection.js.map +1 -0
  51. package/dist/src/commands/catalog-publication-journal.d.ts +68 -0
  52. package/dist/src/commands/catalog-publication-journal.js +292 -0
  53. package/dist/src/commands/catalog-publication-journal.js.map +1 -0
  54. package/dist/src/commands/catalog-publication-target.d.ts +18 -0
  55. package/dist/src/commands/catalog-publication-target.js +95 -0
  56. package/dist/src/commands/catalog-publication-target.js.map +1 -0
  57. package/dist/src/commands/catalog-publish.d.ts +77 -7
  58. package/dist/src/commands/catalog-publish.js +746 -316
  59. package/dist/src/commands/catalog-publish.js.map +1 -1
  60. package/dist/src/commands/catalog-source.d.ts +60 -22
  61. package/dist/src/commands/catalog-source.js +311 -91
  62. package/dist/src/commands/catalog-source.js.map +1 -1
  63. package/dist/src/commands/catalog-status.d.ts +56 -0
  64. package/dist/src/commands/catalog-status.js +217 -0
  65. package/dist/src/commands/catalog-status.js.map +1 -0
  66. package/dist/src/commands/catalog-store.d.ts +104 -0
  67. package/dist/src/commands/catalog-store.js +685 -0
  68. package/dist/src/commands/catalog-store.js.map +1 -0
  69. package/dist/src/commands/catalog-workspace-resolution.d.ts +13 -0
  70. package/dist/src/commands/catalog-workspace-resolution.js +42 -0
  71. package/dist/src/commands/catalog-workspace-resolution.js.map +1 -0
  72. package/dist/src/commands/console.js +28 -17
  73. package/dist/src/commands/console.js.map +1 -1
  74. package/dist/src/commands/dependency-operation-plan.d.ts +52 -15
  75. package/dist/src/commands/dependency-operation-plan.js +289 -7
  76. package/dist/src/commands/dependency-operation-plan.js.map +1 -1
  77. package/dist/src/commands/init.d.ts +5 -11
  78. package/dist/src/commands/init.js +30 -51
  79. package/dist/src/commands/init.js.map +1 -1
  80. package/dist/src/commands/offline-cleanup-evidence.d.ts +67 -0
  81. package/dist/src/commands/offline-cleanup-evidence.js +181 -0
  82. package/dist/src/commands/offline-cleanup-evidence.js.map +1 -0
  83. package/dist/src/commands/operation-plan.d.ts +146 -0
  84. package/dist/src/commands/operation-plan.js +71 -0
  85. package/dist/src/commands/operation-plan.js.map +1 -0
  86. package/dist/src/commands/operation-planner.d.ts +46 -0
  87. package/dist/src/commands/operation-planner.js +141 -0
  88. package/dist/src/commands/operation-planner.js.map +1 -0
  89. package/dist/src/commands/options.d.ts +9 -7
  90. package/dist/src/commands/options.js +83 -21
  91. package/dist/src/commands/options.js.map +1 -1
  92. package/dist/src/commands/plugin-capabilities.d.ts +22 -0
  93. package/dist/src/commands/plugin-capabilities.js +163 -0
  94. package/dist/src/commands/plugin-capabilities.js.map +1 -0
  95. package/dist/src/commands/rebuild-command.d.ts +78 -30
  96. package/dist/src/commands/rebuild-command.js +4877 -713
  97. package/dist/src/commands/rebuild-command.js.map +1 -1
  98. package/dist/src/commands/rebuild-integration.d.ts +132 -21
  99. package/dist/src/commands/rebuild-integration.js +2853 -1327
  100. package/dist/src/commands/rebuild-integration.js.map +1 -1
  101. package/dist/src/commands/rebuild-operations.d.ts +58 -30
  102. package/dist/src/commands/rebuild-operations.js +260 -319
  103. package/dist/src/commands/rebuild-operations.js.map +1 -1
  104. package/dist/src/commands/reconcile-operation-plan.d.ts +28 -0
  105. package/dist/src/commands/reconcile-operation-plan.js +47 -0
  106. package/dist/src/commands/reconcile-operation-plan.js.map +1 -0
  107. package/dist/src/commands/review-inspection.d.ts +228 -0
  108. package/dist/src/commands/review-inspection.js +1341 -0
  109. package/dist/src/commands/review-inspection.js.map +1 -0
  110. package/dist/src/commands/review-preparation.d.ts +49 -0
  111. package/dist/src/commands/review-preparation.js +427 -0
  112. package/dist/src/commands/review-preparation.js.map +1 -0
  113. package/dist/src/commands/runtime.d.ts +1 -5
  114. package/dist/src/commands/runtime.js +24 -50
  115. package/dist/src/commands/runtime.js.map +1 -1
  116. package/dist/src/commands/skill-eval.d.ts +39 -0
  117. package/dist/src/commands/skill-eval.js +400 -0
  118. package/dist/src/commands/skill-eval.js.map +1 -0
  119. package/dist/src/commands/status-v6.d.ts +279 -0
  120. package/dist/src/commands/status-v6.js +2787 -0
  121. package/dist/src/commands/status-v6.js.map +1 -0
  122. package/dist/src/commands/sync-command.d.ts +40 -0
  123. package/dist/src/commands/sync-command.js +250 -0
  124. package/dist/src/commands/sync-command.js.map +1 -0
  125. package/dist/src/commands/wizard.d.ts +8 -5
  126. package/dist/src/commands/wizard.js +6 -4
  127. package/dist/src/commands/wizard.js.map +1 -1
  128. package/dist/src/commands/write-commands.d.ts +9 -3
  129. package/dist/src/commands/write-commands.js +127 -31
  130. package/dist/src/commands/write-commands.js.map +1 -1
  131. package/dist/src/constants.d.ts +7 -1
  132. package/dist/src/constants.js +7 -1
  133. package/dist/src/constants.js.map +1 -1
  134. package/dist/src/eval/manifest-v1.d.ts +71 -0
  135. package/dist/src/eval/manifest-v1.js +370 -0
  136. package/dist/src/eval/manifest-v1.js.map +1 -0
  137. package/dist/src/generators/local-plugin.d.ts +5 -1
  138. package/dist/src/generators/local-plugin.js +228 -104
  139. package/dist/src/generators/local-plugin.js.map +1 -1
  140. package/dist/src/index.d.ts +10 -4
  141. package/dist/src/index.js +1835 -469
  142. package/dist/src/index.js.map +1 -1
  143. package/dist/src/output/command-receipt.d.ts +43 -46
  144. package/dist/src/output/command-receipt.js +256 -80
  145. package/dist/src/output/command-receipt.js.map +1 -1
  146. package/dist/src/output/model.d.ts +3 -44
  147. package/dist/src/output/model.js +1 -144
  148. package/dist/src/output/model.js.map +1 -1
  149. package/dist/src/output/rebuild-progress.js +1 -13
  150. package/dist/src/output/rebuild-progress.js.map +1 -1
  151. package/dist/src/portable/commands.d.ts +46 -7
  152. package/dist/src/portable/commands.js +349 -37
  153. package/dist/src/portable/commands.js.map +1 -1
  154. package/dist/src/portable/materializer.d.ts +17 -4
  155. package/dist/src/portable/materializer.js +179 -41
  156. package/dist/src/portable/materializer.js.map +1 -1
  157. package/dist/src/portable/skills-cli.d.ts +15 -7
  158. package/dist/src/portable/skills-cli.js +66 -19
  159. package/dist/src/portable/skills-cli.js.map +1 -1
  160. package/dist/src/review/eval-source-input.d.ts +43 -0
  161. package/dist/src/review/eval-source-input.js +207 -0
  162. package/dist/src/review/eval-source-input.js.map +1 -0
  163. package/dist/src/review/review-profile.d.ts +17 -0
  164. package/dist/src/review/review-profile.js +234 -0
  165. package/dist/src/review/review-profile.js.map +1 -0
  166. package/dist/src/review/review-selection.d.ts +30 -0
  167. package/dist/src/review/review-selection.js +527 -0
  168. package/dist/src/review/review-selection.js.map +1 -0
  169. package/dist/src/review/review-types.d.ts +68 -0
  170. package/dist/src/review/review-types.js +16 -0
  171. package/dist/src/review/review-types.js.map +1 -0
  172. package/dist/src/review/skill-materialization.d.ts +13 -0
  173. package/dist/src/review/skill-materialization.js +75 -0
  174. package/dist/src/review/skill-materialization.js.map +1 -0
  175. package/dist/src/review/source-binding.d.ts +183 -0
  176. package/dist/src/review/source-binding.js +708 -0
  177. package/dist/src/review/source-binding.js.map +1 -0
  178. package/dist/src/tui/catalog-freshness.d.ts +1 -0
  179. package/dist/src/tui/catalog-freshness.js +2 -0
  180. package/dist/src/tui/catalog-freshness.js.map +1 -0
  181. package/dist/src/tui/catalog-generation.d.ts +21 -0
  182. package/dist/src/tui/catalog-generation.js +156 -0
  183. package/dist/src/tui/catalog-generation.js.map +1 -0
  184. package/dist/src/tui/catalog-sources/projection.d.ts +4 -0
  185. package/dist/src/tui/catalog-sources/projection.js +17 -0
  186. package/dist/src/tui/catalog-sources/projection.js.map +1 -0
  187. package/dist/src/tui/catalog-sources/review.d.ts +3 -0
  188. package/dist/src/tui/catalog-sources/review.js +13 -0
  189. package/dist/src/tui/catalog-sources/review.js.map +1 -0
  190. package/dist/src/tui/catalog-sources/screens.d.ts +12 -0
  191. package/dist/src/tui/catalog-sources/screens.js +40 -0
  192. package/dist/src/tui/catalog-sources/screens.js.map +1 -0
  193. package/dist/src/tui/catalog-sources/session.d.ts +32 -0
  194. package/dist/src/tui/catalog-sources/session.js +300 -0
  195. package/dist/src/tui/catalog-sources/session.js.map +1 -0
  196. package/dist/src/tui/catalog-sources/types.d.ts +54 -0
  197. package/dist/src/tui/catalog-sources/types.js +2 -0
  198. package/dist/src/tui/catalog-sources/types.js.map +1 -0
  199. package/dist/src/tui/catalog-store-task.d.ts +16 -0
  200. package/dist/src/tui/catalog-store-task.js +19 -0
  201. package/dist/src/tui/catalog-store-task.js.map +1 -0
  202. package/dist/src/tui/clipboard.d.ts +13 -0
  203. package/dist/src/tui/clipboard.js +95 -0
  204. package/dist/src/tui/clipboard.js.map +1 -0
  205. package/dist/src/tui/components.d.ts +177 -0
  206. package/dist/src/tui/components.js +297 -7
  207. package/dist/src/tui/components.js.map +1 -1
  208. package/dist/src/tui/config-array-draft.d.ts +29 -0
  209. package/dist/src/tui/config-array-draft.js +48 -0
  210. package/dist/src/tui/config-array-draft.js.map +1 -0
  211. package/dist/src/tui/config-leaf-editor.d.ts +16 -0
  212. package/dist/src/tui/config-leaf-editor.js +206 -0
  213. package/dist/src/tui/config-leaf-editor.js.map +1 -0
  214. package/dist/src/tui/config-value-presentation.d.ts +20 -0
  215. package/dist/src/tui/config-value-presentation.js +104 -0
  216. package/dist/src/tui/config-value-presentation.js.map +1 -0
  217. package/dist/src/tui/console-app-v4.d.ts +14 -4
  218. package/dist/src/tui/console-app-v4.js +9659 -1558
  219. package/dist/src/tui/console-app-v4.js.map +1 -1
  220. package/dist/src/tui/content-item-card.d.ts +13 -0
  221. package/dist/src/tui/content-item-card.js +51 -0
  222. package/dist/src/tui/content-item-card.js.map +1 -0
  223. package/dist/src/tui/controller-runtime.d.ts +13 -1
  224. package/dist/src/tui/controller-runtime.js +3323 -349
  225. package/dist/src/tui/controller-runtime.js.map +1 -1
  226. package/dist/src/tui/controller.d.ts +643 -40
  227. package/dist/src/tui/controller.js +3756 -705
  228. package/dist/src/tui/controller.js.map +1 -1
  229. package/dist/src/tui/dependency-graph-view.d.ts +39 -0
  230. package/dist/src/tui/dependency-graph-view.js +121 -0
  231. package/dist/src/tui/dependency-graph-view.js.map +1 -0
  232. package/dist/src/tui/dependency-graph.d.ts +81 -0
  233. package/dist/src/tui/dependency-graph.js +452 -0
  234. package/dist/src/tui/dependency-graph.js.map +1 -0
  235. package/dist/src/tui/diagnostic-projection.d.ts +23 -0
  236. package/dist/src/tui/diagnostic-projection.js +567 -0
  237. package/dist/src/tui/diagnostic-projection.js.map +1 -0
  238. package/dist/src/tui/diagnostics.d.ts +31 -0
  239. package/dist/src/tui/diagnostics.js +83 -0
  240. package/dist/src/tui/diagnostics.js.map +1 -0
  241. package/dist/src/tui/entity-cards.d.ts +55 -0
  242. package/dist/src/tui/entity-cards.js +220 -0
  243. package/dist/src/tui/entity-cards.js.map +1 -0
  244. package/dist/src/tui/glossary.d.ts +23 -0
  245. package/dist/src/tui/glossary.js +42 -0
  246. package/dist/src/tui/glossary.js.map +1 -0
  247. package/dist/src/tui/index.d.ts +11 -4
  248. package/dist/src/tui/index.js +8 -2
  249. package/dist/src/tui/index.js.map +1 -1
  250. package/dist/src/tui/input-display.d.ts +9 -0
  251. package/dist/src/tui/input-display.js +58 -0
  252. package/dist/src/tui/input-display.js.map +1 -0
  253. package/dist/src/tui/keys.d.ts +44 -0
  254. package/dist/src/tui/keys.js +43 -15
  255. package/dist/src/tui/keys.js.map +1 -1
  256. package/dist/src/tui/lifecycle-action-view.d.ts +6 -0
  257. package/dist/src/tui/lifecycle-action-view.js +36 -0
  258. package/dist/src/tui/lifecycle-action-view.js.map +1 -0
  259. package/dist/src/tui/model.d.ts +248 -27
  260. package/dist/src/tui/model.js +1662 -314
  261. package/dist/src/tui/model.js.map +1 -1
  262. package/dist/src/tui/operation-diagnostic-screens.d.ts +8 -0
  263. package/dist/src/tui/operation-diagnostic-screens.js +71 -0
  264. package/dist/src/tui/operation-diagnostic-screens.js.map +1 -0
  265. package/dist/src/tui/operation-history.d.ts +81 -0
  266. package/dist/src/tui/operation-history.js +136 -0
  267. package/dist/src/tui/operation-history.js.map +1 -0
  268. package/dist/src/tui/operation-review-planner.d.ts +21 -0
  269. package/dist/src/tui/operation-review-planner.js +1295 -0
  270. package/dist/src/tui/operation-review-planner.js.map +1 -0
  271. package/dist/src/tui/plugin-content.d.ts +31 -0
  272. package/dist/src/tui/plugin-content.js +680 -0
  273. package/dist/src/tui/plugin-content.js.map +1 -0
  274. package/dist/src/tui/plugin-detail.d.ts +52 -0
  275. package/dist/src/tui/plugin-detail.js +165 -0
  276. package/dist/src/tui/plugin-detail.js.map +1 -0
  277. package/dist/src/tui/plugin-write-task.d.ts +69 -0
  278. package/dist/src/tui/plugin-write-task.js +286 -0
  279. package/dist/src/tui/plugin-write-task.js.map +1 -0
  280. package/dist/src/tui/project-inventory.d.ts +68 -0
  281. package/dist/src/tui/project-inventory.js +203 -0
  282. package/dist/src/tui/project-inventory.js.map +1 -0
  283. package/dist/src/tui/prompt.js +4 -15
  284. package/dist/src/tui/prompt.js.map +1 -1
  285. package/dist/src/tui/query-header.d.ts +30 -0
  286. package/dist/src/tui/query-header.js +40 -0
  287. package/dist/src/tui/query-header.js.map +1 -0
  288. package/dist/src/tui/reader.d.ts +37 -0
  289. package/dist/src/tui/reader.js +47 -0
  290. package/dist/src/tui/reader.js.map +1 -0
  291. package/dist/src/tui/router.d.ts +207 -14
  292. package/dist/src/tui/router.js +352 -29
  293. package/dist/src/tui/router.js.map +1 -1
  294. package/dist/src/tui/screen-registry.d.ts +701 -0
  295. package/dist/src/tui/screen-registry.js +230 -0
  296. package/dist/src/tui/screen-registry.js.map +1 -0
  297. package/dist/src/tui/session-console-app.d.ts +6 -0
  298. package/dist/src/tui/session-console-app.js +13 -0
  299. package/dist/src/tui/session-console-app.js.map +1 -0
  300. package/dist/src/tui/session-host.d.ts +45 -0
  301. package/dist/src/tui/session-host.js +209 -0
  302. package/dist/src/tui/session-host.js.map +1 -0
  303. package/dist/src/tui/source-detail-card.d.ts +29 -0
  304. package/dist/src/tui/source-detail-card.js +45 -0
  305. package/dist/src/tui/source-detail-card.js.map +1 -0
  306. package/dist/src/tui/source-ref-presets.d.ts +3 -0
  307. package/dist/src/tui/source-ref-presets.js +11 -0
  308. package/dist/src/tui/source-ref-presets.js.map +1 -0
  309. package/dist/src/tui/theme.d.ts +30 -10
  310. package/dist/src/tui/theme.js +30 -10
  311. package/dist/src/tui/theme.js.map +1 -1
  312. package/dist/src/tui/viewport.d.ts +21 -0
  313. package/dist/src/tui/viewport.js +52 -0
  314. package/dist/src/tui/viewport.js.map +1 -0
  315. package/dist/src/tui/views.js +31 -3
  316. package/dist/src/tui/views.js.map +1 -1
  317. package/dist/src/tui/wizard.js +37 -13
  318. package/dist/src/tui/wizard.js.map +1 -1
  319. package/dist/src/types.d.ts +244 -20
  320. package/dist/src/types.js +1 -0
  321. package/dist/src/types.js.map +1 -1
  322. package/dist/src/utils/agent-version.d.ts +7 -1
  323. package/dist/src/utils/agent-version.js +41 -8
  324. package/dist/src/utils/agent-version.js.map +1 -1
  325. package/dist/src/utils/artifact-plan.d.ts +5 -4
  326. package/dist/src/utils/artifact-plan.js +18 -7
  327. package/dist/src/utils/artifact-plan.js.map +1 -1
  328. package/dist/src/utils/artifact-renderer.d.ts +17 -7
  329. package/dist/src/utils/artifact-renderer.js +214 -216
  330. package/dist/src/utils/artifact-renderer.js.map +1 -1
  331. package/dist/src/utils/artifact-request.d.ts +21 -0
  332. package/dist/src/utils/artifact-request.js +78 -0
  333. package/dist/src/utils/artifact-request.js.map +1 -0
  334. package/dist/src/utils/aw-home-mutation-lock.d.ts +1 -0
  335. package/dist/src/utils/aw-home-mutation-lock.js +32 -4
  336. package/dist/src/utils/aw-home-mutation-lock.js.map +1 -1
  337. package/dist/src/utils/bundle-integrity.d.ts +0 -1
  338. package/dist/src/utils/bundle-integrity.js +0 -25
  339. package/dist/src/utils/bundle-integrity.js.map +1 -1
  340. package/dist/src/utils/bundle-layout.js +22 -29
  341. package/dist/src/utils/bundle-layout.js.map +1 -1
  342. package/dist/src/utils/catalog-capability-projection.d.ts +8 -0
  343. package/dist/src/utils/catalog-capability-projection.js +14 -0
  344. package/dist/src/utils/catalog-capability-projection.js.map +1 -0
  345. package/dist/src/utils/catalog-digests.d.ts +10 -0
  346. package/dist/src/utils/catalog-digests.js +50 -2
  347. package/dist/src/utils/catalog-digests.js.map +1 -1
  348. package/dist/src/utils/catalog-generation-control-snapshot.d.ts +11 -0
  349. package/dist/src/utils/catalog-generation-control-snapshot.js +45 -0
  350. package/dist/src/utils/catalog-generation-control-snapshot.js.map +1 -0
  351. package/dist/src/utils/catalog-generation-error.d.ts +16 -0
  352. package/dist/src/utils/catalog-generation-error.js +30 -0
  353. package/dist/src/utils/catalog-generation-error.js.map +1 -0
  354. package/dist/src/utils/catalog-generation-resolver.d.ts +44 -0
  355. package/dist/src/utils/catalog-generation-resolver.js +273 -0
  356. package/dist/src/utils/catalog-generation-resolver.js.map +1 -0
  357. package/dist/src/utils/catalog-generation-service.d.ts +172 -0
  358. package/dist/src/utils/catalog-generation-service.js +1271 -0
  359. package/dist/src/utils/catalog-generation-service.js.map +1 -0
  360. package/dist/src/utils/catalog-generation-state.d.ts +22 -0
  361. package/dist/src/utils/catalog-generation-state.js +192 -0
  362. package/dist/src/utils/catalog-generation-state.js.map +1 -0
  363. package/dist/src/utils/catalog-generation-store.d.ts +58 -0
  364. package/dist/src/utils/catalog-generation-store.js +452 -0
  365. package/dist/src/utils/catalog-generation-store.js.map +1 -0
  366. package/dist/src/utils/catalog-manifest-v7.d.ts +5 -0
  367. package/dist/src/utils/{catalog-manifest-v4.js → catalog-manifest-v7.js} +35 -43
  368. package/dist/src/utils/catalog-manifest-v7.js.map +1 -0
  369. package/dist/src/utils/catalog-operation-context.d.ts +20 -0
  370. package/dist/src/utils/catalog-operation-context.js +142 -0
  371. package/dist/src/utils/catalog-operation-context.js.map +1 -0
  372. package/dist/src/utils/catalog-public-error.d.ts +7 -3
  373. package/dist/src/utils/catalog-public-error.js +28 -8
  374. package/dist/src/utils/catalog-public-error.js.map +1 -1
  375. package/dist/src/utils/catalog-runtime-projection.d.ts +4 -7
  376. package/dist/src/utils/catalog-runtime-projection.js +7 -102
  377. package/dist/src/utils/catalog-runtime-projection.js.map +1 -1
  378. package/dist/src/utils/catalog-snapshot.d.ts +5 -3
  379. package/dist/src/utils/catalog-snapshot.js +11 -3
  380. package/dist/src/utils/catalog-snapshot.js.map +1 -1
  381. package/dist/src/utils/catalog-source-identity.d.ts +1 -0
  382. package/dist/src/utils/catalog-source-identity.js +21 -2
  383. package/dist/src/utils/catalog-source-identity.js.map +1 -1
  384. package/dist/src/utils/catalog-source-impact.d.ts +21 -0
  385. package/dist/src/utils/catalog-source-impact.js +344 -0
  386. package/dist/src/utils/catalog-source-impact.js.map +1 -0
  387. package/dist/src/utils/catalog-source-references.d.ts +3 -2
  388. package/dist/src/utils/catalog-source-references.js +195 -347
  389. package/dist/src/utils/catalog-source-references.js.map +1 -1
  390. package/dist/src/utils/catalog-sources.d.ts +15 -1
  391. package/dist/src/utils/catalog-sources.js +206 -27
  392. package/dist/src/utils/catalog-sources.js.map +1 -1
  393. package/dist/src/utils/codex-config.d.ts +2 -0
  394. package/dist/src/utils/codex-config.js +26 -5
  395. package/dist/src/utils/codex-config.js.map +1 -1
  396. package/dist/src/utils/codex-manager.d.ts +79 -0
  397. package/dist/src/utils/codex-manager.js +745 -0
  398. package/dist/src/utils/codex-manager.js.map +1 -0
  399. package/dist/src/utils/codex-marketplace-path.d.ts +5 -0
  400. package/dist/src/utils/codex-marketplace-path.js +45 -0
  401. package/dist/src/utils/codex-marketplace-path.js.map +1 -0
  402. package/dist/src/utils/codex-native-observation.d.ts +49 -0
  403. package/dist/src/utils/codex-native-observation.js +154 -0
  404. package/dist/src/utils/codex-native-observation.js.map +1 -0
  405. package/dist/src/utils/codex-native-render-receipt.d.ts +40 -0
  406. package/dist/src/utils/codex-native-render-receipt.js +205 -0
  407. package/dist/src/utils/codex-native-render-receipt.js.map +1 -0
  408. package/dist/src/utils/codex-reconciler.d.ts +126 -0
  409. package/dist/src/utils/codex-reconciler.js +298 -0
  410. package/dist/src/utils/codex-reconciler.js.map +1 -0
  411. package/dist/src/utils/codex-shared-native.d.ts +43 -0
  412. package/dist/src/utils/codex-shared-native.js +81 -0
  413. package/dist/src/utils/codex-shared-native.js.map +1 -0
  414. package/dist/src/utils/codex-skill-staging.d.ts +2 -0
  415. package/dist/src/utils/codex-skill-staging.js.map +1 -1
  416. package/dist/src/utils/codex-surface-analysis.d.ts +46 -0
  417. package/dist/src/utils/codex-surface-analysis.js +247 -0
  418. package/dist/src/utils/codex-surface-analysis.js.map +1 -0
  419. package/dist/src/utils/dynamic-skill-tree.d.ts +4 -0
  420. package/dist/src/utils/dynamic-skill-tree.js +36 -6
  421. package/dist/src/utils/dynamic-skill-tree.js.map +1 -1
  422. package/dist/src/utils/git-catalog-provider.d.ts +16 -0
  423. package/dist/src/utils/git-catalog-provider.js +169 -144
  424. package/dist/src/utils/git-catalog-provider.js.map +1 -1
  425. package/dist/src/utils/local-marketplace.d.ts +17 -1
  426. package/dist/src/utils/local-marketplace.js +301 -84
  427. package/dist/src/utils/local-marketplace.js.map +1 -1
  428. package/dist/src/utils/manifest.d.ts +1 -4
  429. package/dist/src/utils/manifest.js +1 -4
  430. package/dist/src/utils/manifest.js.map +1 -1
  431. package/dist/src/utils/multi-source-catalog.d.ts +3 -9
  432. package/dist/src/utils/multi-source-catalog.js +54 -110
  433. package/dist/src/utils/multi-source-catalog.js.map +1 -1
  434. package/dist/src/utils/native-cli.d.ts +55 -7
  435. package/dist/src/utils/native-cli.js +386 -57
  436. package/dist/src/utils/native-cli.js.map +1 -1
  437. package/dist/src/utils/orphan-marketplace-cleanup.js +0 -4
  438. package/dist/src/utils/orphan-marketplace-cleanup.js.map +1 -1
  439. package/dist/src/utils/ownership.d.ts +84 -20
  440. package/dist/src/utils/ownership.js +179 -222
  441. package/dist/src/utils/ownership.js.map +1 -1
  442. package/dist/src/utils/path-catalog-provider.d.ts +1 -1
  443. package/dist/src/utils/path-catalog-provider.js +54 -65
  444. package/dist/src/utils/path-catalog-provider.js.map +1 -1
  445. package/dist/src/utils/paths.d.ts +0 -1
  446. package/dist/src/utils/paths.js +0 -1
  447. package/dist/src/utils/paths.js.map +1 -1
  448. package/dist/src/utils/plugin-config-impact.d.ts +33 -0
  449. package/dist/src/utils/plugin-config-impact.js +298 -0
  450. package/dist/src/utils/plugin-config-impact.js.map +1 -0
  451. package/dist/src/utils/plugin-config-write.d.ts +52 -27
  452. package/dist/src/utils/plugin-config-write.js +1000 -296
  453. package/dist/src/utils/plugin-config-write.js.map +1 -1
  454. package/dist/src/utils/plugin-config.d.ts +153 -93
  455. package/dist/src/utils/plugin-config.js +1163 -1017
  456. package/dist/src/utils/plugin-config.js.map +1 -1
  457. package/dist/src/utils/plugin-intent-state.d.ts +49 -0
  458. package/dist/src/utils/plugin-intent-state.js +320 -0
  459. package/dist/src/utils/plugin-intent-state.js.map +1 -0
  460. package/dist/src/utils/plugin-scripts.d.ts +65 -125
  461. package/dist/src/utils/plugin-scripts.js +482 -524
  462. package/dist/src/utils/plugin-scripts.js.map +1 -1
  463. package/dist/src/utils/process-tree.d.ts +2 -2
  464. package/dist/src/utils/process-tree.js +1 -1
  465. package/dist/src/utils/process-tree.js.map +1 -1
  466. package/dist/src/utils/project-boundary.d.ts +11 -13
  467. package/dist/src/utils/project-boundary.js +28 -34
  468. package/dist/src/utils/project-boundary.js.map +1 -1
  469. package/dist/src/utils/runtime-config.d.ts +20 -0
  470. package/dist/src/utils/runtime-config.js +75 -0
  471. package/dist/src/utils/runtime-config.js.map +1 -0
  472. package/dist/src/utils/safe-fs.d.ts +21 -0
  473. package/dist/src/utils/safe-fs.js +111 -0
  474. package/dist/src/utils/safe-fs.js.map +1 -0
  475. package/dist/src/utils/safe-operation-diagnostic.d.ts +15 -0
  476. package/dist/src/utils/safe-operation-diagnostic.js +33 -0
  477. package/dist/src/utils/safe-operation-diagnostic.js.map +1 -0
  478. package/dist/src/utils/sensitive-content.d.ts +4 -0
  479. package/dist/src/utils/sensitive-content.js +36 -0
  480. package/dist/src/utils/sensitive-content.js.map +1 -0
  481. package/dist/src/utils/skill-validation.d.ts +1 -1
  482. package/dist/src/utils/skill-validation.js +1 -1
  483. package/dist/src/utils/skill-validation.js.map +1 -1
  484. package/dist/src/utils/state-paths.d.ts +1 -0
  485. package/dist/src/utils/state-paths.js +12 -2
  486. package/dist/src/utils/state-paths.js.map +1 -1
  487. package/dist/src/utils/target-eligibility.d.ts +8 -2
  488. package/dist/src/utils/target-eligibility.js +17 -8
  489. package/dist/src/utils/target-eligibility.js.map +1 -1
  490. package/dist/src/utils/windows-claude-shim.d.ts +9 -0
  491. package/dist/src/utils/windows-claude-shim.js +141 -0
  492. package/dist/src/utils/windows-claude-shim.js.map +1 -0
  493. package/dist/vitest.config.js +91 -10
  494. package/dist/vitest.config.js.map +1 -1
  495. package/package.json +22 -19
  496. package/dist/authoring/scripts/check-plugin-versions.mjs +0 -5
  497. package/dist/authoring/scripts/check-plugin-versions.mjs.map +0 -1
  498. package/dist/scripts/aw-skill-eval-engine.d.ts +0 -13
  499. package/dist/scripts/aw-skill-eval-engine.js +0 -31
  500. package/dist/scripts/aw-skill-eval-engine.js.map +0 -1
  501. package/dist/scripts/codex-eval-app-server.d.ts +0 -89
  502. package/dist/scripts/codex-eval-app-server.js +0 -1228
  503. package/dist/scripts/codex-eval-app-server.js.map +0 -1
  504. package/dist/scripts/codex-eval-isolation.d.ts +0 -61
  505. package/dist/scripts/codex-eval-isolation.js +0 -318
  506. package/dist/scripts/codex-eval-isolation.js.map +0 -1
  507. package/dist/scripts/codex-eval-process-management.d.ts +0 -8
  508. package/dist/scripts/codex-eval-process-management.js +0 -69
  509. package/dist/scripts/codex-eval-process-management.js.map +0 -1
  510. package/dist/scripts/codex-eval-process-tree.d.ts +0 -38
  511. package/dist/scripts/codex-eval-process-tree.js +0 -803
  512. package/dist/scripts/codex-eval-process-tree.js.map +0 -1
  513. package/dist/scripts/codex-eval-runtime-config.d.ts +0 -62
  514. package/dist/scripts/codex-eval-runtime-config.js +0 -843
  515. package/dist/scripts/codex-eval-runtime-config.js.map +0 -1
  516. package/dist/scripts/codex-trigger-eval.d.ts +0 -84
  517. package/dist/scripts/codex-trigger-eval.js +0 -968
  518. package/dist/scripts/codex-trigger-eval.js.map +0 -1
  519. package/dist/scripts/eval-plugin-skills-audited.d.ts +0 -6
  520. package/dist/scripts/eval-plugin-skills-audited.js +0 -261
  521. package/dist/scripts/eval-plugin-skills-audited.js.map +0 -1
  522. package/dist/scripts/eval-plugin-skills.d.ts +0 -45
  523. package/dist/scripts/eval-plugin-skills.js +0 -1586
  524. package/dist/scripts/eval-plugin-skills.js.map +0 -1
  525. package/dist/scripts/eval-run-layout.d.ts +0 -17
  526. package/dist/scripts/eval-run-layout.js +0 -26
  527. package/dist/scripts/eval-run-layout.js.map +0 -1
  528. package/dist/scripts/plugin-eval-contract.d.ts +0 -185
  529. package/dist/scripts/plugin-eval-contract.js +0 -695
  530. package/dist/scripts/plugin-eval-contract.js.map +0 -1
  531. package/dist/scripts/plugin-eval-materializer.d.ts +0 -13
  532. package/dist/scripts/plugin-eval-materializer.js +0 -421
  533. package/dist/scripts/plugin-eval-materializer.js.map +0 -1
  534. package/dist/scripts/skill-reporting.d.ts +0 -212
  535. package/dist/scripts/skill-reporting.js +0 -922
  536. package/dist/scripts/skill-reporting.js.map +0 -1
  537. package/dist/src/commands/status-v4.d.ts +0 -102
  538. package/dist/src/commands/status-v4.js +0 -844
  539. package/dist/src/commands/status-v4.js.map +0 -1
  540. package/dist/src/commands/status.d.ts +0 -93
  541. package/dist/src/commands/status.js +0 -442
  542. package/dist/src/commands/status.js.map +0 -1
  543. package/dist/src/utils/active-marketplace-runtime-lock.d.ts +0 -12
  544. package/dist/src/utils/active-marketplace-runtime-lock.js +0 -133
  545. package/dist/src/utils/active-marketplace-runtime-lock.js.map +0 -1
  546. package/dist/src/utils/catalog-manifest-v3.d.ts +0 -2
  547. package/dist/src/utils/catalog-manifest-v3.js +0 -3
  548. package/dist/src/utils/catalog-manifest-v3.js.map +0 -1
  549. package/dist/src/utils/catalog-manifest-v4.d.ts +0 -5
  550. package/dist/src/utils/catalog-manifest-v4.js.map +0 -1
  551. package/dist/src/utils/catalog-source-cache.d.ts +0 -61
  552. package/dist/src/utils/catalog-source-cache.js +0 -276
  553. package/dist/src/utils/catalog-source-cache.js.map +0 -1
  554. package/dist/src/utils/codex-project-surface.d.ts +0 -3
  555. package/dist/src/utils/codex-project-surface.js +0 -49
  556. package/dist/src/utils/codex-project-surface.js.map +0 -1
  557. package/dist/src/utils/lifecycle-active-store.d.ts +0 -175
  558. package/dist/src/utils/lifecycle-active-store.js +0 -1276
  559. package/dist/src/utils/lifecycle-active-store.js.map +0 -1
  560. package/dist/src/utils/plugin-authoring-capabilities.d.ts +0 -23
  561. package/dist/src/utils/plugin-authoring-capabilities.js +0 -37
  562. package/dist/src/utils/plugin-authoring-capabilities.js.map +0 -1
  563. package/dist/src/utils/plugin-authoring-capabilities.json +0 -92
  564. package/dist/src/utils/plugin-release.d.ts +0 -2
  565. package/dist/src/utils/plugin-release.js +0 -2
  566. package/dist/src/utils/plugin-release.js.map +0 -1
  567. package/dist/src/utils/skill-frontmatter-capabilities.d.ts +0 -201
  568. package/dist/src/utils/skill-frontmatter-capabilities.js +0 -5
  569. package/dist/src/utils/skill-frontmatter-capabilities.js.map +0 -1
  570. package/dist/src/utils/skill-frontmatter-capabilities.json +0 -200
  571. /package/dist/authoring/scripts/{check-plugin-versions.d.mts → remove-plugin.d.mts} +0 -0
@@ -1,844 +0,0 @@
1
- import fs from 'node:fs';
2
- import path from 'node:path';
3
- import { hasCodexProjectManagedArtifacts } from '../utils/codex-project-surface.js';
4
- import { catalogSourceErrorCode, sanitizeCatalogSourceError, } from '../utils/catalog-public-error.js';
5
- import { calculateCatalogSourceIdentity } from '../utils/catalog-source-identity.js';
6
- import { canonicalMarketplaceRegistrationNames, inventoryCatalogSourceReferences, inventoryLegacyOwnerReferences, } from '../utils/catalog-source-references.js';
7
- import { readCatalogSourcesConfigSnapshot, resolveCatalogSourceRef } from '../utils/catalog-sources.js';
8
- import { formatPluginId, parsePluginId, planPluginSelectorSourceIds, withResolvedMultiSourceCatalog, } from '../utils/multi-source-catalog.js';
9
- import { assertStrictSemVer, readPluginManifest } from '../utils/manifest.js';
10
- import { resolveCliPackageRoot } from '../utils/paths.js';
11
- import { supportsPlatform } from '../utils/platform-support.js';
12
- import { parsePlatformValue, parseScopeValue } from './options.js';
13
- import { inspectRebuildTarget } from './rebuild-integration.js';
14
- import { createNoopReporter } from '../output/reporter.js';
15
- import { createNoopDebugLogger } from '../output/debug-log.js';
16
- import { getDefaultNativeCliRunner } from '../utils/native-cli.js';
17
- import { resolveAwHome } from '../utils/paths.js';
18
- import { createProjectLocationKey, getClaudeHome, getCodexHome, resolveCanonicalRepoProjectKey, } from '../utils/state-paths.js';
19
- import { resolveEffectivePluginConfig } from '../utils/plugin-config.js';
20
- let dependencyInspectionHookForTests;
21
- export function setStatusDependencyInspectionHookForTests(hook) {
22
- dependencyInspectionHookForTests = hook;
23
- }
24
- function projectStateInventoryError(error, env, cwd) {
25
- const sanitized = sanitizeCatalogSourceError(error, env, [
26
- getCodexHome(env),
27
- getClaudeHome(env),
28
- path.resolve(cwd),
29
- ]);
30
- const native = /(?:Codex|Claude|config\.toml|settings|installed_plugins)/iu.test(sanitized.message);
31
- const code = native ? 'nativeStateUnreadable' : 'stateInventoryFailed';
32
- return { code, message: `${code}: ${sanitized.message}`, relevance: { global: true } };
33
- }
34
- function inventoryErrorMatchesSelection(options) {
35
- const relevance = options.error.relevance;
36
- if (relevance.global)
37
- return true;
38
- if (relevance.projectLocationKey
39
- && relevance.projectLocationKey !== options.currentProjectLocationKey)
40
- return false;
41
- if (options.platformExplicit && relevance.platform
42
- && !options.platforms.includes(relevance.platform))
43
- return false;
44
- if (options.scopeExplicit && relevance.scope
45
- && !options.scopes.includes(relevance.scope))
46
- return false;
47
- if (options.selectors.length === 0 || (!relevance.sourceId && !relevance.pluginName))
48
- return true;
49
- return options.selectors.some((selector) => (!relevance.pluginName || selector.parsed.pluginName === relevance.pluginName)
50
- && (!relevance.sourceId
51
- || selector.parsed.sourceId === undefined
52
- || selector.parsed.sourceId === relevance.sourceId));
53
- }
54
- function projectTargetError(error, env, cwd) {
55
- const sanitized = sanitizeCatalogSourceError(new Error(error.message), env, [
56
- getCodexHome(env),
57
- getClaudeHome(env),
58
- path.resolve(cwd),
59
- ]);
60
- return { code: error.code, message: sanitized.message };
61
- }
62
- function sourceRequestedRef(source, cliVersion) {
63
- return source.type === 'git' ? resolveCatalogSourceRef(source.refPolicy, cliVersion) : 'path';
64
- }
65
- function selectedPlatforms(value) {
66
- const selection = value === undefined ? 'both' : parsePlatformValue(value);
67
- return selection === 'both' ? ['codex', 'claude'] : [selection];
68
- }
69
- function selectedScopes(value) {
70
- return value === undefined ? ['user', 'project'] : [parseScopeValue(value)];
71
- }
72
- function projectedLiveState(options) {
73
- if (options.inspection.state === 'error'
74
- || options.inspection.components.some((entry) => entry.state === 'error'))
75
- return 'error';
76
- if (options.inspection.components.length === 0
77
- || options.inspection.components.every((entry) => entry.state === 'absent'))
78
- return 'absent';
79
- if (options.inspection.components.some((entry) => entry.state === 'partial'))
80
- return 'partial';
81
- const required = new Set(options.required);
82
- const optional = new Set(options.optional);
83
- if (options.inspection.components.some((entry) => entry.state === 'present' && !required.has(entry.component) && !optional.has(entry.component))) {
84
- return 'partial';
85
- }
86
- if (!options.required.every((component) => options.inspection.components.some((entry) => entry.component === component && entry.state === 'present')))
87
- return 'partial';
88
- if (options.required.length > 0)
89
- return 'present';
90
- return options.optional.some((component) => options.inspection.components.some((entry) => entry.component === component && entry.state === 'present')) ? 'present' : 'absent';
91
- }
92
- function renderStatusV4(payload, verbose) {
93
- const lines = [`Catalog sources: ${payload.catalog.sources.length}`];
94
- for (const source of payload.catalog.sources) {
95
- lines.push(`${source.primary ? '*' : '-'} ${source.id}: ${source.error ?? source.freshness ?? 'unavailable'}`);
96
- }
97
- for (const target of payload.targets) {
98
- const errors = target.errors.length > 0
99
- ? ` [${target.errors.map((error) => `${error.code}: ${error.message}`).join('; ')}]`
100
- : '';
101
- lines.push(`${target.pluginId} ${target.platform}/${target.scope}: ${target.state}${errors}`);
102
- if (verbose) {
103
- for (const component of target.components) {
104
- const error = component.error
105
- ? ` [${component.error.code}: ${component.error.message}]`
106
- : '';
107
- lines.push(` component ${component.key}: ${component.state}${error}`);
108
- }
109
- }
110
- }
111
- for (const error of payload.errors)
112
- lines.push(`Error: ${error.message}`);
113
- return lines.join('\n');
114
- }
115
- export async function statusCommandV4(options) {
116
- const env = options.env ?? process.env;
117
- const dependencyPluginCache = new Map();
118
- const dependencyInspectionCache = new Map();
119
- const cliVersion = options.cliVersion ?? assertStrictSemVer(JSON.parse(fs.readFileSync(path.join(resolveCliPackageRoot(), 'package.json'), 'utf8')).version, 'packages/cli/package.json version');
120
- const snapshot = await readCatalogSourcesConfigSnapshot(env);
121
- const currentProjectKey = await resolveCanonicalRepoProjectKey(options.cwd);
122
- const currentProjectLocationKey = createProjectLocationKey(currentProjectKey);
123
- const inventoryErrors = [];
124
- const ownerInventory = await inventoryCatalogSourceReferences({ cwd: options.cwd, env }).catch(async (error) => {
125
- inventoryErrors.push(projectStateInventoryError(error, env, options.cwd));
126
- return inventoryLegacyOwnerReferences({ cwd: options.cwd, env }).catch((fallbackError) => {
127
- inventoryErrors.push(projectStateInventoryError(fallbackError, env, options.cwd));
128
- return { inventorySchemaVersion: 1, references: [], errors: [] };
129
- });
130
- });
131
- for (const error of ownerInventory.errors ?? []) {
132
- const code = error.kind === 'nativeStateRead' ? 'nativeStateUnreadable' : 'stateInventoryFailed';
133
- inventoryErrors.push({
134
- code,
135
- message: `${code}: ${error.kind}@${error.location}: ${error.message}`,
136
- relevance: error.relevance,
137
- });
138
- }
139
- const configured = new Map(snapshot.config.sources.map((source) => [source.id, source]));
140
- const requested = options.plugins ?? [];
141
- const platforms = selectedPlatforms(options.platform);
142
- const scopes = selectedScopes(options.scope);
143
- const selectorErrors = [];
144
- const parsedSelectors = [];
145
- const plannedSelectors = [];
146
- const liveOnlySelectors = [];
147
- for (const selector of requested) {
148
- let parsed;
149
- try {
150
- parsed = parsePluginId(selector);
151
- }
152
- catch (error) {
153
- selectorErrors.push({
154
- code: 'invalidPluginSelector',
155
- message: error instanceof Error ? error.message : String(error),
156
- });
157
- continue;
158
- }
159
- parsedSelectors.push({ raw: selector, parsed });
160
- if (parsed.sourceId !== undefined && !configured.has(parsed.sourceId)) {
161
- const hasLiveReference = ownerInventory.references.some((reference) => (reference.kind === 'namespacedOwner' || reference.kind === 'namespacedMarketplace')
162
- && reference.sourceId === parsed.sourceId
163
- && reference.pluginName === parsed.pluginName
164
- && platforms.includes(reference.platform)
165
- && scopes.includes(reference.scope)
166
- && (reference.scope !== 'project' || reference.projectKey === currentProjectKey));
167
- if (hasLiveReference) {
168
- liveOnlySelectors.push({ raw: selector, parsed });
169
- }
170
- else if (!inventoryErrors.some((error) => inventoryErrorMatchesSelection({
171
- error,
172
- selectors: [{ raw: selector, parsed }],
173
- platformExplicit: options.platform !== undefined,
174
- scopeExplicit: options.scope !== undefined,
175
- platforms,
176
- scopes,
177
- currentProjectLocationKey,
178
- }))) {
179
- selectorErrors.push({
180
- code: 'pluginNotFound',
181
- message: `Plugin "${selector}" was not found because catalog source "${parsed.sourceId}" is not configured.`,
182
- });
183
- }
184
- continue;
185
- }
186
- plannedSelectors.push({ raw: selector, parsed });
187
- }
188
- const selectedInventoryErrors = inventoryErrors.filter((error) => inventoryErrorMatchesSelection({
189
- error,
190
- selectors: parsedSelectors,
191
- platformExplicit: options.platform !== undefined,
192
- scopeExplicit: options.scope !== undefined,
193
- platforms,
194
- scopes,
195
- currentProjectLocationKey,
196
- }));
197
- const plannedSourceIds = requested.length === 0
198
- ? undefined
199
- : planPluginSelectorSourceIds(plannedSelectors.map((selector) => selector.parsed));
200
- const selectedConfiguredSources = plannedSourceIds === undefined
201
- ? snapshot.config.sources
202
- : plannedSourceIds.map((sourceId) => configured.get(sourceId));
203
- const identityEntries = await Promise.all(selectedConfiguredSources.map(async (source) => {
204
- try {
205
- return [source.id, { identity: await calculateCatalogSourceIdentity(source) }];
206
- }
207
- catch (error) {
208
- const sanitized = sanitizeCatalogSourceError(error, env);
209
- return [source.id, {
210
- error: sanitized.message,
211
- }];
212
- }
213
- }));
214
- const identities = new Map(identityEntries);
215
- const catalog = await withResolvedMultiSourceCatalog({
216
- cliVersion,
217
- freshnessPolicy: 'cacheFirst',
218
- configSnapshot: snapshot,
219
- ...(plannedSourceIds === undefined ? {} : { sourceIds: plannedSourceIds }),
220
- env,
221
- consume: async (resolution) => ({
222
- primarySourceId: resolution.primarySourceId,
223
- configDigest: resolution.configDigest,
224
- compositeDigest: resolution.compositeDigest,
225
- sources: await Promise.all(resolution.sources.map(async (item) => {
226
- const source = configured.get(item.sourceId);
227
- const identity = identities.get(item.sourceId);
228
- const base = {
229
- id: item.sourceId,
230
- identity: identity.identity ?? 'unavailable',
231
- type: source.type,
232
- primary: source.primary,
233
- requestedRef: item.resolution?.requestedRef ?? sourceRequestedRef(source, cliVersion),
234
- };
235
- if (identity.error || item.error) {
236
- const error = item.error ?? new Error(identity.error);
237
- return {
238
- ...base,
239
- error: [identity.error, item.error?.message].filter(Boolean).join('; '),
240
- errorCode: catalogSourceErrorCode(error),
241
- };
242
- }
243
- try {
244
- const plugins = await Promise.all(item.resolution.manifest.entries.map(async (entry) => {
245
- const plugin = await readPluginManifest(path.join(item.resolution.rootDir, 'plugins', entry.name), { mode: 'bundle' });
246
- const claude = supportsPlatform(plugin.manifest, 'claude');
247
- const codex = supportsPlatform(plugin.manifest, 'codex');
248
- plugin.sourceId = item.resolution.sourceId;
249
- plugin.sourceIdentity = item.resolution.sourceIdentity;
250
- plugin.pluginId = formatPluginId({ sourceId: item.resolution.sourceId, pluginName: entry.name });
251
- let effectiveConfig;
252
- let configDiagnostic;
253
- if (plugin.manifest.config?.schema) {
254
- try {
255
- effectiveConfig = await resolveEffectivePluginConfig({
256
- sourceId: plugin.sourceId,
257
- sourceIdentity: plugin.sourceIdentity,
258
- pluginName: plugin.manifest.name,
259
- manifest: plugin.manifest,
260
- cwd: options.cwd,
261
- env,
262
- });
263
- }
264
- catch {
265
- configDiagnostic = {
266
- code: 'configReadFailed',
267
- message: '插件设置当前不可读。未读取或显示设置值。',
268
- };
269
- }
270
- }
271
- const states = {};
272
- const defaultMarketplaceName = item.resolution.sourceId === resolution.primarySourceId
273
- ? 'aw'
274
- : `aw-${item.resolution.sourceId}`;
275
- const marketplaceNameFor = (pluginName, platform, scope) => {
276
- const liveName = ownerInventory.references.find((reference) => (reference.kind === 'namespacedOwner' || reference.kind === 'namespacedMarketplace')
277
- && reference.sourceId === item.resolution.sourceId
278
- && reference.sourceIdentity === item.resolution.sourceIdentity
279
- && reference.pluginName === pluginName
280
- && reference.platform === platform
281
- && reference.scope === scope
282
- && (scope === 'user' || reference.projectKey === currentProjectKey)
283
- && reference.marketplaceName)?.marketplaceName;
284
- if (liveName)
285
- return liveName;
286
- const registeredNames = canonicalMarketplaceRegistrationNames(ownerInventory.references, item.resolution.sourceId);
287
- if (registeredNames.length > 1) {
288
- throw new Error('marketplaceIdentityUnavailable: Multiple canonical native marketplace registrations match the source.');
289
- }
290
- return registeredNames[0] ?? defaultMarketplaceName;
291
- };
292
- const marketplaceRoot = path.join(resolveAwHome(env), 'marketplaces', item.resolution.sourceId);
293
- for (const platform of ['codex', 'claude']) {
294
- states[platform] = {};
295
- for (const scope of ['user', 'project']) {
296
- const supported = platform === 'claude'
297
- ? claude
298
- : codex && (scope === 'user' || hasCodexProjectManagedArtifacts(plugin));
299
- if (!supported)
300
- continue;
301
- const changedOwner = ownerInventory.references.find((reference) => (reference.kind === 'namespacedOwner' || reference.kind === 'namespacedMarketplace')
302
- && reference.sourceId === item.resolution.sourceId
303
- && reference.pluginName === entry.name
304
- && reference.platform === platform
305
- && reference.scope === scope
306
- && (scope === 'user' || reference.projectKey === currentProjectKey)
307
- && reference.sourceIdentity
308
- && reference.sourceIdentity !== item.resolution.sourceIdentity);
309
- if (changedOwner) {
310
- states[platform][scope] = {
311
- state: 'error',
312
- components: [],
313
- errors: [{
314
- code: 'sourceChanged',
315
- message: `sourceChanged: owner at ${changedOwner.location} has a different source identity.`,
316
- }],
317
- };
318
- continue;
319
- }
320
- try {
321
- const marketplaceName = marketplaceNameFor(entry.name, platform, scope);
322
- const inspected = await inspectRebuildTarget({
323
- sourceId: item.resolution.sourceId,
324
- sourceIdentity: item.resolution.sourceIdentity,
325
- pluginId: plugin.pluginId,
326
- marketplaceName,
327
- marketplaceRoot,
328
- plugin,
329
- platform,
330
- scope,
331
- cwd: options.cwd,
332
- catalog: {
333
- rootDir: item.resolution.rootDir,
334
- source: 'local',
335
- },
336
- context: {
337
- env,
338
- nativeCliRunner: getDefaultNativeCliRunner(),
339
- reporter: createNoopReporter(),
340
- debugLogger: createNoopDebugLogger(),
341
- },
342
- });
343
- const liveState = projectedLiveState({
344
- inspection: inspected.inspection,
345
- required: inspected.target.desiredOwnedComponents ?? inspected.target.ownedComponents,
346
- optional: inspected.target.optionalOwnedComponents ?? [],
347
- });
348
- const dependencyErrors = [];
349
- const directDependencies = plugin.manifest.dependencies ?? [];
350
- if (directDependencies.length > 0
351
- && (liveState === 'present' || liveState === 'partial')) {
352
- for (const dependencyName of directDependencies) {
353
- const dependencyId = formatPluginId({
354
- sourceId: item.resolution.sourceId,
355
- pluginName: dependencyName,
356
- });
357
- if (!item.resolution.manifest.entries.some((candidate) => candidate.name === dependencyName)) {
358
- dependencyErrors.push({
359
- code: 'dependencyMissing',
360
- message: `dependencyMissing: ${dependencyId} is not available in the current source snapshot.`,
361
- });
362
- continue;
363
- }
364
- const pluginCacheKey = [item.resolution.sourceIdentity, dependencyId].join('\0');
365
- let dependencyPluginPromise = dependencyPluginCache.get(pluginCacheKey);
366
- if (!dependencyPluginPromise) {
367
- dependencyPluginPromise = readPluginManifest(path.join(item.resolution.rootDir, 'plugins', dependencyName), { mode: 'bundle' }).then((dependencyPlugin) => {
368
- dependencyPlugin.sourceId = item.resolution.sourceId;
369
- dependencyPlugin.sourceIdentity = item.resolution.sourceIdentity;
370
- dependencyPlugin.pluginId = dependencyId;
371
- return dependencyPlugin;
372
- });
373
- dependencyPluginCache.set(pluginCacheKey, dependencyPluginPromise);
374
- }
375
- const placements = scope === 'project' ? ['project', 'user'] : ['user'];
376
- let dependencyState = 'absent';
377
- for (const dependencyScope of placements) {
378
- const inspectionCacheKey = [
379
- item.resolution.sourceIdentity,
380
- dependencyId,
381
- platform,
382
- dependencyScope,
383
- dependencyScope === 'project' ? currentProjectKey : '',
384
- ].join('\0');
385
- let dependencyInspection = dependencyInspectionCache.get(inspectionCacheKey);
386
- if (!dependencyInspection) {
387
- dependencyInspection = dependencyPluginPromise.then(async (dependencyPlugin) => {
388
- dependencyInspectionHookForTests?.();
389
- const dependencyMarketplaceName = marketplaceNameFor(dependencyName, platform, dependencyScope);
390
- const dependencyInspected = await inspectRebuildTarget({
391
- sourceId: item.resolution.sourceId,
392
- sourceIdentity: item.resolution.sourceIdentity,
393
- pluginId: dependencyId,
394
- marketplaceName: dependencyMarketplaceName,
395
- marketplaceRoot,
396
- plugin: dependencyPlugin,
397
- platform,
398
- scope: dependencyScope,
399
- cwd: options.cwd,
400
- catalog: { rootDir: item.resolution.rootDir, source: 'local' },
401
- context: {
402
- env,
403
- nativeCliRunner: getDefaultNativeCliRunner(),
404
- reporter: createNoopReporter(),
405
- debugLogger: createNoopDebugLogger(),
406
- },
407
- });
408
- return projectedLiveState({
409
- inspection: dependencyInspected.inspection,
410
- required: dependencyInspected.target.desiredOwnedComponents
411
- ?? dependencyInspected.target.ownedComponents,
412
- optional: dependencyInspected.target.optionalOwnedComponents ?? [],
413
- });
414
- });
415
- dependencyInspectionCache.set(inspectionCacheKey, dependencyInspection);
416
- }
417
- const candidateState = await dependencyInspection;
418
- if (candidateState === 'present') {
419
- dependencyState = 'present';
420
- break;
421
- }
422
- if (candidateState !== 'absent')
423
- dependencyState = candidateState;
424
- }
425
- if (dependencyState === 'absent') {
426
- dependencyErrors.push({
427
- code: 'dependencyMissing',
428
- message: `dependencyMissing: ${dependencyId} is absent from its required live placement.`,
429
- });
430
- }
431
- else if (dependencyState !== 'present') {
432
- dependencyErrors.push({
433
- code: 'dependencyNotReady',
434
- message: `dependencyNotReady: ${dependencyId} is not ready at its required live placement.`,
435
- });
436
- }
437
- }
438
- }
439
- states[platform][scope] = {
440
- state: dependencyErrors.length > 0 && liveState === 'present' ? 'partial' : liveState,
441
- errors: [...inspected.inspection.errors.map((error) => ({
442
- code: 'componentInspectionFailed',
443
- message: `${error.label}: ${error.message}`,
444
- })), ...dependencyErrors],
445
- components: options.verbose === true
446
- ? inspected.inspection.components.map((component) => {
447
- const projectedError = component.diagnostic
448
- ? projectTargetError({
449
- code: 'componentInspectionFailed',
450
- message: component.diagnostic,
451
- }, env, options.cwd)
452
- : undefined;
453
- return {
454
- key: component.component.identity.artifactKey,
455
- state: component.state,
456
- ...(projectedError ? { error: projectedError } : {}),
457
- };
458
- })
459
- : [],
460
- };
461
- }
462
- catch (error) {
463
- const message = error instanceof Error ? error.message : String(error);
464
- const code = message.split(':', 1)[0] || 'targetInspectionFailed';
465
- states[platform][scope] = {
466
- state: 'error',
467
- components: [],
468
- errors: [{ code, message }],
469
- };
470
- }
471
- }
472
- }
473
- return {
474
- name: entry.name,
475
- version: entry.version,
476
- displayName: plugin.manifest.interface?.displayName ?? entry.name,
477
- shortDescription: plugin.manifest.interface?.shortDescription
478
- ?? plugin.manifest.description,
479
- description: plugin.manifest.description,
480
- ...(plugin.manifest.config?.schema
481
- ? { configSchema: plugin.manifest.config.schema }
482
- : {}),
483
- ...(effectiveConfig?.issues.length
484
- ? {
485
- configIssues: effectiveConfig.issues.map((issue) => ({
486
- type: issue.type,
487
- key: issue.key,
488
- title: plugin.manifest.config.schema[issue.key]?.title ?? issue.key,
489
- source: issue.source ?? 'missing',
490
- })),
491
- }
492
- : {}),
493
- ...(configDiagnostic ? { configDiagnostic } : {}),
494
- targets: {
495
- claude: { user: claude, project: claude },
496
- codex: {
497
- user: codex,
498
- project: codex && hasCodexProjectManagedArtifacts(plugin),
499
- },
500
- },
501
- states,
502
- dependencies: plugin.manifest.dependencies ?? [],
503
- };
504
- }));
505
- return {
506
- ...base,
507
- resolvedCommit: item.resolution.resolvedCommit,
508
- catalogVersion: item.resolution.manifest.catalogVersion,
509
- channel: item.resolution.manifest.channel,
510
- freshness: item.resolution.source,
511
- plugins,
512
- };
513
- }
514
- catch (error) {
515
- const sanitized = sanitizeCatalogSourceError(error, env);
516
- return {
517
- ...base,
518
- error: sanitized.message,
519
- errorCode: catalogSourceErrorCode(sanitized),
520
- };
521
- }
522
- })),
523
- }),
524
- });
525
- const available = catalog.sources.flatMap((source) => 'plugins' in source
526
- ? source.plugins.map((plugin) => ({ ...plugin, source }))
527
- : []);
528
- const failedSourceIds = new Set(catalog.sources.filter((source) => 'error' in source).map((source) => source.id));
529
- const selectedById = new Map();
530
- if (requested.length === 0) {
531
- for (const entry of available) {
532
- selectedById.set(formatPluginId({ sourceId: entry.source.id, pluginName: entry.name }), entry);
533
- }
534
- }
535
- else {
536
- for (const selector of plannedSelectors) {
537
- if (selector.parsed.sourceId === undefined && failedSourceIds.size > 0) {
538
- selectorErrors.push({
539
- code: 'catalogSourceUnavailable',
540
- message: `Cannot resolve bare plugin selector "${selector.raw}" while catalog sources are unavailable: ${[...failedSourceIds].join(', ')}.`,
541
- });
542
- continue;
543
- }
544
- if (selector.parsed.sourceId !== undefined && failedSourceIds.has(selector.parsed.sourceId)) {
545
- selectorErrors.push({
546
- code: 'catalogSourceUnavailable',
547
- message: `Cannot resolve plugin selector "${selector.raw}" because catalog source "${selector.parsed.sourceId}" is unavailable.`,
548
- });
549
- continue;
550
- }
551
- const matches = available.filter((entry) => entry.name === selector.parsed.pluginName
552
- && (selector.parsed.sourceId === undefined || entry.source.id === selector.parsed.sourceId));
553
- if (matches.length === 0) {
554
- const selectorHasInventoryError = selectedInventoryErrors.some((error) => inventoryErrorMatchesSelection({
555
- error,
556
- selectors: [selector],
557
- platformExplicit: options.platform !== undefined,
558
- scopeExplicit: options.scope !== undefined,
559
- platforms,
560
- scopes,
561
- currentProjectLocationKey,
562
- }));
563
- if (!selectorHasInventoryError) {
564
- selectorErrors.push({
565
- code: 'pluginNotFound',
566
- message: `Plugin "${selector.raw}" was not found in the selected catalog source set.`,
567
- });
568
- }
569
- continue;
570
- }
571
- if (selector.parsed.sourceId === undefined && matches.length > 1) {
572
- selectorErrors.push({
573
- code: 'ambiguousPlugin',
574
- message: `Plugin "${selector.raw}" is ambiguous across sources: ${matches.map((entry) => entry.source.id).join(', ')}.`,
575
- });
576
- continue;
577
- }
578
- for (const entry of matches) {
579
- selectedById.set(formatPluginId({ sourceId: entry.source.id, pluginName: entry.name }), entry);
580
- }
581
- }
582
- }
583
- const selected = [...selectedById.values()];
584
- const explicitTargetFilter = requested.length > 0
585
- && (options.platform !== undefined || options.scope !== undefined);
586
- const targets = selected.flatMap((entry) => platforms.flatMap((platform) => scopes.flatMap((scope) => {
587
- const target = {
588
- pluginName: entry.name,
589
- sourceId: entry.source.id,
590
- sourceIdentity: entry.source.identity,
591
- pluginId: formatPluginId({ sourceId: entry.source.id, pluginName: entry.name }),
592
- version: entry.version,
593
- platform,
594
- scope,
595
- cwd: path.resolve(options.cwd),
596
- components: [],
597
- };
598
- if (entry.targets[platform][scope]) {
599
- const live = entry.states[platform]?.[scope];
600
- const dependencyIssueCount = (live?.errors ?? []).filter((error) => error.code.startsWith('dependency') || error.code === 'sourceChanged').length;
601
- return [{
602
- ...target,
603
- state: live?.state ?? 'error',
604
- components: live?.components ?? [],
605
- errors: live?.errors ?? [{
606
- code: 'targetInspectionFailed',
607
- message: `No live inspection result exists for ${entry.source.id}/${entry.name}.`,
608
- }],
609
- ...(entry.dependencies.length > 0 || dependencyIssueCount > 0 ? {
610
- dependency: {
611
- directCount: entry.dependencies.length,
612
- issueCount: dependencyIssueCount,
613
- },
614
- } : {}),
615
- }];
616
- }
617
- const unsupportedLiveReference = ownerInventory.references.find((reference) => (reference.kind === 'namespacedOwner' || reference.kind === 'namespacedMarketplace')
618
- && reference.sourceId === entry.source.id
619
- && reference.pluginName === entry.name
620
- && reference.platform === platform
621
- && reference.scope === scope
622
- && (scope === 'user' || reference.projectKey === currentProjectKey));
623
- if (unsupportedLiveReference) {
624
- const sourceChanged = Boolean(unsupportedLiveReference.sourceIdentity
625
- && unsupportedLiveReference.sourceIdentity !== entry.source.identity);
626
- return [{
627
- ...target,
628
- state: 'error',
629
- errors: [{
630
- code: sourceChanged ? 'sourceChanged' : 'noLongerSupported',
631
- message: sourceChanged
632
- ? `sourceChanged: live state for ${target.pluginId} has a different source identity.`
633
- : `noLongerSupported: ${target.pluginId} has live state for ${platform}/${scope}, but the current bundle no longer supports that target.`,
634
- }],
635
- }];
636
- }
637
- if (!explicitTargetFilter)
638
- return [];
639
- return [{
640
- ...target,
641
- state: 'error',
642
- errors: [{
643
- code: 'unsupportedTarget',
644
- message: `${entry.source.id}/${entry.name} does not support ${platform}/${scope}.`,
645
- }],
646
- }];
647
- })));
648
- const referenceSelectors = [...plannedSelectors, ...liveOnlySelectors];
649
- const referenceSelected = (reference) => (reference.pluginName !== undefined
650
- && reference.platform !== undefined
651
- && reference.scope !== undefined
652
- && platforms.includes(reference.platform)
653
- && scopes.includes(reference.scope)
654
- && (reference.scope !== 'project' || reference.projectKey === currentProjectKey)
655
- && (requested.length === 0 || referenceSelectors.some((selector) => selector.parsed.pluginName === reference.pluginName
656
- && (selector.parsed.sourceId === undefined || selector.parsed.sourceId === reference.sourceId))));
657
- const legacyOwners = ownerInventory.references.filter((reference) => (reference.kind === 'legacyOwner' || reference.kind === 'legacyMarketplace')
658
- && reference.pluginName !== undefined
659
- && reference.platform !== undefined
660
- && reference.scope !== undefined
661
- && platforms.includes(reference.platform)
662
- && scopes.includes(reference.scope)
663
- && (requested.length === 0 || plannedSelectors.some((selector) => selector.parsed.pluginName === reference.pluginName)));
664
- const missingSourceOwners = ownerInventory.references.filter((reference) => (reference.kind === 'namespacedOwner' || reference.kind === 'namespacedMarketplace')
665
- && reference.sourceId
666
- && !configured.has(reference.sourceId)
667
- && referenceSelected(reference));
668
- const missingTargets = [...new Map(missingSourceOwners.flatMap((reference) => {
669
- if (!reference.sourceId || !reference.pluginName
670
- || (reference.platform !== 'codex' && reference.platform !== 'claude')
671
- || (reference.scope !== 'user' && reference.scope !== 'project'))
672
- return [];
673
- const pluginId = formatPluginId({ sourceId: reference.sourceId, pluginName: reference.pluginName });
674
- const target = {
675
- pluginName: reference.pluginName,
676
- sourceId: reference.sourceId,
677
- sourceIdentity: reference.sourceIdentity ?? 'unavailable',
678
- pluginId,
679
- platform: reference.platform,
680
- scope: reference.scope,
681
- cwd: path.resolve(options.cwd),
682
- state: 'error',
683
- components: [],
684
- errors: [{
685
- code: 'sourceMissing',
686
- message: `sourceMissing: catalog source "${reference.sourceId}" is not configured for ${pluginId}.`,
687
- }],
688
- };
689
- return [[`${pluginId}\0${reference.platform}\0${reference.scope}`, target]];
690
- })).values()];
691
- targets.push(...missingTargets);
692
- const unavailableSourceReferences = ownerInventory.references.filter((reference) => (reference.kind === 'namespacedOwner' || reference.kind === 'namespacedMarketplace')
693
- && reference.sourceId
694
- && configured.has(reference.sourceId)
695
- && failedSourceIds.has(reference.sourceId)
696
- && referenceSelected(reference));
697
- const unavailableSourceTargets = [...new Map(unavailableSourceReferences.flatMap((reference) => {
698
- if (!reference.sourceId || !reference.pluginName
699
- || (reference.platform !== 'codex' && reference.platform !== 'claude')
700
- || (reference.scope !== 'user' && reference.scope !== 'project'))
701
- return [];
702
- const pluginId = formatPluginId({ sourceId: reference.sourceId, pluginName: reference.pluginName });
703
- const target = {
704
- pluginName: reference.pluginName,
705
- sourceId: reference.sourceId,
706
- sourceIdentity: reference.sourceIdentity ?? 'unavailable',
707
- pluginId,
708
- platform: reference.platform,
709
- scope: reference.scope,
710
- cwd: path.resolve(options.cwd),
711
- state: 'error',
712
- components: [],
713
- errors: [{
714
- code: 'catalogSourceUnavailable',
715
- message: `catalogSourceUnavailable: catalog source "${reference.sourceId}" is unavailable for ${pluginId}.`,
716
- }],
717
- };
718
- return [[`${pluginId}\0${reference.platform}\0${reference.scope}`, target]];
719
- })).values()];
720
- targets.push(...unavailableSourceTargets);
721
- const availablePluginIds = new Set(available.map((entry) => formatPluginId({ sourceId: entry.source.id, pluginName: entry.name })));
722
- const resolvedSourceIds = new Set(catalog.sources.flatMap((source) => 'plugins' in source ? [source.id] : []));
723
- const unavailableBundleReferences = ownerInventory.references.filter((reference) => (reference.kind === 'namespacedOwner' || reference.kind === 'namespacedMarketplace')
724
- && reference.sourceId
725
- && configured.has(reference.sourceId)
726
- && resolvedSourceIds.has(reference.sourceId)
727
- && reference.pluginName
728
- && referenceSelected(reference)
729
- && !availablePluginIds.has(formatPluginId({
730
- sourceId: reference.sourceId,
731
- pluginName: reference.pluginName,
732
- })));
733
- const unavailableBundleTargets = [...new Map(unavailableBundleReferences.flatMap((reference) => {
734
- if (!reference.sourceId || !reference.pluginName
735
- || (reference.platform !== 'codex' && reference.platform !== 'claude')
736
- || (reference.scope !== 'user' && reference.scope !== 'project'))
737
- return [];
738
- const pluginId = formatPluginId({ sourceId: reference.sourceId, pluginName: reference.pluginName });
739
- if (requested.length > 0 && !plannedSelectors.some((selector) => selector.parsed.pluginName === reference.pluginName
740
- && (selector.parsed.sourceId === undefined || selector.parsed.sourceId === reference.sourceId)))
741
- return [];
742
- const target = {
743
- pluginName: reference.pluginName,
744
- sourceId: reference.sourceId,
745
- sourceIdentity: reference.sourceIdentity ?? 'unavailable',
746
- pluginId,
747
- platform: reference.platform,
748
- scope: reference.scope,
749
- cwd: path.resolve(options.cwd),
750
- state: 'error',
751
- components: [],
752
- errors: [{
753
- code: 'bundleUnavailable',
754
- message: `bundleUnavailable: ${pluginId} has live state but is not present in the current source snapshot.`,
755
- }],
756
- };
757
- return [[`${pluginId}\0${reference.platform}\0${reference.scope}`, target]];
758
- })).values()];
759
- targets.push(...unavailableBundleTargets);
760
- const projectedInventoryErrors = [...new Map(selectedInventoryErrors.map((error) => [
761
- `${error.code}\0${error.message}`,
762
- { code: error.code, message: error.message },
763
- ])).values()];
764
- const errors = [
765
- ...projectedInventoryErrors,
766
- ...selectorErrors,
767
- ...legacyOwners.map((reference) => projectTargetError({
768
- code: 'legacyStateUnsupported',
769
- message: `legacyStateUnsupported: legacy live ${reference.kind} at ${reference.location}`,
770
- }, env, options.cwd)),
771
- ];
772
- const projectedTargets = targets.map((target) => ({
773
- ...target,
774
- errors: target.errors.map((error) => projectTargetError(error, env, options.cwd)),
775
- }));
776
- const payload = {
777
- schemaVersion: 4,
778
- catalog: {
779
- primarySourceId: catalog.primarySourceId,
780
- configDigest: catalog.configDigest,
781
- compositeDigest: catalog.compositeDigest,
782
- sources: catalog.sources.map((source) => {
783
- if (!('plugins' in source))
784
- return source;
785
- const { plugins: _plugins, ...projected } = source;
786
- return projected;
787
- }),
788
- },
789
- filters: {
790
- plugins: requested,
791
- platform: options.platform === undefined ? 'both' : parsePlatformValue(options.platform),
792
- ...(options.scope === undefined ? {} : { scope: parseScopeValue(options.scope) }),
793
- cwd: path.resolve(options.cwd),
794
- },
795
- targets: projectedTargets,
796
- errors,
797
- };
798
- const hasErrors = payload.catalog.sources.some((source) => source.error !== undefined)
799
- || payload.errors.length > 0
800
- || payload.targets.some((target) => target.state === 'error');
801
- return {
802
- payload,
803
- output: options.json ? JSON.stringify(payload) : renderStatusV4(payload, options.verbose === true),
804
- hasErrors,
805
- pluginSummaries: available.map((entry) => {
806
- const sourceEntries = available.filter((candidate) => candidate.source.id === entry.source.id);
807
- const byName = new Map(sourceEntries.map((candidate) => [candidate.name, candidate]));
808
- const transitive = new Set();
809
- const visit = (name) => {
810
- const candidate = byName.get(name);
811
- for (const dependency of candidate?.dependencies ?? []) {
812
- if (transitive.has(dependency))
813
- continue;
814
- transitive.add(dependency);
815
- visit(dependency);
816
- }
817
- };
818
- visit(entry.name);
819
- const dependencyIssueCount = targets.filter((target) => target.pluginId === formatPluginId({
820
- sourceId: entry.source.id,
821
- pluginName: entry.name,
822
- })).reduce((count, target) => count + target.errors.filter((error) => error.code.startsWith('dependency') || error.code === 'sourceChanged').length, 0);
823
- return {
824
- pluginName: entry.name,
825
- pluginId: formatPluginId({ sourceId: entry.source.id, pluginName: entry.name }),
826
- displayName: entry.displayName,
827
- description: entry.shortDescription,
828
- version: entry.version,
829
- supportedTargets: {
830
- codex: ['user', 'project'].filter((scope) => entry.targets.codex[scope]),
831
- claude: ['user', 'project'].filter((scope) => entry.targets.claude[scope]),
832
- },
833
- configFieldCount: Object.keys(entry.configSchema ?? {}).length,
834
- ...(entry.configSchema ? { configSchema: entry.configSchema } : {}),
835
- ...(entry.configIssues ? { configIssues: entry.configIssues } : {}),
836
- ...(entry.configDiagnostic ? { configDiagnostic: entry.configDiagnostic } : {}),
837
- dependencyDirectCount: entry.dependencies.length,
838
- dependencyTotalCount: transitive.size,
839
- dependencyIssueCount,
840
- };
841
- }),
842
- };
843
- }
844
- //# sourceMappingURL=status-v4.js.map