token-goat 2.9.4 → 2.9.5

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.
@@ -86,7 +86,7 @@ import {
86
86
  runZipRead,
87
87
  symbolNamesInFile,
88
88
  upsertNote
89
- } from "./token-goat-chunk-US57I7GN.mjs";
89
+ } from "./token-goat-chunk-4P6GTCMM.mjs";
90
90
  import {
91
91
  DEFAULT_RECONCILE_BUDGET_MS,
92
92
  GEMINI_TOOL_NAME_MAP,
@@ -108,7 +108,7 @@ import {
108
108
  runReconcile,
109
109
  storeWebOutput,
110
110
  summarizeResidentContext
111
- } from "./token-goat-chunk-FSC44QOH.mjs";
111
+ } from "./token-goat-chunk-JO5JX72D.mjs";
112
112
  import {
113
113
  AGENT_SALT_MARKER,
114
114
  BASH_OUTPUT_SUBDIR,
@@ -240,7 +240,7 @@ import {
240
240
  visionTokensSavedByText,
241
241
  walkProject,
242
242
  writeCompact
243
- } from "./token-goat-chunk-CBO45DYZ.mjs";
243
+ } from "./token-goat-chunk-U4FTM2SB.mjs";
244
244
  import {
245
245
  C,
246
246
  CONFIG_KEY_ENV_OVERRIDES,
@@ -366,7 +366,7 @@ import {
366
366
  withFileLock,
367
367
  withRetryOnLock,
368
368
  writeJsonSettings
369
- } from "./token-goat-chunk-3ZR4NLB3.mjs";
369
+ } from "./token-goat-chunk-ZOKNDG6V.mjs";
370
370
  import {
371
371
  __export,
372
372
  init_define_import_meta_env
@@ -5952,6 +5952,7 @@ function statsJsonPayload(summary) {
5952
5952
  by_command: summary.by_command,
5953
5953
  by_source: summary.by_source,
5954
5954
  by_harness: summary.by_harness,
5955
+ by_pricing_version: summary.by_pricing_version,
5955
5956
  counts: summary.counts,
5956
5957
  window_days: summary.window_days
5957
5958
  };
@@ -6488,7 +6489,9 @@ var LOCKED_BOOLEAN_SAFE_VALUE = {
6488
6489
  "screenshot.block_private_targets": true,
6489
6490
  "network.offline": true,
6490
6491
  "indexing.cross_project_symbols": false,
6491
- "hints.fold_code_bodies": false,
6492
+ // `hints.fold_code_bodies` is deliberately absent for the same reason as `hints.fold_prose_paragraphs` below: it now ships on. Its cost was the thing keeping it off, and that cost is now measured rather than assumed -- 6.6 points of recovery reads beyond what the same symbols draw anyway, against a fold that withholds a whole function body. It remains project-locked, so the environment deciding it is still reported by the value-replacement arm.
6493
+ // `hints.fold_prose_paragraphs` is deliberately absent: it now ships on, so neither direction is a weakening. Setting it true restates the shipped default, and setting it false shows the reader MORE of a document, so warning on either would break this file's own rule that a default install stays quiet. It remains project-locked, so the environment deciding it is still worth reporting, which is what the value-replacement arm below does.
6494
+ // The three remaining hints keys, fold_comment_blocks and outline_large_documents and skeleton_large_sources, are absent for exactly the same reason and just as deliberately: each ships on, so neither direction of an override is a weakening, and a false entry here would make a default install warn about itself. All three stay project-locked, so the environment deciding one is still reported by the value-replacement arm below.
6492
6495
  "webfetch.compress_bodies": true
6493
6496
  };
6494
6497
  function lockedEnvOverridableKeys() {
@@ -6555,9 +6558,15 @@ function checkSecurityPosture(cfg, dataDirPath) {
6555
6558
  cfg.mcp.confine_reads_to_project_root ? {
6556
6559
  name: "Security mcp roots",
6557
6560
  status: "ok",
6558
- message: extraRoots === 0 ? "reads are confined to the project root" : `reads are confined to the project root plus ${extraRoots} configured root${extraRoots === 1 ? "" : "s"}`
6561
+ // Two separate controls, and reporting only the first read as a guarantee about the second. `confine_reads_to_project_root` keeps a read inside the root the caller named; `mcp.allowed_roots` decides which roots may be named at all, and empty means any of them (assertRootAllowed returns early). Saying "confined to the project root" while the caller picks that root overstates the confinement, so the empty case now names itself.
6562
+ message: extraRoots === 0 ? "reads are confined to the project root the caller names, but mcp.allowed_roots is empty, so an MCP caller may name any root on this machine" : `reads are confined to the project root, and callers may name only the ${extraRoots} root${extraRoots === 1 ? "" : "s"} in mcp.allowed_roots`
6559
6563
  } : { name: "Security mcp roots", status: "warn", message: "confinement is off (mcp.confine_reads_to_project_root): a read can leave the project" }
6560
6564
  );
6565
+ results.push({
6566
+ name: "Security symbol scope",
6567
+ status: "ok",
6568
+ message: cfg.indexing.cross_project_symbols ? "symbol lookups can resolve into other projects in the machine-wide index (indexing.cross_project_symbols = false confines them to this project)" : "symbol lookups are confined to this project"
6569
+ });
6561
6570
  const overridden = envOverriddenSecuritySettings();
6562
6571
  const weakened = overridden.filter((o) => o.kind === "weakened");
6563
6572
  const replaced = overridden.filter((o) => o.kind === "replaced");
@@ -14093,15 +14102,15 @@ var READ_DIVERT_MARKER_RE = /(?:was already read this session|Already read |You'
14093
14102
  var READ_DIVERT_MAX_BYTES = 2500;
14094
14103
  var READ_FULL_SERVE_MIN_BYTES = 10240;
14095
14104
  var DENY_TEMPLATES = [
14096
- { kind: "node_modules_deny", re: /node_modules is typically noise/ },
14097
- { kind: "lock_file_deny", re: /Lock files are rarely useful to read in full/ },
14098
- { kind: "tsbuildinfo_deny", re: /TypeScript incremental build cache file/ },
14099
- { kind: "generated_build_deny", re: /Generated\/build artifact — read the source file instead\./ },
14100
- { kind: "compact_sidecar_served", re: /Serving the extractive compact sidecar in place of the full file/ },
14101
- { kind: "notebook_sidecar_served", re: /Serving the output-stripped notebook in place of the full file/ },
14105
+ { kind: "node_modules_deny", re: /node_modules is typically noise/, tool: "Read" },
14106
+ { kind: "lock_file_deny", re: /Lock files are rarely useful to read in full/, tool: "Read" },
14107
+ { kind: "tsbuildinfo_deny", re: /TypeScript incremental build cache file/, tool: "Read" },
14108
+ { kind: "generated_build_deny", re: /Generated\/build artifact — read the source file instead\./, tool: "Read" },
14109
+ { kind: "compact_sidecar_served", re: /Serving the extractive compact sidecar in place of the full file/, tool: "Read" },
14110
+ { kind: "notebook_sidecar_served", re: /Serving the output-stripped notebook in place of the full file/, tool: "Read" },
14102
14111
  // Must stay ABOVE markdown_heading_tree_deny: this deny's message embeds the same "Large markdown file (N headings)" guidance block, so the generic alternative would swallow it and the new intervention would be uncountable. DENY_TEMPLATES is scanned with `.find`, so the more specific wording has to come first.
14103
- { kind: "subagent_markdown_first_read_deny", re: /Subagent first read of a large markdown file/ },
14104
- { kind: "markdown_heading_tree_deny", re: /Large markdown file \(\d+ headings\)/ },
14112
+ { kind: "subagent_markdown_first_read_deny", re: /Subagent first read of a large markdown file/, tool: "Read" },
14113
+ { kind: "markdown_heading_tree_deny", re: /Large markdown file \(\d+ headings\)/, tool: "Read" },
14105
14114
  // The first alternative is a wording hooks_read.ts no longer emits (it claimed a compact-manifest
14106
14115
  // section that never existed, reworded in 3d044feb). It stays because this table classifies a
14107
14116
  // historical corpus, not just today's output: transcripts written before the rewording still
@@ -14109,24 +14118,32 @@ var DENY_TEMPLATES = [
14109
14118
  // 30 -- 41% of its history -- with a green suite. A superseded alternative is only removable
14110
14119
  // once no transcript contains it, which source code cannot tell you. See the superseded-wording
14111
14120
  // test in tests/deny_outcomes.test.ts.
14112
- { kind: "memory_md_reread_deny", re: /MEMORY\.md was read this session\. Its content is in the compact manifest|already read this session\. Memory files rarely change mid-session/ },
14113
- { kind: "improve_state_reread_deny", re: /Orchestrator state already read this session/ },
14114
- { kind: "env_reread_deny", re: /Environment files rarely change mid-session/ },
14115
- { kind: "session_artifact_truncated_deny", re: /File was truncated on last read\. Use `token-goat bash-output/ },
14116
- { kind: "session_artifact_unchanged_deny", re: /is unchanged since last read\. Use `token-goat bash-output/ },
14117
- { kind: "session_artifact_diff_deny", re: /Content changed since last read of [\s\S]*?bash-output --file/ },
14118
- { kind: "session_artifact_large_deny", re: /(?:Session transcript|Tool-result file) is large \(/ },
14119
- { kind: "session_artifact_generic_reread_deny", re: /already read this session\. Use `token-goat bash-output --file/ },
14120
- { kind: "truncated_read_deny", re: /File was truncated on last read \(>33K tokens\)/ },
14121
- { kind: "doc_unchanged_deny", re: /is unchanged since last read\. Use `token-goat (?:section|read)/ },
14122
- { kind: "doc_diff_deny", re: /Content changed since last read of [\s\S]*?Use `token-goat (?:section|read)/ },
14123
- { kind: "read_served_deny", re: /was already served in this session, byte for byte/ },
14124
- { kind: "markdown_already_read_deny", re: /Markdown file already read this session\. Use `token-goat section/ },
14125
- { kind: "read_count_deny", re: /Read this file \d+ times already/ },
14126
- { kind: "generic_reread_deny", re: /was already read this session \(\d+ read/ },
14127
- { kind: "large_file_deny", re: /is very large \(\d+(?:\.\d+)?KB\)\./ },
14128
- { kind: "file_type_handler_deny", re: /too large to preview \(exceeds the in-hook scan cap\)|cannot be read as text\.|Read cannot return spreadsheet content|Read cannot return slide content|Read cannot return document content|Use Read with offset and limit parameters to read specific line ranges/ }
14121
+ { kind: "memory_md_reread_deny", re: /MEMORY\.md was read this session\. Its content is in the compact manifest|already read this session\. Memory files rarely change mid-session/, tool: "Read" },
14122
+ { kind: "improve_state_reread_deny", re: /Orchestrator state already read this session/, tool: "Read" },
14123
+ { kind: "env_reread_deny", re: /Environment files rarely change mid-session/, tool: "Read" },
14124
+ { kind: "session_artifact_truncated_deny", re: /File was truncated on last read\. Use `token-goat bash-output/, tool: "Read" },
14125
+ { kind: "session_artifact_unchanged_deny", re: /is unchanged since last read\. Use `token-goat bash-output/, tool: "Read" },
14126
+ { kind: "session_artifact_diff_deny", re: /Content changed since last read of [\s\S]*?bash-output --file/, tool: "Read" },
14127
+ { kind: "session_artifact_large_deny", re: /(?:Session transcript|Tool-result file) is large \(/, tool: "Read" },
14128
+ { kind: "session_artifact_generic_reread_deny", re: /already read this session\. Use `token-goat bash-output --file/, tool: "Read" },
14129
+ { kind: "truncated_read_deny", re: /File was truncated on last read \(>33K tokens\)/, tool: "Read" },
14130
+ { kind: "doc_unchanged_deny", re: /is unchanged since last read\. Use `token-goat (?:section|read)/, tool: "Read" },
14131
+ { kind: "doc_diff_deny", re: /Content changed since last read of [\s\S]*?Use `token-goat (?:section|read)/, tool: "Read" },
14132
+ { kind: "read_served_deny", re: /was already served in this session, byte for byte/, tool: "Read" },
14133
+ { kind: "markdown_already_read_deny", re: /Markdown file already read this session\. Use `token-goat section/, tool: "Read" },
14134
+ { kind: "read_count_deny", re: /Read this file \d+ times already/, tool: "Read" },
14135
+ { kind: "generic_reread_deny", re: /was already read this session \(\d+ read/, tool: "Read" },
14136
+ { kind: "large_file_deny", re: /is very large \(\d+(?:\.\d+)?KB\)\./, tool: "Read" },
14137
+ { kind: "file_type_handler_deny", re: /too large to preview \(exceeds the in-hook scan cap\)|cannot be read as text\.|Read cannot return spreadsheet content|Read cannot return slide content|Read cannot return document content|Use Read with offset and limit parameters to read specific line ranges/, tool: "Read" },
14138
+ // Skill-tool denies from src/hooks_skill.ts's preSkillHandler -- kind names prefixed skill_ so they read as a family, distinct from the Read-deny kinds above. The two heading-tree wordings share the prose around them ("...its heading tree...instead of the full body. Use `token-goat skill-section NAME '<heading>'`...") but each anchors on an infix the other never emits -- truncated always says "shows N of M headings below" (no "inlined"), complete always says "(N headings) is inlined below" (no "shows") -- so neither regex can match the other's text; skill_heading_tree_truncated_deny is still listed first on the same specific-before-generic principle as markdown_heading_tree_deny above, in case a future rewording narrows the gap.
14139
+ { kind: "skill_already_loaded_deny", re: /was already loaded this session and is cached/, tool: "Skill" },
14140
+ { kind: "skill_compact_slice_deny", re: /has a compact slice available/, tool: "Skill" },
14141
+ // The compact slice has two outcomes and they are separate kinds because they cost different things: the pointer above withholds the slice behind a command, this one inlines the slice and withholds only the rest of the body. Its "(N bytes) is inlined below" cannot collide with the heading-tree wording below, which requires "heading tree (N headings) is inlined below".
14142
+ { kind: "skill_compact_slice_inlined_deny", re: /compact slice \(\d+ bytes\) is inlined below instead of the full body/, tool: "Skill" },
14143
+ { kind: "skill_heading_tree_truncated_deny", re: /heading tree shows \d+ of \d+ headings below instead of the full body/, tool: "Skill" },
14144
+ { kind: "skill_heading_tree_complete_deny", re: /heading tree \(\d+ headings\) is inlined below instead of the full body/, tool: "Skill" }
14129
14145
  ];
14146
+ var DENY_TEMPLATE_KINDS = DENY_TEMPLATES.map((t) => t.kind);
14130
14147
  var DENY_KINDS_WITH_SIZE = /* @__PURE__ */ new Set(["large_file_deny", "session_artifact_large_deny", "file_type_handler_deny"]);
14131
14148
  var DENY_SIZE_RE = /(\d+(?:\.\d+)?)\s*(B|KB|MB|GB|TB)\b/;
14132
14149
  function parseWithheldBytes(kind, text) {
@@ -14396,9 +14413,8 @@ async function auditOneFile(filePath, s, toolMap, attachmentMap, hookMap, laneOb
14396
14413
  s.editErrorBaseline.totalErrors += 1;
14397
14414
  editErrorById.set(id, true);
14398
14415
  }
14399
- if (name === "Read") {
14400
- s.readInterception.readResults += 1;
14401
- const denyTemplate = DENY_TEMPLATES.find((t) => t.re.test(text));
14416
+ if (name === "Read" || name === "Skill") {
14417
+ const denyTemplate = DENY_TEMPLATES.find((t) => t.tool === name && t.re.test(text));
14402
14418
  if (denyTemplate !== void 0) {
14403
14419
  const path31 = readPathById.get(id) ?? "";
14404
14420
  const lastSlash = path31.lastIndexOf("/");
@@ -14413,6 +14429,9 @@ async function auditOneFile(filePath, s, toolMap, attachmentMap, hookMap, laneOb
14413
14429
  toolCalls: []
14414
14430
  });
14415
14431
  }
14432
+ }
14433
+ if (name === "Read") {
14434
+ s.readInterception.readResults += 1;
14416
14435
  if (bytes < READ_DIVERT_MAX_BYTES && READ_DIVERT_MARKER_RE.test(text)) {
14417
14436
  s.readInterception.divertedByMarker += 1;
14418
14437
  s.readInterception.divertedBytes += bytes;
@@ -14942,7 +14961,7 @@ function analyzeMcpCache() {
14942
14961
  const metrics = serverMetrics.get(toolName);
14943
14962
  metrics.callCount += 1;
14944
14963
  metrics.totalBytes += sizeBytes;
14945
- metrics.perCallEstimate = Math.floor(metrics.totalBytes / metrics.callCount / 3) + 1;
14964
+ metrics.perCallEstimate = estimateTokensFromLength(metrics.totalBytes / metrics.callCount);
14946
14965
  }
14947
14966
  return serverMetrics;
14948
14967
  }
@@ -15711,7 +15730,7 @@ async function cmdMcpServe() {
15711
15730
  let StdioServerTransport;
15712
15731
  try {
15713
15732
  ;
15714
- ({ createMcpServer } = await import("./token-goat-chunk-OZAEJQ7L.mjs"));
15733
+ ({ createMcpServer } = await import("./token-goat-chunk-DRL5USXI.mjs"));
15715
15734
  ({ StdioServerTransport } = await import("./token-goat-chunk-EVC4TOLE.mjs"));
15716
15735
  } catch (err2) {
15717
15736
  process.stderr.write(
@@ -15736,7 +15755,7 @@ async function cmdHook(event, opts) {
15736
15755
  if (typeof opts.harness === "string" && opts.harness.length > 0) {
15737
15756
  process.env[ENV_KEYS.HARNESS_OVERRIDE] = opts.harness;
15738
15757
  }
15739
- const { relay } = await import("./token-goat-chunk-EQKNR7CN.mjs");
15758
+ const { relay } = await import("./token-goat-chunk-GFBXHGFY.mjs");
15740
15759
  await relay(event);
15741
15760
  }
15742
15761
  async function cmdInstall(opts) {
@@ -16278,23 +16297,22 @@ async function cmdPdfLocate(file, pattern, opts) {
16278
16297
  if (opts.maxMatches !== void 0) locateOpts.maxMatches = requirePositiveInt("--max-matches", opts.maxMatches);
16279
16298
  if (opts.context !== void 0) locateOpts.context = requirePositiveInt("--context", opts.context);
16280
16299
  if (opts.pages !== void 0) locateOpts.pages = opts.pages;
16281
- const matches2 = await runPdfLocate(file, pattern, locateOpts);
16300
+ const { matches: matches2, truncated } = await runPdfLocate(file, pattern, locateOpts);
16282
16301
  const pages = matches2.map((m) => m.page);
16283
16302
  let printed;
16284
16303
  if (opts.json === true) {
16285
16304
  const fencedMatches = matches2.map((m) => ({ ...m, snippet: fenceFileFieldIfMatched(m.snippet) }));
16286
- printed = JSON.stringify({ file, pattern, matchCount: fencedMatches.length, pages, matches: fencedMatches }, null, 2);
16305
+ printed = JSON.stringify({ file, pattern, matchCount: fencedMatches.length, truncated, pages, matches: fencedMatches }, null, 2);
16287
16306
  out(printed);
16288
16307
  } else if (matches2.length === 0) {
16289
16308
  printed = "(no matches)";
16290
16309
  out(printed);
16291
16310
  } else {
16292
16311
  const lines = matches2.map((m) => `p${m.page}: ${m.snippet}`);
16293
- printed = fenceFileText(
16294
- `${lines.join("\n")}
16312
+ const summary = truncated ? `at least ${countNoun(matches2.length, "match", "matches")} across at least ${countNoun(pages.length, "page")}; scan stopped at --max-matches, raise it for more` : `${countNoun(matches2.length, "match", "matches")} across ${countNoun(pages.length, "page")}`;
16313
+ printed = fenceFileText(`${lines.join("\n")}
16295
16314
 
16296
- ${countNoun(matches2.length, "match", "matches")} across ${countNoun(pages.length, "page")}`
16297
- );
16315
+ ${summary}`);
16298
16316
  out(printed);
16299
16317
  }
16300
16318
  const fullSourceBytes = fileSizeOrZero(file);
@@ -16670,7 +16688,7 @@ function emitExtraFileArgsNote(command, first, extras, opts = {}) {
16670
16688
  }
16671
16689
  async function cmdCompress(opts) {
16672
16690
  try {
16673
- const bashRunner = await import("./token-goat-chunk-5BHXZEOI.mjs");
16691
+ const bashRunner = await import("./token-goat-chunk-KFFAZ5DJ.mjs");
16674
16692
  if (opts.compress === false) {
16675
16693
  process.exitCode = bashRunner.runRaw(opts.cmd, parseTimeout(opts.timeout, bashRunner.DEFAULT_TIMEOUT_SECONDS));
16676
16694
  return;
@@ -25,7 +25,7 @@ import {
25
25
  runSkeleton,
26
26
  runSymbol,
27
27
  withPinnedReads
28
- } from "./token-goat-chunk-US57I7GN.mjs";
28
+ } from "./token-goat-chunk-4P6GTCMM.mjs";
29
29
  import {
30
30
  buildProjectMap,
31
31
  embeddingsDepsAvailable,
@@ -34,7 +34,7 @@ import {
34
34
  getProjectIndexCounts,
35
35
  isWorkerRunning,
36
36
  mapLookupBytesSaved
37
- } from "./token-goat-chunk-CBO45DYZ.mjs";
37
+ } from "./token-goat-chunk-U4FTM2SB.mjs";
38
38
  import {
39
39
  ENV_KEYS,
40
40
  VERSION,
@@ -48,7 +48,7 @@ import {
48
48
  recordStat,
49
49
  resolveProjectRoot,
50
50
  savedTokensFromBytes
51
- } from "./token-goat-chunk-3ZR4NLB3.mjs";
51
+ } from "./token-goat-chunk-ZOKNDG6V.mjs";
52
52
  import "./token-goat-chunk-EEIDFMEM.mjs";
53
53
  import {
54
54
  init_define_import_meta_env
@@ -4,14 +4,14 @@ import {
4
4
  buildEvent,
5
5
  relay,
6
6
  relayInProcess
7
- } from "./token-goat-chunk-63XEQMNU.mjs";
7
+ } from "./token-goat-chunk-ZLP6TCGN.mjs";
8
8
  import {
9
9
  MAX_STDIN_BYTES,
10
10
  readStdinJson
11
- } from "./token-goat-chunk-FSC44QOH.mjs";
12
- import "./token-goat-chunk-CBO45DYZ.mjs";
13
- import "./token-goat-chunk-EPX5DWGM.mjs";
14
- import "./token-goat-chunk-3ZR4NLB3.mjs";
11
+ } from "./token-goat-chunk-JO5JX72D.mjs";
12
+ import "./token-goat-chunk-U4FTM2SB.mjs";
13
+ import "./token-goat-chunk-HTJP6FHK.mjs";
14
+ import "./token-goat-chunk-ZOKNDG6V.mjs";
15
15
  import "./token-goat-chunk-EEIDFMEM.mjs";
16
16
  import "./token-goat-chunk-A37V4PBF.mjs";
17
17
  export {
@@ -2,7 +2,7 @@ import { createRequire as __cjsRequire } from 'node:module';
2
2
  const require = __cjsRequire(import.meta.url);
3
3
  import {
4
4
  detectHarness
5
- } from "./token-goat-chunk-3ZR4NLB3.mjs";
5
+ } from "./token-goat-chunk-ZOKNDG6V.mjs";
6
6
  import {
7
7
  init_define_import_meta_env
8
8
  } from "./token-goat-chunk-A37V4PBF.mjs";
@@ -78,6 +78,7 @@ function canRunWrappedShell() {
78
78
  }
79
79
 
80
80
  export {
81
+ bashOutputCapBytes,
81
82
  deliveredOutputBytes,
82
83
  wrappedShell,
83
84
  canRunWrappedShell
@@ -9,7 +9,7 @@ import {
9
9
  isBlobStale,
10
10
  loadBlob,
11
11
  storeBlob
12
- } from "./token-goat-chunk-CBO45DYZ.mjs";
12
+ } from "./token-goat-chunk-U4FTM2SB.mjs";
13
13
  import {
14
14
  SYMBOL_BODY_CHAR_CAP,
15
15
  copilotCliMcpToolsDir,
@@ -24,7 +24,7 @@ import {
24
24
  resolveIndexPath,
25
25
  shortFingerprint,
26
26
  toDisplayPath
27
- } from "./token-goat-chunk-3ZR4NLB3.mjs";
27
+ } from "./token-goat-chunk-ZOKNDG6V.mjs";
28
28
  import {
29
29
  registerReset
30
30
  } from "./token-goat-chunk-EEIDFMEM.mjs";
@@ -3,7 +3,7 @@ const require = __cjsRequire(import.meta.url);
3
3
  import {
4
4
  deliveredOutputBytes,
5
5
  wrappedShell
6
- } from "./token-goat-chunk-EPX5DWGM.mjs";
6
+ } from "./token-goat-chunk-HTJP6FHK.mjs";
7
7
  import {
8
8
  ToolFilter,
9
9
  capTokens,
@@ -15,7 +15,7 @@ import {
15
15
  recordStat,
16
16
  selectFilter,
17
17
  shlexSplit
18
- } from "./token-goat-chunk-3ZR4NLB3.mjs";
18
+ } from "./token-goat-chunk-ZOKNDG6V.mjs";
19
19
  import "./token-goat-chunk-EEIDFMEM.mjs";
20
20
  import {
21
21
  init_define_import_meta_env