universal-agent-memory 1.0.23 → 1.0.25

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 (31) hide show
  1. package/dist/mcp-router/config/parser.d.ts.map +1 -1
  2. package/dist/mcp-router/config/parser.js +31 -0
  3. package/dist/mcp-router/config/parser.js.map +1 -1
  4. package/dist/mcp-router/types.d.ts +1 -0
  5. package/dist/mcp-router/types.d.ts.map +1 -1
  6. package/dist/memory/adaptive-context.d.ts +1 -0
  7. package/dist/memory/adaptive-context.d.ts.map +1 -1
  8. package/dist/memory/adaptive-context.js +48 -6
  9. package/dist/memory/adaptive-context.js.map +1 -1
  10. package/dist/memory/context-compressor.js +1 -1
  11. package/dist/memory/context-compressor.js.map +1 -1
  12. package/dist/memory/dynamic-retrieval.d.ts +3 -0
  13. package/dist/memory/dynamic-retrieval.d.ts.map +1 -1
  14. package/dist/memory/dynamic-retrieval.js +36 -3
  15. package/dist/memory/dynamic-retrieval.js.map +1 -1
  16. package/dist/memory/model-router.d.ts +74 -0
  17. package/dist/memory/model-router.d.ts.map +1 -0
  18. package/dist/memory/model-router.js +205 -0
  19. package/dist/memory/model-router.js.map +1 -0
  20. package/dist/memory/short-term/schema.d.ts.map +1 -1
  21. package/dist/memory/short-term/schema.js +36 -0
  22. package/dist/memory/short-term/schema.js.map +1 -1
  23. package/dist/memory/short-term/sqlite.d.ts +2 -0
  24. package/dist/memory/short-term/sqlite.d.ts.map +1 -1
  25. package/dist/memory/short-term/sqlite.js +77 -1
  26. package/dist/memory/short-term/sqlite.js.map +1 -1
  27. package/dist/memory/terminal-bench-knowledge.d.ts +33 -0
  28. package/dist/memory/terminal-bench-knowledge.d.ts.map +1 -0
  29. package/dist/memory/terminal-bench-knowledge.js +198 -0
  30. package/dist/memory/terminal-bench-knowledge.js.map +1 -0
  31. package/package.json +1 -1
@@ -0,0 +1,205 @@
1
+ /**
2
+ * Model Routing Intelligence for UAM
3
+ *
4
+ * Routes tasks to the optimal model based on:
5
+ * - Task classification and difficulty
6
+ * - Model capability fingerprints (benchmarked data)
7
+ * - Latency/accuracy/cost tradeoffs
8
+ * - Fallback chains for resilience
9
+ *
10
+ * Based on BENCHMARK_ANALYSIS.md and MODEL_BENCHMARK_RESULTS.md data.
11
+ */
12
+ import { classifyTask } from './task-classifier.js';
13
+ const DEFAULT_CONFIG = {
14
+ preferLatency: false,
15
+ preferAccuracy: true,
16
+ maxCostPerTask: 0.05,
17
+ maxLatencyMs: 120000,
18
+ availableModels: ['glm-4.7', 'gpt-5.2', 'claude-opus-4.5', 'gpt-5.2-codex'],
19
+ };
20
+ const MODEL_FINGERPRINTS = {
21
+ 'glm-4.7': {
22
+ id: 'glm-4.7',
23
+ strengths: ['speed', 'simple-code', 'patterns', 'typescript', 'bug-detection'],
24
+ weaknesses: ['complex-algorithms', 'long-context', 'multi-step-code', 'context-awareness'],
25
+ avgLatencyMs: 11373,
26
+ successRate: 0.625,
27
+ costPerTask: 0.001,
28
+ maxComplexity: 'medium',
29
+ bestCategories: ['coding', 'testing', 'debugging'],
30
+ },
31
+ 'gpt-5.2': {
32
+ id: 'gpt-5.2',
33
+ strengths: ['balance', 'consistency', 'general-purpose', 'algorithm', 'multi-step'],
34
+ weaknesses: ['refactoring', 'latency-sensitive'],
35
+ avgLatencyMs: 21286,
36
+ successRate: 0.875,
37
+ costPerTask: 0.005,
38
+ maxComplexity: 'hard',
39
+ bestCategories: ['coding', 'security', 'file-ops', 'debugging'],
40
+ },
41
+ 'claude-opus-4.5': {
42
+ id: 'claude-opus-4.5',
43
+ strengths: ['accuracy', 'complex-reasoning', 'edge-cases', 'error-handling', 'refactoring'],
44
+ weaknesses: ['latency', 'cost'],
45
+ avgLatencyMs: 26359,
46
+ successRate: 0.875,
47
+ costPerTask: 0.02,
48
+ maxComplexity: 'hard',
49
+ bestCategories: ['security', 'coding', 'sysadmin', 'debugging'],
50
+ },
51
+ 'gpt-5.2-codex': {
52
+ id: 'gpt-5.2-codex',
53
+ strengths: ['code-specific', 'syntax-accuracy', 'context-awareness', 'all-difficulties'],
54
+ weaknesses: ['latency', 'cost', 'non-code-tasks'],
55
+ avgLatencyMs: 102399,
56
+ successRate: 1.0,
57
+ costPerTask: 0.01,
58
+ maxComplexity: 'hard',
59
+ bestCategories: ['coding', 'testing'],
60
+ },
61
+ };
62
+ const COMPLEXITY_RANK = { easy: 1, medium: 2, hard: 3 };
63
+ /**
64
+ * Failure handlers for model-specific known issues
65
+ */
66
+ const FAILURE_HANDLERS = {
67
+ 'gpt-5.2-codex:permission_denied': {
68
+ action: 'add_context',
69
+ context: 'Do not attempt file operations. Return code only.',
70
+ fallbackModel: 'gpt-5.2',
71
+ },
72
+ 'glm-4.7:timeout': {
73
+ action: 'reduce_context',
74
+ fallbackModel: 'gpt-5.2',
75
+ },
76
+ 'glm-4.7:context_overflow': {
77
+ action: 'reduce_context',
78
+ fallbackModel: 'gpt-5.2',
79
+ },
80
+ };
81
+ /**
82
+ * Score a model for a given task
83
+ */
84
+ function scoreModel(model, classification, difficulty, config) {
85
+ let score = 0;
86
+ // Category match bonus
87
+ if (model.bestCategories.includes(classification.category)) {
88
+ score += 30;
89
+ }
90
+ // Complexity match
91
+ if (COMPLEXITY_RANK[model.maxComplexity] >= COMPLEXITY_RANK[difficulty]) {
92
+ score += 20;
93
+ }
94
+ else {
95
+ score -= 50; // Penalty for difficulty exceeding capability
96
+ }
97
+ // Success rate (0-25 points)
98
+ score += model.successRate * 25;
99
+ // Latency preference (0-15 points)
100
+ if (config.preferLatency) {
101
+ const latencyScore = Math.max(0, 1 - (model.avgLatencyMs / 120000));
102
+ score += latencyScore * 15;
103
+ }
104
+ // Accuracy preference bonus
105
+ if (config.preferAccuracy) {
106
+ score += model.successRate * 10;
107
+ }
108
+ // Cost constraint
109
+ if (model.costPerTask > config.maxCostPerTask) {
110
+ score -= 20;
111
+ }
112
+ // Latency constraint
113
+ if (model.avgLatencyMs > config.maxLatencyMs) {
114
+ score -= 30;
115
+ }
116
+ // Keyword match with model strengths
117
+ const taskKeywords = classification.keywords.map(k => k.toLowerCase());
118
+ for (const strength of model.strengths) {
119
+ if (taskKeywords.some(kw => strength.includes(kw) || kw.includes(strength))) {
120
+ score += 5;
121
+ }
122
+ }
123
+ return score;
124
+ }
125
+ /**
126
+ * Route a task to the best model
127
+ */
128
+ export function routeTask(instruction, difficulty = 'medium', config = {}) {
129
+ const cfg = { ...DEFAULT_CONFIG, ...config };
130
+ const classification = classifyTask(instruction);
131
+ // Score all available models
132
+ const scored = cfg.availableModels
133
+ .filter(id => MODEL_FINGERPRINTS[id])
134
+ .map(id => ({
135
+ id,
136
+ fingerprint: MODEL_FINGERPRINTS[id],
137
+ score: scoreModel(MODEL_FINGERPRINTS[id], classification, difficulty, cfg),
138
+ }))
139
+ .sort((a, b) => b.score - a.score);
140
+ if (scored.length === 0) {
141
+ return {
142
+ primary: 'gpt-5.2',
143
+ fallback: ['claude-opus-4.5'],
144
+ reason: 'No available models matched, defaulting to GPT 5.2',
145
+ estimatedLatencyMs: 21286,
146
+ estimatedSuccessRate: 0.875,
147
+ estimatedCost: 0.005,
148
+ };
149
+ }
150
+ const primary = scored[0];
151
+ const fallbacks = scored.slice(1).map(s => s.id);
152
+ return {
153
+ primary: primary.id,
154
+ fallback: fallbacks,
155
+ reason: `${primary.id} selected for ${classification.category}/${difficulty} task (score: ${primary.score.toFixed(0)})`,
156
+ estimatedLatencyMs: primary.fingerprint.avgLatencyMs,
157
+ estimatedSuccessRate: primary.fingerprint.successRate,
158
+ estimatedCost: primary.fingerprint.costPerTask,
159
+ };
160
+ }
161
+ /**
162
+ * Get failure handler for a model-specific error
163
+ */
164
+ export function getFailureHandler(modelId, errorType) {
165
+ return FAILURE_HANDLERS[`${modelId}:${errorType}`] || null;
166
+ }
167
+ /**
168
+ * Get model fingerprint
169
+ */
170
+ export function getModelFingerprint(modelId) {
171
+ return MODEL_FINGERPRINTS[modelId] || null;
172
+ }
173
+ /**
174
+ * Get all model fingerprints
175
+ */
176
+ export function getAllModelFingerprints() {
177
+ return { ...MODEL_FINGERPRINTS };
178
+ }
179
+ /**
180
+ * Update model fingerprint with new benchmark data
181
+ */
182
+ export function updateModelFingerprint(modelId, updates) {
183
+ const fp = MODEL_FINGERPRINTS[modelId];
184
+ if (!fp)
185
+ return;
186
+ if (updates.avgLatencyMs !== undefined) {
187
+ // Exponential moving average
188
+ fp.avgLatencyMs = fp.avgLatencyMs * 0.7 + updates.avgLatencyMs * 0.3;
189
+ }
190
+ if (updates.successRate !== undefined) {
191
+ fp.successRate = fp.successRate * 0.7 + updates.successRate * 0.3;
192
+ }
193
+ if (updates.costPerTask !== undefined) {
194
+ fp.costPerTask = updates.costPerTask;
195
+ }
196
+ }
197
+ export const ModelRouter = {
198
+ routeTask,
199
+ getFailureHandler,
200
+ getModelFingerprint,
201
+ getAllModelFingerprints,
202
+ updateModelFingerprint,
203
+ };
204
+ export default ModelRouter;
205
+ //# sourceMappingURL=model-router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-router.js","sourceRoot":"","sources":["../../src/memory/model-router.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/memory/short-term/schema.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAItC,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAYjE;AAED,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAc/D;AAED,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CA0BjE;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAW7D"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/memory/short-term/schema.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAItC,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAwCjE;AAED,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CA0B/D;AAED,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CA0BjE;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAW7D"}
@@ -12,7 +12,32 @@ export function ensureShortTermSchema(db) {
12
12
  );
13
13
  CREATE INDEX IF NOT EXISTS idx_memories_project_id ON memories(project_id);
14
14
  CREATE INDEX IF NOT EXISTS idx_memories_timestamp ON memories(timestamp);
15
+ CREATE INDEX IF NOT EXISTS idx_memories_type ON memories(type);
16
+ CREATE INDEX IF NOT EXISTS idx_memories_project_type ON memories(project_id, type);
15
17
  `);
18
+ // Enable WAL mode for concurrent reads and better write performance
19
+ db.pragma('journal_mode = WAL');
20
+ db.pragma('synchronous = NORMAL');
21
+ db.pragma('mmap_size = 268435456');
22
+ db.pragma('cache_size = -64000');
23
+ // Create FTS5 virtual table for full-text search
24
+ db.exec(`
25
+ CREATE VIRTUAL TABLE IF NOT EXISTS memories_fts USING fts5(
26
+ content,
27
+ type,
28
+ content_rowid=id,
29
+ tokenize='porter unicode61'
30
+ );
31
+ `);
32
+ // Populate FTS if empty but memories exist
33
+ const ftsCount = db.prepare('SELECT COUNT(*) as c FROM memories_fts').get().c;
34
+ const memCount = db.prepare('SELECT COUNT(*) as c FROM memories').get().c;
35
+ if (ftsCount === 0 && memCount > 0) {
36
+ db.exec(`
37
+ INSERT INTO memories_fts(rowid, content, type)
38
+ SELECT id, content, type FROM memories;
39
+ `);
40
+ }
16
41
  }
17
42
  export function ensureSessionSchema(db) {
18
43
  db.exec(`
@@ -27,6 +52,17 @@ export function ensureSessionSchema(db) {
27
52
  CREATE UNIQUE INDEX IF NOT EXISTS idx_session_unique ON session_memories(session_id, content);
28
53
  CREATE INDEX IF NOT EXISTS idx_session_id ON session_memories(session_id);
29
54
  CREATE INDEX IF NOT EXISTS idx_session_timestamp ON session_memories(timestamp);
55
+ CREATE INDEX IF NOT EXISTS idx_session_importance ON session_memories(importance DESC);
56
+ CREATE INDEX IF NOT EXISTS idx_session_id_importance ON session_memories(session_id, importance DESC);
57
+ `);
58
+ // Create FTS5 for session memories
59
+ db.exec(`
60
+ CREATE VIRTUAL TABLE IF NOT EXISTS session_memories_fts USING fts5(
61
+ content,
62
+ type,
63
+ content_rowid=id,
64
+ tokenize='porter unicode61'
65
+ );
30
66
  `);
31
67
  }
32
68
  export function ensureKnowledgeSchema(db) {
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/memory/short-term/schema.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,MAAM,UAAU,qBAAqB,CAAC,EAAqB;IACzD,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;GAUP,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,EAAqB;IACvD,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;GAYP,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,EAAqB;IACzD,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;GAwBP,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,MAAc;IACrD,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;IAChC,qBAAqB,CAAC,EAAE,CAAC,CAAC;IAC1B,mBAAmB,CAAC,EAAE,CAAC,CAAC;IACxB,qBAAqB,CAAC,EAAE,CAAC,CAAC;IAC1B,EAAE,CAAC,KAAK,EAAE,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/memory/short-term/schema.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,MAAM,UAAU,qBAAqB,CAAC,EAAqB;IACzD,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;GAYP,CAAC,CAAC;IAEH,oEAAoE;IACpE,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAChC,EAAE,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;IAClC,EAAE,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC;IACnC,EAAE,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;IAEjC,iDAAiD;IACjD,EAAE,CAAC,IAAI,CAAC;;;;;;;GAOP,CAAC,CAAC;IAEH,2CAA2C;IAC3C,MAAM,QAAQ,GAAI,EAAE,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC,GAAG,EAAoB,CAAC,CAAC,CAAC;IACjG,MAAM,QAAQ,GAAI,EAAE,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC,GAAG,EAAoB,CAAC,CAAC,CAAC;IAC7F,IAAI,QAAQ,KAAK,CAAC,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;QACnC,EAAE,CAAC,IAAI,CAAC;;;KAGP,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,EAAqB;IACvD,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;GAcP,CAAC,CAAC;IAEH,mCAAmC;IACnC,EAAE,CAAC,IAAI,CAAC;;;;;;;GAOP,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,EAAqB;IACzD,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;GAwBP,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,MAAc;IACrD,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;IAChC,qBAAqB,CAAC,EAAE,CAAC,CAAC;IAC1B,mBAAmB,CAAC,EAAE,CAAC,CAAC;IACxB,qBAAqB,CAAC,EAAE,CAAC,CAAC;IAC1B,EAAE,CAAC,KAAK,EAAE,CAAC;AACb,CAAC"}
@@ -10,6 +10,7 @@ export declare class SQLiteShortTermMemory implements ShortTermMemoryBackend {
10
10
  private db;
11
11
  private projectId;
12
12
  private maxEntries;
13
+ private cache;
13
14
  constructor(config: {
14
15
  dbPath: string;
15
16
  projectId?: string;
@@ -24,6 +25,7 @@ export declare class SQLiteShortTermMemory implements ShortTermMemoryBackend {
24
25
  }>): Promise<void>;
25
26
  getRecent(limit?: number): Promise<ShortTermMemory[]>;
26
27
  query(searchTerm: string, limit?: number): Promise<ShortTermMemory[]>;
28
+ private queryWithoutCache;
27
29
  getByType(type: ShortTermMemory['type'], limit?: number): Promise<ShortTermMemory[]>;
28
30
  count(): Promise<number>;
29
31
  private prune;
@@ -1 +1 @@
1
- {"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../../src/memory/short-term/sqlite.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAE3D,UAAU,eAAe;IACvB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,QAAQ,GAAG,aAAa,GAAG,SAAS,GAAG,MAAM,CAAC;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,qBAAsB,YAAW,sBAAsB;IAClE,OAAO,CAAC,EAAE,CAAoB;IAC9B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAS;gBAEf,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;IAe/E,OAAO,CAAC,UAAU;IAIZ,KAAK,CAAC,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWpE,UAAU,CACd,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GACrF,OAAO,CAAC,IAAI,CAAC;IAsBV,SAAS,CAAC,KAAK,SAAK,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAWjD,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAWjE,SAAS,CAAC,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAWhF,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;YAUhB,KAAK;IAiBb,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAQtB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtB,SAAS,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAWvC,SAAS,CACb,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GACtF,OAAO,CAAC,MAAM,CAAC;CAInB"}
1
+ {"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../../src/memory/short-term/sqlite.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAE3D,UAAU,eAAe;IACvB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,QAAQ,GAAG,aAAa,GAAG,SAAS,GAAG,MAAM,CAAC;IACpD,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,qBAAsB,YAAW,sBAAsB;IAClE,OAAO,CAAC,EAAE,CAAoB;IAC9B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,KAAK,CAAgF;gBAEjF,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;IAe/E,OAAO,CAAC,UAAU;IAIZ,KAAK,CAAC,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBpE,UAAU,CACd,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GACrF,OAAO,CAAC,IAAI,CAAC;IAsBV,SAAS,CAAC,KAAK,SAAK,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAWjD,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;YAoDzD,iBAAiB;IA0BzB,SAAS,CAAC,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAWhF,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;YAUhB,KAAK;IAiBb,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAQtB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtB,SAAS,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAWvC,SAAS,CACb,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GACtF,OAAO,CAAC,MAAM,CAAC;CAInB"}
@@ -2,10 +2,12 @@ import Database from 'better-sqlite3';
2
2
  import { existsSync, mkdirSync } from 'fs';
3
3
  import { dirname } from 'path';
4
4
  import { ensureShortTermSchema } from './schema.js';
5
+ import { getSpeculativeCache } from '../speculative-cache.js';
5
6
  export class SQLiteShortTermMemory {
6
7
  db;
7
8
  projectId;
8
9
  maxEntries;
10
+ cache = getSpeculativeCache({ maxEntries: 50, ttlMs: 120000, preWarmEnabled: true });
9
11
  constructor(config) {
10
12
  // Ensure directory exists
11
13
  const dir = dirname(config.dbPath);
@@ -22,11 +24,23 @@ export class SQLiteShortTermMemory {
22
24
  ensureShortTermSchema(this.db);
23
25
  }
24
26
  async store(type, content) {
27
+ const timestamp = new Date().toISOString();
25
28
  const stmt = this.db.prepare(`
26
29
  INSERT INTO memories (timestamp, type, content, project_id)
27
30
  VALUES (?, ?, ?, ?)
28
31
  `);
29
- stmt.run(new Date().toISOString(), type, content, this.projectId);
32
+ const result = stmt.run(timestamp, type, content, this.projectId);
33
+ // Update FTS5 index
34
+ try {
35
+ const ftsStmt = this.db.prepare(`
36
+ INSERT INTO memories_fts(rowid, content, type)
37
+ VALUES (?, ?, ?)
38
+ `);
39
+ ftsStmt.run(result.lastInsertRowid, content, type);
40
+ }
41
+ catch {
42
+ // FTS5 not available, ignore
43
+ }
30
44
  // Auto-prune if exceeds maxEntries
31
45
  await this.prune();
32
46
  }
@@ -54,6 +68,68 @@ export class SQLiteShortTermMemory {
54
68
  return stmt.all(this.projectId, limit);
55
69
  }
56
70
  async query(searchTerm, limit = 10) {
71
+ // Check speculative cache first
72
+ const cacheKey = `${this.projectId}:${searchTerm}:${limit}`;
73
+ const cached = this.cache.get(cacheKey);
74
+ if (cached) {
75
+ return cached.result;
76
+ }
77
+ let results = [];
78
+ // Try FTS5 first for faster full-text search
79
+ try {
80
+ const ftsStmt = this.db.prepare(`
81
+ SELECT m.id, m.timestamp, m.type, m.content, m.project_id as projectId
82
+ FROM memories_fts fts
83
+ JOIN memories m ON fts.rowid = m.id
84
+ WHERE memories_fts MATCH ? AND m.project_id = ?
85
+ ORDER BY rank
86
+ LIMIT ?
87
+ `);
88
+ results = ftsStmt.all(searchTerm, this.projectId, limit);
89
+ }
90
+ catch {
91
+ // FTS5 not available or query syntax error, fall through to LIKE
92
+ }
93
+ // Fallback to LIKE search if FTS5 returned nothing
94
+ if (results.length === 0) {
95
+ const stmt = this.db.prepare(`
96
+ SELECT id, timestamp, type, content, project_id as projectId
97
+ FROM memories
98
+ WHERE project_id = ? AND content LIKE ?
99
+ ORDER BY id DESC
100
+ LIMIT ?
101
+ `);
102
+ results = stmt.all(this.projectId, `%${searchTerm}%`, limit);
103
+ }
104
+ // Store in cache
105
+ this.cache.set(cacheKey, results);
106
+ // Pre-warm cache for predicted next queries
107
+ this.cache.preWarm(searchTerm, async (q) => {
108
+ const predictedKey = `${this.projectId}:${q}:${limit}`;
109
+ if (!this.cache.get(predictedKey)) {
110
+ return this.queryWithoutCache(q, limit);
111
+ }
112
+ return [];
113
+ }).catch(() => { });
114
+ return results;
115
+ }
116
+ async queryWithoutCache(searchTerm, limit) {
117
+ try {
118
+ const ftsStmt = this.db.prepare(`
119
+ SELECT m.id, m.timestamp, m.type, m.content, m.project_id as projectId
120
+ FROM memories_fts fts
121
+ JOIN memories m ON fts.rowid = m.id
122
+ WHERE memories_fts MATCH ? AND m.project_id = ?
123
+ ORDER BY rank
124
+ LIMIT ?
125
+ `);
126
+ const results = ftsStmt.all(searchTerm, this.projectId, limit);
127
+ if (results.length > 0)
128
+ return results;
129
+ }
130
+ catch {
131
+ // FTS5 not available
132
+ }
57
133
  const stmt = this.db.prepare(`
58
134
  SELECT id, timestamp, type, content, project_id as projectId
59
135
  FROM memories
@@ -1 +1 @@
1
- {"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../../src/memory/short-term/sqlite.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../../src/memory/short-term/sqlite.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Terminal-Bench Domain Knowledge Pre-Population
3
+ *
4
+ * This module contains battle-tested domain knowledge that improved
5
+ * Terminal-Bench 2.0 accuracy by +6.7% (53.3% -> 60%).
6
+ *
7
+ * Based on TERMINAL_BENCH_RESULTS.md analysis of improvements:
8
+ * - extract-elf: ELF format knowledge enabled correct parsing
9
+ * - password-recovery: hashcat/john guidance led to successful recovery
10
+ */
11
+ export interface DomainKnowledge {
12
+ category: string;
13
+ type: 'pattern' | 'tool' | 'format' | 'gotcha';
14
+ content: string;
15
+ keywords: string[];
16
+ importance: number;
17
+ }
18
+ export declare const TERMINAL_BENCH_KNOWLEDGE: DomainKnowledge[];
19
+ /**
20
+ * Get domain knowledge relevant to a task
21
+ */
22
+ export declare function getRelevantKnowledge(taskInstruction: string, category?: string): DomainKnowledge[];
23
+ /**
24
+ * Format knowledge for context injection
25
+ */
26
+ export declare function formatKnowledgeForContext(knowledge: DomainKnowledge[]): string;
27
+ declare const _default: {
28
+ TERMINAL_BENCH_KNOWLEDGE: DomainKnowledge[];
29
+ getRelevantKnowledge: typeof getRelevantKnowledge;
30
+ formatKnowledgeForContext: typeof formatKnowledgeForContext;
31
+ };
32
+ export default _default;
33
+ //# sourceMappingURL=terminal-bench-knowledge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-bench-knowledge.d.ts","sourceRoot":"","sources":["../../src/memory/terminal-bench-knowledge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,wBAAwB,EAAE,eAAe,EAqJrD,CAAC;AAEF;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,eAAe,EAAE,MAAM,EACvB,QAAQ,CAAC,EAAE,MAAM,GAChB,eAAe,EAAE,CAyBnB;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,eAAe,EAAE,GAAG,MAAM,CAU9E;;;;;;AAED,wBAIE"}