@devflow-tools/memory-engine 0.16.17 → 0.16.19
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/explicit-memory-enricher.d.ts +9 -0
- package/dist/explicit-memory-enricher.d.ts.map +1 -1
- package/dist/explicit-memory-enricher.js +25 -5
- package/dist/explicit-memory-enricher.js.map +1 -1
- package/dist/hybrid-search.d.ts.map +1 -1
- package/dist/hybrid-search.js +20 -1
- package/dist/hybrid-search.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/memory-engine.d.ts.map +1 -1
- package/dist/memory-engine.js +6 -0
- package/dist/memory-engine.js.map +1 -1
- package/dist/memory-gate.d.ts.map +1 -1
- package/dist/memory-gate.js +54 -31
- package/dist/memory-gate.js.map +1 -1
- package/dist/memory-relevance.js +2 -2
- package/dist/memory-store.d.ts +40 -0
- package/dist/memory-store.d.ts.map +1 -1
- package/dist/memory-store.js +329 -9
- package/dist/memory-store.js.map +1 -1
- package/dist/migrations/v9-to-v10.d.ts +3 -0
- package/dist/migrations/v9-to-v10.d.ts.map +1 -0
- package/dist/migrations/v9-to-v10.js +45 -0
- package/dist/migrations/v9-to-v10.js.map +1 -0
- package/dist/migrations/v9-to-v10.test.d.ts +2 -0
- package/dist/migrations/v9-to-v10.test.d.ts.map +1 -0
- package/dist/migrations/v9-to-v10.test.js +40 -0
- package/dist/migrations/v9-to-v10.test.js.map +1 -0
- package/dist/semantic-memory.d.ts +38 -0
- package/dist/semantic-memory.d.ts.map +1 -0
- package/dist/semantic-memory.js +205 -0
- package/dist/semantic-memory.js.map +1 -0
- package/dist/semantic-memory.test.d.ts +2 -0
- package/dist/semantic-memory.test.d.ts.map +1 -0
- package/dist/semantic-memory.test.js +39 -0
- package/dist/semantic-memory.test.js.map +1 -0
- package/dist/session-summarizer.d.ts +2 -1
- package/dist/session-summarizer.d.ts.map +1 -1
- package/dist/session-summarizer.js.map +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
const MAX_FIELD_LENGTH = 160;
|
|
3
|
+
const MAX_GENERIC_TARGET_LENGTH = 120;
|
|
4
|
+
const MAX_ENTITY_LENGTH = 120;
|
|
5
|
+
const PACKAGE_MANAGERS = new Set(['npm', 'pnpm', 'yarn', 'bun']);
|
|
6
|
+
const TEST_RUNNERS = new Set(['vitest', 'jest', 'mocha']);
|
|
7
|
+
const BUILD_TOOLS = new Set(['vite', 'webpack', 'rspack', 'rsbuild', 'esbuild', 'rollup']);
|
|
8
|
+
const GENERIC_IDENTIFIERS = new Set([
|
|
9
|
+
'always', 'never', 'project', 'repository', 'codebase', 'dependency', 'dependencies',
|
|
10
|
+
'install', 'update', 'using', 'default', 'config', 'configuration', 'memory', 'remember',
|
|
11
|
+
]);
|
|
12
|
+
const NEGATIVE_INTENT = /(?:\b(?:do\s+not|don't|dont|never|avoid)\b|(?:不要再|不要|不再|避免|不使用|禁用))/iu;
|
|
13
|
+
const REQUIRE_INTENT = /(?:\b(?:must|required?|need(?:s|ed)?\s+to)\b|必须|需要)/iu;
|
|
14
|
+
const PREFERENCE_INTENT = /(?:\bprefer\b|偏好|更喜欢|优先)/iu;
|
|
15
|
+
const VERSION_INTENT = /(?:\bversion\b|\bv\s*\d|版本|\b(?:react|vue|angular|node(?:\.js)?|typescript)\s*\d)/iu;
|
|
16
|
+
const USE_INTENT = /(?:\b(?:use|using|adopt|choose|standardize\s+on)\b|使用|采用|选择)/iu;
|
|
17
|
+
const DEPENDENCY_CONTEXT = /(?:\b(?:dependency|dependencies|package|packages)\b|依赖|安装|更新)/iu;
|
|
18
|
+
const API_CONTEXT = /(?:\bapi\b|data\s*fetch|request|接口|请求|数据获取)/iu;
|
|
19
|
+
const ANIMATION_CONTEXT = /(?:\banimation\b|动画)/iu;
|
|
20
|
+
const STYLE_CONTEXT = /(?:\b(?:style|styling|css)\b|样式)/iu;
|
|
21
|
+
export function normalizeSemanticMemory(input) {
|
|
22
|
+
const sourceText = [input.title, input.narrative].filter(Boolean).join('\n');
|
|
23
|
+
const entities = mergeSemanticEntities(input.entities ?? [], extractTechnicalEntities(sourceText));
|
|
24
|
+
const inferred = inferSemanticFacet(input.narrative || input.title, entities);
|
|
25
|
+
const subject = normalizeField(input.subject) || inferred.subject || primaryEntity(entities) || normalizeField(input.title);
|
|
26
|
+
const predicate = normalizePredicate(input.predicate) || inferred.predicate || 'state';
|
|
27
|
+
const value = normalizeField(input.value) || inferred.value || primaryEntity(entities) || subject;
|
|
28
|
+
const polarity = input.polarity === 'positive' || input.polarity === 'negative' || input.polarity === 'neutral'
|
|
29
|
+
? input.polarity
|
|
30
|
+
: inferred.polarity;
|
|
31
|
+
const temporal = normalizeTemporal(input.temporal);
|
|
32
|
+
const facetMaterial = [input.project, input.type, subject, predicate]
|
|
33
|
+
.map(normalizeKeyPart)
|
|
34
|
+
.join('\0');
|
|
35
|
+
const semanticMaterial = [facetMaterial, polarity, value].map(normalizeKeyPart).join('\0');
|
|
36
|
+
return {
|
|
37
|
+
subject,
|
|
38
|
+
predicate,
|
|
39
|
+
value,
|
|
40
|
+
polarity,
|
|
41
|
+
entities,
|
|
42
|
+
temporal,
|
|
43
|
+
semanticKey: hashKey('semantic', semanticMaterial),
|
|
44
|
+
facetKey: hashKey('facet', facetMaterial),
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
export function extractTechnicalEntities(text) {
|
|
48
|
+
const normalized = text.normalize('NFKC');
|
|
49
|
+
const candidates = [];
|
|
50
|
+
const patterns = [
|
|
51
|
+
{ expression: /@[a-z0-9][a-z0-9._-]*\/[a-z0-9][a-z0-9._-]*/giu, priority: 0 },
|
|
52
|
+
{ expression: /--[a-z0-9][a-z0-9-]*/giu, priority: 0 },
|
|
53
|
+
{ expression: /\b[a-z_$][\w$-]*(?:\.[a-z_$][\w$-]*)+\b/giu, priority: 1 },
|
|
54
|
+
{ expression: /\b[a-z][a-z0-9]*(?:-[a-z0-9]+)+\b/giu, priority: 1 },
|
|
55
|
+
{ expression: /\b[A-Za-z][a-z0-9]+(?:[A-Z][A-Za-z0-9]*)+\b/gu, priority: 1 },
|
|
56
|
+
{ expression: /\b[A-Za-z_$][A-Za-z0-9$]*(?:_[A-Za-z0-9$]+)+\b/gu, priority: 1 },
|
|
57
|
+
{ expression: /\b(?:react|vue|angular|node(?:\.js)?|typescript)\s*v?\d+(?:\.\d+){0,2}\b/giu, priority: 1 },
|
|
58
|
+
{ expression: /(?:^|[\s`'"(])((?:src|app|apps|packages|plugins|lib|test|tests)\/[A-Za-z0-9_./@-]+)/gmu, priority: 2 },
|
|
59
|
+
{ expression: /\b(?:npm|pnpm|yarn|bun|npx|vitest|jest|mocha|vite|webpack|rspack|rsbuild|esbuild|rollup|react|vue|angular|typescript|tailwindcss?|shadcn(?:\/ui)?|motion)\b/giu, priority: 3 },
|
|
60
|
+
];
|
|
61
|
+
for (const { expression, priority } of patterns) {
|
|
62
|
+
for (const match of normalized.matchAll(expression)) {
|
|
63
|
+
const value = cleanEntity(match[1] ?? match[0]);
|
|
64
|
+
if (!value || GENERIC_IDENTIFIERS.has(value.toLocaleLowerCase('en-US')))
|
|
65
|
+
continue;
|
|
66
|
+
candidates.push({ value, index: match.index ?? 0, priority });
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
candidates.sort((left, right) => left.index - right.index || left.priority - right.priority || right.value.length - left.value.length);
|
|
70
|
+
return mergeSemanticEntities(candidates.map(candidate => candidate.value));
|
|
71
|
+
}
|
|
72
|
+
export function mergeSemanticEntities(...groups) {
|
|
73
|
+
const accepted = [];
|
|
74
|
+
const normalized = new Set();
|
|
75
|
+
for (const raw of groups.flat()) {
|
|
76
|
+
const entity = cleanEntity(raw);
|
|
77
|
+
const key = normalizeEntityKey(entity);
|
|
78
|
+
if (!entity || !key || normalized.has(key))
|
|
79
|
+
continue;
|
|
80
|
+
const lessSpecificIndex = accepted.findIndex(existing => {
|
|
81
|
+
const existingKey = normalizeEntityKey(existing);
|
|
82
|
+
return existingKey !== key && isIdentifierPart(existingKey, key);
|
|
83
|
+
});
|
|
84
|
+
if (lessSpecificIndex >= 0) {
|
|
85
|
+
normalized.delete(normalizeEntityKey(accepted[lessSpecificIndex]));
|
|
86
|
+
accepted.splice(lessSpecificIndex, 1, entity);
|
|
87
|
+
normalized.add(key);
|
|
88
|
+
continue;
|
|
89
|
+
}
|
|
90
|
+
if (accepted.some(existing => isIdentifierPart(key, normalizeEntityKey(existing))))
|
|
91
|
+
continue;
|
|
92
|
+
accepted.push(entity);
|
|
93
|
+
normalized.add(key);
|
|
94
|
+
}
|
|
95
|
+
return accepted.slice(0, 32);
|
|
96
|
+
}
|
|
97
|
+
export function normalizeEntityKey(value) {
|
|
98
|
+
return value.normalize('NFKC').trim().toLocaleLowerCase('en-US').replace(/\s+/gu, ' ');
|
|
99
|
+
}
|
|
100
|
+
function inferSemanticFacet(text, entities) {
|
|
101
|
+
const polarity = NEGATIVE_INTENT.test(text) ? 'negative' : 'positive';
|
|
102
|
+
const entity = primaryEntity(entities);
|
|
103
|
+
const entityKey = normalizeEntityKey(entity);
|
|
104
|
+
if (PACKAGE_MANAGERS.has(entityKey)) {
|
|
105
|
+
return { subject: 'package manager', predicate: 'use', value: entity, polarity };
|
|
106
|
+
}
|
|
107
|
+
if (TEST_RUNNERS.has(entityKey)) {
|
|
108
|
+
return { subject: 'test runner', predicate: 'use', value: entity, polarity };
|
|
109
|
+
}
|
|
110
|
+
if (BUILD_TOOLS.has(entityKey)) {
|
|
111
|
+
return { subject: 'build tool', predicate: 'use', value: entity, polarity };
|
|
112
|
+
}
|
|
113
|
+
if (entity.startsWith('--') && DEPENDENCY_CONTEXT.test(text)) {
|
|
114
|
+
return { subject: 'dependency installation', predicate: 'require', value: entity, polarity };
|
|
115
|
+
}
|
|
116
|
+
const version = text.match(/\b(react|vue|angular|node(?:\.js)?|typescript)\s*v?(\d+(?:\.\d+){0,2})\b/iu);
|
|
117
|
+
if (version) {
|
|
118
|
+
return {
|
|
119
|
+
subject: `${version[1].toLocaleLowerCase('en-US')} version`,
|
|
120
|
+
predicate: 'version',
|
|
121
|
+
value: version[2],
|
|
122
|
+
polarity,
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
const genericTarget = inferGenericTarget(text);
|
|
126
|
+
const subject = API_CONTEXT.test(text)
|
|
127
|
+
? 'API data fetching'
|
|
128
|
+
: ANIMATION_CONTEXT.test(text)
|
|
129
|
+
? 'animation'
|
|
130
|
+
: STYLE_CONTEXT.test(text)
|
|
131
|
+
? 'styling'
|
|
132
|
+
: entity || genericTarget || normalizeField(text.split(/(?<!\d)\.(?!\d)|[。!!??\n]/u)[0] ?? text);
|
|
133
|
+
const predicate = VERSION_INTENT.test(text)
|
|
134
|
+
? 'version'
|
|
135
|
+
: PREFERENCE_INTENT.test(text)
|
|
136
|
+
? 'prefer'
|
|
137
|
+
: USE_INTENT.test(text) || polarity === 'negative'
|
|
138
|
+
? 'use'
|
|
139
|
+
: REQUIRE_INTENT.test(text)
|
|
140
|
+
? 'require'
|
|
141
|
+
: 'state';
|
|
142
|
+
return { subject, predicate, value: entity || genericTarget || subject, polarity };
|
|
143
|
+
}
|
|
144
|
+
function inferGenericTarget(text) {
|
|
145
|
+
const english = text.match(/\b(?:(?:do\s+not|don't|dont|never)\s+)?(?:use|prefer|require|avoid)\s+([^.!?\n]+)/iu)?.[1];
|
|
146
|
+
const chinese = text.match(/(?:(?:统一|一律|不要再|不要|不再|不)?(?:使用|采用|选择|避免使用))\s*([^。!!??\n]+)/u)?.[1];
|
|
147
|
+
const target = normalizeField(english ?? chinese)
|
|
148
|
+
.replace(/\s+(?:in|for)\s+(?:this|the)\s+(?:project|repository|repo)$/iu, '')
|
|
149
|
+
.replace(/(?:在)?(?:这个|该|本)?项目中?$/u, '')
|
|
150
|
+
.trim();
|
|
151
|
+
return target.slice(0, MAX_GENERIC_TARGET_LENGTH);
|
|
152
|
+
}
|
|
153
|
+
function primaryEntity(entities) {
|
|
154
|
+
return entities.find(entity => entity.startsWith('--'))
|
|
155
|
+
?? entities.find(entity => entity.startsWith('@'))
|
|
156
|
+
?? entities.find(entity => entity.includes('-') || entity.includes('/') || entity.includes('.'))
|
|
157
|
+
?? entities[0]
|
|
158
|
+
?? '';
|
|
159
|
+
}
|
|
160
|
+
function normalizePredicate(value) {
|
|
161
|
+
const normalized = normalizeField(value).toLocaleLowerCase('en-US');
|
|
162
|
+
if (['uses', 'using', 'adopt', 'choose', 'avoid', 'avoids'].includes(normalized))
|
|
163
|
+
return 'use';
|
|
164
|
+
if (['requires', 'required', 'must'].includes(normalized))
|
|
165
|
+
return 'require';
|
|
166
|
+
if (['prefers', 'preference'].includes(normalized))
|
|
167
|
+
return 'prefer';
|
|
168
|
+
return normalized;
|
|
169
|
+
}
|
|
170
|
+
function normalizeField(value) {
|
|
171
|
+
return (value ?? '').normalize('NFKC').trim().replace(/\s+/gu, ' ').slice(0, MAX_FIELD_LENGTH);
|
|
172
|
+
}
|
|
173
|
+
function normalizeTemporal(value) {
|
|
174
|
+
if (!value || typeof value !== 'object')
|
|
175
|
+
return null;
|
|
176
|
+
const temporal = {};
|
|
177
|
+
for (const key of ['observedAt', 'validFrom', 'validUntil']) {
|
|
178
|
+
if (typeof value[key] === 'string' && value[key].trim())
|
|
179
|
+
temporal[key] = value[key].trim().slice(0, 64);
|
|
180
|
+
}
|
|
181
|
+
if (value.status === 'current' || value.status === 'temporary' || value.status === 'historical') {
|
|
182
|
+
temporal.status = value.status;
|
|
183
|
+
}
|
|
184
|
+
return Object.keys(temporal).length > 0 ? temporal : null;
|
|
185
|
+
}
|
|
186
|
+
function cleanEntity(value) {
|
|
187
|
+
return value.normalize('NFKC').trim().replace(/^[`'"(]+|[`'"),.;:。;,]+$/gu, '').slice(0, MAX_ENTITY_LENGTH);
|
|
188
|
+
}
|
|
189
|
+
function isIdentifierPart(shorter, longer) {
|
|
190
|
+
if (!shorter || shorter.length >= longer.length)
|
|
191
|
+
return false;
|
|
192
|
+
if (longer === `--${shorter}`)
|
|
193
|
+
return true;
|
|
194
|
+
if (/[-./:@]/u.test(shorter))
|
|
195
|
+
return false;
|
|
196
|
+
const escaped = shorter.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
197
|
+
return new RegExp(`(^|[-./:@])${escaped}(?=$|[-./:@])`, 'u').test(longer);
|
|
198
|
+
}
|
|
199
|
+
function normalizeKeyPart(value) {
|
|
200
|
+
return value.normalize('NFKC').trim().toLocaleLowerCase('en-US').replace(/\s+/gu, ' ');
|
|
201
|
+
}
|
|
202
|
+
function hashKey(namespace, value) {
|
|
203
|
+
return createHash('sha256').update(`${namespace}\0${value}`).digest('hex');
|
|
204
|
+
}
|
|
205
|
+
//# sourceMappingURL=semantic-memory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"semantic-memory.js","sourceRoot":"","sources":["../src/semantic-memory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"semantic-memory.test.d.ts","sourceRoot":"","sources":["../src/semantic-memory.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { extractTechnicalEntities, mergeSemanticEntities, normalizeSemanticMemory, } from './semantic-memory.js';
|
|
3
|
+
describe('semantic memory normalization', () => {
|
|
4
|
+
it('preserves exact technical identifiers instead of collapsing to a parent framework', () => {
|
|
5
|
+
expect(extractTechnicalEntities('Use react-query and @tanstack/react-query; install with --legacy-peer-deps.')).toEqual([
|
|
6
|
+
'react-query',
|
|
7
|
+
'@tanstack/react-query',
|
|
8
|
+
'--legacy-peer-deps',
|
|
9
|
+
]);
|
|
10
|
+
expect(mergeSemanticEntities(['react'], ['react-query'])).toEqual(['react-query']);
|
|
11
|
+
expect(extractTechnicalEntities('VideoPlayer reads current_time from playerRef.current.'))
|
|
12
|
+
.toEqual(expect.arrayContaining(['VideoPlayer', 'current_time', 'playerRef.current']));
|
|
13
|
+
});
|
|
14
|
+
it('gives equivalent Chinese and English conventions the same semantic identity', () => {
|
|
15
|
+
const base = { project: '/project', type: 'project_convention', title: 'API convention' };
|
|
16
|
+
const english = normalizeSemanticMemory({ ...base, narrative: 'Use react-query as the API solution.' });
|
|
17
|
+
const chinese = normalizeSemanticMemory({ ...base, narrative: '在项目中使用 react-query 作为 API 方案。' });
|
|
18
|
+
expect(english).toMatchObject({
|
|
19
|
+
subject: 'API data fetching', predicate: 'use', value: 'react-query', polarity: 'positive',
|
|
20
|
+
});
|
|
21
|
+
expect(chinese.semanticKey).toBe(english.semanticKey);
|
|
22
|
+
expect(chinese.facetKey).toBe(english.facetKey);
|
|
23
|
+
});
|
|
24
|
+
it('normalizes dependency install flags into a stable requirement facet', () => {
|
|
25
|
+
const semantic = normalizeSemanticMemory({
|
|
26
|
+
project: '/project',
|
|
27
|
+
type: 'project_convention',
|
|
28
|
+
title: 'Dependency installation',
|
|
29
|
+
narrative: '安装或更新依赖时统一使用 --legacy-peer-deps。',
|
|
30
|
+
});
|
|
31
|
+
expect(semantic).toMatchObject({
|
|
32
|
+
subject: 'dependency installation',
|
|
33
|
+
predicate: 'require',
|
|
34
|
+
value: '--legacy-peer-deps',
|
|
35
|
+
entities: ['--legacy-peer-deps'],
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
//# sourceMappingURL=semantic-memory.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"semantic-memory.test.js","sourceRoot":"","sources":["../src/semantic-memory.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,sBAAsB,CAAC;AAE9B,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;IAC7C,EAAE,CAAC,mFAAmF,EAAE,GAAG,EAAE;QAC3F,MAAM,CAAC,wBAAwB,CAC7B,6EAA6E,CAC9E,CAAC,CAAC,OAAO,CAAC;YACT,aAAa;YACb,uBAAuB;YACvB,oBAAoB;SACrB,CAAC,CAAC;QACH,MAAM,CAAC,qBAAqB,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;QACnF,MAAM,CAAC,wBAAwB,CAAC,wDAAwD,CAAC,CAAC;aACvF,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,aAAa,EAAE,cAAc,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC;IAC3F,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6EAA6E,EAAE,GAAG,EAAE;QACrF,MAAM,IAAI,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,oBAA6B,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC;QACnG,MAAM,OAAO,GAAG,uBAAuB,CAAC,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,sCAAsC,EAAE,CAAC,CAAC;QACxG,MAAM,OAAO,GAAG,uBAAuB,CAAC,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,+BAA+B,EAAE,CAAC,CAAC;QAEjG,MAAM,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC;YAC5B,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,UAAU;SAC3F,CAAC,CAAC;QACH,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACtD,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;QAC7E,MAAM,QAAQ,GAAG,uBAAuB,CAAC;YACvC,OAAO,EAAE,UAAU;YACnB,IAAI,EAAE,oBAAoB;YAC1B,KAAK,EAAE,yBAAyB;YAChC,SAAS,EAAE,kCAAkC;SAC9C,CAAC,CAAC;QACH,MAAM,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC;YAC7B,OAAO,EAAE,yBAAyB;YAClC,SAAS,EAAE,SAAS;YACpB,KAAK,EAAE,oBAAoB;YAC3B,QAAQ,EAAE,CAAC,oBAAoB,CAAC;SACjC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { type EventGroup } from './event-grouper.js';
|
|
2
2
|
import { type ObservationType } from './observation-types.js';
|
|
3
|
+
import type { SemanticMemoryFields } from './semantic-memory.js';
|
|
3
4
|
export { OBSERVATION_TYPES } from './observation-types.js';
|
|
4
5
|
export type { ObservationType } from './observation-types.js';
|
|
5
6
|
export declare const DEFAULT_PROMPT_TOKEN_BUDGET = 4000;
|
|
6
7
|
export declare const SUMMARY_SYSTEM = "You are a session summarizer for DevFlow, a developer toolchain AI.\nYour task is to analyze groups of tool-call events from a coding session and extract structured observations.\n\nFor each group, produce ONE observation (omit groups with no meaningful insight).\n\nOutput a JSON array of observations. Each observation:\n- type: exactly one of \"project_convention\" | \"error_resolution\" | \"config_discovery\" | \"user_preference\" | \"decision_made\" | \"file_relationship\" | \"api_shape\"\n- title: short summary (max 80 chars, in English)\n- narrative: 1-2 sentence description of what happened and why it matters\n- facts: array of strings - specific factual statements\n- concepts: array of 1-5 key concepts/topics (lowercase, single words or short phrases)\n- importance: 1-10 (10 = critical fix or key decision, 5 = notable, 1 = trivial)\n- confidence: 0.0-1.0\n\nRules:\n- Focus on WHAT WAS LEARNED, not what was executed\n- Every claim must be directly supported by at least one source event in the supplied batch\n- Ignore hook/daemon fallback chatter, retries, acknowledgements, and other operational noise\n- Do not turn generic success messages into observations\n- Errors + their fixes = high signal (importance 7-10)\n- Config discoveries = medium signal (importance 5-7)\n- Routine operations (ls, cat, cd) = skip\n- Classify only durable, reusable project knowledge. Use project_convention for repository rules,\n user_preference for explicit user choices, file_relationship for meaningful file dependencies,\n and api_shape for interfaces, schemas, or call contracts.\n- If a group cannot be assigned to exactly one of the seven types, omit it. If the whole batch\n has no classifiable project knowledge, return [] rather than a session recap or tool log.\n- Translate non-English content to English\n- Return ONLY the JSON array, no markdown, no explanation\n\nGOOD example:\n[{\"type\":\"project_convention\",\"title\":\"Tests run through the workspace Vitest script\",\"narrative\":\"The repository defines its test entry point as npm test in the package workspace.\",\"facts\":[\"packages/memory-engine/package.json defines test as vitest run\",\"Tests should be invoked through the workspace script\"],\"concepts\":[\"vitest\",\"npm\",\"workspace\"],\"importance\":7,\"confidence\":0.95}]\n\nBAD examples (do not emit these):\n[{\"type\":\"session_summary\",\"title\":\"Worked on the memory engine\",\"narrative\":\"The developer inspected files, ran commands, and made changes.\",\"facts\":[\"Several tools were used\"],\"concepts\":[\"session\"],\"importance\":3,\"confidence\":0.9}]\n[{\"type\":\"user_insight\",\"title\":\"The session had an error\",\"narrative\":\"An error happened and was investigated.\",\"facts\":[\"A command failed\"],\"concepts\":[\"error\"],\"importance\":4,\"confidence\":0.8}]\n[{\"type\":\"file_operation\",\"title\":\"Read and edited files\",\"narrative\":\"The developer read files and then edited them.\",\"facts\":[\"Files were changed\"],\"concepts\":[\"files\"],\"importance\":2,\"confidence\":0.99}]";
|
|
7
8
|
export declare function buildSummaryPrompt(groups: EventGroup[], tokenBudget?: number): string;
|
|
8
|
-
export interface ParsedObservation {
|
|
9
|
+
export interface ParsedObservation extends SemanticMemoryFields {
|
|
9
10
|
type: ObservationType;
|
|
10
11
|
title: string;
|
|
11
12
|
narrative?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-summarizer.d.ts","sourceRoot":"","sources":["../src/session-summarizer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAqB,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,YAAY,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,eAAO,MAAM,2BAA2B,OAAO,CAAC;AAGhD,eAAO,MAAM,cAAc,mgGAoCmL,CAAC;AAE/M,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,UAAU,EAAE,EACpB,WAAW,SAA8B,GACxC,MAAM,CAyBR;AAqBD,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"session-summarizer.d.ts","sourceRoot":"","sources":["../src/session-summarizer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAqB,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACjF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,YAAY,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,eAAO,MAAM,2BAA2B,OAAO,CAAC;AAGhD,eAAO,MAAM,cAAc,mgGAoCmL,CAAC;AAE/M,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,UAAU,EAAE,EACpB,WAAW,SAA8B,GACxC,MAAM,CAyBR;AAqBD,MAAM,WAAW,iBAAkB,SAAQ,oBAAoB;IAC7D,IAAI,EAAE,eAAe,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEzD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-summarizer.js","sourceRoot":"","sources":["../src/session-summarizer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"session-summarizer.js","sourceRoot":"","sources":["../src/session-summarizer.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAG3D,MAAM,CAAC,MAAM,2BAA2B,GAAG,IAAI,CAAC;AAChD,MAAM,gBAAgB,GAAG,CAAC,GAAG,IAAI,CAAC;AAElC,MAAM,CAAC,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8MAoCgL,CAAC;AAE/M,MAAM,UAAU,kBAAkB,CAChC,MAAoB,EACpB,WAAW,GAAG,2BAA2B;IAEzC,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;IACzC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;QAChG,KAAK;QACL,KAAK;QACL,UAAU;QACV,UAAU;QACV,GAAG,EAAE,QAAQ,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC;KAChD,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,qBAAqB,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAEvG,MAAM,QAAQ,GAAG,mBAAmB,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC7D,IAAI,WAAW,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IAChC,IAAI,oBAAoB,CAAC,QAAQ,CAAC,GAAG,WAAW,EAAE,CAAC;QACjD,OAAO,iBAAiB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;QACpB,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YAClC,IAAI,oBAAoB,CAAC,mBAAmB,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,GAAG,WAAW,EAAE,CAAC;gBACpF,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,mBAAmB,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAc,EAAE,WAAmB;IAC5D,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACtC,MAAM,SAAS,GAAG,CAAC,GAAG,KAAK,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,IAAI,oBAAoB,CAAC,SAAS,CAAC,IAAI,WAAW;YAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;YAChE,OAAO,EAAE,CAAC;IACjB,CAAC;IACD,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QAChB,MAAM,MAAM,GAAG,OAAO,OAAO,yCAAyC,CAAC;QACvE,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,oBAAoB,CAAC,CAAC,GAAG,KAAK,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,WAAW,EAAE,CAAC;YAC7F,KAAK,CAAC,GAAG,EAAE,CAAC;QACd,CAAC;QACD,IAAI,oBAAoB,CAAC,MAAM,CAAC,IAAI,WAAW;YAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACtE,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9C,OAAO,WAAW,IAAI,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;AAC/D,CAAC;AAYD,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAoB,EAAE,cAA2B;IAC5E,MAAM,KAAK,GAAa;QACtB,eAAe,MAAM,CAAC,MAAM,4BAA4B;QACxD,yHAAyH;QACzH,sFAAsF;QACtF,EAAE;KACH,CAAC;IAEF,KAAK,IAAI,UAAU,GAAG,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,CAAC;QAClE,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAE,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,SAAS,UAAU,GAAG,CAAC,KAAK,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QACzE,KAAK,CAAC,IAAI,CAAC,YAAY,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,cAAc,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACjG,KAAK,CAAC,IAAI,CAAC,WAAW,KAAK,CAAC,MAAM,CAAC,MAAM,0BAA0B,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;QACxF,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,KAAK,CAAC,IAAI,CAAC,cAAc,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3D,CAAC;QAED,KAAK,IAAI,UAAU,GAAG,CAAC,EAAE,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,EAAE,CAAC;YACxE,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,CAAE,CAAC;YACxC,MAAM,GAAG,GAAG,QAAQ,CAAC,UAAU,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;YACvD,MAAM,YAAY,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;YAClD,IAAI,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC5B,KAAK,CAAC,IAAI,CAAC,aAAa,UAAU,GAAG,CAAC,IAAI,UAAU,GAAG,CAAC,MAAM,CAAC,CAAC;gBAChE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC;YAC3C,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,IAAI,CAAC,aAAa,UAAU,GAAG,CAAC,IAAI,UAAU,GAAG,CAAC,iBAAiB,IAAI,CAAC,SAAS,CAAC;oBACtF,IAAI,EAAE,YAAY,CAAC,IAAI;oBACvB,QAAQ,EAAE,YAAY,CAAC,QAAQ;oBAC/B,UAAU,EAAE,YAAY,CAAC,UAAU;oBACnC,eAAe,EAAE,YAAY,CAAC,eAAe;oBAC7C,aAAa,EAAE,YAAY,CAAC,SAAS,CAAC,MAAM;oBAC5C,YAAY,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;oBACxF,WAAW,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;iBACtF,CAAC,EAAE,CAAC,CAAC;YACR,CAAC;QACH,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAYD,SAAS,qBAAqB,CAAC,KAAmC;IAChE,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IACpC,MAAM,gBAAgB,GAAG,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,UAAU,CAAC;IACjE,IAAI,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACpC,KAAK,MAAM,QAAQ,IAAI,gBAAgB,EAAE,CAAC;YACxC,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE;gBAAE,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,EAAE,CAAC;QAC5C,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE;YAAE,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC/E,CAAC;IAED,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC;QACtD,MAAM,EAAE,YAAY,CAAC,KAAK,CAAC,MAAM,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAC;QACnF,SAAS,EAAE,CAAC,GAAG,SAAS,CAAC;QACzB,QAAQ,EAAE,KAAK,CAAC,SAAS,IAAI,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC;QAC1D,UAAU,EAAE,KAAK,CAAC,WAAW,IAAI,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC;QAChE,eAAe,EAAE,WAAW,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,eAAe,CAAC;KAC9F,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAmC,EAAE,KAAiB;IACnF,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACjE,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IACpE,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7G,OAAO,CAAC,KAAK,CAAC,SAAS,KAAK,IAAI,IAAI,KAAK,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;UAChE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;UACvB,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,EAAE;UAC7B,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE;UAC1C,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;UACjB,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;UAC5B,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;UAClB,CAAC,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjE,CAAC;AAED,SAAS,QAAQ,CAAC,UAAkB,EAAE,UAAkB,EAAE,OAAe;IACvE,OAAO,GAAG,UAAU,IAAI,UAAU,IAAI,OAAO,EAAE,CAAC;AAClD,CAAC;AAED,SAAS,YAAY,CAAC,GAAkB;IACtC,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAY,CAAC;QAC1C,OAAO,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YACnE,CAAC,CAAC,MAAiC;YACnC,CAAC,CAAC,EAAE,CAAC;IACT,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAClD,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5E,CAAC;AAED,SAAS,YAAY,CAAC,KAAoB,EAAE,QAAgB;IAC1D,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzB,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,QAAQ;QAAE,OAAO,KAAK,CAAC;IAE/D,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,SAAS,IAAI,KAAK,EAAE,CAAC;QAC9B,MAAM,cAAc,GAAG,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC5D,IAAI,KAAK,GAAG,cAAc,GAAG,QAAQ;YAAE,MAAM;QAC7C,MAAM,IAAI,SAAS,CAAC;QACpB,KAAK,IAAI,cAAc,CAAC;IAC1B,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,UAAU,CAAC,KAAa,EAAE,SAAiB;IAClD,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACnD,OAAO,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/E,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@devflow-tools/memory-engine",
|
|
3
|
-
"version": "0.16.
|
|
3
|
+
"version": "0.16.19",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -17,14 +17,14 @@
|
|
|
17
17
|
"clean": "rm -rf dist"
|
|
18
18
|
},
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"@devflow-tools/sdk": "0.16.
|
|
20
|
+
"@devflow-tools/sdk": "0.16.19",
|
|
21
21
|
"@xenova/transformers": "^2.17.0",
|
|
22
22
|
"better-sqlite3": "^12.0.0",
|
|
23
23
|
"sqlite-vec": "^0.1.9",
|
|
24
24
|
"ulidx": "^2.4.1"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
|
-
"@devflow-tools/knowledge-engine": "0.16.
|
|
27
|
+
"@devflow-tools/knowledge-engine": "0.16.19",
|
|
28
28
|
"typescript": "^5.5.0",
|
|
29
29
|
"vitest": "^2.0.0"
|
|
30
30
|
},
|