@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
@@ -0,0 +1,111 @@
1
+ import { configureOpenClawRuntime, createOpenClawResult, getMemoryUseCasePortForContext, getSessionKey, parseOpenClawSessionIdentity, } from "../adapters/openclaw/tool-runtime.js";
2
+ function createResult(text, isError = false) {
3
+ return createOpenClawResult(text, isError);
4
+ }
5
+ export function registerSemanticMemoryTools(api, options) {
6
+ configureOpenClawRuntime(options);
7
+ api.registerTool({
8
+ name: "memory_store",
9
+ label: "Memory Store",
10
+ description: "Store a memory in the vector database. Automatically deduplicates similar content.",
11
+ parameters: {
12
+ type: "object",
13
+ properties: {
14
+ text: { type: "string", description: "The content to remember" },
15
+ namespace: { type: "string", description: "Namespace for organization" },
16
+ sessionId: { type: "string", description: "Optional session ID" },
17
+ userId: { type: "string", description: "Optional user ID" },
18
+ metadata: { type: "object", description: "Additional metadata" },
19
+ },
20
+ required: ["text"],
21
+ },
22
+ async execute(_id, params, ctx) {
23
+ try {
24
+ const sessionKey = getSessionKey(ctx);
25
+ const { userId, agentId } = parseOpenClawSessionIdentity(sessionKey);
26
+ const useCasePort = getMemoryUseCasePortForContext(ctx);
27
+ const data = await useCasePort.run("memory.capture", {
28
+ context: { userId, agentId, sessionId: params.sessionId },
29
+ payload: {
30
+ text: params.text,
31
+ namespace: params.namespace,
32
+ sessionId: params.sessionId,
33
+ userId: params.userId,
34
+ metadata: params.metadata,
35
+ },
36
+ meta: {
37
+ source: "openclaw",
38
+ toolName: "memory_store",
39
+ requestId: _id,
40
+ },
41
+ });
42
+ const message = data.updated
43
+ ? `Memory updated (duplicate detected, ID: ${data.id})`
44
+ : `Memory stored successfully (ID: ${data.id})`;
45
+ return createResult(message);
46
+ }
47
+ catch (error) {
48
+ return createResult(`Error storing memory: ${error instanceof Error ? error.message : String(error)}`, true);
49
+ }
50
+ },
51
+ });
52
+ api.registerTool({
53
+ name: "memory_search",
54
+ label: "Memory Search",
55
+ description: "Search stored memories by semantic similarity.",
56
+ parameters: {
57
+ type: "object",
58
+ properties: {
59
+ query: { type: "string", description: "Search query" },
60
+ limit: { type: "number", minimum: 1, maximum: 20 },
61
+ namespace: { type: "string" },
62
+ sessionId: { type: "string" },
63
+ userId: { type: "string" },
64
+ minScore: { type: "number", minimum: 0, maximum: 1 },
65
+ sourceAgent: { type: "string" },
66
+ },
67
+ required: ["query"],
68
+ },
69
+ async execute(_id, params, ctx) {
70
+ try {
71
+ const sessionKey = getSessionKey(ctx);
72
+ const { userId, agentId } = parseOpenClawSessionIdentity(sessionKey);
73
+ const useCasePort = getMemoryUseCasePortForContext(ctx);
74
+ const data = await useCasePort.run("memory.search", {
75
+ context: { userId, agentId, sessionId: params.sessionId },
76
+ payload: {
77
+ query: params.query,
78
+ limit: params.limit,
79
+ namespace: params.namespace,
80
+ sessionId: params.sessionId,
81
+ userId: params.userId,
82
+ minScore: params.minScore,
83
+ sourceAgent: params.sourceAgent,
84
+ },
85
+ meta: {
86
+ source: "openclaw",
87
+ toolName: "memory_search",
88
+ requestId: _id,
89
+ },
90
+ });
91
+ if (!data?.results || data.results.length === 0) {
92
+ return createResult("No relevant memories found.");
93
+ }
94
+ const lines = data.results.map((r, i) => {
95
+ const date = r.timestamp ? new Date(r.timestamp).toLocaleDateString() : "Unknown";
96
+ return [
97
+ `[${i + 1}] Score: ${(Number(r.score || 0) * 100).toFixed(1)}%`,
98
+ `Namespace: ${r.namespace || "unknown"}`,
99
+ `Text: ${r.text}`,
100
+ `Date: ${date}`,
101
+ ].join("\n");
102
+ });
103
+ return createResult(`Found ${data.results.length} relevant memories for "${data.query}":\n\n${lines.join("\n\n---\n\n")}`);
104
+ }
105
+ catch (error) {
106
+ return createResult(`Error searching memories: ${error instanceof Error ? error.message : String(error)}`, true);
107
+ }
108
+ },
109
+ });
110
+ }
111
+ //# sourceMappingURL=semantic-memory-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semantic-memory-tools.js","sourceRoot":"","sources":["../../src/tools/semantic-memory-tools.ts"],"names":[],"mappings":"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"}
@@ -10,8 +10,10 @@
10
10
  * - memory_slot_list: List all slots with scope filter
11
11
  */
12
12
  import type { OpenClawPluginApi } from "openclaw/plugin-sdk";
13
- export declare function registerSlotTools(api: OpenClawPluginApi, defaultCategories: string[], options?: {
13
+ import type { SemanticMemoryUseCase } from "../core/usecases/semantic-memory-usecase.js";
14
+ export declare function registerSlotTools(api: OpenClawPluginApi, _defaultCategories: string[], options?: {
14
15
  stateDir?: string;
15
16
  slotDbDir?: string;
17
+ semanticUseCaseFactory?: (slotDbDir: string) => SemanticMemoryUseCase | undefined;
16
18
  }): void;
17
19
  //# sourceMappingURL=slot-tools.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"slot-tools.d.ts","sourceRoot":"","sources":["../../src/tools/slot-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAyE7D,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,iBAAiB,EACtB,iBAAiB,EAAE,MAAM,EAAE,EAC3B,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAClD,IAAI,CA0ON"}
1
+ {"version":3,"file":"slot-tools.d.ts","sourceRoot":"","sources":["../../src/tools/slot-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAQ7D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAC;AAMzF,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,iBAAiB,EACtB,kBAAkB,EAAE,MAAM,EAAE,EAC5B,OAAO,CAAC,EAAE;IACR,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sBAAsB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,qBAAqB,GAAG,SAAS,CAAC;CACnF,GACA,IAAI,CAuNN"}
@@ -9,70 +9,12 @@
9
9
  * - memory_slot_delete: Delete a slot by key with explicit scope
10
10
  * - memory_slot_list: List all slots with scope filter
11
11
  */
12
- import { SlotDB } from "../db/slot-db.js";
13
- import { resolveSlotDbDir } from "../shared/slotdb-path.js";
14
- // Singleton DB instances keyed by resolved slotDbDir
15
- const dbInstances = new Map();
16
- let runtimeConfig = {
17
- stateDir: process.env.OPENCLAW_STATE_DIR || `${process.env.HOME}/.openclaw`,
18
- slotDbDir: resolveSlotDbDir({
19
- stateDir: process.env.OPENCLAW_STATE_DIR || `${process.env.HOME}/.openclaw`,
20
- env: process.env,
21
- homeDir: process.env.HOME,
22
- }),
23
- };
24
- function getSlotDB(slotDbDir) {
25
- let db = dbInstances.get(slotDbDir);
26
- if (!db) {
27
- db = new SlotDB(runtimeConfig.stateDir, { slotDbDir });
28
- dbInstances.set(slotDbDir, db);
29
- }
30
- return db;
31
- }
32
- function resolveSlotDbDirFromContext(ctx) {
33
- const stateDir = ctx?.stateDir || runtimeConfig.stateDir;
34
- const configSlotDbDir = ctx?.pluginConfig?.slotDbDir || ctx?.config?.slotDbDir;
35
- return resolveSlotDbDir({
36
- stateDir,
37
- slotDbDir: configSlotDbDir,
38
- env: process.env,
39
- homeDir: process.env.HOME,
40
- });
41
- }
42
- /**
43
- * Extract scope identifiers from the session context.
44
- * For cross-agent sharing, we use special agentId values:
45
- * - "private": current agent only (default)
46
- * - "team": shared across all agents
47
- * - "public": global scope
48
- */
49
- function extractScope(sessionKey, scope) {
50
- const parts = sessionKey.split(":");
51
- const agentId = parts.length >= 2 ? parts[1] : "main";
52
- const userId = parts.length >= 3 ? parts.slice(2).join(":") : "default";
53
- // Map scope to agentId for storage
54
- if (scope === "team") {
55
- return { userId, agentId: "__team__" }; // Shared across agents
56
- }
57
- else if (scope === "public") {
58
- return { userId: "__public__", agentId: "__public__" }; // Global
59
- }
60
- // Default: private scope (agent-specific)
61
- return { userId, agentId };
62
- }
63
- // Helper to create proper tool result
12
+ import { configureOpenClawRuntime, createOpenClawResult, getMemoryUseCasePortForContext, getSessionKey, parseOpenClawSessionIdentity, } from "../adapters/openclaw/tool-runtime.js";
64
13
  function createResult(text, isError = false) {
65
- return {
66
- content: [{ type: "text", text }],
67
- details: { toolResult: { text } },
68
- isError,
69
- };
14
+ return createOpenClawResult(text, isError);
70
15
  }
71
- export function registerSlotTools(api, defaultCategories, options) {
72
- runtimeConfig = {
73
- stateDir: options?.stateDir || runtimeConfig.stateDir,
74
- slotDbDir: options?.slotDbDir || runtimeConfig.slotDbDir,
75
- };
16
+ export function registerSlotTools(api, _defaultCategories, options) {
17
+ configureOpenClawRuntime(options);
76
18
  // Tool 1: memory_slot_get
77
19
  api.registerTool({
78
20
  name: "memory_slot_get",
@@ -88,67 +30,40 @@ export function registerSlotTools(api, defaultCategories, options) {
88
30
  },
89
31
  async execute(_id, params, ctx) {
90
32
  try {
91
- const slotDbDir = resolveSlotDbDirFromContext(ctx);
92
- const sessionKey = ctx?.sessionKey || "agent:main:default";
93
- const db = getSlotDB(slotDbDir);
94
- // Determine which scopes to query
95
- const scopesToQuery = [];
96
- if (params.scope === "all") {
97
- // Query all scopes: private (current agent) + team + public
98
- const { userId, agentId } = extractScope(sessionKey, "private");
99
- scopesToQuery.push({ userId, agentId, label: "private" });
100
- scopesToQuery.push({ userId, agentId: "__team__", label: "team" });
101
- scopesToQuery.push({ userId: "__public__", agentId: "__public__", label: "public" });
102
- }
103
- else {
104
- // Query specific scope
105
- const { userId, agentId } = extractScope(sessionKey, params.scope);
106
- scopesToQuery.push({ userId, agentId, label: params.scope || "private" });
107
- }
108
- // Collect results from all scopes
109
- const allResults = [];
110
- for (const scopeInfo of scopesToQuery) {
111
- if (!params.key && !params.category) {
112
- const slots = db.list(scopeInfo.userId, scopeInfo.agentId);
113
- slots.forEach(s => allResults.push({ ...s, _scope: scopeInfo.label }));
114
- }
115
- else {
116
- const result = db.get(scopeInfo.userId, scopeInfo.agentId, { key: params.key, category: params.category });
117
- if (result) {
118
- if (Array.isArray(result)) {
119
- result.forEach(r => allResults.push({ ...r, _scope: scopeInfo.label }));
120
- }
121
- else {
122
- allResults.push({ ...result, _scope: scopeInfo.label });
123
- }
124
- }
125
- }
126
- }
127
- if (allResults.length === 0) {
33
+ const sessionKey = getSessionKey(ctx);
34
+ const { userId, agentId } = parseOpenClawSessionIdentity(sessionKey);
35
+ const useCasePort = getMemoryUseCasePortForContext(ctx);
36
+ const data = await useCasePort.run("slot.get", {
37
+ context: { userId, agentId },
38
+ payload: {
39
+ key: params.key,
40
+ category: params.category,
41
+ scope: params.scope,
42
+ },
43
+ meta: {
44
+ source: "openclaw",
45
+ toolName: "memory_slot_get",
46
+ requestId: _id,
47
+ },
48
+ });
49
+ if (!data || (Array.isArray(data) && data.length === 0)) {
128
50
  return createResult(`No slot found${params.key ? ` for key "${params.key}"` : ""}${params.category ? ` in category "${params.category}"` : ""}${params.scope ? ` with scope "${params.scope}"` : ""}.`);
129
51
  }
130
- // For single key query, return first match (private > team > public)
131
- if (params.key && allResults.length > 0) {
132
- const prioritized = allResults.sort((a, b) => {
133
- const priority = { private: 0, team: 1, public: 2 };
134
- return (priority[a._scope] || 0) - (priority[b._scope] || 0);
135
- });
136
- const result = prioritized[0];
52
+ if (!Array.isArray(data)) {
137
53
  return createResult(JSON.stringify({
138
- key: result.key,
139
- value: result.value,
140
- category: result.category,
141
- version: result.version,
142
- scope: result._scope,
54
+ key: data.key,
55
+ value: data.value,
56
+ category: data.category,
57
+ version: data.version,
58
+ scope: data.scope,
143
59
  }, null, 2));
144
60
  }
145
- // For category/list queries, return all with scope labels
146
- return createResult(JSON.stringify(allResults.map(r => ({
61
+ return createResult(JSON.stringify(data.map((r) => ({
147
62
  key: r.key,
148
63
  value: r.value,
149
64
  category: r.category,
150
65
  version: r.version,
151
- scope: r._scope,
66
+ scope: r.scope,
152
67
  })), null, 2));
153
68
  }
154
69
  catch (error) {
@@ -174,17 +89,25 @@ export function registerSlotTools(api, defaultCategories, options) {
174
89
  },
175
90
  async execute(_id, params, ctx) {
176
91
  try {
177
- const slotDbDir = resolveSlotDbDirFromContext(ctx);
178
- const sessionKey = ctx?.sessionKey || "agent:main:default";
179
- const { userId, agentId } = extractScope(sessionKey, params.scope);
180
- const db = getSlotDB(slotDbDir);
181
- const slot = db.set(userId, agentId, {
182
- key: params.key,
183
- value: params.value,
184
- category: params.category,
185
- source: params.source || "tool",
92
+ const sessionKey = getSessionKey(ctx);
93
+ const { userId, agentId } = parseOpenClawSessionIdentity(sessionKey);
94
+ const useCasePort = getMemoryUseCasePortForContext(ctx);
95
+ const slot = await useCasePort.run("slot.set", {
96
+ context: { userId, agentId },
97
+ payload: {
98
+ key: params.key,
99
+ value: params.value,
100
+ category: params.category,
101
+ source: params.source,
102
+ scope: params.scope,
103
+ },
104
+ meta: {
105
+ source: "openclaw",
106
+ toolName: "memory_slot_set",
107
+ requestId: _id,
108
+ },
186
109
  });
187
- const scopeLabel = params.scope || "private";
110
+ const scopeLabel = slot.scope || params.scope || "private";
188
111
  return createResult(`✅ Slot "${slot.key}" ${slot.version > 1 ? `updated (v${slot.version})` : "created"} in category "${slot.category}" [scope: ${scopeLabel}].\nValue: ${JSON.stringify(slot.value)}`);
189
112
  }
190
113
  catch (error) {
@@ -207,13 +130,23 @@ export function registerSlotTools(api, defaultCategories, options) {
207
130
  },
208
131
  async execute(_id, params, ctx) {
209
132
  try {
210
- const slotDbDir = resolveSlotDbDirFromContext(ctx);
211
- const sessionKey = ctx?.sessionKey || "agent:main:default";
212
- const { userId, agentId } = extractScope(sessionKey, params.scope || "private");
213
- const db = getSlotDB(slotDbDir);
214
- const deleted = db.delete(userId, agentId, params.key);
215
- const scopeLabel = params.scope || "private";
216
- if (!deleted) {
133
+ const sessionKey = getSessionKey(ctx);
134
+ const { userId, agentId } = parseOpenClawSessionIdentity(sessionKey);
135
+ const useCasePort = getMemoryUseCasePortForContext(ctx);
136
+ const result = await useCasePort.run("slot.delete", {
137
+ context: { userId, agentId },
138
+ payload: {
139
+ key: params.key,
140
+ scope: params.scope,
141
+ },
142
+ meta: {
143
+ source: "openclaw",
144
+ toolName: "memory_slot_delete",
145
+ requestId: _id,
146
+ },
147
+ });
148
+ const scopeLabel = result.scope || params.scope || "private";
149
+ if (!result.deleted) {
217
150
  return createResult(`No slot found for key "${params.key}" in scope "${scopeLabel}".`);
218
151
  }
219
152
  return createResult(`✅ Deleted slot "${params.key}" from scope "${scopeLabel}".`);
@@ -238,37 +171,30 @@ export function registerSlotTools(api, defaultCategories, options) {
238
171
  },
239
172
  async execute(_id, params, ctx) {
240
173
  try {
241
- const slotDbDir = resolveSlotDbDirFromContext(ctx);
242
- const sessionKey = ctx?.sessionKey || "agent:main:default";
243
- const db = getSlotDB(slotDbDir);
244
- // Determine scopes to query
245
- const scopesToQuery = [];
246
- const queryScope = params.scope || "all";
247
- if (queryScope === "all") {
248
- const { userId, agentId } = extractScope(sessionKey, "private");
249
- scopesToQuery.push({ userId, agentId, label: "private" });
250
- scopesToQuery.push({ userId, agentId: "__team__", label: "team" });
251
- scopesToQuery.push({ userId: "__public__", agentId: "__public__", label: "public" });
252
- }
253
- else {
254
- const { userId, agentId } = extractScope(sessionKey, queryScope);
255
- scopesToQuery.push({ userId, agentId, label: queryScope });
256
- }
257
- // Collect from all scopes
258
- const allSlots = [];
259
- for (const scopeInfo of scopesToQuery) {
260
- const slots = db.list(scopeInfo.userId, scopeInfo.agentId, { category: params.category, prefix: params.prefix });
261
- slots.forEach(s => allSlots.push({ ...s, _scope: scopeInfo.label }));
262
- }
263
- if (allSlots.length === 0) {
174
+ const sessionKey = getSessionKey(ctx);
175
+ const { userId, agentId } = parseOpenClawSessionIdentity(sessionKey);
176
+ const useCasePort = getMemoryUseCasePortForContext(ctx);
177
+ const allSlots = await useCasePort.run("slot.list", {
178
+ context: { userId, agentId },
179
+ payload: {
180
+ category: params.category,
181
+ prefix: params.prefix,
182
+ scope: (params.scope || "all"),
183
+ },
184
+ meta: {
185
+ source: "openclaw",
186
+ toolName: "memory_slot_list",
187
+ requestId: _id,
188
+ },
189
+ });
190
+ if (!allSlots || allSlots.length === 0) {
264
191
  return createResult(params.category
265
192
  ? `No slots found in category "${params.category}"${params.scope ? ` with scope "${params.scope}"` : ""}.`
266
193
  : "No memory slots stored yet. Use memory_slot_set to store structured data.");
267
194
  }
268
- // Group by scope
269
195
  const grouped = {};
270
196
  for (const slot of allSlots) {
271
- const scope = slot._scope || "private";
197
+ const scope = slot.scope || "private";
272
198
  if (!grouped[scope])
273
199
  grouped[scope] = [];
274
200
  grouped[scope].push({ key: slot.key, value: slot.value, version: slot.version });
@@ -1 +1 @@
1
- {"version":3,"file":"slot-tools.js","sourceRoot":"","sources":["../../src/tools/slot-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"slot-tools.js","sourceRoot":"","sources":["../../src/tools/slot-tools.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,36 +1,29 @@
1
1
  {
2
2
  "name": "@mrc2204/agent-smart-memo",
3
- "version": "4.1.3",
3
+ "version": "5.0.0",
4
4
  "description": "Smart Memory Plugin for OpenClaw — structured slot memory with auto-capture, auto-recall, essence distillation, and Qdrant vector search",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
- "openclaw": {
8
- "extensions": [
9
- "./dist/index.js"
10
- ]
11
- },
12
- "scripts": {
13
- "build": "tsc",
14
- "test": "npx tsx tests/test.ts && npx tsx tests/test-auto-recall.ts && npx tsx tests/test-memory-config.ts",
15
- "clean": "rm -rf dist",
16
- "migrate:namespaces": "npx tsx scripts/migrate-namespaces.ts",
17
- "distill:namespaces": "npx tsx scripts/distill-by-namespace.ts",
18
- "validate:ab": "npx tsx scripts/validate-ab.ts"
19
- },
20
- "dependencies": {
21
- "dotenv": "^17.3.1"
22
- },
23
- "devDependencies": {
24
- "@sinclair/typebox": "^0.34.0",
25
- "@types/node": "^22.0.0",
26
- "openclaw": "*",
27
- "typescript": "^5.0.0"
7
+ "exports": {
8
+ ".": "./dist/index.js"
28
9
  },
10
+ "types": "dist/index.d.ts",
11
+ "files": [
12
+ "dist/",
13
+ "README.md",
14
+ "LICENSE",
15
+ "CONFIG.example.json",
16
+ "openclaw.plugin.json"
17
+ ],
29
18
  "license": "MIT",
19
+ "author": "mrc2204",
30
20
  "repository": {
31
21
  "type": "git",
32
22
  "url": "git+https://github.com/cong91/agent-smart-memo.git"
33
23
  },
24
+ "publishConfig": {
25
+ "access": "public"
26
+ },
34
27
  "keywords": [
35
28
  "openclaw",
36
29
  "plugin",
@@ -41,15 +34,15 @@
41
34
  "qdrant",
42
35
  "auto-capture"
43
36
  ],
44
- "author": "mrc2204",
45
- "publishConfig": {
46
- "access": "public"
37
+ "dependencies": {
38
+ "dotenv": "^17.3.1"
47
39
  },
48
- "files": [
49
- "dist/",
50
- "openclaw.plugin.json",
51
- "CONFIG.example.json",
52
- "README.md",
53
- "LICENSE"
54
- ]
40
+ "openclaw": {
41
+ "extensions": [
42
+ "./dist/index.js"
43
+ ]
44
+ },
45
+ "devDependencies": {
46
+ "openclaw": "*"
47
+ }
55
48
  }
package/dist/config.d.ts DELETED
@@ -1,62 +0,0 @@
1
- /**
2
- * Configuration loader for Agent-Memo Plugin
3
- * Reads from environment variables or .env file
4
- */
5
- /**
6
- * Plugin configuration object
7
- * All values read from environment variables with sensible defaults
8
- */
9
- export declare const PluginConfig: {
10
- qdrant: {
11
- host: string;
12
- port: number;
13
- collection: string;
14
- timeout: number;
15
- };
16
- ollama: {
17
- host: string;
18
- port: number;
19
- model: string;
20
- timeout: number;
21
- readonly baseUrl: string;
22
- };
23
- embedding: {
24
- model: string;
25
- dimensions: number;
26
- apiUrl: string;
27
- };
28
- autoCapture: {
29
- enabled: boolean;
30
- minConfidence: number;
31
- useLLM: boolean;
32
- agentBlocklist: string[];
33
- noisePatterns: RegExp[];
34
- maxMessagesPerCapture: number;
35
- minContentLength: number;
36
- noiseThreshold: number;
37
- };
38
- contextWindow: {
39
- maxConversationTokens: number;
40
- tokenEstimateDivisor: number;
41
- absoluteMaxMessages: number;
42
- };
43
- stateDir: string;
44
- slotDbDir: string;
45
- defaults: {
46
- namespace: string;
47
- slotCategories: string[];
48
- };
49
- };
50
- /**
51
- * Validate configuration
52
- * Checks if required services are accessible
53
- */
54
- export declare function validateConfig(): Promise<{
55
- qdrant: boolean;
56
- ollama: boolean;
57
- }>;
58
- /**
59
- * Print configuration (for debugging)
60
- */
61
- export declare function printConfig(): void;
62
- //# sourceMappingURL=config.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH;;;GAGG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8DxB,CAAC;AAEF;;;GAGG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAAC,CAyBpF;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAQlC"}