mindweave 3.4.1 → 3.4.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 (72) hide show
  1. package/README.md +26 -3
  2. package/dist/cli/App.js +52 -8
  3. package/dist/cli/App.js.map +1 -1
  4. package/dist/cli/commands.js +1 -0
  5. package/dist/cli/commands.js.map +1 -1
  6. package/dist/cli/components/ToolLine.js +5 -3
  7. package/dist/cli/components/ToolLine.js.map +1 -1
  8. package/dist/cli/components/WorkGroup.js +82 -64
  9. package/dist/cli/components/WorkGroup.js.map +1 -1
  10. package/dist/cli/startupArgs.js +24 -4
  11. package/dist/cli/startupArgs.js.map +1 -1
  12. package/dist/cli/transcript.js +14 -0
  13. package/dist/cli/transcript.js.map +1 -1
  14. package/dist/cli/workLines.js +40 -0
  15. package/dist/cli/workLines.js.map +1 -1
  16. package/dist/core/turnRunner.js +35 -23
  17. package/dist/core/turnRunner.js.map +1 -1
  18. package/dist/dynamo/contextWindow.js +28 -36
  19. package/dist/dynamo/contextWindow.js.map +1 -1
  20. package/dist/dynamo/engine.js +51 -9
  21. package/dist/dynamo/engine.js.map +1 -1
  22. package/dist/dynamo/guard.js +1 -1
  23. package/dist/dynamo/guard.js.map +1 -1
  24. package/dist/dynamo/prompt.js +1 -1
  25. package/dist/headless/args.js +82 -0
  26. package/dist/headless/args.js.map +1 -0
  27. package/dist/headless/main.js +87 -0
  28. package/dist/headless/main.js.map +1 -0
  29. package/dist/headless/output.js +150 -0
  30. package/dist/headless/output.js.map +1 -0
  31. package/dist/headless/run.js +188 -0
  32. package/dist/headless/run.js.map +1 -0
  33. package/dist/index.js +8 -0
  34. package/dist/index.js.map +1 -1
  35. package/dist/main.js +5 -0
  36. package/dist/main.js.map +1 -1
  37. package/dist/memory/compaction.js +94 -2
  38. package/dist/memory/compaction.js.map +1 -1
  39. package/dist/memory/rewind.js +10 -6
  40. package/dist/memory/rewind.js.map +1 -1
  41. package/dist/memory/session.js +2 -2
  42. package/dist/memory/session.js.map +1 -1
  43. package/dist/memory/sessionMemory.js +270 -69
  44. package/dist/memory/sessionMemory.js.map +1 -1
  45. package/dist/memory/types.js.map +1 -1
  46. package/dist/project/context.js +34 -6
  47. package/dist/project/context.js.map +1 -1
  48. package/dist/tools/coauthor.js +154 -0
  49. package/dist/tools/coauthor.js.map +1 -0
  50. package/dist/tools/codeIntel.js +38 -10
  51. package/dist/tools/codeIntel.js.map +1 -1
  52. package/dist/tools/docOutline.js +250 -0
  53. package/dist/tools/docOutline.js.map +1 -0
  54. package/dist/tools/editRipple.js +29 -2
  55. package/dist/tools/editRipple.js.map +1 -1
  56. package/dist/tools/emptyResult.js +24 -0
  57. package/dist/tools/emptyResult.js.map +1 -0
  58. package/dist/tools/glob.js +11 -2
  59. package/dist/tools/glob.js.map +1 -1
  60. package/dist/tools/grep.js +4 -3
  61. package/dist/tools/grep.js.map +1 -1
  62. package/dist/tools/missingPath.js +90 -0
  63. package/dist/tools/missingPath.js.map +1 -0
  64. package/dist/tools/readFile.js +3 -1
  65. package/dist/tools/readFile.js.map +1 -1
  66. package/dist/tools/rebuildDetail.js +9 -5
  67. package/dist/tools/rebuildDetail.js.map +1 -1
  68. package/dist/tools/runCommand.js +5 -1
  69. package/dist/tools/runCommand.js.map +1 -1
  70. package/dist/tools/webSearch.js +3 -1
  71. package/dist/tools/webSearch.js.map +1 -1
  72. package/package.json +2 -2
@@ -69,63 +69,184 @@ export const SESSION_MEMORY_SECTION_TOKENS = env("MINDWEAVE_SESSION_MEMORY_SECTI
69
69
  * italic _descriptions_ are template instructions (kept intact); the model only fills
70
70
  * the content beneath each. "Current State" is first-class: it's what lets the model
71
71
  * pick up cleanly after a compaction. */
72
- export const SESSION_MEMORY_TEMPLATE = `# Session Title
73
- _A short and distinctive 3-6 word title for the session, like a commit subject ("Fix SQL injection in login"). No project name, no filler_
74
-
75
- # Current State
76
- _What is actively being worked on right now? Pending tasks not yet completed. Immediate next steps._
77
-
78
- # Task specification
79
- _What did the user ask to build? Any design decisions or other explanatory context_
80
-
81
- # Files and Functions
82
- _What are the important files? In short, what do they contain and why are they relevant?_
83
-
84
- # Workflow
85
- _What commands are usually run and in what order? How to interpret their output if not obvious?_
86
-
87
- # Errors & Corrections
88
- _Errors encountered and how they were fixed. What did the user correct? What approaches failed and should not be tried again?_
89
-
90
- # Codebase and System Documentation
91
- _What are the important system components? How do they work/fit together?_
92
-
93
- # Learnings
94
- _What has worked well? What has not? What to avoid? Do not duplicate items from other sections_
95
-
96
- # Key results
97
- _If the user asked a specific output such as an answer to a question, a table, or other document, repeat the exact result here_
98
-
99
- # Worklog
72
+ export const SESSION_MEMORY_TEMPLATE = `# Session Title
73
+ _A short and distinctive 3-6 word title for the session, like a commit subject ("Fix SQL injection in login"). No project name, no filler_
74
+
75
+ # Current State
76
+ _What is actively being worked on right now? Pending tasks not yet completed. Immediate next steps._
77
+
78
+ # Task specification
79
+ _What did the user ask to build? Any design decisions or other explanatory context_
80
+
81
+ # Files and Functions
82
+ _What are the important files? In short, what do they contain and why are they relevant?_
83
+
84
+ # Workflow
85
+ _What commands are usually run and in what order? How to interpret their output if not obvious?_
86
+
87
+ # Errors & Corrections
88
+ _Errors encountered and how they were fixed. What did the user correct? What approaches failed and should not be tried again?_
89
+
90
+ # Codebase and System Documentation
91
+ _What are the important system components? How do they work/fit together?_
92
+
93
+ # Learnings
94
+ _What has worked well? What has not? What to avoid? Do not duplicate items from other sections_
95
+
96
+ # Key results
97
+ _If the user asked a specific output such as an answer to a question, a table, or other document, repeat the exact result here_
98
+
99
+ # Worklog
100
100
  _Step by step, what was attempted, done? Very terse summary for each step_`;
101
101
  const UPDATE_SYSTEM = "You maintain a running notes document that captures the live state of a software " +
102
102
  "engineering session, so work can continue seamlessly across context compaction. You " +
103
- "will be given the CURRENT notes and what has happened SINCE they were written. Return the " +
104
- "COMPLETE updated notes document. Rules:\n" +
105
- "- Keep EVERY section header exactly, and keep the italic _description_ line under each " +
106
- "header intact (those are template instructions, not content) — only update the content " +
107
- "beneath them.\n" +
108
- "- Fold new activity into the right sections; write DENSE, specific content (file paths, " +
109
- "function names, exact commands, error messages, decisions).\n" +
110
- `- Keep each section under ~${SESSION_MEMORY_SECTION_TOKENS} tokens: when one grows past that, ` +
111
- "CYCLE OUT the least important details while preserving the most critical.\n" +
112
- "- Leave a section unchanged if there's nothing substantial to add (no filler like 'N/A').\n" +
113
- "- ALWAYS keep 'Current State' accurate to the latest turn — it's what continues the work " +
114
- "after compaction.\n" +
115
- "- Where the new activity contradicts what the notes say, the new activity is right: " +
116
- "correct the notes, and do not write about the correction.\n" +
117
- "- Do NOT record facts about the machine that change on their own: process ids, whether " +
118
- "an app or server is currently running, ports in use, temporary files or database rows " +
119
- "that exist only for a test. They are wrong within minutes. If one matters, say what was " +
120
- "done and when (\"started the dev server at 09:04\"), never that it is still so.\n" +
121
- "Output ONLY the notes document — no preamble, no commentary, no code fences.";
122
- const UPDATE_REQUEST = "Update the notes with anything new from the conversation since they were written, then " +
123
- "output the full updated notes document (same section headers and italic descriptions, " +
124
- "dense, concise).";
103
+ "will be given the CURRENT notes and what has happened SINCE they were written, and you " +
104
+ "reply with only the parts of the notes that change.";
105
+ /**
106
+ * How the notes writer is told to answer, the same wording in both ways of calling it.
107
+ *
108
+ * It answers with the sections that CHANGED, not the whole document. Writing the whole thing back
109
+ * every time cost as many output tokens as the notes are long (6.5K for a 25 KB document, per
110
+ * refresh, several refreshes in a minute during busy work), and a long enough document no longer
111
+ * fits in one answer at all: the reply was cut off mid-way and thrown away, and the next refresh
112
+ * paid for the same attempt again. A changed section is a few hundred tokens, however long the
113
+ * notes have grown.
114
+ */
115
+ const UPDATE_RULES = "Reply with ONLY the sections of the notes that need to change, each as its exact \"# Heading\" line " +
116
+ "followed by its new content. Leave out every section with nothing new; an unchanged section must not appear. " +
117
+ "If nothing at all changed, reply: NO CHANGES.\n" +
118
+ "- A section you list REPLACES the one in the notes, so write its complete new content, dense and specific " +
119
+ "(file paths, function names, exact commands, error messages, decisions).\n" +
120
+ "- To add to a section without rewriting it, make the first line of its content APPEND: and write only the new " +
121
+ "lines after it. Use this for the Worklog.\n" +
122
+ "- Never repeat the italic _description_ line under a heading; it is kept for you.\n" +
123
+ `- Keep each section under ~${SESSION_MEMORY_SECTION_TOKENS} tokens: when one grows past that, CYCLE OUT the ` +
124
+ "least important details while preserving the most critical. A section over its budget has to be rewritten shorter.\n" +
125
+ "- Where the new activity contradicts what the notes say, the new activity is right: correct the notes, and do not " +
126
+ "write about the correction.\n" +
127
+ "- ALWAYS keep \"Current State\" accurate to the latest turn — it is what continues the work after compaction.\n" +
128
+ "- Do NOT record facts about the machine that change on their own: process ids, whether an app or server is " +
129
+ "currently running, ports in use, temporary files or database rows that exist only for a test. They are wrong " +
130
+ "within minutes. If one matters, say what was done and when (\"started the dev server at 09:04\"), never that it " +
131
+ "is still so.\n" +
132
+ "- Reply with text only. Do not call any tool. No preamble, no commentary, no code fences.";
125
133
  /** The `# Heading` lines of the template, in order (pure). */
126
134
  function templateHeaders() {
127
135
  return SESSION_MEMORY_TEMPLATE.split("\n").filter((l) => l.startsWith("# "));
128
136
  }
137
+ const DESCRIPTION_LINE = /^_.*_$/;
138
+ const NOTHING_CHANGED = /^\W*(no changes?|n\/a|none|nothing (new|to (add|change|update))|unchanged)\b/i;
139
+ function stripFences(text) {
140
+ const lines = text.replace(/\r\n/g, "\n").split("\n");
141
+ while (lines.length > 0 && /^\s*```/.test(lines[0]))
142
+ lines.shift();
143
+ while (lines.length > 0 && /^\s*```\s*$/.test(lines[lines.length - 1]))
144
+ lines.pop();
145
+ return lines;
146
+ }
147
+ /**
148
+ * The sections a reply gave, read as changes to the notes (pure).
149
+ *
150
+ * Only a template heading starts a section, so a model that wraps its answer in a sentence, or
151
+ * writes a "# Something" line of its own inside a section, does not break the parse. A section's
152
+ * words are what follows its heading, minus the italic description line a model is told not to
153
+ * repeat but often does. `truncated` says the reply was cut off by the output limit: the last
154
+ * section is then incomplete and is dropped, rather than written over the real one half-finished.
155
+ */
156
+ export function parseNotesPatch(reply, truncated = false) {
157
+ const known = new Map(templateHeaders().map((h) => [h.toLowerCase(), h]));
158
+ const raw = [];
159
+ for (const line of stripFences(reply)) {
160
+ const header = known.get(line.trim().toLowerCase());
161
+ if (header)
162
+ raw.push({ header, lines: [] });
163
+ else
164
+ raw.at(-1)?.lines.push(line);
165
+ }
166
+ if (truncated)
167
+ raw.pop();
168
+ const patch = new Map();
169
+ for (const { header, lines } of raw) {
170
+ const body = [...lines];
171
+ while (body.length > 0 && (body[0].trim() === "" || DESCRIPTION_LINE.test(body[0].trim())))
172
+ body.shift();
173
+ let mode = "set";
174
+ const first = body[0]?.match(/^\s*APPEND:?\s*(.*)$/i);
175
+ if (first) {
176
+ mode = "append";
177
+ body[0] = first[1] ?? "";
178
+ }
179
+ const text = body.join("\n").trim();
180
+ if (!text || NOTHING_CHANGED.test(text) && text.length < 40)
181
+ continue;
182
+ patch.set(header, { mode, body: text });
183
+ }
184
+ return patch;
185
+ }
186
+ /** Whether a reply says, in words, that there was nothing to change (pure). */
187
+ export function saysNothingChanged(reply) {
188
+ const text = reply.trim();
189
+ return text.length < 80 && NOTHING_CHANGED.test(text);
190
+ }
191
+ /** The notes as sections, in document order; anything before the first heading is dropped (pure). */
192
+ function splitSections(notes) {
193
+ const known = new Set(templateHeaders().map((h) => h.toLowerCase()));
194
+ const out = [];
195
+ for (const line of notes.replace(/\r\n/g, "\n").split("\n")) {
196
+ if (known.has(line.trim().toLowerCase()))
197
+ out.push({ header: line.trim(), lines: [] });
198
+ else
199
+ out.at(-1)?.lines.push(line);
200
+ }
201
+ return out.map(({ header, lines }) => {
202
+ const body = [...lines];
203
+ const description = [];
204
+ while (body.length > 0 && (body[0].trim() === "" || DESCRIPTION_LINE.test(body[0].trim()))) {
205
+ if (body[0].trim() !== "")
206
+ description.push(body[0]);
207
+ body.shift();
208
+ }
209
+ return { header, description: description.join("\n"), body: body.join("\n").trim(), raw: [header, ...lines].join("\n").trimEnd() };
210
+ });
211
+ }
212
+ /** A section's tokens, for telling the writer which ones are over their budget (pure). */
213
+ export function oversizedSections(notes, limit = SESSION_MEMORY_SECTION_TOKENS) {
214
+ return splitSections(notes)
215
+ .filter((sec) => estimateTokens(sec.body) > limit)
216
+ .map((sec) => sec.header.replace(/^#\s*/, ""));
217
+ }
218
+ /**
219
+ * The notes with a reply's changes folded in (pure). A heading the notes lack is added from the
220
+ * template; a replacement that would throw away most of a long section is refused, so one bad
221
+ * answer cannot empty a record the rest of the notes depend on. `changed` names what was
222
+ * actually written, which is what tells "nothing new" from "an answer nothing could be done with".
223
+ */
224
+ export function applyNotesPatch(current, patch) {
225
+ const have = new Map(splitSections(current).map((sec) => [sec.header, sec]));
226
+ const template = new Map(splitSections(SESSION_MEMORY_TEMPLATE).map((sec) => [sec.header, sec]));
227
+ const changed = [];
228
+ const refused = [];
229
+ const parts = [];
230
+ for (const header of templateHeaders()) {
231
+ const base = have.get(header) ?? template.get(header);
232
+ const change = patch.get(header);
233
+ if (!change) {
234
+ parts.push(have.has(header) ? base.raw : [base.header, base.description].filter(Boolean).join("\n"));
235
+ continue;
236
+ }
237
+ const body = change.mode === "append" ? [base.body, change.body].filter(Boolean).join("\n") : change.body;
238
+ const collapsed = change.mode === "set" && base.body.length > 1_200 && body.length < base.body.length * 0.25;
239
+ if (collapsed || body === base.body) {
240
+ if (collapsed)
241
+ refused.push(header);
242
+ parts.push(base.raw);
243
+ continue;
244
+ }
245
+ changed.push(header);
246
+ parts.push([base.header, base.description, body].filter(Boolean).join("\n"));
247
+ }
248
+ return { notes: boundSessionMemory(parts.join("\n\n")), changed, refused };
249
+ }
129
250
  /**
130
251
  * How many tool calls the entries from `from` on contain (pure). Counted from the point the
131
252
  * notes last covered, so there is no counter to keep in step with the transcript.
@@ -191,11 +312,27 @@ export function notesAreUsable(previous, next) {
191
312
  return false;
192
313
  return true;
193
314
  }
315
+ /** What the covered end of the transcript says, so a reader of the conversation can find it (pure). */
316
+ function boundaryNote(transcript, covered) {
317
+ if (covered <= 0)
318
+ return "nothing: the notes are still empty, so everything above is new";
319
+ const e = transcript[Math.min(covered, transcript.length) - 1];
320
+ if (!e)
321
+ return "the start";
322
+ const text = (e.role === "assistant" || e.role === "user" || e.role === "summary" ? e.content : "").replace(/\s+/g, " ").trim().slice(0, 100);
323
+ return `the ${e.role} message that begins: "${text}"`;
324
+ }
194
325
  /**
195
- * Refresh the session notes from what happened since they were written (one cheap model
196
- * call, thinking off). Mutates `session.sessionMemory` and the coverage marks IN MEMORY
197
- * only — the CLI persists the notes file, keeping the engine filesystem-pure. Degrade-safe:
198
- * on any failure the previous notes are kept untouched.
326
+ * Refresh the session notes from what happened since they were written (one model call, thinking
327
+ * off). Mutates `session.sessionMemory` and the coverage marks IN MEMORY only — the CLI persists
328
+ * the notes file, keeping the engine filesystem-pure. Degrade-safe: on any failure the previous
329
+ * notes are kept untouched.
330
+ *
331
+ * Two ways to make the call. When the provider still holds the conversation in its cache and
332
+ * reading it from there is cheaper than sending what is new at full price (`shared`), the call is
333
+ * the main request with one more message on the end: the model reads the real conversation, at the
334
+ * cached price, and the instruction goes after it. Otherwise the call stands alone and is given the
335
+ * entries the notes have not seen. Either way the answer is only the sections that changed.
199
336
  *
200
337
  * Runs while the turn goes on, so it works from a snapshot: it reads the entries as they
201
338
  * were when it started, and records THAT as what the notes cover. If the transcript was
@@ -204,12 +341,20 @@ export function notesAreUsable(previous, next) {
204
341
  */
205
342
  export async function updateSessionMemory(session, signal,
206
343
  /** Told what the call cost: it is a real model call on the user's key that nobody asked for. */
207
- onUsage) {
208
- const upto = session.transcript.length;
344
+ onUsage, shared) {
345
+ const current = session.sessionMemory?.trim() || SESSION_MEMORY_TEMPLATE;
346
+ const covered0 = Math.min(session.sessionMemoryEntries ?? 0, session.transcript.length);
347
+ const tokensOf = (from, to) => estimateEntriesTokens(session.transcript.slice(from, to));
348
+ // Which snapshot this refresh describes: the whole transcript as it is, or the part of it the
349
+ // last main request carried.
350
+ const fresh = session.transcript.length;
351
+ const unseenNow = tokensOf(Math.max(covered0, fresh - FEED_ENTRIES), fresh);
352
+ const prefix = session.sharedNotesOff ? null : ((await shared?.(unseenNow)) ?? null);
353
+ const upto = prefix ? prefix.entries : fresh;
209
354
  if (upto === 0)
210
355
  return false;
211
- const last = session.transcript[upto - 1];
212
- const covered = Math.min(session.sessionMemoryEntries ?? 0, upto);
356
+ const last = prefix ? prefix.last : session.transcript[upto - 1];
357
+ const covered = Math.min(covered0, upto);
213
358
  // Only what the notes have not seen, as far back as one refresh reads. Reading a fixed
214
359
  // number of the newest entries instead dropped the middle of anything longer than that.
215
360
  const from = Math.max(covered, upto - FEED_ENTRIES);
@@ -218,8 +363,43 @@ onUsage) {
218
363
  return false;
219
364
  const skipped = from - covered;
220
365
  const tokensAtStart = estimateEntriesTokens(session.transcript.slice(0, upto));
221
- const current = session.sessionMemory?.trim() || SESSION_MEMORY_TEMPLATE;
222
- try {
366
+ const over = oversizedSections(current);
367
+ const budgetNote = over.length > 0 ? `\nOver their budget and to be rewritten shorter: ${over.join(", ")}.` : "";
368
+ const ask = async () => {
369
+ if (prefix) {
370
+ try {
371
+ const model = prefix.request.model ?? session.modelConfig;
372
+ await ensureDriver(model.model);
373
+ const turn = await activeDriver().toolTurn({
374
+ ...prefix.request,
375
+ // The volatile tail is dropped: this message takes its place, right after the cached part.
376
+ context: undefined,
377
+ messages: [
378
+ ...prefix.request.messages,
379
+ {
380
+ role: "user",
381
+ content: `The conversation above is the session the notes describe. Do not continue it and do not call a tool: ` +
382
+ `this message asks only for an update of the session notes.\n\n` +
383
+ `NOW: ${new Date().toISOString()}\n\n` +
384
+ `CURRENT NOTES. They already cover everything up to and including ${boundaryNote(session.transcript, covered)}; ` +
385
+ `what comes after it is new:\n${current}\n\n${UPDATE_RULES}${budgetNote}`,
386
+ },
387
+ ],
388
+ }, { signal });
389
+ if (turn.usage)
390
+ onUsage?.(turn.usage);
391
+ if (turn.content.trim() || turn.toolCalls.length === 0) {
392
+ return { content: turn.content, stop: turn.stop, usage: turn.usage, calls: turn.toolCalls.length > 0 };
393
+ }
394
+ // The model answered with a tool call instead of notes. Not something to keep asking this way.
395
+ session.sharedNotesOff = true;
396
+ }
397
+ catch {
398
+ if (signal?.aborted)
399
+ return null;
400
+ // This model or provider would not take the main request as it is: use the plain call.
401
+ }
402
+ }
223
403
  // With reasoning off where the model allows it; see dynamo/auxModel.ts.
224
404
  // `ensureDriver` first: `activeDriver()` is a plain global, and a sub-agent (or
225
405
  // another background aux call) running its own model in between leaves it
@@ -229,7 +409,7 @@ onUsage) {
229
409
  //
230
410
  // `withTools`: a real (read-only) tool set, attached only if the model already
231
411
  // refused a bare call — some free models serve only tool-shaped requests.
232
- const { content, usage } = await withAuxModel(session.modelConfig, async (model, withTools) => {
412
+ const turn = await withAuxModel(session.modelConfig, async (model, withTools) => {
233
413
  await ensureDriver(model.model);
234
414
  return activeDriver().toolTurn({
235
415
  system: UPDATE_SYSTEM,
@@ -240,24 +420,45 @@ onUsage) {
240
420
  `CURRENT NOTES:\n${current}\n\n` +
241
421
  `WHAT HAPPENED SINCE THEY WERE WRITTEN` +
242
422
  (skipped > 0 ? ` (${skipped} earlier entries were too many to include)` : "") +
243
- `:\n${formatTranscriptForSummary(unseen)}\n\n${UPDATE_REQUEST}`,
423
+ `:\n${formatTranscriptForSummary(unseen)}\n\n${UPDATE_RULES}${budgetNote}`,
244
424
  },
245
425
  ],
246
426
  model,
247
427
  ...(withTools ? { tools: toolSchemas({ readOnlyOnly: true }) } : {}),
248
428
  }, { signal }); // Esc reaches this call too; a slow model must not hold a stop open
249
429
  });
250
- if (usage)
251
- onUsage?.(usage);
252
- const notes = boundSessionMemory(content.trim());
253
- if (!notesAreUsable(session.sessionMemory, notes))
430
+ if (turn.usage)
431
+ onUsage?.(turn.usage);
432
+ return { content: turn.content, stop: turn.stop, usage: turn.usage, calls: false };
433
+ };
434
+ try {
435
+ const answer = await ask();
436
+ if (!answer)
254
437
  return failed(session, tokensAtStart);
438
+ const patch = parseNotesPatch(answer.content, answer.stop === "truncated");
439
+ let notes;
440
+ if (patch.size === 0) {
441
+ // "Nothing new" is an answer; anything else with no sections in it is not one.
442
+ if (!saysNothingChanged(answer.content))
443
+ return failed(session, tokensAtStart);
444
+ notes = session.sessionMemory ?? "";
445
+ }
446
+ else {
447
+ const applied = applyNotesPatch(current, patch);
448
+ // A reply that only repeats what the notes say is an answer; one whose every change was refused is not.
449
+ if (applied.changed.length === 0 && applied.refused.length > 0)
450
+ return failed(session, tokensAtStart);
451
+ notes = applied.notes;
452
+ if (applied.changed.length > 0 && !notesAreUsable(session.sessionMemory, notes))
453
+ return failed(session, tokensAtStart);
454
+ }
255
455
  // The snapshot has to still be the start of the transcript. Compaction, a rewind, /clear
256
456
  // and the shedding of old rounds all replace it, and a refresh that began before one of
257
457
  // them describes entries that may no longer be where it thinks.
258
458
  if (session.transcript[upto - 1] !== last)
259
459
  return false;
260
- session.sessionMemory = notes;
460
+ if (notes)
461
+ session.sessionMemory = notes;
261
462
  session.sessionMemoryTokens = tokensAtStart;
262
463
  // The boundary compaction-from-notes splits on: everything up to here is written
263
464
  // down, everything after it has to be kept verbatim. Recorded at the same moment
@@ -289,10 +490,10 @@ function failed(session, tokensAtStart) {
289
490
  * Two refreshes at once would each read the same unseen entries and the later one would
290
491
  * overwrite the earlier with notes that know less. The returned promise never rejects.
291
492
  */
292
- export function refreshSessionMemory(session, signal, onUsage) {
493
+ export function refreshSessionMemory(session, signal, onUsage, shared) {
293
494
  if (session.sessionMemoryRun)
294
495
  return session.sessionMemoryRun;
295
- const run = updateSessionMemory(session, signal, onUsage).finally(() => {
496
+ const run = updateSessionMemory(session, signal, onUsage, shared).finally(() => {
296
497
  if (session.sessionMemoryRun === run)
297
498
  session.sessionMemoryRun = undefined;
298
499
  });
@@ -1 +1 @@
1
- {"version":3,"file":"sessionMemory.js","sourceRoot":"","sources":["../../src/memory/sessionMemory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sessionMemory.js","sourceRoot":"","sources":["../../src/memory/sessionMemory.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/memory/types.ts"],"names":[],"mappings":"AAsKA;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CAAC,KAAY;IACtC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa;QAAE,OAAO,EAAE,CAAC;IAC7D,OAAO,OAAO,KAAK,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC;AAC/F,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/memory/types.ts"],"names":[],"mappings":"AAwLA;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CAAC,KAAY;IACtC,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,KAAK,CAAC,aAAa;QAAE,OAAO,EAAE,CAAC;IAC7D,OAAO,OAAO,KAAK,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC;AAC/F,CAAC"}
@@ -71,18 +71,27 @@ function collectEnvironment(cwd) {
71
71
  };
72
72
  }
73
73
  async function collectGit(cwd) {
74
- const inside = (await runGit(["rev-parse", "--is-inside-work-tree"], cwd))?.trim();
75
- if (inside !== "true")
74
+ // Every git process costs a spawn, so the ones that cannot run a program are started together: whether this is a
75
+ // repository, whether its own config defines filters, the branch and the log. Only `status` waits for the answers.
76
+ const insideP = runGit(["rev-parse", "--is-inside-work-tree"], cwd);
77
+ const filtersP = repoDefinesFilters(cwd);
78
+ const branchP = runGit(["rev-parse", "--abbrev-ref", "HEAD"], cwd);
79
+ const logP = runGit(["log", "--oneline", "--no-show-signature", "-n", String(GIT_LOG_COUNT)], cwd);
80
+ const inside = (await insideP)?.trim();
81
+ if (inside !== "true") {
82
+ await Promise.allSettled([filtersP, branchP, logP]);
76
83
  return null;
84
+ }
77
85
  // `status` runs the repository's content filters, and a filter is a program named in
78
86
  // the repository's own config, which arrives with any folder that is copied together
79
87
  // with its .git directory. Filters cannot be switched off from the command line, so
80
- // when the repository defines one, status is left out of the snapshot.
81
- const filters = await repoDefinesFilters(cwd);
88
+ // when the repository defines one, status is left out of the snapshot, and it is not
89
+ // even started until that is known.
90
+ const filters = await filtersP;
82
91
  const [branchRaw, statusRaw, logRaw] = await Promise.all([
83
- runGit(["rev-parse", "--abbrev-ref", "HEAD"], cwd),
92
+ branchP,
84
93
  filters ? Promise.resolve(null) : runGit(["status", "--short", "--ignore-submodules=all"], cwd),
85
- runGit(["log", "--oneline", "--no-show-signature", "-n", String(GIT_LOG_COUNT)], cwd),
94
+ logP,
86
95
  ]);
87
96
  const branch = branchRaw?.trim() || "(detached)";
88
97
  let status = (statusRaw ?? "").trim();
@@ -374,6 +383,25 @@ export function renderProjectContext(pc) {
374
383
  export async function projectContextText(cwd) {
375
384
  return renderProjectContext(await collectProjectContext(cwd));
376
385
  }
386
+ /** How long a project's context is reused when a saved session is reopened. */
387
+ export const RECENT_CONTEXT_MS = 20_000;
388
+ const recentContext = new Map();
389
+ /**
390
+ * The same text, reused for a few seconds per project. Reopening a saved session collects the project's snapshot again,
391
+ * and its slowest part is starting several `git` processes: about a tenth of a second spent on each switch between
392
+ * the sessions of one project, for an answer that has not changed. A brand-new session always collects afresh
393
+ * (`projectContextText`), since the person may have just changed the project.
394
+ */
395
+ export function projectContextTextRecent(cwd, now = Date.now()) {
396
+ const hit = recentContext.get(cwd);
397
+ if (hit && now - hit.at < RECENT_CONTEXT_MS)
398
+ return hit.text;
399
+ const text = projectContextText(cwd);
400
+ recentContext.set(cwd, { at: now, text });
401
+ // A failed collection must not be remembered.
402
+ text.catch(() => recentContext.delete(cwd));
403
+ return text;
404
+ }
377
405
  // ── helpers ──────────────────────────────────────────────────────────────────
378
406
  /**
379
407
  * Settings that make git start a program, switched off for every command this module
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/project/context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/project/context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,gFAAgF;AAChF,MAAM,cAAc,GAAG,MAAM,CAAC,8BAA8B,EAAE,CAAC,CAAC,CAAC;AACjE,MAAM,cAAc,GAAG,MAAM,CAAC,8BAA8B,EAAE,GAAG,CAAC,CAAC;AACnE,MAAM,cAAc,GAAG,MAAM,CAAC,8BAA8B,EAAE,EAAE,CAAC,CAAC;AAClE,MAAM,oBAAoB,GAAG,KAAK,CAAC;AACnC,MAAM,aAAa,GAAG,CAAC,CAAC;AACxB,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAC7B,MAAM,cAAc,GAAG,KAAK,CAAC;AAC7B,gFAAgF;AAChF,mFAAmF;AACnF,sFAAsF;AACtF,qBAAqB;AACrB,MAAM,cAAc,GAAG,EAAE,CAAC;AAC1B,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAC/B,MAAM,cAAc,GAAG,KAAK,CAAC;AAqD7B,gFAAgF;AAEhF;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,GAAW;IACrD,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC3D,UAAU,CAAC,GAAG,CAAC;QACf,cAAc,CAAC,GAAG,CAAC;QACnB,WAAW,CAAC,GAAG,CAAC;QAChB,aAAa,CAAC,GAAG,CAAC;QAClB,WAAW,CAAC,GAAG,CAAC;KACjB,CAAC,CAAC;IACH,OAAO,EAAE,WAAW,EAAE,kBAAkB,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AACpF,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAW;IACrC,OAAO;QACL,GAAG;QACH,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,SAAS,EAAE,OAAO,EAAE;QACpB,KAAK,EAAE,iBAAiB,EAAE;QAC1B,OAAO,EAAE,QAAQ,OAAO,CAAC,OAAO,EAAE;QAClC,IAAI,EAAE,SAAS,EAAE;KAClB,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,GAAW;IACnC,iHAAiH;IACjH,mHAAmH;IACnH,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,WAAW,EAAE,uBAAuB,CAAC,EAAE,GAAG,CAAC,CAAC;IACpE,MAAM,QAAQ,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,WAAW,EAAE,cAAc,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC;IACnE,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,IAAI,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACnG,MAAM,MAAM,GAAG,CAAC,MAAM,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC;IACvC,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,qFAAqF;IACrF,qFAAqF;IACrF,oFAAoF;IACpF,qFAAqF;IACrF,oCAAoC;IACpC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC;IAC/B,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACvD,OAAO;QACP,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,yBAAyB,CAAC,EAAE,GAAG,CAAC;QAC/F,IAAI;KACL,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,IAAI,YAAY,CAAC;IACjD,IAAI,MAAM,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACtC,IAAI,MAAM,CAAC,MAAM,GAAG,oBAAoB,EAAE,CAAC;QACzC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,oBAAoB,CAAC,GAAG,gDAAgD,CAAC;IACpG,CAAC;IACD,OAAO;QACL,MAAM;QACN,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,IAAI,SAAS;QACvD,aAAa,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;KACrC,CAAC;AACJ,CAAC;AAED,MAAM,eAAe,GACnB,kIAAkI,CAAC;AAErI;;;;;GAKG;AACH,KAAK,UAAU,kBAAkB,CAAC,GAAW;IAC3C,MAAM,GAAG,GAAG,MAAM,MAAM,CACtB,CAAC,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,cAAc,EAAE,wCAAwC,CAAC,EAClG,GAAG,EACH,cAAc,EACd,CAAC,CAAC,EAAE,CAAC,CAAC,CACP,CAAC;IACF,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC9B,OAAO,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED,qDAAqD;AACrD,KAAK,UAAU,cAAc,CAAC,GAAW;IACvC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,IAAI,IAAwB,CAAC;IAE7B,MAAM,GAAG,GAAG,KAAK,EAAE,CAAS,EAAoB,EAAE;QAChD,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;YAC9B,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC,CAAC;IAEF,IAAI,MAAM,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC;QACtD,IAAI,GAAG,EAAE,CAAC;YACR,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ;gBAAE,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YAClD,IAAI,GAAG,CAAC,OAAO,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;gBACnD,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAkC,CAAC,CAAC,CAAC;YACvE,CAAC;YACD,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,IAAI,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;YAC/E,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC;QACxD,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IACD,qFAAqF;IACrF,IAAI,CAAC,MAAM,GAAG,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC;QAAE,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAC3F,IAAI,MAAM,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAChC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACpB,IAAI,KAAK,MAAM,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC,CAAC;IACvD,CAAC;IACD,IAAI,MAAM,GAAG,CAAC,kBAAkB,CAAC;QAAE,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACvD,IAAI,MAAM,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;QAC5B,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAClB,IAAI,KAAK,MAAM,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC;IACnD,CAAC;IACD,IAAI,MAAM,GAAG,CAAC,QAAQ,CAAC;QAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,MAAM,GAAG,CAAC,SAAS,CAAC;QAAE,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAClD,IAAI,MAAM,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAAE,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC3F,IAAI,MAAM,GAAG,CAAC,SAAS,CAAC;QAAE,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5C,IAAI,MAAM,GAAG,CAAC,eAAe,CAAC;QAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACjD,IAAI,MAAM,GAAG,CAAC,gBAAgB,CAAC;QAAE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAEpD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;AACzD,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,WAAW,CAAC,GAAW;IACpC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,SAAS,GAAG,KAAK,CAAC;IAEtB,MAAM,OAAO,GAAG,KAAK,EAAE,MAAc,EAAE,KAAa,EAAiB,EAAE;QACrE,IAAI,SAAS,IAAI,KAAK,GAAG,cAAc;YAAE,OAAO;QAChD,IAAI,OAAO,CAAC;QACZ,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9D,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;QACT,CAAC;QACD,MAAM,IAAI,GAAG,OAAO;aACjB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;aACzF,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;aAClB,IAAI,EAAE,CAAC;QACV,MAAM,KAAK,GAAG,OAAO;aAClB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;aACpD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;aAClB,IAAI,EAAE,CAAC;QAEV,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,IAAI,KAAK,CAAC,MAAM,IAAI,cAAc,IAAI,SAAS,IAAI,cAAc,EAAE,CAAC;gBAClE,SAAS,GAAG,IAAI,CAAC;gBACjB,OAAO;YACT,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;YACnC,SAAS,IAAI,CAAC,CAAC;QACjB,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACrB,IAAI,KAAK,CAAC,MAAM,IAAI,cAAc,EAAE,CAAC;gBACnC,SAAS,GAAG,IAAI,CAAC;gBACjB,OAAO;YACT,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;YACzC,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACtB,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AACzC,CAAC;AAED,mFAAmF;AACnF,KAAK,UAAU,aAAa,CAAC,GAAW;IACtC,KAAK,MAAM,IAAI,IAAI,CAAC,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAE,CAAC;QACvE,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAChE,IAAI,CAAC,GAAG;gBAAE,SAAS;YACnB,OAAO,GAAG,CAAC,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,gBAAgB,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC;QAClG,CAAC;QAAC,MAAM,CAAC;YACP,4BAA4B;QAC9B,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;GAOG;AACH,KAAK,UAAU,WAAW,CAAC,GAAW;IACpC,MAAM,KAAK,GAAsC,EAAE,CAAC;IAEpD,MAAM,OAAO,GAAG,KAAK,EAAE,MAAc,EAAE,GAAW,EAAE,KAAa,EAAiB,EAAE;QAClF,IAAI,KAAK,GAAG,cAAc,IAAI,KAAK,CAAC,MAAM,IAAI,cAAc,GAAG,CAAC;YAAE,OAAO;QACzE,IAAI,OAAO,CAAC;QACZ,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9D,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;QACT,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,SAAS;YACrC,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YACjE,CAAC;QACH,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC/E,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;YACpF,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IACF,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAE1B,yEAAyE;IACzE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACxE,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;IAE3C,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAC5B,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,EAAqB,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CACvG,CAAC;IACF,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,SAAS,YAAY,CAAC,IAAY;IAChC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACjC,IAAI,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,KAAK,KAAK,cAAc;QAAE,OAAO,KAAK,CAAC;IACzE,IAAI,0EAA0E,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACzG,MAAM,GAAG,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACnC,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5C,MAAM,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACnD,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC;IACxE,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC/G,CAAC;AAED;gFACgF;AAChF,KAAK,UAAU,aAAa,CAAC,OAAe;IAC1C,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACvC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YACzC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC;YAC/D,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC;QAC3C,CAAC;gBAAS,CAAC;YACT,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACjC,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,qDAAqD;IACrD,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,KAAK,EAAE,CAAC;QAC/B,CAAC,GAAG,CAAC,CAAC;QACN,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,KAAK;YAAE,CAAC,IAAI,CAAC,CAAC;QAC9D,CAAC,IAAI,CAAC,CAAC;IACT,CAAC;IACD,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACrC,IAAI,CAAC,IAAI;YAAE,SAAS;QACpB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,+BAA+B;QAC/E,IAAI,CAAC,IAAI;YAAE,SAAS;QACpB,OAAO,IAAI,CAAC,MAAM,GAAG,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,kBAAkB,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3F,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,gFAAgF;AAEhF;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,EAAkB;IACrD,MAAM,GAAG,GAAG,EAAE,CAAC,WAAW,CAAC;IAC3B,MAAM,GAAG,GAAa,EAAE,CAAC;IAEzB,GAAG,CAAC,IAAI,CACN,iBAAiB;QACf,sBAAsB,GAAG,CAAC,GAAG,IAAI;QACjC,aAAa,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI;QAChE,aAAa,GAAG,CAAC,QAAQ,IAAI;QAC7B,eAAe,GAAG,CAAC,SAAS,IAAI;QAChC,UAAU,GAAG,CAAC,KAAK,IAAI;QACvB,YAAY,GAAG,CAAC,OAAO,IAAI;QAC3B,iBAAiB,GAAG,CAAC,IAAI,IAAI;QAC7B,gBAAgB,CACnB,CAAC;IAEF,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC;IACrB,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9F,QAAQ,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;IAClE,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM;QAAE,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAExE,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACnB,QAAQ,CAAC,IAAI,CACX,8FAA8F;YAC5F,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAC9E,CAAC;IACJ,CAAC;IAED,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,EAAE,CAAC;QACxE,QAAQ,CAAC,IAAI,CACX,YAAY,IAAI,wBAAwB,CAAC,GAAG,eAAe,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO;YACvF,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAC3B,CAAC;IACJ,CAAC;IACD,IAAI,EAAE,CAAC,MAAM;QAAE,QAAQ,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;IAChE,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC;QACX,MAAM,GAAG,GAAG,CAAC,mDAAmD,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QACjF,IAAI,EAAE,CAAC,GAAG,CAAC,aAAa;YAAE,GAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC;QAC/E,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QACvC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAChC,CAAC;IAED,GAAG,CAAC,IAAI,CAAC,sBAAsB,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,uBAAuB,CAAC,CAAC;IACnF,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC1B,CAAC;AAED,iFAAiF;AACjF,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,GAAW;IAClD,OAAO,oBAAoB,CAAC,MAAM,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC;AAChE,CAAC;AAED,+EAA+E;AAC/E,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC;AACxC,MAAM,aAAa,GAAG,IAAI,GAAG,EAAiD,CAAC;AAE/E;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CAAC,GAAW,EAAE,MAAc,IAAI,CAAC,GAAG,EAAE;IAC5E,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,EAAE,GAAG,iBAAiB;QAAE,OAAO,GAAG,CAAC,IAAI,CAAC;IAC7D,MAAM,IAAI,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACrC,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,8CAA8C;IAC9C,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5C,OAAO,IAAI,CAAC;AACd,CAAC;AAED,gFAAgF;AAEhF;;;;;GAKG;AACH,MAAM,aAAa,GAAG;IACpB,YAAY;IACZ,qBAAqB;IACrB,IAAI,EAAE,sBAAsB;IAC5B,IAAI,EAAE,iBAAiB,GAAG,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC;IAC9E,IAAI,EAAE,kBAAkB;IACxB,IAAI,EAAE,yBAAyB;IAC/B,IAAI,EAAE,0BAA0B;CACjC,CAAC;AAEF,MAAM,YAAY,GAAG;IACnB,iBAAiB,EAAE,GAAG;IACtB,mBAAmB,EAAE,GAAG;IACxB,kBAAkB,EAAE,GAAG;IACvB,SAAS,EAAE,KAAK;CACjB,CAAC;AAEF;;;GAGG;AACH,SAAS,MAAM,CAAC,IAAc,EAAE,GAAW,EAAE,SAAS,GAAG,cAAc,EAAE,UAAoB,CAAC,CAAC,CAAC;IAC9F,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,IAAI,KAAK,CAAC;QACV,IAAI,CAAC;YACH,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,aAAa,EAAE,GAAG,IAAI,CAAC,EAAE;gBAChD,GAAG;gBACH,WAAW,EAAE,IAAI;gBACjB,GAAG,EAAE,QAAQ,CAAC,YAAY,CAAC;aAC5B,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,IAAI,CAAC,CAAC;YACd,OAAO;QACT,CAAC;QACD,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,IAAI,IAAI,GAAG,KAAK,CAAC;QACjB,MAAM,MAAM,GAAG,CAAC,CAAgB,EAAE,EAAE;YAClC,IAAI,IAAI;gBAAE,OAAO;YACjB,IAAI,GAAG,IAAI,CAAC;YACZ,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,OAAO,CAAC,CAAC,CAAC,CAAC;QACb,CAAC,CAAC;QACF,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,IAAI,CAAC;gBACH,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,CAAC;YAAC,MAAM,CAAC;gBACP,kBAAkB;YACpB,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,CAAC;QACf,CAAC,EAAE,SAAS,CAAC,CAAC;QACd,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE;YACrC,IAAI,GAAG,CAAC,MAAM,GAAG,MAAM;gBAAE,GAAG,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACtC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5F,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,IAAY;IAClC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IACrD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,qFAAqF;AACrF,KAAK,UAAU,QAAQ,CAAC,IAAY;IAClC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC7C,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACzD,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,2DAA2D;AAC3D,SAAS,SAAS;IAChB,MAAM,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;IACrB,MAAM,CAAC,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACpD,OAAO,GAAG,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;AACvE,CAAC;AAED,SAAS,MAAM,CAAC,IAAY,EAAE,QAAgB;IAC5C,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACpC,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;AAChE,CAAC"}