@hawkeyexl/manni 4.11.0 → 4.12.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 (238) hide show
  1. package/README.md +1 -1
  2. package/dist/{batch-UAULUMGH.js → batch-EFSFG6GC.js} +20 -19
  3. package/dist/build-NIO3UIWJ.js +36 -0
  4. package/dist/calibrate-6VO7URRV.js +41 -0
  5. package/dist/capture-NMBVJO3C.js +38 -0
  6. package/dist/check-SHOYX2B5.js +30 -0
  7. package/dist/check-XMJKH3KV.js +34 -0
  8. package/dist/{check-VELUQAUW.js → check-Y62BJNC4.js} +35 -34
  9. package/dist/{check-VELUQAUW.js.map → check-Y62BJNC4.js.map} +1 -1
  10. package/dist/{check-YEOYBFST.js → check-ZMO3ZLMW.js} +19 -18
  11. package/dist/{chunk-BKVHX6FU.js → chunk-24AJK2RG.js} +5 -10
  12. package/dist/chunk-24AJK2RG.js.map +1 -0
  13. package/dist/{chunk-M42DZCOU.js → chunk-2OZF2VUB.js} +2 -2
  14. package/dist/chunk-2UJZXVHR.js +1868 -0
  15. package/dist/chunk-2UJZXVHR.js.map +1 -0
  16. package/dist/{chunk-HQR2ZBHW.js → chunk-3BRJCQPY.js} +36 -7
  17. package/dist/chunk-3BRJCQPY.js.map +1 -0
  18. package/dist/{chunk-U7CTFN2J.js → chunk-42VFJOAF.js} +7 -7
  19. package/dist/{chunk-LBSCW232.js → chunk-4Q24OYI3.js} +7 -7
  20. package/dist/{chunk-OPXWPJDA.js → chunk-4WJTURRO.js} +14 -14
  21. package/dist/{chunk-GDVZ5VII.js → chunk-5SID2SVL.js} +4 -4
  22. package/dist/{chunk-FUCPZVRY.js → chunk-AANUY4BH.js} +2 -2
  23. package/dist/chunk-ANPIIYRH.js +2272 -0
  24. package/dist/chunk-ANPIIYRH.js.map +1 -0
  25. package/dist/{chunk-WDWXAYVH.js → chunk-AYVKN3PG.js} +4 -4
  26. package/dist/{chunk-FQXWVS6J.js → chunk-CH6IOGXV.js} +9 -9
  27. package/dist/{chunk-4CK6ZSOK.js → chunk-D5Z6B4M7.js} +3 -3
  28. package/dist/{chunk-HA6MQMOY.js → chunk-D6SELXQ2.js} +6 -6
  29. package/dist/{chunk-2DRHT73U.js → chunk-DDILEF5F.js} +890 -1399
  30. package/dist/chunk-DDILEF5F.js.map +1 -0
  31. package/dist/{chunk-PCS4VJBV.js → chunk-DGRLHDM4.js} +9 -9
  32. package/dist/{chunk-2MJ62AYQ.js → chunk-DHGB4JBG.js} +4 -3
  33. package/dist/chunk-DHGB4JBG.js.map +1 -0
  34. package/dist/{chunk-Y6DOMTQD.js → chunk-DLU5FCFT.js} +27 -27
  35. package/dist/chunk-DLU5FCFT.js.map +1 -0
  36. package/dist/chunk-DSWKBZWW.js +16 -0
  37. package/dist/chunk-DSWKBZWW.js.map +1 -0
  38. package/dist/{chunk-KGEQJ5CC.js → chunk-F564FHMQ.js} +8 -8
  39. package/dist/{chunk-J6IDQGJL.js → chunk-FKAZUZQU.js} +469 -85
  40. package/dist/chunk-FKAZUZQU.js.map +1 -0
  41. package/dist/{chunk-IGSHYP74.js → chunk-G3MBUL5M.js} +4 -4
  42. package/dist/{chunk-ADMEPUBT.js → chunk-GQ3KRY3B.js} +3 -3
  43. package/dist/{chunk-T7JAOYE5.js → chunk-HDPN46JP.js} +6 -6
  44. package/dist/{chunk-R4WXQIOZ.js → chunk-IQQAJROD.js} +3 -3
  45. package/dist/{chunk-2IR4T5PO.js → chunk-IZXN3WI6.js} +2 -2
  46. package/dist/{chunk-NCPWXHDO.js → chunk-JEUFYSFQ.js} +4 -4
  47. package/dist/{chunk-LKP7QDFN.js → chunk-JSSM7VVV.js} +4 -4
  48. package/dist/{chunk-2IAZEB45.js → chunk-KFGZPVFA.js} +229 -821
  49. package/dist/chunk-KFGZPVFA.js.map +1 -0
  50. package/dist/{chunk-EIFCP6CZ.js → chunk-KGFSPJLD.js} +2 -2
  51. package/dist/{chunk-RLT5SEML.js → chunk-KMORGMCW.js} +6 -6
  52. package/dist/{chunk-WQWKYAAK.js → chunk-NUQF5F5J.js} +2 -2
  53. package/dist/{chunk-54F74XR3.js → chunk-NZ6KSHFD.js} +19 -19
  54. package/dist/{chunk-4D5IZSXM.js → chunk-OHUDZRLK.js} +3 -3
  55. package/dist/{chunk-FBMZJEB3.js → chunk-OKMTUAWO.js} +4 -4
  56. package/dist/{chunk-QLWC7MKD.js → chunk-OTJOBZJ5.js} +135 -135
  57. package/dist/chunk-OTJOBZJ5.js.map +1 -0
  58. package/dist/{chunk-6HWBRZIN.js → chunk-PS257NIU.js} +252 -193
  59. package/dist/chunk-PS257NIU.js.map +1 -0
  60. package/dist/chunk-QDC7JPFG.js +685 -0
  61. package/dist/chunk-QDC7JPFG.js.map +1 -0
  62. package/dist/{chunk-PCQ7ELJH.js → chunk-QEAGL4V5.js} +109 -5
  63. package/dist/chunk-QEAGL4V5.js.map +1 -0
  64. package/dist/{chunk-BBT6AVUG.js → chunk-QMY57PVW.js} +2 -2
  65. package/dist/{chunk-LPIF5LIE.js → chunk-QNDDPXFR.js} +2 -2
  66. package/dist/{chunk-PWBH7DCQ.js → chunk-QSIXNTRV.js} +4 -4
  67. package/dist/{chunk-VSEBFHAY.js → chunk-RGLFV4KO.js} +11369 -10218
  68. package/dist/chunk-RGLFV4KO.js.map +1 -0
  69. package/dist/{chunk-D4N2V43Z.js → chunk-SGR7ZAVE.js} +13 -7
  70. package/dist/chunk-SGR7ZAVE.js.map +1 -0
  71. package/dist/{chunk-GV56WGL2.js → chunk-SMHAYK6I.js} +1036 -883
  72. package/dist/chunk-SMHAYK6I.js.map +1 -0
  73. package/dist/{chunk-JPQDNYXH.js → chunk-STPGIKPY.js} +8 -2
  74. package/dist/chunk-STPGIKPY.js.map +1 -0
  75. package/dist/{chunk-NSBXVPZL.js → chunk-U22TOL5Y.js} +17 -17
  76. package/dist/{chunk-NGTVREIH.js → chunk-U6IHLEWT.js} +2 -2
  77. package/dist/{chunk-ODRPL3WB.js → chunk-UUCCV3SI.js} +2 -2
  78. package/dist/{chunk-MSRU4D4P.js → chunk-UXMCHBOJ.js} +2 -2
  79. package/dist/{chunk-B7XYNRJQ.js → chunk-VFAKGIDG.js} +2 -2
  80. package/dist/{chunk-QCHVR4ZM.js → chunk-VM7VAFJW.js} +33 -7
  81. package/dist/chunk-VM7VAFJW.js.map +1 -0
  82. package/dist/{chunk-VQK4VHLF.js → chunk-YQV75FIL.js} +2 -2
  83. package/dist/chunk-YUTVAMWW.js +2 -0
  84. package/dist/{cli-4MF37HAQ.js → cli-4CR7QIOK.js} +26 -25
  85. package/dist/{cli-4MF37HAQ.js.map → cli-4CR7QIOK.js.map} +1 -1
  86. package/dist/{cli-6KZTHWGP.js → cli-6R4W3HAH.js} +37 -36
  87. package/dist/{cli-6KZTHWGP.js.map → cli-6R4W3HAH.js.map} +1 -1
  88. package/dist/{cli-I62SRH3R.js → cli-BOMA2FMP.js} +14 -13
  89. package/dist/{cli-DRMZBZLB.js → cli-EDQPQOCE.js} +43 -42
  90. package/dist/{cli-DRMZBZLB.js.map → cli-EDQPQOCE.js.map} +1 -1
  91. package/dist/{cli-VID7PJS3.js → cli-GBF76EXT.js} +23 -22
  92. package/dist/{cli-VID7PJS3.js.map → cli-GBF76EXT.js.map} +1 -1
  93. package/dist/{cli-3BTCK4AB.js → cli-MQYCF3SR.js} +27 -26
  94. package/dist/{cli-3BTCK4AB.js.map → cli-MQYCF3SR.js.map} +1 -1
  95. package/dist/{cli-ONTC5PKT.js → cli-OJKFXQOM.js} +9 -9
  96. package/dist/{cli-VUKMWSSF.js → cli-PHZAO4LZ.js} +4 -4
  97. package/dist/{cli-RORDPAPE.js → cli-PTKFFNOW.js} +59 -38
  98. package/dist/cli-PTKFFNOW.js.map +1 -0
  99. package/dist/{cli-O4ABTN4Z.js → cli-UW2K5Z5J.js} +31 -30
  100. package/dist/{cli-O4ABTN4Z.js.map → cli-UW2K5Z5J.js.map} +1 -1
  101. package/dist/{cli-JJMOVIKS.js → cli-XXTNPPKB.js} +14 -14
  102. package/dist/cli.js +19 -13
  103. package/dist/cli.js.map +1 -1
  104. package/dist/{config-XDA42RJL.js → config-JJW75SBX.js} +5 -5
  105. package/dist/docmeta.js +13 -12
  106. package/dist/docmeta.js.map +1 -1
  107. package/dist/github-6VQKSB67.js +35 -0
  108. package/dist/github-RBSEM7ZK.js +30 -0
  109. package/dist/graph/runtime.d.ts +4 -1
  110. package/dist/graph/runtime.js +20 -9
  111. package/dist/graph/runtime.js.map +1 -1
  112. package/dist/{host-6GURH5HE.js → host-YSTYO5DX.js} +3 -3
  113. package/dist/index.d.ts +192 -26
  114. package/dist/index.js +129 -124
  115. package/dist/index.js.map +1 -1
  116. package/dist/{json-BXY44ED7.js → json-PU2HLHDQ.js} +18 -17
  117. package/dist/labels-SJNSOPBI.js +73 -0
  118. package/dist/labels-SJNSOPBI.js.map +1 -0
  119. package/dist/lint-KIVTHLGU.js +34 -0
  120. package/dist/list-RDEJDDJF.js +32 -0
  121. package/dist/list-SUTDWL2J.js +35 -0
  122. package/dist/{page-EV7OUBAU.js → page-UMAA3NCM.js} +18 -16
  123. package/dist/{prepare-JHJDJB6I.js → prepare-3I3LOXXD.js} +22 -21
  124. package/dist/{prepare-JHJDJB6I.js.map → prepare-3I3LOXXD.js.map} +1 -1
  125. package/dist/{pretty-SCRK66M5.js → pretty-ANLRHU4O.js} +18 -17
  126. package/dist/{pretty-Q5Y2PA64.js → pretty-Q3ZFKOR7.js} +18 -17
  127. package/dist/{provider-527CO4DM.js → provider-LBX4IXGX.js} +3 -3
  128. package/dist/{release-3D5PK6M7.js → release-VV3UTKE5.js} +3 -3
  129. package/dist/{reporters-M6LJ2IYU.js → reporters-26H3N2KW.js} +3 -3
  130. package/dist/{reporters-RBYTASMI.js → reporters-ILT36CIH.js} +7 -7
  131. package/dist/{reporters-A5ADKDYR.js → reporters-PNDLWT6K.js} +16 -15
  132. package/dist/run-QXCK33Z4.js +37 -0
  133. package/dist/{term-CQAGNG3Q.js → term-D2N7UN4P.js} +981 -141
  134. package/dist/term-D2N7UN4P.js.map +1 -0
  135. package/dist/validate-BRUCOT2O.js +19 -0
  136. package/package.json +3 -2
  137. package/plugin/manni/.claude-plugin/plugin.json +1 -1
  138. package/shapes/graph/shapes-1.1.0.ttl +785 -0
  139. package/dist/build-QSPNK5AL.js +0 -35
  140. package/dist/calibrate-KXN4URPM.js +0 -40
  141. package/dist/capture-JHTSUPUC.js +0 -37
  142. package/dist/check-MDGXEUWL.js +0 -20
  143. package/dist/check-WOQRKNZK.js +0 -29
  144. package/dist/chunk-2DRHT73U.js.map +0 -1
  145. package/dist/chunk-2IAZEB45.js.map +0 -1
  146. package/dist/chunk-2MJ62AYQ.js.map +0 -1
  147. package/dist/chunk-4VBSTXN6.js +0 -392
  148. package/dist/chunk-4VBSTXN6.js.map +0 -1
  149. package/dist/chunk-6HWBRZIN.js.map +0 -1
  150. package/dist/chunk-BKVHX6FU.js.map +0 -1
  151. package/dist/chunk-D4N2V43Z.js.map +0 -1
  152. package/dist/chunk-EFW7CAG4.js +0 -387
  153. package/dist/chunk-EFW7CAG4.js.map +0 -1
  154. package/dist/chunk-GV56WGL2.js.map +0 -1
  155. package/dist/chunk-HQR2ZBHW.js.map +0 -1
  156. package/dist/chunk-J6IDQGJL.js.map +0 -1
  157. package/dist/chunk-JPQDNYXH.js.map +0 -1
  158. package/dist/chunk-JROBZ7JA.js +0 -818
  159. package/dist/chunk-JROBZ7JA.js.map +0 -1
  160. package/dist/chunk-PCQ7ELJH.js.map +0 -1
  161. package/dist/chunk-QCHVR4ZM.js.map +0 -1
  162. package/dist/chunk-QLWC7MKD.js.map +0 -1
  163. package/dist/chunk-TU2WUBVZ.js +0 -2
  164. package/dist/chunk-VSEBFHAY.js.map +0 -1
  165. package/dist/chunk-Y6DOMTQD.js.map +0 -1
  166. package/dist/cli-RORDPAPE.js.map +0 -1
  167. package/dist/github-RY3FRA6P.js +0 -29
  168. package/dist/github-YKQSH7FS.js +0 -34
  169. package/dist/lint-YJ2L22BW.js +0 -33
  170. package/dist/list-NSG24VVX.js +0 -31
  171. package/dist/list-V6EGCSHX.js +0 -34
  172. package/dist/run-BUE2DDXN.js +0 -36
  173. package/dist/term-CQAGNG3Q.js.map +0 -1
  174. package/dist/validate-ZBW44RHT.js +0 -18
  175. /package/dist/{batch-UAULUMGH.js.map → batch-EFSFG6GC.js.map} +0 -0
  176. /package/dist/{build-QSPNK5AL.js.map → build-NIO3UIWJ.js.map} +0 -0
  177. /package/dist/{calibrate-KXN4URPM.js.map → calibrate-6VO7URRV.js.map} +0 -0
  178. /package/dist/{capture-JHTSUPUC.js.map → capture-NMBVJO3C.js.map} +0 -0
  179. /package/dist/{check-MDGXEUWL.js.map → check-SHOYX2B5.js.map} +0 -0
  180. /package/dist/{check-WOQRKNZK.js.map → check-XMJKH3KV.js.map} +0 -0
  181. /package/dist/{check-YEOYBFST.js.map → check-ZMO3ZLMW.js.map} +0 -0
  182. /package/dist/{chunk-M42DZCOU.js.map → chunk-2OZF2VUB.js.map} +0 -0
  183. /package/dist/{chunk-U7CTFN2J.js.map → chunk-42VFJOAF.js.map} +0 -0
  184. /package/dist/{chunk-LBSCW232.js.map → chunk-4Q24OYI3.js.map} +0 -0
  185. /package/dist/{chunk-OPXWPJDA.js.map → chunk-4WJTURRO.js.map} +0 -0
  186. /package/dist/{chunk-GDVZ5VII.js.map → chunk-5SID2SVL.js.map} +0 -0
  187. /package/dist/{chunk-FUCPZVRY.js.map → chunk-AANUY4BH.js.map} +0 -0
  188. /package/dist/{chunk-WDWXAYVH.js.map → chunk-AYVKN3PG.js.map} +0 -0
  189. /package/dist/{chunk-FQXWVS6J.js.map → chunk-CH6IOGXV.js.map} +0 -0
  190. /package/dist/{chunk-4CK6ZSOK.js.map → chunk-D5Z6B4M7.js.map} +0 -0
  191. /package/dist/{chunk-HA6MQMOY.js.map → chunk-D6SELXQ2.js.map} +0 -0
  192. /package/dist/{chunk-PCS4VJBV.js.map → chunk-DGRLHDM4.js.map} +0 -0
  193. /package/dist/{chunk-KGEQJ5CC.js.map → chunk-F564FHMQ.js.map} +0 -0
  194. /package/dist/{chunk-IGSHYP74.js.map → chunk-G3MBUL5M.js.map} +0 -0
  195. /package/dist/{chunk-ADMEPUBT.js.map → chunk-GQ3KRY3B.js.map} +0 -0
  196. /package/dist/{chunk-T7JAOYE5.js.map → chunk-HDPN46JP.js.map} +0 -0
  197. /package/dist/{chunk-R4WXQIOZ.js.map → chunk-IQQAJROD.js.map} +0 -0
  198. /package/dist/{chunk-2IR4T5PO.js.map → chunk-IZXN3WI6.js.map} +0 -0
  199. /package/dist/{chunk-NCPWXHDO.js.map → chunk-JEUFYSFQ.js.map} +0 -0
  200. /package/dist/{chunk-LKP7QDFN.js.map → chunk-JSSM7VVV.js.map} +0 -0
  201. /package/dist/{chunk-EIFCP6CZ.js.map → chunk-KGFSPJLD.js.map} +0 -0
  202. /package/dist/{chunk-RLT5SEML.js.map → chunk-KMORGMCW.js.map} +0 -0
  203. /package/dist/{chunk-WQWKYAAK.js.map → chunk-NUQF5F5J.js.map} +0 -0
  204. /package/dist/{chunk-54F74XR3.js.map → chunk-NZ6KSHFD.js.map} +0 -0
  205. /package/dist/{chunk-4D5IZSXM.js.map → chunk-OHUDZRLK.js.map} +0 -0
  206. /package/dist/{chunk-FBMZJEB3.js.map → chunk-OKMTUAWO.js.map} +0 -0
  207. /package/dist/{chunk-BBT6AVUG.js.map → chunk-QMY57PVW.js.map} +0 -0
  208. /package/dist/{chunk-LPIF5LIE.js.map → chunk-QNDDPXFR.js.map} +0 -0
  209. /package/dist/{chunk-PWBH7DCQ.js.map → chunk-QSIXNTRV.js.map} +0 -0
  210. /package/dist/{chunk-NSBXVPZL.js.map → chunk-U22TOL5Y.js.map} +0 -0
  211. /package/dist/{chunk-NGTVREIH.js.map → chunk-U6IHLEWT.js.map} +0 -0
  212. /package/dist/{chunk-ODRPL3WB.js.map → chunk-UUCCV3SI.js.map} +0 -0
  213. /package/dist/{chunk-MSRU4D4P.js.map → chunk-UXMCHBOJ.js.map} +0 -0
  214. /package/dist/{chunk-B7XYNRJQ.js.map → chunk-VFAKGIDG.js.map} +0 -0
  215. /package/dist/{chunk-VQK4VHLF.js.map → chunk-YQV75FIL.js.map} +0 -0
  216. /package/dist/{chunk-TU2WUBVZ.js.map → chunk-YUTVAMWW.js.map} +0 -0
  217. /package/dist/{cli-I62SRH3R.js.map → cli-BOMA2FMP.js.map} +0 -0
  218. /package/dist/{cli-ONTC5PKT.js.map → cli-OJKFXQOM.js.map} +0 -0
  219. /package/dist/{cli-VUKMWSSF.js.map → cli-PHZAO4LZ.js.map} +0 -0
  220. /package/dist/{cli-JJMOVIKS.js.map → cli-XXTNPPKB.js.map} +0 -0
  221. /package/dist/{config-XDA42RJL.js.map → config-JJW75SBX.js.map} +0 -0
  222. /package/dist/{github-RY3FRA6P.js.map → github-6VQKSB67.js.map} +0 -0
  223. /package/dist/{github-YKQSH7FS.js.map → github-RBSEM7ZK.js.map} +0 -0
  224. /package/dist/{host-6GURH5HE.js.map → host-YSTYO5DX.js.map} +0 -0
  225. /package/dist/{json-BXY44ED7.js.map → json-PU2HLHDQ.js.map} +0 -0
  226. /package/dist/{lint-YJ2L22BW.js.map → lint-KIVTHLGU.js.map} +0 -0
  227. /package/dist/{list-NSG24VVX.js.map → list-RDEJDDJF.js.map} +0 -0
  228. /package/dist/{list-V6EGCSHX.js.map → list-SUTDWL2J.js.map} +0 -0
  229. /package/dist/{page-EV7OUBAU.js.map → page-UMAA3NCM.js.map} +0 -0
  230. /package/dist/{pretty-Q5Y2PA64.js.map → pretty-ANLRHU4O.js.map} +0 -0
  231. /package/dist/{pretty-SCRK66M5.js.map → pretty-Q3ZFKOR7.js.map} +0 -0
  232. /package/dist/{provider-527CO4DM.js.map → provider-LBX4IXGX.js.map} +0 -0
  233. /package/dist/{release-3D5PK6M7.js.map → release-VV3UTKE5.js.map} +0 -0
  234. /package/dist/{reporters-A5ADKDYR.js.map → reporters-26H3N2KW.js.map} +0 -0
  235. /package/dist/{reporters-M6LJ2IYU.js.map → reporters-ILT36CIH.js.map} +0 -0
  236. /package/dist/{reporters-RBYTASMI.js.map → reporters-PNDLWT6K.js.map} +0 -0
  237. /package/dist/{run-BUE2DDXN.js.map → run-QXCK33Z4.js.map} +0 -0
  238. /package/dist/{validate-ZBW44RHT.js.map → validate-BRUCOT2O.js.map} +0 -0
@@ -7,7 +7,7 @@ import {
7
7
  isMultilingual,
8
8
  languageOf,
9
9
  plural
10
- } from "./chunk-J6IDQGJL.js";
10
+ } from "./chunk-FKAZUZQU.js";
11
11
  import {
12
12
  palette
13
13
  } from "./chunk-RNVYGWIC.js";
@@ -68,6 +68,12 @@ var GET_FIELDS = [
68
68
  "see",
69
69
  "abstract",
70
70
  "scope-note",
71
+ "notation",
72
+ "exact-matches",
73
+ "close-matches",
74
+ "broad-matches",
75
+ "narrow-matches",
76
+ "related-matches",
71
77
  "subject-field",
72
78
  "contexts",
73
79
  "notes",
@@ -330,4 +336,4 @@ export {
330
336
  renderValeWiring,
331
337
  renderFormatsPretty
332
338
  };
333
- //# sourceMappingURL=chunk-JPQDNYXH.js.map
339
+ //# sourceMappingURL=chunk-STPGIKPY.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/term/reporters/pretty.ts"],"sourcesContent":["/**\n * Human output for every `manni term` command, in the shapes the ladder of\n * proposal 0052 prints. Columns are padded to their widest value; prose wraps\n * to 80 columns under its own column, so a long definition or message never\n * runs back to the left edge.\n */\nimport { palette, type Colors } from \"../../shared/color.js\";\nimport type { TermReport } from \"../commands/findings.js\";\nimport type { FormatRow } from \"../commands/formats.js\";\nimport { displayPath, plural } from \"../commands/run.js\";\nimport type { ValeWiring, WriteReport } from \"../commands/write.js\";\nimport type { Severity } from \"../../shared/severity.js\";\nimport { isMultilingual, languageOf } from \"../core/writers/render-util.js\";\nimport {\n TERM_AUX_FIELDS,\n TERM_DESIGNATION_FIELDS,\n TERM_FIELDS,\n type Term,\n type TermDesignation,\n type TermField,\n type TermFinding,\n type TermLink,\n type TermRecord,\n type TermTransaction,\n} from \"../types.js\";\n\nconst WIDTH = 80;\n\n/** Words packed into lines of at most `width` characters; a longer word stands alone. */\nfunction wrapWords(text: string, width: number): string[] {\n const lines: string[] = [];\n let line = \"\";\n for (const word of text.split(/\\s+/).filter((w) => w !== \"\")) {\n if (line === \"\") line = word;\n else if (line.length + 1 + word.length <= width) line = `${line} ${word}`;\n else {\n lines.push(line);\n line = word;\n }\n }\n if (line !== \"\") lines.push(line);\n return lines.length === 0 ? [\"\"] : lines;\n}\n\n/** Sentences packed into lines of at most `width`; a message that fits stays whole. */\nfunction wrapSentences(text: string, width: number): string[] {\n if (text.length <= width) return [text];\n const lines: string[] = [];\n let line = \"\";\n for (const sentence of text.split(/(?<=\\.)\\s+(?=\\S)/)) {\n if (line === \"\") line = sentence;\n else if (line.length + 1 + sentence.length <= width) line = `${line} ${sentence}`;\n else {\n lines.push(line);\n line = sentence;\n }\n }\n if (line !== \"\") lines.push(line);\n return lines;\n}\n\nfunction hanging(first: string, lines: readonly string[]): string[] {\n const indent = \" \".repeat(first.length);\n return lines.map((line, i) => `${i === 0 ? first : indent}${line}`.trimEnd());\n}\n\n// ---------------------------------------------------------------------------\n// list\n\nexport function renderListPretty(terms: readonly Term[]): string {\n const idWidth = Math.max(0, ...terms.map((t) => t.id.length)) + 3;\n const labelWidth = Math.max(0, ...terms.map((t) => t.record.label.length)) + 3;\n // The language column appears only when it tells the rows apart.\n const multilingual = isMultilingual(terms);\n const languageWidth = Math.max(0, ...terms.map((t) => languageOf(t).length)) + 3;\n const rows = terms.map((t) => {\n const language = multilingual ? languageOf(t).padEnd(languageWidth) : \"\";\n const alts = (t.record[\"alt-labels\"] ?? []).join(\", \");\n return `${t.id.padEnd(idWidth)}${language}${t.record.label.padEnd(labelWidth)}${alts}`.trimEnd();\n });\n return [...rows, plural(terms.length, \"term\")].join(\"\\n\");\n}\n\n// ---------------------------------------------------------------------------\n// get\n\n/** A root field `get` shows as one row of text. */\ntype RowField = Exclude<TermField, \"label\" | \"concept-entry\" | \"designations\" | \"tbx-markup\" | \"tbx-elements\">;\n\n/** The order `get` shows root fields in: names first, then what they mean, the definition last. */\nconst GET_FIELDS: readonly RowField[] = [\n \"alt-labels\",\n \"hidden-labels\",\n \"broader\",\n \"narrower\",\n \"related-terms\",\n \"see\",\n \"abstract\",\n \"scope-note\",\n \"notation\",\n \"exact-matches\",\n \"close-matches\",\n \"broad-matches\",\n \"narrow-matches\",\n \"related-matches\",\n \"subject-field\",\n \"contexts\",\n \"notes\",\n \"sources\",\n \"customer-subsets\",\n \"project-subsets\",\n \"cross-references\",\n \"external-cross-references\",\n \"graphics\",\n \"transactions\",\n \"definition\",\n];\n\n/** The aux fields a block's line shows; its `tbx-elements` are counted on a row of their own. */\nconst SHOWN_AUX = TERM_AUX_FIELDS.filter((field) => field !== \"tbx-elements\");\n\n/** The key column's narrowest width: the widest 1.0.0 field, `related-terms`, plus two. */\nconst MIN_KEY_WIDTH = 15;\n\nfunction linkText(link: TermLink): string {\n return link.text === undefined ? link.target : `${link.text} (${link.target})`;\n}\n\nfunction transactionText(transaction: TermTransaction): string {\n return [transaction.type, transaction.date, transaction.responsibility].filter((part) => part !== undefined).join(\" \");\n}\n\n/** One value as `get` prints it: a list joined with commas, a link as its text and target, a transaction as its parts. */\nfunction valueText(value: string | readonly (string | TermLink | TermTransaction)[]): string {\n if (typeof value === \"string\") return value;\n return value\n .map((item) => (typeof item === \"string\" ? item : \"target\" in item ? linkText(item) : transactionText(item)))\n .join(\", \");\n}\n\n/** `progressive lens: part-of-speech noun, term-type fullForm`, or `undefined` when it says nothing but its term. */\nfunction designationLine(designation: TermDesignation): string | undefined {\n const parts: string[] = [];\n for (const key of TERM_DESIGNATION_FIELDS) {\n const value = designation[key];\n if (value !== undefined) parts.push(`${key} ${value}`);\n }\n const comments = designation[\"transfer-comments\"];\n if (comments !== undefined) parts.push(`transfer-comments ${valueText(comments)}`);\n for (const key of SHOWN_AUX) {\n const value = designation[key];\n if (value !== undefined) parts.push(`${key} ${valueText(value)}`);\n }\n return parts.length === 0 ? undefined : `${designation.term}: ${parts.join(\", \")}`;\n}\n\n/** `1 at the root, 1 on PAL, 1 in concept-entry`: where the record keeps elements no named field maps. */\nfunction passThroughText(record: TermRecord): string | undefined {\n const parts: string[] = [];\n const count = (items: readonly string[] | undefined, where: string): void => {\n if (items !== undefined) parts.push(`${String(items.length)} ${where}`);\n };\n count(record[\"tbx-elements\"], \"at the root\");\n for (const designation of record.designations ?? []) count(designation[\"tbx-elements\"], `on ${designation.term}`);\n count(record[\"concept-entry\"]?.[\"tbx-elements\"], \"in concept-entry\");\n return parts.length === 0 ? undefined : parts.join(\", \");\n}\n\nexport interface GetPrettyOptions {\n color: boolean;\n cwd?: string;\n /** The entry in its other languages: the set's other terms with the same id. */\n others?: readonly Term[];\n}\n\nexport function renderGetPretty(term: Term, opts: GetPrettyOptions): string {\n const c = palette(opts.color);\n const { record } = term;\n const where = `${displayPath(term.location.file, opts.cwd ?? process.cwd())}:${String(term.location.line)}`;\n\n // Each row is a key and its lines, collected first so the key column fits the widest key shown.\n const rows: [string, string[]][] = [[\"id\", [term.id]]];\n if (term.language !== undefined) rows.push([\"language\", [term.language]]);\n for (const field of GET_FIELDS) {\n const value = record[field];\n if (value !== undefined) rows.push([field, [valueText(value)]]);\n }\n const concept = record[\"concept-entry\"];\n if (concept !== undefined) {\n const lines = SHOWN_AUX.flatMap((key) => {\n const value = concept[key];\n return value === undefined ? [] : [`${key}: ${valueText(value)}`];\n });\n if (lines.length > 0) rows.push([\"concept-entry\", lines]);\n }\n const designations = (record.designations ?? []).map(designationLine).filter((line) => line !== undefined);\n if (designations.length > 0) rows.push([\"designations\", designations]);\n if (record[\"tbx-markup\"] !== undefined) rows.push([\"tbx-markup\", record[\"tbx-markup\"]]);\n const passThrough = passThroughText(record);\n if (passThrough !== undefined) rows.push([\"tbx-elements\", [passThrough]]);\n const others = opts.others ?? [];\n if (others.length > 0) {\n rows.push([\"other languages\", [others.map((t) => `${languageOf(t)} (${t.record.label})`).join(\", \")]]);\n }\n\n const keyWidth = Math.max(MIN_KEY_WIDTH, ...rows.map(([key]) => key.length + 2));\n const lines = [`${c.bold(record.label.padEnd(40))}${c.dim(where)}`];\n for (const [key, values] of rows) {\n values.forEach((value, i) => {\n const prefix = ` ${(i === 0 ? key : \"\").padEnd(keyWidth)}`;\n lines.push(...hanging(prefix, wrapWords(value, WIDTH - prefix.length)));\n });\n }\n return lines.join(\"\\n\");\n}\n\n// ---------------------------------------------------------------------------\n// check and lint\n\nconst RULE_WIDTH = 32;\n\nfunction severityText(c: Colors, severity: Severity): string {\n const padded = severity.padEnd(6);\n if (severity === \"error\") return c.red(padded);\n if (severity === \"warning\") return c.yellow(padded);\n return c.cyan(padded);\n}\n\nfunction counts(findings: readonly TermFinding[]): string {\n const parts: string[] = [];\n const n = (severity: Severity): number => findings.filter((f) => f.severity === severity).length;\n if (n(\"error\") > 0) parts.push(plural(n(\"error\"), \"error\"));\n if (n(\"warning\") > 0) parts.push(plural(n(\"warning\"), \"warning\"));\n if (n(\"notice\") > 0) parts.push(plural(n(\"notice\"), \"notice\"));\n return parts.join(\", \");\n}\n\nexport interface FindingsPrettyOptions {\n color: boolean;\n /** Whether the clean line counts references: `check` reads them, `lint` does not. */\n references?: boolean;\n}\n\nexport function renderFindingsPretty(report: TermReport, opts: FindingsPrettyOptions): string {\n const c = palette(opts.color);\n const { baseline } = report;\n if (baseline?.written === true) {\n return `${c.green(\"✓\")} ${plural(report.found, \"finding\")} recorded in ${baseline.path}`;\n }\n const baselined = baseline !== undefined && baseline.suppressed > 0 ? `, ${String(baseline.suppressed)} baselined` : \"\";\n const terms = plural(report.terms, \"term\");\n\n if (report.findings.length === 0) {\n const references = opts.references === false ? \"\" : `, ${plural(report.references, \"reference\")}`;\n return `${c.green(\"✓\")} ${terms}${references}, no findings${baselined}`;\n }\n\n const ruleWidth = Math.max(RULE_WIDTH, ...report.findings.map((f) => f.ruleId.length + 2));\n const lines: string[] = [];\n let group: string | undefined;\n for (const finding of report.findings) {\n const file = displayPath(finding.file, report.cwd);\n const header = finding.line === undefined ? file : `${file}:${String(finding.line)}`;\n if (header !== group) {\n lines.push(c.bold(header));\n group = header;\n }\n const prefixWidth = 2 + 6 + 1 + ruleWidth;\n const message = wrapSentences(finding.message, WIDTH - prefixWidth);\n const indent = \" \".repeat(prefixWidth);\n message.forEach((text, i) => {\n lines.push(\n i === 0 ? ` ${severityText(c, finding.severity)} ${finding.ruleId.padEnd(ruleWidth)}${text}` : `${indent}${text}`,\n );\n });\n }\n lines.push(\"\", `${counts(report.findings)} in ${terms}${baselined}`);\n return lines.join(\"\\n\");\n}\n\n// ---------------------------------------------------------------------------\n// write\n\nfunction changeLine(change: WriteReport[\"changes\"][number]): string {\n switch (change.action) {\n case \"create\":\n return `${change.path} would be created`;\n case \"change\":\n return `${change.path} would change`;\n case \"remove\":\n return `${change.path} would be removed`;\n }\n}\n\n/** A generated Vale rule file's `swap:` entries. */\nfunction swapCount(content: string): number {\n const lines = content.split(/\\r?\\n/);\n const start = lines.indexOf(\"swap:\");\n if (start === -1) return 0;\n return lines.slice(start + 1).filter((line) => line.startsWith(\" \")).length;\n}\n\nfunction baseName(path: string): string {\n return path.split(/[\\\\/]/).pop() ?? path;\n}\n\nconst CASING_RULES = new Set([\"Casing.yml\", \"Lowercase.yml\", \"SentenceStart.yml\"]);\n\n/** What each file of a Vale style holds: rule files by name, the acronym files together. */\nfunction valeLines(report: WriteReport): string[] {\n const rows: [string, string][] = [];\n const acronyms: string[] = [];\n for (const file of report.files) {\n const name = baseName(file.path);\n // A casing rule swaps each label and alt-label, so what it counts is labels.\n if (CASING_RULES.has(name)) rows.push([name, plural(swapCount(file.content), \"label\")]);\n else if (name === \"Deprecated.yml\") rows.push([name, plural(swapCount(file.content), \"swap\")]);\n else acronyms.push(name);\n }\n if (acronyms.length > 0) rows.push([acronyms.join(\", \"), plural(acronyms.length, \"acronym\")]);\n const width = Math.max(0, ...rows.map(([name]) => name.length)) + 2;\n return rows.map(([name, what]) => ` ${name.padEnd(width)}${what}`);\n}\n\n/** ` dropped from a definition list: scope-note on 3 terms, hidden-labels on 12`. */\nfunction droppedLine(report: WriteReport): string | undefined {\n if (report.dropped.length === 0) return undefined;\n // One entry per term per field, so counting entries counts terms: an id in two languages is two terms.\n const counts = new Map<TermField, number>();\n for (const { field } of report.dropped) counts.set(field, (counts.get(field) ?? 0) + 1);\n const fields = [...counts.entries()]\n .map(([field, n]) => ({ field, n }))\n .sort((a, b) => a.n - b.n || TERM_FIELDS.indexOf(a.field) - TERM_FIELDS.indexOf(b.field));\n const parts = fields.map(({ field, n }, i) => `${field} on ${i === 0 ? plural(n, \"term\") : String(n)}`);\n return ` dropped from ${report.droppedFrom ?? report.format ?? \"the render\"}: ${parts.join(\", \")}`;\n}\n\n/** ` dropped from tbx3: the headers of glossary.tbx, <stdin>`. */\nfunction droppedHeadersLine(report: WriteReport): string | undefined {\n const files = report.droppedHeaders ?? [];\n if (files.length === 0) return undefined;\n const what = files.length === 1 ? \"the header of\" : \"the headers of\";\n return ` dropped from ${report.droppedFrom ?? report.format ?? \"the render\"}: ${what} ${files.join(\", \")}`;\n}\n\n/** ` skipped 2 terms a definition list cannot read without a definition: varifocal, bifocal`. */\nfunction skippedLine(report: WriteReport): string | undefined {\n if (report.skipped.length === 0) return undefined;\n const construct = report.droppedFrom ?? report.format ?? \"the render\";\n const count = plural(report.skipped.length, \"term\");\n return ` skipped ${count} ${construct} cannot read without a definition: ${report.skipped.join(\", \")}`;\n}\n\n/** ` skipped 2 terms in another language than en: spectacle-lens (de), progressive-lens (de)`. */\nfunction otherLanguagesLine(report: WriteReport): string | undefined {\n const other = report.otherLanguages;\n if (other === undefined || other.terms.length === 0) return undefined;\n const terms = other.terms.map(({ id, language }) => `${id} (${language})`).join(\", \");\n return ` skipped ${plural(other.terms.length, \"term\")} in another language than ${other.written}: ${terms}`;\n}\n\n/**\n * ` kept the first language's value where languages differ: concept-entry.subject-field on 1 concept`.\n * Fields are counted in concepts, fewest first, as the dropped line counts terms.\n */\nfunction conflictsLine(report: WriteReport): string | undefined {\n const conflicts = report.conflicts ?? [];\n if (conflicts.length === 0) return undefined;\n const ids = new Map<string, Set<string>>();\n for (const { id, field } of conflicts) {\n const set = ids.get(field) ?? new Set<string>();\n set.add(id);\n ids.set(field, set);\n }\n // A stable sort keeps fields of one count in the order they were first reported.\n const fields = [...ids.entries()].map(([field, set]) => ({ field, n: set.size })).sort((a, b) => a.n - b.n);\n const parts = fields.map(({ field, n }, i) => `${field} on ${i === 0 ? plural(n, \"concept\") : String(n)}`);\n return ` kept the first language's value where languages differ: ${parts.join(\", \")}`;\n}\n\n/** The dropped, dropped-header, skipped and conflict lines, which a write and a dry run print alike. */\nfunction renderNotes(report: WriteReport): string[] {\n return [\n droppedLine(report),\n droppedHeadersLine(report),\n skippedLine(report),\n otherLanguagesLine(report),\n conflictsLine(report),\n ].filter(\n (line) => line !== undefined,\n );\n}\n\nfunction unchangedLine(report: WriteReport): string {\n return report.mode === \"in-place\" ? \"Nothing to write\" : `${report.target ?? \"\"} is up to date`;\n}\n\nexport function renderWritePretty(report: WriteReport): string {\n if (report.check) {\n return report.changes.length > 0 ? report.changes.map(changeLine).join(\"\\n\") : unchangedLine(report);\n }\n if (report.dryRun) {\n const changes = report.changes.length > 0 ? report.changes.map(changeLine) : [unchangedLine(report)];\n return [...changes, ...renderNotes(report)].join(\"\\n\");\n }\n if (report.mode === \"in-place\") {\n const wrote = report.changes.length === 0 ? \"Nothing to write\" : `Wrote ${plural(report.changes.length, \"file\")}`;\n return [wrote, ...renderNotes(report)].join(\"\\n\");\n }\n const each = report.shape === \"directory\" && report.format !== \"vale\" ? \", one file each\" : \"\";\n const written = report.terms - report.skipped.length - (report.otherLanguages?.terms.length ?? 0);\n const lines = [`Wrote ${plural(written, \"term\")} to ${report.target ?? \"\"}${each}`];\n if (report.format === \"vale\") lines.push(...valeLines(report));\n lines.push(...renderNotes(report));\n return lines.join(\"\\n\");\n}\n\n/** The notice `write -f vale` prints when no section of Vale's config uses the style, or there is no section. */\nexport function renderValeWiring(wiring: ValeWiring): string {\n return [\n wiring.addSection\n ? `notice: ${wiring.rootIni} has no section with BasedOnStyles. Add one that uses the Terms style:`\n : `notice: no section of ${wiring.rootIni} uses the Terms style. Add it to BasedOnStyles:`,\n ` [${wiring.section}]`,\n ` BasedOnStyles = ${wiring.styles.join(\", \")}`,\n ].join(\"\\n\");\n}\n\n// ---------------------------------------------------------------------------\n// formats\n\nexport function renderFormatsPretty(rows: readonly FormatRow[]): string {\n const formatWidth = Math.max(0, ...rows.map((r) => r.format.length)) + 3;\n const labelWidth = Math.max(0, ...rows.map((r) => r.label.length)) + 3;\n return rows\n .map((r) =>\n `${r.format.padEnd(formatWidth)}${r.label.padEnd(labelWidth)}${r.read ? \"read \" : \" \"}${r.write ? \"write\" : \"\"}`.trimEnd(),\n )\n .join(\"\\n\");\n}\n"],"mappings":";;;;;;;;;;;;;;;AA0BA,IAAM,QAAQ;AAGd,SAAS,UAAU,MAAc,OAAyB;AACxD,QAAM,QAAkB,CAAC;AACzB,MAAI,OAAO;AACX,aAAW,QAAQ,KAAK,MAAM,KAAK,EAAE,OAAO,CAAC,MAAM,MAAM,EAAE,GAAG;AAC5D,QAAI,SAAS,GAAI,QAAO;AAAA,aACf,KAAK,SAAS,IAAI,KAAK,UAAU,MAAO,QAAO,GAAG,IAAI,IAAI,IAAI;AAAA,SAClE;AACH,YAAM,KAAK,IAAI;AACf,aAAO;AAAA,IACT;AAAA,EACF;AACA,MAAI,SAAS,GAAI,OAAM,KAAK,IAAI;AAChC,SAAO,MAAM,WAAW,IAAI,CAAC,EAAE,IAAI;AACrC;AAGA,SAAS,cAAc,MAAc,OAAyB;AAC5D,MAAI,KAAK,UAAU,MAAO,QAAO,CAAC,IAAI;AACtC,QAAM,QAAkB,CAAC;AACzB,MAAI,OAAO;AACX,aAAW,YAAY,KAAK,MAAM,kBAAkB,GAAG;AACrD,QAAI,SAAS,GAAI,QAAO;AAAA,aACf,KAAK,SAAS,IAAI,SAAS,UAAU,MAAO,QAAO,GAAG,IAAI,IAAI,QAAQ;AAAA,SAC1E;AACH,YAAM,KAAK,IAAI;AACf,aAAO;AAAA,IACT;AAAA,EACF;AACA,MAAI,SAAS,GAAI,OAAM,KAAK,IAAI;AAChC,SAAO;AACT;AAEA,SAAS,QAAQ,OAAe,OAAoC;AAClE,QAAM,SAAS,IAAI,OAAO,MAAM,MAAM;AACtC,SAAO,MAAM,IAAI,CAAC,MAAM,MAAM,GAAG,MAAM,IAAI,QAAQ,MAAM,GAAG,IAAI,GAAG,QAAQ,CAAC;AAC9E;AAKO,SAAS,iBAAiB,OAAgC;AAC/D,QAAM,UAAU,KAAK,IAAI,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI;AAChE,QAAM,aAAa,KAAK,IAAI,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,OAAO,MAAM,MAAM,CAAC,IAAI;AAE7E,QAAM,eAAe,eAAe,KAAK;AACzC,QAAM,gBAAgB,KAAK,IAAI,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,WAAW,CAAC,EAAE,MAAM,CAAC,IAAI;AAC/E,QAAM,OAAO,MAAM,IAAI,CAAC,MAAM;AAC5B,UAAM,WAAW,eAAe,WAAW,CAAC,EAAE,OAAO,aAAa,IAAI;AACtE,UAAM,QAAQ,EAAE,OAAO,YAAY,KAAK,CAAC,GAAG,KAAK,IAAI;AACrD,WAAO,GAAG,EAAE,GAAG,OAAO,OAAO,CAAC,GAAG,QAAQ,GAAG,EAAE,OAAO,MAAM,OAAO,UAAU,CAAC,GAAG,IAAI,GAAG,QAAQ;AAAA,EACjG,CAAC;AACD,SAAO,CAAC,GAAG,MAAM,OAAO,MAAM,QAAQ,MAAM,CAAC,EAAE,KAAK,IAAI;AAC1D;AASA,IAAM,aAAkC;AAAA,EACtC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAGA,IAAM,YAAY,gBAAgB,OAAO,CAAC,UAAU,UAAU,cAAc;AAG5E,IAAM,gBAAgB;AAEtB,SAAS,SAAS,MAAwB;AACxC,SAAO,KAAK,SAAS,SAAY,KAAK,SAAS,GAAG,KAAK,IAAI,KAAK,KAAK,MAAM;AAC7E;AAEA,SAAS,gBAAgB,aAAsC;AAC7D,SAAO,CAAC,YAAY,MAAM,YAAY,MAAM,YAAY,cAAc,EAAE,OAAO,CAAC,SAAS,SAAS,MAAS,EAAE,KAAK,GAAG;AACvH;AAGA,SAAS,UAAU,OAA0E;AAC3F,MAAI,OAAO,UAAU,SAAU,QAAO;AACtC,SAAO,MACJ,IAAI,CAAC,SAAU,OAAO,SAAS,WAAW,OAAO,YAAY,OAAO,SAAS,IAAI,IAAI,gBAAgB,IAAI,CAAE,EAC3G,KAAK,IAAI;AACd;AAGA,SAAS,gBAAgB,aAAkD;AACzE,QAAM,QAAkB,CAAC;AACzB,aAAW,OAAO,yBAAyB;AACzC,UAAM,QAAQ,YAAY,GAAG;AAC7B,QAAI,UAAU,OAAW,OAAM,KAAK,GAAG,GAAG,IAAI,KAAK,EAAE;AAAA,EACvD;AACA,QAAM,WAAW,YAAY,mBAAmB;AAChD,MAAI,aAAa,OAAW,OAAM,KAAK,qBAAqB,UAAU,QAAQ,CAAC,EAAE;AACjF,aAAW,OAAO,WAAW;AAC3B,UAAM,QAAQ,YAAY,GAAG;AAC7B,QAAI,UAAU,OAAW,OAAM,KAAK,GAAG,GAAG,IAAI,UAAU,KAAK,CAAC,EAAE;AAAA,EAClE;AACA,SAAO,MAAM,WAAW,IAAI,SAAY,GAAG,YAAY,IAAI,KAAK,MAAM,KAAK,IAAI,CAAC;AAClF;AAGA,SAAS,gBAAgB,QAAwC;AAC/D,QAAM,QAAkB,CAAC;AACzB,QAAM,QAAQ,CAAC,OAAsC,UAAwB;AAC3E,QAAI,UAAU,OAAW,OAAM,KAAK,GAAG,OAAO,MAAM,MAAM,CAAC,IAAI,KAAK,EAAE;AAAA,EACxE;AACA,QAAM,OAAO,cAAc,GAAG,aAAa;AAC3C,aAAW,eAAe,OAAO,gBAAgB,CAAC,EAAG,OAAM,YAAY,cAAc,GAAG,MAAM,YAAY,IAAI,EAAE;AAChH,QAAM,OAAO,eAAe,IAAI,cAAc,GAAG,kBAAkB;AACnE,SAAO,MAAM,WAAW,IAAI,SAAY,MAAM,KAAK,IAAI;AACzD;AASO,SAAS,gBAAgB,MAAY,MAAgC;AAC1E,QAAM,IAAI,QAAQ,KAAK,KAAK;AAC5B,QAAM,EAAE,OAAO,IAAI;AACnB,QAAM,QAAQ,GAAG,YAAY,KAAK,SAAS,MAAM,KAAK,OAAO,QAAQ,IAAI,CAAC,CAAC,IAAI,OAAO,KAAK,SAAS,IAAI,CAAC;AAGzG,QAAM,OAA6B,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AACrD,MAAI,KAAK,aAAa,OAAW,MAAK,KAAK,CAAC,YAAY,CAAC,KAAK,QAAQ,CAAC,CAAC;AACxE,aAAW,SAAS,YAAY;AAC9B,UAAM,QAAQ,OAAO,KAAK;AAC1B,QAAI,UAAU,OAAW,MAAK,KAAK,CAAC,OAAO,CAAC,UAAU,KAAK,CAAC,CAAC,CAAC;AAAA,EAChE;AACA,QAAM,UAAU,OAAO,eAAe;AACtC,MAAI,YAAY,QAAW;AACzB,UAAMA,SAAQ,UAAU,QAAQ,CAAC,QAAQ;AACvC,YAAM,QAAQ,QAAQ,GAAG;AACzB,aAAO,UAAU,SAAY,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,UAAU,KAAK,CAAC,EAAE;AAAA,IAClE,CAAC;AACD,QAAIA,OAAM,SAAS,EAAG,MAAK,KAAK,CAAC,iBAAiBA,MAAK,CAAC;AAAA,EAC1D;AACA,QAAM,gBAAgB,OAAO,gBAAgB,CAAC,GAAG,IAAI,eAAe,EAAE,OAAO,CAAC,SAAS,SAAS,MAAS;AACzG,MAAI,aAAa,SAAS,EAAG,MAAK,KAAK,CAAC,gBAAgB,YAAY,CAAC;AACrE,MAAI,OAAO,YAAY,MAAM,OAAW,MAAK,KAAK,CAAC,cAAc,OAAO,YAAY,CAAC,CAAC;AACtF,QAAM,cAAc,gBAAgB,MAAM;AAC1C,MAAI,gBAAgB,OAAW,MAAK,KAAK,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;AACxE,QAAM,SAAS,KAAK,UAAU,CAAC;AAC/B,MAAI,OAAO,SAAS,GAAG;AACrB,SAAK,KAAK,CAAC,mBAAmB,CAAC,OAAO,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,CAAC,KAAK,EAAE,OAAO,KAAK,GAAG,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC;AAAA,EACvG;AAEA,QAAM,WAAW,KAAK,IAAI,eAAe,GAAG,KAAK,IAAI,CAAC,CAAC,GAAG,MAAM,IAAI,SAAS,CAAC,CAAC;AAC/E,QAAM,QAAQ,CAAC,GAAG,EAAE,KAAK,OAAO,MAAM,OAAO,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,EAAE;AAClE,aAAW,CAAC,KAAK,MAAM,KAAK,MAAM;AAChC,WAAO,QAAQ,CAAC,OAAO,MAAM;AAC3B,YAAM,SAAS,MAAM,MAAM,IAAI,MAAM,IAAI,OAAO,QAAQ,CAAC;AACzD,YAAM,KAAK,GAAG,QAAQ,QAAQ,UAAU,OAAO,QAAQ,OAAO,MAAM,CAAC,CAAC;AAAA,IACxE,CAAC;AAAA,EACH;AACA,SAAO,MAAM,KAAK,IAAI;AACxB;AAKA,IAAM,aAAa;AAEnB,SAAS,aAAa,GAAW,UAA4B;AAC3D,QAAM,SAAS,SAAS,OAAO,CAAC;AAChC,MAAI,aAAa,QAAS,QAAO,EAAE,IAAI,MAAM;AAC7C,MAAI,aAAa,UAAW,QAAO,EAAE,OAAO,MAAM;AAClD,SAAO,EAAE,KAAK,MAAM;AACtB;AAEA,SAAS,OAAO,UAA0C;AACxD,QAAM,QAAkB,CAAC;AACzB,QAAM,IAAI,CAAC,aAA+B,SAAS,OAAO,CAAC,MAAM,EAAE,aAAa,QAAQ,EAAE;AAC1F,MAAI,EAAE,OAAO,IAAI,EAAG,OAAM,KAAK,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC;AAC1D,MAAI,EAAE,SAAS,IAAI,EAAG,OAAM,KAAK,OAAO,EAAE,SAAS,GAAG,SAAS,CAAC;AAChE,MAAI,EAAE,QAAQ,IAAI,EAAG,OAAM,KAAK,OAAO,EAAE,QAAQ,GAAG,QAAQ,CAAC;AAC7D,SAAO,MAAM,KAAK,IAAI;AACxB;AAQO,SAAS,qBAAqB,QAAoB,MAAqC;AAC5F,QAAM,IAAI,QAAQ,KAAK,KAAK;AAC5B,QAAM,EAAE,SAAS,IAAI;AACrB,MAAI,UAAU,YAAY,MAAM;AAC9B,WAAO,GAAG,EAAE,MAAM,QAAG,CAAC,IAAI,OAAO,OAAO,OAAO,SAAS,CAAC,gBAAgB,SAAS,IAAI;AAAA,EACxF;AACA,QAAM,YAAY,aAAa,UAAa,SAAS,aAAa,IAAI,KAAK,OAAO,SAAS,UAAU,CAAC,eAAe;AACrH,QAAM,QAAQ,OAAO,OAAO,OAAO,MAAM;AAEzC,MAAI,OAAO,SAAS,WAAW,GAAG;AAChC,UAAM,aAAa,KAAK,eAAe,QAAQ,KAAK,KAAK,OAAO,OAAO,YAAY,WAAW,CAAC;AAC/F,WAAO,GAAG,EAAE,MAAM,QAAG,CAAC,IAAI,KAAK,GAAG,UAAU,gBAAgB,SAAS;AAAA,EACvE;AAEA,QAAM,YAAY,KAAK,IAAI,YAAY,GAAG,OAAO,SAAS,IAAI,CAAC,MAAM,EAAE,OAAO,SAAS,CAAC,CAAC;AACzF,QAAM,QAAkB,CAAC;AACzB,MAAI;AACJ,aAAW,WAAW,OAAO,UAAU;AACrC,UAAM,OAAO,YAAY,QAAQ,MAAM,OAAO,GAAG;AACjD,UAAM,SAAS,QAAQ,SAAS,SAAY,OAAO,GAAG,IAAI,IAAI,OAAO,QAAQ,IAAI,CAAC;AAClF,QAAI,WAAW,OAAO;AACpB,YAAM,KAAK,EAAE,KAAK,MAAM,CAAC;AACzB,cAAQ;AAAA,IACV;AACA,UAAM,cAAc,IAAI,IAAI,IAAI;AAChC,UAAM,UAAU,cAAc,QAAQ,SAAS,QAAQ,WAAW;AAClE,UAAM,SAAS,IAAI,OAAO,WAAW;AACrC,YAAQ,QAAQ,CAAC,MAAM,MAAM;AAC3B,YAAM;AAAA,QACJ,MAAM,IAAI,KAAK,aAAa,GAAG,QAAQ,QAAQ,CAAC,IAAI,QAAQ,OAAO,OAAO,SAAS,CAAC,GAAG,IAAI,KAAK,GAAG,MAAM,GAAG,IAAI;AAAA,MAClH;AAAA,IACF,CAAC;AAAA,EACH;AACA,QAAM,KAAK,IAAI,GAAG,OAAO,OAAO,QAAQ,CAAC,OAAO,KAAK,GAAG,SAAS,EAAE;AACnE,SAAO,MAAM,KAAK,IAAI;AACxB;AAKA,SAAS,WAAW,QAAgD;AAClE,UAAQ,OAAO,QAAQ;AAAA,IACrB,KAAK;AACH,aAAO,GAAG,OAAO,IAAI;AAAA,IACvB,KAAK;AACH,aAAO,GAAG,OAAO,IAAI;AAAA,IACvB,KAAK;AACH,aAAO,GAAG,OAAO,IAAI;AAAA,EACzB;AACF;AAGA,SAAS,UAAU,SAAyB;AAC1C,QAAM,QAAQ,QAAQ,MAAM,OAAO;AACnC,QAAM,QAAQ,MAAM,QAAQ,OAAO;AACnC,MAAI,UAAU,GAAI,QAAO;AACzB,SAAO,MAAM,MAAM,QAAQ,CAAC,EAAE,OAAO,CAAC,SAAS,KAAK,WAAW,IAAI,CAAC,EAAE;AACxE;AAEA,SAAS,SAAS,MAAsB;AACtC,SAAO,KAAK,MAAM,OAAO,EAAE,IAAI,KAAK;AACtC;AAEA,IAAM,eAAe,oBAAI,IAAI,CAAC,cAAc,iBAAiB,mBAAmB,CAAC;AAGjF,SAAS,UAAU,QAA+B;AAChD,QAAM,OAA2B,CAAC;AAClC,QAAM,WAAqB,CAAC;AAC5B,aAAW,QAAQ,OAAO,OAAO;AAC/B,UAAM,OAAO,SAAS,KAAK,IAAI;AAE/B,QAAI,aAAa,IAAI,IAAI,EAAG,MAAK,KAAK,CAAC,MAAM,OAAO,UAAU,KAAK,OAAO,GAAG,OAAO,CAAC,CAAC;AAAA,aAC7E,SAAS,iBAAkB,MAAK,KAAK,CAAC,MAAM,OAAO,UAAU,KAAK,OAAO,GAAG,MAAM,CAAC,CAAC;AAAA,QACxF,UAAS,KAAK,IAAI;AAAA,EACzB;AACA,MAAI,SAAS,SAAS,EAAG,MAAK,KAAK,CAAC,SAAS,KAAK,IAAI,GAAG,OAAO,SAAS,QAAQ,SAAS,CAAC,CAAC;AAC5F,QAAM,QAAQ,KAAK,IAAI,GAAG,GAAG,KAAK,IAAI,CAAC,CAAC,IAAI,MAAM,KAAK,MAAM,CAAC,IAAI;AAClE,SAAO,KAAK,IAAI,CAAC,CAAC,MAAM,IAAI,MAAM,KAAK,KAAK,OAAO,KAAK,CAAC,GAAG,IAAI,EAAE;AACpE;AAGA,SAAS,YAAY,QAAyC;AAC5D,MAAI,OAAO,QAAQ,WAAW,EAAG,QAAO;AAExC,QAAMC,UAAS,oBAAI,IAAuB;AAC1C,aAAW,EAAE,MAAM,KAAK,OAAO,QAAS,CAAAA,QAAO,IAAI,QAAQA,QAAO,IAAI,KAAK,KAAK,KAAK,CAAC;AACtF,QAAM,SAAS,CAAC,GAAGA,QAAO,QAAQ,CAAC,EAChC,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,EAClC,KAAK,CAAC,GAAG,MAAM,EAAE,IAAI,EAAE,KAAK,YAAY,QAAQ,EAAE,KAAK,IAAI,YAAY,QAAQ,EAAE,KAAK,CAAC;AAC1F,QAAM,QAAQ,OAAO,IAAI,CAAC,EAAE,OAAO,EAAE,GAAG,MAAM,GAAG,KAAK,OAAO,MAAM,IAAI,OAAO,GAAG,MAAM,IAAI,OAAO,CAAC,CAAC,EAAE;AACtG,SAAO,kBAAkB,OAAO,eAAe,OAAO,UAAU,YAAY,KAAK,MAAM,KAAK,IAAI,CAAC;AACnG;AAGA,SAAS,mBAAmB,QAAyC;AACnE,QAAM,QAAQ,OAAO,kBAAkB,CAAC;AACxC,MAAI,MAAM,WAAW,EAAG,QAAO;AAC/B,QAAM,OAAO,MAAM,WAAW,IAAI,kBAAkB;AACpD,SAAO,kBAAkB,OAAO,eAAe,OAAO,UAAU,YAAY,KAAK,IAAI,IAAI,MAAM,KAAK,IAAI,CAAC;AAC3G;AAGA,SAAS,YAAY,QAAyC;AAC5D,MAAI,OAAO,QAAQ,WAAW,EAAG,QAAO;AACxC,QAAM,YAAY,OAAO,eAAe,OAAO,UAAU;AACzD,QAAM,QAAQ,OAAO,OAAO,QAAQ,QAAQ,MAAM;AAClD,SAAO,aAAa,KAAK,IAAI,SAAS,sCAAsC,OAAO,QAAQ,KAAK,IAAI,CAAC;AACvG;AAGA,SAAS,mBAAmB,QAAyC;AACnE,QAAM,QAAQ,OAAO;AACrB,MAAI,UAAU,UAAa,MAAM,MAAM,WAAW,EAAG,QAAO;AAC5D,QAAM,QAAQ,MAAM,MAAM,IAAI,CAAC,EAAE,IAAI,SAAS,MAAM,GAAG,EAAE,KAAK,QAAQ,GAAG,EAAE,KAAK,IAAI;AACpF,SAAO,aAAa,OAAO,MAAM,MAAM,QAAQ,MAAM,CAAC,6BAA6B,MAAM,OAAO,KAAK,KAAK;AAC5G;AAMA,SAAS,cAAc,QAAyC;AAC9D,QAAM,YAAY,OAAO,aAAa,CAAC;AACvC,MAAI,UAAU,WAAW,EAAG,QAAO;AACnC,QAAM,MAAM,oBAAI,IAAyB;AACzC,aAAW,EAAE,IAAI,MAAM,KAAK,WAAW;AACrC,UAAM,MAAM,IAAI,IAAI,KAAK,KAAK,oBAAI,IAAY;AAC9C,QAAI,IAAI,EAAE;AACV,QAAI,IAAI,OAAO,GAAG;AAAA,EACpB;AAEA,QAAM,SAAS,CAAC,GAAG,IAAI,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC,OAAO,GAAG,OAAO,EAAE,OAAO,GAAG,IAAI,KAAK,EAAE,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,IAAI,EAAE,CAAC;AAC1G,QAAM,QAAQ,OAAO,IAAI,CAAC,EAAE,OAAO,EAAE,GAAG,MAAM,GAAG,KAAK,OAAO,MAAM,IAAI,OAAO,GAAG,SAAS,IAAI,OAAO,CAAC,CAAC,EAAE;AACzG,SAAO,6DAA6D,MAAM,KAAK,IAAI,CAAC;AACtF;AAGA,SAAS,YAAY,QAA+B;AAClD,SAAO;AAAA,IACL,YAAY,MAAM;AAAA,IAClB,mBAAmB,MAAM;AAAA,IACzB,YAAY,MAAM;AAAA,IAClB,mBAAmB,MAAM;AAAA,IACzB,cAAc,MAAM;AAAA,EACtB,EAAE;AAAA,IACA,CAAC,SAAS,SAAS;AAAA,EACrB;AACF;AAEA,SAAS,cAAc,QAA6B;AAClD,SAAO,OAAO,SAAS,aAAa,qBAAqB,GAAG,OAAO,UAAU,EAAE;AACjF;AAEO,SAAS,kBAAkB,QAA6B;AAC7D,MAAI,OAAO,OAAO;AAChB,WAAO,OAAO,QAAQ,SAAS,IAAI,OAAO,QAAQ,IAAI,UAAU,EAAE,KAAK,IAAI,IAAI,cAAc,MAAM;AAAA,EACrG;AACA,MAAI,OAAO,QAAQ;AACjB,UAAM,UAAU,OAAO,QAAQ,SAAS,IAAI,OAAO,QAAQ,IAAI,UAAU,IAAI,CAAC,cAAc,MAAM,CAAC;AACnG,WAAO,CAAC,GAAG,SAAS,GAAG,YAAY,MAAM,CAAC,EAAE,KAAK,IAAI;AAAA,EACvD;AACA,MAAI,OAAO,SAAS,YAAY;AAC9B,UAAM,QAAQ,OAAO,QAAQ,WAAW,IAAI,qBAAqB,SAAS,OAAO,OAAO,QAAQ,QAAQ,MAAM,CAAC;AAC/G,WAAO,CAAC,OAAO,GAAG,YAAY,MAAM,CAAC,EAAE,KAAK,IAAI;AAAA,EAClD;AACA,QAAM,OAAO,OAAO,UAAU,eAAe,OAAO,WAAW,SAAS,oBAAoB;AAC5F,QAAM,UAAU,OAAO,QAAQ,OAAO,QAAQ,UAAU,OAAO,gBAAgB,MAAM,UAAU;AAC/F,QAAM,QAAQ,CAAC,SAAS,OAAO,SAAS,MAAM,CAAC,OAAO,OAAO,UAAU,EAAE,GAAG,IAAI,EAAE;AAClF,MAAI,OAAO,WAAW,OAAQ,OAAM,KAAK,GAAG,UAAU,MAAM,CAAC;AAC7D,QAAM,KAAK,GAAG,YAAY,MAAM,CAAC;AACjC,SAAO,MAAM,KAAK,IAAI;AACxB;AAGO,SAAS,iBAAiB,QAA4B;AAC3D,SAAO;AAAA,IACL,OAAO,aACH,WAAW,OAAO,OAAO,2EACzB,yBAAyB,OAAO,OAAO;AAAA,IAC3C,MAAM,OAAO,OAAO;AAAA,IACpB,qBAAqB,OAAO,OAAO,KAAK,IAAI,CAAC;AAAA,EAC/C,EAAE,KAAK,IAAI;AACb;AAKO,SAAS,oBAAoB,MAAoC;AACtE,QAAM,cAAc,KAAK,IAAI,GAAG,GAAG,KAAK,IAAI,CAAC,MAAM,EAAE,OAAO,MAAM,CAAC,IAAI;AACvE,QAAM,aAAa,KAAK,IAAI,GAAG,GAAG,KAAK,IAAI,CAAC,MAAM,EAAE,MAAM,MAAM,CAAC,IAAI;AACrE,SAAO,KACJ;AAAA,IAAI,CAAC,MACJ,GAAG,EAAE,OAAO,OAAO,WAAW,CAAC,GAAG,EAAE,MAAM,OAAO,UAAU,CAAC,GAAG,EAAE,OAAO,WAAW,QAAQ,GAAG,EAAE,QAAQ,UAAU,EAAE,GAAG,QAAQ;AAAA,EACjI,EACC,KAAK,IAAI;AACd;","names":["lines","counts"]}
@@ -16,7 +16,7 @@ import {
16
16
  spliceEntryField,
17
17
  unifiedDiff,
18
18
  withClaimLines
19
- } from "./chunk-FQXWVS6J.js";
19
+ } from "./chunk-CH6IOGXV.js";
20
20
  import {
21
21
  CITATIONS_KEY,
22
22
  CITE_SECTION,
@@ -54,10 +54,10 @@ import {
54
54
  stripMarkers,
55
55
  twoManifestsRefusal,
56
56
  urlManifestRefusal
57
- } from "./chunk-PCS4VJBV.js";
57
+ } from "./chunk-DGRLHDM4.js";
58
58
  import {
59
59
  renderCheckGithub
60
- } from "./chunk-ADMEPUBT.js";
60
+ } from "./chunk-GQ3KRY3B.js";
61
61
  import {
62
62
  refusalLine,
63
63
  removalLine,
@@ -65,7 +65,7 @@ import {
65
65
  renderRemovePretty,
66
66
  renderUpdatePretty,
67
67
  rewriteLine
68
- } from "./chunk-4D5IZSXM.js";
68
+ } from "./chunk-OHUDZRLK.js";
69
69
  import {
70
70
  blockMatches,
71
71
  claimEnd,
@@ -94,12 +94,7 @@ import {
94
94
  toValidationResult,
95
95
  unitAt,
96
96
  unitText
97
- } from "./chunk-WDWXAYVH.js";
98
- import {
99
- renderCheckJson,
100
- renderRemoveJson,
101
- renderUpdateJson
102
- } from "./chunk-PCE7QHXJ.js";
97
+ } from "./chunk-AYVKN3PG.js";
103
98
  import {
104
99
  CITE_RULES,
105
100
  CiteError,
@@ -110,7 +105,6 @@ import {
110
105
  RULE_ID_PREFIX,
111
106
  SRC_PATTERN,
112
107
  anchoredLines,
113
- bodyLineOf,
114
108
  citationInputs,
115
109
  detectEol,
116
110
  fenceSpanAt,
@@ -140,17 +134,23 @@ import {
140
134
  spellSource,
141
135
  statementForms,
142
136
  validateEntry
143
- } from "./chunk-BKVHX6FU.js";
137
+ } from "./chunk-24AJK2RG.js";
138
+ import {
139
+ renderCheckJson,
140
+ renderRemoveJson,
141
+ renderUpdateJson
142
+ } from "./chunk-PCE7QHXJ.js";
144
143
  import {
145
144
  reencryptData,
146
145
  reencryptMetadata
147
- } from "./chunk-LKP7QDFN.js";
146
+ } from "./chunk-JSSM7VVV.js";
148
147
  import {
149
148
  ENCRYPTION_KEY_ENV,
150
149
  MAX_RANGE_LINES,
151
150
  MOVE_BUDGET_BYTES,
152
151
  MOVE_WINDOW_LINES,
153
152
  PATH_JOIN,
153
+ bodyLineOf,
154
154
  committedKeyWarning,
155
155
  configMarks,
156
156
  externalMetadataJoin,
@@ -170,7 +170,7 @@ import {
170
170
  toBodyLines,
171
171
  toFileLines,
172
172
  writeEncryptionKey
173
- } from "./chunk-GV56WGL2.js";
173
+ } from "./chunk-SMHAYK6I.js";
174
174
  import {
175
175
  LEGACY_CONFIG_NAMES,
176
176
  STDIN_TOKEN,
@@ -181,7 +181,7 @@ import {
181
181
  resolveTargetSet,
182
182
  supportedExtensions,
183
183
  writeFileAtomic
184
- } from "./chunk-VSEBFHAY.js";
184
+ } from "./chunk-RGLFV4KO.js";
185
185
  import {
186
186
  findConfigFile,
187
187
  findFamilyConfigFile,
@@ -195,7 +195,7 @@ import {
195
195
  readConfigFile,
196
196
  readFamilyConfigFile,
197
197
  selectCollections
198
- } from "./chunk-QLWC7MKD.js";
198
+ } from "./chunk-OTJOBZJ5.js";
199
199
  import {
200
200
  ToolError
201
201
  } from "./chunk-G3T47CFV.js";
@@ -931,4 +931,4 @@ export {
931
931
  runKeyRotate,
932
932
  runKeySet
933
933
  };
934
- //# sourceMappingURL=chunk-NSBXVPZL.js.map
934
+ //# sourceMappingURL=chunk-U22TOL5Y.js.map
@@ -13,7 +13,7 @@ import {
13
13
  providerSpecFor,
14
14
  resolveIdentity,
15
15
  selectProvider
16
- } from "./chunk-QCHVR4ZM.js";
16
+ } from "./chunk-VM7VAFJW.js";
17
17
  import {
18
18
  errorMessage
19
19
  } from "./chunk-G3T47CFV.js";
@@ -143,4 +143,4 @@ export {
143
143
  constructProvider,
144
144
  makeJudgeProvider
145
145
  };
146
- //# sourceMappingURL=chunk-NGTVREIH.js.map
146
+ //# sourceMappingURL=chunk-U6IHLEWT.js.map
@@ -5,7 +5,7 @@ import {
5
5
  listInTree,
6
6
  safeRead,
7
7
  segments
8
- } from "./chunk-R4WXQIOZ.js";
8
+ } from "./chunk-IQQAJROD.js";
9
9
  import {
10
10
  TracevalsError
11
11
  } from "./chunk-UKZNLVJW.js";
@@ -171,4 +171,4 @@ async function discoverArtifacts(options) {
171
171
  export {
172
172
  discoverArtifacts
173
173
  };
174
- //# sourceMappingURL=chunk-ODRPL3WB.js.map
174
+ //# sourceMappingURL=chunk-UUCCV3SI.js.map
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  TERM_FIELDS,
4
4
  displayPath
5
- } from "./chunk-J6IDQGJL.js";
5
+ } from "./chunk-FKAZUZQU.js";
6
6
 
7
7
  // src/term/reporters/json.ts
8
8
  function termEntry(term) {
@@ -49,4 +49,4 @@ export {
49
49
  renderFindingsJson,
50
50
  renderFormatsJson
51
51
  };
52
- //# sourceMappingURL=chunk-MSRU4D4P.js.map
52
+ //# sourceMappingURL=chunk-UXMCHBOJ.js.map
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  loadTerms
4
- } from "./chunk-J6IDQGJL.js";
4
+ } from "./chunk-FKAZUZQU.js";
5
5
 
6
6
  // src/term/commands/list.ts
7
7
  var LIST_FORMATS = ["pretty", "json", "csv"];
@@ -14,4 +14,4 @@ export {
14
14
  LIST_FORMATS,
15
15
  runList
16
16
  };
17
- //# sourceMappingURL=chunk-B7XYNRJQ.js.map
17
+ //# sourceMappingURL=chunk-VFAKGIDG.js.map
@@ -31,6 +31,8 @@ import {
31
31
  DEFAULT_MODELS,
32
32
  DEFAULT_OPENAI_BASE_URL,
33
33
  InferenceError,
34
+ modelState,
35
+ nodeLlamaCppStatus,
34
36
  resolveProviderIdentityAsync
35
37
  } from "@hawkeyexl/inference";
36
38
  var DEFAULT_PROVIDER = "auto";
@@ -183,15 +185,23 @@ var LOCAL_PROVIDER = "llama-cpp";
183
185
  var LOCAL_FLAG_HELP = "run inference on this machine (llama-cpp); overrides any configured or eval-level provider";
184
186
  var LOCAL_COMPATIBLE = /* @__PURE__ */ new Set([LOCAL_PROVIDER, DEFAULT_PROVIDER, "mock"]);
185
187
  function assertLocalFlag(flag, toError) {
186
- if (flag.local !== true || flag.provider === void 0) return;
188
+ if (flag.provider === void 0 || flag.local !== true && flag.offline !== true) return;
187
189
  assertKnownProvider(flag.provider, toError);
188
190
  if (LOCAL_COMPATIBLE.has(flag.provider)) return;
191
+ if (flag.local === true) {
192
+ throw toError(
193
+ `--local and --provider ${flag.provider} contradict each other: --local runs inference on this machine with ${LOCAL_PROVIDER}. Drop one of them.`
194
+ );
195
+ }
189
196
  throw toError(
190
- `--local and --provider ${flag.provider} contradict each other: --local runs inference on this machine with ${LOCAL_PROVIDER}. Drop one of them.`
197
+ `--offline and --provider ${flag.provider} contradict each other: --offline sends nothing off this machine, so only ${LOCAL_PROVIDER} with a model already downloaded can run. Drop one of them.`
191
198
  );
192
199
  }
200
+ function noOfflineModel(consequence) {
201
+ return `no model is available offline, so ${consequence}; download one first with --local, or drop --offline.`;
202
+ }
193
203
  function selectProvider(flag, levels) {
194
- if (flag.local === true) return selectLocal(flag, levels);
204
+ if (flag.local === true || flag.offline === true) return selectLocal(flag, levels);
195
205
  const provider = flag.provider ?? levels.find((level) => level.provider !== void 0)?.provider ?? DEFAULT_PROVIDER;
196
206
  const model = flag.model ?? levels.find(
197
207
  (level) => level.model !== void 0 && (level.provider === void 0 || level.provider === provider)
@@ -205,10 +215,11 @@ function selectLocal(flag, levels) {
205
215
  const replaced = chosen?.provider !== void 0 && chosen.origin !== void 0 && chosen.provider !== provider && chosen.provider !== DEFAULT_PROVIDER ? { provider: chosen.provider, source: chosen.origin } : void 0;
206
216
  return replaced === void 0 ? { provider, model } : { provider, model, replaced };
207
217
  }
208
- function localNotice(selection) {
218
+ function localNotice(selection, flags = {}) {
209
219
  const { replaced } = selection;
210
220
  if (replaced === void 0) return void 0;
211
- return `--local: using ${LOCAL_PROVIDER} instead of "${replaced.provider}" from ${replaced.source}.`;
221
+ const flag = flags.local !== true && flags.offline === true ? "--offline" : "--local";
222
+ return `${flag}: using ${LOCAL_PROVIDER} instead of "${replaced.provider}" from ${replaced.source}.`;
212
223
  }
213
224
  function providerSpecFor(connections, selection) {
214
225
  const { provider, model } = selection;
@@ -267,9 +278,22 @@ async function resolveIdentity(spec, toError) {
267
278
  );
268
279
  }
269
280
  }
281
+ async function offlineIdentity(spec, toError) {
282
+ if (spec.provider === "mock") return resolveIdentity(spec, toError);
283
+ if (spec.provider !== LOCAL_PROVIDER) return void 0;
284
+ if ((await nodeLlamaCppStatus()).state !== "present") return void 0;
285
+ const identity = await resolveIdentity(spec, toError);
286
+ const modelsDirectory = spec.llamaCpp?.modelsDirectory;
287
+ const state = await modelState(
288
+ identity.model,
289
+ modelsDirectory === void 0 ? {} : { modelsDirectory }
290
+ );
291
+ return state === "ready" ? identity : void 0;
292
+ }
270
293
 
271
294
  export {
272
295
  parseDuration,
296
+ DEFAULT_PROVIDER,
273
297
  DECISION_ONLY_PROVIDERS,
274
298
  assertKnownProvider,
275
299
  assertModelHasProvider,
@@ -278,9 +302,11 @@ export {
278
302
  DEFAULT_KEEP_ALIVE_MS,
279
303
  LOCAL_FLAG_HELP,
280
304
  assertLocalFlag,
305
+ noOfflineModel,
281
306
  selectProvider,
282
307
  localNotice,
283
308
  providerSpecFor,
284
- resolveIdentity
309
+ resolveIdentity,
310
+ offlineIdentity
285
311
  };
286
- //# sourceMappingURL=chunk-QCHVR4ZM.js.map
312
+ //# sourceMappingURL=chunk-VM7VAFJW.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/shared/duration.ts","../src/shared/providers.ts"],"sourcesContent":["/**\n * `--newer-than <duration>`: a window of time back from now, shared by every\n * domain that selects its inputs by age.\n *\n * Deliberately strict. A duration this refuses is a usage error, because the\n * alternative (reading `7y` as zero, or as \"everything\") silently changes what\n * a gate looked at.\n */\n\nconst UNITS: Readonly<Record<string, number>> = {\n m: 60_000,\n h: 60 * 60_000,\n d: 24 * 60 * 60_000,\n w: 7 * 24 * 60 * 60_000,\n};\n\n/**\n * The usage error for a value that is not a duration. `label` is what the\n * user wrote it under, a flag or a config key.\n */\nexport function durationMessage(value: string, label = \"--newer-than\"): string {\n return `${label} must be a duration such as 30m, 24h, 7d or 2w, got \"${value}\"`;\n}\n\n/**\n * `7d` to milliseconds. A count, which may carry a fraction, then one unit:\n * `m` minutes, `h` hours, `d` days or `w` weeks. `makeError` builds the\n * domain's own `ToolError` subclass, so the refusal exits 2 under its name.\n */\nexport function parseDuration(\n text: string,\n makeError: (message: string) => Error,\n label?: string,\n): number {\n const match = /^(\\d+(?:\\.\\d+)?)([mhdw])$/.exec(text.trim());\n const count = match?.[1];\n const unit = match?.[2];\n const ms = unit === undefined ? undefined : UNITS[unit];\n if (count === undefined || ms === undefined) {\n throw makeError(durationMessage(text, label));\n }\n return Number(count) * ms;\n}\n","/**\n * Choosing an inference provider and model, for every tool that sends content\n * to one: `manni meta fill` and `manni docevals`.\n *\n * The names a tool accepts, the refusals, what `--local` overrides and the\n * detection call are one implementation, so a provider added upstream reaches both tools on the same\n * day and a message reads the same in both. What differs is only what the\n * caller passes in: the config key its user writes, and its own error class,\n * which is what maps the refusal to exit 2.\n */\nimport { resolve } from \"node:path\";\nimport {\n DEFAULT_JEV_BASE_URL,\n DEFAULT_MODELS,\n DEFAULT_OPENAI_BASE_URL,\n InferenceError,\n modelState,\n nodeLlamaCppStatus,\n resolveProviderIdentityAsync,\n type ProviderName,\n type ProviderSelector,\n type ProviderSpec,\n} from \"@hawkeyexl/inference\";\nimport { parseDuration } from \"./duration.js\";\nimport { errorMessage } from \"./errors.js\";\n\n/** Builds the caller's own error from a message. */\nexport type ToErrorFn = (message: string) => Error;\n\n/**\n * `auto` detects the highest-priority provider this machine can actually use —\n * an Anthropic key, then an OpenAI key, then the Claude CLI, then a local model\n * that needs no credentials at all. Defaulting to a named provider instead meant\n * a tool failed outright for anyone who did not happen to hold that vendor's\n * key.\n */\nexport const DEFAULT_PROVIDER = \"auto\";\n\n/**\n * Providers that answer decisions and never generate text. Every family tool\n * but one generates, so these are refused unless the caller asks for decisions,\n * as tracevals' in-loop judge does (proposal 0079).\n */\nexport const DECISION_ONLY_PROVIDERS: ReadonlySet<string> = new Set([\"jev\"]);\n\n/**\n * Provider names the inference layer accepts for generation, taken from the\n * library rather than copied. A hardcoded list silently went stale when `llama-cpp` was added\n * upstream; deriving it means a new provider works the day it ships.\n */\nexport const PROVIDERS: ReadonlySet<string> = new Set<string>([\n ...Object.keys(DEFAULT_MODELS).filter((name) => !DECISION_ONLY_PROVIDERS.has(name)),\n DEFAULT_PROVIDER,\n]);\n\n/**\n * The providers a user can name for a model, which is what every message lists.\n * `mock` is the library's test double: accepted when asked for by name, so the\n * suite and the docs' own tests can run without a provider, but never offered.\n */\nconst NAMEABLE_PROVIDERS: readonly string[] = Object.keys(DEFAULT_MODELS).filter(\n (name) => name !== \"mock\" && !DECISION_ONLY_PROVIDERS.has(name),\n);\n\n/**\n * Refuse a name the library does not offer, or a decision-only provider where\n * the caller generates.\n */\nexport function assertKnownProvider(\n name: string,\n toError: ToErrorFn,\n options: { decisions?: boolean } = {},\n): asserts name is ProviderSelector {\n if (DECISION_ONLY_PROVIDERS.has(name)) {\n if (options.decisions === true) return;\n throw toError(\n `Provider \"${name}\" answers decisions only, so it cannot generate. Available: ${[...NAMEABLE_PROVIDERS, DEFAULT_PROVIDER].join(\", \")}.`,\n );\n }\n if (PROVIDERS.has(name)) return;\n throw toError(\n `Unknown provider \"${name}\". Available: ${[...NAMEABLE_PROVIDERS, DEFAULT_PROVIDER].join(\", \")}.`,\n );\n}\n\n/**\n * A model name belongs to exactly one provider, so it cannot be handed to\n * whichever provider detection picks: `--model gpt-4o-mini` on a machine with an\n * Anthropic key selected anthropic and then 404'd mid-run, after file discovery\n * had already been paid for.\n *\n * The library enforces this too. It is repeated here to name the flag and the\n * config key rather than the API fields, since that is what the user typed.\n *\n * `name` is the EFFECTIVE provider, so a provider in config satisfies this just\n * as `--provider` does; only an unresolved `auto` is ambiguous. `configKey` is\n * the key as the user writes it (`fill.provider`, `docevals.provider`).\n */\nexport function assertModelHasProvider(\n name: ProviderSelector,\n model: string | undefined,\n configKey: string,\n toError: ToErrorFn,\n): void {\n if (name !== DEFAULT_PROVIDER || model == null) return;\n throw toError(\n `Model \"${model}\" was given without a provider: a model name does not say ` +\n `which provider owns it. Set --provider or ${configKey} to one of ` +\n `${NAMEABLE_PROVIDERS.join(\", \")}, or drop the model to take the ` +\n `detected provider's default.`,\n );\n}\n\n/**\n * Connection settings, per provider, as the family's top-level `providers:`\n * map states them. Only what the user wrote: `providerSpecFor` supplies the\n * defaults, so detection can tell a configured value from a default one.\n */\nexport interface ProviderConnections {\n anthropic?: { apiKeyEnv?: string };\n openai?: { baseUrl?: string; apiKeyEnv?: string };\n \"claude-cli\"?: { command?: string };\n /** A decide-only provider: it judges, and never generates. */\n jev?: { apiKeyEnv?: string; baseUrl?: string };\n /**\n * `modelsDir` is absolute: resolved against the config file's directory.\n * `keepAlive` is milliseconds, parsed from a duration; `0` unloads a model\n * as soon as no session holds it. It belongs to the model host, so it\n * never reaches a provider spec.\n */\n \"llama-cpp\"?: { modelsDir?: string; thoughtTokens?: number; keepAlive?: number };\n}\n\n/** The family's top-level `providers:` map, parsed. */\nexport interface ProvidersConfig extends ProviderConnections {\n /** Absent when not written. */\n provider?: ProviderSelector;\n /** Absent when not written. Never present without a named `provider`. */\n model?: string;\n}\n\n/** The family's top-level key for provider settings. */\nexport const PROVIDERS_KEY = \"providers\";\n\n/** What each provider's section may carry, in the order messages list it. */\nconst CONNECTION_KEYS = {\n anthropic: [\"apiKeyEnv\"],\n openai: [\"baseUrl\", \"apiKeyEnv\"],\n \"claude-cli\": [\"command\"],\n jev: [\"apiKeyEnv\", \"baseUrl\"],\n \"llama-cpp\": [\"modelsDir\", \"thoughtTokens\", \"keepAlive\"],\n} as const;\n\ntype ConnectionName = keyof typeof CONNECTION_KEYS;\n\nconst CONNECTION_NAMES = Object.keys(CONNECTION_KEYS) as ConnectionName[];\n\nconst TOP_LEVEL_KEYS: readonly string[] = [\"provider\", \"model\", ...CONNECTION_NAMES];\n\nfunction isMapping(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction rejectUnknown(\n raw: Record<string, unknown>,\n allowed: readonly string[],\n label: string,\n source: string,\n toError: ToErrorFn,\n): void {\n for (const key of Object.keys(raw)) {\n if (!allowed.includes(key)) {\n throw toError(\n `${source}: \"${label}\" has unknown key \"${key}\". Supported keys: ${allowed.join(\", \")}.`,\n );\n }\n }\n}\n\n/**\n * Parse the family's `providers:` map. Every message names `source`, and a\n * relative `llama-cpp.modelsDir` resolves from `dir`, the directory holding\n * the file, as every other path written in the config does.\n */\nexport function parseProviders(\n value: unknown,\n source: string,\n dir: string,\n toError: ToErrorFn,\n): ProvidersConfig {\n if (value == null) return {};\n if (!isMapping(value)) {\n throw toError(`${source}: \"${PROVIDERS_KEY}\" must be a mapping.`);\n }\n rejectUnknown(value, TOP_LEVEL_KEYS, PROVIDERS_KEY, source, toError);\n\n const string = (raw: Record<string, unknown>, key: string, label: string): string | undefined => {\n const v = raw[key];\n if (v === undefined) return undefined;\n if (typeof v !== \"string\") {\n throw toError(`${source}: \"${label}\" must be a string.`);\n }\n return v;\n };\n\n const parsed: ProvidersConfig = {};\n const provider = string(value, \"provider\", `${PROVIDERS_KEY}.provider`);\n if (provider !== undefined) {\n assertKnownProvider(provider, (message) => toError(`${source}: ${message}`));\n parsed.provider = provider;\n }\n const model = string(value, \"model\", `${PROVIDERS_KEY}.model`);\n if (model !== undefined) {\n if (provider === undefined || provider === DEFAULT_PROVIDER) {\n throw toError(\n `${source}: \"${PROVIDERS_KEY}.model\" was given without a provider: a model name does not ` +\n `say which provider owns it. Set ${PROVIDERS_KEY}.provider to one of ` +\n `${NAMEABLE_PROVIDERS.join(\", \")}, or drop the model to take the detected provider's default.`,\n );\n }\n parsed.model = model;\n }\n\n for (const name of CONNECTION_NAMES) {\n const section = value[name];\n if (section == null) continue;\n const label = `${PROVIDERS_KEY}.${name}`;\n if (!isMapping(section)) {\n throw toError(`${source}: \"${label}\" must be a mapping.`);\n }\n rejectUnknown(section, CONNECTION_KEYS[name], label, source, toError);\n const field = (key: string): string | undefined => string(section, key, `${label}.${key}`);\n switch (name) {\n case \"anthropic\": {\n const apiKeyEnv = field(\"apiKeyEnv\");\n parsed.anthropic = apiKeyEnv === undefined ? {} : { apiKeyEnv };\n break;\n }\n case \"openai\": {\n const baseUrl = field(\"baseUrl\");\n const apiKeyEnv = field(\"apiKeyEnv\");\n parsed.openai = {\n ...(baseUrl !== undefined ? { baseUrl } : {}),\n ...(apiKeyEnv !== undefined ? { apiKeyEnv } : {}),\n };\n break;\n }\n case \"claude-cli\": {\n const command = field(\"command\");\n parsed[\"claude-cli\"] = command === undefined ? {} : { command };\n break;\n }\n case \"jev\": {\n const apiKeyEnv = field(\"apiKeyEnv\");\n const baseUrl = field(\"baseUrl\");\n parsed.jev = {\n ...(apiKeyEnv !== undefined ? { apiKeyEnv } : {}),\n ...(baseUrl !== undefined ? { baseUrl } : {}),\n };\n break;\n }\n case \"llama-cpp\": {\n const modelsDir = field(\"modelsDir\");\n const thoughtTokens = section[\"thoughtTokens\"];\n if (\n thoughtTokens !== undefined &&\n (typeof thoughtTokens !== \"number\" || !Number.isInteger(thoughtTokens) || thoughtTokens < 0)\n ) {\n throw toError(\n `${source}: \"${label}.thoughtTokens\" must be a whole number of 0 or more, got ${JSON.stringify(thoughtTokens)}.`,\n );\n }\n const keepAlive = keepAliveOf(section[\"keepAlive\"], `${label}.keepAlive`, source, toError);\n parsed[\"llama-cpp\"] = {\n ...(modelsDir !== undefined ? { modelsDir: resolve(dir, modelsDir) } : {}),\n ...(thoughtTokens !== undefined ? { thoughtTokens } : {}),\n ...(keepAlive !== undefined ? { keepAlive } : {}),\n };\n break;\n }\n }\n }\n return parsed;\n}\n\n/** `providers.llama-cpp.keepAlive` when unset: ten minutes. */\nexport const DEFAULT_KEEP_ALIVE_MS = 10 * 60_000;\n\n/**\n * `keepAlive`, in milliseconds: `0`, or a duration as `--newer-than` takes\n * one. YAML reads a bare `0` as a number, so both spellings of zero count.\n */\nfunction keepAliveOf(\n value: unknown,\n label: string,\n source: string,\n toError: ToErrorFn,\n): number | undefined {\n if (value === undefined) return undefined;\n if (value === 0 || value === \"0\") return 0;\n const refuse = (): Error =>\n toError(\n `${source}: \"${label}\" must be 0 or a duration such as 30m, 24h, 7d or 2w, got \"${typeof value === \"string\" ? value : JSON.stringify(value)}\"`,\n );\n if (typeof value !== \"string\") throw refuse();\n return parseDuration(value, refuse);\n}\n\n/** A provider and a model as one level states them; either half may be absent. */\nexport interface ProviderChoice {\n provider?: string;\n model?: string;\n /**\n * Where the level's provider was written, as a `--local` notice names it:\n * `providers.provider`, `docevals.provider`, `fill.provider`, or\n * `eval \"<id>\" in <file>`.\n */\n origin?: string;\n}\n\n/** The command line's say: `--provider`, `--model`, `--local` and `--offline`. */\nexport interface ProviderFlags {\n provider?: string;\n model?: string;\n /** Run inference on this machine, with llama-cpp, whatever a level asks for. */\n local?: boolean;\n /**\n * Send nothing off this machine: the `--local` boundary, and then only a\n * model already downloaded. See `offlineIdentity`.\n */\n offline?: boolean;\n}\n\n/** A configured choice that `--local` or `--offline` set aside. */\nexport interface ReplacedChoice {\n provider: string;\n source: string;\n}\n\n/** The effective choice, before it is checked or detected. */\nexport interface ProviderSelection {\n provider: string;\n model: string | undefined;\n /** Under `--local`, the configured provider that would otherwise have run. */\n replaced?: ReplacedChoice;\n}\n\n/**\n * The provider `--local` runs. `claude-cli` does not qualify: the binary runs\n * on this machine, the inference does not (proposal 0017).\n */\nexport const LOCAL_PROVIDER = \"llama-cpp\";\n\n/** `--local`'s help, one wording on every command that takes the flag. */\nexport const LOCAL_FLAG_HELP =\n \"run inference on this machine (llama-cpp); overrides any configured or eval-level provider\";\n\n/**\n * Names `--provider` may carry beside `--local`. `auto` under `--local` can\n * only mean the local provider, and `mock` is the library's test double, which\n * sends nothing anywhere.\n */\nconst LOCAL_COMPATIBLE: ReadonlySet<string> = new Set([LOCAL_PROVIDER, DEFAULT_PROVIDER, \"mock\"]);\n\n/**\n * Refuse `--local` beside a `--provider` it contradicts. An unknown name is\n * refused as unknown first: `--local` would otherwise set it aside unread.\n */\nexport function assertLocalFlag(flag: ProviderFlags, toError: ToErrorFn): void {\n if (flag.provider === undefined || (flag.local !== true && flag.offline !== true)) return;\n assertKnownProvider(flag.provider, toError);\n if (LOCAL_COMPATIBLE.has(flag.provider)) return;\n if (flag.local === true) {\n throw toError(\n `--local and --provider ${flag.provider} contradict each other: --local runs inference ` +\n `on this machine with ${LOCAL_PROVIDER}. Drop one of them.`,\n );\n }\n throw toError(\n `--offline and --provider ${flag.provider} contradict each other: --offline sends nothing ` +\n `off this machine, so only ${LOCAL_PROVIDER} with a model already downloaded can run. Drop one of them.`,\n );\n}\n\n/**\n * What a verb says when `--offline` finds no model it may run, completed by\n * what that verb does without one.\n */\nexport function noOfflineModel(consequence: string): string {\n return `no model is available offline, so ${consequence}; download one first with --local, or drop --offline.`;\n}\n\n/**\n * The provider and model in force.\n *\n * `flag` is the command line. `levels` are the config's statements, highest\n * precedence first: for docevals an eval's own choice, then `docevals.provider`,\n * then the family's `providers:`; for `meta fill`, `meta.fill`, then the\n * family's. The provider is the flag's, else the first level that names one,\n * else `auto`.\n *\n * A model belongs to the provider its level names, so it is carried only to\n * that provider: a level whose provider lost does not lend its model to the\n * winner, which could not run it. A level naming no provider gives its model\n * to whichever provider is in force, which is how `--provider` supplies the\n * provider a configured model needs. The flag's model applies to whatever\n * wins.\n *\n * `--local` makes the provider llama-cpp, over every level. A level's model\n * then applies only where that level named llama-cpp, and the level whose\n * provider would otherwise have run is returned as `replaced`, unless it was\n * `auto`, which chose no hosted provider. `--offline` draws the same boundary,\n * and `offlineIdentity` then decides whether the model is on this machine.\n * Check the flag with `assertLocalFlag` first: a contradicting `--provider` is\n * not selected here.\n */\nexport function selectProvider(\n flag: ProviderFlags,\n levels: readonly ProviderChoice[],\n): ProviderSelection {\n if (flag.local === true || flag.offline === true) return selectLocal(flag, levels);\n const provider =\n flag.provider ?? levels.find((level) => level.provider !== undefined)?.provider ?? DEFAULT_PROVIDER;\n const model =\n flag.model ??\n levels.find(\n (level) =>\n level.model !== undefined && (level.provider === undefined || level.provider === provider),\n )?.model;\n return { provider, model };\n}\n\nfunction selectLocal(flag: ProviderFlags, levels: readonly ProviderChoice[]): ProviderSelection {\n // The mock seam survives, so a test can drive `--local` without a runtime.\n const provider = flag.provider === \"mock\" ? \"mock\" : LOCAL_PROVIDER;\n const model =\n flag.model ??\n levels.find((level) => level.model !== undefined && level.provider === provider)?.model;\n // A flag's provider is the command line's own choice, never a replaced one.\n const chosen =\n flag.provider === undefined ? levels.find((level) => level.provider !== undefined) : undefined;\n const replaced =\n chosen?.provider !== undefined &&\n chosen.origin !== undefined &&\n chosen.provider !== provider &&\n chosen.provider !== DEFAULT_PROVIDER\n ? { provider: chosen.provider, source: chosen.origin }\n : undefined;\n return replaced === undefined ? { provider, model } : { provider, model, replaced };\n}\n\n/**\n * What a selection's notice says, if it replaced anything, naming the flag\n * that drew the boundary: `--local`, or `--offline` when only it is set.\n */\nexport function localNotice(\n selection: ProviderSelection,\n flags: ProviderFlags = {},\n): string | undefined {\n const { replaced } = selection;\n if (replaced === undefined) return undefined;\n const flag = flags.local !== true && flags.offline === true ? \"--offline\" : \"--local\";\n return `${flag}: using ${LOCAL_PROVIDER} instead of \"${replaced.provider}\" from ${replaced.source}.`;\n}\n\n/**\n * The library's spec for a selection, with the connection settings from\n * `connections` for the provider it names.\n *\n * A named provider gets its own section, defaults filled. Under `auto` the\n * spec carries every setting detection reads, but only as the user wrote it:\n * the library counts a `baseUrl` as a reason openai is usable, so the default\n * endpoint must not reach detection. `apiKeyEnv` is left out there: the spec\n * has one for every provider, and detection looks for the default variables.\n */\nexport function providerSpecFor(\n connections: ProviderConnections,\n selection: { provider: ProviderSelector; model: string | null },\n): ProviderSpec {\n const { provider, model } = selection;\n const local = connections[\"llama-cpp\"] ?? {};\n const llamaCpp = {\n thoughtTokens: local.thoughtTokens ?? 0,\n ...(local.modelsDir !== undefined ? { modelsDirectory: local.modelsDir } : {}),\n };\n switch (provider) {\n case \"anthropic\":\n return {\n provider,\n model,\n apiKeyEnv: connections.anthropic?.apiKeyEnv ?? \"ANTHROPIC_API_KEY\",\n };\n case \"openai\":\n return {\n provider,\n model,\n apiKeyEnv: connections.openai?.apiKeyEnv ?? \"OPENAI_API_KEY\",\n baseUrl: connections.openai?.baseUrl ?? DEFAULT_OPENAI_BASE_URL,\n };\n case \"claude-cli\":\n return { provider, model, command: connections[\"claude-cli\"]?.command ?? \"claude\" };\n case \"jev\":\n return {\n provider,\n model,\n apiKeyEnv: connections.jev?.apiKeyEnv ?? \"TYPESAFE_API_KEY\",\n baseUrl: connections.jev?.baseUrl ?? DEFAULT_JEV_BASE_URL,\n };\n case \"llama-cpp\":\n // Local weights, in-process: no API key, and no network once they are\n // downloaded.\n return { provider, model, llamaCpp };\n case \"mock\":\n return { provider, model };\n case \"auto\": {\n const baseUrl = connections.openai?.baseUrl;\n const command = connections[\"claude-cli\"]?.command;\n const configuredLocal = local.thoughtTokens !== undefined || local.modelsDir !== undefined;\n return {\n provider,\n model,\n ...(baseUrl !== undefined ? { baseUrl } : {}),\n ...(command !== undefined ? { command } : {}),\n ...(configuredLocal ? { llamaCpp } : {}),\n };\n }\n }\n}\n\n/**\n * The concrete provider and model a spec resolves to, without constructing the\n * provider: a fully cached run needs no API key. Under `auto` this is where\n * detection runs. It probes the environment, the Claude CLI and the local\n * runtime, but never authenticates.\n *\n * The model returned is the RESOLVED one (the provider's default when none was\n * named, a llama-cpp tier's concrete weights), which is what makes it safe as\n * cache-key material: a library default that changes changes the key.\n */\nexport async function resolveIdentity(\n spec: ProviderSpec,\n toError: ToErrorFn,\n): Promise<{ provider: ProviderName; model: string }> {\n try {\n return await resolveProviderIdentityAsync(spec);\n } catch (err) {\n // Detection failing with nothing available is operational, not per-file:\n // the aggregate message names every provider it tried and why each was out.\n throw toError(\n err instanceof InferenceError\n ? err.message\n : `Could not resolve provider \"${String(spec.provider)}\": ${errorMessage(err)}`,\n );\n }\n}\n\n/**\n * The identity `--offline` may run, or `undefined` when none is on this\n * machine. `spec` comes from a selection made with `offline` set, so it names\n * llama-cpp, or the mock, which sends nothing anywhere.\n *\n * Nothing is downloaded or installed. The library answers both questions\n * without side effects: the runtime must be importable now, and the resolved\n * model's weights must be `ready` on disk, so a model still downloading is\n * not. Resolving the `auto` tier probes memory through the runtime, which is\n * why the runtime is checked first.\n */\nexport async function offlineIdentity(\n spec: ProviderSpec,\n toError: ToErrorFn,\n): Promise<{ provider: ProviderName; model: string } | undefined> {\n if (spec.provider === \"mock\") return resolveIdentity(spec, toError);\n if (spec.provider !== LOCAL_PROVIDER) return undefined;\n if ((await nodeLlamaCppStatus()).state !== \"present\") return undefined;\n const identity = await resolveIdentity(spec, toError);\n const modelsDirectory = spec.llamaCpp?.modelsDirectory;\n const state = await modelState(\n identity.model,\n modelsDirectory === undefined ? {} : { modelsDirectory },\n );\n return state === \"ready\" ? identity : undefined;\n}\n"],"mappings":"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","names":[]}
@@ -10,7 +10,7 @@ import {
10
10
  constructProvider,
11
11
  resolveSelectionIdentity,
12
12
  selectProvider
13
- } from "./chunk-NGTVREIH.js";
13
+ } from "./chunk-U6IHLEWT.js";
14
14
  import {
15
15
  TracevalsError
16
16
  } from "./chunk-UKZNLVJW.js";
@@ -499,4 +499,4 @@ export {
499
499
  localGate,
500
500
  assertDownloaded
501
501
  };
502
- //# sourceMappingURL=chunk-VQK4VHLF.js.map
502
+ //# sourceMappingURL=chunk-YQV75FIL.js.map
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ //# sourceMappingURL=chunk-YUTVAMWW.js.map
@@ -5,7 +5,7 @@ import {
5
5
  runTemplates,
6
6
  runTemplatesInfer,
7
7
  runTools
8
- } from "./chunk-GDVZ5VII.js";
8
+ } from "./chunk-5SID2SVL.js";
9
9
  import {
10
10
  LINT_JOBS,
11
11
  TOOLS_BY_JOB,
@@ -13,25 +13,31 @@ import {
13
13
  rebaseConfig,
14
14
  resolveStructureTool,
15
15
  runLint
16
- } from "./chunk-KGEQJ5CC.js";
16
+ } from "./chunk-F564FHMQ.js";
17
17
  import "./chunk-ZMECS2IJ.js";
18
- import "./chunk-2IR4T5PO.js";
19
18
  import "./chunk-TIUTIOFB.js";
19
+ import "./chunk-IZXN3WI6.js";
20
20
  import {
21
21
  render,
22
22
  renderTemplates,
23
23
  renderTools
24
- } from "./chunk-LBSCW232.js";
24
+ } from "./chunk-4Q24OYI3.js";
25
25
  import "./chunk-GLP5PSXB.js";
26
26
  import "./chunk-TBAMBLF3.js";
27
27
  import {
28
28
  LintError
29
29
  } from "./chunk-YGFIQ6Y5.js";
30
- import "./chunk-TU2WUBVZ.js";
31
- import "./chunk-LKP7QDFN.js";
32
- import "./chunk-6HWBRZIN.js";
33
- import "./chunk-M42DZCOU.js";
34
- import "./chunk-PCQ7ELJH.js";
30
+ import "./chunk-YUTVAMWW.js";
31
+ import "./chunk-JSSM7VVV.js";
32
+ import "./chunk-PS257NIU.js";
33
+ import "./chunk-2OZF2VUB.js";
34
+ import {
35
+ OMITTED_WHEN_CLEAN,
36
+ REPORT_FORMATS,
37
+ REPORT_FORMAT_LIST,
38
+ isReportFormat
39
+ } from "./chunk-SGR7ZAVE.js";
40
+ import "./chunk-QEAGL4V5.js";
35
41
  import {
36
42
  collect,
37
43
  configOption,
@@ -39,31 +45,26 @@ import {
39
45
  readStdin,
40
46
  reportConfig,
41
47
  splitList
42
- } from "./chunk-GV56WGL2.js";
43
- import {
44
- OMITTED_WHEN_CLEAN,
45
- REPORT_FORMATS,
46
- REPORT_FORMAT_LIST,
47
- isReportFormat
48
- } from "./chunk-D4N2V43Z.js";
48
+ } from "./chunk-SMHAYK6I.js";
49
+ import "./chunk-DSWKBZWW.js";
49
50
  import {
50
51
  STDIN_TOKEN
51
- } from "./chunk-VSEBFHAY.js";
52
- import {
53
- fail
54
- } from "./chunk-YEUYKR62.js";
52
+ } from "./chunk-RGLFV4KO.js";
53
+ import "./chunk-MNH7QO4Z.js";
55
54
  import {
56
55
  shouldColor
57
56
  } from "./chunk-RNVYGWIC.js";
58
- import "./chunk-MNH7QO4Z.js";
59
- import "./chunk-QLWC7MKD.js";
57
+ import {
58
+ fail
59
+ } from "./chunk-YEUYKR62.js";
60
+ import "./chunk-OTJOBZJ5.js";
60
61
  import {
61
62
  notice
62
63
  } from "./chunk-HX44GB4Z.js";
63
- import "./chunk-QCHVR4ZM.js";
64
+ import "./chunk-VM7VAFJW.js";
64
65
  import {
65
66
  package_default
66
- } from "./chunk-2MJ62AYQ.js";
67
+ } from "./chunk-DHGB4JBG.js";
67
68
  import "./chunk-OWBRDNRZ.js";
68
69
  import "./chunk-G3T47CFV.js";
69
70
  import "./chunk-2H7UOFLK.js";
@@ -348,4 +349,4 @@ function buildProgram() {
348
349
  export {
349
350
  buildProgram
350
351
  };
351
- //# sourceMappingURL=cli-4MF37HAQ.js.map
352
+ //# sourceMappingURL=cli-4CR7QIOK.js.map