@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,466 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import readline from "node:readline";
4
+ import { createReadStream } from "node:fs";
5
+ import { addTokens, emptyBucket, emptyTokens, utcDay } from "../events.js";
6
+ /**
7
+ * Google Gemini CLI chat transcripts.
8
+ *
9
+ * ```
10
+ * tmp/<slug>/chats/session-<local stamp>-<short id>.jsonl main
11
+ * tmp/<slug>/chats/<parent session uuid>/<short id>.jsonl subagent
12
+ * tmp/<slug>/.project_root the absolute project root
13
+ * tmp/<slug>/logs.json prompts and slash commands
14
+ * ```
15
+ *
16
+ * **This provider shares `~/.gemini` with `antigravity` and must not collide
17
+ * with it.** That one roots at `~/.gemini/antigravity-cli`; this one roots at
18
+ * `~/.gemini` and guards on `tmp/`, so neither can claim the other's tree.
19
+ *
20
+ * Line 1 is normally a header — `{sessionId, projectHash, startTime,
21
+ * lastUpdated, kind}`, plus `directories` on a subagent — but not always: at
22
+ * least one file in a real corpus begins with an ordinary record, so the header
23
+ * is detected rather than assumed. Later lines are either
24
+ * `{id, timestamp, type, content, toolCalls?, model, tokens?}` or a `$set`
25
+ * patch record.
26
+ *
27
+ * **It is the only provider that has to undo two distortions at once**, and a
28
+ * third on top:
29
+ *
30
+ * 1. `tokens.cached` is contained *inside* `tokens.input`, as Codex's is, so
31
+ * the cached part is subtracted out and reported as a cache read. Left
32
+ * merged, input reads several times high.
33
+ * 2. `tokens.input` is a **per-request context size and not a running total**,
34
+ * as Antigravity's is — it falls whenever context is trimmed, so it is
35
+ * summed. Differencing it produces nonsense.
36
+ * 3. One assistant turn is written **two to five times under a single `id`**,
37
+ * each copy carrying identical `tokens`. Counting every copy roughly doubles
38
+ * every figure, so tokens are deduplicated on `id`.
39
+ *
40
+ * `total === input + output + thoughts` holds on every record of a real corpus
41
+ * and is used as a validity guard. Unlike Antigravity's — where a wholesale
42
+ * protobuf renumbering would poison every field at once, so the whole file's
43
+ * token column is abandoned — these fields are *named*, so a record that fails
44
+ * the guard is only ever one bad record. It contributes no tokens and the rest
45
+ * of the file is kept.
46
+ */
47
+ /** The discovery root under the Gemini home; also what `root()` guards on. */
48
+ const TMP = "tmp";
49
+ const CHATS = "chats";
50
+ const PROJECT_ROOT = ".project_root";
51
+ const LOGS = "logs.json";
52
+ /**
53
+ * The guard's upper bound on one request's context.
54
+ *
55
+ * Comfortably above any real Gemini context window, and low enough that a
56
+ * misread field is caught rather than summed into the totals.
57
+ */
58
+ const MAX_CONTEXT_TOKENS = 4_000_000;
59
+ /** A finite number, or null when the field is absent or the wrong shape. */
60
+ function num(value) {
61
+ return typeof value === "number" && Number.isFinite(value) ? value : null;
62
+ }
63
+ function text(value) {
64
+ return typeof value === "string" && value ? value : null;
65
+ }
66
+ /**
67
+ * Normalizes one record's `tokens`, or returns null when it fails the guard.
68
+ *
69
+ * `cached` is subtracted out of `input` because Gemini counts a cache read
70
+ * inside its input figure, and reported separately. There is no cache-*write*
71
+ * counter anywhere on disk, so `cacheWrite` is always zero — the same shape
72
+ * Codex reports for a request that wrote no cache.
73
+ */
74
+ function readUsage(raw) {
75
+ const input = num(raw.input);
76
+ const output = num(raw.output);
77
+ const thoughts = num(raw.thoughts);
78
+ const cached = num(raw.cached);
79
+ const total = num(raw.total);
80
+ if (input === null || output === null || thoughts === null || total === null)
81
+ return null;
82
+ if (cached === null || cached < 0 || cached > input)
83
+ return null;
84
+ if (input < 0 || output < 0 || thoughts < 0)
85
+ return null;
86
+ if (input > MAX_CONTEXT_TOKENS)
87
+ return null;
88
+ if (total !== input + output + thoughts)
89
+ return null;
90
+ return {
91
+ input: input - cached,
92
+ output,
93
+ cacheRead: cached,
94
+ cacheWrite: 0,
95
+ cacheWrite5m: 0,
96
+ cacheWrite1h: 0,
97
+ thinking: thoughts,
98
+ webSearch: 0,
99
+ webFetch: 0,
100
+ requests: 1,
101
+ };
102
+ }
103
+ function emit(state, event) {
104
+ state.events.push({ ts: state.ts, ...event });
105
+ }
106
+ function bucketFor(state, timestamp) {
107
+ const day = timestamp ? utcDay(timestamp) : null;
108
+ if (!day)
109
+ return null;
110
+ const aggregate = state.aggregate;
111
+ if (!aggregate.firstTs || timestamp < aggregate.firstTs)
112
+ aggregate.firstTs = timestamp;
113
+ if (!aggregate.lastTs || timestamp > aggregate.lastTs)
114
+ aggregate.lastTs = timestamp;
115
+ return (aggregate.days[day] ??= emptyBucket());
116
+ }
117
+ /**
118
+ * Counts one flushed tool call.
119
+ *
120
+ * The name is kept exactly as Gemini wrote it. `invoke_agent` and
121
+ * `activate_skill` are this assistant's own builtins and are counted as such in
122
+ * `tools`, while also filling `agents` and `skills` — the same split
123
+ * `claude-code.ts` makes for `Agent` and `Skill`, and `codex.ts` for
124
+ * `spawn_agent`. Renaming them to Claude Code's vocabulary would print a tool
125
+ * that does not appear in the transcript.
126
+ */
127
+ function applyToolCall(state, bucket, call) {
128
+ const name = text(call.name);
129
+ if (!name)
130
+ return;
131
+ bucket.tools[name] = (bucket.tools[name] ?? 0) + 1;
132
+ emit(state, { kind: "tool_use", tool: name });
133
+ if (name === "invoke_agent") {
134
+ const role = text(call.args?.agent_name) ?? "(unrecorded)";
135
+ const totals = (bucket.agents[role] ??= { count: 0, maxDepth: 0 });
136
+ totals.count += 1;
137
+ emit(state, { kind: "agent", name: role });
138
+ }
139
+ else if (name === "activate_skill") {
140
+ const skill = text(call.args?.name);
141
+ if (skill) {
142
+ bucket.skills[skill] = (bucket.skills[skill] ?? 0) + 1;
143
+ emit(state, { kind: "skill", name: skill });
144
+ }
145
+ }
146
+ // `cancelled` is deliberately not counted: `DayBucket` has no cancelled
147
+ // counter outside `hooks`, and folding one into `errors` would report a
148
+ // user's interruption as a failure.
149
+ if (text(call.status) === "error") {
150
+ bucket.errors += 1;
151
+ emit(state, { kind: "error" });
152
+ }
153
+ }
154
+ function flushTools(state) {
155
+ for (const pending of state.pendingTools.values()) {
156
+ const bucket = bucketFor(state, pending.ts);
157
+ if (!bucket)
158
+ continue;
159
+ state.ts = pending.ts;
160
+ for (const call of pending.calls)
161
+ applyToolCall(state, bucket, call);
162
+ }
163
+ state.pendingTools.clear();
164
+ }
165
+ function applyRecord(state, record) {
166
+ // A `$set` patch never carries tokens or tool calls — only `lastUpdated`,
167
+ // `summary` (the session title, not a context reset), and `memoryScratchpad`.
168
+ // Its timestamp would otherwise open a spurious day bucket.
169
+ if (record.$set)
170
+ return;
171
+ const timestamp = text(record.timestamp);
172
+ const bucket = bucketFor(state, timestamp ?? undefined);
173
+ if (!bucket)
174
+ return;
175
+ state.ts = timestamp;
176
+ const id = text(record.id);
177
+ if (record.tokens && id && !state.tokenIds.has(id)) {
178
+ state.tokenIds.add(id);
179
+ const tokens = readUsage(record.tokens);
180
+ if (tokens) {
181
+ const model = text(record.model) ?? "(unknown)";
182
+ addTokens((bucket.models[model] ??= emptyTokens()), tokens);
183
+ emit(state, { kind: "response", model, tokens });
184
+ }
185
+ }
186
+ if (Array.isArray(record.toolCalls) && id) {
187
+ state.pendingTools.set(id, { ts: timestamp, calls: record.toolCalls });
188
+ }
189
+ // A subagent transcript's `user` record is the spawn instruction its parent
190
+ // injected, not a human turn. On a real corpus those outnumber real prompts
191
+ // fourteen to one, so counting them would make the prompt figure meaningless.
192
+ if (record.type === "user" && state.aggregate.kind === "main") {
193
+ bucket.prompts += 1;
194
+ emit(state, { kind: "prompt" });
195
+ }
196
+ }
197
+ /** Applies line 1 when it is a header rather than an ordinary record. */
198
+ function applyHeader(aggregate, record) {
199
+ const session = text(record.sessionId);
200
+ if (session)
201
+ aggregate.sessionId = session;
202
+ if (Array.isArray(record.directories)) {
203
+ const first = text(record.directories[0]);
204
+ if (first)
205
+ aggregate.project = first;
206
+ }
207
+ }
208
+ function isHeader(record) {
209
+ return typeof record.sessionId === "string" && record.type === undefined;
210
+ }
211
+ function listDirectory(directory) {
212
+ try {
213
+ return fs.readdirSync(directory, { withFileTypes: true });
214
+ }
215
+ catch {
216
+ return [];
217
+ }
218
+ }
219
+ function statOf(file) {
220
+ try {
221
+ const stats = fs.statSync(file);
222
+ return stats.isFile() ? stats : null;
223
+ }
224
+ catch {
225
+ return null;
226
+ }
227
+ }
228
+ /**
229
+ * The absolute project root for one slug directory, memoized.
230
+ *
231
+ * `.project_root` is exact where Claude Code's directory slug is lossy, so
232
+ * there is no need to reconstruct anything. `projectHash` in the header is a
233
+ * sha256 of this same path — a cross-check, not a source, since a hash cannot
234
+ * be read back — and `~/.gemini/projects.json` duplicates it from outside the
235
+ * shard, so neither is used.
236
+ */
237
+ const projectRoots = new Map();
238
+ function readProjectRoot(shardDirectory) {
239
+ const cached = projectRoots.get(shardDirectory);
240
+ if (cached !== undefined)
241
+ return cached;
242
+ let value = "";
243
+ try {
244
+ value = fs.readFileSync(path.join(shardDirectory, PROJECT_ROOT), "utf-8").trim();
245
+ }
246
+ catch {
247
+ // No `.project_root`: the project is left unattributed rather than guessed
248
+ // at from the slug, which is lossy.
249
+ }
250
+ projectRoots.set(shardDirectory, value);
251
+ return value;
252
+ }
253
+ /**
254
+ * Slash commands for one slug directory, memoized, keyed by session id.
255
+ *
256
+ * The transcript keeps only the *expanded* prompt: `/opplan-convert foo`
257
+ * reaches the chat as `foo`, so the command's name survives nowhere but
258
+ * `logs.json`. Each entry carries its own timestamp, so a command lands on the
259
+ * day it was used rather than on the session's first day.
260
+ *
261
+ * Two limits worth knowing, both inherent rather than defects. A cached
262
+ * aggregate keys on the *chat file's* size and mtime, so a command written
263
+ * after that file last changed is not seen until it changes again. And
264
+ * `logs.json` outlives the transcripts — `/clear` keeps the session id while
265
+ * truncating the chat — so commands belonging to a session with no surviving
266
+ * transcript have no aggregate to attach to and are dropped.
267
+ */
268
+ const projectCommands = new Map();
269
+ function readProjectCommands(shardDirectory) {
270
+ const cached = projectCommands.get(shardDirectory);
271
+ if (cached)
272
+ return cached;
273
+ const found = new Map();
274
+ try {
275
+ const parsed = JSON.parse(fs.readFileSync(path.join(shardDirectory, LOGS), "utf-8"));
276
+ for (const entry of Array.isArray(parsed) ? parsed : []) {
277
+ const record = entry;
278
+ const session = text(record.sessionId);
279
+ const message = text(record.message);
280
+ const ts = text(record.timestamp);
281
+ if (!session || !message || !ts || !message.startsWith("/"))
282
+ continue;
283
+ const name = message.trim().split(/\s+/)[0];
284
+ if (!name || name === "/")
285
+ continue;
286
+ const list = found.get(session) ?? [];
287
+ list.push({ ts, name });
288
+ found.set(session, list);
289
+ }
290
+ }
291
+ catch {
292
+ // No history, or a torn file. Commands are one counter among many.
293
+ }
294
+ projectCommands.set(shardDirectory, found);
295
+ return found;
296
+ }
297
+ export const geminiCliProvider = {
298
+ name: "gemini-cli",
299
+ title: "Gemini CLI",
300
+ // No environment override exists: the CLI was checked for one and none is
301
+ // honoured for the data root, so `--logs` is the only way to point it elsewhere.
302
+ source: "Chat transcripts under ~/.gemini/tmp (no environment override; use --logs)",
303
+ capabilities: {
304
+ tokens: true,
305
+ // `cached` is a real, measured cache read, contained inside `input` and
306
+ // subtracted back out. No cache-*write* figure exists anywhere on disk, so
307
+ // that counter is always zero.
308
+ cacheTokens: true,
309
+ tools: true,
310
+ // `activate_skill` names the skill in `args.name`.
311
+ skills: true,
312
+ // Subagent transcripts nest one level under `chats/`, and outnumber main
313
+ // transcripts by more than an order of magnitude.
314
+ subagents: true,
315
+ // Hooks are configured in ~/.gemini/settings.json, but no execution of one
316
+ // is written to any transcript record.
317
+ hooks: false,
318
+ // A tool call records a bare name and nothing else, so an MCP tool cannot
319
+ // be told from a builtin and there is no server to attribute it to.
320
+ mcp: false,
321
+ // From logs.json, which is the only place a command is named.
322
+ slashCommands: true,
323
+ projects: true,
324
+ },
325
+ root(context) {
326
+ const candidate = context.override?.trim() || path.join(context.home, ".gemini");
327
+ try {
328
+ return fs.statSync(path.join(candidate, TMP)).isDirectory() ? candidate : null;
329
+ }
330
+ catch {
331
+ return null;
332
+ }
333
+ },
334
+ discover(root, options) {
335
+ const tmp = path.join(root, TMP);
336
+ const found = [];
337
+ const accept = (file, shard, kind, stats) => {
338
+ if (options.modifiedSince !== undefined && stats.mtimeMs < options.modifiedSince)
339
+ return;
340
+ found.push({
341
+ file,
342
+ relative: path.relative(tmp, file),
343
+ shard,
344
+ kind,
345
+ size: stats.size,
346
+ mtimeMs: stats.mtimeMs,
347
+ });
348
+ };
349
+ for (const slug of listDirectory(tmp)) {
350
+ if (!slug.isDirectory())
351
+ continue;
352
+ // Requiring a `chats/` directory is what keeps `tmp/bin/` out: the CLI
353
+ // downloads helper binaries there, beside the projects.
354
+ const chats = path.join(tmp, slug.name, CHATS);
355
+ for (const entry of listDirectory(chats)) {
356
+ const full = path.join(chats, entry.name);
357
+ if (entry.isFile() && entry.name.endsWith(".jsonl")) {
358
+ const stats = statOf(full);
359
+ if (stats)
360
+ accept(full, slug.name, "main", stats);
361
+ continue;
362
+ }
363
+ if (!entry.isDirectory() || !options.subagents)
364
+ continue;
365
+ for (const agent of listDirectory(full)) {
366
+ if (!agent.isFile() || !agent.name.endsWith(".jsonl"))
367
+ continue;
368
+ const agentFile = path.join(full, agent.name);
369
+ const stats = statOf(agentFile);
370
+ if (stats)
371
+ accept(agentFile, slug.name, "subagent", stats);
372
+ }
373
+ }
374
+ }
375
+ // Byte comparison, never localeCompare: the order must not depend on the
376
+ // ICU build of the machine that ran the scan.
377
+ found.sort((a, b) => (a.relative < b.relative ? -1 : a.relative > b.relative ? 1 : 0));
378
+ return found;
379
+ },
380
+ async read(file) {
381
+ return (await geminiCliProvider.parse(file)).aggregate;
382
+ },
383
+ async parse(file) {
384
+ const subagent = file.kind === "subagent";
385
+ // A subagent's parent is its containing directory, exactly as it is for
386
+ // Claude Code, so neither id needs reading out of the file.
387
+ const sessionId = path.basename(file.file, ".jsonl");
388
+ const shardDirectory = subagent
389
+ ? path.dirname(path.dirname(path.dirname(file.file)))
390
+ : path.dirname(path.dirname(file.file));
391
+ const aggregate = {
392
+ file: file.file,
393
+ size: file.size,
394
+ mtimeMs: file.mtimeMs,
395
+ provider: geminiCliProvider.name,
396
+ sessionId,
397
+ kind: file.kind,
398
+ project: readProjectRoot(shardDirectory),
399
+ firstTs: "",
400
+ lastTs: "",
401
+ days: {},
402
+ malformedLines: 0,
403
+ };
404
+ if (subagent) {
405
+ aggregate.parentSessionId = path.basename(path.dirname(file.file));
406
+ // `agentType` is deliberately left unset. A subagent transcript records
407
+ // no role of its own; the role lives in the parent's `invoke_agent` call,
408
+ // which a single-transcript parse cannot reach. The spawn counts and
409
+ // names are still exact, because the parent fills `agents` from that same
410
+ // call — this only means `usage agents --by role` has nothing extra to
411
+ // learn from the child. Claude Code has the same gap when a subagent's
412
+ // `.meta.json` is missing.
413
+ aggregate.agentId = sessionId;
414
+ }
415
+ const state = {
416
+ aggregate,
417
+ events: [],
418
+ ts: "",
419
+ tokenIds: new Set(),
420
+ pendingTools: new Map(),
421
+ };
422
+ const lines = readline.createInterface({
423
+ input: createReadStream(file.file, { encoding: "utf-8" }),
424
+ crlfDelay: Infinity,
425
+ });
426
+ let first = true;
427
+ for await (const line of lines) {
428
+ if (!line)
429
+ continue;
430
+ let record;
431
+ try {
432
+ record = JSON.parse(line);
433
+ }
434
+ catch {
435
+ aggregate.malformedLines += 1;
436
+ continue;
437
+ }
438
+ if (!record || typeof record !== "object")
439
+ continue;
440
+ if (first) {
441
+ first = false;
442
+ // Not every file has one: at least one transcript in a real corpus
443
+ // begins with an ordinary record, so the header is detected rather
444
+ // than assumed and a file without one parses normally.
445
+ if (isHeader(record)) {
446
+ applyHeader(aggregate, record);
447
+ continue;
448
+ }
449
+ }
450
+ applyRecord(state, record);
451
+ }
452
+ flushTools(state);
453
+ if (!subagent) {
454
+ for (const command of readProjectCommands(shardDirectory).get(aggregate.sessionId) ?? []) {
455
+ const bucket = bucketFor(state, command.ts);
456
+ if (!bucket)
457
+ continue;
458
+ state.ts = command.ts;
459
+ bucket.commands[command.name] = (bucket.commands[command.name] ?? 0) + 1;
460
+ emit(state, { kind: "command", name: command.name });
461
+ }
462
+ }
463
+ return { aggregate, events: state.events };
464
+ },
465
+ };
466
+ //# sourceMappingURL=gemini-cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini-cli.js","sourceRoot":"","sources":["../../../src/usage/providers/gemini-cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import type { UsageProvider } from "./types.js";
2
+ /**
3
+ * Every provider whose logs `usage` can report on.
4
+ *
5
+ * Registering another assistant is a new module plus a line here. Nothing in
6
+ * `src/commands/usage.ts` may branch on a provider's name: what a provider can
7
+ * answer is read from its `capabilities`, the same rule that keeps
8
+ * `src/agent/render.ts` free of per-target conditionals.
9
+ */
10
+ export declare const PROVIDERS: readonly UsageProvider[];
11
+ export declare const DEFAULT_PROVIDER: string;
12
+ /** Selects every registered provider rather than one. */
13
+ export declare const ALL_PROVIDERS = "all";
14
+ export declare function providerNames(): string[];
15
+ /**
16
+ * Resolves `--provider` to the providers a report covers.
17
+ *
18
+ * `all` returns every registered provider; whether each has anything on this
19
+ * machine is decided later, by `root()`, so that an unavailable one is simply
20
+ * absent from the results rather than an error.
21
+ */
22
+ export declare function resolveProviders(name: string | undefined): UsageProvider[];
23
+ export type { UsageProvider } from "./types.js";
@@ -0,0 +1,46 @@
1
+ import { antigravityProvider } from "./antigravity.js";
2
+ import { claudeCodeProvider } from "./claude-code.js";
3
+ import { codexProvider } from "./codex.js";
4
+ import { geminiCliProvider } from "./gemini-cli.js";
5
+ import { opencodeProvider } from "./opencode.js";
6
+ /**
7
+ * Every provider whose logs `usage` can report on.
8
+ *
9
+ * Registering another assistant is a new module plus a line here. Nothing in
10
+ * `src/commands/usage.ts` may branch on a provider's name: what a provider can
11
+ * answer is read from its `capabilities`, the same rule that keeps
12
+ * `src/agent/render.ts` free of per-target conditionals.
13
+ */
14
+ export const PROVIDERS = [
15
+ claudeCodeProvider,
16
+ codexProvider,
17
+ antigravityProvider,
18
+ // Appended, never inserted: `usage providers` reports in registry order and
19
+ // the e2e suite pins the earlier entries by position.
20
+ geminiCliProvider,
21
+ opencodeProvider,
22
+ ];
23
+ export const DEFAULT_PROVIDER = claudeCodeProvider.name;
24
+ /** Selects every registered provider rather than one. */
25
+ export const ALL_PROVIDERS = "all";
26
+ export function providerNames() {
27
+ return PROVIDERS.map((provider) => provider.name);
28
+ }
29
+ /**
30
+ * Resolves `--provider` to the providers a report covers.
31
+ *
32
+ * `all` returns every registered provider; whether each has anything on this
33
+ * machine is decided later, by `root()`, so that an unavailable one is simply
34
+ * absent from the results rather than an error.
35
+ */
36
+ export function resolveProviders(name) {
37
+ const wanted = name ?? DEFAULT_PROVIDER;
38
+ if (wanted === ALL_PROVIDERS)
39
+ return [...PROVIDERS];
40
+ const provider = PROVIDERS.find((candidate) => candidate.name === wanted);
41
+ if (!provider) {
42
+ throw new Error(`Unknown provider: ${wanted} (known: ${[...providerNames(), ALL_PROVIDERS].join(", ")})`);
43
+ }
44
+ return [provider];
45
+ }
46
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/usage/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAGjD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,SAAS,GAA6B;IACjD,kBAAkB;IAClB,aAAa;IACb,mBAAmB;IACnB,4EAA4E;IAC5E,sDAAsD;IACtD,iBAAiB;IACjB,gBAAgB;CACjB,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,IAAI,CAAC;AAExD,yDAAyD;AACzD,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,CAAC;AAEnC,MAAM,UAAU,aAAa;IAC3B,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACpD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAwB;IACvD,MAAM,MAAM,GAAG,IAAI,IAAI,gBAAgB,CAAC;IACxC,IAAI,MAAM,KAAK,aAAa;QAAE,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;IAC1E,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CACb,qBAAqB,MAAM,YAAY,CAAC,GAAG,aAAa,EAAE,EAAE,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CACzF,CAAC;IACJ,CAAC;IACD,OAAO,CAAC,QAAQ,CAAC,CAAC;AACpB,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { UsageProvider } from "./types.js";
2
+ export declare const opencodeProvider: UsageProvider;