@vibe-agent-toolkit/cli 0.2.0-rc.6 → 0.2.0-rc.8

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 (422) hide show
  1. package/README.md +4 -5
  2. package/dist/bin/vat +34 -19
  3. package/dist/bin/vat.js +34 -19
  4. package/dist/bin/vat.js.map +1 -1
  5. package/dist/bin.js +44 -158
  6. package/dist/bin.js.map +1 -1
  7. package/dist/command-loaders.d.ts +2 -2
  8. package/dist/command-loaders.d.ts.map +1 -1
  9. package/dist/command-loaders.js +4 -2
  10. package/dist/command-loaders.js.map +1 -1
  11. package/dist/commands/agent/build.d.ts.map +1 -1
  12. package/dist/commands/agent/build.js +2 -1
  13. package/dist/commands/agent/build.js.map +1 -1
  14. package/dist/commands/agent/import.d.ts.map +1 -1
  15. package/dist/commands/agent/import.js +3 -2
  16. package/dist/commands/agent/import.js.map +1 -1
  17. package/dist/commands/agent/install-path.d.ts +36 -0
  18. package/dist/commands/agent/install-path.d.ts.map +1 -0
  19. package/dist/commands/agent/install-path.js +44 -0
  20. package/dist/commands/agent/install-path.js.map +1 -0
  21. package/dist/commands/agent/install.d.ts.map +1 -1
  22. package/dist/commands/agent/install.js +22 -10
  23. package/dist/commands/agent/install.js.map +1 -1
  24. package/dist/commands/agent/installed.d.ts.map +1 -1
  25. package/dist/commands/agent/installed.js +22 -12
  26. package/dist/commands/agent/installed.js.map +1 -1
  27. package/dist/commands/agent/list.d.ts.map +1 -1
  28. package/dist/commands/agent/list.js +2 -1
  29. package/dist/commands/agent/list.js.map +1 -1
  30. package/dist/commands/agent/run.d.ts.map +1 -1
  31. package/dist/commands/agent/run.js +2 -1
  32. package/dist/commands/agent/run.js.map +1 -1
  33. package/dist/commands/agent/uninstall.d.ts.map +1 -1
  34. package/dist/commands/agent/uninstall.js +13 -6
  35. package/dist/commands/agent/uninstall.js.map +1 -1
  36. package/dist/commands/agent/validate.d.ts.map +1 -1
  37. package/dist/commands/agent/validate.js +3 -2
  38. package/dist/commands/agent/validate.js.map +1 -1
  39. package/dist/commands/ard/emit.d.ts +153 -0
  40. package/dist/commands/ard/emit.d.ts.map +1 -0
  41. package/dist/commands/ard/emit.js +276 -0
  42. package/dist/commands/ard/emit.js.map +1 -0
  43. package/dist/commands/ard/index.d.ts +12 -0
  44. package/dist/commands/ard/index.d.ts.map +1 -0
  45. package/dist/commands/ard/index.js +80 -0
  46. package/dist/commands/ard/index.js.map +1 -0
  47. package/dist/commands/ard/surfaces.d.ts +56 -0
  48. package/dist/commands/ard/surfaces.d.ts.map +1 -0
  49. package/dist/commands/ard/surfaces.js +150 -0
  50. package/dist/commands/ard/surfaces.js.map +1 -0
  51. package/dist/commands/audit/distributed-tree.d.ts.map +1 -1
  52. package/dist/commands/audit/distributed-tree.js +9 -6
  53. package/dist/commands/audit/distributed-tree.js.map +1 -1
  54. package/dist/commands/audit/scan-population.d.ts +158 -0
  55. package/dist/commands/audit/scan-population.d.ts.map +1 -0
  56. package/dist/commands/audit/scan-population.js +292 -0
  57. package/dist/commands/audit/scan-population.js.map +1 -0
  58. package/dist/commands/audit-settings.d.ts.map +1 -1
  59. package/dist/commands/audit-settings.js +6 -5
  60. package/dist/commands/audit-settings.js.map +1 -1
  61. package/dist/commands/audit.d.ts +78 -9
  62. package/dist/commands/audit.d.ts.map +1 -1
  63. package/dist/commands/audit.js +853 -473
  64. package/dist/commands/audit.js.map +1 -1
  65. package/dist/commands/build.d.ts.map +1 -1
  66. package/dist/commands/build.js +24 -24
  67. package/dist/commands/build.js.map +1 -1
  68. package/dist/commands/cache/clear.d.ts.map +1 -1
  69. package/dist/commands/cache/clear.js +17 -10
  70. package/dist/commands/cache/clear.js.map +1 -1
  71. package/dist/commands/claude/budget.d.ts +136 -24
  72. package/dist/commands/claude/budget.d.ts.map +1 -1
  73. package/dist/commands/claude/budget.js +152 -57
  74. package/dist/commands/claude/budget.js.map +1 -1
  75. package/dist/commands/claude/context.d.ts.map +1 -1
  76. package/dist/commands/claude/context.js +4 -3
  77. package/dist/commands/claude/context.js.map +1 -1
  78. package/dist/commands/claude/marketplace/changelog-utils.d.ts +1 -1
  79. package/dist/commands/claude/marketplace/changelog-utils.d.ts.map +1 -1
  80. package/dist/commands/claude/marketplace/changelog-utils.js +1 -2
  81. package/dist/commands/claude/marketplace/changelog-utils.js.map +1 -1
  82. package/dist/commands/claude/marketplace/git-publish.d.ts.map +1 -1
  83. package/dist/commands/claude/marketplace/git-publish.js +3 -2
  84. package/dist/commands/claude/marketplace/git-publish.js.map +1 -1
  85. package/dist/commands/claude/marketplace/license-utils.d.ts.map +1 -1
  86. package/dist/commands/claude/marketplace/license-utils.js +0 -1
  87. package/dist/commands/claude/marketplace/license-utils.js.map +1 -1
  88. package/dist/commands/claude/marketplace/publish-tree.d.ts.map +1 -1
  89. package/dist/commands/claude/marketplace/publish-tree.js +0 -6
  90. package/dist/commands/claude/marketplace/publish-tree.js.map +1 -1
  91. package/dist/commands/claude/marketplace/publish.d.ts.map +1 -1
  92. package/dist/commands/claude/marketplace/publish.js +2 -1
  93. package/dist/commands/claude/marketplace/publish.js.map +1 -1
  94. package/dist/commands/claude/marketplace/validate.d.ts +55 -22
  95. package/dist/commands/claude/marketplace/validate.d.ts.map +1 -1
  96. package/dist/commands/claude/marketplace/validate.js +392 -77
  97. package/dist/commands/claude/marketplace/validate.js.map +1 -1
  98. package/dist/commands/claude/org/api-keys.d.ts +0 -3
  99. package/dist/commands/claude/org/api-keys.d.ts.map +1 -1
  100. package/dist/commands/claude/org/api-keys.js +2 -1
  101. package/dist/commands/claude/org/api-keys.js.map +1 -1
  102. package/dist/commands/claude/org/helpers.d.ts +17 -22
  103. package/dist/commands/claude/org/helpers.d.ts.map +1 -1
  104. package/dist/commands/claude/org/helpers.js +6 -22
  105. package/dist/commands/claude/org/helpers.js.map +1 -1
  106. package/dist/commands/claude/org/invites.d.ts +0 -3
  107. package/dist/commands/claude/org/invites.d.ts.map +1 -1
  108. package/dist/commands/claude/org/invites.js +3 -2
  109. package/dist/commands/claude/org/invites.js.map +1 -1
  110. package/dist/commands/claude/org/skills.d.ts +103 -4
  111. package/dist/commands/claude/org/skills.d.ts.map +1 -1
  112. package/dist/commands/claude/org/skills.js +331 -123
  113. package/dist/commands/claude/org/skills.js.map +1 -1
  114. package/dist/commands/claude/org/users.d.ts +0 -3
  115. package/dist/commands/claude/org/users.d.ts.map +1 -1
  116. package/dist/commands/claude/org/users.js +3 -2
  117. package/dist/commands/claude/org/users.js.map +1 -1
  118. package/dist/commands/claude/org/workspaces.d.ts +0 -3
  119. package/dist/commands/claude/org/workspaces.d.ts.map +1 -1
  120. package/dist/commands/claude/org/workspaces.js +6 -5
  121. package/dist/commands/claude/org/workspaces.js.map +1 -1
  122. package/dist/commands/claude/plugin/build.d.ts +8 -0
  123. package/dist/commands/claude/plugin/build.d.ts.map +1 -1
  124. package/dist/commands/claude/plugin/build.js +28 -33
  125. package/dist/commands/claude/plugin/build.js.map +1 -1
  126. package/dist/commands/claude/plugin/helpers.d.ts.map +1 -1
  127. package/dist/commands/claude/plugin/helpers.js +0 -6
  128. package/dist/commands/claude/plugin/helpers.js.map +1 -1
  129. package/dist/commands/claude/plugin/install.d.ts +12 -0
  130. package/dist/commands/claude/plugin/install.d.ts.map +1 -1
  131. package/dist/commands/claude/plugin/install.js +71 -60
  132. package/dist/commands/claude/plugin/install.js.map +1 -1
  133. package/dist/commands/claude/plugin/list.d.ts.map +1 -1
  134. package/dist/commands/claude/plugin/list.js +3 -2
  135. package/dist/commands/claude/plugin/list.js.map +1 -1
  136. package/dist/commands/claude/plugin/plugin-changelog.d.ts.map +1 -1
  137. package/dist/commands/claude/plugin/plugin-changelog.js +0 -2
  138. package/dist/commands/claude/plugin/plugin-changelog.js.map +1 -1
  139. package/dist/commands/claude/plugin/plugin-files.d.ts.map +1 -1
  140. package/dist/commands/claude/plugin/plugin-files.js +0 -3
  141. package/dist/commands/claude/plugin/plugin-files.js.map +1 -1
  142. package/dist/commands/claude/plugin/plugin-validators.d.ts.map +1 -1
  143. package/dist/commands/claude/plugin/plugin-validators.js +3 -6
  144. package/dist/commands/claude/plugin/plugin-validators.js.map +1 -1
  145. package/dist/commands/claude/plugin/tree-copy.d.ts +73 -0
  146. package/dist/commands/claude/plugin/tree-copy.d.ts.map +1 -1
  147. package/dist/commands/claude/plugin/tree-copy.js +221 -15
  148. package/dist/commands/claude/plugin/tree-copy.js.map +1 -1
  149. package/dist/commands/claude/plugin/uninstall.d.ts.map +1 -1
  150. package/dist/commands/claude/plugin/uninstall.js +4 -4
  151. package/dist/commands/claude/plugin/uninstall.js.map +1 -1
  152. package/dist/commands/consistency-check.d.ts +9 -13
  153. package/dist/commands/consistency-check.d.ts.map +1 -1
  154. package/dist/commands/consistency-check.js +91 -81
  155. package/dist/commands/consistency-check.js.map +1 -1
  156. package/dist/commands/corpus/index.d.ts.map +1 -1
  157. package/dist/commands/corpus/index.js +3 -0
  158. package/dist/commands/corpus/index.js.map +1 -1
  159. package/dist/commands/corpus/report.d.ts +0 -1
  160. package/dist/commands/corpus/report.d.ts.map +1 -1
  161. package/dist/commands/corpus/report.js +1 -3
  162. package/dist/commands/corpus/report.js.map +1 -1
  163. package/dist/commands/corpus/runner.d.ts +58 -1
  164. package/dist/commands/corpus/runner.d.ts.map +1 -1
  165. package/dist/commands/corpus/runner.js +92 -21
  166. package/dist/commands/corpus/runner.js.map +1 -1
  167. package/dist/commands/corpus/scan.d.ts.map +1 -1
  168. package/dist/commands/corpus/scan.js +2 -4
  169. package/dist/commands/corpus/scan.js.map +1 -1
  170. package/dist/commands/corpus/seed.d.ts +4 -4
  171. package/dist/commands/corpus/seed.d.ts.map +1 -1
  172. package/dist/commands/corpus/seed.js +1 -3
  173. package/dist/commands/corpus/seed.js.map +1 -1
  174. package/dist/commands/doctor.d.ts +14 -0
  175. package/dist/commands/doctor.d.ts.map +1 -1
  176. package/dist/commands/doctor.js +147 -51
  177. package/dist/commands/doctor.js.map +1 -1
  178. package/dist/commands/inventory.d.ts.map +1 -1
  179. package/dist/commands/inventory.js +6 -7
  180. package/dist/commands/inventory.js.map +1 -1
  181. package/dist/commands/mcp/list-collections.d.ts.map +1 -1
  182. package/dist/commands/mcp/list-collections.js +2 -1
  183. package/dist/commands/mcp/list-collections.js.map +1 -1
  184. package/dist/commands/mcp/serve.d.ts.map +1 -1
  185. package/dist/commands/mcp/serve.js +3 -2
  186. package/dist/commands/mcp/serve.js.map +1 -1
  187. package/dist/commands/okf/index.d.ts +11 -0
  188. package/dist/commands/okf/index.d.ts.map +1 -0
  189. package/dist/commands/okf/index.js +114 -0
  190. package/dist/commands/okf/index.js.map +1 -0
  191. package/dist/commands/okf/validate.d.ts +191 -0
  192. package/dist/commands/okf/validate.d.ts.map +1 -0
  193. package/dist/commands/okf/validate.js +190 -0
  194. package/dist/commands/okf/validate.js.map +1 -0
  195. package/dist/commands/phase-utils.d.ts +30 -13
  196. package/dist/commands/phase-utils.d.ts.map +1 -1
  197. package/dist/commands/phase-utils.js +56 -19
  198. package/dist/commands/phase-utils.js.map +1 -1
  199. package/dist/commands/positional-args.d.ts.map +1 -1
  200. package/dist/commands/positional-args.js +2 -1
  201. package/dist/commands/positional-args.js.map +1 -1
  202. package/dist/commands/rag/clear-command.d.ts.map +1 -1
  203. package/dist/commands/rag/clear-command.js +2 -1
  204. package/dist/commands/rag/clear-command.js.map +1 -1
  205. package/dist/commands/rag/index-command.d.ts +27 -2
  206. package/dist/commands/rag/index-command.d.ts.map +1 -1
  207. package/dist/commands/rag/index-command.js +48 -8
  208. package/dist/commands/rag/index-command.js.map +1 -1
  209. package/dist/commands/rag/index.d.ts.map +1 -1
  210. package/dist/commands/rag/index.js +2 -0
  211. package/dist/commands/rag/index.js.map +1 -1
  212. package/dist/commands/rag/query-command.d.ts.map +1 -1
  213. package/dist/commands/rag/query-command.js +2 -1
  214. package/dist/commands/rag/query-command.js.map +1 -1
  215. package/dist/commands/rag/stats-command.d.ts.map +1 -1
  216. package/dist/commands/rag/stats-command.js +2 -1
  217. package/dist/commands/rag/stats-command.js.map +1 -1
  218. package/dist/commands/resources/check-progress.d.ts +3 -0
  219. package/dist/commands/resources/check-progress.d.ts.map +1 -1
  220. package/dist/commands/resources/check-progress.js +11 -2
  221. package/dist/commands/resources/check-progress.js.map +1 -1
  222. package/dist/commands/resources/check-supervisor.d.ts.map +1 -1
  223. package/dist/commands/resources/check-supervisor.js +14 -7
  224. package/dist/commands/resources/check-supervisor.js.map +1 -1
  225. package/dist/commands/resources/check.d.ts +168 -8
  226. package/dist/commands/resources/check.d.ts.map +1 -1
  227. package/dist/commands/resources/check.js +222 -118
  228. package/dist/commands/resources/check.js.map +1 -1
  229. package/dist/commands/resources/index.d.ts.map +1 -1
  230. package/dist/commands/resources/index.js +64 -29
  231. package/dist/commands/resources/index.js.map +1 -1
  232. package/dist/commands/resources/query.d.ts +18 -1
  233. package/dist/commands/resources/query.d.ts.map +1 -1
  234. package/dist/commands/resources/query.js +33 -12
  235. package/dist/commands/resources/query.js.map +1 -1
  236. package/dist/commands/resources/scan.d.ts.map +1 -1
  237. package/dist/commands/resources/scan.js +4 -8
  238. package/dist/commands/resources/scan.js.map +1 -1
  239. package/dist/commands/resources/validate.d.ts +30 -1
  240. package/dist/commands/resources/validate.d.ts.map +1 -1
  241. package/dist/commands/resources/validate.js +116 -14
  242. package/dist/commands/resources/validate.js.map +1 -1
  243. package/dist/commands/skill/review-checklist.d.ts +3 -2
  244. package/dist/commands/skill/review-checklist.d.ts.map +1 -1
  245. package/dist/commands/skill/review-checklist.js +4 -2
  246. package/dist/commands/skill/review-checklist.js.map +1 -1
  247. package/dist/commands/skill/review.d.ts +247 -0
  248. package/dist/commands/skill/review.d.ts.map +1 -1
  249. package/dist/commands/skill/review.js +98 -61
  250. package/dist/commands/skill/review.js.map +1 -1
  251. package/dist/commands/skill/test/configure.d.ts.map +1 -1
  252. package/dist/commands/skill/test/configure.js +0 -1
  253. package/dist/commands/skill/test/configure.js.map +1 -1
  254. package/dist/commands/skill/test/run.d.ts +12 -6
  255. package/dist/commands/skill/test/run.d.ts.map +1 -1
  256. package/dist/commands/skill/test/run.js +137 -67
  257. package/dist/commands/skill/test/run.js.map +1 -1
  258. package/dist/commands/skills/build.d.ts +69 -2
  259. package/dist/commands/skills/build.d.ts.map +1 -1
  260. package/dist/commands/skills/build.js +128 -42
  261. package/dist/commands/skills/build.js.map +1 -1
  262. package/dist/commands/skills/install.d.ts +2 -1
  263. package/dist/commands/skills/install.d.ts.map +1 -1
  264. package/dist/commands/skills/install.js +20 -30
  265. package/dist/commands/skills/install.js.map +1 -1
  266. package/dist/commands/skills/list.d.ts +2 -1
  267. package/dist/commands/skills/list.d.ts.map +1 -1
  268. package/dist/commands/skills/list.js +44 -26
  269. package/dist/commands/skills/list.js.map +1 -1
  270. package/dist/commands/skills/package.d.ts +1 -1
  271. package/dist/commands/skills/package.d.ts.map +1 -1
  272. package/dist/commands/skills/package.js +6 -8
  273. package/dist/commands/skills/package.js.map +1 -1
  274. package/dist/commands/skills/scope-guard.d.ts.map +1 -1
  275. package/dist/commands/skills/scope-guard.js +2 -4
  276. package/dist/commands/skills/scope-guard.js.map +1 -1
  277. package/dist/commands/skills/shared.d.ts.map +1 -1
  278. package/dist/commands/skills/shared.js +2 -4
  279. package/dist/commands/skills/shared.js.map +1 -1
  280. package/dist/commands/skills/skill-discovery.d.ts +40 -1
  281. package/dist/commands/skills/skill-discovery.d.ts.map +1 -1
  282. package/dist/commands/skills/skill-discovery.js +32 -4
  283. package/dist/commands/skills/skill-discovery.js.map +1 -1
  284. package/dist/commands/skills/source-resolvers.d.ts +15 -0
  285. package/dist/commands/skills/source-resolvers.d.ts.map +1 -1
  286. package/dist/commands/skills/source-resolvers.js +25 -4
  287. package/dist/commands/skills/source-resolvers.js.map +1 -1
  288. package/dist/commands/skills/validate-command.d.ts.map +1 -1
  289. package/dist/commands/skills/validate-command.js +11 -3
  290. package/dist/commands/skills/validate-command.js.map +1 -1
  291. package/dist/commands/skills/validate.d.ts +66 -7
  292. package/dist/commands/skills/validate.d.ts.map +1 -1
  293. package/dist/commands/skills/validate.js +133 -29
  294. package/dist/commands/skills/validate.js.map +1 -1
  295. package/dist/commands/validate.d.ts +1 -1
  296. package/dist/commands/validate.js +8 -6
  297. package/dist/commands/validate.js.map +1 -1
  298. package/dist/commands/verify.d.ts +102 -5
  299. package/dist/commands/verify.d.ts.map +1 -1
  300. package/dist/commands/verify.js +246 -69
  301. package/dist/commands/verify.js.map +1 -1
  302. package/dist/index.d.ts +0 -1
  303. package/dist/index.d.ts.map +1 -1
  304. package/dist/index.js +5 -1
  305. package/dist/index.js.map +1 -1
  306. package/dist/report-schemas.d.ts +45 -0
  307. package/dist/report-schemas.d.ts.map +1 -0
  308. package/dist/report-schemas.js +102 -0
  309. package/dist/report-schemas.js.map +1 -0
  310. package/dist/skill-resolution/packaging-config.d.ts +49 -5
  311. package/dist/skill-resolution/packaging-config.d.ts.map +1 -1
  312. package/dist/skill-resolution/packaging-config.js +59 -19
  313. package/dist/skill-resolution/packaging-config.js.map +1 -1
  314. package/dist/skill-resolution/resolve-skill-reference.d.ts.map +1 -1
  315. package/dist/skill-resolution/resolve-skill-reference.js +8 -6
  316. package/dist/skill-resolution/resolve-skill-reference.js.map +1 -1
  317. package/dist/utils/agent-discovery.d.ts.map +1 -1
  318. package/dist/utils/agent-discovery.js +22 -11
  319. package/dist/utils/agent-discovery.js.map +1 -1
  320. package/dist/utils/agent-runner.d.ts.map +1 -1
  321. package/dist/utils/agent-runner.js +0 -1
  322. package/dist/utils/agent-runner.js.map +1 -1
  323. package/dist/utils/command-error.d.ts +87 -55
  324. package/dist/utils/command-error.d.ts.map +1 -1
  325. package/dist/utils/command-error.js +113 -64
  326. package/dist/utils/command-error.js.map +1 -1
  327. package/dist/utils/config-loader.d.ts +2 -1
  328. package/dist/utils/config-loader.d.ts.map +1 -1
  329. package/dist/utils/config-loader.js +3 -6
  330. package/dist/utils/config-loader.js.map +1 -1
  331. package/dist/utils/context-budget-issues.d.ts +1 -1
  332. package/dist/utils/context-budget-issues.js +1 -1
  333. package/dist/utils/corpus-target.d.ts +5 -27
  334. package/dist/utils/corpus-target.d.ts.map +1 -1
  335. package/dist/utils/corpus-target.js +7 -33
  336. package/dist/utils/corpus-target.js.map +1 -1
  337. package/dist/utils/edge-lens-evaluation.d.ts +83 -0
  338. package/dist/utils/edge-lens-evaluation.d.ts.map +1 -0
  339. package/dist/utils/edge-lens-evaluation.js +110 -0
  340. package/dist/utils/edge-lens-evaluation.js.map +1 -0
  341. package/dist/utils/help-loader.d.ts.map +1 -1
  342. package/dist/utils/help-loader.js +0 -1
  343. package/dist/utils/help-loader.js.map +1 -1
  344. package/dist/utils/issue-rendering.d.ts +2 -2
  345. package/dist/utils/issue-rendering.js +2 -2
  346. package/dist/utils/optional-backend.d.ts +5 -4
  347. package/dist/utils/optional-backend.d.ts.map +1 -1
  348. package/dist/utils/optional-backend.js +7 -5
  349. package/dist/utils/optional-backend.js.map +1 -1
  350. package/dist/utils/output.d.ts +9 -0
  351. package/dist/utils/output.d.ts.map +1 -1
  352. package/dist/utils/output.js +16 -0
  353. package/dist/utils/output.js.map +1 -1
  354. package/dist/utils/package-json.d.ts +24 -0
  355. package/dist/utils/package-json.d.ts.map +1 -0
  356. package/dist/utils/package-json.js +49 -0
  357. package/dist/utils/package-json.js.map +1 -0
  358. package/dist/utils/project-root-policy.d.ts +20 -0
  359. package/dist/utils/project-root-policy.d.ts.map +1 -1
  360. package/dist/utils/project-root-policy.js +30 -0
  361. package/dist/utils/project-root-policy.js.map +1 -1
  362. package/dist/utils/projection-query.d.ts +41 -4
  363. package/dist/utils/projection-query.d.ts.map +1 -1
  364. package/dist/utils/projection-query.js +44 -10
  365. package/dist/utils/projection-query.js.map +1 -1
  366. package/dist/utils/projection-store.d.ts +41 -15
  367. package/dist/utils/projection-store.d.ts.map +1 -1
  368. package/dist/utils/projection-store.js +65 -18
  369. package/dist/utils/projection-store.js.map +1 -1
  370. package/dist/utils/repeatable-option.d.ts +37 -0
  371. package/dist/utils/repeatable-option.d.ts.map +1 -0
  372. package/dist/utils/repeatable-option.js +39 -0
  373. package/dist/utils/repeatable-option.js.map +1 -0
  374. package/dist/utils/resource-loader.d.ts +4 -3
  375. package/dist/utils/resource-loader.d.ts.map +1 -1
  376. package/dist/utils/resource-loader.js +63 -32
  377. package/dist/utils/resource-loader.js.map +1 -1
  378. package/dist/utils/root-argv.d.ts +53 -0
  379. package/dist/utils/root-argv.d.ts.map +1 -0
  380. package/dist/utils/root-argv.js +215 -0
  381. package/dist/utils/root-argv.js.map +1 -0
  382. package/dist/utils/run-integrity.d.ts +95 -0
  383. package/dist/utils/run-integrity.d.ts.map +1 -0
  384. package/dist/utils/run-integrity.js +102 -0
  385. package/dist/utils/run-integrity.js.map +1 -0
  386. package/dist/utils/skill-packaging-config.d.ts +27 -0
  387. package/dist/utils/skill-packaging-config.d.ts.map +1 -1
  388. package/dist/utils/skill-packaging-config.js +30 -0
  389. package/dist/utils/skill-packaging-config.js.map +1 -1
  390. package/dist/utils/sqlite-experimental-warning.d.ts +69 -0
  391. package/dist/utils/sqlite-experimental-warning.d.ts.map +1 -0
  392. package/dist/utils/sqlite-experimental-warning.js +144 -0
  393. package/dist/utils/sqlite-experimental-warning.js.map +1 -0
  394. package/dist/utils/url-redact.d.ts.map +1 -1
  395. package/dist/utils/url-redact.js +4 -6
  396. package/dist/utils/url-redact.js.map +1 -1
  397. package/dist/utils/user-context-scanner.d.ts +8 -0
  398. package/dist/utils/user-context-scanner.d.ts.map +1 -1
  399. package/dist/utils/user-context-scanner.js +4 -2
  400. package/dist/utils/user-context-scanner.js.map +1 -1
  401. package/dist/utils/validate-help-files.d.ts.map +1 -1
  402. package/dist/utils/validate-help-files.js +12 -6
  403. package/dist/utils/validate-help-files.js.map +1 -1
  404. package/dist/utils/vat-bin-path.d.ts.map +1 -1
  405. package/dist/utils/vat-bin-path.js +0 -1
  406. package/dist/utils/vat-bin-path.js.map +1 -1
  407. package/dist/version.d.ts.map +1 -1
  408. package/dist/version.js +1 -3
  409. package/dist/version.js.map +1 -1
  410. package/docs/audit.md +141 -37
  411. package/docs/doctor.md +7 -6
  412. package/docs/index.md +19 -11
  413. package/docs/rag.md +3 -2
  414. package/docs/resources.md +5 -2
  415. package/docs/skill-test.md +10 -9
  416. package/docs/skills.md +53 -69
  417. package/package.json +24 -29
  418. package/schemas/ard-emit.json +149 -0
  419. package/schemas/claude-budget.json +197 -0
  420. package/schemas/okf-validate.json +170 -0
  421. package/schemas/resources-check.json +186 -0
  422. package/schemas/skill-review.json +230 -0
@@ -1,4 +1,3 @@
1
- /* eslint-disable security/detect-non-literal-fs-filename -- Paths are user-provided CLI arguments */
2
1
  /**
3
2
  * `vat claude marketplace validate [path]` — strict marketplace validation.
4
3
  *
@@ -9,11 +8,11 @@
9
8
  * - README.md should exist (warning)
10
9
  * - CHANGELOG.md should exist (warning)
11
10
  */
12
- import { existsSync, readdirSync } from 'node:fs';
11
+ import { existsSync, readdirSync, statSync } from 'node:fs';
13
12
  import { validateMarketplace, validateSkill, } from '@vibe-agent-toolkit/agent-skills';
14
13
  import { validatePlugin } from '@vibe-agent-toolkit/claude-marketplace';
15
14
  import { calculateValidationStatus, countBySeverity, } from '@vibe-agent-toolkit/schema';
16
- import { findProjectRoot, issueLocation, safePath } from '@vibe-agent-toolkit/utils';
15
+ import { direntKindFollowingSync, findProjectRoot, isPathAbsentError, issueLocation, isVatError, normalizePath, PathEscapesRootError, relativeEscapesRoot, safePath, toForwardSlash } from '@vibe-agent-toolkit/utils';
17
16
  import { Command } from 'commander';
18
17
  import { formatDuration, reportCommandError } from '../../../utils/command-error.js';
19
18
  import { loadConfig } from '../../../utils/config-loader.js';
@@ -22,6 +21,7 @@ import { resolveIssueSeverity } from '../../../utils/issue-severity.js';
22
21
  import { createLogger } from '../../../utils/logger.js';
23
22
  import { writeYamlOutput } from '../../../utils/output.js';
24
23
  import { relativizePathEntries } from '../../../utils/relativize-paths.js';
24
+ import { runIntegrityFinding } from '../../../utils/run-integrity.js';
25
25
  import { finishCommand } from '../../phase-utils.js';
26
26
  /**
27
27
  * Check for required/recommended files in the marketplace root.
@@ -46,29 +46,171 @@ function checkMarketplaceFiles(marketplacePath) {
46
46
  }
47
47
  return issues;
48
48
  }
49
+ /**
50
+ * The boundary of what this command may read, applied to every path the walk
51
+ * opens below a contained plugin — not only to the declared `source`.
52
+ *
53
+ * 🚨 **Containment used to stop at the `source`.** Inside a contained plugin,
54
+ * `skills/` was `readdir`ed through a directory link, a `SKILL.md` parsed
55
+ * through a file link, and `.claude-plugin/plugin.json` read through one — each
56
+ * pointing OUT of the root — and the outside file's findings were published at
57
+ * a root-relative location whose real file is not under the root. A
58
+ * marketplace checkout is the untrusted input (git carries symlinks), so the
59
+ * class the source lane closed was open one level down, while the help text
60
+ * and the refusal message promised the absolute.
61
+ *
62
+ * Same predicate as {@link containedPluginDir}: real path against the root's
63
+ * own real path, so a link INSIDE the root is followed (the link is not the
64
+ * offence, leaving the root is) and one that leaves it is recorded by its
65
+ * root-relative spelling in `refused` and never opened. The record is what the
66
+ * document publishes and what the builder turns into the run-integrity
67
+ * refusal: a path the run would not read is a plugin the run did not finish
68
+ * validating, and silence there is the reassuring failure.
69
+ */
70
+ class WalkBoundary {
71
+ marketplacePath;
72
+ realRoot;
73
+ refused = [];
74
+ constructor(marketplacePath, realRoot) {
75
+ this.marketplacePath = marketplacePath;
76
+ this.realRoot = realRoot;
77
+ }
78
+ /**
79
+ * May the walk open `abs`? `true` when its real path sits under the root.
80
+ * `false` records the refusal by name and is final for that path: nothing
81
+ * beneath it is visited either, because nothing beneath it was read.
82
+ */
83
+ contains(abs) {
84
+ const real = toForwardSlash(normalizePath(abs));
85
+ if (!relativeEscapesRoot(safePath.relative(this.realRoot, real)))
86
+ return true;
87
+ this.refused.push(issueLocation(abs, this.marketplacePath));
88
+ return false;
89
+ }
90
+ }
49
91
  /**
50
92
  * Validate all SKILL.md files within a plugin's skills/ directory.
93
+ *
94
+ * Every path opened here — `skills/`, each skill directory, each `SKILL.md` —
95
+ * is checked against `boundary` first, so a link out of the root at any of
96
+ * the three depths is refused by name rather than read. A skill directory is
97
+ * recognised by what it RESOLVES to (a link to an in-root directory is a
98
+ * skill directory; `Dirent.isDirectory()` said no to every link and skipped
99
+ * the skill silently), which is the same by-real-path rule the source gets.
51
100
  */
52
- async function validatePluginSkills(pluginDir, marketplacePath) {
101
+ async function validatePluginSkills(pluginDir, marketplacePath, boundary, validation) {
53
102
  const skillsDir = safePath.join(pluginDir, 'skills');
54
- if (!existsSync(skillsDir))
103
+ if (!existsSync(skillsDir) || !boundary.contains(skillsDir))
55
104
  return [];
56
105
  const issues = [];
57
106
  const skillEntries = readdirSync(skillsDir, { withFileTypes: true });
58
107
  for (const skillEntry of skillEntries) {
59
- if (!skillEntry.isDirectory())
60
- continue;
61
108
  const skillDir = safePath.join(skillsDir, skillEntry.name);
109
+ if (!isDirectory(skillDir) || !boundary.contains(skillDir))
110
+ continue;
62
111
  const skillMdPath = safePath.join(skillDir, 'SKILL.md');
63
- if (!existsSync(skillMdPath))
112
+ if (!existsSync(skillMdPath) || !boundary.contains(skillMdPath))
64
113
  continue;
65
- const skillResult = await validateSkill({ skillPath: skillMdPath, rootDir: skillDir, locationRoot: marketplacePath });
114
+ // Severity only (no `allow`), resolved here so a default-`ignore` code can still be raised.
115
+ const severity = validation?.severity === undefined ? {} : { severity: validation.severity };
116
+ const skillResult = await validateSkill({ skillPath: skillMdPath, rootDir: skillDir, locationRoot: marketplacePath, validation: severity });
66
117
  issues.push(...skillResult.issues);
67
118
  }
68
119
  return issues;
69
120
  }
70
121
  /**
71
- * Validate all plugins under the plugins/ directory.
122
+ * Whether `dir` is a directory. `false` for a file and for nothing — both are
123
+ * "no plugin directory here". A path the process cannot stat is NOT: a
124
+ * declared source the OS refuses used to be reported as one that does not
125
+ * resolve, sending the reader to create a directory that is there. The refusal
126
+ * propagates and the command refuses the run by errno, like every other verb.
127
+ */
128
+ function isDirectory(dir) {
129
+ try {
130
+ return statSync(dir).isDirectory();
131
+ }
132
+ catch (error) {
133
+ if (isPathAbsentError(error))
134
+ return false;
135
+ throw error;
136
+ }
137
+ }
138
+ /**
139
+ * The directory a declared `source` names, as the two paths the run needs —
140
+ * or `undefined` when it names nothing this command may enter.
141
+ *
142
+ * 🚨 **This used to be `safePath.resolve(root, source)` + `isDirectory`, and
143
+ * that walked `/etc`.** `marketplace.json` is attacker-reachable content — it
144
+ * is the thing being audited — and every string `source` was resolved and
145
+ * ENTERED. The document then published `../../../../etc/…` locations, breaking
146
+ * the "every location is relative to root" contract the help text claims.
147
+ *
148
+ * Containment is decided by REAL path, in two steps:
149
+ *
150
+ * 1. `joinUnderRoot` refuses lexically: an absolute source (POSIX root, drive
151
+ * letter) or a `..` that climbs above the root. The source is
152
+ * forward-slashed FIRST, because on POSIX `plugins\..\..\x` is one segment
153
+ * to `path.resolve` — it resolved to a name containing backslashes, and the
154
+ * same string walks out of the root on Windows. That also fixes the LOW:
155
+ * `.\plugins\x` resolved to `<root>/./plugins/x`, which `statSync` accepts
156
+ * but which is not the string `undeclared` builds for the same directory,
157
+ * so one plugin was published as both validated and undeclared.
158
+ * 2. `realpath` refuses what only the filesystem knows: a symlink inside the
159
+ * root pointing out is outside. The check is against the root's OWN real
160
+ * path, so a root reached through a symlink (macOS `/var` → `/private/var`)
161
+ * does not read as escaping itself.
162
+ *
163
+ * The schema refuses step 1's cases at the manifest before this runs, so here
164
+ * step 1 is the belt to that suspender. The consumer keeps it because the
165
+ * schema is `.passthrough()` Postel's-Law tolerant by design and this is the
166
+ * one place a wrong answer opens a directory.
167
+ *
168
+ * @returns `lexical` — the path as declared, resolved, which is what the
169
+ * validators are handed so findings read `plugins/s/…` as the manifest spells
170
+ * it; `real` — the identity, for "have I seen this directory?"
171
+ */
172
+ function containedPluginDir(marketplacePath, realRoot, source) {
173
+ let lexical;
174
+ try {
175
+ lexical = safePath.joinUnderRoot(marketplacePath, toForwardSlash(source));
176
+ }
177
+ catch (error) {
178
+ // `joinUnderRoot` refuses an escape by design. Anything else (a
179
+ // `TypeError` from a bad argument) is a bug.
180
+ if (!isVatError(error, PathEscapesRootError.code))
181
+ throw error;
182
+ return undefined;
183
+ }
184
+ if (!isDirectory(lexical))
185
+ return undefined;
186
+ const real = toForwardSlash(normalizePath(lexical));
187
+ return relativeEscapesRoot(safePath.relative(realRoot, real)) ? undefined : { lexical, real };
188
+ }
189
+ /**
190
+ * Validate the plugins the manifest DECLARES with a local source.
191
+ *
192
+ * 🚨 **This walked `plugins/*` and shipped both defects that has.** The
193
+ * denominator was a count of directories under `plugins/`, so a co-located
194
+ * marketplace (`source: "./"` — the shape `detectResourceFormat` recognises on
195
+ * purpose and `vat audit` recurses into) declared 1, walked 0, and was refused
196
+ * at exit 1 on a code no override can lower; and a manifest declaring
197
+ * `./plugins/a` over a `plugins/` holding only an undeclared `b` validated
198
+ * "1 of 1" and passed with `a` never looked at. Each declared `source` is now
199
+ * resolved against the marketplace root and THAT directory is validated — see
200
+ * {@link containedPluginDir} for the containment the resolution enforces;
201
+ * `extractClaudeMarketplaceInventory` (`vat inventory`/`vat audit`) applies
202
+ * the same predicate on its side. A source that does not resolve to a directory INSIDE the root is
203
+ * simply absent from the results; the builder derives the refusal from that
204
+ * absence, so it lands on the document whatever this function's caller does.
205
+ *
206
+ * Directories under `plugins/` that no entry names come back as `undeclared`,
207
+ * relative to the root: listed, not validated, not a failure. The manifest is
208
+ * the marketplace's contract with its installer — Claude Code installs only
209
+ * what `plugins[]` names — so an undeclared directory cannot ship and grading
210
+ * it would grade something no consumer can receive; failing on it would turn a
211
+ * publishing gate into a tree-hygiene gate. Naming it costs nothing and is what
212
+ * lets a reader tell "the plugin you meant is under another name" from "it is
213
+ * not there at all" when a declared source did not resolve.
72
214
  *
73
215
  * `validation` is the governing project's severity map (see
74
216
  * {@link resolveProjectValidationConfig}). It is applied to each plugin result
@@ -79,36 +221,98 @@ async function validatePluginSkills(pluginDir, marketplacePath) {
79
221
  * `plugins[]`, or a plugin `status: warning` above an issue list that no longer
80
222
  * contains a warning.
81
223
  */
82
- async function validatePlugins(marketplacePath, validation) {
83
- const pluginsDir = safePath.join(marketplacePath, 'plugins');
84
- if (!existsSync(pluginsDir))
85
- return { pluginResults: [], issues: [] };
224
+ async function validateDeclaredPlugins(marketplacePath, declared, validation) {
86
225
  const pluginResults = [];
87
226
  const issues = [];
88
- const entries = readdirSync(pluginsDir, { withFileTypes: true });
89
- for (const entry of entries) {
90
- if (!entry.isDirectory())
227
+ // Keyed by REAL path: one directory is validated once however many entries
228
+ // name it, and the same key is what `undeclaredPluginDirs` compares against.
229
+ const validatedByDir = new Map();
230
+ const realRoot = toForwardSlash(normalizePath(marketplacePath));
231
+ const boundary = new WalkBoundary(marketplacePath, realRoot);
232
+ for (const entry of declared) {
233
+ // A source that names nothing inside the root — nothing at all, a file,
234
+ // an absolute path, a `..` climb, a symlink out — is simply absent from the
235
+ // results, and the builder refuses the run by name from that absence.
236
+ const dir = containedPluginDir(marketplacePath, realRoot, entry.source);
237
+ if (dir === undefined)
91
238
  continue;
92
- const pluginDir = safePath.join(pluginsDir, entry.name);
93
- // `locationRoot` is not optional here even though the parameter is: omitted,
94
- // `validatePlugin` anchors at the plugin's own discovered project root, so
95
- // its findings land in a different coordinate system than the marketplace
96
- // and skill findings beside them — and every plugin's manifest collapses to
97
- // the same `.claude-plugin/plugin.json`.
98
- const rawResult = await validatePlugin(pluginDir, { strict: true, locationRoot: marketplacePath });
99
- const pluginIssues = resolveIssueSeverity(rawResult.issues, validation);
100
- const pluginResult = {
101
- ...rawResult,
102
- issues: pluginIssues,
103
- status: calculateValidationStatus(pluginIssues),
104
- issueCounts: countBySeverity(pluginIssues),
239
+ // Two entries, one directory: the directory's findings were collected
240
+ // twice and COUNTED twice (`PLUGIN_MISSING_AUTHOR: 2` for one file). Each
241
+ // entry still gets its row — the manifest declared two — but the file is
242
+ // inspected once and its findings enter `issues` once.
243
+ const seen = validatedByDir.get(dir.real);
244
+ if (seen !== undefined) {
245
+ pluginResults.push({ ...entry, result: seen });
246
+ continue;
247
+ }
248
+ const result = await validateContainedPlugin(dir.lexical, marketplacePath, boundary, validation);
249
+ validatedByDir.set(dir.real, result);
250
+ pluginResults.push({ ...entry, result });
251
+ issues.push(...result.issues);
252
+ issues.push(...await validatePluginSkills(dir.lexical, marketplacePath, boundary, validation));
253
+ }
254
+ return {
255
+ pluginResults,
256
+ undeclared: undeclaredPluginDirs(marketplacePath, new Set(validatedByDir.keys())),
257
+ refused: boundary.refused,
258
+ issues,
259
+ };
260
+ }
261
+ /**
262
+ * Validate one contained plugin directory — unless its manifest is a link out
263
+ * of the root, in which case the manifest is refused by name and the plugin's
264
+ * row says so instead of carrying findings about a file the run did not read.
265
+ *
266
+ * The row keeps `status: 'error'` with no issues: the error is the refusal
267
+ * the builder publishes once for the run, and a `success` row for a plugin
268
+ * whose manifest was never opened would be the reassuring lie this whole
269
+ * boundary exists to refuse.
270
+ */
271
+ async function validateContainedPlugin(pluginDir, marketplacePath, boundary, validation) {
272
+ const manifestPath = safePath.join(pluginDir, '.claude-plugin', 'plugin.json');
273
+ if (existsSync(manifestPath) && !boundary.contains(manifestPath)) {
274
+ return {
275
+ path: pluginDir,
276
+ type: 'claude-plugin',
277
+ status: 'error',
278
+ summary: `Plugin manifest not read: ${issueLocation(manifestPath, marketplacePath)} resolves outside the marketplace root`,
279
+ issues: [],
280
+ issueCounts: countBySeverity([]),
105
281
  };
106
- pluginResults.push(pluginResult);
107
- issues.push(...pluginIssues);
108
- const skillIssues = await validatePluginSkills(pluginDir, marketplacePath);
109
- issues.push(...resolveIssueSeverity(skillIssues, validation));
110
282
  }
111
- return { pluginResults, issues };
283
+ // `locationRoot` is not optional here even though the parameter is: omitted,
284
+ // `validatePlugin` anchors at the plugin's own discovered project root, so
285
+ // its findings land in a different coordinate system than the marketplace
286
+ // and skill findings beside them — and every plugin's manifest collapses to
287
+ // the same `.claude-plugin/plugin.json`.
288
+ const rawResult = await validatePlugin(pluginDir, { strict: true, locationRoot: marketplacePath });
289
+ const pluginIssues = resolveIssueSeverity(rawResult.issues, validation);
290
+ return {
291
+ ...rawResult,
292
+ issues: pluginIssues,
293
+ status: calculateValidationStatus(pluginIssues),
294
+ issueCounts: countBySeverity(pluginIssues),
295
+ };
296
+ }
297
+ /**
298
+ * Directories under `<root>/plugins/` that no declared source resolved to,
299
+ * relative to the root. The conventional location is the only one walked: an
300
+ * undeclared plugin anywhere else is indistinguishable from any other directory.
301
+ *
302
+ * @param validatedDirs - REAL paths of the directories the run validated, so
303
+ * the comparison cannot be defeated by two spellings of one directory.
304
+ */
305
+ function undeclaredPluginDirs(marketplacePath, validatedDirs) {
306
+ const pluginsDir = safePath.join(marketplacePath, 'plugins');
307
+ if (!existsSync(pluginsDir))
308
+ return [];
309
+ return readdirSync(pluginsDir, { withFileTypes: true })
310
+ // Followed: a plugin directory that is a link is a plugin the marketplace
311
+ // ships, and `validatedDirs` is real paths for exactly that reason.
312
+ .filter((entry) => direntKindFollowingSync(pluginsDir, entry) === 'directory')
313
+ .map((entry) => safePath.join(pluginsDir, entry.name))
314
+ .filter((dir) => !validatedDirs.has(toForwardSlash(normalizePath(dir))))
315
+ .map((dir) => issueLocation(dir, marketplacePath));
112
316
  }
113
317
  /**
114
318
  * The `validation` config governing findings about `marketplacePath`.
@@ -174,10 +378,13 @@ function resolveProjectValidationConfig(marketplacePath, logger) {
174
378
  *
175
379
  * Severity resolution is likewise INSIDE this function rather than a step the
176
380
  * command adds after it. Its absence is the whole defect this addressed, and a
177
- * command-body step is one a caller can forget: with it here, `status`, the
178
- * exit code, the flat `issues` list and `plugins[].issues` all derive from a
179
- * single resolved set, and the smallest testable entry point is the one that
180
- * includes the filter.
381
+ * command-body step is one a caller can forget: with it here, the flat `issues`
382
+ * list and `plugins[].issues` derive from a single resolved set, and the
383
+ * smallest testable entry point is the one that includes the filter. The run's
384
+ * `status` — and with it the exit code — is derived one step later, in
385
+ * {@link buildMarketplaceValidateReport}, from the issues the document actually
386
+ * publishes: that is where the run-integrity refusal is added, and a status
387
+ * computed here would not see it.
181
388
  *
182
389
  * Exported so that contract is testable against a real marketplace without a
183
390
  * CLI spawn; the command adds only the exit code and the emission.
@@ -201,24 +408,20 @@ export async function collectMarketplaceFindings(marketplacePath, logger) {
201
408
  return {
202
409
  marketplaceResult,
203
410
  pluginResults: [],
411
+ undeclared: [],
412
+ refused: [],
204
413
  issues: [...marketplaceResult.issues],
205
- status: 'error',
206
414
  };
207
415
  }
208
416
  const validation = resolveProjectValidationConfig(marketplacePath, logger);
209
417
  const fileIssues = checkMarketplaceFiles(marketplacePath);
210
- const { pluginResults, issues: pluginIssues } = await validatePlugins(marketplacePath, validation);
418
+ const { pluginResults, undeclared, refused, issues: pluginIssues } = await validateDeclaredPlugins(marketplacePath, marketplaceResult.metadata?.localPluginSources ?? [], validation);
211
419
  const issues = [
212
420
  ...resolveIssueSeverity(marketplaceResult.issues, validation),
213
421
  ...resolveIssueSeverity(fileIssues, validation),
214
422
  ...pluginIssues,
215
423
  ];
216
- return {
217
- marketplaceResult,
218
- pluginResults,
219
- issues,
220
- status: calculateValidationStatus(issues),
221
- };
424
+ return { marketplaceResult, pluginResults, undeclared, refused, issues };
222
425
  }
223
426
  /**
224
427
  * Group key for findings that carry no `location` at all.
@@ -278,19 +481,40 @@ export function summarizeIssuesByLocation(issues) {
278
481
  * against a real marketplace in `payload-path-coordinates.test.ts`, not here.
279
482
  */
280
483
  export function buildMarketplaceValidateReport(input) {
281
- const { status, root, marketplace, pluginResults, issues, issueCounts, summary, duration, verbose } = input;
282
- const plugins = pluginResults.map(r => ({
283
- path: r.path,
284
- status: r.status,
285
- metadata: r.metadata,
286
- issues: r.issues,
484
+ const { root, marketplace, pluginResults, undeclared, refused, bailSummary, duration, verbose } = input;
485
+ const issues = [
486
+ ...unfinishedRunFinding(marketplace, pluginResults, refused),
487
+ ...input.issues,
488
+ ];
489
+ const issueCounts = countBySeverity(issues);
490
+ const plugins = pluginResults.map(({ name, source, result }) => ({
491
+ name,
492
+ source,
493
+ path: result.path,
494
+ status: result.status,
495
+ metadata: result.metadata,
496
+ issues: result.issues,
287
497
  }));
288
498
  return {
289
- status,
499
+ // Derived from the issues THIS document publishes — the refusal above
500
+ // included — so the status, the counts and the listing cannot disagree, and
501
+ // the exit code the command takes from it cannot either.
502
+ status: calculateValidationStatus(issues),
290
503
  // Stated once, and the only absolute path in the document.
291
504
  root,
292
505
  ...(marketplace ? { marketplace } : {}),
506
+ // The numerator. Beside `marketplace.localPluginSources` it says whether
507
+ // every declared source resolved; without it "three local plugins, all
508
+ // clean" and "three local plugins, none looked at" are the same document.
509
+ pluginsValidated: pluginResults.length,
293
510
  plugins: relativizePathEntries(plugins, root),
511
+ // Named, not graded — see `validateDeclaredPlugins`. Always present, so an
512
+ // empty list is a statement that `plugins/` was looked at.
513
+ undeclared: [...undeclared],
514
+ // Paths the walk would not open (real path outside the root) — see
515
+ // `WalkBoundary`. Always present: an empty list says every path the run
516
+ // read was under `root`, which is the containment claim the help text makes.
517
+ refused: [...refused],
294
518
  // One row per inspected asset by default; the flat per-issue list under
295
519
  // `--verbose`. Either way every `location` stays relative to `root` above.
296
520
  issues: verbose === true ? issues : summarizeIssuesByLocation(issues),
@@ -298,10 +522,82 @@ export function buildMarketplaceValidateReport(input) {
298
522
  // severity, so an info-only run is `success` and the info would otherwise
299
523
  // be unreported.
300
524
  issueCounts,
301
- summary,
525
+ summary: bailSummary
526
+ ?? `${issueCounts.errors} error(s), ${issueCounts.warnings} warning(s), ${issueCounts.info} info`,
302
527
  duration,
303
528
  };
304
529
  }
530
+ /**
531
+ * The refusal for a run in which a declared local source did not resolve.
532
+ *
533
+ * 🚨 **Two shapes of this shipped.** First, the plugin walk returned nothing
534
+ * when `plugins/` was absent, and the document carried no count, so a
535
+ * marketplace declaring three relative-path plugins over a missing `plugins/`
536
+ * reported `status: success`, exit 0. Then the count that fixed it —
537
+ * `validated < declared` by NUMBER — was wrong in both directions: a co-located
538
+ * `source: "./"` marketplace walked 0 against declared 1 and was refused, and
539
+ * an undeclared `plugins/b` counted for a declared `a` that did not exist.
540
+ *
541
+ * 🔑 **The condition is by IDENTITY, not by count.** `marketplace.localPluginSources`
542
+ * is the manifest's own list of local entries; `pluginResults` names the entry
543
+ * each validated plugin satisfies. A declared entry with no result is a source
544
+ * that did not resolve to a directory, and that is what is refused — whatever
545
+ * else the tree holds. Both halves are in the document, so the refusal is
546
+ * derivable from the document alone. All-remote stays green (nothing local
547
+ * declared); no entries stays green; an undeclared directory is listed under
548
+ * `undeclared` and stays green here — it cannot ship, so it is not a plugin
549
+ * that went unvalidated; a bailed manifest carries no sources and stays a
550
+ * manifest error alone.
551
+ *
552
+ * The message names the unresolved sources: the reader's next move is to fix
553
+ * the `source` or build the tree, and either needs the name.
554
+ *
555
+ * The second half is the same claim one level down: a path INSIDE a validated
556
+ * plugin that the walk refused to open because it resolves outside the root
557
+ * (`refused`, from {@link WalkBoundary}). The plugin's row exists, but what
558
+ * sits behind that path was never read, so the document is not a verdict
559
+ * about it either. ONE finding carries both halves — the claim is about the
560
+ * run, and two reports about one run is the per-finding duplication
561
+ * `run-integrity.ts` forbids.
562
+ *
563
+ * Derived here in the builder, not in {@link collectMarketplaceFindings}, so
564
+ * the status the document publishes — and the exit code taken from it — cannot
565
+ * be computed over an issue set that lacks it. Shared mechanism:
566
+ * `run-integrity.ts`.
567
+ *
568
+ * @param marketplace - The manifest's metadata; `undefined` when the run bailed
569
+ * @param validated - The declared local plugins the run validated
570
+ * @param refused - Root-relative paths the walk would not open
571
+ * @returns The one finding, or nothing
572
+ */
573
+ function unfinishedRunFinding(marketplace, validated, refused) {
574
+ const declared = marketplace?.localPluginSources ?? [];
575
+ const unresolved = declared.filter((entry) => !validated.some((v) => v.name === entry.name && v.source === entry.source));
576
+ if (unresolved.length === 0 && refused.length === 0)
577
+ return [];
578
+ const parts = [];
579
+ if (unresolved.length > 0) {
580
+ const named = unresolved.map((entry) => `\`${entry.name}\` (${entry.source})`).join(', ');
581
+ parts.push(`The manifest declares ${declared.length} plugin(s) with a local source and this run validated`
582
+ + ` ${validated.length} of them, so this document is not a verdict about the rest: it reads the`
583
+ + ' same as a run over a marketplace whose plugins are all clean.'
584
+ + ` Declared source(s) that did not resolve to a directory under the marketplace root: ${named}.`
585
+ + ' Usually the marketplace was not built, was built somewhere else, or the entry\'s `source`'
586
+ + ' names the wrong directory — `undeclared` above lists the `plugins/` directories the'
587
+ + ' manifest does not name. A source that resolves OUTSIDE the root (a symlink pointing out)'
588
+ + ' is refused the same way: this command never leaves the directory it was pointed at.'
589
+ + ' Fix the `source`, run `vat build` first, or point this command at the built marketplace.');
590
+ }
591
+ if (refused.length > 0) {
592
+ const named = refused.map((path) => `\`${path}\``).join(', ');
593
+ parts.push(`This run refused to open ${refused.length} path(s) inside a validated plugin because each resolves`
594
+ + ` OUTSIDE the marketplace root (a symbolic link pointing out): ${named}.`
595
+ + ' Nothing behind them was read, so this document is not a verdict about the skills or manifest'
596
+ + ' they hold — this command never leaves the directory it was pointed at. Replace each link'
597
+ + ' with the files it points at, or move its target under the marketplace root.');
598
+ }
599
+ return [runIntegrityFinding(parts.join(' '))];
600
+ }
305
601
  /**
306
602
  * Validate a marketplace and hand back its document and exit code, printing
307
603
  * nothing on stdout.
@@ -318,28 +614,26 @@ export async function runMarketplaceValidatePhase(targetPath, options) {
318
614
  try {
319
615
  const marketplacePath = safePath.resolve(targetPath ?? '.');
320
616
  logger.info(`Validating marketplace: ${marketplacePath}`);
321
- const { marketplaceResult, pluginResults, issues, status } = await collectMarketplaceFindings(marketplacePath, logger);
617
+ const { marketplaceResult, pluginResults, undeclared, refused, issues } = await collectMarketplaceFindings(marketplacePath, logger);
618
+ // A bailed run reports WHY it stopped; a completed run reports what it
619
+ // found. Both emit through the one builder, so the document has a single
620
+ // shape either way.
322
621
  const bailed = marketplaceResult.status === 'error';
323
- const issueCounts = countBySeverity(issues);
324
- return {
325
- document: buildMarketplaceValidateReport({
326
- status,
327
- root: marketplacePath,
328
- marketplace: marketplaceResult.metadata,
329
- pluginResults,
330
- issues,
331
- issueCounts,
332
- // A bailed run reports WHY it stopped; a completed run reports what it
333
- // found. Both emit through the one builder, so the document has a
334
- // single shape either way.
335
- summary: bailed
336
- ? marketplaceResult.summary
337
- : `${issueCounts.errors} error(s), ${issueCounts.warnings} warning(s), ${issueCounts.info} info`,
338
- duration: formatDuration(Date.now() - startTime),
339
- verbose: options.verbose === true,
340
- }),
341
- exitCode: status === 'error' ? 1 : 0,
342
- };
622
+ const document = buildMarketplaceValidateReport({
623
+ root: marketplacePath,
624
+ marketplace: marketplaceResult.metadata,
625
+ pluginResults,
626
+ undeclared,
627
+ refused,
628
+ issues,
629
+ ...(bailed ? { bailSummary: marketplaceResult.summary } : {}),
630
+ duration: formatDuration(Date.now() - startTime),
631
+ verbose: options.verbose === true,
632
+ });
633
+ // From the DOCUMENT, so the exit code and the published status are one
634
+ // derivation — the run-integrity refusal lands in the builder, and an exit
635
+ // code computed upstream of it would answer 0 over `status: error`.
636
+ return { document, exitCode: document.status === 'error' ? 1 : 0 };
343
637
  }
344
638
  catch (error) {
345
639
  return {
@@ -350,7 +644,9 @@ export async function runMarketplaceValidatePhase(targetPath, options) {
350
644
  }
351
645
  }
352
646
  async function marketplaceValidateCommand(targetPath, options) {
353
- finishCommand(await runMarketplaceValidatePhase(targetPath, options), writeYamlOutput);
647
+ // `undefined`: this command offers no `--format`, so its failure envelope is
648
+ // YAML like its report.
649
+ finishCommand(await runMarketplaceValidatePhase(targetPath, options), writeYamlOutput, undefined);
354
650
  }
355
651
  export function createMarketplaceValidateCommand() {
356
652
  const command = new Command('validate');
@@ -370,6 +666,25 @@ Description:
370
666
  Output (YAML on stdout):
371
667
  root: the marketplace directory — every location below is relative to it
372
668
  status, issueCounts, summary, duration, marketplace, plugins
669
+ pluginsValidated: how many of the manifest's relative-path sources
670
+ (marketplace.localPluginSources) resolved to a directory and were
671
+ validated — each plugins[] row names the entry it satisfies. A
672
+ declared source that does not resolve is reported as
673
+ RESOURCE_CHECK_BROKEN at error (exit 1), naming it, rather than as
674
+ a pass — a plugin the manifest ships and this run never saw is not
675
+ a verdict. A source is never followed outside the root: an absolute
676
+ path or a ".." segment fails the manifest schema, and a symlink that
677
+ points out is refused like an unresolved source. Co-located
678
+ marketplaces (source: "./") are validated at the root. An
679
+ all-remote marketplace has nothing local and stays green.
680
+ undeclared: directories under plugins/ that no manifest entry names.
681
+ Listed only — they cannot be installed, so they are neither
682
+ validated nor a failure.
683
+ refused: paths inside a validated plugin this run would not open because
684
+ they resolve outside the root (a skills/ dir, skill dir, SKILL.md
685
+ or plugin.json that is a symlink pointing out). Containment is by
686
+ real path at every depth, not only at the declared source; each is
687
+ named here and in the RESOURCE_CHECK_BROKEN finding (exit 1).
373
688
 
374
689
  issues: one row per inspected location, carrying only that location's counts
375
690
  ({location, errors?, warnings?, info?, codes}). A zero bucket is
@@ -1 +1 @@
1
- {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../../src/commands/claude/marketplace/validate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../../src/commands/claude/marketplace/validate.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,3 @@
1
- /**
2
- * `vat claude org api-keys` — manage organization API keys via Admin API.
3
- */
4
1
  import { Command } from 'commander';
5
2
  export declare function createOrgApiKeysCommand(): Command;
6
3
  //# sourceMappingURL=api-keys.d.ts.map