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,383 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * 🐉 Wyrm HTTP API Server
4
+ * REST API wrapper for local LLMs (Ollama, LM Studio, llama.cpp, etc.)
5
+ *
6
+ * @copyright 2026 Ghost Protocol (Pvt) Ltd. All Rights Reserved.
7
+ * @license Proprietary - See LICENSE file for details.
8
+ */
9
+ import http from 'http';
10
+ import { WyrmDB } from './database.js';
11
+ import { createContextBundle } from './summarizer.js';
12
+ import { authMiddleware, getSecurityHeaders, getAuthStatus } from './http-auth.js';
13
+ import { getLogger } from './logger.js';
14
+ import { sanitizeFtsQuery } from './security.js';
15
+ const PORT = parseInt(process.env.WYRM_PORT || '3333');
16
+ const MAX_BODY_SIZE = 1024 * 1024; // 1MB limit
17
+ const db = new WyrmDB();
18
+ const logger = getLogger();
19
+ function parseBody(req) {
20
+ return new Promise((resolve, reject) => {
21
+ let body = '';
22
+ let size = 0;
23
+ req.on('data', chunk => {
24
+ size += chunk.length;
25
+ if (size > MAX_BODY_SIZE) {
26
+ req.destroy();
27
+ reject(new Error('Request body too large'));
28
+ return;
29
+ }
30
+ body += chunk;
31
+ });
32
+ req.on('end', () => {
33
+ try {
34
+ resolve(body ? JSON.parse(body) : {});
35
+ }
36
+ catch {
37
+ reject(new Error('Invalid JSON'));
38
+ }
39
+ });
40
+ req.on('error', reject);
41
+ });
42
+ }
43
+ function jsonResponse(res, req, data, status = 200) {
44
+ const headers = getSecurityHeaders(req);
45
+ res.writeHead(status, {
46
+ ...headers,
47
+ 'Content-Type': 'application/json',
48
+ });
49
+ res.end(JSON.stringify(data, null, 2));
50
+ }
51
+ function errorResponse(res, req, message, status = 400) {
52
+ jsonResponse(res, req, { error: message }, status);
53
+ }
54
+ // Route handlers
55
+ const routes = {
56
+ // ==================== PROJECTS ====================
57
+ 'GET /projects': () => {
58
+ const projects = db.getAllProjects(100);
59
+ return { projects: projects.map(p => ({
60
+ ...p,
61
+ stats: db.getProjectStats(p.id)
62
+ })) };
63
+ },
64
+ 'POST /projects/scan': (body) => {
65
+ const dir = body.directory || process.env.HOME + '/Git Projects';
66
+ const recursive = body.recursive !== false;
67
+ const projects = db.scanForProjects(dir, recursive);
68
+ return {
69
+ discovered: projects.length,
70
+ projects: projects.map(p => ({ id: p.id, name: p.name, path: p.path }))
71
+ };
72
+ },
73
+ 'GET /projects/:path': (body) => {
74
+ const project = db.getProject(body.path);
75
+ if (!project)
76
+ return { error: 'Project not found' };
77
+ const sessions = db.getRecentSessions(project.id, 10);
78
+ const quests = db.getPendingQuests(project.id);
79
+ const context = db.getAllContext(project.id);
80
+ return {
81
+ project,
82
+ sessions,
83
+ quests,
84
+ context,
85
+ stats: db.getProjectStats(project.id)
86
+ };
87
+ },
88
+ // ==================== SESSIONS ====================
89
+ 'POST /sessions/start': (body) => {
90
+ const projectPath = body.projectPath;
91
+ let project = db.getProject(projectPath);
92
+ if (!project) {
93
+ // Try to scan and find it
94
+ db.scanForProjects(projectPath, false);
95
+ project = db.getProject(projectPath);
96
+ }
97
+ if (!project)
98
+ return { error: 'Could not find or register project' };
99
+ // Check for existing today session
100
+ let session = db.getTodaySession(project.id);
101
+ if (!session) {
102
+ session = db.createSession(project.id, {
103
+ objectives: body.objectives || '',
104
+ notes: body.notes || ''
105
+ });
106
+ }
107
+ return { session, project: { id: project.id, name: project.name } };
108
+ },
109
+ 'POST /sessions/update': (body) => {
110
+ const sessionId = body.sessionId;
111
+ const session = db.updateSession(sessionId, {
112
+ notes: body.notes,
113
+ completed: body.completed,
114
+ summary: body.summary
115
+ });
116
+ return { session };
117
+ },
118
+ 'GET /sessions/:projectId': (body) => {
119
+ const projectId = parseInt(body.projectId);
120
+ const limit = body.limit || 10;
121
+ return { sessions: db.getRecentSessions(projectId, limit) };
122
+ },
123
+ // ==================== QUESTS ====================
124
+ 'POST /quests': (body) => {
125
+ const projectPath = body.projectPath;
126
+ const project = db.getProject(projectPath);
127
+ if (!project)
128
+ return { error: 'Project not found' };
129
+ const quest = db.addQuest(project.id, body.title, body.description, body.priority || 'medium', body.tags);
130
+ return { quest };
131
+ },
132
+ 'POST /quests/:id/complete': (body) => {
133
+ const id = parseInt(body.id);
134
+ const quest = db.updateQuest(id, 'completed');
135
+ return { quest };
136
+ },
137
+ 'GET /quests': (body) => {
138
+ const projectPath = body.projectPath;
139
+ if (projectPath) {
140
+ const project = db.getProject(projectPath);
141
+ if (!project)
142
+ return { error: 'Project not found' };
143
+ return { quests: db.getPendingQuests(project.id) };
144
+ }
145
+ return { quests: db.getAllPendingQuests() };
146
+ },
147
+ // ==================== CONTEXT ====================
148
+ 'POST /context': (body) => {
149
+ const projectPath = body.projectPath;
150
+ const project = db.getProject(projectPath);
151
+ if (!project)
152
+ return { error: 'Project not found' };
153
+ db.setContext(project.id, body.key, body.value);
154
+ return { success: true };
155
+ },
156
+ 'GET /context/:projectPath': (body) => {
157
+ const project = db.getProject(body.projectPath);
158
+ if (!project)
159
+ return { error: 'Project not found' };
160
+ const sessions = db.getRecentSessions(project.id, 10);
161
+ const quests = db.getPendingQuests(project.id).map(q => ({ title: q.title, priority: q.priority }));
162
+ const context = db.getAllContext(project.id);
163
+ const bundle = createContextBundle({ name: project.name, stack: project.stack }, context, sessions, quests);
164
+ return { context: bundle };
165
+ },
166
+ // ==================== GLOBAL ====================
167
+ 'POST /global': (body) => {
168
+ db.setGlobalContext(body.key, body.value);
169
+ return { success: true };
170
+ },
171
+ 'GET /global': () => {
172
+ return { context: db.getAllGlobalContext() };
173
+ },
174
+ // ==================== DATA LAKE ====================
175
+ 'POST /data': (body) => {
176
+ const projectPath = body.projectPath;
177
+ const project = db.getProject(projectPath);
178
+ if (!project)
179
+ return { error: 'Project not found' };
180
+ const dataPoint = db.insertData(project.id, body.category, body.key, body.value, body.metadata);
181
+ return { data: dataPoint };
182
+ },
183
+ 'POST /data/batch': (body) => {
184
+ const items = body.items;
185
+ const data = items.map(item => {
186
+ const project = db.getProject(item.projectPath);
187
+ if (!project)
188
+ throw new Error(`Project not found: ${item.projectPath}`);
189
+ return {
190
+ projectId: project.id,
191
+ category: item.category,
192
+ key: item.key,
193
+ value: item.value,
194
+ metadata: item.metadata
195
+ };
196
+ });
197
+ const count = db.insertDataBatch(data);
198
+ return { inserted: count };
199
+ },
200
+ 'GET /data/:projectPath': (body) => {
201
+ const project = db.getProject(body.projectPath);
202
+ if (!project)
203
+ return { error: 'Project not found' };
204
+ const category = body.category;
205
+ const limit = body.limit || 100;
206
+ return { data: db.queryData(project.id, category, limit) };
207
+ },
208
+ 'GET /data/categories/:projectPath': (body) => {
209
+ const project = db.getProject(body.projectPath);
210
+ if (!project)
211
+ return { error: 'Project not found' };
212
+ return { categories: db.getDataCategories(project.id) };
213
+ },
214
+ // ==================== SEARCH ====================
215
+ 'GET /search': (body) => {
216
+ const query = body.query;
217
+ if (!query)
218
+ return { error: 'Query required' };
219
+ const sanitized = sanitizeFtsQuery(query);
220
+ return {
221
+ sessions: db.searchSessions(sanitized),
222
+ quests: db.searchQuests(sanitized),
223
+ data: db.searchData(sanitized),
224
+ projects: db.searchProjects(sanitized)
225
+ };
226
+ },
227
+ // ==================== STATS & MAINTENANCE ====================
228
+ 'GET /stats': () => {
229
+ return db.getStats();
230
+ },
231
+ 'POST /maintenance': (body) => {
232
+ const action = body.action;
233
+ const results = [];
234
+ if (action === 'vacuum' || action === 'all') {
235
+ db.vacuum();
236
+ results.push('Vacuum completed');
237
+ }
238
+ if (action === 'checkpoint' || action === 'all') {
239
+ db.checkpoint();
240
+ results.push('WAL checkpoint completed');
241
+ }
242
+ return { results };
243
+ },
244
+ // ==================== LLM CONTEXT ENDPOINT ====================
245
+ // Special endpoint that returns everything an LLM needs in one call
246
+ 'GET /llm-context': (body) => {
247
+ const projectPath = body.projectPath;
248
+ if (projectPath) {
249
+ const project = db.getProject(projectPath);
250
+ if (!project)
251
+ return { error: 'Project not found' };
252
+ const sessions = db.getRecentSessions(project.id, 5);
253
+ const quests = db.getPendingQuests(project.id);
254
+ const context = db.getAllContext(project.id);
255
+ return {
256
+ project: { name: project.name, stack: project.stack, path: project.path },
257
+ recentSessions: sessions.map(s => ({
258
+ date: s.date,
259
+ summary: s.summary || s.notes?.slice(0, 500)
260
+ })),
261
+ pendingQuests: quests.map(q => ({
262
+ title: q.title,
263
+ priority: q.priority,
264
+ description: q.description
265
+ })),
266
+ context,
267
+ systemPrompt: `You are working on ${project.name}${project.stack ? ` (${project.stack})` : ''}. ` +
268
+ `There are ${quests.length} pending tasks. ` +
269
+ `Recent work: ${sessions[0]?.summary || 'No recent sessions'}.`
270
+ };
271
+ }
272
+ // Global context for all projects
273
+ const projects = db.getAllProjects(10);
274
+ const globalContext = db.getAllGlobalContext();
275
+ const allQuests = db.getAllPendingQuests();
276
+ return {
277
+ projects: projects.map(p => ({
278
+ name: p.name,
279
+ path: p.path,
280
+ stack: p.stack,
281
+ stats: db.getProjectStats(p.id)
282
+ })),
283
+ globalContext,
284
+ totalPendingQuests: allQuests.length,
285
+ topQuests: allQuests.slice(0, 5).map(q => ({
286
+ project: projects.find(p => p.id === q.project_id)?.name,
287
+ title: q.title,
288
+ priority: q.priority
289
+ })),
290
+ systemPrompt: `You have access to ${projects.length} projects with ${allQuests.length} total pending tasks.`
291
+ };
292
+ },
293
+ // Auth status endpoint (no auth required for this one)
294
+ 'GET /auth/status': () => {
295
+ return getAuthStatus();
296
+ },
297
+ // Health check endpoint (no auth required)
298
+ 'GET /health': () => {
299
+ return { status: 'ok', timestamp: Date.now(), version: '3.0.0' };
300
+ }
301
+ };
302
+ const server = http.createServer(async (req, res) => {
303
+ // Apply authentication middleware (handles CORS preflight, rate limiting, auth)
304
+ const authResult = authMiddleware(req, res);
305
+ if (authResult.error) {
306
+ return; // Response already sent by middleware
307
+ }
308
+ try {
309
+ const url = new URL(req.url || '/', `http://localhost:${PORT}`);
310
+ const body = await parseBody(req);
311
+ // Add URL params to body
312
+ url.searchParams.forEach((value, key) => {
313
+ body[key] = value;
314
+ });
315
+ // Extract path parameters
316
+ const pathParts = url.pathname.split('/').filter(Boolean);
317
+ // Try exact route match first
318
+ let routeKey = `${req.method} ${url.pathname}`;
319
+ let handler = routes[routeKey];
320
+ // Try parameterized routes
321
+ if (!handler) {
322
+ for (const [pattern, h] of Object.entries(routes)) {
323
+ const [method, path] = pattern.split(' ');
324
+ if (method !== req.method)
325
+ continue;
326
+ const patternParts = path.split('/').filter(Boolean);
327
+ if (patternParts.length !== pathParts.length)
328
+ continue;
329
+ let match = true;
330
+ for (let i = 0; i < patternParts.length; i++) {
331
+ if (patternParts[i].startsWith(':')) {
332
+ body[patternParts[i].slice(1)] = pathParts[i];
333
+ }
334
+ else if (patternParts[i] !== pathParts[i]) {
335
+ match = false;
336
+ break;
337
+ }
338
+ }
339
+ if (match) {
340
+ handler = h;
341
+ break;
342
+ }
343
+ }
344
+ }
345
+ if (!handler) {
346
+ if (url.pathname === '/' || url.pathname === '/help') {
347
+ jsonResponse(res, req, {
348
+ name: '🐉 Wyrm HTTP API',
349
+ version: '3.0.0',
350
+ description: 'REST API for local LLM integration',
351
+ authentication: 'Bearer token required (see ~/.wyrm/http-config.json)',
352
+ endpoints: Object.keys(routes).sort(),
353
+ specialEndpoints: {
354
+ '/llm-context': 'Get everything an LLM needs in one call',
355
+ '/llm-context?projectPath=...': 'Get project-specific context',
356
+ '/auth/status': 'Check authentication configuration'
357
+ }
358
+ });
359
+ return;
360
+ }
361
+ errorResponse(res, req, 'Not found', 404);
362
+ return;
363
+ }
364
+ const result = handler(body);
365
+ jsonResponse(res, req, result);
366
+ }
367
+ catch (err) {
368
+ logger.error('HTTP request failed', {
369
+ path: req.url,
370
+ error: err.message
371
+ });
372
+ errorResponse(res, req, err.message, 500);
373
+ }
374
+ });
375
+ server.listen(PORT, () => {
376
+ logger.info('Wyrm HTTP API started', { port: PORT });
377
+ console.log(`🐉 Wyrm HTTP API running on http://localhost:${PORT}`);
378
+ console.log(` Documentation: http://localhost:${PORT}/help`);
379
+ console.log(` LLM Context: http://localhost:${PORT}/llm-context`);
380
+ console.log(` Auth Required: ${getAuthStatus().requireAuth ? 'Yes' : 'No (dev mode)'}`);
381
+ });
382
+ export { server };
383
+ //# sourceMappingURL=http-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-server.js","sourceRoot":"","sources":["../src/http-server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Wyrm MCP Server - Model Context Protocol for AI memory
4
+ *
5
+ * @copyright 2026 Ghost Protocol (Pvt) Ltd. All Rights Reserved.
6
+ * @license Proprietary - See LICENSE file for details.
7
+ *
8
+ * Features:
9
+ * - Auto-discovery of projects in watched directories
10
+ * - Multi-project tracking with unified context
11
+ * - Data lake for large dataset storage
12
+ * - Full-text search across all data
13
+ * - Prompt caching with cache_control hints (saves credits on Claude, etc.)
14
+ * - In-memory response cache for read-only tools
15
+ * - Usage tracking for token/cost monitoring
16
+ * - Compact responses to minimize token burn
17
+ */
18
+ export {};
19
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;GAeG"}