token-goat 2.9.30 → 2.9.31

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 +24 -7
  2. package/SECURITY.md +10 -2
  3. package/THIRD_PARTY_NOTICES.md +1 -1
  4. package/dist/native/linux-arm64/tg-hook +0 -0
  5. package/dist/native/linux-x64/tg-hook +0 -0
  6. package/dist/native/win32-arm64/tg-hook.exe +0 -0
  7. package/dist/native/win32-x64/tg-hook.exe +0 -0
  8. package/dist/{token-goat-chunk-QSBRTGM2.mjs → token-goat-chunk-25TRAWET.mjs} +17 -7
  9. package/dist/token-goat-chunk-2KXO6V2B.mjs +203 -0
  10. package/dist/{token-goat-chunk-IVKIZWAB.mjs → token-goat-chunk-2M7E4PF7.mjs} +41 -12
  11. package/dist/{token-goat-chunk-SMVRN2HU.mjs → token-goat-chunk-2UPZGKKY.mjs} +2 -2
  12. package/dist/token-goat-chunk-2WLPWKHV.mjs +135 -0
  13. package/dist/token-goat-chunk-2XBMMDBD.mjs +126 -0
  14. package/dist/token-goat-chunk-32ZOY4N5.mjs +23 -0
  15. package/dist/token-goat-chunk-3EZRNKTK.mjs +188 -0
  16. package/dist/token-goat-chunk-4ADZHI7J.mjs +63 -0
  17. package/dist/token-goat-chunk-4GBVPH3D.mjs +242 -0
  18. package/dist/{token-goat-chunk-KWPNJBDH.mjs → token-goat-chunk-4GILLLWY.mjs} +7 -4
  19. package/dist/{token-goat-chunk-67TQJ76B.mjs → token-goat-chunk-4NAPX7BA.mjs} +36 -3
  20. package/dist/{token-goat-chunk-PU7V3FD6.mjs → token-goat-chunk-4SC7UJYV.mjs} +3354 -2553
  21. package/dist/token-goat-chunk-4SMRO4TO.mjs +366 -0
  22. package/dist/{token-goat-chunk-AFLYLHDH.mjs → token-goat-chunk-4ZBFWLXF.mjs} +283 -427
  23. package/dist/{token-goat-chunk-JDWCRD6M.mjs → token-goat-chunk-57BIAXJL.mjs} +73 -40
  24. package/dist/token-goat-chunk-5AC66HNP.mjs +115 -0
  25. package/dist/token-goat-chunk-5IMLKSOP.mjs +145 -0
  26. package/dist/token-goat-chunk-646E6U44.mjs +398 -0
  27. package/dist/token-goat-chunk-65N4RHP4.mjs +33 -0
  28. package/dist/{token-goat-chunk-JN4XMLSD.mjs → token-goat-chunk-6DG6HWP3.mjs} +8 -2
  29. package/dist/token-goat-chunk-6ENQSNRZ.mjs +573 -0
  30. package/dist/token-goat-chunk-6ZY4GNF2.mjs +91 -0
  31. package/dist/{token-goat-chunk-VPBBTSJR.mjs → token-goat-chunk-76FGDLRO.mjs} +262 -255
  32. package/dist/{token-goat-chunk-7IN2MKDS.mjs → token-goat-chunk-7EZTZOMC.mjs} +121 -289
  33. package/dist/{token-goat-chunk-OJBNYTJP.mjs → token-goat-chunk-7MAOA6X4.mjs} +640 -80
  34. package/dist/token-goat-chunk-7R2ZVVAX.mjs +218 -0
  35. package/dist/{token-goat-chunk-PD5VKH46.mjs → token-goat-chunk-AUNGYYQX.mjs} +2 -2
  36. package/dist/{token-goat-chunk-HG45AF2B.mjs → token-goat-chunk-AUQYRMMH.mjs} +794 -37
  37. package/dist/token-goat-chunk-B3PEKBYG.mjs +128 -0
  38. package/dist/{token-goat-chunk-A3CK6N5Z.mjs → token-goat-chunk-BA4HI6BW.mjs} +1309 -110
  39. package/dist/{token-goat-chunk-JB6QN6VF.mjs → token-goat-chunk-BFCWY73P.mjs} +59 -23
  40. package/dist/{token-goat-chunk-B45VMIIH.mjs → token-goat-chunk-BWGFUZZE.mjs} +7 -5
  41. package/dist/{token-goat-chunk-P4QMM4WK.mjs → token-goat-chunk-C75NA7PL.mjs} +50 -23
  42. package/dist/token-goat-chunk-CBIQ7WTD.mjs +87 -0
  43. package/dist/token-goat-chunk-CETM74KC.mjs +307 -0
  44. package/dist/{token-goat-chunk-H2PHHGM5.mjs → token-goat-chunk-CIMQ2BB3.mjs} +57 -12
  45. package/dist/{token-goat-chunk-N2NMER56.mjs → token-goat-chunk-CJLS3CDL.mjs} +46 -4
  46. package/dist/{token-goat-chunk-VES7EL7O.mjs → token-goat-chunk-CO3UYX6G.mjs} +1 -1
  47. package/dist/token-goat-chunk-COPNXRJM.mjs +154 -0
  48. package/dist/token-goat-chunk-CSJ5L3NL.mjs +479 -0
  49. package/dist/{token-goat-chunk-4LCCNRTG.mjs → token-goat-chunk-CVCEVUGK.mjs} +8 -6
  50. package/dist/{token-goat-chunk-B2RZZCSS.mjs → token-goat-chunk-CXHOFN7R.mjs} +37 -20
  51. package/dist/token-goat-chunk-D735C4QM.mjs +603 -0
  52. package/dist/{token-goat-chunk-APGZXSPS.mjs → token-goat-chunk-DGS2LVNA.mjs} +47 -30
  53. package/dist/{token-goat-chunk-54K3EUV3.mjs → token-goat-chunk-DOWRSMWO.mjs} +1 -1
  54. package/dist/token-goat-chunk-E45INMY3.mjs +71 -0
  55. package/dist/token-goat-chunk-EC5F37F4.mjs +244 -0
  56. package/dist/{token-goat-chunk-XTQAOTSO.mjs → token-goat-chunk-EDBDRVH5.mjs} +4 -1
  57. package/dist/{token-goat-chunk-5BCIJXMO.mjs → token-goat-chunk-EELTBKDM.mjs} +14 -10
  58. package/dist/{token-goat-chunk-W3QCJS6G.mjs → token-goat-chunk-F4HYL64R.mjs} +8 -6
  59. package/dist/token-goat-chunk-F6PAUIEK.mjs +624 -0
  60. package/dist/token-goat-chunk-FDSREWLX.mjs +692 -0
  61. package/dist/token-goat-chunk-GGGG7RWB.mjs +236 -0
  62. package/dist/{token-goat-chunk-C63JQV5K.mjs → token-goat-chunk-GL3ETKSC.mjs} +233 -15
  63. package/dist/token-goat-chunk-GVB2MUST.mjs +1298 -0
  64. package/dist/token-goat-chunk-GWFLAUMQ.mjs +307 -0
  65. package/dist/{token-goat-chunk-ZEJVMUQH.mjs → token-goat-chunk-HLPW63A7.mjs} +2 -2
  66. package/dist/{token-goat-chunk-GOLEOXZP.mjs → token-goat-chunk-HU4TORC5.mjs} +44 -26
  67. package/dist/{token-goat-chunk-Z57YODA2.mjs → token-goat-chunk-I7VKZZAW.mjs} +2 -2
  68. package/dist/{token-goat-chunk-NYKZLXMK.mjs → token-goat-chunk-IA6XSPE3.mjs} +6 -6
  69. package/dist/{token-goat-chunk-E3OQX2XT.mjs → token-goat-chunk-IAGXMHIK.mjs} +81 -42
  70. package/dist/{token-goat-chunk-HYBFA5X3.mjs → token-goat-chunk-IK2DRMFX.mjs} +24 -68
  71. package/dist/{token-goat-chunk-COBQGL5S.mjs → token-goat-chunk-INNPTRUX.mjs} +249 -299
  72. package/dist/{token-goat-chunk-7NADEDKJ.mjs → token-goat-chunk-JJ5BX4F4.mjs} +6 -1
  73. package/dist/{token-goat-chunk-PEPTHRFF.mjs → token-goat-chunk-JVFSHVFJ.mjs} +6 -6
  74. package/dist/token-goat-chunk-KGEFFSHD.mjs +50 -0
  75. package/dist/token-goat-chunk-KQBLRPBN.mjs +433 -0
  76. package/dist/{token-goat-chunk-Q5VTGRH7.mjs → token-goat-chunk-LCNQ2CNN.mjs} +55 -319
  77. package/dist/token-goat-chunk-M3LFJDPU.mjs +58 -0
  78. package/dist/token-goat-chunk-M52KPT3C.mjs +87 -0
  79. package/dist/token-goat-chunk-MBEG42H7.mjs +150 -0
  80. package/dist/{token-goat-chunk-EVC4TOLE.mjs → token-goat-chunk-METECDOH.mjs} +3 -12
  81. package/dist/{token-goat-chunk-T4FK7VOV.mjs → token-goat-chunk-MHX7XCC3.mjs} +2 -1
  82. package/dist/token-goat-chunk-N5LSOVSU.mjs +137 -0
  83. package/dist/{token-goat-chunk-LOBGHXPB.mjs → token-goat-chunk-N5MMR2IW.mjs} +1 -1
  84. package/dist/token-goat-chunk-N7B3JQ2C.mjs +160 -0
  85. package/dist/{token-goat-chunk-RHXKCZX3.mjs → token-goat-chunk-NISNMD7T.mjs} +2182 -2959
  86. package/dist/token-goat-chunk-NMD42SFQ.mjs +434 -0
  87. package/dist/token-goat-chunk-NOSS5VWY.mjs +174 -0
  88. package/dist/{token-goat-chunk-KQNZDCBD.mjs → token-goat-chunk-NSNSPPBG.mjs} +25 -3
  89. package/dist/token-goat-chunk-OBOFIHKN.mjs +38 -0
  90. package/dist/token-goat-chunk-OBRFJ5O5.mjs +76 -0
  91. package/dist/{token-goat-chunk-JTQQGXZH.mjs → token-goat-chunk-ODBT2USM.mjs} +124 -57
  92. package/dist/token-goat-chunk-OS5EM5PP.mjs +107 -0
  93. package/dist/token-goat-chunk-OUKDTVNU.mjs +1178 -0
  94. package/dist/token-goat-chunk-OXFMP75N.mjs +566 -0
  95. package/dist/{token-goat-chunk-DZX2YDPT.mjs → token-goat-chunk-OYIYKDDT.mjs} +2 -2
  96. package/dist/{token-goat-chunk-QCLDAQTS.mjs → token-goat-chunk-P6HQSWQ3.mjs} +50 -53
  97. package/dist/token-goat-chunk-P6VGNTQT.mjs +71 -0
  98. package/dist/{token-goat-chunk-7BXSNBY5.mjs → token-goat-chunk-PFWIMH2E.mjs} +23 -15
  99. package/dist/token-goat-chunk-PJZXIS3G.mjs +39 -0
  100. package/dist/token-goat-chunk-PUO5INXP.mjs +606 -0
  101. package/dist/{token-goat-chunk-GFBSN7BD.mjs → token-goat-chunk-PX5PQWTY.mjs} +22 -250
  102. package/dist/token-goat-chunk-Q5QDBC6O.mjs +111 -0
  103. package/dist/token-goat-chunk-QFNQXSDT.mjs +40 -0
  104. package/dist/{token-goat-chunk-FBNQNSJK.mjs → token-goat-chunk-QH7YVYOY.mjs} +2198 -2782
  105. package/dist/{token-goat-chunk-64FBPDTK.mjs → token-goat-chunk-QLMUHEPB.mjs} +12 -9
  106. package/dist/{token-goat-chunk-RZRTDST7.mjs → token-goat-chunk-QQOJIHL3.mjs} +37 -11
  107. package/dist/{token-goat-chunk-XKI4SEMX.mjs → token-goat-chunk-QQTWJY2O.mjs} +19 -0
  108. package/dist/{token-goat-chunk-U4N3BN2W.mjs → token-goat-chunk-QYHO5CPH.mjs} +3 -2
  109. package/dist/token-goat-chunk-RELAVWAD.mjs +27 -0
  110. package/dist/{token-goat-chunk-ETBHVDB6.mjs → token-goat-chunk-RSLPOBKQ.mjs} +22 -11
  111. package/dist/token-goat-chunk-SAMFDIS2.mjs +712 -0
  112. package/dist/token-goat-chunk-SDELXLDM.mjs +48 -0
  113. package/dist/{token-goat-chunk-4JJS54TR.mjs → token-goat-chunk-SOAFZNNZ.mjs} +161 -38
  114. package/dist/{token-goat-chunk-664RTTUV.mjs → token-goat-chunk-SRTHT7KV.mjs} +21 -16
  115. package/dist/{token-goat-chunk-4FVIAHSI.mjs → token-goat-chunk-T5P5ACNQ.mjs} +7 -6
  116. package/dist/token-goat-chunk-T5YGG4V3.mjs +45 -0
  117. package/dist/token-goat-chunk-TAUZ4OFS.mjs +110 -0
  118. package/dist/{token-goat-chunk-COTXZHTS.mjs → token-goat-chunk-TM6MC754.mjs} +4 -3
  119. package/dist/token-goat-chunk-TWUKBOMP.mjs +72 -0
  120. package/dist/{token-goat-chunk-3CHUNJ2O.mjs → token-goat-chunk-U2KSB4SG.mjs} +8 -5
  121. package/dist/{token-goat-chunk-3Z5S4KGM.mjs → token-goat-chunk-U4WHMG6Y.mjs} +29 -49
  122. package/dist/{token-goat-chunk-PY533T7F.mjs → token-goat-chunk-UGJHGR5A.mjs} +21 -15
  123. package/dist/{token-goat-chunk-CYCEYAEO.mjs → token-goat-chunk-UOUDVA5U.mjs} +1 -1
  124. package/dist/{token-goat-chunk-JDHE26RP.mjs → token-goat-chunk-URRJ33GR.mjs} +16 -5
  125. package/dist/{token-goat-chunk-56EIMS3E.mjs → token-goat-chunk-UZOROKIS.mjs} +23 -17
  126. package/dist/{token-goat-chunk-CZ3LUXYZ.mjs → token-goat-chunk-VIHGGGEI.mjs} +427 -308
  127. package/dist/token-goat-chunk-VTJLAA7P.mjs +21 -0
  128. package/dist/token-goat-chunk-VWDXLT4F.mjs +678 -0
  129. package/dist/{token-goat-chunk-YARZFCZS.mjs → token-goat-chunk-VWZA2H4P.mjs} +62 -53
  130. package/dist/{token-goat-chunk-SQSSNQPE.mjs → token-goat-chunk-VXEXMJDL.mjs} +3979 -4745
  131. package/dist/token-goat-chunk-WBA5SKT4.mjs +547 -0
  132. package/dist/{token-goat-chunk-SJHWVNDQ.mjs → token-goat-chunk-WDH44VAU.mjs} +7 -4
  133. package/dist/token-goat-chunk-X2SUP3EI.mjs +107 -0
  134. package/dist/token-goat-chunk-X3BELZSJ.mjs +125 -0
  135. package/dist/{token-goat-chunk-FZ3NEW5O.mjs → token-goat-chunk-XLRBNZCC.mjs} +13 -8
  136. package/dist/{token-goat-chunk-Z44YO3QZ.mjs → token-goat-chunk-XRKUX6CM.mjs} +1 -1
  137. package/dist/token-goat-chunk-XX6O25RN.mjs +82 -0
  138. package/dist/token-goat-chunk-XZSUHBVS.mjs +65 -0
  139. package/dist/{token-goat-chunk-WY3L4DVT.mjs → token-goat-chunk-Y2ZTQOCL.mjs} +13 -8
  140. package/dist/{token-goat-chunk-UQ5UK2T7.mjs → token-goat-chunk-YB4VMGK2.mjs} +1 -1
  141. package/dist/token-goat-chunk-YBIIY3HR.mjs +51 -0
  142. package/dist/{token-goat-chunk-ZQSJMO2R.mjs → token-goat-chunk-YHVDKQBR.mjs} +105 -105
  143. package/dist/{token-goat-chunk-H2K3QP6H.mjs → token-goat-chunk-YJB5XLWI.mjs} +8 -6
  144. package/dist/{token-goat-chunk-ZCDTCVIS.mjs → token-goat-chunk-YKB6AQG3.mjs} +5 -2
  145. package/dist/token-goat-chunk-YMTG2YA5.mjs +35 -0
  146. package/dist/token-goat-chunk-YPBZYQRV.mjs +40 -0
  147. package/dist/{token-goat-chunk-HOJLCGDP.mjs → token-goat-chunk-YY6AVUFL.mjs} +2033 -2251
  148. package/dist/token-goat-chunk-Z7N5OMMP.mjs +98 -0
  149. package/dist/token-goat-chunk-ZNMNUPAZ.mjs +938 -0
  150. package/dist/token-goat-hook-client.cjs +1 -1
  151. package/dist/token-goat-hook-client.mjs +3 -3
  152. package/dist/token-goat-hook.mjs +67 -38
  153. package/dist/token-goat.core.mjs +4 -4
  154. package/docs/C4_RUNTIME_ARCHITECTURE.md +1 -1
  155. package/docs/cli.md +40 -21
  156. package/docs/install.md +19 -9
  157. package/docs/security.md +5 -3
  158. package/package.json +2 -1
  159. package/dist/token-goat-chunk-5KDMCMF2.mjs +0 -362
  160. package/dist/token-goat-chunk-6QMAS7AB.mjs +0 -42
  161. package/dist/token-goat-chunk-7F2UBPD3.mjs +0 -397
  162. package/dist/token-goat-chunk-ARDNEC2U.mjs +0 -248
  163. package/dist/token-goat-chunk-ATCPY7EQ.mjs +0 -134
  164. package/dist/token-goat-chunk-EFHMMIGP.mjs +0 -68
  165. package/dist/token-goat-chunk-IVALLT3S.mjs +0 -48
  166. package/dist/token-goat-chunk-JDU3EXSU.mjs +0 -65
  167. package/dist/token-goat-chunk-MKPF4CL5.mjs +0 -37
  168. package/dist/token-goat-chunk-RC35RBUL.mjs +0 -312
  169. package/dist/token-goat-chunk-USILZ3T3.mjs +0 -53
  170. package/dist/token-goat-chunk-VL3YIFHZ.mjs +0 -2975
  171. package/dist/token-goat-chunk-XU4P6Z24.mjs +0 -133
  172. package/dist/token-goat-chunk-Y776AENC.mjs +0 -1597
@@ -18,29 +18,23 @@ import {
18
18
  runSkeleton,
19
19
  runSymbol,
20
20
  statThroughHandle
21
- } from "./token-goat-chunk-CZ3LUXYZ.mjs";
22
- import "./token-goat-chunk-ZCDTCVIS.mjs";
21
+ } from "./token-goat-chunk-VIHGGGEI.mjs";
22
+ import "./token-goat-chunk-YKB6AQG3.mjs";
23
+ import "./token-goat-chunk-COPNXRJM.mjs";
23
24
  import {
24
25
  ABSENT_PIN,
25
26
  ConfinementIdentityError,
26
27
  expandSpecPath,
27
28
  fileIdentity,
28
- findSpecSeparator,
29
- parseColonLineSpec,
30
- parseLineRange,
31
29
  pinKey,
32
30
  resolveProjectConfinement,
33
31
  runGrep,
34
32
  runRead,
33
+ specFilePart,
35
34
  withPinnedReads
36
- } from "./token-goat-chunk-PU7V3FD6.mjs";
37
- import "./token-goat-chunk-XKI4SEMX.mjs";
38
- import "./token-goat-chunk-SMVRN2HU.mjs";
39
- import "./token-goat-chunk-4JJS54TR.mjs";
40
- import "./token-goat-chunk-RC35RBUL.mjs";
41
- import "./token-goat-chunk-5RG5SBL6.mjs";
42
- import "./token-goat-chunk-54K3EUV3.mjs";
43
- import "./token-goat-chunk-YARZFCZS.mjs";
35
+ } from "./token-goat-chunk-4SC7UJYV.mjs";
36
+ import "./token-goat-chunk-QQTWJY2O.mjs";
37
+ import "./token-goat-chunk-EC5F37F4.mjs";
44
38
  import {
45
39
  buildProjectMap,
46
40
  formatProjectMap,
@@ -48,62 +42,95 @@ import {
48
42
  getProjectIndexCounts,
49
43
  isIndexEmptyForProject,
50
44
  mapLookupBytesSaved
51
- } from "./token-goat-chunk-FBNQNSJK.mjs";
45
+ } from "./token-goat-chunk-ZNMNUPAZ.mjs";
46
+ import "./token-goat-chunk-32ZOY4N5.mjs";
47
+ import "./token-goat-chunk-SOAFZNNZ.mjs";
48
+ import "./token-goat-chunk-M52KPT3C.mjs";
49
+ import "./token-goat-chunk-CJLS3CDL.mjs";
50
+ import "./token-goat-chunk-2UPZGKKY.mjs";
51
+ import "./token-goat-chunk-5RG5SBL6.mjs";
52
+ import "./token-goat-chunk-DOWRSMWO.mjs";
53
+ import "./token-goat-chunk-VWZA2H4P.mjs";
54
+ import "./token-goat-chunk-N5LSOVSU.mjs";
55
+ import "./token-goat-chunk-OBOFIHKN.mjs";
56
+ import "./token-goat-chunk-QH7YVYOY.mjs";
57
+ import "./token-goat-chunk-NOSS5VWY.mjs";
58
+ import "./token-goat-chunk-NMD42SFQ.mjs";
59
+ import "./token-goat-chunk-SAMFDIS2.mjs";
60
+ import "./token-goat-chunk-4SMRO4TO.mjs";
61
+ import "./token-goat-chunk-WBA5SKT4.mjs";
52
62
  import "./token-goat-chunk-MNWKPRAL.mjs";
53
- import "./token-goat-chunk-67TQJ76B.mjs";
54
63
  import {
55
64
  getDirtyPathsFor
56
- } from "./token-goat-chunk-H2PHHGM5.mjs";
57
- import "./token-goat-chunk-P4QMM4WK.mjs";
58
- import {
59
- isWorkerRunning
60
- } from "./token-goat-chunk-5KDMCMF2.mjs";
61
- import "./token-goat-chunk-ATCPY7EQ.mjs";
62
- import "./token-goat-chunk-VPBBTSJR.mjs";
63
- import "./token-goat-chunk-Y776AENC.mjs";
64
- import "./token-goat-chunk-SJHWVNDQ.mjs";
65
- import "./token-goat-chunk-AFLYLHDH.mjs";
65
+ } from "./token-goat-chunk-CIMQ2BB3.mjs";
66
+ import "./token-goat-chunk-WDH44VAU.mjs";
66
67
  import {
67
68
  claudeConfigDir
68
69
  } from "./token-goat-chunk-BPGCUMR7.mjs";
69
- import "./token-goat-chunk-C63JQV5K.mjs";
70
- import "./token-goat-chunk-JB6QN6VF.mjs";
70
+ import "./token-goat-chunk-KQBLRPBN.mjs";
71
+ import "./token-goat-chunk-4ZBFWLXF.mjs";
72
+ import "./token-goat-chunk-C75NA7PL.mjs";
73
+ import {
74
+ displaySafeFailureText
75
+ } from "./token-goat-chunk-CBIQ7WTD.mjs";
76
+ import "./token-goat-chunk-P6VGNTQT.mjs";
77
+ import "./token-goat-chunk-76FGDLRO.mjs";
78
+ import "./token-goat-chunk-GL3ETKSC.mjs";
79
+ import "./token-goat-chunk-OXFMP75N.mjs";
71
80
  import {
72
81
  embeddingsDepsAvailable
73
- } from "./token-goat-chunk-RHXKCZX3.mjs";
82
+ } from "./token-goat-chunk-NISNMD7T.mjs";
74
83
  import "./token-goat-chunk-EVMZJ27Z.mjs";
75
- import {
76
- pathSuffixClause
77
- } from "./token-goat-chunk-HYBFA5X3.mjs";
84
+ import "./token-goat-chunk-IK2DRMFX.mjs";
78
85
  import "./token-goat-chunk-5Y6ZYL6U.mjs";
79
- import "./token-goat-chunk-ARDNEC2U.mjs";
86
+ import "./token-goat-chunk-4NAPX7BA.mjs";
80
87
  import {
81
88
  recordStat,
82
89
  savedTokensFromBytes
83
- } from "./token-goat-chunk-3Z5S4KGM.mjs";
90
+ } from "./token-goat-chunk-U4WHMG6Y.mjs";
84
91
  import {
85
- getDb
86
- } from "./token-goat-chunk-VL3YIFHZ.mjs";
92
+ getDb,
93
+ pathSuffixClause
94
+ } from "./token-goat-chunk-GVB2MUST.mjs";
87
95
  import "./token-goat-chunk-XB5KKOCG.mjs";
88
- import "./token-goat-chunk-QSBRTGM2.mjs";
89
- import "./token-goat-chunk-N2NMER56.mjs";
96
+ import "./token-goat-chunk-OUKDTVNU.mjs";
90
97
  import "./token-goat-chunk-3BTK54F3.mjs";
91
- import "./token-goat-chunk-4FVIAHSI.mjs";
98
+ import "./token-goat-chunk-4GILLLWY.mjs";
99
+ import "./token-goat-chunk-BFCWY73P.mjs";
100
+ import {
101
+ forClient,
102
+ mcpFriendlyText
103
+ } from "./token-goat-chunk-KGEFFSHD.mjs";
104
+ import "./token-goat-chunk-XX6O25RN.mjs";
105
+ import "./token-goat-chunk-HAVAOB3S.mjs";
106
+ import {
107
+ isWorkerRunning
108
+ } from "./token-goat-chunk-F6PAUIEK.mjs";
109
+ import "./token-goat-chunk-65N4RHP4.mjs";
110
+ import "./token-goat-chunk-X2SUP3EI.mjs";
111
+ import "./token-goat-chunk-25TRAWET.mjs";
112
+ import "./token-goat-chunk-T5P5ACNQ.mjs";
113
+ import {
114
+ loadConfig
115
+ } from "./token-goat-chunk-7EZTZOMC.mjs";
116
+ import "./token-goat-chunk-QYHO5CPH.mjs";
92
117
  import {
93
- loadConfig,
94
118
  resolveProjectRoot
95
- } from "./token-goat-chunk-7IN2MKDS.mjs";
96
- import "./token-goat-chunk-U4N3BN2W.mjs";
119
+ } from "./token-goat-chunk-4GBVPH3D.mjs";
97
120
  import "./token-goat-chunk-YZAAZU2S.mjs";
98
121
  import {
99
122
  envStrList
100
123
  } from "./token-goat-chunk-IVE6U7KV.mjs";
101
- import "./token-goat-chunk-XTQAOTSO.mjs";
124
+ import "./token-goat-chunk-EDBDRVH5.mjs";
102
125
  import "./token-goat-chunk-AH6QILZM.mjs";
103
126
  import "./token-goat-chunk-Y4AFKTHK.mjs";
104
127
  import {
105
128
  extractErrorMessage
106
- } from "./token-goat-chunk-GOLEOXZP.mjs";
129
+ } from "./token-goat-chunk-HU4TORC5.mjs";
130
+ import {
131
+ echoedValue,
132
+ stripUnsafeSuggestions
133
+ } from "./token-goat-chunk-GGGG7RWB.mjs";
107
134
  import {
108
135
  foldCaseForContainment
109
136
  } from "./token-goat-chunk-AM5V6GSX.mjs";
@@ -116,9 +143,7 @@ import {
116
143
  VERSION,
117
144
  dataDir,
118
145
  globalDbPath
119
- } from "./token-goat-chunk-VES7EL7O.mjs";
120
- import "./token-goat-chunk-KWPNJBDH.mjs";
121
- import "./token-goat-chunk-HAVAOB3S.mjs";
146
+ } from "./token-goat-chunk-CO3UYX6G.mjs";
122
147
  import {
123
148
  init_define_import_meta_env
124
149
  } from "./token-goat-chunk-A37V4PBF.mjs";
@@ -128,32 +153,15 @@ init_define_import_meta_env();
128
153
  import * as fs from "fs";
129
154
  import * as os from "os";
130
155
  import * as path from "path";
131
- var TOKEN_GOAT_RETRY_RE = /token-goat (\w[\w-]*) "([^"]+)"/g;
132
156
  var MCP_MAX_LIMIT = 1e3;
133
157
  var MCP_MAX_CONTEXT_LINES = 50;
134
158
  var MCP_MAX_OUTPUT_LINES = 1e4;
135
159
  var MCP_MAX_MIN_LINES = 1e5;
136
- var RETRY_PARAM_BY_COMMAND = {
137
- read: "spec",
138
- section: "spec",
139
- symbol: "name",
140
- skeleton: "file",
141
- outline: "file"
142
- };
143
- function mcpFriendlyText(text) {
144
- let out = text.replace(TOKEN_GOAT_RETRY_RE, (_match, cmd, arg) => {
145
- const param = RETRY_PARAM_BY_COMMAND[cmd] ?? "parameter";
146
- return `the "${cmd}" tool again with a more specific ${param} (e.g. "${arg}")`;
147
- });
148
- out = out.replace(/--json\b/g, "the json parameter");
149
- out = out.replace(/--limit\b/g, "the limit parameter");
150
- out = out.replace(/--top\b/g, "the top parameter");
151
- out = out.replace(/--grep PATTERN, --section HEADING, or --tail N/g, "a narrower query");
152
- return out;
153
- }
160
+ var DEFAULT_MCP_TOOLS = ["symbol", "read", "section", "outline", "semantic", "refs", "retrieve_text"];
154
161
  function toCallToolResult(result) {
162
+ const text = result.code === 0 ? result.text : mcpFriendlyText(stripUnsafeSuggestions(displaySafeFailureText(result.text)));
155
163
  return {
156
- content: [{ type: "text", text: mcpFriendlyText(result.text) }],
164
+ content: [{ type: "text", text }],
157
165
  isError: result.code !== 0
158
166
  };
159
167
  }
@@ -170,16 +178,16 @@ function toRawCallToolResult(result) {
170
178
  }
171
179
  function captureOutput(fn) {
172
180
  const chunks = [];
173
- const record = (chunk, encodingOrCb, maybeCb) => {
174
- chunks.push(typeof chunk === "string" ? chunk : Buffer.from(chunk).toString("utf-8"));
181
+ const recorder = (word) => (chunk, encodingOrCb, maybeCb) => {
182
+ chunks.push(word(typeof chunk === "string" ? chunk : Buffer.from(chunk).toString("utf-8")));
175
183
  const callback = typeof encodingOrCb === "function" ? encodingOrCb : typeof maybeCb === "function" ? maybeCb : void 0;
176
184
  if (typeof callback === "function") callback();
177
185
  return true;
178
186
  };
179
187
  const origStdoutWrite = process.stdout.write.bind(process.stdout);
180
188
  const origStderrWrite = process.stderr.write.bind(process.stderr);
181
- process.stdout.write = record;
182
- process.stderr.write = record;
189
+ process.stdout.write = recorder((text) => text);
190
+ process.stderr.write = recorder(forClient);
183
191
  try {
184
192
  const code = fn();
185
193
  return { code, text: chunks.join("") };
@@ -324,7 +332,7 @@ function assertRootAllowed(resolvedRoot) {
324
332
  if (allowedRoots.some((allowed) => checkWithinProjectRoot(resolvedRoot, allowed).inside)) return;
325
333
  if (getStandardAuxiliaryRoots(resolvedRoot).some((aux) => checkWithinProjectRoot(resolvedRoot, aux).inside)) return;
326
334
  throw new RootNotAllowedError(
327
- `refused: "${resolvedRoot}" is not inside any root listed in mcp.allowed_roots. A caller-supplied projectRoot is untrusted input, so this deployment pins which roots may be named; add the root to mcp.allowed_roots (or TOKEN_GOAT_MCP_ALLOWED_ROOTS) to permit it.`
335
+ `refused: ${echoedValue(resolvedRoot)} is not inside any root listed in mcp.allowed_roots. A caller-supplied projectRoot is untrusted input, so this deployment pins which roots may be named; add the root to mcp.allowed_roots (or TOKEN_GOAT_MCP_ALLOWED_ROOTS) to permit it.`
328
336
  );
329
337
  }
330
338
  var NO_CHECK_PINS = [];
@@ -369,14 +377,6 @@ function checkWithinProjectRoot(target, resolvedRoot) {
369
377
  if (!under(realRaw)) return { inside: false, reason: "outside", pins: NO_CHECK_PINS };
370
378
  return { inside: true, reason: "inside", pins: [...pinsFor(abs, realNative, identity), ...pinsFor(absRaw, realRaw, identity)] };
371
379
  }
372
- function specFilePart(spec) {
373
- const range = parseLineRange(spec);
374
- if (range !== null) return range.file;
375
- const region = parseColonLineSpec(spec);
376
- if (region !== null) return region.file;
377
- const colonIdx = findSpecSeparator(spec);
378
- return colonIdx === -1 ? spec : spec.slice(0, colonIdx);
379
- }
380
380
  function specFileCandidates(spec) {
381
381
  const file = specFilePart(spec);
382
382
  const out = [file];
@@ -386,15 +386,15 @@ function specFileCandidates(spec) {
386
386
  var NO_PINS = /* @__PURE__ */ new Map();
387
387
  function refusalText(file, resolvedRoot, reason, projectRootWasOmitted = false) {
388
388
  const escapeHatch = "Set mcp.confine_reads_to_project_root = false (or TOKEN_GOAT_MCP_CONFINE_READS=0) to allow cross-root reads.";
389
- const omittedNote = projectRootWasOmitted ? ` Note: projectRoot was omitted and defaulted to server process cwd "${resolvedRoot}". Pass projectRoot: "<workspace-path>" if your target is in another directory.` : "";
389
+ const omittedNote = projectRootWasOmitted ? ` Note: projectRoot was omitted and defaulted to server process cwd ${echoedValue(resolvedRoot)}. Pass projectRoot: "<workspace-path>" if your target is in another directory.` : "";
390
390
  if (reason === "unresolvable-root") {
391
- return `refused: the project root "${resolvedRoot}" could not be resolved, so no path can be confirmed to sit inside it. This is a broken workspace root -- an unmounted share, a deleted directory, or a permission change on a parent -- not a request to read outside the project.` + omittedNote;
391
+ return `refused: the project root ${echoedValue(resolvedRoot)} could not be resolved, so no path can be confirmed to sit inside it. This is a broken workspace root -- an unmounted share, a deleted directory, or a permission change on a parent -- not a request to read outside the project.` + omittedNote;
392
392
  }
393
393
  if (reason === "unresolvable-target") {
394
- return `refused: "${file}" could not be resolved to a real location, so it cannot be confirmed to sit inside the project root. A symlink loop, a permission error on a parent directory, or a path past the operating system's length limit all produce this. The check fails closed rather than falling back to comparing the text of the path.` + omittedNote;
394
+ return `refused: ${echoedValue(file)} could not be resolved to a real location, so it cannot be confirmed to sit inside the project root. A symlink loop, a permission error on a parent directory, or a path past the operating system's length limit all produce this. The check fails closed rather than falling back to comparing the text of the path.` + omittedNote;
395
395
  }
396
396
  const rootScope = loadConfig().mcp.allowed_roots.length === 0 ? "Each call is confined to the projectRoot it names, and that root comes from the caller: set mcp.allowed_roots (or TOKEN_GOAT_MCP_ALLOWED_ROOTS) to pin which roots may be named at all." : "Each call is confined to the projectRoot it names, which must itself sit inside mcp.allowed_roots.";
397
- return `refused: "${file}" is outside the project root "${resolvedRoot}". ${rootScope} ${escapeHatch}${omittedNote}`;
397
+ return `refused: ${echoedValue(file)} is outside the project root ${echoedValue(resolvedRoot)}. ${rootScope} ${escapeHatch}${omittedNote}`;
398
398
  }
399
399
  function confineTargets(targets, resolvedRoot, splitCommas = true, projectRootWasOmitted = false) {
400
400
  if (!loadConfig(resolvedRoot).mcp.confine_reads_to_project_root) return { ok: true, targets, pins: NO_PINS };
@@ -452,7 +452,7 @@ function noteOmittedProjectRoot(result, root, projectRootWasOmitted) {
452
452
  if (!projectRootWasOmitted) return result;
453
453
  if (!isIndexEmptyForProject(globalDbPath(), root)) return result;
454
454
  const note = `
455
- (Note: projectRoot was omitted and defaulted to server cwd "${root}", which has no files indexed. Pass projectRoot: "<workspace-path>" to target your workspace.)`;
455
+ (Note: projectRoot was omitted and defaulted to server cwd ${echoedValue(root)}, which has no files indexed. Pass projectRoot: "<workspace-path>" to target your workspace.)`;
456
456
  const contents = result.content;
457
457
  if (!Array.isArray(contents)) return result;
458
458
  for (const item of contents) {
@@ -466,29 +466,27 @@ function noteOmittedProjectRoot(result, root, projectRootWasOmitted) {
466
466
  }
467
467
  function mcpToolAllowlist() {
468
468
  const names = envStrList(ENV_KEYS.MCP_TOOLS, [], ",");
469
- return names.length === 0 ? null : new Set(names);
469
+ return new Set(names.length === 0 ? DEFAULT_MCP_TOOLS : names);
470
470
  }
471
471
  async function createMcpServer() {
472
- const [{ McpServer }, { z }] = await Promise.all([import("./token-goat-chunk-JN4XMLSD.mjs"), import("./token-goat-chunk-CHLHM42P.mjs")]);
472
+ const [{ McpServer }, { z }] = await Promise.all([import("./token-goat-chunk-6DG6HWP3.mjs"), import("./token-goat-chunk-CHLHM42P.mjs")]);
473
473
  const server = new McpServer({ name: "token-goat", version: VERSION });
474
474
  const allowlist = mcpToolAllowlist();
475
- if (allowlist !== null) {
476
- const matched = /* @__PURE__ */ new Set();
477
- const registerAll = server.registerTool.bind(server);
478
- server.registerTool = ((name, definition, handler) => {
479
- if (!allowlist.has(name)) return;
480
- matched.add(name);
481
- registerAll(name, definition, handler);
482
- });
483
- setTimeout(() => {
484
- const unmatched = [...allowlist].filter((n) => !matched.has(n));
485
- if (unmatched.length > 0) {
486
- process.stderr.write(`token-goat: ${ENV_KEYS.MCP_TOOLS} names no such tool: ${unmatched.join(", ")}
475
+ const matched = /* @__PURE__ */ new Set();
476
+ const registerAll = server.registerTool.bind(server);
477
+ server.registerTool = ((name, definition, handler) => {
478
+ if (!allowlist.has(name)) return;
479
+ matched.add(name);
480
+ registerAll(name, definition, handler);
481
+ });
482
+ setTimeout(() => {
483
+ const unmatched = [...allowlist].filter((n) => !matched.has(n));
484
+ if (unmatched.length > 0) {
485
+ process.stderr.write(`token-goat: ${ENV_KEYS.MCP_TOOLS} names no such tool: ${unmatched.join(", ")}
487
486
  `);
488
- }
489
- }, 0).unref();
490
- }
491
- const projectRootField = z.string().optional().describe("absolute workspace root; defaults to the server's cwd, which may not be the workspace, so pass it when unsure");
487
+ }
488
+ }, 0).unref();
489
+ const projectRootField = z.string().optional().describe("absolute workspace root; defaults to the server's cwd, which may not be your workspace");
492
490
  server.registerTool(
493
491
  "symbol",
494
492
  {
@@ -802,7 +800,7 @@ async function createMcpServer() {
802
800
  if (!gate.ok) return gate.refusal;
803
801
  if (projectRootWasOmitted && isIndexEmptyForProject(globalDbPath(), root)) {
804
802
  return toCallToolResult({
805
- text: `Error: projectRoot was omitted and defaulted to server cwd "${root}", which has no files indexed. Pass projectRoot: "<workspace-path>" to target your workspace.`,
803
+ text: `Error: projectRoot was omitted and defaulted to server cwd ${echoedValue(root)}, which has no files indexed. Pass projectRoot: "<workspace-path>" to target your workspace.`,
806
804
  code: 1
807
805
  });
808
806
  }
@@ -903,7 +901,8 @@ async function createMcpServer() {
903
901
  ...ref !== void 0 ? { ref } : {},
904
902
  ...symbolMode === true ? { symbolMode: true } : {},
905
903
  ...json === true ? { json: true } : {},
906
- projectRoot: resolveToolRoot(projectRoot)
904
+ projectRoot: resolveToolRoot(projectRoot),
905
+ projectRootResolved: true
907
906
  })
908
907
  );
909
908
  }
@@ -1056,12 +1055,13 @@ async function createMcpServer() {
1056
1055
  projectRoot: resolveToolRoot(args.projectRoot),
1057
1056
  ...args.full === true ? { full: true } : {}
1058
1057
  });
1059
- return result === null ? toCallToolResult({ text: `no local handoff named "${args.name}" in this project`, code: 1 }) : typeof result === "string" ? toRawCallToolResult({ text: result, code: 0 }) : toCallToolResult({ text: displaySafeJson(compressionPayload(result)), code: 0 });
1058
+ return result === null ? toCallToolResult({ text: `no local handoff named ${echoedValue(args.name)} in this project`, code: 1 }) : typeof result === "string" ? toRawCallToolResult({ text: result, code: 0 }) : toCallToolResult({ text: displaySafeJson(compressionPayload(result)), code: 0 });
1060
1059
  }
1061
1060
  );
1062
1061
  return server;
1063
1062
  }
1064
1063
  export {
1064
+ DEFAULT_MCP_TOOLS,
1065
1065
  checkWithinProjectRoot,
1066
1066
  createMcpServer,
1067
1067
  inferProjectRootFromTarget,
@@ -5,16 +5,18 @@ import {
5
5
  downloadPinned,
6
6
  setPinnedRetryDelayForTesting,
7
7
  sha256Of
8
- } from "./token-goat-chunk-PD5VKH46.mjs";
9
- import "./token-goat-chunk-SMVRN2HU.mjs";
10
- import "./token-goat-chunk-7IN2MKDS.mjs";
11
- import "./token-goat-chunk-U4N3BN2W.mjs";
8
+ } from "./token-goat-chunk-AUNGYYQX.mjs";
9
+ import "./token-goat-chunk-2UPZGKKY.mjs";
10
+ import "./token-goat-chunk-7EZTZOMC.mjs";
11
+ import "./token-goat-chunk-QYHO5CPH.mjs";
12
+ import "./token-goat-chunk-4GBVPH3D.mjs";
12
13
  import "./token-goat-chunk-YZAAZU2S.mjs";
13
14
  import "./token-goat-chunk-IVE6U7KV.mjs";
14
- import "./token-goat-chunk-GOLEOXZP.mjs";
15
+ import "./token-goat-chunk-HU4TORC5.mjs";
16
+ import "./token-goat-chunk-GGGG7RWB.mjs";
15
17
  import "./token-goat-chunk-AM5V6GSX.mjs";
16
18
  import "./token-goat-chunk-FNFBKLRD.mjs";
17
- import "./token-goat-chunk-VES7EL7O.mjs";
19
+ import "./token-goat-chunk-CO3UYX6G.mjs";
18
20
  import "./token-goat-chunk-A37V4PBF.mjs";
19
21
  export {
20
22
  copyFromSharedCache,
@@ -3,6 +3,9 @@ const require = __cjsRequire(import.meta.url);
3
3
  import {
4
4
  Database
5
5
  } from "./token-goat-chunk-XB5KKOCG.mjs";
6
+ import {
7
+ echoedValue
8
+ } from "./token-goat-chunk-GGGG7RWB.mjs";
6
9
  import {
7
10
  displaySafeText
8
11
  } from "./token-goat-chunk-FNFBKLRD.mjs";
@@ -256,11 +259,11 @@ function validateReadOnlySelect(sql) {
256
259
  }
257
260
  for (const kw of FORBIDDEN_KEYWORDS) {
258
261
  if (new RegExp(`\\b${kw}\\b`).test(upper)) {
259
- throw new Error(`statement contains forbidden keyword '${kw}' (sqlite-query only allows read-only SELECT queries)`);
262
+ throw new Error(`statement contains forbidden keyword ${echoedValue(kw)} (sqlite-query only allows read-only SELECT queries)`);
260
263
  }
261
264
  }
262
265
  if (/\bREPLACE\b(?!\s*\()/.test(upper)) {
263
- throw new Error("statement contains forbidden keyword 'REPLACE' (sqlite-query only allows read-only SELECT queries)");
266
+ throw new Error('statement contains forbidden keyword "REPLACE" (sqlite-query only allows read-only SELECT queries)');
264
267
  }
265
268
  }
266
269
  function normalizeSqliteScalar(value) {
@@ -0,0 +1,35 @@
1
+ import { createRequire as __cjsRequire } from 'node:module';
2
+ const require = __cjsRequire(import.meta.url);
3
+ import {
4
+ capListField,
5
+ guardAndFenceFileText,
6
+ guardRedactAndFence,
7
+ guardThenFence
8
+ } from "./token-goat-chunk-M52KPT3C.mjs";
9
+ import "./token-goat-chunk-4NAPX7BA.mjs";
10
+ import "./token-goat-chunk-U4WHMG6Y.mjs";
11
+ import "./token-goat-chunk-GVB2MUST.mjs";
12
+ import "./token-goat-chunk-XB5KKOCG.mjs";
13
+ import "./token-goat-chunk-OUKDTVNU.mjs";
14
+ import "./token-goat-chunk-BFCWY73P.mjs";
15
+ import "./token-goat-chunk-KGEFFSHD.mjs";
16
+ import "./token-goat-chunk-XX6O25RN.mjs";
17
+ import "./token-goat-chunk-HAVAOB3S.mjs";
18
+ import "./token-goat-chunk-T5P5ACNQ.mjs";
19
+ import "./token-goat-chunk-7EZTZOMC.mjs";
20
+ import "./token-goat-chunk-QYHO5CPH.mjs";
21
+ import "./token-goat-chunk-4GBVPH3D.mjs";
22
+ import "./token-goat-chunk-YZAAZU2S.mjs";
23
+ import "./token-goat-chunk-IVE6U7KV.mjs";
24
+ import "./token-goat-chunk-HU4TORC5.mjs";
25
+ import "./token-goat-chunk-GGGG7RWB.mjs";
26
+ import "./token-goat-chunk-AM5V6GSX.mjs";
27
+ import "./token-goat-chunk-FNFBKLRD.mjs";
28
+ import "./token-goat-chunk-CO3UYX6G.mjs";
29
+ import "./token-goat-chunk-A37V4PBF.mjs";
30
+ export {
31
+ capListField,
32
+ guardAndFenceFileText,
33
+ guardRedactAndFence,
34
+ guardThenFence
35
+ };
@@ -0,0 +1,40 @@
1
+ import { createRequire as __cjsRequire } from 'node:module';
2
+ const require = __cjsRequire(import.meta.url);
3
+ import {
4
+ extractSection,
5
+ extractShellBannerHeading,
6
+ findContainingSection,
7
+ findMarkdownHeaders,
8
+ findShellBannerHeaders,
9
+ listSections,
10
+ normalizeHeading,
11
+ readSection
12
+ } from "./token-goat-chunk-OXFMP75N.mjs";
13
+ import "./token-goat-chunk-NISNMD7T.mjs";
14
+ import "./token-goat-chunk-EVMZJ27Z.mjs";
15
+ import "./token-goat-chunk-IK2DRMFX.mjs";
16
+ import "./token-goat-chunk-GVB2MUST.mjs";
17
+ import "./token-goat-chunk-XB5KKOCG.mjs";
18
+ import "./token-goat-chunk-OUKDTVNU.mjs";
19
+ import "./token-goat-chunk-7EZTZOMC.mjs";
20
+ import "./token-goat-chunk-QYHO5CPH.mjs";
21
+ import "./token-goat-chunk-4GBVPH3D.mjs";
22
+ import "./token-goat-chunk-YZAAZU2S.mjs";
23
+ import "./token-goat-chunk-IVE6U7KV.mjs";
24
+ import "./token-goat-chunk-Y4AFKTHK.mjs";
25
+ import "./token-goat-chunk-HU4TORC5.mjs";
26
+ import "./token-goat-chunk-GGGG7RWB.mjs";
27
+ import "./token-goat-chunk-AM5V6GSX.mjs";
28
+ import "./token-goat-chunk-FNFBKLRD.mjs";
29
+ import "./token-goat-chunk-CO3UYX6G.mjs";
30
+ import "./token-goat-chunk-A37V4PBF.mjs";
31
+ export {
32
+ extractSection,
33
+ extractShellBannerHeading,
34
+ findContainingSection,
35
+ findMarkdownHeaders,
36
+ findShellBannerHeaders,
37
+ listSections,
38
+ normalizeHeading,
39
+ readSection
40
+ };