@hawkeyexl/manni 4.7.0 → 4.8.1

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 (172) hide show
  1. package/README.md +1 -1
  2. package/dist/{batch-U6S2JUUN.js → batch-QMHYWGUA.js} +12 -12
  3. package/dist/{build-4RN6WBCP.js → build-ZGA3O3P4.js} +9 -9
  4. package/dist/{calibrate-6VIZYR4L.js → calibrate-KBMFGKP3.js} +13 -13
  5. package/dist/{capture-DP3NXAZE.js → capture-C46UXFRK.js} +12 -12
  6. package/dist/{check-IWHUPAZM.js → check-CORYIW76.js} +28 -28
  7. package/dist/check-CORYIW76.js.map +1 -0
  8. package/dist/{check-STHXZIZO.js → check-LLQ6PJV3.js} +9 -9
  9. package/dist/{check-ERVNGKLC.js → check-UMI5ACCE.js} +10 -10
  10. package/dist/{chunk-IOL74S4J.js → chunk-3FG2UU3H.js} +4 -4
  11. package/dist/{chunk-K52CS4KT.js → chunk-4VQBHTGA.js} +5 -5
  12. package/dist/{chunk-MIBWI5H7.js → chunk-5LAKRYXU.js} +3 -3
  13. package/dist/{chunk-MSMB6XOS.js → chunk-6HMLYFEU.js} +2 -2
  14. package/dist/{chunk-4Z2MN5FR.js → chunk-6MNOMHFI.js} +10 -10
  15. package/dist/{chunk-UZKQSWHJ.js → chunk-6QBJHRFC.js} +2 -2
  16. package/dist/{chunk-B5CMM57M.js → chunk-6ZR24A4S.js} +2 -2
  17. package/dist/{chunk-WTEILBKC.js → chunk-77L5GNVO.js} +2 -2
  18. package/dist/{chunk-D6RO54QD.js → chunk-7LC4YJJ3.js} +4 -4
  19. package/dist/chunk-7LC4YJJ3.js.map +1 -0
  20. package/dist/{chunk-6URSCTTX.js → chunk-AO66Q66S.js} +2 -2
  21. package/dist/{chunk-NIFEEIGQ.js → chunk-BYVH727K.js} +2 -2
  22. package/dist/{chunk-PNX43DYW.js → chunk-C2JPBQCJ.js} +21 -3
  23. package/dist/{chunk-PNX43DYW.js.map → chunk-C2JPBQCJ.js.map} +1 -1
  24. package/dist/{chunk-GCC52YZD.js → chunk-F734HIHT.js} +3 -3
  25. package/dist/{chunk-CEVU3GFF.js → chunk-FEALEYSE.js} +4 -4
  26. package/dist/{chunk-QQNPVW3J.js → chunk-GQBVZS5G.js} +6 -6
  27. package/dist/{chunk-D2LBN44V.js → chunk-HNMXL2OE.js} +3 -3
  28. package/dist/chunk-HNMXL2OE.js.map +1 -0
  29. package/dist/{chunk-NZ6TNSCU.js → chunk-HWNSIEZK.js} +5 -5
  30. package/dist/{chunk-LDKIIZDW.js → chunk-K43X5VDR.js} +5 -5
  31. package/dist/{chunk-TPVOOTMN.js → chunk-KPXOJMQ6.js} +16 -13
  32. package/dist/chunk-KPXOJMQ6.js.map +1 -0
  33. package/dist/{chunk-ZPP75QWG.js → chunk-LAU6SVTJ.js} +8 -8
  34. package/dist/{chunk-ZNE25EAR.js → chunk-LF6FOF6U.js} +4 -4
  35. package/dist/{chunk-YSCZL4U5.js → chunk-N7J5C35C.js} +2 -2
  36. package/dist/{chunk-YSCZL4U5.js.map → chunk-N7J5C35C.js.map} +1 -1
  37. package/dist/{chunk-6VDBP5UV.js → chunk-NB4ILZMQ.js} +6 -6
  38. package/dist/{chunk-BWCWTHYS.js → chunk-NGTVREIH.js} +4 -4
  39. package/dist/chunk-NGTVREIH.js.map +1 -0
  40. package/dist/{chunk-AMEILOVV.js → chunk-NNFSIRVE.js} +4 -4
  41. package/dist/{chunk-LXJEAV2V.js → chunk-PO5W6JAP.js} +5 -5
  42. package/dist/{chunk-OOEMKOX6.js → chunk-POGYWOJ2.js} +3 -3
  43. package/dist/{chunk-LONRQBGV.js → chunk-Q3GFZJTY.js} +4 -4
  44. package/dist/{chunk-ZKAKA54B.js → chunk-RCS5YFY2.js} +2 -2
  45. package/dist/{chunk-C2TJG5KV.js → chunk-SV6UEQCU.js} +4 -4
  46. package/dist/{chunk-2ZWTSRE5.js → chunk-SXODK43S.js} +4 -4
  47. package/dist/{chunk-7XZ6INKO.js → chunk-UWY4B2PM.js} +4 -4
  48. package/dist/{chunk-PAOVVHQX.js → chunk-VD3EQSBI.js} +2 -2
  49. package/dist/{chunk-CI55ABCK.js → chunk-VQK4VHLF.js} +8 -8
  50. package/dist/chunk-VQK4VHLF.js.map +1 -0
  51. package/dist/{chunk-IZBBXKMJ.js → chunk-VSOYZ7QH.js} +3 -3
  52. package/dist/{chunk-CR3HZERW.js → chunk-WBETAXO2.js} +4 -4
  53. package/dist/{chunk-5UB47BEV.js → chunk-WT6HMEEF.js} +2 -2
  54. package/dist/{chunk-IIFADWWI.js → chunk-WUFP4V7B.js} +3 -3
  55. package/dist/{chunk-7EL5LLKD.js → chunk-WUXD6VBD.js} +2 -2
  56. package/dist/{chunk-ZKCNPKUO.js → chunk-XDS3KQCK.js} +3 -3
  57. package/dist/{chunk-5VWDIWOH.js → chunk-YVVMC4SZ.js} +3 -3
  58. package/dist/{chunk-ZEXGGGLW.js → chunk-Z27GYQOY.js} +7 -7
  59. package/dist/{chunk-QP5X66TO.js → chunk-ZIGIJBXG.js} +9 -9
  60. package/dist/{cli-37SRAYNE.js → cli-4B5RWL7P.js} +11 -11
  61. package/dist/{cli-IRHPPUFJ.js → cli-5AML7QR2.js} +10 -10
  62. package/dist/{cli-NM6FZ54R.js → cli-I4GBPLRM.js} +2 -2
  63. package/dist/{cli-YL3IDR52.js → cli-MNNOXWYU.js} +7 -7
  64. package/dist/{cli-XIODOEUG.js → cli-QR3ZQZA4.js} +20 -20
  65. package/dist/{cli-MTDGQIIV.js → cli-SBJY2NQH.js} +14 -14
  66. package/dist/{cli-ZQUJYQBA.js → cli-UB5W75GJ.js} +11 -11
  67. package/dist/{cli-KIID535Y.js → cli-WWDARAWS.js} +13 -13
  68. package/dist/{cli-HXWYUKGJ.js → cli-XIQKPNA7.js} +35 -34
  69. package/dist/cli-XIQKPNA7.js.map +1 -0
  70. package/dist/cli.js +11 -11
  71. package/dist/{config-O6UBGEDK.js → config-YWSNBFEE.js} +3 -3
  72. package/dist/docmeta.js +6 -6
  73. package/dist/{github-UCYLM3DR.js → github-TIZ3ZR3D.js} +9 -9
  74. package/dist/{github-VEJFO6JJ.js → github-WKOJRW7P.js} +11 -11
  75. package/dist/index.d.ts +16 -6
  76. package/dist/index.js +32 -32
  77. package/dist/{json-6F52FSXZ.js → json-4FUOZ3XX.js} +9 -9
  78. package/dist/{lint-X2GNINK6.js → lint-7VQFESHK.js} +9 -9
  79. package/dist/{list-DP3O3CWB.js → list-7U2MBDIM.js} +9 -9
  80. package/dist/{list-P77RZFZF.js → list-W6EUAOBV.js} +9 -9
  81. package/dist/{page-WQCMBNRD.js → page-WZLBKSCD.js} +8 -8
  82. package/dist/{prepare-52QOK7M4.js → prepare-FPEWAHJH.js} +17 -17
  83. package/dist/prepare-FPEWAHJH.js.map +1 -0
  84. package/dist/{pretty-H4DQREMW.js → pretty-7M4X4TCY.js} +9 -9
  85. package/dist/{pretty-5MMMNSWF.js → pretty-CUCMQU5R.js} +10 -10
  86. package/dist/{provider-AMGRDY6V.js → provider-527CO4DM.js} +2 -2
  87. package/dist/{release-CTYRHZL4.js → release-3D5PK6M7.js} +2 -2
  88. package/dist/release-3D5PK6M7.js.map +1 -0
  89. package/dist/{reporters-SU3VUKKX.js → reporters-DQVSDXV6.js} +4 -4
  90. package/dist/{reporters-WIHBEMPG.js → reporters-KYJE54JS.js} +8 -8
  91. package/dist/{run-L2DWJ26K.js → run-ABGXGOGQ.js} +9 -9
  92. package/dist/{conformance-ALLPNGEQ.js → runtime-7QE3DW6S.js} +2 -2
  93. package/dist/{term-PJIJQZNF.js → term-HTIG3YDC.js} +13 -13
  94. package/dist/{validate-XCDSPURG.js → validate-HWNU3MDY.js} +4 -4
  95. package/package.json +1 -1
  96. package/plugin/manni/.claude-plugin/plugin.json +1 -1
  97. package/dist/check-IWHUPAZM.js.map +0 -1
  98. package/dist/chunk-BWCWTHYS.js.map +0 -1
  99. package/dist/chunk-CI55ABCK.js.map +0 -1
  100. package/dist/chunk-D2LBN44V.js.map +0 -1
  101. package/dist/chunk-D6RO54QD.js.map +0 -1
  102. package/dist/chunk-TPVOOTMN.js.map +0 -1
  103. package/dist/cli-HXWYUKGJ.js.map +0 -1
  104. package/dist/prepare-52QOK7M4.js.map +0 -1
  105. package/dist/release-CTYRHZL4.js.map +0 -1
  106. /package/dist/{batch-U6S2JUUN.js.map → batch-QMHYWGUA.js.map} +0 -0
  107. /package/dist/{build-4RN6WBCP.js.map → build-ZGA3O3P4.js.map} +0 -0
  108. /package/dist/{calibrate-6VIZYR4L.js.map → calibrate-KBMFGKP3.js.map} +0 -0
  109. /package/dist/{capture-DP3NXAZE.js.map → capture-C46UXFRK.js.map} +0 -0
  110. /package/dist/{check-ERVNGKLC.js.map → check-LLQ6PJV3.js.map} +0 -0
  111. /package/dist/{check-STHXZIZO.js.map → check-UMI5ACCE.js.map} +0 -0
  112. /package/dist/{chunk-IOL74S4J.js.map → chunk-3FG2UU3H.js.map} +0 -0
  113. /package/dist/{chunk-K52CS4KT.js.map → chunk-4VQBHTGA.js.map} +0 -0
  114. /package/dist/{chunk-MIBWI5H7.js.map → chunk-5LAKRYXU.js.map} +0 -0
  115. /package/dist/{chunk-MSMB6XOS.js.map → chunk-6HMLYFEU.js.map} +0 -0
  116. /package/dist/{chunk-4Z2MN5FR.js.map → chunk-6MNOMHFI.js.map} +0 -0
  117. /package/dist/{chunk-UZKQSWHJ.js.map → chunk-6QBJHRFC.js.map} +0 -0
  118. /package/dist/{chunk-B5CMM57M.js.map → chunk-6ZR24A4S.js.map} +0 -0
  119. /package/dist/{chunk-WTEILBKC.js.map → chunk-77L5GNVO.js.map} +0 -0
  120. /package/dist/{chunk-6URSCTTX.js.map → chunk-AO66Q66S.js.map} +0 -0
  121. /package/dist/{chunk-NIFEEIGQ.js.map → chunk-BYVH727K.js.map} +0 -0
  122. /package/dist/{chunk-GCC52YZD.js.map → chunk-F734HIHT.js.map} +0 -0
  123. /package/dist/{chunk-CEVU3GFF.js.map → chunk-FEALEYSE.js.map} +0 -0
  124. /package/dist/{chunk-QQNPVW3J.js.map → chunk-GQBVZS5G.js.map} +0 -0
  125. /package/dist/{chunk-NZ6TNSCU.js.map → chunk-HWNSIEZK.js.map} +0 -0
  126. /package/dist/{chunk-LDKIIZDW.js.map → chunk-K43X5VDR.js.map} +0 -0
  127. /package/dist/{chunk-ZPP75QWG.js.map → chunk-LAU6SVTJ.js.map} +0 -0
  128. /package/dist/{chunk-ZNE25EAR.js.map → chunk-LF6FOF6U.js.map} +0 -0
  129. /package/dist/{chunk-6VDBP5UV.js.map → chunk-NB4ILZMQ.js.map} +0 -0
  130. /package/dist/{chunk-AMEILOVV.js.map → chunk-NNFSIRVE.js.map} +0 -0
  131. /package/dist/{chunk-LXJEAV2V.js.map → chunk-PO5W6JAP.js.map} +0 -0
  132. /package/dist/{chunk-OOEMKOX6.js.map → chunk-POGYWOJ2.js.map} +0 -0
  133. /package/dist/{chunk-LONRQBGV.js.map → chunk-Q3GFZJTY.js.map} +0 -0
  134. /package/dist/{chunk-ZKAKA54B.js.map → chunk-RCS5YFY2.js.map} +0 -0
  135. /package/dist/{chunk-C2TJG5KV.js.map → chunk-SV6UEQCU.js.map} +0 -0
  136. /package/dist/{chunk-2ZWTSRE5.js.map → chunk-SXODK43S.js.map} +0 -0
  137. /package/dist/{chunk-7XZ6INKO.js.map → chunk-UWY4B2PM.js.map} +0 -0
  138. /package/dist/{chunk-PAOVVHQX.js.map → chunk-VD3EQSBI.js.map} +0 -0
  139. /package/dist/{chunk-IZBBXKMJ.js.map → chunk-VSOYZ7QH.js.map} +0 -0
  140. /package/dist/{chunk-CR3HZERW.js.map → chunk-WBETAXO2.js.map} +0 -0
  141. /package/dist/{chunk-5UB47BEV.js.map → chunk-WT6HMEEF.js.map} +0 -0
  142. /package/dist/{chunk-IIFADWWI.js.map → chunk-WUFP4V7B.js.map} +0 -0
  143. /package/dist/{chunk-7EL5LLKD.js.map → chunk-WUXD6VBD.js.map} +0 -0
  144. /package/dist/{chunk-ZKCNPKUO.js.map → chunk-XDS3KQCK.js.map} +0 -0
  145. /package/dist/{chunk-5VWDIWOH.js.map → chunk-YVVMC4SZ.js.map} +0 -0
  146. /package/dist/{chunk-ZEXGGGLW.js.map → chunk-Z27GYQOY.js.map} +0 -0
  147. /package/dist/{chunk-QP5X66TO.js.map → chunk-ZIGIJBXG.js.map} +0 -0
  148. /package/dist/{cli-37SRAYNE.js.map → cli-4B5RWL7P.js.map} +0 -0
  149. /package/dist/{cli-IRHPPUFJ.js.map → cli-5AML7QR2.js.map} +0 -0
  150. /package/dist/{cli-NM6FZ54R.js.map → cli-I4GBPLRM.js.map} +0 -0
  151. /package/dist/{cli-YL3IDR52.js.map → cli-MNNOXWYU.js.map} +0 -0
  152. /package/dist/{cli-XIODOEUG.js.map → cli-QR3ZQZA4.js.map} +0 -0
  153. /package/dist/{cli-MTDGQIIV.js.map → cli-SBJY2NQH.js.map} +0 -0
  154. /package/dist/{cli-ZQUJYQBA.js.map → cli-UB5W75GJ.js.map} +0 -0
  155. /package/dist/{cli-KIID535Y.js.map → cli-WWDARAWS.js.map} +0 -0
  156. /package/dist/{config-O6UBGEDK.js.map → config-YWSNBFEE.js.map} +0 -0
  157. /package/dist/{conformance-ALLPNGEQ.js.map → github-TIZ3ZR3D.js.map} +0 -0
  158. /package/dist/{github-UCYLM3DR.js.map → github-WKOJRW7P.js.map} +0 -0
  159. /package/dist/{github-VEJFO6JJ.js.map → json-4FUOZ3XX.js.map} +0 -0
  160. /package/dist/{json-6F52FSXZ.js.map → lint-7VQFESHK.js.map} +0 -0
  161. /package/dist/{lint-X2GNINK6.js.map → list-7U2MBDIM.js.map} +0 -0
  162. /package/dist/{list-DP3O3CWB.js.map → list-W6EUAOBV.js.map} +0 -0
  163. /package/dist/{list-P77RZFZF.js.map → page-WZLBKSCD.js.map} +0 -0
  164. /package/dist/{page-WQCMBNRD.js.map → pretty-7M4X4TCY.js.map} +0 -0
  165. /package/dist/{pretty-5MMMNSWF.js.map → pretty-CUCMQU5R.js.map} +0 -0
  166. /package/dist/{pretty-H4DQREMW.js.map → provider-527CO4DM.js.map} +0 -0
  167. /package/dist/{provider-AMGRDY6V.js.map → reporters-DQVSDXV6.js.map} +0 -0
  168. /package/dist/{reporters-SU3VUKKX.js.map → reporters-KYJE54JS.js.map} +0 -0
  169. /package/dist/{reporters-WIHBEMPG.js.map → run-ABGXGOGQ.js.map} +0 -0
  170. /package/dist/{run-L2DWJ26K.js.map → runtime-7QE3DW6S.js.map} +0 -0
  171. /package/dist/{term-PJIJQZNF.js.map → term-HTIG3YDC.js.map} +0 -0
  172. /package/dist/{validate-XCDSPURG.js.map → validate-HWNU3MDY.js.map} +0 -0
@@ -5,12 +5,12 @@ import {
5
5
  loadTemplateFile,
6
6
  resolveLintRun,
7
7
  resolveStructureTool
8
- } from "./chunk-ZNE25EAR.js";
8
+ } from "./chunk-LF6FOF6U.js";
9
9
  import {
10
10
  parserByName,
11
11
  parserForExtension,
12
12
  unsupportedFormatMessage
13
- } from "./chunk-6URSCTTX.js";
13
+ } from "./chunk-AO66Q66S.js";
14
14
  import {
15
15
  BLOCK_KINDS,
16
16
  BLOCK_KIND_NODE
@@ -20,7 +20,7 @@ import {
20
20
  } from "./chunk-YGFIQ6Y5.js";
21
21
  import {
22
22
  writeTextAtomic
23
- } from "./chunk-5UB47BEV.js";
23
+ } from "./chunk-WT6HMEEF.js";
24
24
  import {
25
25
  ToolError,
26
26
  errorMessage
@@ -298,4 +298,4 @@ export {
298
298
  BUILT_IN_DEFAULTS,
299
299
  runTools
300
300
  };
301
- //# sourceMappingURL=chunk-IOL74S4J.js.map
301
+ //# sourceMappingURL=chunk-3FG2UU3H.js.map
@@ -19,7 +19,7 @@ import {
19
19
  sha256,
20
20
  splitBody,
21
21
  urlManifestRefusal
22
- } from "./chunk-LDKIIZDW.js";
22
+ } from "./chunk-K43X5VDR.js";
23
23
  import {
24
24
  turnBudgetSkipReason
25
25
  } from "./chunk-XG6PVB5S.js";
@@ -33,7 +33,7 @@ import {
33
33
  import {
34
34
  externalWriteWarnings,
35
35
  offerExternalHomes
36
- } from "./chunk-CR3HZERW.js";
36
+ } from "./chunk-WBETAXO2.js";
37
37
  import {
38
38
  LOCATION_KEYWORD,
39
39
  Validator,
@@ -41,10 +41,10 @@ import {
41
41
  readManifestOrEmpty,
42
42
  readManifestValue,
43
43
  spliceManifestValue
44
- } from "./chunk-5UB47BEV.js";
44
+ } from "./chunk-WT6HMEEF.js";
45
45
  import {
46
46
  writeFileAtomic
47
- } from "./chunk-MSMB6XOS.js";
47
+ } from "./chunk-6HMLYFEU.js";
48
48
  import {
49
49
  noticeOnce,
50
50
  warn
@@ -1041,4 +1041,4 @@ export {
1041
1041
  makeGenerateScripts,
1042
1042
  runRun
1043
1043
  };
1044
- //# sourceMappingURL=chunk-K52CS4KT.js.map
1044
+ //# sourceMappingURL=chunk-4VQBHTGA.js.map
@@ -2,10 +2,10 @@
2
2
  import {
3
3
  resultFor,
4
4
  splitBaselined
5
- } from "./chunk-GCC52YZD.js";
5
+ } from "./chunk-F734HIHT.js";
6
6
  import {
7
7
  errorSite
8
- } from "./chunk-2ZWTSRE5.js";
8
+ } from "./chunk-SXODK43S.js";
9
9
  import {
10
10
  escapeWorkflowCommandMessage,
11
11
  escapeWorkflowCommandProperty
@@ -51,4 +51,4 @@ export {
51
51
  findingMessage,
52
52
  renderCheckGithub
53
53
  };
54
- //# sourceMappingURL=chunk-MIBWI5H7.js.map
54
+ //# sourceMappingURL=chunk-5LAKRYXU.js.map
@@ -11,7 +11,7 @@ import {
11
11
  } from "./chunk-HX44GB4Z.js";
12
12
  import {
13
13
  package_default
14
- } from "./chunk-YSCZL4U5.js";
14
+ } from "./chunk-N7J5C35C.js";
15
15
  import {
16
16
  programName
17
17
  } from "./chunk-OWBRDNRZ.js";
@@ -10920,4 +10920,4 @@ export {
10920
10920
  resolveBaselineRequest,
10921
10921
  settleBaseline
10922
10922
  };
10923
- //# sourceMappingURL=chunk-MSMB6XOS.js.map
10923
+ //# sourceMappingURL=chunk-6HMLYFEU.js.map
@@ -16,7 +16,7 @@ import {
16
16
  spliceEntryField,
17
17
  unifiedDiff,
18
18
  withClaimLines
19
- } from "./chunk-ZEXGGGLW.js";
19
+ } from "./chunk-Z27GYQOY.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-NZ6TNSCU.js";
57
+ } from "./chunk-HWNSIEZK.js";
58
58
  import {
59
59
  renderCheckGithub
60
- } from "./chunk-MIBWI5H7.js";
60
+ } from "./chunk-5LAKRYXU.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-GCC52YZD.js";
68
+ } from "./chunk-F734HIHT.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-2ZWTSRE5.js";
97
+ } from "./chunk-SXODK43S.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-IZBBXKMJ.js";
143
+ } from "./chunk-VSOYZ7QH.js";
144
144
  import {
145
145
  reencryptData,
146
146
  reencryptMetadata
147
- } from "./chunk-ZKCNPKUO.js";
147
+ } from "./chunk-XDS3KQCK.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-5UB47BEV.js";
173
+ } from "./chunk-WT6HMEEF.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-MSMB6XOS.js";
184
+ } from "./chunk-6HMLYFEU.js";
185
185
  import {
186
186
  findConfigFile,
187
187
  findFamilyConfigFile,
@@ -931,4 +931,4 @@ export {
931
931
  runKeyRotate,
932
932
  runKeySet
933
933
  };
934
- //# sourceMappingURL=chunk-4Z2MN5FR.js.map
934
+ //# sourceMappingURL=chunk-6MNOMHFI.js.map
@@ -3,7 +3,7 @@ import {
3
3
  TERM_FIELDS,
4
4
  displayPath,
5
5
  plural
6
- } from "./chunk-IIFADWWI.js";
6
+ } from "./chunk-WUFP4V7B.js";
7
7
  import {
8
8
  palette
9
9
  } from "./chunk-RNVYGWIC.js";
@@ -227,4 +227,4 @@ export {
227
227
  renderValeWiring,
228
228
  renderFormatsPretty
229
229
  };
230
- //# sourceMappingURL=chunk-UZKQSWHJ.js.map
230
+ //# sourceMappingURL=chunk-6QBJHRFC.js.map
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  loadTerms
4
- } from "./chunk-IIFADWWI.js";
4
+ } from "./chunk-WUFP4V7B.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-B5CMM57M.js.map
17
+ //# sourceMappingURL=chunk-6ZR24A4S.js.map
@@ -5,7 +5,7 @@ import {
5
5
  listInTree,
6
6
  safeRead,
7
7
  segments
8
- } from "./chunk-OOEMKOX6.js";
8
+ } from "./chunk-POGYWOJ2.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-WTEILBKC.js.map
174
+ //# sourceMappingURL=chunk-77L5GNVO.js.map
@@ -10,7 +10,7 @@ import {
10
10
  listInTree,
11
11
  resolveArtifacts,
12
12
  safeRead
13
- } from "./chunk-OOEMKOX6.js";
13
+ } from "./chunk-POGYWOJ2.js";
14
14
  import {
15
15
  configDir
16
16
  } from "./chunk-4TSWU2SU.js";
@@ -19,7 +19,7 @@ import {
19
19
  } from "./chunk-CU57HT2E.js";
20
20
  import {
21
21
  extractFrontmatter
22
- } from "./chunk-MSMB6XOS.js";
22
+ } from "./chunk-6HMLYFEU.js";
23
23
 
24
24
  // src/tracevals/rules/turn.ts
25
25
  var INJECTED = /<(system-reminder|task-notification|ci-monitor-event|local-command-stdout|local-command-stderr|local-command-caveat)>[\s\S]*?<\/\1>/g;
@@ -413,7 +413,7 @@ async function addDesignated(c, opts) {
413
413
  if (c.has(abs)) continue;
414
414
  const content = await safeRead(abs);
415
415
  if (content === null) {
416
- c.warnings.push(`${c.display(abs)}: matched conformance.include but could not be read`);
416
+ c.warnings.push(`${c.display(abs)}: matched runtime.include but could not be read`);
417
417
  continue;
418
418
  }
419
419
  c.add(abs, content, "designated", "always");
@@ -671,4 +671,4 @@ export {
671
671
  resolveTurnSources,
672
672
  pathKey
673
673
  };
674
- //# sourceMappingURL=chunk-D6RO54QD.js.map
674
+ //# sourceMappingURL=chunk-7LC4YJJ3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/tracevals/rules/turn.ts","../src/tracevals/rules/sources.ts"],"sourcesContent":["/**\n * The turn a Stop or SubagentStop judges (proposal 0079). A turn starts at the\n * last prompt the user typed; tool results and hook feedback do not start one.\n * Under SubagentStop the turn is the subagent's whole run.\n *\n * Which user records are typed prompts is read from the record shape Claude\n * Code writes, not guessed from wording alone:\n *\n * - `isMeta: true` marks harness injections: a skill's \"Base directory\" body,\n * `<local-command-caveat>`, peer and scheduled messages, hook feedback.\n * - `isCompactSummary: true` is the \"session is being continued\" summary.\n * - `origin.kind` is `human` for a typed prompt and `task-notification` or\n * `peer` otherwise. Older records carry only `turnOrigin`, whose non-typed\n * values are `task_notification`, `scheduled` and `peer`.\n * - A record whose text is nothing but `<system-reminder>`,\n * `<task-notification>`, `<ci-monitor-event>` or `<local-command-*>` blocks\n * is an injection. A typed prompt Claude Code prefixed with a reminder keeps\n * the text after it, so it still counts.\n * - `Stop hook feedback:` and `[Request interrupted by user…]` are markers,\n * never prompts.\n *\n * A `<command-name>` record is a slash command someone typed, so it counts.\n */\nimport {\n emptyWindow,\n materialize,\n type TraceWindow,\n} from \"../graders/util.js\";\nimport type { Trace, TraceEvent } from \"../trace/types.js\";\n\nexport interface TurnSlice {\n window: TraceWindow;\n /** Ordinal in `trace.events` of the turn's first event. */\n from: number;\n /** Ordinal of its last event, inclusive. Less than `from` when there is no turn. */\n to: number;\n /** Typed prompts in the whole session, which `turn-count-above` reads. */\n sessionTurnCount: number;\n}\n\nconst INJECTED =\n /<(system-reminder|task-notification|ci-monitor-event|local-command-stdout|local-command-stderr|local-command-caveat)>[\\s\\S]*?<\\/\\1>/g;\nconst MARKER =\n /^(?:Stop hook feedback:|SubagentStop hook feedback:|\\[Request interrupted by user)/;\n/**\n * Origins of a prompt a person sent: typed in the CLI, or sent through the SDK.\n * Both record formats name it, as `origin.kind` or the older `turnOrigin`,\n * and both are read against this one set.\n */\nconst TYPED_TURN_ORIGINS = new Set([\"human\", \"sdk\"]);\nconst WORK = new Set<TraceEvent[\"kind\"]>([\"assistant\", \"tool_call\", \"tool_result\"]);\n\nexport function isTypedPrompt(event: TraceEvent): boolean {\n if (event.kind !== \"user\" || event.text === undefined) return false;\n const { raw } = event;\n if (raw.isMeta === true || raw.isCompactSummary === true) return false;\n const origin = raw.origin;\n if (\n typeof origin === \"object\" &&\n origin !== null &&\n \"kind\" in origin &&\n typeof origin.kind === \"string\"\n ) {\n if (!TYPED_TURN_ORIGINS.has(origin.kind)) return false;\n } else if (\n typeof raw.turnOrigin === \"string\" &&\n !TYPED_TURN_ORIGINS.has(raw.turnOrigin)\n ) {\n return false;\n }\n const rest = event.text.replace(INJECTED, \"\").trim();\n return rest !== \"\" && !MARKER.test(rest);\n}\n\n/** The last turn of a session: its last typed prompt to the end of the trace. */\nexport function lastTurn(trace: Trace): TurnSlice {\n const prompts = trace.events.filter((e) => e.sidechain !== true && isTypedPrompt(e));\n const sessionTurnCount = prompts.length;\n const to = trace.events.length - 1;\n const last = prompts.at(-1);\n if (last === undefined) {\n return {\n window: emptyWindow(\"turn\", \"last turn\", \"the trace holds no prompt the user typed\"),\n from: to + 1,\n to,\n sessionTurnCount,\n };\n }\n return slice(trace, last.index, [last], new Set([undefined]), sessionTurnCount, {\n label: \"last turn\",\n reason: \"nothing happened after the last prompt the user typed\",\n });\n}\n\n/**\n * A subagent's sidecar transcript parsed alone. Every record is a sidechain,\n * so the parser keeps no prompts; the turn is the whole run, and its prompts\n * are the task the subagent was given.\n */\nexport function subagentTurn(trace: Trace): TurnSlice {\n const prompts = trace.events.filter(isTypedPrompt);\n return slice(\n trace,\n 0,\n prompts,\n new Set(trace.events.map((e) => e.branchId)),\n prompts.length,\n { label: \"subagent run\", reason: \"the subagent recorded no work\" },\n );\n}\n\nfunction slice(\n trace: Trace,\n from: number,\n prompts: TraceEvent[],\n own: Set<string | undefined>,\n sessionTurnCount: number,\n words: { label: string; reason: string },\n): TurnSlice {\n const to = trace.events.length - 1;\n const worked = trace.events.some((e) => e.index > from && WORK.has(e.kind));\n if (!worked) {\n return {\n window: emptyWindow(\"turn\", words.label, words.reason),\n from,\n to,\n sessionTurnCount,\n };\n }\n const window = materialize(\n trace,\n \"turn\",\n words.label,\n [{ start: from, end: Number.POSITIVE_INFINITY }],\n undefined,\n own,\n );\n // Only typed prompts are prompts here, and `turnCount` is the session's,\n // because the one condition that reads it counts session turns.\n window.userMessages = prompts.map((p) => p.text ?? \"\");\n window.turnCount = sessionTurnCount;\n return { window, from, to, sessionTurnCount };\n}\n","/**\n * Which files govern the agent in a turn (proposal 0079, \"Rule sources and\n * their triggers\"). Resolution is deterministic, from the filesystem and the\n * trace; no model decides which files count.\n *\n * The list of formats is closed. Reading a file never makes it a source: a\n * README or a product docs page describes other systems, so only the known\n * formats, files named by `include`, and what a skill or an `@path` import\n * pulls in are ever returned. `exclude` removes a file from every row.\n *\n * To touch a file is to Read, Write or Edit it, anywhere in the session up to\n * the turn's end, which is Claude Code's own trigger for path-scoped rules.\n *\n * Six more formats say what the session was asked (proposal 0080): the typed\n * prompts, the approved plan, a touched Spec Kit feature, Kiro spec or live\n * OpenSpec change, and a touched file `runtime.plans` names. None is known\n * at session start, so only a turn resolves them, and none declares evals.\n *\n * Two are read from the transcript itself (proposal 0081): the system prompt\n * of the last prompt snapshot, and a user output style. Claude Code's own\n * prompt is reported and never blocks; a prompt the user wrote blocks.\n */\nimport { createHash } from \"node:crypto\";\nimport { homedir } from \"node:os\";\nimport { basename, dirname, isAbsolute, join, relative, resolve, sep } from \"node:path\";\nimport picomatch from \"picomatch\";\nimport { extractFrontmatter } from \"../../meta/extractors/frontmatter.js\";\nimport type { ExtractedMetadata } from \"../../meta/types.js\";\nimport { resolveArtifacts } from \"../artifacts/resolve.js\";\nimport { findGitRoot, listInTree, safeRead } from \"../artifacts/fs.js\";\nimport { extractEvals } from \"../evals/extract.js\";\nimport { windowOf } from \"../graders/util.js\";\nimport { makeRedactor } from \"../judge/redact.js\";\nimport { configDir } from \"../trace/discover.js\";\nimport type { Trace } from \"../trace/types.js\";\nimport { isTypedPrompt } from \"./turn.js\";\n\nexport type RuleFormat =\n | \"claude-md\"\n | \"claude-rule\"\n | \"agents-md\"\n | \"gemini-md\"\n | \"cursor-rule\"\n | \"kiro-steering\"\n | \"speckit-constitution\"\n | \"openspec-project\"\n | \"import\"\n | \"skill\"\n | \"slash-command\"\n | \"agent\"\n | \"designated\"\n | \"prompt\"\n | \"plan\"\n | \"speckit-spec\"\n | \"kiro-spec\"\n | \"openspec-change\"\n | \"plans\"\n | \"system-prompt\"\n | \"output-style\";\n\n/** An `ai` eval a source declares; its assertion is the rule (proposal 0079). */\nexport interface DeclaredRule {\n id: string;\n text: string;\n when?: Record<string, unknown>;\n}\n\nexport interface RuleSource {\n /** Absolute path on disk, or `\"\"` for the typed prompts, an inline plan and the system prompt. */\n path: string;\n /** Relative to the project root with forward slashes, or `~/…` under home. */\n displayPath: string;\n format: RuleFormat;\n /** Why the file is in scope, in words: `always`, `read`, `touched src/a.ts`. */\n trigger: string;\n content: string;\n /** sha256 of `content`, hex. */\n sha256: string;\n /** The skill a `skill` source belongs to. */\n skill?: string;\n /** Present when the file declares `ai` evals; they replace extraction. */\n declaredRules?: DeclaredRule[];\n /** False for Claude Code's default system prompt, whose rules are reported and never block. */\n blocks: boolean;\n}\n\nexport interface SourceOptions {\n /** The session's working directory, where the ancestor walk starts. */\n projectDir: string;\n /** Ceiling for the ancestor walk and base of `displayPath`; default the git root. */\n projectRoot?: string;\n /** `CLAUDE_CONFIG_DIR` finds `~/.claude`; `HOME` / `USERPROFILE` find `~/.gemini` and `~/.kiro`. */\n env?: Record<string, string | undefined>;\n /** `runtime.include`: globs, relative to the project root, in scope once read. */\n include?: string[];\n /** `runtime.exclude`: globs never treated as sources, in any row, and source names. */\n exclude?: string[];\n /** `judge.redact`: patterns scrubbed from what the transcript records of the system prompt. */\n redact?: string[];\n /** `runtime.plans`: globs, relative to the project root, in scope once touched. */\n plans?: string[];\n /** Set under SubagentStop: the subagent type whose definition governs the run. */\n agentType?: string;\n}\n\nexport interface ResolvedSources {\n sources: RuleSource[];\n warnings: string[];\n}\n\n/** The turn's ordinal bounds in `trace.events`, inclusive. `lastTurn` returns them. */\nexport interface TurnBounds {\n from: number;\n to: number;\n}\n\n/** Imports followed from a `claude-md` or `gemini-md` file, as Claude Code does. */\nconst MAX_IMPORT_HOPS = 4;\n\ntype Trigger =\n | { kind: \"always\" }\n | { kind: \"read\" }\n | { kind: \"globs\"; key: string; patterns: string[] };\n\ninterface Candidate {\n path: string;\n format: RuleFormat;\n trigger: Trigger;\n}\n\ninterface Touch {\n abs: string;\n rel: string | null;\n read: boolean;\n}\n\nclass Collector {\n readonly sources: RuleSource[] = [];\n readonly warnings: string[] = [];\n private readonly seen = new Set<string>();\n private readonly parsed = new Map<string, ExtractedMetadata | null>();\n private readonly excluded: (path: string) => boolean;\n /** Whether `exclude` lists, as it is, the name of a source with no file, such as `prompt`. */\n readonly excludedName: (name: string) => boolean;\n\n constructor(\n readonly cwd: string,\n readonly root: string,\n readonly home: string,\n exclude: string[],\n ) {\n const match = exclude.length > 0 ? picomatch(exclude, { dot: true }) : null;\n this.excluded = (path) => match !== null && match(this.display(path));\n // The whole name, never a glob: `**` names files, and keeps the prompt.\n this.excludedName = (name) => exclude.includes(name);\n }\n\n display(path: string): string {\n const inRoot = relPosix(this.root, path);\n if (inRoot !== null) return inRoot;\n const inHome = relPosix(this.home, path);\n if (inHome !== null) return `~/${inHome}`;\n return path.split(sep).join(\"/\");\n }\n\n has(path: string): boolean {\n return this.seen.has(key(path));\n }\n\n /** The file's front matter, or null when it has none or it does not parse. */\n front(path: string, content: string): ExtractedMetadata | null {\n const k = key(path);\n if (this.parsed.has(k)) return this.parsed.get(k) ?? null;\n let parsed: ExtractedMetadata | null = null;\n try {\n const fm = extractFrontmatter(content, \"markdown\");\n parsed = fm.present ? fm : null;\n } catch (err) {\n const loose = isCursorRule(path) ? cursorFront(content) : null;\n if (loose !== null) {\n this.parsed.set(k, loose);\n return loose;\n }\n const first = (err instanceof Error ? err.message : String(err)).split(\"\\n\")[0] ?? \"\";\n this.warnings.push(\n `${this.display(path)}: front matter does not parse (${first}), so it is read as having none`,\n );\n }\n this.parsed.set(k, parsed);\n return parsed;\n }\n\n /** Adds a source once. Returns it, or null when excluded or already listed. */\n add(\n path: string,\n content: string,\n format: RuleFormat,\n trigger: string,\n skill?: string,\n ): RuleSource | null {\n if (this.has(path) || this.excluded(path)) return null;\n this.seen.add(key(path));\n const source: RuleSource = {\n path,\n displayPath: this.display(path),\n format,\n trigger,\n content,\n sha256: createHash(\"sha256\").update(content).digest(\"hex\"),\n blocks: true,\n };\n if (skill !== undefined) source.skill = skill;\n const declared = this.declared(path, content);\n if (declared !== undefined) source.declaredRules = declared;\n this.sources.push(source);\n return source;\n }\n\n /**\n * Adds a source that says what the session was asked, or one the transcript\n * recorded. These never declare evals. With no file, its display path is its\n * format, and `exclude` matches that name.\n */\n addRequest(\n file: string | null,\n content: string,\n format: RuleFormat,\n trigger: string,\n blocks = true,\n ): void {\n // A named source goes by its name whether or not a file holds it, so\n // `exclude: [plan]` drops a plan file as it drops an inline plan.\n if (EXCLUDABLE_BY_NAME.has(format) && this.excludedName(format)) return;\n if (file !== null) {\n if (this.has(file) || this.excluded(file)) return;\n this.seen.add(key(file));\n }\n this.sources.push({\n path: file ?? \"\",\n displayPath: file === null ? format : this.display(file),\n format,\n trigger,\n content,\n sha256: createHash(\"sha256\").update(content).digest(\"hex\"),\n blocks,\n });\n }\n\n private declared(path: string, content: string): DeclaredRule[] | undefined {\n const fm = this.front(path, content);\n if (fm === null) return undefined;\n const extracted = extractEvals(\n { name: basename(path), type: \"project-rules\", path, content, origin: \"project\" },\n fm,\n );\n if (extracted.errors.length > 0) {\n this.warnings.push(\n `${this.display(path)}: metadata.evals does not validate (${extracted.errors[0]?.message ?? \"invalid\"}), so it declares no rules`,\n );\n return undefined;\n }\n const rules: DeclaredRule[] = [];\n for (const entry of extracted.evals) {\n if (entry.grader !== \"ai\" || entry.assertion === undefined) continue;\n const rule: DeclaredRule = { id: entry.id, text: entry.assertion };\n const when = entry.options?.when;\n if (isRecord(when)) rule.when = when;\n rules.push(rule);\n }\n return rules.length > 0 ? rules : undefined;\n }\n}\n\n/** Every source whose trigger is \"always\", without a trace (for `prepare`). */\nexport async function resolveAlwaysSources(opts: SourceOptions): Promise<ResolvedSources> {\n const c = await collector(opts);\n for (const candidate of await catalog(c, opts)) {\n if (candidate.trigger.kind === \"always\") await addWithImports(c, candidate, \"always\");\n }\n await addDesignated(c, opts);\n return { sources: c.sources, warnings: c.warnings };\n}\n\n/** Every source in scope for one turn of `trace`. */\nexport async function resolveTurnSources(\n trace: Trace,\n turn: TurnBounds,\n opts: SourceOptions,\n): Promise<ResolvedSources> {\n const c = await collector(opts);\n const touches: Touch[] = trace.fileAccesses\n .filter((a) => a.index <= turn.to)\n .map((a) => {\n const abs = resolve(c.cwd, a.path);\n return { abs, rel: relPosix(c.root, abs), read: a.op === \"read\" };\n });\n const wasRead = new Set(touches.filter((t) => t.read).map((t) => key(t.abs)));\n\n for (const candidate of await catalog(c, opts)) {\n const { trigger } = candidate;\n if (trigger.kind === \"always\") {\n await addWithImports(c, candidate, \"always\");\n } else if (trigger.kind === \"read\") {\n if (wasRead.has(key(candidate.path))) await addWithImports(c, candidate, \"read\");\n } else {\n const match = picomatch(trigger.patterns, { dot: true });\n const hit = touches.find((t) => t.rel !== null && match(t.rel));\n if (hit !== undefined && hit.rel !== null) {\n await addWithImports(c, candidate, `${trigger.key} matched ${hit.rel}`);\n }\n }\n }\n\n // A subdirectory's memory file applies once a file under it is touched.\n // Farther directories come first, so the nearest file reads last.\n const nested = new Map<string, string>();\n for (const touch of touches) {\n if (touch.rel === null) continue;\n for (const dir of dirsBelowCwd(c, dirname(touch.abs))) {\n if (!nested.has(dir)) nested.set(dir, touch.rel);\n }\n }\n const dirs = [...nested.keys()].sort((a, b) => a.length - b.length);\n for (const dir of dirs) {\n const touched = nested.get(dir) ?? \"\";\n for (const [name, format] of NESTED_FILES) {\n const path = join(dir, name);\n const content = await safeRead(path);\n if (content !== null) {\n await addWithImports(c, { path, format, trigger: { kind: \"always\" } }, `touched ${touched}`, content);\n }\n }\n }\n\n await addWindowed(c, trace, turn, touches, opts);\n\n await addDesignated(c, opts);\n\n addPrompts(c, trace, turn);\n await addPlan(c, trace, turn, opts);\n await addSpecs(c, touches, opts.plans ?? []);\n await addSystemPrompt(c, trace, turn, opts);\n return { sources: c.sources, warnings: c.warnings };\n}\n\n// ── What the transcript recorded of the prompt ───────────────────\n\n/** The sources `runtime.exclude` matches by name (proposals 0080 and 0081). */\nconst EXCLUDABLE_BY_NAME: ReadonlySet<RuleFormat> = new Set<RuleFormat>([\"prompt\", \"plan\", \"system-prompt\"]);\n\n/** Claude Code's own block in its default prompt; a replaced prompt has none. */\nconst BOUNDARY_MARKER = \"__SYSTEM_PROMPT_DYNAMIC_BOUNDARY__\";\n\ninterface Recorded {\n index: number;\n record: Record<string, unknown>;\n attachment: Record<string, unknown>;\n}\n\n/** The last attachment of `type` at or before the turn's end, with its record. */\nfunction lastAttachment(trace: Trace, turn: TurnBounds, type: string): Recorded | undefined {\n for (let i = trace.events.length - 1; i >= 0; i -= 1) {\n const event = trace.events[i];\n if (event === undefined || event.kind !== \"meta\" || event.index > turn.to) continue;\n const attachment = event.raw.attachment;\n if (event.raw.type === \"attachment\" && isRecord(attachment) && attachment.type === type) {\n return { index: event.index, record: event.raw, attachment };\n }\n }\n return undefined;\n}\n\n/**\n * The system prompt of the last `prompt_snapshot`, and the last output style.\n * A style a user file defines is its own source, holding the text the agent\n * saw; a built-in style's text joins the system prompt. The prompt is custom,\n * and blocks, when Claude Code's boundary marker is missing.\n */\nasync function addSystemPrompt(c: Collector, trace: Trace, turn: TurnBounds, opts: SourceOptions): Promise<void> {\n const scrub = makeRedactor(opts.redact ?? []);\n const style = lastAttachment(trace, turn, \"output_style_instructions\")?.attachment.style;\n const styleName = isRecord(style) && typeof style.name === \"string\" ? style.name : undefined;\n const stylePrompt = isRecord(style) && typeof style.prompt === \"string\" ? style.prompt : undefined;\n let builtIn: string | undefined;\n if (styleName !== undefined && stylePrompt !== undefined) {\n const file = await userStyleFile(c, opts, styleName);\n if (file === undefined) builtIn = stylePrompt;\n else c.addRequest(file, scrub(stylePrompt), \"output-style\", `style ${styleName}`);\n }\n\n const snapshot = lastAttachment(trace, turn, \"prompt_snapshot\");\n const recorded: unknown = snapshot?.attachment.systemPrompt;\n if (snapshot === undefined || !Array.isArray(recorded)) return;\n const blocks = recorded.filter((b): b is string => typeof b === \"string\");\n const custom = !blocks.includes(BOUNDARY_MARKER);\n const content = scrub([...blocks, ...(builtIn !== undefined ? [builtIn] : [])].join(\"\\n\\n\"));\n const { version } = snapshot.record;\n const by = typeof version === \"string\" ? `, Claude Code ${version}` : \"\";\n const trigger = `recorded at turn ${String(snapshot.index)}${by}${custom ? \", custom\" : \"\"}`;\n // A prompt the user replaced blocks; Claude Code's own default only reports.\n c.addRequest(null, content, \"system-prompt\", trigger, /* blocks= */ custom);\n}\n\n/**\n * The user file that defines output style `name`: under the project's\n * `.claude/output-styles/`, then the user's. Its front matter `name`, or\n * its base name, matches.\n */\nasync function userStyleFile(c: Collector, opts: SourceOptions, name: string): Promise<string | undefined> {\n // Where Claude Code reads styles: the project (cwd first, then the git root)\n // and the user. No ancestor walk, since Claude Code does none for styles.\n const dirs = [...new Set([c.cwd, c.root])].map((b) => join(b, \".claude\", \"output-styles\"));\n dirs.push(join(configDir(opts.env), \"output-styles\"));\n for (const dir of dirs) {\n for (const path of await listInTree(dir, (p) => p.endsWith(\".md\"), { maxDepth: 0 })) {\n const declared = (await frontOf(c, path))?.name;\n if ((typeof declared === \"string\" ? declared : basename(path, \".md\")) === name) return path;\n }\n }\n return undefined;\n}\n\n// ── What the session was asked ───────────────────────────────────\n\n/**\n * Every prompt typed up to the turn's end, as one numbered sequence. A\n * subagent's own run has only sidechain prompts, and its task is its request.\n */\nfunction addPrompts(c: Collector, trace: Trace, turn: TurnBounds): void {\n const typed = trace.events.filter((e) => e.index <= turn.to && isTypedPrompt(e));\n const main = typed.filter((e) => e.sidechain !== true);\n const prompts = main.length > 0 ? main : typed;\n if (prompts.length === 0) return;\n const content = prompts\n .map((p, i) => `${String(i + 1)}. ${(p.text ?? \"\").trim()}`)\n .join(\"\\n\\n\");\n c.addRequest(null, content, \"prompt\", `typed prompts 1-${String(prompts.length)}`);\n}\n\n/**\n * The plan of the last approved `ExitPlanMode` at or before the turn's end.\n * A call is approved when its result is not an error. The plan is the call's\n * `plan` input, or else the file the session last wrote under the user's\n * `plans/` directory before the call.\n */\nasync function addPlan(c: Collector, trace: Trace, turn: TurnBounds, opts: SourceOptions): Promise<void> {\n const approved = trace.toolCalls\n .filter((call) => call.name === \"ExitPlanMode\" && call.index <= turn.to)\n .filter((call) => isApproved(trace, call.index, turn.to))\n .at(-1);\n if (approved === undefined) return;\n const trigger = `approved at turn ${String(approved.index)}`;\n const plan = approved.input.plan;\n if (typeof plan === \"string\" && plan.trim() !== \"\") {\n c.addRequest(null, plan, \"plan\", trigger);\n return;\n }\n const plansDir = join(configDir(opts.env), \"plans\");\n const file = trace.fileAccesses\n .filter((a) => a.op !== \"read\" && a.index < approved.index)\n .map((a) => resolve(c.cwd, a.path))\n .filter((abs) => relPosix(plansDir, abs) !== null)\n .at(-1);\n if (file === undefined) return;\n const content = await safeRead(file);\n if (content !== null) c.addRequest(file, content, \"plan\", trigger);\n}\n\n/**\n * Whether the tool call at `index` has a result by `to` that is not an error.\n * A plan approved only after the turn ends is not yet a source; the next turn,\n * whose bounds include the result, picks it up.\n */\nfunction isApproved(trace: Trace, index: number, to: number): boolean {\n const id = trace.events.find((e) => e.index === index)?.raw.id;\n if (typeof id !== \"string\") return false;\n for (const event of trace.events) {\n if (event.kind !== \"tool_result\" || event.index <= index || event.index > to) continue;\n const message = event.raw.message;\n const blocks: unknown = isRecord(message) ? message.content : undefined;\n if (!Array.isArray(blocks)) continue;\n for (const block of blocks as unknown[]) {\n if (isRecord(block) && block.type === \"tool_result\" && block.tool_use_id === id) {\n return block.is_error !== true;\n }\n }\n }\n return false;\n}\n\n/** The files each spec format reads from a touched directory. */\nconst SPEC_FILES: Record<\"speckit-spec\" | \"kiro-spec\", string[]> = {\n \"speckit-spec\": [\"spec.md\", \"plan.md\", \"tasks.md\"],\n \"kiro-spec\": [\"requirements.md\", \"design.md\", \"tasks.md\"],\n};\n\n/** The spec directory a project-relative path lies under, and its format. */\nfunction specDirOf(rel: string): { dir: string; format: \"speckit-spec\" | \"kiro-spec\" | \"openspec-change\" } | null {\n const parts = rel.split(\"/\");\n const [first, second, third] = parts;\n if (first === \"specs\" && second !== undefined && parts.length > 2) {\n return { dir: `specs/${second}`, format: \"speckit-spec\" };\n }\n if (first === \".kiro\" && second === \"specs\" && third !== undefined && parts.length > 3) {\n return { dir: `.kiro/specs/${third}`, format: \"kiro-spec\" };\n }\n // An archived change is done, so it never counts.\n if (first === \"openspec\" && second === \"changes\" && third !== undefined && third !== \"archive\" && parts.length > 3) {\n return { dir: `openspec/changes/${third}`, format: \"openspec-change\" };\n }\n return null;\n}\n\n/** A touched spec brings in its directory's files; a touched `plans` file brings in itself. */\nasync function addSpecs(c: Collector, touches: Touch[], plans: string[]): Promise<void> {\n const isPlan = plans.length > 0 ? picomatch(plans, { dot: true }) : null;\n const done = new Set<string>();\n for (const touch of touches) {\n const { rel } = touch;\n if (rel === null) continue;\n const trigger = `touched ${rel}`;\n const spec = specDirOf(rel);\n if (spec !== null && !done.has(spec.dir)) {\n done.add(spec.dir);\n const dir = join(c.root, ...spec.dir.split(\"/\"));\n const files =\n spec.format === \"openspec-change\"\n ? await listInTree(dir, (p) => p.endsWith(\".md\"))\n : SPEC_FILES[spec.format].map((name) => join(dir, name));\n for (const file of files) {\n const content = await safeRead(file);\n if (content !== null) c.addRequest(file, content, spec.format, trigger);\n }\n }\n if (isPlan?.(rel) === true) {\n const content = await safeRead(touch.abs);\n if (content !== null) c.addRequest(touch.abs, content, \"plans\", trigger);\n }\n }\n}\n\n/**\n * Files named in `runtime.include`. A person chose each one to govern the\n * agent, so it applies to every turn, as a `CLAUDE.md` does. Waiting for the\n * agent to read one would let a turn that skipped it escape its rules.\n */\nasync function addDesignated(c: Collector, opts: SourceOptions): Promise<void> {\n const include = opts.include ?? [];\n if (include.length === 0) return;\n const match = picomatch(include, { dot: true });\n const found = await listInTree(c.root, (abs) => {\n const rel = relPosix(c.root, abs);\n return rel !== null && match(rel);\n });\n for (const abs of found) {\n if (c.has(abs)) continue;\n const content = await safeRead(abs);\n if (content === null) {\n c.warnings.push(`${c.display(abs)}: matched runtime.include but could not be read`);\n continue;\n }\n c.add(abs, content, \"designated\", \"always\");\n }\n}\n\n// ── Skills, slash commands and the agent ─────────────────────────\n\nasync function addWindowed(\n c: Collector,\n trace: Trace,\n turn: TurnBounds,\n touches: Touch[],\n opts: SourceOptions,\n): Promise<void> {\n // The existing resolver settles which file a skill, command or agent names.\n // Agents spawned in a main session govern their own runs, not this turn, so\n // only the agent this run is (under SubagentStop) is asked for.\n const { artifacts } = await resolveArtifacts(\n {\n ...trace,\n agentSpawns:\n opts.agentType === undefined ? [] : [{ subagentType: opts.agentType, index: 0 }],\n },\n { projectDir: c.cwd, projectRoot: c.root, ...(opts.env ? { env: opts.env } : {}) },\n );\n for (const artifact of artifacts) {\n if (artifact.type === \"agent\") {\n c.add(artifact.path, artifact.content, \"agent\", \"subagent run\");\n continue;\n }\n if (artifact.type !== \"skill\" && artifact.type !== \"slash-command\") continue;\n // In scope from the first invocation to the end of the session (proposal\n // 0080): a skill's procedure spans the turns after it, and the skills it\n // calls partway through do not end it. Batch `run` keeps ADR 01015's window.\n const window = windowOf(trace, artifact);\n if (!window.events.some((e) => e.index <= turn.to)) continue;\n if (artifact.type === \"slash-command\") {\n c.add(artifact.path, artifact.content, \"slash-command\", \"slash command window\");\n continue;\n }\n c.add(artifact.path, artifact.content, \"skill\", \"skill window\", artifact.name);\n const skillDir = dirname(artifact.path);\n for (const touch of touches) {\n if (!touch.read || relPosix(skillDir, touch.abs) === null || c.has(touch.abs)) continue;\n const content = await safeRead(touch.abs);\n if (content !== null) {\n c.add(touch.abs, content, \"skill\", `read under skill ${artifact.name}`, artifact.name);\n }\n }\n }\n}\n\n// ── The catalog of known formats ─────────────────────────────────\n\n/** Memory files read at cwd, each ancestor up to the root, and in their `.claude/`. */\nconst ANCESTOR_FILES: [string, RuleFormat][] = [\n [\"CLAUDE.md\", \"claude-md\"],\n [\"CLAUDE.local.md\", \"claude-md\"],\n [join(\".claude\", \"CLAUDE.md\"), \"claude-md\"],\n [\"AGENTS.md\", \"agents-md\"],\n [join(\".claude\", \"AGENTS.md\"), \"agents-md\"],\n [\"GEMINI.md\", \"gemini-md\"],\n];\n\n/** Memory files a touch under a subdirectory brings in. */\nconst NESTED_FILES: [string, RuleFormat][] = [\n [\"CLAUDE.md\", \"claude-md\"],\n [\"AGENTS.md\", \"agents-md\"],\n [\"GEMINI.md\", \"gemini-md\"],\n];\n\nasync function catalog(c: Collector, opts: SourceOptions): Promise<Candidate[]> {\n const out: Candidate[] = [];\n const userClaude = configDir(opts.env);\n const always: Trigger = { kind: \"always\" };\n\n out.push({ path: join(userClaude, \"CLAUDE.md\"), format: \"claude-md\", trigger: always });\n out.push({ path: join(c.home, \".gemini\", \"GEMINI.md\"), format: \"gemini-md\", trigger: always });\n for (const dir of ancestors(c.cwd, c.root).reverse()) {\n for (const [name, format] of ANCESTOR_FILES) {\n out.push({ path: join(dir, name), format, trigger: always });\n }\n }\n\n // Project-level directories live at the root; a cwd below it is checked too.\n const bases = c.cwd === c.root ? [c.root] : [c.root, c.cwd];\n\n for (const dir of [join(userClaude, \"rules\"), ...bases.map((b) => join(b, \".claude\", \"rules\"))]) {\n for (const path of await listInTree(dir, (p) => p.endsWith(\".md\"))) {\n out.push({ path, format: \"claude-rule\", trigger: await claudeRuleTrigger(c, path) });\n }\n }\n\n for (const base of bases) {\n const dir = join(base, \".cursor\", \"rules\");\n for (const path of await listInTree(dir, (p) => p.endsWith(\".mdc\") || p.endsWith(\".md\"))) {\n const trigger = await cursorTrigger(c, path);\n if (trigger !== null) out.push({ path, format: \"cursor-rule\", trigger });\n }\n }\n\n for (const dir of [join(c.home, \".kiro\", \"steering\"), ...bases.map((b) => join(b, \".kiro\", \"steering\"))]) {\n for (const path of await listInTree(dir, (p) => p.endsWith(\".md\"), { maxDepth: 0 })) {\n out.push({ path, format: \"kiro-steering\", trigger: await kiroTrigger(c, path) });\n }\n }\n\n for (const base of bases) {\n out.push({\n path: join(base, \".specify\", \"memory\", \"constitution.md\"),\n format: \"speckit-constitution\",\n trigger: always,\n });\n out.push({ path: join(base, \"openspec\", \"project.md\"), format: \"openspec-project\", trigger: { kind: \"read\" } });\n }\n return out;\n}\n\nasync function frontOf(c: Collector, path: string): Promise<Record<string, unknown> | null> {\n const content = await safeRead(path);\n if (content === null) return null;\n return c.front(path, content)?.data ?? null;\n}\n\nasync function claudeRuleTrigger(c: Collector, path: string): Promise<Trigger> {\n const patterns = globList((await frontOf(c, path))?.paths);\n return patterns.length > 0 ? { kind: \"globs\", key: \"paths\", patterns } : { kind: \"always\" };\n}\n\n/** Null for a `.md` file with no front matter, which Cursor does not read as a rule. */\nasync function cursorTrigger(c: Collector, path: string): Promise<Trigger | null> {\n const fm = await frontOf(c, path);\n if (fm === null && !path.endsWith(\".mdc\")) return null;\n if (fm?.alwaysApply === true) return { kind: \"always\" };\n const patterns = globList(fm?.globs);\n return patterns.length > 0 ? { kind: \"globs\", key: \"globs\", patterns } : { kind: \"read\" };\n}\n\nasync function kiroTrigger(c: Collector, path: string): Promise<Trigger> {\n const fm = await frontOf(c, path);\n const inclusion = fm?.inclusion;\n if (inclusion === undefined || inclusion === \"always\") return { kind: \"always\" };\n if (inclusion === \"fileMatch\") {\n const patterns = globList(fm?.fileMatchPattern);\n if (patterns.length > 0) return { kind: \"globs\", key: \"fileMatchPattern\", patterns };\n }\n return { kind: \"read\" };\n}\n\n// ── Imports ──────────────────────────────────────────────────────\n\n/** Adds a candidate and, for a memory file, what its `@path` lines import. */\nasync function addWithImports(\n c: Collector,\n candidate: Candidate,\n trigger: string,\n known?: string,\n): Promise<void> {\n if (c.has(candidate.path)) return;\n const content = known ?? (await safeRead(candidate.path));\n if (content === null) return;\n const added = c.add(candidate.path, content, candidate.format, trigger);\n if (added === null || (candidate.format !== \"claude-md\" && candidate.format !== \"gemini-md\")) {\n return;\n }\n let frontier = [added];\n for (let hop = 1; hop <= MAX_IMPORT_HOPS && frontier.length > 0; hop += 1) {\n const next: RuleSource[] = [];\n for (const importer of frontier) {\n for (const ref of importsOf(importer.content)) {\n const path = ref.startsWith(\"~/\")\n ? join(c.home, ref.slice(2))\n : resolve(dirname(importer.path), ref);\n if (c.has(path)) continue;\n const body = await safeRead(path);\n if (body === null) continue;\n const source = c.add(path, body, \"import\", `imported by ${importer.displayPath}`);\n if (source !== null) next.push(source);\n }\n }\n frontier = next;\n }\n}\n\n/** `@path` references outside code fences and code spans. */\nfunction importsOf(content: string): string[] {\n const refs: string[] = [];\n // The open fence's character and length: CommonMark closes a fence only\n // with the same character, at least as long, so a backtick line inside a\n // tilde fence is text.\n let fence: { char: string; length: number } | null = null;\n for (const line of content.split(/\\r?\\n/)) {\n const marker = /^\\s*(`{3,}|~{3,})/.exec(line)?.[1];\n if (marker !== undefined) {\n const char = marker.charAt(0);\n if (fence === null) {\n fence = { char, length: marker.length };\n continue;\n }\n if (char === fence.char && marker.length >= fence.length && line.trim() === marker) {\n fence = null;\n continue;\n }\n }\n if (fence !== null) continue;\n const prose = line.replace(/`[^`]*`/g, \"\");\n for (const m of prose.matchAll(/(?:^|\\s)@([^\\s`]+)/g)) {\n const ref = m[1]?.replace(/[.,;:!?)\\]]+$/, \"\");\n if (ref) refs.push(ref);\n }\n }\n return refs;\n}\n\n// ── Helpers ──────────────────────────────────────────────────────\n\nasync function collector(opts: SourceOptions): Promise<Collector> {\n const cwd = resolve(opts.projectDir);\n const root = resolve(opts.projectRoot ?? (await findGitRoot(cwd)) ?? cwd);\n return new Collector(cwd, root, homeDir(opts.env), opts.exclude ?? []);\n}\n\nfunction homeDir(env: Record<string, string | undefined> = process.env): string {\n const set = process.platform === \"win32\" ? (env.USERPROFILE ?? env.HOME) : env.HOME;\n return resolve(set ?? homedir());\n}\n\n/** cwd and each ancestor up to the root, nearest first. */\nfunction ancestors(cwd: string, root: string): string[] {\n const dirs: string[] = [];\n let current = cwd;\n for (let depth = 0; depth < 32; depth += 1) {\n dirs.push(current);\n if (current === root) break;\n const parent = dirname(current);\n if (parent === current) break;\n current = parent;\n }\n return dirs;\n}\n\n/** `dir` and its ancestors inside the root that are not cwd or above it. */\nfunction dirsBelowCwd(c: Collector, dir: string): string[] {\n const dirs: string[] = [];\n let current = dir;\n for (let depth = 0; depth < 64; depth += 1) {\n if (relPosix(c.root, current) === null || relPosix(current, c.cwd) !== null) break;\n dirs.push(current);\n const parent = dirname(current);\n if (parent === current) break;\n current = parent;\n }\n return dirs;\n}\n\n/** One glob, a comma-separated string, or a list. Commas inside braces stay. */\nfunction isCursorRule(path: string): boolean {\n return path.split(sep).join(\"/\").includes(\"/.cursor/rules/\");\n}\n\n/**\n * Cursor reads its front matter line by line, so `globs: **\\/*.ts` is a rule\n * there and invalid YAML (an alias) here. This reads the three keys Cursor\n * defines the way Cursor does, as `key: rest of line`.\n */\nfunction cursorFront(content: string): ExtractedMetadata | null {\n const block = /^---\\r?\\n([\\s\\S]*?)\\r?\\n---(?:\\r?\\n|$)/.exec(content)?.[1];\n if (block === undefined) return null;\n const data: Record<string, unknown> = {};\n for (const line of block.split(/\\r?\\n/)) {\n const m = /^(description|globs|alwaysApply):\\s*(.*)$/.exec(line);\n const name = m?.[1];\n const value = m?.[2]?.trim();\n if (name === undefined || value === undefined) continue;\n data[name] = name === \"alwaysApply\" ? value === \"true\" : value;\n }\n if (Object.keys(data).length === 0) return null;\n return { data, present: true, format: \"markdown\", lineFor: () => undefined };\n}\n\nfunction globList(value: unknown): string[] {\n if (Array.isArray(value)) {\n return value.filter((v): v is string => typeof v === \"string\" && v.trim() !== \"\").map((v) => v.trim());\n }\n if (typeof value !== \"string\") return [];\n const out: string[] = [];\n let depth = 0;\n let current = \"\";\n for (const ch of value) {\n if (ch === \"{\") depth += 1;\n if (ch === \"}\") depth = Math.max(0, depth - 1);\n if (ch === \",\" && depth === 0) {\n out.push(current);\n current = \"\";\n } else {\n current += ch;\n }\n }\n out.push(current);\n return out.map((p) => p.trim()).filter((p) => p !== \"\");\n}\n\n/** `path` relative to `base` with forward slashes, or null when outside it. */\nfunction relPosix(base: string, path: string): string | null {\n const rel = relative(base, path);\n if (rel === \"\") return \"\";\n if (rel.startsWith(\"..\") || isAbsolute(rel)) return null;\n return rel.split(sep).join(\"/\");\n}\n\nfunction key(path: string): string {\n const abs = resolve(path);\n return process.platform === \"win32\" ? abs.toLowerCase() : abs;\n}\n\n/** A path as sources compare it: absolute, and case-folded on Windows. */\nexport const pathKey = key;\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n"],"mappings":"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","names":[]}
@@ -6,7 +6,7 @@ import {
6
6
  extractFrontmatter,
7
7
  extractorForExtension,
8
8
  locateFrontmatter
9
- } from "./chunk-MSMB6XOS.js";
9
+ } from "./chunk-6HMLYFEU.js";
10
10
  import {
11
11
  errorMessage
12
12
  } from "./chunk-G3T47CFV.js";
@@ -3247,4 +3247,4 @@ export {
3247
3247
  unsupportedFormatMessage,
3248
3248
  listFormats
3249
3249
  };
3250
- //# sourceMappingURL=chunk-6URSCTTX.js.map
3250
+ //# sourceMappingURL=chunk-AO66Q66S.js.map
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  displayPath
4
- } from "./chunk-IIFADWWI.js";
4
+ } from "./chunk-WUFP4V7B.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-NIFEEIGQ.js.map
23
+ //# sourceMappingURL=chunk-BYVH727K.js.map
@@ -8,7 +8,7 @@ import {
8
8
  newAvailability,
9
9
  newReplay,
10
10
  remapAvailability
11
- } from "./chunk-OOEMKOX6.js";
11
+ } from "./chunk-POGYWOJ2.js";
12
12
  import {
13
13
  makeRedactor
14
14
  } from "./chunk-CU57HT2E.js";
@@ -718,6 +718,7 @@ var DEFAULTS = {
718
718
  };
719
719
  var MIN_TIMELINE_CHARS = 200;
720
720
  var HEADER_TRUNCATED = "\n[... header truncated ...]";
721
+ var TURN_HEADING = "## The last turn";
721
722
  var TIMELINE_SHELL = "\n\n## Timeline\n";
722
723
  function renderTrace(trace, options = {}, plan) {
723
724
  const { maxBlockChars, maxTotalChars, redact } = { ...DEFAULTS, ...options };
@@ -788,7 +789,12 @@ function renderTrace(trace, options = {}, plan) {
788
789
  }
789
790
  const lines = [];
790
791
  let branch;
792
+ let turnAt;
791
793
  for (const event of events) {
794
+ if (turnAt === void 0 && options.turnFrom !== void 0 && event.index >= options.turnFrom) {
795
+ turnAt = lines.length;
796
+ if (turnAt > 0) lines.push(TURN_HEADING);
797
+ }
792
798
  const tag = event.branchId ? `:${label(event.branchId)}` : event.sidechain ? ":sidechain" : "";
793
799
  let line;
794
800
  switch (event.kind) {
@@ -820,11 +826,23 @@ function renderTrace(trace, options = {}, plan) {
820
826
  lines.push(line);
821
827
  }
822
828
  if (branch !== void 0) lines.push(`[/subagent ${label(branch)}]`);
823
- let timeline = scrub(lines.join("\n"));
824
829
  const budget = Math.max(
825
830
  maxTotalChars - header.length - TIMELINE_SHELL.length,
826
831
  MIN_TIMELINE_CHARS
827
832
  );
833
+ if (turnAt !== void 0 && turnAt > 0) {
834
+ let size = lines.reduce((n, l) => n + l.length + 1, -1);
835
+ let cut = 0;
836
+ while (cut < turnAt && size > budget) {
837
+ size -= (lines[cut]?.length ?? 0) + 1;
838
+ cut += 1;
839
+ }
840
+ if (cut > 0) {
841
+ options.onTruncated?.();
842
+ lines.splice(0, cut, `[... ${String(cut)} earlier lines left out ...]`);
843
+ }
844
+ }
845
+ let timeline = scrub(lines.join("\n"));
828
846
  if (timeline.length > budget) {
829
847
  options.onTruncated?.();
830
848
  const marker = (omitted2) => `
@@ -846,4 +864,4 @@ export {
846
864
  parseTraceContent,
847
865
  renderTrace
848
866
  };
849
- //# sourceMappingURL=chunk-PNX43DYW.js.map
867
+ //# sourceMappingURL=chunk-C2JPBQCJ.js.map