@felan-ai/felan 0.12.8 → 0.12.9

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 (64) hide show
  1. package/NOTICE +4 -0
  2. package/README.md +79 -1
  3. package/dist/application.d.ts.map +1 -1
  4. package/dist/application.js +5 -1
  5. package/dist/application.js.map +1 -1
  6. package/dist/extensions.d.ts +9 -2
  7. package/dist/extensions.d.ts.map +1 -1
  8. package/dist/extensions.js +9 -1
  9. package/dist/extensions.js.map +1 -1
  10. package/dist/index.d.ts +4 -0
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +2 -0
  13. package/dist/index.js.map +1 -1
  14. package/dist/lock.d.ts +15 -0
  15. package/dist/lock.d.ts.map +1 -0
  16. package/dist/lock.js +169 -0
  17. package/dist/lock.js.map +1 -0
  18. package/dist/memory/control.d.ts +8 -0
  19. package/dist/memory/control.d.ts.map +1 -0
  20. package/dist/memory/control.js +106 -0
  21. package/dist/memory/control.js.map +1 -0
  22. package/dist/memory/coordinator.d.ts +38 -0
  23. package/dist/memory/coordinator.d.ts.map +1 -0
  24. package/dist/memory/coordinator.js +396 -0
  25. package/dist/memory/coordinator.js.map +1 -0
  26. package/dist/memory/dreamer.d.ts +41 -0
  27. package/dist/memory/dreamer.d.ts.map +1 -0
  28. package/dist/memory/dreamer.js +531 -0
  29. package/dist/memory/dreamer.js.map +1 -0
  30. package/dist/memory/lease.d.ts +13 -0
  31. package/dist/memory/lease.d.ts.map +1 -0
  32. package/dist/memory/lease.js +188 -0
  33. package/dist/memory/lease.js.map +1 -0
  34. package/dist/memory/project.d.ts +7 -0
  35. package/dist/memory/project.d.ts.map +1 -0
  36. package/dist/memory/project.js +41 -0
  37. package/dist/memory/project.js.map +1 -0
  38. package/dist/memory/store.d.ts +52 -0
  39. package/dist/memory/store.d.ts.map +1 -0
  40. package/dist/memory/store.js +344 -0
  41. package/dist/memory/store.js.map +1 -0
  42. package/dist/runtime.d.ts +5 -1
  43. package/dist/runtime.d.ts.map +1 -1
  44. package/dist/runtime.js +68 -10
  45. package/dist/runtime.js.map +1 -1
  46. package/dist/settings.d.ts +3 -0
  47. package/dist/settings.d.ts.map +1 -1
  48. package/dist/settings.js +61 -27
  49. package/dist/settings.js.map +1 -1
  50. package/dist/startup-header.d.ts +1 -0
  51. package/dist/startup-header.d.ts.map +1 -1
  52. package/dist/startup-header.js +40 -0
  53. package/dist/startup-header.js.map +1 -1
  54. package/dist/subagents/catalog.d.ts.map +1 -1
  55. package/dist/subagents/catalog.js +4 -2
  56. package/dist/subagents/catalog.js.map +1 -1
  57. package/dist/subagents/host.d.ts +5 -0
  58. package/dist/subagents/host.d.ts.map +1 -1
  59. package/dist/subagents/host.js +10 -7
  60. package/dist/subagents/host.js.map +1 -1
  61. package/dist/tool-activity/presentation.d.ts.map +1 -1
  62. package/dist/tool-activity/presentation.js +204 -3
  63. package/dist/tool-activity/presentation.js.map +1 -1
  64. package/package.json +8 -7
@@ -0,0 +1,38 @@
1
+ import { type MemoryHost, type MemorySnapshot, type MemoryStatus, type SessionCheckpoint } from '@felan-ai/ext-memory';
2
+ import { ModelRuntime, type Api, type Model } from '@felan-ai/agent-core';
3
+ import { type LocalMemoryLeaseOptions } from './lease.js';
4
+ import { type LocalMemoryDreamRunner } from './dreamer.js';
5
+ export interface LocalMemoryCoordinatorOptions {
6
+ readonly agentDir: string;
7
+ readonly modelRuntime: ModelRuntime;
8
+ readonly sessionDir?: string;
9
+ readonly enabled?: boolean;
10
+ readonly debounceMs?: number;
11
+ readonly batchSize?: number;
12
+ readonly maxTranscriptBytes?: number;
13
+ readonly recoveryStableMs?: number;
14
+ readonly recover?: boolean;
15
+ readonly dreamRunner?: LocalMemoryDreamRunner;
16
+ readonly selectedModel?: Model<Api>;
17
+ readonly leaseOptions?: LocalMemoryLeaseOptions;
18
+ }
19
+ export interface LocalMemorySessionHostOptions {
20
+ readonly cwd: string;
21
+ readonly sessionStorageRoot: string;
22
+ }
23
+ export declare class LocalMemoryCoordinator {
24
+ #private;
25
+ constructor(options: LocalMemoryCoordinatorOptions);
26
+ createSessionHost(options: LocalMemorySessionHostOptions): MemoryHost;
27
+ isEnabled(): boolean;
28
+ subscribeStatusChanges(listener: () => void): () => void;
29
+ setSelectedModel(model: Model<Api> | undefined): void;
30
+ setEnabled(enabled: boolean): void;
31
+ status(cwd: string): Promise<MemoryStatus>;
32
+ readCurrent(cwd: string, sessionStorageRoot: string): Promise<MemorySnapshot>;
33
+ recordCheckpoint(cwd: string, checkpoint: SessionCheckpoint): Promise<void>;
34
+ runNow(cwd: string): Promise<MemoryStatus>;
35
+ canonicalDirectory(cwd: string): Promise<string>;
36
+ dispose(): Promise<void>;
37
+ }
38
+ //# sourceMappingURL=coordinator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coordinator.d.ts","sourceRoot":"","sources":["../../src/memory/coordinator.ts"],"names":[],"mappings":"AAEA,OAAO,EAQL,KAAK,UAAU,EAEf,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,YAAY,EAGZ,KAAK,GAAG,EACR,KAAK,KAAK,EACX,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAGL,KAAK,uBAAuB,EAC7B,MAAM,YAAY,CAAC;AAEpB,OAAO,EAGL,KAAK,sBAAsB,EAC5B,MAAM,cAAc,CAAC;AA2BtB,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,WAAW,CAAC,EAAE,sBAAsB,CAAC;IAC9C,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IACpC,QAAQ,CAAC,YAAY,CAAC,EAAE,uBAAuB,CAAC;CACjD;AAED,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;CACrC;AAED,qBAAa,sBAAsB;;gBAUrB,OAAO,EAAE,6BAA6B;IAOlD,iBAAiB,CAAC,OAAO,EAAE,6BAA6B,GAAG,UAAU;IAIrE,SAAS,IAAI,OAAO;IAIpB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAMxD,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,GAAG,IAAI;IAIrD,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAiB5B,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IA2B1C,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAa7E,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAS3E,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAsB1C,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKhD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CA+M/B"}
@@ -0,0 +1,396 @@
1
+ import { join } from 'node:path';
2
+ import { mkdir, rm } from 'node:fs/promises';
3
+ import { createMemorySnapshot, createMemoryProjectionSnapshot, createSessionCheckpoint, extractSourceIds, hydrateMemoryDirectory, readMemoryDirectory, validateMemoryArtifact, } from '@felan-ai/ext-memory';
4
+ import { ModelRuntime, SessionManager, } from '@felan-ai/agent-core';
5
+ import { acquireLocalMemoryLease, } from './lease.js';
6
+ import { resolveLocalMemoryProject } from './project.js';
7
+ import { createDefaultLocalMemoryDreamRunner, materializeMemoryInput, } from './dreamer.js';
8
+ import { LocalMemoryStore, } from './store.js';
9
+ const MEMORY_INPUT_BLOCKED_MESSAGE = 'Some memory checkpoints could not be materialized; evidence remains pending';
10
+ export class LocalMemoryCoordinator {
11
+ #options;
12
+ #contexts = new Map();
13
+ #projections = new Map();
14
+ #statusListeners = new Set();
15
+ #dreamRunner;
16
+ #enabled;
17
+ #selectedModel;
18
+ #disposed = false;
19
+ constructor(options) {
20
+ this.#options = options;
21
+ this.#enabled = options.enabled !== false;
22
+ this.#selectedModel = options.selectedModel;
23
+ this.#dreamRunner = options.dreamRunner ?? createDefaultLocalMemoryDreamRunner();
24
+ }
25
+ createSessionHost(options) {
26
+ return new LocalMemorySessionHost(this, options);
27
+ }
28
+ isEnabled() {
29
+ return this.#enabled;
30
+ }
31
+ subscribeStatusChanges(listener) {
32
+ if (this.#disposed)
33
+ return () => { };
34
+ this.#statusListeners.add(listener);
35
+ return () => this.#statusListeners.delete(listener);
36
+ }
37
+ setSelectedModel(model) {
38
+ this.#selectedModel = model;
39
+ }
40
+ setEnabled(enabled) {
41
+ this.#enabled = enabled;
42
+ for (const context of this.#contexts.values()) {
43
+ if (!enabled && context.timer) {
44
+ clearTimeout(context.timer);
45
+ context.timer = undefined;
46
+ }
47
+ context.state = enabled ? 'idle' : 'disabled';
48
+ }
49
+ if (enabled) {
50
+ for (const context of this.#contexts.values()) {
51
+ void this.#scheduleIfPending(context, 0);
52
+ }
53
+ }
54
+ this.#emitStatusChange();
55
+ }
56
+ async status(cwd) {
57
+ try {
58
+ const context = await this.#context(cwd);
59
+ const state = await context.store.status();
60
+ const processed = Object.values(state.processed);
61
+ const lastProcessedAt = processed
62
+ .map((entry) => entry.processedAt)
63
+ .sort()
64
+ .at(-1);
65
+ return {
66
+ enabled: this.#enabled,
67
+ state: this.#enabled ? context.state : 'disabled',
68
+ pendingCheckpoints: Object.keys(state.pending).length,
69
+ memoryFingerprint: state.memoryFingerprint,
70
+ ...(lastProcessedAt === undefined ? {} : { lastProcessedAt }),
71
+ ...(context.message === undefined ? {} : { message: context.message }),
72
+ };
73
+ }
74
+ catch {
75
+ return {
76
+ enabled: this.#enabled,
77
+ state: this.#enabled ? 'error' : 'disabled',
78
+ pendingCheckpoints: 0,
79
+ message: 'Local memory storage is unavailable',
80
+ };
81
+ }
82
+ }
83
+ async readCurrent(cwd, sessionStorageRoot) {
84
+ const context = await this.#context(cwd);
85
+ const snapshot = await context.store.readCurrent();
86
+ const projectionKey = `${context.project.key}:${sessionStorageRoot}`;
87
+ const memoryPath = join(sessionStorageRoot, context.store.projectionName);
88
+ if (this.#projections.get(projectionKey) !== snapshot.fingerprint) {
89
+ const projection = await context.store.projectTo(sessionStorageRoot, snapshot);
90
+ this.#projections.set(projectionKey, snapshot.fingerprint);
91
+ return projection;
92
+ }
93
+ return createMemoryProjectionSnapshot(snapshot, memoryPath);
94
+ }
95
+ async recordCheckpoint(cwd, checkpoint) {
96
+ const context = await this.#context(cwd);
97
+ if (await context.store.recordCheckpoint(checkpoint)) {
98
+ context.blocked.delete(checkpoint.sessionId);
99
+ await this.#schedule(context);
100
+ this.#emitStatusChange();
101
+ }
102
+ }
103
+ async runNow(cwd) {
104
+ if (!this.#enabled)
105
+ return this.status(cwd);
106
+ const context = await this.#context(cwd);
107
+ if (context.timer) {
108
+ clearTimeout(context.timer);
109
+ context.timer = undefined;
110
+ }
111
+ if (context.run) {
112
+ await context.run;
113
+ }
114
+ else {
115
+ context.blocked.clear();
116
+ const run = this.#run(context);
117
+ context.run = run;
118
+ try {
119
+ await run;
120
+ }
121
+ finally {
122
+ if (context.run === run)
123
+ context.run = undefined;
124
+ }
125
+ }
126
+ return this.status(cwd);
127
+ }
128
+ async canonicalDirectory(cwd) {
129
+ const context = await this.#context(cwd);
130
+ return context.store.currentDirectory;
131
+ }
132
+ async dispose() {
133
+ if (this.#disposed)
134
+ return;
135
+ this.#disposed = true;
136
+ const runs = [];
137
+ for (const context of this.#contexts.values()) {
138
+ if (context.timer)
139
+ clearTimeout(context.timer);
140
+ context.timer = undefined;
141
+ context.abort?.abort();
142
+ if (context.run)
143
+ runs.push(context.run);
144
+ }
145
+ await Promise.allSettled(runs);
146
+ this.#statusListeners.clear();
147
+ }
148
+ async #context(cwd) {
149
+ if (this.#disposed)
150
+ throw new Error('Local memory coordinator is closed');
151
+ const project = await resolveLocalMemoryProject(cwd);
152
+ const existing = this.#contexts.get(project.key);
153
+ if (existing)
154
+ return existing;
155
+ const store = new LocalMemoryStore(this.#options.agentDir, project);
156
+ const context = {
157
+ project,
158
+ cwd,
159
+ ...(this.#options.sessionDir === undefined ? {} : { sessionDir: this.#options.sessionDir }),
160
+ store,
161
+ ready: store.initialize(),
162
+ recoveryStarted: false,
163
+ timer: undefined,
164
+ run: undefined,
165
+ abort: undefined,
166
+ blocked: new Map(),
167
+ state: this.#enabled ? 'idle' : 'disabled',
168
+ message: undefined,
169
+ };
170
+ this.#contexts.set(project.key, context);
171
+ await context.ready;
172
+ if (this.#enabled)
173
+ void this.#scheduleIfPending(context);
174
+ if (this.#options.recover !== false && !context.recoveryStarted) {
175
+ context.recoveryStarted = true;
176
+ void this.#recover(context).catch(() => {
177
+ context.message = 'Memory startup recovery could not complete';
178
+ });
179
+ }
180
+ return context;
181
+ }
182
+ async #schedule(context, delay = this.#options.debounceMs ?? 2_000) {
183
+ if (this.#disposed || !this.#enabled || context.run || context.timer)
184
+ return;
185
+ context.state = 'scheduled';
186
+ context.timer = setTimeout(() => {
187
+ context.timer = undefined;
188
+ context.run = this.#run(context).finally(() => {
189
+ context.run = undefined;
190
+ void this.#scheduleIfPending(context);
191
+ });
192
+ }, delay);
193
+ context.timer.unref?.();
194
+ }
195
+ async #scheduleIfPending(context, delay = this.#options.debounceMs ?? 2_000) {
196
+ if (!this.#enabled || this.#disposed)
197
+ return;
198
+ try {
199
+ const state = await context.store.status();
200
+ const pending = Object.values(state.pending);
201
+ if (pending.some(({ checkpoint }) => !isBlockedCheckpoint(context, checkpoint))) {
202
+ await this.#schedule(context, delay);
203
+ }
204
+ else if (pending.length > 0) {
205
+ context.state = 'blocked';
206
+ context.message = MEMORY_INPUT_BLOCKED_MESSAGE;
207
+ }
208
+ }
209
+ catch {
210
+ context.state = 'error';
211
+ context.message = 'Local memory storage is unavailable';
212
+ }
213
+ }
214
+ async #run(context) {
215
+ if (this.#disposed || !this.#enabled)
216
+ return;
217
+ context.state = 'processing';
218
+ context.message = undefined;
219
+ let lease;
220
+ try {
221
+ lease = await acquireLocalMemoryLease(context.store.projectDirectory, this.#options.leaseOptions);
222
+ }
223
+ catch (error) {
224
+ context.state = 'error';
225
+ context.message = safeProcessingMessage(error);
226
+ return;
227
+ }
228
+ if (!lease) {
229
+ context.state = 'blocked';
230
+ context.message = 'Another Felan process owns the memory writer';
231
+ return;
232
+ }
233
+ const abort = new AbortController();
234
+ context.abort = abort;
235
+ const abortOnLeaseCompromise = () => {
236
+ abort.abort(new Error('Memory writer lease was lost'));
237
+ };
238
+ lease.compromised.addEventListener('abort', abortOnLeaseCompromise, { once: true });
239
+ let staging;
240
+ try {
241
+ const snapshot = await context.store.processingSnapshot(this.#options.batchSize ?? 8);
242
+ if (snapshot.checkpoints.length === 0) {
243
+ context.state = 'idle';
244
+ return;
245
+ }
246
+ staging = await context.store.createStagingDirectory();
247
+ const memoryDirectory = join(staging, '.memory');
248
+ await hydrateMemoryDirectory(snapshot.artifact, memoryDirectory, { memoryPath: '.memory' });
249
+ const manifest = await materializeMemoryInput({
250
+ stagingDirectory: staging,
251
+ checkpoints: snapshot.checkpoints.map(({ checkpoint }) => checkpoint),
252
+ previousCheckpoints: Object.fromEntries(Object.entries(snapshot.state.processed).map(([sessionId, entry]) => [sessionId, entry.checkpoint])),
253
+ baseSnapshot: createMemorySnapshot(snapshot.artifact, '.memory'),
254
+ maxTranscriptBytes: this.#options.maxTranscriptBytes ?? 256 * 1024,
255
+ signal: abort.signal,
256
+ });
257
+ for (const failure of manifest.failures) {
258
+ context.blocked.set(failure.checkpoint.sessionId, {
259
+ leafId: failure.checkpoint.leafId,
260
+ transcriptDigest: failure.checkpoint.transcriptDigest,
261
+ });
262
+ }
263
+ const processedCheckpoints = snapshot.checkpoints.filter(({ checkpoint }) => manifest.sessions.some((session) => session.checkpoint.sessionId === checkpoint.sessionId
264
+ && sameCheckpointCursor(session.checkpoint, checkpoint)));
265
+ if (processedCheckpoints.length === 0) {
266
+ context.state = 'blocked';
267
+ context.message = MEMORY_INPUT_BLOCKED_MESSAGE;
268
+ return;
269
+ }
270
+ const result = await this.#dreamRunner({
271
+ stagingDirectory: staging,
272
+ memoryDirectory,
273
+ inputDirectory: join(staging, '.dreaming', 'input'),
274
+ baseSnapshot: createMemorySnapshot(snapshot.artifact, '.memory'),
275
+ manifest,
276
+ modelRuntime: this.#options.modelRuntime,
277
+ ...(this.#selectedModel === undefined ? {} : { selectedModel: this.#selectedModel }),
278
+ signal: abort.signal,
279
+ });
280
+ if (result)
281
+ await hydrateMemoryDirectory(result, memoryDirectory, { replace: true, memoryPath: '.memory' });
282
+ const artifact = await readMemoryDirectory(memoryDirectory, {
283
+ memoryPath: '.memory',
284
+ sourceSessionIds: allowedSourceIds(snapshot, manifest),
285
+ });
286
+ const validation = validateMemoryArtifact(artifact, {
287
+ memoryPath: '.memory',
288
+ sourceSessionIds: allowedSourceIds(snapshot, manifest),
289
+ });
290
+ if (!validation.ok || !validation.artifact)
291
+ throw new Error('Memory output validation failed');
292
+ await context.store.commit(lease, snapshot.fingerprint, validation.artifact, processedCheckpoints);
293
+ context.state = 'idle';
294
+ if (manifest.failures.length > 0)
295
+ context.message = MEMORY_INPUT_BLOCKED_MESSAGE;
296
+ this.#emitStatusChange();
297
+ }
298
+ catch (error) {
299
+ context.state = 'error';
300
+ context.message = !await lease.verify()
301
+ ? safeProcessingMessage(new Error('Memory writer lease was lost'))
302
+ : safeProcessingMessage(error);
303
+ }
304
+ finally {
305
+ lease.compromised.removeEventListener('abort', abortOnLeaseCompromise);
306
+ context.abort = undefined;
307
+ if (staging)
308
+ await rm(staging, { recursive: true, force: true }).catch(() => { });
309
+ await lease.release();
310
+ }
311
+ }
312
+ async #recover(context) {
313
+ if (!this.#enabled)
314
+ return;
315
+ const sessionDir = context.sessionDir ?? join(this.#options.agentDir, 'sessions');
316
+ let sessions;
317
+ try {
318
+ sessions = await SessionManager.list(context.cwd, sessionDir);
319
+ }
320
+ catch {
321
+ context.message = 'Memory startup recovery could not inspect sessions';
322
+ return;
323
+ }
324
+ let recovered = false;
325
+ const stableAfter = this.#options.recoveryStableMs ?? 30_000;
326
+ for (const info of sessions) {
327
+ if (info.parentSessionPath || Date.now() - info.modified.getTime() < stableAfter)
328
+ continue;
329
+ try {
330
+ const manager = SessionManager.open(info.path, sessionDir, context.cwd);
331
+ const checkpoint = createSessionCheckpoint(manager);
332
+ if (!checkpoint)
333
+ continue;
334
+ recovered = (await context.store.recordCheckpoint(checkpoint)) || recovered;
335
+ }
336
+ catch { }
337
+ }
338
+ if (recovered) {
339
+ await this.#schedule(context);
340
+ this.#emitStatusChange();
341
+ }
342
+ }
343
+ #emitStatusChange() {
344
+ for (const listener of [...this.#statusListeners]) {
345
+ try {
346
+ listener();
347
+ }
348
+ catch { }
349
+ }
350
+ }
351
+ }
352
+ class LocalMemorySessionHost {
353
+ #coordinator;
354
+ #cwd;
355
+ #sessionStorageRoot;
356
+ constructor(coordinator, options) {
357
+ this.#coordinator = coordinator;
358
+ this.#cwd = options.cwd;
359
+ this.#sessionStorageRoot = options.sessionStorageRoot;
360
+ }
361
+ readCurrent() {
362
+ return this.#coordinator.readCurrent(this.#cwd, this.#sessionStorageRoot);
363
+ }
364
+ async recordCheckpoint(checkpoint) {
365
+ await this.#coordinator.recordCheckpoint(this.#cwd, checkpoint);
366
+ }
367
+ status() {
368
+ return this.#coordinator.status(this.#cwd);
369
+ }
370
+ }
371
+ function isBlockedCheckpoint(context, checkpoint) {
372
+ const blocked = context.blocked.get(checkpoint.sessionId);
373
+ return blocked !== undefined && sameCheckpointCursor(blocked, checkpoint);
374
+ }
375
+ function sameCheckpointCursor(left, right) {
376
+ return left.leafId === right.leafId && left.transcriptDigest === right.transcriptDigest;
377
+ }
378
+ function allowedSourceIds(snapshot, manifest) {
379
+ return [...new Set([
380
+ ...snapshot.artifact.files.flatMap(({ content }) => extractSourceIds(content)),
381
+ ...manifest.sessions.map(({ checkpoint }) => checkpoint.sessionId),
382
+ ])];
383
+ }
384
+ function safeProcessingMessage(error) {
385
+ if (error instanceof Error && error.message.includes('No authenticated local memory model')) {
386
+ return 'Memory model is unavailable; evidence remains pending';
387
+ }
388
+ if (error instanceof Error && error.message.includes('cancel'))
389
+ return 'Memory processing was cancelled';
390
+ if (error instanceof Error && error.message.includes('writer lease'))
391
+ return 'Memory writer lease was lost; evidence remains pending';
392
+ if (error instanceof Error && error.message.includes('changed'))
393
+ return 'Memory changed during processing; evidence remains pending';
394
+ return 'Memory processing failed; evidence remains pending';
395
+ }
396
+ //# sourceMappingURL=coordinator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coordinator.js","sourceRoot":"","sources":["../../src/memory/coordinator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import { type AgentSession, type CreateAgentCoreSessionOptions, type Api, type Model, type ModelRuntime } from '@felan-ai/agent-core';
2
+ import { type MemoryArtifact, type MemoryInputManifest, type MemorySnapshot, type SessionCheckpoint } from '@felan-ai/ext-memory';
3
+ export interface LocalMemoryDreamInput {
4
+ readonly stagingDirectory: string;
5
+ readonly memoryDirectory: string;
6
+ readonly inputDirectory: string;
7
+ readonly baseSnapshot: MemorySnapshot;
8
+ readonly manifest: MemoryInputManifest;
9
+ readonly modelRuntime: ModelRuntime;
10
+ readonly selectedModel?: Model<Api>;
11
+ readonly signal: AbortSignal;
12
+ }
13
+ export type LocalMemoryDreamRunner = (input: LocalMemoryDreamInput) => Promise<MemoryArtifact | void>;
14
+ export type LocalMemoryDreamSession = Pick<AgentSession, 'abort' | 'bindExtensions' | 'dispose' | 'getActiveToolNames' | 'messages' | 'prompt' | 'setActiveToolsByName'>;
15
+ export type LocalMemoryDreamSessionFactory = (options: CreateAgentCoreSessionOptions) => Promise<{
16
+ readonly session: LocalMemoryDreamSession;
17
+ }>;
18
+ export interface LocalMemoryDreamRunnerOptions {
19
+ readonly createSession?: LocalMemoryDreamSessionFactory;
20
+ readonly timeoutMs?: number;
21
+ }
22
+ export interface MaterializeMemoryInputOptions {
23
+ readonly stagingDirectory: string;
24
+ readonly checkpoints: readonly SessionCheckpoint[];
25
+ readonly previousCheckpoints?: Readonly<Record<string, SessionCheckpoint>>;
26
+ readonly baseSnapshot: MemorySnapshot;
27
+ readonly maxTranscriptBytes: number;
28
+ readonly signal?: AbortSignal;
29
+ }
30
+ export type MemoryInputMaterializationFailureCode = 'source_unavailable' | 'invalid_source' | 'checkpoint_changed' | 'previous_checkpoint_changed';
31
+ export interface MemoryInputMaterializationFailure {
32
+ readonly checkpoint: SessionCheckpoint;
33
+ readonly code: MemoryInputMaterializationFailureCode;
34
+ readonly message: string;
35
+ }
36
+ export type MaterializeMemoryInputResult = MemoryInputManifest & {
37
+ readonly failures: readonly MemoryInputMaterializationFailure[];
38
+ };
39
+ export declare function materializeMemoryInput({ stagingDirectory, checkpoints, previousCheckpoints, baseSnapshot, maxTranscriptBytes, signal, }: MaterializeMemoryInputOptions): Promise<MaterializeMemoryInputResult>;
40
+ export declare function createDefaultLocalMemoryDreamRunner(options?: LocalMemoryDreamRunnerOptions): LocalMemoryDreamRunner;
41
+ //# sourceMappingURL=dreamer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dreamer.d.ts","sourceRoot":"","sources":["../../src/memory/dreamer.ts"],"names":[],"mappings":"AAKA,OAAO,EAUL,KAAK,YAAY,EACjB,KAAK,6BAA6B,EAGlC,KAAK,GAAG,EACR,KAAK,KAAK,EACV,KAAK,YAAY,EAClB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAKL,KAAK,cAAc,EACnB,KAAK,mBAAmB,EAExB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACvB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,YAAY,EAAE,cAAc,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAC;IACvC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;CAC9B;AAED,MAAM,MAAM,sBAAsB,GAAG,CAAC,KAAK,EAAE,qBAAqB,KAAK,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;AAEtG,MAAM,MAAM,uBAAuB,GAAG,IAAI,CACxC,YAAY,EACV,OAAO,GACP,gBAAgB,GAChB,SAAS,GACT,oBAAoB,GACpB,UAAU,GACV,QAAQ,GACR,sBAAsB,CACzB,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG,CAC3C,OAAO,EAAE,6BAA6B,KACnC,OAAO,CAAC;IAAE,QAAQ,CAAC,OAAO,EAAE,uBAAuB,CAAA;CAAE,CAAC,CAAC;AAE5D,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,aAAa,CAAC,EAAE,8BAA8B,CAAC;IACxD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAWD,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACnD,QAAQ,CAAC,mBAAmB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAC3E,QAAQ,CAAC,YAAY,EAAE,cAAc,CAAC;IACtC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC/B;AAED,MAAM,MAAM,qCAAqC,GAC7C,oBAAoB,GACpB,gBAAgB,GAChB,oBAAoB,GACpB,6BAA6B,CAAC;AAElC,MAAM,WAAW,iCAAiC;IAChD,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC;IACvC,QAAQ,CAAC,IAAI,EAAE,qCAAqC,CAAC;IACrD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,4BAA4B,GAAG,mBAAmB,GAAG;IAC/D,QAAQ,CAAC,QAAQ,EAAE,SAAS,iCAAiC,EAAE,CAAC;CACjE,CAAC;AAEF,wBAAsB,sBAAsB,CAAC,EAC3C,gBAAgB,EAChB,WAAW,EACX,mBAAmB,EACnB,YAAY,EACZ,kBAAkB,EAClB,MAAM,GACP,EAAE,6BAA6B,GAAG,OAAO,CAAC,4BAA4B,CAAC,CAqDvE;AASD,wBAAgB,mCAAmC,CACjD,OAAO,GAAE,6BAAkC,GAC1C,sBAAsB,CAqFxB"}