token-goat 2.9.29 → 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 (197) hide show
  1. package/README.md +53 -42
  2. package/SECURITY.md +37 -11
  3. package/THIRD_PARTY_NOTICES.md +41 -4
  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/ort-wasm-simd-threaded.mjs +59 -0
  9. package/dist/{token-goat-chunk-SE6E4BKJ.mjs → token-goat-chunk-25TRAWET.mjs} +23 -6
  10. package/dist/token-goat-chunk-2KXO6V2B.mjs +203 -0
  11. package/dist/{token-goat-chunk-UXSXQQIY.mjs → token-goat-chunk-2M7E4PF7.mjs} +43 -14
  12. package/dist/token-goat-chunk-2UPZGKKY.mjs +188 -0
  13. package/dist/token-goat-chunk-2WLPWKHV.mjs +135 -0
  14. package/dist/token-goat-chunk-2XBMMDBD.mjs +126 -0
  15. package/dist/token-goat-chunk-32ZOY4N5.mjs +23 -0
  16. package/dist/token-goat-chunk-3EZRNKTK.mjs +188 -0
  17. package/dist/token-goat-chunk-4ADZHI7J.mjs +63 -0
  18. package/dist/token-goat-chunk-4GBVPH3D.mjs +242 -0
  19. package/dist/{token-goat-chunk-2WOUYWLM.mjs → token-goat-chunk-4GILLLWY.mjs} +34 -7
  20. package/dist/token-goat-chunk-4NAPX7BA.mjs +90 -0
  21. package/dist/{token-goat-chunk-NMBWLRHW.mjs → token-goat-chunk-4SC7UJYV.mjs} +9981 -11563
  22. package/dist/token-goat-chunk-4SMRO4TO.mjs +366 -0
  23. package/dist/{token-goat-chunk-O6I2XU4P.mjs → token-goat-chunk-4ZBFWLXF.mjs} +310 -441
  24. package/dist/token-goat-chunk-57BIAXJL.mjs +286 -0
  25. package/dist/token-goat-chunk-5AC66HNP.mjs +115 -0
  26. package/dist/token-goat-chunk-5IMLKSOP.mjs +145 -0
  27. package/dist/token-goat-chunk-5RG5SBL6.mjs +221 -0
  28. package/dist/{token-goat-chunk-RRNZMM3A.mjs → token-goat-chunk-5Y6ZYL6U.mjs} +21 -2
  29. package/dist/token-goat-chunk-646E6U44.mjs +398 -0
  30. package/dist/token-goat-chunk-65N4RHP4.mjs +33 -0
  31. package/dist/{token-goat-chunk-6AK46ZT7.mjs → token-goat-chunk-6DG6HWP3.mjs} +13 -3
  32. package/dist/token-goat-chunk-6ENQSNRZ.mjs +573 -0
  33. package/dist/token-goat-chunk-6ZY4GNF2.mjs +91 -0
  34. package/dist/{token-goat-chunk-E5TK5DNO.mjs → token-goat-chunk-76FGDLRO.mjs} +574 -340
  35. package/dist/{token-goat-chunk-TGOXNAHW.mjs → token-goat-chunk-7EZTZOMC.mjs} +780 -767
  36. package/dist/token-goat-chunk-7MAOA6X4.mjs +3647 -0
  37. package/dist/token-goat-chunk-7R2ZVVAX.mjs +218 -0
  38. package/dist/{token-goat-chunk-TCQANXYC.mjs → token-goat-chunk-AM5V6GSX.mjs} +18 -2
  39. package/dist/token-goat-chunk-AUNGYYQX.mjs +184 -0
  40. package/dist/token-goat-chunk-AUQYRMMH.mjs +2985 -0
  41. package/dist/token-goat-chunk-B3PEKBYG.mjs +128 -0
  42. package/dist/{token-goat-chunk-KOPIR3KZ.mjs → token-goat-chunk-BA4HI6BW.mjs} +1910 -165
  43. package/dist/{token-goat-chunk-52NSDWYY.mjs → token-goat-chunk-BFCWY73P.mjs} +58 -20
  44. package/dist/token-goat-chunk-BPGCUMR7.mjs +30 -0
  45. package/dist/token-goat-chunk-BWGFUZZE.mjs +25 -0
  46. package/dist/token-goat-chunk-C75NA7PL.mjs +322 -0
  47. package/dist/token-goat-chunk-CBIQ7WTD.mjs +87 -0
  48. package/dist/token-goat-chunk-CETM74KC.mjs +307 -0
  49. package/dist/token-goat-chunk-CIMQ2BB3.mjs +233 -0
  50. package/dist/{token-goat-chunk-DNSPXQXQ.mjs → token-goat-chunk-CJLS3CDL.mjs} +70 -18
  51. package/dist/{token-goat-chunk-MELOKFDJ.mjs → token-goat-chunk-CO3UYX6G.mjs} +7 -1
  52. package/dist/token-goat-chunk-COPNXRJM.mjs +154 -0
  53. package/dist/token-goat-chunk-CSJ5L3NL.mjs +479 -0
  54. package/dist/token-goat-chunk-CVCEVUGK.mjs +315 -0
  55. package/dist/token-goat-chunk-CXHOFN7R.mjs +371 -0
  56. package/dist/token-goat-chunk-D735C4QM.mjs +603 -0
  57. package/dist/{token-goat-chunk-E4ZOJIZK.mjs → token-goat-chunk-DGS2LVNA.mjs} +70 -160
  58. package/dist/{token-goat-chunk-L7H3U27L.mjs → token-goat-chunk-DOWRSMWO.mjs} +1 -1
  59. package/dist/token-goat-chunk-E45INMY3.mjs +71 -0
  60. package/dist/token-goat-chunk-EC5F37F4.mjs +244 -0
  61. package/dist/{token-goat-chunk-XTQAOTSO.mjs → token-goat-chunk-EDBDRVH5.mjs} +4 -1
  62. package/dist/token-goat-chunk-EELTBKDM.mjs +613 -0
  63. package/dist/token-goat-chunk-EVMZJ27Z.mjs +147 -0
  64. package/dist/token-goat-chunk-EXKGNHEG.mjs +2096 -0
  65. package/dist/{token-goat-chunk-YOOVFPTP.mjs → token-goat-chunk-F4HYL64R.mjs} +12 -2
  66. package/dist/token-goat-chunk-F6PAUIEK.mjs +624 -0
  67. package/dist/token-goat-chunk-FDSREWLX.mjs +692 -0
  68. package/dist/{token-goat-chunk-NMTKNYGF.mjs → token-goat-chunk-FNFBKLRD.mjs} +74 -9
  69. package/dist/token-goat-chunk-G5PJ7AGM.mjs +36 -0
  70. package/dist/token-goat-chunk-GGGG7RWB.mjs +236 -0
  71. package/dist/{token-goat-chunk-TDUT2CL6.mjs → token-goat-chunk-GL3ETKSC.mjs} +276 -19
  72. package/dist/{token-goat-chunk-7CPMDFGB.mjs → token-goat-chunk-GVB2MUST.mjs} +265 -1567
  73. package/dist/token-goat-chunk-GWFLAUMQ.mjs +307 -0
  74. package/dist/token-goat-chunk-HAVAOB3S.mjs +87 -0
  75. package/dist/token-goat-chunk-HLPW63A7.mjs +48 -0
  76. package/dist/token-goat-chunk-HU4TORC5.mjs +1377 -0
  77. package/dist/token-goat-chunk-I7VKZZAW.mjs +35 -0
  78. package/dist/token-goat-chunk-IA6XSPE3.mjs +218 -0
  79. package/dist/token-goat-chunk-IAGXMHIK.mjs +863 -0
  80. package/dist/{token-goat-chunk-435UQTKD.mjs → token-goat-chunk-IK2DRMFX.mjs} +129 -74
  81. package/dist/{token-goat-chunk-ZER6EAXZ.mjs → token-goat-chunk-INNPTRUX.mjs} +2954 -2783
  82. package/dist/token-goat-chunk-JJ5BX4F4.mjs +129 -0
  83. package/dist/token-goat-chunk-JVFSHVFJ.mjs +129 -0
  84. package/dist/token-goat-chunk-KGEFFSHD.mjs +50 -0
  85. package/dist/token-goat-chunk-KKUFXAPD.mjs +25 -0
  86. package/dist/token-goat-chunk-KQBLRPBN.mjs +433 -0
  87. package/dist/token-goat-chunk-LCNQ2CNN.mjs +497 -0
  88. package/dist/token-goat-chunk-M3LFJDPU.mjs +58 -0
  89. package/dist/token-goat-chunk-M52KPT3C.mjs +87 -0
  90. package/dist/token-goat-chunk-MBEG42H7.mjs +150 -0
  91. package/dist/{token-goat-chunk-EVC4TOLE.mjs → token-goat-chunk-METECDOH.mjs} +3 -12
  92. package/dist/{token-goat-chunk-2AWQ2R5X.mjs → token-goat-chunk-MHX7XCC3.mjs} +3 -2
  93. package/dist/token-goat-chunk-MNWKPRAL.mjs +13 -0
  94. package/dist/token-goat-chunk-N5LSOVSU.mjs +137 -0
  95. package/dist/{token-goat-chunk-DPNLUJWB.mjs → token-goat-chunk-N5MMR2IW.mjs} +30 -8
  96. package/dist/token-goat-chunk-N7B3JQ2C.mjs +160 -0
  97. package/dist/{token-goat-chunk-VMFWNHGR.mjs → token-goat-chunk-NISNMD7T.mjs} +2545 -2953
  98. package/dist/token-goat-chunk-NMD42SFQ.mjs +434 -0
  99. package/dist/token-goat-chunk-NOSS5VWY.mjs +174 -0
  100. package/dist/token-goat-chunk-NSNSPPBG.mjs +69 -0
  101. package/dist/token-goat-chunk-OBOFIHKN.mjs +38 -0
  102. package/dist/token-goat-chunk-OBRFJ5O5.mjs +76 -0
  103. package/dist/token-goat-chunk-ODBT2USM.mjs +800 -0
  104. package/dist/token-goat-chunk-OS5EM5PP.mjs +107 -0
  105. package/dist/token-goat-chunk-OUKDTVNU.mjs +1178 -0
  106. package/dist/token-goat-chunk-OXFMP75N.mjs +566 -0
  107. package/dist/{token-goat-chunk-ASLWOQ3I.mjs → token-goat-chunk-OYIYKDDT.mjs} +2 -1
  108. package/dist/{token-goat-chunk-67BNIKKO.mjs → token-goat-chunk-P6HQSWQ3.mjs} +55 -47
  109. package/dist/token-goat-chunk-P6VGNTQT.mjs +71 -0
  110. package/dist/token-goat-chunk-PFWIMH2E.mjs +261 -0
  111. package/dist/token-goat-chunk-PJZXIS3G.mjs +39 -0
  112. package/dist/token-goat-chunk-PUO5INXP.mjs +606 -0
  113. package/dist/token-goat-chunk-PX5PQWTY.mjs +462 -0
  114. package/dist/token-goat-chunk-Q5QDBC6O.mjs +111 -0
  115. package/dist/token-goat-chunk-QFNQXSDT.mjs +40 -0
  116. package/dist/token-goat-chunk-QH7YVYOY.mjs +3957 -0
  117. package/dist/token-goat-chunk-QLMUHEPB.mjs +43 -0
  118. package/dist/{token-goat-chunk-PYSUADX4.mjs → token-goat-chunk-QQOJIHL3.mjs} +50 -14
  119. package/dist/token-goat-chunk-QQTWJY2O.mjs +85 -0
  120. package/dist/token-goat-chunk-QYHO5CPH.mjs +93 -0
  121. package/dist/token-goat-chunk-RELAVWAD.mjs +27 -0
  122. package/dist/token-goat-chunk-RSLPOBKQ.mjs +339 -0
  123. package/dist/token-goat-chunk-SAMFDIS2.mjs +712 -0
  124. package/dist/token-goat-chunk-SDELXLDM.mjs +48 -0
  125. package/dist/{token-goat-chunk-PGTH2U4C.mjs → token-goat-chunk-SOAFZNNZ.mjs} +164 -40
  126. package/dist/{token-goat-chunk-G23DWHV4.mjs → token-goat-chunk-SRTHT7KV.mjs} +33 -15
  127. package/dist/token-goat-chunk-T5P5ACNQ.mjs +212 -0
  128. package/dist/token-goat-chunk-T5YGG4V3.mjs +45 -0
  129. package/dist/token-goat-chunk-TAUZ4OFS.mjs +110 -0
  130. package/dist/token-goat-chunk-TM6MC754.mjs +40 -0
  131. package/dist/token-goat-chunk-TWUKBOMP.mjs +72 -0
  132. package/dist/token-goat-chunk-U2KSB4SG.mjs +56 -0
  133. package/dist/token-goat-chunk-U4WHMG6Y.mjs +898 -0
  134. package/dist/token-goat-chunk-UA5V6P3P.mjs +122 -0
  135. package/dist/token-goat-chunk-UGJHGR5A.mjs +52 -0
  136. package/dist/{token-goat-chunk-RQGGMPCR.mjs → token-goat-chunk-UOUDVA5U.mjs} +76 -16
  137. package/dist/{token-goat-chunk-HNFZZHFW.mjs → token-goat-chunk-URRJ33GR.mjs} +22 -4
  138. package/dist/token-goat-chunk-UZOROKIS.mjs +165 -0
  139. package/dist/token-goat-chunk-VIHGGGEI.mjs +4234 -0
  140. package/dist/token-goat-chunk-VTJLAA7P.mjs +21 -0
  141. package/dist/token-goat-chunk-VWDXLT4F.mjs +678 -0
  142. package/dist/token-goat-chunk-VWZA2H4P.mjs +368 -0
  143. package/dist/{token-goat-chunk-QO3LXVVR.mjs → token-goat-chunk-VXEXMJDL.mjs} +2964 -3153
  144. package/dist/token-goat-chunk-WBA5SKT4.mjs +547 -0
  145. package/dist/{token-goat-chunk-ONXH6NZ5.mjs → token-goat-chunk-WDH44VAU.mjs} +19 -22
  146. package/dist/token-goat-chunk-X2SUP3EI.mjs +107 -0
  147. package/dist/token-goat-chunk-X3BELZSJ.mjs +125 -0
  148. package/dist/{token-goat-chunk-RLP6J7WR.mjs → token-goat-chunk-XLRBNZCC.mjs} +40 -21
  149. package/dist/{token-goat-chunk-S4VSXURL.mjs → token-goat-chunk-XRKUX6CM.mjs} +4 -0
  150. package/dist/token-goat-chunk-XX6O25RN.mjs +82 -0
  151. package/dist/token-goat-chunk-XZSUHBVS.mjs +65 -0
  152. package/dist/token-goat-chunk-Y2ZTQOCL.mjs +35 -0
  153. package/dist/{token-goat-chunk-UA5BKWWQ.mjs → token-goat-chunk-YB4VMGK2.mjs} +15 -4
  154. package/dist/token-goat-chunk-YBIIY3HR.mjs +51 -0
  155. package/dist/{token-goat-chunk-PKRWMHVP.mjs → token-goat-chunk-YHVDKQBR.mjs} +389 -221
  156. package/dist/token-goat-chunk-YJB5XLWI.mjs +26 -0
  157. package/dist/{token-goat-chunk-PQ53BSCF.mjs → token-goat-chunk-YKB6AQG3.mjs} +53 -31
  158. package/dist/token-goat-chunk-YMTG2YA5.mjs +35 -0
  159. package/dist/token-goat-chunk-YPBZYQRV.mjs +40 -0
  160. package/dist/{token-goat-chunk-HUYUHODZ.mjs → token-goat-chunk-YY6AVUFL.mjs} +13246 -12247
  161. package/dist/token-goat-chunk-Z7N5OMMP.mjs +98 -0
  162. package/dist/{token-goat-chunk-BGHSSJUA.mjs → token-goat-chunk-ZFOBKUWH.mjs} +1 -1
  163. package/dist/token-goat-chunk-ZMBL6UVV.mjs +110 -0
  164. package/dist/token-goat-chunk-ZNMNUPAZ.mjs +938 -0
  165. package/dist/token-goat-hook-client.cjs +87 -23
  166. package/dist/token-goat-hook-client.mjs +3 -3
  167. package/dist/token-goat-hook.mjs +76 -31
  168. package/dist/token-goat.core.mjs +6 -6
  169. package/docs/C4_RUNTIME_ARCHITECTURE.md +2 -2
  170. package/docs/cli.md +113 -60
  171. package/docs/install.md +63 -20
  172. package/docs/security.md +10 -8
  173. package/package.json +18 -7
  174. package/scripts/verify-native-dist.mjs +386 -0
  175. package/dist/token-goat-chunk-2NNUA2LR.mjs +0 -143
  176. package/dist/token-goat-chunk-44BM7DDQ.mjs +0 -294
  177. package/dist/token-goat-chunk-BGYOZ6DO.mjs +0 -24
  178. package/dist/token-goat-chunk-C5YPNZKQ.mjs +0 -318
  179. package/dist/token-goat-chunk-CIQ2FTY3.mjs +0 -1990
  180. package/dist/token-goat-chunk-D4ETHJD6.mjs +0 -246
  181. package/dist/token-goat-chunk-DNRPXHYH.mjs +0 -1062
  182. package/dist/token-goat-chunk-EUSDXRXU.mjs +0 -1429
  183. package/dist/token-goat-chunk-FTP4U4QA.mjs +0 -64
  184. package/dist/token-goat-chunk-G7IWXCFF.mjs +0 -456
  185. package/dist/token-goat-chunk-GLXRTTLE.mjs +0 -36
  186. package/dist/token-goat-chunk-H5J3C56Q.mjs +0 -1511
  187. package/dist/token-goat-chunk-IVWI2OCK.mjs +0 -368
  188. package/dist/token-goat-chunk-JTKCQMQA.mjs +0 -418
  189. package/dist/token-goat-chunk-LZNBQTDK.mjs +0 -26
  190. package/dist/token-goat-chunk-ORNFMIER.mjs +0 -295
  191. package/dist/token-goat-chunk-RTMVLHWX.mjs +0 -7113
  192. package/dist/token-goat-chunk-VQ6F6T7X.mjs +0 -36
  193. package/dist/token-goat-chunk-VZQEWRVH.mjs +0 -312
  194. package/dist/token-goat-chunk-XYWPOSCN.mjs +0 -807
  195. package/dist/token-goat-chunk-YAGLESS3.mjs +0 -23
  196. package/dist/token-goat-chunk-YKSRAWUU.mjs +0 -33
  197. package/dist/token-goat-chunk-Z6KBMOBI.mjs +0 -53
@@ -0,0 +1,244 @@
1
+ import { createRequire as __cjsRequire } from 'node:module';
2
+ const require = __cjsRequire(import.meta.url);
3
+ import {
4
+ isIgnoredIndexPath
5
+ } from "./token-goat-chunk-ZNMNUPAZ.mjs";
6
+ import {
7
+ isSecretFileName
8
+ } from "./token-goat-chunk-32ZOY4N5.mjs";
9
+ import {
10
+ hasSkipSegmentBelowRoot
11
+ } from "./token-goat-chunk-NISNMD7T.mjs";
12
+ import {
13
+ getOwnProjectFileEntries
14
+ } from "./token-goat-chunk-IK2DRMFX.mjs";
15
+ import {
16
+ loadConfig
17
+ } from "./token-goat-chunk-7EZTZOMC.mjs";
18
+ import {
19
+ fileIsAbsent,
20
+ findProject
21
+ } from "./token-goat-chunk-4GBVPH3D.mjs";
22
+ import {
23
+ isUnderBlockedRoot
24
+ } from "./token-goat-chunk-HU4TORC5.mjs";
25
+ import {
26
+ foldPath,
27
+ isInsideRoot
28
+ } from "./token-goat-chunk-AM5V6GSX.mjs";
29
+ import {
30
+ init_define_import_meta_env
31
+ } from "./token-goat-chunk-A37V4PBF.mjs";
32
+
33
+ // src/path_suggest.ts
34
+ init_define_import_meta_env();
35
+ import { existsSync, opendirSync, realpathSync } from "node:fs";
36
+ import * as path from "node:path";
37
+
38
+ // src/indexed_file_names.ts
39
+ init_define_import_meta_env();
40
+ function indexedFileList(rootDir) {
41
+ const out = [];
42
+ for (const [folded, indexed] of getOwnProjectFileEntries(rootDir)) {
43
+ if (isIgnoredIndexPath(folded, rootDir)) continue;
44
+ out.push({ filePath: indexed.filePath, base: folded.slice(Math.max(folded.lastIndexOf("/"), folded.lastIndexOf("\\")) + 1) });
45
+ }
46
+ return out;
47
+ }
48
+ function filesNamed(list, name) {
49
+ const want = foldPath(name);
50
+ const matches = [];
51
+ for (const { filePath, base } of list) {
52
+ const dot = base.lastIndexOf(".");
53
+ if (base === want || dot > 0 && base.slice(0, dot) === want) matches.push(filePath);
54
+ }
55
+ return [...new Set(matches)].sort();
56
+ }
57
+ function indexedFilesNamed(name, rootDir) {
58
+ return filesNamed(indexedFileList(rootDir), name);
59
+ }
60
+
61
+ // src/util_suggest.ts
62
+ init_define_import_meta_env();
63
+ function levenshteinDistance(a, b, cap = 3) {
64
+ if (Math.abs(a.length - b.length) > cap) return cap + 1;
65
+ const prev = Array.from({ length: b.length + 1 }, (_, i) => i);
66
+ for (let i = 1; i <= a.length; i++) {
67
+ const curr = [i];
68
+ for (let j = 1; j <= b.length; j++) {
69
+ const cost = a[i - 1] === b[j - 1] ? 0 : 1;
70
+ curr.push(Math.min((curr[j - 1] ?? 0) + 1, (prev[j] ?? 0) + 1, (prev[j - 1] ?? 0) + cost));
71
+ }
72
+ prev.splice(0, prev.length, ...curr);
73
+ }
74
+ return prev[b.length] ?? cap + 1;
75
+ }
76
+ function suggestPackageNames(query, names) {
77
+ return [...new Set(names)].map((n) => ({ n, d: levenshteinDistance(query.toLowerCase(), n.toLowerCase()) })).filter((x) => x.d <= 3).sort((a, b) => a.d - b.d).slice(0, 5).map((x) => x.n);
78
+ }
79
+
80
+ // src/path_suggest.ts
81
+ var MAX_PATH_SUGGESTIONS = 3;
82
+ var MAX_PATH_CHARS = 1024;
83
+ var MAX_DIR_ENTRIES = 5e3;
84
+ var UNICODE_SPACES = /[\u00A0\u1680\u2000-\u200A\u202F\u205F\u3000]/g;
85
+ var TRAILING_LOCATION = /(?::\d+(?:-\d+)?|#L\d+(?:-L?\d+)?)$/;
86
+ var SPELLING_REWRITES = [
87
+ (name) => name.replace(UNICODE_SPACES, " "),
88
+ (name) => name.replace(/ (AM|PM)\b/g, "\u202F$1"),
89
+ (name) => name.replace(/ (AM|PM)\b/g, "\xA0$1"),
90
+ (name) => name.normalize("NFC"),
91
+ (name) => name.normalize("NFD"),
92
+ (name) => name.replace(/'/g, "\u2019"),
93
+ (name) => name.replace(/[\u2018\u2019]/g, "'")
94
+ ];
95
+ function withoutDecoration(missing) {
96
+ const trimmed = missing.trim();
97
+ const unmentioned = trimmed.startsWith("@") && trimmed.length > 1 ? trimmed.slice(1) : trimmed;
98
+ return unmentioned.replace(TRAILING_LOCATION, "");
99
+ }
100
+ function spellingVariants(missing) {
101
+ const seen = /* @__PURE__ */ new Set([withoutDecoration(missing)]);
102
+ for (const rewrite of SPELLING_REWRITES) {
103
+ for (const spelling of [...seen]) seen.add(rewrite(spelling));
104
+ }
105
+ seen.delete(missing);
106
+ return [...seen].filter((spelling) => spelling !== "");
107
+ }
108
+ function scopeFor(cwd, rootDir) {
109
+ const cfg = loadConfig();
110
+ const project = rootDir !== null ? findProject(rootDir) : null;
111
+ const indexed = rootDir !== null && project !== null && samePath(project.root, rootDir);
112
+ return { root: indexed && rootDir !== null ? rootDir : cwd, indexed, skipDirs: cfg.indexing.skip_dirs, blockedRoots: cfg.worker.blocked_roots };
113
+ }
114
+ function permitted(abs, scope) {
115
+ if (isSecretFileName(abs)) return false;
116
+ if (isIgnoredIndexPath(abs, scope.root) || hasSkipSegmentBelowRoot(abs, scope.root, (segment) => scope.skipDirs.includes(segment))) return false;
117
+ if (isUnderBlockedRoot(abs, scope.blockedRoots)) return false;
118
+ return isInsideRoot(abs, scope.root);
119
+ }
120
+ function entriesOf(dir, scope) {
121
+ if (!isInsideRoot(dir, scope.root)) return [];
122
+ const names = [];
123
+ try {
124
+ const handle = opendirSync(dir);
125
+ try {
126
+ while (names.length < MAX_DIR_ENTRIES) {
127
+ const entry = handle.readSync();
128
+ if (entry === null) break;
129
+ names.push(entry.name);
130
+ }
131
+ } finally {
132
+ handle.closeSync();
133
+ }
134
+ } catch {
135
+ }
136
+ return names;
137
+ }
138
+ function displayPath(abs, cwd) {
139
+ const full = path.resolve(abs);
140
+ for (const base of [path.resolve(cwd), realCwd(path.resolve(cwd))]) {
141
+ const rel = path.relative(foldPath(base), foldPath(full));
142
+ if (rel !== "" && !rel.startsWith("..") && !path.isAbsolute(rel)) return full.split(/[\\/]/).slice(-rel.split(/[\\/]/).length).join("/");
143
+ }
144
+ return abs.replace(/\\/g, "/");
145
+ }
146
+ function realCwd(cwd) {
147
+ try {
148
+ return realpathSync.native(cwd);
149
+ } catch {
150
+ return cwd;
151
+ }
152
+ }
153
+ function sharedParents(a, b) {
154
+ const left = path.dirname(a).split(/[\\/]/).reverse();
155
+ const right = path.dirname(b).split(/[\\/]/).reverse();
156
+ let shared = 0;
157
+ while (shared < left.length && shared < right.length && left[shared].toLowerCase() === right[shared].toLowerCase()) shared++;
158
+ return shared;
159
+ }
160
+ function samePath(a, b) {
161
+ return foldPath(path.resolve(a)) === foldPath(path.resolve(b));
162
+ }
163
+ function resolveIndexed(file, rootDir) {
164
+ return path.resolve(rootDir, file);
165
+ }
166
+ function sameNameFiles(missingAbs, rootDir, files, scope) {
167
+ const base = path.basename(missingAbs);
168
+ const dot = base.lastIndexOf(".");
169
+ const names = dot > 0 ? [base, base.slice(0, dot)] : [base];
170
+ const found = [...new Set(names.flatMap((name) => filesNamed(files, name)))].map((file) => resolveIndexed(file, rootDir)).filter((abs) => !samePath(abs, missingAbs) && !fileIsAbsent(abs) && permitted(abs, scope));
171
+ const ranked = found.sort((a, b) => sharedParents(b, missingAbs) - sharedParents(a, missingAbs) || a.localeCompare(b));
172
+ return ranked.length <= MAX_PATH_SUGGESTIONS ? ranked : ranked.filter((abs) => sharedParents(abs, missingAbs) > 0);
173
+ }
174
+ function typoBudget(base) {
175
+ const dot = base.lastIndexOf(".");
176
+ if ((dot > 0 ? dot : base.length) < 3) return 0;
177
+ return base.length >= 8 ? 2 : 1;
178
+ }
179
+ function nearNameFiles(missingAbs, rootDir, files, scope) {
180
+ const base = path.basename(missingAbs);
181
+ const budget = typoBudget(base);
182
+ if (budget === 0) return [];
183
+ const dir = path.dirname(missingAbs);
184
+ const lower = base.toLowerCase();
185
+ const scored = [];
186
+ const consider = (abs, sameDir) => {
187
+ const name = path.basename(abs);
188
+ if (name === base) return;
189
+ const distance = levenshteinDistance(name.toLowerCase(), lower, budget);
190
+ if (distance > budget) return;
191
+ scored.push({ abs, rank: sameDir ? 0 : 1, distance });
192
+ };
193
+ for (const name of entriesOf(dir, scope)) consider(path.join(dir, name), true);
194
+ for (const file of files ?? []) consider(resolveIndexed(file.filePath, rootDir), false);
195
+ return scored.sort((a, b) => a.rank - b.rank || a.distance - b.distance || a.abs.localeCompare(b.abs)).map((entry) => entry.abs).filter((abs) => !samePath(abs, missingAbs) && !fileIsAbsent(abs) && permitted(abs, scope));
196
+ }
197
+ function caseCorrected(abs, scope) {
198
+ const root = path.parse(abs).root;
199
+ let current = root;
200
+ let changed = false;
201
+ for (const segment of abs.slice(root.length).split(/[\\/]/).filter((s) => s !== "")) {
202
+ const next = path.join(current, segment);
203
+ if (existsSync(next)) {
204
+ current = next;
205
+ continue;
206
+ }
207
+ const matches = entriesOf(current, scope).filter((entry) => entry.toLowerCase() === segment.toLowerCase());
208
+ if (matches.length !== 1) return null;
209
+ current = path.join(current, matches[0]);
210
+ changed = true;
211
+ }
212
+ return changed && permitted(current, scope) ? current : null;
213
+ }
214
+ function suggestPaths(missing, cwd, rootDir) {
215
+ if (missing === "" || missing.length > MAX_PATH_CHARS || /[\r\n\0]/.test(missing)) return [];
216
+ const scope = scopeFor(cwd, rootDir);
217
+ const missingAbs = path.resolve(cwd, missing);
218
+ const variants = spellingVariants(missing).map((spelling) => path.resolve(cwd, spelling)).filter((abs) => !samePath(abs, missingAbs) && permitted(abs, scope) && existsSync(abs));
219
+ if (variants.length > 0) return [...new Set(variants)].slice(0, MAX_PATH_SUGGESTIONS).map((abs) => displayPath(abs, cwd));
220
+ const stripped = path.resolve(cwd, withoutDecoration(missing));
221
+ const found = [];
222
+ const add = (list) => {
223
+ for (const abs of list) if (!samePath(abs, missingAbs) && !found.some((seen) => samePath(seen, abs))) found.push(abs);
224
+ };
225
+ let files = null;
226
+ if (scope.indexed) {
227
+ try {
228
+ files = indexedFileList(scope.root);
229
+ add(sameNameFiles(stripped, scope.root, files, scope));
230
+ } catch {
231
+ }
232
+ }
233
+ const corrected = caseCorrected(stripped, scope);
234
+ add(nearNameFiles(stripped, scope.root, files, scope));
235
+ if (corrected !== null) add([corrected]);
236
+ return found.slice(0, MAX_PATH_SUGGESTIONS).map((abs) => displayPath(abs, cwd));
237
+ }
238
+
239
+ export {
240
+ levenshteinDistance,
241
+ suggestPackageNames,
242
+ indexedFilesNamed,
243
+ suggestPaths
244
+ };
@@ -3,6 +3,9 @@ const require = __cjsRequire(import.meta.url);
3
3
  import {
4
4
  DocumentRefusedError
5
5
  } from "./token-goat-chunk-Y4AFKTHK.mjs";
6
+ import {
7
+ echoedValue
8
+ } from "./token-goat-chunk-GGGG7RWB.mjs";
6
9
  import {
7
10
  init_define_import_meta_env
8
11
  } from "./token-goat-chunk-A37V4PBF.mjs";
@@ -15,7 +18,7 @@ var STREAM_CHUNK_BYTES = 64 * 1024;
15
18
  var ZipOutputTooLargeError = class extends DocumentRefusedError {
16
19
  constructor(entryName, limitBytes, decompressedSoFarBytes) {
17
20
  super(
18
- `zip entry '${entryName}' is over the ${Math.round(limitBytes / (1024 * 1024))}MB decompressed-size limit (over ${Math.round(decompressedSoFarBytes / (1024 * 1024))}MB decompressed so far)`,
21
+ `zip entry ${echoedValue(entryName)} is over the ${Math.round(limitBytes / (1024 * 1024))}MB decompressed-size limit (over ${Math.round(decompressedSoFarBytes / (1024 * 1024))}MB decompressed so far)`,
19
22
  "ZipOutputTooLargeError"
20
23
  );
21
24
  }