@vibe-agent-toolkit/cli 0.1.42 → 0.2.0-rc.10

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 (504) hide show
  1. package/README.md +4 -5
  2. package/dist/bin/vat +95 -28
  3. package/dist/bin/vat.js +95 -28
  4. package/dist/bin/vat.js.map +1 -1
  5. package/dist/bin.js +137 -76
  6. package/dist/bin.js.map +1 -1
  7. package/dist/command-loaders.d.ts +44 -0
  8. package/dist/command-loaders.d.ts.map +1 -0
  9. package/dist/command-loaders.js +60 -0
  10. package/dist/command-loaders.js.map +1 -0
  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/index.js +1 -1
  18. package/dist/commands/agent/install-path.d.ts +36 -0
  19. package/dist/commands/agent/install-path.d.ts.map +1 -0
  20. package/dist/commands/agent/install-path.js +44 -0
  21. package/dist/commands/agent/install-path.js.map +1 -0
  22. package/dist/commands/agent/install.d.ts.map +1 -1
  23. package/dist/commands/agent/install.js +66 -13
  24. package/dist/commands/agent/install.js.map +1 -1
  25. package/dist/commands/agent/installed.d.ts.map +1 -1
  26. package/dist/commands/agent/installed.js +22 -12
  27. package/dist/commands/agent/installed.js.map +1 -1
  28. package/dist/commands/agent/list.d.ts.map +1 -1
  29. package/dist/commands/agent/list.js +2 -1
  30. package/dist/commands/agent/list.js.map +1 -1
  31. package/dist/commands/agent/run.d.ts.map +1 -1
  32. package/dist/commands/agent/run.js +2 -1
  33. package/dist/commands/agent/run.js.map +1 -1
  34. package/dist/commands/agent/uninstall.d.ts.map +1 -1
  35. package/dist/commands/agent/uninstall.js +13 -6
  36. package/dist/commands/agent/uninstall.js.map +1 -1
  37. package/dist/commands/agent/validate.d.ts.map +1 -1
  38. package/dist/commands/agent/validate.js +3 -2
  39. package/dist/commands/agent/validate.js.map +1 -1
  40. package/dist/commands/ard/emit.d.ts +153 -0
  41. package/dist/commands/ard/emit.d.ts.map +1 -0
  42. package/dist/commands/ard/emit.js +276 -0
  43. package/dist/commands/ard/emit.js.map +1 -0
  44. package/dist/commands/ard/index.d.ts +12 -0
  45. package/dist/commands/ard/index.d.ts.map +1 -0
  46. package/dist/commands/ard/index.js +80 -0
  47. package/dist/commands/ard/index.js.map +1 -0
  48. package/dist/commands/ard/surfaces.d.ts +56 -0
  49. package/dist/commands/ard/surfaces.d.ts.map +1 -0
  50. package/dist/commands/ard/surfaces.js +150 -0
  51. package/dist/commands/ard/surfaces.js.map +1 -0
  52. package/dist/commands/audit/distributed-tree.d.ts +60 -2
  53. package/dist/commands/audit/distributed-tree.d.ts.map +1 -1
  54. package/dist/commands/audit/distributed-tree.js +73 -1
  55. package/dist/commands/audit/distributed-tree.js.map +1 -1
  56. package/dist/commands/audit/git-url-clone.d.ts +1 -1
  57. package/dist/commands/audit/git-url-clone.d.ts.map +1 -1
  58. package/dist/commands/audit/git-url-clone.js.map +1 -1
  59. package/dist/commands/audit/hierarchical-output.d.ts +1 -1
  60. package/dist/commands/audit/hierarchical-output.d.ts.map +1 -1
  61. package/dist/commands/audit/hierarchical-output.js +1 -1
  62. package/dist/commands/audit/hierarchical-output.js.map +1 -1
  63. package/dist/commands/audit/provenance.d.ts.map +1 -1
  64. package/dist/commands/audit/provenance.js +4 -3
  65. package/dist/commands/audit/provenance.js.map +1 -1
  66. package/dist/commands/audit/scan-population.d.ts +158 -0
  67. package/dist/commands/audit/scan-population.d.ts.map +1 -0
  68. package/dist/commands/audit/scan-population.js +292 -0
  69. package/dist/commands/audit/scan-population.js.map +1 -0
  70. package/dist/commands/audit-settings.d.ts.map +1 -1
  71. package/dist/commands/audit-settings.js +6 -5
  72. package/dist/commands/audit-settings.js.map +1 -1
  73. package/dist/commands/audit.d.ts +98 -8
  74. package/dist/commands/audit.d.ts.map +1 -1
  75. package/dist/commands/audit.js +1133 -395
  76. package/dist/commands/audit.js.map +1 -1
  77. package/dist/commands/build.d.ts +1 -1
  78. package/dist/commands/build.d.ts.map +1 -1
  79. package/dist/commands/build.js +40 -36
  80. package/dist/commands/build.js.map +1 -1
  81. package/dist/commands/cache/cache-control.d.ts +82 -0
  82. package/dist/commands/cache/cache-control.d.ts.map +1 -0
  83. package/dist/commands/cache/cache-control.js +86 -0
  84. package/dist/commands/cache/cache-control.js.map +1 -0
  85. package/dist/commands/cache/clear.d.ts +105 -0
  86. package/dist/commands/cache/clear.d.ts.map +1 -0
  87. package/dist/commands/cache/clear.js +248 -0
  88. package/dist/commands/cache/clear.js.map +1 -0
  89. package/dist/commands/cache/index.d.ts +18 -0
  90. package/dist/commands/cache/index.d.ts.map +1 -0
  91. package/dist/commands/cache/index.js +94 -0
  92. package/dist/commands/cache/index.js.map +1 -0
  93. package/dist/commands/claude/claude-config.d.ts.map +1 -1
  94. package/dist/commands/claude/claude-config.js +6 -0
  95. package/dist/commands/claude/claude-config.js.map +1 -1
  96. package/dist/commands/claude/context.d.ts +340 -0
  97. package/dist/commands/claude/context.d.ts.map +1 -0
  98. package/dist/commands/claude/context.js +1080 -0
  99. package/dist/commands/claude/context.js.map +1 -0
  100. package/dist/commands/claude/index.d.ts +14 -0
  101. package/dist/commands/claude/index.d.ts.map +1 -1
  102. package/dist/commands/claude/index.js +22 -2
  103. package/dist/commands/claude/index.js.map +1 -1
  104. package/dist/commands/claude/marketplace/changelog-utils.d.ts +1 -1
  105. package/dist/commands/claude/marketplace/changelog-utils.d.ts.map +1 -1
  106. package/dist/commands/claude/marketplace/changelog-utils.js +1 -2
  107. package/dist/commands/claude/marketplace/changelog-utils.js.map +1 -1
  108. package/dist/commands/claude/marketplace/git-publish.d.ts.map +1 -1
  109. package/dist/commands/claude/marketplace/git-publish.js +40 -31
  110. package/dist/commands/claude/marketplace/git-publish.js.map +1 -1
  111. package/dist/commands/claude/marketplace/license-utils.d.ts.map +1 -1
  112. package/dist/commands/claude/marketplace/license-utils.js +0 -1
  113. package/dist/commands/claude/marketplace/license-utils.js.map +1 -1
  114. package/dist/commands/claude/marketplace/publish-tree.d.ts.map +1 -1
  115. package/dist/commands/claude/marketplace/publish-tree.js +0 -6
  116. package/dist/commands/claude/marketplace/publish-tree.js.map +1 -1
  117. package/dist/commands/claude/marketplace/publish.d.ts.map +1 -1
  118. package/dist/commands/claude/marketplace/publish.js +2 -1
  119. package/dist/commands/claude/marketplace/publish.js.map +1 -1
  120. package/dist/commands/claude/marketplace/validate.d.ts +73 -22
  121. package/dist/commands/claude/marketplace/validate.d.ts.map +1 -1
  122. package/dist/commands/claude/marketplace/validate.js +407 -72
  123. package/dist/commands/claude/marketplace/validate.js.map +1 -1
  124. package/dist/commands/claude/org/api-keys.d.ts +0 -3
  125. package/dist/commands/claude/org/api-keys.d.ts.map +1 -1
  126. package/dist/commands/claude/org/api-keys.js +2 -1
  127. package/dist/commands/claude/org/api-keys.js.map +1 -1
  128. package/dist/commands/claude/org/helpers.d.ts +54 -1
  129. package/dist/commands/claude/org/helpers.d.ts.map +1 -1
  130. package/dist/commands/claude/org/helpers.js +42 -7
  131. package/dist/commands/claude/org/helpers.js.map +1 -1
  132. package/dist/commands/claude/org/index.d.ts.map +1 -1
  133. package/dist/commands/claude/org/index.js +24 -16
  134. package/dist/commands/claude/org/index.js.map +1 -1
  135. package/dist/commands/claude/org/invites.d.ts +0 -3
  136. package/dist/commands/claude/org/invites.d.ts.map +1 -1
  137. package/dist/commands/claude/org/invites.js +3 -2
  138. package/dist/commands/claude/org/invites.js.map +1 -1
  139. package/dist/commands/claude/org/skills.d.ts +527 -0
  140. package/dist/commands/claude/org/skills.d.ts.map +1 -1
  141. package/dist/commands/claude/org/skills.js +1414 -108
  142. package/dist/commands/claude/org/skills.js.map +1 -1
  143. package/dist/commands/claude/org/users.d.ts +0 -3
  144. package/dist/commands/claude/org/users.d.ts.map +1 -1
  145. package/dist/commands/claude/org/users.js +6 -3
  146. package/dist/commands/claude/org/users.js.map +1 -1
  147. package/dist/commands/claude/org/workspaces.d.ts +0 -3
  148. package/dist/commands/claude/org/workspaces.d.ts.map +1 -1
  149. package/dist/commands/claude/org/workspaces.js +11 -7
  150. package/dist/commands/claude/org/workspaces.js.map +1 -1
  151. package/dist/commands/claude/plugin/build.d.ts +41 -3
  152. package/dist/commands/claude/plugin/build.d.ts.map +1 -1
  153. package/dist/commands/claude/plugin/build.js +147 -80
  154. package/dist/commands/claude/plugin/build.js.map +1 -1
  155. package/dist/commands/claude/plugin/helpers.d.ts.map +1 -1
  156. package/dist/commands/claude/plugin/helpers.js +2 -7
  157. package/dist/commands/claude/plugin/helpers.js.map +1 -1
  158. package/dist/commands/claude/plugin/install.d.ts +12 -0
  159. package/dist/commands/claude/plugin/install.d.ts.map +1 -1
  160. package/dist/commands/claude/plugin/install.js +93 -62
  161. package/dist/commands/claude/plugin/install.js.map +1 -1
  162. package/dist/commands/claude/plugin/list.d.ts.map +1 -1
  163. package/dist/commands/claude/plugin/list.js +3 -2
  164. package/dist/commands/claude/plugin/list.js.map +1 -1
  165. package/dist/commands/claude/plugin/marketplace-json.d.ts +24 -9
  166. package/dist/commands/claude/plugin/marketplace-json.d.ts.map +1 -1
  167. package/dist/commands/claude/plugin/marketplace-json.js +10 -9
  168. package/dist/commands/claude/plugin/marketplace-json.js.map +1 -1
  169. package/dist/commands/claude/plugin/plugin-changelog.d.ts.map +1 -1
  170. package/dist/commands/claude/plugin/plugin-changelog.js +0 -2
  171. package/dist/commands/claude/plugin/plugin-changelog.js.map +1 -1
  172. package/dist/commands/claude/plugin/plugin-files.d.ts.map +1 -1
  173. package/dist/commands/claude/plugin/plugin-files.js +3 -6
  174. package/dist/commands/claude/plugin/plugin-files.js.map +1 -1
  175. package/dist/commands/claude/plugin/plugin-validators.d.ts.map +1 -1
  176. package/dist/commands/claude/plugin/plugin-validators.js +3 -6
  177. package/dist/commands/claude/plugin/plugin-validators.js.map +1 -1
  178. package/dist/commands/claude/plugin/tree-copy.d.ts +73 -0
  179. package/dist/commands/claude/plugin/tree-copy.d.ts.map +1 -1
  180. package/dist/commands/claude/plugin/tree-copy.js +221 -14
  181. package/dist/commands/claude/plugin/tree-copy.js.map +1 -1
  182. package/dist/commands/claude/plugin/uninstall.d.ts.map +1 -1
  183. package/dist/commands/claude/plugin/uninstall.js +4 -4
  184. package/dist/commands/claude/plugin/uninstall.js.map +1 -1
  185. package/dist/commands/consistency-check.d.ts +17 -15
  186. package/dist/commands/consistency-check.d.ts.map +1 -1
  187. package/dist/commands/consistency-check.js +152 -106
  188. package/dist/commands/consistency-check.js.map +1 -1
  189. package/dist/commands/corpus/index.d.ts.map +1 -1
  190. package/dist/commands/corpus/index.js +3 -0
  191. package/dist/commands/corpus/index.js.map +1 -1
  192. package/dist/commands/corpus/report.d.ts +1 -2
  193. package/dist/commands/corpus/report.d.ts.map +1 -1
  194. package/dist/commands/corpus/report.js +1 -3
  195. package/dist/commands/corpus/report.js.map +1 -1
  196. package/dist/commands/corpus/runner.d.ts +58 -1
  197. package/dist/commands/corpus/runner.d.ts.map +1 -1
  198. package/dist/commands/corpus/runner.js +95 -41
  199. package/dist/commands/corpus/runner.js.map +1 -1
  200. package/dist/commands/corpus/scan.d.ts.map +1 -1
  201. package/dist/commands/corpus/scan.js +20 -12
  202. package/dist/commands/corpus/scan.js.map +1 -1
  203. package/dist/commands/corpus/seed.d.ts +4 -4
  204. package/dist/commands/corpus/seed.d.ts.map +1 -1
  205. package/dist/commands/corpus/seed.js +1 -3
  206. package/dist/commands/corpus/seed.js.map +1 -1
  207. package/dist/commands/doctor.d.ts +50 -0
  208. package/dist/commands/doctor.d.ts.map +1 -1
  209. package/dist/commands/doctor.js +245 -52
  210. package/dist/commands/doctor.js.map +1 -1
  211. package/dist/commands/inventory.d.ts +13 -1
  212. package/dist/commands/inventory.d.ts.map +1 -1
  213. package/dist/commands/inventory.js +128 -17
  214. package/dist/commands/inventory.js.map +1 -1
  215. package/dist/commands/mcp/collections.d.ts +1 -1
  216. package/dist/commands/mcp/collections.d.ts.map +1 -1
  217. package/dist/commands/mcp/list-collections.d.ts.map +1 -1
  218. package/dist/commands/mcp/list-collections.js +2 -1
  219. package/dist/commands/mcp/list-collections.js.map +1 -1
  220. package/dist/commands/mcp/serve.d.ts.map +1 -1
  221. package/dist/commands/mcp/serve.js +3 -2
  222. package/dist/commands/mcp/serve.js.map +1 -1
  223. package/dist/commands/okf/index.d.ts +11 -0
  224. package/dist/commands/okf/index.d.ts.map +1 -0
  225. package/dist/commands/okf/index.js +114 -0
  226. package/dist/commands/okf/index.js.map +1 -0
  227. package/dist/commands/okf/validate.d.ts +191 -0
  228. package/dist/commands/okf/validate.d.ts.map +1 -0
  229. package/dist/commands/okf/validate.js +190 -0
  230. package/dist/commands/okf/validate.js.map +1 -0
  231. package/dist/commands/phase-utils.d.ts +182 -114
  232. package/dist/commands/phase-utils.d.ts.map +1 -1
  233. package/dist/commands/phase-utils.js +154 -163
  234. package/dist/commands/phase-utils.js.map +1 -1
  235. package/dist/commands/positional-args.d.ts.map +1 -1
  236. package/dist/commands/positional-args.js +3 -2
  237. package/dist/commands/positional-args.js.map +1 -1
  238. package/dist/commands/rag/clear-command.d.ts.map +1 -1
  239. package/dist/commands/rag/clear-command.js +2 -1
  240. package/dist/commands/rag/clear-command.js.map +1 -1
  241. package/dist/commands/rag/index-command.d.ts +64 -0
  242. package/dist/commands/rag/index-command.d.ts.map +1 -1
  243. package/dist/commands/rag/index-command.js +72 -6
  244. package/dist/commands/rag/index-command.js.map +1 -1
  245. package/dist/commands/rag/index.d.ts.map +1 -1
  246. package/dist/commands/rag/index.js +23 -10
  247. package/dist/commands/rag/index.js.map +1 -1
  248. package/dist/commands/rag/query-command.d.ts.map +1 -1
  249. package/dist/commands/rag/query-command.js +2 -1
  250. package/dist/commands/rag/query-command.js.map +1 -1
  251. package/dist/commands/rag/stats-command.d.ts.map +1 -1
  252. package/dist/commands/rag/stats-command.js +2 -1
  253. package/dist/commands/rag/stats-command.js.map +1 -1
  254. package/dist/commands/resources/builtin-help.d.ts +27 -0
  255. package/dist/commands/resources/builtin-help.d.ts.map +1 -0
  256. package/dist/commands/resources/builtin-help.js +46 -0
  257. package/dist/commands/resources/builtin-help.js.map +1 -0
  258. package/dist/commands/resources/check-progress.d.ts +154 -0
  259. package/dist/commands/resources/check-progress.d.ts.map +1 -0
  260. package/dist/commands/resources/check-progress.js +222 -0
  261. package/dist/commands/resources/check-progress.js.map +1 -0
  262. package/dist/commands/resources/check-supervisor.d.ts +465 -0
  263. package/dist/commands/resources/check-supervisor.d.ts.map +1 -0
  264. package/dist/commands/resources/check-supervisor.js +573 -0
  265. package/dist/commands/resources/check-supervisor.js.map +1 -0
  266. package/dist/commands/resources/check.d.ts +593 -0
  267. package/dist/commands/resources/check.d.ts.map +1 -0
  268. package/dist/commands/resources/check.js +1365 -0
  269. package/dist/commands/resources/check.js.map +1 -0
  270. package/dist/commands/resources/index.d.ts.map +1 -1
  271. package/dist/commands/resources/index.js +425 -6
  272. package/dist/commands/resources/index.js.map +1 -1
  273. package/dist/commands/resources/query.d.ts +106 -0
  274. package/dist/commands/resources/query.d.ts.map +1 -0
  275. package/dist/commands/resources/query.js +177 -0
  276. package/dist/commands/resources/query.js.map +1 -0
  277. package/dist/commands/resources/scan.d.ts +24 -0
  278. package/dist/commands/resources/scan.d.ts.map +1 -1
  279. package/dist/commands/resources/scan.js +17 -8
  280. package/dist/commands/resources/scan.js.map +1 -1
  281. package/dist/commands/resources/validate.d.ts +57 -4
  282. package/dist/commands/resources/validate.d.ts.map +1 -1
  283. package/dist/commands/resources/validate.js +224 -56
  284. package/dist/commands/resources/validate.js.map +1 -1
  285. package/dist/commands/skill/review-checklist.d.ts +3 -2
  286. package/dist/commands/skill/review-checklist.d.ts.map +1 -1
  287. package/dist/commands/skill/review-checklist.js +40 -2
  288. package/dist/commands/skill/review-checklist.js.map +1 -1
  289. package/dist/commands/skill/review.d.ts +247 -0
  290. package/dist/commands/skill/review.d.ts.map +1 -1
  291. package/dist/commands/skill/review.js +99 -62
  292. package/dist/commands/skill/review.js.map +1 -1
  293. package/dist/commands/skill/test/configure.d.ts +56 -0
  294. package/dist/commands/skill/test/configure.d.ts.map +1 -1
  295. package/dist/commands/skill/test/configure.js +75 -16
  296. package/dist/commands/skill/test/configure.js.map +1 -1
  297. package/dist/commands/skill/test/run.d.ts +63 -10
  298. package/dist/commands/skill/test/run.d.ts.map +1 -1
  299. package/dist/commands/skill/test/run.js +258 -77
  300. package/dist/commands/skill/test/run.js.map +1 -1
  301. package/dist/commands/skills/build.d.ts +94 -4
  302. package/dist/commands/skills/build.d.ts.map +1 -1
  303. package/dist/commands/skills/build.js +325 -97
  304. package/dist/commands/skills/build.js.map +1 -1
  305. package/dist/commands/skills/install.d.ts +2 -1
  306. package/dist/commands/skills/install.d.ts.map +1 -1
  307. package/dist/commands/skills/install.js +20 -31
  308. package/dist/commands/skills/install.js.map +1 -1
  309. package/dist/commands/skills/list.d.ts +2 -1
  310. package/dist/commands/skills/list.d.ts.map +1 -1
  311. package/dist/commands/skills/list.js +44 -26
  312. package/dist/commands/skills/list.js.map +1 -1
  313. package/dist/commands/skills/package.d.ts +24 -3
  314. package/dist/commands/skills/package.d.ts.map +1 -1
  315. package/dist/commands/skills/package.js +42 -17
  316. package/dist/commands/skills/package.js.map +1 -1
  317. package/dist/commands/skills/scope-guard.d.ts.map +1 -1
  318. package/dist/commands/skills/scope-guard.js +3 -5
  319. package/dist/commands/skills/scope-guard.js.map +1 -1
  320. package/dist/commands/skills/shared.d.ts.map +1 -1
  321. package/dist/commands/skills/shared.js +2 -4
  322. package/dist/commands/skills/shared.js.map +1 -1
  323. package/dist/commands/skills/skill-discovery.d.ts +47 -6
  324. package/dist/commands/skills/skill-discovery.d.ts.map +1 -1
  325. package/dist/commands/skills/skill-discovery.js +66 -16
  326. package/dist/commands/skills/skill-discovery.js.map +1 -1
  327. package/dist/commands/skills/source-resolvers.d.ts +15 -0
  328. package/dist/commands/skills/source-resolvers.d.ts.map +1 -1
  329. package/dist/commands/skills/source-resolvers.js +25 -4
  330. package/dist/commands/skills/source-resolvers.js.map +1 -1
  331. package/dist/commands/skills/validate-command.d.ts.map +1 -1
  332. package/dist/commands/skills/validate-command.js +11 -3
  333. package/dist/commands/skills/validate-command.js.map +1 -1
  334. package/dist/commands/skills/validate.d.ts +140 -4
  335. package/dist/commands/skills/validate.d.ts.map +1 -1
  336. package/dist/commands/skills/validate.js +224 -67
  337. package/dist/commands/skills/validate.js.map +1 -1
  338. package/dist/commands/validate.d.ts +1 -1
  339. package/dist/commands/validate.d.ts.map +1 -1
  340. package/dist/commands/validate.js +63 -27
  341. package/dist/commands/validate.js.map +1 -1
  342. package/dist/commands/verify.d.ts +119 -15
  343. package/dist/commands/verify.d.ts.map +1 -1
  344. package/dist/commands/verify.js +357 -142
  345. package/dist/commands/verify.js.map +1 -1
  346. package/dist/index.d.ts +0 -1
  347. package/dist/index.d.ts.map +1 -1
  348. package/dist/index.js +5 -1
  349. package/dist/index.js.map +1 -1
  350. package/dist/report-schemas.d.ts +45 -0
  351. package/dist/report-schemas.d.ts.map +1 -0
  352. package/dist/report-schemas.js +100 -0
  353. package/dist/report-schemas.js.map +1 -0
  354. package/dist/skill-resolution/classify.js +2 -2
  355. package/dist/skill-resolution/classify.js.map +1 -1
  356. package/dist/skill-resolution/packaging-config.d.ts +49 -5
  357. package/dist/skill-resolution/packaging-config.d.ts.map +1 -1
  358. package/dist/skill-resolution/packaging-config.js +59 -19
  359. package/dist/skill-resolution/packaging-config.js.map +1 -1
  360. package/dist/skill-resolution/resolve-skill-reference.d.ts.map +1 -1
  361. package/dist/skill-resolution/resolve-skill-reference.js +55 -57
  362. package/dist/skill-resolution/resolve-skill-reference.js.map +1 -1
  363. package/dist/utils/agent-discovery.d.ts.map +1 -1
  364. package/dist/utils/agent-discovery.js +22 -11
  365. package/dist/utils/agent-discovery.js.map +1 -1
  366. package/dist/utils/agent-runner.d.ts.map +1 -1
  367. package/dist/utils/agent-runner.js +7 -4
  368. package/dist/utils/agent-runner.js.map +1 -1
  369. package/dist/utils/claude-context-lens.d.ts +34 -0
  370. package/dist/utils/claude-context-lens.d.ts.map +1 -0
  371. package/dist/utils/claude-context-lens.js +39 -0
  372. package/dist/utils/claude-context-lens.js.map +1 -0
  373. package/dist/utils/command-error.d.ts +144 -7
  374. package/dist/utils/command-error.d.ts.map +1 -1
  375. package/dist/utils/command-error.js +179 -16
  376. package/dist/utils/command-error.js.map +1 -1
  377. package/dist/utils/config-loader.d.ts +2 -1
  378. package/dist/utils/config-loader.d.ts.map +1 -1
  379. package/dist/utils/config-loader.js +40 -14
  380. package/dist/utils/config-loader.js.map +1 -1
  381. package/dist/utils/corpus-target.d.ts +26 -0
  382. package/dist/utils/corpus-target.d.ts.map +1 -0
  383. package/dist/utils/corpus-target.js +35 -0
  384. package/dist/utils/corpus-target.js.map +1 -0
  385. package/dist/utils/edge-lens-evaluation.d.ts +83 -0
  386. package/dist/utils/edge-lens-evaluation.d.ts.map +1 -0
  387. package/dist/utils/edge-lens-evaluation.js +110 -0
  388. package/dist/utils/edge-lens-evaluation.js.map +1 -0
  389. package/dist/utils/help-loader.d.ts.map +1 -1
  390. package/dist/utils/help-loader.js +0 -1
  391. package/dist/utils/help-loader.js.map +1 -1
  392. package/dist/utils/issue-anchor.d.ts +2 -2
  393. package/dist/utils/issue-anchor.d.ts.map +1 -1
  394. package/dist/utils/issue-anchor.js +1 -1
  395. package/dist/utils/issue-rendering.d.ts +3 -3
  396. package/dist/utils/issue-rendering.d.ts.map +1 -1
  397. package/dist/utils/issue-rendering.js +3 -3
  398. package/dist/utils/issue-rendering.js.map +1 -1
  399. package/dist/utils/issue-severity.d.ts +12 -5
  400. package/dist/utils/issue-severity.d.ts.map +1 -1
  401. package/dist/utils/issue-severity.js +1 -1
  402. package/dist/utils/issue-severity.js.map +1 -1
  403. package/dist/utils/optional-backend.d.ts +78 -0
  404. package/dist/utils/optional-backend.d.ts.map +1 -0
  405. package/dist/utils/optional-backend.js +117 -0
  406. package/dist/utils/optional-backend.js.map +1 -0
  407. package/dist/utils/output.d.ts +26 -0
  408. package/dist/utils/output.d.ts.map +1 -1
  409. package/dist/utils/output.js +35 -0
  410. package/dist/utils/output.js.map +1 -1
  411. package/dist/utils/package-json.d.ts +24 -0
  412. package/dist/utils/package-json.d.ts.map +1 -0
  413. package/dist/utils/package-json.js +49 -0
  414. package/dist/utils/package-json.js.map +1 -0
  415. package/dist/utils/population-wiring.d.ts +100 -0
  416. package/dist/utils/population-wiring.d.ts.map +1 -0
  417. package/dist/utils/population-wiring.js +98 -0
  418. package/dist/utils/population-wiring.js.map +1 -0
  419. package/dist/utils/project-root-policy.d.ts +20 -0
  420. package/dist/utils/project-root-policy.d.ts.map +1 -1
  421. package/dist/utils/project-root-policy.js +30 -0
  422. package/dist/utils/project-root-policy.js.map +1 -1
  423. package/dist/utils/projection-lenses.d.ts +98 -0
  424. package/dist/utils/projection-lenses.d.ts.map +1 -0
  425. package/dist/utils/projection-lenses.js +203 -0
  426. package/dist/utils/projection-lenses.js.map +1 -0
  427. package/dist/utils/projection-query.d.ts +324 -0
  428. package/dist/utils/projection-query.d.ts.map +1 -0
  429. package/dist/utils/projection-query.js +357 -0
  430. package/dist/utils/projection-query.js.map +1 -0
  431. package/dist/utils/projection-store.d.ts +335 -0
  432. package/dist/utils/projection-store.d.ts.map +1 -0
  433. package/dist/utils/projection-store.js +522 -0
  434. package/dist/utils/projection-store.js.map +1 -0
  435. package/dist/utils/relation-limits.d.ts +50 -0
  436. package/dist/utils/relation-limits.d.ts.map +1 -0
  437. package/dist/utils/relation-limits.js +50 -0
  438. package/dist/utils/relation-limits.js.map +1 -0
  439. package/dist/utils/repeatable-option.d.ts +37 -0
  440. package/dist/utils/repeatable-option.d.ts.map +1 -0
  441. package/dist/utils/repeatable-option.js +39 -0
  442. package/dist/utils/repeatable-option.js.map +1 -0
  443. package/dist/utils/resource-loader.d.ts +132 -2
  444. package/dist/utils/resource-loader.d.ts.map +1 -1
  445. package/dist/utils/resource-loader.js +288 -27
  446. package/dist/utils/resource-loader.js.map +1 -1
  447. package/dist/utils/root-argv.d.ts +53 -0
  448. package/dist/utils/root-argv.d.ts.map +1 -0
  449. package/dist/utils/root-argv.js +215 -0
  450. package/dist/utils/root-argv.js.map +1 -0
  451. package/dist/utils/run-integrity.d.ts +95 -0
  452. package/dist/utils/run-integrity.d.ts.map +1 -0
  453. package/dist/utils/run-integrity.js +102 -0
  454. package/dist/utils/run-integrity.js.map +1 -0
  455. package/dist/utils/skill-discovery.d.ts.map +1 -1
  456. package/dist/utils/skill-discovery.js +2 -1
  457. package/dist/utils/skill-discovery.js.map +1 -1
  458. package/dist/utils/skill-packaging-config.d.ts +63 -1
  459. package/dist/utils/skill-packaging-config.d.ts.map +1 -1
  460. package/dist/utils/skill-packaging-config.js +56 -1
  461. package/dist/utils/skill-packaging-config.js.map +1 -1
  462. package/dist/utils/sqlite-experimental-warning.d.ts +69 -0
  463. package/dist/utils/sqlite-experimental-warning.d.ts.map +1 -0
  464. package/dist/utils/sqlite-experimental-warning.js +144 -0
  465. package/dist/utils/sqlite-experimental-warning.js.map +1 -0
  466. package/dist/utils/url-redact.d.ts.map +1 -1
  467. package/dist/utils/url-redact.js +4 -6
  468. package/dist/utils/url-redact.js.map +1 -1
  469. package/dist/utils/user-context-scanner.d.ts +8 -0
  470. package/dist/utils/user-context-scanner.d.ts.map +1 -1
  471. package/dist/utils/user-context-scanner.js +4 -2
  472. package/dist/utils/user-context-scanner.js.map +1 -1
  473. package/dist/utils/validate-help-files.d.ts.map +1 -1
  474. package/dist/utils/validate-help-files.js +12 -6
  475. package/dist/utils/validate-help-files.js.map +1 -1
  476. package/dist/utils/vat-bin-path.d.ts +36 -0
  477. package/dist/utils/vat-bin-path.d.ts.map +1 -0
  478. package/dist/utils/vat-bin-path.js +48 -0
  479. package/dist/utils/vat-bin-path.js.map +1 -0
  480. package/dist/utils/verdict-helpers.d.ts +1 -1
  481. package/dist/utils/verdict-helpers.d.ts.map +1 -1
  482. package/dist/utils/verdict-helpers.js +1 -1
  483. package/dist/utils/verdict-helpers.js.map +1 -1
  484. package/dist/version.d.ts.map +1 -1
  485. package/dist/version.js +1 -3
  486. package/dist/version.js.map +1 -1
  487. package/docs/agent.md +2 -2
  488. package/docs/audit.md +141 -37
  489. package/docs/doctor.md +7 -6
  490. package/docs/index.md +40 -12
  491. package/docs/mcp.md +2 -2
  492. package/docs/rag.md +3 -2
  493. package/docs/resources.md +13 -3
  494. package/docs/skill-test.md +10 -9
  495. package/docs/skills.md +53 -69
  496. package/package.json +38 -27
  497. package/schemas/ard-emit.json +149 -0
  498. package/schemas/okf-validate.json +170 -0
  499. package/schemas/resources-check.json +229 -0
  500. package/schemas/skill-review.json +230 -0
  501. package/dist/commands/resources/command-helpers.d.ts +0 -5
  502. package/dist/commands/resources/command-helpers.d.ts.map +0 -1
  503. package/dist/commands/resources/command-helpers.js +0 -6
  504. package/dist/commands/resources/command-helpers.js.map +0 -1
@@ -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,19 +8,21 @@
9
8
  * - README.md should exist (warning)
10
9
  * - CHANGELOG.md should exist (warning)
11
10
  */
12
- import { existsSync, readdirSync } from 'node:fs';
13
- import { calculateValidationStatus, countBySeverity, } from '@vibe-agent-toolkit/agent-schema';
11
+ import { existsSync, readdirSync, statSync } from 'node:fs';
14
12
  import { validateMarketplace, validateSkill, } from '@vibe-agent-toolkit/agent-skills';
15
13
  import { validatePlugin } from '@vibe-agent-toolkit/claude-marketplace';
16
- import { findProjectRoot, issueLocation, safePath } from '@vibe-agent-toolkit/utils';
14
+ import { calculateValidationStatus, countBySeverity, } from '@vibe-agent-toolkit/schema';
15
+ import { direntKindFollowingSync, findProjectRoot, isPathAbsentError, issueLocation, isVatError, normalizePath, PathEscapesRootError, relativeEscapesRoot, safePath, toForwardSlash, toForwardSlashAnyPlatform } from '@vibe-agent-toolkit/utils';
17
16
  import { Command } from 'commander';
18
- import { formatDuration, handleCommandError } from '../../../utils/command-error.js';
17
+ import { formatDuration, reportCommandError } from '../../../utils/command-error.js';
19
18
  import { loadConfig } from '../../../utils/config-loader.js';
20
19
  import { summarizeFindings } from '../../../utils/issue-rendering.js';
21
20
  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
+ import { finishCommand } from '../../phase-utils.js';
25
26
  /**
26
27
  * Check for required/recommended files in the marketplace root.
27
28
  */
@@ -45,29 +46,171 @@ function checkMarketplaceFiles(marketplacePath) {
45
46
  }
46
47
  return issues;
47
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
+ }
48
91
  /**
49
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.
50
100
  */
51
- async function validatePluginSkills(pluginDir, marketplacePath) {
101
+ async function validatePluginSkills(pluginDir, marketplacePath, boundary, validation) {
52
102
  const skillsDir = safePath.join(pluginDir, 'skills');
53
- if (!existsSync(skillsDir))
103
+ if (!existsSync(skillsDir) || !boundary.contains(skillsDir))
54
104
  return [];
55
105
  const issues = [];
56
106
  const skillEntries = readdirSync(skillsDir, { withFileTypes: true });
57
107
  for (const skillEntry of skillEntries) {
58
- if (!skillEntry.isDirectory())
59
- continue;
60
108
  const skillDir = safePath.join(skillsDir, skillEntry.name);
109
+ if (!isDirectory(skillDir) || !boundary.contains(skillDir))
110
+ continue;
61
111
  const skillMdPath = safePath.join(skillDir, 'SKILL.md');
62
- if (!existsSync(skillMdPath))
112
+ if (!existsSync(skillMdPath) || !boundary.contains(skillMdPath))
63
113
  continue;
64
- 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 });
65
117
  issues.push(...skillResult.issues);
66
118
  }
67
119
  return issues;
68
120
  }
69
121
  /**
70
- * 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, toForwardSlashAnyPlatform(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.
71
214
  *
72
215
  * `validation` is the governing project's severity map (see
73
216
  * {@link resolveProjectValidationConfig}). It is applied to each plugin result
@@ -78,36 +221,98 @@ async function validatePluginSkills(pluginDir, marketplacePath) {
78
221
  * `plugins[]`, or a plugin `status: warning` above an issue list that no longer
79
222
  * contains a warning.
80
223
  */
81
- async function validatePlugins(marketplacePath, validation) {
82
- const pluginsDir = safePath.join(marketplacePath, 'plugins');
83
- if (!existsSync(pluginsDir))
84
- return { pluginResults: [], issues: [] };
224
+ async function validateDeclaredPlugins(marketplacePath, declared, validation) {
85
225
  const pluginResults = [];
86
226
  const issues = [];
87
- const entries = readdirSync(pluginsDir, { withFileTypes: true });
88
- for (const entry of entries) {
89
- 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)
238
+ continue;
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 });
90
246
  continue;
91
- const pluginDir = safePath.join(pluginsDir, entry.name);
92
- // `locationRoot` is not optional here even though the parameter is: omitted,
93
- // `validatePlugin` anchors at the plugin's own discovered project root, so
94
- // its findings land in a different coordinate system than the marketplace
95
- // and skill findings beside them — and every plugin's manifest collapses to
96
- // the same `.claude-plugin/plugin.json`.
97
- const rawResult = await validatePlugin(pluginDir, { strict: true, locationRoot: marketplacePath });
98
- const pluginIssues = resolveIssueSeverity(rawResult.issues, validation);
99
- const pluginResult = {
100
- ...rawResult,
101
- issues: pluginIssues,
102
- status: calculateValidationStatus(pluginIssues),
103
- issueCounts: countBySeverity(pluginIssues),
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([]),
104
281
  };
105
- pluginResults.push(pluginResult);
106
- issues.push(...pluginIssues);
107
- const skillIssues = await validatePluginSkills(pluginDir, marketplacePath);
108
- issues.push(...resolveIssueSeverity(skillIssues, validation));
109
282
  }
110
- 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));
111
316
  }
112
317
  /**
113
318
  * The `validation` config governing findings about `marketplacePath`.
@@ -173,10 +378,13 @@ function resolveProjectValidationConfig(marketplacePath, logger) {
173
378
  *
174
379
  * Severity resolution is likewise INSIDE this function rather than a step the
175
380
  * command adds after it. Its absence is the whole defect this addressed, and a
176
- * command-body step is one a caller can forget: with it here, `status`, the
177
- * exit code, the flat `issues` list and `plugins[].issues` all derive from a
178
- * single resolved set, and the smallest testable entry point is the one that
179
- * 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.
180
388
  *
181
389
  * Exported so that contract is testable against a real marketplace without a
182
390
  * CLI spawn; the command adds only the exit code and the emission.
@@ -200,24 +408,20 @@ export async function collectMarketplaceFindings(marketplacePath, logger) {
200
408
  return {
201
409
  marketplaceResult,
202
410
  pluginResults: [],
411
+ undeclared: [],
412
+ refused: [],
203
413
  issues: [...marketplaceResult.issues],
204
- status: 'error',
205
414
  };
206
415
  }
207
416
  const validation = resolveProjectValidationConfig(marketplacePath, logger);
208
417
  const fileIssues = checkMarketplaceFiles(marketplacePath);
209
- const { pluginResults, issues: pluginIssues } = await validatePlugins(marketplacePath, validation);
418
+ const { pluginResults, undeclared, refused, issues: pluginIssues } = await validateDeclaredPlugins(marketplacePath, marketplaceResult.metadata?.localPluginSources ?? [], validation);
210
419
  const issues = [
211
420
  ...resolveIssueSeverity(marketplaceResult.issues, validation),
212
421
  ...resolveIssueSeverity(fileIssues, validation),
213
422
  ...pluginIssues,
214
423
  ];
215
- return {
216
- marketplaceResult,
217
- pluginResults,
218
- issues,
219
- status: calculateValidationStatus(issues),
220
- };
424
+ return { marketplaceResult, pluginResults, undeclared, refused, issues };
221
425
  }
222
426
  /**
223
427
  * Group key for findings that carry no `location` at all.
@@ -277,19 +481,40 @@ export function summarizeIssuesByLocation(issues) {
277
481
  * against a real marketplace in `payload-path-coordinates.test.ts`, not here.
278
482
  */
279
483
  export function buildMarketplaceValidateReport(input) {
280
- const { status, root, marketplace, pluginResults, issues, issueCounts, summary, duration, verbose } = input;
281
- const plugins = pluginResults.map(r => ({
282
- path: r.path,
283
- status: r.status,
284
- metadata: r.metadata,
285
- 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,
286
497
  }));
287
498
  return {
288
- 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),
289
503
  // Stated once, and the only absolute path in the document.
290
504
  root,
291
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,
292
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],
293
518
  // One row per inspected asset by default; the flat per-issue list under
294
519
  // `--verbose`. Either way every `location` stays relative to `root` above.
295
520
  issues: verbose === true ? issues : summarizeIssuesByLocation(issues),
@@ -297,41 +522,132 @@ export function buildMarketplaceValidateReport(input) {
297
522
  // severity, so an info-only run is `success` and the info would otherwise
298
523
  // be unreported.
299
524
  issueCounts,
300
- summary,
525
+ summary: bailSummary
526
+ ?? `${issueCounts.errors} error(s), ${issueCounts.warnings} warning(s), ${issueCounts.info} info`,
301
527
  duration,
302
528
  };
303
529
  }
304
- async function marketplaceValidateCommand(targetPath, options) {
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
+ }
601
+ /**
602
+ * Validate a marketplace and hand back its document and exit code, printing
603
+ * nothing on stdout.
604
+ *
605
+ * The phase entry point for `vat verify`, which runs this once per configured
606
+ * marketplace IN ITS OWN PROCESS. Progress and findings still go to stderr as
607
+ * they always did; only the decision of where the document lands moves to the
608
+ * caller — stdout for a command-line run, `phases[].report` for an orchestrated
609
+ * one.
610
+ */
611
+ export async function runMarketplaceValidatePhase(targetPath, options) {
305
612
  const logger = createLogger(options.debug ? { debug: true } : {});
306
613
  const startTime = Date.now();
307
614
  try {
308
615
  const marketplacePath = safePath.resolve(targetPath ?? '.');
309
616
  logger.info(`Validating marketplace: ${marketplacePath}`);
310
- 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.
311
621
  const bailed = marketplaceResult.status === 'error';
312
- const issueCounts = countBySeverity(issues);
313
- writeYamlOutput(buildMarketplaceValidateReport({
314
- status,
622
+ const document = buildMarketplaceValidateReport({
315
623
  root: marketplacePath,
316
624
  marketplace: marketplaceResult.metadata,
317
625
  pluginResults,
626
+ undeclared,
627
+ refused,
318
628
  issues,
319
- issueCounts,
320
- // A bailed run reports WHY it stopped; a completed run reports what it
321
- // found. Both emit through the one builder, so the document has a
322
- // single shape either way.
323
- summary: bailed
324
- ? marketplaceResult.summary
325
- : `${issueCounts.errors} error(s), ${issueCounts.warnings} warning(s), ${issueCounts.info} info`,
629
+ ...(bailed ? { bailSummary: marketplaceResult.summary } : {}),
326
630
  duration: formatDuration(Date.now() - startTime),
327
631
  verbose: options.verbose === true,
328
- }));
329
- process.exit(status === 'error' ? 1 : 0);
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 };
330
637
  }
331
638
  catch (error) {
332
- handleCommandError(error, logger, startTime, 'MarketplaceValidate');
639
+ return {
640
+ document: reportCommandError(error, logger, startTime, 'MarketplaceValidate'),
641
+ exitCode: 2,
642
+ failed: true,
643
+ };
333
644
  }
334
645
  }
646
+ async function marketplaceValidateCommand(targetPath, options) {
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);
650
+ }
335
651
  export function createMarketplaceValidateCommand() {
336
652
  const command = new Command('validate');
337
653
  command
@@ -350,6 +666,25 @@ Description:
350
666
  Output (YAML on stdout):
351
667
  root: the marketplace directory — every location below is relative to it
352
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).
353
688
 
354
689
  issues: one row per inspected location, carrying only that location's counts
355
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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"}