mindweave 2.5.0 → 3.0.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.
- package/README.md +81 -145
- package/dist/cli/App.js +579 -304
- package/dist/cli/App.js.map +1 -1
- package/dist/cli/analytics.js +27 -18
- package/dist/cli/analytics.js.map +1 -1
- package/dist/cli/attachments.js +34 -0
- package/dist/cli/attachments.js.map +1 -1
- package/dist/cli/bannerFit.js +70 -0
- package/dist/cli/bannerFit.js.map +1 -0
- package/dist/cli/bootstrap.js +41 -3
- package/dist/cli/bootstrap.js.map +1 -1
- package/dist/cli/commands.js +4 -1
- package/dist/cli/commands.js.map +1 -1
- package/dist/cli/components/ApprovalBox.js +3 -2
- package/dist/cli/components/ApprovalBox.js.map +1 -1
- package/dist/cli/components/BlockView.js +27 -6
- package/dist/cli/components/BlockView.js.map +1 -1
- package/dist/cli/components/FirstRunFrame.js +2 -1
- package/dist/cli/components/FirstRunFrame.js.map +1 -1
- package/dist/cli/components/KeyManager.js +5 -4
- package/dist/cli/components/KeyManager.js.map +1 -1
- package/dist/cli/components/KeySetup.js +29 -13
- package/dist/cli/components/KeySetup.js.map +1 -1
- package/dist/cli/components/MarathonBox.js +64 -0
- package/dist/cli/components/MarathonBox.js.map +1 -0
- package/dist/cli/components/McpMinitabs.js +8 -7
- package/dist/cli/components/McpMinitabs.js.map +1 -1
- package/dist/cli/components/Picker.js +4 -3
- package/dist/cli/components/Picker.js.map +1 -1
- package/dist/cli/components/PromptInput.js +47 -8
- package/dist/cli/components/PromptInput.js.map +1 -1
- package/dist/cli/components/PulseDot.js +42 -0
- package/dist/cli/components/PulseDot.js.map +1 -0
- package/dist/cli/components/SubagentView.js +9 -6
- package/dist/cli/components/SubagentView.js.map +1 -1
- package/dist/cli/components/TipLine.js +2 -1
- package/dist/cli/components/TipLine.js.map +1 -1
- package/dist/cli/components/ToolGroup.js +65 -49
- package/dist/cli/components/ToolGroup.js.map +1 -1
- package/dist/cli/components/ToolLine.js +20 -19
- package/dist/cli/components/ToolLine.js.map +1 -1
- package/dist/cli/components/TrustGate.js +2 -1
- package/dist/cli/components/TrustGate.js.map +1 -1
- package/dist/cli/components/minitabs.js +3 -2
- package/dist/cli/components/minitabs.js.map +1 -1
- package/dist/cli/desktopApp.js +45 -0
- package/dist/cli/desktopApp.js.map +1 -0
- package/dist/cli/help.js +1 -0
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/inkOutputPatch.js +285 -0
- package/dist/cli/inkOutputPatch.js.map +1 -0
- package/dist/cli/inkSpeed.js +29 -0
- package/dist/cli/inkSpeed.js.map +1 -0
- package/dist/cli/inkSpeedLoader.js +47 -0
- package/dist/cli/inkSpeedLoader.js.map +1 -0
- package/dist/cli/inputText.js +30 -0
- package/dist/cli/inputText.js.map +1 -0
- package/dist/cli/keyManager.js +2 -1
- package/dist/cli/keyManager.js.map +1 -1
- package/dist/cli/keyPrefs.js +90 -0
- package/dist/cli/keyPrefs.js.map +1 -0
- package/dist/cli/keySetup.js +5 -2
- package/dist/cli/keySetup.js.map +1 -1
- package/dist/cli/marathonUi.js +113 -0
- package/dist/cli/marathonUi.js.map +1 -0
- package/dist/cli/markdown.js +63 -11
- package/dist/cli/markdown.js.map +1 -1
- package/dist/cli/modes.js +3 -3
- package/dist/cli/modes.js.map +1 -1
- package/dist/cli/prodEnv.js +43 -0
- package/dist/cli/prodEnv.js.map +1 -0
- package/dist/cli/revealPace.js +5 -5
- package/dist/cli/revealPace.js.map +1 -1
- package/dist/cli/revealQueue.js +120 -0
- package/dist/cli/revealQueue.js.map +1 -0
- package/dist/cli/theme.js +47 -0
- package/dist/cli/theme.js.map +1 -0
- package/dist/cli/toolDisplay.js +112 -18
- package/dist/cli/toolDisplay.js.map +1 -1
- package/dist/cli/transcript.js +1 -1
- package/dist/cli/transcript.js.map +1 -1
- package/dist/cli/virtualWindow.js +14 -2
- package/dist/cli/virtualWindow.js.map +1 -1
- package/dist/cli/wheelAccel.js +73 -0
- package/dist/cli/wheelAccel.js.map +1 -0
- package/dist/cli/widestLinePatch.js +48 -0
- package/dist/cli/widestLinePatch.js.map +1 -0
- package/dist/cli/workingVerb.js +88 -28
- package/dist/cli/workingVerb.js.map +1 -1
- package/dist/cli/wrap.js +1 -1
- package/dist/cli/wrap.js.map +1 -1
- package/dist/core/contextSettings.js +84 -0
- package/dist/core/contextSettings.js.map +1 -0
- package/dist/core/limitsView.js +40 -0
- package/dist/core/limitsView.js.map +1 -0
- package/dist/core/mcpServers.js +164 -0
- package/dist/core/mcpServers.js.map +1 -0
- package/dist/core/permissions.js +209 -0
- package/dist/core/permissions.js.map +1 -0
- package/dist/core/providerKeys.js +187 -0
- package/dist/core/providerKeys.js.map +1 -0
- package/dist/core/rulesSkills.js +142 -0
- package/dist/core/rulesSkills.js.map +1 -0
- package/dist/core/spendView.js +90 -0
- package/dist/core/spendView.js.map +1 -0
- package/dist/core/turnRunner.js +759 -0
- package/dist/core/turnRunner.js.map +1 -0
- package/dist/drivers/anthropic/client.js +101 -26
- package/dist/drivers/anthropic/client.js.map +1 -1
- package/dist/drivers/anthropic/manifest.js +43 -13
- package/dist/drivers/anthropic/manifest.js.map +1 -1
- package/dist/drivers/cerebras/manifest.js +13 -3
- package/dist/drivers/cerebras/manifest.js.map +1 -1
- package/dist/drivers/deepseek/manifest.js +24 -34
- package/dist/drivers/deepseek/manifest.js.map +1 -1
- package/dist/drivers/glm/manifest.js +21 -6
- package/dist/drivers/glm/manifest.js.map +1 -1
- package/dist/drivers/groq/manifest.js +5 -2
- package/dist/drivers/groq/manifest.js.map +1 -1
- package/dist/drivers/kimi/manifest.js +13 -10
- package/dist/drivers/kimi/manifest.js.map +1 -1
- package/dist/drivers/meta/manifest.js +21 -16
- package/dist/drivers/meta/manifest.js.map +1 -1
- package/dist/drivers/minimax/manifest.js +15 -12
- package/dist/drivers/minimax/manifest.js.map +1 -1
- package/dist/drivers/ollama/catalog.js +71 -0
- package/dist/drivers/ollama/catalog.js.map +1 -0
- package/dist/drivers/ollama/client.js +164 -0
- package/dist/drivers/ollama/client.js.map +1 -0
- package/dist/drivers/ollama/endpoint.js +42 -0
- package/dist/drivers/ollama/endpoint.js.map +1 -0
- package/dist/drivers/ollama/index.js +5 -0
- package/dist/drivers/ollama/index.js.map +1 -0
- package/dist/drivers/ollama/manifest.js +64 -0
- package/dist/drivers/ollama/manifest.js.map +1 -0
- package/dist/drivers/openai/client.js +10 -4
- package/dist/drivers/openai/client.js.map +1 -1
- package/dist/drivers/openai/manifest.js +69 -18
- package/dist/drivers/openai/manifest.js.map +1 -1
- package/dist/drivers/qwen/manifest.js +19 -6
- package/dist/drivers/qwen/manifest.js.map +1 -1
- package/dist/drivers/registry.js +11 -0
- package/dist/drivers/registry.js.map +1 -1
- package/dist/drivers/retryPolicy.js +26 -1
- package/dist/drivers/retryPolicy.js.map +1 -1
- package/dist/drivers/xai/client.js +12 -10
- package/dist/drivers/xai/client.js.map +1 -1
- package/dist/drivers/xai/manifest.js +62 -25
- package/dist/drivers/xai/manifest.js.map +1 -1
- package/dist/dynamo/auxModel.js +54 -0
- package/dist/dynamo/auxModel.js.map +1 -0
- package/dist/dynamo/engine.js +407 -99
- package/dist/dynamo/engine.js.map +1 -1
- package/dist/dynamo/guard.js +10 -0
- package/dist/dynamo/guard.js.map +1 -1
- package/dist/dynamo/liveMeter.js +25 -6
- package/dist/dynamo/liveMeter.js.map +1 -1
- package/dist/dynamo/marathon.js +409 -0
- package/dist/dynamo/marathon.js.map +1 -0
- package/dist/dynamo/marathonPrompt.js +45 -0
- package/dist/dynamo/marathonPrompt.js.map +1 -0
- package/dist/dynamo/model.js +6 -2
- package/dist/dynamo/model.js.map +1 -1
- package/dist/dynamo/toolBatches.js +58 -0
- package/dist/dynamo/toolBatches.js.map +1 -0
- package/dist/dynamo/usageLimits.js +446 -0
- package/dist/dynamo/usageLimits.js.map +1 -0
- package/dist/governor/freshness.js +10 -7
- package/dist/governor/freshness.js.map +1 -1
- package/dist/governor/index.js +76 -9
- package/dist/governor/index.js.map +1 -1
- package/dist/governor/write.js +43 -14
- package/dist/governor/write.js.map +1 -1
- package/dist/index.js +18 -151
- package/dist/index.js.map +1 -1
- package/dist/main.js +162 -0
- package/dist/main.js.map +1 -0
- package/dist/mcp/manager.js +18 -0
- package/dist/mcp/manager.js.map +1 -1
- package/dist/memory/allMetas.js +69 -0
- package/dist/memory/allMetas.js.map +1 -0
- package/dist/memory/compaction.js +70 -15
- package/dist/memory/compaction.js.map +1 -1
- package/dist/memory/earlier.js +15 -0
- package/dist/memory/earlier.js.map +1 -0
- package/dist/memory/profile.js +93 -0
- package/dist/memory/profile.js.map +1 -0
- package/dist/memory/rewind.js +262 -0
- package/dist/memory/rewind.js.map +1 -0
- package/dist/memory/session.js +42 -10
- package/dist/memory/session.js.map +1 -1
- package/dist/memory/sessionMemory.js +48 -13
- package/dist/memory/sessionMemory.js.map +1 -1
- package/dist/memory/sessionMemoryCompact.js +1 -1
- package/dist/memory/sessionMemoryCompact.js.map +1 -1
- package/dist/memory/sessionTitle.js +50 -0
- package/dist/memory/sessionTitle.js.map +1 -0
- package/dist/memory/store.js +42 -1
- package/dist/memory/store.js.map +1 -1
- package/dist/memory/types.js.map +1 -1
- package/dist/tools/askUser.js +14 -0
- package/dist/tools/askUser.js.map +1 -1
- package/dist/tools/backgroundShells.js +208 -5
- package/dist/tools/backgroundShells.js.map +1 -1
- package/dist/tools/browser.js +176 -0
- package/dist/tools/browser.js.map +1 -0
- package/dist/tools/cdp.js +165 -0
- package/dist/tools/cdp.js.map +1 -0
- package/dist/tools/checkpoints.js +208 -5
- package/dist/tools/checkpoints.js.map +1 -1
- package/dist/tools/deferredNative.js +2 -0
- package/dist/tools/deferredNative.js.map +1 -1
- package/dist/tools/detail.js +9 -6
- package/dist/tools/detail.js.map +1 -1
- package/dist/tools/edit.js +2 -1
- package/dist/tools/edit.js.map +1 -1
- package/dist/tools/exitPlan.js +4 -0
- package/dist/tools/exitPlan.js.map +1 -1
- package/dist/tools/hiddenDesktop.js +273 -0
- package/dist/tools/hiddenDesktop.js.map +1 -0
- package/dist/tools/listeningPorts.js +134 -0
- package/dist/tools/listeningPorts.js.map +1 -0
- package/dist/tools/mcpSearch.js +8 -0
- package/dist/tools/mcpSearch.js.map +1 -1
- package/dist/tools/mindweaveStatus.js +1 -1
- package/dist/tools/mindweaveStatus.js.map +1 -1
- package/dist/tools/registry.js +3 -0
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/replaceSymbol.js +2 -1
- package/dist/tools/replaceSymbol.js.map +1 -1
- package/dist/tools/runCommand.js +113 -9
- package/dist/tools/runCommand.js.map +1 -1
- package/dist/tools/screenshot.js +4 -6
- package/dist/tools/screenshot.js.map +1 -1
- package/dist/tools/screenshotWin.js +26 -9
- package/dist/tools/screenshotWin.js.map +1 -1
- package/dist/tools/stateCheckpoint.js +128 -0
- package/dist/tools/stateCheckpoint.js.map +1 -0
- package/dist/tools/todo.js +6 -0
- package/dist/tools/todo.js.map +1 -1
- package/dist/tools/ui.js +1295 -0
- package/dist/tools/ui.js.map +1 -0
- package/dist/tools/uiHide.js +356 -0
- package/dist/tools/uiHide.js.map +1 -0
- package/dist/tools/uiPage.js +861 -0
- package/dist/tools/uiPage.js.map +1 -0
- package/dist/tools/uiWin.js +506 -0
- package/dist/tools/uiWin.js.map +1 -0
- package/dist/tools/webFetch.js +32 -25
- package/dist/tools/webFetch.js.map +1 -1
- package/dist/tools/webSearch.js +12 -0
- package/dist/tools/webSearch.js.map +1 -1
- package/dist/tools/writeFile.js +2 -1
- package/dist/tools/writeFile.js.map +1 -1
- package/package.json +78 -75
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* rewind.ts — take the conversation back to before one of your messages, files included.
|
|
3
|
+
*
|
|
4
|
+
* `/undo` puts FILES back and tells the agent it did; the conversation keeps every word
|
|
5
|
+
* of the turns it undid. Rewind removes those turns: the transcript is cut back to just
|
|
6
|
+
* before the chosen message, every file change made from that message onward is put
|
|
7
|
+
* back through the same checkpoints `/undo` uses, and the message itself is handed back
|
|
8
|
+
* so it can be edited and sent again. Conversation and files move together, so the
|
|
9
|
+
* agent is never left reading about edits that are no longer on disk.
|
|
10
|
+
*
|
|
11
|
+
* What it cannot do, and says so rather than implying otherwise:
|
|
12
|
+
* - commands the agent ran are not reversed (an install stays installed);
|
|
13
|
+
* - a file somebody else changed afterwards is left alone (a conflict);
|
|
14
|
+
* - undo history lives in memory, so after a restart the conversation still rewinds
|
|
15
|
+
* but earlier file changes stay on disk, and are listed as not put back.
|
|
16
|
+
*/
|
|
17
|
+
import { stripAttachments, attachedFiles, hideAttachedNames } from "../cli/attachments.js";
|
|
18
|
+
import { collapsePastes } from "./pastedText.js";
|
|
19
|
+
import { writtenPaths } from "./presence.js";
|
|
20
|
+
import { resolvePath } from "../tools/paths.js";
|
|
21
|
+
import { rebuildReadLedger } from "./session.js";
|
|
22
|
+
import { clearSessionNotes, saveSession } from "./store.js";
|
|
23
|
+
import { loadMemoryIndex } from "./autoMemory.js";
|
|
24
|
+
import { loadMcpConfig } from "../mcp/config.js";
|
|
25
|
+
import { refreshGovernance } from "../dynamo/engine.js";
|
|
26
|
+
import { isStateItem, stateKindOf } from "../tools/stateCheckpoint.js";
|
|
27
|
+
import { undoNotice } from "../tools/checkpoints.js";
|
|
28
|
+
/** The first words of `/undo`'s note to the agent. It is filed as a user message so the
|
|
29
|
+
* model treats it as a fact, but nobody typed it, so nothing rewinds to it. */
|
|
30
|
+
const UNDO_NOTICE_START = "The user ran /undo.";
|
|
31
|
+
/**
|
|
32
|
+
* A message the conversation can be rewound to: something the person typed that opened
|
|
33
|
+
* a turn. Engine nudges are not theirs; a message steered into a running turn has no
|
|
34
|
+
* boundary of its own to go back to (its turn's file changes began before it).
|
|
35
|
+
*/
|
|
36
|
+
export function isRewindPoint(e) {
|
|
37
|
+
return (e.role === "user" &&
|
|
38
|
+
!e.synthetic &&
|
|
39
|
+
e.arrival !== "steered" &&
|
|
40
|
+
e.ts !== undefined &&
|
|
41
|
+
!e.content.startsWith(UNDO_NOTICE_START));
|
|
42
|
+
}
|
|
43
|
+
/** The marker `template` uses for the i-th paste. NUL cannot be typed, so it can't collide. */
|
|
44
|
+
export function pasteSlot(i) {
|
|
45
|
+
return `\u0000${i}\u0000`;
|
|
46
|
+
}
|
|
47
|
+
const PASTE_RE = /<pasted_text lines="\d+">\n([\s\S]*?)\n<\/pasted_text>/g;
|
|
48
|
+
/** Split a stored message back into what was typed and what came with it. */
|
|
49
|
+
export function editableMessage(entry, cwd) {
|
|
50
|
+
const files = attachedFiles(entry.content, cwd);
|
|
51
|
+
const images = (entry.images ?? []).map((i) => i.path);
|
|
52
|
+
const pastes = [];
|
|
53
|
+
const withSlots = stripAttachments(entry.content).replace(PASTE_RE, (_m, body) => {
|
|
54
|
+
pastes.push(body);
|
|
55
|
+
return pasteSlot(pastes.length - 1);
|
|
56
|
+
});
|
|
57
|
+
const template = hideAttachedNames(withSlots, [...files, ...images]);
|
|
58
|
+
const text = template
|
|
59
|
+
.replace(/\u0000\d+\u0000/g, "")
|
|
60
|
+
.replace(/[ \t]+\n/g, "\n")
|
|
61
|
+
.replace(/\n{3,}/g, "\n\n")
|
|
62
|
+
.trim();
|
|
63
|
+
return { text, template, pastes, files, images };
|
|
64
|
+
}
|
|
65
|
+
/** One line for the picker: the message as the chat showed it. */
|
|
66
|
+
function pointText(entry, cwd) {
|
|
67
|
+
const files = attachedFiles(entry.content, cwd);
|
|
68
|
+
const images = (entry.images ?? []).map((i) => i.path);
|
|
69
|
+
const shown = hideAttachedNames(collapsePastes(stripAttachments(entry.content)), [...files, ...images]);
|
|
70
|
+
const attached = files.length + images.length;
|
|
71
|
+
const line = shown.replace(/\s+/g, " ").trim();
|
|
72
|
+
if (line)
|
|
73
|
+
return line;
|
|
74
|
+
return attached ? `(${attached} attachment${attached === 1 ? "" : "s"})` : "(empty message)";
|
|
75
|
+
}
|
|
76
|
+
/** Lines `after` has that `before` lacks, and the other way round. Counted as multisets,
|
|
77
|
+
* so a moved line is not both; close enough to a real diff for a summary, and linear. */
|
|
78
|
+
export function lineDelta(before, after) {
|
|
79
|
+
const count = (text) => {
|
|
80
|
+
const m = new Map();
|
|
81
|
+
// A file's closing newline ends its last line; it does not start another one.
|
|
82
|
+
if (text)
|
|
83
|
+
for (const line of text.replace(/\r?\n$/, "").split(/\r?\n/))
|
|
84
|
+
m.set(line, (m.get(line) ?? 0) + 1);
|
|
85
|
+
return m;
|
|
86
|
+
};
|
|
87
|
+
const a = count(before);
|
|
88
|
+
const b = count(after);
|
|
89
|
+
let added = 0;
|
|
90
|
+
let removed = 0;
|
|
91
|
+
for (const [line, n] of b)
|
|
92
|
+
added += Math.max(0, n - (a.get(line) ?? 0));
|
|
93
|
+
for (const [line, n] of a)
|
|
94
|
+
removed += Math.max(0, n - (b.get(line) ?? 0));
|
|
95
|
+
return { added, removed };
|
|
96
|
+
}
|
|
97
|
+
function projectRoot(session) {
|
|
98
|
+
return session.toolContext.governance?.forbidden.root ?? session.cwd;
|
|
99
|
+
}
|
|
100
|
+
/** Every message the conversation can go back to, newest first. */
|
|
101
|
+
export function rewindPoints(session) {
|
|
102
|
+
const cp = session.toolContext.checkpoints;
|
|
103
|
+
const root = projectRoot(session);
|
|
104
|
+
const out = [];
|
|
105
|
+
for (let i = session.transcript.length - 1; i >= 0; i--) {
|
|
106
|
+
const e = session.transcript[i];
|
|
107
|
+
if (!isRewindPoint(e))
|
|
108
|
+
continue;
|
|
109
|
+
const since = cp?.changesSince(e.ts);
|
|
110
|
+
let files = 0;
|
|
111
|
+
let added = 0;
|
|
112
|
+
let removed = 0;
|
|
113
|
+
const state = {};
|
|
114
|
+
for (const [path, fs] of since?.files ?? []) {
|
|
115
|
+
const kind = stateKindOf(path, root);
|
|
116
|
+
if (kind) {
|
|
117
|
+
if (isStateItem(path, root))
|
|
118
|
+
state[kind] = (state[kind] ?? 0) + 1;
|
|
119
|
+
continue;
|
|
120
|
+
}
|
|
121
|
+
files++;
|
|
122
|
+
const d = lineDelta(fs.original, fs.written);
|
|
123
|
+
added += d.added;
|
|
124
|
+
removed += d.removed;
|
|
125
|
+
}
|
|
126
|
+
out.push({
|
|
127
|
+
at: e.ts,
|
|
128
|
+
text: pointText(e, session.cwd),
|
|
129
|
+
files,
|
|
130
|
+
added,
|
|
131
|
+
removed,
|
|
132
|
+
state,
|
|
133
|
+
skipped: since?.skipped.length ?? 0,
|
|
134
|
+
ranShell: since?.ranShell ?? false,
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
return out;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Bring the live session back in line with agent state that was just put back on disk:
|
|
141
|
+
* the rules, skills and permissions it enforces, the memory index it is shown, and the
|
|
142
|
+
* MCP servers it is connected to. Shared by rewind and `/undo`.
|
|
143
|
+
*/
|
|
144
|
+
export async function reloadAgentState(session, paths) {
|
|
145
|
+
const root = projectRoot(session);
|
|
146
|
+
const kinds = new Set(paths.map((p) => stateKindOf(p, root)).filter((k) => k !== null));
|
|
147
|
+
if (kinds.has("rule") || kinds.has("skill") || kinds.has("permission"))
|
|
148
|
+
await refreshGovernance(session, true);
|
|
149
|
+
if (kinds.has("memory"))
|
|
150
|
+
session.memoryIndex = await loadMemoryIndex(root);
|
|
151
|
+
const mcp = session.toolContext.mcp;
|
|
152
|
+
if (kinds.has("mcp") && mcp) {
|
|
153
|
+
const wanted = new Map((await loadMcpConfig(root)).map((c) => [c.name, c]));
|
|
154
|
+
for (const s of mcp.statuses())
|
|
155
|
+
if (!wanted.has(s.name))
|
|
156
|
+
await mcp.removeServer(s.name);
|
|
157
|
+
// Connecting can take a while (a process to start, a handshake); the rewind itself
|
|
158
|
+
// does not wait for it, the same as a server added any other way.
|
|
159
|
+
for (const [name, config] of wanted) {
|
|
160
|
+
const live = mcp.configFor(name);
|
|
161
|
+
if (!live || JSON.stringify(live) !== JSON.stringify(config))
|
|
162
|
+
void mcp.addServer(config).catch(() => { });
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Take the session back to just before the message stamped `at`. Returns null when no
|
|
168
|
+
* such message is in the conversation (it was compacted away, or never existed). The
|
|
169
|
+
* caller must not run this while a turn is in progress.
|
|
170
|
+
*/
|
|
171
|
+
export async function rewindTo(session, at, mode = "both") {
|
|
172
|
+
const index = session.transcript.findIndex((e) => isRewindPoint(e) && e.ts === at);
|
|
173
|
+
if (index < 0)
|
|
174
|
+
return null;
|
|
175
|
+
const entry = session.transcript[index];
|
|
176
|
+
const message = editableMessage(entry, session.cwd);
|
|
177
|
+
const root = projectRoot(session);
|
|
178
|
+
// Files first: if the process dies between the two steps, the conversation still
|
|
179
|
+
// describes the edits, and a later /undo or rewind can find them again.
|
|
180
|
+
const results = mode === "conversation" ? [] : ((await session.toolContext.checkpoints?.undoSince(at)) ?? []);
|
|
181
|
+
const gather = (pick) => [...new Set(results.flatMap(pick))];
|
|
182
|
+
const putBack = gather((r) => r.restored);
|
|
183
|
+
const restored = putBack.filter((p) => stateKindOf(p, root) === null);
|
|
184
|
+
const stateBack = putBack.filter((p) => stateKindOf(p, root) !== null);
|
|
185
|
+
// Reported per item ("1 memory"); the index that changed along with it is not a second one.
|
|
186
|
+
const restoredState = stateBack.filter((p) => isStateItem(p, root)).map((path) => ({ kind: stateKindOf(path, root), path }));
|
|
187
|
+
if (stateBack.length)
|
|
188
|
+
await reloadAgentState(session, stateBack);
|
|
189
|
+
const conflicts = gather((r) => r.conflicts);
|
|
190
|
+
const failed = gather((r) => r.failed);
|
|
191
|
+
const skipped = gather((r) => r.skipped);
|
|
192
|
+
const removed = session.transcript.slice(index);
|
|
193
|
+
const resolve = (p) => {
|
|
194
|
+
try {
|
|
195
|
+
return resolvePath(session.toolContext, p);
|
|
196
|
+
}
|
|
197
|
+
catch {
|
|
198
|
+
return undefined;
|
|
199
|
+
}
|
|
200
|
+
};
|
|
201
|
+
// Only a lost history leaves writes nobody can account for. With history intact, a
|
|
202
|
+
// written file missing from the results was already put back (an earlier /undo) or
|
|
203
|
+
// already gone, and listing it as "not restored" would be false.
|
|
204
|
+
const cp = session.toolContext.checkpoints;
|
|
205
|
+
const accounted = new Set([...restored, ...conflicts, ...failed, ...skipped]);
|
|
206
|
+
const notRestored = mode !== "conversation" && (!cp || cp.wasResumed())
|
|
207
|
+
? [...writtenPaths(removed, resolve)].filter((p) => !accounted.has(p))
|
|
208
|
+
: [];
|
|
209
|
+
if (mode === "files") {
|
|
210
|
+
// The conversation stays, so it still describes edits that are no longer on disk:
|
|
211
|
+
// the agent is told, exactly as it is after /undo.
|
|
212
|
+
if (results.length) {
|
|
213
|
+
// Engine-written (synthetic): the model reads it, the chat never draws it as yours.
|
|
214
|
+
session.transcript.push({ role: "user", content: undoNotice(results, (p) => p), synthetic: true, ts: Date.now() });
|
|
215
|
+
await rebuildReadLedger(session);
|
|
216
|
+
await saveSession(session);
|
|
217
|
+
}
|
|
218
|
+
return {
|
|
219
|
+
message,
|
|
220
|
+
restored,
|
|
221
|
+
restoredState,
|
|
222
|
+
mode,
|
|
223
|
+
conflicts: gather((r) => r.conflicts),
|
|
224
|
+
failed: gather((r) => r.failed),
|
|
225
|
+
skipped: gather((r) => r.skipped),
|
|
226
|
+
notRestored,
|
|
227
|
+
ranShell: results.some((r) => r.ranShell),
|
|
228
|
+
removed: 0,
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
session.transcript = session.transcript.slice(0, index);
|
|
232
|
+
// Session notes written after this point describe turns that no longer happened.
|
|
233
|
+
// `sessionMemoryEntries` is how much of the transcript they cover; unknown is unsafe.
|
|
234
|
+
if (session.sessionMemory && (session.sessionMemoryEntries === undefined || session.sessionMemoryEntries > index)) {
|
|
235
|
+
session.sessionMemory = undefined;
|
|
236
|
+
session.sessionMemoryInit = false;
|
|
237
|
+
session.sessionMemoryTokens = 0;
|
|
238
|
+
session.sessionMemoryEntries = undefined;
|
|
239
|
+
await clearSessionNotes(session.cwd, session.id);
|
|
240
|
+
}
|
|
241
|
+
// A plan the agent wrote in the removed turns is about work that no longer happened.
|
|
242
|
+
if (removed.some((e) => e.role === "assistant" && e.toolCalls?.some((c) => c.name === "todo_write"))) {
|
|
243
|
+
session.toolContext.todos = [];
|
|
244
|
+
}
|
|
245
|
+
session.taskJustCompleted = false;
|
|
246
|
+
// What the agent has read has to match what the conversation still shows it reading.
|
|
247
|
+
await rebuildReadLedger(session);
|
|
248
|
+
await saveSession(session);
|
|
249
|
+
return {
|
|
250
|
+
message,
|
|
251
|
+
restored,
|
|
252
|
+
restoredState,
|
|
253
|
+
mode,
|
|
254
|
+
conflicts,
|
|
255
|
+
failed,
|
|
256
|
+
skipped,
|
|
257
|
+
notRestored,
|
|
258
|
+
ranShell: results.some((r) => r.ranShell),
|
|
259
|
+
removed: removed.length,
|
|
260
|
+
};
|
|
261
|
+
}
|
|
262
|
+
//# sourceMappingURL=rewind.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rewind.js","sourceRoot":"","sources":["../../src/memory/rewind.ts"],"names":[],"mappings":"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"}
|
package/dist/memory/session.js
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
import { promises as fs, existsSync } from "node:fs";
|
|
10
10
|
import { randomUUID } from "node:crypto";
|
|
11
11
|
import { resolvePath, nextTouch, canonicalRoot } from "../tools/paths.js";
|
|
12
|
-
import { latestSession, listSessions, loadMeta, loadTranscript, loadSessionNotes } from "./store.js";
|
|
12
|
+
import { checkpointDir, latestSession, listSessions, loadEarlier, loadMeta, loadTranscript, loadSessionNotes } from "./store.js";
|
|
13
13
|
import { fullReadPaths, writtenPaths } from "./presence.js";
|
|
14
14
|
import { startChassis } from "../alternator/lane.js";
|
|
15
15
|
import { BackgroundShells } from "../tools/backgroundShells.js";
|
|
@@ -189,6 +189,9 @@ export function forkSession(parent, task, opts = {}) {
|
|
|
189
189
|
// of a verifier is not itself a verifier, and silently carrying the persona down would
|
|
190
190
|
// make every descendant refuse to write.
|
|
191
191
|
agentPrompt: opts.agentPrompt,
|
|
192
|
+
// A child testing an app does not stream into the parent's view: its steps are drawn
|
|
193
|
+
// in its own place, and frames with nowhere to go would only be copied for nothing.
|
|
194
|
+
onLive: undefined,
|
|
192
195
|
// CLEARED, not inherited. This line used to copy the parent's value under a
|
|
193
196
|
// comment claiming it cleared it, and the engine's gate is
|
|
194
197
|
// `guarded && !guardAllowed.has(tool)` — so an inherited grant skipped the check
|
|
@@ -282,6 +285,8 @@ export async function createSession(rawCwd = process.cwd(), carryRoots = []) {
|
|
|
282
285
|
const toolContext = freshToolContext(cwd, governance, [cwd, ...extra]);
|
|
283
286
|
// So the session tools can exclude this conversation from "your past sessions".
|
|
284
287
|
toolContext.sessionId = id;
|
|
288
|
+
// Undo history is written next to the session, so it survives closing the app.
|
|
289
|
+
toolContext.checkpoints?.persistTo(checkpointDir(cwd, id));
|
|
285
290
|
attachMcp(toolContext, cwd);
|
|
286
291
|
await seedProjectMemoryRead(toolContext, projectMemory);
|
|
287
292
|
return {
|
|
@@ -372,7 +377,9 @@ export function repairToolCallOrder(transcript) {
|
|
|
372
377
|
}
|
|
373
378
|
return moved ? out : transcript;
|
|
374
379
|
}
|
|
375
|
-
export function reconcileInterruptedTools(transcript
|
|
380
|
+
export function reconcileInterruptedTools(transcript,
|
|
381
|
+
/** Why the results are missing, as the model is told. Defaults to the session having been closed. */
|
|
382
|
+
why = "the session was closed before this tool returned") {
|
|
376
383
|
const answered = new Set();
|
|
377
384
|
for (const e of transcript)
|
|
378
385
|
if (e.role === "tool")
|
|
@@ -390,10 +397,10 @@ export function reconcileInterruptedTools(transcript) {
|
|
|
390
397
|
out.push({
|
|
391
398
|
role: "tool",
|
|
392
399
|
toolCallId: call.id,
|
|
393
|
-
content: `[interrupted] '${call.name}' did not finish —
|
|
394
|
-
`
|
|
400
|
+
content: `[interrupted] '${call.name}' did not finish — ${why}, ` +
|
|
401
|
+
`so its effect on disk/state is unknown. Re-check the current state (files, ` +
|
|
395
402
|
`processes, installs) before relying on it or running it again.`,
|
|
396
|
-
summary: `${call.name} — interrupted
|
|
403
|
+
summary: `${call.name} — interrupted`,
|
|
397
404
|
isError: true,
|
|
398
405
|
});
|
|
399
406
|
}
|
|
@@ -414,7 +421,7 @@ export async function resumeSession(cwd = process.cwd(), id) {
|
|
|
414
421
|
// Order first, then fill gaps: reconcile inserts results right after their assistant
|
|
415
422
|
// message, so it must see a group that is already contiguous.
|
|
416
423
|
const transcript = reconcileInterruptedTools(repairToolCallOrder(loaded));
|
|
417
|
-
const [projectMemory, memoryIndex, projectContext, governance, stamp, modelConfig, sessionMemory, saved] = await Promise.all([
|
|
424
|
+
const [projectMemory, memoryIndex, projectContext, governance, stamp, modelConfig, sessionMemory, saved, earlier] = await Promise.all([
|
|
418
425
|
loadProjectMemory(cwd),
|
|
419
426
|
loadMemory(cwd),
|
|
420
427
|
projectContextText(cwd),
|
|
@@ -423,15 +430,19 @@ export async function resumeSession(cwd = process.cwd(), id) {
|
|
|
423
430
|
loadModelConfig(cwd),
|
|
424
431
|
loadSessionNotes(cwd, meta.id),
|
|
425
432
|
listSessions(cwd),
|
|
433
|
+
loadEarlier(cwd, meta.id),
|
|
426
434
|
]);
|
|
427
435
|
// Restore any added roots that still exist on disk (primary first).
|
|
428
436
|
const extra = (meta.extraRoots ?? []).filter((r) => existsSync(r));
|
|
429
437
|
const roots = [cwd, ...extra];
|
|
430
438
|
const toolContext = freshToolContext(cwd, governance, roots);
|
|
431
|
-
// Undo history
|
|
432
|
-
//
|
|
433
|
-
//
|
|
434
|
-
|
|
439
|
+
// Undo history was written next to the session; bring it back. A session from before
|
|
440
|
+
// that existed (or one whose history was pruned) has none even though its turns really
|
|
441
|
+
// did change files, and marking it lets /undo and rewind say so rather than claim
|
|
442
|
+
// nothing happened.
|
|
443
|
+
const kept = (await toolContext.checkpoints?.restoreFrom(checkpointDir(cwd, meta.id))) ?? 0;
|
|
444
|
+
if (kept === 0)
|
|
445
|
+
toolContext.checkpoints?.noteResumed();
|
|
435
446
|
toolContext.sessionId = meta.id;
|
|
436
447
|
// Re-advertise the deferred tools this session had already surfaced, so a continued
|
|
437
448
|
// session keeps them callable instead of stripping a tool the model was mid-use of.
|
|
@@ -454,6 +465,8 @@ export async function resumeSession(cwd = process.cwd(), id) {
|
|
|
454
465
|
memoryIndex,
|
|
455
466
|
// The session being resumed is not "prior" to itself.
|
|
456
467
|
priorSessions: Math.max(0, saved.filter((m) => m.id !== meta.id).length),
|
|
468
|
+
// What compaction took out, for redrawing the chat only (memory/earlier.ts).
|
|
469
|
+
...(earlier.length > 0 ? { earlier } : {}),
|
|
457
470
|
projectContext,
|
|
458
471
|
governance,
|
|
459
472
|
// Stamped at load so the first turn's freshness check settles instead of reloading
|
|
@@ -475,6 +488,13 @@ export async function resumeSession(cwd = process.cwd(), id) {
|
|
|
475
488
|
// what happened, and what happened does not stop being true.
|
|
476
489
|
...(meta.spend ? { spend: meta.spend } : {}),
|
|
477
490
|
...(meta.callLog ? { callLog: meta.callLog } : {}),
|
|
491
|
+
// A measurement of this session, true after a resume as long as the model is the
|
|
492
|
+
// same (the engine checks that before using it). Without it a reopened session read
|
|
493
|
+
// as nearly empty until its first call.
|
|
494
|
+
...(meta.contextOverhead ? { contextOverhead: meta.contextOverhead } : {}),
|
|
495
|
+
// A goal in progress (or its outcome) is a fact about the session, same as spend —
|
|
496
|
+
// resuming must not silently drop it, or a Marathon paused by a restart just vanishes.
|
|
497
|
+
...(meta.marathon ? { marathon: meta.marathon } : {}),
|
|
478
498
|
};
|
|
479
499
|
}
|
|
480
500
|
/**
|
|
@@ -499,6 +519,18 @@ export async function resumeSession(cwd = process.cwd(), id) {
|
|
|
499
519
|
* session was last saved. The failure direction is the safe one: a file that changed
|
|
500
520
|
* while away is re-read, exactly as it is today.
|
|
501
521
|
*/
|
|
522
|
+
/**
|
|
523
|
+
* Make the read ledger agree with the transcript again, after the transcript was cut
|
|
524
|
+
* back (a rewind). The same restore a resume does: a file counts as read only if the
|
|
525
|
+
* conversation still holds that read and nothing changed the file since. Entries with
|
|
526
|
+
* no stamp are judged against 0, so an unknown read is re-read rather than trusted.
|
|
527
|
+
*/
|
|
528
|
+
export async function rebuildReadLedger(session) {
|
|
529
|
+
const ctx = session.toolContext;
|
|
530
|
+
ctx.reads.clear();
|
|
531
|
+
await seedProjectMemoryRead(ctx, session.projectMemory);
|
|
532
|
+
await restoreReadLedger(ctx, session.transcript, 0);
|
|
533
|
+
}
|
|
502
534
|
async function restoreReadLedger(ctx, transcript, savedAt) {
|
|
503
535
|
const resolve = (p) => {
|
|
504
536
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/memory/session.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/memory/session.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAE1E,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACjI,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAc,MAAM,mBAAmB,CAAC;AAE9D;;;;;GAKG;AACH,KAAK,UAAU,iBAAiB,CAAC,GAAW;IAC1C,OAAO,CAAC,MAAM,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AACzC,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,OAAgB,EAAE,OAA4B,EAAE;IACxF,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,kBAAkB;QAAE,OAAO;IACvD,OAAO,CAAC,aAAa,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC7D,OAAO,CAAC,kBAAkB,GAAG,KAAK,CAAC;AACrC,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,SAAS,SAAS,CAAC,GAAgB,EAAE,GAAW;IAC9C,MAAM,OAAO,GAAG,IAAI,UAAU,EAAE,CAAC;IACjC,GAAG,CAAC,GAAG,GAAG,OAAO,CAAC;IAClB,sFAAsF;IACtF,oFAAoF;IACpF,6BAA6B;IAC7B,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IAC5B,KAAK,aAAa,CAAC,GAAG,CAAC;SACpB,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;QACtB,MAAM,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC7B,iFAAiF;QACjF,gFAAgF;QAChF,+EAA+E;QAC/E,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;QAC/D,8EAA8E;QAC9E,6EAA6E;QAC7E,0EAA0E;QAC1E,MAAM,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,eAAe,CAAC,CAAC;IACtD,CAAC,CAAC;SACD,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;AACrB,CAAC;AAED;;;;;;;;;GASG;AACH,KAAK,UAAU,qBAAqB,CAAC,GAAgB,EAAE,aAAqB;IAC1E,IAAI,CAAC,aAAa;QAAE,OAAO;IAC3B,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IAC7C,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9B,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;IAClG,CAAC;IAAC,MAAM,CAAC;QACP,6CAA6C;IAC/C,CAAC;AACH,CAAC;AAED,mFAAmF;AACnF,KAAK,UAAU,UAAU,CAAC,GAAW;IACnC,MAAM,eAAe,CAAC,GAAG,CAAC,CAAC;IAC3B,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAW,EAAE,UAAsB,EAAE,KAAe;IAC5E,+EAA+E;IAC/E,gFAAgF;IAChF,qDAAqD;IACrD,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,CAAU,CAAC,CAAC,CAAC;IACxF,OAAO;QACL,GAAG;QACH,KAAK;QACL,KAAK,EAAE,IAAI,GAAG,EAAE;QAChB,OAAO,EAAE,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,+CAA+C;QAChF,aAAa;QACb,gBAAgB,EAAE,IAAI,gBAAgB,EAAE;QACxC,WAAW,EAAE,IAAI,WAAW,EAAE;QAC9B,KAAK,EAAE,EAAE;QACT,oFAAoF;QACpF,qFAAqF;QACrF,kBAAkB;QAClB,cAAc,EAAE,IAAI,GAAG,EAAU;QACjC,6EAA6E;QAC7E,2EAA2E;QAC3E,oCAAoC;QACpC,UAAU;QACV,kFAAkF;QAClF,kEAAkE;QAClE,SAAS,EAAE,eAAe,EAAE;KAC7B,CAAC;AACJ,CAAC;AAED,qFAAqF;AACrF,MAAM,iBAAiB,GACrB,wGAAwG;IACxG,qGAAqG;IACrG,yGAAyG;IACzG,2GAA2G;IAC3G,0GAA0G;IAC1G,0GAA0G;IAC1G,wGAAwG;IACxG,6DAA6D,CAAC;AAEhE;;;;;;;;GAQG;AACH,MAAM,UAAU,WAAW,CAAC,MAAe,EAAE,IAAY,EAAE,OAAqD,EAAE;IAChH,MAAM,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC;IAC7B,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;IACxB,MAAM,YAAY,GAAgB;QAChC,GAAG,CAAC;QACJ,KAAK,EAAE,IAAI,GAAG,EAAE;QAChB,KAAK,EAAE,EAAE;QACT,kFAAkF;QAClF,uFAAuF;QACvF,6EAA6E;QAC7E,cAAc,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC;QACzC,kFAAkF;QAClF,iFAAiF;QACjF,iFAAiF;QACjF,SAAS,EAAE,EAAE;QACb,aAAa,EAAE,CAAC,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,GAAG,CAAC;QACzC,aAAa,EAAE,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa;QAC9D,sFAAsF;QACtF,uFAAuF;QACvF,yCAAyC;QACzC,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,qFAAqF;QACrF,oFAAoF;QACpF,MAAM,EAAE,SAAS;QACjB,4EAA4E;QAC5E,2DAA2D;QAC3D,iFAAiF;QACjF,mFAAmF;QACnF,4EAA4E;QAC5E,mEAAmE;QACnE,EAAE;QACF,kFAAkF;QAClF,mFAAmF;QACnF,kFAAkF;QAClF,0CAA0C;QAC1C,YAAY,EAAE,SAAS;QACvB,mFAAmF;QACnF,qFAAqF;QACrF,sFAAsF;QACtF,qFAAqF;QACrF,+EAA+E;QAC/E,kBAAkB,EAAE,SAAS;QAC7B,kFAAkF;QAClF,qFAAqF;QACrF,kFAAkF;QAClF,kFAAkF;QAClF,mEAAmE;QACnE,EAAE;QACF,mFAAmF;QACnF,qDAAqD;QACrD,UAAU,EAAE,EAAE;QACd,oBAAoB,EAAE,SAAS;QAC/B,kFAAkF;QAClF,8EAA8E;QAC9E,mFAAmF;QACnF,mFAAmF;QACnF,iFAAiF;QACjF,gEAAgE;QAChE,iFAAiF;QACjF,iFAAiF;QACjF,mFAAmF;QACnF,kBAAkB;QAClB,eAAe,EAAE,SAAS;KAC3B,CAAC;IACF,OAAO;QACL,GAAG,MAAM;QACT,EAAE;QACF,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,IAAI,EAAE,CAAC;QACjE,WAAW,EAAE,YAAY;KAC1B,CAAC;AACJ,CAAC;AAED,yEAAyE;AACzE;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,SAAiB,OAAO,CAAC,GAAG,EAAE,EAC9B,aAAgC,EAAE;IAElC,iFAAiF;IACjF,+EAA+E;IAC/E,mFAAmF;IACnF,yEAAyE;IACzE,iFAAiF;IACjF,yEAAyE;IACzE,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,CAAC,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC9G,iBAAiB,CAAC,GAAG,CAAC;QACtB,UAAU,CAAC,GAAG,CAAC;QACf,kBAAkB,CAAC,GAAG,CAAC;QACvB,cAAc,CAAC,GAAG,CAAC;QACnB,eAAe,CAAC,GAAG,CAAC;QACpB,eAAe,CAAC,GAAG,CAAC;QACpB,YAAY,CAAC,GAAG,CAAC;KAClB,CAAC,CAAC;IACH,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;IACxB,qFAAqF;IACrF,sFAAsF;IACtF,sFAAsF;IACtF,oFAAoF;IACpF,kFAAkF;IAClF,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3E,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAChC,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QACjC,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QACpD,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAChB,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IACH,MAAM,WAAW,GAAG,gBAAgB,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;IACvE,gFAAgF;IAChF,WAAW,CAAC,SAAS,GAAG,EAAE,CAAC;IAC3B,+EAA+E;IAC/E,WAAW,CAAC,WAAW,EAAE,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;IAC3D,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IAC5B,MAAM,qBAAqB,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IACxD,OAAO;QACL,EAAE;QACF,GAAG;QACH,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,UAAU,EAAE,EAAE;QACd,WAAW;QACX,aAAa;QACb,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC;QACzB,WAAW;QACX,4DAA4D;QAC5D,aAAa,EAAE,OAAO,CAAC,MAAM;QAC7B,cAAc;QACd,UAAU;QACV,mFAAmF;QACnF,iDAAiD;QACjD,eAAe,EAAE,KAAK;QACtB,WAAW;KACZ,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH;;;;;;;;;GASG;AACH;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,mBAAmB,CAAC,UAAmB;IACrD,MAAM,GAAG,GAAY,EAAE,CAAC;IACxB,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,IAAI,CAAC,GAAG,CAAC,CAAC;IAEV,OAAO,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAE,CAAC;QAC7B,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC,EAAE,CAAC;QACJ,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM;YAAE,SAAS;QAErE,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACvD,MAAM,OAAO,GAAY,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAY,EAAE,CAAC;QAC7B,8EAA8E;QAC9E,gFAAgF;QAChF,gFAAgF;QAChF,OAAO,CAAC,GAAG,UAAU,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAE,CAAC;YAC5B,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW;gBAAE,MAAM;YACrC,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;gBACtD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC7B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACpB,KAAK,GAAG,IAAI,CAAC;YACf,CAAC;YACD,CAAC,EAAE,CAAC;QACN,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,GAAG,OAAO,EAAE,GAAG,QAAQ,CAAC,CAAC;IACpC,CAAC;IAED,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,UAAmB;AACnB,qGAAqG;AACrG,GAAG,GAAG,kDAAkD;IAExD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IACnC,KAAK,MAAM,CAAC,IAAI,UAAU;QAAE,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM;YAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAE9E,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,MAAM,GAAG,GAAY,EAAE,CAAC;IACxB,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACZ,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;YAClD,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;gBAC/B,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;oBAAE,SAAS;gBACpC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,2CAA2C;gBAClE,QAAQ,GAAG,IAAI,CAAC;gBAChB,GAAG,CAAC,IAAI,CAAC;oBACP,IAAI,EAAE,MAAM;oBACZ,UAAU,EAAE,IAAI,CAAC,EAAE;oBACnB,OAAO,EACL,kBAAkB,IAAI,CAAC,IAAI,sBAAsB,GAAG,IAAI;wBACxD,6EAA6E;wBAC7E,gEAAgE;oBAClE,OAAO,EAAE,GAAG,IAAI,CAAC,IAAI,gBAAgB;oBACrC,OAAO,EAAE,IAAI;iBACd,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC;AACrC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,MAAc,OAAO,CAAC,GAAG,EAAE,EAC3B,EAAW;IAEX,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,aAAa,CAAC,GAAG,CAAC,CAAC;IACrE,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEvB,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IAClD,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAChD,oFAAoF;IACpF,qFAAqF;IACrF,6EAA6E;IAC7E,qFAAqF;IACrF,8DAA8D;IAC9D,MAAM,UAAU,GAAG,yBAAyB,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC;IAE1E,MAAM,CAAC,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO,CAAC,GAC/G,MAAM,OAAO,CAAC,GAAG,CAAC;QAChB,iBAAiB,CAAC,GAAG,CAAC;QACtB,UAAU,CAAC,GAAG,CAAC;QACf,kBAAkB,CAAC,GAAG,CAAC;QACvB,cAAc,CAAC,GAAG,CAAC;QACnB,eAAe,CAAC,GAAG,CAAC;QACpB,eAAe,CAAC,GAAG,CAAC;QACpB,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC;QAC9B,YAAY,CAAC,GAAG,CAAC;QACjB,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC;KAC1B,CAAC,CAAC;IACL,oEAAoE;IACpE,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IACnE,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC;IAC9B,MAAM,WAAW,GAAG,gBAAgB,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;IAC7D,qFAAqF;IACrF,uFAAuF;IACvF,kFAAkF;IAClF,oBAAoB;IACpB,MAAM,IAAI,GAAG,CAAC,MAAM,WAAW,CAAC,WAAW,EAAE,WAAW,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC5F,IAAI,IAAI,KAAK,CAAC;QAAE,WAAW,CAAC,WAAW,EAAE,WAAW,EAAE,CAAC;IACvD,WAAW,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC;IAChC,oFAAoF;IACpF,oFAAoF;IACpF,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1D,WAAW,CAAC,cAAc,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC5D,CAAC;IACD,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IAC5B,MAAM,qBAAqB,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IACxD,wFAAwF;IACxF,mFAAmF;IACnF,MAAM,iBAAiB,CAAC,WAAW,EAAE,UAAU,EAAE,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC;IACtE,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,GAAG;QACH,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE;QACvC,UAAU;QACV,WAAW;QACX,aAAa;QACb,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC;QACzB,WAAW;QACX,sDAAsD;QACtD,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC;QACxE,6EAA6E;QAC7E,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1C,cAAc;QACd,UAAU;QACV,mFAAmF;QACnF,iDAAiD;QACjD,eAAe,EAAE,KAAK;QACtB,WAAW;QACX,kFAAkF;QAClF,oFAAoF;QACpF,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpE,wEAAwE;QACxE,EAAE;QACF,+EAA+E;QAC/E,kFAAkF;QAClF,mFAAmF;QACnF,qFAAqF;QACrF,EAAE;QACF,iFAAiF;QACjF,qFAAqF;QACrF,6DAA6D;QAC7D,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5C,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,iFAAiF;QACjF,oFAAoF;QACpF,wCAAwC;QACxC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1E,mFAAmF;QACnF,uFAAuF;QACvF,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACtD,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,OAAgB;IACtD,MAAM,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC;IAChC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IAClB,MAAM,qBAAqB,CAAC,GAAG,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACxD,MAAM,iBAAiB,CAAC,GAAG,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,GAAgB,EAAE,UAAmB,EAAE,OAAe;IACrF,MAAM,OAAO,GAAG,CAAC,CAAS,EAAsB,EAAE;QAChD,IAAI,CAAC;YACH,OAAO,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAC7B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC,CAAC;IAEF,uFAAuF;IACvF,wFAAwF;IACxF,qFAAqF;IACrF,qFAAqF;IACrF,iCAAiC;IACjC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,EAAE,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IAEpG,uFAAuF;IACvF,qFAAqF;IACrF,yFAAyF;IACzF,sFAAsF;IACtF,gEAAgE;IAChE,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC7C,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;QAC/B,MAAM,EAAE,GAAG,KAAK,CAAC,EAAE,IAAI,OAAO,CAAC;QAC/B,KAAK,MAAM,IAAI,IAAI,IAAI,GAAG,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,EAAE,GAAG,YAAY,CAAC,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YACpG,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAED,oFAAoF;IACpF,sFAAsF;IACtF,0BAA0B;IAC1B,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAE9F,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,kBAAkB,CAAC,EAAE,CAAC;QACvD,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC9B,oFAAoF;YACpF,+DAA+D;YAC/D,IAAI,EAAE,CAAC,OAAO,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC;gBAAE,SAAS;YAC5D,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;QACjG,CAAC;QAAC,MAAM,CAAC;YACP,+EAA+E;QACjF,CAAC;IACH,CAAC;AACH,CAAC;AAED;wDACwD;AACxD,MAAM,kBAAkB,GAAG,GAAG,CAAC"}
|
|
@@ -1,5 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* sessionMemory.ts — a continuously-maintained, structured "state of the session"
|
|
3
|
+
* that survives every compaction.
|
|
4
|
+
*
|
|
5
|
+
* The problem it solves: even with good compaction, a very long session slowly loses
|
|
6
|
+
* fidelity — each summary is a lossy pass over the previous summary. Session memory
|
|
7
|
+
* breaks that: a small, structured notes document (Current State, Task, Files, Errors,
|
|
8
|
+
* Learnings, Worklog) is refreshed at natural breaks as the conversation grows, and is
|
|
9
|
+
* injected into every turn's context. Because it's maintained OUTSIDE the transcript,
|
|
10
|
+
* microcompact/autocompact never touch it — so after any number of compactions the
|
|
11
|
+
* model still has a crisp, current picture of what it's doing and what already failed.
|
|
12
|
+
*
|
|
13
|
+
* It is distinct from the other memories:
|
|
14
|
+
* - MINDWEAVE.md = durable project facts the user/model curate (spans sessions).
|
|
15
|
+
* - auto-memory = cross-session typed notes (spans sessions).
|
|
16
|
+
* - session memory = THIS session's live working state (dies with the session).
|
|
17
|
+
*
|
|
18
|
+
* The pure parts (the update trigger, rendering, bounding) are unit-tested; the update
|
|
19
|
+
* itself is one cheap model call, degrade-safe (a failure keeps the last good notes).
|
|
20
|
+
*/
|
|
21
|
+
import { withAuxModel } from "../dynamo/auxModel.js";
|
|
1
22
|
import { estimateEntriesTokens, estimateTokens, formatTranscriptForSummary } from "./compaction.js";
|
|
2
|
-
import { activeDriver } from "../drivers/registry.js";
|
|
23
|
+
import { activeDriver, ensureDriver } from "../drivers/registry.js";
|
|
24
|
+
import { toolSchemas } from "../tools/registry.js";
|
|
3
25
|
const env = (name, fallback) => {
|
|
4
26
|
const v = Number(process.env[name]);
|
|
5
27
|
return Number.isFinite(v) && v > 0 ? v : fallback;
|
|
@@ -28,7 +50,7 @@ export const SESSION_MEMORY_SECTION_TOKENS = env("MINDWEAVE_SESSION_MEMORY_SECTI
|
|
|
28
50
|
* the content beneath each. "Current State" is first-class: it's what lets the model
|
|
29
51
|
* pick up cleanly after a compaction. */
|
|
30
52
|
export const SESSION_MEMORY_TEMPLATE = `# Session Title
|
|
31
|
-
_A short and distinctive
|
|
53
|
+
_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_
|
|
32
54
|
|
|
33
55
|
# Current State
|
|
34
56
|
_What is actively being worked on right now? Pending tasks not yet completed. Immediate next steps._
|
|
@@ -106,22 +128,35 @@ export function boundSessionMemory(notes, maxTokens = SESSION_MEMORY_MAX_TOKENS)
|
|
|
106
128
|
* persists the notes file, keeping the engine filesystem-pure. Degrade-safe: on any
|
|
107
129
|
* failure the previous notes are kept untouched.
|
|
108
130
|
*/
|
|
109
|
-
export async function updateSessionMemory(session) {
|
|
131
|
+
export async function updateSessionMemory(session, signal) {
|
|
110
132
|
const recent = session.transcript.slice(-RECENT_ENTRIES);
|
|
111
133
|
if (recent.length === 0)
|
|
112
134
|
return false;
|
|
113
135
|
const current = session.sessionMemory?.trim() || SESSION_MEMORY_TEMPLATE;
|
|
114
136
|
try {
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
137
|
+
// With reasoning off where the model allows it; see dynamo/auxModel.ts.
|
|
138
|
+
// `ensureDriver` first: `activeDriver()` is a plain global, and a sub-agent (or
|
|
139
|
+
// another background aux call) running its own model in between leaves it
|
|
140
|
+
// pointed at THAT provider — this call would then hand ITS model string to the
|
|
141
|
+
// wrong provider's API. See the matching fix + comment in dynamo/engine.ts's
|
|
142
|
+
// summarizeAndSplice, which hit the exact same failure shape.
|
|
143
|
+
//
|
|
144
|
+
// `withTools`: a real (read-only) tool set, attached only if the model already
|
|
145
|
+
// refused a bare call — some free models serve only tool-shaped requests.
|
|
146
|
+
const { content } = await withAuxModel(session.modelConfig, async (model, withTools) => {
|
|
147
|
+
await ensureDriver(model.model);
|
|
148
|
+
return activeDriver().toolTurn({
|
|
149
|
+
system: UPDATE_SYSTEM,
|
|
150
|
+
messages: [
|
|
151
|
+
{
|
|
152
|
+
role: "user",
|
|
153
|
+
content: `CURRENT NOTES:\n${current}\n\n` +
|
|
154
|
+
`RECENT CONVERSATION:\n${formatTranscriptForSummary(recent)}\n\n${UPDATE_REQUEST}`,
|
|
155
|
+
},
|
|
156
|
+
],
|
|
157
|
+
model,
|
|
158
|
+
...(withTools ? { tools: toolSchemas({ readOnlyOnly: true }) } : {}),
|
|
159
|
+
}, { signal }); // Esc reaches this call too; a slow model must not hold a stop open
|
|
125
160
|
});
|
|
126
161
|
const notes = content.trim();
|
|
127
162
|
if (!notes)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessionMemory.js","sourceRoot":"","sources":["../../src/memory/sessionMemory.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sessionMemory.js","sourceRoot":"","sources":["../../src/memory/sessionMemory.ts"],"names":[],"mappings":"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"}
|
|
@@ -114,7 +114,7 @@ export function compactFromSessionMemory(entries, notes, coveredEntries, targetT
|
|
|
114
114
|
return null;
|
|
115
115
|
if (coveredEntries > entries.length)
|
|
116
116
|
return null;
|
|
117
|
-
const summaryEntry = { role: "summary", content: RESUME_PREFIX + (notes ?? "").trim() };
|
|
117
|
+
const summaryEntry = { role: "summary", content: RESUME_PREFIX + (notes ?? "").trim(), ts: Date.now() };
|
|
118
118
|
const fixed = estimateEntriesTokens([summaryEntry]) + overhead;
|
|
119
119
|
// What the tail may cost and still leave us under the bar, capped so a compaction
|
|
120
120
|
// that technically fits does not leave the next one due immediately.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessionMemoryCompact.js","sourceRoot":"","sources":["../../src/memory/sessionMemoryCompact.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"sessionMemoryCompact.js","sourceRoot":"","sources":["../../src/memory/sessionMemoryCompact.ts"],"names":[],"mappings":"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"}
|