knitbrain 0.1.2 → 0.2.0

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 (55) hide show
  1. package/README.md +66 -23
  2. package/dist/engine/agents.d.ts +4 -0
  3. package/dist/engine/agents.js +3 -2
  4. package/dist/engine/agents.js.map +1 -1
  5. package/dist/engine/feedback.js +1 -1
  6. package/dist/engine/feedback.js.map +1 -1
  7. package/dist/evals.d.ts +53 -0
  8. package/dist/evals.js +189 -0
  9. package/dist/evals.js.map +1 -0
  10. package/dist/index.js +20 -0
  11. package/dist/index.js.map +1 -1
  12. package/dist/learn.d.ts +39 -0
  13. package/dist/learn.js +289 -0
  14. package/dist/learn.js.map +1 -0
  15. package/dist/lib.d.ts +37 -0
  16. package/dist/lib.js +17 -0
  17. package/dist/lib.js.map +1 -0
  18. package/dist/mcp/instructions.d.ts +7 -0
  19. package/dist/mcp/instructions.js +29 -0
  20. package/dist/mcp/instructions.js.map +1 -0
  21. package/dist/mcp/tools.js +47 -12
  22. package/dist/mcp/tools.js.map +1 -1
  23. package/dist/optimizer/ast.d.ts +11 -0
  24. package/dist/optimizer/ast.js +99 -29
  25. package/dist/optimizer/ast.js.map +1 -1
  26. package/dist/optimizer/code.js +1 -1
  27. package/dist/optimizer/code.js.map +1 -1
  28. package/dist/optimizer/router.d.ts +3 -1
  29. package/dist/optimizer/router.js +32 -7
  30. package/dist/optimizer/router.js.map +1 -1
  31. package/dist/optimizer/structured.d.ts +43 -0
  32. package/dist/optimizer/structured.js +196 -0
  33. package/dist/optimizer/structured.js.map +1 -0
  34. package/dist/optimizer/text.js +38 -7
  35. package/dist/optimizer/text.js.map +1 -1
  36. package/dist/optimizer/types.d.ts +4 -2
  37. package/dist/platforms.d.ts +11 -1
  38. package/dist/platforms.js +34 -1
  39. package/dist/platforms.js.map +1 -1
  40. package/dist/proxy/cache-aligner.d.ts +25 -4
  41. package/dist/proxy/cache-aligner.js +45 -4
  42. package/dist/proxy/cache-aligner.js.map +1 -1
  43. package/dist/proxy/optimize-request.d.ts +10 -0
  44. package/dist/proxy/optimize-request.js +96 -6
  45. package/dist/proxy/optimize-request.js.map +1 -1
  46. package/dist/proxy/server.js +2 -2
  47. package/dist/proxy/server.js.map +1 -1
  48. package/dist/server.js +5 -1
  49. package/dist/server.js.map +1 -1
  50. package/dist/setup.d.ts +1 -1
  51. package/dist/setup.js +30 -1
  52. package/dist/setup.js.map +1 -1
  53. package/dist/version.d.ts +1 -1
  54. package/dist/version.js +1 -1
  55. package/package.json +11 -2
@@ -2,6 +2,20 @@ import { createRequire } from "node:module";
2
2
  import { dirname, join } from "node:path";
3
3
  /** Don't elide bodies smaller than this many source characters (matches scanner). */
4
4
  const MIN_BODY_CHARS = 40;
5
+ /** Grammars shipped in @vscode/tree-sitter-wasm that we load. */
6
+ const GRAMMARS = [
7
+ "typescript",
8
+ "tsx",
9
+ "python",
10
+ "go",
11
+ "rust",
12
+ "java",
13
+ "cpp",
14
+ "c-sharp",
15
+ "ruby",
16
+ "php",
17
+ "bash",
18
+ ];
5
19
  let state = "idle";
6
20
  const parsers = new Map();
7
21
  /** Whether the WASM parsers are loaded and usable right now (sync check). */
@@ -32,7 +46,7 @@ export function ensureAst() {
32
46
  const wasmDir = dirname(pkgMain);
33
47
  const ts = require("@vscode/tree-sitter-wasm");
34
48
  await ts.Parser.init();
35
- for (const lang of ["typescript", "tsx", "python"]) {
49
+ for (const lang of GRAMMARS) {
36
50
  const language = await ts.Language.load(join(wasmDir, `tree-sitter-${lang}.wasm`));
37
51
  const parser = new ts.Parser();
38
52
  parser.setLanguage(language);
@@ -50,7 +64,39 @@ export function ensureAst() {
50
64
  function looksPython(text) {
51
65
  return /^\s*(def \w+.*:|async def \w+.*:|class \w+(\(.*\))?:|from \S+ import )/m.test(text);
52
66
  }
53
- /** Function-like node types whose `body` field is elidable, per grammar. */
67
+ /**
68
+ * Cheap language hint → ordered grammar candidates. Parsing is the expensive
69
+ * step (the profiler routes thousands of blocks), so we try at most 3-4
70
+ * grammars per block instead of all eleven. TS/TSX stay in every list as the
71
+ * generalist fallback — their error recovery elides most brace-language code.
72
+ */
73
+ export function grammarCandidates(text) {
74
+ const out = [];
75
+ if (looksPython(text))
76
+ out.push("python");
77
+ if (/^(package \w+$|func (\(\w+ \*?\w+\) )?\w+\()/m.test(text))
78
+ out.push("go");
79
+ if (/^\s*(pub\s+)?(fn \w+|impl[\s<]|trait \w+|mod \w+)/m.test(text) || /\blet mut \w+/.test(text))
80
+ out.push("rust");
81
+ if (/#include\s*[<"]|\bstd::|template\s*</.test(text))
82
+ out.push("cpp");
83
+ if (/^\s*(import java\.|package [a-z][\w.]*;|@Override\b)/m.test(text))
84
+ out.push("java");
85
+ if (/^\s*(using System|namespace [A-Z][\w.]*[\s;{]|public (async )?Task[\s<])/m.test(text))
86
+ out.push("c-sharp");
87
+ if (/<\?php|^\s*(public |private )?function \w+\(.*\)\s*\{?$/m.test(text) && /\$\w+/.test(text))
88
+ out.push("php");
89
+ if (/^#!\s*\/(usr\/)?bin\/(env )?(ba)?sh/m.test(text) || /^\s*(fi|done|esac)$/m.test(text))
90
+ out.push("bash");
91
+ if (/^\s*def \w+.*[^:]$/m.test(text) && /^\s*end$/m.test(text))
92
+ out.push("ruby");
93
+ out.push("typescript", "tsx");
94
+ if (!out.includes("python") && /^\s*def \w+/m.test(text))
95
+ out.push("python");
96
+ // dedup, cap the parse budget
97
+ return [...new Set(out)].slice(0, 4);
98
+ }
99
+ /** Function-like node types whose `body` field is elidable, across grammars. */
54
100
  const BODY_OWNERS = new Set([
55
101
  // TS / TSX / JS
56
102
  "function_declaration",
@@ -59,43 +105,67 @@ const BODY_OWNERS = new Set([
59
105
  "generator_function_declaration",
60
106
  "method_definition",
61
107
  "arrow_function",
62
- // Python
108
+ // Python (also: cpp/php/bash reuse "function_definition")
63
109
  "function_definition",
110
+ // Go
111
+ "method_declaration", // also Java / C#
112
+ "func_literal",
113
+ // Rust
114
+ "function_item",
115
+ "closure_expression",
116
+ // Java / C#
117
+ "constructor_declaration",
118
+ "lambda_expression",
119
+ "local_function_statement",
120
+ // Ruby
121
+ "method",
122
+ "singleton_method",
123
+ ]);
124
+ /** Body node types that are elidable blocks (braces OR indentation/end-delimited). */
125
+ const BLOCK_TYPES = new Set([
126
+ "statement_block", // TS/JS
127
+ "block", // Python (indent), Go/Rust/Java/C# (braces)
128
+ "compound_statement", // C++ / PHP / Bash
129
+ "constructor_body", // Java
130
+ "body_statement", // Ruby (def…end)
64
131
  ]);
132
+ /** Comment node types across grammars. */
133
+ const COMMENT_TYPES = new Set(["comment", "line_comment", "block_comment"]);
65
134
  /** Comments / docstrings shorter than this stay inline. */
66
135
  const MIN_COMMENT_CHARS = 120;
67
136
  /**
68
137
  * Walk the tree collecting elidable ranges — function/method bodies, long
69
138
  * comment blocks, and module docstrings — skipping subtrees already elided.
70
139
  */
71
- function collectElisions(root, src, isPython) {
140
+ function collectElisions(root, src, hashComments) {
72
141
  const out = [];
73
142
  const lineCount = (start, end) => src.slice(start, end).split("\n").length;
74
143
  const commentMarker = (start, end) => {
75
144
  const n = lineCount(start, end);
76
- return isPython || src.slice(start, start + 1) === "#"
77
- ? `# …${n}-line comment`
78
- : `/* …${n}-line comment */`;
145
+ if (hashComments || src.slice(start, start + 1) === "#")
146
+ return `# …${n}-line comment`;
147
+ if (src.slice(start, start + 2) === "//")
148
+ return `// …${n}-line comment`;
149
+ return `/* …${n}-line comment */`;
79
150
  };
80
151
  const visit = (node) => {
81
152
  if (BODY_OWNERS.has(node.type)) {
82
153
  const body = node.childForFieldName("body");
83
- if (body !== null) {
84
- const brace = body.type === "statement_block";
85
- const isBlock = brace || body.type === "block";
86
- if (isBlock) {
87
- const start = brace ? body.startIndex + 1 : body.startIndex;
88
- const end = brace ? body.endIndex - 1 : body.endIndex;
89
- if (end - start >= MIN_BODY_CHARS) {
90
- const n = lineCount(start, end);
91
- out.push({ start, end, replacement: brace ? ` …${n} lines ` : `…${n} lines` });
92
- return; // don't descend into an elided body
93
- }
154
+ if (body !== null && BLOCK_TYPES.has(body.type)) {
155
+ // Brace blocks (first char `{`) keep their braces in the skeleton;
156
+ // indentation (Python) / end-delimited (Ruby) bodies elide whole.
157
+ const brace = src.slice(body.startIndex, body.startIndex + 1) === "{";
158
+ const start = brace ? body.startIndex + 1 : body.startIndex;
159
+ const end = brace ? body.endIndex - 1 : body.endIndex;
160
+ if (end - start >= MIN_BODY_CHARS) {
161
+ const n = lineCount(start, end);
162
+ out.push({ start, end, replacement: brace ? ` …${n} lines ` : `…${n} lines` });
163
+ return; // don't descend into an elided body
94
164
  }
95
165
  }
96
166
  }
97
167
  // Module docstrings: low-signal in a skeleton, recoverable from CCR.
98
- const isDocstring = isPython && node.type === "expression_statement" && node.namedChild(0)?.type === "string";
168
+ const isDocstring = hashComments && node.type === "expression_statement" && node.namedChild(0)?.type === "string";
99
169
  if (isDocstring && node.endIndex - node.startIndex >= MIN_COMMENT_CHARS) {
100
170
  out.push({
101
171
  start: node.startIndex,
@@ -110,12 +180,12 @@ function collectElisions(root, src, isPython) {
110
180
  let i = 0;
111
181
  while (i < node.namedChildCount) {
112
182
  const child = node.namedChild(i);
113
- if (child.type === "comment") {
183
+ if (COMMENT_TYPES.has(child.type)) {
114
184
  let j = i;
115
185
  let end = child.endIndex;
116
186
  while (j + 1 < node.namedChildCount) {
117
187
  const next = node.namedChild(j + 1);
118
- if (next.type !== "comment")
188
+ if (!COMMENT_TYPES.has(next.type))
119
189
  break;
120
190
  if (/\S/.test(src.slice(end, next.startIndex)))
121
191
  break; // gap has code
@@ -135,6 +205,8 @@ function collectElisions(root, src, isPython) {
135
205
  visit(root);
136
206
  return out;
137
207
  }
208
+ /** Grammars whose line comments are `#`-style (marker + docstring handling). */
209
+ const HASH_COMMENT_GRAMMARS = new Set(["python", "ruby", "bash"]);
138
210
  /**
139
211
  * Compress source code via tree-sitter: keep imports, signatures, types,
140
212
  * decorators, class headers; elide function/method bodies. Returns null when
@@ -149,13 +221,11 @@ export function compressCodeAst(original, ccr) {
149
221
  // Real transcript blocks are messy (snippets, prose-wrapped pastes), so a
150
222
  // parse-error gate rejects nearly everything. Elision only ever touches
151
223
  // well-formed function nodes — error recovery just yields fewer matches —
152
- // so instead: parse with every grammar and keep whichever elides the most.
153
- const candidates = looksPython(original)
154
- ? ["python", "typescript", "tsx"]
155
- : ["typescript", "tsx", "python"];
224
+ // so instead: parse the hinted grammars and keep whichever elides the most.
225
+ const candidates = grammarCandidates(original);
156
226
  let elisions = [];
157
227
  let elidedChars = 0;
158
- let isPython = false;
228
+ let hashStyle = false;
159
229
  for (const langName of candidates) {
160
230
  const parser = parsers.get(langName);
161
231
  if (!parser)
@@ -163,12 +233,12 @@ export function compressCodeAst(original, ccr) {
163
233
  const tree = parser.parse(original);
164
234
  if (tree === null)
165
235
  continue;
166
- const found = collectElisions(tree.rootNode, original, langName === "python");
236
+ const found = collectElisions(tree.rootNode, original, HASH_COMMENT_GRAMMARS.has(langName));
167
237
  const chars = found.reduce((s, e) => s + (e.end - e.start), 0);
168
238
  if (chars > elidedChars) {
169
239
  elisions = found;
170
240
  elidedChars = chars;
171
- isPython = langName === "python";
241
+ hashStyle = HASH_COMMENT_GRAMMARS.has(langName);
172
242
  }
173
243
  }
174
244
  if (elisions.length === 0)
@@ -182,7 +252,7 @@ export function compressCodeAst(original, ccr) {
182
252
  }
183
253
  parts.push(original.slice(cursor));
184
254
  const handle = ccr.put(original);
185
- const marker = isPython ? `# ⟨ccr:${handle}⟩` : `// ⟨ccr:${handle}⟩`;
255
+ const marker = hashStyle ? `# ⟨ccr:${handle}⟩` : `// ⟨ccr:${handle}⟩`;
186
256
  const skeleton = `${parts.join("")}\n${marker}`;
187
257
  return { skeleton, handle, contentType: "code" };
188
258
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ast.js","sourceRoot":"","sources":["../../src/optimizer/ast.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ast.js","sourceRoot":"","sources":["../../src/optimizer/ast.ts"],"names":[],"mappings":"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"}
@@ -12,7 +12,7 @@ const MIN_BODY_CHARS = 40;
12
12
  /** Cheap structural test: looks like source code (braces + a code keyword), or an indentation language (Python). */
13
13
  export function isCode(text) {
14
14
  if (/[{};]/.test(text) &&
15
- /\b(function|const|let|var|class|import|export|def|fn|public|private|interface|type)\b/.test(text)) {
15
+ /\b(function|const|let|var|class|import|export|def|fn|func|impl|package|namespace|public|private|interface|type)\b/.test(text)) {
16
16
  return true;
17
17
  }
18
18
  return /^(def \w+.*:|class \w+(\(.*\))?:|from \S+ import |import \S+$|async def \w+)/m.test(text);
@@ -1 +1 @@
1
- {"version":3,"file":"code.js","sourceRoot":"","sources":["../../src/optimizer/code.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"code.js","sourceRoot":"","sources":["../../src/optimizer/code.ts"],"names":[],"mappings":"AAGA,gFAAgF;AAChF,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC;IAC/B,IAAI;IACJ,KAAK;IACL,OAAO;IACP,QAAQ;IACR,OAAO;IACP,MAAM;CACP,CAAC,CAAC;AAEH,mEAAmE;AACnE,MAAM,cAAc,GAAG,EAAE,CAAC;AAE1B,oHAAoH;AACpH,MAAM,UAAU,MAAM,CAAC,IAAY;IACjC,IACE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;QAClB,mHAAmH,CAAC,IAAI,CACtH,IAAI,CACL,EACD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,+EAA+E,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpG,CAAC;AAED;;;;GAIG;AACH,SAAS,sBAAsB,CAAC,GAAW;IACzC,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC1B,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC;IACrB,IAAI,CAAC,GAAG,CAAC,CAAC;IAEV,IAAI,IAAI,GAAS,MAAM,CAAC;IAExB,MAAM,KAAK,GAAG,CAAC,GAAW,EAAQ,EAAE;QAClC,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI;YAAE,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IACxC,CAAC,CAAC;IAEF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACb,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC;QAClB,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxC,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACpB,IAAI,CAAC,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;gBAC5B,IAAI,GAAG,MAAM,CAAC;gBACd,CAAC,IAAI,CAAC,CAAC;YACT,CAAC;iBAAM,IAAI,CAAC,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;gBACnC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;gBACb,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;gBACjB,IAAI,GAAG,OAAO,CAAC;gBACf,CAAC,IAAI,CAAC,CAAC;YACT,CAAC;iBAAM,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;gBACrB,IAAI,GAAG,IAAI,CAAC;gBACZ,CAAC,IAAI,CAAC,CAAC;YACT,CAAC;iBAAM,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;gBACrB,IAAI,GAAG,IAAI,CAAC;gBACZ,CAAC,IAAI,CAAC,CAAC;YACT,CAAC;iBAAM,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;gBACrB,IAAI,GAAG,KAAK,CAAC;gBACb,CAAC,IAAI,CAAC,CAAC;YACT,CAAC;iBAAM,CAAC;gBACN,CAAC,IAAI,CAAC,CAAC;YACT,CAAC;YACD,SAAS;QACX,CAAC;QACD,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACpB,IAAI,CAAC,KAAK,IAAI;gBAAE,IAAI,GAAG,MAAM,CAAC;;gBACzB,KAAK,CAAC,CAAC,CAAC,CAAC;YACd,CAAC,IAAI,CAAC,CAAC;YACP,SAAS;QACX,CAAC;QACD,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACrB,IAAI,CAAC,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;gBAC5B,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;gBACb,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;gBACjB,IAAI,GAAG,MAAM,CAAC;gBACd,CAAC,IAAI,CAAC,CAAC;YACT,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,CAAC,CAAC,CAAC;gBACT,CAAC,IAAI,CAAC,CAAC;YACT,CAAC;YACD,SAAS;QACX,CAAC;QACD,oBAAoB;QACpB,MAAM,KAAK,GAAG,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QAC9D,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YACf,KAAK,CAAC,CAAC,CAAC,CAAC;YACT,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC5B,CAAC,IAAI,CAAC,CAAC;YACP,SAAS;QACX,CAAC;QACD,IAAI,CAAC,KAAK,KAAK,EAAE,CAAC;YAChB,IAAI,GAAG,MAAM,CAAC;YACd,CAAC,IAAI,CAAC,CAAC;YACP,SAAS;QACX,CAAC;QACD,KAAK,CAAC,CAAC,CAAC,CAAC;QACT,CAAC,IAAI,CAAC,CAAC;IACT,CAAC;IACD,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACtB,CAAC;AAED,qEAAqE;AACrE,SAAS,SAAS,CAAC,CAAS,EAAE,IAAY;IACxC,IAAI,CAAC,GAAG,IAAI,CAAC;IACb,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC;QAAE,CAAC,IAAI,CAAC,CAAC;IAC1C,OAAO,CAAC,CAAC;AACX,CAAC;AAED,4EAA4E;AAC5E,SAAS,cAAc,CAAC,MAAc,EAAE,UAAkB;IACxD,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG;YAAE,KAAK,IAAI,CAAC,CAAC;aACrB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YACnB,KAAK,IAAI,CAAC,CAAC;YACX,IAAI,KAAK,KAAK,CAAC;gBAAE,OAAO,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IACD,OAAO,CAAC,CAAC,CAAC;AACZ,CAAC;AAED,4EAA4E;AAC5E,SAAS,WAAW,CAAC,MAAc,EAAE,MAAc;IACjD,MAAM,GAAG,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC;IAC1C,IAAI,GAAG,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IACvB,IAAI,KAAK,GAAG,GAAG,CAAC;IAChB,OAAO,KAAK,IAAI,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAE,CAAC;QAAE,KAAK,IAAI,CAAC,CAAC;IACtE,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED,0EAA0E;AAC1E,MAAM,iBAAiB,GAAG,0BAA0B,CAAC;AAErD;;;;;;;GAOG;AACH,SAAS,cAAc,CAAC,MAAc,EAAE,KAAa;IACnD,MAAM,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;IACvC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAExB,yBAAyB;IACzB,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IAEtE,oEAAoE;IACpE,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,EAAE,CAAC;QACpD,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/B,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG;QAAE,OAAO,KAAK,CAAC;IAE7C,MAAM,IAAI,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACvC,IAAI,IAAI,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3B,MAAM,GAAG,GAAG,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACtC,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC,CAAC,+BAA+B;IAC5D,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACpC,CAAC;AAED,sEAAsE;AACtE,SAAS,eAAe,CAAC,MAAc,EAAE,IAAY;IACnD,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7C,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG;YAAE,KAAK,IAAI,CAAC,CAAC;aACrB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YACnB,KAAK,IAAI,CAAC,CAAC;YACX,IAAI,KAAK,KAAK,CAAC;gBAAE,OAAO,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IACD,OAAO,CAAC,CAAC,CAAC;AACZ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,QAAgB,EAAE,GAAa;IAC1D,MAAM,MAAM,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IAEhD,6DAA6D;IAC7D,MAAM,MAAM,GAA2C,EAAE,CAAC;IAC1D,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1C,IAAI,CAAC,GAAG,QAAQ;YAAE,SAAS;QAC3B,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG;YAAE,SAAS;QAChC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC;YAAE,SAAS;QACzC,MAAM,KAAK,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACzC,IAAI,KAAK,GAAG,CAAC;YAAE,SAAS;QACxB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAChC,QAAQ,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,wCAAwC;IAChE,CAAC;IAED,IAAI,QAAgB,CAAC;IACrB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,QAAQ,GAAG,QAAQ,CAAC;IACtB,CAAC;SAAM,CAAC;QACN,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,KAAK,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,MAAM,EAAE,CAAC;YACrC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;YAC9C,IAAI,KAAK,CAAC,MAAM,GAAG,cAAc;gBAAE,SAAS,CAAC,0BAA0B;YACvE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;YAC7C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;YACvC,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;YAChC,MAAM,GAAG,KAAK,CAAC;QACjB,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QACnC,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACjC,0EAA0E;IAC1E,QAAQ,GAAG,GAAG,QAAQ,aAAa,MAAM,GAAG,CAAC;IAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;AACnD,CAAC"}
@@ -14,7 +14,9 @@ export interface RouteResult {
14
14
  readonly skeletonTokens: number;
15
15
  readonly savedPct: number;
16
16
  }
17
- /** Deterministic content-type detection (no ML). JSON is strict; code is heuristic. */
17
+ /** Deterministic content-type detection (no ML). JSON is strict; the
18
+ * structured shapes (diff/search/log) outrank the looser code heuristic —
19
+ * grep dumps and test logs used to trip isCode and compress poorly. */
18
20
  export declare function detect(text: string): ContentType;
19
21
  /**
20
22
  * Detect host-Read line numbering (the dominant in-session tool-result shape;
@@ -2,6 +2,7 @@ import { isJson, compressJson } from "./json.js";
2
2
  import { isCode, compressCode } from "./code.js";
3
3
  import { compressCodeAst } from "./ast.js";
4
4
  import { compressText, compressShortProse } from "./text.js";
5
+ import { isDiff, isSearchResults, isLogOutput, compressDiff, compressSearchResults, compressLog, IMPORTANT_LINE, RESULT_LINE, } from "./structured.js";
5
6
  import { countTokens } from "../tokenizer.js";
6
7
  /**
7
8
  * Minimum token saving (%) for compression to be kept. Below this we pass the
@@ -13,9 +14,13 @@ const ANCHOR_MIN_LINES = 40;
13
14
  /** If structural compression saves less than this %, try the anchor. */
14
15
  const ANCHOR_TRIGGER_PCT = 35;
15
16
  const clamp = (v, lo, hi) => Math.max(lo, Math.min(hi, v));
16
- /** Lines worth rescuing from an elided middle (failures live mid-output). */
17
- const IMPORTANT_LINE = /\b(FAIL|FAILED|✗|Error:|error TS\d+|Exception|Traceback|fatal:|panic:)\b/;
18
- const MAX_RESCUED = 12;
17
+ /** Max failure lines rescued from an elided middle (shared IMPORTANT_LINE).
18
+ * Error lines are the highest-value content in any output — the cap exists
19
+ * only to bound pathological blocks, not to trim ordinary failures. */
20
+ const MAX_RESCUED = 32;
21
+ /** Top-level declaration lines — rescued when the anchor swallows CODE
22
+ * (an agent navigating a file needs the names even if bodies are gone). */
23
+ const DECLARATION_LINE = /^(?:export\s+|pub(?:\(crate\))?\s+|public\s+|private\s+|protected\s+|static\s+|abstract\s+|final\s+|async\s+|default\s+)*(?:function|class|def|fn|func|interface|trait|impl|type|struct|enum)\s+[A-Za-z_$]/;
19
24
  /**
20
25
  * Anchor elision — the universal fallback for long low-structure output
21
26
  * (build logs, test runs, prose, mixed snippets): keep the head (intro/
@@ -24,21 +29,30 @@ const MAX_RESCUED = 12;
24
29
  * length. Profiled on 69 real transcripts: these shapes are ~70% of burn.
25
30
  * Lossless via CCR; TOIN backs off any shape that gets over-retrieved.
26
31
  */
27
- function anchorSkeleton(text, handle) {
32
+ function anchorSkeleton(text, handle, isCodeShape) {
28
33
  const lines = text.split("\n");
29
34
  const headN = clamp(Math.round(lines.length * 0.15), 8, 25);
30
35
  const tailN = clamp(Math.round(lines.length * 0.12), 6, 18);
31
36
  const middle = lines.slice(headN, lines.length - tailN);
32
- const rescued = middle.filter((l) => IMPORTANT_LINE.test(l)).slice(0, MAX_RESCUED);
37
+ const worthKeeping = (l) => IMPORTANT_LINE.test(l) || RESULT_LINE.test(l) || (isCodeShape && DECLARATION_LINE.test(l));
38
+ const rescued = middle.filter(worthKeeping).slice(0, MAX_RESCUED);
33
39
  const head = lines.slice(0, headN).join("\n");
34
40
  const tail = lines.slice(-tailN).join("\n");
35
41
  const rescueBlock = rescued.length > 0 ? `\n${rescued.join("\n")}` : "";
36
42
  return `${head}\n⟪… ${middle.length - rescued.length} lines elided · exact original: ⟨ccr:${handle}⟩ …⟫${rescueBlock}\n${tail}`;
37
43
  }
38
- /** Deterministic content-type detection (no ML). JSON is strict; code is heuristic. */
44
+ /** Deterministic content-type detection (no ML). JSON is strict; the
45
+ * structured shapes (diff/search/log) outrank the looser code heuristic —
46
+ * grep dumps and test logs used to trip isCode and compress poorly. */
39
47
  export function detect(text) {
40
48
  if (isJson(text))
41
49
  return "json";
50
+ if (isDiff(text))
51
+ return "diff";
52
+ if (isSearchResults(text))
53
+ return "search";
54
+ if (isLogOutput(text))
55
+ return "log";
42
56
  if (isCode(text))
43
57
  return "code";
44
58
  return "text";
@@ -73,6 +87,17 @@ export function compress(text, ccr, options = {}) {
73
87
  const byType = (t, type) => {
74
88
  if (type === "json")
75
89
  return compressJson(t, ccr);
90
+ if (type === "diff")
91
+ return compressDiff(t, ccr);
92
+ if (type === "search")
93
+ return compressSearchResults(t, ccr);
94
+ if (type === "log") {
95
+ // Race the log skeleton against generic text (line-dedup wins on highly
96
+ // repetitive logs); keep whichever is smaller. Both are CCR-lossless.
97
+ const log = compressLog(t, ccr);
98
+ const text = compressText(t, ccr);
99
+ return text.skeleton.length < log.skeleton.length ? text : log;
100
+ }
76
101
  if (type === "code")
77
102
  return compressCodeAst(t, ccr) ?? compressCode(t, ccr);
78
103
  // Short prose (too few lines for the anchor fallback): try the TOIN-gated
@@ -108,7 +133,7 @@ export function compress(text, ccr, options = {}) {
108
133
  const lineCount = text.split("\n").length;
109
134
  if (savedPct < ANCHOR_TRIGGER_PCT && lineCount >= ANCHOR_MIN_LINES) {
110
135
  const anchorHandle = handle || ccr.put(text);
111
- const anchored = anchorSkeleton(text, anchorHandle);
136
+ const anchored = anchorSkeleton(text, anchorHandle, contentType === "code");
112
137
  const anchoredTokens = countTokens(anchored);
113
138
  if (anchoredTokens < skeletonTokens) {
114
139
  skeleton = anchored;
@@ -1 +1 @@
1
- {"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/optimizer/router.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/optimizer/router.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EACL,MAAM,EACN,eAAe,EACf,WAAW,EACX,YAAY,EACZ,qBAAqB,EACrB,WAAW,EACX,cAAc,EACd,WAAW,GACZ,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAiB9C;;;GAGG;AACH,MAAM,cAAc,GAAG,CAAC,CAAC;AAEzB,wEAAwE;AACxE,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAC5B,wEAAwE;AACxE,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAE9B,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,EAAU,EAAE,EAAU,EAAU,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AAE3F;;uEAEuE;AACvE,MAAM,WAAW,GAAG,EAAE,CAAC;AAEvB;2EAC2E;AAC3E,MAAM,gBAAgB,GACpB,4MAA4M,CAAC;AAE/M;;;;;;;GAOG;AACH,SAAS,cAAc,CAAC,IAAY,EAAE,MAAc,EAAE,WAAoB;IACxE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;IACxD,MAAM,YAAY,GAAG,CAAC,CAAS,EAAW,EAAE,CAC1C,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7F,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACxE,OAAO,GAAG,IAAI,QAAQ,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,wCAAwC,MAAM,OAAO,WAAW,KAAK,IAAI,EAAE,CAAC;AAClI,CAAC;AAED;;uEAEuE;AACvE,MAAM,UAAU,MAAM,CAAC,IAAY;IACjC,IAAI,MAAM,CAAC,IAAI,CAAC;QAAE,OAAO,MAAM,CAAC;IAChC,IAAI,MAAM,CAAC,IAAI,CAAC;QAAE,OAAO,MAAM,CAAC;IAChC,IAAI,eAAe,CAAC,IAAI,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC3C,IAAI,WAAW,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACpC,IAAI,MAAM,CAAC,IAAI,CAAC;QAAE,OAAO,MAAM,CAAC;IAChC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,gEAAgE;AAChE,MAAM,WAAW,GAAG,cAAc,CAAC;AAEnC;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE;QAAE,OAAO,IAAI,CAAC;IACnC,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,KAAK,MAAM,CAAC,IAAI,KAAK;QAAE,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;YAAE,QAAQ,IAAI,CAAC,CAAC;IAC9D,IAAI,QAAQ,GAAG,KAAK,CAAC,MAAM,GAAG,GAAG;QAAE,OAAO,IAAI,CAAC;IAC/C,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjE,CAAC;AAiBD,MAAM,UAAU,QAAQ,CAAC,IAAY,EAAE,GAAa,EAAE,UAA2B,EAAE;IACjF,0EAA0E;IAC1E,yEAAyE;IACzE,mEAAmE;IACnE,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACxC,4EAA4E;IAC5E,iEAAiE;IACjE,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC;IAC9C,MAAM,MAAM,GAAG,CAAC,CAAS,EAAE,IAAiB,EAAkB,EAAE;QAC9D,IAAI,IAAI,KAAK,MAAM;YAAE,OAAO,YAAY,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACjD,IAAI,IAAI,KAAK,MAAM;YAAE,OAAO,YAAY,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACjD,IAAI,IAAI,KAAK,QAAQ;YAAE,OAAO,qBAAqB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC5D,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;YACnB,wEAAwE;YACxE,sEAAsE;YACtE,MAAM,GAAG,GAAG,WAAW,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAChC,MAAM,IAAI,GAAG,YAAY,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAClC,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;QACjE,CAAC;QACD,IAAI,IAAI,KAAK,MAAM;YAAE,OAAO,eAAe,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,YAAY,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC5E,0EAA0E;QAC1E,wEAAwE;QACxE,IAAI,UAAU,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,gBAAgB,EAAE,CAAC;YAC1D,MAAM,KAAK,GAAG,kBAAkB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YACzC,IAAI,KAAK,KAAK,IAAI;gBAAE,OAAO,KAAK,CAAC;QACnC,CAAC;QACD,OAAO,YAAY,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC9B,CAAC,CAAC;IAEF,IAAI,WAAwB,CAAC;IAC7B,IAAI,QAAgB,CAAC;IACrB,IAAI,MAAc,CAAC;IACnB,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;QACjD,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,0CAA0C;QAC3E,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACvB,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,qBAAqB,EAAE,QAAQ,MAAM,GAAG,CAAC,CAAC;IAC9E,CAAC;SAAM,CAAC;QACN,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1C,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QACjC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAC3B,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IACzB,CAAC;IAED,MAAM,cAAc,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,cAAc,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC3C,IAAI,QAAQ,GACV,cAAc,KAAK,CAAC;QAClB,CAAC,CAAC,CAAC;QACH,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,cAAc,GAAG,cAAc,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAEpE,4EAA4E;IAC5E,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;IAC1C,IAAI,QAAQ,GAAG,kBAAkB,IAAI,SAAS,IAAI,gBAAgB,EAAE,CAAC;QACnE,MAAM,YAAY,GAAG,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC7C,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE,WAAW,KAAK,MAAM,CAAC,CAAC;QAC5E,MAAM,cAAc,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI,cAAc,GAAG,cAAc,EAAE,CAAC;YACpC,QAAQ,GAAG,QAAQ,CAAC;YACpB,MAAM,GAAG,YAAY,CAAC;YACtB,cAAc,GAAG,cAAc,CAAC;YAChC,QAAQ;gBACN,cAAc,KAAK,CAAC;oBAClB,CAAC,CAAC,CAAC;oBACH,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,cAAc,GAAG,cAAc,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACtE,CAAC;IACH,CAAC;IAED,+EAA+E;IAC/E,IAAI,QAAQ,GAAG,cAAc,EAAE,CAAC;QAC9B,OAAO;YACL,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,EAAE;YACV,WAAW;YACX,UAAU,EAAE,KAAK;YACjB,cAAc;YACd,cAAc,EAAE,cAAc;YAC9B,QAAQ,EAAE,CAAC;SACZ,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC;AACvG,CAAC"}
@@ -0,0 +1,43 @@
1
+ import type { CCRStore } from "../ccr/store.js";
2
+ import type { CompressResult } from "./types.js";
3
+ /**
4
+ * Structured-output handlers — search results, build/test logs, unified
5
+ * diffs. These shapes dominated the misrouted residue of the code bucket
6
+ * (markdown reports, grep dumps, test runs tripping the loose isCode
7
+ * heuristic), so their detectors run BEFORE isCode in the router.
8
+ *
9
+ * Shared invariant: failure/error lines are NEVER elided — a compressed log
10
+ * that loses the FATAL line is worse than no compression at all.
11
+ */
12
+ /** Lines that must survive any elision (failures live mid-output). */
13
+ export declare const IMPORTANT_LINE: RegExp;
14
+ /** Result-summary lines (test/build totals) — the other thing an agent always
15
+ * needs from a run. Rescued alongside errors by every elision path. */
16
+ export declare const RESULT_LINE: RegExp;
17
+ /** ≥50% of non-empty lines look like `path:line:` matches (and enough of them). */
18
+ export declare function isSearchResults(text: string): boolean;
19
+ /**
20
+ * Collapse search output by file: keep the first matches per file (the
21
+ * locations), count the rest. Agents almost always act on file+line, not on
22
+ * the repeated match text — and the full set is one retrieve away.
23
+ */
24
+ export declare function compressSearchResults(original: string, ccr: CCRStore): CompressResult;
25
+ /** ≥30% of lines carry a log/test signature (timestamps, levels, test
26
+ * markers, vitest/jest code frames `123|`, stack frames, run summaries). */
27
+ export declare function isLogOutput(text: string): boolean;
28
+ /**
29
+ * Log skeleton: keep the head (what ran), the tail (summaries land at the
30
+ * end), and EVERY error/failure line; collapse runs of routine lines to
31
+ * counted markers. The router still race-checks this against the generic
32
+ * text handler and keeps whichever is smaller.
33
+ */
34
+ export declare function compressLog(original: string, ccr: CCRStore): CompressResult;
35
+ /** Unified diff: a `diff --git` header, or ---/+++ pair plus a hunk header. */
36
+ export declare function isDiff(text: string): boolean;
37
+ /**
38
+ * Diff skeleton: keep file headers and hunk headers (the WHERE), keep error
39
+ * lines, elide long hunk bodies to `⟪… +a/-b/~c lines⟫` (the churn size).
40
+ * Reviewers and agents mostly need which files/regions changed and how much;
41
+ * the full patch is one retrieve away.
42
+ */
43
+ export declare function compressDiff(original: string, ccr: CCRStore): CompressResult;