token-goat 2.9.26 → 2.9.29

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 (78) hide show
  1. package/README.md +30 -88
  2. package/SECURITY.md +14 -0
  3. package/dist/{token-goat-chunk-OZRSREKR.mjs → token-goat-chunk-2AWQ2R5X.mjs} +2 -2
  4. package/dist/{token-goat-chunk-BH4ZVRB2.mjs → token-goat-chunk-2NNUA2LR.mjs} +4 -4
  5. package/dist/token-goat-chunk-2WOUYWLM.mjs +955 -0
  6. package/dist/{token-goat-chunk-IKZLSRII.mjs → token-goat-chunk-435UQTKD.mjs} +5 -3
  7. package/dist/{token-goat-chunk-62IHOU6L.mjs → token-goat-chunk-44BM7DDQ.mjs} +5 -3
  8. package/dist/token-goat-chunk-52NSDWYY.mjs +96 -0
  9. package/dist/{token-goat-chunk-CXBOFPF4.mjs → token-goat-chunk-67BNIKKO.mjs} +32 -18
  10. package/dist/{token-goat-chunk-XBESNWEX.mjs → token-goat-chunk-6AK46ZT7.mjs} +2 -3
  11. package/dist/{token-goat-chunk-7SXPJOSZ.mjs → token-goat-chunk-7CPMDFGB.mjs} +166 -40
  12. package/dist/token-goat-chunk-ASLWOQ3I.mjs +14 -0
  13. package/dist/{token-goat-chunk-MWID3YOY.mjs → token-goat-chunk-BGYOZ6DO.mjs} +6 -4
  14. package/dist/{token-goat-chunk-PAV6NNY7.mjs → token-goat-chunk-C5YPNZKQ.mjs} +22 -8
  15. package/dist/{token-goat-chunk-D2X7XN5M.mjs → token-goat-chunk-CIQ2FTY3.mjs} +23 -242
  16. package/dist/token-goat-chunk-D4ETHJD6.mjs +246 -0
  17. package/dist/{token-goat-chunk-7Y6GWTII.mjs → token-goat-chunk-DNRPXHYH.mjs} +25 -17
  18. package/dist/{token-goat-chunk-L43RKNHA.mjs → token-goat-chunk-DNSPXQXQ.mjs} +2 -2
  19. package/dist/token-goat-chunk-DPNLUJWB.mjs +220 -0
  20. package/dist/token-goat-chunk-E4ZOJIZK.mjs +1382 -0
  21. package/dist/token-goat-chunk-E5TK5DNO.mjs +718 -0
  22. package/dist/{token-goat-chunk-VVROQBQJ.mjs → token-goat-chunk-EUSDXRXU.mjs} +62 -12
  23. package/dist/{token-goat-chunk-POOI26O6.mjs → token-goat-chunk-FTP4U4QA.mjs} +12 -8
  24. package/dist/token-goat-chunk-G23DWHV4.mjs +142 -0
  25. package/dist/{token-goat-chunk-MDV5VWF4.mjs → token-goat-chunk-G7IWXCFF.mjs} +223 -15
  26. package/dist/{token-goat-chunk-C2PG4K5D.mjs → token-goat-chunk-GLXRTTLE.mjs} +7 -5
  27. package/dist/{token-goat-chunk-M6CVNHTW.mjs → token-goat-chunk-H5J3C56Q.mjs} +95 -573
  28. package/dist/{token-goat-chunk-BAWKGODL.mjs → token-goat-chunk-HNFZZHFW.mjs} +2 -2
  29. package/dist/{token-goat-chunk-TG5ZPD6B.mjs → token-goat-chunk-HUYUHODZ.mjs} +1036 -759
  30. package/dist/token-goat-chunk-IVE6U7KV.mjs +53 -0
  31. package/dist/{token-goat-chunk-ZZT6PVB3.mjs → token-goat-chunk-IVWI2OCK.mjs} +72 -45
  32. package/dist/{token-goat-chunk-GMOUBOX4.mjs → token-goat-chunk-JTKCQMQA.mjs} +37 -5
  33. package/dist/{token-goat-chunk-H2CPLEMP.mjs → token-goat-chunk-KOPIR3KZ.mjs} +46 -23
  34. package/dist/token-goat-chunk-L7H3U27L.mjs +35 -0
  35. package/dist/{token-goat-chunk-FLEYOCAS.mjs → token-goat-chunk-LZNBQTDK.mjs} +6 -4
  36. package/dist/token-goat-chunk-MELOKFDJ.mjs +199 -0
  37. package/dist/{token-goat-chunk-RH27ZSPF.mjs → token-goat-chunk-NMBWLRHW.mjs} +164 -50
  38. package/dist/{token-goat-chunk-43JFN26X.mjs → token-goat-chunk-O6I2XU4P.mjs} +27 -967
  39. package/dist/{token-goat-chunk-G6EYO5CD.mjs → token-goat-chunk-ONXH6NZ5.mjs} +2 -87
  40. package/dist/token-goat-chunk-ORNFMIER.mjs +295 -0
  41. package/dist/{token-goat-chunk-LHUP4DXZ.mjs → token-goat-chunk-PGTH2U4C.mjs} +1 -1
  42. package/dist/{token-goat-chunk-5BQ7W7D7.mjs → token-goat-chunk-PKRWMHVP.mjs} +76 -59
  43. package/dist/{token-goat-chunk-DA43OE7L.mjs → token-goat-chunk-PQ53BSCF.mjs} +1 -1
  44. package/dist/{token-goat-chunk-STYRLQIW.mjs → token-goat-chunk-PYSUADX4.mjs} +2 -2
  45. package/dist/{token-goat-chunk-JALB3KWJ.mjs → token-goat-chunk-QO3LXVVR.mjs} +4247 -5005
  46. package/dist/{token-goat-chunk-L45IWWMC.mjs → token-goat-chunk-RLP6J7WR.mjs} +6 -6
  47. package/dist/token-goat-chunk-RQGGMPCR.mjs +205 -0
  48. package/dist/{token-goat-chunk-MBDJR6HU.mjs → token-goat-chunk-RTMVLHWX.mjs} +3708 -4003
  49. package/dist/{token-goat-chunk-E3K3BTEQ.mjs → token-goat-chunk-S4VSXURL.mjs} +8 -6
  50. package/dist/{token-goat-chunk-LKSXAMJB.mjs → token-goat-chunk-SE6E4BKJ.mjs} +1 -1
  51. package/dist/token-goat-chunk-TCQANXYC.mjs +351 -0
  52. package/dist/token-goat-chunk-TDUT2CL6.mjs +564 -0
  53. package/dist/{token-goat-chunk-LRIZ7K3F.mjs → token-goat-chunk-TGOXNAHW.mjs} +54 -111
  54. package/dist/{token-goat-chunk-WNBSCSAI.mjs → token-goat-chunk-UA5BKWWQ.mjs} +1 -1
  55. package/dist/{token-goat-chunk-RIB6XY2V.mjs → token-goat-chunk-UXSXQQIY.mjs} +1 -1
  56. package/dist/{token-goat-chunk-7EPYB34H.mjs → token-goat-chunk-VMFWNHGR.mjs} +84 -73
  57. package/dist/token-goat-chunk-VQ6F6T7X.mjs +36 -0
  58. package/dist/{token-goat-chunk-5M3NRJD2.mjs → token-goat-chunk-VZQEWRVH.mjs} +6 -4
  59. package/dist/{token-goat-chunk-OSUFN2FV.mjs → token-goat-chunk-XB5KKOCG.mjs} +5 -25
  60. package/dist/{token-goat-chunk-6E2IDLHF.mjs → token-goat-chunk-XYWPOSCN.mjs} +57 -615
  61. package/dist/{token-goat-chunk-CQHY4SL7.mjs → token-goat-chunk-YAGLESS3.mjs} +8 -5
  62. package/dist/token-goat-chunk-YKSRAWUU.mjs +33 -0
  63. package/dist/{token-goat-chunk-F2ARFHLJ.mjs → token-goat-chunk-YOOVFPTP.mjs} +2 -2
  64. package/dist/{token-goat-chunk-EEIDFMEM.mjs → token-goat-chunk-YZAAZU2S.mjs} +12 -3
  65. package/dist/token-goat-chunk-Z6KBMOBI.mjs +53 -0
  66. package/dist/{token-goat-chunk-4GEDH2WU.mjs → token-goat-chunk-ZER6EAXZ.mjs} +81 -70
  67. package/dist/token-goat-hook-client.cjs +475 -0
  68. package/dist/token-goat-hook-client.mjs +26 -0
  69. package/dist/token-goat-hook.mjs +31 -21
  70. package/dist/token-goat.core.mjs +9 -39
  71. package/docs/C4_RUNTIME_ARCHITECTURE.md +2 -2
  72. package/docs/cli.md +35 -23
  73. package/docs/install.md +18 -14
  74. package/package.json +1 -1
  75. package/dist/token-goat-chunk-ADMR3QVF.mjs +0 -41
  76. package/dist/token-goat-chunk-E6B2UFDF.mjs +0 -30
  77. package/dist/token-goat-chunk-GKZ2US5B.mjs +0 -187
  78. package/dist/token-goat-chunk-MZTO4FXH.mjs +0 -26
@@ -0,0 +1,199 @@
1
+ import { createRequire as __cjsRequire } from 'node:module';
2
+ const require = __cjsRequire(import.meta.url);
3
+ import {
4
+ init_define_import_meta_env
5
+ } from "./token-goat-chunk-A37V4PBF.mjs";
6
+
7
+ // src/version.ts
8
+ init_define_import_meta_env();
9
+ import { createRequire } from "node:module";
10
+ function readManifest() {
11
+ if (true) return JSON.parse('{"version":"2.9.29","name":"token-goat","bugs":{"url":"https://github.com/DFKHelper/token-goat/issues"}}');
12
+ try {
13
+ return createRequire(import.meta.url)("../package.json");
14
+ } catch {
15
+ return {};
16
+ }
17
+ }
18
+ var manifest = readManifest();
19
+ var VERSION = manifest.version ?? "0.0.0";
20
+ var PACKAGE_NAME = manifest.name !== void 0 && manifest.name !== "" ? manifest.name : "token-goat";
21
+ var ISSUES_URL = manifest.bugs?.url !== void 0 && manifest.bugs.url !== "" ? manifest.bugs.url : "https://github.com/DFKHelper/token-goat/issues";
22
+ var SUPPORT_EMAIL = "token-goat@dfkhelper.com";
23
+ function supportRequestLine(what) {
24
+ return `To ask for ${what} support, open an issue at ${ISSUES_URL} or email ${SUPPORT_EMAIL}.`;
25
+ }
26
+
27
+ // src/constants.ts
28
+ init_define_import_meta_env();
29
+ import * as fs from "node:fs";
30
+ import * as os from "node:os";
31
+ import * as path from "node:path";
32
+ function safeEnvDir(value) {
33
+ const stripped = value.trim();
34
+ if (stripped === "") return void 0;
35
+ if (!path.isAbsolute(stripped)) return void 0;
36
+ if (process.platform === "win32") {
37
+ const root = path.parse(stripped).root;
38
+ if (root === "" || root === "\\" || root === "/") return void 0;
39
+ }
40
+ return stripped;
41
+ }
42
+ function dataDirForHome(homeDir) {
43
+ const platform = process.platform;
44
+ if (platform === "win32") {
45
+ return path.join(homeDir, "AppData", "Local", "dfk-helper", "token-goat");
46
+ }
47
+ if (platform === "darwin") {
48
+ return path.join(homeDir, "Library", "Application Support", "token-goat");
49
+ }
50
+ return path.join(homeDir, ".local", "share", "token-goat");
51
+ }
52
+ function homeFallbackOrGuard() {
53
+ const inVitest = process.env["VITEST_WORKER_ID"] !== void 0 || process.env["VITEST"] === "true";
54
+ if (inVitest && process.env["VITEST_ALLOW_REAL_DATA_DIR"] !== "1") {
55
+ throw new Error(
56
+ "token-goat: refusing to resolve DATA_DIR against the real home directory inside a Vitest worker (LOCALAPPDATA/XDG_DATA_HOME is unset). This would read or write the developer's real global.db/config.toml. Set LOCALAPPDATA/XDG_DATA_HOME explicitly for this process, or VITEST_ALLOW_REAL_DATA_DIR=1 if this is an intentional mocked-home test."
57
+ );
58
+ }
59
+ return dataDirForHome(os.homedir());
60
+ }
61
+ function defaultDataDir() {
62
+ const platform = process.platform;
63
+ if (platform === "win32") {
64
+ const raw = process.env["LOCALAPPDATA"] ?? "";
65
+ const base2 = raw ? safeEnvDir(raw) : void 0;
66
+ if (base2 !== void 0) {
67
+ return path.join(base2, "dfk-helper", "token-goat");
68
+ }
69
+ return homeFallbackOrGuard();
70
+ }
71
+ if (platform === "darwin") {
72
+ const raw = process.env["XDG_DATA_HOME"] ?? "";
73
+ const base2 = raw ? safeEnvDir(raw) : void 0;
74
+ if (base2 !== void 0) {
75
+ return path.join(base2, "token-goat");
76
+ }
77
+ return homeFallbackOrGuard();
78
+ }
79
+ const xdg = process.env["XDG_DATA_HOME"] ?? "";
80
+ const base = xdg ? safeEnvDir(xdg) : void 0;
81
+ if (base !== void 0) {
82
+ return path.join(base, "token-goat");
83
+ }
84
+ return homeFallbackOrGuard();
85
+ }
86
+ var DATA_DIR = defaultDataDir();
87
+ function dataDir() {
88
+ return DATA_DIR;
89
+ }
90
+ var dataDirHardened = false;
91
+ function ensureDataDirPrivate() {
92
+ if (dataDirHardened) return;
93
+ try {
94
+ fs.mkdirSync(path.dirname(DATA_DIR), { recursive: true });
95
+ fs.mkdirSync(DATA_DIR, { recursive: true, mode: 448 });
96
+ if (process.platform !== "win32") {
97
+ const current = fs.statSync(DATA_DIR).mode & 511;
98
+ if ((current & 63) !== 0) fs.chmodSync(DATA_DIR, current & 448);
99
+ }
100
+ dataDirHardened = true;
101
+ } catch {
102
+ }
103
+ }
104
+ function tokenGoatHome() {
105
+ const override = safeEnvDir(process.env["TOKEN_GOAT_HOME"] ?? "");
106
+ if (override !== void 0) return override;
107
+ return path.join(os.homedir(), ".token-goat");
108
+ }
109
+ var hardenedHomes = /* @__PURE__ */ new Set();
110
+ function ensureHomeDirPrivate() {
111
+ const home = tokenGoatHome();
112
+ if (hardenedHomes.has(home)) return;
113
+ try {
114
+ fs.mkdirSync(path.dirname(home), { recursive: true });
115
+ fs.mkdirSync(home, { recursive: true, mode: 448 });
116
+ if (process.platform !== "win32") {
117
+ const current = fs.statSync(home).mode & 511;
118
+ if ((current & 63) !== 0) fs.chmodSync(home, current & 448);
119
+ }
120
+ hardenedHomes.add(home);
121
+ } catch {
122
+ }
123
+ }
124
+ function isUnderRoot(child, parent) {
125
+ const rel = path.relative(parent, child);
126
+ return rel === "" || !rel.startsWith("..") && !path.isAbsolute(rel);
127
+ }
128
+ function isTokenGoatStorage(p) {
129
+ return isUnderRoot(p, DATA_DIR) || isUnderRoot(p, tokenGoatHome());
130
+ }
131
+ function ensureStorageRootPrivate(dir) {
132
+ if (isUnderRoot(dir, DATA_DIR)) ensureDataDirPrivate();
133
+ if (isUnderRoot(dir, tokenGoatHome())) ensureHomeDirPrivate();
134
+ }
135
+ function globalDbPath() {
136
+ return path.join(DATA_DIR, "global.db");
137
+ }
138
+ function configPath() {
139
+ return path.join(DATA_DIR, "config.toml");
140
+ }
141
+ var PROJECT_CONFIG_FILENAME = ".token-goat.toml";
142
+ function projectConfigPath(projectRoot) {
143
+ return path.join(projectRoot, PROJECT_CONFIG_FILENAME);
144
+ }
145
+ var ENV_KEYS = {
146
+ COMPACT_ASSIST: "TOKEN_GOAT_COMPACT_ASSIST",
147
+ COMPACT_ASSIST_LEGACY: "TOKENWISE_COMPACT_ASSIST",
148
+ BASH_COMPRESS: "TOKEN_GOAT_BASH_COMPRESS",
149
+ SESSION_BRIEF: "TOKEN_GOAT_SESSION_BRIEF",
150
+ SKILL_PRESERVATION: "TOKEN_GOAT_SKILL_PRESERVATION",
151
+ ORPHAN_SWEEP: "TOKEN_GOAT_ORPHAN_SWEEP",
152
+ HINT_BUDGET: "TOKEN_GOAT_HINT_BUDGET",
153
+ HINT_JSON_SIDECAR: "TOKEN_GOAT_HINT_JSON_SIDECAR",
154
+ BASH_DEDUP_MIN_BYTES: "TOKEN_GOAT_BASH_DEDUP_MIN_BYTES",
155
+ WEB_DEDUP_MIN_BYTES: "TOKEN_GOAT_WEB_DEDUP_MIN_BYTES",
156
+ GREP_DEDUP_MIN_MATCHES: "TOKEN_GOAT_GREP_DEDUP_MIN_MATCHES",
157
+ GLOB_DEDUP_MIN_MATCHES: "TOKEN_GOAT_GLOB_DEDUP_MIN_MATCHES",
158
+ LARGE_READ_BYTES: "TOKEN_GOAT_LARGE_READ_BYTES",
159
+ REPOMAP_COMPACT_THRESHOLD: "TOKEN_GOAT_REPOMAP_COMPACT_THRESHOLD",
160
+ WEB_CACHE_MAX_FILES: "TOKEN_GOAT_WEB_CACHE_MAX_FILES",
161
+ WEB_CACHE_MAX_BYTES: "TOKEN_GOAT_WEB_CACHE_MAX_BYTES",
162
+ WEB_COMPRESS: "TOKEN_GOAT_WEB_COMPRESS",
163
+ BASH_CACHE_MIN_BYTES: "TOKEN_GOAT_BASH_CACHE_MIN_BYTES",
164
+ BASH_CACHE_MAX_FILES: "TOKEN_GOAT_BASH_CACHE_MAX_FILES",
165
+ BASH_CACHE_MAX_BYTES: "TOKEN_GOAT_BASH_CACHE_MAX_BYTES",
166
+ BASH_CACHE_MAX_BYTES_PER_OUTPUT: "TOKEN_GOAT_BASH_CACHE_MAX_BYTES_PER_OUTPUT",
167
+ WORKER_WATCHDOG: "TOKEN_GOAT_WORKER_WATCHDOG",
168
+ WORKER_MAX_POOL: "TOKEN_GOAT_WORKER_MAX_POOL",
169
+ COMPRESS_PROFILE: "TOKEN_GOAT_COMPRESS_PROFILE",
170
+ SKILL_COMPRESS: "TOKEN_GOAT_SKILL_COMPRESS",
171
+ SERVE_DIFF_ON_REREAD: "TOKEN_GOAT_SERVE_DIFF_ON_REREAD",
172
+ ELIDE_SERVED_LINES: "TOKEN_GOAT_ELIDE_SERVED_LINES",
173
+ OVERFLOW_GUARD: "TOKEN_GOAT_OVERFLOW_GUARD",
174
+ OVERFLOW_MAX_TOKENS: "TOKEN_GOAT_OVERFLOW_MAX_TOKENS",
175
+ HARNESS_OVERRIDE: "TOKEN_GOAT_HARNESS_OVERRIDE",
176
+ RECONCILE: "TOKEN_GOAT_RECONCILE",
177
+ RECONCILE_BUDGET_MS: "TOKEN_GOAT_RECONCILE_BUDGET_MS",
178
+ MCP_TOOLS: "TOKEN_GOAT_MCP_TOOLS"
179
+ };
180
+ var SYMBOL_BODY_CHAR_CAP = 128 * 1024;
181
+ var SKELETON_SYMBOL_CAP = 5e3;
182
+
183
+ export {
184
+ VERSION,
185
+ PACKAGE_NAME,
186
+ supportRequestLine,
187
+ dataDirForHome,
188
+ dataDir,
189
+ ensureDataDirPrivate,
190
+ tokenGoatHome,
191
+ isTokenGoatStorage,
192
+ ensureStorageRootPrivate,
193
+ globalDbPath,
194
+ configPath,
195
+ projectConfigPath,
196
+ ENV_KEYS,
197
+ SYMBOL_BODY_CHAR_CAP,
198
+ SKELETON_SYMBOL_CAP
199
+ };