@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
|
@@ -64,7 +64,11 @@ export async function extractWithLLM(conversation, currentSlots, config, distill
|
|
|
64
64
|
function buildSystemInstruction(distillMode = "general") {
|
|
65
65
|
return `You are a memory extraction assistant. Analyze conversations and extract/update/invalidate facts.
|
|
66
66
|
|
|
67
|
-
LANGUAGE RULE:
|
|
67
|
+
LANGUAGE RULE (PRIORITY):
|
|
68
|
+
- Prefer Vietnamese output when conversation contains Vietnamese or Vietnam-context operational commands.
|
|
69
|
+
- For mixed-language conversations, output memories/slot values in the dominant operational language; prioritize Vietnamese if ambiguous.
|
|
70
|
+
- Keep original technical tokens (endpoints, code symbols, config keys) unchanged.
|
|
71
|
+
- Do NOT normalize Vietnamese content into English.
|
|
68
72
|
|
|
69
73
|
YOUR 3 JOBS:
|
|
70
74
|
1. EXTRACT new facts → slot_updates
|
|
@@ -86,7 +90,7 @@ SLOT INVALIDATION (NEW - MOST IMPORTANT):
|
|
|
86
90
|
- Be aggressive about removing outdated project/task status slots
|
|
87
91
|
|
|
88
92
|
CATEGORIES: profile, preferences, project, environment, custom
|
|
89
|
-
NAMESPACES:
|
|
93
|
+
NAMESPACES: agent.<agent>.working_memory | agent.<agent>.lessons | agent.<agent>.decisions | shared.project_context | shared.rules_slotdb | shared.runbooks | noise.filtered
|
|
90
94
|
|
|
91
95
|
CONFIDENCE: 0.9-1.0 explicit, 0.8-0.9 strongly implied, 0.7-0.8 inferred. Below 0.7: skip.
|
|
92
96
|
|
|
@@ -96,7 +100,7 @@ RESPONSE FORMAT (JSON only):
|
|
|
96
100
|
{
|
|
97
101
|
"slot_updates": [{"key": "project.current_task", "value": "new task", "confidence": 0.9, "category": "project"}],
|
|
98
102
|
"slot_removals": [{"key": "project.current_task", "reason": "Task completed per conversation"}],
|
|
99
|
-
"memories": [{"text": "fact description", "namespace": "project_context", "confidence": 0.85}]
|
|
103
|
+
"memories": [{"text": "fact description", "namespace": "shared.project_context", "confidence": 0.85}]
|
|
100
104
|
}
|
|
101
105
|
|
|
102
106
|
DISTILL RULES (CRITICAL - apply to ALL outputs):
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llm-extractor.js","sourceRoot":"","sources":["../../src/services/llm-extractor.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"llm-extractor.js","sourceRoot":"","sources":["../../src/services/llm-extractor.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,23 +7,25 @@ interface QdrantConfig {
|
|
|
7
7
|
timeout?: number;
|
|
8
8
|
maxRetries?: number;
|
|
9
9
|
retryDelay?: number;
|
|
10
|
+
dimensionRouteMap?: Record<number, string>;
|
|
10
11
|
}
|
|
11
12
|
/**
|
|
12
|
-
* Qdrant client with retry
|
|
13
|
+
* Qdrant client with retry + dimension fail-fast
|
|
13
14
|
*/
|
|
14
15
|
export declare class QdrantClient {
|
|
15
16
|
private config;
|
|
16
17
|
private logger;
|
|
18
|
+
private cachedCollectionVectorSize;
|
|
17
19
|
constructor(config: QdrantConfig, logger?: any);
|
|
18
20
|
getCollectionName(): string;
|
|
19
21
|
private sleep;
|
|
20
|
-
/**
|
|
21
|
-
* Make request with retry
|
|
22
|
-
*/
|
|
23
22
|
private request;
|
|
24
23
|
private isRetryableError;
|
|
25
24
|
collectionExists(): Promise<boolean>;
|
|
26
25
|
getCollectionInfo(): Promise<any>;
|
|
26
|
+
private extractCollectionVectorSize;
|
|
27
|
+
getCollectionVectorSize(forceRefresh?: boolean): Promise<number>;
|
|
28
|
+
private failFastOnDimensionMismatch;
|
|
27
29
|
countPoints(exact?: boolean): Promise<number>;
|
|
28
30
|
createCollection(): Promise<void>;
|
|
29
31
|
createPayloadIndex(fieldName: string, fieldType: "keyword" | "integer" | "float" | "bool"): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qdrant.d.ts","sourceRoot":"","sources":["../../src/services/qdrant.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAkB,WAAW,EAAE,MAAM,aAAa,CAAC;AAEjE,UAAU,YAAY;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"qdrant.d.ts","sourceRoot":"","sources":["../../src/services/qdrant.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAkB,WAAW,EAAE,MAAM,aAAa,CAAC;AAEjE,UAAU,YAAY;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5C;AAWD;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAoG;IAClH,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,0BAA0B,CAAuB;gBAE7C,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,GAAG;IAc9C,iBAAiB,IAAI,MAAM;IAI3B,OAAO,CAAC,KAAK;YAIC,OAAO;IAoCrB,OAAO,CAAC,gBAAgB;IAOlB,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC;IAYpC,iBAAiB,IAAI,OAAO,CAAC,GAAG,CAAC;IAIvC,OAAO,CAAC,2BAA2B;IAY7B,uBAAuB,CAAC,YAAY,UAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;YAStD,2BAA2B;IAcnC,WAAW,CAAC,KAAK,UAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAS1C,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAmCjC,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBzG,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAYtC,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,GAAG,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAqB1E,UAAU,CAAC,WAAW,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAe3F,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,UAAU,UAAQ,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,KAAK,CAAC;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC,CAAC;QAAC,UAAU,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IAwCtK,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,KAAK,GAAE,MAAU,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IA0BjG,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CAOjE"}
|
package/dist/services/qdrant.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Qdrant client with retry
|
|
2
|
+
* Qdrant client with retry + dimension fail-fast
|
|
3
3
|
*/
|
|
4
4
|
export class QdrantClient {
|
|
5
5
|
config;
|
|
6
6
|
logger;
|
|
7
|
+
cachedCollectionVectorSize = null;
|
|
7
8
|
constructor(config, logger) {
|
|
8
9
|
this.config = {
|
|
9
10
|
host: config.host,
|
|
@@ -13,6 +14,7 @@ export class QdrantClient {
|
|
|
13
14
|
timeout: config.timeout || 30000,
|
|
14
15
|
maxRetries: config.maxRetries || 3,
|
|
15
16
|
retryDelay: config.retryDelay || 1000,
|
|
17
|
+
dimensionRouteMap: config.dimensionRouteMap || {},
|
|
16
18
|
};
|
|
17
19
|
this.logger = logger || console;
|
|
18
20
|
}
|
|
@@ -22,9 +24,6 @@ export class QdrantClient {
|
|
|
22
24
|
sleep(ms) {
|
|
23
25
|
return new Promise(resolve => setTimeout(resolve, ms));
|
|
24
26
|
}
|
|
25
|
-
/**
|
|
26
|
-
* Make request with retry
|
|
27
|
-
*/
|
|
28
27
|
async request(path, options, attempt = 1) {
|
|
29
28
|
const url = `http://${this.config.host}:${this.config.port}${path}`;
|
|
30
29
|
try {
|
|
@@ -76,6 +75,35 @@ export class QdrantClient {
|
|
|
76
75
|
async getCollectionInfo() {
|
|
77
76
|
return this.request(`/collections/${this.config.collection}`, { method: "GET" });
|
|
78
77
|
}
|
|
78
|
+
extractCollectionVectorSize(info) {
|
|
79
|
+
const vectors = info?.result?.config?.params?.vectors;
|
|
80
|
+
if (typeof vectors?.size === "number")
|
|
81
|
+
return vectors.size;
|
|
82
|
+
if (vectors && typeof vectors === "object") {
|
|
83
|
+
const first = Object.values(vectors)[0];
|
|
84
|
+
if (typeof first?.size === "number")
|
|
85
|
+
return first.size;
|
|
86
|
+
}
|
|
87
|
+
return this.config.vectorSize;
|
|
88
|
+
}
|
|
89
|
+
async getCollectionVectorSize(forceRefresh = false) {
|
|
90
|
+
if (!forceRefresh && this.cachedCollectionVectorSize)
|
|
91
|
+
return this.cachedCollectionVectorSize;
|
|
92
|
+
const info = await this.getCollectionInfo();
|
|
93
|
+
const size = this.extractCollectionVectorSize(info);
|
|
94
|
+
this.cachedCollectionVectorSize = size;
|
|
95
|
+
return size;
|
|
96
|
+
}
|
|
97
|
+
async failFastOnDimensionMismatch(actualDim, operation) {
|
|
98
|
+
const expected = await this.getCollectionVectorSize();
|
|
99
|
+
if (actualDim === expected)
|
|
100
|
+
return;
|
|
101
|
+
const routeCollection = this.config.dimensionRouteMap[actualDim];
|
|
102
|
+
const routeHint = routeCollection
|
|
103
|
+
? `Route hint: use collection '${routeCollection}' for dim=${actualDim}.`
|
|
104
|
+
: "No safe route configured. Update collection/vector size or embedding model.";
|
|
105
|
+
throw new Error(`[Qdrant][DIMENSION_MISMATCH] op=${operation} collection=${this.config.collection} expected=${expected} got=${actualDim}. ${routeHint}`);
|
|
106
|
+
}
|
|
79
107
|
async countPoints(exact = true) {
|
|
80
108
|
const res = await this.request(`/collections/${this.config.collection}/points/count`, {
|
|
81
109
|
method: "POST",
|
|
@@ -88,6 +116,7 @@ export class QdrantClient {
|
|
|
88
116
|
const exists = await this.collectionExists();
|
|
89
117
|
if (exists) {
|
|
90
118
|
this.logger.info(`[Qdrant] Collection ${this.config.collection} already exists`);
|
|
119
|
+
this.cachedCollectionVectorSize = await this.getCollectionVectorSize(true);
|
|
91
120
|
return;
|
|
92
121
|
}
|
|
93
122
|
this.logger.info(`[Qdrant] Creating collection ${this.config.collection}`);
|
|
@@ -104,10 +133,13 @@ export class QdrantClient {
|
|
|
104
133
|
},
|
|
105
134
|
}),
|
|
106
135
|
});
|
|
136
|
+
this.cachedCollectionVectorSize = this.config.vectorSize;
|
|
107
137
|
this.logger.info(`[Qdrant] Collection created successfully`);
|
|
108
138
|
await this.createPayloadIndex("namespace", "keyword");
|
|
139
|
+
await this.createPayloadIndex("agent", "keyword");
|
|
109
140
|
await this.createPayloadIndex("source_agent", "keyword");
|
|
110
141
|
await this.createPayloadIndex("source_type", "keyword");
|
|
142
|
+
await this.createPayloadIndex("timestamp", "integer");
|
|
111
143
|
await this.createPayloadIndex("userId", "keyword");
|
|
112
144
|
}
|
|
113
145
|
async createPayloadIndex(fieldName, fieldType) {
|
|
@@ -127,6 +159,9 @@ export class QdrantClient {
|
|
|
127
159
|
}
|
|
128
160
|
}
|
|
129
161
|
async upsert(points) {
|
|
162
|
+
for (const point of points) {
|
|
163
|
+
await this.failFastOnDimensionMismatch(point.vector.length, "upsert");
|
|
164
|
+
}
|
|
130
165
|
await this.request(`/collections/${this.config.collection}/points`, {
|
|
131
166
|
method: "PUT",
|
|
132
167
|
headers: { "Content-Type": "application/json" },
|
|
@@ -136,8 +171,10 @@ export class QdrantClient {
|
|
|
136
171
|
async updateVectors(points) {
|
|
137
172
|
if (points.length === 0)
|
|
138
173
|
return;
|
|
174
|
+
for (const point of points) {
|
|
175
|
+
await this.failFastOnDimensionMismatch(point.vector.length, "updateVectors");
|
|
176
|
+
}
|
|
139
177
|
try {
|
|
140
|
-
// Preferred endpoint
|
|
141
178
|
await this.request(`/collections/${this.config.collection}/points/vectors`, {
|
|
142
179
|
method: "PUT",
|
|
143
180
|
headers: { "Content-Type": "application/json" },
|
|
@@ -148,14 +185,11 @@ export class QdrantClient {
|
|
|
148
185
|
catch (error) {
|
|
149
186
|
this.logger.warn(`[Qdrant] updateVectors endpoint failed, fallback to upsert /points: ${error.message}`);
|
|
150
187
|
}
|
|
151
|
-
// Fallback (payload must be preserved by caller using upsert payload)
|
|
152
188
|
throw new Error("updateVectors endpoint unsupported");
|
|
153
189
|
}
|
|
154
190
|
async setPayload(payloadById) {
|
|
155
191
|
if (payloadById.length === 0)
|
|
156
192
|
return;
|
|
157
|
-
// set_payload can set same payload for selected points; here we do per-point via upsert fallback pattern in caller.
|
|
158
|
-
// Keep method for future expansion.
|
|
159
193
|
for (const row of payloadById) {
|
|
160
194
|
await this.request(`/collections/${this.config.collection}/points/payload`, {
|
|
161
195
|
method: "POST",
|
|
@@ -202,6 +236,7 @@ export class QdrantClient {
|
|
|
202
236
|
};
|
|
203
237
|
}
|
|
204
238
|
async search(vector, limit = 5, filter) {
|
|
239
|
+
await this.failFastOnDimensionMismatch(vector.length, "search");
|
|
205
240
|
const body = {
|
|
206
241
|
vector,
|
|
207
242
|
limit,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qdrant.js","sourceRoot":"","sources":["../../src/services/qdrant.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"qdrant.js","sourceRoot":"","sources":["../../src/services/qdrant.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,96 +1,52 @@
|
|
|
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
|
-
export type
|
|
5
|
+
export declare const CORE_AGENTS: readonly ["assistant", "scrum", "fullstack", "trader", "creator"];
|
|
6
|
+
export type CoreAgent = (typeof CORE_AGENTS)[number];
|
|
7
|
+
/** New normalized namespace model (ASM-5) */
|
|
8
|
+
export type MemoryNamespace = `agent.${CoreAgent}.working_memory` | `agent.${CoreAgent}.lessons` | `agent.${CoreAgent}.decisions` | "shared.project_context" | "shared.rules_slotdb" | "shared.runbooks" | "noise.filtered";
|
|
9
|
+
/** Legacy namespaces kept for migration compatibility */
|
|
10
|
+
export type LegacyNamespace = "agent_decisions" | "user_profile" | "project_context" | "trading_signals" | "agent_learnings" | "system_rules" | "session_summaries" | "market_patterns" | "default";
|
|
11
|
+
export declare function normalizeNamespace(value: string | null | undefined, fallbackAgent?: string): MemoryNamespace;
|
|
12
|
+
export declare function toCoreAgent(agentId: string): CoreAgent;
|
|
7
13
|
/**
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* All listed namespaces are searchable by auto-recall.
|
|
14
|
+
* Revert coarse blocklist change:
|
|
15
|
+
* keep all 5 core agents eligible for capture by default.
|
|
11
16
|
*/
|
|
12
|
-
export declare const AGENT_NAMESPACE_MAP: Record<string, MemoryNamespace[]>;
|
|
13
|
-
/** Default namespaces for agents not in the map */
|
|
14
|
-
export declare const DEFAULT_NAMESPACES: MemoryNamespace[];
|
|
15
|
-
/** Agents that should be completely blocked from auto-capture (empty - no agents blocked by default) */
|
|
16
17
|
export declare const DEFAULT_AGENT_BLOCKLIST: Set<string>;
|
|
17
|
-
/** General noise patterns - applied to all agents */
|
|
18
|
-
export declare const NOISE_PATTERNS: RegExp[];
|
|
19
|
-
/** Trading-specific noise patterns - used to skip auto-capture for trading content */
|
|
20
|
-
export declare const TRADING_NOISE_PATTERNS: RegExp[];
|
|
21
|
-
/** Learning content detection patterns */
|
|
22
|
-
export declare const LEARNING_PATTERNS: RegExp[];
|
|
23
18
|
/**
|
|
24
|
-
*
|
|
25
|
-
* Used to route valuable lessons to agent_learnings namespace
|
|
26
|
-
*/
|
|
27
|
-
export declare function isLearningContent(text: string): boolean;
|
|
28
|
-
/**
|
|
29
|
-
* Get namespaces for an agent.
|
|
30
|
-
* Returns mapped namespaces or DEFAULT_NAMESPACES if agent not in map.
|
|
19
|
+
* Per-agent recall namespaces (noise.filtered is intentionally excluded)
|
|
31
20
|
*/
|
|
32
21
|
export declare function getAgentNamespaces(agentId: string): MemoryNamespace[];
|
|
33
|
-
/**
|
|
34
|
-
* Get the default storage namespace for auto-capture.
|
|
35
|
-
* For trader: always "agent_decisions" (trading data goes through memory_store)
|
|
36
|
-
* For others: first namespace in their map
|
|
37
|
-
*
|
|
38
|
-
* V2 UPDATE: Now accepts text parameter to detect learning content
|
|
39
|
-
* Learning content is routed to "agent_learnings" namespace
|
|
40
|
-
*/
|
|
41
22
|
export declare function getAutoCaptureNamespace(agentId: string, text?: string): MemoryNamespace;
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
export declare function
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
export declare function
|
|
55
|
-
/**
|
|
56
|
-
* Check if agent is in the blocklist
|
|
57
|
-
*/
|
|
23
|
+
export declare function getNamespaceWeight(agentId: string, namespace: string): number;
|
|
24
|
+
/** Noise policy v2 */
|
|
25
|
+
export declare const NOISE_PATTERNS_V2: RegExp[];
|
|
26
|
+
export declare function evaluateNoiseV2(text: string, sourceType?: "auto_capture" | "manual" | "tool_call"): {
|
|
27
|
+
score: number;
|
|
28
|
+
isNoise: boolean;
|
|
29
|
+
matchedPatterns: string[];
|
|
30
|
+
};
|
|
31
|
+
export declare function isLearningContent(text: string): boolean;
|
|
32
|
+
export declare function isDecisionContent(text: string): boolean;
|
|
33
|
+
export declare function isProjectContextContent(text: string): boolean;
|
|
34
|
+
export declare function isRuleContent(text: string): boolean;
|
|
35
|
+
export declare function isRunbookContent(text: string): boolean;
|
|
58
36
|
export declare function isBlockedAgent(agentId: string): boolean;
|
|
59
|
-
/**
|
|
60
|
-
* Normalize scope_user_id to prevent fragmentation.
|
|
61
|
-
* Maps all session-based IDs (hook:*, cron:*, subagent:*) to 'default'.
|
|
62
|
-
* Preserves __team__ and __public__ scopes.
|
|
63
|
-
*
|
|
64
|
-
* ROOT CAUSE FIX: Each session generates a unique scope_user_id like
|
|
65
|
-
* "hook:e0758a07-..." or "cron:5668fdad-...", causing massive duplication.
|
|
66
|
-
* Since this is a single-user system, we normalize everything to 'default'.
|
|
67
|
-
*/
|
|
68
37
|
export declare function normalizeUserId(rawUserId: string): string;
|
|
69
|
-
/** Slot TTL configuration by category (in days) */
|
|
70
38
|
export declare const SLOT_TTL_DAYS: Record<string, number>;
|
|
71
|
-
/** Get TTL in days for a slot category */
|
|
72
39
|
export declare function getSlotTTL(category: string): number;
|
|
73
|
-
/**
|
|
74
|
-
* NoiseFilter class for auto-capture
|
|
75
|
-
* Determines whether content should be captured or skipped
|
|
76
|
-
*/
|
|
77
40
|
export declare class NoiseFilter {
|
|
78
41
|
private agentId;
|
|
79
42
|
constructor(agentId: string);
|
|
80
|
-
/**
|
|
81
|
-
* Check if this agent should be completely blocked from auto-capture
|
|
82
|
-
*/
|
|
83
43
|
isBlocked(): boolean;
|
|
84
|
-
/**
|
|
85
|
-
* Check if content should be skipped for this agent
|
|
86
|
-
* - General noise patterns apply to all agents
|
|
87
|
-
* - Trading noise patterns only apply to trader agent (to skip auto-capture of trading data)
|
|
88
|
-
*/
|
|
89
44
|
shouldSkip(text: string): boolean;
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
45
|
+
classify(text: string, sourceType?: "auto_capture" | "manual" | "tool_call"): {
|
|
46
|
+
score: number;
|
|
47
|
+
isNoise: boolean;
|
|
48
|
+
matchedPatterns: string[];
|
|
49
|
+
};
|
|
94
50
|
getTargetNamespace(text?: string): MemoryNamespace;
|
|
95
51
|
}
|
|
96
52
|
//# sourceMappingURL=memory-config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-config.d.ts","sourceRoot":"","sources":["../../src/shared/memory-config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,
|
|
1
|
+
{"version":3,"file":"memory-config.d.ts","sourceRoot":"","sources":["../../src/shared/memory-config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,WAAW,mEAAoE,CAAC;AAC7F,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAErD,6CAA6C;AAC7C,MAAM,MAAM,eAAe,GACvB,SAAS,SAAS,iBAAiB,GACnC,SAAS,SAAS,UAAU,GAC5B,SAAS,SAAS,YAAY,GAC9B,wBAAwB,GACxB,qBAAqB,GACrB,iBAAiB,GACjB,gBAAgB,CAAC;AAErB,yDAAyD;AACzD,MAAM,MAAM,eAAe,GACvB,iBAAiB,GACjB,cAAc,GACd,iBAAiB,GACjB,iBAAiB,GACjB,iBAAiB,GACjB,cAAc,GACd,mBAAmB,GACnB,iBAAiB,GACjB,SAAS,CAAC;AAYd,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,aAAa,GAAE,MAAoB,GAAG,eAAe,CAiBzH;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAMtD;AAED;;;GAGG;AACH,eAAO,MAAM,uBAAuB,aAAsB,CAAC;AAE3D;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,EAAE,CAUrE;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,eAAe,CAUvF;AASD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAY7E;AAED,sBAAsB;AACtB,eAAO,MAAM,iBAAiB,EAAE,MAAM,EAQrC,CAAC;AAQF,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,GAAE,cAAc,GAAG,QAAQ,GAAG,WAA4B,GAAG;IACnH,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B,CAcA;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE7D;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEtD;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAKzD;AAED,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAMhD,CAAC;AAEF,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,OAAO,CAAS;gBACZ,OAAO,EAAE,MAAM;IAI3B,SAAS,IAAI,OAAO;IAIpB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIjC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,GAAE,cAAc,GAAG,QAAQ,GAAG,WAA4B;eA5EpF,MAAM;iBACJ,OAAO;yBACC,MAAM,EAAE;;IA8EzB,kBAAkB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,eAAe;CAGnD"}
|