@bip-krishna/agentmind 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (169) hide show
  1. package/.agentmind/memory.db +0 -0
  2. package/.context-memory/memory.db +0 -0
  3. package/README.md +176 -0
  4. package/apps/dashboard/src/server.ts +369 -0
  5. package/cli/src/index.ts +163 -0
  6. package/dist/apps/dashboard/src/server.d.ts +6 -0
  7. package/dist/apps/dashboard/src/server.d.ts.map +1 -0
  8. package/dist/apps/dashboard/src/server.js +360 -0
  9. package/dist/apps/dashboard/src/server.js.map +1 -0
  10. package/dist/cli/src/index.d.ts +3 -0
  11. package/dist/cli/src/index.d.ts.map +1 -0
  12. package/dist/cli/src/index.js +162 -0
  13. package/dist/cli/src/index.js.map +1 -0
  14. package/dist/examples/advanced.d.ts +2 -0
  15. package/dist/examples/advanced.d.ts.map +1 -0
  16. package/dist/examples/advanced.js +41 -0
  17. package/dist/examples/advanced.js.map +1 -0
  18. package/dist/examples/basic.d.ts +2 -0
  19. package/dist/examples/basic.d.ts.map +1 -0
  20. package/dist/examples/basic.js +22 -0
  21. package/dist/examples/basic.js.map +1 -0
  22. package/dist/packages/core/src/consolidation.d.ts +27 -0
  23. package/dist/packages/core/src/consolidation.d.ts.map +1 -0
  24. package/dist/packages/core/src/consolidation.js +97 -0
  25. package/dist/packages/core/src/consolidation.js.map +1 -0
  26. package/dist/packages/core/src/events.d.ts +18 -0
  27. package/dist/packages/core/src/events.d.ts.map +1 -0
  28. package/dist/packages/core/src/events.js +13 -0
  29. package/dist/packages/core/src/events.js.map +1 -0
  30. package/dist/packages/core/src/extraction.d.ts +32 -0
  31. package/dist/packages/core/src/extraction.d.ts.map +1 -0
  32. package/dist/packages/core/src/extraction.js +65 -0
  33. package/dist/packages/core/src/extraction.js.map +1 -0
  34. package/dist/packages/core/src/index.d.ts +10 -0
  35. package/dist/packages/core/src/index.d.ts.map +1 -0
  36. package/dist/packages/core/src/index.js +7 -0
  37. package/dist/packages/core/src/index.js.map +1 -0
  38. package/dist/packages/core/src/memory-store.d.ts +36 -0
  39. package/dist/packages/core/src/memory-store.d.ts.map +1 -0
  40. package/dist/packages/core/src/memory-store.js +2 -0
  41. package/dist/packages/core/src/memory-store.js.map +1 -0
  42. package/dist/packages/core/src/memory.d.ts +75 -0
  43. package/dist/packages/core/src/memory.d.ts.map +1 -0
  44. package/dist/packages/core/src/memory.js +402 -0
  45. package/dist/packages/core/src/memory.js.map +1 -0
  46. package/dist/packages/core/src/policy.d.ts +17 -0
  47. package/dist/packages/core/src/policy.d.ts.map +1 -0
  48. package/dist/packages/core/src/policy.js +22 -0
  49. package/dist/packages/core/src/policy.js.map +1 -0
  50. package/dist/packages/core/src/types.d.ts +102 -0
  51. package/dist/packages/core/src/types.d.ts.map +1 -0
  52. package/dist/packages/core/src/types.js +23 -0
  53. package/dist/packages/core/src/types.js.map +1 -0
  54. package/dist/packages/embeddings/src/index.d.ts +4 -0
  55. package/dist/packages/embeddings/src/index.d.ts.map +1 -0
  56. package/dist/packages/embeddings/src/index.js +4 -0
  57. package/dist/packages/embeddings/src/index.js.map +1 -0
  58. package/dist/packages/embeddings/src/local.d.ts +15 -0
  59. package/dist/packages/embeddings/src/local.d.ts.map +1 -0
  60. package/dist/packages/embeddings/src/local.js +45 -0
  61. package/dist/packages/embeddings/src/local.js.map +1 -0
  62. package/dist/packages/embeddings/src/openai.d.ts +17 -0
  63. package/dist/packages/embeddings/src/openai.d.ts.map +1 -0
  64. package/dist/packages/embeddings/src/openai.js +41 -0
  65. package/dist/packages/embeddings/src/openai.js.map +1 -0
  66. package/dist/packages/embeddings/src/provider.d.ts +8 -0
  67. package/dist/packages/embeddings/src/provider.d.ts.map +1 -0
  68. package/dist/packages/embeddings/src/provider.js +12 -0
  69. package/dist/packages/embeddings/src/provider.js.map +1 -0
  70. package/dist/packages/integrations/src/anthropic.d.ts +15 -0
  71. package/dist/packages/integrations/src/anthropic.d.ts.map +1 -0
  72. package/dist/packages/integrations/src/anthropic.js +25 -0
  73. package/dist/packages/integrations/src/anthropic.js.map +1 -0
  74. package/dist/packages/integrations/src/index.d.ts +4 -0
  75. package/dist/packages/integrations/src/index.d.ts.map +1 -0
  76. package/dist/packages/integrations/src/index.js +4 -0
  77. package/dist/packages/integrations/src/index.js.map +1 -0
  78. package/dist/packages/integrations/src/openai.d.ts +27 -0
  79. package/dist/packages/integrations/src/openai.d.ts.map +1 -0
  80. package/dist/packages/integrations/src/openai.js +26 -0
  81. package/dist/packages/integrations/src/openai.js.map +1 -0
  82. package/dist/packages/integrations/src/vercel.d.ts +24 -0
  83. package/dist/packages/integrations/src/vercel.d.ts.map +1 -0
  84. package/dist/packages/integrations/src/vercel.js +20 -0
  85. package/dist/packages/integrations/src/vercel.js.map +1 -0
  86. package/dist/packages/retrieval/src/index.d.ts +3 -0
  87. package/dist/packages/retrieval/src/index.d.ts.map +1 -0
  88. package/dist/packages/retrieval/src/index.js +3 -0
  89. package/dist/packages/retrieval/src/index.js.map +1 -0
  90. package/dist/packages/retrieval/src/ranker.d.ts +21 -0
  91. package/dist/packages/retrieval/src/ranker.d.ts.map +1 -0
  92. package/dist/packages/retrieval/src/ranker.js +54 -0
  93. package/dist/packages/retrieval/src/ranker.js.map +1 -0
  94. package/dist/packages/retrieval/src/token.d.ts +3 -0
  95. package/dist/packages/retrieval/src/token.d.ts.map +1 -0
  96. package/dist/packages/retrieval/src/token.js +7 -0
  97. package/dist/packages/retrieval/src/token.js.map +1 -0
  98. package/dist/packages/storage/src/config.d.ts +14 -0
  99. package/dist/packages/storage/src/config.d.ts.map +1 -0
  100. package/dist/packages/storage/src/config.js +41 -0
  101. package/dist/packages/storage/src/config.js.map +1 -0
  102. package/dist/packages/storage/src/index.d.ts +4 -0
  103. package/dist/packages/storage/src/index.d.ts.map +1 -0
  104. package/dist/packages/storage/src/index.js +4 -0
  105. package/dist/packages/storage/src/index.js.map +1 -0
  106. package/dist/packages/storage/src/memory-store.d.ts +37 -0
  107. package/dist/packages/storage/src/memory-store.d.ts.map +1 -0
  108. package/dist/packages/storage/src/memory-store.js +107 -0
  109. package/dist/packages/storage/src/memory-store.js.map +1 -0
  110. package/dist/packages/storage/src/migrations.d.ts +12 -0
  111. package/dist/packages/storage/src/migrations.d.ts.map +1 -0
  112. package/dist/packages/storage/src/migrations.js +89 -0
  113. package/dist/packages/storage/src/migrations.js.map +1 -0
  114. package/dist/packages/storage/src/postgres-store.d.ts +45 -0
  115. package/dist/packages/storage/src/postgres-store.d.ts.map +1 -0
  116. package/dist/packages/storage/src/postgres-store.js +282 -0
  117. package/dist/packages/storage/src/postgres-store.js.map +1 -0
  118. package/dist/packages/storage/src/sqlite-store.d.ts +36 -0
  119. package/dist/packages/storage/src/sqlite-store.d.ts.map +1 -0
  120. package/dist/packages/storage/src/sqlite-store.js +243 -0
  121. package/dist/packages/storage/src/sqlite-store.js.map +1 -0
  122. package/examples/advanced.ts +46 -0
  123. package/examples/basic.ts +25 -0
  124. package/package.json +52 -0
  125. package/packages/core/package.json +13 -0
  126. package/packages/core/src/consolidation.ts +104 -0
  127. package/packages/core/src/events.ts +25 -0
  128. package/packages/core/src/extraction.ts +81 -0
  129. package/packages/core/src/index.ts +22 -0
  130. package/packages/core/src/memory-store.ts +50 -0
  131. package/packages/core/src/memory.ts +447 -0
  132. package/packages/core/src/policy.ts +36 -0
  133. package/packages/core/src/types.ts +119 -0
  134. package/packages/core/tsconfig.json +6 -0
  135. package/packages/embeddings/package.json +9 -0
  136. package/packages/embeddings/src/index.ts +3 -0
  137. package/packages/embeddings/src/local.ts +47 -0
  138. package/packages/embeddings/src/openai.ts +50 -0
  139. package/packages/embeddings/src/provider.d.ts.map +1 -0
  140. package/packages/embeddings/src/provider.js.map +1 -0
  141. package/packages/embeddings/src/provider.ts +17 -0
  142. package/packages/embeddings/tsconfig.json +6 -0
  143. package/packages/integrations/package.json +7 -0
  144. package/packages/integrations/src/anthropic.ts +34 -0
  145. package/packages/integrations/src/index.ts +3 -0
  146. package/packages/integrations/src/openai.ts +52 -0
  147. package/packages/integrations/src/vercel.ts +26 -0
  148. package/packages/retrieval/package.json +8 -0
  149. package/packages/retrieval/src/index.ts +2 -0
  150. package/packages/retrieval/src/ranker.d.ts.map +1 -0
  151. package/packages/retrieval/src/ranker.js.map +1 -0
  152. package/packages/retrieval/src/ranker.ts +77 -0
  153. package/packages/retrieval/src/token.d.ts.map +1 -0
  154. package/packages/retrieval/src/token.js.map +1 -0
  155. package/packages/retrieval/src/token.ts +5 -0
  156. package/packages/retrieval/tsconfig.json +6 -0
  157. package/packages/storage/package.json +11 -0
  158. package/packages/storage/src/config.ts +44 -0
  159. package/packages/storage/src/index.ts +3 -0
  160. package/packages/storage/src/memory-store.ts +100 -0
  161. package/packages/storage/src/migrations.ts +96 -0
  162. package/packages/storage/src/postgres-store.ts +299 -0
  163. package/packages/storage/src/sqlite-store.ts +298 -0
  164. package/packages/storage/tsconfig.json +6 -0
  165. package/test-mvp.mjs +82 -0
  166. package/tests/consolidation.test.ts +45 -0
  167. package/tests/eval.test.ts +102 -0
  168. package/tsconfig.json +21 -0
  169. package/vitest.config.ts +8 -0
@@ -0,0 +1,162 @@
1
+ #!/usr/bin/env node
2
+ import { Memory } from "../../packages/core/src/memory.js";
3
+ import { SqliteMemoryStore } from "../../packages/storage/src/sqlite-store.js";
4
+ import { LocalEmbeddingProvider } from "../../packages/embeddings/src/local.js";
5
+ import * as fs from "node:fs";
6
+ const DB_PATH = process.env.AGENTMIND_DB ?? process.env.CTX_MEMORY_DB ?? "./.agentmind/memory.db";
7
+ const store = new SqliteMemoryStore({ path: DB_PATH });
8
+ const embed = new LocalEmbeddingProvider();
9
+ const [, , cmd, ...args] = process.argv;
10
+ function help() {
11
+ console.log(`
12
+ agentmind (formerly context-memory)
13
+
14
+ Usage:
15
+ agentmind init [--project <name>]
16
+ agentmind project list
17
+ agentmind project create <name>
18
+ agentmind project delete <name>
19
+ agentmind memory list --project <name> [--type <type>] [--limit <n>]
20
+ agentmind memory search --project <name> --query "text" [--limit 5]
21
+ agentmind memory show <id>
22
+ agentmind memory delete <id>
23
+ agentmind memory consolidate --project <name>
24
+ agentmind ingest --project <name> --content "text" [--role user]
25
+ agentmind export --project <name> [--include-archived]
26
+ agentmind dashboard [--port 4317]
27
+
28
+ Aliases: context-memory (legacy)
29
+ `);
30
+ }
31
+ async function main() {
32
+ if (!cmd || cmd === "help" || cmd === "--help")
33
+ return help();
34
+ if (cmd === "init") {
35
+ fs.mkdirSync("./.agentmind", { recursive: true });
36
+ // legacy compat
37
+ if (!fs.existsSync("./.context-memory"))
38
+ fs.mkdirSync("./.context-memory", { recursive: true });
39
+ console.log("Initialized .agentmind/");
40
+ console.log(`DB: ${DB_PATH}`);
41
+ const pIdx = args.indexOf("--project");
42
+ if (pIdx !== -1) {
43
+ const name = args[pIdx + 1];
44
+ const mem = await Memory.create({ project: name, store });
45
+ console.log(`Project: ${mem.project.name} (${mem.project.id})`);
46
+ }
47
+ return;
48
+ }
49
+ if (cmd === "project") {
50
+ const sub = args[0];
51
+ if (sub === "list") {
52
+ const projects = await store.listProjects();
53
+ console.log(JSON.stringify(projects, null, 2));
54
+ return;
55
+ }
56
+ if (sub === "create") {
57
+ const name = args[1];
58
+ if (!name)
59
+ throw new Error("name required");
60
+ const mem = await Memory.create({ project: name, store });
61
+ console.log(`Created project: ${mem.project.name} (${mem.project.id})`);
62
+ return;
63
+ }
64
+ if (sub === "delete") {
65
+ const name = args[1];
66
+ if (!name)
67
+ throw new Error("name required");
68
+ const proj = await store.getProjectByName(name) ?? await store.getProject(name);
69
+ if (!proj)
70
+ throw new Error("not found");
71
+ await store.deleteProject(proj.id);
72
+ console.log(`Deleted ${name}`);
73
+ return;
74
+ }
75
+ }
76
+ if (cmd === "memory") {
77
+ const sub = args[0];
78
+ if (sub === "list") {
79
+ const pIdx = args.indexOf("--project");
80
+ const project = pIdx !== -1 ? args[pIdx + 1] : null;
81
+ if (!project)
82
+ throw new Error("--project required");
83
+ const mem = await Memory.create({ project, store });
84
+ const exported = await mem.export();
85
+ console.log(JSON.stringify(exported.memories, null, 2));
86
+ return;
87
+ }
88
+ if (sub === "search") {
89
+ const pIdx = args.indexOf("--project");
90
+ const qIdx = args.indexOf("--query");
91
+ const lIdx = args.indexOf("--limit");
92
+ const project = pIdx !== -1 ? args[pIdx + 1] : null;
93
+ const query = qIdx !== -1 ? args[qIdx + 1] : null;
94
+ const limit = lIdx !== -1 ? Number(args[lIdx + 1]) : 5;
95
+ if (!project || !query)
96
+ throw new Error("--project and --query required");
97
+ const mem = await Memory.create({ project, store, embeddingProvider: embed });
98
+ const results = await mem.search(query, { limit });
99
+ console.log(JSON.stringify(results, null, 2));
100
+ return;
101
+ }
102
+ if (sub === "consolidate") {
103
+ const pIdx = args.indexOf("--project");
104
+ const project = pIdx !== -1 ? args[pIdx + 1] : null;
105
+ if (!project)
106
+ throw new Error("--project required");
107
+ const mem = await Memory.create({ project, store, embeddingProvider: embed });
108
+ const results = await mem.consolidate();
109
+ console.log(JSON.stringify(results, null, 2));
110
+ return;
111
+ }
112
+ if (sub === "show") {
113
+ const id = args[1];
114
+ const m = await store.getMemory(id);
115
+ console.log(JSON.stringify(m, null, 2));
116
+ return;
117
+ }
118
+ if (sub === "delete") {
119
+ const id = args[1];
120
+ await store.deleteMemory(id);
121
+ console.log(`Deleted ${id}`);
122
+ return;
123
+ }
124
+ }
125
+ if (cmd === "ingest") {
126
+ const pIdx = args.indexOf("--project");
127
+ const cIdx = args.indexOf("--content");
128
+ const rIdx = args.indexOf("--role");
129
+ const project = pIdx !== -1 ? args[pIdx + 1] : null;
130
+ const content = cIdx !== -1 ? args[cIdx + 1] : null;
131
+ const role = rIdx !== -1 ? args[rIdx + 1] : "user";
132
+ if (!project || !content)
133
+ throw new Error("--project and --content required");
134
+ const mem = await Memory.create({ project, store });
135
+ const res = await mem.ingest({ role, content });
136
+ console.log(JSON.stringify(res, null, 2));
137
+ return;
138
+ }
139
+ if (cmd === "export") {
140
+ const pIdx = args.indexOf("--project");
141
+ const project = pIdx !== -1 ? args[pIdx + 1] : null;
142
+ if (!project)
143
+ throw new Error("--project required");
144
+ const includeArchived = args.includes("--include-archived");
145
+ const mem = await Memory.create({ project, store });
146
+ const data = await mem.export({ includeArchived });
147
+ const out = `${project}.export.json`;
148
+ fs.writeFileSync(out, JSON.stringify(data, null, 2));
149
+ console.log(`Exported to ${out} (${data.memories.length} memories)`);
150
+ return;
151
+ }
152
+ if (cmd === "dashboard") {
153
+ const pIdx = args.indexOf("--port");
154
+ const port = pIdx !== -1 ? args[pIdx + 1] : "4317";
155
+ process.env.PORT = port;
156
+ await import("../../apps/dashboard/src/server.js");
157
+ return;
158
+ }
159
+ help();
160
+ }
161
+ main().catch(e => { console.error(e.message); process.exit(1); });
162
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../cli/src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=advanced.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"advanced.d.ts","sourceRoot":"","sources":["../../examples/advanced.ts"],"names":[],"mappings":""}
@@ -0,0 +1,41 @@
1
+ import { Memory } from "../packages/core/src/memory.js";
2
+ import { InMemoryStore } from "../packages/storage/src/memory-store.js";
3
+ import { LocalEmbeddingProvider } from "../packages/embeddings/src/local.js";
4
+ import { HeuristicExtractor } from "../packages/core/src/extraction.js";
5
+ // Policy + autoExtract + observability + consolidation demo
6
+ const store = new InMemoryStore();
7
+ const memory = await Memory.create({
8
+ project: "research-mesh",
9
+ store,
10
+ embeddingProvider: new LocalEmbeddingProvider(),
11
+ extractor: new HeuristicExtractor(),
12
+ policy: {
13
+ autoExtract: true,
14
+ minimumImportance: 0.6,
15
+ maxMemoriesPerProject: 10000,
16
+ storeSensitiveData: false,
17
+ },
18
+ });
19
+ memory.on("memory.created", (m) => console.log("[event] created:", m.content.slice(0, 40)));
20
+ memory.on("retrieval.completed", (e) => console.log("[event] retrieval:", e.query, "->", e.retrievedMemoryIds.length));
21
+ // Ingest conversation — auto-extracts memories
22
+ await memory.ingest({ role: "user", content: "We decided to use PostgreSQL with pgvector. SQLite isn't going to work for production because we need concurrent writes. Let's proceed with that." });
23
+ const ctx = await memory.context({ query: "What database did we decide to use?", maxTokens: 6000 });
24
+ console.log(ctx.text);
25
+ // Consolidation
26
+ for (let i = 0; i < 5; i++)
27
+ await memory.remember({ content: `Payment gateway timeout on API-4821 occurrence ${i}`, importance: 0.6 });
28
+ const consolidated = await memory.consolidate({ threshold: 0.5, minClusterSize: 3 });
29
+ console.log("Consolidated:", consolidated.length);
30
+ // OpenAI integration example (pseudo)
31
+ /*
32
+ import { withMemory, createOpenAICaller } from "@agentmind/integrations/openai";
33
+ import OpenAI from "openai";
34
+ const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });
35
+ const { response } = await withMemory({
36
+ memory,
37
+ messages: [{ role: "user", content: "What's our DB?" }],
38
+ callLLM: createOpenAICaller(openai, "gpt-4o"),
39
+ });
40
+ */
41
+ //# sourceMappingURL=advanced.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"advanced.js","sourceRoot":"","sources":["../../examples/advanced.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAExE,4DAA4D;AAE5D,MAAM,KAAK,GAAG,IAAI,aAAa,EAAE,CAAC;AAClC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC;IACjC,OAAO,EAAE,eAAe;IACxB,KAAK;IACL,iBAAiB,EAAE,IAAI,sBAAsB,EAAE;IAC/C,SAAS,EAAE,IAAI,kBAAkB,EAAE;IACnC,MAAM,EAAE;QACN,WAAW,EAAE,IAAI;QACjB,iBAAiB,EAAE,GAAG;QACtB,qBAAqB,EAAE,KAAK;QAC5B,kBAAkB,EAAE,KAAK;KAC1B;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC,CAAM,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AACjG,MAAM,CAAC,EAAE,CAAC,qBAAqB,EAAE,CAAC,CAAM,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC;AAE5H,+CAA+C;AAC/C,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,mJAAmJ,EAAE,CAAC,CAAC;AAEpM,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,qCAAqC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AACpG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAEtB,gBAAgB;AAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;IAAE,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,kDAAkD,CAAC,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;AACvI,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,cAAc,EAAE,CAAC,EAAE,CAAC,CAAC;AACrF,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;AAElD,sCAAsC;AACtC;;;;;;;;;EASE"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=basic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"basic.d.ts","sourceRoot":"","sources":["../../examples/basic.ts"],"names":[],"mappings":""}
@@ -0,0 +1,22 @@
1
+ import { Memory } from "../packages/core/src/memory.js";
2
+ import { InMemoryStore } from "../packages/storage/src/memory-store.js";
3
+ import { LocalEmbeddingProvider } from "../packages/embeddings/src/local.js";
4
+ const store = new InMemoryStore();
5
+ const memory = await Memory.create({
6
+ project: "research-mesh",
7
+ store,
8
+ embeddingProvider: new LocalEmbeddingProvider(),
9
+ });
10
+ await memory.remember({
11
+ type: "decision",
12
+ content: "We decided to use PostgreSQL with pgvector.",
13
+ importance: 0.9,
14
+ });
15
+ const context = await memory.context({
16
+ query: "What database did we decide to use?",
17
+ maxTokens: 6000,
18
+ });
19
+ console.log(context.text);
20
+ // Relevant project memory (research-mesh):
21
+ // - We decided to use PostgreSQL with pgvector.
22
+ //# sourceMappingURL=basic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"basic.js","sourceRoot":"","sources":["../../examples/basic.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAE7E,MAAM,KAAK,GAAG,IAAI,aAAa,EAAE,CAAC;AAClC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC;IACjC,OAAO,EAAE,eAAe;IACxB,KAAK;IACL,iBAAiB,EAAE,IAAI,sBAAsB,EAAE;CAChD,CAAC,CAAC;AAEH,MAAM,MAAM,CAAC,QAAQ,CAAC;IACpB,IAAI,EAAE,UAAU;IAChB,OAAO,EAAE,6CAA6C;IACtD,UAAU,EAAE,GAAG;CAChB,CAAC,CAAC;AAEH,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC;IACnC,KAAK,EAAE,qCAAqC;IAC5C,SAAS,EAAE,IAAI;CAChB,CAAC,CAAC;AAEH,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC1B,2CAA2C;AAC3C,gDAAgD"}
@@ -0,0 +1,27 @@
1
+ import type { MemoryStore } from "./memory-store.js";
2
+ import type { Memory } from "./types.js";
3
+ import type { EmbeddingProvider } from "../../embeddings/src/provider.js";
4
+ /**
5
+ * Memory consolidation: 1000 memories -> 150 useful memories.
6
+ * Keeps originals as archived, creates summary memories.
7
+ * Uses embedding similarity to cluster, then heuristic summary.
8
+ */
9
+ export interface ConsolidationResult {
10
+ summary: Memory;
11
+ sourceIds: string[];
12
+ }
13
+ export declare class Consolidator {
14
+ private store;
15
+ private embed?;
16
+ constructor(store: MemoryStore, embed?: EmbeddingProvider | undefined);
17
+ /**
18
+ * Consolidate a project. Groups memories with cosine > threshold (0.82) and creates summaries.
19
+ * Returns summaries created.
20
+ */
21
+ consolidate(projectId: string, opts?: {
22
+ threshold?: number;
23
+ minClusterSize?: number;
24
+ }): Promise<ConsolidationResult[]>;
25
+ private summarizeCluster;
26
+ }
27
+ //# sourceMappingURL=consolidation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consolidation.d.ts","sourceRoot":"","sources":["../../../../packages/core/src/consolidation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAG1E;;;;GAIG;AAEH,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,qBAAa,YAAY;IACX,OAAO,CAAC,KAAK;IAAe,OAAO,CAAC,KAAK,CAAC;gBAAlC,KAAK,EAAE,WAAW,EAAU,KAAK,CAAC,EAAE,iBAAiB,YAAA;IAEzE;;;OAGG;IACG,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAuE5H,OAAO,CAAC,gBAAgB;CAQzB"}
@@ -0,0 +1,97 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { cosineSimilarity } from "../../embeddings/src/provider.js";
3
+ export class Consolidator {
4
+ store;
5
+ embed;
6
+ constructor(store, embed) {
7
+ this.store = store;
8
+ this.embed = embed;
9
+ }
10
+ /**
11
+ * Consolidate a project. Groups memories with cosine > threshold (0.82) and creates summaries.
12
+ * Returns summaries created.
13
+ */
14
+ async consolidate(projectId, opts) {
15
+ const threshold = opts?.threshold ?? 0.82;
16
+ const minClusterSize = opts?.minClusterSize ?? 3;
17
+ const memories = (await this.store.listMemories(projectId)).filter((m) => !m.archived && m.status === "active");
18
+ if (memories.length < minClusterSize)
19
+ return [];
20
+ // Build embedding map
21
+ const vectors = new Map();
22
+ for (const m of memories) {
23
+ const emb = await this.store.getEmbedding(m.id);
24
+ if (emb)
25
+ vectors.set(m.id, emb.vector);
26
+ else if (this.embed) {
27
+ const v = await this.embed.embed(m.content);
28
+ vectors.set(m.id, v);
29
+ }
30
+ }
31
+ // Greedy clustering
32
+ const clusters = [];
33
+ const visited = new Set();
34
+ for (const m of memories) {
35
+ if (visited.has(m.id))
36
+ continue;
37
+ const cluster = [m.id];
38
+ visited.add(m.id);
39
+ const vecA = vectors.get(m.id);
40
+ if (!vecA)
41
+ continue;
42
+ for (const other of memories) {
43
+ if (visited.has(other.id))
44
+ continue;
45
+ const vecB = vectors.get(other.id);
46
+ if (!vecB)
47
+ continue;
48
+ if (cosineSimilarity(vecA, vecB) > threshold) {
49
+ cluster.push(other.id);
50
+ visited.add(other.id);
51
+ }
52
+ }
53
+ if (cluster.length >= minClusterSize)
54
+ clusters.push(cluster);
55
+ }
56
+ const results = [];
57
+ for (const cluster of clusters) {
58
+ const sourceMems = cluster.map((id) => memories.find((m) => m.id === id)).filter(Boolean);
59
+ const summaryContent = this.summarizeCluster(sourceMems);
60
+ const now = new Date();
61
+ const summary = {
62
+ id: randomUUID(),
63
+ projectId,
64
+ type: "summary",
65
+ content: summaryContent,
66
+ importance: Math.max(...sourceMems.map((m) => m.importance)),
67
+ confidence: 0.85,
68
+ status: "active",
69
+ createdAt: now,
70
+ updatedAt: now,
71
+ accessCount: 0,
72
+ metadata: { consolidatedFrom: cluster, count: cluster.length },
73
+ archived: false,
74
+ };
75
+ await this.store.createMemory(summary);
76
+ if (this.embed) {
77
+ const vec = await this.embed.embed(summaryContent);
78
+ await this.store.upsertEmbedding(summary.id, vec, this.embed.model);
79
+ }
80
+ // Archive sources but keep traceable
81
+ for (const id of cluster) {
82
+ await this.store.updateMemory(id, { archived: true, status: "archived", updatedAt: now });
83
+ }
84
+ results.push({ summary, sourceIds: cluster });
85
+ }
86
+ return results;
87
+ }
88
+ summarizeCluster(mems) {
89
+ // Simple heuristic: most important + common prefix extraction
90
+ const byImp = [...mems].sort((a, b) => b.importance - a.importance);
91
+ const top = byImp[0].content;
92
+ const count = mems.length;
93
+ const types = [...new Set(mems.map((m) => m.type))].join(", ");
94
+ return `Consolidated ${count} memories (${types}): ${top} (and ${count - 1} related memories about similar topic)`;
95
+ }
96
+ }
97
+ //# sourceMappingURL=consolidation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consolidation.js","sourceRoot":"","sources":["../../../../packages/core/src/consolidation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { EventEmitter } from "node:events";
2
+ import type { Memory, RetrievalEvent } from "./types.js";
3
+ export type MemoryEventMap = {
4
+ "memory.created": (memory: Memory) => void;
5
+ "memory.updated": (memory: Memory) => void;
6
+ "memory.deleted": (id: string) => void;
7
+ "memory.retrieved": (memories: Memory[], query: string) => void;
8
+ "memory.archived": (memory: Memory) => void;
9
+ "memory.superseded": (old: Memory, next: Memory) => void;
10
+ "retrieval.completed": (event: RetrievalEvent) => void;
11
+ "consolidation.completed": (summary: Memory, sources: string[]) => void;
12
+ };
13
+ export declare class MemoryEvents extends EventEmitter {
14
+ emit<K extends keyof MemoryEventMap>(event: K, ...args: Parameters<MemoryEventMap[K]>): boolean;
15
+ on<K extends keyof MemoryEventMap>(event: K, listener: MemoryEventMap[K]): this;
16
+ off<K extends keyof MemoryEventMap>(event: K, listener: MemoryEventMap[K]): this;
17
+ }
18
+ //# sourceMappingURL=events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../../packages/core/src/events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEzD,MAAM,MAAM,cAAc,GAAG;IAC3B,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,gBAAgB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,kBAAkB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAChE,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,mBAAmB,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACzD,qBAAqB,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IACvD,yBAAyB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;CACzE,CAAC;AAEF,qBAAa,YAAa,SAAQ,YAAY;IAC5C,IAAI,CAAC,CAAC,SAAS,MAAM,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO;IAG/F,EAAE,CAAC,CAAC,SAAS,MAAM,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI;IAG/E,GAAG,CAAC,CAAC,SAAS,MAAM,cAAc,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI;CAGjF"}
@@ -0,0 +1,13 @@
1
+ import { EventEmitter } from "node:events";
2
+ export class MemoryEvents extends EventEmitter {
3
+ emit(event, ...args) {
4
+ return super.emit(event, ...args);
5
+ }
6
+ on(event, listener) {
7
+ return super.on(event, listener);
8
+ }
9
+ off(event, listener) {
10
+ return super.off(event, listener);
11
+ }
12
+ }
13
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../../../packages/core/src/events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAc3C,MAAM,OAAO,YAAa,SAAQ,YAAY;IAC5C,IAAI,CAAiC,KAAQ,EAAE,GAAG,IAAmC;QACnF,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;IACpC,CAAC;IACD,EAAE,CAAiC,KAAQ,EAAE,QAA2B;QACtE,OAAO,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACnC,CAAC;IACD,GAAG,CAAiC,KAAQ,EAAE,QAA2B;QACvE,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACpC,CAAC;CACF"}
@@ -0,0 +1,32 @@
1
+ import type { MemoryType } from "./types.js";
2
+ export interface ExtractedMemory {
3
+ type: MemoryType;
4
+ content: string;
5
+ importance: number;
6
+ confidence: number;
7
+ }
8
+ export interface ExtractorOptions {
9
+ minimumImportance?: number;
10
+ }
11
+ export interface ExtractorProvider {
12
+ extract(conversation: string, opts?: ExtractorOptions): Promise<ExtractedMemory[]>;
13
+ }
14
+ /** Prompt template for LLM extraction */
15
+ export declare const EXTRACTION_PROMPT = "Extract only information that is likely to remain useful in future interactions.\n\nDo not store:\n- greetings\n- temporary conversation\n- obvious information\n- filler\n- transient thoughts\n- sensitive information unless explicitly configured\n\nReturn JSON array of {type, content, importance, confidence} where type is one of: fact, preference, decision, event, knowledge, procedure, task, summary.\nImportance 0-1, confidence 0-1. Content must be a concise standalone statement.\n\nConversation:\n{{conversation}}\n";
16
+ /**
17
+ * Deterministic regex-based extractor for offline / tests.
18
+ * Real provider would call OpenAI / Anthropic with structured output.
19
+ */
20
+ export declare class HeuristicExtractor implements ExtractorProvider {
21
+ extract(conversation: string): Promise<ExtractedMemory[]>;
22
+ }
23
+ /**
24
+ * LLM-backed extractor (generic). Provide a chat completion function.
25
+ */
26
+ export declare class LLMExtractor implements ExtractorProvider {
27
+ private callLLM;
28
+ private minImportance;
29
+ constructor(callLLM: (prompt: string) => Promise<string>, minImportance?: number);
30
+ extract(conversation: string, opts?: ExtractorOptions): Promise<ExtractedMemory[]>;
31
+ }
32
+ //# sourceMappingURL=extraction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extraction.d.ts","sourceRoot":"","sources":["../../../../packages/core/src/extraction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;CACpF;AAED,yCAAyC;AACzC,eAAO,MAAM,iBAAiB,8gBAe7B,CAAC;AAEF;;;GAGG;AACH,qBAAa,kBAAmB,YAAW,iBAAiB;IACpD,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;CAkBhE;AAED;;GAEG;AACH,qBAAa,YAAa,YAAW,iBAAiB;IAElD,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,aAAa;gBADb,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,EAC5C,aAAa,SAAO;IAGxB,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;CAWzF"}
@@ -0,0 +1,65 @@
1
+ /** Prompt template for LLM extraction */
2
+ export const EXTRACTION_PROMPT = `Extract only information that is likely to remain useful in future interactions.
3
+
4
+ Do not store:
5
+ - greetings
6
+ - temporary conversation
7
+ - obvious information
8
+ - filler
9
+ - transient thoughts
10
+ - sensitive information unless explicitly configured
11
+
12
+ Return JSON array of {type, content, importance, confidence} where type is one of: fact, preference, decision, event, knowledge, procedure, task, summary.
13
+ Importance 0-1, confidence 0-1. Content must be a concise standalone statement.
14
+
15
+ Conversation:
16
+ {{conversation}}
17
+ `;
18
+ /**
19
+ * Deterministic regex-based extractor for offline / tests.
20
+ * Real provider would call OpenAI / Anthropic with structured output.
21
+ */
22
+ export class HeuristicExtractor {
23
+ async extract(conversation) {
24
+ const results = [];
25
+ const sentences = conversation.split(/[.!?]+/).map((s) => s.trim()).filter(Boolean);
26
+ const keywords = ["decided", "will use", "using", "prefer", "need", "should", "must", "database", "postgres", "mongodb", "api", "always", "never"];
27
+ for (const s of sentences) {
28
+ const lower = s.toLowerCase();
29
+ if (keywords.some((k) => lower.includes(k)) && s.length > 20 && s.length < 300) {
30
+ const type = lower.includes("decided") || lower.includes("will use") ? "decision" : lower.includes("prefer") ? "preference" : "fact";
31
+ results.push({
32
+ type,
33
+ content: s + ".",
34
+ importance: lower.includes("decided") ? 0.9 : 0.6,
35
+ confidence: 0.8,
36
+ });
37
+ }
38
+ }
39
+ return results;
40
+ }
41
+ }
42
+ /**
43
+ * LLM-backed extractor (generic). Provide a chat completion function.
44
+ */
45
+ export class LLMExtractor {
46
+ callLLM;
47
+ minImportance;
48
+ constructor(callLLM, minImportance = 0.65) {
49
+ this.callLLM = callLLM;
50
+ this.minImportance = minImportance;
51
+ }
52
+ async extract(conversation, opts) {
53
+ const prompt = EXTRACTION_PROMPT.replace("{{conversation}}", conversation);
54
+ const raw = await this.callLLM(prompt);
55
+ try {
56
+ const parsed = JSON.parse(raw);
57
+ const threshold = opts?.minimumImportance ?? this.minImportance;
58
+ return parsed.filter((m) => m.importance >= threshold);
59
+ }
60
+ catch {
61
+ return [];
62
+ }
63
+ }
64
+ }
65
+ //# sourceMappingURL=extraction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extraction.js","sourceRoot":"","sources":["../../../../packages/core/src/extraction.ts"],"names":[],"mappings":"AAiBA,yCAAyC;AACzC,MAAM,CAAC,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;CAehC,CAAC;AAEF;;;GAGG;AACH,MAAM,OAAO,kBAAkB;IAC7B,KAAK,CAAC,OAAO,CAAC,YAAoB;QAChC,MAAM,OAAO,GAAsB,EAAE,CAAC;QACtC,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACpF,MAAM,QAAQ,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QACnJ,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;YAC1B,MAAM,KAAK,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;YAC9B,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,EAAE,IAAI,CAAC,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;gBAC/E,MAAM,IAAI,GAAe,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC;gBACjJ,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI;oBACJ,OAAO,EAAE,CAAC,GAAG,GAAG;oBAChB,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;oBACjD,UAAU,EAAE,GAAG;iBAChB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,YAAY;IAEb;IACA;IAFV,YACU,OAA4C,EAC5C,gBAAgB,IAAI;QADpB,YAAO,GAAP,OAAO,CAAqC;QAC5C,kBAAa,GAAb,aAAa,CAAO;IAC3B,CAAC;IAEJ,KAAK,CAAC,OAAO,CAAC,YAAoB,EAAE,IAAuB;QACzD,MAAM,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC;QAC3E,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAsB,CAAC;YACpD,MAAM,SAAS,GAAG,IAAI,EAAE,iBAAiB,IAAI,IAAI,CAAC,aAAa,CAAC;YAChE,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,SAAS,CAAC,CAAC;QACzD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,10 @@
1
+ export type { Project, Source, SourceType, MemoryType, MemoryStatus, RetrievalEvent, SearchQuery, CandidateMemory, SearchResult, ContextOptions, ContextResult, CreateMemoryInput, } from "./types.js";
2
+ export type { Memory as MemoryData } from "./types.js";
3
+ export { MemoryTypeSchema, MemoryStatusSchema, CreateMemoryInputSchema } from "./types.js";
4
+ export type { MemoryStore } from "./memory-store.js";
5
+ export { MemoryEngine, Memory } from "./memory.js";
6
+ export * from "./extraction.js";
7
+ export * from "./policy.js";
8
+ export * from "./events.js";
9
+ export * from "./consolidation.js";
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../packages/core/src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,OAAO,EACP,MAAM,EACN,UAAU,EACV,UAAU,EACV,YAAY,EACZ,cAAc,EACd,WAAW,EACX,eAAe,EACf,YAAY,EACZ,cAAc,EACd,aAAa,EACb,iBAAiB,GAClB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAC3F,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACnD,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,7 @@
1
+ export { MemoryTypeSchema, MemoryStatusSchema, CreateMemoryInputSchema } from "./types.js";
2
+ export { MemoryEngine, Memory } from "./memory.js";
3
+ export * from "./extraction.js";
4
+ export * from "./policy.js";
5
+ export * from "./events.js";
6
+ export * from "./consolidation.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/core/src/index.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAE3F,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACnD,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,36 @@
1
+ import type { Memory, Project, Source, SearchQuery, SearchResult, RetrievalEvent } from "./types.js";
2
+ /**
3
+ * Core abstraction — Memory Store.
4
+ * LocalStore (SQLite) and PostgresStore both implement this.
5
+ * Dashboard / CLI / core engine depend only on this interface.
6
+ */
7
+ export interface MemoryStore {
8
+ createProject(project: Project): Promise<Project>;
9
+ getProject(id: string): Promise<Project | null>;
10
+ getProjectByName(name: string): Promise<Project | null>;
11
+ listProjects(): Promise<Project[]>;
12
+ deleteProject(projectId: string): Promise<void>;
13
+ createSource(source: Source): Promise<Source>;
14
+ getSource(id: string): Promise<Source | null>;
15
+ createMemory(memory: Memory): Promise<void>;
16
+ getMemory(id: string): Promise<Memory | null>;
17
+ updateMemory(id: string, update: Partial<Memory>): Promise<void>;
18
+ deleteMemory(id: string): Promise<void>;
19
+ archiveMemory(id: string): Promise<void>;
20
+ listMemories(projectId: string): Promise<Memory[]>;
21
+ search(query: SearchQuery): Promise<SearchResult[]>;
22
+ upsertEmbedding(memoryId: string, vector: number[], model: string): Promise<void>;
23
+ getEmbedding(memoryId: string): Promise<{
24
+ vector: number[];
25
+ model: string;
26
+ } | null>;
27
+ deleteEmbedding?(memoryId: string): Promise<void>;
28
+ vectorSearch?(projectId: string, queryVector: number[], limit: number): Promise<Array<{
29
+ memory: Memory;
30
+ distance: number;
31
+ }>>;
32
+ logRetrieval(event: RetrievalEvent): Promise<void>;
33
+ listRetrievals(projectId: string, limit?: number): Promise<RetrievalEvent[]>;
34
+ close?(): Promise<void>;
35
+ }
36
+ //# sourceMappingURL=memory-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-store.d.ts","sourceRoot":"","sources":["../../../../packages/core/src/memory-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EACN,OAAO,EACP,MAAM,EACN,WAAW,EACX,YAAY,EACZ,cAAc,EACf,MAAM,YAAY,CAAC;AAEpB;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAE1B,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAClD,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAChD,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IACxD,YAAY,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IACnC,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAGhD,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9C,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAG9C,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC9C,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjE,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACnD,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAGpD,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClF,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;IACpF,eAAe,CAAC,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAGlD,YAAY,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;IAG7H,YAAY,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IAG7E,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACzB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=memory-store.js.map