wyrm-mcp 3.2.0 → 3.3.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/README.md +1 -1
- package/dist/database.d.ts +0 -1
- package/dist/database.d.ts.map +1 -1
- package/dist/database.js +9 -205
- package/dist/database.js.map +1 -1
- package/dist/index.js +839 -39
- package/dist/index.js.map +1 -1
- package/dist/indexer.d.ts +84 -0
- package/dist/indexer.d.ts.map +1 -0
- package/dist/indexer.js +160 -0
- package/dist/indexer.js.map +1 -0
- package/dist/intelligence.d.ts +116 -0
- package/dist/intelligence.d.ts.map +1 -0
- package/dist/intelligence.js +278 -0
- package/dist/intelligence.js.map +1 -0
- package/dist/knowledge-graph.d.ts +113 -0
- package/dist/knowledge-graph.d.ts.map +1 -0
- package/dist/knowledge-graph.js +235 -0
- package/dist/knowledge-graph.js.map +1 -0
- package/dist/memory-artifacts.d.ts +106 -0
- package/dist/memory-artifacts.d.ts.map +1 -0
- package/dist/memory-artifacts.js +291 -0
- package/dist/memory-artifacts.js.map +1 -0
- package/dist/migrations.d.ts +31 -0
- package/dist/migrations.d.ts.map +1 -0
- package/dist/migrations.js +525 -0
- package/dist/migrations.js.map +1 -0
- package/dist/providers/embedding-provider.d.ts +81 -0
- package/dist/providers/embedding-provider.d.ts.map +1 -0
- package/dist/providers/embedding-provider.js +149 -0
- package/dist/providers/embedding-provider.js.map +1 -0
- package/dist/security.js +1 -1
- package/dist/security.js.map +1 -1
- package/dist/vectors.d.ts +32 -48
- package/dist/vectors.d.ts.map +1 -1
- package/dist/vectors.js +119 -225
- package/dist/vectors.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-artifacts.js","sourceRoot":"","sources":["../src/memory-artifacts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wyrm Database Migrations — Versioned schema management
|
|
3
|
+
*
|
|
4
|
+
* @copyright 2026 Ghost Protocol (Pvt) Ltd. All Rights Reserved.
|
|
5
|
+
* @license Proprietary - See LICENSE file for details.
|
|
6
|
+
*
|
|
7
|
+
* Each migration is a function that receives a better-sqlite3 Database instance.
|
|
8
|
+
* Migrations run in order and are tracked in the schema_versions table.
|
|
9
|
+
* Once applied, a migration is never re-run.
|
|
10
|
+
*/
|
|
11
|
+
import type Database from 'better-sqlite3';
|
|
12
|
+
export interface Migration {
|
|
13
|
+
version: number;
|
|
14
|
+
description: string;
|
|
15
|
+
up: (db: Database.Database) => void;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* All migrations in order. Append new migrations to the end — never modify existing ones.
|
|
19
|
+
*/
|
|
20
|
+
export declare const migrations: Migration[];
|
|
21
|
+
/**
|
|
22
|
+
* Run all pending migrations on the database.
|
|
23
|
+
* Creates the schema_versions table if it doesn't exist.
|
|
24
|
+
* Returns the list of migrations that were applied.
|
|
25
|
+
*/
|
|
26
|
+
export declare function runMigrations(db: Database.Database): Migration[];
|
|
27
|
+
/**
|
|
28
|
+
* Get the current schema version.
|
|
29
|
+
*/
|
|
30
|
+
export declare function getSchemaVersion(db: Database.Database): number;
|
|
31
|
+
//# sourceMappingURL=migrations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../src/migrations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,EAAE,EAAE,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,KAAK,IAAI,CAAC;CACrC;AAED;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,SAAS,EAwdjC,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,SAAS,EAAE,CAiChE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAQ9D"}
|
|
@@ -0,0 +1,525 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wyrm Database Migrations — Versioned schema management
|
|
3
|
+
*
|
|
4
|
+
* @copyright 2026 Ghost Protocol (Pvt) Ltd. All Rights Reserved.
|
|
5
|
+
* @license Proprietary - See LICENSE file for details.
|
|
6
|
+
*
|
|
7
|
+
* Each migration is a function that receives a better-sqlite3 Database instance.
|
|
8
|
+
* Migrations run in order and are tracked in the schema_versions table.
|
|
9
|
+
* Once applied, a migration is never re-run.
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* All migrations in order. Append new migrations to the end — never modify existing ones.
|
|
13
|
+
*/
|
|
14
|
+
export const migrations = [
|
|
15
|
+
{
|
|
16
|
+
version: 1,
|
|
17
|
+
description: 'Baseline schema — projects, sessions, quests, context, data_lake, skills, FTS5',
|
|
18
|
+
up: (db) => {
|
|
19
|
+
db.exec(`
|
|
20
|
+
-- Core tables
|
|
21
|
+
CREATE TABLE IF NOT EXISTS projects (
|
|
22
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
23
|
+
name TEXT NOT NULL,
|
|
24
|
+
path TEXT UNIQUE NOT NULL,
|
|
25
|
+
repo TEXT,
|
|
26
|
+
stack TEXT,
|
|
27
|
+
last_commit TEXT,
|
|
28
|
+
branch TEXT,
|
|
29
|
+
created_at TEXT DEFAULT (datetime('now')),
|
|
30
|
+
updated_at TEXT DEFAULT (datetime('now'))
|
|
31
|
+
);
|
|
32
|
+
|
|
33
|
+
CREATE TABLE IF NOT EXISTS sessions (
|
|
34
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
35
|
+
project_id INTEGER NOT NULL,
|
|
36
|
+
date TEXT NOT NULL,
|
|
37
|
+
objectives TEXT,
|
|
38
|
+
completed TEXT,
|
|
39
|
+
issues TEXT,
|
|
40
|
+
commits TEXT,
|
|
41
|
+
files_changed TEXT,
|
|
42
|
+
notes TEXT,
|
|
43
|
+
summary TEXT,
|
|
44
|
+
tokens_estimate INTEGER DEFAULT 0,
|
|
45
|
+
is_archived INTEGER DEFAULT 0,
|
|
46
|
+
created_at TEXT DEFAULT (datetime('now')),
|
|
47
|
+
FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE
|
|
48
|
+
);
|
|
49
|
+
|
|
50
|
+
CREATE TABLE IF NOT EXISTS quests (
|
|
51
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
52
|
+
project_id INTEGER NOT NULL,
|
|
53
|
+
title TEXT NOT NULL,
|
|
54
|
+
description TEXT,
|
|
55
|
+
priority TEXT DEFAULT 'medium',
|
|
56
|
+
status TEXT DEFAULT 'pending',
|
|
57
|
+
tags TEXT,
|
|
58
|
+
created_at TEXT DEFAULT (datetime('now')),
|
|
59
|
+
completed_at TEXT,
|
|
60
|
+
FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE
|
|
61
|
+
);
|
|
62
|
+
|
|
63
|
+
CREATE TABLE IF NOT EXISTS context (
|
|
64
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
65
|
+
project_id INTEGER NOT NULL,
|
|
66
|
+
key TEXT NOT NULL,
|
|
67
|
+
value TEXT,
|
|
68
|
+
updated_at TEXT DEFAULT (datetime('now')),
|
|
69
|
+
UNIQUE(project_id, key),
|
|
70
|
+
FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE
|
|
71
|
+
);
|
|
72
|
+
|
|
73
|
+
-- Data lake tables for large datasets
|
|
74
|
+
CREATE TABLE IF NOT EXISTS data_lake (
|
|
75
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
76
|
+
project_id INTEGER NOT NULL,
|
|
77
|
+
category TEXT NOT NULL,
|
|
78
|
+
key TEXT NOT NULL,
|
|
79
|
+
value TEXT,
|
|
80
|
+
metadata TEXT,
|
|
81
|
+
created_at TEXT DEFAULT (datetime('now')),
|
|
82
|
+
FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE
|
|
83
|
+
);
|
|
84
|
+
|
|
85
|
+
-- Watch directories for auto-discovery
|
|
86
|
+
CREATE TABLE IF NOT EXISTS watch_dirs (
|
|
87
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
88
|
+
path TEXT UNIQUE NOT NULL,
|
|
89
|
+
recursive INTEGER DEFAULT 1,
|
|
90
|
+
last_scan TEXT
|
|
91
|
+
);
|
|
92
|
+
|
|
93
|
+
-- Global context (cross-project)
|
|
94
|
+
CREATE TABLE IF NOT EXISTS global_context (
|
|
95
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
96
|
+
key TEXT UNIQUE NOT NULL,
|
|
97
|
+
value TEXT,
|
|
98
|
+
updated_at TEXT DEFAULT (datetime('now'))
|
|
99
|
+
);
|
|
100
|
+
|
|
101
|
+
-- Skills management for Copilot skill integration
|
|
102
|
+
CREATE TABLE IF NOT EXISTS skills (
|
|
103
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
104
|
+
name TEXT UNIQUE NOT NULL,
|
|
105
|
+
description TEXT,
|
|
106
|
+
skill_path TEXT NOT NULL,
|
|
107
|
+
category TEXT,
|
|
108
|
+
author TEXT,
|
|
109
|
+
version TEXT,
|
|
110
|
+
tags TEXT,
|
|
111
|
+
is_active INTEGER DEFAULT 1,
|
|
112
|
+
usage_count INTEGER DEFAULT 0,
|
|
113
|
+
last_used TEXT,
|
|
114
|
+
created_at TEXT DEFAULT (datetime('now')),
|
|
115
|
+
updated_at TEXT DEFAULT (datetime('now'))
|
|
116
|
+
);
|
|
117
|
+
|
|
118
|
+
-- Indexes for performance
|
|
119
|
+
CREATE INDEX IF NOT EXISTS idx_sessions_project ON sessions(project_id);
|
|
120
|
+
CREATE INDEX IF NOT EXISTS idx_sessions_date ON sessions(date);
|
|
121
|
+
CREATE INDEX IF NOT EXISTS idx_sessions_archived ON sessions(is_archived);
|
|
122
|
+
CREATE INDEX IF NOT EXISTS idx_quests_project ON quests(project_id);
|
|
123
|
+
CREATE INDEX IF NOT EXISTS idx_quests_status ON quests(status);
|
|
124
|
+
CREATE INDEX IF NOT EXISTS idx_quests_priority ON quests(priority);
|
|
125
|
+
CREATE INDEX IF NOT EXISTS idx_context_project ON context(project_id);
|
|
126
|
+
CREATE INDEX IF NOT EXISTS idx_data_lake_project ON data_lake(project_id);
|
|
127
|
+
CREATE INDEX IF NOT EXISTS idx_data_lake_category ON data_lake(category);
|
|
128
|
+
CREATE INDEX IF NOT EXISTS idx_data_lake_key ON data_lake(key);
|
|
129
|
+
CREATE INDEX IF NOT EXISTS idx_skills_name ON skills(name);
|
|
130
|
+
CREATE INDEX IF NOT EXISTS idx_skills_category ON skills(category);
|
|
131
|
+
CREATE INDEX IF NOT EXISTS idx_skills_active ON skills(is_active);
|
|
132
|
+
|
|
133
|
+
-- Full-text search for fast queries
|
|
134
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS sessions_fts USING fts5(
|
|
135
|
+
objectives, completed, issues, notes, summary,
|
|
136
|
+
content='sessions', content_rowid='id'
|
|
137
|
+
);
|
|
138
|
+
|
|
139
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS quests_fts USING fts5(
|
|
140
|
+
title, description,
|
|
141
|
+
content='quests', content_rowid='id'
|
|
142
|
+
);
|
|
143
|
+
|
|
144
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS data_lake_fts USING fts5(
|
|
145
|
+
key, value,
|
|
146
|
+
content='data_lake', content_rowid='id'
|
|
147
|
+
);
|
|
148
|
+
|
|
149
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS skills_fts USING fts5(
|
|
150
|
+
name, description, tags,
|
|
151
|
+
content='skills', content_rowid='id'
|
|
152
|
+
);
|
|
153
|
+
|
|
154
|
+
-- Triggers to keep FTS in sync
|
|
155
|
+
CREATE TRIGGER IF NOT EXISTS sessions_ai AFTER INSERT ON sessions BEGIN
|
|
156
|
+
INSERT INTO sessions_fts(rowid, objectives, completed, issues, notes, summary)
|
|
157
|
+
VALUES (new.id, new.objectives, new.completed, new.issues, new.notes, new.summary);
|
|
158
|
+
END;
|
|
159
|
+
|
|
160
|
+
CREATE TRIGGER IF NOT EXISTS sessions_ad AFTER DELETE ON sessions BEGIN
|
|
161
|
+
INSERT INTO sessions_fts(sessions_fts, rowid, objectives, completed, issues, notes, summary)
|
|
162
|
+
VALUES('delete', old.id, old.objectives, old.completed, old.issues, old.notes, old.summary);
|
|
163
|
+
END;
|
|
164
|
+
|
|
165
|
+
CREATE TRIGGER IF NOT EXISTS quests_ai AFTER INSERT ON quests BEGIN
|
|
166
|
+
INSERT INTO quests_fts(rowid, title, description) VALUES (new.id, new.title, new.description);
|
|
167
|
+
END;
|
|
168
|
+
|
|
169
|
+
CREATE TRIGGER IF NOT EXISTS quests_ad AFTER DELETE ON quests BEGIN
|
|
170
|
+
INSERT INTO quests_fts(quests_fts, rowid, title, description)
|
|
171
|
+
VALUES('delete', old.id, old.title, old.description);
|
|
172
|
+
END;
|
|
173
|
+
|
|
174
|
+
CREATE TRIGGER IF NOT EXISTS skills_ai AFTER INSERT ON skills BEGIN
|
|
175
|
+
INSERT INTO skills_fts(rowid, name, description, tags) VALUES (new.id, new.name, new.description, new.tags);
|
|
176
|
+
END;
|
|
177
|
+
|
|
178
|
+
CREATE TRIGGER IF NOT EXISTS skills_ad AFTER DELETE ON skills BEGIN
|
|
179
|
+
INSERT INTO skills_fts(skills_fts, rowid, name, description, tags)
|
|
180
|
+
VALUES('delete', old.id, old.name, old.description, old.tags);
|
|
181
|
+
END;
|
|
182
|
+
|
|
183
|
+
-- UPDATE triggers to keep FTS in sync on updates
|
|
184
|
+
CREATE TRIGGER IF NOT EXISTS sessions_au AFTER UPDATE ON sessions BEGIN
|
|
185
|
+
INSERT INTO sessions_fts(sessions_fts, rowid, objectives, completed, issues, notes, summary)
|
|
186
|
+
VALUES('delete', old.id, old.objectives, old.completed, old.issues, old.notes, old.summary);
|
|
187
|
+
INSERT INTO sessions_fts(rowid, objectives, completed, issues, notes, summary)
|
|
188
|
+
VALUES (new.id, new.objectives, new.completed, new.issues, new.notes, new.summary);
|
|
189
|
+
END;
|
|
190
|
+
|
|
191
|
+
CREATE TRIGGER IF NOT EXISTS quests_au AFTER UPDATE ON quests BEGIN
|
|
192
|
+
INSERT INTO quests_fts(quests_fts, rowid, title, description)
|
|
193
|
+
VALUES('delete', old.id, old.title, old.description);
|
|
194
|
+
INSERT INTO quests_fts(rowid, title, description) VALUES (new.id, new.title, new.description);
|
|
195
|
+
END;
|
|
196
|
+
|
|
197
|
+
CREATE TRIGGER IF NOT EXISTS skills_au AFTER UPDATE ON skills BEGIN
|
|
198
|
+
INSERT INTO skills_fts(skills_fts, rowid, name, description, tags)
|
|
199
|
+
VALUES('delete', old.id, old.name, old.description, old.tags);
|
|
200
|
+
INSERT INTO skills_fts(rowid, name, description, tags) VALUES (new.id, new.name, new.description, new.tags);
|
|
201
|
+
END;
|
|
202
|
+
|
|
203
|
+
-- data_lake FTS triggers
|
|
204
|
+
CREATE TRIGGER IF NOT EXISTS data_lake_ai AFTER INSERT ON data_lake BEGIN
|
|
205
|
+
INSERT INTO data_lake_fts(rowid, key, value) VALUES (new.id, new.key, new.value);
|
|
206
|
+
END;
|
|
207
|
+
|
|
208
|
+
CREATE TRIGGER IF NOT EXISTS data_lake_ad AFTER DELETE ON data_lake BEGIN
|
|
209
|
+
INSERT INTO data_lake_fts(data_lake_fts, rowid, key, value)
|
|
210
|
+
VALUES('delete', old.id, old.key, old.value);
|
|
211
|
+
END;
|
|
212
|
+
|
|
213
|
+
CREATE TRIGGER IF NOT EXISTS data_lake_au AFTER UPDATE ON data_lake BEGIN
|
|
214
|
+
INSERT INTO data_lake_fts(data_lake_fts, rowid, key, value)
|
|
215
|
+
VALUES('delete', old.id, old.key, old.value);
|
|
216
|
+
INSERT INTO data_lake_fts(rowid, key, value) VALUES (new.id, new.key, new.value);
|
|
217
|
+
END;
|
|
218
|
+
`);
|
|
219
|
+
},
|
|
220
|
+
},
|
|
221
|
+
{
|
|
222
|
+
version: 2,
|
|
223
|
+
description: 'Add usage_events table for analytics tracking',
|
|
224
|
+
up: (db) => {
|
|
225
|
+
db.exec(`
|
|
226
|
+
CREATE TABLE IF NOT EXISTS usage_events (
|
|
227
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
228
|
+
tool_name TEXT NOT NULL,
|
|
229
|
+
tokens_in INTEGER,
|
|
230
|
+
tokens_out INTEGER,
|
|
231
|
+
cached INTEGER,
|
|
232
|
+
response_ms INTEGER,
|
|
233
|
+
success INTEGER,
|
|
234
|
+
error_message TEXT,
|
|
235
|
+
timestamp TEXT DEFAULT (datetime('now'))
|
|
236
|
+
);
|
|
237
|
+
CREATE INDEX IF NOT EXISTS idx_usage_timestamp ON usage_events(timestamp);
|
|
238
|
+
`);
|
|
239
|
+
},
|
|
240
|
+
},
|
|
241
|
+
{
|
|
242
|
+
version: 3,
|
|
243
|
+
description: 'Add visibility and created_by columns for future multi-user support',
|
|
244
|
+
up: (db) => {
|
|
245
|
+
// Add visibility + created_by to tables that will need them.
|
|
246
|
+
// Using ALTER TABLE with defaults so existing rows get sensible values.
|
|
247
|
+
const tables = ['sessions', 'quests', 'context', 'data_lake'];
|
|
248
|
+
for (const table of tables) {
|
|
249
|
+
// Check if column already exists (idempotent)
|
|
250
|
+
const cols = db.prepare(`PRAGMA table_info(${table})`).all();
|
|
251
|
+
const colNames = cols.map(c => c.name);
|
|
252
|
+
if (!colNames.includes('visibility')) {
|
|
253
|
+
db.exec(`ALTER TABLE ${table} ADD COLUMN visibility TEXT DEFAULT 'private'`);
|
|
254
|
+
}
|
|
255
|
+
if (!colNames.includes('created_by')) {
|
|
256
|
+
db.exec(`ALTER TABLE ${table} ADD COLUMN created_by TEXT DEFAULT 'local'`);
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
},
|
|
260
|
+
},
|
|
261
|
+
{
|
|
262
|
+
version: 4,
|
|
263
|
+
description: 'Knowledge graph — entities, aliases, relationships with FTS5',
|
|
264
|
+
up: (db) => {
|
|
265
|
+
db.exec(`
|
|
266
|
+
-- Entities: named things that can be linked together
|
|
267
|
+
CREATE TABLE IF NOT EXISTS entities (
|
|
268
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
269
|
+
project_id INTEGER NOT NULL,
|
|
270
|
+
name TEXT NOT NULL,
|
|
271
|
+
type TEXT NOT NULL DEFAULT 'concept',
|
|
272
|
+
metadata TEXT,
|
|
273
|
+
created_by TEXT DEFAULT 'local',
|
|
274
|
+
created_at TEXT DEFAULT (datetime('now')),
|
|
275
|
+
updated_at TEXT DEFAULT (datetime('now')),
|
|
276
|
+
FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE
|
|
277
|
+
);
|
|
278
|
+
CREATE INDEX IF NOT EXISTS idx_entities_project ON entities(project_id);
|
|
279
|
+
CREATE INDEX IF NOT EXISTS idx_entities_type ON entities(type);
|
|
280
|
+
CREATE UNIQUE INDEX IF NOT EXISTS idx_entities_name_project ON entities(project_id, name, type);
|
|
281
|
+
|
|
282
|
+
-- Entity aliases for dedup via manual merge
|
|
283
|
+
CREATE TABLE IF NOT EXISTS entity_aliases (
|
|
284
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
285
|
+
entity_id INTEGER NOT NULL,
|
|
286
|
+
alias TEXT NOT NULL,
|
|
287
|
+
created_at TEXT DEFAULT (datetime('now')),
|
|
288
|
+
UNIQUE(entity_id, alias),
|
|
289
|
+
FOREIGN KEY (entity_id) REFERENCES entities(id) ON DELETE CASCADE
|
|
290
|
+
);
|
|
291
|
+
CREATE INDEX IF NOT EXISTS idx_entity_aliases_entity ON entity_aliases(entity_id);
|
|
292
|
+
CREATE INDEX IF NOT EXISTS idx_entity_aliases_alias ON entity_aliases(alias);
|
|
293
|
+
|
|
294
|
+
-- Relationships between entities — directed, typed, with provenance
|
|
295
|
+
CREATE TABLE IF NOT EXISTS relationships (
|
|
296
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
297
|
+
project_id INTEGER NOT NULL,
|
|
298
|
+
source_entity_id INTEGER NOT NULL,
|
|
299
|
+
target_entity_id INTEGER NOT NULL,
|
|
300
|
+
relationship_type TEXT NOT NULL,
|
|
301
|
+
weight REAL DEFAULT 1.0,
|
|
302
|
+
confidence REAL DEFAULT 1.0,
|
|
303
|
+
source_memory TEXT,
|
|
304
|
+
extraction_method TEXT DEFAULT 'manual',
|
|
305
|
+
metadata TEXT,
|
|
306
|
+
created_by TEXT DEFAULT 'local',
|
|
307
|
+
created_at TEXT DEFAULT (datetime('now')),
|
|
308
|
+
FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE,
|
|
309
|
+
FOREIGN KEY (source_entity_id) REFERENCES entities(id) ON DELETE CASCADE,
|
|
310
|
+
FOREIGN KEY (target_entity_id) REFERENCES entities(id) ON DELETE CASCADE
|
|
311
|
+
);
|
|
312
|
+
CREATE INDEX IF NOT EXISTS idx_relationships_project ON relationships(project_id);
|
|
313
|
+
CREATE INDEX IF NOT EXISTS idx_relationships_source ON relationships(source_entity_id);
|
|
314
|
+
CREATE INDEX IF NOT EXISTS idx_relationships_target ON relationships(target_entity_id);
|
|
315
|
+
CREATE INDEX IF NOT EXISTS idx_relationships_type ON relationships(relationship_type);
|
|
316
|
+
|
|
317
|
+
-- Full-text search on entities
|
|
318
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS entities_fts USING fts5(
|
|
319
|
+
name, type, metadata,
|
|
320
|
+
content='entities', content_rowid='id'
|
|
321
|
+
);
|
|
322
|
+
|
|
323
|
+
-- FTS triggers for entities
|
|
324
|
+
CREATE TRIGGER IF NOT EXISTS entities_ai AFTER INSERT ON entities BEGIN
|
|
325
|
+
INSERT INTO entities_fts(rowid, name, type, metadata)
|
|
326
|
+
VALUES (new.id, new.name, new.type, new.metadata);
|
|
327
|
+
END;
|
|
328
|
+
|
|
329
|
+
CREATE TRIGGER IF NOT EXISTS entities_ad AFTER DELETE ON entities BEGIN
|
|
330
|
+
INSERT INTO entities_fts(entities_fts, rowid, name, type, metadata)
|
|
331
|
+
VALUES('delete', old.id, old.name, old.type, old.metadata);
|
|
332
|
+
END;
|
|
333
|
+
|
|
334
|
+
CREATE TRIGGER IF NOT EXISTS entities_au AFTER UPDATE ON entities BEGIN
|
|
335
|
+
INSERT INTO entities_fts(entities_fts, rowid, name, type, metadata)
|
|
336
|
+
VALUES('delete', old.id, old.name, old.type, old.metadata);
|
|
337
|
+
INSERT INTO entities_fts(rowid, name, type, metadata)
|
|
338
|
+
VALUES (new.id, new.name, new.type, new.metadata);
|
|
339
|
+
END;
|
|
340
|
+
`);
|
|
341
|
+
},
|
|
342
|
+
},
|
|
343
|
+
{
|
|
344
|
+
version: 5,
|
|
345
|
+
description: 'Memory artifacts — distilled knowledge for intelligence amplification',
|
|
346
|
+
up: (db) => {
|
|
347
|
+
db.exec(`
|
|
348
|
+
-- Memory artifacts: distilled problem-solution records, lessons, patterns, anti-patterns.
|
|
349
|
+
-- Used by wyrm_context_build to assemble task-specific memory briefs for AI models.
|
|
350
|
+
CREATE TABLE IF NOT EXISTS memory_artifacts (
|
|
351
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
352
|
+
project_id INTEGER NOT NULL,
|
|
353
|
+
kind TEXT NOT NULL CHECK(kind IN ('reasoning_trace', 'lesson', 'pattern', 'anti_pattern', 'heuristic')),
|
|
354
|
+
problem TEXT NOT NULL,
|
|
355
|
+
constraints TEXT,
|
|
356
|
+
validated_fix TEXT,
|
|
357
|
+
why_it_worked TEXT,
|
|
358
|
+
outcome TEXT CHECK(outcome IN ('positive', 'negative', 'neutral')) DEFAULT 'neutral',
|
|
359
|
+
source_session_id INTEGER,
|
|
360
|
+
tags TEXT,
|
|
361
|
+
confidence REAL DEFAULT 1.0 CHECK(confidence BETWEEN 0.0 AND 1.0),
|
|
362
|
+
last_validated_at TEXT DEFAULT (datetime('now')),
|
|
363
|
+
supersedes_id INTEGER,
|
|
364
|
+
reuse_count INTEGER DEFAULT 0,
|
|
365
|
+
reuse_success_count INTEGER DEFAULT 0,
|
|
366
|
+
reuse_failure_count INTEGER DEFAULT 0,
|
|
367
|
+
created_by TEXT DEFAULT 'local',
|
|
368
|
+
created_at TEXT DEFAULT (datetime('now')),
|
|
369
|
+
updated_at TEXT DEFAULT (datetime('now')),
|
|
370
|
+
FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE,
|
|
371
|
+
FOREIGN KEY (source_session_id) REFERENCES sessions(id) ON DELETE SET NULL,
|
|
372
|
+
FOREIGN KEY (supersedes_id) REFERENCES memory_artifacts(id) ON DELETE SET NULL
|
|
373
|
+
);
|
|
374
|
+
CREATE INDEX IF NOT EXISTS idx_artifacts_project ON memory_artifacts(project_id);
|
|
375
|
+
CREATE INDEX IF NOT EXISTS idx_artifacts_kind ON memory_artifacts(kind);
|
|
376
|
+
CREATE INDEX IF NOT EXISTS idx_artifacts_outcome ON memory_artifacts(outcome);
|
|
377
|
+
CREATE INDEX IF NOT EXISTS idx_artifacts_confidence ON memory_artifacts(confidence DESC);
|
|
378
|
+
CREATE INDEX IF NOT EXISTS idx_artifacts_supersedes ON memory_artifacts(supersedes_id);
|
|
379
|
+
|
|
380
|
+
-- Full-text search on memory artifacts
|
|
381
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS memory_artifacts_fts USING fts5(
|
|
382
|
+
problem, constraints, validated_fix, why_it_worked, tags,
|
|
383
|
+
content='memory_artifacts', content_rowid='id'
|
|
384
|
+
);
|
|
385
|
+
|
|
386
|
+
CREATE TRIGGER IF NOT EXISTS artifacts_ai AFTER INSERT ON memory_artifacts BEGIN
|
|
387
|
+
INSERT INTO memory_artifacts_fts(rowid, problem, constraints, validated_fix, why_it_worked, tags)
|
|
388
|
+
VALUES (new.id, new.problem, new.constraints, new.validated_fix, new.why_it_worked, new.tags);
|
|
389
|
+
END;
|
|
390
|
+
|
|
391
|
+
CREATE TRIGGER IF NOT EXISTS artifacts_ad AFTER DELETE ON memory_artifacts BEGIN
|
|
392
|
+
INSERT INTO memory_artifacts_fts(memory_artifacts_fts, rowid, problem, constraints, validated_fix, why_it_worked, tags)
|
|
393
|
+
VALUES('delete', old.id, old.problem, old.constraints, old.validated_fix, old.why_it_worked, old.tags);
|
|
394
|
+
END;
|
|
395
|
+
|
|
396
|
+
CREATE TRIGGER IF NOT EXISTS artifacts_au AFTER UPDATE ON memory_artifacts BEGIN
|
|
397
|
+
INSERT INTO memory_artifacts_fts(memory_artifacts_fts, rowid, problem, constraints, validated_fix, why_it_worked, tags)
|
|
398
|
+
VALUES('delete', old.id, old.problem, old.constraints, old.validated_fix, old.why_it_worked, old.tags);
|
|
399
|
+
INSERT INTO memory_artifacts_fts(rowid, problem, constraints, validated_fix, why_it_worked, tags)
|
|
400
|
+
VALUES (new.id, new.problem, new.constraints, new.validated_fix, new.why_it_worked, new.tags);
|
|
401
|
+
END;
|
|
402
|
+
`);
|
|
403
|
+
},
|
|
404
|
+
},
|
|
405
|
+
{
|
|
406
|
+
version: 6,
|
|
407
|
+
description: 'Intelligence amplification — ground truths, reasoning scaffolds, distillation review queue',
|
|
408
|
+
up: (db) => {
|
|
409
|
+
db.exec(`
|
|
410
|
+
-- Ground truths: authoritative, versioned project facts.
|
|
411
|
+
-- Use is_current=1 for the live value. Superseded rows kept for history.
|
|
412
|
+
CREATE TABLE IF NOT EXISTS ground_truths (
|
|
413
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
414
|
+
project_id INTEGER NOT NULL,
|
|
415
|
+
category TEXT NOT NULL, -- 'tech_stack', 'architecture', 'constraint', 'decision', 'contact'
|
|
416
|
+
key TEXT NOT NULL, -- 'database', 'auth_method', 'deployment_target', ...
|
|
417
|
+
value TEXT NOT NULL, -- 'PostgreSQL 15', 'JWT with refresh tokens', ...
|
|
418
|
+
rationale TEXT, -- WHY this was decided
|
|
419
|
+
source TEXT, -- 'team_decision', 'adr-001', session ID, URL, etc.
|
|
420
|
+
is_current INTEGER NOT NULL DEFAULT 1,
|
|
421
|
+
supersedes_id INTEGER,
|
|
422
|
+
confidence REAL DEFAULT 1.0 CHECK(confidence BETWEEN 0.0 AND 1.0),
|
|
423
|
+
last_verified_at TEXT DEFAULT (datetime('now')),
|
|
424
|
+
created_at TEXT DEFAULT (datetime('now')),
|
|
425
|
+
updated_at TEXT DEFAULT (datetime('now')),
|
|
426
|
+
FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE,
|
|
427
|
+
FOREIGN KEY (supersedes_id) REFERENCES ground_truths(id) ON DELETE SET NULL
|
|
428
|
+
);
|
|
429
|
+
CREATE INDEX IF NOT EXISTS idx_ground_truths_project ON ground_truths(project_id);
|
|
430
|
+
CREATE INDEX IF NOT EXISTS idx_ground_truths_current ON ground_truths(project_id, is_current);
|
|
431
|
+
CREATE INDEX IF NOT EXISTS idx_ground_truths_key ON ground_truths(project_id, category, key);
|
|
432
|
+
|
|
433
|
+
-- Reasoning scaffolds: structured thinking templates for specific task types.
|
|
434
|
+
-- Injected into AI context to force step-by-step reasoning on complex tasks.
|
|
435
|
+
CREATE TABLE IF NOT EXISTS reasoning_scaffolds (
|
|
436
|
+
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
437
|
+
project_id INTEGER, -- NULL = global scaffold (applies to all projects)
|
|
438
|
+
problem_type TEXT NOT NULL,
|
|
439
|
+
description TEXT,
|
|
440
|
+
when_to_use TEXT,
|
|
441
|
+
steps TEXT NOT NULL, -- JSON array of step strings
|
|
442
|
+
verification_steps TEXT, -- JSON array of "check X before finishing"
|
|
443
|
+
do_not_apply_if TEXT, -- JSON array of counter-conditions
|
|
444
|
+
tags TEXT, -- comma-separated tags for FTS matching
|
|
445
|
+
usage_count INTEGER DEFAULT 0,
|
|
446
|
+
success_count INTEGER DEFAULT 0,
|
|
447
|
+
confidence REAL DEFAULT 1.0 CHECK(confidence BETWEEN 0.0 AND 1.0),
|
|
448
|
+
created_at TEXT DEFAULT (datetime('now')),
|
|
449
|
+
updated_at TEXT DEFAULT (datetime('now')),
|
|
450
|
+
FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE
|
|
451
|
+
);
|
|
452
|
+
CREATE INDEX IF NOT EXISTS idx_scaffolds_project ON reasoning_scaffolds(project_id);
|
|
453
|
+
CREATE INDEX IF NOT EXISTS idx_scaffolds_confidence ON reasoning_scaffolds(confidence DESC);
|
|
454
|
+
|
|
455
|
+
-- FTS5 on scaffolds for task-type matching
|
|
456
|
+
CREATE VIRTUAL TABLE IF NOT EXISTS scaffolds_fts USING fts5(
|
|
457
|
+
problem_type, description, when_to_use, tags,
|
|
458
|
+
content='reasoning_scaffolds', content_rowid='id'
|
|
459
|
+
);
|
|
460
|
+
CREATE TRIGGER IF NOT EXISTS scaffolds_ai AFTER INSERT ON reasoning_scaffolds BEGIN
|
|
461
|
+
INSERT INTO scaffolds_fts(rowid, problem_type, description, when_to_use, tags)
|
|
462
|
+
VALUES (new.id, new.problem_type, new.description, new.when_to_use, new.tags);
|
|
463
|
+
END;
|
|
464
|
+
CREATE TRIGGER IF NOT EXISTS scaffolds_ad AFTER DELETE ON reasoning_scaffolds BEGIN
|
|
465
|
+
INSERT INTO scaffolds_fts(scaffolds_fts, rowid, problem_type, description, when_to_use, tags)
|
|
466
|
+
VALUES('delete', old.id, old.problem_type, old.description, old.when_to_use, old.tags);
|
|
467
|
+
END;
|
|
468
|
+
CREATE TRIGGER IF NOT EXISTS scaffolds_au AFTER UPDATE ON reasoning_scaffolds BEGIN
|
|
469
|
+
INSERT INTO scaffolds_fts(scaffolds_fts, rowid, problem_type, description, when_to_use, tags)
|
|
470
|
+
VALUES('delete', old.id, old.problem_type, old.description, old.when_to_use, old.tags);
|
|
471
|
+
INSERT INTO scaffolds_fts(rowid, problem_type, description, when_to_use, tags)
|
|
472
|
+
VALUES (new.id, new.problem_type, new.description, new.when_to_use, new.tags);
|
|
473
|
+
END;
|
|
474
|
+
|
|
475
|
+
-- Add distillation review flag to memory_artifacts
|
|
476
|
+
-- needs_review=1 means it was auto-created by wyrm_distill and awaits approval
|
|
477
|
+
ALTER TABLE memory_artifacts ADD COLUMN needs_review INTEGER DEFAULT 0;
|
|
478
|
+
CREATE INDEX IF NOT EXISTS idx_artifacts_review ON memory_artifacts(project_id, needs_review);
|
|
479
|
+
`);
|
|
480
|
+
},
|
|
481
|
+
},
|
|
482
|
+
];
|
|
483
|
+
/**
|
|
484
|
+
* Run all pending migrations on the database.
|
|
485
|
+
* Creates the schema_versions table if it doesn't exist.
|
|
486
|
+
* Returns the list of migrations that were applied.
|
|
487
|
+
*/
|
|
488
|
+
export function runMigrations(db) {
|
|
489
|
+
// Create the version tracking table (always safe to re-run)
|
|
490
|
+
db.exec(`
|
|
491
|
+
CREATE TABLE IF NOT EXISTS schema_versions (
|
|
492
|
+
version INTEGER PRIMARY KEY,
|
|
493
|
+
description TEXT NOT NULL,
|
|
494
|
+
applied_at TEXT DEFAULT (datetime('now'))
|
|
495
|
+
);
|
|
496
|
+
`);
|
|
497
|
+
const currentVersion = db.prepare('SELECT COALESCE(MAX(version), 0) as v FROM schema_versions').get().v;
|
|
498
|
+
const pending = migrations.filter(m => m.version > currentVersion);
|
|
499
|
+
if (pending.length === 0)
|
|
500
|
+
return [];
|
|
501
|
+
const applied = [];
|
|
502
|
+
const insertVersion = db.prepare('INSERT INTO schema_versions (version, description) VALUES (?, ?)');
|
|
503
|
+
for (const migration of pending) {
|
|
504
|
+
// Each migration runs in its own transaction for atomicity
|
|
505
|
+
const runOne = db.transaction(() => {
|
|
506
|
+
migration.up(db);
|
|
507
|
+
insertVersion.run(migration.version, migration.description);
|
|
508
|
+
});
|
|
509
|
+
runOne();
|
|
510
|
+
applied.push(migration);
|
|
511
|
+
}
|
|
512
|
+
return applied;
|
|
513
|
+
}
|
|
514
|
+
/**
|
|
515
|
+
* Get the current schema version.
|
|
516
|
+
*/
|
|
517
|
+
export function getSchemaVersion(db) {
|
|
518
|
+
try {
|
|
519
|
+
return db.prepare('SELECT COALESCE(MAX(version), 0) as v FROM schema_versions').get().v;
|
|
520
|
+
}
|
|
521
|
+
catch {
|
|
522
|
+
return 0; // schema_versions table doesn't exist yet
|
|
523
|
+
}
|
|
524
|
+
}
|
|
525
|
+
//# sourceMappingURL=migrations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrations.js","sourceRoot":"","sources":["../src/migrations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Embedding Provider Interface — Vendor-agnostic embedding generation
|
|
3
|
+
*
|
|
4
|
+
* @copyright 2026 Ghost Protocol (Pvt) Ltd. All Rights Reserved.
|
|
5
|
+
* @license Proprietary - See LICENSE file for details.
|
|
6
|
+
*
|
|
7
|
+
* All embedding providers implement this interface so the rest of Wyrm
|
|
8
|
+
* never needs to know which provider is active.
|
|
9
|
+
*/
|
|
10
|
+
export interface EmbeddingProvider {
|
|
11
|
+
/** Human-readable name for logs and UI */
|
|
12
|
+
readonly name: string;
|
|
13
|
+
/** Model identifier (e.g., 'all-MiniLM-L6-v2', 'text-embedding-3-small') */
|
|
14
|
+
readonly model: string;
|
|
15
|
+
/** Vector dimensions produced by this provider */
|
|
16
|
+
readonly dimensions: number;
|
|
17
|
+
/** Generate an embedding vector for the given text */
|
|
18
|
+
embed(text: string): Promise<Float32Array>;
|
|
19
|
+
/** Check if the provider is ready (model downloaded, API reachable, etc.) */
|
|
20
|
+
isReady(): Promise<boolean>;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Hash-based local embedding — zero dependencies, deterministic, fast.
|
|
24
|
+
* NOT semantically meaningful — useful for testing and as a fallback.
|
|
25
|
+
* Will be replaced by ONNX transformers in Phase 1.
|
|
26
|
+
*/
|
|
27
|
+
export declare class LocalHashProvider implements EmbeddingProvider {
|
|
28
|
+
readonly name = "local-hash";
|
|
29
|
+
readonly model = "hash-384";
|
|
30
|
+
readonly dimensions = 384;
|
|
31
|
+
embed(text: string): Promise<Float32Array>;
|
|
32
|
+
isReady(): Promise<boolean>;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* OpenAI embeddings via REST API.
|
|
36
|
+
*/
|
|
37
|
+
export declare class OpenAIProvider implements EmbeddingProvider {
|
|
38
|
+
readonly name = "openai";
|
|
39
|
+
readonly model: string;
|
|
40
|
+
readonly dimensions: number;
|
|
41
|
+
private apiKey;
|
|
42
|
+
constructor(apiKey: string, model?: string);
|
|
43
|
+
embed(text: string): Promise<Float32Array>;
|
|
44
|
+
isReady(): Promise<boolean>;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Ollama embeddings via local API.
|
|
48
|
+
*/
|
|
49
|
+
export declare class OllamaProvider implements EmbeddingProvider {
|
|
50
|
+
readonly name = "ollama";
|
|
51
|
+
readonly model: string;
|
|
52
|
+
readonly dimensions: number;
|
|
53
|
+
private baseUrl;
|
|
54
|
+
constructor(baseUrl?: string, model?: string);
|
|
55
|
+
embed(text: string): Promise<Float32Array>;
|
|
56
|
+
isReady(): Promise<boolean>;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* No-op provider — returns nothing, used when embeddings are disabled.
|
|
60
|
+
*/
|
|
61
|
+
export declare class NoneProvider implements EmbeddingProvider {
|
|
62
|
+
readonly name = "none";
|
|
63
|
+
readonly model = "none";
|
|
64
|
+
readonly dimensions = 0;
|
|
65
|
+
embed(_text: string): Promise<Float32Array>;
|
|
66
|
+
isReady(): Promise<boolean>;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Provider configuration — drives createProvider()
|
|
70
|
+
*/
|
|
71
|
+
export interface ProviderConfig {
|
|
72
|
+
provider: 'local' | 'openai' | 'ollama' | 'none';
|
|
73
|
+
model?: string;
|
|
74
|
+
apiKey?: string;
|
|
75
|
+
ollamaUrl?: string;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Factory: create the right provider from config / environment.
|
|
79
|
+
*/
|
|
80
|
+
export declare function createProvider(config?: Partial<ProviderConfig>): EmbeddingProvider;
|
|
81
|
+
//# sourceMappingURL=embedding-provider.d.ts.map
|