@mrc2204/agent-smart-memo 4.1.3 → 5.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 (53) hide show
  1. package/README.md +317 -135
  2. package/dist/adapters/openclaw/tool-runtime.d.ts +29 -0
  3. package/dist/adapters/openclaw/tool-runtime.d.ts.map +1 -0
  4. package/dist/adapters/openclaw/tool-runtime.js +48 -0
  5. package/dist/adapters/openclaw/tool-runtime.js.map +1 -0
  6. package/dist/core/contracts/adapter-contracts.d.ts +31 -0
  7. package/dist/core/contracts/adapter-contracts.d.ts.map +1 -0
  8. package/dist/core/contracts/adapter-contracts.js +2 -0
  9. package/dist/core/contracts/adapter-contracts.js.map +1 -0
  10. package/dist/core/runtime-boundary.d.ts +23 -0
  11. package/dist/core/runtime-boundary.d.ts.map +1 -0
  12. package/dist/core/runtime-boundary.js +39 -0
  13. package/dist/core/runtime-boundary.js.map +1 -0
  14. package/dist/core/usecases/default-memory-usecase-port.d.ts +21 -0
  15. package/dist/core/usecases/default-memory-usecase-port.d.ts.map +1 -0
  16. package/dist/core/usecases/default-memory-usecase-port.js +263 -0
  17. package/dist/core/usecases/default-memory-usecase-port.js.map +1 -0
  18. package/dist/core/usecases/semantic-memory-usecase.d.ts +52 -0
  19. package/dist/core/usecases/semantic-memory-usecase.d.ts.map +1 -0
  20. package/dist/core/usecases/semantic-memory-usecase.js +136 -0
  21. package/dist/core/usecases/semantic-memory-usecase.js.map +1 -0
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +27 -9
  24. package/dist/index.js.map +1 -1
  25. package/dist/tools/graph-tools.d.ts +2 -0
  26. package/dist/tools/graph-tools.d.ts.map +1 -1
  27. package/dist/tools/graph-tools.js +126 -177
  28. package/dist/tools/graph-tools.js.map +1 -1
  29. package/dist/tools/semantic-memory-tools.d.ts +8 -0
  30. package/dist/tools/semantic-memory-tools.d.ts.map +1 -0
  31. package/dist/tools/semantic-memory-tools.js +111 -0
  32. package/dist/tools/semantic-memory-tools.js.map +1 -0
  33. package/dist/tools/slot-tools.d.ts +3 -1
  34. package/dist/tools/slot-tools.d.ts.map +1 -1
  35. package/dist/tools/slot-tools.js +82 -156
  36. package/dist/tools/slot-tools.js.map +1 -1
  37. package/package.json +25 -32
  38. package/dist/config.d.ts +0 -62
  39. package/dist/config.d.ts.map +0 -1
  40. package/dist/config.js +0 -102
  41. package/dist/config.js.map +0 -1
  42. package/dist/scripts/reembed-collection.d.ts +0 -2
  43. package/dist/scripts/reembed-collection.d.ts.map +0 -1
  44. package/dist/scripts/reembed-collection.js +0 -165
  45. package/dist/scripts/reembed-collection.js.map +0 -1
  46. package/dist/tools/memory_search.d.ts +0 -89
  47. package/dist/tools/memory_search.d.ts.map +0 -1
  48. package/dist/tools/memory_search.js +0 -188
  49. package/dist/tools/memory_search.js.map +0 -1
  50. package/dist/tools/memory_store.d.ts +0 -65
  51. package/dist/tools/memory_store.d.ts.map +0 -1
  52. package/dist/tools/memory_store.js +0 -196
  53. package/dist/tools/memory_store.js.map +0 -1
package/dist/config.js DELETED
@@ -1,102 +0,0 @@
1
- /**
2
- * Configuration loader for Agent-Memo Plugin
3
- * Reads from environment variables or .env file
4
- */
5
- import { config } from "dotenv";
6
- import { join } from "path";
7
- // Load .env file from plugin directory
8
- config({ path: join(import.meta.dirname || "", "../.env") });
9
- /**
10
- * Plugin configuration object
11
- * All values read from environment variables with sensible defaults
12
- */
13
- export const PluginConfig = {
14
- // Qdrant settings
15
- qdrant: {
16
- host: process.env.QDRANT_HOST || "localhost",
17
- port: parseInt(process.env.QDRANT_PORT || "6333"),
18
- collection: process.env.QDRANT_COLLECTION || "mrc_bot",
19
- timeout: parseInt(process.env.QDRANT_TIMEOUT || "30000"),
20
- },
21
- // Ollama LLM settings
22
- ollama: {
23
- host: process.env.OLLAMA_HOST || "http://localhost",
24
- port: parseInt(process.env.OLLAMA_PORT || "11434"),
25
- model: process.env.OLLAMA_MODEL || "deepseek-r1:8b",
26
- timeout: parseInt(process.env.OLLAMA_TIMEOUT || "60000"),
27
- get baseUrl() {
28
- return `${this.host}:${this.port}`;
29
- },
30
- },
31
- // Embedding service settings
32
- embedding: {
33
- model: process.env.EMBEDDING_MODEL || "text-embedding-3-small",
34
- dimensions: parseInt(process.env.EMBEDDING_DIMENSIONS || "1024"),
35
- apiUrl: process.env.EMBEDDING_API_URL || "http://localhost:8000",
36
- },
37
- // Auto-capture settings
38
- autoCapture: {
39
- enabled: process.env.AUTO_CAPTURE_ENABLED !== "false", // default true
40
- minConfidence: parseFloat(process.env.AUTO_CAPTURE_MIN_CONFIDENCE || "0.7"),
41
- useLLM: process.env.AUTO_CAPTURE_USE_LLM !== "false", // default true
42
- // RAG Memory Isolation - Noise Filter settings
43
- agentBlocklist: (process.env.AUTO_CAPTURE_AGENT_BLOCKLIST || "").split(",").filter(Boolean),
44
- noisePatterns: (process.env.AUTO_CAPTURE_NOISE_PATTERNS || "").split(",").filter(Boolean).map((p) => new RegExp(p, "i")),
45
- maxMessagesPerCapture: parseInt(process.env.AUTO_CAPTURE_MAX_MESSAGES || "50"),
46
- minContentLength: parseInt(process.env.AUTO_CAPTURE_MIN_CONTENT_LENGTH || "20"),
47
- noiseThreshold: parseFloat(process.env.AUTO_CAPTURE_NOISE_THRESHOLD || "0.5"),
48
- },
49
- // Context window management settings
50
- contextWindow: {
51
- maxConversationTokens: parseInt(process.env.CONTEXT_WINDOW_MAX_TOKENS || "12000"),
52
- tokenEstimateDivisor: parseInt(process.env.CONTEXT_WINDOW_TOKEN_DIVISOR || "4"),
53
- absoluteMaxMessages: parseInt(process.env.CONTEXT_WINDOW_MAX_MESSAGES || "200"),
54
- },
55
- // State storage
56
- stateDir: process.env.STATE_DIR || process.env.OPENCLAW_STATE_DIR || `${process.env.HOME}/.openclaw`,
57
- slotDbDir: process.env.OPENCLAW_SLOTDB_DIR || `${process.env.HOME}/.openclaw/agent-memo`,
58
- // Plugin defaults
59
- defaults: {
60
- namespace: process.env.DEFAULT_NAMESPACE || "default",
61
- slotCategories: (process.env.DEFAULT_SLOT_CATEGORIES || "profile,preferences,project,environment,custom").split(","),
62
- },
63
- };
64
- /**
65
- * Validate configuration
66
- * Checks if required services are accessible
67
- */
68
- export async function validateConfig() {
69
- const results = { qdrant: false, ollama: false };
70
- // Check Qdrant
71
- try {
72
- const response = await fetch(`http://${PluginConfig.qdrant.host}:${PluginConfig.qdrant.port}/collections`, { signal: AbortSignal.timeout(5000) });
73
- results.qdrant = response.ok;
74
- }
75
- catch {
76
- results.qdrant = false;
77
- }
78
- // Check Ollama
79
- try {
80
- const response = await fetch(`${PluginConfig.ollama.baseUrl}/api/tags`, {
81
- signal: AbortSignal.timeout(5000),
82
- });
83
- results.ollama = response.ok;
84
- }
85
- catch {
86
- results.ollama = false;
87
- }
88
- return results;
89
- }
90
- /**
91
- * Print configuration (for debugging)
92
- */
93
- export function printConfig() {
94
- console.log("[AgentMemo] Configuration:");
95
- console.log(` Qdrant: ${PluginConfig.qdrant.host}:${PluginConfig.qdrant.port}/${PluginConfig.qdrant.collection}`);
96
- console.log(` Ollama: ${PluginConfig.ollama.baseUrl} (model: ${PluginConfig.ollama.model})`);
97
- console.log(` Embedding: ${PluginConfig.embedding.model} (${PluginConfig.embedding.dimensions}d)`);
98
- console.log(` AutoCapture: ${PluginConfig.autoCapture.enabled ? "enabled" : "disabled"}`);
99
- console.log(` StateDir: ${PluginConfig.stateDir}`);
100
- console.log(` SlotDbDir: ${PluginConfig.slotDbDir}`);
101
- }
102
- //# sourceMappingURL=config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import "dotenv/config";
2
- //# sourceMappingURL=reembed-collection.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reembed-collection.d.ts","sourceRoot":"","sources":["../../src/scripts/reembed-collection.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC"}
@@ -1,165 +0,0 @@
1
- import "dotenv/config";
2
- import { EmbeddingClient } from "../services/embedding.js";
3
- import { QdrantClient } from "../services/qdrant.js";
4
- function sampleArray(items, n) {
5
- if (items.length <= n)
6
- return [...items];
7
- const copy = [...items];
8
- const out = [];
9
- while (out.length < n && copy.length > 0) {
10
- const idx = Math.floor(Math.random() * copy.length);
11
- out.push(copy.splice(idx, 1)[0]);
12
- }
13
- return out;
14
- }
15
- async function run() {
16
- const qdrantHost = process.env.QDRANT_HOST || "localhost";
17
- const qdrantPort = Number(process.env.QDRANT_PORT || 6333);
18
- const qdrantCollection = process.env.QDRANT_COLLECTION || "mrc_bot_memory";
19
- const embeddingApiUrl = process.env.EMBEDDING_API_URL || process.env.OLLAMA_URL || "http://localhost:4142";
20
- const embeddingModel = process.env.EMBEDDING_MODEL || "text-embedding-3-small";
21
- let embeddingDimensions = Number(process.env.EMBEDDING_DIMENSIONS || 1536);
22
- const batchSize = Math.max(1, Number(process.env.REEMBED_BATCH_SIZE || 25));
23
- const qdrant = new QdrantClient({
24
- host: qdrantHost,
25
- port: qdrantPort,
26
- collection: qdrantCollection,
27
- vectorSize: embeddingDimensions,
28
- timeout: 60000,
29
- maxRetries: 4,
30
- }, console);
31
- const collectionInfo = await qdrant.getCollectionInfo();
32
- const detectedVectorSize = Number(collectionInfo?.result?.config?.params?.vectors?.size || 0);
33
- if (detectedVectorSize > 0 && detectedVectorSize !== embeddingDimensions) {
34
- console.warn(`[Reembed] EMBEDDING_DIMENSIONS mismatch env=${embeddingDimensions} qdrant=${detectedVectorSize}. Using qdrant size.`);
35
- embeddingDimensions = detectedVectorSize;
36
- }
37
- const embedding = new EmbeddingClient({
38
- embeddingApiUrl,
39
- model: embeddingModel,
40
- dimensions: embeddingDimensions,
41
- timeout: 120000,
42
- }, console);
43
- const stats = {
44
- totalProcessed: 0,
45
- chunkedCount: 0,
46
- maxChunksSeen: 0,
47
- failedCount: 0,
48
- startedAt: Date.now(),
49
- };
50
- console.log(`[Reembed] Start collection=${qdrantCollection} host=${qdrantHost}:${qdrantPort} model=${embeddingModel} dims=${embeddingDimensions}`);
51
- const pointsBefore = await qdrant.countPoints(true);
52
- console.log(`[Reembed] points_before=${pointsBefore}`);
53
- const processedIds = [];
54
- let offset = undefined;
55
- while (true) {
56
- const page = await qdrant.scroll(batchSize, offset, false);
57
- if (page.points.length === 0)
58
- break;
59
- const fallbackUpsertPoints = [];
60
- const vectorUpdates = [];
61
- for (const point of page.points) {
62
- const payload = point.payload || {};
63
- const text = typeof payload.text === "string" ? payload.text.trim() : "";
64
- if (!text) {
65
- stats.failedCount += 1;
66
- console.warn(`[Reembed] Skip id=${point.id}: empty text`);
67
- continue;
68
- }
69
- try {
70
- const embedded = await embedding.embedDetailed(text);
71
- const mergedPayload = {
72
- ...payload,
73
- ...embedded.metadata,
74
- metadata: {
75
- ...(payload.metadata && typeof payload.metadata === "object" ? payload.metadata : {}),
76
- ...embedded.metadata,
77
- },
78
- };
79
- vectorUpdates.push({ id: point.id, vector: embedded.vector });
80
- fallbackUpsertPoints.push({ id: point.id, vector: embedded.vector, payload: mergedPayload });
81
- processedIds.push(point.id);
82
- stats.totalProcessed += 1;
83
- if (embedded.metadata.embedding_chunked)
84
- stats.chunkedCount += 1;
85
- if (embedded.metadata.embedding_chunks_count > stats.maxChunksSeen) {
86
- stats.maxChunksSeen = embedded.metadata.embedding_chunks_count;
87
- }
88
- }
89
- catch (error) {
90
- stats.failedCount += 1;
91
- console.error(`[Reembed] Failed id=${point.id}: ${error.message}`);
92
- }
93
- }
94
- if (vectorUpdates.length > 0) {
95
- let usedFallbackUpsert = false;
96
- try {
97
- await qdrant.updateVectors(vectorUpdates);
98
- await qdrant.setPayload(fallbackUpsertPoints.map((p) => ({ id: p.id, payload: p.payload })));
99
- }
100
- catch (_error) {
101
- usedFallbackUpsert = true;
102
- await qdrant.upsert(fallbackUpsertPoints);
103
- }
104
- console.log(`[Reembed] Batch done size=${page.points.length} updated=${vectorUpdates.length} mode=${usedFallbackUpsert ? "upsert_fallback" : "updateVectors+setPayload"}`);
105
- }
106
- offset = page.nextOffset;
107
- if (offset === undefined || offset === null)
108
- break;
109
- }
110
- const pointsAfter = await qdrant.countPoints(true);
111
- console.log(`[Reembed] points_after=${pointsAfter}`);
112
- if (pointsBefore !== pointsAfter) {
113
- throw new Error(`Point count mismatch: before=${pointsBefore}, after=${pointsAfter}`);
114
- }
115
- const verifyIds = sampleArray(processedIds, Math.min(10, processedIds.length));
116
- const toKey = (id) => JSON.stringify(id);
117
- let verifyChecked = 0;
118
- if (verifyIds.length > 0) {
119
- let verifyOffset = undefined;
120
- const need = new Set(verifyIds.map((id) => toKey(id)));
121
- while (need.size > 0) {
122
- const page = await qdrant.scroll(100, verifyOffset, true);
123
- if (page.points.length === 0)
124
- break;
125
- for (const p of page.points) {
126
- const key = toKey(p.id);
127
- if (need.has(key)) {
128
- const dim = p.vector?.length || 0;
129
- if (dim !== embeddingDimensions) {
130
- throw new Error(`Vector dim mismatch for id=${key}: expected=${embeddingDimensions}, got=${dim}`);
131
- }
132
- verifyChecked += 1;
133
- need.delete(key);
134
- }
135
- }
136
- verifyOffset = page.nextOffset;
137
- if (verifyOffset === undefined || verifyOffset === null)
138
- break;
139
- }
140
- }
141
- const smokeVector = await embedding.embed("memory search smoke test");
142
- const smokeResults = await qdrant.search(smokeVector, 3);
143
- if (!Array.isArray(smokeResults)) {
144
- throw new Error("Search smoke test failed: no result array");
145
- }
146
- const totalTime = Date.now() - stats.startedAt;
147
- console.log("[Reembed] Verification passed");
148
- console.log(JSON.stringify({
149
- collection: qdrantCollection,
150
- points_before: pointsBefore,
151
- points_after: pointsAfter,
152
- random_verified_vectors: verifyChecked,
153
- search_smoke_test: true,
154
- total_processed: stats.totalProcessed,
155
- chunked_count: stats.chunkedCount,
156
- max_chunks_seen: stats.maxChunksSeen,
157
- failed_count: stats.failedCount,
158
- total_time_ms: totalTime,
159
- }, null, 2));
160
- }
161
- run().catch((error) => {
162
- console.error(`[Reembed] Fatal: ${error.stack || error.message}`);
163
- process.exit(1);
164
- });
165
- //# sourceMappingURL=reembed-collection.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reembed-collection.js","sourceRoot":"","sources":["../../src/scripts/reembed-collection.ts"],"names":[],"mappings":"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"}
@@ -1,89 +0,0 @@
1
- import { QdrantClient } from "../services/qdrant.js";
2
- import { EmbeddingClient } from "../services/embedding.js";
3
- import { SearchParams, ToolResult, MemoryNamespace } from "../types.js";
4
- export declare const memorySearchSchema: {
5
- type: string;
6
- properties: {
7
- query: {
8
- type: string;
9
- description: string;
10
- };
11
- limit: {
12
- type: string;
13
- description: string;
14
- minimum: number;
15
- maximum: number;
16
- };
17
- namespace: {
18
- type: string;
19
- description: string;
20
- };
21
- sessionId: {
22
- type: string;
23
- description: string;
24
- };
25
- userId: {
26
- type: string;
27
- description: string;
28
- };
29
- minScore: {
30
- type: string;
31
- description: string;
32
- minimum: number;
33
- maximum: number;
34
- };
35
- sourceAgent: {
36
- type: string;
37
- description: string;
38
- };
39
- };
40
- required: string[];
41
- };
42
- export declare function createMemorySearchTool(qdrant: QdrantClient, embedding: EmbeddingClient, defaultNamespace: MemoryNamespace): {
43
- name: string;
44
- label: string;
45
- description: string;
46
- parameters: {
47
- type: string;
48
- properties: {
49
- query: {
50
- type: string;
51
- description: string;
52
- };
53
- limit: {
54
- type: string;
55
- description: string;
56
- minimum: number;
57
- maximum: number;
58
- };
59
- namespace: {
60
- type: string;
61
- description: string;
62
- };
63
- sessionId: {
64
- type: string;
65
- description: string;
66
- };
67
- userId: {
68
- type: string;
69
- description: string;
70
- };
71
- minScore: {
72
- type: string;
73
- description: string;
74
- minimum: number;
75
- maximum: number;
76
- };
77
- sourceAgent: {
78
- type: string;
79
- description: string;
80
- };
81
- };
82
- required: string[];
83
- };
84
- execute(_id: string, params: SearchParams & {
85
- sourceAgent?: string;
86
- agentId?: string;
87
- }, _signal?: AbortSignal): Promise<ToolResult>;
88
- };
89
- //# sourceMappingURL=memory_search.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"memory_search.d.ts","sourceRoot":"","sources":["../../src/tools/memory_search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,UAAU,EAAe,eAAe,EAAE,MAAM,aAAa,CAAC;AAyBrF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqC9B,CAAC;AAEF,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,eAAe,EAC1B,gBAAgB,EAAE,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAcxB,MAAM,UACH,YAAY,GAAG;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,YACvD,WAAW,GACpB,OAAO,CAAC,UAAU,CAAC;EAuIzB"}
@@ -1,188 +0,0 @@
1
- import { getAgentNamespaces, getNamespaceWeight, parseExplicitNamespace, toCoreAgent } from "../shared/memory-config.js";
2
- function resolveAgentFromRuntimeParams(params) {
3
- const directAgentId = typeof params.agentId === "string" ? params.agentId.trim() : "";
4
- if (directAgentId)
5
- return toCoreAgent(directAgentId);
6
- const sessionId = typeof params.sessionId === "string" ? params.sessionId.trim() : "";
7
- if (sessionId) {
8
- const parts = sessionId.split(":");
9
- if (parts.length >= 2 && parts[0] === "agent") {
10
- const fromSession = parts[1]?.trim();
11
- if (fromSession)
12
- return toCoreAgent(fromSession);
13
- }
14
- }
15
- const namespace = typeof params.namespace === "string" ? params.namespace.trim() : "";
16
- const nsMatch = /^agent\.([a-z0-9][a-z0-9_-]*)\.(working_memory|lessons|decisions)$/i.exec(namespace);
17
- if (nsMatch?.[1]) {
18
- return toCoreAgent(nsMatch[1]);
19
- }
20
- return "assistant";
21
- }
22
- export const memorySearchSchema = {
23
- type: "object",
24
- properties: {
25
- query: {
26
- type: "string",
27
- description: "Search query for relevant memories",
28
- },
29
- limit: {
30
- type: "number",
31
- description: "Max results (default: 5)",
32
- minimum: 1,
33
- maximum: 20,
34
- },
35
- namespace: {
36
- type: "string",
37
- description: "Filter by namespace (default: auto-detected from agent)",
38
- },
39
- sessionId: {
40
- type: "string",
41
- description: "Filter by session ID",
42
- },
43
- userId: {
44
- type: "string",
45
- description: "Filter by user ID",
46
- },
47
- minScore: {
48
- type: "number",
49
- description: "Minimum similarity score (0-1, default: 0.7)",
50
- minimum: 0,
51
- maximum: 1,
52
- },
53
- sourceAgent: {
54
- type: "string",
55
- description: "Filter by source agent ID",
56
- },
57
- },
58
- required: ["query"],
59
- };
60
- export function createMemorySearchTool(qdrant, embedding, defaultNamespace) {
61
- const createDetails = (text, extra = {}) => ({
62
- ...extra,
63
- toolResult: { text },
64
- });
65
- return {
66
- name: "memory_search",
67
- label: "Memory Search",
68
- description: "Search stored memories by semantic similarity. Returns most relevant past information.",
69
- parameters: memorySearchSchema,
70
- async execute(_id, params, _signal) {
71
- try {
72
- // Validate
73
- if (!params.query || typeof params.query !== "string") {
74
- return {
75
- content: [{ type: "text", text: "Error: query is required" }],
76
- isError: true,
77
- details: createDetails("Error: query is required", { error: "Missing query parameter" }),
78
- };
79
- }
80
- const query = params.query.trim();
81
- if (query.length === 0) {
82
- return {
83
- content: [{ type: "text", text: "Error: query cannot be empty" }],
84
- isError: true,
85
- details: createDetails("Error: query cannot be empty", { error: "Empty query" }),
86
- };
87
- }
88
- const limit = Math.min(Math.max(params.limit || 5, 1), 20);
89
- const minScore = params.minScore ?? 0.7;
90
- // Determine namespaces to search (normalize user-facing aliases to canonical namespaces)
91
- const sourceAgent = resolveAgentFromRuntimeParams(params);
92
- const namespaces = params.namespace
93
- ? [parseExplicitNamespace(params.namespace, sourceAgent)]
94
- : getAgentNamespaces(sourceAgent);
95
- // Build namespace filter (OR if multiple namespaces)
96
- const namespaceConditions = namespaces.map(ns => ({
97
- key: "namespace",
98
- match: { value: ns },
99
- }));
100
- const filterConditions = [];
101
- if (namespaceConditions.length === 1) {
102
- filterConditions.push(namespaceConditions[0]);
103
- }
104
- else if (namespaceConditions.length > 1) {
105
- filterConditions.push({ should: namespaceConditions });
106
- }
107
- if (params.sessionId) {
108
- filterConditions.push({
109
- key: "sessionId",
110
- match: { value: params.sessionId },
111
- });
112
- }
113
- if (params.userId) {
114
- filterConditions.push({
115
- key: "userId",
116
- match: { value: params.userId },
117
- });
118
- }
119
- if (params.sourceAgent) {
120
- filterConditions.push({
121
- key: "source_agent",
122
- match: { value: params.sourceAgent },
123
- });
124
- }
125
- const filter = filterConditions.length > 0 ? { must: filterConditions } : undefined;
126
- // Generate embedding and search
127
- const vector = await embedding.embed(query);
128
- const results = await qdrant.search(vector, limit, filter);
129
- // Exclude quarantined noise and apply namespace-priority weighting
130
- const weighted = results
131
- .filter((r) => (r.payload?.namespace || "") !== "noise.filtered")
132
- .map((r) => {
133
- const ns = String(r.payload?.namespace || "");
134
- const weight = getNamespaceWeight(sourceAgent, ns);
135
- return {
136
- ...r,
137
- _rawScore: r.score,
138
- score: Math.min(1, r.score * weight),
139
- };
140
- })
141
- .sort((a, b) => b.score - a.score);
142
- // Filter by minScore on weighted score
143
- const filtered = weighted.filter((r) => r.score >= minScore);
144
- if (filtered.length === 0) {
145
- const textOut = "No relevant memories found.";
146
- return {
147
- content: [{ type: "text", text: textOut }],
148
- details: createDetails(textOut, { count: 0, query }),
149
- };
150
- }
151
- // Format results
152
- const formatted = filtered.map((r, i) => {
153
- const payload = r.payload;
154
- const date = payload.timestamp
155
- ? new Date(payload.timestamp).toLocaleDateString()
156
- : "Unknown";
157
- const lines = [
158
- `[${i + 1}] Score: ${(r.score * 100).toFixed(1)}%`,
159
- `Namespace: ${payload.namespace || "unknown"}`,
160
- `Text: ${payload.text}`,
161
- `Date: ${date}`,
162
- ];
163
- if (payload.metadata && Object.keys(payload.metadata).length > 0) {
164
- lines.push(`Metadata: ${JSON.stringify(payload.metadata)}`);
165
- }
166
- return lines.join("\n");
167
- }).join("\n\n---\n\n");
168
- const textOut = `Found ${filtered.length} relevant memories for "${query}":\n\n${formatted}`;
169
- return {
170
- content: [{
171
- type: "text",
172
- text: textOut,
173
- }],
174
- details: createDetails(textOut, { count: filtered.length, query, results: filtered }),
175
- };
176
- }
177
- catch (error) {
178
- const textOut = `Error searching memories: ${error.message}`;
179
- return {
180
- content: [{ type: "text", text: textOut }],
181
- isError: true,
182
- details: createDetails(textOut, { error: error.message }),
183
- };
184
- }
185
- },
186
- };
187
- }
188
- //# sourceMappingURL=memory_search.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"memory_search.js","sourceRoot":"","sources":["../../src/tools/memory_search.ts"],"names":[],"mappings":"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"}
@@ -1,65 +0,0 @@
1
- import { QdrantClient } from "../services/qdrant.js";
2
- import { EmbeddingClient } from "../services/embedding.js";
3
- import { DeduplicationService } from "../services/dedupe.js";
4
- import { StoreParams, ToolResult, MemoryNamespace } from "../types.js";
5
- export declare const memoryStoreSchema: {
6
- type: string;
7
- properties: {
8
- text: {
9
- type: string;
10
- description: string;
11
- };
12
- namespace: {
13
- type: string;
14
- description: string;
15
- };
16
- sessionId: {
17
- type: string;
18
- description: string;
19
- };
20
- userId: {
21
- type: string;
22
- description: string;
23
- };
24
- metadata: {
25
- type: string;
26
- description: string;
27
- };
28
- };
29
- required: string[];
30
- };
31
- export declare function createMemoryStoreTool(qdrant: QdrantClient, embedding: EmbeddingClient, dedupe: DeduplicationService, defaultNamespace: MemoryNamespace): {
32
- name: string;
33
- label: string;
34
- description: string;
35
- parameters: {
36
- type: string;
37
- properties: {
38
- text: {
39
- type: string;
40
- description: string;
41
- };
42
- namespace: {
43
- type: string;
44
- description: string;
45
- };
46
- sessionId: {
47
- type: string;
48
- description: string;
49
- };
50
- userId: {
51
- type: string;
52
- description: string;
53
- };
54
- metadata: {
55
- type: string;
56
- description: string;
57
- };
58
- };
59
- required: string[];
60
- };
61
- execute(_id: string, params: StoreParams & {
62
- agentId?: string;
63
- }, _signal?: AbortSignal): Promise<ToolResult>;
64
- };
65
- //# sourceMappingURL=memory_store.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"memory_store.d.ts","sourceRoot":"","sources":["../../src/tools/memory_store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,UAAU,EAAS,eAAe,EAAE,MAAM,aAAa,CAAC;AAyB9E,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;CAyB7B,CAAC;AAEF,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,eAAe,EAC1B,MAAM,EAAE,oBAAoB,EAC5B,gBAAgB,EAAE,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAcxB,MAAM,UACH,WAAW,GAAG;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,YAChC,WAAW,GACpB,OAAO,CAAC,UAAU,CAAC;EAwJzB"}