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.
- package/CHANGELOG.md +26 -0
- package/LICENSE +21 -0
- package/README.md +765 -0
- package/bin/memory-server.mjs +157 -0
- package/dist/adapters/memory/embeddings.d.ts +4 -0
- package/dist/adapters/memory/embeddings.d.ts.map +1 -0
- package/dist/adapters/memory/embeddings.js +53 -0
- package/dist/adapters/memory/embeddings.js.map +1 -0
- package/dist/adapters/memory/index.d.ts +7 -0
- package/dist/adapters/memory/index.d.ts.map +1 -0
- package/dist/adapters/memory/index.js +650 -0
- package/dist/adapters/memory/index.js.map +1 -0
- package/dist/adapters/postgres/index.d.ts +38 -0
- package/dist/adapters/postgres/index.d.ts.map +1 -0
- package/dist/adapters/postgres/index.js +982 -0
- package/dist/adapters/postgres/index.js.map +1 -0
- package/dist/adapters/sqlite/embeddings.d.ts +5 -0
- package/dist/adapters/sqlite/embeddings.d.ts.map +1 -0
- package/dist/adapters/sqlite/embeddings.js +122 -0
- package/dist/adapters/sqlite/embeddings.js.map +1 -0
- package/dist/adapters/sqlite/index.d.ts +8 -0
- package/dist/adapters/sqlite/index.d.ts.map +1 -0
- package/dist/adapters/sqlite/index.js +839 -0
- package/dist/adapters/sqlite/index.js.map +1 -0
- package/dist/adapters/sqlite/mappers.d.ts +40 -0
- package/dist/adapters/sqlite/mappers.d.ts.map +1 -0
- package/dist/adapters/sqlite/mappers.js +95 -0
- package/dist/adapters/sqlite/mappers.js.map +1 -0
- package/dist/adapters/sqlite/schema.d.ts +4 -0
- package/dist/adapters/sqlite/schema.d.ts.map +1 -0
- package/dist/adapters/sqlite/schema.js +394 -0
- package/dist/adapters/sqlite/schema.js.map +1 -0
- package/dist/adapters/sync-to-async.d.ts +15 -0
- package/dist/adapters/sync-to-async.d.ts.map +1 -0
- package/dist/adapters/sync-to-async.js +95 -0
- package/dist/adapters/sync-to-async.js.map +1 -0
- package/dist/cli/inspect.d.ts +34 -0
- package/dist/cli/inspect.d.ts.map +1 -0
- package/dist/cli/inspect.js +190 -0
- package/dist/cli/inspect.js.map +1 -0
- package/dist/contracts/async-storage.d.ts +86 -0
- package/dist/contracts/async-storage.d.ts.map +1 -0
- package/dist/contracts/async-storage.js +2 -0
- package/dist/contracts/async-storage.js.map +1 -0
- package/dist/contracts/embedding.d.ts +22 -0
- package/dist/contracts/embedding.d.ts.map +1 -0
- package/dist/contracts/embedding.js +2 -0
- package/dist/contracts/embedding.js.map +1 -0
- package/dist/contracts/identity.d.ts +29 -0
- package/dist/contracts/identity.d.ts.map +1 -0
- package/dist/contracts/identity.js +34 -0
- package/dist/contracts/identity.js.map +1 -0
- package/dist/contracts/observability.d.ts +18 -0
- package/dist/contracts/observability.d.ts.map +1 -0
- package/dist/contracts/observability.js +7 -0
- package/dist/contracts/observability.js.map +1 -0
- package/dist/contracts/policy.d.ts +108 -0
- package/dist/contracts/policy.d.ts.map +1 -0
- package/dist/contracts/policy.js +107 -0
- package/dist/contracts/policy.js.map +1 -0
- package/dist/contracts/storage.d.ts +78 -0
- package/dist/contracts/storage.d.ts.map +1 -0
- package/dist/contracts/storage.js +2 -0
- package/dist/contracts/storage.js.map +1 -0
- package/dist/contracts/types.d.ts +381 -0
- package/dist/contracts/types.d.ts.map +1 -0
- package/dist/contracts/types.js +94 -0
- package/dist/contracts/types.js.map +1 -0
- package/dist/core/circuit-breaker.d.ts +11 -0
- package/dist/core/circuit-breaker.d.ts.map +1 -0
- package/dist/core/circuit-breaker.js +38 -0
- package/dist/core/circuit-breaker.js.map +1 -0
- package/dist/core/context.d.ts +56 -0
- package/dist/core/context.d.ts.map +1 -0
- package/dist/core/context.js +345 -0
- package/dist/core/context.js.map +1 -0
- package/dist/core/events.d.ts +8 -0
- package/dist/core/events.d.ts.map +1 -0
- package/dist/core/events.js +25 -0
- package/dist/core/events.js.map +1 -0
- package/dist/core/extractor.d.ts +37 -0
- package/dist/core/extractor.d.ts.map +1 -0
- package/dist/core/extractor.js +448 -0
- package/dist/core/extractor.js.map +1 -0
- package/dist/core/formatter.d.ts +25 -0
- package/dist/core/formatter.d.ts.map +1 -0
- package/dist/core/formatter.js +97 -0
- package/dist/core/formatter.js.map +1 -0
- package/dist/core/knowledge-lifecycle.d.ts +15 -0
- package/dist/core/knowledge-lifecycle.d.ts.map +1 -0
- package/dist/core/knowledge-lifecycle.js +103 -0
- package/dist/core/knowledge-lifecycle.js.map +1 -0
- package/dist/core/maintenance.d.ts +13 -0
- package/dist/core/maintenance.d.ts.map +1 -0
- package/dist/core/maintenance.js +102 -0
- package/dist/core/maintenance.js.map +1 -0
- package/dist/core/manager.d.ts +110 -0
- package/dist/core/manager.d.ts.map +1 -0
- package/dist/core/manager.js +640 -0
- package/dist/core/manager.js.map +1 -0
- package/dist/core/monitor.d.ts +73 -0
- package/dist/core/monitor.d.ts.map +1 -0
- package/dist/core/monitor.js +395 -0
- package/dist/core/monitor.js.map +1 -0
- package/dist/core/orchestrator.d.ts +64 -0
- package/dist/core/orchestrator.d.ts.map +1 -0
- package/dist/core/orchestrator.js +916 -0
- package/dist/core/orchestrator.js.map +1 -0
- package/dist/core/presets.d.ts +15 -0
- package/dist/core/presets.d.ts.map +1 -0
- package/dist/core/presets.js +99 -0
- package/dist/core/presets.js.map +1 -0
- package/dist/core/provider-managers.d.ts +47 -0
- package/dist/core/provider-managers.d.ts.map +1 -0
- package/dist/core/provider-managers.js +112 -0
- package/dist/core/provider-managers.js.map +1 -0
- package/dist/core/quick.d.ts +62 -0
- package/dist/core/quick.d.ts.map +1 -0
- package/dist/core/quick.js +300 -0
- package/dist/core/quick.js.map +1 -0
- package/dist/core/retrieval.d.ts +29 -0
- package/dist/core/retrieval.d.ts.map +1 -0
- package/dist/core/retrieval.js +150 -0
- package/dist/core/retrieval.js.map +1 -0
- package/dist/core/runtime.d.ts +67 -0
- package/dist/core/runtime.d.ts.map +1 -0
- package/dist/core/runtime.js +84 -0
- package/dist/core/runtime.js.map +1 -0
- package/dist/core/streaming.d.ts +37 -0
- package/dist/core/streaming.d.ts.map +1 -0
- package/dist/core/streaming.js +51 -0
- package/dist/core/streaming.js.map +1 -0
- package/dist/core/sync.d.ts +13 -0
- package/dist/core/sync.d.ts.map +1 -0
- package/dist/core/sync.js +46 -0
- package/dist/core/sync.js.map +1 -0
- package/dist/core/telemetry.d.ts +8 -0
- package/dist/core/telemetry.d.ts.map +1 -0
- package/dist/core/telemetry.js +14 -0
- package/dist/core/telemetry.js.map +1 -0
- package/dist/core/tokens.d.ts +8 -0
- package/dist/core/tokens.d.ts.map +1 -0
- package/dist/core/tokens.js +59 -0
- package/dist/core/tokens.js.map +1 -0
- package/dist/core/trust.d.ts +23 -0
- package/dist/core/trust.d.ts.map +1 -0
- package/dist/core/trust.js +164 -0
- package/dist/core/trust.js.map +1 -0
- package/dist/core/validation.d.ts +36 -0
- package/dist/core/validation.d.ts.map +1 -0
- package/dist/core/validation.js +185 -0
- package/dist/core/validation.js.map +1 -0
- package/dist/embeddings/local.d.ts +5 -0
- package/dist/embeddings/local.d.ts.map +1 -0
- package/dist/embeddings/local.js +128 -0
- package/dist/embeddings/local.js.map +1 -0
- package/dist/embeddings/openai.d.ts +26 -0
- package/dist/embeddings/openai.d.ts.map +1 -0
- package/dist/embeddings/openai.js +48 -0
- package/dist/embeddings/openai.js.map +1 -0
- package/dist/embeddings/resilience.d.ts +5 -0
- package/dist/embeddings/resilience.d.ts.map +1 -0
- package/dist/embeddings/resilience.js +53 -0
- package/dist/embeddings/resilience.js.map +1 -0
- package/dist/embeddings/voyage.d.ts +30 -0
- package/dist/embeddings/voyage.d.ts.map +1 -0
- package/dist/embeddings/voyage.js +53 -0
- package/dist/embeddings/voyage.js.map +1 -0
- package/dist/index.d.ts +72 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +40 -0
- package/dist/index.js.map +1 -0
- package/dist/integrations/claude-agent.d.ts +21 -0
- package/dist/integrations/claude-agent.d.ts.map +1 -0
- package/dist/integrations/claude-agent.js +44 -0
- package/dist/integrations/claude-agent.js.map +1 -0
- package/dist/integrations/claude-tools.d.ts +18 -0
- package/dist/integrations/claude-tools.d.ts.map +1 -0
- package/dist/integrations/claude-tools.js +60 -0
- package/dist/integrations/claude-tools.js.map +1 -0
- package/dist/integrations/langchain.d.ts +24 -0
- package/dist/integrations/langchain.d.ts.map +1 -0
- package/dist/integrations/langchain.js +48 -0
- package/dist/integrations/langchain.js.map +1 -0
- package/dist/integrations/mcp.d.ts +23 -0
- package/dist/integrations/mcp.d.ts.map +1 -0
- package/dist/integrations/mcp.js +60 -0
- package/dist/integrations/mcp.js.map +1 -0
- package/dist/integrations/middleware.d.ts +15 -0
- package/dist/integrations/middleware.d.ts.map +1 -0
- package/dist/integrations/middleware.js +27 -0
- package/dist/integrations/middleware.js.map +1 -0
- package/dist/integrations/openai-tools.d.ts +21 -0
- package/dist/integrations/openai-tools.d.ts.map +1 -0
- package/dist/integrations/openai-tools.js +69 -0
- package/dist/integrations/openai-tools.js.map +1 -0
- package/dist/integrations/vercel-ai.d.ts +19 -0
- package/dist/integrations/vercel-ai.d.ts.map +1 -0
- package/dist/integrations/vercel-ai.js +41 -0
- package/dist/integrations/vercel-ai.js.map +1 -0
- package/dist/server/http-server.d.ts +61 -0
- package/dist/server/http-server.d.ts.map +1 -0
- package/dist/server/http-server.js +684 -0
- package/dist/server/http-server.js.map +1 -0
- package/dist/server/index.d.ts +5 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +3 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/mcp-server.d.ts +61 -0
- package/dist/server/mcp-server.d.ts.map +1 -0
- package/dist/server/mcp-server.js +465 -0
- package/dist/server/mcp-server.js.map +1 -0
- package/dist/summarizers/claude.d.ts +11 -0
- package/dist/summarizers/claude.d.ts.map +1 -0
- package/dist/summarizers/claude.js +39 -0
- package/dist/summarizers/claude.js.map +1 -0
- package/dist/summarizers/client.d.ts +23 -0
- package/dist/summarizers/client.d.ts.map +1 -0
- package/dist/summarizers/client.js +24 -0
- package/dist/summarizers/client.js.map +1 -0
- package/dist/summarizers/extractive.d.ts +6 -0
- package/dist/summarizers/extractive.d.ts.map +1 -0
- package/dist/summarizers/extractive.js +204 -0
- package/dist/summarizers/extractive.js.map +1 -0
- package/dist/summarizers/extractor.d.ts +12 -0
- package/dist/summarizers/extractor.d.ts.map +1 -0
- package/dist/summarizers/extractor.js +75 -0
- package/dist/summarizers/extractor.js.map +1 -0
- package/dist/summarizers/openai.d.ts +11 -0
- package/dist/summarizers/openai.d.ts.map +1 -0
- package/dist/summarizers/openai.js +41 -0
- package/dist/summarizers/openai.js.map +1 -0
- package/dist/summarizers/prompts.d.ts +11 -0
- package/dist/summarizers/prompts.d.ts.map +1 -0
- package/dist/summarizers/prompts.js +104 -0
- package/dist/summarizers/prompts.js.map +1 -0
- package/docs/DEPLOYMENT.md +84 -0
- package/docs/INTEGRATIONS.md +64 -0
- package/docs/MEMORY_QUALITY_BASELINE.md +55 -0
- package/docs/MEMORY_QUALITY_RELEASE_GATE.md +63 -0
- package/docs/MEMORY_QUALITY_RUBRIC.md +249 -0
- package/docs/OPERATIONS.md +49 -0
- package/docs/SECURITY.md +25 -0
- package/openapi.yaml +843 -0
- 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"}
|