@hawkeyexl/manni 4.9.0 → 4.11.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 (196) hide show
  1. package/README.md +1 -1
  2. package/dist/{batch-W5GXL2P4.js → batch-UAULUMGH.js} +18 -14
  3. package/dist/{build-Q56FEXR6.js → build-QSPNK5AL.js} +14 -11
  4. package/dist/calibrate-KXN4URPM.js +40 -0
  5. package/dist/{capture-GMYH4ATL.js → capture-JHTSUPUC.js} +16 -13
  6. package/dist/{check-OAJWC3WD.js → check-MDGXEUWL.js} +5 -5
  7. package/dist/{check-KUBELO5G.js → check-VELUQAUW.js} +17 -14
  8. package/dist/{check-KUBELO5G.js.map → check-VELUQAUW.js.map} +1 -1
  9. package/dist/check-WOQRKNZK.js +29 -0
  10. package/dist/{check-ZE5HIDOW.js → check-YEOYBFST.js} +14 -11
  11. package/dist/{chunk-FGUXMZXO.js → chunk-2DRHT73U.js} +7 -7
  12. package/dist/{chunk-XHFHXOQQ.js → chunk-2IAZEB45.js} +8 -8
  13. package/dist/{chunk-35WTFPQS.js → chunk-2IR4T5PO.js} +2 -2
  14. package/dist/{chunk-KX5IYIOO.js → chunk-2MJ62AYQ.js} +2 -2
  15. package/dist/chunk-2MJ62AYQ.js.map +1 -0
  16. package/dist/{chunk-OWSNXPPX.js → chunk-4CK6ZSOK.js} +6 -6
  17. package/dist/{chunk-YUZ2ECZY.js → chunk-4D5IZSXM.js} +3 -3
  18. package/dist/{chunk-RFSGKF4O.js → chunk-4VBSTXN6.js} +4 -4
  19. package/dist/{chunk-3XMG4CZY.js → chunk-54F74XR3.js} +15 -13
  20. package/dist/{chunk-3XMG4CZY.js.map → chunk-54F74XR3.js.map} +1 -1
  21. package/dist/{chunk-IN6DWNVE.js → chunk-6HWBRZIN.js} +47 -191
  22. package/dist/chunk-6HWBRZIN.js.map +1 -0
  23. package/dist/{chunk-GEMXGXPR.js → chunk-ADMEPUBT.js} +3 -3
  24. package/dist/{chunk-23UAGEKP.js → chunk-B7XYNRJQ.js} +2 -2
  25. package/dist/{chunk-QKE3XS2L.js → chunk-BBT6AVUG.js} +2 -2
  26. package/dist/{chunk-VKWZCEWB.js → chunk-BKVHX6FU.js} +4 -4
  27. package/dist/{chunk-X6WLCNKC.js → chunk-D4N2V43Z.js} +4 -4
  28. package/dist/{chunk-XXDXIIQ4.js → chunk-EFW7CAG4.js} +2 -2
  29. package/dist/{chunk-UDUHRXJ4.js → chunk-EIFCP6CZ.js} +2 -2
  30. package/dist/{chunk-KPXOJMQ6.js → chunk-FBMZJEB3.js} +2 -2
  31. package/dist/{chunk-HRXDM6H6.js → chunk-FQXWVS6J.js} +8 -8
  32. package/dist/{chunk-76I6I5N2.js → chunk-FUCPZVRY.js} +2 -2
  33. package/dist/{chunk-DTGIUMZV.js → chunk-GDVZ5VII.js} +4 -4
  34. package/dist/{chunk-QCCAHV6A.js → chunk-GV56WGL2.js} +321 -3308
  35. package/dist/chunk-GV56WGL2.js.map +1 -0
  36. package/dist/{chunk-TKTRIZT4.js → chunk-HA6MQMOY.js} +6 -6
  37. package/dist/{chunk-ECVQNGTH.js → chunk-HQR2ZBHW.js} +3 -3
  38. package/dist/{chunk-MHAYLDBK.js → chunk-IGSHYP74.js} +4 -4
  39. package/dist/{chunk-YEUQ7OKT.js → chunk-J6IDQGJL.js} +4 -4
  40. package/dist/{chunk-5LBEQ4ZU.js → chunk-JPQDNYXH.js} +2 -2
  41. package/dist/{chunk-6KKZXB2O.js → chunk-JROBZ7JA.js} +2 -2
  42. package/dist/{chunk-TMI2YF6D.js → chunk-KGEQJ5CC.js} +15 -26
  43. package/dist/{chunk-TMI2YF6D.js.map → chunk-KGEQJ5CC.js.map} +1 -1
  44. package/dist/{chunk-2EHDJ47Y.js → chunk-LBSCW232.js} +4 -4
  45. package/dist/{chunk-M6GH3FGJ.js → chunk-LKP7QDFN.js} +4 -4
  46. package/dist/{chunk-5EB6RIXJ.js → chunk-LPIF5LIE.js} +2 -2
  47. package/dist/chunk-M42DZCOU.js +164 -0
  48. package/dist/chunk-M42DZCOU.js.map +1 -0
  49. package/dist/{chunk-ND2S5BXB.js → chunk-MSRU4D4P.js} +2 -2
  50. package/dist/{chunk-BSTXARMY.js → chunk-NSBXVPZL.js} +11 -11
  51. package/dist/{chunk-Q45PZX2D.js → chunk-ODRPL3WB.js} +2 -2
  52. package/dist/{chunk-FSBIPCWE.js → chunk-OPXWPJDA.js} +10 -10
  53. package/dist/chunk-PCQ7ELJH.js +3081 -0
  54. package/dist/chunk-PCQ7ELJH.js.map +1 -0
  55. package/dist/{chunk-QAKJNPY3.js → chunk-PCS4VJBV.js} +6 -6
  56. package/dist/{chunk-GRILZZGS.js → chunk-PWBH7DCQ.js} +3 -3
  57. package/dist/{chunk-XKBEHKWO.js → chunk-QLWC7MKD.js} +34 -32
  58. package/dist/chunk-QLWC7MKD.js.map +1 -0
  59. package/dist/{chunk-XTAHZTES.js → chunk-R4WXQIOZ.js} +6 -6
  60. package/dist/{chunk-3CDZWY6M.js → chunk-RLT5SEML.js} +5 -5
  61. package/dist/{chunk-XG6PVB5S.js → chunk-SSQZB5SQ.js} +1 -11
  62. package/dist/chunk-SSQZB5SQ.js.map +1 -0
  63. package/dist/chunk-T7JAOYE5.js +393 -0
  64. package/dist/chunk-T7JAOYE5.js.map +1 -0
  65. package/dist/chunk-TU2WUBVZ.js +2 -0
  66. package/dist/{chunk-Q2H7J3FF.js → chunk-U7CTFN2J.js} +12 -10
  67. package/dist/{chunk-Q2H7J3FF.js.map → chunk-U7CTFN2J.js.map} +1 -1
  68. package/dist/{chunk-3XGGF5JW.js → chunk-VSEBFHAY.js} +10 -7
  69. package/dist/{chunk-3XGGF5JW.js.map → chunk-VSEBFHAY.js.map} +1 -1
  70. package/dist/{chunk-OVOYKWCM.js → chunk-WDWXAYVH.js} +4 -4
  71. package/dist/{chunk-5WME4CB6.js → chunk-Y6DOMTQD.js} +10 -8
  72. package/dist/{chunk-5WME4CB6.js.map → chunk-Y6DOMTQD.js.map} +1 -1
  73. package/dist/chunk-ZMECS2IJ.js +27 -0
  74. package/dist/chunk-ZMECS2IJ.js.map +1 -0
  75. package/dist/chunk-ZPLVANY2.js +15 -0
  76. package/dist/chunk-ZPLVANY2.js.map +1 -0
  77. package/dist/{cli-MEPJTS2V.js → cli-3BTCK4AB.js} +18 -15
  78. package/dist/{cli-MEPJTS2V.js.map → cli-3BTCK4AB.js.map} +1 -1
  79. package/dist/{cli-EMQXRN6E.js → cli-4MF37HAQ.js} +16 -12
  80. package/dist/{cli-EMQXRN6E.js.map → cli-4MF37HAQ.js.map} +1 -1
  81. package/dist/{cli-YDMMIL2U.js → cli-6KZTHWGP.js} +17 -14
  82. package/dist/{cli-YDMMIL2U.js.map → cli-6KZTHWGP.js.map} +1 -1
  83. package/dist/{cli-ZJRHU7MO.js → cli-DRMZBZLB.js} +39 -34
  84. package/dist/cli-DRMZBZLB.js.map +1 -0
  85. package/dist/{cli-J35OPSTP.js → cli-I62SRH3R.js} +10 -8
  86. package/dist/cli-JJMOVIKS.js +83 -0
  87. package/dist/cli-JJMOVIKS.js.map +1 -0
  88. package/dist/{cli-TPONWND4.js → cli-O4ABTN4Z.js} +25 -21
  89. package/dist/{cli-TPONWND4.js.map → cli-O4ABTN4Z.js.map} +1 -1
  90. package/dist/{cli-URNPOMOH.js → cli-ONTC5PKT.js} +3 -3
  91. package/dist/{cli-BJ7JXJ2U.js → cli-RORDPAPE.js} +17 -14
  92. package/dist/{cli-BJ7JXJ2U.js.map → cli-RORDPAPE.js.map} +1 -1
  93. package/dist/{cli-B7SFJDZA.js → cli-VID7PJS3.js} +17 -13
  94. package/dist/{cli-B7SFJDZA.js.map → cli-VID7PJS3.js.map} +1 -1
  95. package/dist/cli-VUKMWSSF.js +839 -0
  96. package/dist/cli-VUKMWSSF.js.map +1 -0
  97. package/dist/cli.js +24 -11
  98. package/dist/cli.js.map +1 -1
  99. package/dist/{config-YWSNBFEE.js → config-XDA42RJL.js} +3 -3
  100. package/dist/docmeta.js +9 -7
  101. package/dist/docmeta.js.map +1 -1
  102. package/dist/github-RY3FRA6P.js +29 -0
  103. package/dist/github-YKQSH7FS.js +34 -0
  104. package/dist/index.d.ts +1023 -915
  105. package/dist/index.js +107 -81
  106. package/dist/index.js.map +1 -1
  107. package/dist/{json-JIUPGOUQ.js → json-BXY44ED7.js} +13 -10
  108. package/dist/lint-YJ2L22BW.js +33 -0
  109. package/dist/list-NSG24VVX.js +31 -0
  110. package/dist/list-V6EGCSHX.js +34 -0
  111. package/dist/{page-WQ3GQF76.js → page-EV7OUBAU.js} +12 -9
  112. package/dist/{prepare-ZUTYXTUZ.js → prepare-JHJDJB6I.js} +17 -14
  113. package/dist/{prepare-ZUTYXTUZ.js.map → prepare-JHJDJB6I.js.map} +1 -1
  114. package/dist/{pretty-Q3C433DW.js → pretty-Q5Y2PA64.js} +14 -11
  115. package/dist/{pretty-CBV5XSMZ.js → pretty-SCRK66M5.js} +13 -10
  116. package/dist/{reporters-DH5HPFXJ.js → reporters-A5ADKDYR.js} +12 -9
  117. package/dist/{reporters-TTYGOUAF.js → reporters-RBYTASMI.js} +5 -5
  118. package/dist/run-BUE2DDXN.js +36 -0
  119. package/dist/{term-DL3YFL43.js → term-CQAGNG3Q.js} +17 -14
  120. package/dist/{term-DL3YFL43.js.map → term-CQAGNG3Q.js.map} +1 -1
  121. package/dist/{validate-UVDMC5LT.js → validate-ZBW44RHT.js} +6 -5
  122. package/dist/validate-ZBW44RHT.js.map +1 -0
  123. package/package.json +1 -1
  124. package/plugin/manni/.claude-plugin/plugin.json +1 -1
  125. package/dist/calibrate-XFE56P4M.js +0 -36
  126. package/dist/check-HBRX4FOR.js +0 -26
  127. package/dist/chunk-IN6DWNVE.js.map +0 -1
  128. package/dist/chunk-KX5IYIOO.js.map +0 -1
  129. package/dist/chunk-QCCAHV6A.js.map +0 -1
  130. package/dist/chunk-XG6PVB5S.js.map +0 -1
  131. package/dist/chunk-XKBEHKWO.js.map +0 -1
  132. package/dist/cli-ZJRHU7MO.js.map +0 -1
  133. package/dist/github-63CZJGZS.js +0 -31
  134. package/dist/github-IYOVHWHG.js +0 -26
  135. package/dist/lint-TBE35CCW.js +0 -29
  136. package/dist/list-IZ4RIM72.js +0 -30
  137. package/dist/list-TNEJ3J77.js +0 -28
  138. package/dist/run-LZXKVTM7.js +0 -32
  139. /package/dist/{batch-W5GXL2P4.js.map → batch-UAULUMGH.js.map} +0 -0
  140. /package/dist/{build-Q56FEXR6.js.map → build-QSPNK5AL.js.map} +0 -0
  141. /package/dist/{calibrate-XFE56P4M.js.map → calibrate-KXN4URPM.js.map} +0 -0
  142. /package/dist/{capture-GMYH4ATL.js.map → capture-JHTSUPUC.js.map} +0 -0
  143. /package/dist/{check-HBRX4FOR.js.map → check-MDGXEUWL.js.map} +0 -0
  144. /package/dist/{check-OAJWC3WD.js.map → check-WOQRKNZK.js.map} +0 -0
  145. /package/dist/{check-ZE5HIDOW.js.map → check-YEOYBFST.js.map} +0 -0
  146. /package/dist/{chunk-FGUXMZXO.js.map → chunk-2DRHT73U.js.map} +0 -0
  147. /package/dist/{chunk-XHFHXOQQ.js.map → chunk-2IAZEB45.js.map} +0 -0
  148. /package/dist/{chunk-35WTFPQS.js.map → chunk-2IR4T5PO.js.map} +0 -0
  149. /package/dist/{chunk-OWSNXPPX.js.map → chunk-4CK6ZSOK.js.map} +0 -0
  150. /package/dist/{chunk-YUZ2ECZY.js.map → chunk-4D5IZSXM.js.map} +0 -0
  151. /package/dist/{chunk-RFSGKF4O.js.map → chunk-4VBSTXN6.js.map} +0 -0
  152. /package/dist/{chunk-GEMXGXPR.js.map → chunk-ADMEPUBT.js.map} +0 -0
  153. /package/dist/{chunk-23UAGEKP.js.map → chunk-B7XYNRJQ.js.map} +0 -0
  154. /package/dist/{chunk-QKE3XS2L.js.map → chunk-BBT6AVUG.js.map} +0 -0
  155. /package/dist/{chunk-VKWZCEWB.js.map → chunk-BKVHX6FU.js.map} +0 -0
  156. /package/dist/{chunk-X6WLCNKC.js.map → chunk-D4N2V43Z.js.map} +0 -0
  157. /package/dist/{chunk-XXDXIIQ4.js.map → chunk-EFW7CAG4.js.map} +0 -0
  158. /package/dist/{chunk-UDUHRXJ4.js.map → chunk-EIFCP6CZ.js.map} +0 -0
  159. /package/dist/{chunk-KPXOJMQ6.js.map → chunk-FBMZJEB3.js.map} +0 -0
  160. /package/dist/{chunk-HRXDM6H6.js.map → chunk-FQXWVS6J.js.map} +0 -0
  161. /package/dist/{chunk-76I6I5N2.js.map → chunk-FUCPZVRY.js.map} +0 -0
  162. /package/dist/{chunk-DTGIUMZV.js.map → chunk-GDVZ5VII.js.map} +0 -0
  163. /package/dist/{chunk-TKTRIZT4.js.map → chunk-HA6MQMOY.js.map} +0 -0
  164. /package/dist/{chunk-ECVQNGTH.js.map → chunk-HQR2ZBHW.js.map} +0 -0
  165. /package/dist/{chunk-MHAYLDBK.js.map → chunk-IGSHYP74.js.map} +0 -0
  166. /package/dist/{chunk-YEUQ7OKT.js.map → chunk-J6IDQGJL.js.map} +0 -0
  167. /package/dist/{chunk-5LBEQ4ZU.js.map → chunk-JPQDNYXH.js.map} +0 -0
  168. /package/dist/{chunk-6KKZXB2O.js.map → chunk-JROBZ7JA.js.map} +0 -0
  169. /package/dist/{chunk-2EHDJ47Y.js.map → chunk-LBSCW232.js.map} +0 -0
  170. /package/dist/{chunk-M6GH3FGJ.js.map → chunk-LKP7QDFN.js.map} +0 -0
  171. /package/dist/{chunk-5EB6RIXJ.js.map → chunk-LPIF5LIE.js.map} +0 -0
  172. /package/dist/{chunk-ND2S5BXB.js.map → chunk-MSRU4D4P.js.map} +0 -0
  173. /package/dist/{chunk-BSTXARMY.js.map → chunk-NSBXVPZL.js.map} +0 -0
  174. /package/dist/{chunk-Q45PZX2D.js.map → chunk-ODRPL3WB.js.map} +0 -0
  175. /package/dist/{chunk-FSBIPCWE.js.map → chunk-OPXWPJDA.js.map} +0 -0
  176. /package/dist/{chunk-QAKJNPY3.js.map → chunk-PCS4VJBV.js.map} +0 -0
  177. /package/dist/{chunk-GRILZZGS.js.map → chunk-PWBH7DCQ.js.map} +0 -0
  178. /package/dist/{chunk-XTAHZTES.js.map → chunk-R4WXQIOZ.js.map} +0 -0
  179. /package/dist/{chunk-3CDZWY6M.js.map → chunk-RLT5SEML.js.map} +0 -0
  180. /package/dist/{cli-J35OPSTP.js.map → chunk-TU2WUBVZ.js.map} +0 -0
  181. /package/dist/{chunk-OVOYKWCM.js.map → chunk-WDWXAYVH.js.map} +0 -0
  182. /package/dist/{config-YWSNBFEE.js.map → cli-I62SRH3R.js.map} +0 -0
  183. /package/dist/{cli-URNPOMOH.js.map → cli-ONTC5PKT.js.map} +0 -0
  184. /package/dist/{github-63CZJGZS.js.map → config-XDA42RJL.js.map} +0 -0
  185. /package/dist/{github-IYOVHWHG.js.map → github-RY3FRA6P.js.map} +0 -0
  186. /package/dist/{json-JIUPGOUQ.js.map → github-YKQSH7FS.js.map} +0 -0
  187. /package/dist/{lint-TBE35CCW.js.map → json-BXY44ED7.js.map} +0 -0
  188. /package/dist/{list-IZ4RIM72.js.map → lint-YJ2L22BW.js.map} +0 -0
  189. /package/dist/{list-TNEJ3J77.js.map → list-NSG24VVX.js.map} +0 -0
  190. /package/dist/{page-WQ3GQF76.js.map → list-V6EGCSHX.js.map} +0 -0
  191. /package/dist/{pretty-CBV5XSMZ.js.map → page-EV7OUBAU.js.map} +0 -0
  192. /package/dist/{pretty-Q3C433DW.js.map → pretty-Q5Y2PA64.js.map} +0 -0
  193. /package/dist/{reporters-DH5HPFXJ.js.map → pretty-SCRK66M5.js.map} +0 -0
  194. /package/dist/{reporters-TTYGOUAF.js.map → reporters-A5ADKDYR.js.map} +0 -0
  195. /package/dist/{run-LZXKVTM7.js.map → reporters-RBYTASMI.js.map} +0 -0
  196. /package/dist/{validate-UVDMC5LT.js.map → run-BUE2DDXN.js.map} +0 -0
@@ -15,10 +15,10 @@ import {
15
15
  import {
16
16
  REPORT_FORMAT_LIST,
17
17
  renderJunit
18
- } from "./chunk-X6WLCNKC.js";
18
+ } from "./chunk-D4N2V43Z.js";
19
19
  import {
20
20
  isErrorSeverity
21
- } from "./chunk-3XGGF5JW.js";
21
+ } from "./chunk-VSEBFHAY.js";
22
22
  import {
23
23
  palette
24
24
  } from "./chunk-RNVYGWIC.js";
@@ -28,7 +28,7 @@ import {
28
28
  } from "./chunk-MNH7QO4Z.js";
29
29
  import {
30
30
  package_default
31
- } from "./chunk-KX5IYIOO.js";
31
+ } from "./chunk-2MJ62AYQ.js";
32
32
 
33
33
  // src/lint/core/rule-id.ts
34
34
  var RULE_ID_PREFIX = "manni:lint";
@@ -633,4 +633,4 @@ export {
633
633
  renderTemplates,
634
634
  renderTools
635
635
  };
636
- //# sourceMappingURL=chunk-2EHDJ47Y.js.map
636
+ //# sourceMappingURL=chunk-LBSCW232.js.map
@@ -10,7 +10,7 @@ import {
10
10
  pageMarks,
11
11
  pageSchemaSet,
12
12
  withValueAt
13
- } from "./chunk-QCCAHV6A.js";
13
+ } from "./chunk-GV56WGL2.js";
14
14
  import {
15
15
  DocmetaError,
16
16
  escapePointerSegment,
@@ -20,12 +20,12 @@ import {
20
20
  rebaseConfigSchemaRefs,
21
21
  schemaTrustRoot,
22
22
  supportedExtensions
23
- } from "./chunk-3XGGF5JW.js";
23
+ } from "./chunk-VSEBFHAY.js";
24
24
  import {
25
25
  decryptValue,
26
26
  encryptValue,
27
27
  isEncryptedValue
28
- } from "./chunk-XKBEHKWO.js";
28
+ } from "./chunk-QLWC7MKD.js";
29
29
  import {
30
30
  errorMessage
31
31
  } from "./chunk-G3T47CFV.js";
@@ -195,4 +195,4 @@ export {
195
195
  metaPageView,
196
196
  declaredAt
197
197
  };
198
- //# sourceMappingURL=chunk-M6GH3FGJ.js.map
198
+ //# sourceMappingURL=chunk-LKP7QDFN.js.map
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  displayPath
4
- } from "./chunk-YEUQ7OKT.js";
4
+ } from "./chunk-J6IDQGJL.js";
5
5
  import {
6
6
  escapeWorkflowCommandMessage,
7
7
  escapeWorkflowCommandProperty
@@ -20,4 +20,4 @@ function renderFindingsGithub(report) {
20
20
  export {
21
21
  renderFindingsGithub
22
22
  };
23
- //# sourceMappingURL=chunk-5EB6RIXJ.js.map
23
+ //# sourceMappingURL=chunk-LPIF5LIE.js.map
@@ -0,0 +1,164 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ PATH_JOIN,
4
+ applyRelocation,
5
+ offerPrompt,
6
+ planRelocation,
7
+ relocationOffers
8
+ } from "./chunk-GV56WGL2.js";
9
+
10
+ // src/meta/core/location-writes.ts
11
+ import { LineCounter, isMap, isNode, isScalar, parseDocument } from "yaml";
12
+ var dedupe = (xs) => [...new Set(xs)];
13
+ var pages = (n) => `${String(n)} page${n === 1 ? "" : "s"}`;
14
+ async function offerExternalHomes(ctx, writes, hooks) {
15
+ const applied = /* @__PURE__ */ new Set();
16
+ const groups = /* @__PURE__ */ new Map();
17
+ for (const w of writes) {
18
+ if (w.home.kind !== "collection") continue;
19
+ const group = groups.get(w.home.collection) ?? [];
20
+ group.push(w);
21
+ groups.set(w.home.collection, group);
22
+ }
23
+ for (const [collection, group] of groups) {
24
+ const require2 = /* @__PURE__ */ new Map();
25
+ for (const w of group) {
26
+ const keys = require2.get(w.label) ?? [];
27
+ if (!keys.includes(w.key)) keys.push(w.key);
28
+ require2.set(w.label, keys);
29
+ }
30
+ const plan = await planRelocation(ctx, {
31
+ files: [...require2.keys()],
32
+ fields: dedupe(group.map((w) => w.key)),
33
+ require: require2
34
+ });
35
+ const offers = relocationOffers(plan);
36
+ if (offers.length === 0) continue;
37
+ let yes = true;
38
+ for (const offer of offers) {
39
+ const { notice, question } = offerPrompt(offer, "write");
40
+ hooks.onNotice?.(notice);
41
+ if (!await hooks.confirm(question)) {
42
+ yes = false;
43
+ break;
44
+ }
45
+ }
46
+ if (!yes) continue;
47
+ const result = await applyRelocation(ctx, plan);
48
+ hooks.onRelocated?.(result);
49
+ applied.add(collection);
50
+ }
51
+ return applied;
52
+ }
53
+ function externalWriteWarnings(writes, dryRun) {
54
+ const verb = dryRun ? "would write" : "wrote";
55
+ const groups = /* @__PURE__ */ new Map();
56
+ const groupOf = (w) => w.home.kind === "collection" ? `c:${w.home.collection}` : `n:${w.home.reason}`;
57
+ for (const w of writes) {
58
+ const id = groupOf(w);
59
+ groups.set(id, [...groups.get(id) ?? [], w]);
60
+ }
61
+ const out = [];
62
+ for (const group of groups.values()) {
63
+ const [first] = group;
64
+ if (first === void 0) continue;
65
+ out.push(
66
+ externalWriteWarning({
67
+ verb,
68
+ keys: dedupe(group.map((w) => w.key)),
69
+ pages: new Set(group.map((w) => w.label)).size,
70
+ home: first.home,
71
+ createsHome: group.some(
72
+ (w) => w.home.kind === "collection" && (w.home.createsCollection || w.home.addsPath !== void 0)
73
+ )
74
+ })
75
+ );
76
+ }
77
+ return out;
78
+ }
79
+ function externalWriteWarning(line) {
80
+ const { verb, keys, home } = line;
81
+ const one = keys.length === 1;
82
+ const head = `${verb} ${keys.join(", ")} to ${pages(line.pages)}`;
83
+ const prefer = one ? "the schema prefers external metadata" : "their schemas prefer external metadata";
84
+ const them = one ? "it" : "them";
85
+ if (home.kind === "collection") {
86
+ if (!line.createsHome) {
87
+ return `${head} in collection ${home.collection}; ${prefer}, and no manifest owns ${them}. Run manni meta relocate to move ${them}.`;
88
+ }
89
+ return home.createsCollection || home.createsManifest ? `${head}; ${prefer}. Run manni meta relocate to give ${them} a manifest.` : `${head}; ${prefer}. Run manni meta relocate to add ${them} to collection ${home.collection}.`;
90
+ }
91
+ return home.reason === "no-config" ? `${head}; ${prefer}, and --no-config leaves ${them} no manifest.` : `${head} that ${line.pages === 1 ? "is" : "are"} in none of the ${String(home.collections)} collections; ${prefer}, and only a collection has a manifest.`;
92
+ }
93
+ function manifestKeyLine(text, entry, key, join) {
94
+ const norm = (e) => join === PATH_JOIN ? e.replace(/\\/g, "/").replace(/^\.\//, "").replace(/\/+/g, "/") : e;
95
+ const lc = new LineCounter();
96
+ const doc = parseDocument(text, { lineCounter: lc, uniqueKeys: false });
97
+ const root = doc.contents;
98
+ if (!isMap(root)) return void 0;
99
+ for (const pair of root.items) {
100
+ const spelled = isScalar(pair.key) ? String(pair.key.value) : String(pair.key);
101
+ if (norm(spelled) !== norm(entry) || !isMap(pair.value)) continue;
102
+ for (const kv of pair.value.items) {
103
+ const name = isScalar(kv.key) ? String(kv.key.value) : String(kv.key);
104
+ const range = isNode(kv.key) ? kv.key.range : void 0;
105
+ if (name === key && range) return lc.linePos(range[0]).line;
106
+ }
107
+ }
108
+ return void 0;
109
+ }
110
+
111
+ // src/meta/core/meta-provenance.ts
112
+ function isPlainRecord(value) {
113
+ return typeof value === "object" && value !== null && !Array.isArray(value);
114
+ }
115
+ function mergeMetaProvenance(held, model, key, proposed) {
116
+ if (held !== void 0 && !Array.isArray(held)) return void 0;
117
+ const list = held === void 0 ? [] : [...held];
118
+ const at = list.findIndex((e) => isPlainRecord(e) && e["generated-by"] === model);
119
+ const prior = list[at];
120
+ const kept = isPlainRecord(prior) ? prior : {};
121
+ const priorNames = kept[key];
122
+ const names = Array.isArray(priorNames) ? priorNames.filter((p) => typeof p === "string") : [];
123
+ const confidence = {};
124
+ if (isPlainRecord(kept.confidence)) {
125
+ for (const [k, v] of Object.entries(kept.confidence)) {
126
+ if (typeof v === "number") confidence[k] = v;
127
+ }
128
+ }
129
+ for (const p of proposed) {
130
+ if (!names.includes(p.name)) names.push(p.name);
131
+ confidence[p.name] = p.confidence;
132
+ }
133
+ const entry = {
134
+ ...kept,
135
+ "generated-by": model,
136
+ [key]: names,
137
+ confidence
138
+ };
139
+ if (at === -1) list.push(entry);
140
+ else list[at] = entry;
141
+ return { list, entry, names };
142
+ }
143
+ function metaProvenanceEntries(value) {
144
+ if (!Array.isArray(value)) return [];
145
+ const strings = (list) => Array.isArray(list) ? list.filter((s) => typeof s === "string") : [];
146
+ const out = [];
147
+ for (const item of value) {
148
+ if (!isPlainRecord(item)) continue;
149
+ const machine = item["generated-by"];
150
+ if (typeof machine !== "string" || machine === "") continue;
151
+ out.push({ "generated-by": machine, fields: strings(item.fields), evals: strings(item.evals) });
152
+ }
153
+ return out;
154
+ }
155
+
156
+ export {
157
+ offerExternalHomes,
158
+ externalWriteWarnings,
159
+ externalWriteWarning,
160
+ manifestKeyLine,
161
+ mergeMetaProvenance,
162
+ metaProvenanceEntries
163
+ };
164
+ //# sourceMappingURL=chunk-M42DZCOU.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/meta/core/location-writes.ts","../src/meta/core/meta-provenance.ts"],"sourcesContent":["/**\n * What a writer (`derive`, `fill`) does with a value its schema prefers in\n * external metadata when no manifest owns the key (proposal 0047).\n *\n * On a terminal, one question per collection (P1) offers the relocation that\n * gives the key a manifest, and a yes applies it before anything is written.\n * Off a terminal, declined, or under a dry run, the value is written to the\n * page as before, and one warning per collection (W1), or per set of pages\n * with no possible home (W2), says so. The planning and the prompt's wording\n * are `relocation.ts`'s; this module is the writers' shared use of them.\n */\nimport { LineCounter, isMap, isNode, isScalar, parseDocument } from \"yaml\";\nimport type { Confirm } from \"../../shared/prompt.js\";\nimport {\n applyRelocation,\n offerPrompt,\n planRelocation,\n relocationOffers,\n type ProposedHome,\n type RelocateResult,\n type RelocationContext,\n} from \"./relocation.js\";\nimport { PATH_JOIN } from \"./external-metadata.js\";\n\n/** One key a writer is about to set on one page, which prefers external metadata and has no manifest. */\nexport interface ExternalWrite {\n label: string;\n key: string;\n home: ProposedHome;\n}\n\nconst dedupe = <T>(xs: readonly T[]): T[] => [...new Set(xs)];\nconst pages = (n: number): string => `${String(n)} page${n === 1 ? \"\" : \"s\"}`;\n\n/**\n * Ask P1 once per collection the writes would be homed in, and apply each\n * relocation the user accepts. Returns the collections whose relocation was\n * applied; their keys now have a manifest, and the caller re-reads what the\n * relocation changed before writing. Writes with no possible home are never\n * offered.\n */\nexport async function offerExternalHomes(\n ctx: RelocationContext,\n writes: readonly ExternalWrite[],\n hooks: {\n confirm: Confirm;\n onNotice?: (message: string) => void;\n onRelocated?: (result: RelocateResult) => void;\n },\n): Promise<Set<string>> {\n const applied = new Set<string>();\n const groups = new Map<string, ExternalWrite[]>();\n for (const w of writes) {\n if (w.home.kind !== \"collection\") continue;\n const group = groups.get(w.home.collection) ?? [];\n group.push(w);\n groups.set(w.home.collection, group);\n }\n for (const [collection, group] of groups) {\n const require = new Map<string, string[]>();\n for (const w of group) {\n const keys = require.get(w.label) ?? [];\n if (!keys.includes(w.key)) keys.push(w.key);\n require.set(w.label, keys);\n }\n // Planned against the config as it stands now: an earlier collection's\n // accepted relocation may have created the config file.\n const plan = await planRelocation(ctx, {\n files: [...require.keys()],\n fields: dedupe(group.map((w) => w.key)),\n require,\n });\n const offers = relocationOffers(plan);\n if (offers.length === 0) continue;\n let yes = true;\n for (const offer of offers) {\n const { notice, question } = offerPrompt(offer, \"write\");\n hooks.onNotice?.(notice);\n if (!(await hooks.confirm(question))) {\n yes = false;\n break;\n }\n }\n if (!yes) continue;\n const result = await applyRelocation(ctx, plan);\n hooks.onRelocated?.(result);\n applied.add(collection);\n }\n return applied;\n}\n\n/**\n * The W1 and W2 lines for the writes that landed on a page, or would under a\n * dry run: one per collection, one for the pages in none of several\n * collections, and one under `--no-config`. Without the `manni: ` prefix,\n * which `warn()` adds.\n */\nexport function externalWriteWarnings(\n writes: readonly ExternalWrite[],\n dryRun: boolean,\n): string[] {\n const verb = dryRun ? \"would write\" : \"wrote\";\n const groups = new Map<string, ExternalWrite[]>();\n const groupOf = (w: ExternalWrite): string =>\n w.home.kind === \"collection\" ? `c:${w.home.collection}` : `n:${w.home.reason}`;\n for (const w of writes) {\n const id = groupOf(w);\n groups.set(id, [...(groups.get(id) ?? []), w]);\n }\n const out: string[] = [];\n for (const group of groups.values()) {\n const [first] = group;\n /* c8 ignore next -- a group holds at least one write. */\n if (first === undefined) continue;\n out.push(\n externalWriteWarning({\n verb,\n keys: dedupe(group.map((w) => w.key)),\n pages: new Set(group.map((w) => w.label)).size,\n home: first.home,\n createsHome: group.some(\n (w) => w.home.kind === \"collection\" && (w.home.createsCollection || w.home.addsPath !== undefined),\n ),\n }),\n );\n }\n return out;\n}\n\n/**\n * One W1 or W2 line, without the `manni: ` prefix: `keys` were written (or\n * would be) to `pages` pages whose home is `home`. `createsHome` says\n * relocate would create the collection, manifest or path that gives them a\n * manifest. Where it would only add a path to a collection whose manifest\n * already exists, the line says so rather than promising a manifest. One key\n * reads in the singular, several in the plural.\n */\nexport function externalWriteWarning(line: {\n verb: \"wrote\" | \"would write\";\n keys: readonly string[];\n pages: number;\n home: ProposedHome;\n createsHome: boolean;\n}): string {\n const { verb, keys, home } = line;\n const one = keys.length === 1;\n const head = `${verb} ${keys.join(\", \")} to ${pages(line.pages)}`;\n const prefer = one ? \"the schema prefers external metadata\" : \"their schemas prefer external metadata\";\n const them = one ? \"it\" : \"them\";\n if (home.kind === \"collection\") {\n if (!line.createsHome) {\n return `${head} in collection ${home.collection}; ${prefer}, and no manifest owns ${them}. Run manni meta relocate to move ${them}.`;\n }\n // Whether the collection has a manifest is the collection's, so any write in the group answers it.\n return home.createsCollection || home.createsManifest\n ? `${head}; ${prefer}. Run manni meta relocate to give ${them} a manifest.`\n : `${head}; ${prefer}. Run manni meta relocate to add ${them} to collection ${home.collection}.`;\n }\n return home.reason === \"no-config\"\n ? `${head}; ${prefer}, and --no-config leaves ${them} no manifest.`\n : `${head} that ${line.pages === 1 ? \"is\" : \"are\"} in none of the ${String(home.collections)} collections; ${prefer}, and only a collection has a manifest.`;\n}\n\n/**\n * The 1-based line of `key` in the entry for `entry`, in a manifest's text:\n * where a writer's report points after the write. A path entry matches\n * however the manifest spells it (`./docs/a.md` is `docs/a.md`).\n */\nexport function manifestKeyLine(\n text: string,\n entry: string,\n key: string,\n join: string,\n): number | undefined {\n const norm = (e: string): string =>\n join === PATH_JOIN ? e.replace(/\\\\/g, \"/\").replace(/^\\.\\//, \"\").replace(/\\/+/g, \"/\") : e;\n const lc = new LineCounter();\n const doc = parseDocument(text, { lineCounter: lc, uniqueKeys: false });\n const root = doc.contents;\n if (!isMap(root)) return undefined;\n for (const pair of root.items) {\n const spelled = isScalar(pair.key) ? String(pair.key.value) : String(pair.key);\n if (norm(spelled) !== norm(entry) || !isMap(pair.value)) continue;\n for (const kv of pair.value.items) {\n const name = isScalar(kv.key) ? String(kv.key.value) : String(kv.key);\n const range = isNode(kv.key) ? kv.key.range : undefined;\n if (name === key && range) return lc.linePos(range[0]).line;\n }\n }\n return undefined;\n}\n","/**\n * `meta-provenance` (proposal 0046): which model proposed which metadata, one\n * entry per model. `fields` names the values by JSON Pointer and `evals` names\n * the evals by id, and `confidence` is keyed by either, which cannot collide\n * because a pointer starts with `/` and an id cannot.\n *\n * Two tools write it: `manni meta fill` records the fields it writes, and\n * `manni docevals fill` records the evals it writes. They merge the same way,\n * so the merge lives here rather than in either command.\n */\n\n/** A name one run proposed, under `fields` or `evals`, and its confidence. */\nexport interface MetaProvenanceProposal {\n name: string;\n confidence: number;\n}\n\n/** Which list of an entry a run's proposals go under. */\nexport type MetaProvenanceKey = \"fields\" | \"evals\";\n\n/** An entry after a merge: whatever it held, with the run's names and confidences. */\nexport interface MergedMetaProvenanceEntry {\n \"generated-by\": string;\n confidence: Record<string, number>;\n [other: string]: unknown;\n}\n\nexport interface MergedMetaProvenance {\n /** The whole `meta-provenance` list, to write back. */\n list: unknown[];\n /** The entry the run merged into, as it now stands in `list`. */\n entry: MergedMetaProvenanceEntry;\n /** The entry's names under the merged key: its own first, then the run's new ones. */\n names: string[];\n}\n\nfunction isPlainRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\n/**\n * The page's `meta-provenance` list with one run's proposals merged in. The\n * first entry for `model` gains the new names under `key` after its own, and\n * their confidences; everything else in it, and every other entry, is kept.\n * Without one, a new entry is appended. `undefined` when the page holds\n * something other than a list, which there is no merging into.\n */\nexport function mergeMetaProvenance(\n held: unknown,\n model: string,\n key: MetaProvenanceKey,\n proposed: readonly MetaProvenanceProposal[],\n): MergedMetaProvenance | undefined {\n if (held !== undefined && !Array.isArray(held)) return undefined;\n const list: unknown[] = held === undefined ? [] : [...(held as unknown[])];\n const at = list.findIndex((e) => isPlainRecord(e) && e[\"generated-by\"] === model);\n const prior = list[at];\n const kept = isPlainRecord(prior) ? prior : {};\n const priorNames = kept[key];\n const names = Array.isArray(priorNames)\n ? (priorNames as unknown[]).filter((p): p is string => typeof p === \"string\")\n : [];\n const confidence: Record<string, number> = {};\n if (isPlainRecord(kept.confidence)) {\n for (const [k, v] of Object.entries(kept.confidence)) {\n if (typeof v === \"number\") confidence[k] = v;\n }\n }\n for (const p of proposed) {\n if (!names.includes(p.name)) names.push(p.name);\n confidence[p.name] = p.confidence;\n }\n const entry: MergedMetaProvenanceEntry = {\n ...kept,\n \"generated-by\": model,\n [key]: names,\n confidence,\n };\n if (at === -1) list.push(entry);\n else list[at] = entry;\n return { list, entry, names };\n}\n\n/** One `meta-provenance` entry as read: the model, and the names it proposed. */\nexport interface MetaProvenanceRecord {\n \"generated-by\": string;\n /** JSON Pointers, strings only; empty when the entry names none. */\n fields: string[];\n /** Eval ids, strings only; empty when the entry names none. */\n evals: string[];\n}\n\n/**\n * The readable entries of a `meta-provenance` value, in order. As with\n * `provenanceEntries`, an entry the schema would reject for its identity (not\n * a mapping, no model) is skipped rather than guessed at, and a malformed list\n * under `fields` or `evals` reads as naming nothing: the schema finding speaks\n * for it. A reader never throws on what a page holds.\n */\nexport function metaProvenanceEntries(value: unknown): MetaProvenanceRecord[] {\n if (!Array.isArray(value)) return [];\n const strings = (list: unknown): string[] =>\n Array.isArray(list)\n ? (list as unknown[]).filter((s): s is string => typeof s === \"string\")\n : [];\n const out: MetaProvenanceRecord[] = [];\n for (const item of value as unknown[]) {\n if (!isPlainRecord(item)) continue;\n const machine = item[\"generated-by\"];\n if (typeof machine !== \"string\" || machine === \"\") continue;\n out.push({ \"generated-by\": machine, fields: strings(item.fields), evals: strings(item.evals) });\n }\n return out;\n}\n"],"mappings":"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","names":["require"]}
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  TERM_FIELDS,
4
4
  displayPath
5
- } from "./chunk-YEUQ7OKT.js";
5
+ } from "./chunk-J6IDQGJL.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-ND2S5BXB.js.map
52
+ //# sourceMappingURL=chunk-MSRU4D4P.js.map
@@ -16,7 +16,7 @@ import {
16
16
  spliceEntryField,
17
17
  unifiedDiff,
18
18
  withClaimLines
19
- } from "./chunk-HRXDM6H6.js";
19
+ } from "./chunk-FQXWVS6J.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-QAKJNPY3.js";
57
+ } from "./chunk-PCS4VJBV.js";
58
58
  import {
59
59
  renderCheckGithub
60
- } from "./chunk-GEMXGXPR.js";
60
+ } from "./chunk-ADMEPUBT.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-YUZ2ECZY.js";
68
+ } from "./chunk-4D5IZSXM.js";
69
69
  import {
70
70
  blockMatches,
71
71
  claimEnd,
@@ -94,7 +94,7 @@ import {
94
94
  toValidationResult,
95
95
  unitAt,
96
96
  unitText
97
- } from "./chunk-OVOYKWCM.js";
97
+ } from "./chunk-WDWXAYVH.js";
98
98
  import {
99
99
  renderCheckJson,
100
100
  renderRemoveJson,
@@ -140,11 +140,11 @@ import {
140
140
  spellSource,
141
141
  statementForms,
142
142
  validateEntry
143
- } from "./chunk-VKWZCEWB.js";
143
+ } from "./chunk-BKVHX6FU.js";
144
144
  import {
145
145
  reencryptData,
146
146
  reencryptMetadata
147
- } from "./chunk-M6GH3FGJ.js";
147
+ } from "./chunk-LKP7QDFN.js";
148
148
  import {
149
149
  ENCRYPTION_KEY_ENV,
150
150
  MAX_RANGE_LINES,
@@ -170,7 +170,7 @@ import {
170
170
  toBodyLines,
171
171
  toFileLines,
172
172
  writeEncryptionKey
173
- } from "./chunk-QCCAHV6A.js";
173
+ } from "./chunk-GV56WGL2.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-3XGGF5JW.js";
184
+ } from "./chunk-VSEBFHAY.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-XKBEHKWO.js";
198
+ } from "./chunk-QLWC7MKD.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-BSTXARMY.js.map
934
+ //# sourceMappingURL=chunk-NSBXVPZL.js.map
@@ -5,7 +5,7 @@ import {
5
5
  listInTree,
6
6
  safeRead,
7
7
  segments
8
- } from "./chunk-XTAHZTES.js";
8
+ } from "./chunk-R4WXQIOZ.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-Q45PZX2D.js.map
174
+ //# sourceMappingURL=chunk-ODRPL3WB.js.map
@@ -7,16 +7,16 @@ import {
7
7
  loadGraderPlugins,
8
8
  parseNewerThan,
9
9
  urlManifestRefusal
10
- } from "./chunk-3XMG4CZY.js";
10
+ } from "./chunk-54F74XR3.js";
11
11
  import {
12
12
  discoverArtifacts
13
- } from "./chunk-Q45PZX2D.js";
13
+ } from "./chunk-ODRPL3WB.js";
14
+ import {
15
+ discoverConfig
16
+ } from "./chunk-FBMZJEB3.js";
14
17
  import {
15
18
  discoverTraces
16
19
  } from "./chunk-4TSWU2SU.js";
17
- import {
18
- discoverConfig
19
- } from "./chunk-KPXOJMQ6.js";
20
20
  import {
21
21
  assertProviderSelection,
22
22
  constructProvider,
@@ -28,7 +28,7 @@ import {
28
28
  } from "./chunk-UKZNLVJW.js";
29
29
  import {
30
30
  TURN_BUDGET_SKIP
31
- } from "./chunk-XG6PVB5S.js";
31
+ } from "./chunk-SSQZB5SQ.js";
32
32
  import {
33
33
  SEVERITIES
34
34
  } from "./chunk-77AINBYM.js";
@@ -36,7 +36,7 @@ import {
36
36
  externalWriteWarnings,
37
37
  mergeMetaProvenance,
38
38
  offerExternalHomes
39
- } from "./chunk-IN6DWNVE.js";
39
+ } from "./chunk-M42DZCOU.js";
40
40
  import {
41
41
  keyHome,
42
42
  marksValidator,
@@ -44,12 +44,12 @@ import {
44
44
  readManifestOrEmpty,
45
45
  readManifestValue,
46
46
  spliceManifestValue
47
- } from "./chunk-QCCAHV6A.js";
47
+ } from "./chunk-GV56WGL2.js";
48
48
  import {
49
49
  DocmetaError,
50
50
  extractFrontmatter,
51
51
  writeFileAtomic
52
- } from "./chunk-3XGGF5JW.js";
52
+ } from "./chunk-VSEBFHAY.js";
53
53
  import {
54
54
  palette
55
55
  } from "./chunk-RNVYGWIC.js";
@@ -1191,4 +1191,4 @@ export {
1191
1191
  runFill,
1192
1192
  renderFill
1193
1193
  };
1194
- //# sourceMappingURL=chunk-FSBIPCWE.js.map
1194
+ //# sourceMappingURL=chunk-OPXWPJDA.js.map