@mrc2204/agent-smart-memo 4.0.9 → 4.0.11
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/dist/config.js +2 -2
- package/dist/config.js.map +1 -1
- package/dist/hooks/auto-capture.d.ts.map +1 -1
- package/dist/hooks/auto-capture.js +19 -34
- package/dist/hooks/auto-capture.js.map +1 -1
- package/dist/hooks/auto-recall.d.ts.map +1 -1
- package/dist/hooks/auto-recall.js +16 -8
- package/dist/hooks/auto-recall.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +39 -4
- package/dist/index.js.map +1 -1
- package/dist/services/embedding-capability-registry.d.ts +23 -0
- package/dist/services/embedding-capability-registry.d.ts.map +1 -0
- package/dist/services/embedding-capability-registry.js +56 -0
- package/dist/services/embedding-capability-registry.js.map +1 -0
- package/dist/services/embedding.d.ts +30 -11
- package/dist/services/embedding.d.ts.map +1 -1
- package/dist/services/embedding.js +316 -87
- package/dist/services/embedding.js.map +1 -1
- package/dist/services/llm-extractor.d.ts.map +1 -1
- package/dist/services/llm-extractor.js +7 -3
- package/dist/services/llm-extractor.js.map +1 -1
- package/dist/services/qdrant.d.ts +6 -4
- package/dist/services/qdrant.d.ts.map +1 -1
- package/dist/services/qdrant.js +43 -8
- package/dist/services/qdrant.js.map +1 -1
- package/dist/shared/memory-config.d.ts +30 -74
- package/dist/shared/memory-config.d.ts.map +1 -1
- package/dist/shared/memory-config.js +129 -134
- package/dist/shared/memory-config.js.map +1 -1
- package/dist/tools/memory_search.d.ts.map +1 -1
- package/dist/tools/memory_search.js +16 -3
- package/dist/tools/memory_search.js.map +1 -1
- package/dist/tools/memory_store.d.ts.map +1 -1
- package/dist/tools/memory_store.js +26 -5
- package/dist/tools/memory_store.js.map +1 -1
- package/package.json +7 -4
|
@@ -1,176 +1,171 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Shared Memory Configuration
|
|
3
|
-
*
|
|
3
|
+
* Source of truth for namespace routing, noise policy v2, and recall weighting
|
|
4
4
|
*/
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
creator: ["agent_decisions", "project_context", "agent_learnings"],
|
|
15
|
-
trader: ["trading_signals", "agent_decisions", "agent_learnings"],
|
|
5
|
+
export const CORE_AGENTS = ["assistant", "scrum", "fullstack", "trader", "creator"];
|
|
6
|
+
const LEGACY_TO_NEW_NAMESPACE = {
|
|
7
|
+
agent_decisions: "agent.assistant.decisions",
|
|
8
|
+
user_profile: "shared.project_context",
|
|
9
|
+
project_context: "shared.project_context",
|
|
10
|
+
trading_signals: "agent.trader.decisions",
|
|
11
|
+
agent_learnings: "agent.assistant.lessons",
|
|
12
|
+
system_rules: "shared.rules_slotdb",
|
|
13
|
+
default: "agent.assistant.working_memory",
|
|
16
14
|
};
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
/\b(candle|support|resistance|breakout|pullback|rsi|macd|ema|sma|bollinger)\b/i,
|
|
41
|
-
/\b(breakout|consolidation|accumulation|distribution)\b/i,
|
|
42
|
-
/\b(tp|sl)\s*\d+/i, // TP/SL with numbers
|
|
43
|
-
/\b@\s*\d+[\d,.]*/i, // @ price format
|
|
44
|
-
];
|
|
45
|
-
/** Learning content detection patterns */
|
|
46
|
-
export const LEARNING_PATTERNS = [
|
|
47
|
-
/\b(learned|lesson|takeaway|kinh nghiệm|bài học|rút ra)\b/i,
|
|
48
|
-
/\b(fixed|resolved|root cause|nguyên nhân gốc|đã sửa)\b/i,
|
|
49
|
-
/\b(best practice|pattern|anti-pattern|gotcha)\b/i,
|
|
50
|
-
/\b(never|always|remember to|lưu ý|nhớ rằng)\b/i,
|
|
51
|
-
];
|
|
15
|
+
export function normalizeNamespace(value, fallbackAgent = "assistant") {
|
|
16
|
+
const agent = toCoreAgent(fallbackAgent);
|
|
17
|
+
if (!value)
|
|
18
|
+
return `agent.${agent}.working_memory`;
|
|
19
|
+
if (value === "shared.project_context"
|
|
20
|
+
|| value === "shared.rules_slotdb"
|
|
21
|
+
|| value === "shared.runbooks"
|
|
22
|
+
|| value === "noise.filtered"
|
|
23
|
+
|| /^agent\.(assistant|scrum|fullstack|trader|creator)\.(working_memory|lessons|decisions)$/.test(value)) {
|
|
24
|
+
return value;
|
|
25
|
+
}
|
|
26
|
+
const mapped = LEGACY_TO_NEW_NAMESPACE[value];
|
|
27
|
+
if (mapped)
|
|
28
|
+
return mapped;
|
|
29
|
+
return `agent.${agent}.working_memory`;
|
|
30
|
+
}
|
|
31
|
+
export function toCoreAgent(agentId) {
|
|
32
|
+
const normalized = (agentId || "").toLowerCase();
|
|
33
|
+
if (CORE_AGENTS.includes(normalized)) {
|
|
34
|
+
return normalized;
|
|
35
|
+
}
|
|
36
|
+
return "assistant";
|
|
37
|
+
}
|
|
52
38
|
/**
|
|
53
|
-
*
|
|
54
|
-
*
|
|
39
|
+
* Revert coarse blocklist change:
|
|
40
|
+
* keep all 5 core agents eligible for capture by default.
|
|
55
41
|
*/
|
|
56
|
-
export
|
|
57
|
-
return LEARNING_PATTERNS.some(p => p.test(text));
|
|
58
|
-
}
|
|
42
|
+
export const DEFAULT_AGENT_BLOCKLIST = new Set([]);
|
|
59
43
|
/**
|
|
60
|
-
*
|
|
61
|
-
* Returns mapped namespaces or DEFAULT_NAMESPACES if agent not in map.
|
|
44
|
+
* Per-agent recall namespaces (noise.filtered is intentionally excluded)
|
|
62
45
|
*/
|
|
63
46
|
export function getAgentNamespaces(agentId) {
|
|
64
|
-
|
|
47
|
+
const agent = toCoreAgent(agentId);
|
|
48
|
+
return [
|
|
49
|
+
`agent.${agent}.working_memory`,
|
|
50
|
+
`agent.${agent}.lessons`,
|
|
51
|
+
`agent.${agent}.decisions`,
|
|
52
|
+
"shared.project_context",
|
|
53
|
+
"shared.rules_slotdb",
|
|
54
|
+
"shared.runbooks",
|
|
55
|
+
];
|
|
65
56
|
}
|
|
66
|
-
/**
|
|
67
|
-
* Get the default storage namespace for auto-capture.
|
|
68
|
-
* For trader: always "agent_decisions" (trading data goes through memory_store)
|
|
69
|
-
* For others: first namespace in their map
|
|
70
|
-
*
|
|
71
|
-
* V2 UPDATE: Now accepts text parameter to detect learning content
|
|
72
|
-
* Learning content is routed to "agent_learnings" namespace
|
|
73
|
-
*/
|
|
74
57
|
export function getAutoCaptureNamespace(agentId, text) {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
if (
|
|
80
|
-
return
|
|
58
|
+
const agent = toCoreAgent(agentId);
|
|
59
|
+
const content = String(text || "");
|
|
60
|
+
if (isLearningContent(content))
|
|
61
|
+
return `agent.${agent}.lessons`;
|
|
62
|
+
if (isDecisionContent(content))
|
|
63
|
+
return `agent.${agent}.decisions`;
|
|
64
|
+
if (isRunbookContent(content))
|
|
65
|
+
return "shared.runbooks";
|
|
66
|
+
if (isRuleContent(content))
|
|
67
|
+
return "shared.rules_slotdb";
|
|
68
|
+
if (isProjectContextContent(content))
|
|
69
|
+
return "shared.project_context";
|
|
70
|
+
return `agent.${agent}.working_memory`;
|
|
71
|
+
}
|
|
72
|
+
/** Recall priority weighting policy */
|
|
73
|
+
const SHARED_NAMESPACE_WEIGHT = {
|
|
74
|
+
"shared.project_context": 1.08,
|
|
75
|
+
"shared.rules_slotdb": 1.18,
|
|
76
|
+
"shared.runbooks": 1.12,
|
|
77
|
+
};
|
|
78
|
+
export function getNamespaceWeight(agentId, namespace) {
|
|
79
|
+
const agent = toCoreAgent(agentId);
|
|
80
|
+
if (namespace === `agent.${agent}.decisions`)
|
|
81
|
+
return 1.25;
|
|
82
|
+
if (namespace === `agent.${agent}.lessons`)
|
|
83
|
+
return 1.2;
|
|
84
|
+
if (namespace === `agent.${agent}.working_memory`)
|
|
85
|
+
return 1.1;
|
|
86
|
+
if (namespace in SHARED_NAMESPACE_WEIGHT) {
|
|
87
|
+
return SHARED_NAMESPACE_WEIGHT[namespace];
|
|
81
88
|
}
|
|
82
|
-
|
|
83
|
-
|
|
89
|
+
if (namespace === "noise.filtered")
|
|
90
|
+
return 0.01;
|
|
91
|
+
return 1.0;
|
|
84
92
|
}
|
|
85
|
-
/**
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
93
|
+
/** Noise policy v2 */
|
|
94
|
+
export const NOISE_PATTERNS_V2 = [
|
|
95
|
+
/^\s*(ok|k|kk|yes|no|thanks?|tks|thx)\s*$/i,
|
|
96
|
+
/^\s*(no_reply|heartbeat_ok)\s*$/i,
|
|
97
|
+
/^\s*[.?]+\s*$/,
|
|
98
|
+
/^\s*\/\w+/,
|
|
99
|
+
/^\s*\[tool[:\]]/i,
|
|
100
|
+
/^\s*\{\s*"type"\s*:\s*"toolCall"/i,
|
|
101
|
+
/^\s*(ping|pong)\s*$/i,
|
|
102
|
+
];
|
|
103
|
+
const SOURCE_TYPE_NOISE_WEIGHT = {
|
|
104
|
+
auto_capture: 0.15,
|
|
105
|
+
tool_call: 0.2,
|
|
106
|
+
manual: 0.02,
|
|
107
|
+
};
|
|
108
|
+
export function evaluateNoiseV2(text, sourceType = "auto_capture") {
|
|
109
|
+
const content = String(text || "").trim();
|
|
110
|
+
const matchedPatterns = NOISE_PATTERNS_V2.filter((p) => p.test(content)).map((p) => p.toString());
|
|
111
|
+
const lengthPenalty = content.length < 8 ? 0.45 : content.length < 24 ? 0.15 : 0;
|
|
112
|
+
const patternScore = matchedPatterns.length > 0 ? Math.min(0.8, matchedPatterns.length * 0.4) : 0;
|
|
113
|
+
const sourceScore = SOURCE_TYPE_NOISE_WEIGHT[sourceType] ?? 0.1;
|
|
114
|
+
const score = Math.min(1, Number((patternScore + sourceScore + lengthPenalty).toFixed(3)));
|
|
115
|
+
return {
|
|
116
|
+
score,
|
|
117
|
+
isNoise: score >= 0.62,
|
|
118
|
+
matchedPatterns,
|
|
119
|
+
};
|
|
91
120
|
}
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
*/
|
|
95
|
-
export function isTradingContent(text) {
|
|
96
|
-
return TRADING_NOISE_PATTERNS.some((pattern) => pattern.test(text));
|
|
121
|
+
export function isLearningContent(text) {
|
|
122
|
+
return /\b(learned|lesson|takeaway|kinh nghiệm|bài học|rút ra|postmortem|root cause)\b/i.test(text);
|
|
97
123
|
}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
export function
|
|
102
|
-
return
|
|
124
|
+
export function isDecisionContent(text) {
|
|
125
|
+
return /\b(decision|approved|chốt|quyết định|ship|go with|reject|accept)\b/i.test(text);
|
|
126
|
+
}
|
|
127
|
+
export function isProjectContextContent(text) {
|
|
128
|
+
return /\b(deploy|release|migration|rollback|staging|production|port|endpoint|schema|db|api key|config)\b/i.test(text);
|
|
129
|
+
}
|
|
130
|
+
export function isRuleContent(text) {
|
|
131
|
+
return /\b(rule|policy|guardrail|must|never|always|slotdb|quy tắc|bắt buộc|không được)\b/i.test(text);
|
|
132
|
+
}
|
|
133
|
+
export function isRunbookContent(text) {
|
|
134
|
+
return /\b(runbook|sop|playbook|incident response|checklist|triage|khắc phục|vận hành)\b/i.test(text);
|
|
103
135
|
}
|
|
104
|
-
/**
|
|
105
|
-
* Check if agent is in the blocklist
|
|
106
|
-
*/
|
|
107
136
|
export function isBlockedAgent(agentId) {
|
|
108
137
|
return DEFAULT_AGENT_BLOCKLIST.has(agentId);
|
|
109
138
|
}
|
|
110
|
-
/**
|
|
111
|
-
* Normalize scope_user_id to prevent fragmentation.
|
|
112
|
-
* Maps all session-based IDs (hook:*, cron:*, subagent:*) to 'default'.
|
|
113
|
-
* Preserves __team__ and __public__ scopes.
|
|
114
|
-
*
|
|
115
|
-
* ROOT CAUSE FIX: Each session generates a unique scope_user_id like
|
|
116
|
-
* "hook:e0758a07-..." or "cron:5668fdad-...", causing massive duplication.
|
|
117
|
-
* Since this is a single-user system, we normalize everything to 'default'.
|
|
118
|
-
*/
|
|
119
139
|
export function normalizeUserId(rawUserId) {
|
|
120
|
-
// Preserve special scopes
|
|
121
140
|
if (rawUserId === '__team__' || rawUserId === '__public__') {
|
|
122
141
|
return rawUserId;
|
|
123
142
|
}
|
|
124
|
-
// Always normalize to 'default' for single-user system
|
|
125
143
|
return 'default';
|
|
126
144
|
}
|
|
127
|
-
/** Slot TTL configuration by category (in days) */
|
|
128
145
|
export const SLOT_TTL_DAYS = {
|
|
129
|
-
project: 7,
|
|
130
|
-
environment: 3,
|
|
131
|
-
custom: 14,
|
|
132
|
-
profile: 90,
|
|
133
|
-
preferences: 90,
|
|
146
|
+
project: 7,
|
|
147
|
+
environment: 3,
|
|
148
|
+
custom: 14,
|
|
149
|
+
profile: 90,
|
|
150
|
+
preferences: 90,
|
|
134
151
|
};
|
|
135
|
-
/** Get TTL in days for a slot category */
|
|
136
152
|
export function getSlotTTL(category) {
|
|
137
|
-
return SLOT_TTL_DAYS[category] ?? 30;
|
|
153
|
+
return SLOT_TTL_DAYS[category] ?? 30;
|
|
138
154
|
}
|
|
139
|
-
/**
|
|
140
|
-
* NoiseFilter class for auto-capture
|
|
141
|
-
* Determines whether content should be captured or skipped
|
|
142
|
-
*/
|
|
143
155
|
export class NoiseFilter {
|
|
144
156
|
agentId;
|
|
145
157
|
constructor(agentId) {
|
|
146
158
|
this.agentId = agentId;
|
|
147
159
|
}
|
|
148
|
-
/**
|
|
149
|
-
* Check if this agent should be completely blocked from auto-capture
|
|
150
|
-
*/
|
|
151
160
|
isBlocked() {
|
|
152
161
|
return isBlockedAgent(this.agentId);
|
|
153
162
|
}
|
|
154
|
-
/**
|
|
155
|
-
* Check if content should be skipped for this agent
|
|
156
|
-
* - General noise patterns apply to all agents
|
|
157
|
-
* - Trading noise patterns only apply to trader agent (to skip auto-capture of trading data)
|
|
158
|
-
*/
|
|
159
163
|
shouldSkip(text) {
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
// For trader agent, skip trading content (trader should use memory_store manually)
|
|
165
|
-
if (isTraderAgent(this.agentId) && isTradingContent(text)) {
|
|
166
|
-
return true;
|
|
167
|
-
}
|
|
168
|
-
return false;
|
|
164
|
+
return evaluateNoiseV2(text, "auto_capture").isNoise;
|
|
165
|
+
}
|
|
166
|
+
classify(text, sourceType = "auto_capture") {
|
|
167
|
+
return evaluateNoiseV2(text, sourceType);
|
|
169
168
|
}
|
|
170
|
-
/**
|
|
171
|
-
* Get the target namespace for auto-capture for this agent
|
|
172
|
-
* V2 UPDATE: Now accepts optional text parameter for learning detection
|
|
173
|
-
*/
|
|
174
169
|
getTargetNamespace(text) {
|
|
175
170
|
return getAutoCaptureNamespace(this.agentId, text);
|
|
176
171
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-config.js","sourceRoot":"","sources":["../../src/shared/memory-config.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"memory-config.js","sourceRoot":"","sources":["../../src/shared/memory-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
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;AAGrF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqC9B,CAAC;AAEF,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,eAAe,EAC1B,gBAAgB,EAAE,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBASxB,MAAM,UACH,YAAY,GAAG;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,YACvD,WAAW,GACpB,OAAO,CAAC,UAAU,CAAC;
|
|
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;AAGrF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqC9B,CAAC;AAEF,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,eAAe,EAC1B,gBAAgB,EAAE,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBASxB,MAAM,UACH,YAAY,GAAG;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,YACvD,WAAW,GACpB,OAAO,CAAC,UAAU,CAAC;EAoIzB"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getAgentNamespaces } from "../shared/memory-config.js";
|
|
1
|
+
import { getAgentNamespaces, getNamespaceWeight } from "../shared/memory-config.js";
|
|
2
2
|
export const memorySearchSchema = {
|
|
3
3
|
type: "object",
|
|
4
4
|
properties: {
|
|
@@ -102,8 +102,21 @@ export function createMemorySearchTool(qdrant, embedding, defaultNamespace) {
|
|
|
102
102
|
// Generate embedding and search
|
|
103
103
|
const vector = await embedding.embed(query);
|
|
104
104
|
const results = await qdrant.search(vector, limit, filter);
|
|
105
|
-
//
|
|
106
|
-
const
|
|
105
|
+
// Exclude quarantined noise and apply namespace-priority weighting
|
|
106
|
+
const weighted = results
|
|
107
|
+
.filter((r) => (r.payload?.namespace || "") !== "noise.filtered")
|
|
108
|
+
.map((r) => {
|
|
109
|
+
const ns = String(r.payload?.namespace || "");
|
|
110
|
+
const weight = getNamespaceWeight(agentId, ns);
|
|
111
|
+
return {
|
|
112
|
+
...r,
|
|
113
|
+
_rawScore: r.score,
|
|
114
|
+
score: Math.min(1, r.score * weight),
|
|
115
|
+
};
|
|
116
|
+
})
|
|
117
|
+
.sort((a, b) => b.score - a.score);
|
|
118
|
+
// Filter by minScore on weighted score
|
|
119
|
+
const filtered = weighted.filter((r) => r.score >= minScore);
|
|
107
120
|
if (filtered.length === 0) {
|
|
108
121
|
return {
|
|
109
122
|
content: [{ type: "text", text: "No relevant memories found." }],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory_search.js","sourceRoot":"","sources":["../../src/tools/memory_search.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"memory_search.js","sourceRoot":"","sources":["../../src/tools/memory_search.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
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;
|
|
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;AAG9E,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;CAyB7B,CAAC;AAEF,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,eAAe,EAC1B,MAAM,EAAE,oBAAoB,EAC5B,gBAAgB,EAAE,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBASxB,MAAM,UACH,WAAW,GAAG;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,YAChC,WAAW,GACpB,OAAO,CAAC,UAAU,CAAC;EAiJzB"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { normalizeNamespace, toCoreAgent, evaluateNoiseV2 } from "../shared/memory-config.js";
|
|
1
2
|
export const memoryStoreSchema = {
|
|
2
3
|
type: "object",
|
|
3
4
|
properties: {
|
|
@@ -7,7 +8,7 @@ export const memoryStoreSchema = {
|
|
|
7
8
|
},
|
|
8
9
|
namespace: {
|
|
9
10
|
type: "string",
|
|
10
|
-
description: "Namespace for organization (default: '
|
|
11
|
+
description: "Namespace for organization (default: 'shared.project_context')",
|
|
11
12
|
},
|
|
12
13
|
sessionId: {
|
|
13
14
|
type: "string",
|
|
@@ -55,8 +56,16 @@ export function createMemoryStoreTool(qdrant, embedding, dedupe, defaultNamespac
|
|
|
55
56
|
details: { error: "Text too long", length: text.length },
|
|
56
57
|
};
|
|
57
58
|
}
|
|
58
|
-
//
|
|
59
|
-
const
|
|
59
|
+
// Namespace router + normalization policy (ASM-5)
|
|
60
|
+
const agentId = params.agentId || "assistant";
|
|
61
|
+
const sourceAgent = toCoreAgent(agentId);
|
|
62
|
+
const requestedNamespace = params.namespace || defaultNamespace;
|
|
63
|
+
let namespace = normalizeNamespace(requestedNamespace, sourceAgent);
|
|
64
|
+
// Noise policy v2: quarantine noisy content into noise.filtered
|
|
65
|
+
const noise = evaluateNoiseV2(text, "tool_call");
|
|
66
|
+
if (noise.isNoise) {
|
|
67
|
+
namespace = "noise.filtered";
|
|
68
|
+
}
|
|
60
69
|
// Generate embedding (chunking + weighted average)
|
|
61
70
|
const embeddingResult = typeof embedding.embedDetailed === "function"
|
|
62
71
|
? await embedding.embedDetailed(text)
|
|
@@ -67,8 +76,12 @@ export function createMemoryStoreTool(qdrant, embedding, dedupe, defaultNamespac
|
|
|
67
76
|
embedding_chunks_count: 1,
|
|
68
77
|
embedding_chunking_strategy: "array_batch_weighted_avg",
|
|
69
78
|
embedding_model: "unknown",
|
|
79
|
+
embedding_model_key: "unknown",
|
|
80
|
+
embedding_provider: "auto",
|
|
70
81
|
embedding_max_tokens: 0,
|
|
71
82
|
embedding_safe_chunk_tokens: 0,
|
|
83
|
+
embedding_source: "docs",
|
|
84
|
+
embedding_fallback_hash: false,
|
|
72
85
|
},
|
|
73
86
|
};
|
|
74
87
|
const vector = embeddingResult.vector;
|
|
@@ -87,16 +100,20 @@ export function createMemoryStoreTool(qdrant, embedding, dedupe, defaultNamespac
|
|
|
87
100
|
payload: {
|
|
88
101
|
text,
|
|
89
102
|
namespace,
|
|
90
|
-
|
|
103
|
+
agent: sourceAgent,
|
|
104
|
+
source_agent: sourceAgent,
|
|
91
105
|
source_type: "tool_call",
|
|
92
106
|
sessionId: params.sessionId || null,
|
|
93
107
|
userId: params.userId || null,
|
|
94
108
|
metadata: {
|
|
95
109
|
...(params.metadata || {}),
|
|
96
110
|
...embeddingResult.metadata,
|
|
111
|
+
noise_score: noise.score,
|
|
112
|
+
noise_matched_patterns: noise.matchedPatterns,
|
|
97
113
|
},
|
|
98
114
|
...embeddingResult.metadata,
|
|
99
115
|
timestamp: Date.now(),
|
|
116
|
+
noise_score: noise.score,
|
|
100
117
|
updatedAt: Date.now(),
|
|
101
118
|
},
|
|
102
119
|
};
|
|
@@ -114,16 +131,20 @@ export function createMemoryStoreTool(qdrant, embedding, dedupe, defaultNamespac
|
|
|
114
131
|
payload: {
|
|
115
132
|
text,
|
|
116
133
|
namespace,
|
|
117
|
-
|
|
134
|
+
agent: sourceAgent,
|
|
135
|
+
source_agent: sourceAgent,
|
|
118
136
|
source_type: "tool_call",
|
|
119
137
|
sessionId: params.sessionId || null,
|
|
120
138
|
userId: params.userId || null,
|
|
121
139
|
metadata: {
|
|
122
140
|
...(params.metadata || {}),
|
|
123
141
|
...embeddingResult.metadata,
|
|
142
|
+
noise_score: noise.score,
|
|
143
|
+
noise_matched_patterns: noise.matchedPatterns,
|
|
124
144
|
},
|
|
125
145
|
...embeddingResult.metadata,
|
|
126
146
|
timestamp: Date.now(),
|
|
147
|
+
noise_score: noise.score,
|
|
127
148
|
},
|
|
128
149
|
};
|
|
129
150
|
await qdrant.upsert([point]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory_store.js","sourceRoot":"","sources":["../../src/tools/memory_store.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"memory_store.js","sourceRoot":"","sources":["../../src/tools/memory_store.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mrc2204/agent-smart-memo",
|
|
3
|
-
"version": "4.0.
|
|
4
|
-
"description": "Smart Memory Plugin for OpenClaw
|
|
3
|
+
"version": "4.0.11",
|
|
4
|
+
"description": "Smart Memory Plugin for OpenClaw \u2014 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
7
|
"openclaw": {
|
|
@@ -11,8 +11,11 @@
|
|
|
11
11
|
},
|
|
12
12
|
"scripts": {
|
|
13
13
|
"build": "tsc",
|
|
14
|
-
"test": "
|
|
15
|
-
"clean": "rm -rf dist"
|
|
14
|
+
"test": "npx tsx tests/test.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"
|
|
16
19
|
},
|
|
17
20
|
"dependencies": {
|
|
18
21
|
"dotenv": "^17.3.1"
|