@vibe-agent-toolkit/cli 0.2.0-rc.7 → 0.2.0-rc.9

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 (395) hide show
  1. package/README.md +0 -1
  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 +5 -2
  6. package/dist/bin.js.map +1 -1
  7. package/dist/commands/agent/build.d.ts.map +1 -1
  8. package/dist/commands/agent/build.js +2 -1
  9. package/dist/commands/agent/build.js.map +1 -1
  10. package/dist/commands/agent/import.d.ts.map +1 -1
  11. package/dist/commands/agent/import.js +3 -2
  12. package/dist/commands/agent/import.js.map +1 -1
  13. package/dist/commands/agent/install-path.d.ts +36 -0
  14. package/dist/commands/agent/install-path.d.ts.map +1 -0
  15. package/dist/commands/agent/install-path.js +44 -0
  16. package/dist/commands/agent/install-path.js.map +1 -0
  17. package/dist/commands/agent/install.d.ts.map +1 -1
  18. package/dist/commands/agent/install.js +22 -10
  19. package/dist/commands/agent/install.js.map +1 -1
  20. package/dist/commands/agent/installed.d.ts.map +1 -1
  21. package/dist/commands/agent/installed.js +22 -12
  22. package/dist/commands/agent/installed.js.map +1 -1
  23. package/dist/commands/agent/list.d.ts.map +1 -1
  24. package/dist/commands/agent/list.js +2 -1
  25. package/dist/commands/agent/list.js.map +1 -1
  26. package/dist/commands/agent/run.d.ts.map +1 -1
  27. package/dist/commands/agent/run.js +2 -1
  28. package/dist/commands/agent/run.js.map +1 -1
  29. package/dist/commands/agent/uninstall.d.ts.map +1 -1
  30. package/dist/commands/agent/uninstall.js +13 -6
  31. package/dist/commands/agent/uninstall.js.map +1 -1
  32. package/dist/commands/agent/validate.d.ts.map +1 -1
  33. package/dist/commands/agent/validate.js +3 -2
  34. package/dist/commands/agent/validate.js.map +1 -1
  35. package/dist/commands/ard/emit.d.ts +72 -23
  36. package/dist/commands/ard/emit.d.ts.map +1 -1
  37. package/dist/commands/ard/emit.js +109 -56
  38. package/dist/commands/ard/emit.js.map +1 -1
  39. package/dist/commands/ard/index.d.ts +1 -1
  40. package/dist/commands/ard/index.d.ts.map +1 -1
  41. package/dist/commands/ard/index.js +4 -3
  42. package/dist/commands/ard/index.js.map +1 -1
  43. package/dist/commands/audit/distributed-tree.d.ts.map +1 -1
  44. package/dist/commands/audit/distributed-tree.js +9 -6
  45. package/dist/commands/audit/distributed-tree.js.map +1 -1
  46. package/dist/commands/audit/provenance.d.ts.map +1 -1
  47. package/dist/commands/audit/provenance.js +4 -3
  48. package/dist/commands/audit/provenance.js.map +1 -1
  49. package/dist/commands/audit/scan-population.d.ts +158 -0
  50. package/dist/commands/audit/scan-population.d.ts.map +1 -0
  51. package/dist/commands/audit/scan-population.js +292 -0
  52. package/dist/commands/audit/scan-population.js.map +1 -0
  53. package/dist/commands/audit-settings.d.ts.map +1 -1
  54. package/dist/commands/audit-settings.js +6 -5
  55. package/dist/commands/audit-settings.js.map +1 -1
  56. package/dist/commands/audit.d.ts +16 -14
  57. package/dist/commands/audit.d.ts.map +1 -1
  58. package/dist/commands/audit.js +304 -389
  59. package/dist/commands/audit.js.map +1 -1
  60. package/dist/commands/build.d.ts.map +1 -1
  61. package/dist/commands/build.js +25 -24
  62. package/dist/commands/build.js.map +1 -1
  63. package/dist/commands/cache/clear.d.ts +17 -3
  64. package/dist/commands/cache/clear.d.ts.map +1 -1
  65. package/dist/commands/cache/clear.js +34 -13
  66. package/dist/commands/cache/clear.js.map +1 -1
  67. package/dist/commands/cache/index.d.ts.map +1 -1
  68. package/dist/commands/cache/index.js +19 -10
  69. package/dist/commands/cache/index.js.map +1 -1
  70. package/dist/commands/claude/context.d.ts +2 -2
  71. package/dist/commands/claude/context.d.ts.map +1 -1
  72. package/dist/commands/claude/context.js +7 -6
  73. package/dist/commands/claude/context.js.map +1 -1
  74. package/dist/commands/claude/index.d.ts +12 -11
  75. package/dist/commands/claude/index.d.ts.map +1 -1
  76. package/dist/commands/claude/index.js +14 -16
  77. package/dist/commands/claude/index.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 +22 -12
  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.map +1 -1
  95. package/dist/commands/claude/marketplace/validate.js +26 -16
  96. package/dist/commands/claude/marketplace/validate.js.map +1 -1
  97. package/dist/commands/claude/org/api-keys.d.ts +0 -3
  98. package/dist/commands/claude/org/api-keys.d.ts.map +1 -1
  99. package/dist/commands/claude/org/api-keys.js +2 -1
  100. package/dist/commands/claude/org/api-keys.js.map +1 -1
  101. package/dist/commands/claude/org/helpers.d.ts +17 -22
  102. package/dist/commands/claude/org/helpers.d.ts.map +1 -1
  103. package/dist/commands/claude/org/helpers.js +6 -22
  104. package/dist/commands/claude/org/helpers.js.map +1 -1
  105. package/dist/commands/claude/org/invites.d.ts +0 -3
  106. package/dist/commands/claude/org/invites.d.ts.map +1 -1
  107. package/dist/commands/claude/org/invites.js +3 -2
  108. package/dist/commands/claude/org/invites.js.map +1 -1
  109. package/dist/commands/claude/org/skills.d.ts +19 -1
  110. package/dist/commands/claude/org/skills.d.ts.map +1 -1
  111. package/dist/commands/claude/org/skills.js +147 -111
  112. package/dist/commands/claude/org/skills.js.map +1 -1
  113. package/dist/commands/claude/org/users.d.ts +0 -3
  114. package/dist/commands/claude/org/users.d.ts.map +1 -1
  115. package/dist/commands/claude/org/users.js +3 -2
  116. package/dist/commands/claude/org/users.js.map +1 -1
  117. package/dist/commands/claude/org/workspaces.d.ts +0 -3
  118. package/dist/commands/claude/org/workspaces.d.ts.map +1 -1
  119. package/dist/commands/claude/org/workspaces.js +6 -5
  120. package/dist/commands/claude/org/workspaces.js.map +1 -1
  121. package/dist/commands/claude/plugin/build.d.ts.map +1 -1
  122. package/dist/commands/claude/plugin/build.js +23 -52
  123. package/dist/commands/claude/plugin/build.js.map +1 -1
  124. package/dist/commands/claude/plugin/helpers.d.ts.map +1 -1
  125. package/dist/commands/claude/plugin/helpers.js +0 -6
  126. package/dist/commands/claude/plugin/helpers.js.map +1 -1
  127. package/dist/commands/claude/plugin/install.d.ts +12 -0
  128. package/dist/commands/claude/plugin/install.d.ts.map +1 -1
  129. package/dist/commands/claude/plugin/install.js +71 -60
  130. package/dist/commands/claude/plugin/install.js.map +1 -1
  131. package/dist/commands/claude/plugin/list.d.ts.map +1 -1
  132. package/dist/commands/claude/plugin/list.js +3 -2
  133. package/dist/commands/claude/plugin/list.js.map +1 -1
  134. package/dist/commands/claude/plugin/plugin-changelog.d.ts.map +1 -1
  135. package/dist/commands/claude/plugin/plugin-changelog.js +0 -2
  136. package/dist/commands/claude/plugin/plugin-changelog.js.map +1 -1
  137. package/dist/commands/claude/plugin/plugin-files.d.ts.map +1 -1
  138. package/dist/commands/claude/plugin/plugin-files.js +3 -6
  139. package/dist/commands/claude/plugin/plugin-files.js.map +1 -1
  140. package/dist/commands/claude/plugin/plugin-validators.d.ts.map +1 -1
  141. package/dist/commands/claude/plugin/plugin-validators.js +3 -6
  142. package/dist/commands/claude/plugin/plugin-validators.js.map +1 -1
  143. package/dist/commands/claude/plugin/tree-copy.d.ts +2 -1
  144. package/dist/commands/claude/plugin/tree-copy.d.ts.map +1 -1
  145. package/dist/commands/claude/plugin/tree-copy.js +15 -14
  146. package/dist/commands/claude/plugin/tree-copy.js.map +1 -1
  147. package/dist/commands/claude/plugin/uninstall.d.ts.map +1 -1
  148. package/dist/commands/claude/plugin/uninstall.js +4 -4
  149. package/dist/commands/claude/plugin/uninstall.js.map +1 -1
  150. package/dist/commands/consistency-check.d.ts +17 -15
  151. package/dist/commands/consistency-check.d.ts.map +1 -1
  152. package/dist/commands/consistency-check.js +149 -104
  153. package/dist/commands/consistency-check.js.map +1 -1
  154. package/dist/commands/corpus/report.d.ts.map +1 -1
  155. package/dist/commands/corpus/report.js +1 -2
  156. package/dist/commands/corpus/report.js.map +1 -1
  157. package/dist/commands/corpus/runner.d.ts.map +1 -1
  158. package/dist/commands/corpus/runner.js +2 -6
  159. package/dist/commands/corpus/runner.js.map +1 -1
  160. package/dist/commands/corpus/scan.d.ts.map +1 -1
  161. package/dist/commands/corpus/scan.js +2 -3
  162. package/dist/commands/corpus/scan.js.map +1 -1
  163. package/dist/commands/corpus/seed.d.ts +4 -4
  164. package/dist/commands/corpus/seed.d.ts.map +1 -1
  165. package/dist/commands/corpus/seed.js +1 -3
  166. package/dist/commands/corpus/seed.js.map +1 -1
  167. package/dist/commands/doctor.d.ts.map +1 -1
  168. package/dist/commands/doctor.js +55 -37
  169. package/dist/commands/doctor.js.map +1 -1
  170. package/dist/commands/inventory.d.ts.map +1 -1
  171. package/dist/commands/inventory.js +6 -7
  172. package/dist/commands/inventory.js.map +1 -1
  173. package/dist/commands/mcp/list-collections.d.ts.map +1 -1
  174. package/dist/commands/mcp/list-collections.js +2 -1
  175. package/dist/commands/mcp/list-collections.js.map +1 -1
  176. package/dist/commands/mcp/serve.d.ts.map +1 -1
  177. package/dist/commands/mcp/serve.js +3 -2
  178. package/dist/commands/mcp/serve.js.map +1 -1
  179. package/dist/commands/okf/index.d.ts.map +1 -1
  180. package/dist/commands/okf/index.js +14 -2
  181. package/dist/commands/okf/index.js.map +1 -1
  182. package/dist/commands/okf/validate.d.ts +157 -48
  183. package/dist/commands/okf/validate.d.ts.map +1 -1
  184. package/dist/commands/okf/validate.js +109 -76
  185. package/dist/commands/okf/validate.js.map +1 -1
  186. package/dist/commands/phase-utils.d.ts +11 -10
  187. package/dist/commands/phase-utils.d.ts.map +1 -1
  188. package/dist/commands/phase-utils.js +30 -14
  189. package/dist/commands/phase-utils.js.map +1 -1
  190. package/dist/commands/positional-args.d.ts.map +1 -1
  191. package/dist/commands/positional-args.js +2 -1
  192. package/dist/commands/positional-args.js.map +1 -1
  193. package/dist/commands/rag/clear-command.d.ts.map +1 -1
  194. package/dist/commands/rag/clear-command.js +2 -1
  195. package/dist/commands/rag/clear-command.js.map +1 -1
  196. package/dist/commands/rag/index-command.d.ts.map +1 -1
  197. package/dist/commands/rag/index-command.js +4 -1
  198. package/dist/commands/rag/index-command.js.map +1 -1
  199. package/dist/commands/rag/query-command.d.ts.map +1 -1
  200. package/dist/commands/rag/query-command.js +2 -1
  201. package/dist/commands/rag/query-command.js.map +1 -1
  202. package/dist/commands/rag/stats-command.d.ts.map +1 -1
  203. package/dist/commands/rag/stats-command.js +2 -1
  204. package/dist/commands/rag/stats-command.js.map +1 -1
  205. package/dist/commands/resources/check-progress.d.ts +6 -0
  206. package/dist/commands/resources/check-progress.d.ts.map +1 -1
  207. package/dist/commands/resources/check-progress.js +15 -4
  208. package/dist/commands/resources/check-progress.js.map +1 -1
  209. package/dist/commands/resources/check-supervisor.d.ts.map +1 -1
  210. package/dist/commands/resources/check-supervisor.js +14 -7
  211. package/dist/commands/resources/check-supervisor.js.map +1 -1
  212. package/dist/commands/resources/check.d.ts +315 -205
  213. package/dist/commands/resources/check.d.ts.map +1 -1
  214. package/dist/commands/resources/check.js +368 -327
  215. package/dist/commands/resources/check.js.map +1 -1
  216. package/dist/commands/resources/index.d.ts.map +1 -1
  217. package/dist/commands/resources/index.js +159 -39
  218. package/dist/commands/resources/index.js.map +1 -1
  219. package/dist/commands/resources/query.d.ts +2 -2
  220. package/dist/commands/resources/query.d.ts.map +1 -1
  221. package/dist/commands/resources/query.js +24 -18
  222. package/dist/commands/resources/query.js.map +1 -1
  223. package/dist/commands/resources/scan.d.ts.map +1 -1
  224. package/dist/commands/resources/scan.js +4 -8
  225. package/dist/commands/resources/scan.js.map +1 -1
  226. package/dist/commands/resources/validate.d.ts +1 -1
  227. package/dist/commands/resources/validate.d.ts.map +1 -1
  228. package/dist/commands/resources/validate.js +0 -1
  229. package/dist/commands/resources/validate.js.map +1 -1
  230. package/dist/commands/skill/review-checklist.d.ts +3 -2
  231. package/dist/commands/skill/review-checklist.d.ts.map +1 -1
  232. package/dist/commands/skill/review-checklist.js +4 -2
  233. package/dist/commands/skill/review-checklist.js.map +1 -1
  234. package/dist/commands/skill/review.d.ts +247 -0
  235. package/dist/commands/skill/review.d.ts.map +1 -1
  236. package/dist/commands/skill/review.js +90 -60
  237. package/dist/commands/skill/review.js.map +1 -1
  238. package/dist/commands/skill/test/configure.d.ts.map +1 -1
  239. package/dist/commands/skill/test/configure.js +0 -1
  240. package/dist/commands/skill/test/configure.js.map +1 -1
  241. package/dist/commands/skill/test/run.d.ts +12 -6
  242. package/dist/commands/skill/test/run.d.ts.map +1 -1
  243. package/dist/commands/skill/test/run.js +120 -65
  244. package/dist/commands/skill/test/run.js.map +1 -1
  245. package/dist/commands/skills/build.d.ts +83 -3
  246. package/dist/commands/skills/build.d.ts.map +1 -1
  247. package/dist/commands/skills/build.js +162 -40
  248. package/dist/commands/skills/build.js.map +1 -1
  249. package/dist/commands/skills/install.d.ts +2 -1
  250. package/dist/commands/skills/install.d.ts.map +1 -1
  251. package/dist/commands/skills/install.js +20 -30
  252. package/dist/commands/skills/install.js.map +1 -1
  253. package/dist/commands/skills/list.d.ts.map +1 -1
  254. package/dist/commands/skills/list.js +14 -18
  255. package/dist/commands/skills/list.js.map +1 -1
  256. package/dist/commands/skills/package.d.ts +1 -1
  257. package/dist/commands/skills/package.d.ts.map +1 -1
  258. package/dist/commands/skills/package.js +6 -8
  259. package/dist/commands/skills/package.js.map +1 -1
  260. package/dist/commands/skills/scope-guard.d.ts.map +1 -1
  261. package/dist/commands/skills/scope-guard.js +2 -4
  262. package/dist/commands/skills/scope-guard.js.map +1 -1
  263. package/dist/commands/skills/shared.d.ts.map +1 -1
  264. package/dist/commands/skills/shared.js +2 -4
  265. package/dist/commands/skills/shared.js.map +1 -1
  266. package/dist/commands/skills/skill-discovery.d.ts +15 -13
  267. package/dist/commands/skills/skill-discovery.d.ts.map +1 -1
  268. package/dist/commands/skills/skill-discovery.js +23 -5
  269. package/dist/commands/skills/skill-discovery.js.map +1 -1
  270. package/dist/commands/skills/source-resolvers.d.ts +15 -0
  271. package/dist/commands/skills/source-resolvers.d.ts.map +1 -1
  272. package/dist/commands/skills/source-resolvers.js +25 -4
  273. package/dist/commands/skills/source-resolvers.js.map +1 -1
  274. package/dist/commands/validate.d.ts +1 -1
  275. package/dist/commands/validate.d.ts.map +1 -1
  276. package/dist/commands/validate.js +39 -14
  277. package/dist/commands/validate.js.map +1 -1
  278. package/dist/commands/verify.d.ts +17 -5
  279. package/dist/commands/verify.d.ts.map +1 -1
  280. package/dist/commands/verify.js +161 -104
  281. package/dist/commands/verify.js.map +1 -1
  282. package/dist/index.d.ts +0 -1
  283. package/dist/index.d.ts.map +1 -1
  284. package/dist/index.js +5 -1
  285. package/dist/index.js.map +1 -1
  286. package/dist/report-schemas.d.ts +45 -0
  287. package/dist/report-schemas.d.ts.map +1 -0
  288. package/dist/report-schemas.js +100 -0
  289. package/dist/report-schemas.js.map +1 -0
  290. package/dist/skill-resolution/classify.js +2 -2
  291. package/dist/skill-resolution/classify.js.map +1 -1
  292. package/dist/skill-resolution/resolve-skill-reference.d.ts.map +1 -1
  293. package/dist/skill-resolution/resolve-skill-reference.js +50 -55
  294. package/dist/skill-resolution/resolve-skill-reference.js.map +1 -1
  295. package/dist/utils/agent-discovery.d.ts.map +1 -1
  296. package/dist/utils/agent-discovery.js +22 -11
  297. package/dist/utils/agent-discovery.js.map +1 -1
  298. package/dist/utils/agent-runner.d.ts.map +1 -1
  299. package/dist/utils/agent-runner.js +0 -1
  300. package/dist/utils/agent-runner.js.map +1 -1
  301. package/dist/utils/claude-context-lens.d.ts +34 -0
  302. package/dist/utils/claude-context-lens.d.ts.map +1 -0
  303. package/dist/utils/claude-context-lens.js +39 -0
  304. package/dist/utils/claude-context-lens.js.map +1 -0
  305. package/dist/utils/command-error.d.ts +63 -62
  306. package/dist/utils/command-error.d.ts.map +1 -1
  307. package/dist/utils/command-error.js +80 -76
  308. package/dist/utils/command-error.js.map +1 -1
  309. package/dist/utils/config-loader.d.ts +2 -1
  310. package/dist/utils/config-loader.d.ts.map +1 -1
  311. package/dist/utils/config-loader.js +3 -6
  312. package/dist/utils/config-loader.js.map +1 -1
  313. package/dist/utils/corpus-target.d.ts +5 -27
  314. package/dist/utils/corpus-target.d.ts.map +1 -1
  315. package/dist/utils/corpus-target.js +7 -33
  316. package/dist/utils/corpus-target.js.map +1 -1
  317. package/dist/utils/help-loader.d.ts.map +1 -1
  318. package/dist/utils/help-loader.js +0 -1
  319. package/dist/utils/help-loader.js.map +1 -1
  320. package/dist/utils/issue-rendering.d.ts +2 -2
  321. package/dist/utils/issue-rendering.js +2 -2
  322. package/dist/utils/optional-backend.d.ts.map +1 -1
  323. package/dist/utils/optional-backend.js +2 -1
  324. package/dist/utils/optional-backend.js.map +1 -1
  325. package/dist/utils/output.d.ts +9 -0
  326. package/dist/utils/output.d.ts.map +1 -1
  327. package/dist/utils/output.js +16 -0
  328. package/dist/utils/output.js.map +1 -1
  329. package/dist/utils/package-json.d.ts +24 -0
  330. package/dist/utils/package-json.d.ts.map +1 -0
  331. package/dist/utils/package-json.js +49 -0
  332. package/dist/utils/package-json.js.map +1 -0
  333. package/dist/utils/project-root-policy.d.ts.map +1 -1
  334. package/dist/utils/project-root-policy.js +0 -2
  335. package/dist/utils/project-root-policy.js.map +1 -1
  336. package/dist/utils/projection-lenses.d.ts +98 -0
  337. package/dist/utils/projection-lenses.d.ts.map +1 -0
  338. package/dist/utils/projection-lenses.js +203 -0
  339. package/dist/utils/projection-lenses.js.map +1 -0
  340. package/dist/utils/projection-query.d.ts +38 -14
  341. package/dist/utils/projection-query.d.ts.map +1 -1
  342. package/dist/utils/projection-query.js +78 -17
  343. package/dist/utils/projection-query.js.map +1 -1
  344. package/dist/utils/projection-store.d.ts +61 -42
  345. package/dist/utils/projection-store.d.ts.map +1 -1
  346. package/dist/utils/projection-store.js +155 -59
  347. package/dist/utils/projection-store.js.map +1 -1
  348. package/dist/utils/relation-limits.d.ts +50 -0
  349. package/dist/utils/relation-limits.d.ts.map +1 -0
  350. package/dist/utils/relation-limits.js +50 -0
  351. package/dist/utils/relation-limits.js.map +1 -0
  352. package/dist/utils/resource-loader.js +2 -2
  353. package/dist/utils/resource-loader.js.map +1 -1
  354. package/dist/utils/skill-discovery.d.ts.map +1 -1
  355. package/dist/utils/skill-discovery.js +2 -1
  356. package/dist/utils/skill-discovery.js.map +1 -1
  357. package/dist/utils/skill-packaging-config.d.ts +63 -1
  358. package/dist/utils/skill-packaging-config.d.ts.map +1 -1
  359. package/dist/utils/skill-packaging-config.js +56 -1
  360. package/dist/utils/skill-packaging-config.js.map +1 -1
  361. package/dist/utils/url-redact.d.ts.map +1 -1
  362. package/dist/utils/url-redact.js +4 -6
  363. package/dist/utils/url-redact.js.map +1 -1
  364. package/dist/utils/user-context-scanner.d.ts.map +1 -1
  365. package/dist/utils/user-context-scanner.js +0 -2
  366. package/dist/utils/user-context-scanner.js.map +1 -1
  367. package/dist/utils/validate-help-files.d.ts.map +1 -1
  368. package/dist/utils/validate-help-files.js +3 -4
  369. package/dist/utils/validate-help-files.js.map +1 -1
  370. package/dist/utils/vat-bin-path.d.ts.map +1 -1
  371. package/dist/utils/vat-bin-path.js +0 -1
  372. package/dist/utils/vat-bin-path.js.map +1 -1
  373. package/dist/version.d.ts.map +1 -1
  374. package/dist/version.js +1 -3
  375. package/dist/version.js.map +1 -1
  376. package/docs/audit.md +44 -53
  377. package/docs/doctor.md +1 -0
  378. package/docs/index.md +18 -10
  379. package/docs/rag.md +0 -1
  380. package/docs/resources.md +0 -1
  381. package/docs/skill-test.md +10 -9
  382. package/docs/skills.md +6 -7
  383. package/package.json +23 -28
  384. package/schemas/ard-emit.json +149 -0
  385. package/schemas/okf-validate.json +170 -0
  386. package/schemas/resources-check.json +229 -0
  387. package/schemas/skill-review.json +230 -0
  388. package/dist/commands/claude/budget.d.ts +0 -170
  389. package/dist/commands/claude/budget.d.ts.map +0 -1
  390. package/dist/commands/claude/budget.js +0 -464
  391. package/dist/commands/claude/budget.js.map +0 -1
  392. package/dist/utils/context-budget-issues.d.ts +0 -108
  393. package/dist/utils/context-budget-issues.d.ts.map +0 -1
  394. package/dist/utils/context-budget-issues.js +0 -280
  395. package/dist/utils/context-budget-issues.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"help-loader.d.ts","sourceRoot":"","sources":["../../src/utils/help-loader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAyBxD;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEnD"}
1
+ {"version":3,"file":"help-loader.d.ts","sourceRoot":"","sources":["../../src/utils/help-loader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAwBxD;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEnD"}
@@ -21,7 +21,6 @@ export function loadVerboseHelp(section) {
21
21
  const filename = section ? `${section}.md` : 'index.md';
22
22
  const helpPath = safePath.join(packageRoot, 'docs', filename);
23
23
  try {
24
- // eslint-disable-next-line security/detect-non-literal-fs-filename -- path is constructed from known safe components
25
24
  const content = readFileSync(helpPath, 'utf-8');
26
25
  return content;
27
26
  }
@@ -1 +1 @@
1
- {"version":3,"file":"help-loader.js","sourceRoot":"","sources":["../../src/utils/help-loader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAErD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,OAAgB;IAC9C,mCAAmC;IACnC,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAEtD,wCAAwC;IACxC,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC;IACxD,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAE9D,IAAI,CAAC;QACH,qHAAqH;QACrH,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAChD,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,sCAAsC;QACtC,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5E,OAAO;;0BAEe,QAAQ;;EAEhC,YAAY;;;CAGb,CAAC;IACA,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,aAAa,CAAC,OAAe;IAC3C,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC;AACrE,CAAC"}
1
+ {"version":3,"file":"help-loader.js","sourceRoot":"","sources":["../../src/utils/help-loader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAErD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,OAAgB;IAC9C,mCAAmC;IACnC,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAEtD,wCAAwC;IACxC,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC;IACxD,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAE9D,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAChD,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,sCAAsC;QACtC,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5E,OAAO;;0BAEe,QAAQ;;EAEhC,YAAY;;;CAGb,CAAC;IACA,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,aAAa,CAAC,OAAe;IAC3C,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC;AACrE,CAAC"}
@@ -177,8 +177,8 @@ export declare function formatCollapsedFindingsHint(collapsed: number, report: s
177
177
  * is not: `files.dependencies` carries only what the link-graph walk discovered, so
178
178
  * every file `files:` copied in — each glob match, plus any explicit entry the walk
179
179
  * had not already bundled — is absent from the total. A bundle holding SKILL.md, one
180
- * linked doc and one declared artifact prints `2 files`. That undercount is issue
181
- * #177 and is deliberately NOT patched here; this wording is only the part that can
180
+ * linked doc and one declared artifact prints `2 files`. That undercount is a
181
+ * report-shape defect and is deliberately NOT patched here; this wording is only the part that can
182
182
  * be made true today, so nobody reads the number as an inventory of the output.
183
183
  *
184
184
  * The `+ 1` is the bundle's root `SKILL.md`, which `files.dependencies` does not
@@ -259,8 +259,8 @@ export function formatCollapsedFindingsHint(collapsed, report) {
259
259
  * is not: `files.dependencies` carries only what the link-graph walk discovered, so
260
260
  * every file `files:` copied in — each glob match, plus any explicit entry the walk
261
261
  * had not already bundled — is absent from the total. A bundle holding SKILL.md, one
262
- * linked doc and one declared artifact prints `2 files`. That undercount is issue
263
- * #177 and is deliberately NOT patched here; this wording is only the part that can
262
+ * linked doc and one declared artifact prints `2 files`. That undercount is a
263
+ * report-shape defect and is deliberately NOT patched here; this wording is only the part that can
264
264
  * be made true today, so nobody reads the number as an inventory of the output.
265
265
  *
266
266
  * The `+ 1` is the bundle's root `SKILL.md`, which `files.dependencies` does not
@@ -1 +1 @@
1
- {"version":3,"file":"optional-backend.d.ts","sourceRoot":"","sources":["../../src/utils/optional-backend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAkBH;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAOvD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,eAAe,GAAG,KAAK,CAcpE;AAED,6DAA6D;AAC7D,MAAM,WAAW,eAAe;IAC9B,wDAAwD;IACxD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,0EAA0E;IAC1E,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,UAAU,CAAC,IAAI,SAAS,SAAS,OAAO,EAAE,EACxD,OAAO,EAAE,eAAe,EACxB,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,GAC9C,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAalC"}
1
+ {"version":3,"file":"optional-backend.d.ts","sourceRoot":"","sources":["../../src/utils/optional-backend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAoBH;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAOvD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,eAAe,GAAG,KAAK,CAcpE;AAED,6DAA6D;AAC7D,MAAM,WAAW,eAAe;IAC9B,wDAAwD;IACxD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,0EAA0E;IAC1E,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,UAAU,CAAC,IAAI,SAAS,SAAS,OAAO,EAAE,EACxD,OAAO,EAAE,eAAe,EACxB,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,GAC9C,CAAC,GAAG,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAalC"}
@@ -25,6 +25,7 @@
25
25
  // of the rag lane's shared helpers live: that module statically imports
26
26
  // `@vibe-agent-toolkit/rag-lancedb`, so reaching for its `handleCommandError`
27
27
  // here would load the very backend this file exists to defer.
28
+ import { ExitCode } from '@vibe-agent-toolkit/schema';
28
29
  import { writeYamlOutput } from './output.js';
29
30
  /**
30
31
  * Node's code for "the module is genuinely not installed".
@@ -78,7 +79,7 @@ export function reportMissingBackend(backend) {
78
79
  error: `${backend.feature} backend not installed: ${backend.packageName}`,
79
80
  fix: install,
80
81
  });
81
- process.exit(2);
82
+ process.exit(ExitCode.ERROR);
82
83
  }
83
84
  /**
84
85
  * Bind a Commander action that loads its implementation on first invocation.
@@ -1 +1 @@
1
- {"version":3,"file":"optional-backend.js","sourceRoot":"","sources":["../../src/utils/optional-backend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,8EAA8E;AAC9E,wEAAwE;AACxE,8EAA8E;AAC9E,8DAA8D;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C;;;;;;;GAOG;AACH,MAAM,gBAAgB,GAAG,sBAAsB,CAAC;AAEhD;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;WACtB,KAAK,KAAK,IAAI;WACd,MAAM,IAAI,KAAK;WACd,KAA4B,CAAC,IAAI,KAAK,gBAAgB,CAC3D,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAwB;IAC3D,MAAM,OAAO,GAAG,eAAe,OAAO,CAAC,WAAW,EAAE,CAAC;IACrD,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,GAAG,OAAO,CAAC,OAAO,6DAA6D;UAC7E,uBAAuB,OAAO,IAAI;UAClC,gFAAgF;UAChF,wDAAwD,CAC3D,CAAC;IACF,eAAe,CAAC;QACd,MAAM,EAAE,OAAO;QACf,KAAK,EAAE,GAAG,OAAO,CAAC,OAAO,2BAA2B,OAAO,CAAC,WAAW,EAAE;QACzE,GAAG,EAAE,OAAO;KACb,CAAC,CAAC;IACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAUD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,UAAU,CACxB,OAAwB,EACxB,IAA+C;IAE/C,OAAO,KAAK,EAAE,GAAG,IAAU,EAAiB,EAAE;QAC5C,IAAI,OAA0C,CAAC;QAC/C,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,IAAI,EAAE,CAAC;QACzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC5B,MAAM,KAAK,CAAC;YACd,CAAC;YACD,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC;QACD,MAAM,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IACzB,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"optional-backend.js","sourceRoot":"","sources":["../../src/utils/optional-backend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,8EAA8E;AAC9E,wEAAwE;AACxE,8EAA8E;AAC9E,8DAA8D;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAEtD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C;;;;;;;GAOG;AACH,MAAM,gBAAgB,GAAG,sBAAsB,CAAC;AAEhD;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;WACtB,KAAK,KAAK,IAAI;WACd,MAAM,IAAI,KAAK;WACd,KAA4B,CAAC,IAAI,KAAK,gBAAgB,CAC3D,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAwB;IAC3D,MAAM,OAAO,GAAG,eAAe,OAAO,CAAC,WAAW,EAAE,CAAC;IACrD,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,GAAG,OAAO,CAAC,OAAO,6DAA6D;UAC7E,uBAAuB,OAAO,IAAI;UAClC,gFAAgF;UAChF,wDAAwD,CAC3D,CAAC;IACF,eAAe,CAAC;QACd,MAAM,EAAE,OAAO;QACf,KAAK,EAAE,GAAG,OAAO,CAAC,OAAO,2BAA2B,OAAO,CAAC,WAAW,EAAE;QACzE,GAAG,EAAE,OAAO;KACb,CAAC,CAAC;IACH,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC;AAUD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,UAAU,CACxB,OAAwB,EACxB,IAA+C;IAE/C,OAAO,KAAK,EAAE,GAAG,IAAU,EAAiB,EAAE;QAC5C,IAAI,OAA0C,CAAC;QAC/C,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,IAAI,EAAE,CAAC;QACzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC5B,MAAM,KAAK,CAAC;YACd,CAAC;YACD,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC;QACD,MAAM,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IACzB,CAAC,CAAC;AACJ,CAAC"}
@@ -93,6 +93,15 @@ export declare function writeYamlOutput(data: unknown): void;
93
93
  * @param data - Data to serialize as JSON
94
94
  */
95
95
  export declare function writeJsonOutput(data: unknown): void;
96
+ /**
97
+ * Write one structured document in the format a `--format` option selected:
98
+ * `json` → {@link writeJsonOutput}; anything else (including an absent option)
99
+ * → {@link writeYamlOutput}, the CLI's default document format.
100
+ *
101
+ * @param data - The document
102
+ * @param format - The selected format (`json`, or anything else for YAML)
103
+ */
104
+ export declare function writeStructuredOutput(data: unknown, format: string | undefined): void;
96
105
  /**
97
106
  * Write a test-format finding to stderr.
98
107
  *
@@ -1 +1 @@
1
- {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/utils/output.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAKrD;AAED;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;AAoCpF,MAAM,WAAW,mBAAmB;IAClC,gFAAgF;IAChF,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,6EAA6E;IAC7E,kBAAkB,CAAC,EAAE,CAAC,kBAAkB,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3D;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,mBAAwB,GAChC,IAAI,CA+BN;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAWnD;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAEnD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,IAAI,CAEN"}
1
+ {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/utils/output.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAKrD;AAED;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;AAoCpF,MAAM,WAAW,mBAAmB;IAClC,gFAAgF;IAChF,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,6EAA6E;IAC7E,kBAAkB,CAAC,EAAE,CAAC,kBAAkB,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3D;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,mBAAwB,GAChC,IAAI,CA+BN;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAWnD;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAEnD;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAMrF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,IAAI,CAEN"}
@@ -157,6 +157,22 @@ export function writeYamlOutput(data) {
157
157
  export function writeJsonOutput(data) {
158
158
  process.stdout.write(`${JSON.stringify(data, null, 2)}\n`);
159
159
  }
160
+ /**
161
+ * Write one structured document in the format a `--format` option selected:
162
+ * `json` → {@link writeJsonOutput}; anything else (including an absent option)
163
+ * → {@link writeYamlOutput}, the CLI's default document format.
164
+ *
165
+ * @param data - The document
166
+ * @param format - The selected format (`json`, or anything else for YAML)
167
+ */
168
+ export function writeStructuredOutput(data, format) {
169
+ if (format === 'json') {
170
+ writeJsonOutput(data);
171
+ }
172
+ else {
173
+ writeYamlOutput(data);
174
+ }
175
+ }
160
176
  /**
161
177
  * Write a test-format finding to stderr.
162
178
  *
@@ -1 +1 @@
1
- {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/utils/output.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,eAAe,CAAC,OAAe;IAC7C,YAAY,CACV,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAChE,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAC7B,CAAC;AACJ,CAAC;AAUD;;;;;;;;;GASG;AACH,MAAM,8BAA8B,GAAG,MAAM,CAAC;AAE9C,uEAAuE;AACvE,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAE/B;;;;;GAKG;AACH,SAAS,SAAS,CAAC,EAAU;IAC3B,OAAO,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AACnE,CAAC;AAED;;;;GAIG;AACH,SAAS,yBAAyB,CAAC,kBAA0B;IAC3D,IAAI,kBAAkB,GAAG,mBAAmB;QAAE,SAAS,CAAC,CAAC,CAAC,CAAC;AAC7D,CAAC;AASD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,YAAY,CAC1B,KAAiB,EACjB,MAAc,EACd,UAA+B,EAAE;IAEjC,MAAM,UAAU,GAAG,OAAO,CAAC,qBAAqB,IAAI,8BAA8B,CAAC;IACnF,MAAM,IAAI,GAAG,OAAO,CAAC,kBAAkB,IAAI,yBAAyB,CAAC;IAErE,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,kBAAkB,GAAG,CAAC,CAAC;IAE3B,OAAO,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QAC/B,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC;YAC1D,sEAAsE;YACtE,oCAAoC;YACpC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACX,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,aAAa,MAAM,CAAC,MAAM,GAAG,OAAO,YAAY,CAAC,CAAC;YAClH,CAAC;YACD,OAAO,IAAI,CAAC,CAAC;YACb,kBAAkB,GAAG,CAAC,CAAC;QACzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,wEAAwE;YACxE,wEAAwE;YACxE,yBAAyB;YACzB,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;gBAAE,MAAM,KAAK,CAAC;YACpE,kBAAkB,EAAE,CAAC;YACrB,IAAI,kBAAkB,GAAG,UAAU,EAAE,CAAC;gBACpC,MAAM,IAAI,KAAK,CACb,kBAAkB,UAAU,sDAAsD,OAAO,OAAO,MAAM,CAAC,MAAM,8CAA8C,CAC5J,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,eAAe,CAAC,IAAa;IAC3C,4EAA4E;IAC5E,wEAAwE;IACxE,4EAA4E;IAC5E,8EAA8E;IAC9E,2DAA2D;IAC3D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;QAChD,MAAM,EAAE,CAAC;QACT,SAAS,EAAE,GAAG;QACd,qBAAqB,EAAE,KAAK;KAC7B,CAAC,EAAE,CAAC,CAAC;AACR,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,eAAe,CAAC,IAAa;IAC3C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAC7D,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,oBAAoB,CAClC,IAAY,EACZ,IAAY,EACZ,MAAc,EACd,QAAgB,EAChB,OAAe;IAEf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,IAAI,IAAI,MAAM,KAAK,QAAQ,KAAK,OAAO,IAAI,CAAC,CAAC;AAC/E,CAAC"}
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/utils/output.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * One reading of a project's `package.json` for the lanes that want an
3
+ * OPTIONAL field out of it — a `version` to stamp, a `vat.skills` list, a
4
+ * `files` allowlist.
5
+ *
6
+ * Every one of those lanes used to spell the read as `existsSync` →
7
+ * `readFileSync` → `JSON.parse` inside one `try { … } catch { return <absent> }`,
8
+ * which made "there is no package.json" indistinguishable from "there is one
9
+ * and it is not JSON" and from "there is one and the OS refused it". The first
10
+ * is the sentinel's meaning; the other two were reported as it — a build
11
+ * stamped no version, a consistency check verified nothing, and neither said
12
+ * why. npm itself refuses a manifest it cannot parse, so a tree with one is
13
+ * already broken; the reader's job is to say so, not to proceed around it.
14
+ */
15
+ /**
16
+ * The parsed manifest, or `undefined` when there is none at `pkgPath`.
17
+ *
18
+ * @throws {Error} naming the file when it exists but is not a JSON object;
19
+ * the parse error is the `cause`.
20
+ * @throws whatever the filesystem threw for anything that is not an absence
21
+ * (a refusal stays a refusal).
22
+ */
23
+ export declare function readPackageJsonOrAbsent(pkgPath: string): Record<string, unknown> | undefined;
24
+ //# sourceMappingURL=package-json.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-json.d.ts","sourceRoot":"","sources":["../../src/utils/package-json.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAMH;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAoB5F"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * One reading of a project's `package.json` for the lanes that want an
3
+ * OPTIONAL field out of it — a `version` to stamp, a `vat.skills` list, a
4
+ * `files` allowlist.
5
+ *
6
+ * Every one of those lanes used to spell the read as `existsSync` →
7
+ * `readFileSync` → `JSON.parse` inside one `try { … } catch { return <absent> }`,
8
+ * which made "there is no package.json" indistinguishable from "there is one
9
+ * and it is not JSON" and from "there is one and the OS refused it". The first
10
+ * is the sentinel's meaning; the other two were reported as it — a build
11
+ * stamped no version, a consistency check verified nothing, and neither said
12
+ * why. npm itself refuses a manifest it cannot parse, so a tree with one is
13
+ * already broken; the reader's job is to say so, not to proceed around it.
14
+ */
15
+ import { readFileSync } from 'node:fs';
16
+ import { isPathAbsentError } from '@vibe-agent-toolkit/utils';
17
+ /**
18
+ * The parsed manifest, or `undefined` when there is none at `pkgPath`.
19
+ *
20
+ * @throws {Error} naming the file when it exists but is not a JSON object;
21
+ * the parse error is the `cause`.
22
+ * @throws whatever the filesystem threw for anything that is not an absence
23
+ * (a refusal stays a refusal).
24
+ */
25
+ export function readPackageJsonOrAbsent(pkgPath) {
26
+ let raw;
27
+ try {
28
+ raw = readFileSync(pkgPath, 'utf-8');
29
+ }
30
+ catch (error) {
31
+ if (isPathAbsentError(error))
32
+ return undefined;
33
+ throw error;
34
+ }
35
+ let parsed;
36
+ try {
37
+ parsed = JSON.parse(raw);
38
+ }
39
+ catch (error) {
40
+ if (!(error instanceof SyntaxError))
41
+ throw error;
42
+ throw new Error(`${pkgPath} is not valid JSON: ${error.message}`, { cause: error });
43
+ }
44
+ if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {
45
+ throw new Error(`${pkgPath} is not a JSON object, so it is not a package manifest`);
46
+ }
47
+ return parsed;
48
+ }
49
+ //# sourceMappingURL=package-json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-json.js","sourceRoot":"","sources":["../../src/utils/package-json.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAE9D;;;;;;;GAOG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAe;IACrD,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,iBAAiB,CAAC,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QAC/C,MAAM,KAAK,CAAC;IACd,CAAC;IAED,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,CAAC,KAAK,YAAY,WAAW,CAAC;YAAE,MAAM,KAAK,CAAC;QACjD,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,uBAAuB,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IACtF,CAAC;IACD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3E,MAAM,IAAI,KAAK,CAAC,GAAG,OAAO,wDAAwD,CAAC,CAAC;IACtF,CAAC;IACD,OAAO,MAAiC,CAAC;AAC3C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"project-root-policy.d.ts","sourceRoot":"","sources":["../../src/utils/project-root-policy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAMH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAShF;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAQ7E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAEjE;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAW/D"}
1
+ {"version":3,"file":"project-root-policy.d.ts","sourceRoot":"","sources":["../../src/utils/project-root-policy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAMH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAShF;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAQ7E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAEjE;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAS/D"}
@@ -68,11 +68,9 @@ export function projectRootOrNull(startDir) {
68
68
  */
69
69
  export function assertDirectoryArgument(pathArg) {
70
70
  const resolved = safePath.resolve(pathArg);
71
- // eslint-disable-next-line security/detect-non-literal-fs-filename -- CLI path argument, resolved above
72
71
  if (!existsSync(resolved)) {
73
72
  throw new Error(`Path does not exist: ${resolved}`);
74
73
  }
75
- // eslint-disable-next-line security/detect-non-literal-fs-filename -- CLI path argument, existence checked above
76
74
  if (!statSync(resolved).isDirectory()) {
77
75
  throw new Error(`Path is not a directory: ${resolved}`);
78
76
  }
@@ -1 +1 @@
1
- {"version":3,"file":"project-root-policy.js","sourceRoot":"","sources":["../../src/utils/project-root-policy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE/C,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAItE;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAgB,EAAE,WAAmB;IACtE,MAAM,IAAI,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IACvC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CACb,GAAG,WAAW,gEAAgE;YAC5E,kDAAkD,CACrD,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAgB,EAAE,MAAc;IACnE,MAAM,IAAI,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IACvC,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC/B,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,CAAC,IAAI,CACT,oEAAoE,GAAG,iBAAiB,CACzF,CAAC;IACF,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAChD,OAAO,eAAe,CAAC,QAAQ,CAAC,CAAC;AACnC,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAe;IACrD,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3C,wGAAwG;IACxG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,wBAAwB,QAAQ,EAAE,CAAC,CAAC;IACtD,CAAC;IACD,iHAAiH;IACjH,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,4BAA4B,QAAQ,EAAE,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"project-root-policy.js","sourceRoot":"","sources":["../../src/utils/project-root-policy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE/C,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAItE;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAgB,EAAE,WAAmB;IACtE,MAAM,IAAI,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IACvC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CACb,GAAG,WAAW,gEAAgE;YAC5E,kDAAkD,CACrD,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAgB,EAAE,MAAc;IACnE,MAAM,IAAI,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IACvC,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC/B,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,CAAC,IAAI,CACT,oEAAoE,GAAG,iBAAiB,CACzF,CAAC;IACF,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAChD,OAAO,eAAe,CAAC,QAAQ,CAAC,CAAC;AACnC,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAe;IACrD,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,wBAAwB,QAAQ,EAAE,CAAC,CAAC;IACtD,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,4BAA4B,QAAQ,EAAE,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,98 @@
1
+ /**
2
+ * Which lenses a run evaluates, and when it does NOT — the selection that keeps
3
+ * the derived relations affordable.
4
+ *
5
+ * 🚨 **The selector over-selects on purpose: a FALSE NEGATIVE fails a run that
6
+ * had an answer.** A lens skipped when its relation is named leaves that
7
+ * relation ABSENT from the run's database, so the statement is refused with
8
+ * `no such table` — loud rather than wrong, because the refusal is SQLite's and
9
+ * does not depend on this scan. The cost that forced the selection, the rules
10
+ * that keep it fail-safe, and why the registry lives in the CLI rather than in a
11
+ * population are in
12
+ * `docs/architecture/zones.md` §2, "A lens is evaluated only when a statement
13
+ * names one of its relations".
14
+ */
15
+ import { type DerivedTableName, type PopulationCache, type Projection } from '@vibe-agent-toolkit/resources';
16
+ import type { Logger } from './logger.js';
17
+ /**
18
+ * The rows one lens evaluation produced, keyed by `DERIVED_TABLES`' own keys.
19
+ *
20
+ * Structurally `projection-sqlite`'s `DerivedRows`, spelled here so every lens
21
+ * states its output in terms of the RELATION REGISTRY rather than of a storage
22
+ * backend. `writeDerived` accepts it unchanged.
23
+ */
24
+ export type LensRows = {
25
+ readonly [Name in DerivedTableName]?: readonly Record<string, unknown>[];
26
+ };
27
+ /** Everything a lens may read while evaluating. */
28
+ export interface LensEvaluationInput {
29
+ /** The resources-lane projection the run already populated. */
30
+ readonly projection: Projection;
31
+ /** Absolute corpus root, for a lens that must populate a lane of its own. */
32
+ readonly root: string;
33
+ /** Where a lens's own blob-stage refusals go — stderr. */
34
+ readonly logger: Logger;
35
+ /** The run's projection store, so a lens's own population can hit it. */
36
+ readonly cache: PopulationCache | undefined;
37
+ }
38
+ /** One lens: the relations it owns, and how to produce their rows. */
39
+ export interface ProjectionLens {
40
+ /** How the lens names itself in `lensesEvaluated` and in a refusal. */
41
+ readonly name: string;
42
+ /**
43
+ * Every relation this lens produces, by registry key.
44
+ *
45
+ * ⛔ Disjoint from every other lens's. Two lenses claiming one relation would
46
+ * make "was it evaluated" unanswerable, and the second `writeDerived` would
47
+ * CLEAR the first's rows — `writeDerived` replaces a relation's contents.
48
+ */
49
+ readonly relations: readonly DerivedTableName[];
50
+ /**
51
+ * Produce the rows.
52
+ *
53
+ * @param input - The projection, the root, and the run's oracles
54
+ * @returns Every relation this lens owns — all of them, every time, because
55
+ * omitting one leaves its previous contents in place
56
+ */
57
+ readonly evaluate: (input: LensEvaluationInput) => Promise<LensRows> | LensRows;
58
+ }
59
+ /** The authored-link lens: `lens_contexts`, `edges`, `edge_resolutions`. */
60
+ export declare const AUTHORED_LINK_LENS: ProjectionLens;
61
+ /** The always-loaded context lens: `claude_context_chains`, `claude_context_loads`. */
62
+ export declare const CLAUDE_CONTEXT_LENS: ProjectionLens;
63
+ /** Every lens the query lane can evaluate, in evaluation order. */
64
+ export declare const PROJECTION_LENSES: readonly ProjectionLens[];
65
+ /**
66
+ * The SQL names of a lens's relations. Read off `DERIVED_TABLES` rather than
67
+ * restated: the SQL name and the registry key are deliberately different
68
+ * vocabularies (`edgeResolutions` is spelled `edge_resolutions`), so a second
69
+ * copy here would be a rename waiting to be missed.
70
+ *
71
+ * @param lens - The lens
72
+ * @returns Its relations as SQL spells them
73
+ */
74
+ export declare function lensRelationNames(lens: ProjectionLens): readonly string[];
75
+ /**
76
+ * The lenses a run has to evaluate, given the statements it declared.
77
+ *
78
+ * @param statements - Every statement the run may ask, or `undefined` when the
79
+ * caller cannot enumerate them. ⛔ `undefined` selects EVERY lens — see the
80
+ * header on why the fail-safe direction is not negotiable
81
+ * @returns The lenses to evaluate, in {@link PROJECTION_LENSES} order
82
+ */
83
+ export declare function lensesNamedBy(statements: readonly string[] | undefined): readonly ProjectionLens[];
84
+ /**
85
+ * Evaluate one lens and hand back its rows, refusing any that are not exactly
86
+ * the relations it declares.
87
+ *
88
+ * `LensRows` makes every relation optional, so a lens that forgot one compiles —
89
+ * and `writeDerived` would leave that relation empty, a table that reads as a
90
+ * healthy tree. Checked here because this is the one place every lens passes.
91
+ *
92
+ * @param lens - The lens
93
+ * @param input - What it may read
94
+ * @returns Its rows
95
+ * @throws Error When the rows omit a declared relation or carry an undeclared one
96
+ */
97
+ export declare function evaluateLens(lens: ProjectionLens, input: LensEvaluationInput): Promise<LensRows>;
98
+ //# sourceMappingURL=projection-lenses.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projection-lenses.d.ts","sourceRoot":"","sources":["../../src/utils/projection-lenses.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAkB,KAAK,gBAAgB,EAAE,KAAK,eAAe,EAAE,KAAK,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAI7H,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C;;;;;;GAMG;AACH,MAAM,MAAM,QAAQ,GAAG;IACrB,QAAQ,EAAE,IAAI,IAAI,gBAAgB,CAAC,CAAC,EAAE,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;CACzE,CAAC;AAEF,mDAAmD;AACnD,MAAM,WAAW,mBAAmB;IAClC,+DAA+D;IAC/D,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAChC,6EAA6E;IAC7E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,0DAA0D;IAC1D,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,yEAAyE;IACzE,QAAQ,CAAC,KAAK,EAAE,eAAe,GAAG,SAAS,CAAC;CAC7C;AAED,sEAAsE;AACtE,MAAM,WAAW,cAAc;IAC7B,uEAAuE;IACvE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;;;;OAMG;IACH,QAAQ,CAAC,SAAS,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAChD;;;;;;OAMG;IACH,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;CACjF;AAED,4EAA4E;AAC5E,eAAO,MAAM,kBAAkB,EAAE,cAIhC,CAAC;AAEF,uFAAuF;AACvF,eAAO,MAAM,mBAAmB,EAAE,cAIjC,CAAC;AAEF,mEAAmE;AACnE,eAAO,MAAM,iBAAiB,EAAE,SAAS,cAAc,EAGtD,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,cAAc,GAAG,SAAS,MAAM,EAAE,CAEzE;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,GAAG,SAAS,cAAc,EAAE,CAMlG;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,cAAc,EACpB,KAAK,EAAE,mBAAmB,GACzB,OAAO,CAAC,QAAQ,CAAC,CAYnB"}
@@ -0,0 +1,203 @@
1
+ /**
2
+ * Which lenses a run evaluates, and when it does NOT — the selection that keeps
3
+ * the derived relations affordable.
4
+ *
5
+ * 🚨 **The selector over-selects on purpose: a FALSE NEGATIVE fails a run that
6
+ * had an answer.** A lens skipped when its relation is named leaves that
7
+ * relation ABSENT from the run's database, so the statement is refused with
8
+ * `no such table` — loud rather than wrong, because the refusal is SQLite's and
9
+ * does not depend on this scan. The cost that forced the selection, the rules
10
+ * that keep it fail-safe, and why the registry lives in the CLI rather than in a
11
+ * population are in
12
+ * `docs/architecture/zones.md` §2, "A lens is evaluated only when a statement
13
+ * names one of its relations".
14
+ */
15
+ import { DERIVED_TABLES } from '@vibe-agent-toolkit/resources';
16
+ import { evaluateClaudeContextLens } from './claude-context-lens.js';
17
+ import { evaluateAuthoredLenses } from './edge-lens-evaluation.js';
18
+ /** The authored-link lens: `lens_contexts`, `edges`, `edge_resolutions`. */
19
+ export const AUTHORED_LINK_LENS = {
20
+ name: 'authored-link',
21
+ relations: ['lensContexts', 'edges', 'edgeResolutions'],
22
+ evaluate: ({ projection }) => evaluateAuthoredLenses(projection),
23
+ };
24
+ /** The always-loaded context lens: `claude_context_chains`, `claude_context_loads`. */
25
+ export const CLAUDE_CONTEXT_LENS = {
26
+ name: 'claude-context',
27
+ relations: ['claudeContextChains', 'claudeContextLoads'],
28
+ evaluate: ({ root, logger, cache }) => evaluateClaudeContextLens({ root, logger, cache }),
29
+ };
30
+ /** Every lens the query lane can evaluate, in evaluation order. */
31
+ export const PROJECTION_LENSES = [
32
+ AUTHORED_LINK_LENS,
33
+ CLAUDE_CONTEXT_LENS,
34
+ ];
35
+ /**
36
+ * The SQL names of a lens's relations. Read off `DERIVED_TABLES` rather than
37
+ * restated: the SQL name and the registry key are deliberately different
38
+ * vocabularies (`edgeResolutions` is spelled `edge_resolutions`), so a second
39
+ * copy here would be a rename waiting to be missed.
40
+ *
41
+ * @param lens - The lens
42
+ * @returns Its relations as SQL spells them
43
+ */
44
+ export function lensRelationNames(lens) {
45
+ return lens.relations.map((name) => DERIVED_TABLES[name].name);
46
+ }
47
+ /**
48
+ * The lenses a run has to evaluate, given the statements it declared.
49
+ *
50
+ * @param statements - Every statement the run may ask, or `undefined` when the
51
+ * caller cannot enumerate them. ⛔ `undefined` selects EVERY lens — see the
52
+ * header on why the fail-safe direction is not negotiable
53
+ * @returns The lenses to evaluate, in {@link PROJECTION_LENSES} order
54
+ */
55
+ export function lensesNamedBy(statements) {
56
+ if (statements === undefined)
57
+ return PROJECTION_LENSES;
58
+ const readable = statements.map((sql) => wordsIn(withoutCommentsAndLiterals(sql)));
59
+ return PROJECTION_LENSES.filter((lens) => lensRelationNames(lens).some((relation) => readable.some((words) => namesRelation(words, relation))));
60
+ }
61
+ /**
62
+ * Evaluate one lens and hand back its rows, refusing any that are not exactly
63
+ * the relations it declares.
64
+ *
65
+ * `LensRows` makes every relation optional, so a lens that forgot one compiles —
66
+ * and `writeDerived` would leave that relation empty, a table that reads as a
67
+ * healthy tree. Checked here because this is the one place every lens passes.
68
+ *
69
+ * @param lens - The lens
70
+ * @param input - What it may read
71
+ * @returns Its rows
72
+ * @throws Error When the rows omit a declared relation or carry an undeclared one
73
+ */
74
+ export async function evaluateLens(lens, input) {
75
+ const rows = await lens.evaluate(input);
76
+ const declared = lens.relations;
77
+ const missing = declared.filter((name) => !Object.hasOwn(rows, name));
78
+ const undeclared = Object.keys(rows).filter((name) => !declared.includes(name));
79
+ if (missing.length > 0 || undeclared.length > 0) {
80
+ throw new Error(`Lens "${lens.name}" must produce exactly [${declared.join(', ')}];`
81
+ + ` missing [${missing.join(', ')}], undeclared [${undeclared.join(', ')}]`);
82
+ }
83
+ return rows;
84
+ }
85
+ /**
86
+ * Blank out the parts of a statement that cannot name a table: line comments,
87
+ * block comments and single-quoted string literals. Quoted IDENTIFIERS
88
+ * (`"edges"`, `[edges]`, backticked) are deliberately left alone — those ARE
89
+ * table references, spelled differently. Replaced with spaces rather than
90
+ * removed, so a block comment between `FROM` and `edges` cannot let the two run
91
+ * together.
92
+ *
93
+ * @param sql - The statement
94
+ * @returns The statement with every non-code span blanked
95
+ */
96
+ function withoutCommentsAndLiterals(sql) {
97
+ let out = '';
98
+ let index = 0;
99
+ while (index < sql.length) {
100
+ const end = spanEnd(sql, index);
101
+ if (end === undefined) {
102
+ out += sql.charAt(index);
103
+ index += 1;
104
+ continue;
105
+ }
106
+ const span = sql.slice(index, end);
107
+ out += QUOTED_IDENTIFIER_CLOSERS.has(span.charAt(0)) ? span : ' '.repeat(span.length);
108
+ index = end;
109
+ }
110
+ return out;
111
+ }
112
+ /** The characters that open a quoted identifier, and the one that closes each. */
113
+ const QUOTED_IDENTIFIER_CLOSERS = new Map([['"', '"'], ['[', ']'], ['`', '`']]);
114
+ /** Every quoted span's opener and closer: the identifiers, plus `'` for a literal. */
115
+ const QUOTE_CLOSERS = new Map([...QUOTED_IDENTIFIER_CLOSERS, ["'", "'"]]);
116
+ /**
117
+ * Where a span starting at `start` ends: a line comment, a block comment, a
118
+ * single-quoted literal — or a quoted IDENTIFIER, consumed only so it can be
119
+ * handed back unblanked.
120
+ *
121
+ * ⛔ Quoted identifiers MUST be consumed by this same scan even though their
122
+ * contents stay code, and the reason is the whole of this function. SQLite gives
123
+ * `'`, `--` and `/*` no meaning inside `"…"`, `[…]` or `` `…` ``. A scanner that
124
+ * skips those spans lets a character inside one open a literal or a comment that
125
+ * SQLite never opened, desynchronises, and blanks a span of REAL SQL — taking the
126
+ * relation name with it. The statement then reads an EMPTY relation and answers 0
127
+ * instead of being refused, which for a declared check is a silent exit 0: a gate
128
+ * that cannot fail.
129
+ *
130
+ * Scanning left to right is what keeps the spans mutually exclusive: a comment
131
+ * marker inside a literal is never looked at, nor a quote inside a comment.
132
+ *
133
+ * @param sql - The statement
134
+ * @param start - Where to look
135
+ * @returns The index just past the span, or undefined when none opens here
136
+ */
137
+ function spanEnd(sql, start) {
138
+ const pair = sql.slice(start, start + 2);
139
+ if (pair === '--') {
140
+ const newline = sql.indexOf('\n', start);
141
+ return newline === -1 ? sql.length : newline;
142
+ }
143
+ if (pair === '/*') {
144
+ const close = sql.indexOf('*/', start + 2);
145
+ return close === -1 ? undefined : close + 2;
146
+ }
147
+ const closer = QUOTE_CLOSERS.get(sql.charAt(start));
148
+ return closer === undefined ? undefined : quotedEnd(sql, start, closer);
149
+ }
150
+ /**
151
+ * Where a quoted span ends. A doubled closer (`''`, `""`, two backticks) is an
152
+ * escaped one; `[…]` has no escape. Left unterminated, the span ends at the last
153
+ * doubled closer instead — what the single pattern this replaced did by
154
+ * backtracking.
155
+ *
156
+ * @param sql - The statement
157
+ * @param start - The opening quote
158
+ * @param closer - The character that closes it
159
+ * @returns The index just past the span, or undefined when it never closes
160
+ */
161
+ function quotedEnd(sql, start, closer) {
162
+ let fallback;
163
+ let from = start + 1;
164
+ for (;;) {
165
+ const close = sql.indexOf(closer, from);
166
+ if (close === -1)
167
+ return fallback;
168
+ if (closer === ']' || sql.charAt(close + 1) !== closer)
169
+ return close + 1;
170
+ fallback = close + 1;
171
+ from = close + 2;
172
+ }
173
+ }
174
+ /**
175
+ * Every whole word in a statement, lowercased.
176
+ *
177
+ * Relation names are `[a-z_]` only and `_` is a word character, so membership in
178
+ * this set answers exactly what a `\b`-anchored search would: `my_edges`
179
+ * tokenizes whole and never answers for `edges`. One pass per statement, rather
180
+ * than one pattern per relation, and no `RegExp` built from a variable.
181
+ *
182
+ * @param sql - The statement, already stripped of comments and literals
183
+ * @returns Its identifier-character runs, lowercased
184
+ */
185
+ function wordsIn(sql) {
186
+ return new Set((sql.match(IDENTIFIER_RUNS) ?? []).map((word) => word.toLowerCase()));
187
+ }
188
+ /** Runs of identifier characters — SQL's word boundaries, the `\b` equivalent. */
189
+ const IDENTIFIER_RUNS = /[a-z0-9_]+/gi;
190
+ /**
191
+ * Does a statement's word set name this relation?
192
+ *
193
+ * Case-folds the relation as well as the words: a registry name spelled with an
194
+ * uppercase letter would otherwise miss every statement silently.
195
+ *
196
+ * @param words - The statement's words, from {@link wordsIn}
197
+ * @param relation - The relation's SQL name
198
+ * @returns True when the statement could be reading that relation
199
+ */
200
+ function namesRelation(words, relation) {
201
+ return words.has(relation.toLowerCase());
202
+ }
203
+ //# sourceMappingURL=projection-lenses.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projection-lenses.js","sourceRoot":"","sources":["../../src/utils/projection-lenses.ts"],"names":[],"mappings":"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"}