@felan-ai/felan 0.21.16 → 0.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/README.md +4 -0
  2. package/dist/dependencies.js +1 -1
  3. package/dist/dependencies.js.map +1 -1
  4. package/dist/extensions.d.ts +1 -1
  5. package/dist/extensions.d.ts.map +1 -1
  6. package/dist/extensions.js +2 -2
  7. package/dist/extensions.js.map +1 -1
  8. package/dist/herdr.d.ts +22 -0
  9. package/dist/herdr.d.ts.map +1 -0
  10. package/dist/herdr.js +208 -0
  11. package/dist/herdr.js.map +1 -0
  12. package/dist/insights.d.ts +1 -1
  13. package/dist/insights.d.ts.map +1 -1
  14. package/dist/insights.js +11 -8
  15. package/dist/insights.js.map +1 -1
  16. package/dist/memory/control.d.ts +1 -1
  17. package/dist/memory/control.d.ts.map +1 -1
  18. package/dist/memory/control.js +90 -34
  19. package/dist/memory/control.js.map +1 -1
  20. package/dist/memory/coordinator.d.ts +13 -2
  21. package/dist/memory/coordinator.d.ts.map +1 -1
  22. package/dist/memory/coordinator.js +416 -67
  23. package/dist/memory/coordinator.js.map +1 -1
  24. package/dist/memory/dreamer.d.ts +7 -1
  25. package/dist/memory/dreamer.d.ts.map +1 -1
  26. package/dist/memory/dreamer.js +145 -59
  27. package/dist/memory/dreamer.js.map +1 -1
  28. package/dist/memory/history-view.d.ts +26 -0
  29. package/dist/memory/history-view.d.ts.map +1 -0
  30. package/dist/memory/history-view.js +192 -0
  31. package/dist/memory/history-view.js.map +1 -0
  32. package/dist/memory/history.d.ts +33 -0
  33. package/dist/memory/history.d.ts.map +1 -0
  34. package/dist/memory/history.js +314 -0
  35. package/dist/memory/history.js.map +1 -0
  36. package/dist/memory/run-retention.d.ts +12 -0
  37. package/dist/memory/run-retention.d.ts.map +1 -0
  38. package/dist/memory/run-retention.js +294 -0
  39. package/dist/memory/run-retention.js.map +1 -0
  40. package/dist/memory/run.d.ts +67 -0
  41. package/dist/memory/run.d.ts.map +1 -0
  42. package/dist/memory/run.js +417 -0
  43. package/dist/memory/run.js.map +1 -0
  44. package/dist/memory/store.d.ts +67 -3
  45. package/dist/memory/store.d.ts.map +1 -1
  46. package/dist/memory/store.js +517 -110
  47. package/dist/memory/store.js.map +1 -1
  48. package/dist/resume.d.ts.map +1 -1
  49. package/dist/resume.js +12 -7
  50. package/dist/resume.js.map +1 -1
  51. package/dist/runtime.d.ts +1 -0
  52. package/dist/runtime.d.ts.map +1 -1
  53. package/dist/runtime.js +27 -18
  54. package/dist/runtime.js.map +1 -1
  55. package/dist/session-picker.d.ts +8 -1
  56. package/dist/session-picker.d.ts.map +1 -1
  57. package/dist/session-picker.js +7 -4
  58. package/dist/session-picker.js.map +1 -1
  59. package/dist/settings.d.ts +0 -3
  60. package/dist/settings.d.ts.map +1 -1
  61. package/dist/settings.js +0 -22
  62. package/dist/settings.js.map +1 -1
  63. package/dist/subagents/agent-transcript.d.ts +4 -1
  64. package/dist/subagents/agent-transcript.d.ts.map +1 -1
  65. package/dist/subagents/agent-transcript.js +16 -4
  66. package/dist/subagents/agent-transcript.js.map +1 -1
  67. package/package.json +24 -23
@@ -0,0 +1,417 @@
1
+ import { randomUUID } from 'node:crypto';
2
+ import { constants } from 'node:fs';
3
+ import { chmod, lstat, mkdir, open, readdir, rename, rm, writeFile } from 'node:fs/promises';
4
+ import { basename, join } from 'node:path';
5
+ import { SessionManager } from '@felan-ai/agent-core';
6
+ import { pruneMemoryRuns } from './run-retention.js';
7
+ export const MEMORY_RUN_ENTRY = 'felan-memory-run';
8
+ export class LocalMemoryRun {
9
+ options;
10
+ directory;
11
+ workspace;
12
+ sessionManager;
13
+ #metadata;
14
+ constructor(options, sessionManager, metadata) {
15
+ this.options = options;
16
+ this.sessionManager = sessionManager;
17
+ this.#metadata = metadata;
18
+ this.directory = join(options.projectDirectory, 'runs', metadata.sessionId);
19
+ this.workspace = join(this.directory, 'workspace');
20
+ }
21
+ static async reconcile(options, outcome) {
22
+ if (!validRunId(outcome.runId))
23
+ throw new Error('Invalid memory run identity');
24
+ const metadata = await readRetainedMetadata(options, outcome.runId);
25
+ if (!metadata)
26
+ return;
27
+ if (metadata.projectKey !== options.projectKey)
28
+ throw new Error('Retained memory identity does not match the project');
29
+ if (metadata.status !== 'started' && metadata.status !== 'worker_completed')
30
+ return;
31
+ const status = outcome.status === 'success' ? 'completed'
32
+ : outcome.status === 'cancelled' ? 'cancelled' : 'failed';
33
+ await writeRetainedMetadata(options, {
34
+ ...metadata, status, finishedAt: outcome.at,
35
+ ...(status === 'failed' ? { error: 'The memory attempt failed before diagnostics were finalized' } : {}),
36
+ });
37
+ await removeTerminalWorkspace(options.projectDirectory, outcome.runId);
38
+ await pruneMemoryRuns(options);
39
+ }
40
+ static async reconcileAbandoned(options, activeRunIds, now = Date.now()) {
41
+ const runsDirectory = join(options.projectDirectory, 'runs');
42
+ let entries;
43
+ try {
44
+ const root = await lstat(runsDirectory);
45
+ if (!root.isDirectory() || root.isSymbolicLink())
46
+ throw new Error('Invalid retained memory directory');
47
+ entries = await readdir(runsDirectory);
48
+ }
49
+ catch (error) {
50
+ if (isMissingFile(error))
51
+ return;
52
+ throw error;
53
+ }
54
+ const active = new Set(activeRunIds);
55
+ for (const runId of entries) {
56
+ if (!validRunId(runId))
57
+ throw new Error('Invalid retained memory run entry');
58
+ const directory = join(runsDirectory, runId);
59
+ const stat = await lstat(directory);
60
+ if (!stat.isDirectory() || stat.isSymbolicLink())
61
+ throw new Error('Invalid retained memory run directory');
62
+ const metadata = await readRetainedMetadata(options, runId);
63
+ if (!metadata)
64
+ throw new Error('Retained memory metadata is missing');
65
+ if (metadata.projectKey !== options.projectKey || active.has(runId)
66
+ || (metadata.status !== 'started' && metadata.status !== 'worker_completed'))
67
+ continue;
68
+ await writeRetainedMetadata(options, {
69
+ ...metadata,
70
+ status: 'cancelled',
71
+ finishedAt: new Date(now).toISOString(),
72
+ error: 'The previous memory worker ended before completion was confirmed; evidence remains pending',
73
+ });
74
+ await removeTerminalWorkspace(options.projectDirectory, runId);
75
+ }
76
+ await pruneMemoryRuns(options);
77
+ }
78
+ static async create(options) {
79
+ await privateDirectory(options.projectDirectory);
80
+ await privateDirectory(join(options.projectDirectory, 'runs'));
81
+ await privateDirectory(options.sessionDirectory);
82
+ await pruneMemoryRuns(options);
83
+ const created = SessionManager.create(options.projectRoot, options.sessionDirectory);
84
+ const sessionFile = created.getSessionFile();
85
+ if (!sessionFile)
86
+ throw new Error('Memory session file could not be created');
87
+ await writeFile(sessionFile, `${JSON.stringify(created.getHeader())}\n`, {
88
+ encoding: 'utf8', mode: 0o600, flag: 'wx',
89
+ });
90
+ const sessionManager = SessionManager.open(sessionFile, options.sessionDirectory, options.projectRoot);
91
+ const metadata = {
92
+ version: 1,
93
+ kind: 'memory',
94
+ sessionId: sessionManager.getSessionId(),
95
+ sessionFile: basename(sessionFile),
96
+ projectKey: options.projectKey,
97
+ projectRoot: options.projectRoot,
98
+ startedAt: new Date().toISOString(),
99
+ status: 'started',
100
+ phase: 'materialize',
101
+ checkpoints: options.checkpoints,
102
+ baseFingerprint: options.baseFingerprint,
103
+ };
104
+ const run = new LocalMemoryRun(options, sessionManager, metadata);
105
+ await privateDirectory(run.directory);
106
+ await privateDirectory(run.workspace);
107
+ sessionManager.appendSessionInfo(`Memory: ${basename(options.projectRoot)}`);
108
+ await run.record({});
109
+ return run;
110
+ }
111
+ get metadata() { return this.#metadata; }
112
+ async record(update) {
113
+ const next = { ...this.#metadata, ...update };
114
+ this.sessionManager.appendCustomEntry(MEMORY_RUN_ENTRY, next);
115
+ const path = join(this.directory, 'manifest.json');
116
+ const temporary = `${path}.${randomUUID()}.tmp`;
117
+ try {
118
+ await writeFile(temporary, `${JSON.stringify(next, null, 2)}\n`, { encoding: 'utf8', mode: 0o600, flag: 'wx' });
119
+ await rename(temporary, path);
120
+ this.#metadata = next;
121
+ }
122
+ finally {
123
+ await rm(temporary, { force: true });
124
+ }
125
+ }
126
+ async model(model, thinking) {
127
+ await this.record({
128
+ phase: 'model',
129
+ ...(model.provider && model.id ? {
130
+ model: { provider: model.provider, id: model.id, ...(thinking ? { thinking } : {}) },
131
+ } : {}),
132
+ });
133
+ }
134
+ async finish(status, error) {
135
+ await this.record({
136
+ status,
137
+ finishedAt: new Date().toISOString(),
138
+ ...(error === undefined ? {} : { error: sanitizeMemoryDiagnostic(error) }),
139
+ });
140
+ await rm(this.workspace, { recursive: true, force: true });
141
+ await this.enforceRetention();
142
+ }
143
+ async enforceRetention() {
144
+ await pruneMemoryRuns({
145
+ ...this.options,
146
+ protectedRunIds: [...(this.options.protectedRunIds ?? []), this.metadata.sessionId],
147
+ });
148
+ }
149
+ }
150
+ const MEMORY_RUN_METADATA_BYTES = 64 * 1_024;
151
+ const MEMORY_RUN_RECONCILE_SESSION_BYTES = 16 * 1_024 * 1_024;
152
+ const MEMORY_RUN_STATUSES = new Set([
153
+ 'started', 'worker_completed', 'completed', 'failed', 'cancelled', 'blocked', 'interrupted',
154
+ ]);
155
+ const MEMORY_RUN_PHASES = new Set(['materialize', 'model', 'validate', 'publish']);
156
+ async function readRetainedMetadata(options, runId) {
157
+ const path = join(options.projectDirectory, 'runs', runId, 'manifest.json');
158
+ let file;
159
+ try {
160
+ for (const directory of [join(options.projectDirectory, 'runs'), join(options.projectDirectory, 'runs', runId)]) {
161
+ const stat = await lstat(directory);
162
+ if (!stat.isDirectory() || stat.isSymbolicLink())
163
+ throw new Error('Invalid retained memory directory');
164
+ }
165
+ const stat = await lstat(path);
166
+ if (!stat.isFile() || stat.isSymbolicLink() || stat.size > MEMORY_RUN_METADATA_BYTES) {
167
+ throw new Error('Invalid retained memory metadata');
168
+ }
169
+ file = await open(path, constants.O_RDONLY | (constants.O_NOFOLLOW ?? 0) | (constants.O_NONBLOCK ?? 0));
170
+ }
171
+ catch (error) {
172
+ if (isMissingFile(error))
173
+ return undefined;
174
+ throw error;
175
+ }
176
+ try {
177
+ const stat = await file.stat();
178
+ if (!stat.isFile() || stat.size > MEMORY_RUN_METADATA_BYTES)
179
+ throw new Error('Invalid retained memory metadata');
180
+ const bytes = Buffer.alloc(MEMORY_RUN_METADATA_BYTES + 1);
181
+ const { bytesRead } = await file.read(bytes, 0, bytes.length, 0);
182
+ if (bytesRead > MEMORY_RUN_METADATA_BYTES)
183
+ throw new Error('Invalid retained memory metadata');
184
+ let value;
185
+ try {
186
+ value = JSON.parse(bytes.subarray(0, bytesRead).toString('utf8'));
187
+ }
188
+ catch {
189
+ throw new Error('Invalid retained memory metadata');
190
+ }
191
+ if (!isMemoryRunMetadata(value, runId))
192
+ throw new Error('Invalid retained memory metadata');
193
+ return value;
194
+ }
195
+ finally {
196
+ await file.close();
197
+ }
198
+ }
199
+ async function writeRetainedMetadata(options, metadata) {
200
+ if (!isMemoryRunMetadata(metadata, metadata.sessionId))
201
+ throw new Error('Invalid retained memory metadata');
202
+ const directory = join(options.projectDirectory, 'runs', metadata.sessionId);
203
+ const stat = await lstat(directory);
204
+ if (!stat.isDirectory() || stat.isSymbolicLink())
205
+ throw new Error('Invalid retained memory run directory');
206
+ const path = join(directory, 'manifest.json');
207
+ await appendReconciledSessionMetadata(options.sessionDirectory, metadata);
208
+ const temporary = `${path}.${randomUUID()}.tmp`;
209
+ try {
210
+ const text = `${JSON.stringify(metadata, null, 2)}\n`;
211
+ if (Buffer.byteLength(text, 'utf8') > MEMORY_RUN_METADATA_BYTES)
212
+ throw new Error('Invalid retained memory metadata');
213
+ await writeFile(temporary, text, { encoding: 'utf8', mode: 0o600, flag: 'wx' });
214
+ await rename(temporary, path);
215
+ }
216
+ finally {
217
+ await rm(temporary, { force: true });
218
+ }
219
+ }
220
+ async function removeTerminalWorkspace(projectDirectory, runId) {
221
+ const path = join(projectDirectory, 'runs', runId, 'workspace');
222
+ let info;
223
+ try {
224
+ info = await lstat(path);
225
+ }
226
+ catch (error) {
227
+ if (isMissingFile(error))
228
+ return;
229
+ throw error;
230
+ }
231
+ if (info.isSymbolicLink()) {
232
+ await rm(path, { force: true });
233
+ return;
234
+ }
235
+ if (!info.isDirectory())
236
+ throw new Error('Invalid retained memory workspace');
237
+ await rm(path, { recursive: true, force: true });
238
+ }
239
+ async function appendReconciledSessionMetadata(sessionDirectory, metadata) {
240
+ const directory = await lstat(sessionDirectory);
241
+ if (!directory.isDirectory() || directory.isSymbolicLink())
242
+ throw new Error('Invalid retained memory session directory');
243
+ const sessionPath = join(sessionDirectory, metadata.sessionFile);
244
+ const inspected = await inspectRetainedSession(sessionPath, metadata);
245
+ const latest = inspected.latest;
246
+ if (latest?.status === metadata.status && latest.finishedAt === metadata.finishedAt)
247
+ return;
248
+ const file = await open(sessionPath, constants.O_WRONLY | constants.O_APPEND | (constants.O_NOFOLLOW ?? 0) | (constants.O_NONBLOCK ?? 0));
249
+ try {
250
+ const stat = await file.stat();
251
+ if (!stat.isFile() || !sameFile(stat, inspected.stat) || stat.size !== inspected.stat.size) {
252
+ throw new Error('Retained memory session changed during reconciliation');
253
+ }
254
+ await file.write(`${JSON.stringify({
255
+ type: 'custom',
256
+ customType: MEMORY_RUN_ENTRY,
257
+ data: metadata,
258
+ id: randomUUID(),
259
+ parentId: inspected.lastEntryId,
260
+ timestamp: new Date().toISOString(),
261
+ })}\n`);
262
+ }
263
+ finally {
264
+ await file.close();
265
+ }
266
+ }
267
+ async function inspectRetainedSession(sessionPath, metadata) {
268
+ const initial = await lstat(sessionPath);
269
+ if (!initial.isFile() || initial.isSymbolicLink() || initial.size > MEMORY_RUN_RECONCILE_SESSION_BYTES) {
270
+ throw new Error('Invalid or oversized retained memory session file');
271
+ }
272
+ const file = await open(sessionPath, constants.O_RDONLY | (constants.O_NOFOLLOW ?? 0) | (constants.O_NONBLOCK ?? 0));
273
+ let text;
274
+ let opened;
275
+ try {
276
+ opened = await file.stat();
277
+ if (!opened.isFile() || !sameFile(initial, opened) || opened.size !== initial.size
278
+ || opened.size > MEMORY_RUN_RECONCILE_SESSION_BYTES) {
279
+ throw new Error('Retained memory session changed during reconciliation');
280
+ }
281
+ const bytes = Buffer.alloc(opened.size);
282
+ let length = 0;
283
+ while (length < bytes.length) {
284
+ const { bytesRead } = await file.read(bytes, length, bytes.length - length, length);
285
+ if (bytesRead === 0)
286
+ break;
287
+ length += bytesRead;
288
+ }
289
+ const current = await lstat(sessionPath);
290
+ if (length !== opened.size || !sameFile(opened, current) || current.size !== opened.size
291
+ || current.mtimeMs !== opened.mtimeMs) {
292
+ throw new Error('Retained memory session changed during reconciliation');
293
+ }
294
+ text = bytes.toString('utf8');
295
+ }
296
+ finally {
297
+ await file.close();
298
+ }
299
+ if (!text.endsWith('\n'))
300
+ throw new Error('Retained memory session is incomplete');
301
+ const lines = text.slice(0, -1).split('\n');
302
+ const header = parseRecord(lines.shift());
303
+ if (header?.type !== 'session' || header.id !== metadata.sessionId || header.cwd !== metadata.projectRoot) {
304
+ throw new Error('Retained memory session identity does not match its metadata');
305
+ }
306
+ const ids = new Set();
307
+ let ownershipProven = false;
308
+ let latest;
309
+ let lastEntryId = null;
310
+ for (const line of lines) {
311
+ const entry = parseRecord(line);
312
+ if (!entry || typeof entry.type !== 'string' || typeof entry.id !== 'string' || ids.has(entry.id)
313
+ || (entry.parentId !== null && (typeof entry.parentId !== 'string' || !ids.has(entry.parentId)))) {
314
+ throw new Error('Invalid retained memory session entries');
315
+ }
316
+ ids.add(entry.id);
317
+ lastEntryId = entry.id;
318
+ if (!ownershipProven) {
319
+ if (entry.type === 'custom' && entry.customType === MEMORY_RUN_ENTRY) {
320
+ if (!matchingMemoryMarker(entry.data, metadata))
321
+ throw new Error('Retained memory session ownership is unverified');
322
+ ownershipProven = true;
323
+ }
324
+ else if (!['session_info', 'model_change', 'thinking_level_change'].includes(entry.type)) {
325
+ throw new Error('Retained memory session ownership is unverified');
326
+ }
327
+ }
328
+ if (entry.type === 'custom' && entry.customType === MEMORY_RUN_ENTRY
329
+ && matchingMemoryMarker(entry.data, metadata))
330
+ latest = entry.data;
331
+ }
332
+ if (!ownershipProven)
333
+ throw new Error('Retained memory session ownership is unverified');
334
+ return { stat: opened, lastEntryId, ...(latest ? { latest } : {}) };
335
+ }
336
+ function matchingMemoryMarker(value, metadata) {
337
+ return isMemoryRunMetadata(value, metadata.sessionId)
338
+ && value.sessionFile === metadata.sessionFile
339
+ && value.projectKey === metadata.projectKey
340
+ && value.projectRoot === metadata.projectRoot;
341
+ }
342
+ function parseRecord(value) {
343
+ if (!value)
344
+ return undefined;
345
+ try {
346
+ const parsed = JSON.parse(value);
347
+ return parsed !== null && typeof parsed === 'object' && !Array.isArray(parsed)
348
+ ? parsed
349
+ : undefined;
350
+ }
351
+ catch {
352
+ return undefined;
353
+ }
354
+ }
355
+ function sameFile(left, right) {
356
+ return left.dev === right.dev && left.ino === right.ino;
357
+ }
358
+ function isMemoryRunMetadata(value, runId) {
359
+ if (!value || typeof value !== 'object')
360
+ return false;
361
+ const data = value;
362
+ return data.version === 1 && data.kind === 'memory' && data.sessionId === runId
363
+ && validRunId(runId) && typeof data.sessionFile === 'string' && basename(data.sessionFile) === data.sessionFile
364
+ && typeof data.projectKey === 'string' && typeof data.projectRoot === 'string'
365
+ && typeof data.startedAt === 'string' && Number.isFinite(Date.parse(data.startedAt))
366
+ && typeof data.status === 'string' && MEMORY_RUN_STATUSES.has(data.status)
367
+ && typeof data.phase === 'string' && MEMORY_RUN_PHASES.has(data.phase)
368
+ && typeof data.baseFingerprint === 'string' && Array.isArray(data.checkpoints)
369
+ && data.checkpoints.every((checkpoint) => checkpoint && typeof checkpoint === 'object'
370
+ && typeof checkpoint.sessionId === 'string' && typeof checkpoint.sessionFile === 'string'
371
+ && (checkpoint.leafId === null || typeof checkpoint.leafId === 'string')
372
+ && typeof checkpoint.transcriptDigest === 'string')
373
+ && (data.finishedAt === undefined || (typeof data.finishedAt === 'string' && Number.isFinite(Date.parse(data.finishedAt))))
374
+ && (data.error === undefined || typeof data.error === 'string');
375
+ }
376
+ function validRunId(value) {
377
+ return /^[a-zA-Z0-9_-]{1,128}$/u.test(value);
378
+ }
379
+ function isMissingFile(error) {
380
+ return error !== null && typeof error === 'object' && 'code' in error && error.code === 'ENOENT';
381
+ }
382
+ export function memoryRunUsage(entries) {
383
+ const result = {};
384
+ for (const entry of entries) {
385
+ const usage = entry.type === 'compaction' ? entry.usage
386
+ : entry.type === 'message' && entry.message.role === 'assistant' ? entry.message.usage : undefined;
387
+ if (!usage)
388
+ continue;
389
+ for (const key of ['input', 'output', 'cacheRead', 'cacheWrite', 'totalTokens']) {
390
+ const value = usage[key];
391
+ if (typeof value === 'number' && Number.isFinite(value) && value >= 0)
392
+ result[key] = (result[key] ?? 0) + value;
393
+ }
394
+ const cost = usage.cost?.total;
395
+ if (typeof cost === 'number' && Number.isFinite(cost) && cost >= 0)
396
+ result.costUsd = (result.costUsd ?? 0) + cost;
397
+ }
398
+ return Object.keys(result).length > 0 ? result : undefined;
399
+ }
400
+ export function sanitizeMemoryDiagnostic(error) {
401
+ const message = error instanceof Error ? error.message : String(error);
402
+ return message
403
+ .replace(/-----BEGIN [^-]*PRIVATE KEY-----[\s\S]*?-----END [^-]*PRIVATE KEY-----/gu, '[REDACTED_PRIVATE_KEY]')
404
+ .replace(/\b(?:sk-[A-Za-z0-9_-]{8,}|ghp_[A-Za-z0-9]{20,}|github_pat_[A-Za-z0-9_]{20,}|xox[baprs]-[A-Za-z0-9-]{12,})\b/gu, '[REDACTED_TOKEN]')
405
+ .replace(/(Bearer\s+)[A-Za-z0-9._~+/=-]+/giu, '$1[REDACTED_TOKEN]')
406
+ .replace(/(["']?(?:api[_-]?key|access[_-]?token|refresh[_-]?token|password|secret|authorization)["']?\s*[:=]\s*["']?)[^"'\s,}]+/giu, '$1[REDACTED_SECRET]')
407
+ .replace(/[\u0000-\u0008\u000b-\u001f\u007f]/gu, '')
408
+ .slice(0, 4_000);
409
+ }
410
+ async function privateDirectory(path) {
411
+ await mkdir(path, { recursive: true, mode: 0o700 });
412
+ const info = await lstat(path);
413
+ if (!info.isDirectory() || info.isSymbolicLink())
414
+ throw new Error('Memory diagnostic directory must be a regular directory');
415
+ await chmod(path, 0o700);
416
+ }
417
+ //# sourceMappingURL=run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/memory/run.ts"],"names":[],"mappings":"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"}
@@ -2,9 +2,12 @@ import { type MemoryArtifact, type MemorySnapshot, type SessionCheckpoint } from
2
2
  import type { LocalMemoryProject } from './project.js';
3
3
  import { type LocalMemoryLease } from './lease.js';
4
4
  declare const STATE_VERSION: 1;
5
+ export declare const MEMORY_ATTEMPT_TIMEOUT_MS: number;
6
+ export declare const MEMORY_RETRY_DELAYS_MS: readonly [60000, 300000];
5
7
  export interface StoredCheckpoint {
6
8
  readonly checkpoint: SessionCheckpoint;
7
9
  readonly recordedAt: string;
10
+ readonly acceptedUpdates?: number;
8
11
  }
9
12
  export interface ProcessedCheckpoint extends StoredCheckpoint {
10
13
  readonly processedAt: string;
@@ -23,8 +26,61 @@ export interface LocalMemoryProcessingSnapshot {
23
26
  readonly checkpoints: readonly StoredCheckpoint[];
24
27
  readonly state: LocalMemoryState;
25
28
  }
29
+ export interface LocalMemoryAttemptIdentity {
30
+ readonly runId: string;
31
+ readonly generation: number;
32
+ }
33
+ export interface LocalMemoryAttempt extends LocalMemoryAttemptIdentity {
34
+ readonly leaseToken: string;
35
+ readonly startedAt: string;
36
+ readonly deadlineAt: string;
37
+ readonly baseFingerprint: string;
38
+ readonly checkpoints: readonly StoredCheckpoint[];
39
+ readonly published?: {
40
+ readonly fingerprint: string;
41
+ readonly at: string;
42
+ };
43
+ }
44
+ export interface BeginLocalMemoryAttempt {
45
+ readonly runId: string;
46
+ readonly baseFingerprint: string;
47
+ readonly checkpoints: readonly StoredCheckpoint[];
48
+ readonly deadlineAt?: string;
49
+ readonly bypassRetryAt?: boolean;
50
+ }
51
+ export type LocalMemoryAttemptOutcome = {
52
+ readonly status: 'success';
53
+ } | {
54
+ readonly status: 'failure';
55
+ readonly reason: string;
56
+ } | {
57
+ readonly status: 'cancelled';
58
+ readonly reason?: string;
59
+ };
60
+ export interface LocalMemoryControl {
61
+ readonly version: 1;
62
+ readonly generation: number;
63
+ readonly consecutiveFailures: number;
64
+ readonly nextRetryAt?: string;
65
+ readonly autoDisabled?: {
66
+ readonly reason: string;
67
+ readonly runId: string;
68
+ readonly at: string;
69
+ };
70
+ readonly lastDisabledRunId?: string;
71
+ readonly activeAttempt?: LocalMemoryAttempt;
72
+ readonly lastOutcome?: LocalMemoryAttemptIdentity & {
73
+ readonly status: LocalMemoryAttemptOutcome['status'];
74
+ readonly at: string;
75
+ };
76
+ readonly updatedAt: string;
77
+ }
78
+ export declare class LocalMemoryControlError extends Error {
79
+ constructor(path: string);
80
+ }
26
81
  export interface LocalMemoryStoreOptions {
27
82
  readonly memoryPath?: string;
83
+ readonly retryDelaysMs?: readonly [number, number];
28
84
  }
29
85
  export declare class LocalMemoryStore {
30
86
  #private;
@@ -34,16 +90,24 @@ export declare class LocalMemoryStore {
34
90
  readonly currentDirectory: string;
35
91
  readonly stagingDirectory: string;
36
92
  readonly statePath: string;
93
+ readonly controlPath: string;
37
94
  readonly projectionName = ".memory";
38
95
  constructor(agentDir: string, project: LocalMemoryProject, options?: LocalMemoryStoreOptions);
39
- initialize(): Promise<void>;
96
+ initialize(now?: number): Promise<void>;
40
97
  readCurrent(): Promise<MemorySnapshot>;
41
98
  projectTo(sessionStorageRoot: string, snapshot?: MemorySnapshot): Promise<MemorySnapshot>;
42
99
  recordCheckpoint(checkpoint: SessionCheckpoint): Promise<boolean>;
43
100
  status(): Promise<LocalMemoryState>;
44
- processingSnapshot(maxSessions?: number): Promise<LocalMemoryProcessingSnapshot>;
101
+ pendingAcceptedUpdates(include?: (checkpoint: SessionCheckpoint) => boolean): Promise<number>;
102
+ readControl(): Promise<LocalMemoryControl>;
103
+ beginAttempt(lease: LocalMemoryLease, input: BeginLocalMemoryAttempt, now?: number): Promise<LocalMemoryAttempt | undefined>;
104
+ finishAttempt(lease: LocalMemoryLease | undefined, attempt: LocalMemoryAttemptIdentity, outcome: LocalMemoryAttemptOutcome, now?: number): Promise<LocalMemoryControl>;
105
+ resetProjectControl(now?: number, isLocallyEligible?: () => boolean): Promise<LocalMemoryControl>;
106
+ cancelActiveAttempt(now?: number): Promise<LocalMemoryControl>;
107
+ reconcileAbandonedAttempt(lease: LocalMemoryLease, now?: number): Promise<LocalMemoryControl>;
108
+ processingSnapshot(maxSessions?: number, include?: (checkpoint: SessionCheckpoint) => boolean): Promise<LocalMemoryProcessingSnapshot>;
45
109
  createStagingDirectory(): Promise<string>;
46
- commit(lease: LocalMemoryLease, baseFingerprint: string, artifact: MemoryArtifact, processed: readonly StoredCheckpoint[]): Promise<string>;
110
+ commit(lease: LocalMemoryLease, baseFingerprint: string, artifact: MemoryArtifact, processed: readonly StoredCheckpoint[], attempt?: LocalMemoryAttemptIdentity): Promise<string>;
47
111
  clearStaging(): Promise<void>;
48
112
  get memoryPath(): string;
49
113
  private readState;
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/memory/store.ts"],"names":[],"mappings":"AAGA,OAAO,EAOL,KAAK,cAAc,EAEnB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAEvD,OAAO,EAA2B,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAG5E,QAAA,MAAM,aAAa,EAAG,CAAU,CAAC;AAEjC,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC;IACvC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAC3D,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;CACpC;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,OAAO,aAAa,CAAC;IACvC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAC7D,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC,CAAC;IAClE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAClD,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC;CAClC;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,qBAAa,gBAAgB;;IASzB,QAAQ,CAAC,QAAQ,EAAE,MAAM;IACzB,QAAQ,CAAC,OAAO,EAAE,kBAAkB;IATtC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,cAAc,aAAa;gBAIzB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,kBAAkB,EACpC,OAAO,GAAE,uBAA4B;IASjC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA8B3B,WAAW,IAAI,OAAO,CAAC,cAAc,CAAC;IAOtC,SAAS,CACb,kBAAkB,EAAE,MAAM,EAC1B,QAAQ,CAAC,EAAE,cAAc,GACxB,OAAO,CAAC,cAAc,CAAC;IAQpB,gBAAgB,CAAC,UAAU,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC;IAoBjE,MAAM,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAInC,kBAAkB,CAAC,WAAW,SAAI,GAAG,OAAO,CAAC,6BAA6B,CAAC;IAY3E,sBAAsB,IAAI,OAAO,CAAC,MAAM,CAAC;IAOzC,MAAM,CACV,KAAK,EAAE,gBAAgB,EACvB,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,cAAc,EACxB,SAAS,EAAE,SAAS,gBAAgB,EAAE,GACrC,OAAO,CAAC,MAAM,CAAC;IAiEZ,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAKnC,IAAI,UAAU,IAAI,MAAM,CAEvB;YAEa,SAAS;CAKxB"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/memory/store.ts"],"names":[],"mappings":"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"}