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/security.js
ADDED
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wyrm Security Module - Input validation and path security
|
|
3
|
+
*
|
|
4
|
+
* @copyright 2026 Ghost Protocol (Pvt) Ltd. All Rights Reserved.
|
|
5
|
+
* @license Proprietary - See LICENSE file for details.
|
|
6
|
+
* @module security
|
|
7
|
+
* @version 3.0.0
|
|
8
|
+
*/
|
|
9
|
+
import { resolve, relative, normalize, sep } from 'path';
|
|
10
|
+
import { existsSync, statSync } from 'fs';
|
|
11
|
+
import { homedir } from 'os';
|
|
12
|
+
import { createHash } from 'crypto';
|
|
13
|
+
// ==================== PATH SECURITY ====================
|
|
14
|
+
/**
|
|
15
|
+
* Validate and sanitize a path to prevent traversal attacks
|
|
16
|
+
*/
|
|
17
|
+
export function validatePath(basePath, targetPath) {
|
|
18
|
+
const normalizedBase = normalize(resolve(basePath));
|
|
19
|
+
const normalizedTarget = normalize(resolve(basePath, targetPath));
|
|
20
|
+
// Check if target is within base
|
|
21
|
+
const rel = relative(normalizedBase, normalizedTarget);
|
|
22
|
+
if (rel.startsWith('..') || rel.startsWith(sep)) {
|
|
23
|
+
throw new SecurityError('Path traversal detected', 'PATH_TRAVERSAL');
|
|
24
|
+
}
|
|
25
|
+
// Double-check resolved path
|
|
26
|
+
if (!normalizedTarget.startsWith(normalizedBase)) {
|
|
27
|
+
throw new SecurityError('Path traversal detected', 'PATH_TRAVERSAL');
|
|
28
|
+
}
|
|
29
|
+
return normalizedTarget;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Check if a path is a valid directory
|
|
33
|
+
*/
|
|
34
|
+
export function validateDirectory(path) {
|
|
35
|
+
try {
|
|
36
|
+
return existsSync(path) && statSync(path).isDirectory();
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Validate project path is within allowed directories
|
|
44
|
+
*/
|
|
45
|
+
export function validateProjectPath(projectPath) {
|
|
46
|
+
const normalizedPath = normalize(resolve(projectPath));
|
|
47
|
+
// List of allowed root directories
|
|
48
|
+
const allowedRoots = [
|
|
49
|
+
normalize(resolve(homedir(), 'Git Projects')),
|
|
50
|
+
normalize(resolve(homedir(), 'Projects')),
|
|
51
|
+
normalize(resolve(homedir(), 'dev')),
|
|
52
|
+
normalize(resolve(homedir(), 'code')),
|
|
53
|
+
normalize(resolve(homedir(), 'repos')),
|
|
54
|
+
normalize('/tmp/wyrm-test'), // For testing
|
|
55
|
+
];
|
|
56
|
+
// Add from environment
|
|
57
|
+
if (process.env.WYRM_ALLOWED_PATHS) {
|
|
58
|
+
const envPaths = process.env.WYRM_ALLOWED_PATHS.split(':');
|
|
59
|
+
for (const p of envPaths) {
|
|
60
|
+
allowedRoots.push(normalize(resolve(p)));
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
// Check if path is within an allowed root
|
|
64
|
+
const isAllowed = allowedRoots.some(root => normalizedPath === root || normalizedPath.startsWith(root + sep));
|
|
65
|
+
if (!isAllowed) {
|
|
66
|
+
throw new SecurityError('Project path not in allowed directories', 'INVALID_PROJECT_PATH');
|
|
67
|
+
}
|
|
68
|
+
if (!validateDirectory(normalizedPath)) {
|
|
69
|
+
throw new SecurityError('Path is not a valid directory', 'INVALID_DIRECTORY');
|
|
70
|
+
}
|
|
71
|
+
return normalizedPath;
|
|
72
|
+
}
|
|
73
|
+
// ==================== INPUT VALIDATION ====================
|
|
74
|
+
/**
|
|
75
|
+
* Sanitize FTS5 search query to prevent injection
|
|
76
|
+
*/
|
|
77
|
+
export function sanitizeFtsQuery(query) {
|
|
78
|
+
if (!query || typeof query !== 'string') {
|
|
79
|
+
throw new SecurityError('Invalid search query', 'INVALID_INPUT');
|
|
80
|
+
}
|
|
81
|
+
// Remove FTS5 special syntax characters
|
|
82
|
+
// Allowed: alphanumeric, spaces, common punctuation
|
|
83
|
+
const sanitized = query
|
|
84
|
+
.replace(/[*"():^{}[\]\\]/g, ' ') // Remove FTS operators
|
|
85
|
+
.replace(/\s+/g, ' ') // Normalize whitespace
|
|
86
|
+
.trim()
|
|
87
|
+
.slice(0, 500); // Limit length
|
|
88
|
+
if (!sanitized) {
|
|
89
|
+
throw new SecurityError('Search query is empty after sanitization', 'INVALID_INPUT');
|
|
90
|
+
}
|
|
91
|
+
return sanitized;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Validate and sanitize string input
|
|
95
|
+
*/
|
|
96
|
+
export function sanitizeString(input, maxLength = 10000) {
|
|
97
|
+
if (input === null || input === undefined) {
|
|
98
|
+
return '';
|
|
99
|
+
}
|
|
100
|
+
if (typeof input !== 'string') {
|
|
101
|
+
throw new SecurityError('Expected string input', 'INVALID_TYPE');
|
|
102
|
+
}
|
|
103
|
+
// Truncate if too long
|
|
104
|
+
return input.slice(0, maxLength);
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Validate integer input
|
|
108
|
+
*/
|
|
109
|
+
export function validateInt(input, min = 0, max = Number.MAX_SAFE_INTEGER) {
|
|
110
|
+
const num = Number(input);
|
|
111
|
+
if (!Number.isInteger(num)) {
|
|
112
|
+
throw new SecurityError('Expected integer input', 'INVALID_TYPE');
|
|
113
|
+
}
|
|
114
|
+
if (num < min || num > max) {
|
|
115
|
+
throw new SecurityError(`Integer out of range [${min}, ${max}]`, 'OUT_OF_RANGE');
|
|
116
|
+
}
|
|
117
|
+
return num;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Validate enum value
|
|
121
|
+
*/
|
|
122
|
+
export function validateEnum(input, allowed, defaultValue) {
|
|
123
|
+
if (input === undefined && defaultValue !== undefined) {
|
|
124
|
+
return defaultValue;
|
|
125
|
+
}
|
|
126
|
+
if (typeof input !== 'string' || !allowed.includes(input)) {
|
|
127
|
+
throw new SecurityError(`Invalid value. Allowed: ${allowed.join(', ')}`, 'INVALID_ENUM');
|
|
128
|
+
}
|
|
129
|
+
return input;
|
|
130
|
+
}
|
|
131
|
+
// ==================== HTTP SECURITY ====================
|
|
132
|
+
/**
|
|
133
|
+
* Validate API key authentication
|
|
134
|
+
*/
|
|
135
|
+
export function validateApiKey(authHeader, expectedHash) {
|
|
136
|
+
if (!authHeader || !authHeader.startsWith('Bearer ')) {
|
|
137
|
+
return false;
|
|
138
|
+
}
|
|
139
|
+
const token = authHeader.slice(7);
|
|
140
|
+
if (!token || token.length < 32) {
|
|
141
|
+
return false;
|
|
142
|
+
}
|
|
143
|
+
// Constant-time comparison
|
|
144
|
+
return constantTimeCompare(hashToken(token), expectedHash);
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Hash a token for storage/comparison
|
|
148
|
+
*/
|
|
149
|
+
export function hashToken(token) {
|
|
150
|
+
return createHash('sha256').update(token).digest('hex');
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Constant-time string comparison to prevent timing attacks
|
|
154
|
+
*/
|
|
155
|
+
export function constantTimeCompare(a, b) {
|
|
156
|
+
if (a.length !== b.length) {
|
|
157
|
+
return false;
|
|
158
|
+
}
|
|
159
|
+
let result = 0;
|
|
160
|
+
for (let i = 0; i < a.length; i++) {
|
|
161
|
+
result |= a.charCodeAt(i) ^ b.charCodeAt(i);
|
|
162
|
+
}
|
|
163
|
+
return result === 0;
|
|
164
|
+
}
|
|
165
|
+
const rateLimitStore = new Map();
|
|
166
|
+
/**
|
|
167
|
+
* Check rate limit for a given key (IP, API key, etc.)
|
|
168
|
+
*/
|
|
169
|
+
export function checkRateLimit(key, maxRequests = 100, windowMs = 60000) {
|
|
170
|
+
const now = Date.now();
|
|
171
|
+
let entry = rateLimitStore.get(key);
|
|
172
|
+
// Clean up expired entries periodically
|
|
173
|
+
if (rateLimitStore.size > 10000) {
|
|
174
|
+
for (const [k, v] of rateLimitStore) {
|
|
175
|
+
if (v.resetAt < now) {
|
|
176
|
+
rateLimitStore.delete(k);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
if (!entry || entry.resetAt < now) {
|
|
181
|
+
entry = { count: 0, resetAt: now + windowMs };
|
|
182
|
+
rateLimitStore.set(key, entry);
|
|
183
|
+
}
|
|
184
|
+
entry.count++;
|
|
185
|
+
return {
|
|
186
|
+
allowed: entry.count <= maxRequests,
|
|
187
|
+
remaining: Math.max(0, maxRequests - entry.count),
|
|
188
|
+
resetAt: entry.resetAt
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
// ==================== SECURITY ERROR ====================
|
|
192
|
+
export class SecurityError extends Error {
|
|
193
|
+
code;
|
|
194
|
+
constructor(message, code) {
|
|
195
|
+
super(message);
|
|
196
|
+
this.name = 'SecurityError';
|
|
197
|
+
this.code = code;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
// ==================== REQUEST VALIDATION ====================
|
|
201
|
+
export const MAX_REQUEST_SIZE = 1024 * 1024; // 1MB
|
|
202
|
+
export const MAX_BATCH_SIZE = 1000;
|
|
203
|
+
export const MAX_QUERY_RESULTS = 1000;
|
|
204
|
+
/**
|
|
205
|
+
* Validate batch operation size
|
|
206
|
+
*/
|
|
207
|
+
export function validateBatchSize(items) {
|
|
208
|
+
if (!Array.isArray(items)) {
|
|
209
|
+
throw new SecurityError('Expected array for batch operation', 'INVALID_TYPE');
|
|
210
|
+
}
|
|
211
|
+
if (items.length > MAX_BATCH_SIZE) {
|
|
212
|
+
throw new SecurityError(`Batch size ${items.length} exceeds maximum of ${MAX_BATCH_SIZE}`, 'BATCH_TOO_LARGE');
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
//# sourceMappingURL=security.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"security.js","sourceRoot":"","sources":["../src/security.ts"],"names":[],"mappings":"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"}
|
package/dist/setup.d.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Wyrm Setup CLI - Auto-configure Wyrm for any AI client
|
|
4
|
+
*
|
|
5
|
+
* Usage:
|
|
6
|
+
* wyrm-setup Auto-detect and configure all AI clients
|
|
7
|
+
* wyrm-setup --check Show current configuration status
|
|
8
|
+
* wyrm-setup --remove Remove Wyrm from all AI clients
|
|
9
|
+
* wyrm-setup --only X,Y Configure specific clients only
|
|
10
|
+
* wyrm-setup --server P Override server path
|
|
11
|
+
* wyrm-setup --db P Override database path
|
|
12
|
+
* wyrm-setup --reconf Re-configure previously configured clients
|
|
13
|
+
* wyrm-setup --list List all supported AI clients
|
|
14
|
+
*
|
|
15
|
+
* @copyright 2026 Ghost Protocol (Pvt) Ltd. All Rights Reserved.
|
|
16
|
+
* @license Proprietary - See LICENSE file for details.
|
|
17
|
+
* @module setup
|
|
18
|
+
* @version 3.0.0
|
|
19
|
+
*/
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=setup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;GAiBG"}
|
package/dist/setup.js
ADDED
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Wyrm Setup CLI - Auto-configure Wyrm for any AI client
|
|
4
|
+
*
|
|
5
|
+
* Usage:
|
|
6
|
+
* wyrm-setup Auto-detect and configure all AI clients
|
|
7
|
+
* wyrm-setup --check Show current configuration status
|
|
8
|
+
* wyrm-setup --remove Remove Wyrm from all AI clients
|
|
9
|
+
* wyrm-setup --only X,Y Configure specific clients only
|
|
10
|
+
* wyrm-setup --server P Override server path
|
|
11
|
+
* wyrm-setup --db P Override database path
|
|
12
|
+
* wyrm-setup --reconf Re-configure previously configured clients
|
|
13
|
+
* wyrm-setup --list List all supported AI clients
|
|
14
|
+
*
|
|
15
|
+
* @copyright 2026 Ghost Protocol (Pvt) Ltd. All Rights Reserved.
|
|
16
|
+
* @license Proprietary - See LICENSE file for details.
|
|
17
|
+
* @module setup
|
|
18
|
+
* @version 3.0.0
|
|
19
|
+
*/
|
|
20
|
+
import { detectClients, autoConfigureAll, removeFromAll, configureSpecific, reconfAll, getStatusSummary, findWyrmServerPath, getDefaultDbPath, loadWyrmMeta, } from './autoconfig.js';
|
|
21
|
+
import { c, icons, BANNER, MINI_BANNER, printError, printSection } from './cli.js';
|
|
22
|
+
function parseArgs(argv) {
|
|
23
|
+
const args = argv.slice(2); // Skip node and script path
|
|
24
|
+
if (args.length === 0) {
|
|
25
|
+
return { command: 'auto' };
|
|
26
|
+
}
|
|
27
|
+
const result = { command: 'auto' };
|
|
28
|
+
for (let i = 0; i < args.length; i++) {
|
|
29
|
+
switch (args[i]) {
|
|
30
|
+
case '--check':
|
|
31
|
+
case '-c':
|
|
32
|
+
case 'check':
|
|
33
|
+
case 'status':
|
|
34
|
+
result.command = 'check';
|
|
35
|
+
break;
|
|
36
|
+
case '--remove':
|
|
37
|
+
case '-r':
|
|
38
|
+
case 'remove':
|
|
39
|
+
case 'uninstall':
|
|
40
|
+
result.command = 'remove';
|
|
41
|
+
break;
|
|
42
|
+
case '--only':
|
|
43
|
+
case '-o':
|
|
44
|
+
case 'only':
|
|
45
|
+
result.command = 'only';
|
|
46
|
+
if (args[i + 1]) {
|
|
47
|
+
result.clientIds = args[i + 1].split(',').map(s => s.trim());
|
|
48
|
+
i++;
|
|
49
|
+
}
|
|
50
|
+
break;
|
|
51
|
+
case '--reconf':
|
|
52
|
+
case '--reconfigure':
|
|
53
|
+
case 'reconf':
|
|
54
|
+
result.command = 'reconf';
|
|
55
|
+
break;
|
|
56
|
+
case '--list':
|
|
57
|
+
case '-l':
|
|
58
|
+
case 'list':
|
|
59
|
+
result.command = 'list';
|
|
60
|
+
break;
|
|
61
|
+
case '--server':
|
|
62
|
+
case '-s':
|
|
63
|
+
if (args[i + 1]) {
|
|
64
|
+
result.serverPath = args[i + 1];
|
|
65
|
+
i++;
|
|
66
|
+
}
|
|
67
|
+
break;
|
|
68
|
+
case '--db':
|
|
69
|
+
case '-d':
|
|
70
|
+
if (args[i + 1]) {
|
|
71
|
+
result.dbPath = args[i + 1];
|
|
72
|
+
i++;
|
|
73
|
+
}
|
|
74
|
+
break;
|
|
75
|
+
case '--help':
|
|
76
|
+
case '-h':
|
|
77
|
+
case 'help':
|
|
78
|
+
result.command = 'help';
|
|
79
|
+
break;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return result;
|
|
83
|
+
}
|
|
84
|
+
// ==================== OUTPUT ====================
|
|
85
|
+
function printResults(results) {
|
|
86
|
+
console.log('');
|
|
87
|
+
const configured = results.filter(r => r.action === 'configured');
|
|
88
|
+
const updated = results.filter(r => r.action === 'updated');
|
|
89
|
+
const skipped = results.filter(r => r.action === 'skipped');
|
|
90
|
+
const failed = results.filter(r => r.action === 'failed');
|
|
91
|
+
for (const r of configured) {
|
|
92
|
+
console.log(` ${icons.success} ${r.client.icon} ${c.green(r.client.name)} — ${c.success('configured')}`);
|
|
93
|
+
if (r.backup)
|
|
94
|
+
console.log(` ${c.dim(`backup → ${r.backup}`)}`);
|
|
95
|
+
}
|
|
96
|
+
for (const r of updated) {
|
|
97
|
+
console.log(` ${icons.sync} ${r.client.icon} ${c.blue(r.client.name)} — ${c.cyan('updated')}`);
|
|
98
|
+
if (r.backup)
|
|
99
|
+
console.log(` ${c.dim(`backup → ${r.backup}`)}`);
|
|
100
|
+
}
|
|
101
|
+
for (const r of skipped) {
|
|
102
|
+
console.log(` ${c.dim(` ○ ${r.client.icon} ${r.client.name} — ${r.message}`)}`);
|
|
103
|
+
}
|
|
104
|
+
for (const r of failed) {
|
|
105
|
+
console.log(` ${icons.error} ${r.client.icon} ${c.red(r.client.name)} — ${c.error(r.message)}`);
|
|
106
|
+
}
|
|
107
|
+
console.log('');
|
|
108
|
+
const successCount = configured.length + updated.length;
|
|
109
|
+
if (successCount > 0) {
|
|
110
|
+
console.log(` ${c.success(`${icons.dragon} Wyrm connected to ${successCount} AI client(s)`)}`);
|
|
111
|
+
console.log(` ${c.dim('Switch AIs anytime — run wyrm-setup again to reconnect')}`);
|
|
112
|
+
}
|
|
113
|
+
else if (failed.length > 0) {
|
|
114
|
+
console.log(` ${c.error('Some configurations failed. Check errors above.')}`);
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
console.log(` ${c.dim('No AI clients detected. Install one and try again.')}`);
|
|
118
|
+
}
|
|
119
|
+
console.log('');
|
|
120
|
+
}
|
|
121
|
+
function printHelp() {
|
|
122
|
+
console.log(MINI_BANNER);
|
|
123
|
+
console.log('');
|
|
124
|
+
console.log(`${c.bold('Usage:')} wyrm-setup ${c.dim('[command] [options]')}`);
|
|
125
|
+
console.log('');
|
|
126
|
+
console.log(`${c.bold('Commands:')}`);
|
|
127
|
+
console.log(` ${c.cyan('(no args)')} Auto-detect and configure all AI clients`);
|
|
128
|
+
console.log(` ${c.cyan('check')} Show current configuration status`);
|
|
129
|
+
console.log(` ${c.cyan('list')} List all supported AI clients`);
|
|
130
|
+
console.log(` ${c.cyan('remove')} Remove Wyrm from all AI clients`);
|
|
131
|
+
console.log(` ${c.cyan('reconf')} Re-configure previously configured clients`);
|
|
132
|
+
console.log(` ${c.cyan('only X,Y')} Configure specific clients only`);
|
|
133
|
+
console.log(` ${c.cyan('help')} Show this help message`);
|
|
134
|
+
console.log('');
|
|
135
|
+
console.log(`${c.bold('Options:')}`);
|
|
136
|
+
console.log(` ${c.cyan('--server P')} Override Wyrm MCP server path`);
|
|
137
|
+
console.log(` ${c.cyan('--db P')} Override Wyrm database path`);
|
|
138
|
+
console.log('');
|
|
139
|
+
console.log(`${c.bold('Client IDs:')}`);
|
|
140
|
+
const clients = detectClients();
|
|
141
|
+
for (const cl of clients) {
|
|
142
|
+
console.log(` ${cl.icon} ${c.cyan(cl.id.padEnd(18))} ${cl.name}`);
|
|
143
|
+
}
|
|
144
|
+
console.log('');
|
|
145
|
+
console.log(`${c.bold('Examples:')}`);
|
|
146
|
+
console.log(` wyrm-setup ${c.dim('# Auto-configure everything')}`);
|
|
147
|
+
console.log(` wyrm-setup check ${c.dim('# See what\'s configured')}`);
|
|
148
|
+
console.log(` wyrm-setup only vscode-copilot,cursor ${c.dim('# Only VS Code + Cursor')}`);
|
|
149
|
+
console.log(` wyrm-setup --server /path/to/wyrm/dist/index.js ${c.dim('# Custom server path')}`);
|
|
150
|
+
console.log(` wyrm-setup remove ${c.dim('# Remove from all clients')}`);
|
|
151
|
+
console.log('');
|
|
152
|
+
}
|
|
153
|
+
function printClientList() {
|
|
154
|
+
console.log(MINI_BANNER);
|
|
155
|
+
console.log('');
|
|
156
|
+
printSection('Supported AI Clients');
|
|
157
|
+
console.log('');
|
|
158
|
+
const clients = detectClients();
|
|
159
|
+
for (const cl of clients) {
|
|
160
|
+
const status = cl.detected
|
|
161
|
+
? cl.configured
|
|
162
|
+
? c.success('● connected')
|
|
163
|
+
: c.yellow('◐ available')
|
|
164
|
+
: c.dim('○ not found');
|
|
165
|
+
const versionStr = cl.version ? ` ${c.dim(`v${cl.version}`)}` : '';
|
|
166
|
+
console.log(` ${cl.icon} ${c.bold(cl.name.padEnd(20))} ${c.cyan(cl.id.padEnd(18))} ${status}${versionStr}`);
|
|
167
|
+
console.log(` ${c.dim(`Config: ${cl.configPath}`)}`);
|
|
168
|
+
}
|
|
169
|
+
console.log('');
|
|
170
|
+
}
|
|
171
|
+
// ==================== MAIN ====================
|
|
172
|
+
async function main() {
|
|
173
|
+
const args = parseArgs(process.argv);
|
|
174
|
+
switch (args.command) {
|
|
175
|
+
case 'help':
|
|
176
|
+
printHelp();
|
|
177
|
+
break;
|
|
178
|
+
case 'check': {
|
|
179
|
+
console.log(MINI_BANNER);
|
|
180
|
+
console.log('');
|
|
181
|
+
console.log(getStatusSummary());
|
|
182
|
+
break;
|
|
183
|
+
}
|
|
184
|
+
case 'list':
|
|
185
|
+
printClientList();
|
|
186
|
+
break;
|
|
187
|
+
case 'auto': {
|
|
188
|
+
console.log(BANNER);
|
|
189
|
+
printSection('Auto-Configure');
|
|
190
|
+
console.log('');
|
|
191
|
+
const serverPath = args.serverPath || findWyrmServerPath();
|
|
192
|
+
const dbPath = args.dbPath || getDefaultDbPath();
|
|
193
|
+
console.log(` ${icons.sword} Server: ${c.cyan(serverPath)}`);
|
|
194
|
+
console.log(` ${icons.treasure} DB: ${c.cyan(dbPath)}`);
|
|
195
|
+
console.log('');
|
|
196
|
+
console.log(` ${c.dim('Scanning for AI clients...')}`);
|
|
197
|
+
const results = autoConfigureAll({
|
|
198
|
+
serverPath,
|
|
199
|
+
dbPath,
|
|
200
|
+
});
|
|
201
|
+
printResults(results);
|
|
202
|
+
break;
|
|
203
|
+
}
|
|
204
|
+
case 'only': {
|
|
205
|
+
if (!args.clientIds || args.clientIds.length === 0) {
|
|
206
|
+
printError('No client IDs specified. Use: wyrm-setup only vscode-copilot,cursor');
|
|
207
|
+
process.exit(1);
|
|
208
|
+
}
|
|
209
|
+
console.log(MINI_BANNER);
|
|
210
|
+
printSection(`Configure: ${args.clientIds.join(', ')}`);
|
|
211
|
+
const results = configureSpecific(args.clientIds, {
|
|
212
|
+
serverPath: args.serverPath,
|
|
213
|
+
dbPath: args.dbPath,
|
|
214
|
+
});
|
|
215
|
+
printResults(results);
|
|
216
|
+
break;
|
|
217
|
+
}
|
|
218
|
+
case 'remove': {
|
|
219
|
+
console.log(MINI_BANNER);
|
|
220
|
+
printSection('Remove Wyrm from AI Clients');
|
|
221
|
+
console.log('');
|
|
222
|
+
console.log(` ${c.warning('Removing Wyrm configuration from all AI clients...')}`);
|
|
223
|
+
const results = removeFromAll();
|
|
224
|
+
const removed = results.filter(r => r.action === 'configured');
|
|
225
|
+
const skipped = results.filter(r => r.action === 'skipped');
|
|
226
|
+
for (const r of removed) {
|
|
227
|
+
console.log(` ${icons.check} ${r.client.icon} ${r.client.name} — removed`);
|
|
228
|
+
if (r.backup)
|
|
229
|
+
console.log(` ${c.dim(`backup → ${r.backup}`)}`);
|
|
230
|
+
}
|
|
231
|
+
for (const r of skipped) {
|
|
232
|
+
console.log(` ${c.dim(` ○ ${r.client.icon} ${r.client.name} — ${r.message}`)}`);
|
|
233
|
+
}
|
|
234
|
+
console.log('');
|
|
235
|
+
if (removed.length > 0) {
|
|
236
|
+
console.log(` ${c.success(`Removed from ${removed.length} client(s). Run wyrm-setup to reconnect.`)}`);
|
|
237
|
+
}
|
|
238
|
+
console.log('');
|
|
239
|
+
break;
|
|
240
|
+
}
|
|
241
|
+
case 'reconf': {
|
|
242
|
+
console.log(MINI_BANNER);
|
|
243
|
+
printSection('Re-Configure');
|
|
244
|
+
const meta = loadWyrmMeta();
|
|
245
|
+
if (meta) {
|
|
246
|
+
console.log(` ${c.dim(`Restoring config for: ${meta.configuredClients.join(', ')}`)}`);
|
|
247
|
+
}
|
|
248
|
+
else {
|
|
249
|
+
console.log(` ${c.dim('No previous config found — running full auto-configure')}`);
|
|
250
|
+
}
|
|
251
|
+
const results = reconfAll();
|
|
252
|
+
printResults(results);
|
|
253
|
+
break;
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
main().catch((err) => {
|
|
258
|
+
printError(`Setup failed: ${err}`);
|
|
259
|
+
process.exit(1);
|
|
260
|
+
});
|
|
261
|
+
//# sourceMappingURL=setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EACjB,SAAS,EACT,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,YAAY,GACb,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAU,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAA2B,UAAU,EAA2B,YAAY,EAAE,MAAM,UAAU,CAAC;AAY7I,SAAS,SAAS,CAAC,IAAc;IAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,4BAA4B;IAExD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAC7B,CAAC;IAED,MAAM,MAAM,GAAc,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAE9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,QAAQ,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAChB,KAAK,SAAS,CAAC;YACf,KAAK,IAAI,CAAC;YACV,KAAK,OAAO,CAAC;YACb,KAAK,QAAQ;gBACX,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;gBACzB,MAAM;YAER,KAAK,UAAU,CAAC;YAChB,KAAK,IAAI,CAAC;YACV,KAAK,QAAQ,CAAC;YACd,KAAK,WAAW;gBACd,MAAM,CAAC,OAAO,GAAG,QAAQ,CAAC;gBAC1B,MAAM;YAER,KAAK,QAAQ,CAAC;YACd,KAAK,IAAI,CAAC;YACV,KAAK,MAAM;gBACT,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC;gBACxB,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;oBAChB,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;oBAC7D,CAAC,EAAE,CAAC;gBACN,CAAC;gBACD,MAAM;YAER,KAAK,UAAU,CAAC;YAChB,KAAK,eAAe,CAAC;YACrB,KAAK,QAAQ;gBACX,MAAM,CAAC,OAAO,GAAG,QAAQ,CAAC;gBAC1B,MAAM;YAER,KAAK,QAAQ,CAAC;YACd,KAAK,IAAI,CAAC;YACV,KAAK,MAAM;gBACT,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC;gBACxB,MAAM;YAER,KAAK,UAAU,CAAC;YAChB,KAAK,IAAI;gBACP,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;oBAChB,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;oBAChC,CAAC,EAAE,CAAC;gBACN,CAAC;gBACD,MAAM;YAER,KAAK,MAAM,CAAC;YACZ,KAAK,IAAI;gBACP,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;oBAChB,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;oBAC5B,CAAC,EAAE,CAAC;gBACN,CAAC;gBACD,MAAM;YAER,KAAK,QAAQ,CAAC;YACd,KAAK,IAAI,CAAC;YACV,KAAK,MAAM;gBACT,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC;gBACxB,MAAM;QACV,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,mDAAmD;AAEnD,SAAS,YAAY,CAAC,OAAsB;IAC1C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,YAAY,CAAC,CAAC;IAClE,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;IAC5D,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;IAE1D,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QAC1G,IAAI,CAAC,CAAC,MAAM;YAAE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAChG,IAAI,CAAC,CAAC,MAAM;YAAE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IACpF,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACnG,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IACxD,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,sBAAsB,YAAY,eAAe,CAAC,EAAE,CAAC,CAAC;QAChG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,wDAAwD,CAAC,EAAE,CAAC,CAAC;IACtF,CAAC;SAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,iDAAiD,CAAC,EAAE,CAAC,CAAC;IACjF,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,oDAAoD,CAAC,EAAE,CAAC,CAAC;IAClF,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,SAAS,SAAS;IAChB,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACzB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;IAC9E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,gDAAgD,CAAC,CAAC;IACtF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,6CAA6C,CAAC,CAAC;IAC/E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,0CAA0C,CAAC,CAAC;IAC3E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,0CAA0C,CAAC,CAAC;IAC7E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,qDAAqD,CAAC,CAAC;IACxF,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,wCAAwC,CAAC,CAAC;IAC7E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,mCAAmC,CAAC,CAAC;IACpE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,oCAAoC,CAAC,CAAC;IAC3E,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,sCAAsC,CAAC,CAAC;IACzE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;IAChC,KAAK,MAAM,EAAE,IAAI,OAAO,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC,GAAG,CAAC,6BAA6B,CAAC,EAAE,CAAC,CAAC;IACtG,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC,GAAG,CAAC,0BAA0B,CAAC,EAAE,CAAC,CAAC;IACnG,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC,GAAG,CAAC,yBAAyB,CAAC,EAAE,CAAC,CAAC;IACnG,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC,GAAG,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;IACnG,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC,GAAG,CAAC,2BAA2B,CAAC,EAAE,CAAC,CAAC;IACpG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,SAAS,eAAe;IACtB,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACzB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,YAAY,CAAC,sBAAsB,CAAC,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;IAEhC,KAAK,MAAM,EAAE,IAAI,OAAO,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,EAAE,CAAC,QAAQ;YACxB,CAAC,CAAC,EAAE,CAAC,UAAU;gBACb,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC;gBAC1B,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;YAC3B,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAEzB,MAAM,UAAU,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAEnE,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,GAAG,UAAU,EAAE,CAAC,CAAC;QAC7G,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,iDAAiD;AAEjD,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAErC,QAAQ,IAAI,CAAC,OAAO,EAAE,CAAC;QACrB,KAAK,MAAM;YACT,SAAS,EAAE,CAAC;YACZ,MAAM;QAER,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC,CAAC;YAChC,MAAM;QACR,CAAC;QAED,KAAK,MAAM;YACT,eAAe,EAAE,CAAC;YAClB,MAAM;QAER,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACpB,YAAY,CAAC,gBAAgB,CAAC,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAEhB,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,kBAAkB,EAAE,CAAC;YAC3D,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,gBAAgB,EAAE,CAAC;YAEjD,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,KAAK,YAAY,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YAC9D,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,QAAQ,YAAY,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC7D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,4BAA4B,CAAC,EAAE,CAAC,CAAC;YAExD,MAAM,OAAO,GAAG,gBAAgB,CAAC;gBAC/B,UAAU;gBACV,MAAM;aACP,CAAC,CAAC;YAEH,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,MAAM;QACR,CAAC;QAED,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACnD,UAAU,CAAC,qEAAqE,CAAC,CAAC;gBAClF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACzB,YAAY,CAAC,cAAc,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAExD,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE;gBAChD,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,MAAM,EAAE,IAAI,CAAC,MAAM;aACpB,CAAC,CAAC;YAEH,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,MAAM;QACR,CAAC;QAED,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACzB,YAAY,CAAC,6BAA6B,CAAC,CAAC;YAC5C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,oDAAoD,CAAC,EAAE,CAAC,CAAC;YAEpF,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;YAEhC,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,YAAY,CAAC,CAAC;YAC/D,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;YAE5D,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;gBACxB,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,CAAC;gBAC5E,IAAI,CAAC,CAAC,MAAM;oBAAE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;YACpE,CAAC;YAED,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;gBACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;YACpF,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,gBAAgB,OAAO,CAAC,MAAM,0CAA0C,CAAC,EAAE,CAAC,CAAC;YAC1G,CAAC;YACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,MAAM;QACR,CAAC;QAED,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACzB,YAAY,CAAC,cAAc,CAAC,CAAC;YAE7B,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;YAC5B,IAAI,IAAI,EAAE,CAAC;gBACT,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,yBAAyB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YAC1F,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,wDAAwD,CAAC,EAAE,CAAC,CAAC;YACtF,CAAC;YAED,MAAM,OAAO,GAAG,SAAS,EAAE,CAAC;YAC5B,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,MAAM;QACR,CAAC;IACH,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,UAAU,CAAC,iBAAiB,GAAG,EAAE,CAAC,CAAC;IACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wyrm Summarizer - Compresses old sessions to save tokens
|
|
3
|
+
*
|
|
4
|
+
* Uses a simple extractive summarization:
|
|
5
|
+
* - Keeps key information (commits, files, major issues)
|
|
6
|
+
* - Drops verbose descriptions
|
|
7
|
+
* - Creates a condensed summary for archived sessions
|
|
8
|
+
*/
|
|
9
|
+
import { Session } from './database.js';
|
|
10
|
+
export interface SummaryResult {
|
|
11
|
+
summary: string;
|
|
12
|
+
tokenEstimate: number;
|
|
13
|
+
}
|
|
14
|
+
export declare function summarizeSession(session: Session): SummaryResult;
|
|
15
|
+
export declare function summarizeMultipleSessions(sessions: Session[]): SummaryResult;
|
|
16
|
+
/**
|
|
17
|
+
* Estimate tokens in a string (rough approximation)
|
|
18
|
+
*/
|
|
19
|
+
export declare function estimateTokens(text: string): number;
|
|
20
|
+
/**
|
|
21
|
+
* Create a compressed context bundle under a token limit
|
|
22
|
+
*/
|
|
23
|
+
export declare function createContextBundle(project: {
|
|
24
|
+
name: string;
|
|
25
|
+
stack?: string;
|
|
26
|
+
}, currentContext: Record<string, string>, recentSessions: Session[], pendingQuests: {
|
|
27
|
+
title: string;
|
|
28
|
+
priority: string;
|
|
29
|
+
}[], maxTokens?: number): string;
|
|
30
|
+
//# sourceMappingURL=summarizer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"summarizer.d.ts","sourceRoot":"","sources":["../src/summarizer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,aAAa,CAgDhE;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,aAAa,CAO5E;AA+BD;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EACzC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACtC,cAAc,EAAE,OAAO,EAAE,EACzB,aAAa,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,EAAE,EACpD,SAAS,SAAO,GACf,MAAM,CAqDR"}
|