codesift-mcp 0.17.0 → 0.19.2

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 (149) hide show
  1. package/dist/cli/commands-daemon.d.ts.map +1 -1
  2. package/dist/cli/commands-daemon.js +32 -0
  3. package/dist/cli/commands-daemon.js.map +1 -1
  4. package/dist/cli/commands-maintenance.d.ts.map +1 -1
  5. package/dist/cli/commands-maintenance.js +173 -3
  6. package/dist/cli/commands-maintenance.js.map +1 -1
  7. package/dist/cli/hooks/pre-compact.d.ts.map +1 -1
  8. package/dist/cli/hooks/pre-compact.js +4 -0
  9. package/dist/cli/hooks/pre-compact.js.map +1 -1
  10. package/dist/cli/hooks/session.d.ts.map +1 -1
  11. package/dist/cli/hooks/session.js +5 -0
  12. package/dist/cli/hooks/session.js.map +1 -1
  13. package/dist/cli/hooks/wiki.d.ts +13 -0
  14. package/dist/cli/hooks/wiki.d.ts.map +1 -1
  15. package/dist/cli/hooks/wiki.js +19 -2
  16. package/dist/cli/hooks/wiki.js.map +1 -1
  17. package/dist/cli/owner-only-file.d.ts +9 -0
  18. package/dist/cli/owner-only-file.d.ts.map +1 -1
  19. package/dist/cli/owner-only-file.js +40 -8
  20. package/dist/cli/owner-only-file.js.map +1 -1
  21. package/dist/cli/service.d.ts.map +1 -1
  22. package/dist/cli/service.js +7 -1
  23. package/dist/cli/service.js.map +1 -1
  24. package/dist/cli/setup/claude.js +3 -3
  25. package/dist/cli/setup/claude.js.map +1 -1
  26. package/dist/cli/setup/codex.js +4 -4
  27. package/dist/cli/setup/codex.js.map +1 -1
  28. package/dist/cli/setup/fs.d.ts +2 -0
  29. package/dist/cli/setup/fs.d.ts.map +1 -1
  30. package/dist/cli/setup/fs.js +4 -1
  31. package/dist/cli/setup/fs.js.map +1 -1
  32. package/dist/cli/setup/gemini.js +4 -4
  33. package/dist/cli/setup/gemini.js.map +1 -1
  34. package/dist/cli/setup/hooks.d.ts +10 -0
  35. package/dist/cli/setup/hooks.d.ts.map +1 -1
  36. package/dist/cli/setup/hooks.js +25 -3
  37. package/dist/cli/setup/hooks.js.map +1 -1
  38. package/dist/instructions.d.ts +22 -1
  39. package/dist/instructions.d.ts.map +1 -1
  40. package/dist/instructions.js +61 -1
  41. package/dist/instructions.js.map +1 -1
  42. package/dist/lsp/lsp-client.d.ts +1 -1
  43. package/dist/lsp/lsp-client.d.ts.map +1 -1
  44. package/dist/lsp/lsp-client.js +2 -1
  45. package/dist/lsp/lsp-client.js.map +1 -1
  46. package/dist/lsp/lsp-manager.d.ts.map +1 -1
  47. package/dist/lsp/lsp-manager.js +10 -2
  48. package/dist/lsp/lsp-manager.js.map +1 -1
  49. package/dist/lsp/lsp-servers.d.ts +7 -0
  50. package/dist/lsp/lsp-servers.d.ts.map +1 -1
  51. package/dist/lsp/lsp-servers.js +78 -0
  52. package/dist/lsp/lsp-servers.js.map +1 -1
  53. package/dist/parser/parser-manager.d.ts.map +1 -1
  54. package/dist/parser/parser-manager.js +8 -2
  55. package/dist/parser/parser-manager.js.map +1 -1
  56. package/dist/register-tool-groups/core/symbols.d.ts.map +1 -1
  57. package/dist/register-tool-groups/core/symbols.js +71 -6
  58. package/dist/register-tool-groups/core/symbols.js.map +1 -1
  59. package/dist/register-tools/discovery.d.ts +7 -0
  60. package/dist/register-tools/discovery.d.ts.map +1 -1
  61. package/dist/register-tools/discovery.js +8 -1
  62. package/dist/register-tools/discovery.js.map +1 -1
  63. package/dist/search/bm25-store.d.ts +10 -0
  64. package/dist/search/bm25-store.d.ts.map +1 -1
  65. package/dist/search/bm25-store.js +140 -10
  66. package/dist/search/bm25-store.js.map +1 -1
  67. package/dist/search/bm25.d.ts +22 -0
  68. package/dist/search/bm25.d.ts.map +1 -1
  69. package/dist/search/bm25.js +43 -0
  70. package/dist/search/bm25.js.map +1 -1
  71. package/dist/server-helpers/cache-report.d.ts +36 -0
  72. package/dist/server-helpers/cache-report.d.ts.map +1 -0
  73. package/dist/server-helpers/cache-report.js +26 -0
  74. package/dist/server-helpers/cache-report.js.map +1 -0
  75. package/dist/server-helpers/health-vitals.d.ts.map +1 -1
  76. package/dist/server-helpers/health-vitals.js +19 -11
  77. package/dist/server-helpers/health-vitals.js.map +1 -1
  78. package/dist/server-helpers/response-budget.d.ts +24 -0
  79. package/dist/server-helpers/response-budget.d.ts.map +1 -0
  80. package/dist/server-helpers/response-budget.js +29 -0
  81. package/dist/server-helpers/response-budget.js.map +1 -0
  82. package/dist/server-helpers/response-hints.d.ts.map +1 -1
  83. package/dist/server-helpers/response-hints.js +43 -0
  84. package/dist/server-helpers/response-hints.js.map +1 -1
  85. package/dist/server-helpers/shown-source.d.ts +59 -0
  86. package/dist/server-helpers/shown-source.d.ts.map +1 -0
  87. package/dist/server-helpers/shown-source.js +175 -0
  88. package/dist/server-helpers/shown-source.js.map +1 -0
  89. package/dist/server-helpers/stdio-envelope.d.ts +31 -0
  90. package/dist/server-helpers/stdio-envelope.d.ts.map +1 -0
  91. package/dist/server-helpers/stdio-envelope.js +67 -0
  92. package/dist/server-helpers/stdio-envelope.js.map +1 -0
  93. package/dist/server-helpers.d.ts +7 -0
  94. package/dist/server-helpers.d.ts.map +1 -1
  95. package/dist/server-helpers.js +51 -10
  96. package/dist/server-helpers.js.map +1 -1
  97. package/dist/server.d.ts.map +1 -1
  98. package/dist/server.js +107 -45
  99. package/dist/server.js.map +1 -1
  100. package/dist/storage/_shared.d.ts +25 -0
  101. package/dist/storage/_shared.d.ts.map +1 -1
  102. package/dist/storage/_shared.js +39 -6
  103. package/dist/storage/_shared.js.map +1 -1
  104. package/dist/storage/session-state.d.ts +7 -0
  105. package/dist/storage/session-state.d.ts.map +1 -1
  106. package/dist/storage/session-state.js +3 -0
  107. package/dist/storage/session-state.js.map +1 -1
  108. package/dist/storage/shared-embedding-cache.d.ts.map +1 -1
  109. package/dist/storage/shared-embedding-cache.js +153 -2
  110. package/dist/storage/shared-embedding-cache.js.map +1 -1
  111. package/dist/storage/usage-tracker.d.ts +11 -0
  112. package/dist/storage/usage-tracker.d.ts.map +1 -1
  113. package/dist/storage/usage-tracker.js +18 -0
  114. package/dist/storage/usage-tracker.js.map +1 -1
  115. package/dist/tools/conversation-cache.d.ts +23 -3
  116. package/dist/tools/conversation-cache.d.ts.map +1 -1
  117. package/dist/tools/conversation-cache.js +141 -4
  118. package/dist/tools/conversation-cache.js.map +1 -1
  119. package/dist/tools/conversation-index-tools.d.ts +12 -0
  120. package/dist/tools/conversation-index-tools.d.ts.map +1 -1
  121. package/dist/tools/conversation-index-tools.js +315 -4
  122. package/dist/tools/conversation-index-tools.js.map +1 -1
  123. package/dist/tools/conversation-search-tools.d.ts +0 -5
  124. package/dist/tools/conversation-search-tools.d.ts.map +1 -1
  125. package/dist/tools/conversation-search-tools.js +77 -6
  126. package/dist/tools/conversation-search-tools.js.map +1 -1
  127. package/dist/tools/explore-tools.d.ts +9 -0
  128. package/dist/tools/explore-tools.d.ts.map +1 -0
  129. package/dist/tools/explore-tools.js +177 -0
  130. package/dist/tools/explore-tools.js.map +1 -0
  131. package/dist/tools/graph-tools.d.ts +7 -0
  132. package/dist/tools/graph-tools.d.ts.map +1 -1
  133. package/dist/tools/graph-tools.js +36 -0
  134. package/dist/tools/graph-tools.js.map +1 -1
  135. package/dist/tools/index-tools/state.d.ts +15 -1
  136. package/dist/tools/index-tools/state.d.ts.map +1 -1
  137. package/dist/tools/index-tools/state.js +25 -39
  138. package/dist/tools/index-tools/state.js.map +1 -1
  139. package/dist/tools/insights-tools.d.ts.map +1 -1
  140. package/dist/tools/insights-tools.js +6 -3
  141. package/dist/tools/insights-tools.js.map +1 -1
  142. package/dist/utils/import-graph/edge-cache.d.ts.map +1 -1
  143. package/dist/utils/import-graph/edge-cache.js +9 -1
  144. package/dist/utils/import-graph/edge-cache.js.map +1 -1
  145. package/package.json +3 -3
  146. package/rules/codesift.md +19 -0
  147. package/rules/codesift.mdc +19 -0
  148. package/rules/codex.md +19 -0
  149. package/rules/gemini.md +19 -0
@@ -1 +1 @@
1
- {"version":3,"file":"bm25.js","sourceRoot":"","sources":["../../src/search/bm25.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bm25.js","sourceRoot":"","sources":["../../src/search/bm25.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * What the process is holding, per cache, priced the same way each cache prices itself.
3
+ *
4
+ * Every long-lived cache here has a documented budget, and on 2026-09-27 the daemon reached
5
+ * 15,194 MB of a 16,384 MB heap while those budgets summed to about 3.3 GB. Attributing the
6
+ * difference took an afternoon of reading modules and writing standalone probes, because `/health`
7
+ * reports heap TOTAL and nothing about who holds it — so the only way to ask "which cache" was to
8
+ * reproduce each one outside the process and extrapolate.
9
+ *
10
+ * Two of the four things that afternoon found were caches with no bound at all, and neither was
11
+ * visible from outside. The point of this report is that the next such question is a curl, not an
12
+ * investigation:
13
+ *
14
+ * - `entries` is what a count-based bound would have measured, and is the number that misleads;
15
+ * - `bytes` is each cache's OWN estimate — the one its eviction acts on. Where the two disagree
16
+ * with reality the estimate is what matters, because the estimate is what evicts.
17
+ *
18
+ * DO NOT read `vitals.heap_used_mb` minus the sum of these as "unattributed retention". `heapUsed`
19
+ * includes garbage that has not been collected yet, and this process allocates heavily per call —
20
+ * measured 103 s after a restart: heap 3,352 MB against 1,187 MB of priced caches, on a daemon that
21
+ * was holding exactly one index and one BM25 index. Comparing the two is only meaningful after a
22
+ * forced GC, which /health deliberately does not do (a synchronous full GC on a 16 GB heap is its own
23
+ * outage). These numbers answer "which cache is growing, and is its own bound working" — a question
24
+ * that needs a series of samples, not one.
25
+ *
26
+ * `bytes` is deliberately absent, not zero, for a cache that prices nothing: a zero here would read
27
+ * as "holds nothing" when it means "nobody counted", which is the same mistake as an unknown result
28
+ * shape counting as an empty result in the telemetry.
29
+ */
30
+ export interface CacheReportEntry {
31
+ entries: number;
32
+ bytes?: number;
33
+ }
34
+ export type CacheReport = Record<string, CacheReportEntry>;
35
+ export declare function readCacheReport(): Promise<CacheReport>;
36
+ //# sourceMappingURL=cache-report.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-report.d.ts","sourceRoot":"","sources":["../../src/server-helpers/cache-report.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;AAE3D,wBAAsB,eAAe,IAAI,OAAO,CAAC,WAAW,CAAC,CAqB5D"}
@@ -0,0 +1,26 @@
1
+ export async function readCacheReport() {
2
+ const report = {};
3
+ try {
4
+ const state = await import("../tools/index-tools/state.js");
5
+ const stats = state.cacheEntryCounts();
6
+ report["code_indexes"] = { entries: stats.indexes, bytes: stats.index_bytes };
7
+ report["code_bm25"] = { entries: stats.bm25, bytes: stats.bm25_bytes };
8
+ report["embeddings"] = { entries: stats.embeddings };
9
+ }
10
+ catch { /* a cache that cannot be read is reported by its absence */ }
11
+ try {
12
+ const conv = await import("../tools/conversation-cache.js");
13
+ const stats = conv.conversationCacheStats();
14
+ report["conversation_bm25"] = { entries: stats.bm25, bytes: stats.bm25_bytes };
15
+ report["conversation_embeddings"] = { entries: stats.embeddings };
16
+ }
17
+ catch { /* ditto */ }
18
+ try {
19
+ const gate = await import("../tools/index-tools/load-gate.js");
20
+ const { active, waiting } = gate.indexLoadGateState();
21
+ report["index_load_gate"] = { entries: active + waiting };
22
+ }
23
+ catch { /* ditto */ }
24
+ return report;
25
+ }
26
+ //# sourceMappingURL=cache-report.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-report.js","sourceRoot":"","sources":["../../src/server-helpers/cache-report.ts"],"names":[],"mappings":"AAoCA,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,MAAM,MAAM,GAAgB,EAAE,CAAC;IAC/B,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,+BAA+B,CAAC,CAAC;QAC5D,MAAM,KAAK,GAAG,KAAK,CAAC,gBAAgB,EAAE,CAAC;QACvC,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC;QAC9E,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;QACvE,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC,CAAC,4DAA4D,CAAC,CAAC;IACxE,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,gCAAgC,CAAC,CAAC;QAC5D,MAAM,KAAK,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC5C,MAAM,CAAC,mBAAmB,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;QAC/E,MAAM,CAAC,yBAAyB,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;IACpE,CAAC;IAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC;IACvB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,mCAAmC,CAAC,CAAC;QAC/D,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACtD,MAAM,CAAC,iBAAiB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,EAAE,CAAC;IAC5D,CAAC;IAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC;IACvB,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"health-vitals.d.ts","sourceRoot":"","sources":["../../src/server-helpers/health-vitals.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,WAAW,MAAM;IACrB,sFAAsF;IACtF,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAOD;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,UAAU,GAAE,MAA2B,GAAG,IAAI,CAUzE;AAED,wBAAgB,UAAU,IAAI,IAAI,CAIjC;AAED,6DAA6D;AAC7D,wBAAgB,yBAAyB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAE1D;AAcD,wBAAgB,UAAU,IAAI,MAAM,CAYnC;AAYD,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,IAAI,GAAG,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAStF"}
1
+ {"version":3,"file":"health-vitals.d.ts","sourceRoot":"","sources":["../../src/server-helpers/health-vitals.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,WAAW,MAAM;IACrB,sFAAsF;IACtF,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAOD;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,UAAU,GAAE,MAA2B,GAAG,IAAI,CAUzE;AAED,wBAAgB,UAAU,IAAI,IAAI,CAIjC;AAED,6DAA6D;AAC7D,wBAAgB,yBAAyB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAE1D;AAuBD,wBAAgB,UAAU,IAAI,MAAM,CAYnC;AAYD,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,IAAI,GAAG,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAStF"}
@@ -1,5 +1,5 @@
1
- import { totalmem } from "node:os";
2
1
  import { memoryUsage } from "node:process";
2
+ import { getHeapStatistics } from "node:v8";
3
3
  let lagMs = 0;
4
4
  let timer = null;
5
5
  const SAMPLE_INTERVAL_MS = 500;
@@ -31,16 +31,24 @@ export function setEventLoopLagForTesting(ms) {
31
31
  lagMs = ms;
32
32
  }
33
33
  function heapLimitMb() {
34
- // The ceiling this process was actually started with, not a guess: the LaunchAgent passes
35
- // --max-old-space-size, and reading it back is the only way the percentage below means anything.
36
- const flag = process.execArgv.find((a) => a.startsWith("--max-old-space-size="));
37
- const parsed = flag ? Number.parseInt(flag.split("=")[1] ?? "", 10) : Number.NaN;
38
- if (Number.isFinite(parsed) && parsed > 0)
39
- return parsed;
40
- // No flag: V8's default is derived from system memory and is what the OOM crash-loop hit on this
41
- // machine (4288 MB on 128 GB of RAM). Approximating it is better than reporting a percentage of
42
- // nothing, and the value is only ever used to say "how close are we".
43
- return Math.min(4096, Math.max(2048, Math.round(totalmem() / 1024 ** 2 / 32)));
34
+ // V8's OWN number, not a parse of how this process was started. `getHeapStatistics().heap_size_limit`
35
+ // is authoritative in every case — a flag in argv, a flag in NODE_OPTIONS, or no flag at all — and it
36
+ // costs nothing.
37
+ //
38
+ // The previous version read `process.execArgv` for `--max-old-space-size=` and, failing that,
39
+ // APPROXIMATED the default as `min(4096, max(2048, totalmem/32))`. Both halves were wrong somewhere:
40
+ //
41
+ // - `execArgv` is EMPTY when the flag arrives through NODE_OPTIONS, which is how the systemd user
42
+ // unit sets it on Linux (the macOS LaunchAgent puts it in argv, so that platform read correctly
43
+ // and this went unnoticed). Measured on a 187 GB Linux host: the daemon genuinely had 8,384 MB
44
+ // and /health reported 4,096 — so `heap_used_pct` was inflated 2x and `classifyVitals` would
45
+ // have declared memory pressure at half the real usage.
46
+ // - the approximation could not even produce the value its own comment named: V8's default on that
47
+ // class of machine is 4,288 MB, and `min(4096, …)` caps below it.
48
+ //
49
+ // Measured directly on that host: NODE_OPTIONS set -> heap_size_limit 8,384 MB with an empty
50
+ // execArgv; unset -> 4,288 MB. One call answers both.
51
+ return Math.round(getHeapStatistics().heap_size_limit / 1024 ** 2);
44
52
  }
45
53
  export function readVitals() {
46
54
  const mem = memoryUsage();
@@ -1 +1 @@
1
- {"version":3,"file":"health-vitals.js","sourceRoot":"","sources":["../../src/server-helpers/health-vitals.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"health-vitals.js","sourceRoot":"","sources":["../../src/server-helpers/health-vitals.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * The response ceiling, in one place.
3
+ *
4
+ * formatResponse cuts anything above it, and the shown-source ledger must know it too: a symbol
5
+ * body that the cap is about to drop was never delivered, so recording it as "shown" would later
6
+ * earn the agent an "unchanged" pointer for code it never received (found in review of 29b8025).
7
+ */
8
+ import { CHARS_PER_TOKEN } from "../tools/search-tools/constants.js";
9
+ export { CHARS_PER_TOKEN };
10
+ /** Default hard cap on one tool response. */
11
+ export declare const MAX_RESPONSE_TOKENS = 30000;
12
+ /**
13
+ * Room the truncation notice needs (counts + saved-path line). The cap is a promise about what the
14
+ * agent receives, so the notice comes out of the budget instead of landing on top of it.
15
+ */
16
+ export declare const TRUNCATION_NOTICE_RESERVE_CHARS = 600;
17
+ /**
18
+ * CODESIFT_MAX_RESPONSE_TOKENS lowers (or raises) the ceiling for hosts with a smaller tool-result
19
+ * budget; unparseable values and anything under 500 keep the default.
20
+ */
21
+ export declare function resolveMaxResponseTokens(): number;
22
+ /** Characters of body text a response may carry before formatResponse starts cutting. */
23
+ export declare function responseBodyCharBudget(): number;
24
+ //# sourceMappingURL=response-budget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response-budget.d.ts","sourceRoot":"","sources":["../../src/server-helpers/response-budget.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAErE,OAAO,EAAE,eAAe,EAAE,CAAC;AAE3B,6CAA6C;AAC7C,eAAO,MAAM,mBAAmB,QAAS,CAAC;AAE1C;;;GAGG;AACH,eAAO,MAAM,+BAA+B,MAAM,CAAC;AAEnD;;;GAGG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,CAGjD;AAED,yFAAyF;AACzF,wBAAgB,sBAAsB,IAAI,MAAM,CAE/C"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * The response ceiling, in one place.
3
+ *
4
+ * formatResponse cuts anything above it, and the shown-source ledger must know it too: a symbol
5
+ * body that the cap is about to drop was never delivered, so recording it as "shown" would later
6
+ * earn the agent an "unchanged" pointer for code it never received (found in review of 29b8025).
7
+ */
8
+ import { CHARS_PER_TOKEN } from "../tools/search-tools/constants.js";
9
+ export { CHARS_PER_TOKEN };
10
+ /** Default hard cap on one tool response. */
11
+ export const MAX_RESPONSE_TOKENS = 30_000;
12
+ /**
13
+ * Room the truncation notice needs (counts + saved-path line). The cap is a promise about what the
14
+ * agent receives, so the notice comes out of the budget instead of landing on top of it.
15
+ */
16
+ export const TRUNCATION_NOTICE_RESERVE_CHARS = 600;
17
+ /**
18
+ * CODESIFT_MAX_RESPONSE_TOKENS lowers (or raises) the ceiling for hosts with a smaller tool-result
19
+ * budget; unparseable values and anything under 500 keep the default.
20
+ */
21
+ export function resolveMaxResponseTokens() {
22
+ const raw = Number(process.env["CODESIFT_MAX_RESPONSE_TOKENS"]);
23
+ return Number.isFinite(raw) && raw >= 500 ? Math.floor(raw) : MAX_RESPONSE_TOKENS;
24
+ }
25
+ /** Characters of body text a response may carry before formatResponse starts cutting. */
26
+ export function responseBodyCharBudget() {
27
+ return Math.floor(resolveMaxResponseTokens() * CHARS_PER_TOKEN) - TRUNCATION_NOTICE_RESERVE_CHARS;
28
+ }
29
+ //# sourceMappingURL=response-budget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response-budget.js","sourceRoot":"","sources":["../../src/server-helpers/response-budget.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAErE,OAAO,EAAE,eAAe,EAAE,CAAC;AAE3B,6CAA6C;AAC7C,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC;AAE1C;;;GAGG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,GAAG,CAAC;AAEnD;;;GAGG;AACH,MAAM,UAAU,wBAAwB;IACtC,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC,CAAC;IAChE,OAAO,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC;AACpF,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,sBAAsB;IACpC,OAAO,IAAI,CAAC,KAAK,CAAC,wBAAwB,EAAE,GAAG,eAAe,CAAC,GAAG,+BAA+B,CAAC;AACpG,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"response-hints.d.ts","sourceRoot":"","sources":["../../src/server-helpers/response-hints.ts"],"names":[],"mappings":"AAiBA,0EAA0E;AAC1E,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAkB3D;AAwGD,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,IAAI,EACjC,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,IAAI,GACnC,IAAI,CAGN;AAmBD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAwK/G;AAED,wBAAgB,cAAc,IAAI,IAAI,CASrC"}
1
+ {"version":3,"file":"response-hints.d.ts","sourceRoot":"","sources":["../../src/server-helpers/response-hints.ts"],"names":[],"mappings":"AAmBA,0EAA0E;AAC1E,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAkB3D;AAgJD,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,IAAI,EACjC,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,IAAI,GACnC,IAAI,CAGN;AAmBD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAwK/G;AAED,wBAAgB,cAAc,IAAI,IAAI,CASrC"}
@@ -3,6 +3,8 @@ import { currentCwd } from "./request-context.js";
3
3
  import { findWorkingTree, isAnswerFromWrongTree } from "../utils/worktree.js";
4
4
  import { getCallCount, getSessionState } from "../storage/session-state.js";
5
5
  const HIGH_CARDINALITY_THRESHOLD = 50;
6
+ /** How many distinct repo names H19 remembers having warned about. See `worktreeMismatchNote`. */
7
+ const H19_REPO_MEMORY_CAP = 200;
6
8
  const BATCHABLE_TOOLS = new Set(["search_text", "search_symbols", "find_references", "get_symbol"]);
7
9
  const SEQUENTIAL_HINT_THRESHOLD = 3;
8
10
  let lastToolName = "";
@@ -84,11 +86,42 @@ function isTestAntipatternQuery(query) {
84
86
  // H9 = question-word text query, use semantic search
85
87
  // H19 = answering from a DIFFERENT git working tree than your CWD
86
88
  // ---------------------------------------------------------------------------
89
+ /**
90
+ * True when the caller NAMED the tree it was answered from, rather than being handed it.
91
+ *
92
+ * `getRepoName` suffixes a LINKED worktree's registry name with `@<worktree>`, and a bare name
93
+ * never contains `@` — so the suffix is precisely the signal that the caller picked this tree on
94
+ * purpose. Resolution has already matched the string to that entry, so there is nothing to warn
95
+ * about: the answer describes the files that were asked for.
96
+ *
97
+ * This is what H19 was missing, and it dominated the hint. Measured on this machine over 14 days:
98
+ * 2,721 H19 firings, **2,678 of them (98.4%) on a repo named with the `@` suffix**, 0 on a path —
99
+ * and `search_text` calls carrying H19 came back EMPTY LESS often than calls without it (19.1% vs
100
+ * 23.8%), which is the opposite of what a wrong-tree answer looks like. The advice was wrong too:
101
+ * `index_folder(path=<cwd>)` addresses the caller's own tree, which is not the tree it asked about.
102
+ *
103
+ * The dangerous case is untouched, because it cannot carry a suffix: a BARE name resolving to the
104
+ * main checkout while the CWD is a linked worktree is exactly how an agent silently gets another
105
+ * checkout's files (ResearchShield: 4042 lines served for a file that was 1415 in the caller's own
106
+ * tree). An absolute path also keeps warning — it binds to any registered ancestor, which is the
107
+ * same hazard wearing different clothes.
108
+ */
109
+ function callerNamedThisWorktree(repo, root) {
110
+ if (!repo.includes("@"))
111
+ return false;
112
+ return findWorkingTree(root)?.linked === true;
113
+ }
87
114
  /**
88
115
  * Build the H19 note when the resolved repo is a different working tree than
89
116
  * the process CWD. Returns null in the ordinary case (same checkout), so this
90
117
  * costs nothing on the hot path beyond one stat walk.
91
118
  *
119
+ * Emitted at most ONCE per repo per session. It used to ride every single call, which is how one
120
+ * 26-hour session collected 932 copies of it — all 932 after that session's first `index_folder`,
121
+ * because the session was deliberately working across several trees of one repo from one CWD. A
122
+ * banner that repeats 932 times has stopped being information and is teaching the agent to skip
123
+ * hints; the honest form is to say it once and then be quiet.
124
+ *
92
125
  * Best-effort by design: any failure resolving git or registry state yields no
93
126
  * hint rather than a wrong one.
94
127
  */
@@ -101,6 +134,16 @@ function worktreeMismatchNote(args) {
101
134
  const root = repoRootFor(repo);
102
135
  if (!root || !isAnswerFromWrongTree(cwd, root))
103
136
  return null;
137
+ if (callerNamedThisWorktree(repo, root))
138
+ return null;
139
+ const state = getSessionState();
140
+ if (state.h19EmittedFor.has(repo))
141
+ return null;
142
+ // Bounded: this process outlives every session in the shared daemon, and an unbounded Set keyed
143
+ // by caller-supplied strings is a leak with a friendly face. At the cap the hint simply repeats
144
+ // again, which is the safe direction to fail.
145
+ if (state.h19EmittedFor.size < H19_REPO_MEMORY_CAP)
146
+ state.h19EmittedFor.add(repo);
104
147
  const tree = findWorkingTree(cwd);
105
148
  const what = tree?.linked ? "a linked worktree" : "a different checkout";
106
149
  return `⚡H19 answering from "${repo}" (${root}) but your CWD is ${what} (${tree?.root ?? cwd}) `
@@ -1 +1 @@
1
- {"version":3,"file":"response-hints.js","sourceRoot":"","sources":["../../src/server-helpers/response-hints.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"response-hints.js","sourceRoot":"","sources":["../../src/server-helpers/response-hints.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Text every pointer starts with. The response cache must never store a response containing it:
3
+ * a cached pointer would be replayed after a compaction, telling the agent it holds code it lost.
4
+ */
5
+ export declare const SHOWN_SOURCE_POINTER_MARK = "[source unchanged (";
6
+ export declare function compactionMarkerPath(): string;
7
+ /**
8
+ * Called by the PreCompact and SessionStart hooks: from now on, everything shown earlier counts as
9
+ * unseen. The timestamp is written as the file's CONTENT and read back from it, so both sides of
10
+ * the comparison come from Date.now() — mtime has a different clock and, on some filesystems,
11
+ * a coarser resolution.
12
+ */
13
+ export declare function touchCompactionMarker(): void;
14
+ /**
15
+ * Turn the ledger on for this process. Only the stdio entry point calls this, and
16
+ * CODESIFT_DEDUP_SOURCE=0 keeps it off there too.
17
+ */
18
+ export declare function enableShownSourceLedger(): void;
19
+ export declare function resetShownSourceLedgerForTesting(on?: boolean): void;
20
+ interface SourceBearing {
21
+ id: string;
22
+ source?: string | undefined;
23
+ file?: string;
24
+ name?: string;
25
+ start_line?: number;
26
+ }
27
+ /** What to render for one symbol, and how to record it once it is known to have been delivered. */
28
+ export interface ShownSourceView<T> {
29
+ symbol: T;
30
+ /** Pointer line to print under the header, or "" when the body is sent. */
31
+ note: string;
32
+ /** Record the body as shown. No-op for a pointer view and while the ledger is off. */
33
+ commit(): void;
34
+ }
35
+ /**
36
+ * The symbol to render: `source` replaced by a pointer when this exact body was already delivered
37
+ * in this conversation. Nothing is recorded here — see `commitDelivered`.
38
+ */
39
+ export declare function elideShownSource<T extends SourceBearing>(sym: T, options?: {
40
+ force?: boolean;
41
+ }): ShownSourceView<T>;
42
+ /**
43
+ * Commit the views whose rendered text lands inside the response budget, in response order.
44
+ *
45
+ * The budget models the hard cap only. formatResponse's compact/counts cascade would rewrite a
46
+ * body away earlier, but it runs only for tools with a registered shortener, and none of the
47
+ * source-returning tools (get_symbol, get_symbols, find_and_show, get_context_bundle, explore) has
48
+ * one. Registering a shortener for any of them requires teaching this function about it first.
49
+ *
50
+ * `chars` is the length of that view's rendered block. Blocks past the budget are the ones
51
+ * formatResponse will cut, so they are not recorded — the agent will not have received them.
52
+ * Call only after the full response text has been built successfully.
53
+ */
54
+ export declare function commitDelivered(parts: ReadonlyArray<{
55
+ view: ShownSourceView<unknown>;
56
+ chars: number;
57
+ }>, budgetChars?: number): void;
58
+ export {};
59
+ //# sourceMappingURL=shown-source.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shown-source.d.ts","sourceRoot":"","sources":["../../src/server-helpers/shown-source.ts"],"names":[],"mappings":"AAwCA;;;GAGG;AACH,eAAO,MAAM,yBAAyB,wBAAwB,CAAC;AAe/D,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CAO5C;AAmBD;;;GAGG;AACH,wBAAgB,uBAAuB,IAAI,IAAI,CAE9C;AAED,wBAAgB,gCAAgC,CAAC,EAAE,UAAQ,GAAG,IAAI,CAGjE;AAED,UAAU,aAAa;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAaD,mGAAmG;AACnG,MAAM,WAAW,eAAe,CAAC,CAAC;IAChC,MAAM,EAAE,CAAC,CAAC;IACV,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAC;IACb,sFAAsF;IACtF,MAAM,IAAI,IAAI,CAAC;CAChB;AAWD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,aAAa,EACtD,GAAG,EAAE,CAAC,EACN,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAC5B,eAAe,CAAC,CAAC,CAAC,CAoCpB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,aAAa,CAAC;IAAE,IAAI,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,EACvE,WAAW,GAAE,MAA6D,GACzE,IAAI,CAON"}
@@ -0,0 +1,175 @@
1
+ /**
2
+ * Don't send the same source twice in one conversation.
3
+ *
4
+ * `get_symbol` / `get_symbols` / `find_and_show` / `get_context_bundle` return a symbol's full body
5
+ * every time it is asked for, and agents ask again — a method read to understand it, then again to
6
+ * edit it, then again inside a context bundle. Each repeat is a copy the model already holds.
7
+ * codegraph v1.6 answers a repeat with a pointer ("unchanged") instead; this is the same idea.
8
+ *
9
+ * Two conditions make a pointer the WRONG answer, and both are guarded:
10
+ *
11
+ * - **The conversation is not the process.** The shared HTTP daemon answers every client on the
12
+ * machine from one process, so "shown before" there means "shown to someone". The ledger is
13
+ * therefore off unless the stdio entry point turns it on — over stdio the process IS the session.
14
+ * - **The model no longer holds it.** Context compaction drops old tool results. The PreCompact
15
+ * hook touches `<dataDir>/compaction.marker`, and anything shown before the marker's mtime is
16
+ * treated as never shown. The marker is machine-wide, so a compaction in any session makes every
17
+ * session resend — the conservative direction. Entries also expire after a TTL, for hosts that
18
+ * compact without running hooks.
19
+ *
20
+ * A changed body (different hash) is always resent: the pointer claims "unchanged", so it may only
21
+ * be given when that is true.
22
+ *
23
+ * **Checking and recording are separate steps.** A body counts as shown only once the caller has
24
+ * built the whole response and knows the body survives it: `commit()` on each view, via
25
+ * `commitDelivered`, which skips anything the response cap is about to cut. Recording at check time
26
+ * (the first version) marked bodies as shown that formatting then failed on, that `explore` clipped,
27
+ * or that the cap truncated — and each of those earned a later "unchanged" pointer for code the agent
28
+ * never received.
29
+ *
30
+ * `/clear` in Claude Code keeps the stdio server alive, so a new conversation inherits the process.
31
+ * The SessionStart hook therefore touches the same marker as PreCompact: any fresh context resets.
32
+ */
33
+ import { createHash } from "node:crypto";
34
+ import { readFileSync, statSync, writeFileSync, mkdirSync } from "node:fs";
35
+ import { join } from "node:path";
36
+ import { homedir } from "node:os";
37
+ import { responseBodyCharBudget } from "./response-budget.js";
38
+ const DEFAULT_TTL_MS = 30 * 60_000;
39
+ /**
40
+ * Text every pointer starts with. The response cache must never store a response containing it:
41
+ * a cached pointer would be replayed after a compaction, telling the agent it holds code it lost.
42
+ */
43
+ export const SHOWN_SOURCE_POINTER_MARK = "[source unchanged (";
44
+ const MAX_ENTRIES = 5_000;
45
+ const ledger = new Map();
46
+ let enabled = false;
47
+ function dataDir() {
48
+ return process.env["CODESIFT_DATA_DIR"] ?? join(homedir(), ".codesift");
49
+ }
50
+ export function compactionMarkerPath() {
51
+ return join(dataDir(), "compaction.marker");
52
+ }
53
+ /**
54
+ * Called by the PreCompact and SessionStart hooks: from now on, everything shown earlier counts as
55
+ * unseen. The timestamp is written as the file's CONTENT and read back from it, so both sides of
56
+ * the comparison come from Date.now() — mtime has a different clock and, on some filesystems,
57
+ * a coarser resolution.
58
+ */
59
+ export function touchCompactionMarker() {
60
+ try {
61
+ mkdirSync(dataDir(), { recursive: true });
62
+ writeFileSync(compactionMarkerPath(), String(Date.now()));
63
+ }
64
+ catch {
65
+ // A hook must never fail the host's compaction; the TTL still bounds the damage.
66
+ }
67
+ }
68
+ function lastCompactionAt() {
69
+ const path = compactionMarkerPath();
70
+ try {
71
+ const written = Number(readFileSync(path, "utf-8").trim());
72
+ if (Number.isFinite(written) && written > 0)
73
+ return written;
74
+ // Unparseable content (hand-touched file): fall back to mtime rather than to "never".
75
+ return statSync(path).mtimeMs;
76
+ }
77
+ catch {
78
+ return 0;
79
+ }
80
+ }
81
+ function ttlMs() {
82
+ const raw = Number(process.env["CODESIFT_SHOWN_SOURCE_TTL_MS"]);
83
+ return Number.isFinite(raw) && raw > 0 ? raw : DEFAULT_TTL_MS;
84
+ }
85
+ /**
86
+ * Turn the ledger on for this process. Only the stdio entry point calls this, and
87
+ * CODESIFT_DEDUP_SOURCE=0 keeps it off there too.
88
+ */
89
+ export function enableShownSourceLedger() {
90
+ enabled = process.env["CODESIFT_DEDUP_SOURCE"] !== "0";
91
+ }
92
+ export function resetShownSourceLedgerForTesting(on = false) {
93
+ ledger.clear();
94
+ enabled = on;
95
+ }
96
+ /**
97
+ * Ledger key. NOT the raw id: tools hand back the same symbol as `repo:file:name:line` or as
98
+ * `file:name:line` depending on the lookup path (find_and_show vs get_symbols), so keying on the id
99
+ * made a body shown by one tool look unseen to the next.
100
+ */
101
+ function ledgerKey(sym) {
102
+ return sym.file !== undefined && sym.name !== undefined && sym.start_line !== undefined
103
+ ? `${sym.file}:${sym.name}:${sym.start_line}`
104
+ : sym.id;
105
+ }
106
+ const NOOP = () => { };
107
+ /**
108
+ * formatResponse prepends a savings line and response hints BEFORE the body, so the body's own
109
+ * budget is smaller than the cap by that much. Conservative: over-reserving only means a block near
110
+ * the edge is resent later, never that a cut block is claimed as delivered.
111
+ */
112
+ const HINT_PREFIX_RESERVE_CHARS = 1_000;
113
+ /**
114
+ * The symbol to render: `source` replaced by a pointer when this exact body was already delivered
115
+ * in this conversation. Nothing is recorded here — see `commitDelivered`.
116
+ */
117
+ export function elideShownSource(sym, options) {
118
+ if (!enabled || !sym.source)
119
+ return { symbol: sym, note: "", commit: NOOP };
120
+ const source = sym.source;
121
+ const hash = createHash("sha1").update(source).digest("hex");
122
+ const key = ledgerKey(sym);
123
+ const prior = ledger.get(key);
124
+ const stillHeld = prior !== undefined
125
+ && prior.hash === hash
126
+ && Date.now() - prior.shownAt < ttlMs()
127
+ && prior.shownAt > lastCompactionAt();
128
+ if (stillHeld && !options?.force) {
129
+ const { source: _omitted, ...rest } = sym;
130
+ const lines = source.split("\n").length;
131
+ return {
132
+ symbol: rest,
133
+ note: ` ${SHOWN_SOURCE_POINTER_MARK}${lines} lines, id ${sym.id}) — already shown in this ` +
134
+ "conversation; repeat the call with full_source=true to resend it]",
135
+ commit: NOOP,
136
+ };
137
+ }
138
+ return {
139
+ symbol: sym,
140
+ note: "",
141
+ commit: () => {
142
+ // Map preserves insertion order: delete-then-set moves the entry to the end, so the oldest
143
+ // entry is always first and eviction is a single iterator step.
144
+ ledger.delete(key);
145
+ ledger.set(key, { hash, shownAt: Date.now() });
146
+ if (ledger.size > MAX_ENTRIES) {
147
+ const oldest = ledger.keys().next().value;
148
+ if (oldest !== undefined)
149
+ ledger.delete(oldest);
150
+ }
151
+ },
152
+ };
153
+ }
154
+ /**
155
+ * Commit the views whose rendered text lands inside the response budget, in response order.
156
+ *
157
+ * The budget models the hard cap only. formatResponse's compact/counts cascade would rewrite a
158
+ * body away earlier, but it runs only for tools with a registered shortener, and none of the
159
+ * source-returning tools (get_symbol, get_symbols, find_and_show, get_context_bundle, explore) has
160
+ * one. Registering a shortener for any of them requires teaching this function about it first.
161
+ *
162
+ * `chars` is the length of that view's rendered block. Blocks past the budget are the ones
163
+ * formatResponse will cut, so they are not recorded — the agent will not have received them.
164
+ * Call only after the full response text has been built successfully.
165
+ */
166
+ export function commitDelivered(parts, budgetChars = responseBodyCharBudget() - HINT_PREFIX_RESERVE_CHARS) {
167
+ let used = 0;
168
+ for (const { view, chars } of parts) {
169
+ used += chars;
170
+ if (used > budgetChars)
171
+ return;
172
+ view.commit();
173
+ }
174
+ }
175
+ //# sourceMappingURL=shown-source.js.map