@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,280 @@
1
+ /**
2
+ * Shell script generators.
3
+ *
4
+ * Every script is *static*: it embeds the command tree rather than calling back
5
+ * into the CLI. A callback would spawn a Node process on every Tab press, and
6
+ * would need a hidden command — CLI surface that behaves like an API but is
7
+ * excluded from `describe` by construction. Nothing here is dynamic, so there
8
+ * is nothing to gain in exchange.
9
+ */
10
+ /** Escapes for a single-quoted POSIX shell string. */
11
+ function sq(value) {
12
+ return `'${value.replace(/'/g, `'\\''`)}'`;
13
+ }
14
+ /** Escapes for a double-quoted PowerShell string. */
15
+ function ps(value) {
16
+ return `"${value.replace(/`/g, "``").replace(/"/g, '`"').replace(/\$/g, "`$")}"`;
17
+ }
18
+ /** Escapes a zsh `_describe`/`_arguments` description, which is `:`-delimited. */
19
+ function zshDescription(value) {
20
+ return value.replace(/([:\\[\]])/g, "\\$1");
21
+ }
22
+ /** A single line, so a description can never break a generated line. */
23
+ function oneLine(value) {
24
+ return value.replace(/\s+/g, " ").trim();
25
+ }
26
+ function header(model, comment) {
27
+ return [
28
+ `${comment} ${model.binary} shell completion`,
29
+ `${comment} Generated by ${model.binary} ${model.version}. Regenerate after upgrading.`,
30
+ `${comment} Do not edit.`,
31
+ ].join("\n");
32
+ }
33
+ /** Flags a shell should offer for a command, longs and shorts, sorted. */
34
+ function flags(command) {
35
+ return command.options
36
+ .flatMap((option) => (option.short ? [option.short, option.long] : [option.long]))
37
+ .sort((a, b) => (a < b ? -1 : a > b ? 1 : 0));
38
+ }
39
+ /** Words a shell should offer for a command's own position. */
40
+ function words(command) {
41
+ const subcommands = command.subcommands.map((id) => id.split(" ").pop());
42
+ return [...subcommands, ...command.argument.choices, ...flags(command)];
43
+ }
44
+ /** Options that take a value, with what to offer after them. */
45
+ function valueOptions(command) {
46
+ return command.options.filter((option) => option.takesValue);
47
+ }
48
+ function bash(model) {
49
+ // Derived rather than written out, because the two sites below are the only
50
+ // places in this file the binary name does not already reach through
51
+ // `model.binary` — the reason they still said CLAUDE_CLI long after the tool
52
+ // was named something else.
53
+ const pathsVariable = `_${model.binary.toUpperCase().replace(/[^A-Z0-9_]/g, "_")}_PATHS`;
54
+ const lines = [
55
+ header(model, "#"),
56
+ "",
57
+ `_${model.binary.replace(/-/g, "_")}_completions() {`,
58
+ " local cur prev command_path index word",
59
+ ' cur="${COMP_WORDS[COMP_CWORD]}"',
60
+ ' prev="${COMP_WORDS[COMP_CWORD-1]}"',
61
+ "",
62
+ " # Longest known command path formed by the leading non-flag words.",
63
+ ' command_path=""',
64
+ " index=1",
65
+ ' while [ "$index" -lt "$COMP_CWORD" ]; do',
66
+ ' word="${COMP_WORDS[$index]}"',
67
+ ' case "$word" in -*) break ;; esac',
68
+ ` case " \${${pathsVariable}} " in`,
69
+ ' *" ${command_path:+$command_path }$word "*) command_path="${command_path:+$command_path }$word" ;;',
70
+ " *) break ;;",
71
+ " esac",
72
+ " index=$((index + 1))",
73
+ " done",
74
+ "",
75
+ " # A value position: offer the option's own vocabulary, not the command's.",
76
+ ' case "$command_path|$prev" in',
77
+ ];
78
+ for (const command of model.commands)
79
+ for (const option of valueOptions(command)) {
80
+ const pattern = `${command.id}|${option.long}`;
81
+ const alias = option.short ? `${command.id}|${option.short}` : null;
82
+ const match = alias ? `${sq(pattern)} | ${sq(alias)}` : sq(pattern);
83
+ if (option.value === "choice")
84
+ lines.push(` ${match}) COMPREPLY=($(compgen -W ${sq(option.choices.join(" "))} -- "$cur")); return ;;`);
85
+ // file, directory, and free all defer to `-o default`, which is bash's
86
+ // own path completion and beats anything embedded here.
87
+ else
88
+ lines.push(` ${match}) COMPREPLY=(); return ;;`);
89
+ }
90
+ lines.push(" esac", "", ' case "$command_path" in', ...model.commands.map((command) => ` ${sq(command.id)}) COMPREPLY=($(compgen -W ${sq(words(command).join(" "))} -- "$cur")) ;;`), " esac", "}", "", `${pathsVariable}=${sq(model.commands
91
+ .map((command) => command.id)
92
+ .filter(Boolean)
93
+ .join(" "))}`,
94
+ // `-o default` gives path completion whenever COMPREPLY comes back empty,
95
+ // which is exactly the file/directory and free-text cases above.
96
+ `complete -o default -F _${model.binary.replace(/-/g, "_")}_completions ${model.binary}`, "");
97
+ return lines.join("\n");
98
+ }
99
+ function zsh(model) {
100
+ const fn = `_${model.binary.replace(/-/g, "_")}`;
101
+ const lines = [
102
+ `#compdef ${model.binary}`,
103
+ header(model, "#"),
104
+ "",
105
+ `${fn}() {`,
106
+ " local command_path=''",
107
+ " local index=2",
108
+ " local word state",
109
+ " while (( index < CURRENT )); do",
110
+ ' word="${words[index]}"',
111
+ ' [[ "$word" == -* ]] && break',
112
+ ` if (( \${+_${model.binary.replace(/-/g, "_")}_paths[\${command_path:+$command_path }$word]} )); then`,
113
+ ' command_path="${command_path:+$command_path }$word"',
114
+ " else",
115
+ " break",
116
+ " fi",
117
+ " (( index++ ))",
118
+ " done",
119
+ "",
120
+ ' case "$command_path" in',
121
+ ];
122
+ for (const command of model.commands) {
123
+ const specs = [];
124
+ for (const option of command.options) {
125
+ const description = zshDescription(oneLine(option.description));
126
+ const names = option.short ? `{${option.short},${option.long}}` : option.long;
127
+ // A repeatable option keeps being offered; `*` is zsh's marker for that.
128
+ const prefix = option.repeatable ? "*" : "";
129
+ if (!option.takesValue) {
130
+ specs.push(sq(`${prefix}${names}[${description}]`));
131
+ continue;
132
+ }
133
+ const action = option.value === "choice"
134
+ ? `:value:(${option.choices.join(" ")})`
135
+ : option.value === "directory"
136
+ ? ":dir:_files -/"
137
+ : option.value === "file"
138
+ ? ":file:_files"
139
+ : ":value:";
140
+ specs.push(sq(`${prefix}${names}[${description}]${action}`));
141
+ }
142
+ if (command.subcommands.length) {
143
+ // `_describe` over a local array, rather than an inline `((a:b c:d))`
144
+ // value list: each entry is quoted on its own line, so a description
145
+ // containing a quote or a colon cannot break the enclosing spec.
146
+ lines.push(` ${sq(command.id)})`, " local -a _subcommands", " _subcommands=(", ...command.subcommands.map((id) => {
147
+ const child = model.commands.find((item) => item.id === id);
148
+ return ` ${sq(`${id.split(" ").pop()}:${zshDescription(oneLine(child?.description ?? ""))}`)}`;
149
+ }), " )", ` _arguments -C ${[...specs, "'1: :->cmd'", "'*::arg:->args'"].join(" ")}`, " [[ $state == cmd ]] && _describe 'command' _subcommands", " ;;");
150
+ continue;
151
+ }
152
+ if (command.argument.kind === "choice") {
153
+ specs.push(`'1:argument:(${command.argument.choices.join(" ")})'`, "'*:argument:'");
154
+ }
155
+ else if (command.argument.kind === "directory") {
156
+ specs.push("'*:path:_files -/'");
157
+ }
158
+ else if (command.argument.kind === "file") {
159
+ specs.push("'*:file:_files'");
160
+ }
161
+ else if (command.argument.kind === "free") {
162
+ specs.push("'*:argument:'");
163
+ }
164
+ lines.push(` ${sq(command.id)})`, ` _arguments -C ${specs.join(" ")} ;;`);
165
+ }
166
+ lines.push(" esac", "}", "", `typeset -gA _${model.binary.replace(/-/g, "_")}_paths`, ...model.commands
167
+ .map((command) => command.id)
168
+ .filter(Boolean)
169
+ .map((id) => `_${model.binary.replace(/-/g, "_")}_paths[${sq(id)}]=1`), "", `${fn} "$@"`, "");
170
+ return lines.join("\n");
171
+ }
172
+ function fish(model) {
173
+ const binary = model.binary;
174
+ const guard = `__fish_${binary.replace(/-/g, "_")}_at`;
175
+ const lines = [
176
+ header(model, "#"),
177
+ "",
178
+ `function ${guard}`,
179
+ " set -l parts (commandline -opc)",
180
+ " set -e parts[1]",
181
+ " set -l path ''",
182
+ " for part in $parts",
183
+ " if string match -qr '^-' -- $part",
184
+ " break",
185
+ " end",
186
+ " set -l candidate (string trim " + '"$path $part")',
187
+ " if contains -- $candidate $argv[2..-1]",
188
+ " set path $candidate",
189
+ " else",
190
+ " break",
191
+ " end",
192
+ " end",
193
+ ' test "$path" = "$argv[1]"',
194
+ "end",
195
+ "",
196
+ ];
197
+ const allPaths = model.commands
198
+ .map((command) => command.id)
199
+ .filter(Boolean)
200
+ .map((id) => sq(id))
201
+ .join(" ");
202
+ const at = (id) => `${guard} ${sq(id)} ${allPaths}`;
203
+ for (const command of model.commands) {
204
+ const condition = `-n ${sq(at(command.id))}`;
205
+ for (const id of command.subcommands) {
206
+ const child = model.commands.find((item) => item.id === id);
207
+ lines.push(`complete -c ${binary} ${condition} -f -a ${sq(id.split(" ").pop())} -d ${sq(oneLine(child?.description ?? ""))}`);
208
+ }
209
+ if (command.argument.kind === "choice")
210
+ for (const choice of command.argument.choices)
211
+ lines.push(`complete -c ${binary} ${condition} -f -a ${sq(choice)}`);
212
+ for (const option of command.options) {
213
+ const parts = [`complete -c ${binary}`, condition];
214
+ if (option.short)
215
+ parts.push(`-s ${option.short.replace(/^-/, "")}`);
216
+ parts.push(`-l ${option.long.replace(/^--/, "")}`);
217
+ if (option.takesValue) {
218
+ parts.push("-r");
219
+ if (option.value === "choice")
220
+ parts.push("-f", `-a ${sq(option.choices.join(" "))}`);
221
+ else if (option.value === "free")
222
+ parts.push("-f");
223
+ }
224
+ else
225
+ parts.push("-f");
226
+ parts.push(`-d ${sq(oneLine(option.description))}`);
227
+ lines.push(parts.join(" "));
228
+ }
229
+ }
230
+ lines.push("");
231
+ return lines.join("\n");
232
+ }
233
+ function powershell(model) {
234
+ const lines = [
235
+ header(model, "#"),
236
+ "",
237
+ `Register-ArgumentCompleter -Native -CommandName ${model.binary} -ScriptBlock {`,
238
+ " param($wordToComplete, $commandAst, $cursorPosition)",
239
+ "",
240
+ ` $known = @(${model.commands
241
+ .map((c) => c.id)
242
+ .filter(Boolean)
243
+ .map(ps)
244
+ .join(", ")})`,
245
+ " $parts = $commandAst.CommandElements | Select-Object -Skip 1 | ForEach-Object { $_.ToString() }",
246
+ ' $path = ""',
247
+ " foreach ($part in $parts) {",
248
+ " if ($part.StartsWith('-')) { break }",
249
+ ' $candidate = if ($path) { "$path $part" } else { $part }',
250
+ " if ($known -contains $candidate) { $path = $candidate } else { break }",
251
+ " }",
252
+ "",
253
+ " $completions = switch ($path) {",
254
+ ];
255
+ for (const command of model.commands) {
256
+ const entries = [];
257
+ for (const id of command.subcommands) {
258
+ const child = model.commands.find((item) => item.id === id);
259
+ const name = id.split(" ").pop();
260
+ entries.push(`[System.Management.Automation.CompletionResult]::new(${ps(name)}, ${ps(name)}, 'Command', ${ps(oneLine(child?.description ?? name))})`);
261
+ }
262
+ for (const choice of command.argument.choices)
263
+ entries.push(`[System.Management.Automation.CompletionResult]::new(${ps(choice)}, ${ps(choice)}, 'ParameterValue', ${ps(choice)})`);
264
+ for (const option of command.options)
265
+ entries.push(`[System.Management.Automation.CompletionResult]::new(${ps(option.long)}, ${ps(option.long)}, 'ParameterName', ${ps(oneLine(option.description) || option.long)})`);
266
+ lines.push(` ${ps(command.id)} { @(${entries.join(", ")}) }`);
267
+ }
268
+ lines.push(" default { @() }", " }", "", ' $completions | Where-Object { $_.CompletionText -like "$wordToComplete*" }', "}", "");
269
+ return lines.join("\n");
270
+ }
271
+ const GENERATORS = {
272
+ bash,
273
+ zsh,
274
+ fish,
275
+ powershell,
276
+ };
277
+ export function generateCompletion(model, shell) {
278
+ return GENERATORS[shell](model);
279
+ }
280
+ //# sourceMappingURL=shells.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shells.js","sourceRoot":"","sources":["../../src/completion/shells.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Validators shared by the configuration loader and the script registry parser.
3
+ *
4
+ * These live outside `src/config.ts` so `src/scripts/registry.ts` can reuse them
5
+ * without importing the loader — `config.ts` imports the registry parser to
6
+ * validate a `scripts:` block, and the reverse edge would be a cycle. Keeping
7
+ * `knownKeys` in one place also keeps its message text, which users see and
8
+ * script against, from drifting between the two callers.
9
+ */
10
+ export declare function object(value: unknown, name: string): Record<string, unknown>;
11
+ export declare function knownKeys(value: Record<string, unknown>, allowed: Set<string>, name: string): void;
12
+ export declare function strings(value: unknown, name: string, fallback: string[]): string[];
13
+ export declare function optionalString(value: unknown, name: string): string | undefined;
14
+ /** True when `target` is `root` itself or lies beneath it. Both must be resolved. */
15
+ export declare function isInside(root: string, target: string): boolean;
@@ -0,0 +1,44 @@
1
+ import path from "node:path";
2
+ /**
3
+ * Validators shared by the configuration loader and the script registry parser.
4
+ *
5
+ * These live outside `src/config.ts` so `src/scripts/registry.ts` can reuse them
6
+ * without importing the loader — `config.ts` imports the registry parser to
7
+ * validate a `scripts:` block, and the reverse edge would be a cycle. Keeping
8
+ * `knownKeys` in one place also keeps its message text, which users see and
9
+ * script against, from drifting between the two callers.
10
+ */
11
+ export function object(value, name) {
12
+ if (value === undefined)
13
+ return {};
14
+ if (value === null || typeof value !== "object" || Array.isArray(value)) {
15
+ throw new Error(`${name} must be a mapping`);
16
+ }
17
+ return value;
18
+ }
19
+ export function knownKeys(value, allowed, name) {
20
+ const unknown = Object.keys(value).find((key) => !allowed.has(key));
21
+ if (unknown)
22
+ throw new Error(`Unknown ${name} key: ${unknown}`);
23
+ }
24
+ export function strings(value, name, fallback) {
25
+ if (value === undefined)
26
+ return fallback;
27
+ if (!Array.isArray(value) || value.some((item) => typeof item !== "string")) {
28
+ throw new Error(`${name} must be a list of strings`);
29
+ }
30
+ return [...value];
31
+ }
32
+ export function optionalString(value, name) {
33
+ if (value === undefined)
34
+ return undefined;
35
+ if (typeof value !== "string")
36
+ throw new Error(`${name} must be a string`);
37
+ return value;
38
+ }
39
+ /** True when `target` is `root` itself or lies beneath it. Both must be resolved. */
40
+ export function isInside(root, target) {
41
+ const relative = path.relative(root, target);
42
+ return relative === "" || (!relative.startsWith(`..${path.sep}`) && relative !== "..");
43
+ }
44
+ //# sourceMappingURL=config-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-schema.js","sourceRoot":"","sources":["../src/config-schema.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B;;;;;;;;GAQG;AAEH,MAAM,UAAU,MAAM,CAAC,KAAc,EAAE,IAAY;IACjD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACnC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACxE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,oBAAoB,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,KAAgC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,SAAS,CACvB,KAA8B,EAC9B,OAAoB,EACpB,IAAY;IAEZ,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACpE,IAAI,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,WAAW,IAAI,SAAS,OAAO,EAAE,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,KAAc,EAAE,IAAY,EAAE,QAAkB;IACtE,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC;IACzC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,EAAE,CAAC;QAC5E,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,4BAA4B,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,CAAC,GAAG,KAAK,CAAa,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAc,EAAE,IAAY;IACzD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,mBAAmB,CAAC,CAAC;IAC3E,OAAO,KAAK,CAAC;AACf,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,QAAQ,CAAC,IAAY,EAAE,MAAc;IACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC7C,OAAO,QAAQ,KAAK,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,QAAQ,KAAK,IAAI,CAAC,CAAC;AACzF,CAAC"}
@@ -0,0 +1,102 @@
1
+ import type { OutputFormat } from "./types.js";
2
+ export type PathStyle = "absolute" | "relative";
3
+ export interface CheckConfig {
4
+ mermaid: boolean;
5
+ katex: boolean;
6
+ references: boolean;
7
+ markdownlint: boolean;
8
+ frontmatter: boolean;
9
+ graph: boolean;
10
+ toc: boolean;
11
+ external: boolean;
12
+ snippets: boolean;
13
+ }
14
+ export interface FrontmatterRulesConfig {
15
+ required: string[];
16
+ prohibited: string[];
17
+ types: Record<string, "string" | "number" | "integer" | "boolean" | "array" | "object" | "null">;
18
+ allowedValues: Record<string, unknown[]>;
19
+ formats: Record<string, string>;
20
+ patterns: Record<string, string>;
21
+ unique: string[];
22
+ }
23
+ export interface ResolvedConfig {
24
+ configPath?: string;
25
+ root: string;
26
+ files: {
27
+ include: string[];
28
+ exclude: string[];
29
+ entryPoints: string[];
30
+ };
31
+ assets: {
32
+ extensions: string[];
33
+ };
34
+ markdown: {
35
+ renderer: "github";
36
+ };
37
+ output: {
38
+ format: OutputFormat;
39
+ paths: PathStyle;
40
+ };
41
+ checks: CheckConfig;
42
+ frontmatter: {
43
+ schema?: string;
44
+ rules: FrontmatterRulesConfig;
45
+ };
46
+ toc: {
47
+ files: string[];
48
+ };
49
+ markdownlint: {
50
+ config?: string;
51
+ };
52
+ urls: {
53
+ ignore: string[];
54
+ ignoreDomains: string[];
55
+ allowedStatuses: number[];
56
+ cache: boolean;
57
+ cacheTtl: number;
58
+ headFallbackStatuses: number[];
59
+ reportRedirects: boolean;
60
+ };
61
+ commands: Record<string, Record<string, unknown>>;
62
+ }
63
+ export interface ConfigSelection {
64
+ explicitPath?: string;
65
+ disabled: boolean;
66
+ }
67
+ export declare function selectConfig(argv: readonly string[], cwd?: string): ConfigSelection;
68
+ /**
69
+ * The directory a `serve` invocation asks to expose, resolved against `cwd`.
70
+ *
71
+ * Scanned out of argv before commander parses it, for the same reason
72
+ * `selectConfig` is: the configuration decides which checks and exclusions the
73
+ * server answers with, and it has to be discovered from the served directory
74
+ * rather than from wherever the host happened to spawn the process. Without
75
+ * this the server would silently answer from `process.cwd()` and disagree with
76
+ * the equivalent `md` command run in the same workspace.
77
+ *
78
+ * This is a confinement boundary, not a workspace root — `config.root` stays
79
+ * whatever the discovered configuration says.
80
+ */
81
+ export declare function selectRoot(argv: readonly string[], cwd?: string): string;
82
+ /** The configuration filename this tool writes and documents. */
83
+ export declare const CONFIG_FILENAME = ".cairn.yml";
84
+ /** The pre-rename filename, still read so existing workspaces keep working. */
85
+ export declare const LEGACY_CONFIG_FILENAME = ".claude-cli.yml";
86
+ /**
87
+ * Discovery order within one directory, shared with the `scripts` chain walk.
88
+ *
89
+ * First match wins, so a directory holding both files contributes exactly one
90
+ * registry. Walking the whole array per directory before ascending is what
91
+ * keeps a nested `.cairn.yml` from being shadowed by a legacy file higher up.
92
+ */
93
+ export declare const CONFIG_FILENAMES: readonly [".cairn.yml", ".claude-cli.yml"];
94
+ /** The configuration file in `directory`, preferring the current filename. */
95
+ export declare function configIn(directory: string): string | undefined;
96
+ export declare function findConfig(start?: string): string | undefined;
97
+ export declare function loadConfig(selection?: ConfigSelection, cwd?: string): ResolvedConfig;
98
+ export declare function resolveCommandOptions<T extends Record<string, unknown>>(config: ResolvedConfig, command: string, builtins: T, cli: Record<string, unknown>): T & {
99
+ format: OutputFormat;
100
+ paths: PathStyle;
101
+ };
102
+ export declare function defaultLintConcurrency(): number;