@easynet/agent-memory 0.0.2

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 (167) hide show
  1. package/README.md +260 -0
  2. package/bin/chat +11 -0
  3. package/dist/adapters/index.d.ts +8 -0
  4. package/dist/adapters/index.d.ts.map +1 -0
  5. package/dist/adapters/index.js +29 -0
  6. package/dist/adapters/index.js.map +1 -0
  7. package/dist/adapters/mem0/mem0-store.d.ts +29 -0
  8. package/dist/adapters/mem0/mem0-store.d.ts.map +1 -0
  9. package/dist/adapters/mem0/mem0-store.js +174 -0
  10. package/dist/adapters/mem0/mem0-store.js.map +1 -0
  11. package/dist/adapters/rag-http/rag-http-retriever.d.ts +18 -0
  12. package/dist/adapters/rag-http/rag-http-retriever.d.ts.map +1 -0
  13. package/dist/adapters/rag-http/rag-http-retriever.js +71 -0
  14. package/dist/adapters/rag-http/rag-http-retriever.js.map +1 -0
  15. package/dist/adapters/types.d.ts +25 -0
  16. package/dist/adapters/types.d.ts.map +1 -0
  17. package/dist/adapters/types.js +6 -0
  18. package/dist/adapters/types.js.map +1 -0
  19. package/dist/boot/boot-rebuilder.d.ts +26 -0
  20. package/dist/boot/boot-rebuilder.d.ts.map +1 -0
  21. package/dist/boot/boot-rebuilder.js +112 -0
  22. package/dist/boot/boot-rebuilder.js.map +1 -0
  23. package/dist/boot/index.d.ts +3 -0
  24. package/dist/boot/index.d.ts.map +1 -0
  25. package/dist/boot/index.js +6 -0
  26. package/dist/boot/index.js.map +1 -0
  27. package/dist/cli/chat-split.d.ts +22 -0
  28. package/dist/cli/chat-split.d.ts.map +1 -0
  29. package/dist/cli/chat-split.js +187 -0
  30. package/dist/cli/chat-split.js.map +1 -0
  31. package/dist/cli/chat.d.ts +19 -0
  32. package/dist/cli/chat.d.ts.map +1 -0
  33. package/dist/cli/chat.js +266 -0
  34. package/dist/cli/chat.js.map +1 -0
  35. package/dist/cli/commands/command-handler.d.ts +32 -0
  36. package/dist/cli/commands/command-handler.d.ts.map +1 -0
  37. package/dist/cli/commands/command-handler.js +143 -0
  38. package/dist/cli/commands/command-handler.js.map +1 -0
  39. package/dist/cli/index.d.ts +3 -0
  40. package/dist/cli/index.d.ts.map +1 -0
  41. package/dist/cli/index.js +8 -0
  42. package/dist/cli/index.js.map +1 -0
  43. package/dist/cli/ui/display-manager.d.ts +18 -0
  44. package/dist/cli/ui/display-manager.d.ts.map +1 -0
  45. package/dist/cli/ui/display-manager.js +69 -0
  46. package/dist/cli/ui/display-manager.js.map +1 -0
  47. package/dist/cli/ui/screen-layout.d.ts +12 -0
  48. package/dist/cli/ui/screen-layout.d.ts.map +1 -0
  49. package/dist/cli/ui/screen-layout.js +125 -0
  50. package/dist/cli/ui/screen-layout.js.map +1 -0
  51. package/dist/config/index.d.ts +2 -0
  52. package/dist/config/index.d.ts.map +1 -0
  53. package/dist/config/index.js +6 -0
  54. package/dist/config/index.js.map +1 -0
  55. package/dist/config/loader.d.ts +9 -0
  56. package/dist/config/loader.d.ts.map +1 -0
  57. package/dist/config/loader.js +107 -0
  58. package/dist/config/loader.js.map +1 -0
  59. package/dist/context/context-builder.d.ts +18 -0
  60. package/dist/context/context-builder.d.ts.map +1 -0
  61. package/dist/context/context-builder.js +91 -0
  62. package/dist/context/context-builder.js.map +1 -0
  63. package/dist/core/agent-memory.d.ts +50 -0
  64. package/dist/core/agent-memory.d.ts.map +1 -0
  65. package/dist/core/agent-memory.js +297 -0
  66. package/dist/core/agent-memory.js.map +1 -0
  67. package/dist/embedding/embedder.d.ts +49 -0
  68. package/dist/embedding/embedder.d.ts.map +1 -0
  69. package/dist/embedding/embedder.js +146 -0
  70. package/dist/embedding/embedder.js.map +1 -0
  71. package/dist/embedding/index.d.ts +3 -0
  72. package/dist/embedding/index.d.ts.map +1 -0
  73. package/dist/embedding/index.js +8 -0
  74. package/dist/embedding/index.js.map +1 -0
  75. package/dist/gate/deduplicator.d.ts +22 -0
  76. package/dist/gate/deduplicator.d.ts.map +1 -0
  77. package/dist/gate/deduplicator.js +74 -0
  78. package/dist/gate/deduplicator.js.map +1 -0
  79. package/dist/gate/extractor.d.ts +33 -0
  80. package/dist/gate/extractor.d.ts.map +1 -0
  81. package/dist/gate/extractor.js +122 -0
  82. package/dist/gate/extractor.js.map +1 -0
  83. package/dist/gate/index.d.ts +3 -0
  84. package/dist/gate/index.d.ts.map +1 -0
  85. package/dist/gate/index.js +6 -0
  86. package/dist/gate/index.js.map +1 -0
  87. package/dist/gate/memory-gate.d.ts +27 -0
  88. package/dist/gate/memory-gate.d.ts.map +1 -0
  89. package/dist/gate/memory-gate.js +86 -0
  90. package/dist/gate/memory-gate.js.map +1 -0
  91. package/dist/gate/redactor.d.ts +14 -0
  92. package/dist/gate/redactor.d.ts.map +1 -0
  93. package/dist/gate/redactor.js +24 -0
  94. package/dist/gate/redactor.js.map +1 -0
  95. package/dist/index.d.ts +6 -0
  96. package/dist/index.d.ts.map +1 -0
  97. package/dist/index.js +24 -0
  98. package/dist/index.js.map +1 -0
  99. package/dist/indexing/in-memory-index.d.ts +67 -0
  100. package/dist/indexing/in-memory-index.d.ts.map +1 -0
  101. package/dist/indexing/in-memory-index.js +135 -0
  102. package/dist/indexing/in-memory-index.js.map +1 -0
  103. package/dist/indexing/index.d.ts +3 -0
  104. package/dist/indexing/index.d.ts.map +1 -0
  105. package/dist/indexing/index.js +6 -0
  106. package/dist/indexing/index.js.map +1 -0
  107. package/dist/persistence/database/schema.d.ts +6 -0
  108. package/dist/persistence/database/schema.d.ts.map +1 -0
  109. package/dist/persistence/database/schema.js +75 -0
  110. package/dist/persistence/database/schema.js.map +1 -0
  111. package/dist/persistence/index.d.ts +3 -0
  112. package/dist/persistence/index.d.ts.map +1 -0
  113. package/dist/persistence/index.js +6 -0
  114. package/dist/persistence/index.js.map +1 -0
  115. package/dist/persistence/repository/embedding-operations.d.ts +17 -0
  116. package/dist/persistence/repository/embedding-operations.d.ts.map +1 -0
  117. package/dist/persistence/repository/embedding-operations.js +58 -0
  118. package/dist/persistence/repository/embedding-operations.js.map +1 -0
  119. package/dist/persistence/repository/memory-operations.d.ts +28 -0
  120. package/dist/persistence/repository/memory-operations.d.ts.map +1 -0
  121. package/dist/persistence/repository/memory-operations.js +87 -0
  122. package/dist/persistence/repository/memory-operations.js.map +1 -0
  123. package/dist/persistence/repository/meta-operations.d.ts +15 -0
  124. package/dist/persistence/repository/meta-operations.d.ts.map +1 -0
  125. package/dist/persistence/repository/meta-operations.js +20 -0
  126. package/dist/persistence/repository/meta-operations.js.map +1 -0
  127. package/dist/persistence/sqlite-repo.d.ts +58 -0
  128. package/dist/persistence/sqlite-repo.d.ts.map +1 -0
  129. package/dist/persistence/sqlite-repo.js +81 -0
  130. package/dist/persistence/sqlite-repo.js.map +1 -0
  131. package/dist/persistence/utils/hash.d.ts +8 -0
  132. package/dist/persistence/utils/hash.d.ts.map +1 -0
  133. package/dist/persistence/utils/hash.js +48 -0
  134. package/dist/persistence/utils/hash.js.map +1 -0
  135. package/dist/persistence/utils/serialization.d.ts +33 -0
  136. package/dist/persistence/utils/serialization.d.ts.map +1 -0
  137. package/dist/persistence/utils/serialization.js +85 -0
  138. package/dist/persistence/utils/serialization.js.map +1 -0
  139. package/dist/processing/document/document-processor.d.ts +30 -0
  140. package/dist/processing/document/document-processor.d.ts.map +1 -0
  141. package/dist/processing/document/document-processor.js +158 -0
  142. package/dist/processing/document/document-processor.js.map +1 -0
  143. package/dist/processing/document/index.d.ts +3 -0
  144. package/dist/processing/document/index.d.ts.map +1 -0
  145. package/dist/processing/document/index.js +6 -0
  146. package/dist/processing/document/index.js.map +1 -0
  147. package/dist/ranker/ranker.d.ts +26 -0
  148. package/dist/ranker/ranker.d.ts.map +1 -0
  149. package/dist/ranker/ranker.js +40 -0
  150. package/dist/ranker/ranker.js.map +1 -0
  151. package/dist/recall/recall-engine.d.ts +19 -0
  152. package/dist/recall/recall-engine.d.ts.map +1 -0
  153. package/dist/recall/recall-engine.js +79 -0
  154. package/dist/recall/recall-engine.js.map +1 -0
  155. package/dist/types/config.d.ts +821 -0
  156. package/dist/types/config.d.ts.map +1 -0
  157. package/dist/types/config.js +128 -0
  158. package/dist/types/config.js.map +1 -0
  159. package/dist/types/document.d.ts +37 -0
  160. package/dist/types/document.d.ts.map +1 -0
  161. package/dist/types/document.js +6 -0
  162. package/dist/types/document.js.map +1 -0
  163. package/dist/types/index.d.ts +86 -0
  164. package/dist/types/index.d.ts.map +1 -0
  165. package/dist/types/index.js +6 -0
  166. package/dist/types/index.js.map +1 -0
  167. package/package.json +53 -0
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ /**
3
+ * Database schema definitions
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.SCHEMA_SQL = void 0;
7
+ exports.initializeDatabase = initializeDatabase;
8
+ exports.SCHEMA_SQL = `
9
+ CREATE TABLE IF NOT EXISTS memory_items (
10
+ id TEXT PRIMARY KEY,
11
+ type TEXT NOT NULL,
12
+ content TEXT NOT NULL,
13
+ content_hash TEXT NOT NULL,
14
+
15
+ actor_id TEXT,
16
+ actor_type TEXT,
17
+ scope_project_id TEXT,
18
+ scope_channel_id TEXT,
19
+ scope_thread_id TEXT,
20
+ scope_run_id TEXT,
21
+
22
+ tags_json TEXT,
23
+ confidence REAL,
24
+ utility REAL DEFAULT 0,
25
+
26
+ source_kind TEXT,
27
+ source_ref TEXT,
28
+
29
+ created_at TEXT NOT NULL,
30
+ updated_at TEXT,
31
+ deleted_at TEXT,
32
+
33
+ embedding_status TEXT NOT NULL DEFAULT 'pending',
34
+ embedding_model TEXT,
35
+ embedding_dim INTEGER,
36
+ embedding_updated_at TEXT
37
+ );
38
+
39
+ CREATE INDEX IF NOT EXISTS idx_memory_scope
40
+ ON memory_items(scope_project_id, scope_channel_id, scope_thread_id, actor_id);
41
+
42
+ CREATE INDEX IF NOT EXISTS idx_memory_hash
43
+ ON memory_items(content_hash);
44
+
45
+ CREATE INDEX IF NOT EXISTS idx_memory_deleted
46
+ ON memory_items(deleted_at);
47
+
48
+ CREATE TABLE IF NOT EXISTS memory_embeddings (
49
+ memory_id TEXT PRIMARY KEY,
50
+ model TEXT NOT NULL,
51
+ dim INTEGER NOT NULL,
52
+ vector_blob BLOB NOT NULL,
53
+ created_at TEXT NOT NULL,
54
+ FOREIGN KEY(memory_id) REFERENCES memory_items(id) ON DELETE CASCADE
55
+ );
56
+
57
+ CREATE INDEX IF NOT EXISTS idx_embedding_model
58
+ ON memory_embeddings(model, dim);
59
+
60
+ CREATE TABLE IF NOT EXISTS kv_meta (
61
+ k TEXT PRIMARY KEY,
62
+ v TEXT NOT NULL
63
+ );
64
+ `;
65
+ function initializeDatabase(db, wal = true) {
66
+ // Set PRAGMA for performance
67
+ if (wal !== false) {
68
+ db.pragma("journal_mode = WAL");
69
+ }
70
+ db.pragma("synchronous = NORMAL");
71
+ db.pragma("busy_timeout = 5000");
72
+ // Create tables
73
+ db.exec(exports.SCHEMA_SQL);
74
+ }
75
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/persistence/database/schema.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AA4DH,gDAUC;AApEY,QAAA,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwDzB,CAAC;AAEF,SAAgB,kBAAkB,CAAC,EAAO,EAAE,MAAe,IAAI;IAC7D,6BAA6B;IAC7B,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;QAClB,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAClC,CAAC;IACD,EAAE,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;IAClC,EAAE,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;IAEjC,gBAAgB;IAChB,EAAE,CAAC,IAAI,CAAC,kBAAU,CAAC,CAAC;AACtB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { SqliteMemoryRepo } from "./sqlite-repo";
2
+ export type { SqliteMemoryRepoOptions } from "./sqlite-repo";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/persistence/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,YAAY,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SqliteMemoryRepo = void 0;
4
+ var sqlite_repo_1 = require("./sqlite-repo");
5
+ Object.defineProperty(exports, "SqliteMemoryRepo", { enumerable: true, get: function () { return sqlite_repo_1.SqliteMemoryRepo; } });
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/persistence/index.ts"],"names":[],"mappings":";;;AAAA,6CAAiD;AAAxC,+GAAA,gBAAgB,OAAA"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Embedding operations for SQLite repository
3
+ */
4
+ import Database from "better-sqlite3";
5
+ export interface EmbeddingOperations {
6
+ saveEmbedding(memoryId: string, model: string, dim: number, vector: Float32Array): Promise<void>;
7
+ markEmbeddingReady(memoryId: string, model: string, dim: number): Promise<void>;
8
+ loadEmbedding(memoryId: string): Promise<Float32Array | null>;
9
+ }
10
+ export declare class EmbeddingOperationsImpl implements EmbeddingOperations {
11
+ private db;
12
+ constructor(db: Database.Database);
13
+ saveEmbedding(memoryId: string, model: string, dim: number, vector: Float32Array): Promise<void>;
14
+ markEmbeddingReady(memoryId: string, model: string, dim: number): Promise<void>;
15
+ loadEmbedding(memoryId: string): Promise<Float32Array | null>;
16
+ }
17
+ //# sourceMappingURL=embedding-operations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embedding-operations.d.ts","sourceRoot":"","sources":["../../../src/persistence/repository/embedding-operations.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAEtC,MAAM,WAAW,mBAAmB;IAClC,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjG,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChF,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;CAC/D;AAED,qBAAa,uBAAwB,YAAW,mBAAmB;IACrD,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAEnC,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IA4BhG,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB/E,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;CAapE"}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ /**
3
+ * Embedding operations for SQLite repository
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.EmbeddingOperationsImpl = void 0;
7
+ class EmbeddingOperationsImpl {
8
+ constructor(db) {
9
+ this.db = db;
10
+ }
11
+ async saveEmbedding(memoryId, model, dim, vector) {
12
+ const buffer = Buffer.from(vector.buffer);
13
+ const now = new Date().toISOString();
14
+ this.db
15
+ .prepare(`
16
+ INSERT OR REPLACE INTO memory_embeddings (memory_id, model, dim, vector_blob, created_at)
17
+ VALUES (?, ?, ?, ?, ?)
18
+ `)
19
+ .run(memoryId, model, dim, buffer, now);
20
+ // Update embedding status
21
+ this.db
22
+ .prepare(`
23
+ UPDATE memory_items
24
+ SET embedding_status = 'ready',
25
+ embedding_model = ?,
26
+ embedding_dim = ?,
27
+ embedding_updated_at = ?
28
+ WHERE id = ?
29
+ `)
30
+ .run(model, dim, now, memoryId);
31
+ }
32
+ async markEmbeddingReady(memoryId, model, dim) {
33
+ const now = new Date().toISOString();
34
+ this.db
35
+ .prepare(`
36
+ UPDATE memory_items
37
+ SET embedding_status = 'ready',
38
+ embedding_model = ?,
39
+ embedding_dim = ?,
40
+ embedding_updated_at = ?
41
+ WHERE id = ?
42
+ `)
43
+ .run(model, dim, now, memoryId);
44
+ }
45
+ async loadEmbedding(memoryId) {
46
+ const row = this.db
47
+ .prepare("SELECT vector_blob FROM memory_embeddings WHERE memory_id = ?")
48
+ .get(memoryId);
49
+ if (!row) {
50
+ return null;
51
+ }
52
+ // Convert BLOB to Float32Array
53
+ const buffer = row.vector_blob;
54
+ return new Float32Array(buffer.buffer, buffer.byteOffset, buffer.byteLength / 4);
55
+ }
56
+ }
57
+ exports.EmbeddingOperationsImpl = EmbeddingOperationsImpl;
58
+ //# sourceMappingURL=embedding-operations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embedding-operations.js","sourceRoot":"","sources":["../../../src/persistence/repository/embedding-operations.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAUH,MAAa,uBAAuB;IAClC,YAAoB,EAAqB;QAArB,OAAE,GAAF,EAAE,CAAmB;IAAG,CAAC;IAE7C,KAAK,CAAC,aAAa,CAAC,QAAgB,EAAE,KAAa,EAAE,GAAW,EAAE,MAAoB;QACpF,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC1C,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAErC,IAAI,CAAC,EAAE;aACJ,OAAO,CACN;;;OAGD,CACA;aACA,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;QAE1C,0BAA0B;QAC1B,IAAI,CAAC,EAAE;aACJ,OAAO,CACN;;;;;;;OAOD,CACA;aACA,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,QAAgB,EAAE,KAAa,EAAE,GAAW;QACnE,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,IAAI,CAAC,EAAE;aACJ,OAAO,CACN;;;;;;;OAOD,CACA;aACA,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,QAAgB;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE;aAChB,OAAO,CAAC,+DAA+D,CAAC;aACxE,GAAG,CAAC,QAAQ,CAAwC,CAAC;QAExD,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,IAAI,CAAC;QACd,CAAC;QAED,+BAA+B;QAC/B,MAAM,MAAM,GAAG,GAAG,CAAC,WAAW,CAAC;QAC/B,OAAO,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;IACnF,CAAC;CACF;AA5DD,0DA4DC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Memory operations for SQLite repository
3
+ */
4
+ import Database from "better-sqlite3";
5
+ import { MemoryItem } from "../../types";
6
+ export interface MemoryOperations {
7
+ upsertMemory(item: MemoryItem): Promise<{
8
+ inserted: boolean;
9
+ }>;
10
+ loadAllActive(opts?: {
11
+ limit?: number;
12
+ orderBy?: "utility" | "createdAt";
13
+ }): Promise<MemoryItem[]>;
14
+ loadByIds(ids: string[]): Promise<MemoryItem[]>;
15
+ }
16
+ export declare class MemoryOperationsImpl implements MemoryOperations {
17
+ private db;
18
+ constructor(db: Database.Database);
19
+ upsertMemory(item: MemoryItem): Promise<{
20
+ inserted: boolean;
21
+ }>;
22
+ loadAllActive(opts?: {
23
+ limit?: number;
24
+ orderBy?: "utility" | "createdAt";
25
+ }): Promise<MemoryItem[]>;
26
+ loadByIds(ids: string[]): Promise<MemoryItem[]>;
27
+ }
28
+ //# sourceMappingURL=memory-operations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-operations.d.ts","sourceRoot":"","sources":["../../../src/persistence/repository/memory-operations.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIzC,MAAM,WAAW,gBAAgB;IAC/B,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC/D,aAAa,CAAC,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IACnG,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;CACjD;AAED,qBAAa,oBAAqB,YAAW,gBAAgB;IAC/C,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAEnC,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC;IAkF9D,aAAa,CAAC,IAAI,CAAC,EAAE;QACzB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,CAAC;KACnC,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAkBnB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;CAetD"}
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ /**
3
+ * Memory operations for SQLite repository
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.MemoryOperationsImpl = void 0;
7
+ const hash_1 = require("../utils/hash");
8
+ const serialization_1 = require("../utils/serialization");
9
+ class MemoryOperationsImpl {
10
+ constructor(db) {
11
+ this.db = db;
12
+ }
13
+ async upsertMemory(item) {
14
+ const contentHash = (0, hash_1.computeContentHash)(item.content);
15
+ const actorFields = (0, serialization_1.serializeActor)(item.actor);
16
+ const scopeFields = (0, serialization_1.serializeScope)(item.scope);
17
+ const now = new Date().toISOString();
18
+ // Check if exists (same content_hash + scope)
19
+ const existing = this.db
20
+ .prepare(`
21
+ SELECT id FROM memory_items
22
+ WHERE content_hash = ?
23
+ AND scope_project_id IS ?
24
+ AND scope_channel_id IS ?
25
+ AND scope_thread_id IS ?
26
+ AND actor_id IS ?
27
+ AND deleted_at IS NULL
28
+ LIMIT 1
29
+ `)
30
+ .get(contentHash, scopeFields.scope_project_id || null, scopeFields.scope_channel_id || null, scopeFields.scope_thread_id || null, actorFields.actor_id || null);
31
+ if (existing) {
32
+ // Update existing
33
+ this.db
34
+ .prepare(`
35
+ UPDATE memory_items
36
+ SET updated_at = ?,
37
+ confidence = COALESCE(?, confidence),
38
+ utility = COALESCE(?, utility),
39
+ tags_json = ?
40
+ WHERE id = ?
41
+ `)
42
+ .run(now, item.confidence, item.utility, item.tags ? JSON.stringify(item.tags) : null, existing.id);
43
+ return { inserted: false };
44
+ }
45
+ // Insert new
46
+ this.db
47
+ .prepare(`
48
+ INSERT INTO memory_items (
49
+ id, type, content, content_hash,
50
+ actor_id, actor_type,
51
+ scope_project_id, scope_channel_id, scope_thread_id, scope_run_id,
52
+ tags_json, confidence, utility,
53
+ source_kind, source_ref,
54
+ created_at, embedding_status
55
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 'pending')
56
+ `)
57
+ .run(item.id, item.type, item.content, contentHash, actorFields.actor_id || null, actorFields.actor_type || null, scopeFields.scope_project_id || null, scopeFields.scope_channel_id || null, scopeFields.scope_thread_id || null, scopeFields.scope_run_id || null, item.tags ? JSON.stringify(item.tags) : null, item.confidence || null, item.utility || 0, item.source?.kind || null, item.source?.ref || null, now);
58
+ return { inserted: true };
59
+ }
60
+ async loadAllActive(opts) {
61
+ const orderBy = opts?.orderBy === "utility" ? "utility DESC, created_at DESC" : "created_at DESC";
62
+ const limit = opts?.limit ? `LIMIT ${opts.limit}` : "";
63
+ const rows = this.db
64
+ .prepare(`
65
+ SELECT * FROM memory_items
66
+ WHERE deleted_at IS NULL
67
+ ORDER BY ${orderBy}
68
+ ${limit}
69
+ `)
70
+ .all();
71
+ return rows.map((row) => (0, serialization_1.rowToMemoryItem)(row, serialization_1.deserializeActor, serialization_1.deserializeScope));
72
+ }
73
+ async loadByIds(ids) {
74
+ if (ids.length === 0)
75
+ return [];
76
+ const placeholders = ids.map(() => "?").join(",");
77
+ const rows = this.db
78
+ .prepare(`
79
+ SELECT * FROM memory_items
80
+ WHERE id IN (${placeholders}) AND deleted_at IS NULL
81
+ `)
82
+ .all(...ids);
83
+ return rows.map((row) => (0, serialization_1.rowToMemoryItem)(row, serialization_1.deserializeActor, serialization_1.deserializeScope));
84
+ }
85
+ }
86
+ exports.MemoryOperationsImpl = MemoryOperationsImpl;
87
+ //# sourceMappingURL=memory-operations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-operations.js","sourceRoot":"","sources":["../../../src/persistence/repository/memory-operations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Metadata operations for SQLite repository
3
+ */
4
+ import Database from "better-sqlite3";
5
+ export interface MetaOperations {
6
+ getMeta(key: string): Promise<string | null>;
7
+ setMeta(key: string, value: string): Promise<void>;
8
+ }
9
+ export declare class MetaOperationsImpl implements MetaOperations {
10
+ private db;
11
+ constructor(db: Database.Database);
12
+ getMeta(key: string): Promise<string | null>;
13
+ setMeta(key: string, value: string): Promise<void>;
14
+ }
15
+ //# sourceMappingURL=meta-operations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meta-operations.d.ts","sourceRoot":"","sources":["../../../src/persistence/repository/meta-operations.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAEtC,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpD;AAED,qBAAa,kBAAmB,YAAW,cAAc;IAC3C,OAAO,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAEnC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAK5C,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGzD"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ /**
3
+ * Metadata operations for SQLite repository
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.MetaOperationsImpl = void 0;
7
+ class MetaOperationsImpl {
8
+ constructor(db) {
9
+ this.db = db;
10
+ }
11
+ async getMeta(key) {
12
+ const row = this.db.prepare("SELECT v FROM kv_meta WHERE k = ?").get(key);
13
+ return row?.v || null;
14
+ }
15
+ async setMeta(key, value) {
16
+ this.db.prepare("INSERT OR REPLACE INTO kv_meta (k, v) VALUES (?, ?)").run(key, value);
17
+ }
18
+ }
19
+ exports.MetaOperationsImpl = MetaOperationsImpl;
20
+ //# sourceMappingURL=meta-operations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meta-operations.js","sourceRoot":"","sources":["../../../src/persistence/repository/meta-operations.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AASH,MAAa,kBAAkB;IAC7B,YAAoB,EAAqB;QAArB,OAAE,GAAF,EAAE,CAAmB;IAAG,CAAC;IAE7C,KAAK,CAAC,OAAO,CAAC,GAAW;QACvB,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC,GAAG,CAAC,GAAG,CAA8B,CAAC;QACvG,OAAO,GAAG,EAAE,CAAC,IAAI,IAAI,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,KAAa;QACtC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,qDAAqD,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACzF,CAAC;CACF;AAXD,gDAWC"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * SQLite Memory Repository - Source of Truth
3
+ */
4
+ import { MemoryItem } from "../types";
5
+ export interface SqliteMemoryRepoOptions {
6
+ path: string;
7
+ wal?: boolean;
8
+ }
9
+ export declare class SqliteMemoryRepo {
10
+ private options;
11
+ private db;
12
+ private memoryOps;
13
+ private embeddingOps;
14
+ private metaOps;
15
+ constructor(options: SqliteMemoryRepoOptions);
16
+ /**
17
+ * UPSERT memory item
18
+ */
19
+ upsertMemory(item: MemoryItem): Promise<{
20
+ inserted: boolean;
21
+ }>;
22
+ /**
23
+ * Save embedding vector
24
+ */
25
+ saveEmbedding(memoryId: string, model: string, dim: number, vector: Float32Array): Promise<void>;
26
+ /**
27
+ * Mark embedding as ready
28
+ */
29
+ markEmbeddingReady(memoryId: string, model: string, dim: number): Promise<void>;
30
+ /**
31
+ * Load all active memory items
32
+ */
33
+ loadAllActive(opts?: {
34
+ limit?: number;
35
+ orderBy?: "utility" | "createdAt";
36
+ }): Promise<MemoryItem[]>;
37
+ /**
38
+ * Load memory items by IDs
39
+ */
40
+ loadByIds(ids: string[]): Promise<MemoryItem[]>;
41
+ /**
42
+ * Get metadata value
43
+ */
44
+ getMeta(key: string): Promise<string | null>;
45
+ /**
46
+ * Set metadata value
47
+ */
48
+ setMeta(key: string, value: string): Promise<void>;
49
+ /**
50
+ * Load embedding vector by memory ID
51
+ */
52
+ loadEmbedding(memoryId: string): Promise<Float32Array | null>;
53
+ /**
54
+ * Close database connection
55
+ */
56
+ close(): void;
57
+ }
58
+ //# sourceMappingURL=sqlite-repo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite-repo.d.ts","sourceRoot":"","sources":["../../src/persistence/sqlite-repo.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAMtC,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,qBAAa,gBAAgB;IAMf,OAAO,CAAC,OAAO;IAL3B,OAAO,CAAC,EAAE,CAAoB;IAC9B,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,YAAY,CAA0B;IAC9C,OAAO,CAAC,OAAO,CAAqB;gBAEhB,OAAO,EAAE,uBAAuB;IAUpD;;OAEG;IACG,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,OAAO,CAAA;KAAE,CAAC;IAIpE;;OAEG;IACG,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAItG;;OAEG;IACG,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrF;;OAEG;IACG,aAAa,CAAC,IAAI,CAAC,EAAE;QACzB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,SAAS,GAAG,WAAW,CAAC;KACnC,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAIzB;;OAEG;IACG,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAIrD;;OAEG;IACG,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAIlD;;OAEG;IACG,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxD;;OAEG;IACG,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAInE;;OAEG;IACH,KAAK,IAAI,IAAI;CAGd"}
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ /**
3
+ * SQLite Memory Repository - Source of Truth
4
+ */
5
+ var __importDefault = (this && this.__importDefault) || function (mod) {
6
+ return (mod && mod.__esModule) ? mod : { "default": mod };
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.SqliteMemoryRepo = void 0;
10
+ const better_sqlite3_1 = __importDefault(require("better-sqlite3"));
11
+ const schema_1 = require("./database/schema");
12
+ const memory_operations_1 = require("./repository/memory-operations");
13
+ const embedding_operations_1 = require("./repository/embedding-operations");
14
+ const meta_operations_1 = require("./repository/meta-operations");
15
+ class SqliteMemoryRepo {
16
+ constructor(options) {
17
+ this.options = options;
18
+ this.db = new better_sqlite3_1.default(options.path);
19
+ (0, schema_1.initializeDatabase)(this.db, options.wal !== false);
20
+ // Initialize operation handlers
21
+ this.memoryOps = new memory_operations_1.MemoryOperationsImpl(this.db);
22
+ this.embeddingOps = new embedding_operations_1.EmbeddingOperationsImpl(this.db);
23
+ this.metaOps = new meta_operations_1.MetaOperationsImpl(this.db);
24
+ }
25
+ /**
26
+ * UPSERT memory item
27
+ */
28
+ async upsertMemory(item) {
29
+ return this.memoryOps.upsertMemory(item);
30
+ }
31
+ /**
32
+ * Save embedding vector
33
+ */
34
+ async saveEmbedding(memoryId, model, dim, vector) {
35
+ return this.embeddingOps.saveEmbedding(memoryId, model, dim, vector);
36
+ }
37
+ /**
38
+ * Mark embedding as ready
39
+ */
40
+ async markEmbeddingReady(memoryId, model, dim) {
41
+ return this.embeddingOps.markEmbeddingReady(memoryId, model, dim);
42
+ }
43
+ /**
44
+ * Load all active memory items
45
+ */
46
+ async loadAllActive(opts) {
47
+ return this.memoryOps.loadAllActive(opts);
48
+ }
49
+ /**
50
+ * Load memory items by IDs
51
+ */
52
+ async loadByIds(ids) {
53
+ return this.memoryOps.loadByIds(ids);
54
+ }
55
+ /**
56
+ * Get metadata value
57
+ */
58
+ async getMeta(key) {
59
+ return this.metaOps.getMeta(key);
60
+ }
61
+ /**
62
+ * Set metadata value
63
+ */
64
+ async setMeta(key, value) {
65
+ return this.metaOps.setMeta(key, value);
66
+ }
67
+ /**
68
+ * Load embedding vector by memory ID
69
+ */
70
+ async loadEmbedding(memoryId) {
71
+ return this.embeddingOps.loadEmbedding(memoryId);
72
+ }
73
+ /**
74
+ * Close database connection
75
+ */
76
+ close() {
77
+ this.db.close();
78
+ }
79
+ }
80
+ exports.SqliteMemoryRepo = SqliteMemoryRepo;
81
+ //# sourceMappingURL=sqlite-repo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sqlite-repo.js","sourceRoot":"","sources":["../../src/persistence/sqlite-repo.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;AAEH,oEAAsC;AAEtC,8CAAuD;AACvD,sEAAsE;AACtE,4EAA4E;AAC5E,kEAAkE;AAOlE,MAAa,gBAAgB;IAM3B,YAAoB,OAAgC;QAAhC,YAAO,GAAP,OAAO,CAAyB;QAClD,IAAI,CAAC,EAAE,GAAG,IAAI,wBAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACrC,IAAA,2BAAkB,EAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC;QAEnD,gCAAgC;QAChC,IAAI,CAAC,SAAS,GAAG,IAAI,wCAAoB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,YAAY,GAAG,IAAI,8CAAuB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzD,IAAI,CAAC,OAAO,GAAG,IAAI,oCAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,IAAgB;QACjC,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,QAAgB,EAAE,KAAa,EAAE,GAAW,EAAE,MAAoB;QACpF,OAAO,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IACvE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB,CAAC,QAAgB,EAAE,KAAa,EAAE,GAAW;QACnE,OAAO,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IACpE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,IAGnB;QACC,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,GAAa;QAC3B,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,GAAW;QACvB,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,KAAa;QACtC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,QAAgB;QAClC,OAAO,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACnD,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC;CACF;AAjFD,4CAiFC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Hash utilities for content deduplication
3
+ */
4
+ /**
5
+ * Compute content hash for deduplication
6
+ */
7
+ export declare function computeContentHash(content: string): string;
8
+ //# sourceMappingURL=hash.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../../../src/persistence/utils/hash.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAG1D"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ /**
3
+ * Hash utilities for content deduplication
4
+ */
5
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ var desc = Object.getOwnPropertyDescriptor(m, k);
8
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
+ desc = { enumerable: true, get: function() { return m[k]; } };
10
+ }
11
+ Object.defineProperty(o, k2, desc);
12
+ }) : (function(o, m, k, k2) {
13
+ if (k2 === undefined) k2 = k;
14
+ o[k2] = m[k];
15
+ }));
16
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
18
+ }) : function(o, v) {
19
+ o["default"] = v;
20
+ });
21
+ var __importStar = (this && this.__importStar) || (function () {
22
+ var ownKeys = function(o) {
23
+ ownKeys = Object.getOwnPropertyNames || function (o) {
24
+ var ar = [];
25
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
+ return ar;
27
+ };
28
+ return ownKeys(o);
29
+ };
30
+ return function (mod) {
31
+ if (mod && mod.__esModule) return mod;
32
+ var result = {};
33
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
+ __setModuleDefault(result, mod);
35
+ return result;
36
+ };
37
+ })();
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.computeContentHash = computeContentHash;
40
+ const crypto = __importStar(require("crypto"));
41
+ /**
42
+ * Compute content hash for deduplication
43
+ */
44
+ function computeContentHash(content) {
45
+ const normalized = content.trim().toLowerCase();
46
+ return crypto.createHash("sha256").update(normalized).digest("hex");
47
+ }
48
+ //# sourceMappingURL=hash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hash.js","sourceRoot":"","sources":["../../../src/persistence/utils/hash.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOH,gDAGC;AARD,+CAAiC;AAEjC;;GAEG;AACH,SAAgB,kBAAkB,CAAC,OAAe;IAChD,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAChD,OAAO,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACtE,CAAC"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Serialization utilities for SQLite repository
3
+ */
4
+ import { Actor, Scope, MemoryItem } from "../../types";
5
+ /**
6
+ * Serialize actor to database fields
7
+ */
8
+ export declare function serializeActor(actor?: Actor): {
9
+ actor_id?: string;
10
+ actor_type?: string;
11
+ };
12
+ /**
13
+ * Deserialize actor from database
14
+ */
15
+ export declare function deserializeActor(row: any): Actor | undefined;
16
+ /**
17
+ * Serialize scope to database fields
18
+ */
19
+ export declare function serializeScope(scope?: Scope): {
20
+ scope_project_id?: string;
21
+ scope_channel_id?: string;
22
+ scope_thread_id?: string;
23
+ scope_run_id?: string;
24
+ };
25
+ /**
26
+ * Deserialize scope from database
27
+ */
28
+ export declare function deserializeScope(row: any): Scope | undefined;
29
+ /**
30
+ * Convert database row to MemoryItem
31
+ */
32
+ export declare function rowToMemoryItem(row: any, deserializeActorFn: (row: any) => Actor | undefined, deserializeScopeFn: (row: any) => Scope | undefined): MemoryItem;
33
+ //# sourceMappingURL=serialization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serialization.d.ts","sourceRoot":"","sources":["../../../src/persistence/utils/serialization.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEvD;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAMxF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,GAAG,GAAG,KAAK,GAAG,SAAS,CAO5D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG;IAC7C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAQA;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,GAAG,GAAG,KAAK,GAAG,SAAS,CAU5D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,kBAAkB,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,KAAK,GAAG,SAAS,EAAE,kBAAkB,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,KAAK,GAAG,SAAS,GAAG,UAAU,CAoB9J"}