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.
Files changed (87) hide show
  1. package/LICENSE +667 -0
  2. package/README.md +384 -0
  3. package/dist/analytics.d.ts +100 -0
  4. package/dist/analytics.d.ts.map +1 -0
  5. package/dist/analytics.js +368 -0
  6. package/dist/analytics.js.map +1 -0
  7. package/dist/auto-orchestrator.d.ts +118 -0
  8. package/dist/auto-orchestrator.d.ts.map +1 -0
  9. package/dist/auto-orchestrator.js +325 -0
  10. package/dist/auto-orchestrator.js.map +1 -0
  11. package/dist/autoconfig.d.ts +89 -0
  12. package/dist/autoconfig.d.ts.map +1 -0
  13. package/dist/autoconfig.js +576 -0
  14. package/dist/autoconfig.js.map +1 -0
  15. package/dist/cli.d.ts +148 -0
  16. package/dist/cli.d.ts.map +1 -0
  17. package/dist/cli.js +281 -0
  18. package/dist/cli.js.map +1 -0
  19. package/dist/cloud-backup.d.ts +100 -0
  20. package/dist/cloud-backup.d.ts.map +1 -0
  21. package/dist/cloud-backup.js +545 -0
  22. package/dist/cloud-backup.js.map +1 -0
  23. package/dist/crypto.d.ts +72 -0
  24. package/dist/crypto.d.ts.map +1 -0
  25. package/dist/crypto.js +164 -0
  26. package/dist/crypto.js.map +1 -0
  27. package/dist/database.d.ts +218 -0
  28. package/dist/database.d.ts.map +1 -0
  29. package/dist/database.js +1058 -0
  30. package/dist/database.js.map +1 -0
  31. package/dist/http-auth.d.ts +68 -0
  32. package/dist/http-auth.d.ts.map +1 -0
  33. package/dist/http-auth.js +296 -0
  34. package/dist/http-auth.js.map +1 -0
  35. package/dist/http-fast.d.ts +13 -0
  36. package/dist/http-fast.d.ts.map +1 -0
  37. package/dist/http-fast.js +325 -0
  38. package/dist/http-fast.js.map +1 -0
  39. package/dist/http-server.d.ts +12 -0
  40. package/dist/http-server.d.ts.map +1 -0
  41. package/dist/http-server.js +383 -0
  42. package/dist/http-server.js.map +1 -0
  43. package/dist/index.d.ts +19 -0
  44. package/dist/index.d.ts.map +1 -0
  45. package/dist/index.js +1695 -0
  46. package/dist/index.js.map +1 -0
  47. package/dist/license.d.ts +177 -0
  48. package/dist/license.d.ts.map +1 -0
  49. package/dist/license.js +405 -0
  50. package/dist/license.js.map +1 -0
  51. package/dist/logger.d.ts +76 -0
  52. package/dist/logger.d.ts.map +1 -0
  53. package/dist/logger.js +195 -0
  54. package/dist/logger.js.map +1 -0
  55. package/dist/performance.d.ts +114 -0
  56. package/dist/performance.d.ts.map +1 -0
  57. package/dist/performance.js +228 -0
  58. package/dist/performance.js.map +1 -0
  59. package/dist/resilience.d.ts +146 -0
  60. package/dist/resilience.d.ts.map +1 -0
  61. package/dist/resilience.js +563 -0
  62. package/dist/resilience.js.map +1 -0
  63. package/dist/security.d.ts +68 -0
  64. package/dist/security.d.ts.map +1 -0
  65. package/dist/security.js +215 -0
  66. package/dist/security.js.map +1 -0
  67. package/dist/setup.d.ts +21 -0
  68. package/dist/setup.d.ts.map +1 -0
  69. package/dist/setup.js +261 -0
  70. package/dist/setup.js.map +1 -0
  71. package/dist/summarizer.d.ts +30 -0
  72. package/dist/summarizer.d.ts.map +1 -0
  73. package/dist/summarizer.js +139 -0
  74. package/dist/summarizer.js.map +1 -0
  75. package/dist/sync.d.ts +39 -0
  76. package/dist/sync.d.ts.map +1 -0
  77. package/dist/sync.js +356 -0
  78. package/dist/sync.js.map +1 -0
  79. package/dist/types.d.ts +267 -0
  80. package/dist/types.d.ts.map +1 -0
  81. package/dist/types.js +30 -0
  82. package/dist/types.js.map +1 -0
  83. package/dist/vectors.d.ts +103 -0
  84. package/dist/vectors.d.ts.map +1 -0
  85. package/dist/vectors.js +311 -0
  86. package/dist/vectors.js.map +1 -0
  87. package/package.json +73 -0
@@ -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
+ }