@monoes/memory 2.24.1 → 2.24.4

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.
package/README.md CHANGED
@@ -27,17 +27,19 @@ npm install @monoes/memory
27
27
  ### Schema Architecture & Storage Engine
28
28
  - **Storage Driver**: Operates over SQLite with WAL mode (`PRAGMA journal_mode = WAL`) using `better-sqlite3` with a WASM `sql.js` fallback.
29
29
  - **Dual Schema Support**:
30
- - Standalone `@monoes/memory` core schema ([`packages/@monomind/memory/src/sql-schema.ts:28`](packages/@monomind/memory/src/sql-schema.ts#L28)): `SCHEMA_VERSION = 2` managing **4 tables** (`memory_entries`, `memory_embeddings`, `memory_entry_tags`, `agent_reads`).
31
- - CLI project memory schema ([`packages/@monomind/cli/src/memory/memory-schema.ts:15`](packages/@monomind/cli/src/memory/memory-schema.ts#L15)): Schema version `3.0.0` managing **9 tables** (`memory_entries`, `patterns`, `pattern_history`, `trajectories`, `trajectory_steps`, `migration_state`, `sessions`, `vector_indexes`, `metadata`).
30
+ - Standalone `@monoes/memory` core schema ([`src/sql-schema.ts`](src/sql-schema.ts)): `SCHEMA_VERSION = 4` (stored in `PRAGMA user_version`) managing **4 tables** (`memory_entries`, `memory_embeddings`, `memory_entry_tags`, `agent_reads`).
31
+ - CLI project memory schema ([`packages/@monomind/cli/src/memory/memory-schema.ts`](../cli/src/memory/memory-schema.ts)): Schema version `3.0.0` managing **9 tables** (`memory_entries`, `patterns`, `pattern_history`, `trajectories`, `trajectory_steps`, `migration_state`, `sessions`, `vector_indexes`, `metadata`).
32
32
 
33
33
  ## Hybrid Search: ONNX ModernBERT 768d + BM25 RRF
34
34
 
35
+ > The retrieval pipeline below (BM25, RRF, query router, OKF, EWC, SONA) is implemented in `@monoes/monomindcli` (`packages/@monomind/cli/src/memory/` and `src/knowledge/`), on top of the storage primitives this package exports.
36
+
35
37
  Retrieval uses a dual-arm hybrid search architecture combined with Reciprocal Rank Fusion (RRF):
36
38
 
37
39
  1. **Dense Vector Search**:
38
40
  - Model: `Alibaba-NLP/gte-modernbert-base` (768 dimensions).
39
41
  - Embedding Pipeline: `@xenova/transformers` ONNX feature extraction.
40
- - Acceleration: Standalone pure-JS `HNSWIndex` (`dimensions=768`, `M=16`, `efConstruction=200`, `metric='cosine'`).
42
+ - Acceleration: Standalone pure-JS `HNSWIndex` (set `dimensions: 768` for this model; defaults are `dimensions=1536`, `M=16`, `efConstruction=200`, `metric='cosine'`).
41
43
  2. **Lexical Arm (In-Process Okapi BM25)**:
42
44
  - Parameters: $k_1 = 1.2$, $b = 0.75$.
43
45
  - Tokenizer: Exact parity with the evaluation harness (`text-tokens.ts`).
@@ -69,11 +71,11 @@ Supports document and memory export/import via Open Knowledge Format (OKF) Markd
69
71
  | Export | What it does |
70
72
  |---|---|
71
73
  | `SQLiteBackend` / `SqlJsBackend` | Structured key-value storage in SQLite WAL mode (native + WASM fallback) |
72
- | `HNSWIndex` | Standalone pure-JS approximate nearest-neighbor index (`768d`) |
74
+ | `HNSWIndex` | Standalone pure-JS approximate nearest-neighbor index (`dimensions` configurable, default `1536`) |
73
75
  | `chunkDocument`, `KnowledgeStore`, `KnowledgeRetriever` | Document chunking + retrieval pipeline |
74
76
  | `QueryBuilder` / `query()` | Fluent query construction |
75
77
  | `CacheManager` | In-memory LRU caching with size/TTL limits |
76
- | `SwarmCheckpointer` | Persist/restore swarm agent state snapshots |
78
+ | `MonoswarmCheckpointer` | Persist/restore swarm agent state snapshots |
77
79
  | `MemoryMigrator` | Import from SQLite, JSON, or Markdown sources |
78
80
  | `PromptVersionStore` | Prompt version history & prompt experiment tracking |
79
81
 
@@ -91,5 +93,5 @@ everywhere including Windows without a toolchain).
91
93
 
92
94
  ## License
93
95
 
94
- MIT
96
+ Apache-2.0
95
97
 
@@ -10,6 +10,7 @@
10
10
  import type { HNSWNode } from './hnsw-index.js';
11
11
  import type { DistanceMetric } from './types.js';
12
12
  export declare function distance(metric: DistanceMetric, a: Float32Array, b: Float32Array): number;
13
+ /** 1 - cosine similarity; 1 (no similarity) for empty, zero-norm or mismatched-length vectors. */
13
14
  export declare function cosineDistance(a: Float32Array, b: Float32Array): number;
14
15
  /**
15
16
  * OPTIMIZED: Cosine distance using pre-normalized vectors
@@ -1 +1 @@
1
- {"version":3,"file":"hnsw-distance.d.ts","sourceRoot":"","sources":["../src/hnsw-distance.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,wBAAgB,QAAQ,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,MAAM,CAazF;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,MAAM,CAevE;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,MAAM,CAQjF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,YAAY,CAiBlE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE,YAAY,EACnB,eAAe,EAAE,YAAY,GAAG,IAAI,EACpC,IAAI,EAAE,QAAQ,GACb,MAAM,CAQR;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,MAAM,CAO1E;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,MAAM,CAO3E;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,MAAM,CAM1E"}
1
+ {"version":3,"file":"hnsw-distance.d.ts","sourceRoot":"","sources":["../src/hnsw-distance.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,wBAAgB,QAAQ,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,MAAM,CAazF;AAED,kGAAkG;AAClG,wBAAgB,cAAc,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,MAAM,CAEvE;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,MAAM,CAYjF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,YAAY,CAiBlE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE,YAAY,EACnB,eAAe,EAAE,YAAY,GAAG,IAAI,EACpC,IAAI,EAAE,QAAQ,GACb,MAAM,CAQR;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,MAAM,CAO1E;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,MAAM,CAO3E;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,MAAM,CAM1E"}
@@ -7,6 +7,7 @@
7
7
  *
8
8
  * @module v1/memory/hnsw-distance
9
9
  */
10
+ import { cosineSimilarity, warnVectorLengthMismatch } from './math-utils.js';
10
11
  export function distance(metric, a, b) {
11
12
  switch (metric) {
12
13
  case 'cosine':
@@ -21,20 +22,9 @@ export function distance(metric, a, b) {
21
22
  return cosineDistance(a, b);
22
23
  }
23
24
  }
25
+ /** 1 - cosine similarity; 1 (no similarity) for empty, zero-norm or mismatched-length vectors. */
24
26
  export function cosineDistance(a, b) {
25
- let dotProduct = 0;
26
- let normA = 0;
27
- let normB = 0;
28
- for (let i = 0; i < a.length; i++) {
29
- dotProduct += a[i] * b[i];
30
- normA += a[i] * a[i];
31
- normB += b[i] * b[i];
32
- }
33
- const denom = Math.sqrt(normA) * Math.sqrt(normB);
34
- if (denom === 0)
35
- return 1; // zero vector has maximum distance
36
- const similarity = dotProduct / denom;
37
- return 1 - similarity; // Convert to distance
27
+ return 1 - cosineSimilarity(a, b);
38
28
  }
39
29
  /**
40
30
  * OPTIMIZED: Cosine distance using pre-normalized vectors
@@ -42,6 +32,10 @@ export function cosineDistance(a, b) {
42
32
  * Performance: O(n) with ~2x speedup over standard cosine
43
33
  */
44
34
  export function cosineDistanceNormalized(a, b) {
35
+ if (a.length !== b.length) {
36
+ warnVectorLengthMismatch(a.length, b.length);
37
+ return 1;
38
+ }
45
39
  let dotProduct = 0;
46
40
  for (let i = 0; i < a.length; i++) {
47
41
  dotProduct += a[i] * b[i];
@@ -1 +1 @@
1
- {"version":3,"file":"hnsw-distance.js","sourceRoot":"","sources":["../src/hnsw-distance.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hnsw-distance.js","sourceRoot":"","sources":["../src/hnsw-distance.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"hnsw-index.d.ts","sourceRoot":"","sources":["../src/hnsw-index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAExD,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,gCAAgC;IAChC,EAAE,EAAE,MAAM,CAAC;IAEX,kCAAkC;IAClC,MAAM,EAAE,YAAY,CAAC;IAErB,uDAAuD;IACvD,gBAAgB,EAAE,YAAY,GAAG,IAAI,CAAC;IAEtC,gCAAgC;IAChC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IAEtC,kDAAkD;IAClD,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;GAOG;AACH,qBAAa,SAAU,SAAQ,YAAY;IACzC,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,KAAK,CAAoC;IACjD,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,SAAS,CAAS;IAG1B,OAAO,CAAC,KAAK,CAYX;IAGF,OAAO,CAAC,SAAS,CAA0B;IAE3C,YAAY,MAAM,GAAE,OAAO,CAAC,UAAU,CAAM,EAQ3C;IAED;;OAEG;IACG,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAkD9D;IAED;;OAEG;IACG,MAAM,CACV,KAAK,EAAE,YAAY,EACnB,CAAC,EAAE,MAAM,EACT,EAAE,CAAC,EAAE,MAAM,GACV,OAAO,CAAC,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAqElD;IAED;;OAEG;IACG,iBAAiB,CACrB,KAAK,EAAE,YAAY,EACnB,CAAC,EAAE,MAAM,EACT,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,EAC/B,EAAE,CAAC,EAAE,MAAM,GACV,OAAO,CAAC,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAMlD;IAED;;OAEG;IACG,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CA2C9C;IAED;;OAEG;IACG,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,YAAY,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBjF;IAED;;;;;;;;;;OAUG;IACH,SAAS,IAAI,cAAc,CAK1B;IAED,+DAA+D;IAC/D,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,cAAc,GAAG,SAAS,CASlD;IAED;;OAEG;IACH,QAAQ,IAAI,SAAS,CAiBpB;IAED;;OAEG;IACH,KAAK,IAAI,IAAI,CAWZ;IAED;;OAEG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAEvB;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAID,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,cAAc;YAMR,UAAU;CAwEzB;eAEc,SAAS"}
1
+ {"version":3,"file":"hnsw-index.d.ts","sourceRoot":"","sources":["../src/hnsw-index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAExD,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,gCAAgC;IAChC,EAAE,EAAE,MAAM,CAAC;IAEX,kCAAkC;IAClC,MAAM,EAAE,YAAY,CAAC;IAErB,uDAAuD;IACvD,gBAAgB,EAAE,YAAY,GAAG,IAAI,CAAC;IAEtC,gCAAgC;IAChC,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IAEtC,kDAAkD;IAClD,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;GAOG;AACH,qBAAa,SAAU,SAAQ,YAAY;IACzC,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,KAAK,CAAoC;IACjD,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,SAAS,CAAS;IAG1B,OAAO,CAAC,KAAK,CAYX;IAGF,OAAO,CAAC,SAAS,CAA0B;IAE3C,YAAY,MAAM,GAAE,OAAO,CAAC,UAAU,CAAM,EAQ3C;IAED;;OAEG;IACG,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAkD9D;IAED;;OAEG;IACG,MAAM,CACV,KAAK,EAAE,YAAY,EACnB,CAAC,EAAE,MAAM,EACT,EAAE,CAAC,EAAE,MAAM,GACV,OAAO,CAAC,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAyDlD;IAED;;OAEG;IACG,iBAAiB,CACrB,KAAK,EAAE,YAAY,EACnB,CAAC,EAAE,MAAM,EACT,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,EAC/B,EAAE,CAAC,EAAE,MAAM,GACV,OAAO,CAAC,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAMlD;IAED;;OAEG;IACG,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CA2C9C;IAED;;OAEG;IACG,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,YAAY,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBjF;IAED;;;;;;;;;;OAUG;IACH,SAAS,IAAI,cAAc,CAK1B;IAED,+DAA+D;IAC/D,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,cAAc,GAAG,SAAS,CASlD;IAED;;OAEG;IACH,QAAQ,IAAI,SAAS,CAiBpB;IAED;;OAEG;IACH,KAAK,IAAI,IAAI,CAWZ;IAED;;OAEG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAEvB;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAID,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,cAAc;YAMR,UAAU;CAwEzB;eAEc,SAAS"}
@@ -111,12 +111,10 @@ export class HNSWIndex extends EventEmitter {
111
111
  const normalizedQuery = this.config.metric === 'cosine' ? normalizeVector(queryVector) : null;
112
112
  // Start from entry point and search down the layers
113
113
  let currentNode = this.entryPoint;
114
- let _currentDist = distanceOptimized(this.config.metric, queryVector, normalizedQuery, this.nodes.get(currentNode));
115
114
  // Search through layers from top to 1
116
115
  for (let level = this.maxLevel; level > 0; level--) {
117
116
  const layerResult = searchLayerOptimized(this.nodes, this.config.metric, queryVector, normalizedQuery, currentNode, 1, level);
118
117
  currentNode = layerResult[0]?.id || currentNode;
119
- _currentDist = distanceOptimized(this.config.metric, queryVector, normalizedQuery, this.nodes.get(currentNode));
120
118
  }
121
119
  // Search layer 0 with ef candidates using heap-based search
122
120
  const candidates = searchLayerOptimized(this.nodes, this.config.metric, queryVector, normalizedQuery, currentNode, searchEf, 0);
@@ -1 +1 @@
1
- {"version":3,"file":"hnsw-index.js","sourceRoot":"","sources":["../src/hnsw-index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hnsw-index.js","sourceRoot":"","sources":["../src/hnsw-index.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -17,6 +17,7 @@ export { HNSWIndex } from './hnsw-index.js';
17
17
  export type { ChunkRecord, KnowledgeExcerpt, MetadataRecord, RetrievalResult, SearchFn, TextChunk, } from './knowledge/index.js';
18
18
  export { chunkDocument, KnowledgeRetriever, KnowledgeStore } from './knowledge/index.js';
19
19
  export { createMigrator, MemoryMigrator, migrateMultipleSources } from './migration.js';
20
+ export type { PatternStore, StoredPatternRecord } from './pattern-store.js';
20
21
  export type { DiffResult, PromptExperiment, PromptVersion, } from './prompt-version-store.js';
21
22
  export { PromptVersionStore } from './prompt-version-store.js';
22
23
  export type { SortDirection, SortField } from './query-builder.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,YAAY,EACV,WAAW,EACX,YAAY,EAEZ,WAAW,EACX,WAAW,EACX,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,cAAc,EAEd,kBAAkB,EAClB,iBAAiB,EAEjB,UAAU,EACV,SAAS,EAET,cAAc,EACd,eAAe,EACf,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,kBAAkB,EAElB,eAAe,EACf,WAAW,EAEX,UAAU,EACV,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,eAAe,EAEf,eAAe,EACf,kBAAkB,EAElB,SAAS,EACT,aAAa,EACb,YAAY,EAEZ,QAAQ,GACT,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,YAAY,EACV,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,QAAQ,EACR,SAAS,GACV,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACzF,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxF,YAAY,EACV,UAAU,EACV,gBAAgB,EAChB,aAAa,GACd,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACzE,YAAY,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACzF,OAAO,EAAE,aAAa,EAAE,CAAC;eAGV,aAAa"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,YAAY,EACV,WAAW,EACX,YAAY,EAEZ,WAAW,EACX,WAAW,EACX,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,cAAc,EAEd,kBAAkB,EAClB,iBAAiB,EAEjB,UAAU,EACV,SAAS,EAET,cAAc,EACd,eAAe,EACf,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,kBAAkB,EAElB,eAAe,EACf,WAAW,EAEX,UAAU,EACV,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,eAAe,EAEf,eAAe,EACf,kBAAkB,EAElB,SAAS,EACT,aAAa,EACb,YAAY,EAEZ,QAAQ,GACT,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,YAAY,EACV,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,QAAQ,EACR,SAAS,GACV,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACzF,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxF,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC5E,YAAY,EACV,UAAU,EACV,gBAAgB,EAChB,aAAa,GACd,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACzE,YAAY,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACzF,OAAO,EAAE,aAAa,EAAE,CAAC;eAGV,aAAa"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA+CH,kCAAkC;AAClC,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAEpB,8BAA8B;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,kCAAkC;AAClC,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAS5C,gDAAgD;AAChD,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACzF,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAMxF,wCAAwC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAGzE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,aAAa,EAAE,CAAC;AAEzB,iBAAiB;AACjB,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA+CH,kCAAkC;AAClC,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAEpB,8BAA8B;AAC9B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,kCAAkC;AAClC,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAS5C,gDAAgD;AAChD,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACzF,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAOxF,wCAAwC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAGzE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,aAAa,EAAE,CAAC;AAEzB,iBAAiB;AACjB,eAAe,aAAa,CAAC"}
@@ -1,6 +1,15 @@
1
1
  /**
2
2
  * Shared math utilities — single source of truth for the memory package.
3
3
  */
4
+ /**
5
+ * Warn, at most once per process, that two vectors of different lengths were
6
+ * compared. That usually means the embedding model changed under a stored index.
7
+ */
8
+ export declare function warnVectorLengthMismatch(a: number, b: number): void;
9
+ /**
10
+ * Cosine similarity in [-1, 1]. Returns 0 for empty or zero-norm vectors, and
11
+ * for vectors of different lengths (with a one-time warning).
12
+ */
4
13
  export declare function cosineSimilarity(a: ArrayLike<number>, b: ArrayLike<number>): number;
5
14
  export declare function createHashEmbedding(text: string, dim?: number): Float32Array;
6
15
  //# sourceMappingURL=math-utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"math-utils.d.ts","sourceRoot":"","sources":["../src/math-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,MAAM,CAanF;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,SAAK,GAAG,YAAY,CAaxE"}
1
+ {"version":3,"file":"math-utils.d.ts","sourceRoot":"","sources":["../src/math-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAQnE;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,MAAM,CAiBnF;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,SAAK,GAAG,YAAY,CAaxE"}
@@ -1,8 +1,30 @@
1
1
  /**
2
2
  * Shared math utilities — single source of truth for the memory package.
3
3
  */
4
+ /** Shared across every monomind cosine copy so the process warns at most once. */
5
+ const LENGTH_MISMATCH_WARNED = Symbol.for('monomind.cosine.lengthMismatchWarned');
6
+ /**
7
+ * Warn, at most once per process, that two vectors of different lengths were
8
+ * compared. That usually means the embedding model changed under a stored index.
9
+ */
10
+ export function warnVectorLengthMismatch(a, b) {
11
+ const g = globalThis;
12
+ if (g[LENGTH_MISMATCH_WARNED])
13
+ return;
14
+ g[LENGTH_MISMATCH_WARNED] = true;
15
+ console.warn(`[monomind] cosine similarity: vector length mismatch (${a} vs ${b}), scored as 0. ` +
16
+ 'The embedding model probably changed under a stored index; rebuild it.');
17
+ }
18
+ /**
19
+ * Cosine similarity in [-1, 1]. Returns 0 for empty or zero-norm vectors, and
20
+ * for vectors of different lengths (with a one-time warning).
21
+ */
4
22
  export function cosineSimilarity(a, b) {
5
- if (a.length !== b.length || a.length === 0)
23
+ if (a.length !== b.length) {
24
+ warnVectorLengthMismatch(a.length, b.length);
25
+ return 0;
26
+ }
27
+ if (a.length === 0)
6
28
  return 0;
7
29
  const len = a.length;
8
30
  let dot = 0, normA = 0, normB = 0;
@@ -1 +1 @@
1
- {"version":3,"file":"math-utils.js","sourceRoot":"","sources":["../src/math-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,UAAU,gBAAgB,CAAC,CAAoB,EAAE,CAAoB;IACzE,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACtD,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC;IACrB,IAAI,GAAG,GAAG,CAAC,EACT,KAAK,GAAG,CAAC,EACT,KAAK,GAAG,CAAC,CAAC;IACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7B,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACnB,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACrB,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClD,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAY,EAAE,GAAG,GAAG,EAAE;IACxD,MAAM,SAAS,GAAG,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC;IACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QACnC,SAAS,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;QAC7C,SAAS,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC;IAC5D,CAAC;IACD,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE;QAAE,IAAI,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IAClE,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,IAAI,GAAG,CAAC;QAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE;YAAE,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IACjE,OAAO,SAAS,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"math-utils.js","sourceRoot":"","sources":["../src/math-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * PatternStore - storage-agnostic contract for learned-pattern persistence.
3
+ *
4
+ * The CLI's JSON-file ReasoningBank (`LocalReasoningBank`) implements this
5
+ * today without any change to its on-disk format; a SQLite-backed store can
6
+ * implement the same interface later.
7
+ */
8
+ /** A learned pattern as persisted by a PatternStore. */
9
+ export interface StoredPatternRecord {
10
+ id: string;
11
+ type: string;
12
+ embedding: number[];
13
+ content: string;
14
+ confidence: number;
15
+ usageCount: number;
16
+ createdAt: number;
17
+ lastUsedAt: number;
18
+ metadata?: Record<string, unknown>;
19
+ }
20
+ export interface PatternStore {
21
+ /** Insert or update a pattern; usage/created/lastUsed default when omitted. */
22
+ store(pattern: Omit<StoredPatternRecord, 'usageCount' | 'createdAt' | 'lastUsedAt'> & Partial<StoredPatternRecord>): void;
23
+ /** Cosine-similarity search; a pure read that does not touch usage metrics. */
24
+ findSimilar(queryEmbedding: number[], options: {
25
+ k?: number;
26
+ threshold?: number;
27
+ type?: string;
28
+ }): StoredPatternRecord[];
29
+ /** Record a usage hit for a pattern. */
30
+ recordUsage(id: string): void;
31
+ get(id: string): StoredPatternRecord | undefined;
32
+ getAll(): StoredPatternRecord[];
33
+ getByType(type: string): StoredPatternRecord[];
34
+ delete(id: string): boolean;
35
+ clear(): void;
36
+ /** Write any pending changes to durable storage. */
37
+ flushToDisk(): void;
38
+ }
39
+ //# sourceMappingURL=pattern-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pattern-store.d.ts","sourceRoot":"","sources":["../src/pattern-store.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,wDAAwD;AACxD,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,YAAY;IAC3B,+EAA+E;IAC/E,KAAK,CACH,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAE,YAAY,GAAG,WAAW,GAAG,YAAY,CAAC,GAC3E,OAAO,CAAC,mBAAmB,CAAC,GAC7B,IAAI,CAAC;IACR,+EAA+E;IAC/E,WAAW,CACT,cAAc,EAAE,MAAM,EAAE,EACxB,OAAO,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GACzD,mBAAmB,EAAE,CAAC;IACzB,wCAAwC;IACxC,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS,CAAC;IACjD,MAAM,IAAI,mBAAmB,EAAE,CAAC;IAChC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,EAAE,CAAC;IAC/C,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B,KAAK,IAAI,IAAI,CAAC;IACd,oDAAoD;IACpD,WAAW,IAAI,IAAI,CAAC;CACrB"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * PatternStore - storage-agnostic contract for learned-pattern persistence.
3
+ *
4
+ * The CLI's JSON-file ReasoningBank (`LocalReasoningBank`) implements this
5
+ * today without any change to its on-disk format; a SQLite-backed store can
6
+ * implement the same interface later.
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=pattern-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pattern-store.js","sourceRoot":"","sources":["../src/pattern-store.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Versioned schema migrations for the memory SQLite store.
3
+ *
4
+ * Dependency-free and driver-agnostic: it only uses the SqlDriver contract, so
5
+ * it runs the same on better-sqlite3 and sql.js.
6
+ *
7
+ * Applied migrations are recorded in a `schema_migrations` table rather than
8
+ * in `PRAGMA user_version`. The pragma is already taken: releases before this
9
+ * runner stamp it with their own SCHEMA_VERSION on every open (overwriting a
10
+ * higher value), and the global brain is opened by whichever monomind version
11
+ * happens to run. A counter that an older install silently rewinds cannot
12
+ * tell which migrations ran; a table that older code never touches can.
13
+ *
14
+ * Guarantees:
15
+ * - each migration runs in its own transaction, together with the row that
16
+ * records it, so a migration that throws leaves no trace and is retried
17
+ * on the next open;
18
+ * - already-recorded migrations are skipped, so re-running is a no-op;
19
+ * - a database that records a migration this build does not know was
20
+ * written by a newer release, and is refused before anything is written;
21
+ * - an untracked database the caller recognises as already being at some
22
+ * version is stamped with that baseline, without running its migrations.
23
+ */
24
+ import type { SqlDriver } from './sql-driver.js';
25
+ export interface SchemaMigration {
26
+ /** 1-based, contiguous, in the order the migrations run. Never renumber a shipped one. */
27
+ readonly id: number;
28
+ readonly description: string;
29
+ /** Must be synchronous and must not open its own transaction (the runner holds one). */
30
+ up(driver: SqlDriver): void;
31
+ }
32
+ export interface MigrationRunReport {
33
+ /** Version recorded before this run, after any baseline stamp. */
34
+ from: number;
35
+ /** Version after this run. */
36
+ to: number;
37
+ /** Migrations whose `up` ran in this call. */
38
+ applied: number[];
39
+ /** Migrations recorded as a baseline in this call, without running `up`. */
40
+ baselined: number[];
41
+ }
42
+ export interface RunMigrationsOptions {
43
+ /**
44
+ * Called only when the tracking table has no rows. Returns the version an
45
+ * existing database is already at (0 for a fresh one); migrations up to it
46
+ * are recorded as baseline instead of being run.
47
+ */
48
+ baseline?: (driver: SqlDriver) => number;
49
+ }
50
+ export declare class SchemaTooNewError extends Error {
51
+ readonly databaseVersion: number;
52
+ readonly supportedVersion: number;
53
+ readonly code = "MEMORY_SCHEMA_TOO_NEW";
54
+ constructor(databaseVersion: number, supportedVersion: number);
55
+ }
56
+ /** Highest recorded migration id; 0 for an untracked database. */
57
+ export declare function schemaMigrationVersion(driver: SqlDriver): number;
58
+ export declare function runMigrations(driver: SqlDriver, migrations: readonly SchemaMigration[], options?: RunMigrationsOptions): MigrationRunReport;
59
+ //# sourceMappingURL=schema-migrations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-migrations.d.ts","sourceRoot":"","sources":["../src/schema-migrations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,WAAW,eAAe;IAC9B,0FAA0F;IAC1F,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,wFAAwF;IACxF,EAAE,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,kBAAkB;IACjC,kEAAkE;IAClE,IAAI,EAAE,MAAM,CAAC;IACb,8BAA8B;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,8CAA8C;IAC9C,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,4EAA4E;IAC5E,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,MAAM,CAAC;CAC1C;AAED,qBAAa,iBAAkB,SAAQ,KAAK;IAGxC,QAAQ,CAAC,eAAe,EAAE,MAAM;IAChC,QAAQ,CAAC,gBAAgB,EAAE,MAAM;IAHnC,QAAQ,CAAC,IAAI,2BAA2B;IACxC,YACW,eAAe,EAAE,MAAM,EACvB,gBAAgB,EAAE,MAAM,EAQlC;CACF;AAqBD,kEAAkE;AAClE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAGhE;AAMD,wBAAgB,aAAa,CAC3B,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,SAAS,eAAe,EAAE,EACtC,OAAO,GAAE,oBAAyB,GACjC,kBAAkB,CAyCpB"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Versioned schema migrations for the memory SQLite store.
3
+ *
4
+ * Dependency-free and driver-agnostic: it only uses the SqlDriver contract, so
5
+ * it runs the same on better-sqlite3 and sql.js.
6
+ *
7
+ * Applied migrations are recorded in a `schema_migrations` table rather than
8
+ * in `PRAGMA user_version`. The pragma is already taken: releases before this
9
+ * runner stamp it with their own SCHEMA_VERSION on every open (overwriting a
10
+ * higher value), and the global brain is opened by whichever monomind version
11
+ * happens to run. A counter that an older install silently rewinds cannot
12
+ * tell which migrations ran; a table that older code never touches can.
13
+ *
14
+ * Guarantees:
15
+ * - each migration runs in its own transaction, together with the row that
16
+ * records it, so a migration that throws leaves no trace and is retried
17
+ * on the next open;
18
+ * - already-recorded migrations are skipped, so re-running is a no-op;
19
+ * - a database that records a migration this build does not know was
20
+ * written by a newer release, and is refused before anything is written;
21
+ * - an untracked database the caller recognises as already being at some
22
+ * version is stamped with that baseline, without running its migrations.
23
+ */
24
+ export class SchemaTooNewError extends Error {
25
+ databaseVersion;
26
+ supportedVersion;
27
+ code = 'MEMORY_SCHEMA_TOO_NEW';
28
+ constructor(databaseVersion, supportedVersion) {
29
+ super(`memory database is at schema version ${databaseVersion}, but this @monoes/memory ` +
30
+ `supports up to ${supportedVersion}. It was written by a newer monomind; upgrade ` +
31
+ `monomind to use it. Refusing to open it so this older version cannot damage it.`);
32
+ this.databaseVersion = databaseVersion;
33
+ this.supportedVersion = supportedVersion;
34
+ this.name = 'SchemaTooNewError';
35
+ }
36
+ }
37
+ const CREATE_TRACKING_TABLE = `
38
+ CREATE TABLE IF NOT EXISTS schema_migrations (
39
+ id INTEGER PRIMARY KEY,
40
+ description TEXT NOT NULL,
41
+ applied_at INTEGER NOT NULL,
42
+ baseline INTEGER NOT NULL DEFAULT 0
43
+ )`;
44
+ const RECORD = 'INSERT OR IGNORE INTO schema_migrations (id, description, applied_at, baseline) VALUES (?, ?, ?, ?)';
45
+ function hasTrackingTable(driver) {
46
+ return (driver.get("SELECT name FROM sqlite_master WHERE type = 'table' AND name = 'schema_migrations'") !== null);
47
+ }
48
+ /** Highest recorded migration id; 0 for an untracked database. */
49
+ export function schemaMigrationVersion(driver) {
50
+ if (!hasTrackingTable(driver))
51
+ return 0;
52
+ return Number(driver.get('SELECT MAX(id) AS v FROM schema_migrations')?.v ?? 0) || 0;
53
+ }
54
+ function isRecorded(driver, id) {
55
+ return driver.get('SELECT id FROM schema_migrations WHERE id = ?', [id]) !== null;
56
+ }
57
+ export function runMigrations(driver, migrations, options = {}) {
58
+ migrations.forEach((m, i) => {
59
+ if (m.id !== i + 1)
60
+ throw new Error(`schema migration ids must be 1..n in order; got ${m.id} at position ${i + 1}`);
61
+ });
62
+ const latest = migrations.length;
63
+ // Refuse before writing anything, the tracking table included.
64
+ const recorded = schemaMigrationVersion(driver);
65
+ if (recorded > latest)
66
+ throw new SchemaTooNewError(recorded, latest);
67
+ driver.exec(CREATE_TRACKING_TABLE);
68
+ const report = { from: recorded, to: recorded, applied: [], baselined: [] };
69
+ if (recorded === 0 && options.baseline) {
70
+ const base = Math.min(Math.max(0, Math.floor(options.baseline(driver))), latest);
71
+ if (base > 0) {
72
+ const now = Date.now();
73
+ driver.transaction(() => {
74
+ for (const m of migrations.slice(0, base)) {
75
+ if (driver.run(RECORD, [m.id, m.description, now, 1]) > 0)
76
+ report.baselined.push(m.id);
77
+ }
78
+ });
79
+ report.from = report.to = base;
80
+ }
81
+ }
82
+ for (const m of migrations) {
83
+ if (m.id <= report.to)
84
+ continue;
85
+ driver.transaction(() => {
86
+ // Re-checked inside the transaction: another process may have applied it meanwhile.
87
+ if (isRecorded(driver, m.id))
88
+ return;
89
+ m.up(driver);
90
+ driver.run(RECORD, [m.id, m.description, Date.now(), 0]);
91
+ report.applied.push(m.id);
92
+ });
93
+ report.to = m.id;
94
+ }
95
+ return report;
96
+ }
97
+ //# sourceMappingURL=schema-migrations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-migrations.js","sourceRoot":"","sources":["../src/schema-migrations.ts"],"names":[],"mappings":"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"}
@@ -23,12 +23,17 @@
23
23
  */
24
24
  import type { SqlDriver } from './sql-driver.js';
25
25
  /**
26
- * Bumped when the canonical schema changes; stored in PRAGMA user_version.
27
- * A database below this version gets the one-time repair migrations
28
- * (namespace+key dedupe, FTS5 row dedupe) on its next open; at or above it
29
- * they are skipped (issue #426: they full-scanned the table on every open).
30
- * 4 = the version that started gating those repairs, so every existing store
31
- * gets them once more under the current code.
26
+ * The PRAGMA user_version stamp, frozen at 4. Schema changes are now numbered
27
+ * migrations (memoryMigrations(), recorded in `schema_migrations`); do not bump
28
+ * this for them.
29
+ *
30
+ * It is still written on every open because releases before the migration
31
+ * runner gate their full-table repairs (namespace+key dedupe, FTS5 row dedupe,
32
+ * issue #426) on `user_version < 4`, and write their own value back when they
33
+ * open the file. Here it serves two purposes: a store at 4 with no
34
+ * `schema_migrations` table was left by that code at the current schema and is
35
+ * adopted as a baseline; a tracked store found below 4 was opened by an older
36
+ * release since, so the repairs run again.
32
37
  */
33
38
  export declare const SCHEMA_VERSION = 4;
34
39
  /**
@@ -93,15 +98,22 @@ export declare function hasFTS5Table(driver: SqlDriver): boolean;
93
98
  * Returns true if the FTS5 table is usable after this call.
94
99
  */
95
100
  export declare function createFTS5Index(driver: SqlDriver, repair?: boolean): boolean;
101
+ /** Version of the newest migration this build knows. */
102
+ export declare const LATEST_MEMORY_MIGRATION: number;
96
103
  /**
97
- * Bring a database to the canonical schema: create tables, migrate legacy
98
- * inline embeddings, enforce uniqueness, build the FTS5 index, and record
99
- * the version.
104
+ * Bring a database to the latest schema: refuse one from a newer release,
105
+ * adopt or migrate it (see memoryMigrations), then re-assert the invariants an
106
+ * older release that opened the file since may have undone.
107
+ *
108
+ * Those invariants are not one-shot migrations on purpose:
109
+ * - FTS5 sync triggers are redefined on every open (cheap, no data), since
110
+ * an older release reinstalls its own definitions;
111
+ * - the FTS5 table is built whenever it is missing, so a store first opened
112
+ * where FTS5 was unavailable gains it once a build that has FTS5 opens it;
113
+ * - the namespace+key repair re-runs whenever the unique index is missing;
114
+ * - both dedupe repairs re-run when user_version has dropped below 4.
100
115
  *
101
- * The dedupe repairs scan every row, so they run only when the stored
102
- * version is below SCHEMA_VERSION (an older release that opens the file
103
- * writes its own lower version back, so it gets repaired again next time).
104
- * The namespace+key repair also re-runs whenever the unique index is missing.
116
+ * Throws SchemaTooNewError for a store from a newer release.
105
117
  */
106
118
  export declare function initializeSchema(driver: SqlDriver): MigrationReport;
107
119
  //# sourceMappingURL=sql-schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sql-schema.d.ts","sourceRoot":"","sources":["../src/sql-schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD;;;;;;;GAOG;AACH,eAAO,MAAM,cAAc,IAAI,CAAC;AAEhC;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAqD7D;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAmBjE;AAED,iFAAiF;AACjF,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAOnE;AAED,MAAM,WAAW,eAAe;IAC9B,mEAAmE;IACnE,iBAAiB,EAAE,OAAO,CAAC;IAC3B,8DAA8D;IAC9D,QAAQ,EAAE,MAAM,CAAC;IACjB,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,SAAS,GAAG,eAAe,CA+BhF;AAID;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CASvD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,UAAO,GAAG,OAAO,CAkDzE;AA0FD;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,eAAe,CAYnE"}
1
+ {"version":3,"file":"sql-schema.d.ts","sourceRoot":"","sources":["../src/sql-schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,cAAc,IAAI,CAAC;AAEhC;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAqD7D;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAmBjE;AAED,iFAAiF;AACjF,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAOnE;AAED,MAAM,WAAW,eAAe;IAC9B,mEAAmE;IACnE,iBAAiB,EAAE,OAAO,CAAC;IAC3B,8DAA8D;IAC9D,QAAQ,EAAE,MAAM,CAAC;IACjB,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,SAAS,GAAG,eAAe,CAIhF;AA6BD;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CASvD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,UAAO,GAAG,OAAO,CAkDzE;AAqID,wDAAwD;AACxD,eAAO,MAAM,uBAAuB,QAI3B,CAAC;AAYV;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,eAAe,CAgBnE"}
@@ -21,13 +21,19 @@
21
21
  * conservative — it copies before it drops, is idempotent, and leaves the
22
22
  * legacy column in place rather than rewriting the table.
23
23
  */
24
+ import { runMigrations } from './schema-migrations.js';
24
25
  /**
25
- * Bumped when the canonical schema changes; stored in PRAGMA user_version.
26
- * A database below this version gets the one-time repair migrations
27
- * (namespace+key dedupe, FTS5 row dedupe) on its next open; at or above it
28
- * they are skipped (issue #426: they full-scanned the table on every open).
29
- * 4 = the version that started gating those repairs, so every existing store
30
- * gets them once more under the current code.
26
+ * The PRAGMA user_version stamp, frozen at 4. Schema changes are now numbered
27
+ * migrations (memoryMigrations(), recorded in `schema_migrations`); do not bump
28
+ * this for them.
29
+ *
30
+ * It is still written on every open because releases before the migration
31
+ * runner gate their full-table repairs (namespace+key dedupe, FTS5 row dedupe,
32
+ * issue #426) on `user_version < 4`, and write their own value back when they
33
+ * open the file. Here it serves two purposes: a store at 4 with no
34
+ * `schema_migrations` table was left by that code at the current schema and is
35
+ * adopted as a baseline; a tracked store found below 4 was opened by an older
36
+ * release since, so the repairs run again.
31
37
  */
32
38
  export const SCHEMA_VERSION = 4;
33
39
  /**
@@ -146,30 +152,30 @@ export function hasLegacyInlineEmbedding(driver) {
146
152
  */
147
153
  export function migrateLegacyInlineEmbeddings(driver) {
148
154
  const report = { legacyColumnFound: false, migrated: 0, skipped: 0 };
155
+ driver.transaction(() => copyLegacyInlineEmbeddings(driver, report));
156
+ return report;
157
+ }
158
+ /** Body of migrateLegacyInlineEmbeddings without its transaction, for use inside a migration. */
159
+ function copyLegacyInlineEmbeddings(driver, report) {
149
160
  if (!hasLegacyInlineEmbedding(driver))
150
- return report;
161
+ return;
151
162
  report.legacyColumnFound = true;
152
- driver.transaction(() => {
153
- const rows = driver.all(`SELECT e.id AS id, e.embedding AS embedding
154
- FROM memory_entries e
155
- WHERE e.embedding IS NOT NULL`);
156
- for (const row of rows) {
157
- const id = String(row.id);
158
- const existing = driver.get('SELECT entry_id FROM memory_embeddings WHERE entry_id = ?', [
159
- id,
160
- ]);
161
- if (existing) {
162
- report.skipped++;
163
- continue;
164
- }
165
- driver.run('INSERT OR IGNORE INTO memory_embeddings (entry_id, embedding) VALUES (?, ?)', [
166
- id,
167
- row.embedding,
168
- ]);
169
- report.migrated++;
163
+ const rows = driver.all(`SELECT e.id AS id, e.embedding AS embedding
164
+ FROM memory_entries e
165
+ WHERE e.embedding IS NOT NULL`);
166
+ for (const row of rows) {
167
+ const id = String(row.id);
168
+ const existing = driver.get('SELECT entry_id FROM memory_embeddings WHERE entry_id = ?', [id]);
169
+ if (existing) {
170
+ report.skipped++;
171
+ continue;
170
172
  }
171
- });
172
- return report;
173
+ driver.run('INSERT OR IGNORE INTO memory_embeddings (entry_id, embedding) VALUES (?, ?)', [
174
+ id,
175
+ row.embedding,
176
+ ]);
177
+ report.migrated++;
178
+ }
173
179
  }
174
180
  // ===== FTS5 Full-Text Search Index (Issue #66) =============================
175
181
  /**
@@ -335,28 +341,89 @@ function hasNamespaceKeyUniqueIndex(driver) {
335
341
  return false;
336
342
  }
337
343
  }
344
+ const CANONICAL_TABLES = [
345
+ 'memory_entries',
346
+ 'memory_embeddings',
347
+ 'memory_entry_tags',
348
+ 'agent_reads',
349
+ ];
338
350
  /**
339
- * Bring a database to the canonical schema: create tables, migrate legacy
340
- * inline embeddings, enforce uniqueness, build the FTS5 index, and record
341
- * the version.
351
+ * The memory schema as numbered migrations. 1-4 are the schema the pre-runner
352
+ * `initializeSchema()` produced, split into the steps it took; a store it
353
+ * left at user_version 4 is adopted at version 4 without any of them running.
354
+ * Each is idempotent, because a store below user_version 4 (or an untracked
355
+ * one in an unknown state) runs all of them.
342
356
  *
343
- * The dedupe repairs scan every row, so they run only when the stored
344
- * version is below SCHEMA_VERSION (an older release that opens the file
345
- * writes its own lower version back, so it gets repaired again next time).
346
- * The namespace+key repair also re-runs whenever the unique index is missing.
357
+ * Append new migrations at the end; never edit or renumber a shipped one.
358
+ */
359
+ function memoryMigrations(report) {
360
+ return [
361
+ {
362
+ id: 1,
363
+ description: 'canonical tables and indexes (memory_entries, memory_embeddings, memory_entry_tags, agent_reads)',
364
+ up: createCanonicalSchema,
365
+ },
366
+ {
367
+ id: 2,
368
+ description: 'copy legacy inline memory_entries.embedding into memory_embeddings (column kept)',
369
+ up: (driver) => copyLegacyInlineEmbeddings(driver, report),
370
+ },
371
+ {
372
+ id: 3,
373
+ description: 'dedupe namespace+key and add UNIQUE index idx_namespace_key_unique',
374
+ up: enforceNamespaceKeyUnique,
375
+ },
376
+ {
377
+ id: 4,
378
+ description: 'FTS5 index memory_entries_fts with sync triggers, deduping stale rows',
379
+ up: (driver) => void createFTS5Index(driver, true),
380
+ },
381
+ ];
382
+ }
383
+ /** Version of the newest migration this build knows. */
384
+ export const LATEST_MEMORY_MIGRATION = memoryMigrations({
385
+ legacyColumnFound: false,
386
+ migrated: 0,
387
+ skipped: 0,
388
+ }).length;
389
+ /** An untracked store left at user_version 4 by the pre-runner code is already at migration 4. */
390
+ function detectBaseline(driver) {
391
+ const tables = new Set(driver.all("SELECT name FROM sqlite_master WHERE type = 'table'").map((r) => String(r.name)));
392
+ return readSchemaVersion(driver) >= SCHEMA_VERSION && CANONICAL_TABLES.every((t) => tables.has(t))
393
+ ? 4
394
+ : 0;
395
+ }
396
+ /**
397
+ * Bring a database to the latest schema: refuse one from a newer release,
398
+ * adopt or migrate it (see memoryMigrations), then re-assert the invariants an
399
+ * older release that opened the file since may have undone.
400
+ *
401
+ * Those invariants are not one-shot migrations on purpose:
402
+ * - FTS5 sync triggers are redefined on every open (cheap, no data), since
403
+ * an older release reinstalls its own definitions;
404
+ * - the FTS5 table is built whenever it is missing, so a store first opened
405
+ * where FTS5 was unavailable gains it once a build that has FTS5 opens it;
406
+ * - the namespace+key repair re-runs whenever the unique index is missing;
407
+ * - both dedupe repairs re-run when user_version has dropped below 4.
408
+ *
409
+ * Throws SchemaTooNewError for a store from a newer release.
347
410
  */
348
411
  export function initializeSchema(driver) {
349
- const needsRepair = readSchemaVersion(driver) < SCHEMA_VERSION;
350
- createCanonicalSchema(driver);
351
- const report = migrateLegacyInlineEmbeddings(driver);
352
- if (needsRepair || !hasNamespaceKeyUniqueIndex(driver))
412
+ const storedUserVersion = readSchemaVersion(driver);
413
+ const report = { legacyColumnFound: false, migrated: 0, skipped: 0 };
414
+ const run = runMigrations(driver, memoryMigrations(report), { baseline: detectBaseline });
415
+ if (!report.legacyColumnFound)
416
+ report.legacyColumnFound = hasLegacyInlineEmbedding(driver);
417
+ // run.from >= 4: the repairs did not just run as migrations 3-4.
418
+ const regressed = storedUserVersion < SCHEMA_VERSION && run.from >= 4;
419
+ if (regressed || !hasNamespaceKeyUniqueIndex(driver))
353
420
  enforceNamespaceKeyUnique(driver);
354
- createFTS5Index(driver, needsRepair);
421
+ createFTS5Index(driver, regressed);
355
422
  try {
356
423
  driver.exec(`PRAGMA user_version = ${SCHEMA_VERSION}`);
357
424
  }
358
425
  catch {
359
- /* pragma unsupported on this driver — version tracking is advisory */
426
+ /* pragma unsupported on this driver — the stamp is advisory */
360
427
  }
361
428
  return report;
362
429
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sql-schema.js","sourceRoot":"","sources":["../src/sql-schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sql-schema.js","sourceRoot":"","sources":["../src/sql-schema.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,8 +1,9 @@
1
1
  {
2
2
  "name": "@monoes/memory",
3
- "version": "2.24.1",
3
+ "version": "2.24.4",
4
4
  "type": "module",
5
5
  "description": "Memory module - JSON pattern store and a SQLite + embeddings backend with a size-gated HNSW ANN fast path built in",
6
+ "license": "Apache-2.0",
6
7
  "main": "dist/index.js",
7
8
  "types": "dist/index.d.ts",
8
9
  "exports": {
@@ -10,16 +11,16 @@
10
11
  "./*": "./dist/*.js"
11
12
  },
12
13
  "engines": {
13
- "node": ">=22.12.0"
14
+ "node": ">=22.22.0"
14
15
  },
15
16
  "dependencies": {
16
17
  "better-sqlite3": "^12.0.0",
17
- "sql.js": "^1.10.3"
18
+ "sql.js": "^1.16.0"
18
19
  },
19
20
  "devDependencies": {
20
21
  "@types/better-sqlite3": "^7.6.11",
21
22
  "@types/sql.js": "^1.4.9",
22
- "vitest": "^4.1.4"
23
+ "vitest": "^5.1.0"
23
24
  },
24
25
  "files": [
25
26
  "dist",