@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,74 @@
1
+ import type { FileAggregate, ParsedFile, TranscriptKind } from "../events.js";
2
+ /**
3
+ * What a provider can report on.
4
+ *
5
+ * This is data the renderer reads, exactly as `TargetProfile` is for
6
+ * `src/agent/render.ts`. `src/commands/usage.ts` must never branch on
7
+ * `provider.name`: a report a provider cannot serve is decided here, so adding
8
+ * a second LLM's logs is a new module plus a registry line and nothing else.
9
+ */
10
+ export interface ProviderCapabilities {
11
+ tokens: boolean;
12
+ /** Cache read and cache write counters, separately from plain input tokens. */
13
+ cacheTokens: boolean;
14
+ tools: boolean;
15
+ skills: boolean;
16
+ subagents: boolean;
17
+ hooks: boolean;
18
+ mcp: boolean;
19
+ slashCommands: boolean;
20
+ /** Whether records carry the working directory a session ran in. */
21
+ projects: boolean;
22
+ }
23
+ /** A transcript found on disk, described without opening it. */
24
+ export interface TranscriptFile {
25
+ /** Absolute path. */
26
+ file: string;
27
+ /** Path relative to the provider root; the index shard keys on this. */
28
+ relative: string;
29
+ /** Shard the aggregate belongs to; a filesystem-safe slug. */
30
+ shard: string;
31
+ kind: TranscriptKind;
32
+ size: number;
33
+ mtimeMs: number;
34
+ }
35
+ export interface DiscoverOptions {
36
+ /** Include subagent transcripts. */
37
+ subagents: boolean;
38
+ /**
39
+ * Drop files last modified before this instant.
40
+ *
41
+ * A transcript is append-only, so an mtime older than the window start cannot
42
+ * contain a record inside it. This is the difference between opening a handful
43
+ * of files and opening every one of them.
44
+ */
45
+ modifiedSince?: number;
46
+ }
47
+ export interface ProviderEnvironment {
48
+ env: NodeJS.ProcessEnv;
49
+ home: string;
50
+ /** Explicit `--logs <dir>` override, which wins over every discovery rule. */
51
+ override?: string;
52
+ }
53
+ export interface UsageProvider {
54
+ readonly name: string;
55
+ readonly title: string;
56
+ /** One line describing where this provider's logs come from. */
57
+ readonly source: string;
58
+ readonly capabilities: ProviderCapabilities;
59
+ /** The log root, or null when this provider has left nothing on this machine. */
60
+ root(context: ProviderEnvironment): string | null;
61
+ /** Enumerate candidate transcripts under a root, without parsing them. */
62
+ discover(root: string, options: DiscoverOptions): TranscriptFile[];
63
+ /** Reduce one transcript to its aggregate. Never throws on malformed content. */
64
+ read(file: TranscriptFile): Promise<FileAggregate>;
65
+ /**
66
+ * The same single pass as {@link read}, also returning the per-occurrence
67
+ * event decomposition the usage store keeps.
68
+ *
69
+ * `read` is the aggregate half of this and stays on the interface because
70
+ * every rollup wants only that; a caller that needs neither the events nor a
71
+ * second pass should keep calling it.
72
+ */
73
+ parse(file: TranscriptFile): Promise<ParsedFile>;
74
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/usage/providers/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,54 @@
1
+ import type { FileAggregate } from "./events.js";
2
+ import type { ProjectSelector, Window } from "./filter.js";
3
+ import type { UsageProvider } from "./providers/types.js";
4
+ export interface ScanOptions {
5
+ provider: UsageProvider;
6
+ root: string;
7
+ subagents: boolean;
8
+ window: Window;
9
+ projects: readonly ProjectSelector[];
10
+ /** Keep only the n most recent sessions. Applied after aggregation. */
11
+ last?: number;
12
+ /** When false the store is neither read nor written. */
13
+ useIndex: boolean;
14
+ /** Re-parse every file even on a hit, then rewrite its rows. */
15
+ rebuild?: boolean;
16
+ /** Overrides the discovered store path. */
17
+ databasePath?: string;
18
+ concurrency?: number;
19
+ }
20
+ export interface ScanCounters {
21
+ /** Transcripts the provider found, after the mtime prune. */
22
+ discovered: number;
23
+ /** Served from the index without opening the file. */
24
+ cached: number;
25
+ /** Opened and parsed. */
26
+ parsed: number;
27
+ /** Found but unreadable. */
28
+ skipped: number;
29
+ /** Lines that were not valid JSON, across every file parsed. */
30
+ malformed: number;
31
+ /** Aggregates left after the project and window filters. */
32
+ selected: number;
33
+ }
34
+ export interface ScanFailure {
35
+ file: string;
36
+ reason: string;
37
+ }
38
+ export interface ScanResult {
39
+ files: FileAggregate[];
40
+ counters: ScanCounters;
41
+ failures: ScanFailure[];
42
+ /** The store this scan read and wrote, or null under `--no-index`. */
43
+ cacheRoot: string | null;
44
+ }
45
+ export declare function defaultScanConcurrency(): number;
46
+ export declare function scan(options: ScanOptions): Promise<ScanResult>;
47
+ /**
48
+ * Keeps every aggregate belonging to the n most recently active sessions.
49
+ *
50
+ * Sessions rather than files: a session's subagent transcripts are part of it,
51
+ * and `--last 10` that silently dropped nine tenths of the tokens would be
52
+ * worse than useless.
53
+ */
54
+ export declare function keepRecentSessions(files: FileAggregate[], last: number): FileAggregate[];
@@ -0,0 +1,216 @@
1
+ import os from "node:os";
2
+ import { sessionKey } from "./events.js";
3
+ import { clipToWindow, matchesProject, modifiedSinceFor } from "./filter.js";
4
+ import { getUsageDatabasePath, openUsageDatabase } from "./db/open.js";
5
+ import { deleteMissing, prepareWrites, selectFiles, storedFiles, writeParsedFile, } from "./db/store.js";
6
+ /**
7
+ * Discovery, store reconciliation, and parsing.
8
+ *
9
+ * This is the only module in `src/usage` that both reads the filesystem and
10
+ * writes the store; `filter.ts` and `aggregate.ts` stay pure so their rules can
11
+ * be tested without fixtures on disk.
12
+ *
13
+ * The store is a SQLite database rather than the directory of JSON shards this
14
+ * used to keep, but the reconciliation rules are unchanged and deliberately so:
15
+ * freshness is still `(size, mtime)`, and a walk that discovery pruned still may
16
+ * not delete. What the database adds is the per-event grain, which no report
17
+ * reads today and no shard could have held.
18
+ */
19
+ /** How many files one transaction covers, so a large import is not one lock. */
20
+ const BATCH = 200;
21
+ /**
22
+ * Bounded worker pool, in the shape already used by `src/commands/audit.ts` and
23
+ * `src/commands/check-urls.ts`.
24
+ */
25
+ async function concurrent(items, limit, fn) {
26
+ const results = new Array(items.length);
27
+ let next = 0;
28
+ const worker = async () => {
29
+ while (next < items.length) {
30
+ const index = next++;
31
+ results[index] = await fn(items[index]);
32
+ }
33
+ };
34
+ await Promise.all(Array.from({ length: Math.min(Math.max(1, limit), items.length || 1) }, worker));
35
+ return results;
36
+ }
37
+ export function defaultScanConcurrency() {
38
+ return Math.max(2, Math.min(8, os.cpus().length));
39
+ }
40
+ function isFresh(entry, file) {
41
+ return entry !== undefined && entry.size === file.size && entry.mtimeMs === file.mtimeMs;
42
+ }
43
+ export async function scan(options) {
44
+ const counters = {
45
+ discovered: 0,
46
+ cached: 0,
47
+ parsed: 0,
48
+ skipped: 0,
49
+ malformed: 0,
50
+ selected: 0,
51
+ };
52
+ const failures = [];
53
+ const modifiedSince = modifiedSinceFor(options.window);
54
+ const discovered = options.provider.discover(options.root, {
55
+ subagents: options.subagents,
56
+ modifiedSince,
57
+ });
58
+ counters.discovered = discovered.length;
59
+ /**
60
+ * Whether discovery deliberately looked at only part of the corpus.
61
+ *
62
+ * A pruned walk must merge into the stored shard rather than replace it:
63
+ * rebuilding a shard from a `--since 7d` or `--no-subagents` discovery would
64
+ * evict every entry the walk never considered, so the next full scan would
65
+ * re-parse everything it had already done. Only a complete walk is entitled to
66
+ * drop entries, because only then does an entry's absence prove the transcript
67
+ * is gone.
68
+ */
69
+ const partial = modifiedSince !== undefined || !options.subagents;
70
+ const databasePath = options.useIndex ? (options.databasePath ?? getUsageDatabasePath()) : null;
71
+ const aggregates = [];
72
+ if (!databasePath) {
73
+ // `--no-index`: parse everything found and keep nothing.
74
+ const parsed = await concurrent(discovered, options.concurrency ?? defaultScanConcurrency(), async (file) => {
75
+ try {
76
+ return await options.provider.read(file);
77
+ }
78
+ catch (error) {
79
+ failures.push({ file: file.file, reason: error.message });
80
+ return null;
81
+ }
82
+ });
83
+ for (const aggregate of parsed) {
84
+ if (!aggregate) {
85
+ counters.skipped += 1;
86
+ continue;
87
+ }
88
+ counters.parsed += 1;
89
+ counters.malformed += aggregate.malformedLines;
90
+ aggregates.push(aggregate);
91
+ }
92
+ }
93
+ else {
94
+ const opened = openUsageDatabase({ path: databasePath });
95
+ const db = opened.db;
96
+ try {
97
+ const stored = storedFiles(db, options.provider.name);
98
+ const misses = [];
99
+ const seen = new Set();
100
+ for (const file of discovered) {
101
+ seen.add(file.relative);
102
+ if (!options.rebuild && isFresh(stored.get(file.relative), file))
103
+ counters.cached += 1;
104
+ else
105
+ misses.push(file);
106
+ }
107
+ if (misses.length > 0) {
108
+ const statements = prepareWrites(db);
109
+ const importedAt = new Date().toISOString();
110
+ // Parsing is the slow half and runs concurrently; writing is serial,
111
+ // because one SQLite connection has one writer.
112
+ for (let offset = 0; offset < misses.length; offset += BATCH) {
113
+ const batch = misses.slice(offset, offset + BATCH);
114
+ const parsed = await concurrent(batch, options.concurrency ?? defaultScanConcurrency(), async (file) => {
115
+ try {
116
+ return { file, parsed: await options.provider.parse(file) };
117
+ }
118
+ catch (error) {
119
+ failures.push({ file: file.file, reason: error.message });
120
+ return null;
121
+ }
122
+ });
123
+ db.exec("BEGIN");
124
+ try {
125
+ for (const result of parsed) {
126
+ if (!result) {
127
+ counters.skipped += 1;
128
+ continue;
129
+ }
130
+ counters.parsed += 1;
131
+ counters.malformed += result.parsed.aggregate.malformedLines;
132
+ writeParsedFile(statements, result.parsed, result.file.relative, importedAt, stored.get(result.file.relative)?.id);
133
+ }
134
+ db.exec("COMMIT");
135
+ }
136
+ catch (error) {
137
+ db.exec("ROLLBACK");
138
+ throw error;
139
+ }
140
+ }
141
+ }
142
+ // Only a complete walk may delete: absence proves the transcript is gone
143
+ // only when the walk would have found it.
144
+ if (!partial) {
145
+ db.exec("BEGIN");
146
+ try {
147
+ deleteMissing(db, options.provider.name, seen);
148
+ db.exec("COMMIT");
149
+ }
150
+ catch (error) {
151
+ db.exec("ROLLBACK");
152
+ throw error;
153
+ }
154
+ }
155
+ aggregates.push(...selectFiles(db, {
156
+ providers: [options.provider.name],
157
+ subagents: options.subagents,
158
+ since: options.window.since ?? undefined,
159
+ until: options.window.until ?? undefined,
160
+ }));
161
+ }
162
+ finally {
163
+ closeQuietly(db);
164
+ }
165
+ }
166
+ let selected = [];
167
+ for (const aggregate of aggregates) {
168
+ // Only some providers can tell a subagent transcript from its path; the
169
+ // rest record it inside the file, so the filter is applied again here on
170
+ // the parsed value. Discovery has already pruned whatever it could.
171
+ if (!options.subagents && aggregate.kind === "subagent")
172
+ continue;
173
+ if (!matchesProject(aggregate.project, options.projects))
174
+ continue;
175
+ const clipped = clipToWindow(aggregate, options.window);
176
+ if (clipped)
177
+ selected.push(clipped);
178
+ }
179
+ if (options.last !== undefined && options.last > 0) {
180
+ selected = keepRecentSessions(selected, options.last);
181
+ }
182
+ counters.selected = selected.length;
183
+ return { files: selected, counters, failures, cacheRoot: databasePath };
184
+ }
185
+ function closeQuietly(db) {
186
+ try {
187
+ db.close();
188
+ }
189
+ catch {
190
+ // A store that will not close cleanly must not fail a report that already
191
+ // has its numbers.
192
+ }
193
+ }
194
+ /**
195
+ * Keeps every aggregate belonging to the n most recently active sessions.
196
+ *
197
+ * Sessions rather than files: a session's subagent transcripts are part of it,
198
+ * and `--last 10` that silently dropped nine tenths of the tokens would be
199
+ * worse than useless.
200
+ */
201
+ export function keepRecentSessions(files, last) {
202
+ const latest = new Map();
203
+ for (const file of files) {
204
+ const key = sessionKey(file);
205
+ const current = latest.get(key);
206
+ if (current === undefined || file.lastTs > current)
207
+ latest.set(key, file.lastTs);
208
+ }
209
+ const ranked = [...latest.entries()]
210
+ .sort((a, b) => (a[1] < b[1] ? 1 : a[1] > b[1] ? -1 : 0))
211
+ .slice(0, last)
212
+ .map(([key]) => key);
213
+ const keep = new Set(ranked);
214
+ return files.filter((file) => keep.has(sessionKey(file)));
215
+ }
216
+ //# sourceMappingURL=scan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scan.js","sourceRoot":"","sources":["../../src/usage/scan.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const packageName: string;
2
+ export declare const packageVersion: string;
@@ -0,0 +1,8 @@
1
+ import { createRequire } from "node:module";
2
+ // Read the version at runtime rather than inlining it: semantic-release rewrites
3
+ // package.json at release time, so a literal here would always be stale.
4
+ // From dist/version.js, "../package.json" is the package root — always present in the tarball.
5
+ const manifest = createRequire(import.meta.url)("../package.json");
6
+ export const packageName = manifest.name;
7
+ export const packageVersion = manifest.version;
8
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,iFAAiF;AACjF,yEAAyE;AACzE,+FAA+F;AAC/F,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,iBAAiB,CAGhE,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC;AACzC,MAAM,CAAC,MAAM,cAAc,GAAG,QAAQ,CAAC,OAAO,CAAC"}
@@ -0,0 +1,39 @@
1
+ import type { MarkdownDocument } from "./workspace.js";
2
+ export interface FileFingerprint {
3
+ size: number;
4
+ mtimeMs: number;
5
+ }
6
+ export interface WorkspaceIndexStatus {
7
+ cachePath: string;
8
+ exists: boolean;
9
+ version: number;
10
+ indexed: number;
11
+ current: number;
12
+ stale: number;
13
+ missing: number;
14
+ }
15
+ export declare function getWorkspaceIndexPath(root: string, env?: NodeJS.ProcessEnv, home?: string): string;
16
+ export declare function fingerprint(filePath: string): FileFingerprint;
17
+ export declare class WorkspaceIndex {
18
+ readonly root: string;
19
+ readonly renderer: string;
20
+ readonly cachePath: string;
21
+ private loaded;
22
+ private exists;
23
+ private documents;
24
+ private readonly changed;
25
+ private readonly removed;
26
+ constructor(root: string, renderer: string, cachePath?: string);
27
+ private key;
28
+ private load;
29
+ get(filePath: string, current: FileFingerprint): MarkdownDocument | undefined;
30
+ set(filePath: string, current: FileFingerprint, document: MarkdownDocument): void;
31
+ invalidate(filePath: string): void;
32
+ replace(directory: string, records: Map<string, {
33
+ fingerprint: FileFingerprint;
34
+ document: MarkdownDocument;
35
+ }>): void;
36
+ status(files: string[]): WorkspaceIndexStatus;
37
+ clear(strict?: boolean): void;
38
+ flush(strict?: boolean): void;
39
+ }