resolve-solo 0.2.0 → 0.4.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/dist/repl.js ADDED
@@ -0,0 +1,375 @@
1
+ /**
2
+ * REPL (Read-Eval-Print Loop) Mode
3
+ *
4
+ * Interactive session for standalone users.
5
+ * Type commands without the 'resolveai' prefix.
6
+ */
7
+ import * as readline from 'node:readline/promises';
8
+ import { stdin as input, stdout as output } from 'node:process';
9
+ import chalk from 'chalk';
10
+ import { parseIntent } from './parser.js';
11
+ import * as handlers from './handlers.js';
12
+ import { getActiveSession } from './database.js';
13
+ import { displayInvestigation } from './demo-output.js';
14
+ import { showHelp } from './output.js';
15
+ /**
16
+ * Start interactive REPL mode
17
+ */
18
+ export async function startRepl() {
19
+ const state = {
20
+ currentSessionId: null,
21
+ currentQuery: null,
22
+ isRunning: true,
23
+ };
24
+ // Check for active session on startup
25
+ const activeSession = getActiveSession();
26
+ if (activeSession) {
27
+ state.currentSessionId = activeSession.sessionId;
28
+ state.currentQuery = activeSession.query;
29
+ }
30
+ // Create readline interface
31
+ const rl = readline.createInterface({
32
+ input,
33
+ output,
34
+ prompt: buildPrompt(state),
35
+ });
36
+ // Show welcome message
37
+ showReplWelcome(state);
38
+ // Setup signal handlers
39
+ rl.on('SIGINT', () => {
40
+ handleCtrlC(state, rl);
41
+ });
42
+ // Main REPL loop
43
+ try {
44
+ while (state.isRunning) {
45
+ rl.setPrompt(buildPrompt(state));
46
+ const line = await rl.question(buildPrompt(state));
47
+ if (!state.isRunning)
48
+ break;
49
+ await processInput(line, state, rl);
50
+ }
51
+ }
52
+ catch (error) {
53
+ if (error instanceof Error && error.message.includes('aborted')) {
54
+ // User closed REPL (Ctrl+D or Ctrl+C)
55
+ handleExit(state, rl);
56
+ }
57
+ else {
58
+ throw error;
59
+ }
60
+ }
61
+ rl.close();
62
+ }
63
+ /**
64
+ * Build session-aware prompt
65
+ */
66
+ function buildPrompt(state) {
67
+ if (state.currentSessionId) {
68
+ const shortId = state.currentSessionId.substring(0, 8);
69
+ return chalk.cyan(`resolve-ai [${shortId}]> `);
70
+ }
71
+ return chalk.cyan('resolve-ai> ');
72
+ }
73
+ /**
74
+ * Show welcome message
75
+ */
76
+ function showReplWelcome(state) {
77
+ console.log();
78
+ console.log(chalk.bold.cyan('Resolve Solo - Interactive Mode'));
79
+ console.log(chalk.gray('Type commands in natural language. No prefix needed.'));
80
+ console.log();
81
+ if (state.currentSessionId) {
82
+ console.log(chalk.green('✓ Resumed active investigation:'), state.currentQuery);
83
+ console.log(chalk.gray(` Session: ${state.currentSessionId}`));
84
+ console.log();
85
+ }
86
+ console.log(chalk.gray('Try:'), chalk.white('investigate timeouts'));
87
+ console.log(chalk.gray(' demo'));
88
+ console.log(chalk.gray(' help'));
89
+ console.log(chalk.gray(' exit'));
90
+ console.log();
91
+ }
92
+ /**
93
+ * Process user input
94
+ */
95
+ async function processInput(input, state, rl) {
96
+ const trimmed = input.trim();
97
+ // Handle empty input
98
+ if (!trimmed) {
99
+ return;
100
+ }
101
+ // Handle REPL-specific commands
102
+ if (isExitCommand(trimmed)) {
103
+ handleExit(state, rl);
104
+ return;
105
+ }
106
+ if (trimmed === 'clear' || trimmed === 'cls') {
107
+ console.clear();
108
+ showReplWelcome(state);
109
+ return;
110
+ }
111
+ // Parse and execute command
112
+ try {
113
+ const parsed = parseIntent(trimmed);
114
+ const context = {
115
+ mode: 'repl',
116
+ sessionId: state.currentSessionId || undefined,
117
+ };
118
+ await executeCommand(parsed.intent, parsed, context, state);
119
+ }
120
+ catch (error) {
121
+ console.log(chalk.red('Error:'), error instanceof Error ? error.message : String(error));
122
+ console.log();
123
+ }
124
+ }
125
+ /**
126
+ * Execute command based on intent
127
+ */
128
+ async function executeCommand(intent, parsed, context, state) {
129
+ switch (intent) {
130
+ case 'help':
131
+ showHelp();
132
+ break;
133
+ case 'demo':
134
+ await handleDemoRepl(context, state);
135
+ break;
136
+ case 'demo-seed':
137
+ handleDemoSeedRepl(context);
138
+ break;
139
+ case 'demo-reset':
140
+ handleDemoResetRepl(context);
141
+ break;
142
+ case 'investigate':
143
+ await handleInvestigateRepl(parsed.query || 'recent issues', context, state);
144
+ break;
145
+ case 'details':
146
+ await handleDetailsRepl(parsed.args, context);
147
+ break;
148
+ case 'note':
149
+ await handleNoteRepl(parsed.args.join(' '), context);
150
+ break;
151
+ case 'close':
152
+ await handleCloseRepl(parsed.args.join(' '), context, state);
153
+ break;
154
+ case 'report-weekly':
155
+ console.log(chalk.yellow('⚠️ Weekly reports not yet implemented'));
156
+ console.log();
157
+ break;
158
+ case 'doctor':
159
+ console.log(chalk.yellow('⚠️ Doctor command not yet implemented'));
160
+ console.log();
161
+ break;
162
+ case 'uninstall':
163
+ console.log(chalk.yellow('⚠️ Uninstall not available in REPL mode'));
164
+ console.log(chalk.gray('Exit REPL and run: npm uninstall -g resolve-solo'));
165
+ console.log();
166
+ break;
167
+ case 'unknown':
168
+ default:
169
+ console.log(chalk.yellow('❓ Unknown command:'), parsed.raw);
170
+ console.log(chalk.gray('Try: help, demo, investigate, exit'));
171
+ console.log();
172
+ break;
173
+ }
174
+ }
175
+ /**
176
+ * REPL handler for demo command
177
+ */
178
+ async function handleDemoRepl(context, state) {
179
+ console.log();
180
+ console.log(chalk.cyan('🔍 Running demo investigation...'));
181
+ console.log();
182
+ const result = await handlers.handleDemo(context);
183
+ if (!result.success) {
184
+ console.log(chalk.red('✗'), result.message);
185
+ console.log();
186
+ return;
187
+ }
188
+ const investigation = result.data;
189
+ displayInvestigation(investigation);
190
+ console.log(chalk.gray('Note: Demo mode does not create persistent session'));
191
+ console.log();
192
+ }
193
+ /**
194
+ * REPL handler for investigate command
195
+ */
196
+ async function handleInvestigateRepl(query, context, state) {
197
+ console.log();
198
+ console.log(chalk.cyan('🔍 Investigating...'));
199
+ console.log();
200
+ const result = await handlers.handleInvestigate(query, context);
201
+ if (!result.success) {
202
+ console.log(chalk.yellow('⚠️ '), result.message);
203
+ if (result.error) {
204
+ console.log(chalk.gray(result.error));
205
+ }
206
+ console.log();
207
+ return;
208
+ }
209
+ const investigation = result.data;
210
+ // Update REPL state with new session
211
+ state.currentSessionId = investigation.sessionId;
212
+ state.currentQuery = investigation.query;
213
+ // Display investigation
214
+ displayInvestigation(investigation);
215
+ console.log();
216
+ console.log(chalk.gray('Session active. Try:'));
217
+ console.log(chalk.gray(' show details for item 1'));
218
+ console.log(chalk.gray(' note <your observation>'));
219
+ console.log(chalk.gray(' close <resolution>'));
220
+ console.log();
221
+ }
222
+ /**
223
+ * REPL handler for details command
224
+ */
225
+ async function handleDetailsRepl(args, context) {
226
+ console.log();
227
+ const itemNum = parseInt(args[args.length - 1]);
228
+ const result = await handlers.handleDetails(itemNum, context);
229
+ if (!result.success) {
230
+ console.log(chalk.yellow('⚠️ '), result.message);
231
+ if (result.error) {
232
+ console.log(chalk.gray(result.error));
233
+ }
234
+ console.log();
235
+ return;
236
+ }
237
+ const data = result.data;
238
+ const item = data.item;
239
+ console.log(chalk.bold.cyan(`📋 Item ${data.itemNumber} Details`));
240
+ console.log();
241
+ console.log(chalk.bold('Type:'), item.signal);
242
+ console.log(chalk.bold('Target:'), item.target);
243
+ console.log(chalk.bold('Time:'), new Date(item.timestamp).toLocaleString());
244
+ console.log(chalk.bold('Summary:'), item.summary);
245
+ console.log(chalk.bold('Why it matters:'), item.whyItMatters);
246
+ console.log(chalk.bold('Confidence:'), item.confidence);
247
+ console.log();
248
+ if (item.details) {
249
+ console.log(chalk.bold('Additional Details:'));
250
+ console.log(JSON.stringify(item.details, null, 2));
251
+ console.log();
252
+ }
253
+ }
254
+ /**
255
+ * REPL handler for note command
256
+ */
257
+ async function handleNoteRepl(note, context) {
258
+ console.log();
259
+ const result = await handlers.handleNote(note, context);
260
+ if (!result.success) {
261
+ console.log(chalk.red('✗'), result.message);
262
+ console.log();
263
+ return;
264
+ }
265
+ console.log(chalk.green('✓ Note added'));
266
+ console.log();
267
+ }
268
+ /**
269
+ * REPL handler for close command
270
+ */
271
+ async function handleCloseRepl(resolution, context, state) {
272
+ console.log();
273
+ const result = await handlers.handleClose(resolution, context);
274
+ if (!result.success) {
275
+ console.log(chalk.yellow('⚠️ '), result.message);
276
+ if (result.error) {
277
+ console.log(chalk.gray(result.error));
278
+ }
279
+ console.log();
280
+ return;
281
+ }
282
+ const data = result.data;
283
+ console.log(chalk.green('✓ Investigation closed'));
284
+ console.log();
285
+ console.log(chalk.bold('Query:'), data.query);
286
+ console.log(chalk.bold('Resolution:'), data.resolution);
287
+ console.log(chalk.gray(`Time saved: ${data.timeSaved} minutes`));
288
+ console.log();
289
+ // Clear session state
290
+ state.currentSessionId = null;
291
+ state.currentQuery = null;
292
+ }
293
+ /**
294
+ * REPL handler for demo seed
295
+ */
296
+ function handleDemoSeedRepl(context) {
297
+ console.log();
298
+ const result = handlers.handleDemoSeed(context);
299
+ if (!result.success) {
300
+ console.log(chalk.yellow('⚠️ '), result.message);
301
+ if (result.error) {
302
+ console.log(chalk.gray(result.error));
303
+ }
304
+ console.log();
305
+ return;
306
+ }
307
+ const data = result.data;
308
+ console.log(chalk.green('✓ Demo data seeded'));
309
+ console.log();
310
+ console.log('Generated:');
311
+ console.log(chalk.gray(` ${data.services} services, ${data.deploys} deploys, ${data.logs} logs`));
312
+ console.log();
313
+ }
314
+ /**
315
+ * REPL handler for demo reset
316
+ */
317
+ function handleDemoResetRepl(context) {
318
+ console.log();
319
+ const result = handlers.handleDemoReset(context);
320
+ if (!result.success) {
321
+ console.log(chalk.red('✗'), result.message);
322
+ console.log();
323
+ return;
324
+ }
325
+ const data = result.data;
326
+ console.log(chalk.green('✓ Demo data reset'));
327
+ console.log();
328
+ console.log('Generated:');
329
+ console.log(chalk.gray(` ${data.services} services, ${data.deploys} deploys, ${data.logs} logs`));
330
+ console.log();
331
+ }
332
+ /**
333
+ * Check if input is an exit command
334
+ */
335
+ function isExitCommand(input) {
336
+ const lower = input.toLowerCase();
337
+ return lower === 'exit' || lower === 'quit' || lower === 'bye';
338
+ }
339
+ /**
340
+ * Handle Ctrl+C
341
+ */
342
+ function handleCtrlC(state, rl) {
343
+ console.log();
344
+ console.log(chalk.yellow('Use "exit" to quit, or press Ctrl+C again to force exit.'));
345
+ // Set up one-time listener for second Ctrl+C
346
+ const forceExit = () => {
347
+ console.log();
348
+ console.log('Exiting...');
349
+ state.isRunning = false;
350
+ rl.close();
351
+ process.exit(0);
352
+ };
353
+ rl.once('SIGINT', forceExit);
354
+ // Remove force exit listener after 3 seconds
355
+ setTimeout(() => {
356
+ rl.off('SIGINT', forceExit);
357
+ }, 3000);
358
+ }
359
+ /**
360
+ * Handle graceful exit
361
+ */
362
+ function handleExit(state, rl) {
363
+ console.log();
364
+ if (state.currentSessionId) {
365
+ console.log(chalk.yellow('⚠️ You have an active investigation session'));
366
+ console.log(chalk.gray('Consider closing it with: close <resolution>'));
367
+ console.log();
368
+ }
369
+ console.log('Goodbye!');
370
+ console.log();
371
+ state.isRunning = false;
372
+ rl.close();
373
+ process.exit(0);
374
+ }
375
+ //# sourceMappingURL=repl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repl.js","sourceRoot":"","sources":["../src/repl.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Claude Code Integration Setup
3
+ *
4
+ * Automatically configures Claude Code to use resolve-solo MCP server.
5
+ */
6
+ interface SetupResult {
7
+ success: boolean;
8
+ message: string;
9
+ method?: 'claude-mcp' | 'manual-json' | 'manual-instructions';
10
+ configPath?: string;
11
+ }
12
+ /**
13
+ * Attempt to automatically configure Claude Code integration
14
+ */
15
+ export declare function setupClaudeIntegration(): SetupResult;
16
+ /**
17
+ * Get manual setup instructions for user
18
+ */
19
+ export declare function getManualInstructions(): string;
20
+ /**
21
+ * Verify that resolve-solo-mcp binary is accessible
22
+ */
23
+ export declare function verifyBinaryAccessible(): boolean;
24
+ export {};
25
+ //# sourceMappingURL=setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,UAAU,WAAW;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,YAAY,GAAG,aAAa,GAAG,qBAAqB,CAAC;IAC9D,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,WAAW,CA0DpD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAyB9C;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAOhD"}
package/dist/setup.js ADDED
@@ -0,0 +1,108 @@
1
+ /**
2
+ * Claude Code Integration Setup
3
+ *
4
+ * Automatically configures Claude Code to use resolve-solo MCP server.
5
+ */
6
+ import * as fs from 'node:fs';
7
+ import * as path from 'node:path';
8
+ import * as os from 'node:os';
9
+ import { execSync } from 'node:child_process';
10
+ /**
11
+ * Attempt to automatically configure Claude Code integration
12
+ */
13
+ export function setupClaudeIntegration() {
14
+ // Method 1: Try using `claude mcp add` if available
15
+ try {
16
+ execSync('claude mcp add resolve-solo-mcp', { stdio: 'pipe' });
17
+ return {
18
+ success: true,
19
+ message: 'Successfully configured Claude Code via `claude mcp add`',
20
+ method: 'claude-mcp',
21
+ };
22
+ }
23
+ catch (error) {
24
+ // Claude CLI not available or command failed, try manual config
25
+ }
26
+ // Method 2: Try editing Claude Code config file directly
27
+ const configPaths = [
28
+ path.join(os.homedir(), '.config', 'claude', 'config.json'),
29
+ path.join(os.homedir(), '.claude', 'config.json'),
30
+ path.join(os.homedir(), '.claude.json'),
31
+ ];
32
+ for (const configPath of configPaths) {
33
+ if (fs.existsSync(configPath)) {
34
+ try {
35
+ const config = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
36
+ // Initialize mcpServers if needed
37
+ if (!config.mcpServers) {
38
+ config.mcpServers = {};
39
+ }
40
+ // Add resolve-solo server
41
+ config.mcpServers['resolve-solo'] = {
42
+ command: 'resolve-solo-mcp',
43
+ description: 'On-call investigation assistant for incident response',
44
+ };
45
+ // Write back
46
+ fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
47
+ return {
48
+ success: true,
49
+ message: `Successfully configured Claude Code by editing ${configPath}`,
50
+ method: 'manual-json',
51
+ configPath,
52
+ };
53
+ }
54
+ catch (error) {
55
+ // Config file exists but couldn't be edited, continue to next
56
+ continue;
57
+ }
58
+ }
59
+ }
60
+ // Method 3: Couldn't auto-configure, return manual instructions
61
+ return {
62
+ success: false,
63
+ message: 'Could not auto-configure. Manual setup required.',
64
+ method: 'manual-instructions',
65
+ };
66
+ }
67
+ /**
68
+ * Get manual setup instructions for user
69
+ */
70
+ export function getManualInstructions() {
71
+ return `
72
+ Manual Setup Instructions:
73
+
74
+ 1. Locate your Claude Code configuration file:
75
+ - Linux/Mac: ~/.config/claude/config.json or ~/.claude.json
76
+ - Windows: %USERPROFILE%\\.claude\\config.json
77
+
78
+ 2. Add the resolve-solo MCP server:
79
+ {
80
+ "mcpServers": {
81
+ "resolve-solo": {
82
+ "command": "resolve-solo-mcp",
83
+ "description": "On-call investigation assistant"
84
+ }
85
+ }
86
+ }
87
+
88
+ 3. Restart Claude Code
89
+
90
+ 4. Test by asking: "investigate timeout issues"
91
+
92
+ Alternatively, if your Claude Code CLI supports it:
93
+ claude mcp add resolve-solo-mcp
94
+ `;
95
+ }
96
+ /**
97
+ * Verify that resolve-solo-mcp binary is accessible
98
+ */
99
+ export function verifyBinaryAccessible() {
100
+ try {
101
+ execSync('which resolve-solo-mcp', { stdio: 'pipe' });
102
+ return true;
103
+ }
104
+ catch (error) {
105
+ return false;
106
+ }
107
+ }
108
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAS9C;;GAEG;AACH,MAAM,UAAU,sBAAsB;IACpC,oDAAoD;IACpD,IAAI,CAAC;QACH,QAAQ,CAAC,iCAAiC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QAC/D,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,0DAA0D;YACnE,MAAM,EAAE,YAAY;SACrB,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,gEAAgE;IAClE,CAAC;IAED,yDAAyD;IACzD,MAAM,WAAW,GAAG;QAClB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,CAAC;QAC3D,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,aAAa,CAAC;QACjD,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,cAAc,CAAC;KACxC,CAAC;IAEF,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;QACrC,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;gBAEhE,kCAAkC;gBAClC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;oBACvB,MAAM,CAAC,UAAU,GAAG,EAAE,CAAC;gBACzB,CAAC;gBAED,0BAA0B;gBAC1B,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,GAAG;oBAClC,OAAO,EAAE,kBAAkB;oBAC3B,WAAW,EAAE,uDAAuD;iBACrE,CAAC;gBAEF,aAAa;gBACb,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;gBAE9D,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,kDAAkD,UAAU,EAAE;oBACvE,MAAM,EAAE,aAAa;oBACrB,UAAU;iBACX,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,8DAA8D;gBAC9D,SAAS;YACX,CAAC;QACH,CAAC;IACH,CAAC;IAED,gEAAgE;IAChE,OAAO;QACL,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,kDAAkD;QAC3D,MAAM,EAAE,qBAAqB;KAC9B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB;IACnC,OAAO;;;;;;;;;;;;;;;;;;;;;;;CAuBR,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB;IACpC,IAAI,CAAC;QACH,QAAQ,CAAC,wBAAwB,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
package/dist/types.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Core types for Resolve Solo
3
3
  */
4
- export type Intent = 'help' | 'demo' | 'demo-seed' | 'demo-reset' | 'investigate' | 'details' | 'note' | 'close' | 'report-weekly' | 'doctor' | 'uninstall' | 'unknown';
4
+ export type Intent = 'help' | 'demo' | 'demo-seed' | 'demo-reset' | 'investigate' | 'details' | 'note' | 'close' | 'report-weekly' | 'setup' | 'doctor' | 'uninstall' | 'unknown';
5
5
  export interface ParsedCommand {
6
6
  intent: Intent;
7
7
  args: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,MAAM,GACd,MAAM,GACN,MAAM,GACN,WAAW,GACX,YAAY,GACZ,aAAa,GACb,SAAS,GACT,MAAM,GACN,OAAO,GACP,eAAe,GACf,QAAQ,GACR,WAAW,GACX,SAAS,CAAC;AAEd,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,MAAM,GACd,MAAM,GACN,MAAM,GACN,WAAW,GACX,YAAY,GACZ,aAAa,GACb,SAAS,GACT,MAAM,GACN,OAAO,GACP,eAAe,GACf,OAAO,GACP,QAAQ,GACR,WAAW,GACX,SAAS,CAAC;AAEd,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
package/package.json CHANGED
@@ -1,11 +1,12 @@
1
1
  {
2
2
  "name": "resolve-solo",
3
- "version": "0.2.0",
3
+ "version": "0.4.0",
4
4
  "description": "Local-first CLI on-call assistant for individual engineers",
5
5
  "main": "./dist/index.js",
6
6
  "type": "module",
7
7
  "bin": {
8
- "resolveai": "./dist/cli.js"
8
+ "resolveai": "./dist/cli.js",
9
+ "resolve-solo-mcp": "./dist/mcp-cli.js"
9
10
  },
10
11
  "scripts": {
11
12
  "dev": "tsx src/cli.ts",
@@ -42,7 +43,9 @@
42
43
  },
43
44
  "dependencies": {
44
45
  "chalk": "^5.3.0",
45
- "commander": "^12.1.0"
46
+ "commander": "^12.1.0",
47
+ "@modelcontextprotocol/sdk": "^0.5.0",
48
+ "zod": "^3.23.8"
46
49
  },
47
50
  "optionalDependencies": {
48
51
  "better-sqlite3": "^11.7.0"