mnemocyte 0.3.0 → 0.4.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.
@@ -111,17 +111,25 @@ interface ProviderResilienceConfig {
111
111
  /**
112
112
  * Maximum time, in milliseconds, that a single provider attempt may
113
113
  * run before a {@link MnemocyteError} with code `"TIMEOUT"` is thrown.
114
- * Defaults to `0` which disables the timeout.
114
+ * Must be a non-negative finite number. Defaults to `0` which disables the
115
+ * timeout.
115
116
  */
116
117
  timeoutMs?: number;
117
118
  /**
118
- * Maximum number of retry attempts after the initial call. `0`
119
- * disables retries (default).
119
+ * Maximum number of retry attempts after the initial call. Must be a
120
+ * non-negative integer. `0` disables retries (default).
120
121
  */
121
122
  retries?: number;
122
- /** Base backoff delay (ms) used before the first retry. Defaults to `100`. */
123
+ /**
124
+ * Base backoff delay (ms) used before the first retry. Must be a
125
+ * non-negative finite number. Defaults to `100`.
126
+ */
123
127
  baseDelayMs?: number;
124
- /** Maximum backoff delay (ms) used between retries. Defaults to `2000`. */
128
+ /**
129
+ * Maximum backoff delay (ms) used between retries. Must be a non-negative
130
+ * finite number. Values below `baseDelayMs` are normalized up to the base
131
+ * delay. Defaults to `2000`.
132
+ */
125
133
  maxDelayMs?: number;
126
134
  /**
127
135
  * Optional predicate deciding whether `error` should trigger a retry.
@@ -140,7 +148,9 @@ interface MnemocyteConfig {
140
148
  /**
141
149
  * Postgres connection string. When set, the client uses the Postgres
142
150
  * backend (requires the `pgvector` extension and a rendered migration
143
- * with `mnemocyte_meta.embedding_dimensions` matching the embedder).
151
+ * with `mnemocyte_meta.embedding_dimensions` matching the embedder and
152
+ * `embedding_model` metadata available). Must use the `postgres:` or
153
+ * `postgresql:` protocol.
144
154
  * When omitted, an in-memory backend is used.
145
155
  */
146
156
  databaseUrl?: string;
@@ -191,8 +201,9 @@ interface AuditConfig {
191
201
  * (e.g. OpenAI, Cohere, a local model) in a small interface.
192
202
  *
193
203
  * Mnemocyte records {@link Embedder.model} and {@link Embedder.dimensions}
194
- * on every stored memory and uses them to detect incompatible vectors
195
- * (e.g. when the model is swapped).
204
+ * on every stored memory. The Postgres backend also records both values as
205
+ * installation metadata and rejects embedding-dependent operations when the
206
+ * configured embedder is incompatible.
196
207
  */
197
208
  interface Embedder {
198
209
  /** Stable identifier for the underlying model (e.g. `"text-embedding-3-small"`). */
@@ -484,7 +495,10 @@ interface BuildContextInput {
484
495
  * Input for {@link MnemocyteClient.prune}. All fields are optional, but
485
496
  * at least one selector must be set; calling `prune({})` is rejected with
486
497
  * a `"VALIDATION"` {@link MnemocyteError} so memories cannot be deleted
487
- * accidentally. Specified filters are combined with AND semantics.
498
+ * accidentally. Runtime values are validated before storage access; malformed
499
+ * dates, enums, arrays, booleans, and signals are rejected. `false` selector
500
+ * flags and empty selector arrays do not count as effective selectors after
501
+ * normalization. Specified filters are combined with AND semantics.
488
502
  */
489
503
  interface PruneInput {
490
504
  /** Restrict pruning to a single entity. */
@@ -518,7 +532,11 @@ interface PruneInput {
518
532
  * @defaultValue `false`
519
533
  */
520
534
  dryRun?: boolean;
521
- /** Optional cancellation signal. */
535
+ /**
536
+ * Optional cancellation signal. A pre-aborted signal prevents storage work.
537
+ * In-flight Postgres pruning requests server-query cancellation, but a
538
+ * deletion that has already committed cannot be undone.
539
+ */
522
540
  signal?: AbortSignal;
523
541
  }
524
542
  /**
@@ -566,7 +584,10 @@ interface FindDuplicatesInput {
566
584
  includeSuperseded?: boolean;
567
585
  /** Include expired memories in the scan. @defaultValue `false` */
568
586
  includeExpired?: boolean;
569
- /** Optional cancellation signal. */
587
+ /**
588
+ * Optional cancellation signal. In-memory scans check it cooperatively;
589
+ * Postgres requests cancellation of the active duplicate-search query.
590
+ */
570
591
  signal?: AbortSignal;
571
592
  }
572
593
  /**
@@ -606,6 +627,17 @@ interface AuditEvent {
606
627
  /** When the change was recorded. */
607
628
  timestamp: Date;
608
629
  }
630
+ /**
631
+ * Stable composite position for deterministic audit-log pagination.
632
+ *
633
+ * @experimental Part of Phase 6 (consolidation tooling). Shape may change.
634
+ */
635
+ interface AuditLogCursor {
636
+ /** Event timestamp at the page boundary. */
637
+ timestamp: Date;
638
+ /** Event ID used to break timestamp ties. */
639
+ id: string;
640
+ }
609
641
  /**
610
642
  * Input for {@link MnemocyteClient.listAuditLog}.
611
643
  *
@@ -619,11 +651,32 @@ interface ListAuditLogInput {
619
651
  * @defaultValue `50`
620
652
  */
621
653
  limit?: number;
622
- /** Only return entries strictly before this timestamp. */
654
+ /**
655
+ * Only return entries strictly before this timestamp. This is a filter, not
656
+ * a complete pagination cursor: events sharing the timestamp are excluded.
657
+ */
623
658
  before?: Date;
624
- /** Only return entries strictly after this timestamp. */
659
+ /**
660
+ * Only return entries strictly after this timestamp. This is a filter, not
661
+ * a complete pagination cursor: events sharing the timestamp are excluded.
662
+ */
625
663
  after?: Date;
626
- /** Optional cancellation signal. */
664
+ /**
665
+ * Return entries strictly older than this stable `(timestamp, id)` position.
666
+ *
667
+ * @experimental Prefer this over `before` for complete pagination.
668
+ */
669
+ beforeCursor?: AuditLogCursor;
670
+ /**
671
+ * Return entries strictly newer than this stable `(timestamp, id)` position.
672
+ *
673
+ * @experimental Prefer this over `after` for complete pagination.
674
+ */
675
+ afterCursor?: AuditLogCursor;
676
+ /**
677
+ * Optional cancellation signal. In-memory scans check it cooperatively;
678
+ * Postgres requests cancellation of the active audit-log query.
679
+ */
627
680
  signal?: AbortSignal;
628
681
  }
629
682
  /**
@@ -641,9 +694,10 @@ interface ConsolidateInput {
641
694
  /** Memory that should win the merge. Must not itself be superseded. */
642
695
  survivorId: string;
643
696
  /**
644
- * Memories to mark as superseded by the survivor. Already-superseded
645
- * entries in this list are skipped silently for idempotency. Must
646
- * not contain {@link ConsolidateInput.survivorId}.
697
+ * Memories to mark as superseded by the survivor. Entries already
698
+ * superseded by this same survivor are skipped for idempotency. If any
699
+ * entry points to a different survivor, the entire call rejects with
700
+ * `"CONFLICT"`. Must not contain {@link ConsolidateInput.survivorId}.
647
701
  */
648
702
  supersededIds: readonly string[];
649
703
  /**
@@ -652,7 +706,13 @@ interface ConsolidateInput {
652
706
  * @defaultValue `true`
653
707
  */
654
708
  mergeTags?: boolean;
655
- /** Optional cancellation signal. */
709
+ /**
710
+ * Optional cancellation signal. Postgres checks it between transaction
711
+ * steps and immediately before the transaction callback returns. A
712
+ * statement already in flight may finish before the next check rolls the
713
+ * transaction back. An abort after the final check, including while commit
714
+ * is in flight, may still leave the consolidation committed.
715
+ */
656
716
  signal?: AbortSignal;
657
717
  }
658
718
  /**
@@ -665,7 +725,7 @@ interface ConsolidateResult {
665
725
  survivorId: string;
666
726
  /**
667
727
  * Number of memories actually marked as superseded. Excludes entries
668
- * that were already superseded (idempotent skip).
728
+ * that already pointed to this survivor (idempotent skip).
669
729
  */
670
730
  supersededCount: number;
671
731
  /** The IDs that were newly superseded during this call. */
@@ -744,12 +804,20 @@ interface MnemocyteClient {
744
804
  *
745
805
  * @throws {MnemocyteError} `"NOT_FOUND"` if the memory does not exist
746
806
  * or does not belong to `entityId`.
807
+ * @throws {MnemocyteError} `"CONFLICT"` if another memory still
808
+ * references this memory as its consolidation survivor.
747
809
  */
748
810
  forget(input: {
749
811
  entityId: string;
750
812
  memoryId: string;
751
813
  }): Promise<void>;
752
- /** Delete every memory belonging to `entityId`. */
814
+ /**
815
+ * Delete every memory belonging to `entityId`.
816
+ *
817
+ * @throws {MnemocyteError} `"CONFLICT"` if any selected memory is still
818
+ * referenced as a consolidation survivor, including by another selected
819
+ * memory.
820
+ */
753
821
  forgetAll(input: {
754
822
  entityId: string;
755
823
  }): Promise<void>;
@@ -760,6 +828,10 @@ interface MnemocyteClient {
760
828
  * `"VALIDATION"` {@link MnemocyteError} to avoid accidental full
761
829
  * deletion. Pass `dryRun: true` to count without deleting.
762
830
  *
831
+ * @throws {MnemocyteError} `"CONFLICT"` when a non-dry-run prune selects
832
+ * a memory that still has consolidation dependents. The prune deletes
833
+ * nothing in that case.
834
+ *
763
835
  * @example Evict expired or stale memories for an entity
764
836
  * ```ts
765
837
  * await client.prune({
@@ -832,7 +904,10 @@ interface MnemocyteClient {
832
904
  }): Promise<EntityStats | GlobalStats>;
833
905
  /**
834
906
  * Release any underlying resources (e.g. the Postgres connection pool).
835
- * Safe to call multiple times. The client must not be used afterward.
907
+ * New operations are rejected once closing starts. The returned promise
908
+ * waits for operations that already started, then closes the store. Safe to
909
+ * call multiple times; concurrent calls share the same close operation.
910
+ * If closing the store fails, the client reopens so callers may retry.
836
911
  */
837
912
  close(): Promise<void>;
838
913
  }
@@ -846,11 +921,13 @@ interface ExperimentalMnemocyteClient {
846
921
  /**
847
922
  * Consolidate likely-duplicate memories into a single survivor by
848
923
  * marking the others as superseded. Optionally unions their tags
849
- * onto the survivor. Idempotent for memories that are already
850
- * superseded.
924
+ * onto the survivor. Idempotent when every already-superseded loser
925
+ * points to the requested survivor.
851
926
  *
852
927
  * Emits one `"memory.superseded"` audit event per newly superseded
853
928
  * memory when {@link MnemocyteConfig.audit}.`enabled` is `true`.
929
+ * A survivor cannot later be deleted while any superseded memory still
930
+ * references it; deletion attempts fail with `"CONFLICT"`.
854
931
  *
855
932
  * @experimental Part of Phase 6 (consolidation tooling). API may change.
856
933
  *
@@ -858,8 +935,11 @@ interface ExperimentalMnemocyteClient {
858
935
  * a `survivorId` that also appears in `supersededIds`, or a survivor
859
936
  * that is itself already superseded.
860
937
  * @throws {MnemocyteError} `"NOT_FOUND"` if the survivor or any
861
- * non-already-superseded memory in `supersededIds` does not belong
862
- * to `entityId`.
938
+ * memory in `supersededIds` does not belong to `entityId`.
939
+ * @throws {MnemocyteError} `"CONFLICT"` if any memory in
940
+ * `supersededIds` already points to a different survivor. The whole
941
+ * call is rejected before any loser, survivor tags, or audit events
942
+ * are changed.
863
943
  *
864
944
  * @example
865
945
  * ```ts
@@ -876,5 +956,5 @@ interface ExperimentalMnemocyteClient {
876
956
  consolidate(input: ConsolidateInput): Promise<ConsolidateResult>;
877
957
  }
878
958
  //#endregion
879
- export { RecallInput as A, MnemocyteObservation as C, ProviderResilienceConfig as D, ObservabilityConfig as E, RetrievalScoreWeights as F, RetrievalScores as I, TokenCounter as L, RememberManyInput as M, RetrievalConfig as N, PruneInput as O, RetrievalExplanation as P, MnemocyteConfig as S, MnemocyteOperation as T, Memory as _, ConsolidateResult as a, MnemocyteBackend as b, Embedder as c, FindDuplicatesInput as d, GlobalStats as f, ListAuditLogInput as g, JsonValue as h, ConsolidateInput as i, RememberInput as j, PruneResult as k, EntityStats as l, JsonObject as m, AuditEvent as n, ContextFormat as o, ImportanceLevel as p, BuildContextInput as r, DuplicatePair as s, AuditConfig as t, ExperimentalMnemocyteClient as u, MemoryType as v, MnemocyteObservationPhase as w, MnemocyteClient as x, MemoryWithScore as y };
880
- //# sourceMappingURL=types-gOPLre4V.d.mts.map
959
+ export { PruneResult as A, MnemocyteConfig as C, ObservabilityConfig as D, MnemocyteOperation as E, RetrievalExplanation as F, RetrievalScoreWeights as I, RetrievalScores as L, RememberInput as M, RememberManyInput as N, ProviderResilienceConfig as O, RetrievalConfig as P, TokenCounter as R, MnemocyteClient as S, MnemocyteObservationPhase as T, ListAuditLogInput as _, ConsolidateInput as a, MemoryWithScore as b, DuplicatePair as c, ExperimentalMnemocyteClient as d, FindDuplicatesInput as f, JsonValue as g, JsonObject as h, BuildContextInput as i, RecallInput as j, PruneInput as k, Embedder as l, ImportanceLevel as m, AuditEvent as n, ConsolidateResult as o, GlobalStats as p, AuditLogCursor as r, ContextFormat as s, AuditConfig as t, EntityStats as u, Memory as v, MnemocyteObservation as w, MnemocyteBackend as x, MemoryType as y };
960
+ //# sourceMappingURL=types-DH0inEay.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types-DH0inEay.d.mts","names":[],"sources":["../src/types.ts"],"mappings":"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"}
@@ -8,7 +8,8 @@ CREATE TABLE "mnemocyte_events" (
8
8
  --> statement-breakpoint
9
9
  CREATE TABLE "mnemocyte_meta" (
10
10
  "key" text PRIMARY KEY NOT NULL,
11
- "embedding_dimensions" integer NOT NULL
11
+ "embedding_dimensions" integer NOT NULL,
12
+ "embedding_model" text
12
13
  );
13
14
  --> statement-breakpoint
14
15
  INSERT INTO "mnemocyte_meta" ("key", "embedding_dimensions") VALUES ('installation', {{EMBEDDING_DIMENSIONS}});
@@ -0,0 +1,15 @@
1
+ ALTER TABLE "mnemocyte_meta" ADD COLUMN "embedding_model" text;
2
+ --> statement-breakpoint
3
+ UPDATE "mnemocyte_meta"
4
+ SET "embedding_model" = (
5
+ SELECT min("embedding_model")
6
+ FROM "mnemocyte_memories"
7
+ HAVING count(DISTINCT "embedding_model") = 1
8
+ )
9
+ WHERE
10
+ "key" = 'installation'
11
+ AND "embedding_model" IS NULL
12
+ AND (
13
+ SELECT count(DISTINCT "embedding_model")
14
+ FROM "mnemocyte_memories"
15
+ ) = 1;
@@ -0,0 +1,315 @@
1
+ {
2
+ "id": "b7cab9b6-6cbf-40c0-8796-50150531a577",
3
+ "prevId": "59920203-e7f9-4cdd-9580-1c7b42ac242e",
4
+ "version": "7",
5
+ "dialect": "postgresql",
6
+ "tables": {
7
+ "public.mnemocyte_events": {
8
+ "name": "mnemocyte_events",
9
+ "schema": "",
10
+ "columns": {
11
+ "id": {
12
+ "name": "id",
13
+ "type": "text",
14
+ "primaryKey": true,
15
+ "notNull": true
16
+ },
17
+ "entity_id": {
18
+ "name": "entity_id",
19
+ "type": "text",
20
+ "primaryKey": false,
21
+ "notNull": true
22
+ },
23
+ "description": {
24
+ "name": "description",
25
+ "type": "text",
26
+ "primaryKey": false,
27
+ "notNull": true
28
+ },
29
+ "metadata": {
30
+ "name": "metadata",
31
+ "type": "jsonb",
32
+ "primaryKey": false,
33
+ "notNull": true,
34
+ "default": "'{}'::jsonb"
35
+ },
36
+ "timestamp": {
37
+ "name": "timestamp",
38
+ "type": "timestamp with time zone",
39
+ "primaryKey": false,
40
+ "notNull": true,
41
+ "default": "now()"
42
+ }
43
+ },
44
+ "indexes": {
45
+ "mnemocyte_events_entity_time_idx": {
46
+ "name": "mnemocyte_events_entity_time_idx",
47
+ "columns": [
48
+ {
49
+ "expression": "entity_id",
50
+ "isExpression": false,
51
+ "asc": true,
52
+ "nulls": "last"
53
+ },
54
+ {
55
+ "expression": "timestamp",
56
+ "isExpression": false,
57
+ "asc": true,
58
+ "nulls": "last"
59
+ }
60
+ ],
61
+ "isUnique": false,
62
+ "concurrently": false,
63
+ "method": "btree",
64
+ "with": {}
65
+ }
66
+ },
67
+ "foreignKeys": {},
68
+ "compositePrimaryKeys": {},
69
+ "uniqueConstraints": {},
70
+ "policies": {},
71
+ "checkConstraints": {},
72
+ "isRLSEnabled": false
73
+ },
74
+ "public.mnemocyte_memories": {
75
+ "name": "mnemocyte_memories",
76
+ "schema": "",
77
+ "columns": {
78
+ "id": {
79
+ "name": "id",
80
+ "type": "text",
81
+ "primaryKey": true,
82
+ "notNull": true
83
+ },
84
+ "entity_id": {
85
+ "name": "entity_id",
86
+ "type": "text",
87
+ "primaryKey": false,
88
+ "notNull": true
89
+ },
90
+ "content": {
91
+ "name": "content",
92
+ "type": "text",
93
+ "primaryKey": false,
94
+ "notNull": true
95
+ },
96
+ "type": {
97
+ "name": "type",
98
+ "type": "text",
99
+ "primaryKey": false,
100
+ "notNull": true,
101
+ "default": "'fact'"
102
+ },
103
+ "importance": {
104
+ "name": "importance",
105
+ "type": "text",
106
+ "primaryKey": false,
107
+ "notNull": true,
108
+ "default": "'normal'"
109
+ },
110
+ "tags": {
111
+ "name": "tags",
112
+ "type": "text[]",
113
+ "primaryKey": false,
114
+ "notNull": true,
115
+ "default": "'{}'::text[]"
116
+ },
117
+ "source": {
118
+ "name": "source",
119
+ "type": "text",
120
+ "primaryKey": false,
121
+ "notNull": false
122
+ },
123
+ "metadata": {
124
+ "name": "metadata",
125
+ "type": "jsonb",
126
+ "primaryKey": false,
127
+ "notNull": true,
128
+ "default": "'{}'::jsonb"
129
+ },
130
+ "confidence": {
131
+ "name": "confidence",
132
+ "type": "real",
133
+ "primaryKey": false,
134
+ "notNull": true,
135
+ "default": 1
136
+ },
137
+ "embedding": {
138
+ "name": "embedding",
139
+ "type": "vector(1536)",
140
+ "primaryKey": false,
141
+ "notNull": false
142
+ },
143
+ "embedding_model": {
144
+ "name": "embedding_model",
145
+ "type": "text",
146
+ "primaryKey": false,
147
+ "notNull": true
148
+ },
149
+ "embedding_dimensions": {
150
+ "name": "embedding_dimensions",
151
+ "type": "integer",
152
+ "primaryKey": false,
153
+ "notNull": true
154
+ },
155
+ "superseded_by": {
156
+ "name": "superseded_by",
157
+ "type": "text",
158
+ "primaryKey": false,
159
+ "notNull": false
160
+ },
161
+ "superseded_at": {
162
+ "name": "superseded_at",
163
+ "type": "timestamp with time zone",
164
+ "primaryKey": false,
165
+ "notNull": false
166
+ },
167
+ "expires_at": {
168
+ "name": "expires_at",
169
+ "type": "timestamp with time zone",
170
+ "primaryKey": false,
171
+ "notNull": false
172
+ },
173
+ "last_accessed_at": {
174
+ "name": "last_accessed_at",
175
+ "type": "timestamp with time zone",
176
+ "primaryKey": false,
177
+ "notNull": false
178
+ },
179
+ "access_count": {
180
+ "name": "access_count",
181
+ "type": "integer",
182
+ "primaryKey": false,
183
+ "notNull": true,
184
+ "default": 0
185
+ },
186
+ "created_at": {
187
+ "name": "created_at",
188
+ "type": "timestamp with time zone",
189
+ "primaryKey": false,
190
+ "notNull": true,
191
+ "default": "now()"
192
+ },
193
+ "updated_at": {
194
+ "name": "updated_at",
195
+ "type": "timestamp with time zone",
196
+ "primaryKey": false,
197
+ "notNull": true,
198
+ "default": "now()"
199
+ }
200
+ },
201
+ "indexes": {
202
+ "mnemocyte_memories_entity_idx": {
203
+ "name": "mnemocyte_memories_entity_idx",
204
+ "columns": [
205
+ {
206
+ "expression": "entity_id",
207
+ "isExpression": false,
208
+ "asc": true,
209
+ "nulls": "last"
210
+ }
211
+ ],
212
+ "isUnique": false,
213
+ "concurrently": false,
214
+ "method": "btree",
215
+ "with": {}
216
+ },
217
+ "mnemocyte_memories_entity_type_idx": {
218
+ "name": "mnemocyte_memories_entity_type_idx",
219
+ "columns": [
220
+ {
221
+ "expression": "entity_id",
222
+ "isExpression": false,
223
+ "asc": true,
224
+ "nulls": "last"
225
+ },
226
+ {
227
+ "expression": "type",
228
+ "isExpression": false,
229
+ "asc": true,
230
+ "nulls": "last"
231
+ }
232
+ ],
233
+ "isUnique": false,
234
+ "concurrently": false,
235
+ "method": "btree",
236
+ "with": {}
237
+ },
238
+ "mnemocyte_memories_embedding_hnsw_idx": {
239
+ "name": "mnemocyte_memories_embedding_hnsw_idx",
240
+ "columns": [
241
+ {
242
+ "expression": "embedding",
243
+ "isExpression": false,
244
+ "asc": true,
245
+ "nulls": "last",
246
+ "opclass": "vector_cosine_ops"
247
+ }
248
+ ],
249
+ "isUnique": false,
250
+ "concurrently": false,
251
+ "method": "hnsw",
252
+ "with": {}
253
+ }
254
+ },
255
+ "foreignKeys": {
256
+ "mnemocyte_memories_superseded_by_mnemocyte_memories_id_fk": {
257
+ "name": "mnemocyte_memories_superseded_by_mnemocyte_memories_id_fk",
258
+ "tableFrom": "mnemocyte_memories",
259
+ "tableTo": "mnemocyte_memories",
260
+ "columnsFrom": ["superseded_by"],
261
+ "columnsTo": ["id"],
262
+ "onDelete": "no action",
263
+ "onUpdate": "no action"
264
+ }
265
+ },
266
+ "compositePrimaryKeys": {},
267
+ "uniqueConstraints": {},
268
+ "policies": {},
269
+ "checkConstraints": {},
270
+ "isRLSEnabled": false
271
+ },
272
+ "public.mnemocyte_meta": {
273
+ "name": "mnemocyte_meta",
274
+ "schema": "",
275
+ "columns": {
276
+ "key": {
277
+ "name": "key",
278
+ "type": "text",
279
+ "primaryKey": true,
280
+ "notNull": true
281
+ },
282
+ "embedding_dimensions": {
283
+ "name": "embedding_dimensions",
284
+ "type": "integer",
285
+ "primaryKey": false,
286
+ "notNull": true
287
+ },
288
+ "embedding_model": {
289
+ "name": "embedding_model",
290
+ "type": "text",
291
+ "primaryKey": false,
292
+ "notNull": false
293
+ }
294
+ },
295
+ "indexes": {},
296
+ "foreignKeys": {},
297
+ "compositePrimaryKeys": {},
298
+ "uniqueConstraints": {},
299
+ "policies": {},
300
+ "checkConstraints": {},
301
+ "isRLSEnabled": false
302
+ }
303
+ },
304
+ "enums": {},
305
+ "schemas": {},
306
+ "sequences": {},
307
+ "roles": {},
308
+ "policies": {},
309
+ "views": {},
310
+ "_meta": {
311
+ "columns": {},
312
+ "schemas": {},
313
+ "tables": {}
314
+ }
315
+ }
@@ -15,6 +15,13 @@
15
15
  "when": 1779455085280,
16
16
  "tag": "0001_add_mnemocyte_meta",
17
17
  "breakpoints": true
18
+ },
19
+ {
20
+ "idx": 2,
21
+ "version": "7",
22
+ "when": 1784201870906,
23
+ "tag": "0002_add_embedding_model",
24
+ "breakpoints": true
18
25
  }
19
26
  ]
20
27
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mnemocyte",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "Persistent memory for TypeScript AI apps.",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -1 +0,0 @@
1
- {"version":3,"file":"types-gOPLre4V.d.mts","names":[],"sources":["../src/types.ts"],"mappings":"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"}