wyrm-mcp 3.2.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/LICENSE +667 -0
- package/README.md +384 -0
- package/dist/analytics.d.ts +100 -0
- package/dist/analytics.d.ts.map +1 -0
- package/dist/analytics.js +368 -0
- package/dist/analytics.js.map +1 -0
- package/dist/auto-orchestrator.d.ts +118 -0
- package/dist/auto-orchestrator.d.ts.map +1 -0
- package/dist/auto-orchestrator.js +325 -0
- package/dist/auto-orchestrator.js.map +1 -0
- package/dist/autoconfig.d.ts +89 -0
- package/dist/autoconfig.d.ts.map +1 -0
- package/dist/autoconfig.js +576 -0
- package/dist/autoconfig.js.map +1 -0
- package/dist/cli.d.ts +148 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +281 -0
- package/dist/cli.js.map +1 -0
- package/dist/cloud-backup.d.ts +100 -0
- package/dist/cloud-backup.d.ts.map +1 -0
- package/dist/cloud-backup.js +545 -0
- package/dist/cloud-backup.js.map +1 -0
- package/dist/crypto.d.ts +72 -0
- package/dist/crypto.d.ts.map +1 -0
- package/dist/crypto.js +164 -0
- package/dist/crypto.js.map +1 -0
- package/dist/database.d.ts +218 -0
- package/dist/database.d.ts.map +1 -0
- package/dist/database.js +1058 -0
- package/dist/database.js.map +1 -0
- package/dist/http-auth.d.ts +68 -0
- package/dist/http-auth.d.ts.map +1 -0
- package/dist/http-auth.js +296 -0
- package/dist/http-auth.js.map +1 -0
- package/dist/http-fast.d.ts +13 -0
- package/dist/http-fast.d.ts.map +1 -0
- package/dist/http-fast.js +325 -0
- package/dist/http-fast.js.map +1 -0
- package/dist/http-server.d.ts +12 -0
- package/dist/http-server.d.ts.map +1 -0
- package/dist/http-server.js +383 -0
- package/dist/http-server.js.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1695 -0
- package/dist/index.js.map +1 -0
- package/dist/license.d.ts +177 -0
- package/dist/license.d.ts.map +1 -0
- package/dist/license.js +405 -0
- package/dist/license.js.map +1 -0
- package/dist/logger.d.ts +76 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +195 -0
- package/dist/logger.js.map +1 -0
- package/dist/performance.d.ts +114 -0
- package/dist/performance.d.ts.map +1 -0
- package/dist/performance.js +228 -0
- package/dist/performance.js.map +1 -0
- package/dist/resilience.d.ts +146 -0
- package/dist/resilience.d.ts.map +1 -0
- package/dist/resilience.js +563 -0
- package/dist/resilience.js.map +1 -0
- package/dist/security.d.ts +68 -0
- package/dist/security.d.ts.map +1 -0
- package/dist/security.js +215 -0
- package/dist/security.js.map +1 -0
- package/dist/setup.d.ts +21 -0
- package/dist/setup.d.ts.map +1 -0
- package/dist/setup.js +261 -0
- package/dist/setup.js.map +1 -0
- package/dist/summarizer.d.ts +30 -0
- package/dist/summarizer.d.ts.map +1 -0
- package/dist/summarizer.js +139 -0
- package/dist/summarizer.js.map +1 -0
- package/dist/sync.d.ts +39 -0
- package/dist/sync.d.ts.map +1 -0
- package/dist/sync.js +356 -0
- package/dist/sync.js.map +1 -0
- package/dist/types.d.ts +267 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +30 -0
- package/dist/types.js.map +1 -0
- package/dist/vectors.d.ts +103 -0
- package/dist/vectors.d.ts.map +1 -0
- package/dist/vectors.js +311 -0
- package/dist/vectors.js.map +1 -0
- package/package.json +73 -0
package/dist/vectors.js
ADDED
|
@@ -0,0 +1,311 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wyrm Vector Embeddings - Semantic Search Support
|
|
3
|
+
*
|
|
4
|
+
* @copyright 2026 Ghost Protocol (Pvt) Ltd. All Rights Reserved.
|
|
5
|
+
* @license Proprietary - See LICENSE file for details.
|
|
6
|
+
*
|
|
7
|
+
* Features:
|
|
8
|
+
* - Local embeddings using transformers.js (no API required)
|
|
9
|
+
* - Optional OpenAI/Ollama embeddings for better quality
|
|
10
|
+
* - SQLite-based vector storage (no external DB needed)
|
|
11
|
+
* - Cosine similarity search
|
|
12
|
+
* - Automatic embedding on memory creation
|
|
13
|
+
*/
|
|
14
|
+
import { existsSync, mkdirSync, writeFileSync, readFileSync } from 'fs';
|
|
15
|
+
import { join } from 'path';
|
|
16
|
+
import { homedir } from 'os';
|
|
17
|
+
// Vector dimension for different models
|
|
18
|
+
const EMBEDDING_DIMENSIONS = {
|
|
19
|
+
'local': 384, // all-MiniLM-L6-v2 (default local)
|
|
20
|
+
'openai': 1536, // text-embedding-3-small
|
|
21
|
+
'openai-large': 3072, // text-embedding-3-large
|
|
22
|
+
'ollama': 768, // nomic-embed-text
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Simple vector storage using JSON files
|
|
26
|
+
* For production, consider using sqlite-vss or similar
|
|
27
|
+
*/
|
|
28
|
+
export class VectorStore {
|
|
29
|
+
vectors = new Map();
|
|
30
|
+
storePath;
|
|
31
|
+
config;
|
|
32
|
+
dimension;
|
|
33
|
+
constructor(config) {
|
|
34
|
+
this.config = config;
|
|
35
|
+
this.dimension = config.dimension || EMBEDDING_DIMENSIONS[config.provider] || 384;
|
|
36
|
+
const wyrmDir = join(homedir(), '.wyrm');
|
|
37
|
+
if (!existsSync(wyrmDir)) {
|
|
38
|
+
mkdirSync(wyrmDir, { recursive: true });
|
|
39
|
+
}
|
|
40
|
+
this.storePath = join(wyrmDir, 'vectors.json');
|
|
41
|
+
this.loadVectors();
|
|
42
|
+
}
|
|
43
|
+
loadVectors() {
|
|
44
|
+
if (existsSync(this.storePath)) {
|
|
45
|
+
try {
|
|
46
|
+
const data = JSON.parse(readFileSync(this.storePath, 'utf-8'));
|
|
47
|
+
for (const entry of data) {
|
|
48
|
+
// Convert array back to Float32Array
|
|
49
|
+
entry.embedding = new Float32Array(entry.embedding);
|
|
50
|
+
this.vectors.set(entry.content_hash, entry);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
catch (e) {
|
|
54
|
+
console.error('Failed to load vectors:', e);
|
|
55
|
+
this.vectors = new Map();
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
saveVectors() {
|
|
60
|
+
const data = Array.from(this.vectors.values()).map(entry => ({
|
|
61
|
+
...entry,
|
|
62
|
+
embedding: Array.from(entry.embedding), // Convert Float32Array to array for JSON
|
|
63
|
+
}));
|
|
64
|
+
writeFileSync(this.storePath, JSON.stringify(data));
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Hash content for deduplication
|
|
68
|
+
*/
|
|
69
|
+
hashContent(content) {
|
|
70
|
+
let hash = 0;
|
|
71
|
+
for (let i = 0; i < content.length; i++) {
|
|
72
|
+
const char = content.charCodeAt(i);
|
|
73
|
+
hash = ((hash << 5) - hash) + char;
|
|
74
|
+
hash = hash & hash;
|
|
75
|
+
}
|
|
76
|
+
return Math.abs(hash).toString(16);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Add or update a vector entry
|
|
80
|
+
*/
|
|
81
|
+
async addVector(content, contentType, contentId, projectId) {
|
|
82
|
+
if (this.config.provider === 'none') {
|
|
83
|
+
return null;
|
|
84
|
+
}
|
|
85
|
+
const contentHash = this.hashContent(content);
|
|
86
|
+
// Skip if already exists with same hash
|
|
87
|
+
if (this.vectors.has(contentHash)) {
|
|
88
|
+
return contentHash;
|
|
89
|
+
}
|
|
90
|
+
const embedding = await this.generateEmbedding(content);
|
|
91
|
+
if (!embedding) {
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
94
|
+
const entry = {
|
|
95
|
+
id: this.vectors.size + 1,
|
|
96
|
+
content_hash: contentHash,
|
|
97
|
+
content_type: contentType,
|
|
98
|
+
content_id: contentId,
|
|
99
|
+
project_id: projectId,
|
|
100
|
+
embedding,
|
|
101
|
+
created_at: new Date().toISOString(),
|
|
102
|
+
};
|
|
103
|
+
this.vectors.set(contentHash, entry);
|
|
104
|
+
this.saveVectors();
|
|
105
|
+
return contentHash;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Generate embedding for text
|
|
109
|
+
*/
|
|
110
|
+
async generateEmbedding(text) {
|
|
111
|
+
switch (this.config.provider) {
|
|
112
|
+
case 'local':
|
|
113
|
+
return this.generateLocalEmbedding(text);
|
|
114
|
+
case 'openai':
|
|
115
|
+
return this.generateOpenAIEmbedding(text);
|
|
116
|
+
case 'ollama':
|
|
117
|
+
return this.generateOllamaEmbedding(text);
|
|
118
|
+
default:
|
|
119
|
+
return null;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Local embedding using simple TF-IDF-like approach
|
|
124
|
+
* For production, use @xenova/transformers
|
|
125
|
+
*/
|
|
126
|
+
async generateLocalEmbedding(text) {
|
|
127
|
+
// Simple hash-based embedding (placeholder for real transformers)
|
|
128
|
+
// In production, use: import { pipeline } from '@xenova/transformers';
|
|
129
|
+
const embedding = new Float32Array(this.dimension);
|
|
130
|
+
const words = text.toLowerCase().split(/\s+/);
|
|
131
|
+
for (let i = 0; i < words.length; i++) {
|
|
132
|
+
const word = words[i];
|
|
133
|
+
for (let j = 0; j < word.length; j++) {
|
|
134
|
+
const idx = (word.charCodeAt(j) * (i + 1) * (j + 1)) % this.dimension;
|
|
135
|
+
embedding[idx] += 1 / words.length;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
// Normalize
|
|
139
|
+
const magnitude = Math.sqrt(embedding.reduce((sum, val) => sum + val * val, 0));
|
|
140
|
+
if (magnitude > 0) {
|
|
141
|
+
for (let i = 0; i < embedding.length; i++) {
|
|
142
|
+
embedding[i] /= magnitude;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
return embedding;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* OpenAI embedding API
|
|
149
|
+
*/
|
|
150
|
+
async generateOpenAIEmbedding(text) {
|
|
151
|
+
if (!this.config.apiKey) {
|
|
152
|
+
console.error('OpenAI API key not configured');
|
|
153
|
+
return null;
|
|
154
|
+
}
|
|
155
|
+
try {
|
|
156
|
+
const response = await fetch('https://api.openai.com/v1/embeddings', {
|
|
157
|
+
method: 'POST',
|
|
158
|
+
headers: {
|
|
159
|
+
'Authorization': `Bearer ${this.config.apiKey}`,
|
|
160
|
+
'Content-Type': 'application/json',
|
|
161
|
+
},
|
|
162
|
+
body: JSON.stringify({
|
|
163
|
+
input: text,
|
|
164
|
+
model: this.config.model || 'text-embedding-3-small',
|
|
165
|
+
}),
|
|
166
|
+
});
|
|
167
|
+
if (!response.ok) {
|
|
168
|
+
console.error('OpenAI API error:', response.status);
|
|
169
|
+
return null;
|
|
170
|
+
}
|
|
171
|
+
const data = await response.json();
|
|
172
|
+
return new Float32Array(data.data[0].embedding);
|
|
173
|
+
}
|
|
174
|
+
catch (e) {
|
|
175
|
+
console.error('OpenAI embedding error:', e);
|
|
176
|
+
return null;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Ollama embedding (local LLM)
|
|
181
|
+
*/
|
|
182
|
+
async generateOllamaEmbedding(text) {
|
|
183
|
+
const ollamaUrl = this.config.ollamaUrl || 'http://localhost:11434';
|
|
184
|
+
try {
|
|
185
|
+
const response = await fetch(`${ollamaUrl}/api/embeddings`, {
|
|
186
|
+
method: 'POST',
|
|
187
|
+
headers: {
|
|
188
|
+
'Content-Type': 'application/json',
|
|
189
|
+
},
|
|
190
|
+
body: JSON.stringify({
|
|
191
|
+
model: this.config.model || 'nomic-embed-text',
|
|
192
|
+
prompt: text,
|
|
193
|
+
}),
|
|
194
|
+
});
|
|
195
|
+
if (!response.ok) {
|
|
196
|
+
console.error('Ollama API error:', response.status);
|
|
197
|
+
return null;
|
|
198
|
+
}
|
|
199
|
+
const data = await response.json();
|
|
200
|
+
return new Float32Array(data.embedding);
|
|
201
|
+
}
|
|
202
|
+
catch (e) {
|
|
203
|
+
console.error('Ollama embedding error:', e);
|
|
204
|
+
return null;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Cosine similarity between two vectors
|
|
209
|
+
*/
|
|
210
|
+
cosineSimilarity(a, b) {
|
|
211
|
+
if (a.length !== b.length)
|
|
212
|
+
return 0;
|
|
213
|
+
let dotProduct = 0;
|
|
214
|
+
let magnitudeA = 0;
|
|
215
|
+
let magnitudeB = 0;
|
|
216
|
+
for (let i = 0; i < a.length; i++) {
|
|
217
|
+
dotProduct += a[i] * b[i];
|
|
218
|
+
magnitudeA += a[i] * a[i];
|
|
219
|
+
magnitudeB += b[i] * b[i];
|
|
220
|
+
}
|
|
221
|
+
const magnitude = Math.sqrt(magnitudeA) * Math.sqrt(magnitudeB);
|
|
222
|
+
return magnitude > 0 ? dotProduct / magnitude : 0;
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Search for similar content
|
|
226
|
+
*/
|
|
227
|
+
async search(query, limit = 10, projectId, contentTypes) {
|
|
228
|
+
const queryEmbedding = await this.generateEmbedding(query);
|
|
229
|
+
if (!queryEmbedding) {
|
|
230
|
+
return [];
|
|
231
|
+
}
|
|
232
|
+
const results = [];
|
|
233
|
+
for (const entry of this.vectors.values()) {
|
|
234
|
+
// Filter by project if specified
|
|
235
|
+
if (projectId !== undefined && entry.project_id !== projectId) {
|
|
236
|
+
continue;
|
|
237
|
+
}
|
|
238
|
+
// Filter by content type if specified
|
|
239
|
+
if (contentTypes && !contentTypes.includes(entry.content_type)) {
|
|
240
|
+
continue;
|
|
241
|
+
}
|
|
242
|
+
const similarity = this.cosineSimilarity(queryEmbedding, entry.embedding);
|
|
243
|
+
results.push({
|
|
244
|
+
content_type: entry.content_type,
|
|
245
|
+
content_id: entry.content_id,
|
|
246
|
+
project_id: entry.project_id,
|
|
247
|
+
similarity,
|
|
248
|
+
content_hash: entry.content_hash,
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
// Sort by similarity descending
|
|
252
|
+
results.sort((a, b) => b.similarity - a.similarity);
|
|
253
|
+
return results.slice(0, limit);
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Remove vector by content hash
|
|
257
|
+
*/
|
|
258
|
+
removeVector(contentHash) {
|
|
259
|
+
const deleted = this.vectors.delete(contentHash);
|
|
260
|
+
if (deleted) {
|
|
261
|
+
this.saveVectors();
|
|
262
|
+
}
|
|
263
|
+
return deleted;
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Clear all vectors for a project
|
|
267
|
+
*/
|
|
268
|
+
clearProjectVectors(projectId) {
|
|
269
|
+
let count = 0;
|
|
270
|
+
for (const [hash, entry] of this.vectors.entries()) {
|
|
271
|
+
if (entry.project_id === projectId) {
|
|
272
|
+
this.vectors.delete(hash);
|
|
273
|
+
count++;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
if (count > 0) {
|
|
277
|
+
this.saveVectors();
|
|
278
|
+
}
|
|
279
|
+
return count;
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* Get stats about the vector store
|
|
283
|
+
*/
|
|
284
|
+
getStats() {
|
|
285
|
+
const byType = {};
|
|
286
|
+
const byProject = {};
|
|
287
|
+
for (const entry of this.vectors.values()) {
|
|
288
|
+
byType[entry.content_type] = (byType[entry.content_type] || 0) + 1;
|
|
289
|
+
byProject[entry.project_id] = (byProject[entry.project_id] || 0) + 1;
|
|
290
|
+
}
|
|
291
|
+
return {
|
|
292
|
+
total: this.vectors.size,
|
|
293
|
+
byType,
|
|
294
|
+
byProject,
|
|
295
|
+
};
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Create a vector store instance with config
|
|
300
|
+
*/
|
|
301
|
+
export function createVectorStore(config) {
|
|
302
|
+
const fullConfig = {
|
|
303
|
+
provider: config?.provider || 'local',
|
|
304
|
+
model: config?.model,
|
|
305
|
+
apiKey: config?.apiKey || process.env.OPENAI_API_KEY,
|
|
306
|
+
ollamaUrl: config?.ollamaUrl || process.env.OLLAMA_URL,
|
|
307
|
+
dimension: config?.dimension,
|
|
308
|
+
};
|
|
309
|
+
return new VectorStore(fullConfig);
|
|
310
|
+
}
|
|
311
|
+
//# sourceMappingURL=vectors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vectors.js","sourceRoot":"","sources":["../src/vectors.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "wyrm-mcp",
|
|
3
|
+
"version": "3.2.0",
|
|
4
|
+
"description": "🐉 Wyrm - Persistent AI Memory System with encryption, full-text search, and infinite storage",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"bin": {
|
|
8
|
+
"wyrm-mcp": "dist/index.js",
|
|
9
|
+
"wyrm-http": "dist/http-server.js",
|
|
10
|
+
"wyrm": "dist/http-fast.js",
|
|
11
|
+
"wyrm-setup": "dist/setup.js"
|
|
12
|
+
},
|
|
13
|
+
"files": [
|
|
14
|
+
"dist",
|
|
15
|
+
"README.md",
|
|
16
|
+
"LICENSE"
|
|
17
|
+
],
|
|
18
|
+
"scripts": {
|
|
19
|
+
"build": "tsc",
|
|
20
|
+
"start": "node dist/index.js",
|
|
21
|
+
"http": "node dist/http-server.js",
|
|
22
|
+
"fast": "node dist/http-fast.js",
|
|
23
|
+
"setup": "node dist/setup.js",
|
|
24
|
+
"dev": "tsc --watch",
|
|
25
|
+
"test": "node --experimental-vm-modules node_modules/jest/bin/jest.js --config jest.config.cjs",
|
|
26
|
+
"test:watch": "npm run test -- --watch",
|
|
27
|
+
"lint": "eslint src --ext .ts",
|
|
28
|
+
"clean": "rm -rf dist",
|
|
29
|
+
"prepublish": "npm run build"
|
|
30
|
+
},
|
|
31
|
+
"keywords": [
|
|
32
|
+
"mcp",
|
|
33
|
+
"ai",
|
|
34
|
+
"memory",
|
|
35
|
+
"persistent",
|
|
36
|
+
"sqlite",
|
|
37
|
+
"agent",
|
|
38
|
+
"claude",
|
|
39
|
+
"copilot",
|
|
40
|
+
"model-context-protocol",
|
|
41
|
+
"gpt",
|
|
42
|
+
"context",
|
|
43
|
+
"full-text-search"
|
|
44
|
+
],
|
|
45
|
+
"author": "Ghost Protocol (Pvt) Ltd <legal@ghosts.lk>",
|
|
46
|
+
"license": "AGPL-3.0-or-later",
|
|
47
|
+
"homepage": "https://github.com/ghosts-lk/Wyrm",
|
|
48
|
+
"repository": {
|
|
49
|
+
"type": "git",
|
|
50
|
+
"url": "git+https://github.com/ghosts-lk/Wyrm.git"
|
|
51
|
+
},
|
|
52
|
+
"bugs": {
|
|
53
|
+
"url": "https://github.com/ghosts-lk/Wyrm/issues"
|
|
54
|
+
},
|
|
55
|
+
"dependencies": {
|
|
56
|
+
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
57
|
+
"better-sqlite3": "^11.0.0"
|
|
58
|
+
},
|
|
59
|
+
"devDependencies": {
|
|
60
|
+
"@types/better-sqlite3": "^7.6.8",
|
|
61
|
+
"@types/node": "^20.0.0",
|
|
62
|
+
"@typescript-eslint/eslint-plugin": "^7.0.0",
|
|
63
|
+
"@typescript-eslint/parser": "^7.0.0",
|
|
64
|
+
"eslint": "^8.57.0",
|
|
65
|
+
"jest": "^29.7.0",
|
|
66
|
+
"@types/jest": "^29.5.0",
|
|
67
|
+
"ts-jest": "^29.1.0",
|
|
68
|
+
"typescript": "^5.0.0"
|
|
69
|
+
},
|
|
70
|
+
"engines": {
|
|
71
|
+
"node": ">=18"
|
|
72
|
+
}
|
|
73
|
+
}
|