paperlint 3.1.2 → 3.2.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 (374) hide show
  1. package/.github/workflows/ci.yml +12 -7
  2. package/CLAUDE.md +3 -3
  3. package/CONTRIBUTING.md +34 -5
  4. package/dist/adapters/banal/index.d.ts.map +1 -1
  5. package/dist/adapters/banal/index.js +9 -5
  6. package/dist/adapters/banal/index.js.map +1 -1
  7. package/dist/adapters/banal/invocation.d.ts +1 -1
  8. package/dist/adapters/node/files.io.d.ts.map +1 -1
  9. package/dist/adapters/node/files.io.js +2 -1
  10. package/dist/adapters/node/files.io.js.map +1 -1
  11. package/dist/adapters/node/process.io.d.ts +0 -5
  12. package/dist/adapters/node/process.io.d.ts.map +1 -1
  13. package/dist/adapters/node/process.io.js +4 -3
  14. package/dist/adapters/node/process.io.js.map +1 -1
  15. package/dist/adapters/pdfjs/fill.d.ts.map +1 -1
  16. package/dist/adapters/pdfjs/fill.js +13 -7
  17. package/dist/adapters/pdfjs/fill.js.map +1 -1
  18. package/dist/adapters/references/index.d.ts.map +1 -1
  19. package/dist/adapters/references/index.js +4 -5
  20. package/dist/adapters/references/index.js.map +1 -1
  21. package/dist/adapters/references/pool.d.ts.map +1 -1
  22. package/dist/adapters/references/pool.js +4 -5
  23. package/dist/adapters/references/pool.js.map +1 -1
  24. package/dist/adapters/references/reach.io.d.ts.map +1 -1
  25. package/dist/adapters/references/reach.io.js +2 -1
  26. package/dist/adapters/references/reach.io.js.map +1 -1
  27. package/dist/build-engine.js +2 -2
  28. package/dist/build-engine.js.map +1 -1
  29. package/dist/build.d.ts.map +1 -1
  30. package/dist/build.js +14 -11
  31. package/dist/build.js.map +1 -1
  32. package/dist/cli.d.ts.map +1 -1
  33. package/dist/cli.js +31 -34
  34. package/dist/cli.js.map +1 -1
  35. package/dist/doctor.d.ts.map +1 -1
  36. package/dist/doctor.js +3 -2
  37. package/dist/doctor.js.map +1 -1
  38. package/dist/domain/lookup-cache.d.ts.map +1 -1
  39. package/dist/domain/lookup-cache.js +10 -8
  40. package/dist/domain/lookup-cache.js.map +1 -1
  41. package/dist/domain/text.d.ts +12 -0
  42. package/dist/domain/text.d.ts.map +1 -1
  43. package/dist/domain/text.js +17 -0
  44. package/dist/domain/text.js.map +1 -1
  45. package/dist/engine.d.ts.map +1 -1
  46. package/dist/engine.js +4 -3
  47. package/dist/engine.js.map +1 -1
  48. package/dist/eslint-rules/bib-reachable-entry.d.ts +22 -0
  49. package/dist/eslint-rules/bib-reachable-entry.d.ts.map +1 -0
  50. package/dist/eslint-rules/bib-reachable-entry.js +75 -0
  51. package/dist/eslint-rules/bib-reachable-entry.js.map +1 -0
  52. package/dist/eslint-rules/install-path-literals.d.ts +80 -0
  53. package/dist/eslint-rules/install-path-literals.d.ts.map +1 -0
  54. package/dist/eslint-rules/install-path-literals.js +105 -0
  55. package/dist/eslint-rules/install-path-literals.js.map +1 -0
  56. package/dist/eslint-rules/latex-language.d.ts +136 -0
  57. package/dist/eslint-rules/latex-language.d.ts.map +1 -0
  58. package/dist/eslint-rules/latex-language.js +639 -0
  59. package/dist/eslint-rules/latex-language.js.map +1 -0
  60. package/dist/eslint-rules/paper-research-question.d.ts +31 -0
  61. package/dist/eslint-rules/paper-research-question.d.ts.map +1 -0
  62. package/dist/eslint-rules/paper-research-question.js +188 -0
  63. package/dist/eslint-rules/paper-research-question.js.map +1 -0
  64. package/dist/eslint-rules/paper-stages.d.ts +83 -0
  65. package/dist/eslint-rules/paper-stages.d.ts.map +1 -0
  66. package/dist/eslint-rules/paper-stages.js +358 -0
  67. package/dist/eslint-rules/paper-stages.js.map +1 -0
  68. package/dist/eslint-rules/paper-typography.d.ts +74 -0
  69. package/dist/eslint-rules/paper-typography.d.ts.map +1 -0
  70. package/dist/eslint-rules/paper-typography.js +404 -0
  71. package/dist/eslint-rules/paper-typography.js.map +1 -0
  72. package/dist/eslint-rules/papers.d.ts +42 -0
  73. package/dist/eslint-rules/papers.d.ts.map +1 -0
  74. package/dist/eslint-rules/papers.js +145 -0
  75. package/dist/eslint-rules/papers.js.map +1 -0
  76. package/dist/eslint-rules/pdf-last-page-balance.d.ts +72 -0
  77. package/dist/eslint-rules/pdf-last-page-balance.d.ts.map +1 -0
  78. package/dist/eslint-rules/pdf-last-page-balance.js +237 -0
  79. package/dist/eslint-rules/pdf-last-page-balance.js.map +1 -0
  80. package/dist/eslint-rules/review-frontmatter.d.ts +57 -0
  81. package/dist/eslint-rules/review-frontmatter.d.ts.map +1 -0
  82. package/dist/eslint-rules/review-frontmatter.js +126 -0
  83. package/dist/eslint-rules/review-frontmatter.js.map +1 -0
  84. package/dist/eslint-rules/review-frontmatter.schema.json +36 -0
  85. package/dist/eslint-rules/rule-context.d.ts +55 -0
  86. package/dist/eslint-rules/rule-context.d.ts.map +1 -0
  87. package/dist/eslint-rules/rule-context.js +9 -0
  88. package/dist/eslint-rules/rule-context.js.map +1 -0
  89. package/dist/eslint-rules/sibling-frontmatter.d.ts +25 -0
  90. package/dist/eslint-rules/sibling-frontmatter.d.ts.map +1 -0
  91. package/dist/eslint-rules/sibling-frontmatter.js +16 -0
  92. package/dist/eslint-rules/sibling-frontmatter.js.map +1 -0
  93. package/dist/eslint-rules/sibling-frontmatter.schema.json +14 -0
  94. package/dist/eslint-rules/temp-root-realpath.d.ts +71 -0
  95. package/dist/eslint-rules/temp-root-realpath.d.ts.map +1 -0
  96. package/dist/eslint-rules/temp-root-realpath.js +139 -0
  97. package/dist/eslint-rules/temp-root-realpath.js.map +1 -0
  98. package/dist/eslint-rules/tex-build.d.ts +35 -0
  99. package/dist/eslint-rules/tex-build.d.ts.map +1 -0
  100. package/dist/eslint-rules/tex-build.js +313 -0
  101. package/dist/eslint-rules/tex-build.js.map +1 -0
  102. package/dist/facts-file.d.ts.map +1 -1
  103. package/dist/facts-file.js +2 -1
  104. package/dist/facts-file.js.map +1 -1
  105. package/dist/hooks-settings.d.ts +1 -1
  106. package/dist/hooks-settings.d.ts.map +1 -1
  107. package/dist/hooks-settings.js +14 -9
  108. package/dist/hooks-settings.js.map +1 -1
  109. package/dist/init.d.ts +5 -5
  110. package/dist/init.d.ts.map +1 -1
  111. package/dist/init.js +15 -7
  112. package/dist/init.js.map +1 -1
  113. package/dist/latex-loop.d.ts +2 -2
  114. package/dist/latex-loop.d.ts.map +1 -1
  115. package/dist/latex-loop.js +2 -2
  116. package/dist/latex-loop.js.map +1 -1
  117. package/dist/lib/agent-cli-version.d.ts +65 -0
  118. package/dist/lib/agent-cli-version.d.ts.map +1 -0
  119. package/dist/lib/agent-cli-version.js +77 -0
  120. package/dist/lib/agent-cli-version.js.map +1 -0
  121. package/dist/lib/check.d.ts +19 -0
  122. package/dist/lib/check.d.ts.map +1 -0
  123. package/dist/lib/check.js +52 -0
  124. package/dist/lib/check.js.map +1 -0
  125. package/dist/lib/markdown.d.ts +180 -0
  126. package/dist/lib/markdown.d.ts.map +1 -0
  127. package/dist/lib/markdown.js +302 -0
  128. package/dist/lib/markdown.js.map +1 -0
  129. package/dist/lib/paper-config.d.ts +84 -0
  130. package/dist/lib/paper-config.d.ts.map +1 -0
  131. package/dist/lib/paper-config.js +142 -0
  132. package/dist/lib/paper-config.js.map +1 -0
  133. package/dist/lib/skill-eval-fixture.d.ts +29 -0
  134. package/dist/lib/skill-eval-fixture.d.ts.map +1 -0
  135. package/dist/lib/skill-eval-fixture.js +62 -0
  136. package/dist/lib/skill-eval-fixture.js.map +1 -0
  137. package/dist/link-skills.d.ts.map +1 -1
  138. package/dist/link-skills.js +5 -4
  139. package/dist/link-skills.js.map +1 -1
  140. package/dist/new-paper.d.ts.map +1 -1
  141. package/dist/new-paper.js +2 -2
  142. package/dist/new-paper.js.map +1 -1
  143. package/dist/paper-settings.d.ts.map +1 -1
  144. package/dist/paper-settings.js +5 -4
  145. package/dist/paper-settings.js.map +1 -1
  146. package/dist/pdf-facts.d.ts.map +1 -1
  147. package/dist/pdf-facts.js +2 -1
  148. package/dist/pdf-facts.js.map +1 -1
  149. package/dist/pdf-geometry.d.ts.map +1 -1
  150. package/dist/pdf-geometry.js +1 -1
  151. package/dist/pdf-geometry.js.map +1 -1
  152. package/dist/presets.d.ts.map +1 -1
  153. package/dist/presets.js +3 -2
  154. package/dist/presets.js.map +1 -1
  155. package/dist/references.d.ts.map +1 -1
  156. package/dist/references.js +11 -6
  157. package/dist/references.js.map +1 -1
  158. package/dist/rules-config.d.ts.map +1 -1
  159. package/dist/rules-config.js +6 -3
  160. package/dist/rules-config.js.map +1 -1
  161. package/dist/structure.js +1 -1
  162. package/dist/structure.js.map +1 -1
  163. package/dist/tex-requirements.d.ts.map +1 -1
  164. package/dist/tex-requirements.js +8 -3
  165. package/dist/tex-requirements.js.map +1 -1
  166. package/dist/toolchain.d.ts.map +1 -1
  167. package/dist/toolchain.js +21 -16
  168. package/dist/toolchain.js.map +1 -1
  169. package/dist/venue-rules.js +1 -1
  170. package/dist/venue-rules.js.map +1 -1
  171. package/docs/e2e.md +7 -7
  172. package/docs/install.md +1 -1
  173. package/docs/prior-art/README.md +1 -1
  174. package/docs/prior-art/package-location.md +5 -5
  175. package/docs/prior-art/repro/README.md +1 -1
  176. package/docs/prior-art/test-tooling.md +2 -2
  177. package/docs/testing.md +11 -8
  178. package/docs/toolchain.md +1 -1
  179. package/eslint-rules/{bib-reachable-entry.mjs → bib-reachable-entry.ts} +4 -3
  180. package/eslint-rules/install-path-literals.harness.mjs +1 -1
  181. package/eslint-rules/{install-path-literals.mjs → install-path-literals.ts} +16 -8
  182. package/eslint-rules/latex-language.harness.mjs +2 -2
  183. package/eslint-rules/latex-language.test.mjs +7 -1
  184. package/eslint-rules/{latex-language.mjs → latex-language.ts} +297 -109
  185. package/eslint-rules/paper-research-question.harness.mjs +3 -3
  186. package/eslint-rules/{paper-research-question.mjs → paper-research-question.ts} +34 -15
  187. package/eslint-rules/paper-stages.harness.mjs +2 -2
  188. package/eslint-rules/paper-stages.test.mjs +8 -2
  189. package/eslint-rules/{paper-stages.mjs → paper-stages.ts} +74 -29
  190. package/eslint-rules/paper-typography.test.mjs +3 -3
  191. package/eslint-rules/{paper-typography.mjs → paper-typography.ts} +132 -54
  192. package/eslint-rules/papers.harness.mjs +2 -2
  193. package/eslint-rules/{papers.mjs → papers.ts} +7 -4
  194. package/eslint-rules/pdf-last-page-balance.harness.mjs +3 -3
  195. package/eslint-rules/{pdf-last-page-balance.mjs → pdf-last-page-balance.ts} +88 -31
  196. package/eslint-rules/review-frontmatter.test.mjs +2 -2
  197. package/eslint-rules/{review-frontmatter.mjs → review-frontmatter.ts} +37 -15
  198. package/eslint-rules/rule-context.ts +62 -0
  199. package/eslint-rules/{sibling-frontmatter.mjs → sibling-frontmatter.ts} +1 -1
  200. package/eslint-rules/temp-root-realpath.harness.mjs +1 -1
  201. package/eslint-rules/{temp-root-realpath.mjs → temp-root-realpath.ts} +19 -6
  202. package/eslint-rules/tex-build.harness.mjs +2 -2
  203. package/eslint-rules/{tex-build.mjs → tex-build.ts} +4 -3
  204. package/eslint.config.mjs +139 -30
  205. package/fixtures/pdf-facts/README.md +2 -2
  206. package/fixtures/real-markdown-paper/{baseline.mjs → baseline.ts} +31 -10
  207. package/hooks/{hooks.harness.mjs → hooks.harness.ts} +51 -34
  208. package/hooks/paper-edit-guard.hook.mjs +1 -1
  209. package/hooks/{paper-edit-guard.test.mjs → paper-edit-guard.test.ts} +3 -7
  210. package/hooks/paper-skills-nudge.hook.mjs +1 -1
  211. package/hooks/{paper-skills-nudge.test.mjs → paper-skills-nudge.test.ts} +2 -6
  212. package/hooks/{paper-status-gates.test.mjs → paper-status-gates.test.ts} +2 -6
  213. package/lib/agent-cli-version.harness.mjs +1 -1
  214. package/lib/{agent-cli-version.mjs → agent-cli-version.ts} +32 -18
  215. package/lib/check.test.ts +14 -9
  216. package/lib/{check.mjs → check.ts} +22 -9
  217. package/lib/markdown.test.mjs +7 -7
  218. package/lib/{markdown.mjs → markdown.ts} +68 -29
  219. package/lib/paper-config.harness.mjs +8 -8
  220. package/lib/{paper-config.mjs → paper-config.ts} +19 -14
  221. package/lib/skill-checks.mjs +1 -1
  222. package/lib/skill-checks.test.mjs +1 -1
  223. package/lib/skill-corpus.mjs +1 -1
  224. package/lib/skill-eval-kit.mjs +1 -1
  225. package/package.json +42 -10
  226. package/scripts/{check.harness.mjs → check.harness.ts} +111 -10
  227. package/scripts/{check.test.mjs → check.test.ts} +13 -10
  228. package/scripts/{check.mjs → check.ts} +116 -42
  229. package/scripts/coverage-config.test.ts +80 -37
  230. package/scripts/eslint-report-guard.test.mjs +1 -1
  231. package/scripts/harness-api.frozen.json +14 -15
  232. package/scripts/harness-api.test.ts +8 -5
  233. package/scripts/layer-legacy-frozen.test.ts +17 -13
  234. package/scripts/{layer-legacy-frozen.mjs → layer-legacy-frozen.ts} +128 -39
  235. package/scripts/release-config.test.ts +12 -4
  236. package/scripts/rules-see-files.test.mjs +1 -1
  237. package/scripts/test.test.ts +78 -0
  238. package/scripts/test.ts +87 -0
  239. package/skills/grade-paper-writing/prose-lint.mjs +1 -1
  240. package/skills/grade-paper-writing/{prose-lint.test.mjs → prose-lint.test.ts} +2 -2
  241. package/skills/paper-pipeline/description-language.eval.mjs +1 -1
  242. package/skills/paper-pipeline/framing-vs-vocabulary.eval.mjs +1 -1
  243. package/skills/paper-pipeline/grade-paper-writing-ablation.eval.mjs +1 -1
  244. package/skills/paper-pipeline/pipeline-firing.eval.mjs +1 -1
  245. package/skills/paper-pipeline/pipeline-language.eval.mjs +1 -1
  246. package/skills/paper-pipeline/scripts/README.md +1 -1
  247. package/skills/paper-pipeline/scripts/announce.test.mjs +1 -1
  248. package/skills/paper-pipeline/scripts/artifact-coverage.mjs +1 -1
  249. package/skills/paper-pipeline/scripts/{artifact-coverage.test.mjs → artifact-coverage.test.ts} +2 -2
  250. package/skills/paper-pipeline/scripts/consumer.mjs +1 -5
  251. package/skills/paper-pipeline/scripts/consumer.test.mjs +1 -1
  252. package/skills/paper-pipeline/scripts/extract-ref-facts.harness.mjs +1 -1
  253. package/skills/paper-pipeline/scripts/extract-ref-facts.mjs +1 -4
  254. package/skills/paper-pipeline/scripts/extract-ref-facts.test.mjs +1 -1
  255. package/skills/paper-pipeline/scripts/fixtures/{scorecard.mjs → scorecard.ts} +36 -7
  256. package/skills/paper-pipeline/scripts/{generated-code.test.mjs → generated-code.test.ts} +3 -3
  257. package/skills/paper-pipeline/scripts/ledger.cli.test.mjs +1 -1
  258. package/skills/paper-pipeline/scripts/pipeline-check.cli.test.mjs +2 -2
  259. package/skills/paper-pipeline/scripts/pipeline-check.harness.mjs +2 -2
  260. package/skills/paper-pipeline/scripts/pipeline-check.mjs +1 -4
  261. package/skills/paper-pipeline/scripts/population-map.mjs +1 -4
  262. package/skills/paper-pipeline/scripts/population-map.test.mjs +1 -1
  263. package/skills/paper-pipeline/scripts/{round-diff.harness.mjs → round-diff.harness.ts} +45 -18
  264. package/skills/paper-pipeline/scripts/round-diff.mjs +1 -1
  265. package/skills/paper-pipeline/scripts/round-diff.test.mjs +1 -1
  266. package/skills/paper-pipeline/scripts/run-mechanical.test.mjs +1 -1
  267. package/skills/paper-pipeline/scripts/status.test.mjs +1 -1
  268. package/skills/plan-paper-timeline/fixtures/{fake-google-calendar.mjs → fake-google-calendar.ts} +101 -70
  269. package/skills/plan-paper-timeline/plan-paper-timeline.effects.harness.mjs +3 -3
  270. package/skills/render-paper/{extract-pdf-facts.harness.mjs → extract-pdf-facts.harness.ts} +34 -9
  271. package/skills/render-paper/render-paper.harness.mjs +2 -2
  272. package/skills/tighten-paper/structure.mjs +1 -1
  273. package/skills/tighten-paper/{structure.test.mjs → structure.test.ts} +4 -3
  274. package/skills/verify-citations/scripts/{bib-authors.cli.test.mjs → bib-authors.cli.test.ts} +14 -4
  275. package/skills/verify-citations/scripts/bib-authors.d.mts +63 -0
  276. package/skills/verify-citations/scripts/bib-authors.mjs +1 -4
  277. package/skills/verify-citations/scripts/{verify-cites.cli.test.mjs → verify-cites.cli.test.ts} +32 -9
  278. package/skills/verify-citations/scripts/verify-cites.d.mts +58 -0
  279. package/skills/verify-citations/scripts/verify-cites.mjs +11 -1
  280. package/skills/verify-citations/scripts/verify-cites.net.test.mjs +35 -0
  281. package/skills/verify-citations/scripts/verify-cites.test.mjs +14 -0
  282. package/src/CLAUDE.md +1 -1
  283. package/src/adapters/banal/index.test.ts +3 -6
  284. package/src/adapters/banal/index.ts +7 -4
  285. package/src/adapters/banal/invocation.test.ts +3 -1
  286. package/src/adapters/banal/invocation.ts +1 -1
  287. package/src/adapters/banal/output.test.ts +1 -1
  288. package/src/adapters/banal/run.test.ts +3 -3
  289. package/src/adapters/banal/xml.test.ts +1 -1
  290. package/src/adapters/curl/download.test.ts +4 -2
  291. package/src/adapters/node/files.io.ts +2 -2
  292. package/src/adapters/node/files.test.ts +3 -1
  293. package/src/adapters/node/process.io.ts +4 -3
  294. package/src/adapters/node/process.test.ts +1 -1
  295. package/src/adapters/node/workspace.test.ts +3 -1
  296. package/src/adapters/pdfjs/fill.test.ts +2 -2
  297. package/src/adapters/pdfjs/fill.ts +14 -7
  298. package/src/adapters/references/index.test.ts +31 -38
  299. package/src/adapters/references/index.ts +26 -58
  300. package/src/adapters/references/pool.ts +3 -5
  301. package/src/adapters/references/reach.io.ts +2 -1
  302. package/src/build-engine.harness.mjs +1 -1
  303. package/src/build-engine.test.ts +2 -2
  304. package/src/build-engine.ts +2 -2
  305. package/src/build.harness.mjs +2 -2
  306. package/src/build.test.ts +15 -14
  307. package/src/build.ts +28 -19
  308. package/src/cli.harness.mjs +6 -6
  309. package/src/cli.test.ts +13 -6
  310. package/src/cli.ts +39 -37
  311. package/src/doctor.harness.mjs +3 -3
  312. package/src/doctor.ts +3 -2
  313. package/src/domain/lookup-cache.ts +21 -11
  314. package/src/domain/result.test.ts +2 -2
  315. package/src/domain/text.test.ts +32 -0
  316. package/src/domain/text.ts +23 -0
  317. package/src/engine.harness.mjs +2 -2
  318. package/src/engine.ts +4 -3
  319. package/src/facts-file.test.ts +9 -7
  320. package/src/facts-file.ts +2 -1
  321. package/src/{hooks-settings.harness.mjs → hooks-settings.harness.ts} +39 -20
  322. package/src/hooks-settings.ts +20 -9
  323. package/src/init.test.ts +12 -9
  324. package/src/init.ts +22 -12
  325. package/src/{latex-log.harness.mjs → latex-log.harness.ts} +14 -14
  326. package/src/{latex-loop.harness.mjs → latex-loop.harness.ts} +64 -36
  327. package/src/latex-loop.ts +3 -3
  328. package/src/{link-skills.harness.mjs → link-skills.harness.ts} +19 -19
  329. package/src/link-skills.test.ts +3 -3
  330. package/src/link-skills.ts +5 -4
  331. package/src/lint-fix.test.ts +4 -6
  332. package/src/linted-set.test.ts +2 -2
  333. package/src/new-paper.harness.mjs +2 -2
  334. package/src/new-paper.test.ts +8 -10
  335. package/src/new-paper.ts +2 -2
  336. package/src/paper-files.test.ts +3 -5
  337. package/src/paper-settings-commands.test.ts +5 -4
  338. package/src/paper-settings.test.ts +5 -5
  339. package/src/paper-settings.ts +8 -9
  340. package/src/{pdf-facts.harness.mjs → pdf-facts.harness.ts} +9 -8
  341. package/src/pdf-facts.test.ts +10 -11
  342. package/src/pdf-facts.ts +2 -1
  343. package/src/{pdf-geometry.harness.mjs → pdf-geometry.harness.ts} +19 -12
  344. package/src/pdf-geometry.ts +3 -1
  345. package/src/presets.ts +3 -2
  346. package/src/references.test.ts +51 -43
  347. package/src/references.ts +14 -7
  348. package/src/{rules-config.harness.mjs → rules-config.harness.ts} +7 -13
  349. package/src/rules-config.ts +7 -4
  350. package/src/rules-off.test.ts +6 -4
  351. package/src/{structure.harness.mjs → structure.harness.ts} +26 -15
  352. package/src/structure.ts +1 -1
  353. package/src/{tex-requirements.harness.mjs → tex-requirements.harness.ts} +50 -22
  354. package/src/tex-requirements.ts +8 -5
  355. package/src/toolchain.harness.mjs +2 -2
  356. package/src/toolchain.test.ts +1 -1
  357. package/src/toolchain.ts +31 -17
  358. package/src/venue-rules.test.ts +62 -64
  359. package/src/venue-rules.ts +1 -1
  360. package/tsconfig.json +6 -3
  361. package/tsconfig.pkg.json +10 -0
  362. package/lib/check.d.mts +0 -17
  363. package/lib/paper-config.d.mts +0 -31
  364. package/scripts/layer-legacy-frozen.d.mts +0 -36
  365. package/scripts/rules-are-content-only.harness.mjs +0 -105
  366. package/scripts/rules-are-content-only.mjs +0 -148
  367. package/scripts/rules-are-content-only.test.mjs +0 -61
  368. package/scripts/test.mjs +0 -44
  369. package/scripts/test.test.mjs +0 -52
  370. /package/bin/{paperlint.test.mjs → paperlint.test.ts} +0 -0
  371. /package/lib/{skill-eval-fixture.mjs → skill-eval-fixture.ts} +0 -0
  372. /package/skills/grade-paper-writing/__snapshots__/{prose-lint.test.mjs.snap → prose-lint.test.ts.snap} +0 -0
  373. /package/skills/osf-artifact-upload/{osf-artifact-upload.harness.mjs → osf-artifact-upload.harness.ts} +0 -0
  374. /package/skills/tighten-paper/__snapshots__/{structure.test.mjs.snap → structure.test.ts.snap} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../lib/markdown.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * Where the consumer declares its settings — the ONE SOURCE for everything that is allowed to
3
+ * import it.
4
+ *
5
+ * 🔴 WHY THIS MODULE DOES NOT REMOVE THE DUPLICATION COMPLETELY, AND THAT IS NOT AN OVERSIGHT.
6
+ * The three hooks (`hooks/*.hook.mjs`) still have to keep their own copies of these values: a
7
+ * compiled hook is forbidden to import anything but `vigiles/hook`, and that ban is not
8
+ * arbitrary — a hook's capabilities equal its API surface, so allowing imports would mean
9
+ * allowing a reach into `child_process`. The restriction is wider than strictly necessary
10
+ * (importing plain constants adds no capability), and that is discussed in zernie/vigiles#245,
11
+ * but until it is relaxed the hooks duplicate, and drift is caught by the cross-check in
12
+ * `hooks/hooks.harness.ts`.
13
+ *
14
+ * 🔴 BUT THE REST WERE DUPLICATING FOR NO REASON AT ALL. `eslint-rules/papers.mjs` and
15
+ * `skills/paper-pipeline/scripts/consumer.mjs` are not hooks, carry no import restriction, and
16
+ * could always have taken the value from here. Worse, their copies were not covered by the
17
+ * cross-check at all — it compared the three hooks against each other, while these two lived
18
+ * next door and could drift apart silently. Found 2026-09-18 by grepping AFTER the cross-check
19
+ * itself had already been fixed — i.e. the check's wording was fixed, but nobody measured its
20
+ * COVERAGE.
21
+ */
22
+ /**
23
+ * The tool's name. Its settings file is named after it (`CONFIG_FILE`), its messages start with it,
24
+ * and the hooks resolve their scripts through it. It equals the package name, and
25
+ * `lib/paper-config.harness.mjs` checks that.
26
+ */
27
+ export declare const CONFIG_KEY: string;
28
+ /**
29
+ * THE SETTINGS FILE, ONE NAME AT TWO LEVELS, ONE SCHEMA (`SETTINGS_KEYS`):
30
+ *
31
+ * paperlint.json optional, at the project root: where the papers are, the
32
+ * project's rules, and defaults for every paper
33
+ * <papersDir>/<paper>/paperlint.json one paper: its venue preset, its kind, its own rules
34
+ *
35
+ * A paper's file merges over the root's: its `extends`, `kind` and `pdf` win, and its `rules` are
36
+ * applied after the root's. A venue preset (`paperlint:<name>`, or the project's own `./x.jsonc`)
37
+ * is the third level, below both.
38
+ */
39
+ export declare const CONFIG_FILE: string;
40
+ /**
41
+ * The files that make a directory a PAPER. A `paperlint.json` beside one of them is that paper's,
42
+ * never the project's — so walking up from inside a paper does not stop at the paper's own file.
43
+ */
44
+ export declare const PAPER_MARKERS: readonly string[];
45
+ /**
46
+ * The project root: the nearest directory, walking up from `startDir`, that holds a root
47
+ * `paperlint.json` (one not beside a paper's files); else the nearest directory holding a
48
+ * `package.json`; else `startDir` itself. The same walk eslint, prettier and tsc use for theirs.
49
+ *
50
+ * @param isFile whether a path exists — `existsSync` by default; `src/` passes its Files port.
51
+ */
52
+ export declare function findProjectRoot(startDir: string, isFile?: (path: string) => boolean): string;
53
+ /**
54
+ * The project's settings: the object in `<root>/paperlint.json`, or undefined when there is no
55
+ * such file, or it does not parse, or it is not an object. For readers that only need one key and
56
+ * fall back to its default; `paperlint lint` parses the file strictly and names what is wrong.
57
+ */
58
+ export declare function settingsOf(root: string): Readonly<Record<string, unknown>> | undefined;
59
+ /** The default papers directory, used when the root `paperlint.json` declares none (or there is none). */
60
+ export declare const DEFAULT_PAPERS_ROOT: string;
61
+ /**
62
+ * The field that names the papers directory: `{ "papersDir": "papers" }` in the root
63
+ * `paperlint.json`. Optional; absent means `DEFAULT_PAPERS_ROOT`.
64
+ *
65
+ * This is the one place the name is spelled. Code reads the field as
66
+ * `settings[PAPERS_DIR_FIELD]`, never by a literal, so renaming it again is a one-line change
67
+ * here. The three hooks cannot import this module, so they keep their own copy, and
68
+ * `lib/paper-config.harness.mjs` checks that every copy matches this one.
69
+ */
70
+ export declare const PAPERS_DIR_FIELD: string;
71
+ /**
72
+ * Every key a `paperlint.json` may hold — the root's and a paper's, ONE schema — with who reads it.
73
+ * A key not listed here is REFUSED with its name, because a typo in a key otherwise reads as "not
74
+ * set". The keys in `ROOT_ONLY_KEYS` describe the whole project and are refused in a paper's file.
75
+ *
76
+ * 🔴 ONE LIST, AND IT IS CHECKED AGAINST THE READERS, NOT TRUSTED. `lib/paper-config.harness.mjs`
77
+ * walks the package's source, finds every `settingsOf(…)?.<key>` read and every field of
78
+ * `PaperlintConfig`, and requires each to be here — so a new reader that forgets this list turns
79
+ * the harness red before a consumer's config does.
80
+ */
81
+ export declare const SETTINGS_KEYS: Readonly<Record<string, string>>;
82
+ /** The keys that only mean something for the whole project: refused in a paper's `paperlint.json`. */
83
+ export declare const ROOT_ONLY_KEYS: readonly string[];
84
+ //# sourceMappingURL=paper-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paper-config.d.ts","sourceRoot":"","sources":["../../lib/paper-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAKH;;;;GAIG;AACH,eAAO,MAAM,UAAU,EAAE,MAAoB,CAAC;AAE9C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,WAAW,EAAE,MAAyB,CAAC;AAEpD;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,SAAS,MAAM,EAKzC,CAAC;AAEH;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAoB,GAC7C,MAAM,CAmBR;AAKD;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,MAAM,GACX,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,CAQ/C;AAED,0GAA0G;AAC1G,eAAO,MAAM,mBAAmB,EAAE,MAAiB,CAAC;AAEpD;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAoB,CAAC;AAEpD;;;;;;;;;GASG;AACH,eAAO,MAAM,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAiBzD,CAAC;AAEH,sGAAsG;AACtG,eAAO,MAAM,cAAc,EAAE,SAAS,MAAM,EAS1C,CAAC"}
@@ -0,0 +1,142 @@
1
+ /**
2
+ * Where the consumer declares its settings — the ONE SOURCE for everything that is allowed to
3
+ * import it.
4
+ *
5
+ * 🔴 WHY THIS MODULE DOES NOT REMOVE THE DUPLICATION COMPLETELY, AND THAT IS NOT AN OVERSIGHT.
6
+ * The three hooks (`hooks/*.hook.mjs`) still have to keep their own copies of these values: a
7
+ * compiled hook is forbidden to import anything but `vigiles/hook`, and that ban is not
8
+ * arbitrary — a hook's capabilities equal its API surface, so allowing imports would mean
9
+ * allowing a reach into `child_process`. The restriction is wider than strictly necessary
10
+ * (importing plain constants adds no capability), and that is discussed in zernie/vigiles#245,
11
+ * but until it is relaxed the hooks duplicate, and drift is caught by the cross-check in
12
+ * `hooks/hooks.harness.ts`.
13
+ *
14
+ * 🔴 BUT THE REST WERE DUPLICATING FOR NO REASON AT ALL. `eslint-rules/papers.mjs` and
15
+ * `skills/paper-pipeline/scripts/consumer.mjs` are not hooks, carry no import restriction, and
16
+ * could always have taken the value from here. Worse, their copies were not covered by the
17
+ * cross-check at all — it compared the three hooks against each other, while these two lived
18
+ * next door and could drift apart silently. Found 2026-09-18 by grepping AFTER the cross-check
19
+ * itself had already been fixed — i.e. the check's wording was fixed, but nobody measured its
20
+ * COVERAGE.
21
+ */
22
+ import { existsSync, readFileSync } from "node:fs";
23
+ import { dirname, join, resolve } from "node:path";
24
+ /**
25
+ * The tool's name. Its settings file is named after it (`CONFIG_FILE`), its messages start with it,
26
+ * and the hooks resolve their scripts through it. It equals the package name, and
27
+ * `lib/paper-config.harness.mjs` checks that.
28
+ */
29
+ export const CONFIG_KEY = "paperlint";
30
+ /**
31
+ * THE SETTINGS FILE, ONE NAME AT TWO LEVELS, ONE SCHEMA (`SETTINGS_KEYS`):
32
+ *
33
+ * paperlint.json optional, at the project root: where the papers are, the
34
+ * project's rules, and defaults for every paper
35
+ * <papersDir>/<paper>/paperlint.json one paper: its venue preset, its kind, its own rules
36
+ *
37
+ * A paper's file merges over the root's: its `extends`, `kind` and `pdf` win, and its `rules` are
38
+ * applied after the root's. A venue preset (`paperlint:<name>`, or the project's own `./x.jsonc`)
39
+ * is the third level, below both.
40
+ */
41
+ export const CONFIG_FILE = "paperlint.json";
42
+ /**
43
+ * The files that make a directory a PAPER. A `paperlint.json` beside one of them is that paper's,
44
+ * never the project's — so walking up from inside a paper does not stop at the paper's own file.
45
+ */
46
+ export const PAPER_MARKERS = Object.freeze([
47
+ "paper.tex",
48
+ "paper.md",
49
+ "draft.md",
50
+ "PIPELINE-STATUS.md",
51
+ ]);
52
+ /**
53
+ * The project root: the nearest directory, walking up from `startDir`, that holds a root
54
+ * `paperlint.json` (one not beside a paper's files); else the nearest directory holding a
55
+ * `package.json`; else `startDir` itself. The same walk eslint, prettier and tsc use for theirs.
56
+ *
57
+ * @param isFile whether a path exists — `existsSync` by default; `src/` passes its Files port.
58
+ */
59
+ export function findProjectRoot(startDir, isFile = existsSync) {
60
+ const start = resolve(startDir);
61
+ const isPaper = (d) => PAPER_MARKERS.some((m) => isFile(join(d, m)));
62
+ // Up from `start` to the first directory `found` accepts; null past the filesystem root. A
63
+ // loop with an exit condition rather than `for (;;)`: the code after an endless loop is a block
64
+ // that can never run, and coverage counts it as one that did not.
65
+ const walk = (found) => {
66
+ let d = start;
67
+ while (!found(d)) {
68
+ if (dirname(d) === d)
69
+ return null;
70
+ d = dirname(d);
71
+ }
72
+ return d;
73
+ };
74
+ return (walk((d) => isFile(join(d, CONFIG_FILE)) && !isPaper(d)) ??
75
+ walk((d) => isFile(join(d, "package.json"))) ??
76
+ start);
77
+ }
78
+ const isObject = (v) => v !== null && typeof v === "object" && !Array.isArray(v);
79
+ /**
80
+ * The project's settings: the object in `<root>/paperlint.json`, or undefined when there is no
81
+ * such file, or it does not parse, or it is not an object. For readers that only need one key and
82
+ * fall back to its default; `paperlint lint` parses the file strictly and names what is wrong.
83
+ */
84
+ export function settingsOf(root) {
85
+ let v;
86
+ try {
87
+ v = JSON.parse(readFileSync(join(root, CONFIG_FILE), "utf8"));
88
+ }
89
+ catch {
90
+ return undefined;
91
+ }
92
+ return isObject(v) ? v : undefined;
93
+ }
94
+ /** The default papers directory, used when the root `paperlint.json` declares none (or there is none). */
95
+ export const DEFAULT_PAPERS_ROOT = "papers";
96
+ /**
97
+ * The field that names the papers directory: `{ "papersDir": "papers" }` in the root
98
+ * `paperlint.json`. Optional; absent means `DEFAULT_PAPERS_ROOT`.
99
+ *
100
+ * This is the one place the name is spelled. Code reads the field as
101
+ * `settings[PAPERS_DIR_FIELD]`, never by a literal, so renaming it again is a one-line change
102
+ * here. The three hooks cannot import this module, so they keep their own copy, and
103
+ * `lib/paper-config.harness.mjs` checks that every copy matches this one.
104
+ */
105
+ export const PAPERS_DIR_FIELD = "papersDir";
106
+ /**
107
+ * Every key a `paperlint.json` may hold — the root's and a paper's, ONE schema — with who reads it.
108
+ * A key not listed here is REFUSED with its name, because a typo in a key otherwise reads as "not
109
+ * set". The keys in `ROOT_ONLY_KEYS` describe the whole project and are refused in a paper's file.
110
+ *
111
+ * 🔴 ONE LIST, AND IT IS CHECKED AGAINST THE READERS, NOT TRUSTED. `lib/paper-config.harness.mjs`
112
+ * walks the package's source, finds every `settingsOf(…)?.<key>` read and every field of
113
+ * `PaperlintConfig`, and requires each to be here — so a new reader that forgets this list turns
114
+ * the harness red before a consumer's config does.
115
+ */
116
+ export const SETTINGS_KEYS = Object.freeze({
117
+ papersDir: `the papers directory, default "papers" — every command, the hooks`,
118
+ structure: "which files a paper directory must hold — paperlint lint",
119
+ rules: "rule overrides: { id: severity } for every paper in scope, or ESLint blocks (files, ignores, rules) — paperlint lint",
120
+ extends: "the venue preset: paperlint:<name> or ./path.jsonc — the pdf/ venue rules, paperlint build",
121
+ kind: "the kind of paper, whose page limit applies — pdf/limits",
122
+ pdf: "where the built PDF is, relative to the paper, when it is not paper.pdf — the facts",
123
+ ledger: "the run ledger — skills/paper-pipeline/scripts/consumer.mjs",
124
+ scripts: "how skill prose names the scripts — consumer.mjs",
125
+ timezone: "dates in the ledger — consumer.mjs",
126
+ contactEmail: "the polite-pool address for citation lookups — consumer.mjs",
127
+ citeChecks: "the consumer's citation checkers — run-mechanical.mjs",
128
+ triggerCases: "the consumer's own skill trigger cases — lib/skill-trigger-cases.mjs",
129
+ $comment: "a note for humans (JSON Schema's own comment keyword); ignored",
130
+ });
131
+ /** The keys that only mean something for the whole project: refused in a paper's `paperlint.json`. */
132
+ export const ROOT_ONLY_KEYS = Object.freeze([
133
+ "papersDir",
134
+ "structure",
135
+ "ledger",
136
+ "scripts",
137
+ "timezone",
138
+ "contactEmail",
139
+ "citeChecks",
140
+ "triggerCases",
141
+ ]);
142
+ //# sourceMappingURL=paper-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paper-config.js","sourceRoot":"","sources":["../../lib/paper-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * skill-eval-fixture.mjs — the throwaway working directory every trigger run sees.
3
+ *
4
+ * 🔴 WHY A FIXTURE IS NOT OPTIONAL, learned by getting it wrong (2026-08-11).
5
+ * A trigger run executes in a FRESH EMPTY cwd. Ask "grade the writing on this
6
+ * paper" in a directory containing no paper and the model reasonably does not
7
+ * reach for a skill — there is nothing to grade. Measured: without this fixture,
8
+ * `grade-paper-writing`, `harden-paper`, `map-prior-work` and
9
+ * `paper-adversarial-review` all scored 0% on prompts that had previously fired,
10
+ * and the zero was an artifact of the empty directory, not a fact about the skill.
11
+ *
12
+ * Extracted from `paper-pipeline/pipeline-firing.eval.mjs`, which had it right
13
+ * from the start, so the two runners cannot drift apart on what the model sees.
14
+ *
15
+ * ⚠️ AND THE PRICE, so this file is not a one-sided story (measured 2026-08-12).
16
+ * With a fixture present the model OPENS THE PAPER and looks around, so the number
17
+ * stops being "did the DESCRIPTION fire" and becomes "did the model go investigate
18
+ * and then fire". A different quantity, and a costlier one: ~590k → ~780k tokens
19
+ * per skill (+190k) and 67s → 84s, while this whole fixture is 1,537 characters
20
+ * ≈ 384 tokens. The growth is reading, not input size (`cache` 470k → 652k).
21
+ * Cite the trigger numbers with that caveat attached — it is written out in
22
+ * `vigiles/repro/skill-trigger-2026-08-11/README.md` under "How to read".
23
+ */
24
+ export declare const FIXTURE: {
25
+ "paper/paper.md": string;
26
+ "paper/repro/README.md": string;
27
+ "paper/PIPELINE-STATUS.md": string;
28
+ };
29
+ //# sourceMappingURL=skill-eval-fixture.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-eval-fixture.d.ts","sourceRoot":"","sources":["../../lib/skill-eval-fixture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,OAAO;;;;CAuCnB,CAAC"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * skill-eval-fixture.mjs — the throwaway working directory every trigger run sees.
3
+ *
4
+ * 🔴 WHY A FIXTURE IS NOT OPTIONAL, learned by getting it wrong (2026-08-11).
5
+ * A trigger run executes in a FRESH EMPTY cwd. Ask "grade the writing on this
6
+ * paper" in a directory containing no paper and the model reasonably does not
7
+ * reach for a skill — there is nothing to grade. Measured: without this fixture,
8
+ * `grade-paper-writing`, `harden-paper`, `map-prior-work` and
9
+ * `paper-adversarial-review` all scored 0% on prompts that had previously fired,
10
+ * and the zero was an artifact of the empty directory, not a fact about the skill.
11
+ *
12
+ * Extracted from `paper-pipeline/pipeline-firing.eval.mjs`, which had it right
13
+ * from the start, so the two runners cannot drift apart on what the model sees.
14
+ *
15
+ * ⚠️ AND THE PRICE, so this file is not a one-sided story (measured 2026-08-12).
16
+ * With a fixture present the model OPENS THE PAPER and looks around, so the number
17
+ * stops being "did the DESCRIPTION fire" and becomes "did the model go investigate
18
+ * and then fire". A different quantity, and a costlier one: ~590k → ~780k tokens
19
+ * per skill (+190k) and 67s → 84s, while this whole fixture is 1,537 characters
20
+ * ≈ 384 tokens. The growth is reading, not input size (`cache` 470k → 652k).
21
+ * Cite the trigger numbers with that caveat attached — it is written out in
22
+ * `vigiles/repro/skill-trigger-2026-08-11/README.md` under "How to read".
23
+ */
24
+ export const FIXTURE = {
25
+ "paper/paper.md": [
26
+ "# Prose Isn't Policy: Measuring Whether Agent-Config Rules Are Enforceable",
27
+ "",
28
+ "## Abstract",
29
+ "Agent configuration files state rules in prose and assume the model obeys them. We compile a",
30
+ "corpus of real rules and measure what fraction can be mechanically enforced. We find that 84%",
31
+ "of rules in our corpus are enforceable, and that LLM-authored checkers for the remainder leak",
32
+ "silently in 84-96% of adversarial cases \\cite{greshake2023}.",
33
+ "",
34
+ "## 1 Introduction",
35
+ "Every agent harness ships a natural-language rulebook. Nothing checks it. This is the same",
36
+ "mistake as a code comment that claims an invariant no test enforces \\cite{thompson1984}.",
37
+ "",
38
+ "## 2 Method",
39
+ "We gather rules from public repositories, classify each by enforceability, and build a",
40
+ "two-stage adversarial gate that validates a synthesized rule against a blind gold set.",
41
+ "",
42
+ "## 3 Results",
43
+ "See Table 1. The headline number is 84%.",
44
+ "",
45
+ "## 4 Discussion",
46
+ "The result generalizes beyond our corpus in the sense that the mechanism is not corpus-specific,",
47
+ "though of course the specific percentages are, and it is important to note in this context that",
48
+ "the framing itself may be what carries, rather than the measurement.",
49
+ "",
50
+ "## 5 Threats to Validity",
51
+ "Our corpus is drawn from public repositories and may not represent private configurations.",
52
+ "",
53
+ "## 6 Related Work",
54
+ "TODO",
55
+ "",
56
+ "## 7 Conclusion",
57
+ "Prose is not policy.",
58
+ ].join("\n"),
59
+ "paper/repro/README.md": "# Reproduction artifact\n\n`python3 paper_numbers.py` recomputes every bolded figure in paper.md.\n",
60
+ "paper/PIPELINE-STATUS.md": "# Pipeline status\n\n| gate | state |\n|---|---|\n| numbers | pass |\n| structure | not run |\n| citations | not run |\n",
61
+ };
62
+ //# sourceMappingURL=skill-eval-fixture.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-eval-fixture.js","sourceRoot":"","sources":["../../lib/skill-eval-fixture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,gBAAgB,EAAE;QAChB,4EAA4E;QAC5E,EAAE;QACF,aAAa;QACb,8FAA8F;QAC9F,+FAA+F;QAC/F,+FAA+F;QAC/F,+DAA+D;QAC/D,EAAE;QACF,mBAAmB;QACnB,4FAA4F;QAC5F,2FAA2F;QAC3F,EAAE;QACF,aAAa;QACb,wFAAwF;QACxF,wFAAwF;QACxF,EAAE;QACF,cAAc;QACd,0CAA0C;QAC1C,EAAE;QACF,iBAAiB;QACjB,kGAAkG;QAClG,iGAAiG;QACjG,sEAAsE;QACtE,EAAE;QACF,0BAA0B;QAC1B,4FAA4F;QAC5F,EAAE;QACF,mBAAmB;QACnB,MAAM;QACN,EAAE;QACF,iBAAiB;QACjB,sBAAsB;KACvB,CAAC,IAAI,CAAC,IAAI,CAAC;IACZ,uBAAuB,EACrB,qGAAqG;IACvG,0BAA0B,EACxB,0HAA0H;CAC7H,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"link-skills.d.ts","sourceRoot":"","sources":["../src/link-skills.ts"],"names":[],"mappings":"AAyCA,OAAO,EAEL,YAAY,EAEb,MAAM,+CAA+C,CAAC;AAEvD,OAAO,EAAE,YAAY,EAAE,CAAC;AACxB,gFAAgF;AAChF,eAAO,MAAM,WAAW,QAA4B,CAAC;AAErD,MAAM,MAAM,OAAO,GACf;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAClD;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAE/B;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,EACE,eAG2C,GAC5C,GAAE;IAAE,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAA;CAAO,GACxD,OAAO,CAsBT;AAED,gFAAgF;AAChF,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,GAEZ;IAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GACjE;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAa7B;AAED,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAEvE,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,sDAAsD;IACtD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,UAAU,GAClB;IACE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAClB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,wFAAwF;IACxF,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,SAAS,SAAS,EAAE,CAAC;CACtC,GACD;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnD,mGAAmG;AACnG,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK;QACjC,cAAc,IAAI,OAAO,CAAC;QAC1B,WAAW,IAAI,OAAO,CAAC;KACxB,CAAC;IACF,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAC7C,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAC7C,QAAQ,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,KAAK,IAAI,CAAC;CAC3E;AAkFD;;;GAGG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,MAAM,EACf,EACE,KAAY,EACZ,MAAsB,EACtB,EAAe,GAChB,GAAE;IACD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;IAChC,EAAE,CAAC,EAAE,MAAM,CAAC;CACR,GACL,UAAU,CAoBZ"}
1
+ {"version":3,"file":"link-skills.d.ts","sourceRoot":"","sources":["../src/link-skills.ts"],"names":[],"mappings":"AAyCA,OAAO,EAEL,YAAY,EAEb,MAAM,+CAA+C,CAAC;AAGvD,OAAO,EAAE,YAAY,EAAE,CAAC;AACxB,gFAAgF;AAChF,eAAO,MAAM,WAAW,QAA4B,CAAC;AAErD,MAAM,MAAM,OAAO,GACf;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAClD;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAE/B;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,EACE,eAG2C,GAC5C,GAAE;IAAE,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAA;CAAO,GACxD,OAAO,CAsBT;AAED,gFAAgF;AAChF,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,GAEZ;IAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GACjE;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAa7B;AAED,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAEvE,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,sDAAsD;IACtD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,UAAU,GAClB;IACE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAClB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,wFAAwF;IACxF,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,SAAS,SAAS,EAAE,CAAC;CACtC,GACD;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnD,mGAAmG;AACnG,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK;QACjC,cAAc,IAAI,OAAO,CAAC;QAC1B,WAAW,IAAI,OAAO,CAAC;KACxB,CAAC;IACF,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAC7C,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAC7C,QAAQ,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,KAAK,IAAI,CAAC;CAC3E;AAkFD;;;GAGG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,MAAM,EACf,EACE,KAAY,EACZ,MAAsB,EACtB,EAAe,GAChB,GAAE;IACD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;IAChC,EAAE,CAAC,EAAE,MAAM,CAAC;CACR,GACL,UAAU,CAoBZ"}
@@ -33,6 +33,7 @@ import { createRequire } from "node:module";
33
33
  import { dirname, join, relative, resolve } from "node:path";
34
34
  import { pathToFileURL } from "node:url";
35
35
  import { installedSkills, PACKAGE_NAME, SHIPPED_SKILLS_DIR, } from "../skills/paper-pipeline/scripts/consumer.mjs";
36
+ import { messageOf, codeOf } from "./domain/text.js";
36
37
  export { PACKAGE_NAME };
37
38
  /** Where Claude Code looks for project skills, relative to the project root. */
38
39
  export const SKILLS_HOME = join(".claude", "skills");
@@ -50,7 +51,7 @@ export function locatePackage(project, { resolveManifest = (from) => createRequi
50
51
  }
51
52
  catch (e) {
52
53
  return {
53
- error: `${e.code ?? "error"}: ${e.message.split("\n")[0]}`,
54
+ error: `${codeOf(e) ?? "error"}: ${String(messageOf(e).split("\n")[0])}`,
54
55
  };
55
56
  }
56
57
  const dir = realpathSync(dirname(manifest));
@@ -83,7 +84,7 @@ export function shippedSkills(pkgDir) {
83
84
  return { skillsDir, names: installedSkills(skillsDir) };
84
85
  }
85
86
  catch (e) {
86
- return { error: e.message };
87
+ return { error: messageOf(e) };
87
88
  }
88
89
  }
89
90
  const nodeLinkFs = {
@@ -135,7 +136,7 @@ function linkOne(name, { entry, target, want, write, fs, }) {
135
136
  return {
136
137
  name,
137
138
  status: "foreign",
138
- reason: `could not create the link: ${e.message}`,
139
+ reason: `could not create the link: ${messageOf(e)}`,
139
140
  };
140
141
  }
141
142
  }
@@ -146,7 +147,7 @@ function makeHome(home) {
146
147
  return null;
147
148
  }
148
149
  catch (e) {
149
- return `cannot create ${home}: ${e.message}`;
150
+ return `cannot create ${home}: ${messageOf(e)}`;
150
151
  }
151
152
  }
152
153
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"link-skills.js","sourceRoot":"","sources":["../src/link-skills.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"link-skills.js","sourceRoot":"","sources":["../src/link-skills.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"new-paper.d.ts","sourceRoot":"","sources":["../src/new-paper.ts"],"names":[],"mappings":"AA6BA,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,IAAI,CAAC;AACvC,eAAO,MAAM,OAAO,EAAE,SAAS,WAAW,EAAkB,CAAC;AAC7D,eAAO,MAAM,cAAc,EAAE,WAAmB,CAAC;AAEjD,8FAA8F;AAC9F,eAAO,MAAM,iBAAiB,QAE7B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,YAAY,cAAc,CAAC;AAExC,eAAO,MAAM,WAAW,uBAAuB,CAAC;AAChD,eAAO,MAAM,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAG7D,CAAC;AAEF,eAAO,MAAM,QAAQ,GAAI,GAAG,OAAO,KAAG,CAAC,IAAI,WACP,CAAC;AAErC;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMvD;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,sEAAsE;IACtE,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAAC;IACpC,uDAAuD;IACvD,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;CACvC;AAED,MAAM,MAAM,cAAc,GACtB;IACE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAClB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,gDAAgD;IAChD,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,SAAS,WAAW,EAAE,CAAC;CACxC,GACD;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,MAAM,EAAE,CAEtE;AASD,gGAAgG;AAChG,MAAM,WAAW,YAAY;IAC3B,8EAA8E;IAC9E,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAkED,wBAAgB,QAAQ,CACtB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,WAAW,EACnB,EACE,gBAAoC,EACpC,KAAY,GACb,GAAE;IAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,YAAY,GAAG,IAAI,CAAA;CAAO,GACjE,cAAc,CAgChB;AAED,iGAAiG;AACjG,wBAAgB,cAAc,CAC5B,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,GAC1B,MAAM,EAAE,CAYV"}
1
+ {"version":3,"file":"new-paper.d.ts","sourceRoot":"","sources":["../src/new-paper.ts"],"names":[],"mappings":"AA6BA,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,IAAI,CAAC;AACvC,eAAO,MAAM,OAAO,EAAE,SAAS,WAAW,EAAkB,CAAC;AAC7D,eAAO,MAAM,cAAc,EAAE,WAAmB,CAAC;AAEjD,8FAA8F;AAC9F,eAAO,MAAM,iBAAiB,QAE7B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,YAAY,cAAc,CAAC;AAExC,eAAO,MAAM,WAAW,uBAAuB,CAAC;AAChD,eAAO,MAAM,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAG7D,CAAC;AAEF,eAAO,MAAM,QAAQ,GAAI,GAAG,OAAO,KAAG,CAAC,IAAI,WACb,CAAC;AAE/B;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMvD;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,sEAAsE;IACtE,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAAC;IACpC,uDAAuD;IACvD,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;CACvC;AAED,MAAM,MAAM,cAAc,GACtB;IACE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAClB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,gDAAgD;IAChD,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,SAAS,WAAW,EAAE,CAAC;CACxC,GACD;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,MAAM,EAAE,CAEtE;AASD,gGAAgG;AAChG,MAAM,WAAW,YAAY;IAC3B,8EAA8E;IAC9E,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAkED,wBAAgB,QAAQ,CACtB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,WAAW,EACnB,EACE,gBAAoC,EACpC,KAAY,GACb,GAAE;IAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,YAAY,GAAG,IAAI,CAAA;CAAO,GACjE,cAAc,CAgChB;AAED,iGAAiG;AACjG,wBAAgB,cAAc,CAC5B,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,GAC1B,MAAM,EAAE,CAYV"}
package/dist/new-paper.js CHANGED
@@ -19,7 +19,7 @@ import { existsSync, mkdirSync, readFileSync, statSync, writeFileSync, } from "n
19
19
  /* eslint-enable boundaries/dependencies */
20
20
  import { join } from "node:path";
21
21
  import { fileURLToPath } from "node:url";
22
- import { CONFIG_FILE } from "../lib/paper-config.mjs";
22
+ import { CONFIG_FILE } from "#lib/paper-config";
23
23
  export const FORMATS = ["tex", "md"];
24
24
  export const DEFAULT_FORMAT = "tex";
25
25
  /** The package's default templates. Read from disk, so they ship in the tarball (`files`). */
@@ -35,7 +35,7 @@ export const SOURCE_FILE = {
35
35
  tex: "paper.tex",
36
36
  md: "paper.md",
37
37
  };
38
- export const isFormat = (v) => FORMATS.includes(v);
38
+ export const isFormat = (v) => FORMATS.some((f) => f === v);
39
39
  /**
40
40
  * Why a name is refused, or null. `[a-z0-9._-]+` is the charset; a LEADING dot is refused on top
41
41
  * of it, because discovery skips dot-directories — a paper named `.x` would be created and then
@@ -1 +1 @@
1
- {"version":3,"file":"new-paper.js","sourceRoot":"","sources":["../src/new-paper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"new-paper.js","sourceRoot":"","sources":["../src/new-paper.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"paper-settings.d.ts","sourceRoot":"","sources":["../src/paper-settings.ts"],"names":[],"mappings":"AAyBA,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAEL,KAAK,MAAM,EACX,KAAK,SAAS,EACf,MAAM,mBAAmB,CAAC;AAE3B,2DAA2D;AAC3D,MAAM,WAAW,aAAa;IAC5B,2FAA2F;IAC3F,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,4EAA4E;IAC5E,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,uEAAuE;IACvE,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,OAAO,EAAE,GAAG,IAAI,CAAC;CAC/E;AAED,6CAA6C;AAC7C,MAAM,MAAM,eAAe,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAGhF,QAAA,MAAM,aAAa,qCAAsC,CAAC;AAkB1D,uGAAuG;AACvG,wBAAgB,YAAY,CAC1B,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GACnC,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAYrE;AAED,kGAAkG;AAClG,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,OAAO,GACZ,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAqB/B;AAqCD;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,MAAM,GACf,MAAM,CAAC,aAAa,GAAG,IAAI,EAAE,eAAe,CAAC,CAS/C;AAyBD;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,aAAa,EACvB,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,GAC3B,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC,CAS1C"}
1
+ {"version":3,"file":"paper-settings.d.ts","sourceRoot":"","sources":["../src/paper-settings.ts"],"names":[],"mappings":"AAyBA,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAEL,KAAK,MAAM,EACX,KAAK,SAAS,EACf,MAAM,mBAAmB,CAAC;AAG3B,2DAA2D;AAC3D,MAAM,WAAW,aAAa;IAC5B,2FAA2F;IAC3F,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,4EAA4E;IAC5E,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,uEAAuE;IACvE,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,OAAO,EAAE,GAAG,IAAI,CAAC;CAC/E;AAED,6CAA6C;AAC7C,MAAM,MAAM,eAAe,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAGhF,QAAA,MAAM,aAAa,qCAAsC,CAAC;AAkB1D,uGAAuG;AACvG,wBAAgB,YAAY,CAC1B,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GACnC,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAYrE;AAED,kGAAkG;AAClG,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,OAAO,GACZ,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAuB/B;AAqCD;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,MAAM,GACf,MAAM,CAAC,aAAa,GAAG,IAAI,EAAE,eAAe,CAAC,CAS/C;AAyBD;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,aAAa,EACvB,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,GAC3B,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC,CAK1C"}
@@ -16,9 +16,10 @@
16
16
  * (`papersDir`, …) in a paper's file is refused too: it would be read nowhere.
17
17
  */
18
18
  import { dirname, join } from "node:path";
19
- import { CONFIG_FILE, ROOT_ONLY_KEYS, SETTINGS_KEYS, findProjectRoot, } from "../lib/paper-config.mjs";
19
+ import { CONFIG_FILE, ROOT_ONLY_KEYS, SETTINGS_KEYS, findProjectRoot, } from "#lib/paper-config";
20
20
  import { err, ok } from "./domain/result.js";
21
21
  import { parseRuleEntries, } from "./rules-config.js";
22
+ import { messageOf } from "./domain/text.js";
22
23
  const KNOWN = Object.keys(SETTINGS_KEYS);
23
24
  const STRING_FIELDS = ["extends", "kind", "pdf"];
24
25
  const isObject = (v) => typeof v === "object" && v !== null && !Array.isArray(v);
@@ -53,10 +54,10 @@ export function parsePaperSettings(json) {
53
54
  return err("must be a JSON object");
54
55
  const unknown = Object.keys(json).filter((k) => !KNOWN.includes(k));
55
56
  if (unknown.length > 0)
56
- return err(`unknown key "${unknown[0]}" — known keys: ${KNOWN.join(", ")}`);
57
+ return err(`unknown key "${String(unknown[0])}" — known keys: ${KNOWN.join(", ")}`);
57
58
  const project = Object.keys(json).filter((k) => ROOT_ONLY_KEYS.includes(k));
58
59
  if (project.length > 0)
59
- return err(`"${project[0]}" is a project setting — set it in the root ${CONFIG_FILE}, not in a paper's`);
60
+ return err(`"${String(project[0])}" is a project setting — set it in the root ${CONFIG_FILE}, not in a paper's`);
60
61
  const fields = stringFields(json);
61
62
  if (!fields.ok)
62
63
  return fields;
@@ -78,7 +79,7 @@ function readJson(files, path) {
78
79
  return ok(JSON.parse(new TextDecoder().decode(bytes)));
79
80
  }
80
81
  catch (e) {
81
- return err({ kind: "broken", why: `not JSON (${e.message})` });
82
+ return err({ kind: "broken", why: `not JSON (${messageOf(e)})` });
82
83
  }
83
84
  }
84
85
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"paper-settings.js","sourceRoot":"","sources":["../src/paper-settings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"paper-settings.js","sourceRoot":"","sources":["../src/paper-settings.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"pdf-facts.d.ts","sourceRoot":"","sources":["../src/pdf-facts.ts"],"names":[],"mappings":"AAsBA,OAAO,EAKL,KAAK,KAAK,EACV,KAAK,QAAQ,EACb,KAAK,OAAO,EAGb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,UAAU,EAAW,MAAM,yBAAyB,CAAC;AAInE,KAAK,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,cAAc,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC;AAC1E,KAAK,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAKhE;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,CAAC;CACxC;AAED,MAAM,MAAM,cAAc,GACxB,YAAY,GAAG,WAAW,GAAG,oBAAoB,GAAG,OAAO,CAAC;AAE9D,MAAM,MAAM,OAAO,GACf;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAA;CAAE,GAC/C;IACE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,CAAC;AAEN,iGAAiG;AACjG,MAAM,MAAM,SAAS,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAE3D;;;;GAIG;AACH,eAAO,MAAM,aAAa;;;;;;CAMhB,CAAC;AAeX,oGAAoG;AACpG,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,GAAG,IAAI,CAclE;AA4ID;;;;GAIG;AACH,wBAAsB,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAiCpE;AAED,+EAA+E;AAC/E,wBAAgB,SAAS,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAO7C;AAED,4FAA4F;AAC5F,eAAO,MAAM,OAAO,EAAE,SAgBrB,CAAC;AAEF,4EAA4E;AAC5E,wBAAgB,eAAe,CAC7B,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE;IAAE,EAAE,EAAE,KAAK,CAAA;CAAE,CAAC,EAClC,GAAG,EAAE,MAAM,GACV,MAAM,CAER"}
1
+ {"version":3,"file":"pdf-facts.d.ts","sourceRoot":"","sources":["../src/pdf-facts.ts"],"names":[],"mappings":"AAsBA,OAAO,EAKL,KAAK,KAAK,EACV,KAAK,QAAQ,EACb,KAAK,OAAO,EAGb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,UAAU,EAAW,MAAM,yBAAyB,CAAC;AAKnE,KAAK,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,cAAc,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC;AAC1E,KAAK,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAKhE;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,CAAC;CACxC;AAED,MAAM,MAAM,cAAc,GACxB,YAAY,GAAG,WAAW,GAAG,oBAAoB,GAAG,OAAO,CAAC;AAE9D,MAAM,MAAM,OAAO,GACf;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAA;CAAE,GAC/C;IACE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,CAAC;AAEN,iGAAiG;AACjG,MAAM,MAAM,SAAS,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAE3D;;;;GAIG;AACH,eAAO,MAAM,aAAa;;;;;;CAMhB,CAAC;AAeX,oGAAoG;AACpG,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,GAAG,IAAI,CAclE;AA4ID;;;;GAIG;AACH,wBAAsB,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAiCpE;AAED,+EAA+E;AAC/E,wBAAgB,SAAS,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAO7C;AAED,4FAA4F;AAC5F,eAAO,MAAM,OAAO,EAAE,SAgBrB,CAAC;AAEF,4EAA4E;AAC5E,wBAAgB,eAAe,CAC7B,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE;IAAE,EAAE,EAAE,KAAK,CAAA;CAAE,CAAC,EAClC,GAAG,EAAE,MAAM,GACV,MAAM,CAER"}
package/dist/pdf-facts.js CHANGED
@@ -23,6 +23,7 @@ import { readFileSync } from "node:fs";
23
23
  import { DEFAULT_ASCENT, DEFAULT_DESCENT, fontsOf, wordsOf, } from "./pdf-geometry.js";
24
24
  // eslint-disable-next-line boundaries/dependencies -- legacy layer, moves behind a port in #76
25
25
  import { fillsFor, isUpright } from "./adapters/pdfjs/fill.js";
26
+ import { messageOf } from "./domain/text.js";
26
27
  /**
27
28
  * The options every read uses, exactly as measured in the spike. `fontExtraProperties` is
28
29
  * load-bearing: without it pdf.js exports no `type`/`subtype`, and every font's program is unknown.
@@ -218,7 +219,7 @@ export const readPdf = async (path) => {
218
219
  data = new Uint8Array(readFileSync(path));
219
220
  }
220
221
  catch (e) {
221
- return fail("unreadable", e.message);
222
+ return fail("unreadable", messageOf(e));
222
223
  }
223
224
  const lib = await loadPdfJs();
224
225
  const task = lib.getDocument({ data, ...PDFJS_OPTIONS });