ccompactor 0.1.1 → 0.1.3

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 (48) hide show
  1. package/README.md +19 -15
  2. package/dist/adapters/claude.js +109 -122
  3. package/dist/adapters/claude.js.map +1 -1
  4. package/dist/adapters/codex.d.ts +1 -1
  5. package/dist/adapters/codex.js +7 -4
  6. package/dist/adapters/codex.js.map +1 -1
  7. package/dist/adapters/pi.d.ts +1 -1
  8. package/dist/adapters/pi.js +8 -4
  9. package/dist/adapters/pi.js.map +1 -1
  10. package/dist/adapters/types.d.ts +24 -2
  11. package/dist/adapters/types.js +33 -5
  12. package/dist/adapters/types.js.map +1 -1
  13. package/dist/artifact/expand.d.ts +3 -12
  14. package/dist/artifact/expand.js +140 -13
  15. package/dist/artifact/expand.js.map +1 -1
  16. package/dist/artifact/render.js +59 -11
  17. package/dist/artifact/render.js.map +1 -1
  18. package/dist/artifact/transcript.d.ts +31 -0
  19. package/dist/artifact/transcript.js +82 -0
  20. package/dist/artifact/transcript.js.map +1 -0
  21. package/dist/bench/run.d.ts +19 -1
  22. package/dist/bench/run.js +10 -3
  23. package/dist/bench/run.js.map +1 -1
  24. package/dist/cli.js +52 -8
  25. package/dist/cli.js.map +1 -1
  26. package/dist/discover/index.d.ts +1 -0
  27. package/dist/discover/index.js.map +1 -1
  28. package/dist/extract.d.ts +4 -0
  29. package/dist/extract.js +27 -0
  30. package/dist/extract.js.map +1 -1
  31. package/dist/ledgers/index.d.ts +0 -5
  32. package/dist/ledgers/index.js +29 -7
  33. package/dist/ledgers/index.js.map +1 -1
  34. package/dist/triage.js +26 -0
  35. package/dist/triage.js.map +1 -1
  36. package/dist/tui/App.d.ts +8 -0
  37. package/dist/tui/App.js +513 -0
  38. package/dist/tui/App.js.map +1 -0
  39. package/dist/tui/details.d.ts +37 -0
  40. package/dist/tui/details.js +75 -0
  41. package/dist/tui/details.js.map +1 -0
  42. package/dist/tui/index.d.ts +3 -2
  43. package/dist/tui/index.js +10 -129
  44. package/dist/tui/index.js.map +1 -1
  45. package/dist/tui/mouse.d.ts +37 -0
  46. package/dist/tui/mouse.js +41 -0
  47. package/dist/tui/mouse.js.map +1 -0
  48. package/package.json +5 -4
@@ -1,12 +1,3 @@
1
- /**
2
- * `[evt a–b]` → the events behind it.
3
- *
4
- * The pointer is the artifact's only claim-checking mechanism, so this has to
5
- * mean exactly one thing: the events in that inclusive range, in source order.
6
- * A range is delivered in exact, non-overlapping pages rather than one
7
- * unbounded dump, and every page says how to reach the next one — a window that
8
- * has already shown you events 1–200 owes you a way to reach 201.
9
- */
10
1
  import type { SessionIR } from '../ir/types.js';
11
2
  export interface Page {
12
3
  index: number;
@@ -16,8 +7,8 @@ export interface ExpandOptions {
16
7
  context?: number;
17
8
  page?: Page;
18
9
  }
19
- export declare function expand(ir: SessionIR, ranges: Array<[number, number]>, options?: ExpandOptions): string;
20
- /** Consecutive, non-overlapping pages. A single oversized event is its own page. */
21
- export declare function paginate(messages: SessionIR['messages'], tokens: number): Array<SessionIR['messages']>;
10
+ export declare function expand(ir: SessionIR, ranges: Array<[number, number]>, options?: ExpandOptions): Promise<string>;
11
+ /** Consecutive, non-overlapping pages. A single oversized line is its own page. */
12
+ export declare function paginate(rendered: string[], tokens: number): string[][];
22
13
  /** Parse the `4122..4381`, `4122..=4381` and `4122` forms an artifact prints. */
23
14
  export declare function parseRange(text: string): [number, number];
@@ -1,23 +1,78 @@
1
- export function expand(ir, ranges, options = {}) {
2
- const out = [];
1
+ /**
2
+ * `[evt a–b]` → the events behind it.
3
+ *
4
+ * The pointer is the artifact's only claim-checking mechanism, so it has to mean
5
+ * exactly one thing: the events in that inclusive range, in source order — and
6
+ * it has to **resolve**. Both properties were wrong in the first version, and
7
+ * the second one cost 50 points of retrieval accuracy against the same
8
+ * benchmark on the same questions before it was found.
9
+ *
10
+ * The IR is a filtered view: an adapter keeps the events it can turn into
11
+ * messages and drops the rest, so `evt 13063` existed in the transcript and not
12
+ * in the IR, and a reader that asked for it was told the event did not exist. A
13
+ * pointer the artifact printed could not be followed. Anything missing from the
14
+ * IR is now read back off the transcript itself, so every index in a range
15
+ * resolves whether or not the IR kept it.
16
+ *
17
+ * Ranges are delivered in exact, non-overlapping pages rather than one unbounded
18
+ * dump, and every page says how to reach the next one.
19
+ */
20
+ import { lines } from '../adapters/types.js';
21
+ export async function expand(ir, ranges, options = {}) {
3
22
  const context = options.context ?? 0;
23
+ const out = [];
4
24
  for (const [from, to] of ranges) {
5
25
  const start = Math.max(0, from - context);
6
26
  const end = to + context;
7
- const selected = ir.messages.filter((m) => m.eventIndex >= start && m.eventIndex <= end);
8
- if (selected.length === 0) {
27
+ const byIndex = new Map();
28
+ for (const message of ir.messages) {
29
+ if (message.eventIndex < start || message.eventIndex > end)
30
+ continue;
31
+ byIndex.set(message.eventIndex, renderEvent(message));
32
+ }
33
+ // Whatever the IR did not keep comes off the transcript. One pass, stopping
34
+ // as soon as the range is covered, so a range near the start does not read
35
+ // the whole file.
36
+ const missing = new Set();
37
+ for (let i = start; i <= end; i += 1)
38
+ if (!byIndex.has(i))
39
+ missing.add(i);
40
+ if (missing.size > 0) {
41
+ const path = ir.ref.path;
42
+ try {
43
+ for await (const line of lines(path)) {
44
+ const index = line.n - 1;
45
+ if (index > end)
46
+ break;
47
+ if (!missing.has(index))
48
+ continue;
49
+ missing.delete(index);
50
+ byIndex.set(index, renderRawLine(index, line.text));
51
+ if (missing.size === 0)
52
+ break;
53
+ }
54
+ }
55
+ catch {
56
+ // An unreadable transcript still yields what the IR had.
57
+ }
58
+ }
59
+ const ordered = [...byIndex.entries()].sort((a, b) => a[0] - b[0]);
60
+ const rendered = ordered.map(([, text]) => text);
61
+ if (rendered.length === 0) {
9
62
  out.push(`=== evt ${start}–${end} ===\n(no events in this range)\n`);
10
63
  continue;
11
64
  }
12
65
  if (!options.page) {
13
- out.push(`=== evt ${start}–${end} ===\n${selected.map(renderEvent).join('\n')}\n`);
66
+ out.push(`=== evt ${start}–${end} ===\n${rendered.join('\n')}\n`);
14
67
  continue;
15
68
  }
16
- const pages = paginate(selected, options.page.tokens);
69
+ const pages = paginate(rendered, options.page.tokens);
17
70
  const index = Math.min(Math.max(1, options.page.index), pages.length);
18
71
  const slice = pages[index - 1];
19
- out.push(`=== evt ${start}–${end} · page ${index}/${pages.length} · evt ${slice[0].eventIndex}–${slice.at(-1).eventIndex} · ${slice.reduce((n, m) => n + Math.ceil((m.text?.length ?? 0) / 4), 0)} token(s) ===`);
20
- out.push(slice.map(renderEvent).join('\n'));
72
+ const first = firstIndex(slice) ?? start;
73
+ const last = lastIndex(slice) ?? end;
74
+ out.push(`=== evt ${start}–${end} · page ${index}/${pages.length} · evt ${first}–${last} · ${slice.reduce((n, t) => n + Math.ceil(t.length / 4), 0)} token(s) ===`);
75
+ out.push(slice.join('\n'));
21
76
  if (pages.length > 1) {
22
77
  const next = index === pages.length ? 1 : index + 1;
23
78
  out.push(`\n--- page ${index} of ${pages.length}; page ${next} is \`ccompactor expand <ref> ${from}..${to} --page ${next}\` ---`);
@@ -26,19 +81,29 @@ export function expand(ir, ranges, options = {}) {
26
81
  }
27
82
  return out.join('\n');
28
83
  }
29
- /** Consecutive, non-overlapping pages. A single oversized event is its own page. */
30
- export function paginate(messages, tokens) {
84
+ function firstIndex(lines) {
85
+ return indexOf(lines[0]);
86
+ }
87
+ function lastIndex(lines) {
88
+ return indexOf(lines.at(-1));
89
+ }
90
+ function indexOf(line) {
91
+ const match = line ? /^evt (\d+)/.exec(line) : null;
92
+ return match ? Number.parseInt(match[1], 10) : undefined;
93
+ }
94
+ /** Consecutive, non-overlapping pages. A single oversized line is its own page. */
95
+ export function paginate(rendered, tokens) {
31
96
  const pages = [];
32
97
  let current = [];
33
98
  let used = 0;
34
- for (const message of messages) {
35
- const cost = Math.ceil((message.text?.length ?? 0) / 4);
99
+ for (const line of rendered) {
100
+ const cost = Math.ceil(line.length / 4);
36
101
  if (current.length > 0 && used + cost > tokens) {
37
102
  pages.push(current);
38
103
  current = [];
39
104
  used = 0;
40
105
  }
41
- current.push(message);
106
+ current.push(line);
42
107
  used += cost;
43
108
  }
44
109
  if (current.length > 0)
@@ -51,6 +116,68 @@ function renderEvent(message) {
51
116
  const body = message.text ?? (message.toolInput ? JSON.stringify(message.toolInput) : '');
52
117
  return `evt ${message.eventIndex} [${tag}] ${body.replace(/\s+/g, ' ').slice(0, 2_000)}`;
53
118
  }
119
+ /**
120
+ * A line the IR did not keep, shown compactly.
121
+ *
122
+ * Returning the JSON verbatim was the obvious thing and it is wrong twice over:
123
+ * a Claude transcript's unkept lines are mostly hook bookkeeping — dozens of
124
+ * `hook_success` records per tool call, each several hundred tokens of the same
125
+ * shell bootstrap — and handing those to a reader as the answer to "what
126
+ * happened at evt 13063" buries the one line that mattered under noise that
127
+ * means nothing. They are named and dropped instead. Everything else is reduced
128
+ * to its shape: a type, and whatever short field identifies it.
129
+ */
130
+ const SILENT = new Set([
131
+ 'hook_success',
132
+ 'hook_error',
133
+ 'async_hook_response',
134
+ 'total_tokens_reminder',
135
+ 'file-history-snapshot',
136
+ 'queued_command',
137
+ 'hook_progress',
138
+ ]);
139
+ function renderRawLine(index, text) {
140
+ let raw;
141
+ try {
142
+ raw = JSON.parse(text);
143
+ }
144
+ catch {
145
+ return `evt ${index} [raw] ${text.replace(/\s+/g, ' ').slice(0, 400)}`;
146
+ }
147
+ const attachment = raw['attachment'];
148
+ if (typeof attachment === 'object' && attachment !== null) {
149
+ const kind = String(attachment['type'] ?? 'attachment');
150
+ if (SILENT.has(kind)) {
151
+ // Named, not silent: the event exists and the reader can see it was
152
+ // bookkeeping rather than wonder why the index is missing.
153
+ return `evt ${index} [${kind}] (no content)`;
154
+ }
155
+ return `evt ${index} [${kind}] ${compact(attachment, 400)}`;
156
+ }
157
+ const type = String(raw['type'] ?? 'unknown');
158
+ const body = typeof raw['content'] === 'string'
159
+ ? raw['content']
160
+ : typeof raw['summary'] === 'string'
161
+ ? raw['summary']
162
+ : compact(raw, 400);
163
+ return `evt ${index} [${type}] ${body.replace(/\s+/g, ' ').slice(0, 600)}`;
164
+ }
165
+ /** The short fields of an object, with the bookkeeping stripped out. */
166
+ function compact(value, max) {
167
+ if (typeof value === 'string')
168
+ return value.replace(/\s+/g, ' ').slice(0, max);
169
+ if (typeof value !== 'object' || value === null)
170
+ return String(value);
171
+ const interesting = ['text', 'stdout', 'stderr', 'content', 'message', 'command', 'name', 'prompt'];
172
+ const parts = [];
173
+ for (const key of interesting) {
174
+ const field = value[key];
175
+ if (typeof field === 'string' && field.trim().length > 0) {
176
+ parts.push(field.replace(/\s+/g, ' ').slice(0, 200));
177
+ }
178
+ }
179
+ return (parts.join(' · ') || JSON.stringify(value)).slice(0, max);
180
+ }
54
181
  /** Parse the `4122..4381`, `4122..=4381` and `4122` forms an artifact prints. */
55
182
  export function parseRange(text) {
56
183
  const trimmed = text.trim();
@@ -1 +1 @@
1
- {"version":3,"file":"expand.js","sourceRoot":"","sources":["../../src/artifact/expand.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"expand.js","sourceRoot":"","sources":["../../src/artifact/expand.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,13 @@
1
1
  import { approxTokens, truncateMiddle } from '../ir/tokens.js';
2
+ /**
3
+ * The provider's own continuation preamble is a user turn and is not a request.
4
+ *
5
+ * Showing it as "last user request" tells a reader that the human's most recent
6
+ * wish was to be given a summary of their own session.
7
+ */
8
+ const CONTINUATION = /this session is being continued from a previous conversation/i;
9
+ /** How files that live outside the session's project are reported. */
10
+ const OUTSIDE = '(outside the project)';
2
11
  /** The brief's own ceiling. A brief that does not fit a screen is not a brief. */
3
12
  const BRIEF_BUDGET = 1_200;
4
13
  /** Tokens the constraints block may spend before it starts counting itself. */
@@ -24,7 +33,7 @@ export function render(input) {
24
33
  brief += '\n';
25
34
  }
26
35
  const first = ledgers.userTurns[0];
27
- const last = ledgers.userTurns.at(-1);
36
+ const last = ledgers.userTurns.filter((t) => !CONTINUATION.test(t.text)).at(-1);
28
37
  if (first) {
29
38
  brief += `**Goal** (from the first user message, not model-inferred): ${oneLine(first.text, 300)} [evt ${first.evt}]\n\n`;
30
39
  }
@@ -34,7 +43,7 @@ export function render(input) {
34
43
  brief += renderConstraints(constraints);
35
44
  }
36
45
  if (ledgers.files.length > 0) {
37
- const byDir = topDirectories(ledgers, 5);
46
+ const byDir = topDirectories(ledgers, projectRoot(input), 5);
38
47
  brief += `**Where the work was**\n`;
39
48
  for (const [dir, count] of byDir)
40
49
  brief += `- \`${dir}\` — ${count} touch(es)\n`;
@@ -91,7 +100,7 @@ export function render(input) {
91
100
  markdown,
92
101
  json: {
93
102
  schema: 'ccompactor.handoff/v1',
94
- version: '0.1.1',
103
+ version: '0.1.2',
95
104
  session: {
96
105
  agent: ir.ref.agent,
97
106
  id: ir.ref.id,
@@ -114,7 +123,7 @@ function frontMatter(input) {
114
123
  const cwd = ir.metadata['cwd'];
115
124
  return `---
116
125
  schema: ccompactor.handoff/v1
117
- ccompactor: 0.1.1
126
+ ccompactor: 0.1.2
118
127
  source: {agent: ${ir.ref.agent}, session: ${ir.ref.id}, events: ${ir.messages.length}, user_turns: ${ledgers.counts.userTurns}, compact_boundaries: ${ir.compactBoundaries.length}${typeof cwd === 'string' ? `, cwd: ${cwd}` : ''}}
119
128
  engine: ${input.engine}
120
129
  llm: ${input.summary ? 'on' : 'none'}
@@ -131,11 +140,23 @@ function preamble() {
131
140
  > \`[evt a–b]\` pointer you need with \`ccompactor expand\`.
132
141
  `;
133
142
  }
143
+ /**
144
+ * A short label, not the message.
145
+ *
146
+ * The first user turn is often a page of onboarding. The goal is quoted in full
147
+ * a few lines below, so the title only has to say which task this is.
148
+ */
149
+ const TITLE_MAX = 72;
134
150
  function title(input) {
135
151
  const first = input.ledgers.userTurns[0];
136
152
  if (!first)
137
153
  return `${input.ir.ref.agent} session ${input.ir.ref.id}`;
138
- return oneLine(first.text, 160);
154
+ const text = oneLine(first.text, 400);
155
+ if (text.length <= TITLE_MAX)
156
+ return text;
157
+ const cut = text.slice(0, TITLE_MAX);
158
+ const space = cut.lastIndexOf(' ');
159
+ return `${(space > 40 ? cut.slice(0, space) : cut).replace(/[\s,;:.\u2014-]+$/, '')}\u2026`;
139
160
  }
140
161
  function renderConstraints(constraints) {
141
162
  let block = `**Hard constraints** (standing instructions, quoted verbatim)\n`;
@@ -335,16 +356,43 @@ export function stripAnalysis(text) {
335
356
  const summary = /<summary>([\s\S]*?)<\/summary>/i.exec(withoutAnalysis);
336
357
  return (summary ? summary[1] : withoutAnalysis).trim();
337
358
  }
338
- /** Tokens per top-level directory, busiest first. */
339
- function topDirectories(ledgers, limit) {
359
+ /** The directory the session was working in, when the provider recorded one. */
360
+ function projectRoot(input) {
361
+ const cwd = input.ir.metadata['cwd'];
362
+ return typeof cwd === 'string' ? cwd.replace(/\/$/, '') : '';
363
+ }
364
+ /**
365
+ * Where the work was, relative to the project.
366
+ *
367
+ * The first version split the absolute path and took its first two components,
368
+ * which for `/Users/musichen/_projects/acme/app/src/db.ts` is `Users/musichen` —
369
+ * the same answer for every file in every project on the machine, and no answer
370
+ * to the question a reader is asking. Stripping the session's own working
371
+ * directory first is the whole fix, and it turns the same ledger into
372
+ * `app/src`, `app/tests`, `docs`.
373
+ */
374
+ function topDirectories(ledgers, root, limit) {
340
375
  const counts = new Map();
341
376
  for (const file of ledgers.files) {
342
- const parts = file.path.split('/').filter(Boolean);
343
- const dir = parts.slice(0, Math.min(2, Math.max(1, parts.length - 1))).join('/');
344
- counts.set(dir, (counts.get(dir) ?? 0) + file.edits * 3 + file.writes * 3 + file.reads);
377
+ const inside = root.length > 0 && file.path.startsWith(`${root}/`);
378
+ // A file outside the project is not "in Users/musichen": it is outside, and
379
+ // saying so is more useful than inventing a directory for it.
380
+ const parts = inside
381
+ ? file.path.slice(root.length + 1).split('/').filter(Boolean)
382
+ : [];
383
+ const weight = file.edits * 3 + file.writes * 3 + file.reads;
384
+ if (parts.length <= 1) {
385
+ counts.set(OUTSIDE, (counts.get(OUTSIDE) ?? 0) + weight);
386
+ continue;
387
+ }
388
+ const depth = Math.min(2, parts.length - 1);
389
+ const dir = parts.slice(0, depth).join('/');
390
+ counts.set(dir, (counts.get(dir) ?? 0) + weight);
345
391
  }
392
+ // A place the reader cannot navigate to does not lead the list, however many
393
+ // touches it has.
346
394
  return [...counts.entries()]
347
- .sort((a, b) => b[1] - a[1] || a[0].localeCompare(b[0]))
395
+ .sort((a, b) => (a[0] === OUTSIDE ? 1 : b[0] === OUTSIDE ? -1 : b[1] - a[1]))
348
396
  .slice(0, limit);
349
397
  }
350
398
  /** Collapse whitespace and truncate on a word boundary. */
@@ -1 +1 @@
1
- {"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/artifact/render.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/artifact/render.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAoB9D;;;;;GAKG;AACH,MAAM,YAAY,GAAG,+DAA+D,CAAA;AAEpF,sEAAsE;AACtE,MAAM,OAAO,GAAG,uBAAuB,CAAA;AAEvC,kFAAkF;AAClF,MAAM,YAAY,GAAG,KAAK,CAAA;AAC1B,+EAA+E;AAC/E,MAAM,iBAAiB,GAAG,GAAG,CAAA;AAE7B,MAAM,UAAU,MAAM,CAAC,KAAkB;IACvC,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,KAAK,CAAA;IAC1C,MAAM,GAAG,GAAa,EAAE,CAAA;IACxB,MAAM,KAAK,GAAa,EAAE,CAAA;IAE1B,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAA;IAC5B,GAAG,CAAC,IAAI,CAAC,gBAAgB,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC1C,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;IAEpB,IAAI,KAAK,GAAG,EAAE,CAAA;IACd,IAAI,MAAM,GAAG,YAAY,CAAA;IAEzB,KAAK,IAAI,qBAAqB,CAAA;IAE9B,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,wEAAwE;QACxE,6EAA6E;QAC7E,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QACtC,KAAK,IAAI,8CAA8C,CAAA;QACvD,KAAK,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;YACxB,KAAK,IAAI,KAAK,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,KAAK,CAAC,WAAW,UAAU,KAAK,CAAC,GAAG,KAAK,CAAA;QAC5F,CAAC;QACD,KAAK,IAAI,IAAI,CAAA;IACf,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;IAClC,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IAC/E,IAAI,KAAK,EAAE,CAAC;QACV,KAAK,IAAI,+DAA+D,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,SAAS,KAAK,CAAC,GAAG,OAAO,CAAA;IAC3H,CAAC;IAED,6EAA6E;IAC7E,mEAAmE;IACnE,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,KAAK,IAAI,iBAAiB,CAAC,WAAW,CAAC,CAAA;IACzC,CAAC;IAED,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAA;QAC5D,KAAK,IAAI,0BAA0B,CAAA;QACnC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,KAAK;YAAE,KAAK,IAAI,OAAO,GAAG,QAAQ,KAAK,cAAc,CAAA;QAChF,KAAK,IAAI,IAAI,CAAA;IACf,CAAC;IAED,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,KAAK,IAAI,0BAA0B,OAAO,CAAC,OAAO,CAAC,MAAM,WAAW,CAAA;QACpE,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;YACzD,KAAK,IAAI,KAAK,MAAM,CAAC,OAAO,SAAS,MAAM,CAAC,GAAG,KAAK,CAAA;QACtD,CAAC;QACD,KAAK,IAAI,IAAI,CAAA;IACf,CAAC;IAED,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QAC3B,KAAK,IAAI,0BAA0B,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,SAAS,IAAI,CAAC,GAAG,OAAO,CAAA;IACpF,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;QACzC,KAAK,IAAI,qBAAqB,CAAA;QAC9B,KAAK,MAAM,OAAO,IAAI,MAAM,EAAE,CAAC;YAC7B,KAAK,IAAI,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,QAAQ,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,SAAS,OAAO,CAAC,GAAG,KAAK,CAAA;QAChH,CAAC;QACD,KAAK,IAAI,IAAI,CAAA;IACf,CAAC;IAED,IAAI,KAAK,CAAC,KAAK;QAAE,KAAK,IAAI,wBAAwB,KAAK,CAAC,KAAK,MAAM,CAAA;IAEnE,KAAK,IAAI,oEAAoE,CAAA;IAE7E,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACf,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAA;IAE/C,0DAA0D;IAC1D,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAClB,GAAG,CAAC,IAAI,CAAC,qCAAqC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IACjF,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,IAAI,CACN,yFAAyF;YACvF,mFAAmF;YACnF,sFAAsF;YACtF,wFAAwF,CAC3F,CAAA;IACH,CAAC;IAED,yDAAyD;IACzD,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAA;IAE9B,+CAA+C;IAC/C,EAAE;IACF,8EAA8E;IAC9E,uEAAuE;IACvE,4EAA4E;IAC5E,4EAA4E;IAC5E,4EAA4E;IAC5E,wEAAwE;IACxE,wBAAwB;IAExB,iEAAiE;IACjE,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAA;IAEhC,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC7B,OAAO;QACL,QAAQ;QACR,IAAI,EAAE;YACJ,MAAM,EAAE,uBAAuB;YAC/B,OAAO,EAAE,OAAO;YAChB,OAAO,EAAE;gBACP,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK;gBACnB,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE;gBACb,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI;gBACjB,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM;gBAC1B,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS;gBACnC,iBAAiB,EAAE,EAAE,CAAC,iBAAiB,CAAC,MAAM;aAC/C;YACD,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,WAAW;YACX,OAAO;YACP,UAAU,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE;SACpC;QACD,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC;KAC/B,CAAA;IACD,KAAK,KAAK,CAAA;AACZ,CAAC;AAED,SAAS,WAAW,CAAC,KAAkB;IACrC,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,KAAK,CAAA;IAC7B,MAAM,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC9B,OAAO;;;kBAGS,EAAE,CAAC,GAAG,CAAC,KAAK,cAAc,EAAE,CAAC,GAAG,CAAC,EAAE,aAAa,EAAE,CAAC,QAAQ,CAAC,MAAM,iBAAiB,OAAO,CAAC,MAAM,CAAC,SAAS,yBAAyB,EAAE,CAAC,iBAAiB,CAAC,MAAM,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE;UACxN,KAAK,CAAC,MAAM;OACf,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM;uBACb,KAAK,CAAC,WAAW,CAAC,MAAM;EAC7C,OAAO,CAAC,MAAM,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,sBAAsB,OAAO,CAAC,MAAM,CAAC,MAAM,sBAAsB,OAAO,CAAC,MAAM,CAAC,cAAc,KAAK,CAAC,CAAC,CAAC,EAAE;CAC7I,CAAA;AACD,CAAC;AAED,SAAS,QAAQ;IACf,OAAO;;;;;;CAMR,CAAA;AACD,CAAC;AAED;;;;;GAKG;AACH,MAAM,SAAS,GAAG,EAAE,CAAA;AAEpB,SAAS,KAAK,CAAC,KAAkB;IAC/B,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;IACxC,IAAI,CAAC,KAAK;QAAE,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,YAAY,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAA;IACrE,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;IACrC,IAAI,IAAI,CAAC,MAAM,IAAI,SAAS;QAAE,OAAO,IAAI,CAAA;IACzC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAA;IACpC,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;IAClC,OAAO,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,QAAQ,CAAA;AAC7F,CAAC;AAED,SAAS,iBAAiB,CAAC,WAAyB;IAClD,IAAI,KAAK,GAAG,iEAAiE,CAAA;IAC7E,IAAI,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,CAAA;IAC/B,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,UAAU,UAAU,CAAC,GAAG,KAAK,CAAA;QAC7E,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;QAC/B,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,IAAI,GAAG,iBAAiB;YAAE,MAAK;QACxD,KAAK,IAAI,IAAI,CAAA;QACb,KAAK,IAAI,CAAC,CAAA;QACV,KAAK,IAAI,IAAI,CAAA;IACf,CAAC;IACD,IAAI,KAAK,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC;QAC/B,KAAK,IAAI,WAAW,WAAW,CAAC,MAAM,GAAG,KAAK,SAAS,CAAA;IACzD,CAAC;IACD,KAAK,IAAI,IAAI,CAAA;IACb,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,aAAa,CAAC,KAAkB;IACvC,MAAM,EAAE,OAAO,EAAE,GAAG,KAAK,CAAA;IACzB,IAAI,GAAG,GAAG,iDAAiD,CAAA;IAE3D,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,GAAG,IAAI,sBAAsB,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,CAAA;QACtD,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YAC9C,MAAM,KAAK,GAAa,EAAE,CAAA;YAC1B,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;YACpD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;YACvD,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;YACpD,GAAG,IAAI,OAAO,IAAI,CAAC,IAAI,QAAQ,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,SAAS,SAAS,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,KAAK,CAAA;QACxG,CAAC;QACD,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE;YAAE,GAAG,IAAI,WAAW,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,SAAS,CAAA;QACnF,GAAG,IAAI,IAAI,CAAA;IACb,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,GAAG,IAAI,iBAAiB,OAAO,CAAC,QAAQ,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,cAAc,YAAY,CAAA;QAC7F,MAAM,WAAW,GAAG;YAClB,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YACtD,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAC9B,CAAA;QACD,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAA;QAC1F,KAAK,MAAM,OAAO,IAAI,MAAM,EAAE,CAAC;YAC7B,GAAG,IAAI,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,QAAQ,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,SAAS,OAAO,CAAC,GAAG,KAAK,CAAA;YAC5G,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;gBACzC,GAAG,IAAI,OAAO,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAA;YACpD,CAAC;QACH,CAAC;QACD,GAAG,IAAI,IAAI,CAAA;IACb,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,GAAG,IAAI,yBAAyB,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,CAAA;QAC1D,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YAChD,GAAG,IAAI,MAAM,KAAK,CAAC,WAAW,IAAI,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC,SAAS,KAAK,CAAC,GAAG,KAAK,CAAA;QACxF,CAAC;QACD,GAAG,IAAI,IAAI,CAAA;IACb,CAAC;IAED,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,GAAG,IAAI,sBAAsB,OAAO,CAAC,OAAO;aACzC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;aACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;aACtC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAA;IACtB,CAAC;IAED,OAAO,GAAG,CAAA;AACZ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,GAAG,MAAM,CAAA;AAC1B,gFAAgF;AAChF,MAAM,iBAAiB,GAAG,GAAG,CAAA;AAE7B,SAAS,UAAU,CAAC,KAAkB;IACpC,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,KAAK,MAAM,OAAO,IAAI,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QACvD,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;QAC7D,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,SAAQ;QAC/B,MAAM,SAAS,GAAG,cAAc,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAA;QACzD,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAA;QACxD,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;QACnE,MAAM,IAAI,GAAG,UAAU,OAAO,CAAC,UAAU,IAAI,GAAG,KAAK,SAAS,EAAE,CAAA;QAChE,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;QAC/B,IAAI,KAAK,GAAG,IAAI,GAAG,WAAW;YAAE,MAAK;QACrC,KAAK,IAAI,IAAI,CAAA;QACb,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAClB,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IACjC,OAAO,sCAAsC,KAAK,CAAC,MAAM,iBAAiB,KAAK,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAA;AAC1G,CAAC;AAED,SAAS,eAAe,CAAC,KAAkB;IACzC,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,KAAK,CAAA;IAC7B,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAA;IAChD,IAAI,GAAG,GAAG,oCAAoC,EAAE,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAA;IACjE,GAAG,IAAI,oDAAoD,SAAS,mCAAmC,CAAA;IAEvG,8CAA8C;IAC9C,EAAE;IACF,6EAA6E;IAC7E,6EAA6E;IAC7E,2EAA2E;IAC3E,2EAA2E;IAC3E,0EAA0E;IAC1E,4EAA4E;IAC5E,qEAAqE;IACrE,MAAM,QAAQ,GAAG,UAAU,CAAC,EAAE,CAAC,CAAA;IAC/B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAA;IACjC,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;QAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACzE,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;QACpE,GAAG,IAAI,8BAA8B,QAAQ,CAAC,MAAM,gBAAgB,KAAK,6BAA6B,CAAA;QACtG,oEAAoE;QACpE,EAAE;QACF,2EAA2E;QAC3E,2EAA2E;QAC3E,2EAA2E;QAC3E,6EAA6E;QAC7E,yEAAyE;QACzE,iDAAiD;QACjD,MAAM,MAAM,GAAG,KAAK,CAAA;QACpB,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;QAC5C,KAAK,MAAM,OAAO,IAAI,KAAK,EAAE,CAAC;YAC5B,GAAG,IAAI,SAAS,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,OAAO,CAAC,MAAM,IAAI,CAAA;QACxG,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;YACnC,GAAG,IAAI,MAAM,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,sGAAsG,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,EAAE,+BAA+B,CAAA;QACrM,CAAC;QACD,GAAG,IAAI,IAAI,CAAA;IACb,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED;;;;;;GAMG;AACH,SAAS,YAAY,CAAC,QAAmB,EAAE,MAAc;IACvD,MAAM,MAAM,GAAG,CAAC,OAAgB,EAAU,EAAE,CAC1C,YAAY,CAAC,SAAS,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,OAAO,CAAC,MAAM,IAAI,CAAC,CAAA;IAC/G,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACzD,IAAI,KAAK,IAAI,MAAM;QAAE,OAAO,QAAQ,CAAA;IACpC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAA;IACpD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,CAAA;IACtD,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAA;IACrC,MAAM,GAAG,GAAc,EAAE,CAAA;IACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAA;QAChD,IAAI,OAAO;YAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAChC,CAAC;IACD,MAAM,IAAI,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IAC5B,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI;QAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC/C,OAAO,GAAG,CAAA;AACZ,CAAC;AASD;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAC,EAAa;IACtC,MAAM,UAAU,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAA;IACpF,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IACtC,MAAM,QAAQ,GAAc,EAAE,CAAA;IAC9B,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC;QACjD,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;QAClC,MAAM,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,IAAI,IAAI,CAAC,GAAG,CAAC,CAAA;QAC/D,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,IAAI,IAAI,CAAC,CAAC,UAAU,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAA;QACnG,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,EAAE,CAAA;QAC/E,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI;YACJ,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC;YACtB,QAAQ;YACR,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;SAClE,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,kCAAkC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;IACnF,MAAM,OAAO,GAAG,iCAAiC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;IACvE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,CAAA;AACzD,CAAC;AAED,gFAAgF;AAChF,SAAS,WAAW,CAAC,KAAkB;IACrC,MAAM,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IACpC,OAAO,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;AAC9D,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,cAAc,CACrB,OAAgB,EAChB,IAAY,EACZ,KAAa;IAEb,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAA;IACxC,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC,CAAA;QAClE,4EAA4E;QAC5E,8DAA8D;QAC9D,MAAM,KAAK,GAAG,MAAM;YAClB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;YAC7D,CAAC,CAAC,EAAE,CAAA;QACN,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAA;QAC5D,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACtB,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,CAAA;YACxD,SAAQ;QACV,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QAC3C,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAC3C,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,CAAA;IAClD,CAAC;IACD,6EAA6E;IAC7E,kBAAkB;IAClB,OAAO,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;SACzB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAC5E,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;AACpB,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,OAAO,CAAC,IAAY,EAAE,GAAW;IAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;IAC/C,IAAI,MAAM,CAAC,MAAM,IAAI,GAAG;QAAE,OAAO,MAAM,CAAA;IACvC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAG,CAAA;AAC7D,CAAC"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * The readable transcript: what was said, in order, with nothing added.
3
+ *
4
+ * A second output shape, because a handoff and a transcript answer different
5
+ * questions. The handoff says *where the work stands* and drops almost
6
+ * everything to say it. This says *what was actually said* — the user's turns
7
+ * and the agent's replies, verbatim, in a file a human can read top to bottom
8
+ * or grep.
9
+ *
10
+ * It exists because "is this the session I want?" is a question people answer by
11
+ * skimming, and a 4,000-token brief cannot be skimmed for that. Tool calls and
12
+ * their output are summarised to one line each by default: they are most of the
13
+ * bytes and almost none of the meaning, and `--full` includes them when they are
14
+ * the point.
15
+ */
16
+ import type { SessionIR } from '../ir/types.js';
17
+ export interface TranscriptOptions {
18
+ /** Include tool calls and their output, not just the conversation. */
19
+ full?: boolean;
20
+ /** Include reasoning blocks. Off by default: it is the noisiest tier. */
21
+ reasoning?: boolean;
22
+ /** Only the last N messages, when the file is too large to read whole. */
23
+ last?: number;
24
+ }
25
+ export interface Transcript {
26
+ text: string;
27
+ messages: number;
28
+ tokens: number;
29
+ }
30
+ /** Render a session as plain text, oldest first. */
31
+ export declare function renderTranscript(ir: SessionIR, options?: TranscriptOptions): Transcript;
@@ -0,0 +1,82 @@
1
+ /** Render a session as plain text, oldest first. */
2
+ export function renderTranscript(ir, options = {}) {
3
+ const source = options.last ? ir.messages.slice(-options.last) : ir.messages;
4
+ const out = [];
5
+ let rendered = 0;
6
+ const header = [
7
+ `# ${ir.ref.agent} session ${ir.ref.id}`,
8
+ `# ${ir.ref.path}`,
9
+ typeof ir.metadata['cwd'] === 'string' ? `# cwd: ${ir.metadata['cwd']}` : undefined,
10
+ typeof ir.metadata['branch'] === 'string' ? `# branch: ${ir.metadata['branch']}` : undefined,
11
+ typeof ir.metadata['model'] === 'string' ? `# model: ${ir.metadata['model']}` : undefined,
12
+ `# ${source.length} of ${ir.messages.length} message(s)`,
13
+ '',
14
+ ].filter((line) => line !== undefined);
15
+ out.push(...header);
16
+ for (const message of source) {
17
+ const block = renderOne(message, options);
18
+ if (!block)
19
+ continue;
20
+ out.push(block);
21
+ rendered += 1;
22
+ }
23
+ const text = `${out.join('\n')}\n`;
24
+ return { text, messages: rendered, tokens: Math.ceil(text.length / 4) };
25
+ }
26
+ function renderOne(message, options) {
27
+ const text = (message.text ?? '').trim();
28
+ if (message.isHumanTurn) {
29
+ return `\n${rule('USER')}\n${text}\n`;
30
+ }
31
+ if (message.role === 'user') {
32
+ // Harness-injected, but worth seeing: it is where provider summaries land.
33
+ return text ? `\n${rule('USER (harness)')}\n${text}\n` : undefined;
34
+ }
35
+ if (message.role === 'assistant') {
36
+ const parts = [];
37
+ if (text)
38
+ parts.push(`${rule('ASSISTANT')}\n${text}`);
39
+ if (message.toolName) {
40
+ if (options.full) {
41
+ parts.push(`${rule(`TOOL ${message.toolName}`)}\n${stringify(message.toolInput)}`);
42
+ }
43
+ else if (!text) {
44
+ // A tool call with no prose still tells the reader what happened.
45
+ parts.push(` · ${message.toolName} ${oneLine(stringify(message.toolInput), 100)}`);
46
+ }
47
+ }
48
+ return parts.length > 0 ? `\n${parts.join('\n')}\n` : undefined;
49
+ }
50
+ if (message.role === 'tool') {
51
+ if (!options.full)
52
+ return undefined;
53
+ return `${rule('TOOL RESULT')}\n${oneLine(text, 2_000)}\n`;
54
+ }
55
+ if (message.role === 'system') {
56
+ return text ? `\n${rule('SYSTEM')}\n${text}\n` : undefined;
57
+ }
58
+ if (message.role === 'attachment') {
59
+ return text ? `\n${rule('PROVIDER SUMMARY')}\n${text}\n` : undefined;
60
+ }
61
+ return undefined;
62
+ }
63
+ function rule(label) {
64
+ return `──── ${label} ${'─'.repeat(Math.max(4, 60 - label.length))}`;
65
+ }
66
+ function stringify(value) {
67
+ if (value === undefined)
68
+ return '';
69
+ if (typeof value === 'string')
70
+ return value;
71
+ try {
72
+ return JSON.stringify(value);
73
+ }
74
+ catch {
75
+ return String(value);
76
+ }
77
+ }
78
+ function oneLine(text, max) {
79
+ const single = text.replace(/\s+/g, ' ').trim();
80
+ return single.length <= max ? single : `${single.slice(0, max - 1)}…`;
81
+ }
82
+ //# sourceMappingURL=transcript.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transcript.js","sourceRoot":"","sources":["../../src/artifact/transcript.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { type DiscoverOptions } from '../discover/index.js';
2
2
  import { type Selection } from '../llm/index.js';
3
- import { score, type Arm, type BenchOptions, type Trial } from './index.js';
3
+ import { score, type Arm, type BenchOptions, type Question, type Trial } from './index.js';
4
4
  export interface BenchRun {
5
5
  backend: string;
6
6
  questions: number;
@@ -13,5 +13,23 @@ export declare function runBench(references: string[], options?: {
13
13
  bench?: Partial<BenchOptions>;
14
14
  outDir?: string;
15
15
  discover?: DiscoverOptions;
16
+ /**
17
+ * Use this file as the artifact instead of rendering one.
18
+ *
19
+ * The point is comparison. Two tools can be measured on the same session and
20
+ * the same questions, and the only way to tell whether a difference is the
21
+ * artifact or the harness is to hold one of them fixed.
22
+ */
23
+ artifactOverride?: string;
24
+ /**
25
+ * Use exactly these questions instead of deriving them.
26
+ *
27
+ * Two tools can be pointed at the same session and the same questions, but
28
+ * each derives its own from its own event model — so they end up asking
29
+ * different things at different difficulties, and comparing the scores
30
+ * compares the questions. Reading a shared file is the only way the two
31
+ * numbers mean the same thing.
32
+ */
33
+ questions?: Question[];
16
34
  }, progress?: (message: string) => void): Promise<BenchRun>;
17
35
  export declare function renderTable(scores: ReturnType<typeof score>, trials: Trial[], backend: string): string;
package/dist/bench/run.js CHANGED
@@ -15,6 +15,10 @@ export async function runBench(references, options = {}, progress = () => { }) {
15
15
  if (!backend) {
16
16
  throw new Error('the benchmark needs a backend that can read the context: pass --llm api:<provider>. Without one there is no successor agent and nothing to measure.');
17
17
  }
18
+ if (options.questions) {
19
+ // A shared question set describes one session; expand against that one.
20
+ references = references.slice(0, 1);
21
+ }
18
22
  const trials = [];
19
23
  const perSession = [];
20
24
  for (const reference of references) {
@@ -22,9 +26,11 @@ export async function runBench(references, options = {}, progress = () => { }) {
22
26
  const ir = await readSession(ref);
23
27
  const ledgers = (await import('../ledgers/index.js')).buildLedgers(ir);
24
28
  const constraints = extractConstraints(ir);
25
- const artifact = render({ ir, ledgers, constraints, engine: 'deterministic' }).markdown;
29
+ const artifact = options.artifactOverride
30
+ ? await (await import('node:fs/promises')).readFile(options.artifactOverride, 'utf8')
31
+ : render({ ir, ledgers, constraints, engine: 'deterministic' }).markdown;
26
32
  const tail = tailOf(ir);
27
- const asked = questions(ir, ledgers, bench);
33
+ const asked = options.questions ?? questions(ir, ledgers, bench);
28
34
  if (asked.length === 0) {
29
35
  progress(`${reference}: no checkable questions could be derived; skipping`);
30
36
  continue;
@@ -50,6 +56,7 @@ export async function runBench(references, options = {}, progress = () => { }) {
50
56
  const report = {
51
57
  schema: 'ccompactor.bench/v1',
52
58
  backend: selectionLabel(selection),
59
+ artifact: options.artifactOverride ?? 'ccompactor (rendered)',
53
60
  settings: bench,
54
61
  arms,
55
62
  questions: trials.length / Math.max(1, arms.length),
@@ -87,7 +94,7 @@ async function trial(backend, arm, question, artifact, tail, ir, ledgers, bench)
87
94
  if (!range)
88
95
  break;
89
96
  expansions += 1;
90
- const events = expand(ir, [range]);
97
+ const events = await expand(ir, [range]);
91
98
  tokens += Math.ceil(events.length / 4);
92
99
  conversation += `\nYou asked for evt ${range[0]}..${range[1]}:\n${events}\n`;
93
100
  }