ai-memory-layer 2.0.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 (245) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/LICENSE +21 -0
  3. package/README.md +765 -0
  4. package/bin/memory-server.mjs +157 -0
  5. package/dist/adapters/memory/embeddings.d.ts +4 -0
  6. package/dist/adapters/memory/embeddings.d.ts.map +1 -0
  7. package/dist/adapters/memory/embeddings.js +53 -0
  8. package/dist/adapters/memory/embeddings.js.map +1 -0
  9. package/dist/adapters/memory/index.d.ts +7 -0
  10. package/dist/adapters/memory/index.d.ts.map +1 -0
  11. package/dist/adapters/memory/index.js +650 -0
  12. package/dist/adapters/memory/index.js.map +1 -0
  13. package/dist/adapters/postgres/index.d.ts +38 -0
  14. package/dist/adapters/postgres/index.d.ts.map +1 -0
  15. package/dist/adapters/postgres/index.js +982 -0
  16. package/dist/adapters/postgres/index.js.map +1 -0
  17. package/dist/adapters/sqlite/embeddings.d.ts +5 -0
  18. package/dist/adapters/sqlite/embeddings.d.ts.map +1 -0
  19. package/dist/adapters/sqlite/embeddings.js +122 -0
  20. package/dist/adapters/sqlite/embeddings.js.map +1 -0
  21. package/dist/adapters/sqlite/index.d.ts +8 -0
  22. package/dist/adapters/sqlite/index.d.ts.map +1 -0
  23. package/dist/adapters/sqlite/index.js +839 -0
  24. package/dist/adapters/sqlite/index.js.map +1 -0
  25. package/dist/adapters/sqlite/mappers.d.ts +40 -0
  26. package/dist/adapters/sqlite/mappers.d.ts.map +1 -0
  27. package/dist/adapters/sqlite/mappers.js +95 -0
  28. package/dist/adapters/sqlite/mappers.js.map +1 -0
  29. package/dist/adapters/sqlite/schema.d.ts +4 -0
  30. package/dist/adapters/sqlite/schema.d.ts.map +1 -0
  31. package/dist/adapters/sqlite/schema.js +394 -0
  32. package/dist/adapters/sqlite/schema.js.map +1 -0
  33. package/dist/adapters/sync-to-async.d.ts +15 -0
  34. package/dist/adapters/sync-to-async.d.ts.map +1 -0
  35. package/dist/adapters/sync-to-async.js +95 -0
  36. package/dist/adapters/sync-to-async.js.map +1 -0
  37. package/dist/cli/inspect.d.ts +34 -0
  38. package/dist/cli/inspect.d.ts.map +1 -0
  39. package/dist/cli/inspect.js +190 -0
  40. package/dist/cli/inspect.js.map +1 -0
  41. package/dist/contracts/async-storage.d.ts +86 -0
  42. package/dist/contracts/async-storage.d.ts.map +1 -0
  43. package/dist/contracts/async-storage.js +2 -0
  44. package/dist/contracts/async-storage.js.map +1 -0
  45. package/dist/contracts/embedding.d.ts +22 -0
  46. package/dist/contracts/embedding.d.ts.map +1 -0
  47. package/dist/contracts/embedding.js +2 -0
  48. package/dist/contracts/embedding.js.map +1 -0
  49. package/dist/contracts/identity.d.ts +29 -0
  50. package/dist/contracts/identity.d.ts.map +1 -0
  51. package/dist/contracts/identity.js +34 -0
  52. package/dist/contracts/identity.js.map +1 -0
  53. package/dist/contracts/observability.d.ts +18 -0
  54. package/dist/contracts/observability.d.ts.map +1 -0
  55. package/dist/contracts/observability.js +7 -0
  56. package/dist/contracts/observability.js.map +1 -0
  57. package/dist/contracts/policy.d.ts +108 -0
  58. package/dist/contracts/policy.d.ts.map +1 -0
  59. package/dist/contracts/policy.js +107 -0
  60. package/dist/contracts/policy.js.map +1 -0
  61. package/dist/contracts/storage.d.ts +78 -0
  62. package/dist/contracts/storage.d.ts.map +1 -0
  63. package/dist/contracts/storage.js +2 -0
  64. package/dist/contracts/storage.js.map +1 -0
  65. package/dist/contracts/types.d.ts +381 -0
  66. package/dist/contracts/types.d.ts.map +1 -0
  67. package/dist/contracts/types.js +94 -0
  68. package/dist/contracts/types.js.map +1 -0
  69. package/dist/core/circuit-breaker.d.ts +11 -0
  70. package/dist/core/circuit-breaker.d.ts.map +1 -0
  71. package/dist/core/circuit-breaker.js +38 -0
  72. package/dist/core/circuit-breaker.js.map +1 -0
  73. package/dist/core/context.d.ts +56 -0
  74. package/dist/core/context.d.ts.map +1 -0
  75. package/dist/core/context.js +345 -0
  76. package/dist/core/context.js.map +1 -0
  77. package/dist/core/events.d.ts +8 -0
  78. package/dist/core/events.d.ts.map +1 -0
  79. package/dist/core/events.js +25 -0
  80. package/dist/core/events.js.map +1 -0
  81. package/dist/core/extractor.d.ts +37 -0
  82. package/dist/core/extractor.d.ts.map +1 -0
  83. package/dist/core/extractor.js +448 -0
  84. package/dist/core/extractor.js.map +1 -0
  85. package/dist/core/formatter.d.ts +25 -0
  86. package/dist/core/formatter.d.ts.map +1 -0
  87. package/dist/core/formatter.js +97 -0
  88. package/dist/core/formatter.js.map +1 -0
  89. package/dist/core/knowledge-lifecycle.d.ts +15 -0
  90. package/dist/core/knowledge-lifecycle.d.ts.map +1 -0
  91. package/dist/core/knowledge-lifecycle.js +103 -0
  92. package/dist/core/knowledge-lifecycle.js.map +1 -0
  93. package/dist/core/maintenance.d.ts +13 -0
  94. package/dist/core/maintenance.d.ts.map +1 -0
  95. package/dist/core/maintenance.js +102 -0
  96. package/dist/core/maintenance.js.map +1 -0
  97. package/dist/core/manager.d.ts +110 -0
  98. package/dist/core/manager.d.ts.map +1 -0
  99. package/dist/core/manager.js +640 -0
  100. package/dist/core/manager.js.map +1 -0
  101. package/dist/core/monitor.d.ts +73 -0
  102. package/dist/core/monitor.d.ts.map +1 -0
  103. package/dist/core/monitor.js +395 -0
  104. package/dist/core/monitor.js.map +1 -0
  105. package/dist/core/orchestrator.d.ts +64 -0
  106. package/dist/core/orchestrator.d.ts.map +1 -0
  107. package/dist/core/orchestrator.js +916 -0
  108. package/dist/core/orchestrator.js.map +1 -0
  109. package/dist/core/presets.d.ts +15 -0
  110. package/dist/core/presets.d.ts.map +1 -0
  111. package/dist/core/presets.js +99 -0
  112. package/dist/core/presets.js.map +1 -0
  113. package/dist/core/provider-managers.d.ts +47 -0
  114. package/dist/core/provider-managers.d.ts.map +1 -0
  115. package/dist/core/provider-managers.js +112 -0
  116. package/dist/core/provider-managers.js.map +1 -0
  117. package/dist/core/quick.d.ts +62 -0
  118. package/dist/core/quick.d.ts.map +1 -0
  119. package/dist/core/quick.js +300 -0
  120. package/dist/core/quick.js.map +1 -0
  121. package/dist/core/retrieval.d.ts +29 -0
  122. package/dist/core/retrieval.d.ts.map +1 -0
  123. package/dist/core/retrieval.js +150 -0
  124. package/dist/core/retrieval.js.map +1 -0
  125. package/dist/core/runtime.d.ts +67 -0
  126. package/dist/core/runtime.d.ts.map +1 -0
  127. package/dist/core/runtime.js +84 -0
  128. package/dist/core/runtime.js.map +1 -0
  129. package/dist/core/streaming.d.ts +37 -0
  130. package/dist/core/streaming.d.ts.map +1 -0
  131. package/dist/core/streaming.js +51 -0
  132. package/dist/core/streaming.js.map +1 -0
  133. package/dist/core/sync.d.ts +13 -0
  134. package/dist/core/sync.d.ts.map +1 -0
  135. package/dist/core/sync.js +46 -0
  136. package/dist/core/sync.js.map +1 -0
  137. package/dist/core/telemetry.d.ts +8 -0
  138. package/dist/core/telemetry.d.ts.map +1 -0
  139. package/dist/core/telemetry.js +14 -0
  140. package/dist/core/telemetry.js.map +1 -0
  141. package/dist/core/tokens.d.ts +8 -0
  142. package/dist/core/tokens.d.ts.map +1 -0
  143. package/dist/core/tokens.js +59 -0
  144. package/dist/core/tokens.js.map +1 -0
  145. package/dist/core/trust.d.ts +23 -0
  146. package/dist/core/trust.d.ts.map +1 -0
  147. package/dist/core/trust.js +164 -0
  148. package/dist/core/trust.js.map +1 -0
  149. package/dist/core/validation.d.ts +36 -0
  150. package/dist/core/validation.d.ts.map +1 -0
  151. package/dist/core/validation.js +185 -0
  152. package/dist/core/validation.js.map +1 -0
  153. package/dist/embeddings/local.d.ts +5 -0
  154. package/dist/embeddings/local.d.ts.map +1 -0
  155. package/dist/embeddings/local.js +128 -0
  156. package/dist/embeddings/local.js.map +1 -0
  157. package/dist/embeddings/openai.d.ts +26 -0
  158. package/dist/embeddings/openai.d.ts.map +1 -0
  159. package/dist/embeddings/openai.js +48 -0
  160. package/dist/embeddings/openai.js.map +1 -0
  161. package/dist/embeddings/resilience.d.ts +5 -0
  162. package/dist/embeddings/resilience.d.ts.map +1 -0
  163. package/dist/embeddings/resilience.js +53 -0
  164. package/dist/embeddings/resilience.js.map +1 -0
  165. package/dist/embeddings/voyage.d.ts +30 -0
  166. package/dist/embeddings/voyage.d.ts.map +1 -0
  167. package/dist/embeddings/voyage.js +53 -0
  168. package/dist/embeddings/voyage.js.map +1 -0
  169. package/dist/index.d.ts +72 -0
  170. package/dist/index.d.ts.map +1 -0
  171. package/dist/index.js +40 -0
  172. package/dist/index.js.map +1 -0
  173. package/dist/integrations/claude-agent.d.ts +21 -0
  174. package/dist/integrations/claude-agent.d.ts.map +1 -0
  175. package/dist/integrations/claude-agent.js +44 -0
  176. package/dist/integrations/claude-agent.js.map +1 -0
  177. package/dist/integrations/claude-tools.d.ts +18 -0
  178. package/dist/integrations/claude-tools.d.ts.map +1 -0
  179. package/dist/integrations/claude-tools.js +60 -0
  180. package/dist/integrations/claude-tools.js.map +1 -0
  181. package/dist/integrations/langchain.d.ts +24 -0
  182. package/dist/integrations/langchain.d.ts.map +1 -0
  183. package/dist/integrations/langchain.js +48 -0
  184. package/dist/integrations/langchain.js.map +1 -0
  185. package/dist/integrations/mcp.d.ts +23 -0
  186. package/dist/integrations/mcp.d.ts.map +1 -0
  187. package/dist/integrations/mcp.js +60 -0
  188. package/dist/integrations/mcp.js.map +1 -0
  189. package/dist/integrations/middleware.d.ts +15 -0
  190. package/dist/integrations/middleware.d.ts.map +1 -0
  191. package/dist/integrations/middleware.js +27 -0
  192. package/dist/integrations/middleware.js.map +1 -0
  193. package/dist/integrations/openai-tools.d.ts +21 -0
  194. package/dist/integrations/openai-tools.d.ts.map +1 -0
  195. package/dist/integrations/openai-tools.js +69 -0
  196. package/dist/integrations/openai-tools.js.map +1 -0
  197. package/dist/integrations/vercel-ai.d.ts +19 -0
  198. package/dist/integrations/vercel-ai.d.ts.map +1 -0
  199. package/dist/integrations/vercel-ai.js +41 -0
  200. package/dist/integrations/vercel-ai.js.map +1 -0
  201. package/dist/server/http-server.d.ts +61 -0
  202. package/dist/server/http-server.d.ts.map +1 -0
  203. package/dist/server/http-server.js +684 -0
  204. package/dist/server/http-server.js.map +1 -0
  205. package/dist/server/index.d.ts +5 -0
  206. package/dist/server/index.d.ts.map +1 -0
  207. package/dist/server/index.js +3 -0
  208. package/dist/server/index.js.map +1 -0
  209. package/dist/server/mcp-server.d.ts +61 -0
  210. package/dist/server/mcp-server.d.ts.map +1 -0
  211. package/dist/server/mcp-server.js +465 -0
  212. package/dist/server/mcp-server.js.map +1 -0
  213. package/dist/summarizers/claude.d.ts +11 -0
  214. package/dist/summarizers/claude.d.ts.map +1 -0
  215. package/dist/summarizers/claude.js +39 -0
  216. package/dist/summarizers/claude.js.map +1 -0
  217. package/dist/summarizers/client.d.ts +23 -0
  218. package/dist/summarizers/client.d.ts.map +1 -0
  219. package/dist/summarizers/client.js +24 -0
  220. package/dist/summarizers/client.js.map +1 -0
  221. package/dist/summarizers/extractive.d.ts +6 -0
  222. package/dist/summarizers/extractive.d.ts.map +1 -0
  223. package/dist/summarizers/extractive.js +204 -0
  224. package/dist/summarizers/extractive.js.map +1 -0
  225. package/dist/summarizers/extractor.d.ts +12 -0
  226. package/dist/summarizers/extractor.d.ts.map +1 -0
  227. package/dist/summarizers/extractor.js +75 -0
  228. package/dist/summarizers/extractor.js.map +1 -0
  229. package/dist/summarizers/openai.d.ts +11 -0
  230. package/dist/summarizers/openai.d.ts.map +1 -0
  231. package/dist/summarizers/openai.js +41 -0
  232. package/dist/summarizers/openai.js.map +1 -0
  233. package/dist/summarizers/prompts.d.ts +11 -0
  234. package/dist/summarizers/prompts.d.ts.map +1 -0
  235. package/dist/summarizers/prompts.js +104 -0
  236. package/dist/summarizers/prompts.js.map +1 -0
  237. package/docs/DEPLOYMENT.md +84 -0
  238. package/docs/INTEGRATIONS.md +64 -0
  239. package/docs/MEMORY_QUALITY_BASELINE.md +55 -0
  240. package/docs/MEMORY_QUALITY_RELEASE_GATE.md +63 -0
  241. package/docs/MEMORY_QUALITY_RUBRIC.md +249 -0
  242. package/docs/OPERATIONS.md +49 -0
  243. package/docs/SECURITY.md +25 -0
  244. package/openapi.yaml +843 -0
  245. package/package.json +157 -0
@@ -0,0 +1,157 @@
1
+ #!/usr/bin/env node
2
+
3
+ const args = process.argv.slice(2);
4
+
5
+ function getArg(name) {
6
+ const index = args.indexOf(`--${name}`);
7
+ if (index === -1) return undefined;
8
+ return args[index + 1];
9
+ }
10
+
11
+ if (args.includes('--help') || args.includes('-h')) {
12
+ console.log(`
13
+ memory-layer - Drop-in memory server for AI systems
14
+
15
+ Usage:
16
+ memory-layer serve [options]
17
+ memory-layer inspect <knowledge|audits|monitor|compactions|reverification|changes> [options]
18
+
19
+ Options:
20
+ --db <path> Database path (default: ':memory:')
21
+ --database-url <url> Postgres connection string for hosted mode
22
+ --scope <scope> Default scope identifier (default: 'default')
23
+ --summarizer <type> Summarizer: extractive|claude|openai (default: extractive)
24
+ --extractor <type> Extractor: regex|claude|openai|none (default: regex)
25
+ --preset <preset> Preset: ai_ide|chat_agent|autonomous_agent
26
+ --quality-mode <m> Quality mode: fast_adoption|balanced_memory|high_fidelity_memory
27
+ --quality-tier <t> Legacy tier: offline_default|local_semantic|provider_backed
28
+ --cross-scope-level Cross-scope level: scope|workspace|system|tenant
29
+ --transport <type> Transport: mcp|http|both (default: mcp)
30
+ --port <port> HTTP port (default: 3100)
31
+ --host <host> HTTP host (default: 127.0.0.1)
32
+ --api-key <key> Bearer auth key for HTTP requests
33
+ --admin-key <key> Admin key for compaction and maintenance endpoints
34
+ --body-limit <n> Maximum HTTP request body bytes (default: 1048576)
35
+ --help Show this help message
36
+ --tenant <id> Explicit tenant for inspect mode
37
+ --system <id> Explicit system for inspect mode
38
+ --workspace <id> Explicit workspace for inspect mode
39
+ --collaboration <id> Explicit collaboration for inspect mode
40
+ --scope-id <id> Explicit scope_id for inspect mode
41
+ --id <n> Knowledge id for inspect mode
42
+ --knowledge-id <n> Filter audits to a specific knowledge id
43
+ --limit <n> Limit rows for inspect mode
44
+ --cursor <n> Pagination cursor for inspect knowledge
45
+ --since <iso> Lower bound for inspect changes
46
+ --run Execute reverification instead of only listing due items
47
+
48
+ Environment variables:
49
+ MEMORY_DB_PATH Database path
50
+ MEMORY_SCOPE Default scope
51
+ MEMORY_DATABASE_URL Postgres connection string
52
+ MEMORY_SUMMARIZER Summarizer type
53
+ MEMORY_EXTRACTOR Extractor type
54
+ MEMORY_PRESET Preset name
55
+ MEMORY_QUALITY_MODE Hosted quality mode
56
+ MEMORY_QUALITY_TIER Legacy hosted quality tier
57
+ MEMORY_CROSS_SCOPE_LEVEL Default hosted cross-scope level
58
+ MEMORY_API_KEY API key for HTTP bearer auth
59
+ MEMORY_ADMIN_API_KEY Admin key for privileged endpoints
60
+ MEMORY_TRANSPORT Transport type (mcp|http|both)
61
+ MEMORY_HOST HTTP host
62
+ MEMORY_BODY_LIMIT Maximum HTTP request body bytes
63
+
64
+ Examples:
65
+ npx memory-layer serve --db ./memory.db --preset ai_ide
66
+ npx memory-layer serve --transport http --port 3100
67
+ npx memory-layer serve --transport both --db ./shared.db
68
+ npx memory-layer inspect knowledge --db ./memory.db --limit 20
69
+ npx memory-layer inspect reverification --db ./memory.db --run
70
+ `);
71
+ process.exit(0);
72
+ }
73
+
74
+ const command = args[0];
75
+ if (command && command !== 'serve' && command !== 'inspect') {
76
+ console.error(`Unknown command: ${command}. Use 'serve', 'inspect', or --help.`);
77
+ process.exit(1);
78
+ }
79
+
80
+ const config = {
81
+ dbPath: getArg('db') ?? process.env.MEMORY_DB_PATH ?? ':memory:',
82
+ databaseUrl: getArg('database-url') ?? process.env.MEMORY_DATABASE_URL ?? undefined,
83
+ scope: getArg('scope') ?? process.env.MEMORY_SCOPE ?? 'default',
84
+ summarizer: getArg('summarizer') ?? process.env.MEMORY_SUMMARIZER ?? 'extractive',
85
+ extractor: getArg('extractor') ?? process.env.MEMORY_EXTRACTOR ?? 'regex',
86
+ preset: getArg('preset') ?? process.env.MEMORY_PRESET ?? undefined,
87
+ qualityMode: getArg('quality-mode') ?? process.env.MEMORY_QUALITY_MODE ?? undefined,
88
+ qualityTier: getArg('quality-tier') ?? process.env.MEMORY_QUALITY_TIER ?? undefined,
89
+ crossScopeLevel: getArg('cross-scope-level') ?? process.env.MEMORY_CROSS_SCOPE_LEVEL ?? undefined,
90
+ apiKey: getArg('api-key') ?? process.env.MEMORY_API_KEY ?? undefined,
91
+ adminApiKey: getArg('admin-key') ?? process.env.MEMORY_ADMIN_API_KEY ?? undefined,
92
+ host: getArg('host') ?? process.env.MEMORY_HOST ?? '127.0.0.1',
93
+ bodyLimitBytes: Number(getArg('body-limit') ?? process.env.MEMORY_BODY_LIMIT ?? 1048576),
94
+ };
95
+
96
+ if (config.extractor === 'none') {
97
+ config.extractor = false;
98
+ }
99
+
100
+ const transport = getArg('transport') ?? process.env.MEMORY_TRANSPORT ?? 'mcp';
101
+ const port = Number(getArg('port') ?? process.env.MEMORY_PORT ?? 3100);
102
+
103
+ async function main() {
104
+ if (command === 'inspect') {
105
+ const target = args[1] ?? 'knowledge';
106
+ const { runInspectCommand } = await import('../dist/cli/inspect.js');
107
+ const output = await runInspectCommand(target, {
108
+ dbPath: config.dbPath,
109
+ databaseUrl: config.databaseUrl,
110
+ scope: config.scope,
111
+ tenantId: getArg('tenant'),
112
+ systemId: getArg('system'),
113
+ workspaceId: getArg('workspace'),
114
+ collaborationId: getArg('collaboration'),
115
+ scopeId: getArg('scope-id'),
116
+ qualityMode: config.qualityMode,
117
+ qualityTier: config.qualityTier,
118
+ crossScopeLevel: getArg('cross-scope-level') ?? process.env.MEMORY_CROSS_SCOPE_LEVEL,
119
+ id: getArg('id') ? Number(getArg('id')) : undefined,
120
+ knowledgeId: getArg('knowledge-id') ? Number(getArg('knowledge-id')) : undefined,
121
+ limit: getArg('limit') ? Number(getArg('limit')) : undefined,
122
+ cursor: getArg('cursor') ? Number(getArg('cursor')) : undefined,
123
+ since: getArg('since'),
124
+ run: args.includes('--run'),
125
+ });
126
+ console.log(output);
127
+ return;
128
+ }
129
+
130
+ if (transport === 'mcp' || transport === 'both') {
131
+ const { startMcpServer } = await import('../dist/server/mcp-server.js');
132
+ if (transport === 'mcp') {
133
+ await startMcpServer(config);
134
+ return;
135
+ }
136
+ // For 'both', start MCP in background (it reads stdin)
137
+ startMcpServer(config).catch((err) => {
138
+ console.error('MCP server error:', err);
139
+ });
140
+ }
141
+
142
+ if (transport === 'http' || transport === 'both') {
143
+ const { startHttpServer } = await import('../dist/server/http-server.js');
144
+ const { server } = await startHttpServer({ ...config, port });
145
+ console.error(`memory-layer HTTP server listening on ${config.host}:${port}`);
146
+
147
+ process.on('SIGINT', () => {
148
+ server.close();
149
+ process.exit(0);
150
+ });
151
+ }
152
+ }
153
+
154
+ main().catch((error) => {
155
+ console.error('Failed to start memory-layer server:', error);
156
+ process.exit(1);
157
+ });
@@ -0,0 +1,4 @@
1
+ import type { EmbeddingAdapter } from '../../contracts/embedding.js';
2
+ import type { StorageAdapter } from '../../contracts/storage.js';
3
+ export declare function createInMemoryEmbeddingAdapter(adapter: StorageAdapter): EmbeddingAdapter;
4
+ //# sourceMappingURL=embeddings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embeddings.d.ts","sourceRoot":"","sources":["../../../src/adapters/memory/embeddings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAA2C,MAAM,8BAA8B,CAAC;AAE9G,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAgBjE,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,cAAc,GAAG,gBAAgB,CAwDxF"}
@@ -0,0 +1,53 @@
1
+ function cosineSimilarity(a, b) {
2
+ if (a.length !== b.length || a.length === 0)
3
+ return 0;
4
+ let dot = 0;
5
+ let normA = 0;
6
+ let normB = 0;
7
+ for (let index = 0; index < a.length; index += 1) {
8
+ dot += a[index] * b[index];
9
+ normA += a[index] * a[index];
10
+ normB += b[index] * b[index];
11
+ }
12
+ if (normA === 0 || normB === 0)
13
+ return 0;
14
+ return dot / (Math.sqrt(normA) * Math.sqrt(normB));
15
+ }
16
+ export function createInMemoryEmbeddingAdapter(adapter) {
17
+ const vectors = new Map();
18
+ function scoreKnowledge(knowledgeIds, queryVector, limit, minSimilarity) {
19
+ return knowledgeIds
20
+ .map((knowledgeMemoryId) => ({
21
+ knowledgeMemoryId,
22
+ similarity: cosineSimilarity(queryVector, vectors.get(knowledgeMemoryId) ?? new Float32Array()),
23
+ }))
24
+ .filter((result) => result.similarity >= minSimilarity)
25
+ .sort((left, right) => right.similarity - left.similarity)
26
+ .slice(0, limit);
27
+ }
28
+ return {
29
+ storeEmbedding(knowledgeMemoryId, vector) {
30
+ vectors.set(knowledgeMemoryId, new Float32Array(vector));
31
+ },
32
+ getEmbedding(knowledgeMemoryId) {
33
+ const vector = vectors.get(knowledgeMemoryId);
34
+ return vector ? new Float32Array(vector) : null;
35
+ },
36
+ findSimilar(scope, queryVector, options) {
37
+ const limit = options?.limit ?? 10;
38
+ const minSimilarity = options?.minSimilarity ?? 0;
39
+ const ids = adapter.getActiveKnowledgeMemory(scope).map((item) => item.id);
40
+ return scoreKnowledge(ids, queryVector, limit, minSimilarity);
41
+ },
42
+ findSimilarCrossScope(scope, level, queryVector, options) {
43
+ const limit = options?.limit ?? 10;
44
+ const minSimilarity = options?.minSimilarity ?? 0;
45
+ const ids = adapter.getActiveKnowledgeCrossScope(scope, level).map((item) => item.id);
46
+ return scoreKnowledge(ids, queryVector, limit, minSimilarity);
47
+ },
48
+ deleteEmbedding(knowledgeMemoryId) {
49
+ vectors.delete(knowledgeMemoryId);
50
+ },
51
+ };
52
+ }
53
+ //# sourceMappingURL=embeddings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embeddings.js","sourceRoot":"","sources":["../../../src/adapters/memory/embeddings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { StorageAdapter } from '../../contracts/storage.js';
2
+ import { type TelemetryOptions } from '../../core/telemetry.js';
3
+ export declare function createInMemoryAdapter(telemetry?: TelemetryOptions): StorageAdapter;
4
+ export declare function createInMemoryAdapterWithEmbeddings(telemetry?: TelemetryOptions): StorageAdapter & {
5
+ embeddings: import('../../contracts/embedding.js').EmbeddingAdapter;
6
+ };
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/memory/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AA2BjE,OAAO,EAAmB,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AA4IjF,wBAAgB,qBAAqB,CAAC,SAAS,CAAC,EAAE,gBAAgB,GAAG,cAAc,CA2mBlF;AAED,wBAAgB,mCAAmC,CACjD,SAAS,CAAC,EAAE,gBAAgB,GAC3B,cAAc,GAAG;IAAE,UAAU,EAAE,OAAO,8BAA8B,EAAE,gBAAgB,CAAA;CAAE,CAI1F"}