@devflow-tools/memory-engine 0.13.3 → 0.14.1

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 (56) hide show
  1. package/dist/consolidator.d.ts +13 -0
  2. package/dist/consolidator.d.ts.map +1 -0
  3. package/dist/consolidator.js +184 -0
  4. package/dist/consolidator.js.map +1 -0
  5. package/dist/event-grouper.d.ts +13 -0
  6. package/dist/event-grouper.d.ts.map +1 -0
  7. package/dist/event-grouper.js +178 -0
  8. package/dist/event-grouper.js.map +1 -0
  9. package/dist/graph-store.d.ts.map +1 -1
  10. package/dist/graph-store.js +2 -4
  11. package/dist/graph-store.js.map +1 -1
  12. package/dist/hybrid-search.d.ts +7 -4
  13. package/dist/hybrid-search.d.ts.map +1 -1
  14. package/dist/hybrid-search.js +69 -8
  15. package/dist/hybrid-search.js.map +1 -1
  16. package/dist/index.d.ts +14 -0
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +7 -0
  19. package/dist/index.js.map +1 -1
  20. package/dist/l2-evaluator.d.ts +31 -0
  21. package/dist/l2-evaluator.d.ts.map +1 -0
  22. package/dist/l2-evaluator.js +103 -0
  23. package/dist/l2-evaluator.js.map +1 -0
  24. package/dist/llm-provider.d.ts +9 -0
  25. package/dist/llm-provider.d.ts.map +1 -0
  26. package/dist/llm-provider.js +37 -0
  27. package/dist/llm-provider.js.map +1 -0
  28. package/dist/memory-engine.d.ts +27 -4
  29. package/dist/memory-engine.d.ts.map +1 -1
  30. package/dist/memory-engine.js +275 -182
  31. package/dist/memory-engine.js.map +1 -1
  32. package/dist/memory-gate.d.ts +116 -0
  33. package/dist/memory-gate.d.ts.map +1 -0
  34. package/dist/memory-gate.js +385 -0
  35. package/dist/memory-gate.js.map +1 -0
  36. package/dist/memory-store.d.ts +234 -32
  37. package/dist/memory-store.d.ts.map +1 -1
  38. package/dist/memory-store.js +729 -142
  39. package/dist/memory-store.js.map +1 -1
  40. package/dist/project-validator.d.ts +10 -0
  41. package/dist/project-validator.d.ts.map +1 -0
  42. package/dist/project-validator.js +36 -0
  43. package/dist/project-validator.js.map +1 -0
  44. package/dist/session-summarizer.d.ts +10 -0
  45. package/dist/session-summarizer.d.ts.map +1 -0
  46. package/dist/session-summarizer.js +197 -0
  47. package/dist/session-summarizer.js.map +1 -0
  48. package/dist/signal-buffer.d.ts +42 -0
  49. package/dist/signal-buffer.d.ts.map +1 -0
  50. package/dist/signal-buffer.js +104 -0
  51. package/dist/signal-buffer.js.map +1 -0
  52. package/dist/signal-detector.d.ts +39 -0
  53. package/dist/signal-detector.d.ts.map +1 -0
  54. package/dist/signal-detector.js +239 -0
  55. package/dist/signal-detector.js.map +1 -0
  56. package/package.json +5 -5
@@ -0,0 +1,239 @@
1
+ import { randomUUID } from 'node:crypto';
2
+ // ── Types ──────────────────────────────────────────────
3
+ export const SIGNAL_TYPES = [
4
+ 'user_explicit_save', 'user_correction', 'user_frustration',
5
+ 'fix_confirmed', 'error_loop', 'error_first_encounter',
6
+ 'config_surface', 'novel_tool', 'file_touch_cluster',
7
+ 'long_running', 'context_switch', 'merge_conflict',
8
+ 'test_failure', 'rollback',
9
+ ];
10
+ // ── Signal Detector ────────────────────────────────────
11
+ export class SignalDetector {
12
+ knownTools = new Set();
13
+ seenErrors = new Map(); // errorKey → first seen timestamp
14
+ fileTouchWindow = [];
15
+ reset() {
16
+ this.knownTools.clear();
17
+ this.seenErrors.clear();
18
+ this.fileTouchWindow = [];
19
+ }
20
+ // ── All-in-one detection ──────────────────────────
21
+ detect(event, recentEvents, userMessage) {
22
+ const signals = [];
23
+ // Cheap — per event
24
+ signals.push(...this.detectCheap(event, userMessage));
25
+ // Medium — needs recent window
26
+ signals.push(...this.detectMedium(event, recentEvents));
27
+ // Expensive — sequence analysis over full window
28
+ signals.push(...this.detectExpensive(event, recentEvents));
29
+ return signals;
30
+ }
31
+ // ── Cheap Layer (regex, per-event, no DB) ──────────
32
+ detectCheap(event, userMessage) {
33
+ const signals = [];
34
+ const now = Date.now();
35
+ // 1. user_explicit_save — "记住"/"save this"/"/memory add"
36
+ if (userMessage?.text) {
37
+ const savePattern = /\b(remember|记住|save this|保存|记一下|keep this)\b/i;
38
+ if (savePattern.test(userMessage.text)) {
39
+ signals.push(this.makeSignal('user_explicit_save', 0.95, event, {
40
+ message: userMessage.text.slice(0, 200),
41
+ }));
42
+ }
43
+ // 2. user_correction — "不对"/"don't"/"错了"/"should not"
44
+ const correctionPattern = /\b(no\b|不对|don't|wrong|不是这样|错了|不对的|should not|no longer)\b/i;
45
+ if (correctionPattern.test(userMessage.text)) {
46
+ signals.push(this.makeSignal('user_correction', 0.85, event, {
47
+ message: userMessage.text.slice(0, 200),
48
+ }));
49
+ }
50
+ // 3. user_frustration — "为什么"/"why"/"怎么回事"
51
+ const frustrationPattern = /\b(为什么|why|what the|怎么回事|wtf|搞什么|看不懂)\b/i;
52
+ if (frustrationPattern.test(userMessage.text)) {
53
+ signals.push(this.makeSignal('user_frustration', 0.60, event, {
54
+ message: userMessage.text.slice(0, 200),
55
+ }));
56
+ }
57
+ }
58
+ const stderrText = event.stderr ?? '';
59
+ const cmdText = event.command ?? '';
60
+ const hasError = event.exitCode !== undefined && event.exitCode !== null && event.exitCode !== 0;
61
+ // 4. error_first_encounter
62
+ if (hasError && stderrText) {
63
+ const errorKey = this.extractErrorKey(stderrText);
64
+ if (errorKey && !this.seenErrors.has(errorKey)) {
65
+ this.seenErrors.set(errorKey, now);
66
+ signals.push(this.makeSignal('error_first_encounter', 0.7, event, {
67
+ errorKey,
68
+ stderr: stderrText.slice(0, 200),
69
+ exitCode: event.exitCode,
70
+ }));
71
+ }
72
+ }
73
+ // 5. config_surface — port/URL/key patterns
74
+ const CONFIG_PATTERNS = /(?::\d{4,5}\b|DATABASE_URL|REDIS_URL|API_KEY|SECRET|TOKEN|connection string|\bDB_\w+|\bPORT=\d+|:\/\/[\w.-]+:\d+|\.env\b|config\b|localhost:\d{4})/i;
75
+ if (CONFIG_PATTERNS.test(stderrText) || CONFIG_PATTERNS.test(cmdText)) {
76
+ const match = (stderrText + ' ' + cmdText).match(CONFIG_PATTERNS);
77
+ signals.push(this.makeSignal('config_surface', 0.6, event, {
78
+ match: match?.[0] ?? null,
79
+ }));
80
+ }
81
+ // 6. novel_tool — first-time project-specific command
82
+ if (!this.knownTools.has(event.tool)) {
83
+ this.knownTools.add(event.tool);
84
+ signals.push(this.makeSignal('novel_tool', 0.5, event, {
85
+ tool: event.tool,
86
+ }));
87
+ }
88
+ // Also detect novel npm/npx tools
89
+ if (cmdText) {
90
+ const novelCmdMatch = cmdText.match(/\b(npx\s+|pnpm\s+dlx\s+|npm\s+run\s+\S+|yarn\s+run\s+\S+)/i);
91
+ if (novelCmdMatch) {
92
+ const novelKey = `cmd:${novelCmdMatch[0].trim()}`;
93
+ if (!this.knownTools.has(novelKey)) {
94
+ this.knownTools.add(novelKey);
95
+ signals.push(this.makeSignal('novel_tool', 0.65, event, {
96
+ command: novelCmdMatch[0].trim(),
97
+ }));
98
+ }
99
+ }
100
+ }
101
+ // 7. test_failure
102
+ const TEST_FAILURE_PATTERNS = /\b(FAIL|FAILED|assert|×\s+\d+|Tests:\s+\d+\s+failed|expect\(|toEqual\(|toThrow\()/i;
103
+ if (TEST_FAILURE_PATTERNS.test(stderrText) || (hasError && /\b(vitest|jest|mocha|ava|tap)\b/i.test(cmdText))) {
104
+ signals.push(this.makeSignal('test_failure', 0.55, event, {
105
+ exitCode: event.exitCode,
106
+ command: cmdText.slice(0, 100),
107
+ }));
108
+ }
109
+ return signals;
110
+ }
111
+ // ── Medium Layer (cross-event window) ──────────────
112
+ detectMedium(event, recentEvents) {
113
+ const signals = [];
114
+ const cmdText = event.command ?? '';
115
+ // 8. error_loop — same command failed ≥3 times in recent window
116
+ if (event.exitCode !== undefined && event.exitCode !== null && event.exitCode !== 0 && cmdText) {
117
+ const sameCmdFailures = recentEvents.filter(e => e.command === cmdText && e.exitCode !== undefined && e.exitCode !== null && e.exitCode !== 0);
118
+ if (sameCmdFailures.length >= 3) {
119
+ // Only emit once per loop (first time we hit 3)
120
+ const prevLoops = recentEvents.filter(e => e.command === cmdText && e.exitCode !== 0 && e.tool === event.tool);
121
+ if (prevLoops.length === 3) {
122
+ signals.push(this.makeSignal('error_loop', 0.8, event, {
123
+ failureCount: sameCmdFailures.length,
124
+ command: cmdText.slice(0, 100),
125
+ errorIds: sameCmdFailures.map(e => e.id),
126
+ }));
127
+ }
128
+ }
129
+ }
130
+ // 9. file_touch_cluster — same file accessed multiple times within 2 min
131
+ const FILE_PATHS = /\b((?:\/[^\s,;]+|\S+\.(?:tsx?|jsx?|py|go|rs|java|rb|css|html|vue|svelte|json|ya?ml|toml|md|sql|prisma|graphql)))/gi;
132
+ const fileMatches = [...cmdText.matchAll(FILE_PATHS)].map(m => m[1]);
133
+ for (const file of fileMatches) {
134
+ this.fileTouchWindow.push({ file, timestamp: event.createdAt });
135
+ // Keep window at 2 minutes
136
+ const cutoff = event.createdAt - 2 * 60 * 1000;
137
+ this.fileTouchWindow = this.fileTouchWindow.filter(f => f.timestamp > cutoff);
138
+ const count = this.fileTouchWindow.filter(f => f.file === file).length;
139
+ if (count >= 3) {
140
+ signals.push(this.makeSignal('file_touch_cluster', 0.5 + (count - 3) * 0.1, event, {
141
+ file,
142
+ touchCount: count,
143
+ }));
144
+ }
145
+ }
146
+ // 10. context_switch — tool category change
147
+ const toolCategories = {
148
+ 'Bash': 'shell', 'Read': 'file', 'Edit': 'file', 'Write': 'file',
149
+ 'Glob': 'file', 'Grep': 'search', 'Agent': 'agent',
150
+ };
151
+ const currentCategory = toolCategories[event.tool] ?? 'other';
152
+ if (recentEvents.length >= 3) {
153
+ const last3 = recentEvents.slice(-3);
154
+ const lastCategories = last3.map(e => toolCategories[e.tool] ?? 'other');
155
+ const allSame = lastCategories.every(c => c === lastCategories[0]);
156
+ if (allSame && lastCategories[0] !== currentCategory && currentCategory !== 'other') {
157
+ signals.push(this.makeSignal('context_switch', 0.35, event, {
158
+ from: lastCategories[0],
159
+ to: currentCategory,
160
+ }));
161
+ }
162
+ }
163
+ return signals;
164
+ }
165
+ // ── Expensive Layer (sequence analysis) ────────────
166
+ detectExpensive(event, recentEvents) {
167
+ const signals = [];
168
+ // 11. fix_confirmed — error → modified command → success within 6 events
169
+ if (event.exitCode === 0 && event.command && recentEvents.length >= 2) {
170
+ const prev = recentEvents[recentEvents.length - 1];
171
+ const prevPrev = recentEvents[recentEvents.length - 2];
172
+ if (prev && prev.command && event.command !== prev.command) {
173
+ const curBase = event.command.split(' ')[0];
174
+ const prevBase = prev.command.split(' ')[0];
175
+ if (curBase === prevBase && prev.exitCode !== undefined && prev.exitCode !== null && prev.exitCode !== 0) {
176
+ signals.push(this.makeSignal('fix_confirmed', 0.9, event, {
177
+ failedCommand: prev.command.slice(0, 100),
178
+ fixCommand: event.command.slice(0, 100),
179
+ failedEventId: prev.id,
180
+ }));
181
+ }
182
+ }
183
+ }
184
+ // 12. merge_conflict
185
+ if (event.command && /\b(merge|rebase|cherry-pick|conflict|CONFLICT)\b/i.test(event.command + (event.stderr ?? ''))) {
186
+ if (event.exitCode !== 0 || /\bCONFLICT\b/.test(event.stderr ?? '')) {
187
+ signals.push(this.makeSignal('merge_conflict', 0.75, event, {
188
+ command: event.command.slice(0, 100),
189
+ }));
190
+ }
191
+ }
192
+ // 13. rollback — git reset / revert / checkout to undo
193
+ if (event.command && /\b(git\s+(reset|revert|checkout\s+--)\b)/i.test(event.command)) {
194
+ const hasPriorWrite = recentEvents.some(e => e.tool === 'Write' || e.tool === 'Edit');
195
+ signals.push(this.makeSignal('rollback', 0.7, event, {
196
+ command: event.command.slice(0, 100),
197
+ hasPriorWrite,
198
+ }));
199
+ }
200
+ // 14. long_running — tool call took >30s
201
+ if (event.durationMs && event.durationMs > 30_000) {
202
+ signals.push(this.makeSignal('long_running', 0.55, event, {
203
+ durationMs: event.durationMs,
204
+ tool: event.tool,
205
+ }));
206
+ }
207
+ return signals;
208
+ }
209
+ // ── Helpers ────────────────────────────────────────
210
+ makeSignal(type, strength, event, payload = {}) {
211
+ return {
212
+ id: `sig:${Date.now()}:${randomUUID().slice(0, 8)}`,
213
+ type,
214
+ strength: Math.min(1, Math.max(0, strength)),
215
+ sourceEventIds: [event.id],
216
+ payload,
217
+ timestamp: Date.now(),
218
+ sessionId: event.sessionId,
219
+ };
220
+ }
221
+ extractErrorKey(stderr) {
222
+ const patterns = [
223
+ /\b(ENOENT)\b/i, /\b(ECONNREFUSED)\b/i, /\b(ETIMEDOUT)\b/i,
224
+ /\b(EACCES|permission denied)\b/i, /\b(ENOTFOUND|MODULE_NOT_FOUND)\b/i,
225
+ /\b(TypeError)\b/i, /\b(ReferenceError)\b/i, /\b(SyntaxError)\b/i,
226
+ /\b(FOREIGN KEY)\b/i, /\b(UNIQUE constraint)\b/i,
227
+ /\b(401|403|404|500|502|503)\b/,
228
+ ];
229
+ for (const pattern of patterns) {
230
+ const match = stderr.match(pattern);
231
+ if (match)
232
+ return match[0].toLowerCase();
233
+ }
234
+ // Fallback: first line of stderr
235
+ const firstLine = stderr.split('\n')[0]?.trim().slice(0, 60);
236
+ return firstLine || null;
237
+ }
238
+ }
239
+ //# sourceMappingURL=signal-detector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signal-detector.js","sourceRoot":"","sources":["../src/signal-detector.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@devflow-tools/memory-engine",
3
- "version": "0.13.3",
3
+ "version": "0.14.1",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -17,19 +17,19 @@
17
17
  "clean": "rm -rf dist"
18
18
  },
19
19
  "dependencies": {
20
- "@devflow-tools/context-engine": "^0.13.3",
21
- "@devflow-tools/sdk": "^0.13.3",
20
+ "@devflow-tools/context-engine": "^0.14.1",
21
+ "@devflow-tools/sdk": "^0.14.0",
22
22
  "@xenova/transformers": "^2.17.0",
23
23
  "better-sqlite3": "^12.0.0",
24
24
  "sqlite-vec": "^0.1.9"
25
25
  },
26
26
  "devDependencies": {
27
- "@devflow-tools/knowledge-engine": "^0.13.3",
27
+ "@devflow-tools/knowledge-engine": "^0.14.1",
28
28
  "typescript": "^5.5.0",
29
29
  "vitest": "^2.0.0"
30
30
  },
31
31
  "files": [
32
32
  "dist"
33
33
  ],
34
- "gitHead": "1ec6f7748cc94dcd35f8aa9947af854c23ea6be1"
34
+ "gitHead": "07fb824cb8de1f1b41fb45949bda10e2b95d389c"
35
35
  }