universal-agent-memory 0.6.2 → 0.6.3

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 (69) hide show
  1. package/dist/benchmarks/agents/naive-agent.d.ts +60 -0
  2. package/dist/benchmarks/agents/naive-agent.d.ts.map +1 -0
  3. package/dist/benchmarks/agents/naive-agent.js +144 -0
  4. package/dist/benchmarks/agents/naive-agent.js.map +1 -0
  5. package/dist/benchmarks/agents/uam-agent.d.ts +167 -0
  6. package/dist/benchmarks/agents/uam-agent.d.ts.map +1 -0
  7. package/dist/benchmarks/agents/uam-agent.js +386 -0
  8. package/dist/benchmarks/agents/uam-agent.js.map +1 -0
  9. package/dist/benchmarks/benchmark.d.ts +328 -0
  10. package/dist/benchmarks/benchmark.d.ts.map +1 -0
  11. package/dist/benchmarks/benchmark.js +104 -0
  12. package/dist/benchmarks/benchmark.js.map +1 -0
  13. package/dist/benchmarks/execution-verifier.d.ts +41 -0
  14. package/dist/benchmarks/execution-verifier.d.ts.map +1 -0
  15. package/dist/benchmarks/execution-verifier.js +301 -0
  16. package/dist/benchmarks/execution-verifier.js.map +1 -0
  17. package/dist/benchmarks/hierarchical-prompting.d.ts +37 -0
  18. package/dist/benchmarks/hierarchical-prompting.d.ts.map +1 -0
  19. package/dist/benchmarks/hierarchical-prompting.js +260 -0
  20. package/dist/benchmarks/hierarchical-prompting.js.map +1 -0
  21. package/dist/benchmarks/improved-benchmark.d.ts +88 -0
  22. package/dist/benchmarks/improved-benchmark.d.ts.map +1 -0
  23. package/dist/benchmarks/improved-benchmark.js +533 -0
  24. package/dist/benchmarks/improved-benchmark.js.map +1 -0
  25. package/dist/benchmarks/index.d.ts +10 -0
  26. package/dist/benchmarks/index.d.ts.map +1 -0
  27. package/dist/benchmarks/index.js +10 -0
  28. package/dist/benchmarks/index.js.map +1 -0
  29. package/dist/benchmarks/multi-turn-agent.d.ts +44 -0
  30. package/dist/benchmarks/multi-turn-agent.d.ts.map +1 -0
  31. package/dist/benchmarks/multi-turn-agent.js +235 -0
  32. package/dist/benchmarks/multi-turn-agent.js.map +1 -0
  33. package/dist/benchmarks/runner.d.ts +2 -0
  34. package/dist/benchmarks/runner.d.ts.map +1 -0
  35. package/dist/benchmarks/runner.js +2 -0
  36. package/dist/benchmarks/runner.js.map +1 -0
  37. package/dist/benchmarks/tasks.d.ts +19 -0
  38. package/dist/benchmarks/tasks.d.ts.map +1 -0
  39. package/dist/benchmarks/tasks.js +371 -0
  40. package/dist/benchmarks/tasks.js.map +1 -0
  41. package/dist/index.d.ts +5 -0
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +4 -0
  44. package/dist/index.js.map +1 -1
  45. package/dist/memory/backends/qdrant-cloud.d.ts +1 -1
  46. package/dist/memory/backends/qdrant-cloud.d.ts.map +1 -1
  47. package/dist/memory/backends/qdrant-cloud.js +6 -4
  48. package/dist/memory/backends/qdrant-cloud.js.map +1 -1
  49. package/dist/memory/dynamic-retrieval.d.ts +26 -0
  50. package/dist/memory/dynamic-retrieval.d.ts.map +1 -0
  51. package/dist/memory/dynamic-retrieval.js +378 -0
  52. package/dist/memory/dynamic-retrieval.js.map +1 -0
  53. package/dist/memory/embeddings.d.ts +82 -0
  54. package/dist/memory/embeddings.d.ts.map +1 -0
  55. package/dist/memory/embeddings.js +297 -0
  56. package/dist/memory/embeddings.js.map +1 -0
  57. package/dist/memory/task-classifier.d.ts +33 -0
  58. package/dist/memory/task-classifier.d.ts.map +1 -0
  59. package/dist/memory/task-classifier.js +277 -0
  60. package/dist/memory/task-classifier.js.map +1 -0
  61. package/dist/utils/rate-limiter.d.ts +62 -0
  62. package/dist/utils/rate-limiter.d.ts.map +1 -0
  63. package/dist/utils/rate-limiter.js +150 -0
  64. package/dist/utils/rate-limiter.js.map +1 -0
  65. package/dist/utils/validate-json.d.ts +52 -0
  66. package/dist/utils/validate-json.d.ts.map +1 -0
  67. package/dist/utils/validate-json.js +99 -0
  68. package/dist/utils/validate-json.js.map +1 -0
  69. package/package.json +2 -1
@@ -0,0 +1,297 @@
1
+ /**
2
+ * Embedding Service for UAM Memory System
3
+ *
4
+ * Provides text embedding generation for semantic memory retrieval.
5
+ * Supports multiple backends: OpenAI, local transformers, or simple TF-IDF fallback.
6
+ */
7
+ import { execSync } from 'child_process';
8
+ /**
9
+ * OpenAI Embeddings Provider
10
+ * Uses text-embedding-3-small (1536 dimensions) or text-embedding-ada-002
11
+ */
12
+ export class OpenAIEmbeddingProvider {
13
+ name = 'openai';
14
+ dimensions = 1536;
15
+ apiKey;
16
+ model;
17
+ constructor(apiKey, model = 'text-embedding-3-small') {
18
+ this.apiKey = apiKey || process.env.OPENAI_API_KEY || '';
19
+ this.model = model;
20
+ }
21
+ async isAvailable() {
22
+ return !!this.apiKey;
23
+ }
24
+ async embed(text) {
25
+ const results = await this.embedBatch([text]);
26
+ return results[0];
27
+ }
28
+ async embedBatch(texts) {
29
+ if (!this.apiKey) {
30
+ throw new Error('OpenAI API key not configured');
31
+ }
32
+ const response = await fetch('https://api.openai.com/v1/embeddings', {
33
+ method: 'POST',
34
+ headers: {
35
+ 'Authorization': `Bearer ${this.apiKey}`,
36
+ 'Content-Type': 'application/json',
37
+ },
38
+ body: JSON.stringify({
39
+ model: this.model,
40
+ input: texts,
41
+ }),
42
+ });
43
+ if (!response.ok) {
44
+ throw new Error(`OpenAI API error: ${response.status} ${response.statusText}`);
45
+ }
46
+ const data = await response.json();
47
+ return data.data.map(d => d.embedding);
48
+ }
49
+ }
50
+ /**
51
+ * Local Sentence Transformers Provider
52
+ * Uses Python sentence-transformers library for local embedding generation
53
+ */
54
+ export class LocalEmbeddingProvider {
55
+ name = 'local';
56
+ dimensions = 384;
57
+ model;
58
+ pythonPath;
59
+ constructor(model = 'all-MiniLM-L6-v2', pythonPath = 'python3') {
60
+ this.model = model;
61
+ this.pythonPath = pythonPath;
62
+ }
63
+ async isAvailable() {
64
+ try {
65
+ execSync(`${this.pythonPath} -c "from sentence_transformers import SentenceTransformer"`, {
66
+ stdio: 'pipe',
67
+ timeout: 10000,
68
+ });
69
+ return true;
70
+ }
71
+ catch {
72
+ return false;
73
+ }
74
+ }
75
+ async embed(text) {
76
+ const results = await this.embedBatch([text]);
77
+ return results[0];
78
+ }
79
+ async embedBatch(texts) {
80
+ const escapedTexts = JSON.stringify(texts);
81
+ const script = `
82
+ import json
83
+ import sys
84
+ from sentence_transformers import SentenceTransformer
85
+
86
+ model = SentenceTransformer('${this.model}')
87
+ texts = json.loads('''${escapedTexts}''')
88
+ embeddings = model.encode(texts, convert_to_numpy=True)
89
+ print(json.dumps(embeddings.tolist()))
90
+ `;
91
+ try {
92
+ const result = execSync(`${this.pythonPath} -c "${script.replace(/"/g, '\\"')}"`, {
93
+ encoding: 'utf-8',
94
+ timeout: 60000,
95
+ maxBuffer: 50 * 1024 * 1024,
96
+ });
97
+ return JSON.parse(result.trim());
98
+ }
99
+ catch (error) {
100
+ throw new Error(`Local embedding generation failed: ${error}`);
101
+ }
102
+ }
103
+ }
104
+ /**
105
+ * TF-IDF Fallback Provider
106
+ * Simple keyword-based embeddings when no ML model is available
107
+ */
108
+ export class TFIDFEmbeddingProvider {
109
+ name = 'tfidf';
110
+ dimensions = 384;
111
+ vocabulary = new Map();
112
+ idfScores = new Map();
113
+ documents = [];
114
+ async isAvailable() {
115
+ return true; // Always available as fallback
116
+ }
117
+ async embed(text) {
118
+ const tokens = this.tokenize(text);
119
+ const vector = new Array(this.dimensions).fill(0);
120
+ for (const token of tokens) {
121
+ const idx = this.getTokenIndex(token);
122
+ const tf = tokens.filter(t => t === token).length / tokens.length;
123
+ const idf = this.idfScores.get(token) || Math.log(this.documents.length + 1);
124
+ vector[idx % this.dimensions] += tf * idf;
125
+ }
126
+ return this.normalize(vector);
127
+ }
128
+ async embedBatch(texts) {
129
+ // Update IDF scores with new documents
130
+ this.updateIDF(texts);
131
+ return Promise.all(texts.map(t => this.embed(t)));
132
+ }
133
+ addDocument(text) {
134
+ this.documents.push(text);
135
+ this.updateIDF([text]);
136
+ }
137
+ tokenize(text) {
138
+ return text.toLowerCase()
139
+ .replace(/[^\w\s]/g, ' ')
140
+ .split(/\s+/)
141
+ .filter(t => t.length > 2);
142
+ }
143
+ getTokenIndex(token) {
144
+ if (!this.vocabulary.has(token)) {
145
+ this.vocabulary.set(token, this.vocabulary.size);
146
+ }
147
+ return this.vocabulary.get(token);
148
+ }
149
+ updateIDF(_newDocs) {
150
+ const tokenDocs = new Map();
151
+ for (let i = 0; i < this.documents.length; i++) {
152
+ const tokens = new Set(this.tokenize(this.documents[i]));
153
+ for (const token of tokens) {
154
+ if (!tokenDocs.has(token)) {
155
+ tokenDocs.set(token, new Set());
156
+ }
157
+ tokenDocs.get(token).add(i);
158
+ }
159
+ }
160
+ for (const [token, docs] of tokenDocs) {
161
+ this.idfScores.set(token, Math.log(this.documents.length / (docs.size + 1)));
162
+ }
163
+ }
164
+ normalize(vector) {
165
+ const magnitude = Math.sqrt(vector.reduce((sum, v) => sum + v * v, 0));
166
+ if (magnitude === 0)
167
+ return vector;
168
+ return vector.map(v => v / magnitude);
169
+ }
170
+ }
171
+ /**
172
+ * Embedding Service - Main interface for UAM memory system
173
+ * Automatically selects best available provider
174
+ */
175
+ export class EmbeddingService {
176
+ provider = null;
177
+ providers;
178
+ cache = new Map();
179
+ cacheMaxSize = 10000;
180
+ constructor() {
181
+ this.providers = [
182
+ new OpenAIEmbeddingProvider(),
183
+ new LocalEmbeddingProvider(),
184
+ new TFIDFEmbeddingProvider(),
185
+ ];
186
+ }
187
+ async initialize() {
188
+ for (const provider of this.providers) {
189
+ if (await provider.isAvailable()) {
190
+ this.provider = provider;
191
+ console.log(`[EmbeddingService] Using provider: ${provider.name} (${provider.dimensions} dims)`);
192
+ return;
193
+ }
194
+ }
195
+ // Fallback to TF-IDF which is always available
196
+ this.provider = this.providers[this.providers.length - 1];
197
+ console.log(`[EmbeddingService] Fallback to TF-IDF provider`);
198
+ }
199
+ async embed(text) {
200
+ if (!this.provider) {
201
+ await this.initialize();
202
+ }
203
+ // Check cache
204
+ const cacheKey = this.getCacheKey(text);
205
+ if (this.cache.has(cacheKey)) {
206
+ return this.cache.get(cacheKey);
207
+ }
208
+ const embedding = await this.provider.embed(text);
209
+ // Update cache
210
+ if (this.cache.size >= this.cacheMaxSize) {
211
+ // Remove oldest entry
212
+ const firstKey = this.cache.keys().next().value;
213
+ if (firstKey !== undefined) {
214
+ this.cache.delete(firstKey);
215
+ }
216
+ }
217
+ this.cache.set(cacheKey, embedding);
218
+ return embedding;
219
+ }
220
+ async embedBatch(texts) {
221
+ if (!this.provider) {
222
+ await this.initialize();
223
+ }
224
+ const results = [];
225
+ const uncachedTexts = [];
226
+ const uncachedIndices = [];
227
+ // Check cache for each text
228
+ for (let i = 0; i < texts.length; i++) {
229
+ const cacheKey = this.getCacheKey(texts[i]);
230
+ if (this.cache.has(cacheKey)) {
231
+ results[i] = this.cache.get(cacheKey);
232
+ }
233
+ else {
234
+ uncachedTexts.push(texts[i]);
235
+ uncachedIndices.push(i);
236
+ }
237
+ }
238
+ // Generate embeddings for uncached texts
239
+ if (uncachedTexts.length > 0) {
240
+ const newEmbeddings = await this.provider.embedBatch(uncachedTexts);
241
+ for (let i = 0; i < uncachedTexts.length; i++) {
242
+ const idx = uncachedIndices[i];
243
+ results[idx] = newEmbeddings[i];
244
+ // Update cache
245
+ const cacheKey = this.getCacheKey(uncachedTexts[i]);
246
+ if (this.cache.size < this.cacheMaxSize) {
247
+ this.cache.set(cacheKey, newEmbeddings[i]);
248
+ }
249
+ }
250
+ }
251
+ return results;
252
+ }
253
+ cosineSimilarity(a, b) {
254
+ if (a.length !== b.length) {
255
+ throw new Error('Vectors must have same dimensions');
256
+ }
257
+ let dotProduct = 0;
258
+ let normA = 0;
259
+ let normB = 0;
260
+ for (let i = 0; i < a.length; i++) {
261
+ dotProduct += a[i] * b[i];
262
+ normA += a[i] * a[i];
263
+ normB += b[i] * b[i];
264
+ }
265
+ const denominator = Math.sqrt(normA) * Math.sqrt(normB);
266
+ if (denominator === 0)
267
+ return 0;
268
+ return dotProduct / denominator;
269
+ }
270
+ getDimensions() {
271
+ return this.provider?.dimensions || 384;
272
+ }
273
+ getProviderName() {
274
+ return this.provider?.name || 'uninitialized';
275
+ }
276
+ getCacheKey(text) {
277
+ // Simple hash for cache key
278
+ return text.slice(0, 500).toLowerCase().trim();
279
+ }
280
+ }
281
+ // Singleton instance
282
+ let embeddingServiceInstance = null;
283
+ export function getEmbeddingService() {
284
+ if (!embeddingServiceInstance) {
285
+ embeddingServiceInstance = new EmbeddingService();
286
+ }
287
+ return embeddingServiceInstance;
288
+ }
289
+ export async function generateEmbedding(text) {
290
+ const service = getEmbeddingService();
291
+ return service.embed(text);
292
+ }
293
+ export async function generateEmbeddings(texts) {
294
+ const service = getEmbeddingService();
295
+ return service.embedBatch(texts);
296
+ }
297
+ //# sourceMappingURL=embeddings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embeddings.js","sourceRoot":"","sources":["../../src/memory/embeddings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Task Classification System for UAM
3
+ *
4
+ * Classifies tasks into categories and routes to appropriate droids/memory.
5
+ * Based on Terminal-Bench 2.0 task categories and Droid's routing strategies.
6
+ */
7
+ export type TaskCategory = 'sysadmin' | 'security' | 'ml-training' | 'debugging' | 'coding' | 'file-ops' | 'testing' | 'unknown';
8
+ export interface TaskClassification {
9
+ category: TaskCategory;
10
+ confidence: number;
11
+ keywords: string[];
12
+ suggestedDroid: string;
13
+ memoryQueryHints: string[];
14
+ requiredCapabilities: string[];
15
+ }
16
+ /**
17
+ * Classify a task based on its instruction/prompt
18
+ */
19
+ export declare function classifyTask(instruction: string): TaskClassification;
20
+ /**
21
+ * Extract entities from task instruction for memory queries
22
+ */
23
+ export declare function extractTaskEntities(instruction: string): {
24
+ technologies: string[];
25
+ operations: string[];
26
+ files: string[];
27
+ concepts: string[];
28
+ };
29
+ /**
30
+ * Get suggested memory queries based on task classification
31
+ */
32
+ export declare function getSuggestedMemoryQueries(classification: TaskClassification): string[];
33
+ //# sourceMappingURL=task-classifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-classifier.d.ts","sourceRoot":"","sources":["../../src/memory/task-classifier.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,YAAY,GACpB,UAAU,GACV,UAAU,GACV,aAAa,GACb,WAAW,GACX,QAAQ,GACR,UAAU,GACV,SAAS,GACT,SAAS,CAAC;AAEd,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,YAAY,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,oBAAoB,EAAE,MAAM,EAAE,CAAC;CAChC;AAkHD;;GAEG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,kBAAkB,CAuDpE;AAuCD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG;IACxD,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CAoEA;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,cAAc,EAAE,kBAAkB,GAAG,MAAM,EAAE,CAoBtF"}
@@ -0,0 +1,277 @@
1
+ /**
2
+ * Task Classification System for UAM
3
+ *
4
+ * Classifies tasks into categories and routes to appropriate droids/memory.
5
+ * Based on Terminal-Bench 2.0 task categories and Droid's routing strategies.
6
+ */
7
+ const CATEGORY_PATTERNS = [
8
+ {
9
+ category: 'sysadmin',
10
+ patterns: [
11
+ /kernel|linux|qemu|kvm|virtualization/i,
12
+ /systemd|systemctl|journalctl|service/i,
13
+ /network|dns|firewall|iptables|nftables/i,
14
+ /cron|crontab|scheduling|daemon/i,
15
+ /mount|filesystem|partition|lvm|fdisk/i,
16
+ /docker|container|kubernetes|k8s/i,
17
+ /nginx|apache|web server|reverse proxy/i,
18
+ /ssh|scp|rsync|remote/i,
19
+ ],
20
+ keywords: ['kernel', 'qemu', 'systemd', 'network', 'dns', 'cron', 'docker', 'mount', 'ssh'],
21
+ droid: 'sysadmin-expert',
22
+ capabilities: ['shell', 'root', 'networking', 'services'],
23
+ },
24
+ {
25
+ category: 'security',
26
+ patterns: [
27
+ /cve-?\d{4}-?\d+/i,
28
+ /exploit|vulnerability|attack|injection/i,
29
+ /secret|password|credential|token|api.?key/i,
30
+ /hash|crack|bcrypt|sha|md5/i,
31
+ /ssl|tls|certificate|x509/i,
32
+ /encrypt|decrypt|cipher|aes/i,
33
+ /auth|oauth|jwt|session/i,
34
+ /sanitize|escape|xss|csrf|sqli/i,
35
+ ],
36
+ keywords: ['CVE', 'exploit', 'secret', 'hash', 'certificate', 'encrypt', 'authentication'],
37
+ droid: 'security-auditor',
38
+ capabilities: ['security', 'cryptography', 'vulnerability-analysis'],
39
+ },
40
+ {
41
+ category: 'ml-training',
42
+ patterns: [
43
+ /train|training|model|neural|deep learning/i,
44
+ /pytorch|tensorflow|keras|transformers/i,
45
+ /dataset|dataloader|batch|epoch/i,
46
+ /mteb|embedding|sentence.?transformer/i,
47
+ /classifier|classification|regression/i,
48
+ /reinforcement|rl|reward|agent|gym/i,
49
+ /gpu|cuda|nvidia|tensor/i,
50
+ /hugging.?face|tokenizer|bert|gpt/i,
51
+ ],
52
+ keywords: ['train', 'model', 'pytorch', 'dataset', 'embedding', 'classifier', 'GPU'],
53
+ droid: 'ml-training-expert',
54
+ capabilities: ['python', 'ml-frameworks', 'gpu', 'data-processing'],
55
+ },
56
+ {
57
+ category: 'debugging',
58
+ patterns: [
59
+ /debug|fix|broken|error|exception/i,
60
+ /conda|pip|dependency|conflict|version/i,
61
+ /git|merge|rebase|conflict|reflog/i,
62
+ /stack.?trace|traceback|crash/i,
63
+ /memory.?leak|segfault|core.?dump/i,
64
+ /log|logging|diagnose|troubleshoot/i,
65
+ ],
66
+ keywords: ['debug', 'fix', 'error', 'conda', 'pip', 'git', 'conflict', 'crash'],
67
+ droid: 'debug-expert',
68
+ capabilities: ['debugging', 'profiling', 'version-management'],
69
+ },
70
+ {
71
+ category: 'coding',
72
+ patterns: [
73
+ /implement|function|class|method|algorithm/i,
74
+ /refactor|optimize|improve|clean/i,
75
+ /api|endpoint|rest|graphql|server/i,
76
+ /typescript|javascript|python|rust|go/i,
77
+ /singleton|factory|strategy|pattern/i,
78
+ /async|await|promise|callback/i,
79
+ ],
80
+ keywords: ['implement', 'function', 'class', 'refactor', 'API', 'algorithm', 'pattern'],
81
+ droid: 'code-quality-guardian',
82
+ capabilities: ['coding', 'design-patterns', 'apis'],
83
+ },
84
+ {
85
+ category: 'file-ops',
86
+ patterns: [
87
+ /archive|zip|tar|extract|compress/i,
88
+ /download|fetch|curl|wget/i,
89
+ /convert|transform|parse|format/i,
90
+ /csv|json|xml|yaml|parquet/i,
91
+ /file|directory|path|copy|move/i,
92
+ ],
93
+ keywords: ['archive', 'download', 'convert', 'file', 'extract'],
94
+ droid: 'terminal-bench-optimizer',
95
+ capabilities: ['file-operations', 'data-formats'],
96
+ },
97
+ {
98
+ category: 'testing',
99
+ patterns: [
100
+ /test|spec|unit|integration|e2e/i,
101
+ /vitest|jest|pytest|mocha|cypress/i,
102
+ /coverage|assertion|mock|stub|spy/i,
103
+ /tdd|bdd|test.?driven/i,
104
+ ],
105
+ keywords: ['test', 'spec', 'coverage', 'mock', 'assertion'],
106
+ droid: 'code-quality-guardian',
107
+ capabilities: ['testing', 'test-frameworks', 'coverage'],
108
+ },
109
+ ];
110
+ /**
111
+ * Classify a task based on its instruction/prompt
112
+ */
113
+ export function classifyTask(instruction) {
114
+ const normalizedInstruction = instruction.toLowerCase();
115
+ const scores = new Map();
116
+ const matchedKeywords = new Map();
117
+ // Score each category based on pattern matches
118
+ for (const categoryPattern of CATEGORY_PATTERNS) {
119
+ let score = 0;
120
+ const keywords = [];
121
+ // Check regex patterns
122
+ for (const pattern of categoryPattern.patterns) {
123
+ if (pattern.test(instruction)) {
124
+ score += 2;
125
+ }
126
+ }
127
+ // Check keywords
128
+ for (const keyword of categoryPattern.keywords) {
129
+ if (normalizedInstruction.includes(keyword.toLowerCase())) {
130
+ score += 1;
131
+ keywords.push(keyword);
132
+ }
133
+ }
134
+ scores.set(categoryPattern.category, score);
135
+ matchedKeywords.set(categoryPattern.category, keywords);
136
+ }
137
+ // Find best match
138
+ let bestCategory = 'unknown';
139
+ let bestScore = 0;
140
+ for (const [category, score] of scores) {
141
+ if (score > bestScore) {
142
+ bestScore = score;
143
+ bestCategory = category;
144
+ }
145
+ }
146
+ // Calculate confidence (0-1)
147
+ const maxPossibleScore = 20; // Rough estimate
148
+ const confidence = Math.min(bestScore / maxPossibleScore, 1);
149
+ // Get pattern config for best category
150
+ const patternConfig = CATEGORY_PATTERNS.find(p => p.category === bestCategory);
151
+ return {
152
+ category: bestCategory,
153
+ confidence,
154
+ keywords: matchedKeywords.get(bestCategory) || [],
155
+ suggestedDroid: patternConfig?.droid || 'terminal-bench-optimizer',
156
+ memoryQueryHints: generateMemoryQueryHints(bestCategory, matchedKeywords.get(bestCategory) || []),
157
+ requiredCapabilities: patternConfig?.capabilities || [],
158
+ };
159
+ }
160
+ /**
161
+ * Generate memory query hints based on task classification
162
+ */
163
+ function generateMemoryQueryHints(category, keywords) {
164
+ const hints = [];
165
+ // Add category-specific hints
166
+ switch (category) {
167
+ case 'sysadmin':
168
+ hints.push('linux administration', 'system configuration', 'service management');
169
+ break;
170
+ case 'security':
171
+ hints.push('security vulnerability', 'secret management', 'authentication');
172
+ break;
173
+ case 'ml-training':
174
+ hints.push('model training', 'dataset processing', 'machine learning');
175
+ break;
176
+ case 'debugging':
177
+ hints.push('error fixing', 'dependency resolution', 'debugging techniques');
178
+ break;
179
+ case 'coding':
180
+ hints.push('code implementation', 'design patterns', 'best practices');
181
+ break;
182
+ case 'file-ops':
183
+ hints.push('file operations', 'data conversion', 'archive handling');
184
+ break;
185
+ case 'testing':
186
+ hints.push('unit testing', 'test coverage', 'test patterns');
187
+ break;
188
+ }
189
+ // Add keyword-based hints
190
+ hints.push(...keywords.slice(0, 3));
191
+ return hints;
192
+ }
193
+ /**
194
+ * Extract entities from task instruction for memory queries
195
+ */
196
+ export function extractTaskEntities(instruction) {
197
+ const technologies = [];
198
+ const operations = [];
199
+ const files = [];
200
+ const concepts = [];
201
+ // Technology patterns
202
+ const techPatterns = [
203
+ /python|typescript|javascript|rust|go|java|c\+\+/gi,
204
+ /pytorch|tensorflow|keras|transformers/gi,
205
+ /docker|kubernetes|nginx|apache/gi,
206
+ /postgres|mysql|mongodb|redis/gi,
207
+ /react|vue|angular|next\.js/gi,
208
+ /git|npm|pip|conda|cargo/gi,
209
+ ];
210
+ for (const pattern of techPatterns) {
211
+ const matches = instruction.match(pattern);
212
+ if (matches) {
213
+ technologies.push(...matches.map(m => m.toLowerCase()));
214
+ }
215
+ }
216
+ // Operation patterns
217
+ const opPatterns = [
218
+ /\b(create|build|implement|configure|setup|install)\b/gi,
219
+ /\b(fix|debug|repair|resolve|troubleshoot)\b/gi,
220
+ /\b(test|verify|validate|check|ensure)\b/gi,
221
+ /\b(deploy|publish|release|ship)\b/gi,
222
+ /\b(refactor|optimize|improve|clean)\b/gi,
223
+ ];
224
+ for (const pattern of opPatterns) {
225
+ const matches = instruction.match(pattern);
226
+ if (matches) {
227
+ operations.push(...matches.map(m => m.toLowerCase()));
228
+ }
229
+ }
230
+ // File path patterns
231
+ const filePattern = /(?:\/[\w.-]+)+(?:\.\w+)?|[\w.-]+\.(ts|js|py|json|yaml|yml|md|txt|sh)/gi;
232
+ const fileMatches = instruction.match(filePattern);
233
+ if (fileMatches) {
234
+ files.push(...fileMatches);
235
+ }
236
+ // Concept patterns
237
+ const conceptPatterns = [
238
+ /\b(authentication|authorization|security)\b/gi,
239
+ /\b(caching|performance|optimization)\b/gi,
240
+ /\b(api|endpoint|service|microservice)\b/gi,
241
+ /\b(database|storage|persistence)\b/gi,
242
+ /\b(testing|coverage|quality)\b/gi,
243
+ ];
244
+ for (const pattern of conceptPatterns) {
245
+ const matches = instruction.match(pattern);
246
+ if (matches) {
247
+ concepts.push(...matches.map(m => m.toLowerCase()));
248
+ }
249
+ }
250
+ return {
251
+ technologies: [...new Set(technologies)],
252
+ operations: [...new Set(operations)],
253
+ files: [...new Set(files)],
254
+ concepts: [...new Set(concepts)],
255
+ };
256
+ }
257
+ /**
258
+ * Get suggested memory queries based on task classification
259
+ */
260
+ export function getSuggestedMemoryQueries(classification) {
261
+ const queries = [];
262
+ // Category-based queries
263
+ queries.push(`${classification.category} best practices`);
264
+ queries.push(`${classification.category} common mistakes`);
265
+ queries.push(`${classification.category} patterns`);
266
+ // Keyword-based queries
267
+ for (const keyword of classification.keywords.slice(0, 3)) {
268
+ queries.push(`${keyword} implementation`);
269
+ queries.push(`${keyword} gotchas`);
270
+ }
271
+ // Capability-based queries
272
+ for (const capability of classification.requiredCapabilities.slice(0, 2)) {
273
+ queries.push(`${capability} tips`);
274
+ }
275
+ return queries;
276
+ }
277
+ //# sourceMappingURL=task-classifier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-classifier.js","sourceRoot":"","sources":["../../src/memory/task-classifier.ts"],"names":[],"mappings":"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"}