@smithers-orchestrator/memory 0.16.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 (45) hide show
  1. package/LICENSE +21 -0
  2. package/package.json +46 -0
  3. package/src/MemoryFact.ts +9 -0
  4. package/src/MemoryLayerConfig.ts +5 -0
  5. package/src/MemoryMessage.ts +9 -0
  6. package/src/MemoryNamespace.ts +6 -0
  7. package/src/MemoryNamespaceKind.ts +1 -0
  8. package/src/MemoryProcessor.js +5 -0
  9. package/src/MemoryProcessor.ts +9 -0
  10. package/src/MemoryProcessorConfig.ts +3 -0
  11. package/src/MemoryService.js +10 -0
  12. package/src/MemoryServiceApi.js +5 -0
  13. package/src/MemoryServiceApi.ts +49 -0
  14. package/src/MemoryThread.ts +8 -0
  15. package/src/MessageHistoryConfig.ts +4 -0
  16. package/src/SemanticRecallConfig.ts +7 -0
  17. package/src/Summarizer.js +26 -0
  18. package/src/TaskMemoryConfig.ts +15 -0
  19. package/src/TokenLimiter.js +29 -0
  20. package/src/TtlGarbageCollector.js +23 -0
  21. package/src/WorkingMemoryConfig.ts +10 -0
  22. package/src/createMemoryLayer.js +30 -0
  23. package/src/index.d.ts +616 -0
  24. package/src/index.js +39 -0
  25. package/src/memoryFactReads.js +2 -0
  26. package/src/memoryFactWrites.js +2 -0
  27. package/src/memoryMessageSaves.js +2 -0
  28. package/src/memoryRecallDuration.js +7 -0
  29. package/src/memoryRecallQueries.js +2 -0
  30. package/src/metrics.js +5 -0
  31. package/src/namespaceToString.js +9 -0
  32. package/src/parseNamespace.js +18 -0
  33. package/src/processors.js +7 -0
  34. package/src/react-types.ts +1 -0
  35. package/src/schema.js +38 -0
  36. package/src/service.js +7 -0
  37. package/src/store/MemoryStore.js +5 -0
  38. package/src/store/MemoryStore.ts +68 -0
  39. package/src/store/MemoryStoreDb.js +6 -0
  40. package/src/store/MemoryStoreLive.js +306 -0
  41. package/src/store/MemoryStoreService.js +10 -0
  42. package/src/store/createMemoryStore.js +13 -0
  43. package/src/store/createMemoryStoreLayer.js +13 -0
  44. package/src/store/index.js +9 -0
  45. package/src/types.js +21 -0
package/src/index.d.ts ADDED
@@ -0,0 +1,616 @@
1
+ import * as zod from 'zod';
2
+ import { z } from 'zod';
3
+ import * as zod_v4_core from 'zod/v4/core';
4
+ import { Effect, Context, Layer, Metric } from 'effect';
5
+ import { SmithersError } from '@smithers-orchestrator/errors';
6
+ import * as drizzle_orm_bun_sqlite from 'drizzle-orm/bun-sqlite';
7
+ import { BunSQLiteDatabase as BunSQLiteDatabase$1 } from 'drizzle-orm/bun-sqlite';
8
+ import * as effect_MetricState from 'effect/MetricState';
9
+ import * as effect_MetricKeyType from 'effect/MetricKeyType';
10
+ import * as drizzle_orm_sqlite_core from 'drizzle-orm/sqlite-core';
11
+
12
+ type MemoryNamespaceKind$1 = "workflow" | "agent" | "user" | "global";
13
+
14
+ type MemoryNamespace$3 = {
15
+ kind: MemoryNamespaceKind$1;
16
+ id: string;
17
+ };
18
+
19
+ type WorkingMemoryConfig$1<T extends z.ZodObject<z.ZodRawShape> = z.ZodObject<z.ZodRawShape>> = {
20
+ schema?: T;
21
+ namespace: MemoryNamespace$3;
22
+ ttlMs?: number;
23
+ };
24
+
25
+ type TaskMemoryConfig$1 = {
26
+ namespace?: string | MemoryNamespace$3;
27
+ recall?: {
28
+ namespace?: MemoryNamespace$3;
29
+ query?: string;
30
+ topK?: number;
31
+ };
32
+ remember?: {
33
+ namespace?: MemoryNamespace$3;
34
+ key?: string;
35
+ };
36
+ threadId?: string;
37
+ };
38
+
39
+ type SemanticRecallConfig$1 = {
40
+ topK?: number;
41
+ namespace?: MemoryNamespace$3;
42
+ similarityThreshold?: number;
43
+ };
44
+
45
+ type MessageHistoryConfig$1 = {
46
+ lastMessages?: number;
47
+ threadId?: string;
48
+ };
49
+
50
+ type MemoryThread$1 = {
51
+ threadId: string;
52
+ namespace: string;
53
+ title?: string | null;
54
+ metadataJson?: string | null;
55
+ createdAtMs: number;
56
+ updatedAtMs: number;
57
+ };
58
+
59
+ type MemoryFact$1 = {
60
+ namespace: string;
61
+ key: string;
62
+ valueJson: string;
63
+ schemaSig?: string | null;
64
+ createdAtMs: number;
65
+ updatedAtMs: number;
66
+ ttlMs?: number | null;
67
+ };
68
+
69
+ type MemoryMessage$1 = {
70
+ id: string;
71
+ threadId: string;
72
+ role: string;
73
+ contentJson: string;
74
+ runId?: string | null;
75
+ nodeId?: string | null;
76
+ createdAtMs: number;
77
+ };
78
+
79
+ type MemoryStore$2 = {
80
+ getFact: (ns: MemoryNamespace$3, key: string) => Promise<MemoryFact$1 | undefined>;
81
+ setFact: (ns: MemoryNamespace$3, key: string, value: unknown, ttlMs?: number) => Promise<void>;
82
+ deleteFact: (ns: MemoryNamespace$3, key: string) => Promise<void>;
83
+ listFacts: (ns: MemoryNamespace$3) => Promise<MemoryFact$1[]>;
84
+ createThread: (ns: MemoryNamespace$3, title?: string) => Promise<MemoryThread$1>;
85
+ getThread: (threadId: string) => Promise<MemoryThread$1 | undefined>;
86
+ deleteThread: (threadId: string) => Promise<void>;
87
+ saveMessage: (msg: Omit<MemoryMessage$1, "createdAtMs"> & {
88
+ createdAtMs?: number;
89
+ }) => Promise<void>;
90
+ listMessages: (threadId: string, limit?: number) => Promise<MemoryMessage$1[]>;
91
+ countMessages: (threadId: string) => Promise<number>;
92
+ deleteExpiredFacts: () => Promise<number>;
93
+ getFactEffect: (ns: MemoryNamespace$3, key: string) => Effect.Effect<MemoryFact$1 | undefined, SmithersError>;
94
+ setFactEffect: (ns: MemoryNamespace$3, key: string, value: unknown, ttlMs?: number) => Effect.Effect<void, SmithersError>;
95
+ deleteFactEffect: (ns: MemoryNamespace$3, key: string) => Effect.Effect<void, SmithersError>;
96
+ listFactsEffect: (ns: MemoryNamespace$3) => Effect.Effect<MemoryFact$1[], SmithersError>;
97
+ createThreadEffect: (ns: MemoryNamespace$3, title?: string) => Effect.Effect<MemoryThread$1, SmithersError>;
98
+ getThreadEffect: (threadId: string) => Effect.Effect<MemoryThread$1 | undefined, SmithersError>;
99
+ deleteThreadEffect: (threadId: string) => Effect.Effect<void, SmithersError>;
100
+ saveMessageEffect: (msg: Omit<MemoryMessage$1, "createdAtMs"> & {
101
+ createdAtMs?: number;
102
+ }) => Effect.Effect<void, SmithersError>;
103
+ listMessagesEffect: (threadId: string, limit?: number) => Effect.Effect<MemoryMessage$1[], SmithersError>;
104
+ countMessagesEffect: (threadId: string) => Effect.Effect<number, SmithersError>;
105
+ deleteExpiredFactsEffect: () => Effect.Effect<number, SmithersError>;
106
+ };
107
+
108
+ type MemoryServiceApi$1 = {
109
+ readonly getFact: (ns: MemoryNamespace$3, key: string) => Effect.Effect<MemoryFact$1 | undefined, SmithersError>;
110
+ readonly setFact: (ns: MemoryNamespace$3, key: string, value: unknown, ttlMs?: number) => Effect.Effect<void, SmithersError>;
111
+ readonly deleteFact: (ns: MemoryNamespace$3, key: string) => Effect.Effect<void, SmithersError>;
112
+ readonly listFacts: (ns: MemoryNamespace$3) => Effect.Effect<MemoryFact$1[], SmithersError>;
113
+ readonly createThread: (ns: MemoryNamespace$3, title?: string) => Effect.Effect<MemoryThread$1, SmithersError>;
114
+ readonly getThread: (threadId: string) => Effect.Effect<MemoryThread$1 | undefined, SmithersError>;
115
+ readonly deleteThread: (threadId: string) => Effect.Effect<void, SmithersError>;
116
+ readonly saveMessage: (msg: Omit<MemoryMessage$1, "createdAtMs"> & {
117
+ createdAtMs?: number;
118
+ }) => Effect.Effect<void, SmithersError>;
119
+ readonly listMessages: (threadId: string, limit?: number) => Effect.Effect<MemoryMessage$1[], SmithersError>;
120
+ readonly countMessages: (threadId: string) => Effect.Effect<number, SmithersError>;
121
+ readonly deleteExpiredFacts: () => Effect.Effect<number, SmithersError>;
122
+ readonly store: MemoryStore$2;
123
+ };
124
+
125
+ type MemoryProcessorConfig$1 = {
126
+ processors?: string[];
127
+ };
128
+
129
+ type MemoryProcessor$4 = {
130
+ name: string;
131
+ process: (store: MemoryStore$2) => Promise<void>;
132
+ processEffect: (store: MemoryStore$2) => Effect.Effect<void, SmithersError>;
133
+ };
134
+
135
+ type MemoryLayerConfig$2 = {
136
+ db: BunSQLiteDatabase$1<Record<string, unknown>>;
137
+ };
138
+
139
+ /** @typedef {import("./MemoryNamespace.ts").MemoryNamespace} MemoryNamespace */
140
+ /**
141
+ * @param {MemoryNamespace} ns
142
+ * @returns {string}
143
+ */
144
+ declare function namespaceToString(ns: MemoryNamespace$2): string;
145
+ type MemoryNamespace$2 = MemoryNamespace$3;
146
+
147
+ /** @typedef {import("./MemoryNamespace.ts").MemoryNamespace} MemoryNamespace */
148
+ /**
149
+ * @param {string} str
150
+ * @returns {MemoryNamespace}
151
+ */
152
+ declare function parseNamespace(str: string): MemoryNamespace$1;
153
+ type MemoryNamespace$1 = MemoryNamespace$3;
154
+
155
+ /** @typedef {import("drizzle-orm/bun-sqlite").BunSQLiteDatabase} BunSQLiteDatabase */
156
+ /** @typedef {import("./MemoryStore.ts").MemoryStore} MemoryStore */
157
+ /**
158
+ * @param {BunSQLiteDatabase<any>} db
159
+ * @returns {MemoryStore}
160
+ */
161
+ declare function createMemoryStore(db: BunSQLiteDatabase<any>): MemoryStore$1;
162
+ type BunSQLiteDatabase = drizzle_orm_bun_sqlite.BunSQLiteDatabase;
163
+ type MemoryStore$1 = MemoryStore$2;
164
+
165
+ /** @typedef {import("./MemoryProcessor.ts").MemoryProcessor} MemoryProcessor */
166
+ /**
167
+ * @returns {MemoryProcessor}
168
+ */
169
+ declare function TtlGarbageCollector(): MemoryProcessor$3;
170
+ type MemoryProcessor$3 = MemoryProcessor$4;
171
+
172
+ /** @typedef {import("./MemoryProcessor.ts").MemoryProcessor} MemoryProcessor */
173
+ /**
174
+ * @param {number} maxTokens
175
+ * @returns {MemoryProcessor}
176
+ */
177
+ declare function TokenLimiter(maxTokens: number): MemoryProcessor$2;
178
+ type MemoryProcessor$2 = MemoryProcessor$4;
179
+
180
+ /** @typedef {import("./MemoryProcessor.ts").MemoryProcessor} MemoryProcessor */
181
+ /**
182
+ * @param {{ run: (prompt: string) => Promise<any> }} agent
183
+ * @returns {MemoryProcessor}
184
+ */
185
+ declare function Summarizer(agent: {
186
+ run: (prompt: string) => Promise<any>;
187
+ }): MemoryProcessor$1;
188
+ type MemoryProcessor$1 = MemoryProcessor$4;
189
+
190
+ declare class MemoryService extends Context.TagClassShape<"MemoryService", MemoryServiceApi$1> {
191
+ }
192
+
193
+ /** @typedef {import("./MemoryLayerConfig.ts").MemoryLayerConfig} MemoryLayerConfig */
194
+ /**
195
+ * @param {MemoryLayerConfig} config
196
+ * @returns {Layer.Layer<MemoryService, never, never>}
197
+ */
198
+ declare function createMemoryLayer(config: MemoryLayerConfig$1): Layer.Layer<MemoryService, never, never>;
199
+ type MemoryLayerConfig$1 = MemoryLayerConfig$2;
200
+
201
+ declare const memoryFactReads: Metric.Metric.Counter<number>;
202
+
203
+ declare const memoryFactWrites: Metric.Metric.Counter<number>;
204
+
205
+ declare const memoryRecallQueries: Metric.Metric.Counter<number>;
206
+
207
+ declare const memoryMessageSaves: Metric.Metric.Counter<number>;
208
+
209
+ declare const memoryRecallDuration: Metric.Metric<effect_MetricKeyType.MetricKeyType.Histogram, number, effect_MetricState.MetricState.Histogram>;
210
+
211
+ declare const smithersMemoryFacts: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
212
+ name: "_smithers_memory_facts";
213
+ schema: undefined;
214
+ columns: {
215
+ namespace: drizzle_orm_sqlite_core.SQLiteColumn<{
216
+ name: "namespace";
217
+ tableName: "_smithers_memory_facts";
218
+ dataType: "string";
219
+ columnType: "SQLiteText";
220
+ data: string;
221
+ driverParam: string;
222
+ notNull: true;
223
+ hasDefault: false;
224
+ isPrimaryKey: false;
225
+ isAutoincrement: false;
226
+ hasRuntimeDefault: false;
227
+ enumValues: [string, ...string[]];
228
+ baseColumn: never;
229
+ identity: undefined;
230
+ generated: undefined;
231
+ }, {}, {
232
+ length: number | undefined;
233
+ }>;
234
+ key: drizzle_orm_sqlite_core.SQLiteColumn<{
235
+ name: "key";
236
+ tableName: "_smithers_memory_facts";
237
+ dataType: "string";
238
+ columnType: "SQLiteText";
239
+ data: string;
240
+ driverParam: string;
241
+ notNull: true;
242
+ hasDefault: false;
243
+ isPrimaryKey: false;
244
+ isAutoincrement: false;
245
+ hasRuntimeDefault: false;
246
+ enumValues: [string, ...string[]];
247
+ baseColumn: never;
248
+ identity: undefined;
249
+ generated: undefined;
250
+ }, {}, {
251
+ length: number | undefined;
252
+ }>;
253
+ valueJson: drizzle_orm_sqlite_core.SQLiteColumn<{
254
+ name: "value_json";
255
+ tableName: "_smithers_memory_facts";
256
+ dataType: "string";
257
+ columnType: "SQLiteText";
258
+ data: string;
259
+ driverParam: string;
260
+ notNull: true;
261
+ hasDefault: false;
262
+ isPrimaryKey: false;
263
+ isAutoincrement: false;
264
+ hasRuntimeDefault: false;
265
+ enumValues: [string, ...string[]];
266
+ baseColumn: never;
267
+ identity: undefined;
268
+ generated: undefined;
269
+ }, {}, {
270
+ length: number | undefined;
271
+ }>;
272
+ schemaSig: drizzle_orm_sqlite_core.SQLiteColumn<{
273
+ name: "schema_sig";
274
+ tableName: "_smithers_memory_facts";
275
+ dataType: "string";
276
+ columnType: "SQLiteText";
277
+ data: string;
278
+ driverParam: string;
279
+ notNull: false;
280
+ hasDefault: false;
281
+ isPrimaryKey: false;
282
+ isAutoincrement: false;
283
+ hasRuntimeDefault: false;
284
+ enumValues: [string, ...string[]];
285
+ baseColumn: never;
286
+ identity: undefined;
287
+ generated: undefined;
288
+ }, {}, {
289
+ length: number | undefined;
290
+ }>;
291
+ createdAtMs: drizzle_orm_sqlite_core.SQLiteColumn<{
292
+ name: "created_at_ms";
293
+ tableName: "_smithers_memory_facts";
294
+ dataType: "number";
295
+ columnType: "SQLiteInteger";
296
+ data: number;
297
+ driverParam: number;
298
+ notNull: true;
299
+ hasDefault: false;
300
+ isPrimaryKey: false;
301
+ isAutoincrement: false;
302
+ hasRuntimeDefault: false;
303
+ enumValues: undefined;
304
+ baseColumn: never;
305
+ identity: undefined;
306
+ generated: undefined;
307
+ }, {}, {}>;
308
+ updatedAtMs: drizzle_orm_sqlite_core.SQLiteColumn<{
309
+ name: "updated_at_ms";
310
+ tableName: "_smithers_memory_facts";
311
+ dataType: "number";
312
+ columnType: "SQLiteInteger";
313
+ data: number;
314
+ driverParam: number;
315
+ notNull: true;
316
+ hasDefault: false;
317
+ isPrimaryKey: false;
318
+ isAutoincrement: false;
319
+ hasRuntimeDefault: false;
320
+ enumValues: undefined;
321
+ baseColumn: never;
322
+ identity: undefined;
323
+ generated: undefined;
324
+ }, {}, {}>;
325
+ ttlMs: drizzle_orm_sqlite_core.SQLiteColumn<{
326
+ name: "ttl_ms";
327
+ tableName: "_smithers_memory_facts";
328
+ dataType: "number";
329
+ columnType: "SQLiteInteger";
330
+ data: number;
331
+ driverParam: number;
332
+ notNull: false;
333
+ hasDefault: false;
334
+ isPrimaryKey: false;
335
+ isAutoincrement: false;
336
+ hasRuntimeDefault: false;
337
+ enumValues: undefined;
338
+ baseColumn: never;
339
+ identity: undefined;
340
+ generated: undefined;
341
+ }, {}, {}>;
342
+ };
343
+ dialect: "sqlite";
344
+ }>;
345
+ declare const smithersMemoryThreads: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
346
+ name: "_smithers_memory_threads";
347
+ schema: undefined;
348
+ columns: {
349
+ threadId: drizzle_orm_sqlite_core.SQLiteColumn<{
350
+ name: "thread_id";
351
+ tableName: "_smithers_memory_threads";
352
+ dataType: "string";
353
+ columnType: "SQLiteText";
354
+ data: string;
355
+ driverParam: string;
356
+ notNull: true;
357
+ hasDefault: false;
358
+ isPrimaryKey: true;
359
+ isAutoincrement: false;
360
+ hasRuntimeDefault: false;
361
+ enumValues: [string, ...string[]];
362
+ baseColumn: never;
363
+ identity: undefined;
364
+ generated: undefined;
365
+ }, {}, {
366
+ length: number | undefined;
367
+ }>;
368
+ namespace: drizzle_orm_sqlite_core.SQLiteColumn<{
369
+ name: "namespace";
370
+ tableName: "_smithers_memory_threads";
371
+ dataType: "string";
372
+ columnType: "SQLiteText";
373
+ data: string;
374
+ driverParam: string;
375
+ notNull: true;
376
+ hasDefault: false;
377
+ isPrimaryKey: false;
378
+ isAutoincrement: false;
379
+ hasRuntimeDefault: false;
380
+ enumValues: [string, ...string[]];
381
+ baseColumn: never;
382
+ identity: undefined;
383
+ generated: undefined;
384
+ }, {}, {
385
+ length: number | undefined;
386
+ }>;
387
+ title: drizzle_orm_sqlite_core.SQLiteColumn<{
388
+ name: "title";
389
+ tableName: "_smithers_memory_threads";
390
+ dataType: "string";
391
+ columnType: "SQLiteText";
392
+ data: string;
393
+ driverParam: string;
394
+ notNull: false;
395
+ hasDefault: false;
396
+ isPrimaryKey: false;
397
+ isAutoincrement: false;
398
+ hasRuntimeDefault: false;
399
+ enumValues: [string, ...string[]];
400
+ baseColumn: never;
401
+ identity: undefined;
402
+ generated: undefined;
403
+ }, {}, {
404
+ length: number | undefined;
405
+ }>;
406
+ metadataJson: drizzle_orm_sqlite_core.SQLiteColumn<{
407
+ name: "metadata_json";
408
+ tableName: "_smithers_memory_threads";
409
+ dataType: "string";
410
+ columnType: "SQLiteText";
411
+ data: string;
412
+ driverParam: string;
413
+ notNull: false;
414
+ hasDefault: false;
415
+ isPrimaryKey: false;
416
+ isAutoincrement: false;
417
+ hasRuntimeDefault: false;
418
+ enumValues: [string, ...string[]];
419
+ baseColumn: never;
420
+ identity: undefined;
421
+ generated: undefined;
422
+ }, {}, {
423
+ length: number | undefined;
424
+ }>;
425
+ createdAtMs: drizzle_orm_sqlite_core.SQLiteColumn<{
426
+ name: "created_at_ms";
427
+ tableName: "_smithers_memory_threads";
428
+ dataType: "number";
429
+ columnType: "SQLiteInteger";
430
+ data: number;
431
+ driverParam: number;
432
+ notNull: true;
433
+ hasDefault: false;
434
+ isPrimaryKey: false;
435
+ isAutoincrement: false;
436
+ hasRuntimeDefault: false;
437
+ enumValues: undefined;
438
+ baseColumn: never;
439
+ identity: undefined;
440
+ generated: undefined;
441
+ }, {}, {}>;
442
+ updatedAtMs: drizzle_orm_sqlite_core.SQLiteColumn<{
443
+ name: "updated_at_ms";
444
+ tableName: "_smithers_memory_threads";
445
+ dataType: "number";
446
+ columnType: "SQLiteInteger";
447
+ data: number;
448
+ driverParam: number;
449
+ notNull: true;
450
+ hasDefault: false;
451
+ isPrimaryKey: false;
452
+ isAutoincrement: false;
453
+ hasRuntimeDefault: false;
454
+ enumValues: undefined;
455
+ baseColumn: never;
456
+ identity: undefined;
457
+ generated: undefined;
458
+ }, {}, {}>;
459
+ };
460
+ dialect: "sqlite";
461
+ }>;
462
+ declare const smithersMemoryMessages: drizzle_orm_sqlite_core.SQLiteTableWithColumns<{
463
+ name: "_smithers_memory_messages";
464
+ schema: undefined;
465
+ columns: {
466
+ id: drizzle_orm_sqlite_core.SQLiteColumn<{
467
+ name: "id";
468
+ tableName: "_smithers_memory_messages";
469
+ dataType: "string";
470
+ columnType: "SQLiteText";
471
+ data: string;
472
+ driverParam: string;
473
+ notNull: true;
474
+ hasDefault: false;
475
+ isPrimaryKey: true;
476
+ isAutoincrement: false;
477
+ hasRuntimeDefault: false;
478
+ enumValues: [string, ...string[]];
479
+ baseColumn: never;
480
+ identity: undefined;
481
+ generated: undefined;
482
+ }, {}, {
483
+ length: number | undefined;
484
+ }>;
485
+ threadId: drizzle_orm_sqlite_core.SQLiteColumn<{
486
+ name: "thread_id";
487
+ tableName: "_smithers_memory_messages";
488
+ dataType: "string";
489
+ columnType: "SQLiteText";
490
+ data: string;
491
+ driverParam: string;
492
+ notNull: true;
493
+ hasDefault: false;
494
+ isPrimaryKey: false;
495
+ isAutoincrement: false;
496
+ hasRuntimeDefault: false;
497
+ enumValues: [string, ...string[]];
498
+ baseColumn: never;
499
+ identity: undefined;
500
+ generated: undefined;
501
+ }, {}, {
502
+ length: number | undefined;
503
+ }>;
504
+ role: drizzle_orm_sqlite_core.SQLiteColumn<{
505
+ name: "role";
506
+ tableName: "_smithers_memory_messages";
507
+ dataType: "string";
508
+ columnType: "SQLiteText";
509
+ data: string;
510
+ driverParam: string;
511
+ notNull: true;
512
+ hasDefault: false;
513
+ isPrimaryKey: false;
514
+ isAutoincrement: false;
515
+ hasRuntimeDefault: false;
516
+ enumValues: [string, ...string[]];
517
+ baseColumn: never;
518
+ identity: undefined;
519
+ generated: undefined;
520
+ }, {}, {
521
+ length: number | undefined;
522
+ }>;
523
+ contentJson: drizzle_orm_sqlite_core.SQLiteColumn<{
524
+ name: "content_json";
525
+ tableName: "_smithers_memory_messages";
526
+ dataType: "string";
527
+ columnType: "SQLiteText";
528
+ data: string;
529
+ driverParam: string;
530
+ notNull: true;
531
+ hasDefault: false;
532
+ isPrimaryKey: false;
533
+ isAutoincrement: false;
534
+ hasRuntimeDefault: false;
535
+ enumValues: [string, ...string[]];
536
+ baseColumn: never;
537
+ identity: undefined;
538
+ generated: undefined;
539
+ }, {}, {
540
+ length: number | undefined;
541
+ }>;
542
+ runId: drizzle_orm_sqlite_core.SQLiteColumn<{
543
+ name: "run_id";
544
+ tableName: "_smithers_memory_messages";
545
+ dataType: "string";
546
+ columnType: "SQLiteText";
547
+ data: string;
548
+ driverParam: string;
549
+ notNull: false;
550
+ hasDefault: false;
551
+ isPrimaryKey: false;
552
+ isAutoincrement: false;
553
+ hasRuntimeDefault: false;
554
+ enumValues: [string, ...string[]];
555
+ baseColumn: never;
556
+ identity: undefined;
557
+ generated: undefined;
558
+ }, {}, {
559
+ length: number | undefined;
560
+ }>;
561
+ nodeId: drizzle_orm_sqlite_core.SQLiteColumn<{
562
+ name: "node_id";
563
+ tableName: "_smithers_memory_messages";
564
+ dataType: "string";
565
+ columnType: "SQLiteText";
566
+ data: string;
567
+ driverParam: string;
568
+ notNull: false;
569
+ hasDefault: false;
570
+ isPrimaryKey: false;
571
+ isAutoincrement: false;
572
+ hasRuntimeDefault: false;
573
+ enumValues: [string, ...string[]];
574
+ baseColumn: never;
575
+ identity: undefined;
576
+ generated: undefined;
577
+ }, {}, {
578
+ length: number | undefined;
579
+ }>;
580
+ createdAtMs: drizzle_orm_sqlite_core.SQLiteColumn<{
581
+ name: "created_at_ms";
582
+ tableName: "_smithers_memory_messages";
583
+ dataType: "number";
584
+ columnType: "SQLiteInteger";
585
+ data: number;
586
+ driverParam: number;
587
+ notNull: true;
588
+ hasDefault: false;
589
+ isPrimaryKey: false;
590
+ isAutoincrement: false;
591
+ hasRuntimeDefault: false;
592
+ enumValues: undefined;
593
+ baseColumn: never;
594
+ identity: undefined;
595
+ generated: undefined;
596
+ }, {}, {}>;
597
+ };
598
+ dialect: "sqlite";
599
+ }>;
600
+
601
+ type MemoryFact = MemoryFact$1;
602
+ type MemoryLayerConfig = MemoryLayerConfig$2;
603
+ type MemoryMessage = MemoryMessage$1;
604
+ type MemoryNamespace = MemoryNamespace$3;
605
+ type MemoryNamespaceKind = MemoryNamespaceKind$1;
606
+ type MemoryProcessor = MemoryProcessor$4;
607
+ type MemoryProcessorConfig = MemoryProcessorConfig$1;
608
+ type MemoryServiceApi = MemoryServiceApi$1;
609
+ type MemoryStore = MemoryStore$2;
610
+ type MemoryThread = MemoryThread$1;
611
+ type MessageHistoryConfig = MessageHistoryConfig$1;
612
+ type SemanticRecallConfig = SemanticRecallConfig$1;
613
+ type TaskMemoryConfig = TaskMemoryConfig$1;
614
+ type WorkingMemoryConfig<T extends zod.z.ZodObject<any> = zod.ZodObject<any, zod_v4_core.$strip>> = WorkingMemoryConfig$1<T>;
615
+
616
+ export { type MemoryFact, type MemoryLayerConfig, type MemoryMessage, type MemoryNamespace, type MemoryNamespaceKind, type MemoryProcessor, type MemoryProcessorConfig, MemoryService, type MemoryServiceApi, type MemoryStore, type MemoryThread, type MessageHistoryConfig, type SemanticRecallConfig, Summarizer, type TaskMemoryConfig, TokenLimiter, TtlGarbageCollector, type WorkingMemoryConfig, createMemoryLayer, createMemoryStore, memoryFactReads, memoryFactWrites, memoryMessageSaves, memoryRecallDuration, memoryRecallQueries, namespaceToString, parseNamespace, smithersMemoryFacts, smithersMemoryMessages, smithersMemoryThreads };
package/src/index.js ADDED
@@ -0,0 +1,39 @@
1
+ // @smithers-type-exports-begin
2
+ /** @typedef {import("./MemoryFact.ts").MemoryFact} MemoryFact */
3
+ /** @typedef {import("./MemoryLayerConfig.ts").MemoryLayerConfig} MemoryLayerConfig */
4
+ /** @typedef {import("./MemoryMessage.ts").MemoryMessage} MemoryMessage */
5
+ /** @typedef {import("./MemoryNamespace.ts").MemoryNamespace} MemoryNamespace */
6
+ /** @typedef {import("./MemoryNamespaceKind.ts").MemoryNamespaceKind} MemoryNamespaceKind */
7
+ /** @typedef {import("./MemoryProcessor.ts").MemoryProcessor} MemoryProcessor */
8
+ /** @typedef {import("./MemoryProcessorConfig.ts").MemoryProcessorConfig} MemoryProcessorConfig */
9
+ /** @typedef {import("./MemoryServiceApi.ts").MemoryServiceApi} MemoryServiceApi */
10
+ /** @typedef {import("./store/MemoryStore.ts").MemoryStore} MemoryStore */
11
+ /** @typedef {import("./MemoryThread.ts").MemoryThread} MemoryThread */
12
+ /** @typedef {import("./MessageHistoryConfig.ts").MessageHistoryConfig} MessageHistoryConfig */
13
+ /** @typedef {import("./SemanticRecallConfig.ts").SemanticRecallConfig} SemanticRecallConfig */
14
+ /** @typedef {import("./TaskMemoryConfig.ts").TaskMemoryConfig} TaskMemoryConfig */
15
+ /**
16
+ * @template {import("zod").z.ZodObject<any>} [T=import("zod").z.ZodObject<any>]
17
+ * @typedef {import("./WorkingMemoryConfig.ts").WorkingMemoryConfig<T>} WorkingMemoryConfig
18
+ */
19
+ // @smithers-type-exports-end
20
+
21
+ export { namespaceToString } from "./namespaceToString.js";
22
+ export { parseNamespace } from "./parseNamespace.js";
23
+ // Schema (Drizzle tables)
24
+ export { smithersMemoryFacts, smithersMemoryThreads, smithersMemoryMessages, } from "./schema.js";
25
+ // Store
26
+ export { createMemoryStore } from "./store/createMemoryStore.js";
27
+ // Processors
28
+ export { TtlGarbageCollector } from "./TtlGarbageCollector.js";
29
+ export { TokenLimiter } from "./TokenLimiter.js";
30
+ export { Summarizer } from "./Summarizer.js";
31
+ // Effect service
32
+ export { MemoryService } from "./MemoryService.js";
33
+ export { createMemoryLayer } from "./createMemoryLayer.js";
34
+ // Metrics
35
+ export { memoryFactReads } from "./memoryFactReads.js";
36
+ export { memoryFactWrites } from "./memoryFactWrites.js";
37
+ export { memoryRecallQueries } from "./memoryRecallQueries.js";
38
+ export { memoryMessageSaves } from "./memoryMessageSaves.js";
39
+ export { memoryRecallDuration } from "./memoryRecallDuration.js";
@@ -0,0 +1,2 @@
1
+ import { Metric } from "effect";
2
+ export const memoryFactReads = Metric.counter("smithers.memory.fact_reads");
@@ -0,0 +1,2 @@
1
+ import { Metric } from "effect";
2
+ export const memoryFactWrites = Metric.counter("smithers.memory.fact_writes");
@@ -0,0 +1,2 @@
1
+ import { Metric } from "effect";
2
+ export const memoryMessageSaves = Metric.counter("smithers.memory.message_saves");
@@ -0,0 +1,7 @@
1
+ import { Metric, MetricBoundaries } from "effect";
2
+ const durationBuckets = MetricBoundaries.exponential({
3
+ start: 1,
4
+ factor: 2,
5
+ count: 14,
6
+ }); // ~1ms to ~8s
7
+ export const memoryRecallDuration = Metric.histogram("smithers.memory.recall_duration_ms", durationBuckets);
@@ -0,0 +1,2 @@
1
+ import { Metric } from "effect";
2
+ export const memoryRecallQueries = Metric.counter("smithers.memory.recall_queries");
package/src/metrics.js ADDED
@@ -0,0 +1,5 @@
1
+ export { memoryFactReads } from "./memoryFactReads.js";
2
+ export { memoryFactWrites } from "./memoryFactWrites.js";
3
+ export { memoryMessageSaves } from "./memoryMessageSaves.js";
4
+ export { memoryRecallDuration } from "./memoryRecallDuration.js";
5
+ export { memoryRecallQueries } from "./memoryRecallQueries.js";