kratos-memory 1.0.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/AGENTS.md +25 -0
- package/LICENSE +21 -0
- package/bin/kratos-cli +7 -0
- package/dist/cli/capture-handler.d.ts +13 -0
- package/dist/cli/capture-handler.d.ts.map +1 -0
- package/dist/cli/capture-handler.js +112 -0
- package/dist/cli/capture-handler.js.map +1 -0
- package/dist/cli/commands/ask.d.ts +5 -0
- package/dist/cli/commands/ask.d.ts.map +1 -0
- package/dist/cli/commands/ask.js +64 -0
- package/dist/cli/commands/ask.js.map +1 -0
- package/dist/cli/commands/capture.d.ts +5 -0
- package/dist/cli/commands/capture.d.ts.map +1 -0
- package/dist/cli/commands/capture.js +31 -0
- package/dist/cli/commands/capture.js.map +1 -0
- package/dist/cli/commands/forget.d.ts +3 -0
- package/dist/cli/commands/forget.d.ts.map +1 -0
- package/dist/cli/commands/forget.js +12 -0
- package/dist/cli/commands/forget.js.map +1 -0
- package/dist/cli/commands/get.d.ts +3 -0
- package/dist/cli/commands/get.d.ts.map +1 -0
- package/dist/cli/commands/get.js +28 -0
- package/dist/cli/commands/get.js.map +1 -0
- package/dist/cli/commands/hooks.d.ts +2 -0
- package/dist/cli/commands/hooks.d.ts.map +1 -0
- package/dist/cli/commands/hooks.js +136 -0
- package/dist/cli/commands/hooks.js.map +1 -0
- package/dist/cli/commands/migrate.d.ts +5 -0
- package/dist/cli/commands/migrate.d.ts.map +1 -0
- package/dist/cli/commands/migrate.js +56 -0
- package/dist/cli/commands/migrate.js.map +1 -0
- package/dist/cli/commands/recent.d.ts +6 -0
- package/dist/cli/commands/recent.d.ts.map +1 -0
- package/dist/cli/commands/recent.js +21 -0
- package/dist/cli/commands/recent.js.map +1 -0
- package/dist/cli/commands/save.d.ts +8 -0
- package/dist/cli/commands/save.d.ts.map +1 -0
- package/dist/cli/commands/save.js +31 -0
- package/dist/cli/commands/save.js.map +1 -0
- package/dist/cli/commands/scan.d.ts +5 -0
- package/dist/cli/commands/scan.d.ts.map +1 -0
- package/dist/cli/commands/scan.js +28 -0
- package/dist/cli/commands/scan.js.map +1 -0
- package/dist/cli/commands/search.d.ts +8 -0
- package/dist/cli/commands/search.d.ts.map +1 -0
- package/dist/cli/commands/search.js +45 -0
- package/dist/cli/commands/search.js.map +1 -0
- package/dist/cli/commands/status.d.ts +3 -0
- package/dist/cli/commands/status.d.ts.map +1 -0
- package/dist/cli/commands/status.js +89 -0
- package/dist/cli/commands/status.js.map +1 -0
- package/dist/cli/commands/switch.d.ts +3 -0
- package/dist/cli/commands/switch.d.ts.map +1 -0
- package/dist/cli/commands/switch.js +18 -0
- package/dist/cli/commands/switch.js.map +1 -0
- package/dist/cli/core.d.ts +15 -0
- package/dist/cli/core.d.ts.map +1 -0
- package/dist/cli/core.js +18 -0
- package/dist/cli/core.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +157 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/output.d.ts +22 -0
- package/dist/cli/output.d.ts.map +1 -0
- package/dist/cli/output.js +74 -0
- package/dist/cli/output.js.map +1 -0
- package/dist/compression/factory.d.ts +6 -0
- package/dist/compression/factory.d.ts.map +1 -0
- package/dist/compression/factory.js +8 -0
- package/dist/compression/factory.js.map +1 -0
- package/dist/compression/index.d.ts +10 -0
- package/dist/compression/index.d.ts.map +1 -0
- package/dist/compression/index.js +2 -0
- package/dist/compression/index.js.map +1 -0
- package/dist/compression/rule-compressor.d.ts +9 -0
- package/dist/compression/rule-compressor.d.ts.map +1 -0
- package/dist/compression/rule-compressor.js +43 -0
- package/dist/compression/rule-compressor.js.map +1 -0
- package/dist/memory-server/concept-store-enhanced.d.ts +88 -0
- package/dist/memory-server/concept-store-enhanced.d.ts.map +1 -0
- package/dist/memory-server/concept-store-enhanced.js +392 -0
- package/dist/memory-server/concept-store-enhanced.js.map +1 -0
- package/dist/memory-server/concept-store.d.ts +58 -0
- package/dist/memory-server/concept-store.d.ts.map +1 -0
- package/dist/memory-server/concept-store.js +329 -0
- package/dist/memory-server/concept-store.js.map +1 -0
- package/dist/memory-server/context-broker.d.ts +63 -0
- package/dist/memory-server/context-broker.d.ts.map +1 -0
- package/dist/memory-server/context-broker.js +340 -0
- package/dist/memory-server/context-broker.js.map +1 -0
- package/dist/memory-server/database.d.ts +108 -0
- package/dist/memory-server/database.d.ts.map +1 -0
- package/dist/memory-server/database.js +690 -0
- package/dist/memory-server/database.js.map +1 -0
- package/dist/project-manager.d.ts +77 -0
- package/dist/project-manager.d.ts.map +1 -0
- package/dist/project-manager.js +226 -0
- package/dist/project-manager.js.map +1 -0
- package/dist/security/data-retention.d.ts +104 -0
- package/dist/security/data-retention.d.ts.map +1 -0
- package/dist/security/data-retention.js +444 -0
- package/dist/security/data-retention.js.map +1 -0
- package/dist/security/encryption.d.ts +48 -0
- package/dist/security/encryption.d.ts.map +1 -0
- package/dist/security/encryption.js +131 -0
- package/dist/security/encryption.js.map +1 -0
- package/dist/security/pii-detector.d.ts +61 -0
- package/dist/security/pii-detector.d.ts.map +1 -0
- package/dist/security/pii-detector.js +220 -0
- package/dist/security/pii-detector.js.map +1 -0
- package/dist/types/index.d.ts +151 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/logger.d.ts +9 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +10 -0
- package/dist/utils/logger.js.map +1 -0
- package/package.json +54 -0
|
@@ -0,0 +1,329 @@
|
|
|
1
|
+
import Database from 'better-sqlite3';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import os from 'os';
|
|
4
|
+
import fs from 'fs-extra';
|
|
5
|
+
import { Logger } from '../utils/logger.js';
|
|
6
|
+
const logger = new Logger('ConceptStore');
|
|
7
|
+
export class ConceptStore {
|
|
8
|
+
db;
|
|
9
|
+
static instances = new Map();
|
|
10
|
+
projectId;
|
|
11
|
+
constructor(projectId) {
|
|
12
|
+
this.projectId = projectId;
|
|
13
|
+
// ISOLATED concept store per project - no pollution!
|
|
14
|
+
const kratosHome = path.join(os.homedir(), '.kratos');
|
|
15
|
+
const dbPath = path.join(kratosHome, 'projects', projectId, 'databases', 'concepts.db');
|
|
16
|
+
fs.ensureDirSync(path.dirname(dbPath));
|
|
17
|
+
this.db = new Database(dbPath);
|
|
18
|
+
this.db.pragma('journal_mode = WAL');
|
|
19
|
+
this.initializeSchema();
|
|
20
|
+
logger.info(`Concept store ISOLATED for project: ${projectId}`);
|
|
21
|
+
}
|
|
22
|
+
static getInstance(projectId) {
|
|
23
|
+
const id = projectId || 'global';
|
|
24
|
+
if (!ConceptStore.instances.has(id)) {
|
|
25
|
+
ConceptStore.instances.set(id, new ConceptStore(id));
|
|
26
|
+
}
|
|
27
|
+
return ConceptStore.instances.get(id);
|
|
28
|
+
}
|
|
29
|
+
initializeSchema() {
|
|
30
|
+
this.db.exec(`
|
|
31
|
+
CREATE TABLE IF NOT EXISTS concepts (
|
|
32
|
+
id TEXT PRIMARY KEY,
|
|
33
|
+
title TEXT NOT NULL,
|
|
34
|
+
body TEXT NOT NULL,
|
|
35
|
+
tags TEXT DEFAULT '[]',
|
|
36
|
+
importance INTEGER DEFAULT 3 CHECK(importance >= 1 AND importance <= 5),
|
|
37
|
+
created_at INTEGER NOT NULL,
|
|
38
|
+
updated_at INTEGER NOT NULL
|
|
39
|
+
);
|
|
40
|
+
|
|
41
|
+
CREATE INDEX IF NOT EXISTS idx_concept_importance ON concepts(importance DESC);
|
|
42
|
+
CREATE INDEX IF NOT EXISTS idx_concept_created ON concepts(created_at DESC);
|
|
43
|
+
|
|
44
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS concept_fts USING fts5(
|
|
45
|
+
title,
|
|
46
|
+
body,
|
|
47
|
+
content='concepts',
|
|
48
|
+
content_rowid='rowid',
|
|
49
|
+
tokenize='porter unicode61'
|
|
50
|
+
);
|
|
51
|
+
|
|
52
|
+
-- FTS sync triggers
|
|
53
|
+
CREATE TRIGGER IF NOT EXISTS concept_fts_insert AFTER INSERT ON concepts BEGIN
|
|
54
|
+
INSERT INTO concept_fts(rowid, title, body) VALUES (new.rowid, new.title, new.body);
|
|
55
|
+
END;
|
|
56
|
+
|
|
57
|
+
CREATE TRIGGER IF NOT EXISTS concept_fts_delete AFTER DELETE ON concepts BEGIN
|
|
58
|
+
DELETE FROM concept_fts WHERE rowid = old.rowid;
|
|
59
|
+
END;
|
|
60
|
+
|
|
61
|
+
CREATE TRIGGER IF NOT EXISTS concept_fts_update AFTER UPDATE ON concepts BEGIN
|
|
62
|
+
DELETE FROM concept_fts WHERE rowid = old.rowid;
|
|
63
|
+
INSERT INTO concept_fts(rowid, title, body) VALUES (new.rowid, new.title, new.body);
|
|
64
|
+
END;
|
|
65
|
+
|
|
66
|
+
-- Allowlist table for project-level concept permissions
|
|
67
|
+
CREATE TABLE IF NOT EXISTS project_allowlists (
|
|
68
|
+
project_id TEXT NOT NULL,
|
|
69
|
+
concept_id TEXT NOT NULL,
|
|
70
|
+
added_at INTEGER NOT NULL,
|
|
71
|
+
PRIMARY KEY (project_id, concept_id),
|
|
72
|
+
FOREIGN KEY (concept_id) REFERENCES concepts(id) ON DELETE CASCADE
|
|
73
|
+
);
|
|
74
|
+
|
|
75
|
+
CREATE INDEX IF NOT EXISTS idx_allowlist_project ON project_allowlists(project_id);
|
|
76
|
+
`);
|
|
77
|
+
// Seed initial concepts if empty
|
|
78
|
+
this.seedInitialConcepts();
|
|
79
|
+
}
|
|
80
|
+
seedInitialConcepts() {
|
|
81
|
+
const count = this.db.prepare('SELECT COUNT(*) as count FROM concepts').get();
|
|
82
|
+
if (count.count === 0) {
|
|
83
|
+
const initialConcepts = [
|
|
84
|
+
{
|
|
85
|
+
id: 'jwt-auth-v2',
|
|
86
|
+
title: 'JWT Authentication Pattern',
|
|
87
|
+
body: 'Standard JWT auth flow: 1) Client sends credentials 2) Server validates, generates JWT with claims 3) Client includes JWT in Authorization header 4) Server validates JWT signature & expiry 5) Extract user from claims. Key: Use RS256 for production, short expiry + refresh tokens.',
|
|
88
|
+
tags: ['jwt', 'auth', 'security', 'pattern'],
|
|
89
|
+
importance: 5
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
id: 's3-upload-checklist',
|
|
93
|
+
title: 'S3 Upload Security Checklist',
|
|
94
|
+
body: 'Before S3 uploads: Generate presigned URLs server-side, Set expiry < 5min, Validate file type/size, Use random S3 keys (not user filenames), Set bucket CORS policy, Enable versioning, Configure lifecycle rules, Monitor with CloudWatch',
|
|
95
|
+
tags: ['s3', 'aws', 'upload', 'security', 'checklist'],
|
|
96
|
+
importance: 5
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
id: 'rate-limiter-pattern',
|
|
100
|
+
title: 'API Rate Limiting Pattern',
|
|
101
|
+
body: 'Token bucket algorithm: Each user gets N tokens/minute. Request costs 1 token. If tokens=0, reject with 429. Refill tokens at fixed rate. Implementation: Redis INCR with TTL, or in-memory with sliding window. Add headers: X-RateLimit-Limit/Remaining/Reset.',
|
|
102
|
+
tags: ['api', 'rate-limit', 'security', 'pattern'],
|
|
103
|
+
importance: 4
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
id: 'error-boundary-react',
|
|
107
|
+
title: 'React Error Boundary Pattern',
|
|
108
|
+
body: 'Catch React component errors: class ErrorBoundary extends React.Component { componentDidCatch(error, info) { logError(error, info); } render() { if (hasError) return <Fallback />; return children; }}. Wrap at route level. Cannot catch: async errors, event handlers, SSR.',
|
|
109
|
+
tags: ['react', 'error-handling', 'pattern', 'frontend'],
|
|
110
|
+
importance: 4
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
id: 'db-migration-safety',
|
|
114
|
+
title: 'Safe Database Migration Checklist',
|
|
115
|
+
body: 'Safe migrations: Always backup first, Test rollback, Make backwards compatible, Separate schema vs data migrations, Add indexes CONCURRENTLY, Avoid NOT NULL without default, Use transactions, Monitor during deploy, Have recovery plan',
|
|
116
|
+
tags: ['database', 'migration', 'safety', 'checklist'],
|
|
117
|
+
importance: 5
|
|
118
|
+
}
|
|
119
|
+
];
|
|
120
|
+
const stmt = this.db.prepare(`
|
|
121
|
+
INSERT INTO concepts (id, title, body, tags, importance, created_at, updated_at)
|
|
122
|
+
VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
123
|
+
`);
|
|
124
|
+
const now = Date.now();
|
|
125
|
+
for (const concept of initialConcepts) {
|
|
126
|
+
stmt.run(concept.id, concept.title, concept.body, JSON.stringify(concept.tags), concept.importance, now, now);
|
|
127
|
+
}
|
|
128
|
+
logger.info(`Seeded ${initialConcepts.length} initial concepts`);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
search(params) {
|
|
132
|
+
const k = params.k || 10;
|
|
133
|
+
// Handle special queries
|
|
134
|
+
const searchQuery = this.normalizeSearchQuery(params.q);
|
|
135
|
+
// Use different query based on whether we have a search term
|
|
136
|
+
let query;
|
|
137
|
+
let queryParams;
|
|
138
|
+
if (searchQuery === '*' || !searchQuery.trim()) {
|
|
139
|
+
// Return all concepts when wildcard or empty query
|
|
140
|
+
query = `
|
|
141
|
+
SELECT
|
|
142
|
+
c.*,
|
|
143
|
+
1.0 as fts_score,
|
|
144
|
+
'' as snippet
|
|
145
|
+
FROM concepts c
|
|
146
|
+
`;
|
|
147
|
+
queryParams = [];
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
// Normal FTS search
|
|
151
|
+
query = `
|
|
152
|
+
SELECT
|
|
153
|
+
c.*,
|
|
154
|
+
bm25(concept_fts) as fts_score,
|
|
155
|
+
snippet(concept_fts, 0, '[', ']', '...', 32) as snippet
|
|
156
|
+
FROM concepts c
|
|
157
|
+
JOIN concept_fts ON c.rowid = concept_fts.rowid
|
|
158
|
+
WHERE concept_fts MATCH ?
|
|
159
|
+
`;
|
|
160
|
+
queryParams = [searchQuery];
|
|
161
|
+
}
|
|
162
|
+
// Apply allowlist filter if project specified
|
|
163
|
+
if (params.projectId) {
|
|
164
|
+
if (searchQuery === '*') {
|
|
165
|
+
query += ` WHERE c.id IN (
|
|
166
|
+
SELECT concept_id FROM project_allowlists WHERE project_id = ?
|
|
167
|
+
)`;
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
query += ` AND c.id IN (
|
|
171
|
+
SELECT concept_id FROM project_allowlists WHERE project_id = ?
|
|
172
|
+
)`;
|
|
173
|
+
}
|
|
174
|
+
queryParams.push(params.projectId);
|
|
175
|
+
}
|
|
176
|
+
else if (params.allowlist && params.allowlist.length > 0) {
|
|
177
|
+
if (searchQuery === '*') {
|
|
178
|
+
query += ` WHERE c.id IN (${params.allowlist.map(() => '?').join(',')})`;
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
query += ` AND c.id IN (${params.allowlist.map(() => '?').join(',')})`;
|
|
182
|
+
}
|
|
183
|
+
queryParams.push(...params.allowlist);
|
|
184
|
+
}
|
|
185
|
+
// Add appropriate ordering and limit
|
|
186
|
+
if (searchQuery === '*') {
|
|
187
|
+
query += ' ORDER BY c.importance DESC, c.created_at DESC LIMIT ?';
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
query += ' ORDER BY fts_score DESC, c.importance DESC LIMIT ?';
|
|
191
|
+
}
|
|
192
|
+
queryParams.push(k);
|
|
193
|
+
const stmt = this.db.prepare(query);
|
|
194
|
+
const results = stmt.all(...queryParams);
|
|
195
|
+
return results.map(row => ({
|
|
196
|
+
concept: this.rowToConcept(row),
|
|
197
|
+
score: -row.fts_score,
|
|
198
|
+
snippet: row.snippet
|
|
199
|
+
}));
|
|
200
|
+
}
|
|
201
|
+
get(id) {
|
|
202
|
+
const stmt = this.db.prepare('SELECT * FROM concepts WHERE id = ?');
|
|
203
|
+
const row = stmt.get(id);
|
|
204
|
+
return row ? this.rowToConcept(row) : null;
|
|
205
|
+
}
|
|
206
|
+
save(params) {
|
|
207
|
+
const now = Date.now();
|
|
208
|
+
const id = params.id || this.generateConceptId(params.title);
|
|
209
|
+
// Check body length constraint (600-900 chars recommended)
|
|
210
|
+
if (params.body.length > 1200) {
|
|
211
|
+
logger.warn(`Concept body exceeds recommended length: ${params.body.length} chars`);
|
|
212
|
+
}
|
|
213
|
+
const existing = this.get(id);
|
|
214
|
+
if (existing) {
|
|
215
|
+
// Update existing
|
|
216
|
+
const stmt = this.db.prepare(`
|
|
217
|
+
UPDATE concepts
|
|
218
|
+
SET title = ?, body = ?, tags = ?, importance = ?, updated_at = ?
|
|
219
|
+
WHERE id = ?
|
|
220
|
+
`);
|
|
221
|
+
stmt.run(params.title, params.body, JSON.stringify(params.tags || []), params.importance || existing.importance, now, id);
|
|
222
|
+
}
|
|
223
|
+
else {
|
|
224
|
+
// Insert new
|
|
225
|
+
const stmt = this.db.prepare(`
|
|
226
|
+
INSERT INTO concepts (id, title, body, tags, importance, created_at, updated_at)
|
|
227
|
+
VALUES (?, ?, ?, ?, ?, ?, ?)
|
|
228
|
+
`);
|
|
229
|
+
stmt.run(id, params.title, params.body, JSON.stringify(params.tags || []), params.importance || 3, now, now);
|
|
230
|
+
}
|
|
231
|
+
logger.info(`Concept saved: ${id} - ${params.title}`);
|
|
232
|
+
return { id };
|
|
233
|
+
}
|
|
234
|
+
updateAllowlist(params) {
|
|
235
|
+
const result = {};
|
|
236
|
+
if (params.add && params.add.length > 0) {
|
|
237
|
+
const stmt = this.db.prepare(`
|
|
238
|
+
INSERT OR IGNORE INTO project_allowlists (project_id, concept_id, added_at)
|
|
239
|
+
VALUES (?, ?, ?)
|
|
240
|
+
`);
|
|
241
|
+
const now = Date.now();
|
|
242
|
+
const added = [];
|
|
243
|
+
for (const conceptId of params.add) {
|
|
244
|
+
// Verify concept exists
|
|
245
|
+
if (this.get(conceptId)) {
|
|
246
|
+
const res = stmt.run(params.projectId, conceptId, now);
|
|
247
|
+
if (res.changes > 0) {
|
|
248
|
+
added.push(conceptId);
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
result.added = added;
|
|
253
|
+
}
|
|
254
|
+
if (params.remove && params.remove.length > 0) {
|
|
255
|
+
const stmt = this.db.prepare(`
|
|
256
|
+
DELETE FROM project_allowlists
|
|
257
|
+
WHERE project_id = ? AND concept_id = ?
|
|
258
|
+
`);
|
|
259
|
+
const removed = [];
|
|
260
|
+
for (const conceptId of params.remove) {
|
|
261
|
+
const res = stmt.run(params.projectId, conceptId);
|
|
262
|
+
if (res.changes > 0) {
|
|
263
|
+
removed.push(conceptId);
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
result.removed = removed;
|
|
267
|
+
}
|
|
268
|
+
if (params.list) {
|
|
269
|
+
const stmt = this.db.prepare(`
|
|
270
|
+
SELECT concept_id FROM project_allowlists
|
|
271
|
+
WHERE project_id = ?
|
|
272
|
+
ORDER BY added_at DESC
|
|
273
|
+
`);
|
|
274
|
+
const rows = stmt.all(params.projectId);
|
|
275
|
+
result.allowlist = rows.map(r => r.concept_id);
|
|
276
|
+
}
|
|
277
|
+
return result;
|
|
278
|
+
}
|
|
279
|
+
linkToProject(conceptId, projectId) {
|
|
280
|
+
const concept = this.get(conceptId);
|
|
281
|
+
if (!concept) {
|
|
282
|
+
throw new Error(`Concept not found: ${conceptId}`);
|
|
283
|
+
}
|
|
284
|
+
// This would call the project's memory.save with the concept data
|
|
285
|
+
// For now, we'll return a placeholder
|
|
286
|
+
const memoryId = `mem_linked_${conceptId}_${Date.now()}`;
|
|
287
|
+
logger.info(`Linked concept ${conceptId} to project ${projectId} as ${memoryId}`);
|
|
288
|
+
return { memoryId };
|
|
289
|
+
}
|
|
290
|
+
generateConceptId(title) {
|
|
291
|
+
// Generate readable ID from title
|
|
292
|
+
const base = title
|
|
293
|
+
.toLowerCase()
|
|
294
|
+
.replace(/[^a-z0-9]+/g, '-')
|
|
295
|
+
.replace(/^-|-$/g, '')
|
|
296
|
+
.substring(0, 30);
|
|
297
|
+
return `${base}-v${Date.now() % 1000}`;
|
|
298
|
+
}
|
|
299
|
+
normalizeSearchQuery(query) {
|
|
300
|
+
// Handle empty or whitespace-only queries
|
|
301
|
+
if (!query || !query.trim()) {
|
|
302
|
+
return '*';
|
|
303
|
+
}
|
|
304
|
+
// Handle wildcard queries
|
|
305
|
+
if (query.trim() === '*' || query.trim() === '**') {
|
|
306
|
+
return '*';
|
|
307
|
+
}
|
|
308
|
+
// Escape FTS5 special characters and return
|
|
309
|
+
return this.escapeQuery(query.trim());
|
|
310
|
+
}
|
|
311
|
+
escapeQuery(query) {
|
|
312
|
+
return query.replace(/["]/g, '""');
|
|
313
|
+
}
|
|
314
|
+
rowToConcept(row) {
|
|
315
|
+
return {
|
|
316
|
+
id: row.id,
|
|
317
|
+
title: row.title,
|
|
318
|
+
body: row.body,
|
|
319
|
+
tags: JSON.parse(row.tags),
|
|
320
|
+
importance: row.importance,
|
|
321
|
+
created_at: row.created_at,
|
|
322
|
+
updated_at: row.updated_at
|
|
323
|
+
};
|
|
324
|
+
}
|
|
325
|
+
close() {
|
|
326
|
+
this.db.close();
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
//# sourceMappingURL=concept-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"concept-store.js","sourceRoot":"","sources":["../../src/memory-server/concept-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
export interface ContextInjection {
|
|
2
|
+
id: string;
|
|
3
|
+
type: 'memory' | 'concept';
|
|
4
|
+
summary: string;
|
|
5
|
+
content: string;
|
|
6
|
+
score: number;
|
|
7
|
+
source: string;
|
|
8
|
+
byteSize: number;
|
|
9
|
+
}
|
|
10
|
+
export interface ContextPreview {
|
|
11
|
+
injections: ContextInjection[];
|
|
12
|
+
budgetUsed: number;
|
|
13
|
+
budgetLimit: number;
|
|
14
|
+
topK: number;
|
|
15
|
+
stats: {
|
|
16
|
+
projectMatches: number;
|
|
17
|
+
pathMatches: number;
|
|
18
|
+
conceptMatches: number;
|
|
19
|
+
totalCandidates: number;
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
export declare class ContextBroker {
|
|
23
|
+
private memoryDb;
|
|
24
|
+
private conceptStore;
|
|
25
|
+
private projectId;
|
|
26
|
+
private projectRoot;
|
|
27
|
+
constructor(projectRoot: string, projectId: string);
|
|
28
|
+
preview(params: {
|
|
29
|
+
open_files?: string[];
|
|
30
|
+
task: string;
|
|
31
|
+
budget_bytes?: number;
|
|
32
|
+
top_k?: number;
|
|
33
|
+
mode?: 'hard' | 'soft' | 'smart';
|
|
34
|
+
}): Promise<ContextPreview>;
|
|
35
|
+
private scoreMemories;
|
|
36
|
+
private scoreConcepts;
|
|
37
|
+
private selectByBudget;
|
|
38
|
+
private inferPathPrefixes;
|
|
39
|
+
private pathMatchStrength;
|
|
40
|
+
private hasPathMatch;
|
|
41
|
+
/**
|
|
42
|
+
* Extract meaningful search terms from a task description
|
|
43
|
+
* This improves FTS search by focusing on key terms
|
|
44
|
+
*/
|
|
45
|
+
private extractSearchTerms;
|
|
46
|
+
private taskMatchStrength;
|
|
47
|
+
private recencyScore;
|
|
48
|
+
private formatMemoryForInjection;
|
|
49
|
+
private formatConceptForInjection;
|
|
50
|
+
private normalizeForDedupe;
|
|
51
|
+
private getProjectAllowlist;
|
|
52
|
+
private contextRules;
|
|
53
|
+
getRules(): {
|
|
54
|
+
maxMemoryAge: number;
|
|
55
|
+
minImportance: number;
|
|
56
|
+
pathBoostMultiplier: number;
|
|
57
|
+
conceptImportanceThreshold: number;
|
|
58
|
+
dedupeThreshold: number;
|
|
59
|
+
};
|
|
60
|
+
setRules(rules: Partial<typeof this.contextRules>): void;
|
|
61
|
+
close(): void;
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=context-broker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-broker.d.ts","sourceRoot":"","sources":["../../src/memory-server/context-broker.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,gBAAgB,EAAE,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE;QACL,cAAc,EAAE,MAAM,CAAC;QACvB,WAAW,EAAE,MAAM,CAAC;QACpB,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAS;gBAEhB,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAO5C,OAAO,CAAC,MAAM,EAAE;QACpB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;QACtB,IAAI,EAAE,MAAM,CAAC;QACb,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;KAClC,GAAG,OAAO,CAAC,cAAc,CAAC;IA+E3B,OAAO,CAAC,aAAa;IAqErB,OAAO,CAAC,aAAa;IAmCrB,OAAO,CAAC,cAAc;IA2BtB,OAAO,CAAC,iBAAiB;IAuBzB,OAAO,CAAC,iBAAiB;IA8BzB,OAAO,CAAC,YAAY;IAIpB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IA+B1B,OAAO,CAAC,iBAAiB;IA2BzB,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,wBAAwB;IAiBhC,OAAO,CAAC,yBAAyB;IAIjC,OAAO,CAAC,kBAAkB;YAQZ,mBAAmB;IAcjC,OAAO,CAAC,YAAY,CAMlB;IAEF,QAAQ;;;;;;;IAIR,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,IAAI,CAAC,YAAY,CAAC;IAKjD,KAAK;CAGN"}
|