@cairn-tool/cairn 2.0.0

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 (526) hide show
  1. package/.markdownlintrc +7 -0
  2. package/LICENSE +21 -0
  3. package/README.md +1431 -0
  4. package/dist/agent/audit/baseline.d.ts +69 -0
  5. package/dist/agent/audit/baseline.js +128 -0
  6. package/dist/agent/audit/baseline.js.map +1 -0
  7. package/dist/agent/audit/index.d.ts +126 -0
  8. package/dist/agent/audit/index.js +625 -0
  9. package/dist/agent/audit/index.js.map +1 -0
  10. package/dist/agent/import/detect.d.ts +49 -0
  11. package/dist/agent/import/detect.js +159 -0
  12. package/dist/agent/import/detect.js.map +1 -0
  13. package/dist/agent/import/normalize.d.ts +72 -0
  14. package/dist/agent/import/normalize.js +475 -0
  15. package/dist/agent/import/normalize.js.map +1 -0
  16. package/dist/agent/install/index.d.ts +211 -0
  17. package/dist/agent/install/index.js +907 -0
  18. package/dist/agent/install/index.js.map +1 -0
  19. package/dist/agent/manifest.d.ts +75 -0
  20. package/dist/agent/manifest.js +210 -0
  21. package/dist/agent/manifest.js.map +1 -0
  22. package/dist/agent/marketplace/index.d.ts +69 -0
  23. package/dist/agent/marketplace/index.js +212 -0
  24. package/dist/agent/marketplace/index.js.map +1 -0
  25. package/dist/agent/marketplace/spec.d.ts +48 -0
  26. package/dist/agent/marketplace/spec.js +237 -0
  27. package/dist/agent/marketplace/spec.js.map +1 -0
  28. package/dist/agent/output.d.ts +36 -0
  29. package/dist/agent/output.js +56 -0
  30. package/dist/agent/output.js.map +1 -0
  31. package/dist/agent/overlays.d.ts +38 -0
  32. package/dist/agent/overlays.js +223 -0
  33. package/dist/agent/overlays.js.map +1 -0
  34. package/dist/agent/package/index.d.ts +105 -0
  35. package/dist/agent/package/index.js +339 -0
  36. package/dist/agent/package/index.js.map +1 -0
  37. package/dist/agent/package/tar.d.ts +36 -0
  38. package/dist/agent/package/tar.js +137 -0
  39. package/dist/agent/package/tar.js.map +1 -0
  40. package/dist/agent/parser.d.ts +13 -0
  41. package/dist/agent/parser.js +559 -0
  42. package/dist/agent/parser.js.map +1 -0
  43. package/dist/agent/render.d.ts +16 -0
  44. package/dist/agent/render.js +721 -0
  45. package/dist/agent/render.js.map +1 -0
  46. package/dist/agent/sarif.d.ts +18 -0
  47. package/dist/agent/sarif.js +56 -0
  48. package/dist/agent/sarif.js.map +1 -0
  49. package/dist/agent/scaffold.d.ts +86 -0
  50. package/dist/agent/scaffold.js +250 -0
  51. package/dist/agent/scaffold.js.map +1 -0
  52. package/dist/agent/targets/antigravity.d.ts +17 -0
  53. package/dist/agent/targets/antigravity.js +218 -0
  54. package/dist/agent/targets/antigravity.js.map +1 -0
  55. package/dist/agent/targets/claude-code.d.ts +2 -0
  56. package/dist/agent/targets/claude-code.js +220 -0
  57. package/dist/agent/targets/claude-code.js.map +1 -0
  58. package/dist/agent/targets/codex.d.ts +2 -0
  59. package/dist/agent/targets/codex.js +212 -0
  60. package/dist/agent/targets/codex.js.map +1 -0
  61. package/dist/agent/targets/cursor.d.ts +2 -0
  62. package/dist/agent/targets/cursor.js +210 -0
  63. package/dist/agent/targets/cursor.js.map +1 -0
  64. package/dist/agent/targets/index.d.ts +31 -0
  65. package/dist/agent/targets/index.js +64 -0
  66. package/dist/agent/targets/index.js.map +1 -0
  67. package/dist/agent/targets/opencode.d.ts +15 -0
  68. package/dist/agent/targets/opencode.js +215 -0
  69. package/dist/agent/targets/opencode.js.map +1 -0
  70. package/dist/agent/targets/schema.d.ts +315 -0
  71. package/dist/agent/targets/schema.js +179 -0
  72. package/dist/agent/targets/schema.js.map +1 -0
  73. package/dist/agent/test/assert.d.ts +46 -0
  74. package/dist/agent/test/assert.js +288 -0
  75. package/dist/agent/test/assert.js.map +1 -0
  76. package/dist/agent/test/index.d.ts +73 -0
  77. package/dist/agent/test/index.js +181 -0
  78. package/dist/agent/test/index.js.map +1 -0
  79. package/dist/agent/test/schema.d.ts +81 -0
  80. package/dist/agent/test/schema.js +235 -0
  81. package/dist/agent/test/schema.js.map +1 -0
  82. package/dist/agent/types.d.ts +204 -0
  83. package/dist/agent/types.js +11 -0
  84. package/dist/agent/types.js.map +1 -0
  85. package/dist/agent/upgrade.d.ts +29 -0
  86. package/dist/agent/upgrade.js +72 -0
  87. package/dist/agent/upgrade.js.map +1 -0
  88. package/dist/agent/writer.d.ts +30 -0
  89. package/dist/agent/writer.js +73 -0
  90. package/dist/agent/writer.js.map +1 -0
  91. package/dist/archive/db.d.ts +20 -0
  92. package/dist/archive/db.js +98 -0
  93. package/dist/archive/db.js.map +1 -0
  94. package/dist/archive/progress.d.ts +62 -0
  95. package/dist/archive/progress.js +151 -0
  96. package/dist/archive/progress.js.map +1 -0
  97. package/dist/archive/query.d.ts +86 -0
  98. package/dist/archive/query.js +241 -0
  99. package/dist/archive/query.js.map +1 -0
  100. package/dist/archive/run.d.ts +91 -0
  101. package/dist/archive/run.js +331 -0
  102. package/dist/archive/run.js.map +1 -0
  103. package/dist/archive/segments.d.ts +89 -0
  104. package/dist/archive/segments.js +144 -0
  105. package/dist/archive/segments.js.map +1 -0
  106. package/dist/archive/sets.d.ts +58 -0
  107. package/dist/archive/sets.js +344 -0
  108. package/dist/archive/sets.js.map +1 -0
  109. package/dist/archive/tar-read.d.ts +35 -0
  110. package/dist/archive/tar-read.js +90 -0
  111. package/dist/archive/tar-read.js.map +1 -0
  112. package/dist/audit-baseline.d.ts +66 -0
  113. package/dist/audit-baseline.js +124 -0
  114. package/dist/audit-baseline.js.map +1 -0
  115. package/dist/automation.d.ts +16 -0
  116. package/dist/automation.js +38 -0
  117. package/dist/automation.js.map +1 -0
  118. package/dist/backlinks.d.ts +15 -0
  119. package/dist/backlinks.js +30 -0
  120. package/dist/backlinks.js.map +1 -0
  121. package/dist/checkers/katex.d.ts +3 -0
  122. package/dist/checkers/katex.js +71 -0
  123. package/dist/checkers/katex.js.map +1 -0
  124. package/dist/checkers/markdown-lint.d.ts +28 -0
  125. package/dist/checkers/markdown-lint.js +53 -0
  126. package/dist/checkers/markdown-lint.js.map +1 -0
  127. package/dist/checkers/mermaid.d.ts +6 -0
  128. package/dist/checkers/mermaid.js +53 -0
  129. package/dist/checkers/mermaid.js.map +1 -0
  130. package/dist/checkers/references.d.ts +3 -0
  131. package/dist/checkers/references.js +55 -0
  132. package/dist/checkers/references.js.map +1 -0
  133. package/dist/cli.d.ts +2 -0
  134. package/dist/cli.js +1117 -0
  135. package/dist/cli.js.map +1 -0
  136. package/dist/command-result.d.ts +6 -0
  137. package/dist/command-result.js +13 -0
  138. package/dist/command-result.js.map +1 -0
  139. package/dist/commands/agent-audit.d.ts +21 -0
  140. package/dist/commands/agent-audit.js +119 -0
  141. package/dist/commands/agent-audit.js.map +1 -0
  142. package/dist/commands/agent-doctor.d.ts +25 -0
  143. package/dist/commands/agent-doctor.js +217 -0
  144. package/dist/commands/agent-doctor.js.map +1 -0
  145. package/dist/commands/agent-import.d.ts +21 -0
  146. package/dist/commands/agent-import.js +212 -0
  147. package/dist/commands/agent-import.js.map +1 -0
  148. package/dist/commands/agent-install.d.ts +18 -0
  149. package/dist/commands/agent-install.js +59 -0
  150. package/dist/commands/agent-install.js.map +1 -0
  151. package/dist/commands/agent-installed.d.ts +6 -0
  152. package/dist/commands/agent-installed.js +17 -0
  153. package/dist/commands/agent-installed.js.map +1 -0
  154. package/dist/commands/agent-marketplace.d.ts +11 -0
  155. package/dist/commands/agent-marketplace.js +178 -0
  156. package/dist/commands/agent-marketplace.js.map +1 -0
  157. package/dist/commands/agent-package.d.ts +16 -0
  158. package/dist/commands/agent-package.js +159 -0
  159. package/dist/commands/agent-package.js.map +1 -0
  160. package/dist/commands/agent-scaffold.d.ts +17 -0
  161. package/dist/commands/agent-scaffold.js +181 -0
  162. package/dist/commands/agent-scaffold.js.map +1 -0
  163. package/dist/commands/agent-specs.d.ts +7 -0
  164. package/dist/commands/agent-specs.js +20 -0
  165. package/dist/commands/agent-specs.js.map +1 -0
  166. package/dist/commands/agent-test.d.ts +21 -0
  167. package/dist/commands/agent-test.js +50 -0
  168. package/dist/commands/agent-test.js.map +1 -0
  169. package/dist/commands/agent-uninstall.d.ts +6 -0
  170. package/dist/commands/agent-uninstall.js +45 -0
  171. package/dist/commands/agent-uninstall.js.map +1 -0
  172. package/dist/commands/agent-upgrade.d.ts +5 -0
  173. package/dist/commands/agent-upgrade.js +105 -0
  174. package/dist/commands/agent-upgrade.js.map +1 -0
  175. package/dist/commands/agent.d.ts +27 -0
  176. package/dist/commands/agent.js +549 -0
  177. package/dist/commands/agent.js.map +1 -0
  178. package/dist/commands/archive.d.ts +47 -0
  179. package/dist/commands/archive.js +311 -0
  180. package/dist/commands/archive.js.map +1 -0
  181. package/dist/commands/audit.d.ts +25 -0
  182. package/dist/commands/audit.js +325 -0
  183. package/dist/commands/audit.js.map +1 -0
  184. package/dist/commands/check-snippets.d.ts +58 -0
  185. package/dist/commands/check-snippets.js +247 -0
  186. package/dist/commands/check-snippets.js.map +1 -0
  187. package/dist/commands/check-urls.d.ts +52 -0
  188. package/dist/commands/check-urls.js +205 -0
  189. package/dist/commands/check-urls.js.map +1 -0
  190. package/dist/commands/code-blocks.d.ts +8 -0
  191. package/dist/commands/code-blocks.js +66 -0
  192. package/dist/commands/code-blocks.js.map +1 -0
  193. package/dist/commands/completion.d.ts +15 -0
  194. package/dist/commands/completion.js +20 -0
  195. package/dist/commands/completion.js.map +1 -0
  196. package/dist/commands/context.d.ts +16 -0
  197. package/dist/commands/context.js +131 -0
  198. package/dist/commands/context.js.map +1 -0
  199. package/dist/commands/describe.d.ts +12 -0
  200. package/dist/commands/describe.js +62 -0
  201. package/dist/commands/describe.js.map +1 -0
  202. package/dist/commands/diff.d.ts +11 -0
  203. package/dist/commands/diff.js +185 -0
  204. package/dist/commands/diff.js.map +1 -0
  205. package/dist/commands/fix.d.ts +59 -0
  206. package/dist/commands/fix.js +173 -0
  207. package/dist/commands/fix.js.map +1 -0
  208. package/dist/commands/frontmatter.d.ts +7 -0
  209. package/dist/commands/frontmatter.js +84 -0
  210. package/dist/commands/frontmatter.js.map +1 -0
  211. package/dist/commands/graph.d.ts +12 -0
  212. package/dist/commands/graph.js +122 -0
  213. package/dist/commands/graph.js.map +1 -0
  214. package/dist/commands/headers.d.ts +7 -0
  215. package/dist/commands/headers.js +48 -0
  216. package/dist/commands/headers.js.map +1 -0
  217. package/dist/commands/index.d.ts +8 -0
  218. package/dist/commands/index.js +32 -0
  219. package/dist/commands/index.js.map +1 -0
  220. package/dist/commands/links.d.ts +9 -0
  221. package/dist/commands/links.js +123 -0
  222. package/dist/commands/links.js.map +1 -0
  223. package/dist/commands/lint-dir.d.ts +15 -0
  224. package/dist/commands/lint-dir.js +156 -0
  225. package/dist/commands/lint-dir.js.map +1 -0
  226. package/dist/commands/lint.d.ts +14 -0
  227. package/dist/commands/lint.js +45 -0
  228. package/dist/commands/lint.js.map +1 -0
  229. package/dist/commands/orphans.d.ts +10 -0
  230. package/dist/commands/orphans.js +74 -0
  231. package/dist/commands/orphans.js.map +1 -0
  232. package/dist/commands/outline.d.ts +7 -0
  233. package/dist/commands/outline.js +54 -0
  234. package/dist/commands/outline.js.map +1 -0
  235. package/dist/commands/query.d.ts +18 -0
  236. package/dist/commands/query.js +341 -0
  237. package/dist/commands/query.js.map +1 -0
  238. package/dist/commands/refs-to.d.ts +8 -0
  239. package/dist/commands/refs-to.js +65 -0
  240. package/dist/commands/refs-to.js.map +1 -0
  241. package/dist/commands/refs.d.ts +10 -0
  242. package/dist/commands/refs.js +103 -0
  243. package/dist/commands/refs.js.map +1 -0
  244. package/dist/commands/rename-file.d.ts +16 -0
  245. package/dist/commands/rename-file.js +215 -0
  246. package/dist/commands/rename-file.js.map +1 -0
  247. package/dist/commands/rename-heading.d.ts +10 -0
  248. package/dist/commands/rename-heading.js +182 -0
  249. package/dist/commands/rename-heading.js.map +1 -0
  250. package/dist/commands/schema.d.ts +10 -0
  251. package/dist/commands/schema.js +34 -0
  252. package/dist/commands/schema.js.map +1 -0
  253. package/dist/commands/scripts.d.ts +59 -0
  254. package/dist/commands/scripts.js +222 -0
  255. package/dist/commands/scripts.js.map +1 -0
  256. package/dist/commands/section.d.ts +9 -0
  257. package/dist/commands/section.js +49 -0
  258. package/dist/commands/section.js.map +1 -0
  259. package/dist/commands/serve.d.ts +6 -0
  260. package/dist/commands/serve.js +48 -0
  261. package/dist/commands/serve.js.map +1 -0
  262. package/dist/commands/stats.d.ts +6 -0
  263. package/dist/commands/stats.js +109 -0
  264. package/dist/commands/stats.js.map +1 -0
  265. package/dist/commands/structure.d.ts +6 -0
  266. package/dist/commands/structure.js +130 -0
  267. package/dist/commands/structure.js.map +1 -0
  268. package/dist/commands/tables.d.ts +8 -0
  269. package/dist/commands/tables.js +77 -0
  270. package/dist/commands/tables.js.map +1 -0
  271. package/dist/commands/tasks.d.ts +8 -0
  272. package/dist/commands/tasks.js +59 -0
  273. package/dist/commands/tasks.js.map +1 -0
  274. package/dist/commands/toc.d.ts +18 -0
  275. package/dist/commands/toc.js +105 -0
  276. package/dist/commands/toc.js.map +1 -0
  277. package/dist/commands/update-check.d.ts +36 -0
  278. package/dist/commands/update-check.js +119 -0
  279. package/dist/commands/update-check.js.map +1 -0
  280. package/dist/commands/usage.d.ts +56 -0
  281. package/dist/commands/usage.js +883 -0
  282. package/dist/commands/usage.js.map +1 -0
  283. package/dist/commands/validate-frontmatter.d.ts +13 -0
  284. package/dist/commands/validate-frontmatter.js +34 -0
  285. package/dist/commands/validate-frontmatter.js.map +1 -0
  286. package/dist/completion/model.d.ts +49 -0
  287. package/dist/completion/model.js +194 -0
  288. package/dist/completion/model.js.map +1 -0
  289. package/dist/completion/shells.d.ts +2 -0
  290. package/dist/completion/shells.js +280 -0
  291. package/dist/completion/shells.js.map +1 -0
  292. package/dist/config-schema.d.ts +15 -0
  293. package/dist/config-schema.js +44 -0
  294. package/dist/config-schema.js.map +1 -0
  295. package/dist/config.d.ts +102 -0
  296. package/dist/config.js +614 -0
  297. package/dist/config.js.map +1 -0
  298. package/dist/context.d.ts +106 -0
  299. package/dist/context.js +202 -0
  300. package/dist/context.js.map +1 -0
  301. package/dist/contract/describe.d.ts +84 -0
  302. package/dist/contract/describe.js +104 -0
  303. package/dist/contract/describe.js.map +1 -0
  304. package/dist/contract/registry.d.ts +2 -0
  305. package/dist/contract/registry.js +622 -0
  306. package/dist/contract/registry.js.map +1 -0
  307. package/dist/contract/schemas/agent.d.ts +2 -0
  308. package/dist/contract/schemas/agent.js +572 -0
  309. package/dist/contract/schemas/agent.js.map +1 -0
  310. package/dist/contract/schemas/archive.d.ts +3 -0
  311. package/dist/contract/schemas/archive.js +227 -0
  312. package/dist/contract/schemas/archive.js.map +1 -0
  313. package/dist/contract/schemas/index.d.ts +11 -0
  314. package/dist/contract/schemas/index.js +49 -0
  315. package/dist/contract/schemas/index.js.map +1 -0
  316. package/dist/contract/schemas/markdown.d.ts +15 -0
  317. package/dist/contract/schemas/markdown.js +1035 -0
  318. package/dist/contract/schemas/markdown.js.map +1 -0
  319. package/dist/contract/schemas/meta.d.ts +5 -0
  320. package/dist/contract/schemas/meta.js +233 -0
  321. package/dist/contract/schemas/meta.js.map +1 -0
  322. package/dist/contract/schemas/scripts.d.ts +4 -0
  323. package/dist/contract/schemas/scripts.js +183 -0
  324. package/dist/contract/schemas/scripts.js.map +1 -0
  325. package/dist/contract/schemas/shared.d.ts +11 -0
  326. package/dist/contract/schemas/shared.js +26 -0
  327. package/dist/contract/schemas/shared.js.map +1 -0
  328. package/dist/contract/schemas/usage.d.ts +6 -0
  329. package/dist/contract/schemas/usage.js +489 -0
  330. package/dist/contract/schemas/usage.js.map +1 -0
  331. package/dist/contract/types.d.ts +63 -0
  332. package/dist/contract/types.js +2 -0
  333. package/dist/contract/types.js.map +1 -0
  334. package/dist/contract/version.d.ts +20 -0
  335. package/dist/contract/version.js +21 -0
  336. package/dist/contract/version.js.map +1 -0
  337. package/dist/diff.d.ts +156 -0
  338. package/dist/diff.js +500 -0
  339. package/dist/diff.js.map +1 -0
  340. package/dist/edit-plan.d.ts +133 -0
  341. package/dist/edit-plan.js +245 -0
  342. package/dist/edit-plan.js.map +1 -0
  343. package/dist/fix/markdownlint-fixer.d.ts +34 -0
  344. package/dist/fix/markdownlint-fixer.js +125 -0
  345. package/dist/fix/markdownlint-fixer.js.map +1 -0
  346. package/dist/fix/registry.d.ts +48 -0
  347. package/dist/fix/registry.js +28 -0
  348. package/dist/fix/registry.js.map +1 -0
  349. package/dist/fix/relative-links-fixer.d.ts +21 -0
  350. package/dist/fix/relative-links-fixer.js +96 -0
  351. package/dist/fix/relative-links-fixer.js.map +1 -0
  352. package/dist/fix/snippets-fixer.d.ts +2 -0
  353. package/dist/fix/snippets-fixer.js +64 -0
  354. package/dist/fix/snippets-fixer.js.map +1 -0
  355. package/dist/fix/toc-fixer.d.ts +2 -0
  356. package/dist/fix/toc-fixer.js +94 -0
  357. package/dist/fix/toc-fixer.js.map +1 -0
  358. package/dist/formats.d.ts +22 -0
  359. package/dist/formats.js +34 -0
  360. package/dist/formats.js.map +1 -0
  361. package/dist/formatters.d.ts +11 -0
  362. package/dist/formatters.js +48 -0
  363. package/dist/formatters.js.map +1 -0
  364. package/dist/frontmatter-validation.d.ts +11 -0
  365. package/dist/frontmatter-validation.js +188 -0
  366. package/dist/frontmatter-validation.js.map +1 -0
  367. package/dist/git.d.ts +40 -0
  368. package/dist/git.js +124 -0
  369. package/dist/git.js.map +1 -0
  370. package/dist/graph.d.ts +50 -0
  371. package/dist/graph.js +200 -0
  372. package/dist/graph.js.map +1 -0
  373. package/dist/input-selection.d.ts +9 -0
  374. package/dist/input-selection.js +122 -0
  375. package/dist/input-selection.js.map +1 -0
  376. package/dist/input.d.ts +2 -0
  377. package/dist/input.js +32 -0
  378. package/dist/input.js.map +1 -0
  379. package/dist/link-target.d.ts +39 -0
  380. package/dist/link-target.js +68 -0
  381. package/dist/link-target.js.map +1 -0
  382. package/dist/lint.d.ts +13 -0
  383. package/dist/lint.js +27 -0
  384. package/dist/lint.js.map +1 -0
  385. package/dist/markdown-ast.d.ts +73 -0
  386. package/dist/markdown-ast.js +187 -0
  387. package/dist/markdown-ast.js.map +1 -0
  388. package/dist/object-path.d.ts +14 -0
  389. package/dist/object-path.js +14 -0
  390. package/dist/object-path.js.map +1 -0
  391. package/dist/option-utils.d.ts +13 -0
  392. package/dist/option-utils.js +25 -0
  393. package/dist/option-utils.js.map +1 -0
  394. package/dist/outline.d.ts +16 -0
  395. package/dist/outline.js +32 -0
  396. package/dist/outline.js.map +1 -0
  397. package/dist/query/entities.d.ts +60 -0
  398. package/dist/query/entities.js +219 -0
  399. package/dist/query/entities.js.map +1 -0
  400. package/dist/query/execute.d.ts +22 -0
  401. package/dist/query/execute.js +0 -0
  402. package/dist/query/execute.js.map +1 -0
  403. package/dist/query/plan.d.ts +76 -0
  404. package/dist/query/plan.js +183 -0
  405. package/dist/query/plan.js.map +1 -0
  406. package/dist/query/render.d.ts +3 -0
  407. package/dist/query/render.js +39 -0
  408. package/dist/query/render.js.map +1 -0
  409. package/dist/refs.d.ts +19 -0
  410. package/dist/refs.js +10 -0
  411. package/dist/refs.js.map +1 -0
  412. package/dist/result.d.ts +49 -0
  413. package/dist/result.js +47 -0
  414. package/dist/result.js.map +1 -0
  415. package/dist/runtime.d.ts +35 -0
  416. package/dist/runtime.js +77 -0
  417. package/dist/runtime.js.map +1 -0
  418. package/dist/sarif.d.ts +36 -0
  419. package/dist/sarif.js +30 -0
  420. package/dist/sarif.js.map +1 -0
  421. package/dist/scripts/execute.d.ts +65 -0
  422. package/dist/scripts/execute.js +235 -0
  423. package/dist/scripts/execute.js.map +1 -0
  424. package/dist/scripts/registry.d.ts +55 -0
  425. package/dist/scripts/registry.js +103 -0
  426. package/dist/scripts/registry.js.map +1 -0
  427. package/dist/scripts/resolve.d.ts +90 -0
  428. package/dist/scripts/resolve.js +288 -0
  429. package/dist/scripts/resolve.js.map +1 -0
  430. package/dist/sections.d.ts +53 -0
  431. package/dist/sections.js +100 -0
  432. package/dist/sections.js.map +1 -0
  433. package/dist/serve/errors.d.ts +25 -0
  434. package/dist/serve/errors.js +45 -0
  435. package/dist/serve/errors.js.map +1 -0
  436. package/dist/serve/paths.d.ts +32 -0
  437. package/dist/serve/paths.js +71 -0
  438. package/dist/serve/paths.js.map +1 -0
  439. package/dist/serve/server.d.ts +31 -0
  440. package/dist/serve/server.js +123 -0
  441. package/dist/serve/server.js.map +1 -0
  442. package/dist/serve/tools.d.ts +19 -0
  443. package/dist/serve/tools.js +597 -0
  444. package/dist/serve/tools.js.map +1 -0
  445. package/dist/snippets.d.ts +184 -0
  446. package/dist/snippets.js +454 -0
  447. package/dist/snippets.js.map +1 -0
  448. package/dist/sqlite-store.d.ts +62 -0
  449. package/dist/sqlite-store.js +104 -0
  450. package/dist/sqlite-store.js.map +1 -0
  451. package/dist/sqlite.d.ts +59 -0
  452. package/dist/sqlite.js +51 -0
  453. package/dist/sqlite.js.map +1 -0
  454. package/dist/toc.d.ts +58 -0
  455. package/dist/toc.js +83 -0
  456. package/dist/toc.js.map +1 -0
  457. package/dist/types.d.ts +7 -0
  458. package/dist/types.js +2 -0
  459. package/dist/types.js.map +1 -0
  460. package/dist/update-notifier.d.ts +95 -0
  461. package/dist/update-notifier.js +301 -0
  462. package/dist/update-notifier.js.map +1 -0
  463. package/dist/url-cache.d.ts +14 -0
  464. package/dist/url-cache.js +70 -0
  465. package/dist/url-cache.js.map +1 -0
  466. package/dist/usage/aggregate.d.ts +107 -0
  467. package/dist/usage/aggregate.js +435 -0
  468. package/dist/usage/aggregate.js.map +1 -0
  469. package/dist/usage/db/index.d.ts +49 -0
  470. package/dist/usage/db/index.js +118 -0
  471. package/dist/usage/db/index.js.map +1 -0
  472. package/dist/usage/db/migrations.d.ts +29 -0
  473. package/dist/usage/db/migrations.js +38 -0
  474. package/dist/usage/db/migrations.js.map +1 -0
  475. package/dist/usage/db/open.d.ts +33 -0
  476. package/dist/usage/db/open.js +37 -0
  477. package/dist/usage/db/open.js.map +1 -0
  478. package/dist/usage/db/schema.d.ts +18 -0
  479. package/dist/usage/db/schema.js +147 -0
  480. package/dist/usage/db/schema.js.map +1 -0
  481. package/dist/usage/db/store.d.ts +74 -0
  482. package/dist/usage/db/store.js +280 -0
  483. package/dist/usage/db/store.js.map +1 -0
  484. package/dist/usage/events.d.ts +202 -0
  485. package/dist/usage/events.js +243 -0
  486. package/dist/usage/events.js.map +1 -0
  487. package/dist/usage/filter.d.ts +43 -0
  488. package/dist/usage/filter.js +97 -0
  489. package/dist/usage/filter.js.map +1 -0
  490. package/dist/usage/providers/antigravity.d.ts +2 -0
  491. package/dist/usage/providers/antigravity.js +431 -0
  492. package/dist/usage/providers/antigravity.js.map +1 -0
  493. package/dist/usage/providers/claude-code.d.ts +2 -0
  494. package/dist/usage/providers/claude-code.js +400 -0
  495. package/dist/usage/providers/claude-code.js.map +1 -0
  496. package/dist/usage/providers/codex.d.ts +2 -0
  497. package/dist/usage/providers/codex.js +387 -0
  498. package/dist/usage/providers/codex.js.map +1 -0
  499. package/dist/usage/providers/gemini-cli.d.ts +2 -0
  500. package/dist/usage/providers/gemini-cli.js +466 -0
  501. package/dist/usage/providers/gemini-cli.js.map +1 -0
  502. package/dist/usage/providers/index.d.ts +23 -0
  503. package/dist/usage/providers/index.js +46 -0
  504. package/dist/usage/providers/index.js.map +1 -0
  505. package/dist/usage/providers/opencode.d.ts +2 -0
  506. package/dist/usage/providers/opencode.js +422 -0
  507. package/dist/usage/providers/opencode.js.map +1 -0
  508. package/dist/usage/providers/protobuf.d.ts +35 -0
  509. package/dist/usage/providers/protobuf.js +125 -0
  510. package/dist/usage/providers/protobuf.js.map +1 -0
  511. package/dist/usage/providers/types.d.ts +74 -0
  512. package/dist/usage/providers/types.js +2 -0
  513. package/dist/usage/providers/types.js.map +1 -0
  514. package/dist/usage/scan.d.ts +54 -0
  515. package/dist/usage/scan.js +216 -0
  516. package/dist/usage/scan.js.map +1 -0
  517. package/dist/version.d.ts +2 -0
  518. package/dist/version.js +8 -0
  519. package/dist/version.js.map +1 -0
  520. package/dist/workspace-index.d.ts +39 -0
  521. package/dist/workspace-index.js +265 -0
  522. package/dist/workspace-index.js.map +1 -0
  523. package/dist/workspace.d.ts +89 -0
  524. package/dist/workspace.js +219 -0
  525. package/dist/workspace.js.map +1 -0
  526. package/package.json +92 -0
@@ -0,0 +1,344 @@
1
+ /**
2
+ * What each provider leaves on disk that is worth keeping.
3
+ *
4
+ * This is data the archiver reads, exactly as `src/agent/targets/*.ts` is for
5
+ * the renderer and `ProviderCapabilities` is for the usage reports.
6
+ * `src/commands/archive.ts` must never branch on a provider name: a provider
7
+ * that stores plans somewhere unusual says so here, and adding a fourth
8
+ * assistant is a new entry in this list plus the usage provider it names.
9
+ *
10
+ * Selection is an **allowlist of directories**, not a filter over a whole home
11
+ * directory, and that is the design. `~/.claude` alone holds 340 MB of plugin
12
+ * payloads, a 71 MB downloaded binary, and a `jobs/` tree that on this machine
13
+ * was 343 MB of Rust build output — none of it conversation data, all of it
14
+ * things a blocklist would eventually fail to exclude. Walking only what is
15
+ * named here cannot pick them up by accident.
16
+ */
17
+ export const ARTIFACT_CLASSES = ["plan", "artifact", "transcript", "log"];
18
+ /** The classes `archive run` takes when `--include` is not given. */
19
+ export const DEFAULT_CLASSES = ["plan", "artifact"];
20
+ const isMarkdown = (relative) => relative.endsWith(".md");
21
+ const segments = (relative) => relative.split("/");
22
+ const under = (relative, directory) => segments(relative).includes(directory);
23
+ /**
24
+ * Claude Code, under `~/.claude`.
25
+ *
26
+ * Note what is *not* here: `plugins/`, `downloads/`, `backups/`, `file-history/`
27
+ * and `jobs/`. The first four are re-downloadable or derived, and `jobs/` is a
28
+ * scratch tree for background work that on a real machine is dominated by
29
+ * compiler output.
30
+ */
31
+ const CLAUDE_CODE = {
32
+ provider: "claude-code",
33
+ sets: [
34
+ {
35
+ id: "plans",
36
+ class: "plan",
37
+ description: "Plan documents written in plan mode",
38
+ root: "plans",
39
+ recursive: false,
40
+ match: isMarkdown,
41
+ },
42
+ {
43
+ id: "tool-results",
44
+ class: "artifact",
45
+ description: "Files tools produced: fetched PDFs, rendered pages, saved output",
46
+ root: "projects",
47
+ // Depth seven on a real corpus, which is deeper than the usage provider's
48
+ // own discovery walks — it descends only into `subagents/`.
49
+ recursive: true,
50
+ match: (relative) => under(relative, "tool-results"),
51
+ },
52
+ {
53
+ id: "memory",
54
+ class: "artifact",
55
+ description: "Per-project memory files",
56
+ root: "projects",
57
+ recursive: true,
58
+ match: (relative) => under(relative, "memory") && isMarkdown(relative),
59
+ },
60
+ {
61
+ id: "transcripts",
62
+ class: "transcript",
63
+ description: "Session and subagent transcripts",
64
+ root: "projects",
65
+ recursive: true,
66
+ match: (relative) => relative.endsWith(".jsonl") ||
67
+ (relative.endsWith(".meta.json") && segments(relative).at(-1).startsWith("agent-")),
68
+ },
69
+ {
70
+ id: "history",
71
+ class: "log",
72
+ description: "Prompt history and the daemon log",
73
+ root: "",
74
+ recursive: false,
75
+ match: (relative) => relative === "history.jsonl" || relative === "daemon.log",
76
+ },
77
+ {
78
+ id: "shell-snapshots",
79
+ class: "log",
80
+ description: "Captured shell environments",
81
+ root: "shell-snapshots",
82
+ recursive: false,
83
+ match: (relative) => relative.endsWith(".sh"),
84
+ },
85
+ ],
86
+ };
87
+ /** Codex, under `~/.codex`. Codex writes no plans. */
88
+ const CODEX = {
89
+ provider: "codex",
90
+ sets: [
91
+ {
92
+ id: "computer-use",
93
+ class: "artifact",
94
+ description: "Screenshots and captures from computer-use sessions",
95
+ root: "computer-use",
96
+ recursive: true,
97
+ match: () => true,
98
+ },
99
+ {
100
+ id: "transcripts",
101
+ class: "transcript",
102
+ description: "Rollout transcripts",
103
+ root: "sessions",
104
+ recursive: true,
105
+ match: (relative) => segments(relative).at(-1).startsWith("rollout-") && relative.endsWith(".jsonl"),
106
+ },
107
+ {
108
+ id: "history",
109
+ class: "log",
110
+ description: "Prompt history",
111
+ root: "",
112
+ recursive: false,
113
+ match: (relative) => relative === "history.jsonl",
114
+ },
115
+ {
116
+ id: "databases",
117
+ class: "log",
118
+ description: "Thread history and log databases",
119
+ root: "",
120
+ recursive: false,
121
+ match: (relative) => relative.endsWith(".sqlite"),
122
+ snapshot: "sqlite",
123
+ },
124
+ ],
125
+ };
126
+ /**
127
+ * Antigravity, under `~/.gemini/antigravity-cli`.
128
+ *
129
+ * A conversation's `brain/<id>/` holds `.system_generated/` — the machinery — and,
130
+ * at its top level, whatever the session actually produced:
131
+ * `implementation_plan.md`, `walkthrough.md`, `task.md`, generated scripts. The
132
+ * two are told apart by that one directory name, which is why every set here
133
+ * tests for it rather than listing filenames.
134
+ */
135
+ const ANTIGRAVITY = {
136
+ provider: "antigravity",
137
+ sets: [
138
+ {
139
+ id: "plans",
140
+ class: "plan",
141
+ description: "Implementation plans, walkthroughs, and task notes",
142
+ root: "brain",
143
+ recursive: true,
144
+ match: (relative) => !under(relative, ".system_generated") && isMarkdown(relative),
145
+ },
146
+ {
147
+ id: "outputs",
148
+ class: "artifact",
149
+ description: "Other files a conversation produced",
150
+ root: "brain",
151
+ recursive: true,
152
+ match: (relative) => !under(relative, ".system_generated") && !isMarkdown(relative),
153
+ },
154
+ {
155
+ id: "transcripts",
156
+ class: "transcript",
157
+ description: "Conversation transcripts",
158
+ root: "brain",
159
+ recursive: true,
160
+ // `transcript_full.jsonl` shares this schema and differs only in whether
161
+ // long strings are truncated, so archiving both would store the same
162
+ // conversation twice for no extra structural fact.
163
+ match: (relative) => relative.endsWith("/logs/transcript.jsonl"),
164
+ },
165
+ {
166
+ id: "history",
167
+ class: "log",
168
+ description: "Prompt history",
169
+ root: "",
170
+ recursive: false,
171
+ match: (relative) => relative === "history.jsonl",
172
+ },
173
+ {
174
+ id: "logs",
175
+ class: "log",
176
+ description: "CLI logs",
177
+ root: "log",
178
+ recursive: false,
179
+ match: (relative) => relative.endsWith(".log"),
180
+ },
181
+ {
182
+ id: "conversations",
183
+ class: "log",
184
+ description: "Conversation databases",
185
+ root: "conversations",
186
+ recursive: false,
187
+ // `-wal` and `-shm` are the live sidecars of the file next to them; the
188
+ // backup API folds their contents into the snapshot it produces.
189
+ match: (relative) => relative.endsWith(".db"),
190
+ snapshot: "sqlite",
191
+ },
192
+ ],
193
+ };
194
+ /**
195
+ * Gemini CLI, under `~/.gemini`.
196
+ *
197
+ * Every set is rooted at `tmp`, and that confinement is the point. `~/.gemini`
198
+ * is a shared tree: `antigravity-cli/` belongs to the other provider rooted
199
+ * here and would otherwise be archived twice, `antigravity/` is the IDE's store
200
+ * and is encrypted at rest, and `oauth_creds.json` is a credential. None of
201
+ * them is reachable from `tmp`.
202
+ *
203
+ * There is deliberately no catch-all under `tmp` either: the CLI downloads
204
+ * helper binaries into `tmp/bin/` — a 3.2 MB `rg` on this machine — beside the
205
+ * projects. Every matcher below requires a named directory segment, so nothing
206
+ * that is not conversation data can match one.
207
+ */
208
+ const GEMINI_CLI = {
209
+ provider: "gemini-cli",
210
+ sets: [
211
+ {
212
+ id: "plans",
213
+ class: "plan",
214
+ description: "Plan documents",
215
+ root: "tmp",
216
+ recursive: true,
217
+ // <slug>/<session uuid>/plans/<name>.md — the directory name is the whole
218
+ // distinction, exactly as `.system_generated` is for Antigravity.
219
+ match: (relative) => under(relative, "plans") && isMarkdown(relative),
220
+ },
221
+ {
222
+ id: "tool-outputs",
223
+ class: "artifact",
224
+ description: "Captured tool output",
225
+ root: "tmp",
226
+ recursive: true,
227
+ match: (relative) => under(relative, "tool-outputs"),
228
+ },
229
+ {
230
+ id: "transcripts",
231
+ class: "transcript",
232
+ description: "Session and subagent chat transcripts",
233
+ root: "tmp",
234
+ recursive: true,
235
+ match: (relative) => under(relative, "chats") && relative.endsWith(".jsonl"),
236
+ },
237
+ {
238
+ id: "history",
239
+ class: "log",
240
+ description: "Prompt and slash-command history",
241
+ root: "tmp",
242
+ recursive: true,
243
+ // Depth-checked rather than matched on the basename, so that a `logs.json`
244
+ // written deeper in a project cannot be swept in as project history.
245
+ match: (relative) => segments(relative).length === 2 && segments(relative)[1] === "logs.json",
246
+ },
247
+ ],
248
+ };
249
+ /**
250
+ * OpenCode, under `$XDG_DATA_HOME/opencode` (default `~/.local/share/opencode`).
251
+ *
252
+ * The first provider whose entire transcript corpus lives inside a single
253
+ * `log`-class file: there is no per-session transcript to select, because the
254
+ * conversations are rows in `opencode.db`. Archiving the database archives them
255
+ * all, which is why that set is opt-in like every other transcript source.
256
+ */
257
+ const OPENCODE = {
258
+ provider: "opencode",
259
+ sets: [
260
+ {
261
+ id: "session-diffs",
262
+ class: "artifact",
263
+ description: "Per-session file diffs",
264
+ root: "storage",
265
+ recursive: true,
266
+ match: (relative) => relative.endsWith(".json"),
267
+ },
268
+ {
269
+ id: "logs",
270
+ class: "log",
271
+ description: "CLI logs",
272
+ root: "log",
273
+ recursive: false,
274
+ match: (relative) => relative.endsWith(".log"),
275
+ },
276
+ {
277
+ id: "snapshots",
278
+ class: "log",
279
+ description: "Bare git repositories holding pre-edit file snapshots",
280
+ root: "snapshot",
281
+ recursive: true,
282
+ // Class `log` rather than `artifact`: this is an object store mirroring
283
+ // the working tree, the same category as Claude Code's `file-history/`,
284
+ // which is excluded outright. It is the only record of pre-edit state, so
285
+ // it is kept — but it must never land in a default run.
286
+ match: () => true,
287
+ },
288
+ {
289
+ id: "database",
290
+ class: "log",
291
+ description: "The session store: sessions, messages, parts, and projects",
292
+ root: "",
293
+ recursive: false,
294
+ // Exact equality, so the live `-wal` and `-shm` sidecars are never matched
295
+ // on their own; the backup API folds their contents into the snapshot.
296
+ match: (relative) => relative === "opencode.db",
297
+ snapshot: "sqlite",
298
+ },
299
+ ],
300
+ };
301
+ export const ARCHIVE_PROFILES = [
302
+ CLAUDE_CODE,
303
+ CODEX,
304
+ ANTIGRAVITY,
305
+ GEMINI_CLI,
306
+ OPENCODE,
307
+ ];
308
+ export function profileFor(provider) {
309
+ return ARCHIVE_PROFILES.find((profile) => profile.provider === provider);
310
+ }
311
+ /** Parses `--include plans,transcripts` into the classes it names. */
312
+ export function parseClasses(value) {
313
+ if (value === undefined)
314
+ return [...DEFAULT_CLASSES];
315
+ const names = value
316
+ .split(",")
317
+ .map((part) => part.trim())
318
+ .filter(Boolean);
319
+ if (names.length === 0)
320
+ throw new Error("--include needs at least one class");
321
+ // Plural spellings are what the classes are called on the command line, and
322
+ // singular is what a row reports, so both are accepted rather than making the
323
+ // caller remember which surface they are on.
324
+ const aliases = {
325
+ plan: "plan",
326
+ plans: "plan",
327
+ artifact: "artifact",
328
+ artifacts: "artifact",
329
+ transcript: "transcript",
330
+ transcripts: "transcript",
331
+ log: "log",
332
+ logs: "log",
333
+ };
334
+ const chosen = new Set();
335
+ for (const name of names) {
336
+ const resolved = aliases[name.toLowerCase()];
337
+ if (!resolved) {
338
+ throw new Error(`Invalid --include value: ${name} (expected ${ARTIFACT_CLASSES.map((c) => `${c}s`).join(", ")})`);
339
+ }
340
+ chosen.add(resolved);
341
+ }
342
+ return ARTIFACT_CLASSES.filter((name) => chosen.has(name));
343
+ }
344
+ //# sourceMappingURL=sets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sets.js","sourceRoot":"","sources":["../../src/archive/sets.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Reading a ustar archive.
3
+ *
4
+ * The counterpart to `src/agent/package/tar.ts`, which has only ever written.
5
+ * Kept in a separate module because an archive that can be read back is what
6
+ * makes the artifact store an archive rather than a write-only pile: `archive
7
+ * extract` and `archive verify --deep` both go through here.
8
+ *
9
+ * Only the ustar features the writer emits are handled — regular files,
10
+ * directories, and the `prefix` split for long paths. A PAX or GNU long-name
11
+ * header is reported rather than guessed at, because this reader's whole job is
12
+ * to say exactly what a segment contains.
13
+ */
14
+ export interface TarMember {
15
+ /** Path inside the archive, with the `prefix` field rejoined. */
16
+ path: string;
17
+ mode: number;
18
+ size: number;
19
+ /** Byte offset of the member's *data* within the uncompressed archive. */
20
+ offset: number;
21
+ directory: boolean;
22
+ }
23
+ export declare class TarFormatError extends Error {
24
+ constructor(message: string);
25
+ }
26
+ /**
27
+ * Lists what an uncompressed archive holds, without copying any file data.
28
+ *
29
+ * The offsets this returns are what the archive index stores, so a later
30
+ * extraction can decompress a segment and slice straight to one member rather
31
+ * than walking every header again.
32
+ */
33
+ export declare function listMembers(tar: Buffer): TarMember[];
34
+ /** The bytes of one member, from the uncompressed archive it was listed in. */
35
+ export declare function readMember(tar: Buffer, member: TarMember): Buffer;
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Reading a ustar archive.
3
+ *
4
+ * The counterpart to `src/agent/package/tar.ts`, which has only ever written.
5
+ * Kept in a separate module because an archive that can be read back is what
6
+ * makes the artifact store an archive rather than a write-only pile: `archive
7
+ * extract` and `archive verify --deep` both go through here.
8
+ *
9
+ * Only the ustar features the writer emits are handled — regular files,
10
+ * directories, and the `prefix` split for long paths. A PAX or GNU long-name
11
+ * header is reported rather than guessed at, because this reader's whole job is
12
+ * to say exactly what a segment contains.
13
+ */
14
+ const BLOCK = 512;
15
+ export class TarFormatError extends Error {
16
+ constructor(message) {
17
+ super(message);
18
+ this.name = "TarFormatError";
19
+ }
20
+ }
21
+ function cstring(block, start, length) {
22
+ const slice = block.subarray(start, start + length);
23
+ const end = slice.indexOf(0);
24
+ return slice.subarray(0, end === -1 ? slice.length : end).toString("utf8");
25
+ }
26
+ function octal(block, start, length) {
27
+ const text = cstring(block, start, length).trim();
28
+ if (!text)
29
+ return 0;
30
+ const value = Number.parseInt(text, 8);
31
+ if (!Number.isFinite(value))
32
+ throw new TarFormatError(`Malformed octal field: ${text}`);
33
+ return value;
34
+ }
35
+ function isZero(block) {
36
+ for (const byte of block)
37
+ if (byte !== 0)
38
+ return false;
39
+ return true;
40
+ }
41
+ /**
42
+ * Lists what an uncompressed archive holds, without copying any file data.
43
+ *
44
+ * The offsets this returns are what the archive index stores, so a later
45
+ * extraction can decompress a segment and slice straight to one member rather
46
+ * than walking every header again.
47
+ */
48
+ export function listMembers(tar) {
49
+ const members = [];
50
+ let position = 0;
51
+ while (position + BLOCK <= tar.length) {
52
+ const header = tar.subarray(position, position + BLOCK);
53
+ if (isZero(header))
54
+ break; // End-of-archive marker.
55
+ const magic = cstring(header, 257, 6);
56
+ if (magic !== "ustar") {
57
+ throw new TarFormatError(`Not a ustar header at offset ${position}: magic ${magic || "(none)"}`);
58
+ }
59
+ const type = cstring(header, 156, 1) || "0";
60
+ if (type !== "0" && type !== "" && type !== "5") {
61
+ throw new TarFormatError(`Unsupported ustar entry type ${type} at offset ${position}`);
62
+ }
63
+ const name = cstring(header, 0, 100);
64
+ const prefix = cstring(header, 345, 155);
65
+ const size = octal(header, 124, 12);
66
+ const directory = type === "5";
67
+ const joined = prefix ? `${prefix}/${name}` : name;
68
+ members.push({
69
+ // The writer appends a slash to a directory entry's name; drop it so the
70
+ // path matches what an entry list would have called it.
71
+ path: directory ? joined.replace(/\/+$/, "") : joined,
72
+ mode: octal(header, 100, 8),
73
+ size,
74
+ offset: position + BLOCK,
75
+ directory,
76
+ });
77
+ const padded = Math.ceil(size / BLOCK) * BLOCK;
78
+ position += BLOCK + (directory ? 0 : padded);
79
+ }
80
+ return members;
81
+ }
82
+ /** The bytes of one member, from the uncompressed archive it was listed in. */
83
+ export function readMember(tar, member) {
84
+ const end = member.offset + member.size;
85
+ if (end > tar.length) {
86
+ throw new TarFormatError(`Member ${member.path} runs past the end of the archive (${end} > ${tar.length})`);
87
+ }
88
+ return tar.subarray(member.offset, end);
89
+ }
90
+ //# sourceMappingURL=tar-read.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tar-read.js","sourceRoot":"","sources":["../../src/archive/tar-read.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ import type { Issue } from "./types.js";
2
+ /** The discriminator every document this module writes carries. */
3
+ export declare const BASELINE_FORMAT = "cairn-md-audit-baseline";
4
+ /** The pre-rename discriminator, still accepted on committed baselines. */
5
+ export declare const LEGACY_BASELINE_FORMAT = "claude-cli-md-audit-baseline";
6
+ /** True for a document either spelling of this tool wrote. */
7
+ export declare function isBaselineFormat(value: unknown): boolean;
8
+ /** The structure version of the baseline document, not the package version. */
9
+ export declare const BASELINE_VERSION = "1";
10
+ export interface BaselineEntry {
11
+ checker: string;
12
+ /** Workspace-relative, with `/` separators. */
13
+ file: string;
14
+ message: string;
15
+ /** How many times the finding was recorded, so a new duplicate still fails. */
16
+ count: number;
17
+ }
18
+ export interface BaselineDocument {
19
+ baselineFormat?: string;
20
+ version?: string;
21
+ generator?: {
22
+ name: string;
23
+ version: string;
24
+ };
25
+ entries?: BaselineEntry[];
26
+ }
27
+ export interface BaselineApplication {
28
+ kept: Issue[];
29
+ suppressed: number;
30
+ matched: number;
31
+ /** Entries that matched nothing, reported but never blocking. */
32
+ stale: BaselineEntry[];
33
+ /** True when the document is not one this tool wrote. */
34
+ foreign: boolean;
35
+ }
36
+ /**
37
+ * Workspace-relative, `/`-separated.
38
+ *
39
+ * A baseline holding absolute paths would match nothing after a checkout into
40
+ * a different directory, which is the normal case in CI.
41
+ */
42
+ export declare function baselinePath(file: string, root: string): string;
43
+ /**
44
+ * Reads a baseline document.
45
+ *
46
+ * A missing or unparseable file throws, matching how `agent audit --baseline`
47
+ * treats a path that is not there. A *foreign* document is reported as a
48
+ * finding by `applyBaseline` instead, because guessing at another tool's schema
49
+ * would produce suppression nobody can trust.
50
+ */
51
+ export declare function readBaseline(file: string): BaselineDocument;
52
+ /** Builds the document `--write-baseline` records. */
53
+ export declare function buildBaseline(findings: readonly Issue[], root: string, generator: {
54
+ name: string;
55
+ version: string;
56
+ }): BaselineDocument;
57
+ /**
58
+ * Partitions findings into those the baseline already recorded and those it did
59
+ * not.
60
+ *
61
+ * Findings are consumed in the order given, so with a baseline `count` of one
62
+ * and two matching findings the first is suppressed and the second reported.
63
+ */
64
+ export declare function applyBaseline(findings: readonly Issue[], document: BaselineDocument, root: string): BaselineApplication;
65
+ /** Writes a baseline document, replacing any existing one. */
66
+ export declare function writeBaseline(file: string, document: BaselineDocument): void;