universal-agent-memory 1.0.24 → 1.1.0
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/cli/generate.js +119 -14
- package/dist/cli/generate.js.map +1 -1
- package/dist/generators/claude-md.js +19 -4
- package/dist/generators/claude-md.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/memory/adaptive-context.d.ts +4 -1
- package/dist/memory/adaptive-context.d.ts.map +1 -1
- package/dist/memory/adaptive-context.js +103 -47
- package/dist/memory/adaptive-context.js.map +1 -1
- package/dist/memory/context-compressor.d.ts +3 -1
- package/dist/memory/context-compressor.d.ts.map +1 -1
- package/dist/memory/context-compressor.js +22 -13
- package/dist/memory/context-compressor.js.map +1 -1
- package/dist/memory/dynamic-retrieval.d.ts +3 -0
- package/dist/memory/dynamic-retrieval.d.ts.map +1 -1
- package/dist/memory/dynamic-retrieval.js +95 -47
- package/dist/memory/dynamic-retrieval.js.map +1 -1
- package/dist/memory/hierarchical-memory.d.ts +15 -2
- package/dist/memory/hierarchical-memory.d.ts.map +1 -1
- package/dist/memory/hierarchical-memory.js +118 -8
- package/dist/memory/hierarchical-memory.js.map +1 -1
- package/dist/memory/model-router.d.ts +85 -0
- package/dist/memory/model-router.d.ts.map +1 -0
- package/dist/memory/model-router.js +237 -0
- package/dist/memory/model-router.js.map +1 -0
- package/dist/memory/semantic-compression.d.ts.map +1 -1
- package/dist/memory/semantic-compression.js +2 -10
- package/dist/memory/semantic-compression.js.map +1 -1
- package/dist/memory/short-term/schema.d.ts.map +1 -1
- package/dist/memory/short-term/schema.js +36 -0
- package/dist/memory/short-term/schema.js.map +1 -1
- package/dist/memory/short-term/sqlite.d.ts +2 -0
- package/dist/memory/short-term/sqlite.d.ts.map +1 -1
- package/dist/memory/short-term/sqlite.js +77 -1
- package/dist/memory/short-term/sqlite.js.map +1 -1
- package/dist/memory/terminal-bench-knowledge.d.ts +34 -0
- package/dist/memory/terminal-bench-knowledge.d.ts.map +1 -0
- package/dist/memory/terminal-bench-knowledge.js +204 -0
- package/dist/memory/terminal-bench-knowledge.js.map +1 -0
- package/dist/utils/string-similarity.d.ts +37 -0
- package/dist/utils/string-similarity.d.ts.map +1 -0
- package/dist/utils/string-similarity.js +114 -0
- package/dist/utils/string-similarity.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,34 @@
|
|
|
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
|
+
* Uses fuzzy/stemming matching for better recall
|
|
22
|
+
*/
|
|
23
|
+
export declare function getRelevantKnowledge(taskInstruction: string, category?: string): DomainKnowledge[];
|
|
24
|
+
/**
|
|
25
|
+
* Format knowledge for context injection
|
|
26
|
+
*/
|
|
27
|
+
export declare function formatKnowledgeForContext(knowledge: DomainKnowledge[]): string;
|
|
28
|
+
declare const _default: {
|
|
29
|
+
TERMINAL_BENCH_KNOWLEDGE: DomainKnowledge[];
|
|
30
|
+
getRelevantKnowledge: typeof getRelevantKnowledge;
|
|
31
|
+
formatKnowledgeForContext: typeof formatKnowledgeForContext;
|
|
32
|
+
};
|
|
33
|
+
export default _default;
|
|
34
|
+
//# 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;AAIH,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;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,eAAe,EAAE,MAAM,EACvB,QAAQ,CAAC,EAAE,MAAM,GAChB,eAAe,EAAE,CA6BnB;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,eAAe,EAAE,GAAG,MAAM,CAU9E;;;;;;AAED,wBAIE"}
|
|
@@ -0,0 +1,204 @@
|
|
|
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
|
+
import { fuzzyKeywordMatch } from '../utils/string-similarity.js';
|
|
12
|
+
export const TERMINAL_BENCH_KNOWLEDGE = [
|
|
13
|
+
// Security - Password Cracking (proven +1 task improvement)
|
|
14
|
+
{
|
|
15
|
+
category: 'security',
|
|
16
|
+
type: 'tool',
|
|
17
|
+
content: 'hashcat GPU password cracking: -m 11600 for 7z archives, -m 0 for MD5, -m 1000 for NTLM, -m 1800 for sha512crypt. Use -a 0 for wordlist, -a 3 for brute force.',
|
|
18
|
+
keywords: ['password', 'crack', 'hash', 'hashcat', '7z'],
|
|
19
|
+
importance: 9,
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
category: 'security',
|
|
23
|
+
type: 'tool',
|
|
24
|
+
content: 'john the ripper for CPU cracking: john --wordlist=rockyou.txt hash.txt. Use --format=7z for 7z files, --format=raw-md5 for MD5.',
|
|
25
|
+
keywords: ['password', 'crack', 'john', 'wordlist'],
|
|
26
|
+
importance: 8,
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
category: 'security',
|
|
30
|
+
type: 'pattern',
|
|
31
|
+
content: '7z password extraction: First run 7z2john archive.7z > hash.txt to extract hash, then crack with hashcat or john.',
|
|
32
|
+
keywords: ['7z', 'password', 'extract', '7z2john'],
|
|
33
|
+
importance: 9,
|
|
34
|
+
},
|
|
35
|
+
// Security - XSS Filtering (high-potential task)
|
|
36
|
+
{
|
|
37
|
+
category: 'security',
|
|
38
|
+
type: 'pattern',
|
|
39
|
+
content: 'XSS filter must block: <script>, onclick=, onerror=, onload=, javascript:, data:text/html, expression(), and encoded variants (<script>, \\x3c, %3C).',
|
|
40
|
+
keywords: ['xss', 'filter', 'sanitize', 'script', 'injection'],
|
|
41
|
+
importance: 9,
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
category: 'security',
|
|
45
|
+
type: 'tool',
|
|
46
|
+
content: 'Use bleach.clean() in Python or DOMPurify in JS for XSS sanitization. Config: strip=True, tags=[], attributes={}.',
|
|
47
|
+
keywords: ['xss', 'bleach', 'dompurify', 'sanitize'],
|
|
48
|
+
importance: 8,
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
category: 'security',
|
|
52
|
+
type: 'gotcha',
|
|
53
|
+
content: 'XSS filter bypass vectors: Case variation (<ScRiPt>), null bytes (\\x00), nested tags (<scr<script>ipt>), event handlers without script tag.',
|
|
54
|
+
keywords: ['xss', 'bypass', 'filter', 'security'],
|
|
55
|
+
importance: 8,
|
|
56
|
+
},
|
|
57
|
+
// File Formats - ELF (proven +1 task improvement)
|
|
58
|
+
{
|
|
59
|
+
category: 'file-ops',
|
|
60
|
+
type: 'format',
|
|
61
|
+
content: 'ELF parsing: Magic \\x7fELF at offset 0. e_phoff at offset 0x20 (32-bit) or 0x20 (64-bit). Program headers follow at e_phoff. Use struct.unpack("<I", data[0x20:0x24]) for little-endian.',
|
|
62
|
+
keywords: ['elf', 'binary', 'parse', 'extract', 'struct'],
|
|
63
|
+
importance: 9,
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
category: 'file-ops',
|
|
67
|
+
type: 'tool',
|
|
68
|
+
content: 'ELF analysis tools: readelf -l for program headers, readelf -S for sections, objdump -d for disassembly, strings for printable text.',
|
|
69
|
+
keywords: ['elf', 'readelf', 'objdump', 'binary'],
|
|
70
|
+
importance: 8,
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
category: 'file-ops',
|
|
74
|
+
type: 'pattern',
|
|
75
|
+
content: 'ELF data extraction: For LOAD segments, read p_filesz bytes from file offset p_offset. Virtual address is p_vaddr.',
|
|
76
|
+
keywords: ['elf', 'segment', 'load', 'extract'],
|
|
77
|
+
importance: 8,
|
|
78
|
+
},
|
|
79
|
+
// File Formats - SQLite WAL (medium-potential task)
|
|
80
|
+
{
|
|
81
|
+
category: 'file-ops',
|
|
82
|
+
type: 'format',
|
|
83
|
+
content: 'SQLite WAL recovery: WAL file has 32-byte header, then frames. Each frame = 24-byte header + page data. Use PRAGMA wal_checkpoint to commit.',
|
|
84
|
+
keywords: ['sqlite', 'wal', 'recovery', 'database'],
|
|
85
|
+
importance: 8,
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
category: 'file-ops',
|
|
89
|
+
type: 'pattern',
|
|
90
|
+
content: 'SQLite truncated DB: Copy -wal and -shm files if present. Try sqlite3 db.sqlite ".recover" > dump.sql for recovery.',
|
|
91
|
+
keywords: ['sqlite', 'truncate', 'recover', 'dump'],
|
|
92
|
+
importance: 7,
|
|
93
|
+
},
|
|
94
|
+
// Coding - Regex Chess (medium-potential task)
|
|
95
|
+
{
|
|
96
|
+
category: 'coding',
|
|
97
|
+
type: 'pattern',
|
|
98
|
+
content: 'PGN chess notation regex: Move = /([KQRBN])?([a-h])?([1-8])?(x)?([a-h][1-8])(=[QRBN])?([+#])?/. Castling: O-O or O-O-O.',
|
|
99
|
+
keywords: ['chess', 'pgn', 'regex', 'notation'],
|
|
100
|
+
importance: 7,
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
category: 'coding',
|
|
104
|
+
type: 'gotcha',
|
|
105
|
+
content: 'PGN edge cases: Comments in {}, variations in (), move numbers like "1." or "1...", result like "1-0", "0-1", "1/2-1/2".',
|
|
106
|
+
keywords: ['chess', 'pgn', 'parse', 'edge'],
|
|
107
|
+
importance: 6,
|
|
108
|
+
},
|
|
109
|
+
// Legacy Code
|
|
110
|
+
{
|
|
111
|
+
category: 'coding',
|
|
112
|
+
type: 'pattern',
|
|
113
|
+
content: 'COBOL to Python: WORKING-STORAGE maps to class variables. PERFORM maps to function calls. MOVE maps to assignment. 88-level maps to enums.',
|
|
114
|
+
keywords: ['cobol', 'modernize', 'python', 'legacy'],
|
|
115
|
+
importance: 7,
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
category: 'coding',
|
|
119
|
+
type: 'gotcha',
|
|
120
|
+
content: 'COBOL gotchas: Fixed column format (7-72 are code). PICTURE clause defines type/format. COMP-3 is packed decimal. Indexes start at 1.',
|
|
121
|
+
keywords: ['cobol', 'picture', 'format', 'legacy'],
|
|
122
|
+
importance: 6,
|
|
123
|
+
},
|
|
124
|
+
// Sysadmin
|
|
125
|
+
{
|
|
126
|
+
category: 'sysadmin',
|
|
127
|
+
type: 'tool',
|
|
128
|
+
content: 'Kernel compilation: make defconfig, then make -j$(nproc). Install with make modules_install && make install. GRUB: grub-mkconfig -o /boot/grub/grub.cfg.',
|
|
129
|
+
keywords: ['kernel', 'compile', 'make', 'grub'],
|
|
130
|
+
importance: 7,
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
category: 'sysadmin',
|
|
134
|
+
type: 'pattern',
|
|
135
|
+
content: 'QEMU VM: qemu-system-x86_64 -enable-kvm -m 4G -smp 4 -hda disk.img -cdrom iso.iso. Network: -nic user,hostfwd=tcp::2222-:22.',
|
|
136
|
+
keywords: ['qemu', 'vm', 'kvm', 'virtual'],
|
|
137
|
+
importance: 7,
|
|
138
|
+
},
|
|
139
|
+
// Debugging
|
|
140
|
+
{
|
|
141
|
+
category: 'debugging',
|
|
142
|
+
type: 'pattern',
|
|
143
|
+
content: 'Python dependency conflicts: pip check shows issues. Create fresh venv: python -m venv .venv && source .venv/bin/activate.',
|
|
144
|
+
keywords: ['pip', 'dependency', 'conflict', 'venv'],
|
|
145
|
+
importance: 8,
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
category: 'debugging',
|
|
149
|
+
type: 'tool',
|
|
150
|
+
content: 'Git recovery: git reflog shows all history. Recover commit: git cherry-pick <hash>. Recover branch: git branch recovered <hash>.',
|
|
151
|
+
keywords: ['git', 'reflog', 'recover', 'lost'],
|
|
152
|
+
importance: 8,
|
|
153
|
+
},
|
|
154
|
+
];
|
|
155
|
+
/**
|
|
156
|
+
* Get domain knowledge relevant to a task
|
|
157
|
+
* Uses fuzzy/stemming matching for better recall
|
|
158
|
+
*/
|
|
159
|
+
export function getRelevantKnowledge(taskInstruction, category) {
|
|
160
|
+
const relevant = [];
|
|
161
|
+
for (const knowledge of TERMINAL_BENCH_KNOWLEDGE) {
|
|
162
|
+
// Category filter
|
|
163
|
+
if (category && knowledge.category !== category)
|
|
164
|
+
continue;
|
|
165
|
+
// Score by keyword matches using fuzzy matching
|
|
166
|
+
let score = 0;
|
|
167
|
+
for (const keyword of knowledge.keywords) {
|
|
168
|
+
// Exact match gets full point
|
|
169
|
+
if (taskInstruction.toLowerCase().includes(keyword.toLowerCase())) {
|
|
170
|
+
score += 1;
|
|
171
|
+
}
|
|
172
|
+
// Fuzzy/stemmed match gets partial point
|
|
173
|
+
else if (fuzzyKeywordMatch(taskInstruction, keyword)) {
|
|
174
|
+
score += 0.5;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
if (score > 0) {
|
|
178
|
+
relevant.push({ ...knowledge, score });
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
// Sort by score * importance
|
|
182
|
+
return relevant
|
|
183
|
+
.sort((a, b) => (b.score * b.importance) - (a.score * a.importance))
|
|
184
|
+
.slice(0, 5);
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Format knowledge for context injection
|
|
188
|
+
*/
|
|
189
|
+
export function formatKnowledgeForContext(knowledge) {
|
|
190
|
+
if (knowledge.length === 0)
|
|
191
|
+
return '';
|
|
192
|
+
const lines = ['## Domain Knowledge'];
|
|
193
|
+
for (const k of knowledge) {
|
|
194
|
+
const prefix = k.type === 'gotcha' ? '⚠️' : k.type === 'tool' ? '🔧' : '📝';
|
|
195
|
+
lines.push(`${prefix} ${k.content}`);
|
|
196
|
+
}
|
|
197
|
+
return lines.join('\n');
|
|
198
|
+
}
|
|
199
|
+
export default {
|
|
200
|
+
TERMINAL_BENCH_KNOWLEDGE,
|
|
201
|
+
getRelevantKnowledge,
|
|
202
|
+
formatKnowledgeForContext,
|
|
203
|
+
};
|
|
204
|
+
//# sourceMappingURL=terminal-bench-knowledge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal-bench-knowledge.js","sourceRoot":"","sources":["../../src/memory/terminal-bench-knowledge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* String Similarity Utilities for UAM
|
|
3
|
+
*
|
|
4
|
+
* Shared text comparison functions used across memory compression,
|
|
5
|
+
* deduplication, and retrieval systems.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Calculate Jaccard similarity between two strings (word-level)
|
|
9
|
+
* Returns a value between 0 (no overlap) and 1 (identical)
|
|
10
|
+
*/
|
|
11
|
+
export declare function jaccardSimilarity(a: string, b: string): number;
|
|
12
|
+
/**
|
|
13
|
+
* Calculate content hash for deduplication
|
|
14
|
+
* Uses SHA-256 for reliable collision resistance
|
|
15
|
+
*/
|
|
16
|
+
export declare function contentHash(text: string): string;
|
|
17
|
+
/**
|
|
18
|
+
* Improved token estimation
|
|
19
|
+
* More accurate than simple length/4 for mixed code and prose
|
|
20
|
+
*/
|
|
21
|
+
export declare function estimateTokensAccurate(text: string): number;
|
|
22
|
+
/**
|
|
23
|
+
* Simple stemming for keyword matching
|
|
24
|
+
* Handles common English suffixes for better fuzzy matching
|
|
25
|
+
*/
|
|
26
|
+
export declare function simpleStem(word: string): string;
|
|
27
|
+
/**
|
|
28
|
+
* Fuzzy keyword match using stemming
|
|
29
|
+
* Returns true if any stemmed form matches
|
|
30
|
+
*/
|
|
31
|
+
export declare function fuzzyKeywordMatch(text: string, keyword: string): boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Calculate text similarity using multiple methods
|
|
34
|
+
* Returns weighted average for more robust comparison
|
|
35
|
+
*/
|
|
36
|
+
export declare function textSimilarity(a: string, b: string): number;
|
|
37
|
+
//# sourceMappingURL=string-similarity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"string-similarity.d.ts","sourceRoot":"","sources":["../../src/utils/string-similarity.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAW9D;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKhD;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAuB3D;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAkB/C;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAkBxE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAa3D"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* String Similarity Utilities for UAM
|
|
3
|
+
*
|
|
4
|
+
* Shared text comparison functions used across memory compression,
|
|
5
|
+
* deduplication, and retrieval systems.
|
|
6
|
+
*/
|
|
7
|
+
import { createHash } from 'crypto';
|
|
8
|
+
/**
|
|
9
|
+
* Calculate Jaccard similarity between two strings (word-level)
|
|
10
|
+
* Returns a value between 0 (no overlap) and 1 (identical)
|
|
11
|
+
*/
|
|
12
|
+
export function jaccardSimilarity(a, b) {
|
|
13
|
+
const setA = new Set(a.toLowerCase().split(/\s+/).filter(w => w.length > 1));
|
|
14
|
+
const setB = new Set(b.toLowerCase().split(/\s+/).filter(w => w.length > 1));
|
|
15
|
+
if (setA.size === 0 && setB.size === 0)
|
|
16
|
+
return 1;
|
|
17
|
+
if (setA.size === 0 || setB.size === 0)
|
|
18
|
+
return 0;
|
|
19
|
+
const intersection = new Set([...setA].filter(x => setB.has(x)));
|
|
20
|
+
const union = new Set([...setA, ...setB]);
|
|
21
|
+
return intersection.size / union.size;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Calculate content hash for deduplication
|
|
25
|
+
* Uses SHA-256 for reliable collision resistance
|
|
26
|
+
*/
|
|
27
|
+
export function contentHash(text) {
|
|
28
|
+
return createHash('sha256')
|
|
29
|
+
.update(text.toLowerCase().replace(/\s+/g, ' ').trim())
|
|
30
|
+
.digest('hex')
|
|
31
|
+
.slice(0, 16); // 16 hex chars = 64 bits, sufficient for dedup
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Improved token estimation
|
|
35
|
+
* More accurate than simple length/4 for mixed code and prose
|
|
36
|
+
*/
|
|
37
|
+
export function estimateTokensAccurate(text) {
|
|
38
|
+
if (!text || text.length === 0)
|
|
39
|
+
return 0;
|
|
40
|
+
// Split by whitespace and count
|
|
41
|
+
const words = text.split(/\s+/).filter(w => w.length > 0);
|
|
42
|
+
// Count special characters that typically become separate tokens
|
|
43
|
+
const specialChars = (text.match(/[{}()\[\]<>:;,."'`@#$%^&*+=|\\/?!~-]/g) || []).length;
|
|
44
|
+
// Code tokens: variable names split on camelCase/snake_case
|
|
45
|
+
const codeTokens = (text.match(/[a-z][A-Z]|_[a-z]/g) || []).length;
|
|
46
|
+
// Numbers often tokenize separately
|
|
47
|
+
const numbers = (text.match(/\d+/g) || []).length;
|
|
48
|
+
// Base: words + adjustments
|
|
49
|
+
// Average English word is ~1.3 tokens, code identifiers ~1.5
|
|
50
|
+
const baseTokens = words.length * 1.3;
|
|
51
|
+
const specialTokens = specialChars * 0.5;
|
|
52
|
+
const extraCodeTokens = codeTokens * 0.3;
|
|
53
|
+
const numberTokens = numbers * 0.5;
|
|
54
|
+
return Math.ceil(baseTokens + specialTokens + extraCodeTokens + numberTokens);
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Simple stemming for keyword matching
|
|
58
|
+
* Handles common English suffixes for better fuzzy matching
|
|
59
|
+
*/
|
|
60
|
+
export function simpleStem(word) {
|
|
61
|
+
const lower = word.toLowerCase();
|
|
62
|
+
// Common suffixes to strip
|
|
63
|
+
const suffixes = ['ing', 'ed', 'es', 's', 'er', 'est', 'ly', 'tion', 'ment', 'ness', 'able', 'ible'];
|
|
64
|
+
for (const suffix of suffixes) {
|
|
65
|
+
if (lower.endsWith(suffix) && lower.length > suffix.length + 2) {
|
|
66
|
+
const stem = lower.slice(0, -suffix.length);
|
|
67
|
+
// Handle doubling (e.g., "running" -> "run")
|
|
68
|
+
if (stem.length > 2 && stem[stem.length - 1] === stem[stem.length - 2]) {
|
|
69
|
+
return stem.slice(0, -1);
|
|
70
|
+
}
|
|
71
|
+
return stem;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return lower;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Fuzzy keyword match using stemming
|
|
78
|
+
* Returns true if any stemmed form matches
|
|
79
|
+
*/
|
|
80
|
+
export function fuzzyKeywordMatch(text, keyword) {
|
|
81
|
+
const textLower = text.toLowerCase();
|
|
82
|
+
const keywordLower = keyword.toLowerCase();
|
|
83
|
+
// Exact match first
|
|
84
|
+
if (textLower.includes(keywordLower))
|
|
85
|
+
return true;
|
|
86
|
+
// Stemmed match
|
|
87
|
+
const keywordStem = simpleStem(keywordLower);
|
|
88
|
+
const textWords = textLower.split(/\s+/);
|
|
89
|
+
for (const word of textWords) {
|
|
90
|
+
if (simpleStem(word) === keywordStem)
|
|
91
|
+
return true;
|
|
92
|
+
// Also check if the stem is contained in the word (for compound words)
|
|
93
|
+
if (word.includes(keywordStem) && keywordStem.length >= 3)
|
|
94
|
+
return true;
|
|
95
|
+
}
|
|
96
|
+
return false;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Calculate text similarity using multiple methods
|
|
100
|
+
* Returns weighted average for more robust comparison
|
|
101
|
+
*/
|
|
102
|
+
export function textSimilarity(a, b) {
|
|
103
|
+
// Jaccard on words
|
|
104
|
+
const jaccard = jaccardSimilarity(a, b);
|
|
105
|
+
// Character-level containment
|
|
106
|
+
const aLower = a.toLowerCase();
|
|
107
|
+
const bLower = b.toLowerCase();
|
|
108
|
+
const shorter = aLower.length < bLower.length ? aLower : bLower;
|
|
109
|
+
const longer = aLower.length >= bLower.length ? aLower : bLower;
|
|
110
|
+
const containment = shorter.length > 0 && longer.includes(shorter) ? 0.8 : 0;
|
|
111
|
+
// Weighted combination
|
|
112
|
+
return Math.max(jaccard, containment);
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=string-similarity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"string-similarity.js","sourceRoot":"","sources":["../../src/utils/string-similarity.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "universal-agent-memory",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "Universal AI agent memory system - CLAUDE.md templates, memory, worktrees for Claude Code, Factory.AI, VSCode, OpenCode",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|