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

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