@x-code-cli/core 0.3.1 → 0.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/dist/agent/compression.d.ts.map +1 -1
  2. package/dist/agent/compression.js +33 -3
  3. package/dist/agent/compression.js.map +1 -1
  4. package/dist/agent/light-compact.d.ts +12 -0
  5. package/dist/agent/light-compact.d.ts.map +1 -1
  6. package/dist/agent/light-compact.js +75 -0
  7. package/dist/agent/light-compact.js.map +1 -1
  8. package/dist/agent/loop-state.d.ts +18 -0
  9. package/dist/agent/loop-state.d.ts.map +1 -1
  10. package/dist/agent/loop-state.js +3 -0
  11. package/dist/agent/loop-state.js.map +1 -1
  12. package/dist/agent/loop.d.ts.map +1 -1
  13. package/dist/agent/loop.js +33 -1
  14. package/dist/agent/loop.js.map +1 -1
  15. package/dist/agent/plan-tools.d.ts.map +1 -1
  16. package/dist/agent/plan-tools.js +2 -0
  17. package/dist/agent/plan-tools.js.map +1 -1
  18. package/dist/agent/session-store.d.ts +11 -0
  19. package/dist/agent/session-store.d.ts.map +1 -1
  20. package/dist/agent/session-store.js +59 -15
  21. package/dist/agent/session-store.js.map +1 -1
  22. package/dist/agent/snapshot.d.ts +45 -0
  23. package/dist/agent/snapshot.d.ts.map +1 -0
  24. package/dist/agent/snapshot.js +277 -0
  25. package/dist/agent/snapshot.js.map +1 -0
  26. package/dist/agent/sub-agents/built-in.js +1 -1
  27. package/dist/agent/sub-agents/built-in.js.map +1 -1
  28. package/dist/agent/system-prompt.d.ts.map +1 -1
  29. package/dist/agent/system-prompt.js +17 -8
  30. package/dist/agent/system-prompt.js.map +1 -1
  31. package/dist/index.d.ts +4 -1
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +4 -1
  34. package/dist/index.js.map +1 -1
  35. package/dist/permissions/index.d.ts.map +1 -1
  36. package/dist/permissions/index.js +0 -2
  37. package/dist/permissions/index.js.map +1 -1
  38. package/dist/tools/task.d.ts.map +1 -1
  39. package/dist/tools/task.js +28 -15
  40. package/dist/tools/task.js.map +1 -1
  41. package/dist/types/index.d.ts +3 -0
  42. package/dist/types/index.d.ts.map +1 -1
  43. package/dist/types/index.js.map +1 -1
  44. package/package.json +1 -1
@@ -37,12 +37,23 @@ export function getSessionFilePath(state, cwd = process.cwd()) {
37
37
  }
38
38
  // ── Append helpers (fire-and-forget; never throw) ───────────────────────
39
39
  async function appendLine(filePath, entry) {
40
+ await appendRawLines(filePath, [JSON.stringify(entry)]);
41
+ }
42
+ /** Batch-append pre-serialised jsonl rows. Returns true on success so
43
+ * callers can keep "only advance state when disk write succeeded" — e.g.
44
+ * markBoundaryAndReflush mustn't clear the in-memory checkpoint list
45
+ * unless the boundary actually landed on disk. */
46
+ async function appendRawLines(filePath, lines) {
47
+ if (lines.length === 0)
48
+ return true;
40
49
  try {
41
50
  await fs.mkdir(path.dirname(filePath), { recursive: true });
42
- await fs.appendFile(filePath, JSON.stringify(entry) + '\n', 'utf-8');
51
+ await fs.appendFile(filePath, lines.join('\n') + '\n', 'utf-8');
52
+ return true;
43
53
  }
44
54
  catch {
45
55
  // Persistence is best-effort — never block the agent loop on FS errors.
56
+ return false;
46
57
  }
47
58
  }
48
59
  /** Try to read the current git branch from `.git/HEAD`. Cheap, fully sync
@@ -108,16 +119,15 @@ export async function flushPendingMessages(state) {
108
119
  const entry = { t: 'msg', message, ts };
109
120
  lines.push(JSON.stringify(entry));
110
121
  }
122
+ // Preserve the pre-refactor early-bail: when the loop produces nothing
123
+ // (every unpersisted slot was a defensive `!message` skip), leave
124
+ // persistedMessageCount alone so a future repeat-with-real-messages
125
+ // doesn't think it already covered the range.
111
126
  if (lines.length === 0)
112
127
  return;
113
- try {
114
- await fs.mkdir(path.dirname(filePath), { recursive: true });
115
- await fs.appendFile(filePath, lines.join('\n') + '\n', 'utf-8');
128
+ if (await appendRawLines(filePath, lines)) {
116
129
  state.persistedMessageCount = state.messages.length;
117
130
  }
118
- catch {
119
- // best-effort
120
- }
121
131
  }
122
132
  /** Append a usage snapshot for the current turn. Called from the agent loop
123
133
  * after `collectTurnResponse` accepts the provider's `usage` object. The
@@ -160,14 +170,34 @@ export async function markBoundaryAndReflush(state, summary) {
160
170
  const entry = { t: 'msg', message, ts };
161
171
  lines.push(JSON.stringify(entry));
162
172
  }
163
- try {
164
- await fs.mkdir(path.dirname(filePath), { recursive: true });
165
- await fs.appendFile(filePath, lines.join('\n') + '\n', 'utf-8');
166
- state.persistedMessageCount = state.messages.length;
167
- }
168
- catch {
169
- // best-effort
170
- }
173
+ if (!(await appendRawLines(filePath, lines)))
174
+ return;
175
+ state.persistedMessageCount = state.messages.length;
176
+ // Compaction shrinks/rewrites the messages array — every prior
177
+ // checkpoint's `messageCount` now points past the end. Clear the
178
+ // in-memory list to mirror the loader's behaviour (which drops
179
+ // pre-boundary checkpoint lines on resume).
180
+ state.checkpoints = [];
181
+ }
182
+ /** Append a rewind checkpoint marker. Fire-and-forget, like the other
183
+ * append helpers. On resume, `loadSession` collects these into
184
+ * `LoadedSession.checkpoints` so the picker can offer the same rewind
185
+ * points across CLI restarts. The "everything-after-last-boundary wins"
186
+ * loader rule naturally drops checkpoints whose `messageCount` was
187
+ * invalidated by a compaction. */
188
+ export async function appendCheckpoint(state, entry) {
189
+ if (!state.sessionId)
190
+ return;
191
+ const filePath = getSessionFilePath(state);
192
+ const jsonl = {
193
+ t: 'meta',
194
+ kind: 'checkpoint',
195
+ ckptId: entry.ckptId,
196
+ messageCount: entry.messageCount,
197
+ ts: entry.ts,
198
+ userPrompt: entry.userPrompt,
199
+ };
200
+ await appendLine(filePath, jsonl);
171
201
  }
172
202
  /** Append an `interrupted` marker. Purely informational — the loader
173
203
  * ignores it for state reconstruction; the picker can show "interrupted"
@@ -210,6 +240,7 @@ export async function loadSession(filePath) {
210
240
  let header = null;
211
241
  let lastUsage = null;
212
242
  let messages = [];
243
+ let checkpoints = [];
213
244
  for (const line of raw.split('\n')) {
214
245
  if (!line.trim())
215
246
  continue;
@@ -229,6 +260,17 @@ export async function loadSession(filePath) {
229
260
  }
230
261
  else if (entry.kind === 'compact-boundary') {
231
262
  messages = [];
263
+ // Checkpoints anchored to pre-compaction message counts are now
264
+ // meaningless — the array shrank under them. Drop along with msgs.
265
+ checkpoints = [];
266
+ }
267
+ else if (entry.kind === 'checkpoint') {
268
+ checkpoints.push({
269
+ ckptId: entry.ckptId,
270
+ messageCount: entry.messageCount,
271
+ ts: entry.ts,
272
+ userPrompt: entry.userPrompt,
273
+ });
232
274
  }
233
275
  // 'interrupted' is informational only — doesn't affect state
234
276
  }
@@ -248,6 +290,7 @@ export async function loadSession(filePath) {
248
290
  firstPrompt: header.firstPrompt,
249
291
  messages: sanitizeMessageTail(messages),
250
292
  tokenUsage: lastUsage?.usage ?? EMPTY_USAGE,
293
+ checkpoints,
251
294
  filePath,
252
295
  };
253
296
  }
@@ -407,6 +450,7 @@ export function hydrateLoopState(loaded, initialMode = 'default') {
407
450
  state.tokenUsage = { ...loaded.tokenUsage };
408
451
  state.lastInputTokens = loaded.tokenUsage.inputTokens;
409
452
  state.persistedMessageCount = loaded.messages.length;
453
+ state.checkpoints = loaded.checkpoints.slice();
410
454
  return state;
411
455
  }
412
456
  //# sourceMappingURL=session-store.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"session-store.js","sourceRoot":"","sources":["../../src/agent/session-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-store.js","sourceRoot":"","sources":["../../src/agent/session-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import type { LoopState } from './loop-state.js';
2
+ /** Public, in-memory representation of a checkpoint. Mirrored to jsonl as
3
+ * a `meta:checkpoint` line so /rewind survives /resume. */
4
+ export interface CheckpointEntry {
5
+ ckptId: string;
6
+ /** `state.messages.length` immediately AFTER the user message was pushed.
7
+ * Rewind truncates messages to `messageCount - 1` (drops that user msg
8
+ * + everything after). Not stable across compaction — the in-memory
9
+ * list is cleared by markBoundaryAndReflush. */
10
+ messageCount: number;
11
+ ts: string;
12
+ /** First ~200 chars of the user message that triggered this checkpoint —
13
+ * drives the picker's preview. */
14
+ userPrompt: string;
15
+ }
16
+ /** Capture the current on-disk state of every file in `state.filesModified`
17
+ * into a new content-addressed checkpoint and append the entry to
18
+ * `state.checkpoints`. Returns the entry on success, null on FS failure
19
+ * (in which case rewind to this point would be unsafe — caller should
20
+ * treat the snapshot as unavailable, NOT silently skip it).
21
+ *
22
+ * Snapshotting is best-effort per-file: a read failure on one path marks
23
+ * it `skip` and continues, so a transient EACCES on a single file doesn't
24
+ * doom the whole checkpoint. */
25
+ export declare function createCheckpoint(state: LoopState, userPromptPreview: string, cwd?: string): Promise<CheckpointEntry | null>;
26
+ /** Restore the working tree to the state captured at `ckptId`. Algorithm,
27
+ * applied to the union of (current `filesModified`, manifest keys):
28
+ * - in manifest with `hash` → write blob content back
29
+ * - in manifest with `absent` → unlink (if present)
30
+ * - in manifest with `skip` → leave alone (couldn't capture)
31
+ * - NOT in manifest → unlink (was created after the checkpoint)
32
+ * Files outside this union are untouched — we only undo what the agent
33
+ * has historically touched.
34
+ *
35
+ * After a successful restore:
36
+ * - `state.filesModified` is rebuilt from the manifest's keys (so the
37
+ * agent's notion of "touched files" matches the restored point).
38
+ * - Checkpoints after the target are dropped from `state.checkpoints`
39
+ * and their manifests deleted; orphaned blobs get GC'd.
40
+ *
41
+ * Caller (use-agent) is responsible for truncating `state.messages` to
42
+ * `entry.messageCount - 1` and rewriting the session jsonl — restore
43
+ * here only touches the working tree + checkpoint bookkeeping. */
44
+ export declare function restoreCheckpoint(state: LoopState, ckptId: string, cwd?: string): Promise<boolean>;
45
+ //# sourceMappingURL=snapshot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshot.d.ts","sourceRoot":"","sources":["../../src/agent/snapshot.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAgBhD;4DAC4D;AAC5D,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAA;IACd;;;qDAGiD;IACjD,YAAY,EAAE,MAAM,CAAA;IACpB,EAAE,EAAE,MAAM,CAAA;IACV;uCACmC;IACnC,UAAU,EAAE,MAAM,CAAA;CACnB;AAoFD;;;;;;;;iCAQiC;AACjC,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,SAAS,EAChB,iBAAiB,EAAE,MAAM,EACzB,GAAG,GAAE,MAAsB,GAC1B,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAyEjC;AAED;;;;;;;;;;;;;;;;;mEAiBmE;AACnE,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,SAAS,EAChB,MAAM,EAAE,MAAM,EACd,GAAG,GAAE,MAAsB,GAC1B,OAAO,CAAC,OAAO,CAAC,CA2DlB"}
@@ -0,0 +1,277 @@
1
+ // @x-code-cli/core — File-history snapshot store (content-addressed)
2
+ //
3
+ // Backs the `/rewind` command. Each user-message turn produces a checkpoint
4
+ // that captures the current state of every file in `state.filesModified`.
5
+ // Content is deduplicated by sha256 blob — repeated files across checkpoints
6
+ // occupy disk once. Per session, layout under .x-code/file-history/<sid>/:
7
+ //
8
+ // blobs/<sha256> — content-addressed file contents (shared)
9
+ // checkpoints/<id>.json — manifest mapping abs path -> blob hash | absent | skip
10
+ //
11
+ // Why content-addressed (vs per-checkpoint copies): in a typical agent run
12
+ // most files are unchanged between adjacent user messages — the model edits
13
+ // 1-3 files per turn while `filesModified` may have 30+ accumulated. With
14
+ // dedup the marginal cost of a new checkpoint is just the bytes of the
15
+ // files that actually changed, not the whole tracked set.
16
+ //
17
+ // Why no shadow-git (per the design discussion): file-copy keeps this
18
+ // working in non-git projects, sidesteps .gitignore conflicts, and avoids
19
+ // any chance of touching the user's real .git index.
20
+ import { createHash } from 'node:crypto';
21
+ import fs from 'node:fs/promises';
22
+ import path from 'node:path';
23
+ import { XCODE_DIR } from '../utils.js';
24
+ const FILE_HISTORY_SUBDIR = 'file-history';
25
+ const BLOBS_SUBDIR = 'blobs';
26
+ const CHECKPOINTS_SUBDIR = 'checkpoints';
27
+ /** Files larger than this are recorded with `skip: true` in the manifest
28
+ * and left untouched on restore. Keeps a stray build artifact (megabytes
29
+ * to gigabytes) from blowing up the blob store; agent-tracked source
30
+ * files are essentially never this large. */
31
+ const MAX_FILE_BYTES = 10 * 1024 * 1024;
32
+ /** Ring-buffer cap. Older checkpoints are evicted; orphaned blobs are GC'd
33
+ * on the next restore or eviction. 100 matches Claude Code's bound. */
34
+ const MAX_CHECKPOINTS = 100;
35
+ function historyDir(sessionId, cwd) {
36
+ return path.join(cwd, XCODE_DIR, FILE_HISTORY_SUBDIR, sessionId);
37
+ }
38
+ function blobsDir(sessionId, cwd) {
39
+ return path.join(historyDir(sessionId, cwd), BLOBS_SUBDIR);
40
+ }
41
+ function checkpointsDir(sessionId, cwd) {
42
+ return path.join(historyDir(sessionId, cwd), CHECKPOINTS_SUBDIR);
43
+ }
44
+ function manifestPath(sessionId, ckptId, cwd) {
45
+ return path.join(checkpointsDir(sessionId, cwd), `${ckptId}.json`);
46
+ }
47
+ function blobPath(sessionId, hash, cwd) {
48
+ return path.join(blobsDir(sessionId, cwd), hash);
49
+ }
50
+ /** Local-time YYYYMMDD-HHMMSS-mmm, matching the sessionId shape so a
51
+ * directory listing of checkpoints sorts chronologically. */
52
+ function genCkptId(now = new Date()) {
53
+ const pad = (n, w = 2) => String(n).padStart(w, '0');
54
+ return (`${now.getFullYear()}${pad(now.getMonth() + 1)}${pad(now.getDate())}` +
55
+ `-${pad(now.getHours())}${pad(now.getMinutes())}${pad(now.getSeconds())}` +
56
+ `-${pad(now.getMilliseconds(), 3)}`);
57
+ }
58
+ async function exists(p) {
59
+ try {
60
+ await fs.access(p);
61
+ return true;
62
+ }
63
+ catch {
64
+ return false;
65
+ }
66
+ }
67
+ async function statSafe(p) {
68
+ try {
69
+ return { kind: 'ok', stat: await fs.stat(p) };
70
+ }
71
+ catch (err) {
72
+ const code = err.code;
73
+ if (code === 'ENOENT' || code === 'ENOTDIR')
74
+ return { kind: 'absent' };
75
+ return { kind: 'unreadable' };
76
+ }
77
+ }
78
+ async function writeBlobIfMissing(sessionId, hash, content, cwd) {
79
+ const p = blobPath(sessionId, hash, cwd);
80
+ if (await exists(p))
81
+ return;
82
+ await fs.mkdir(path.dirname(p), { recursive: true });
83
+ await fs.writeFile(p, content);
84
+ }
85
+ /** Capture the current on-disk state of every file in `state.filesModified`
86
+ * into a new content-addressed checkpoint and append the entry to
87
+ * `state.checkpoints`. Returns the entry on success, null on FS failure
88
+ * (in which case rewind to this point would be unsafe — caller should
89
+ * treat the snapshot as unavailable, NOT silently skip it).
90
+ *
91
+ * Snapshotting is best-effort per-file: a read failure on one path marks
92
+ * it `skip` and continues, so a transient EACCES on a single file doesn't
93
+ * doom the whole checkpoint. */
94
+ export async function createCheckpoint(state, userPromptPreview, cwd = process.cwd()) {
95
+ const ckptId = genCkptId();
96
+ const ts = new Date().toISOString();
97
+ const messageCount = state.messages.length;
98
+ const files = {};
99
+ for (const absPath of state.filesModified) {
100
+ const outcome = await statSafe(absPath);
101
+ if (outcome.kind === 'absent') {
102
+ files[absPath] = { absent: true };
103
+ continue;
104
+ }
105
+ if (outcome.kind === 'unreadable') {
106
+ // Couldn't stat for reasons OTHER than "file doesn't exist" — most
107
+ // likely a permission issue. Mark skip so restore won't try to delete
108
+ // a file the user (or another process) actively cares about.
109
+ files[absPath] = { skip: true };
110
+ continue;
111
+ }
112
+ const stat = outcome.stat;
113
+ if (!stat.isFile() || stat.size > MAX_FILE_BYTES) {
114
+ // Symlinks / dirs / oversized blobs — record as skip so restore knows
115
+ // to leave them alone (vs misclassifying as absent and deleting).
116
+ files[absPath] = { skip: true };
117
+ continue;
118
+ }
119
+ try {
120
+ const buf = await fs.readFile(absPath);
121
+ const hash = createHash('sha256').update(buf).digest('hex');
122
+ await writeBlobIfMissing(state.sessionId, hash, buf, cwd);
123
+ files[absPath] = { hash };
124
+ }
125
+ catch {
126
+ files[absPath] = { skip: true };
127
+ }
128
+ }
129
+ const manifest = {
130
+ ckptId,
131
+ ts,
132
+ messageCount,
133
+ userPrompt: userPromptPreview.slice(0, 200),
134
+ files,
135
+ };
136
+ try {
137
+ await fs.mkdir(checkpointsDir(state.sessionId, cwd), { recursive: true });
138
+ await fs.writeFile(manifestPath(state.sessionId, ckptId, cwd), JSON.stringify(manifest, null, 2), 'utf-8');
139
+ }
140
+ catch {
141
+ return null;
142
+ }
143
+ const entry = { ckptId, messageCount, ts, userPrompt: manifest.userPrompt };
144
+ state.checkpoints.push(entry);
145
+ // Ring-buffer eviction. Drop oldest manifests; defer blob GC to the
146
+ // amortized sweep below so we don't re-read remaining manifests on every
147
+ // eviction.
148
+ let evicted = false;
149
+ while (state.checkpoints.length > MAX_CHECKPOINTS) {
150
+ const dropped = state.checkpoints.shift();
151
+ if (!dropped)
152
+ break;
153
+ void fs.unlink(manifestPath(state.sessionId, dropped.ckptId, cwd)).catch(() => undefined);
154
+ evicted = true;
155
+ }
156
+ if (evicted) {
157
+ // Awaited (not fire-and-forget) so tests see deterministic blob counts
158
+ // and so a subsequent eviction can't race a still-running sweep into
159
+ // double-deleting a blob the new manifest references. GC is O(remaining
160
+ // checkpoints * files per manifest) — a few hundred reads at most,
161
+ // amortized over hundreds of normal checkpoints between evictions.
162
+ await garbageCollectBlobs(state, cwd).catch(() => undefined);
163
+ }
164
+ return entry;
165
+ }
166
+ /** Restore the working tree to the state captured at `ckptId`. Algorithm,
167
+ * applied to the union of (current `filesModified`, manifest keys):
168
+ * - in manifest with `hash` → write blob content back
169
+ * - in manifest with `absent` → unlink (if present)
170
+ * - in manifest with `skip` → leave alone (couldn't capture)
171
+ * - NOT in manifest → unlink (was created after the checkpoint)
172
+ * Files outside this union are untouched — we only undo what the agent
173
+ * has historically touched.
174
+ *
175
+ * After a successful restore:
176
+ * - `state.filesModified` is rebuilt from the manifest's keys (so the
177
+ * agent's notion of "touched files" matches the restored point).
178
+ * - Checkpoints after the target are dropped from `state.checkpoints`
179
+ * and their manifests deleted; orphaned blobs get GC'd.
180
+ *
181
+ * Caller (use-agent) is responsible for truncating `state.messages` to
182
+ * `entry.messageCount - 1` and rewriting the session jsonl — restore
183
+ * here only touches the working tree + checkpoint bookkeeping. */
184
+ export async function restoreCheckpoint(state, ckptId, cwd = process.cwd()) {
185
+ let raw;
186
+ try {
187
+ raw = await fs.readFile(manifestPath(state.sessionId, ckptId, cwd), 'utf-8');
188
+ }
189
+ catch {
190
+ return false;
191
+ }
192
+ let manifest;
193
+ try {
194
+ manifest = JSON.parse(raw);
195
+ }
196
+ catch {
197
+ return false;
198
+ }
199
+ const allFiles = new Set([...state.filesModified, ...Object.keys(manifest.files)]);
200
+ for (const absPath of allFiles) {
201
+ const entry = manifest.files[absPath];
202
+ if (!entry) {
203
+ // Created in a turn AFTER this checkpoint — delete to roll back.
204
+ await fs.unlink(absPath).catch(() => undefined);
205
+ continue;
206
+ }
207
+ if (entry.skip)
208
+ continue;
209
+ if (entry.absent) {
210
+ await fs.unlink(absPath).catch(() => undefined);
211
+ continue;
212
+ }
213
+ if (entry.hash) {
214
+ try {
215
+ const buf = await fs.readFile(blobPath(state.sessionId, entry.hash, cwd));
216
+ await fs.mkdir(path.dirname(absPath), { recursive: true });
217
+ await fs.writeFile(absPath, buf);
218
+ }
219
+ catch {
220
+ // Missing blob → can't restore this file. Don't fail the whole
221
+ // rewind: a single bad file is better than leaving the rest in a
222
+ // half-restored state.
223
+ }
224
+ }
225
+ }
226
+ // Rebuild filesModified from the manifest so subsequent checkpoints cover
227
+ // the right set. Includes absent/skip entries: those files have been
228
+ // touched by the agent historically and should remain in scope.
229
+ state.filesModified.clear();
230
+ for (const absPath of Object.keys(manifest.files)) {
231
+ state.filesModified.add(absPath);
232
+ }
233
+ // Drop checkpoints AFTER the restored one (keep the target — the user is
234
+ // now "at" that point and can re-rewind to it).
235
+ const cutoffIndex = state.checkpoints.findIndex((c) => c.ckptId === ckptId);
236
+ if (cutoffIndex >= 0) {
237
+ const dropped = state.checkpoints.splice(cutoffIndex + 1);
238
+ for (const d of dropped) {
239
+ void fs.unlink(manifestPath(state.sessionId, d.ckptId, cwd)).catch(() => undefined);
240
+ }
241
+ }
242
+ await garbageCollectBlobs(state, cwd).catch(() => undefined);
243
+ return true;
244
+ }
245
+ /** Sweep blobs/ and unlink any blob not referenced by a remaining manifest.
246
+ * Cheap: O(remaining checkpoints * files per manifest) reads + one readdir.
247
+ * Runs after eviction and after restore — the only paths that orphan blobs. */
248
+ async function garbageCollectBlobs(state, cwd) {
249
+ const referenced = new Set();
250
+ for (const ckpt of state.checkpoints) {
251
+ try {
252
+ const raw = await fs.readFile(manifestPath(state.sessionId, ckpt.ckptId, cwd), 'utf-8');
253
+ const m = JSON.parse(raw);
254
+ for (const entry of Object.values(m.files)) {
255
+ if (entry.hash)
256
+ referenced.add(entry.hash);
257
+ }
258
+ }
259
+ catch {
260
+ // Manifest gone or unreadable — skip; its blobs become candidates for
261
+ // collection along with the rest.
262
+ }
263
+ }
264
+ let names;
265
+ try {
266
+ names = await fs.readdir(blobsDir(state.sessionId, cwd));
267
+ }
268
+ catch {
269
+ return;
270
+ }
271
+ for (const name of names) {
272
+ if (!referenced.has(name)) {
273
+ await fs.unlink(blobPath(state.sessionId, name, cwd)).catch(() => undefined);
274
+ }
275
+ }
276
+ }
277
+ //# sourceMappingURL=snapshot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../src/agent/snapshot.ts"],"names":[],"mappings":"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"}
@@ -35,7 +35,7 @@ const FINAL_MESSAGE_CONTRACT_HEADER = "CRITICAL — your final message is ALL th
35
35
  export const builtInAgents = [
36
36
  {
37
37
  name: 'explore',
38
- description: 'Read-only codebase exploration. Use for "where is X defined", "find all callers of Y", or any pure-read research question.',
38
+ description: 'Read-only codebase exploration. Use when broad, multi-directory search is needed (4+ searches). For targeted lookups ("where is X", "callers of Y"), prefer grep directly it\'s faster.',
39
39
  prompt: `You are a read-only codebase explorer. Your job is to find information, trace code paths, and report findings clearly.
40
40
 
41
41
  Guidelines:
@@ -1 +1 @@
1
- {"version":3,"file":"built-in.js","sourceRoot":"","sources":["../../../src/agent/sub-agents/built-in.ts"],"names":[],"mappings":"AAGA,MAAM,mBAAmB,GAAG;IAC1B,KAAK;IACL,MAAM;IACN,OAAO;IACP,MAAM;IACN,KAAK;IACL,KAAK;IACL,OAAO;IACP,MAAM;IACN,YAAY;IACZ,UAAU;IACV,WAAW;IACX,YAAY;IACZ,WAAW;IACX,iBAAiB;IACjB,eAAe;IACf,eAAe;IACf,GAAG;IACH,IAAI;IACJ,MAAM;IACN,OAAO;IACP,OAAO;IACP,OAAO;IACP,aAAa;IACb,cAAc;IACd,cAAc;IACd,WAAW;IACX,YAAY;CACb,CAAA;AAED,0EAA0E;AAC1E,kEAAkE;AAClE,2EAA2E;AAC3E,oEAAoE;AACpE,MAAM,6BAA6B,GACjC,4GAA4G,CAAA;AAE9G,MAAM,CAAC,MAAM,aAAa,GAAyB;IACjD;QACE,IAAI,EAAE,SAAS;QACf,WAAW,EACT,4HAA4H;QAC9H,MAAM,EAAE;;;;;;;;EAQV,6BAA6B;;;;;kGAKmE;QAC9F,KAAK,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC;QACvD,iBAAiB,EAAE,mBAAmB;QACtC,QAAQ,EAAE,EAAE;QACZ,MAAM,EAAE,UAAU;KACnB;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,WAAW,EACT,8GAA8G;QAChH,MAAM,EAAE;;;;;;;;;;EAUV,6BAA6B;;;+FAGgE;QAC3F,KAAK,EAAE,CAAC,GAAG,CAAC;QACZ,QAAQ,EAAE,EAAE;QACZ,MAAM,EAAE,UAAU;KACnB;IACD;QACE,IAAI,EAAE,MAAM;QACZ,WAAW,EACT,4GAA4G;QAC9G,MAAM,EAAE;;;;;;;;;;;;;6EAaiE;QACzE,KAAK,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC;QAC9C,QAAQ,EAAE,EAAE;QACZ,MAAM,EAAE,UAAU;KACnB;IACD;QACE,IAAI,EAAE,eAAe;QACrB,WAAW,EACT,mHAAmH;QACrH,MAAM,EAAE;;;;;;;;;;;;;;0FAc8E;QACtF,KAAK,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC;QACvD,iBAAiB,EAAE,mBAAmB;QACtC,QAAQ,EAAE,EAAE;QACZ,MAAM,EAAE,UAAU;KACnB;CACF,CAAA"}
1
+ {"version":3,"file":"built-in.js","sourceRoot":"","sources":["../../../src/agent/sub-agents/built-in.ts"],"names":[],"mappings":"AAGA,MAAM,mBAAmB,GAAG;IAC1B,KAAK;IACL,MAAM;IACN,OAAO;IACP,MAAM;IACN,KAAK;IACL,KAAK;IACL,OAAO;IACP,MAAM;IACN,YAAY;IACZ,UAAU;IACV,WAAW;IACX,YAAY;IACZ,WAAW;IACX,iBAAiB;IACjB,eAAe;IACf,eAAe;IACf,GAAG;IACH,IAAI;IACJ,MAAM;IACN,OAAO;IACP,OAAO;IACP,OAAO;IACP,aAAa;IACb,cAAc;IACd,cAAc;IACd,WAAW;IACX,YAAY;CACb,CAAA;AAED,0EAA0E;AAC1E,kEAAkE;AAClE,2EAA2E;AAC3E,oEAAoE;AACpE,MAAM,6BAA6B,GACjC,4GAA4G,CAAA;AAE9G,MAAM,CAAC,MAAM,aAAa,GAAyB;IACjD;QACE,IAAI,EAAE,SAAS;QACf,WAAW,EACT,2LAA2L;QAC7L,MAAM,EAAE;;;;;;;;EAQV,6BAA6B;;;;;kGAKmE;QAC9F,KAAK,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC;QACvD,iBAAiB,EAAE,mBAAmB;QACtC,QAAQ,EAAE,EAAE;QACZ,MAAM,EAAE,UAAU;KACnB;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,WAAW,EACT,8GAA8G;QAChH,MAAM,EAAE;;;;;;;;;;EAUV,6BAA6B;;;+FAGgE;QAC3F,KAAK,EAAE,CAAC,GAAG,CAAC;QACZ,QAAQ,EAAE,EAAE;QACZ,MAAM,EAAE,UAAU;KACnB;IACD;QACE,IAAI,EAAE,MAAM;QACZ,WAAW,EACT,4GAA4G;QAC9G,MAAM,EAAE;;;;;;;;;;;;;6EAaiE;QACzE,KAAK,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC;QAC9C,QAAQ,EAAE,EAAE;QACZ,MAAM,EAAE,UAAU;KACnB;IACD;QACE,IAAI,EAAE,eAAe;QACrB,WAAW,EACT,mHAAmH;QACrH,MAAM,EAAE;;;;;;;;;;;;;;0FAc8E;QACtF,KAAK,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC;QACvD,iBAAiB,EAAE,mBAAmB;QACtC,QAAQ,EAAE,EAAE;QACZ,MAAM,EAAE,UAAU;KACnB;CACF,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"system-prompt.d.ts","sourceRoot":"","sources":["../../src/agent/system-prompt.ts"],"names":[],"mappings":"AAoMA;;gFAEgF;AAChF,wBAAgB,yBAAyB,CAAC,OAAO,EAAE;IACjD,WAAW,EAAE,MAAM,CAAA;IACnB,gBAAgB,EAAE,MAAM,CAAA;IACxB,SAAS,EAAE,OAAO,CAAA;CACnB,GAAG,MAAM,CAuBT;AAED;;;mBAGmB;AACnB,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;CACpB;AAsED,sFAAsF;AACtF,wBAAgB,iBAAiB,CAAC,OAAO,CAAC,EAAE;IAC1C,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;4CAEwC;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;kDAC8C;IAC9C,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;;2BAGuB;IACvB,QAAQ,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAA;IACzC;;gFAE4E;IAC5E,MAAM,CAAC,EAAE,SAAS;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAC1D,GAAG,MAAM,CAoBT"}
1
+ {"version":3,"file":"system-prompt.d.ts","sourceRoot":"","sources":["../../src/agent/system-prompt.ts"],"names":[],"mappings":"AA6MA;;gFAEgF;AAChF,wBAAgB,yBAAyB,CAAC,OAAO,EAAE;IACjD,WAAW,EAAE,MAAM,CAAA;IACnB,gBAAgB,EAAE,MAAM,CAAA;IACxB,SAAS,EAAE,OAAO,CAAA;CACnB,GAAG,MAAM,CAuBT;AAED;;;mBAGmB;AACnB,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;CACpB;AAsED,sFAAsF;AACtF,wBAAgB,iBAAiB,CAAC,OAAO,CAAC,EAAE;IAC1C,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;4CAEwC;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;kDAC8C;IAC9C,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;;2BAGuB;IACvB,QAAQ,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAA;IACzC;;gFAE4E;IAC5E,MAAM,CAAC,EAAE,SAAS;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAC1D,GAAG,MAAM,CAoBT"}
@@ -25,20 +25,26 @@ You have access to these tools:
25
25
  - task: Delegate a task to a specialized sub-agent (explore, plan, review, general-purpose){mcpCapabilities}{skillCapabilities}
26
26
 
27
27
  ## Sub-agent Delegation
28
- Use the task tool to delegate research, exploration, planning, or review tasks to a specialized sub-agent. Sub-agents run in isolated context — they don't see your conversation history and their intermediate tool calls never pollute your context window. Only the final conclusion comes back.
28
+ Use the task tool to delegate complex tasks to a specialized sub-agent. Sub-agents run in isolated context — they don't see your conversation history and their intermediate tool calls never pollute your context window. Only the final conclusion comes back.
29
+
30
+ Sub-agent invocation has significant overhead (fresh context window, separate prompt cache, extra system prompt tokens). Always prefer direct tool use when practical — a task completable with a few direct tool calls is always faster and cheaper than delegating.
29
31
 
30
32
  When to delegate:
31
- - Open-ended research or exploration that needs many reads/greps
32
- - Code review of pending changes
33
- - Implementation planning that requires reading many files
34
- - Any multi-step investigation where you only need the conclusion, not the raw tool output
33
+ - Broad codebase exploration that clearly requires more than 3-4 searches across many directories
34
+ - Code review of pending changes (dedicated reviewer with structured output)
35
+ - Implementation planning that requires reading 5+ files to form a plan
36
+ - Multi-step investigation where you only need the conclusion, not the raw tool output
35
37
 
36
38
  When NOT to delegate:
37
- - Reading a specific fileuse readFile directly
38
- - Searching for a known symbol — use grep directly
39
+ - Tasks completable in 3 or fewer tool calls just do them directly
40
+ - Reading 1-3 specific files — use readFile directly
41
+ - Searching for a known symbol or pattern — use grep directly
42
+ - Questions answerable from files you've already read in this conversation
39
43
  - Simple single-step tasks you can do faster yourself
40
44
  - Tasks where your immediate next step is blocked on the raw output
41
45
 
46
+ Try direct tools first. Only escalate to a sub-agent when a simple, directed search proves insufficient or when the task will clearly require extensive multi-file exploration.
47
+
42
48
  Your prompt to the sub-agent must be self-contained: include file paths, function names, what you've already learned, and what you need back. Terse prompts produce shallow results.
43
49
 
44
50
  IMPORTANT — trust sub-agent results. When a sub-agent returns findings (file contents, code snippets, architecture descriptions), do NOT re-read the same files yourself. The sub-agent has already done that work. If the result is missing specific details, ask a follow-up sub-agent with a targeted prompt rather than duplicating the exploration manually.
@@ -72,7 +78,7 @@ Break down and manage your work with the todoWrite tool. The user sees a live ch
72
78
  ### Command Execution
73
79
  - Generate commands compatible with the current shell ({shell})
74
80
  - Use platform-appropriate path separators and syntax
75
- - Do NOT execute destructive commands (rm -rf, format, drop table) unless explicitly asked
81
+ - For destructive commands (rm -rf, format, drop table), proceed when the user asks — the permission system will show a [dangerous] warning and require confirmation
76
82
  - Prefer dedicated tools over shell commands: use glob instead of find/ls, grep instead of grep/rg, readFile instead of cat
77
83
 
78
84
  ### Interaction
@@ -81,6 +87,9 @@ Break down and manage your work with the todoWrite tool. The user sees a live ch
81
87
  - For research, summarization, or explanation tasks (e.g. summarizing a fetched article, explaining a codebase, answering "what is X"): be thorough — preserve key points, concrete examples, and structure; don't over-compress
82
88
  - Use markdown formatting with language-tagged code blocks
83
89
 
90
+ ### Truncated Tool Results
91
+ When you see a tool result starting with [Truncated:], the original output was removed to save context. Do NOT rely on partial information or guess the full content — re-read the file or re-run the search if you need the actual data.
92
+
84
93
  ### Security
85
94
  - NEVER output API keys, passwords, or secrets in responses
86
95
  - NEVER generate code with known security vulnerabilities (injection, XSS, etc.)
@@ -1 +1 @@
1
- {"version":3,"file":"system-prompt.js","sourceRoot":"","sources":["../../src/agent/system-prompt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"system-prompt.js","sourceRoot":"","sources":["../../src/agent/system-prompt.ts"],"names":[],"mappings":"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"}