@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 @@
1
+ {"version":3,"file":"diff.js","sourceRoot":"","sources":["../src/diff.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,133 @@
1
+ import { type FileFingerprint } from "./workspace-index.js";
2
+ /**
3
+ * A replacement of `[start, end)` with `value`.
4
+ *
5
+ * Offsets are UTF-16 code-unit indices into the utf-8-decoded file — exactly what
6
+ * `content.slice(start, end)` uses, and the same unit mdast positions and
7
+ * `MdLink.destinationStart` already carry. They are not byte offsets.
8
+ */
9
+ export interface TextEdit {
10
+ start: number;
11
+ /** Exclusive. `start === end` is a pure insertion. */
12
+ end: number;
13
+ value: string;
14
+ }
15
+ /**
16
+ * Applies edits back to front so earlier offsets stay valid.
17
+ *
18
+ * Overlapping edits are not detected here; the caller owns that, because the
19
+ * right response depends on whether the overlap is a planner bug or a genuine
20
+ * collision between two rules.
21
+ */
22
+ export declare function applyEdits(content: string, edits: readonly TextEdit[]): string;
23
+ /**
24
+ * An unused path beside `file`, for staging a write that is committed by rename.
25
+ *
26
+ * A sibling rather than a temp directory so the rename stays within one
27
+ * filesystem and is therefore atomic.
28
+ */
29
+ export declare function temporarySibling(file: string): string;
30
+ /** Where an edit came from, so a plan can be reviewed rule by rule. */
31
+ export interface EditDiagnostic {
32
+ /** Stable fixer identity, e.g. "toc" or "markdownlint/MD009". */
33
+ rule: string;
34
+ /** 1-based line the diagnostic anchors to. */
35
+ line: number;
36
+ message: string;
37
+ }
38
+ export interface PlannedEdit extends TextEdit {
39
+ /** Absolute path of the file the edit applies to. */
40
+ file: string;
41
+ /**
42
+ * The exact text currently occupying `[start, end)`.
43
+ *
44
+ * Mandatory, and revalidated immediately before any write. Offsets are
45
+ * UTF-16 code units rather than bytes, so this is what lets a consumer apply
46
+ * an edit without having to trust the unit — a mismatch aborts instead of
47
+ * corrupting a document containing astral-plane characters.
48
+ */
49
+ expected: string;
50
+ /** `value` under its role-specific name. */
51
+ replacement: string;
52
+ diagnostic: EditDiagnostic;
53
+ }
54
+ export interface FileSnapshot {
55
+ file: string;
56
+ content: string;
57
+ fingerprint: FileFingerprint;
58
+ }
59
+ export interface FileEditPlan {
60
+ file: string;
61
+ /** Captured when the file was read for planning; rechecked before applying. */
62
+ fingerprint: FileFingerprint;
63
+ /** Non-overlapping, sorted ascending by start. */
64
+ edits: PlannedEdit[];
65
+ }
66
+ export type PlanConflictKind = "overlap" | "outside-workspace" | "stale-input" | "expectation-mismatch";
67
+ export interface PlanConflict {
68
+ kind: PlanConflictKind;
69
+ file: string;
70
+ message: string;
71
+ /** Rules involved, sorted. Two for an overlap, one otherwise. */
72
+ rules: string[];
73
+ }
74
+ export interface EditPlan {
75
+ root: string;
76
+ /** Sorted by path. Files with no surviving edits are omitted. */
77
+ files: FileEditPlan[];
78
+ /** Non-empty means applyPlan will refuse. Never thrown while planning. */
79
+ conflicts: PlanConflict[];
80
+ }
81
+ export interface AppliedFile {
82
+ file: string;
83
+ edits: number;
84
+ /** False when the edits collapsed to a no-op and the file was left alone. */
85
+ changed: boolean;
86
+ }
87
+ export interface AppliedPlan {
88
+ files: AppliedFile[];
89
+ edits: number;
90
+ }
91
+ /**
92
+ * Reads a file, checking its fingerprint on both sides.
93
+ *
94
+ * A write landing between the two stats is caught here rather than silently
95
+ * absorbed into a plan built from half-old content.
96
+ */
97
+ export declare function snapshot(file: string): FileSnapshot;
98
+ /**
99
+ * Groups edits per file and records every reason the plan must not be applied.
100
+ *
101
+ * Never throws and never silently drops a conflicting edit: `--check` and
102
+ * `--dry-run` have to be able to report exactly which rules collided, so the
103
+ * user knows which one to leave out.
104
+ */
105
+ export declare function buildPlan(root: string, edits: readonly PlannedEdit[], snapshots: ReadonlyMap<string, FileSnapshot>): EditPlan;
106
+ export interface ApplyOptions {
107
+ /** Called for every file whose bytes changed, and on the rollback path. */
108
+ invalidate?: (file: string) => void;
109
+ }
110
+ /**
111
+ * Applies a whole plan as one transaction.
112
+ *
113
+ * Every file is rechecked before any file is staged, so a stale input costs
114
+ * zero writes. Each file is then written to a sibling and committed by rename,
115
+ * which is atomic per file. The multi-file commit is not atomic: a failure
116
+ * part way through restores already-committed files by rewriting their original
117
+ * bytes, which is best-effort and not crash-safe.
118
+ */
119
+ export declare function applyPlan(plan: EditPlan, options?: ApplyOptions): AppliedPlan;
120
+ /**
121
+ * The root every edit in a plan must stay inside.
122
+ *
123
+ * A configured workspace is the authority when there is one. Without a config
124
+ * file `config.root` is only the working directory, and refusing an absolute
125
+ * path outside it would reject `cairn md fix /elsewhere/docs` for no
126
+ * benefit — so the boundary becomes the directory containing the files the
127
+ * caller actually selected. Either way an edit cannot reach beyond what was
128
+ * asked for, which is what the guard is for.
129
+ */
130
+ export declare function containmentRoot(files: readonly string[], config: {
131
+ root: string;
132
+ configPath?: string;
133
+ }): string;
@@ -0,0 +1,245 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import { fingerprint } from "./workspace-index.js";
4
+ import { inside } from "./workspace.js";
5
+ /**
6
+ * Applies edits back to front so earlier offsets stay valid.
7
+ *
8
+ * Overlapping edits are not detected here; the caller owns that, because the
9
+ * right response depends on whether the overlap is a planner bug or a genuine
10
+ * collision between two rules.
11
+ */
12
+ export function applyEdits(content, edits) {
13
+ let result = content;
14
+ for (const edit of [...edits].sort((a, b) => b.start - a.start)) {
15
+ result = result.slice(0, edit.start) + edit.value + result.slice(edit.end);
16
+ }
17
+ return result;
18
+ }
19
+ /**
20
+ * An unused path beside `file`, for staging a write that is committed by rename.
21
+ *
22
+ * A sibling rather than a temp directory so the rename stays within one
23
+ * filesystem and is therefore atomic.
24
+ */
25
+ export function temporarySibling(file) {
26
+ for (let index = 0; index < 100; index++) {
27
+ const candidate = path.join(path.dirname(file), `.${path.basename(file)}.cairn-${process.pid}-${index}.tmp`);
28
+ if (!fs.existsSync(candidate))
29
+ return candidate;
30
+ }
31
+ throw new Error(`Unable to allocate temporary file beside ${file}`);
32
+ }
33
+ /**
34
+ * Reads a file, checking its fingerprint on both sides.
35
+ *
36
+ * A write landing between the two stats is caught here rather than silently
37
+ * absorbed into a plan built from half-old content.
38
+ */
39
+ export function snapshot(file) {
40
+ const before = fingerprint(file);
41
+ const content = fs.readFileSync(file, "utf-8");
42
+ const after = fingerprint(file);
43
+ if (before.size !== after.size || before.mtimeMs !== after.mtimeMs) {
44
+ throw new Error(`File changed while it was being read: ${file}`);
45
+ }
46
+ return { file, content, fingerprint: after };
47
+ }
48
+ /** True when `file` is inside `root` both lexically and after resolving symlinks. */
49
+ function contained(root, file) {
50
+ if (!inside(root, file))
51
+ return false;
52
+ try {
53
+ // The parent, not the file: the file may not exist yet, and a symlinked
54
+ // directory is the way an edit would otherwise escape the workspace.
55
+ return inside(fs.realpathSync(root), fs.realpathSync(path.dirname(file)));
56
+ }
57
+ catch {
58
+ return false;
59
+ }
60
+ }
61
+ /**
62
+ * Groups edits per file and records every reason the plan must not be applied.
63
+ *
64
+ * Never throws and never silently drops a conflicting edit: `--check` and
65
+ * `--dry-run` have to be able to report exactly which rules collided, so the
66
+ * user knows which one to leave out.
67
+ */
68
+ export function buildPlan(root, edits, snapshots) {
69
+ const conflicts = [];
70
+ const byFile = new Map();
71
+ for (const edit of edits) {
72
+ const file = path.resolve(edit.file);
73
+ if (!contained(root, file)) {
74
+ conflicts.push({
75
+ kind: "outside-workspace",
76
+ file,
77
+ message: `Edit target is outside the workspace root: ${file}`,
78
+ rules: [edit.diagnostic.rule],
79
+ });
80
+ continue;
81
+ }
82
+ const snap = snapshots.get(file);
83
+ if (!snap) {
84
+ conflicts.push({
85
+ kind: "stale-input",
86
+ file,
87
+ message: `No snapshot was taken for ${file}`,
88
+ rules: [edit.diagnostic.rule],
89
+ });
90
+ continue;
91
+ }
92
+ // A planner emitting the wrong `expected` is a bug, surfaced as a conflict
93
+ // rather than allowed to corrupt the file.
94
+ if (snap.content.slice(edit.start, edit.end) !== edit.expected) {
95
+ conflicts.push({
96
+ kind: "expectation-mismatch",
97
+ file,
98
+ message: `${edit.diagnostic.rule} expected ${JSON.stringify(edit.expected)} at [${edit.start},${edit.end})`,
99
+ rules: [edit.diagnostic.rule],
100
+ });
101
+ continue;
102
+ }
103
+ byFile.set(file, [...(byFile.get(file) ?? []), edit]);
104
+ }
105
+ const files = [];
106
+ for (const file of [...byFile.keys()].sort()) {
107
+ const list = byFile.get(file);
108
+ list.sort((a, b) => a.start - b.start ||
109
+ a.end - b.end ||
110
+ (a.diagnostic.rule < b.diagnostic.rule
111
+ ? -1
112
+ : a.diagnostic.rule > b.diagnostic.rule
113
+ ? 1
114
+ : 0));
115
+ for (let index = 1; index < list.length; index++) {
116
+ const previous = list[index - 1];
117
+ const current = list[index];
118
+ const overlaps = previous.end > current.start;
119
+ // Two insertions at one offset do not overlap, but their order is
120
+ // undefined, which is the same hazard.
121
+ const ambiguous = previous.start === previous.end &&
122
+ current.start === current.end &&
123
+ previous.start === current.start;
124
+ if (!overlaps && !ambiguous)
125
+ continue;
126
+ conflicts.push({
127
+ kind: "overlap",
128
+ file,
129
+ message: `${previous.diagnostic.rule} [${previous.start},${previous.end}) and ` +
130
+ `${current.diagnostic.rule} [${current.start},${current.end}) edit the same span`,
131
+ rules: [previous.diagnostic.rule, current.diagnostic.rule].sort(),
132
+ });
133
+ }
134
+ files.push({ file, fingerprint: snapshots.get(file).fingerprint, edits: list });
135
+ }
136
+ return { root, files, conflicts };
137
+ }
138
+ /**
139
+ * Applies a whole plan as one transaction.
140
+ *
141
+ * Every file is rechecked before any file is staged, so a stale input costs
142
+ * zero writes. Each file is then written to a sibling and committed by rename,
143
+ * which is atomic per file. The multi-file commit is not atomic: a failure
144
+ * part way through restores already-committed files by rewriting their original
145
+ * bytes, which is best-effort and not crash-safe.
146
+ */
147
+ export function applyPlan(plan, options = {}) {
148
+ if (plan.conflicts.length) {
149
+ throw new Error(`Refusing to write: ${plan.conflicts.length} conflict(s) in the edit plan`);
150
+ }
151
+ const pending = [];
152
+ for (const entry of plan.files) {
153
+ const current = snapshot(entry.file);
154
+ if (current.fingerprint.size !== entry.fingerprint.size ||
155
+ current.fingerprint.mtimeMs !== entry.fingerprint.mtimeMs) {
156
+ throw new Error(`Aborted: ${entry.file} changed after the plan was built`);
157
+ }
158
+ // The fingerprint is the cheap check; re-verifying every expectation is the
159
+ // authoritative one, and closes the coarse-mtime hole.
160
+ for (const edit of entry.edits) {
161
+ if (current.content.slice(edit.start, edit.end) !== edit.expected) {
162
+ throw new Error(`Aborted: ${entry.file} no longer matches the plan at [${edit.start},${edit.end})`);
163
+ }
164
+ }
165
+ const next = applyEdits(current.content, entry.edits);
166
+ if (next === current.content)
167
+ continue;
168
+ pending.push({
169
+ file: entry.file,
170
+ original: fs.readFileSync(entry.file),
171
+ next,
172
+ mode: fs.statSync(entry.file).mode,
173
+ });
174
+ }
175
+ const staged = new Map();
176
+ const committed = [];
177
+ try {
178
+ for (const item of pending) {
179
+ const temporary = temporarySibling(item.file);
180
+ fs.writeFileSync(temporary, item.next, { encoding: "utf-8", flag: "wx" });
181
+ fs.chmodSync(temporary, item.mode);
182
+ staged.set(item.file, temporary);
183
+ }
184
+ for (const item of pending) {
185
+ fs.renameSync(staged.get(item.file), item.file);
186
+ staged.delete(item.file);
187
+ committed.push({ file: item.file, original: item.original });
188
+ }
189
+ }
190
+ catch (error) {
191
+ for (const temporary of staged.values()) {
192
+ try {
193
+ fs.rmSync(temporary, { force: true });
194
+ }
195
+ catch {
196
+ // Best-effort cleanup.
197
+ }
198
+ }
199
+ for (const item of committed) {
200
+ try {
201
+ fs.writeFileSync(item.file, item.original);
202
+ }
203
+ catch {
204
+ // Best-effort rollback.
205
+ }
206
+ options.invalidate?.(item.file);
207
+ }
208
+ throw error;
209
+ }
210
+ const changed = new Set(pending.map((item) => item.file));
211
+ for (const file of changed)
212
+ options.invalidate?.(file);
213
+ return {
214
+ files: plan.files.map((entry) => ({
215
+ file: entry.file,
216
+ edits: entry.edits.length,
217
+ changed: changed.has(entry.file),
218
+ })),
219
+ edits: plan.files.reduce((total, entry) => total + entry.edits.length, 0),
220
+ };
221
+ }
222
+ /**
223
+ * The root every edit in a plan must stay inside.
224
+ *
225
+ * A configured workspace is the authority when there is one. Without a config
226
+ * file `config.root` is only the working directory, and refusing an absolute
227
+ * path outside it would reject `cairn md fix /elsewhere/docs` for no
228
+ * benefit — so the boundary becomes the directory containing the files the
229
+ * caller actually selected. Either way an edit cannot reach beyond what was
230
+ * asked for, which is what the guard is for.
231
+ */
232
+ export function containmentRoot(files, config) {
233
+ if (config.configPath || !files.length)
234
+ return config.root;
235
+ const segments = files.map((file) => path.dirname(path.resolve(file)).split(path.sep));
236
+ const common = [];
237
+ for (let index = 0; index < segments[0].length; index++) {
238
+ const part = segments[0][index];
239
+ if (!segments.every((candidate) => candidate[index] === part))
240
+ break;
241
+ common.push(part);
242
+ }
243
+ return common.join(path.sep) || path.sep;
244
+ }
245
+ //# sourceMappingURL=edit-plan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"edit-plan.js","sourceRoot":"","sources":["../src/edit-plan.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import { type MarkdownlintFixInfo } from "../checkers/markdown-lint.js";
2
+ import type { Fixer } from "./registry.js";
3
+ /**
4
+ * Rules whose fixes are unambiguous.
5
+ *
6
+ * Every entry is whitespace- or punctuation-local and rewrites at most one span
7
+ * per line. Rules excluded despite offering a fix, with the reason:
8
+ *
9
+ * - MD004, MD029, MD035, MD048, MD049, MD050 — config-dependent *style*
10
+ * choices that rewrite prose markers to match a preference.
11
+ * - MD044 — substring replacement inside prose.
12
+ * - MD005, MD007 — list indentation, where fixes interact across lines.
13
+ * - MD034 — turning a bare URL into an autolink changes how it renders.
14
+ */
15
+ export declare const ALLOWED_RULES: Set<string>;
16
+ export interface FixRange {
17
+ start: number;
18
+ end: number;
19
+ replacement: string;
20
+ }
21
+ /**
22
+ * Maps one `fixInfo` onto an offset range.
23
+ *
24
+ * Three details a naive translation gets wrong, all of which markdownlint's own
25
+ * `applyFix` handles: `deleteCount === -1` removes the whole line *including*
26
+ * its terminator; `editColumn` and `deleteCount` index the line with its
27
+ * terminator stripped, so a range must never cross that bound; and `insertText`
28
+ * may contain newlines, which have to be written in the file's own line ending.
29
+ *
30
+ * Returns undefined when the fix cannot be mapped, in which case it is skipped
31
+ * rather than guessed at.
32
+ */
33
+ export declare function fixInfoRange(content: string, starts: readonly number[], errorLine: number, info: MarkdownlintFixInfo, eol: string): FixRange | undefined;
34
+ export declare const markdownlintFixer: Fixer;
@@ -0,0 +1,125 @@
1
+ import { loadMarkdownlintConfig, lintContent, } from "../checkers/markdown-lint.js";
2
+ import { runtime } from "../runtime.js";
3
+ /**
4
+ * Rules whose fixes are unambiguous.
5
+ *
6
+ * Every entry is whitespace- or punctuation-local and rewrites at most one span
7
+ * per line. Rules excluded despite offering a fix, with the reason:
8
+ *
9
+ * - MD004, MD029, MD035, MD048, MD049, MD050 — config-dependent *style*
10
+ * choices that rewrite prose markers to match a preference.
11
+ * - MD044 — substring replacement inside prose.
12
+ * - MD005, MD007 — list indentation, where fixes interact across lines.
13
+ * - MD034 — turning a bare URL into an autolink changes how it renders.
14
+ */
15
+ export const ALLOWED_RULES = new Set([
16
+ "MD009", // Trailing spaces
17
+ "MD010", // Hard tabs
18
+ "MD012", // Multiple consecutive blank lines
19
+ "MD018", // No space after hash on ATX heading
20
+ "MD019", // Multiple spaces after hash on ATX heading
21
+ "MD020", // No space inside hashes on closed ATX heading
22
+ "MD021", // Multiple spaces inside hashes on closed ATX heading
23
+ "MD023", // Headings must start at the beginning of the line
24
+ "MD027", // Multiple spaces after blockquote symbol
25
+ "MD030", // Spaces after list markers
26
+ "MD037", // Spaces inside emphasis markers
27
+ "MD038", // Spaces inside code span elements
28
+ "MD039", // Spaces inside link text
29
+ "MD047", // Files should end with a single newline
30
+ ]);
31
+ /** Offset of the start of every line. */
32
+ function lineStarts(content) {
33
+ const starts = [0];
34
+ for (let index = 0; index < content.length; index++) {
35
+ if (content[index] === "\n")
36
+ starts.push(index + 1);
37
+ }
38
+ return starts;
39
+ }
40
+ /**
41
+ * Maps one `fixInfo` onto an offset range.
42
+ *
43
+ * Three details a naive translation gets wrong, all of which markdownlint's own
44
+ * `applyFix` handles: `deleteCount === -1` removes the whole line *including*
45
+ * its terminator; `editColumn` and `deleteCount` index the line with its
46
+ * terminator stripped, so a range must never cross that bound; and `insertText`
47
+ * may contain newlines, which have to be written in the file's own line ending.
48
+ *
49
+ * Returns undefined when the fix cannot be mapped, in which case it is skipped
50
+ * rather than guessed at.
51
+ */
52
+ export function fixInfoRange(content, starts, errorLine, info, eol) {
53
+ const lineNumber = info.lineNumber ?? errorLine;
54
+ const base = starts[lineNumber - 1];
55
+ if (base === undefined)
56
+ return undefined;
57
+ const lineEnd = starts[lineNumber] ?? content.length;
58
+ if (info.deleteCount === -1)
59
+ return { start: base, end: lineEnd, replacement: "" };
60
+ const terminator = /\r?\n$/.exec(content.slice(base, lineEnd))?.[0].length ?? 0;
61
+ const textEnd = lineEnd - terminator;
62
+ const start = base + (info.editColumn ?? 1) - 1;
63
+ const end = start + (info.deleteCount ?? 0);
64
+ if (start < base || start > textEnd || end > textEnd)
65
+ return undefined;
66
+ return { start, end, replacement: (info.insertText ?? "").replace(/\n/g, eol) };
67
+ }
68
+ /** markdownlint's own de-duplication: identical fixes on a line collapse to one. */
69
+ function distinct(errors) {
70
+ const seen = new Set();
71
+ const kept = [];
72
+ for (const error of errors) {
73
+ const info = error.fixInfo;
74
+ if (!info)
75
+ continue;
76
+ const key = [
77
+ info.lineNumber ?? error.lineNumber,
78
+ info.editColumn ?? "",
79
+ info.deleteCount ?? "",
80
+ info.insertText ?? "",
81
+ ].join("\0");
82
+ if (seen.has(key))
83
+ continue;
84
+ seen.add(key);
85
+ kept.push(error);
86
+ }
87
+ return kept;
88
+ }
89
+ export const markdownlintFixer = {
90
+ name: "markdownlint",
91
+ description: "Apply markdownlint fixes for rules with an unambiguous repair",
92
+ network: false,
93
+ default: true,
94
+ async plan(files, context) {
95
+ const config = await loadMarkdownlintConfig(runtime().config.markdownlint.config);
96
+ const edits = [];
97
+ for (const file of files) {
98
+ const snapshot = context.snapshot(file);
99
+ const content = snapshot.content;
100
+ const eol = content.includes("\r\n") ? "\r\n" : "\n";
101
+ const starts = lineStarts(content);
102
+ const errors = distinct(await lintContent(file, content, config)).filter((error) => ALLOWED_RULES.has(error.ruleNames[0]));
103
+ for (const error of errors) {
104
+ const range = fixInfoRange(content, starts, error.lineNumber, error.fixInfo, eol);
105
+ if (!range)
106
+ continue;
107
+ edits.push({
108
+ file,
109
+ start: range.start,
110
+ end: range.end,
111
+ expected: content.slice(range.start, range.end),
112
+ replacement: range.replacement,
113
+ value: range.replacement,
114
+ diagnostic: {
115
+ rule: `markdownlint/${error.ruleNames[0]}`,
116
+ line: error.lineNumber,
117
+ message: `${error.ruleDescription}${error.errorDetail ? `: ${error.errorDetail}` : ""}`,
118
+ },
119
+ });
120
+ }
121
+ }
122
+ return { edits, unfixable: [] };
123
+ },
124
+ };
125
+ //# sourceMappingURL=markdownlint-fixer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdownlint-fixer.js","sourceRoot":"","sources":["../../src/fix/markdownlint-fixer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ import type { FileSnapshot, PlannedEdit } from "../edit-plan.js";
2
+ /** A finding a fixer recognized but deliberately did not act on. */
3
+ export interface UnfixableFinding {
4
+ file: string;
5
+ line: number;
6
+ rule: string;
7
+ message: string;
8
+ /** Why no edit was produced, e.g. "malformed markers". */
9
+ reason: string;
10
+ }
11
+ export interface FixerResult {
12
+ edits: PlannedEdit[];
13
+ unfixable: UnfixableFinding[];
14
+ }
15
+ export interface FixerContext {
16
+ root: string;
17
+ /** Memoized per run; the single source of truth for content and fingerprint. */
18
+ snapshot: (file: string) => FileSnapshot;
19
+ /** TOC generation settings, taken from the project's `md toc` defaults. */
20
+ toc: {
21
+ maxDepth: string;
22
+ minDepth: string;
23
+ ordered: boolean;
24
+ };
25
+ }
26
+ export interface Fixer {
27
+ name: string;
28
+ description: string;
29
+ /** True when the fixer performs network I/O. */
30
+ network: boolean;
31
+ /**
32
+ * True when a bare `md fix` runs this fixer.
33
+ *
34
+ * False is for a fixer whose edits reach beyond the Markdown being fixed —
35
+ * one that reads other files to decide what to write — because a broadly-run
36
+ * command must not acquire that reach without being asked.
37
+ */
38
+ default: boolean;
39
+ plan(files: readonly string[], context: FixerContext): Promise<FixerResult>;
40
+ }
41
+ export declare const FIXERS: readonly Fixer[];
42
+ /**
43
+ * Resolves `--rule` names, defaulting to every offline default fixer.
44
+ *
45
+ * An unknown name is a usage error rather than a silent no-op, so
46
+ * `md fix --rule typo --check` can never exit 0 and look like a pass.
47
+ */
48
+ export declare function selectFixers(names: readonly string[]): Fixer[];