resolve-solo 0.3.0 → 0.5.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.
@@ -0,0 +1,154 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * MCP Server Entry Point
4
+ *
5
+ * Exposes Resolve Solo functionality as MCP tools for Claude Code integration.
6
+ * Uses stdio transport for subprocess communication.
7
+ */
8
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
9
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
10
+ import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
11
+ import { registerTools, executeTool } from './mcp/tools.js';
12
+ /**
13
+ * Start MCP server with stdio transport
14
+ */
15
+ async function startMcpServer() {
16
+ const server = new Server({
17
+ name: 'resolve-solo',
18
+ version: '0.4.0',
19
+ }, {
20
+ capabilities: {
21
+ tools: {},
22
+ },
23
+ });
24
+ // Register tool list handler
25
+ server.setRequestHandler(ListToolsRequestSchema, async () => {
26
+ return {
27
+ tools: registerTools(),
28
+ };
29
+ });
30
+ // Register tool execution handler
31
+ server.setRequestHandler(CallToolRequestSchema, async (request) => {
32
+ const { name, arguments: args } = request.params;
33
+ try {
34
+ const result = await executeTool(name, args || {});
35
+ return {
36
+ content: [
37
+ {
38
+ type: 'text',
39
+ text: formatMcpResponse(result),
40
+ },
41
+ ],
42
+ };
43
+ }
44
+ catch (error) {
45
+ const errorMessage = error instanceof Error ? error.message : String(error);
46
+ console.error(`Tool execution error: ${errorMessage}`);
47
+ return {
48
+ content: [
49
+ {
50
+ type: 'text',
51
+ text: `Error: ${errorMessage}`,
52
+ },
53
+ ],
54
+ isError: true,
55
+ };
56
+ }
57
+ });
58
+ // Connect stdio transport
59
+ const transport = new StdioServerTransport();
60
+ await server.connect(transport);
61
+ // Log to stderr (stdout reserved for MCP protocol)
62
+ console.error('Resolve Solo MCP server started');
63
+ }
64
+ /**
65
+ * Format handler result as markdown for Claude Code
66
+ */
67
+ function formatMcpResponse(result) {
68
+ if (!result.success) {
69
+ return `**Error**: ${result.message}\n\n${result.error || ''}`;
70
+ }
71
+ // Format based on data type
72
+ if (result.data) {
73
+ const data = result.data;
74
+ // Investigation result
75
+ if (data.timeline && data.paths) {
76
+ let output = `## Investigation: ${data.query}\n\n`;
77
+ output += `**Time Window**: ${data.timeWindow}\n\n`;
78
+ // Timeline
79
+ output += `### Timeline (${data.timeline.length} items)\n\n`;
80
+ data.timeline.slice(0, 10).forEach((item, i) => {
81
+ output += `${i + 1}. **${item.signal}** - ${item.summary}\n`;
82
+ output += ` *${item.whyItMatters}* (confidence: ${item.confidence})\n\n`;
83
+ });
84
+ // Investigation paths
85
+ if (data.paths && data.paths.length > 0) {
86
+ output += `### Suggested Paths\n\n`;
87
+ data.paths.forEach((path) => {
88
+ output += `- ${path.description} (confidence: ${path.confidence})\n`;
89
+ });
90
+ output += '\n';
91
+ }
92
+ // Recall
93
+ if (data.recall && data.recall.length > 0) {
94
+ output += `### Similar Past Incidents\n\n`;
95
+ data.recall.forEach((match) => {
96
+ output += `- **${match.title}**\n`;
97
+ output += ` ${match.matchReason}\n`;
98
+ output += ` *What worked:* ${match.whatWorked}\n\n`;
99
+ });
100
+ }
101
+ return output;
102
+ }
103
+ // Details result
104
+ if (data.item && data.itemNumber) {
105
+ let output = `## Item ${data.itemNumber} Details\n\n`;
106
+ const item = data.item;
107
+ output += `**Type**: ${item.signal}\n`;
108
+ output += `**Target**: ${item.target}\n`;
109
+ output += `**Time**: ${new Date(item.timestamp).toLocaleString()}\n`;
110
+ output += `**Summary**: ${item.summary}\n`;
111
+ output += `**Why it matters**: ${item.whyItMatters}\n`;
112
+ output += `**Confidence**: ${item.confidence}\n\n`;
113
+ if (item.details) {
114
+ output += `### Additional Details\n\`\`\`json\n${JSON.stringify(item.details, null, 2)}\n\`\`\`\n`;
115
+ }
116
+ return output;
117
+ }
118
+ // Note added
119
+ if (data.note) {
120
+ return `✓ Note added to investigation\n\n"${data.note}"`;
121
+ }
122
+ // Investigation closed
123
+ if (data.resolution) {
124
+ let output = `✓ Investigation closed\n\n`;
125
+ output += `**Query**: ${data.query}\n`;
126
+ output += `**Resolution**: ${data.resolution}\n`;
127
+ output += `**Time saved**: ${data.timeSaved} minutes\n\n`;
128
+ if (data.notes && data.notes.length > 0) {
129
+ output += `### Your notes:\n`;
130
+ data.notes.forEach((note) => {
131
+ output += `- ${note.note}\n`;
132
+ });
133
+ }
134
+ return output;
135
+ }
136
+ // Demo data seeded
137
+ if (data.services !== undefined) {
138
+ let output = `✓ Demo data generated\n\n`;
139
+ output += `- ${data.services} services\n`;
140
+ output += `- ${data.deploys} deploy events\n`;
141
+ output += `- ${data.logs} log entries\n`;
142
+ output += `- ${data.incidents} past incidents\n`;
143
+ return output;
144
+ }
145
+ }
146
+ // Default format
147
+ return result.message;
148
+ }
149
+ // Start server
150
+ startMcpServer().catch((error) => {
151
+ console.error('Fatal error:', error);
152
+ process.exit(1);
153
+ });
154
+ //# sourceMappingURL=mcp-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":";AAEA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE5D;;GAEG;AACH,KAAK,UAAU,cAAc;IAC3B,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB;QACE,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,OAAO;KACjB,EACD;QACE,YAAY,EAAE;YACZ,KAAK,EAAE,EAAE;SACV;KACF,CACF,CAAC;IAEF,6BAA6B;IAC7B,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QAC1D,OAAO;YACL,KAAK,EAAE,aAAa,EAAE;SACvB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,kCAAkC;IAClC,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QAChE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;QAEjD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;YAEnD,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC;qBAChC;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5E,OAAO,CAAC,KAAK,CAAC,yBAAyB,YAAY,EAAE,CAAC,CAAC;YAEvD,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,UAAU,YAAY,EAAE;qBAC/B;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,0BAA0B;IAC1B,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC,mDAAmD;IACnD,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;AACnD,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,MAAW;IACpC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,cAAc,MAAM,CAAC,OAAO,OAAO,MAAM,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;IACjE,CAAC;IAED,4BAA4B;IAC5B,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAChB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QAEzB,uBAAuB;QACvB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAChC,IAAI,MAAM,GAAG,qBAAqB,IAAI,CAAC,KAAK,MAAM,CAAC;YACnD,MAAM,IAAI,oBAAoB,IAAI,CAAC,UAAU,MAAM,CAAC;YAEpD,WAAW;YACX,MAAM,IAAI,iBAAiB,IAAI,CAAC,QAAQ,CAAC,MAAM,aAAa,CAAC;YAC7D,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,CAAS,EAAE,EAAE;gBAC1D,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,MAAM,QAAQ,IAAI,CAAC,OAAO,IAAI,CAAC;gBAC7D,MAAM,IAAI,OAAO,IAAI,CAAC,YAAY,kBAAkB,IAAI,CAAC,UAAU,OAAO,CAAC;YAC7E,CAAC,CAAC,CAAC;YAEH,sBAAsB;YACtB,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxC,MAAM,IAAI,yBAAyB,CAAC;gBACpC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,EAAE;oBAC/B,MAAM,IAAI,KAAK,IAAI,CAAC,WAAW,iBAAiB,IAAI,CAAC,UAAU,KAAK,CAAC;gBACvE,CAAC,CAAC,CAAC;gBACH,MAAM,IAAI,IAAI,CAAC;YACjB,CAAC;YAED,SAAS;YACT,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1C,MAAM,IAAI,gCAAgC,CAAC;gBAC3C,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAU,EAAE,EAAE;oBACjC,MAAM,IAAI,OAAO,KAAK,CAAC,KAAK,MAAM,CAAC;oBACnC,MAAM,IAAI,KAAK,KAAK,CAAC,WAAW,IAAI,CAAC;oBACrC,MAAM,IAAI,oBAAoB,KAAK,CAAC,UAAU,MAAM,CAAC;gBACvD,CAAC,CAAC,CAAC;YACL,CAAC;YAED,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,iBAAiB;QACjB,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACjC,IAAI,MAAM,GAAG,WAAW,IAAI,CAAC,UAAU,cAAc,CAAC;YACtD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACvB,MAAM,IAAI,aAAa,IAAI,CAAC,MAAM,IAAI,CAAC;YACvC,MAAM,IAAI,eAAe,IAAI,CAAC,MAAM,IAAI,CAAC;YACzC,MAAM,IAAI,aAAa,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE,IAAI,CAAC;YACrE,MAAM,IAAI,gBAAgB,IAAI,CAAC,OAAO,IAAI,CAAC;YAC3C,MAAM,IAAI,uBAAuB,IAAI,CAAC,YAAY,IAAI,CAAC;YACvD,MAAM,IAAI,mBAAmB,IAAI,CAAC,UAAU,MAAM,CAAC;YAEnD,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,MAAM,IAAI,uCAAuC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC;YACrG,CAAC;YAED,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,aAAa;QACb,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,qCAAqC,IAAI,CAAC,IAAI,GAAG,CAAC;QAC3D,CAAC;QAED,uBAAuB;QACvB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,IAAI,MAAM,GAAG,4BAA4B,CAAC;YAC1C,MAAM,IAAI,cAAc,IAAI,CAAC,KAAK,IAAI,CAAC;YACvC,MAAM,IAAI,mBAAmB,IAAI,CAAC,UAAU,IAAI,CAAC;YACjD,MAAM,IAAI,mBAAmB,IAAI,CAAC,SAAS,cAAc,CAAC;YAE1D,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxC,MAAM,IAAI,mBAAmB,CAAC;gBAC9B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,EAAE;oBAC/B,MAAM,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC;gBAC/B,CAAC,CAAC,CAAC;YACL,CAAC;YAED,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,mBAAmB;QACnB,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAChC,IAAI,MAAM,GAAG,2BAA2B,CAAC;YACzC,MAAM,IAAI,KAAK,IAAI,CAAC,QAAQ,aAAa,CAAC;YAC1C,MAAM,IAAI,KAAK,IAAI,CAAC,OAAO,kBAAkB,CAAC;YAC9C,MAAM,IAAI,KAAK,IAAI,CAAC,IAAI,gBAAgB,CAAC;YACzC,MAAM,IAAI,KAAK,IAAI,CAAC,SAAS,mBAAmB,CAAC;YACjD,OAAO,MAAM,CAAC;QAChB,CAAC;IACH,CAAC;IAED,iBAAiB;IACjB,OAAO,MAAM,CAAC,OAAO,CAAC;AACxB,CAAC;AAED,eAAe;AACf,cAAc,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IAC/B,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAmFxD;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CA8BxD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAwCrD"}
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AA6FxD;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CA8BxD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAyCrD"}
package/dist/parser.js CHANGED
@@ -59,6 +59,16 @@ const INTENT_PATTERNS = [
59
59
  intent: 'doctor',
60
60
  patterns: [/^doctor$/i, /^health\s*check$/i],
61
61
  },
62
+ {
63
+ intent: 'setup',
64
+ patterns: [
65
+ /^setup$/i,
66
+ /^configure$/i,
67
+ /^setup\s+claude$/i,
68
+ /^configure\s+claude$/i,
69
+ /^install\s+claude$/i,
70
+ ],
71
+ },
62
72
  {
63
73
  intent: 'uninstall',
64
74
  patterns: [
@@ -135,6 +145,7 @@ export function getExamples(intent) {
135
145
  'resolveai resolve incident was false alarm',
136
146
  ],
137
147
  'report-weekly': ['resolveai report weekly'],
148
+ setup: ['resolveai setup', 'resolveai configure'],
138
149
  doctor: ['resolveai doctor'],
139
150
  uninstall: ['resolveai uninstall'],
140
151
  unknown: [],
@@ -1 +1 @@
1
- {"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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"}
package/dist/repl.d.ts ADDED
@@ -0,0 +1,11 @@
1
+ /**
2
+ * REPL (Read-Eval-Print Loop) Mode
3
+ *
4
+ * Interactive session for standalone users.
5
+ * Type commands without the 'resolveai' prefix.
6
+ */
7
+ /**
8
+ * Start interactive REPL mode
9
+ */
10
+ export declare function startRepl(): Promise<void>;
11
+ //# sourceMappingURL=repl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repl.d.ts","sourceRoot":"","sources":["../src/repl.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAqBH;;GAEG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAiD/C"}
package/dist/repl.js ADDED
@@ -0,0 +1,407 @@
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
+ await handleReportWeeklyRepl(context);
156
+ break;
157
+ case 'doctor':
158
+ console.log(chalk.yellow('⚠️ Doctor command not yet implemented'));
159
+ console.log();
160
+ break;
161
+ case 'uninstall':
162
+ console.log(chalk.yellow('⚠️ Uninstall not available in REPL mode'));
163
+ console.log(chalk.gray('Exit REPL and run: npm uninstall -g resolve-solo'));
164
+ console.log();
165
+ break;
166
+ case 'unknown':
167
+ default:
168
+ console.log(chalk.yellow('❓ Unknown command:'), parsed.raw);
169
+ console.log(chalk.gray('Try: help, demo, investigate, exit'));
170
+ console.log();
171
+ break;
172
+ }
173
+ }
174
+ /**
175
+ * REPL handler for demo command
176
+ */
177
+ async function handleDemoRepl(context, state) {
178
+ console.log();
179
+ console.log(chalk.cyan('🔍 Running demo investigation...'));
180
+ console.log();
181
+ const result = await handlers.handleDemo(context);
182
+ if (!result.success) {
183
+ console.log(chalk.red('✗'), result.message);
184
+ console.log();
185
+ return;
186
+ }
187
+ const investigation = result.data;
188
+ displayInvestigation(investigation);
189
+ console.log(chalk.gray('Note: Demo mode does not create persistent session'));
190
+ console.log();
191
+ }
192
+ /**
193
+ * REPL handler for investigate command
194
+ */
195
+ async function handleInvestigateRepl(query, context, state) {
196
+ console.log();
197
+ console.log(chalk.cyan('🔍 Investigating...'));
198
+ console.log();
199
+ const result = await handlers.handleInvestigate(query, context);
200
+ if (!result.success) {
201
+ console.log(chalk.yellow('⚠️ '), result.message);
202
+ if (result.error) {
203
+ console.log(chalk.gray(result.error));
204
+ }
205
+ console.log();
206
+ return;
207
+ }
208
+ const investigation = result.data;
209
+ // Update REPL state with new session
210
+ state.currentSessionId = investigation.sessionId;
211
+ state.currentQuery = investigation.query;
212
+ // Display investigation
213
+ displayInvestigation(investigation);
214
+ console.log();
215
+ console.log(chalk.gray('Session active. Try:'));
216
+ console.log(chalk.gray(' show details for item 1'));
217
+ console.log(chalk.gray(' note <your observation>'));
218
+ console.log(chalk.gray(' close <resolution>'));
219
+ console.log();
220
+ }
221
+ /**
222
+ * REPL handler for details command
223
+ */
224
+ async function handleDetailsRepl(args, context) {
225
+ console.log();
226
+ const itemNum = parseInt(args[args.length - 1]);
227
+ const result = await handlers.handleDetails(itemNum, context);
228
+ if (!result.success) {
229
+ console.log(chalk.yellow('⚠️ '), result.message);
230
+ if (result.error) {
231
+ console.log(chalk.gray(result.error));
232
+ }
233
+ console.log();
234
+ return;
235
+ }
236
+ const data = result.data;
237
+ const item = data.item;
238
+ console.log(chalk.bold.cyan(`📋 Item ${data.itemNumber} Details`));
239
+ console.log();
240
+ console.log(chalk.bold('Type:'), item.signal);
241
+ console.log(chalk.bold('Target:'), item.target);
242
+ console.log(chalk.bold('Time:'), new Date(item.timestamp).toLocaleString());
243
+ console.log(chalk.bold('Summary:'), item.summary);
244
+ console.log(chalk.bold('Why it matters:'), item.whyItMatters);
245
+ console.log(chalk.bold('Confidence:'), item.confidence);
246
+ console.log();
247
+ if (item.details) {
248
+ console.log(chalk.bold('Additional Details:'));
249
+ console.log(JSON.stringify(item.details, null, 2));
250
+ console.log();
251
+ }
252
+ }
253
+ /**
254
+ * REPL handler for note command
255
+ */
256
+ async function handleNoteRepl(note, context) {
257
+ console.log();
258
+ const result = await handlers.handleNote(note, context);
259
+ if (!result.success) {
260
+ console.log(chalk.red('✗'), result.message);
261
+ console.log();
262
+ return;
263
+ }
264
+ console.log(chalk.green('✓ Note added'));
265
+ console.log();
266
+ }
267
+ /**
268
+ * REPL handler for close command
269
+ */
270
+ async function handleCloseRepl(resolution, context, state) {
271
+ console.log();
272
+ const result = await handlers.handleClose(resolution, context);
273
+ if (!result.success) {
274
+ console.log(chalk.yellow('⚠️ '), result.message);
275
+ if (result.error) {
276
+ console.log(chalk.gray(result.error));
277
+ }
278
+ console.log();
279
+ return;
280
+ }
281
+ const data = result.data;
282
+ console.log(chalk.green('✓ Investigation closed'));
283
+ console.log();
284
+ console.log(chalk.bold('Query:'), data.query);
285
+ console.log(chalk.bold('Resolution:'), data.resolution);
286
+ console.log(chalk.gray(`Time saved: ${data.timeSaved} minutes`));
287
+ console.log();
288
+ // Clear session state
289
+ state.currentSessionId = null;
290
+ state.currentQuery = null;
291
+ }
292
+ /**
293
+ * REPL handler for demo seed
294
+ */
295
+ function handleDemoSeedRepl(context) {
296
+ console.log();
297
+ const result = handlers.handleDemoSeed(context);
298
+ if (!result.success) {
299
+ console.log(chalk.yellow('⚠️ '), result.message);
300
+ if (result.error) {
301
+ console.log(chalk.gray(result.error));
302
+ }
303
+ console.log();
304
+ return;
305
+ }
306
+ const data = result.data;
307
+ console.log(chalk.green('✓ Demo data seeded'));
308
+ console.log();
309
+ console.log('Generated:');
310
+ console.log(chalk.gray(` ${data.services} services, ${data.deploys} deploys, ${data.logs} logs`));
311
+ console.log();
312
+ }
313
+ /**
314
+ * REPL handler for demo reset
315
+ */
316
+ function handleDemoResetRepl(context) {
317
+ console.log();
318
+ const result = handlers.handleDemoReset(context);
319
+ if (!result.success) {
320
+ console.log(chalk.red('✗'), result.message);
321
+ console.log();
322
+ return;
323
+ }
324
+ const data = result.data;
325
+ console.log(chalk.green('✓ Demo data reset'));
326
+ console.log();
327
+ console.log('Generated:');
328
+ console.log(chalk.gray(` ${data.services} services, ${data.deploys} deploys, ${data.logs} logs`));
329
+ console.log();
330
+ }
331
+ /**
332
+ * REPL handler for report weekly - M8
333
+ */
334
+ async function handleReportWeeklyRepl(context) {
335
+ console.log();
336
+ console.log(chalk.cyan('📊 Generating weekly report...'));
337
+ console.log();
338
+ const result = await handlers.handleReportWeekly(context);
339
+ if (!result.success) {
340
+ console.log(chalk.red('✗'), result.message);
341
+ console.log();
342
+ if (result.error) {
343
+ console.log(chalk.gray(result.error));
344
+ }
345
+ console.log();
346
+ return;
347
+ }
348
+ const data = result.data;
349
+ console.log(chalk.green('✓ Weekly report generated'));
350
+ console.log();
351
+ console.log(chalk.bold('Week:'), data.weekNumber);
352
+ console.log(chalk.bold('Date Range:'), `${data.dateRange.start} to ${data.dateRange.end}`);
353
+ console.log();
354
+ console.log(chalk.bold('Summary:'));
355
+ console.log(` Investigations: ${data.summary.investigations}`);
356
+ console.log(` Closed: ${data.summary.timeSaved}`);
357
+ console.log(` Time Saved: ${data.summary.totalMinutes} minutes`);
358
+ console.log();
359
+ console.log(chalk.bold('Reports saved:'));
360
+ console.log(chalk.gray(` Markdown: ${data.markdownPath}`));
361
+ console.log(chalk.gray(` JSON: ${data.jsonPath}`));
362
+ console.log();
363
+ }
364
+ /**
365
+ * Check if input is an exit command
366
+ */
367
+ function isExitCommand(input) {
368
+ const lower = input.toLowerCase();
369
+ return lower === 'exit' || lower === 'quit' || lower === 'bye';
370
+ }
371
+ /**
372
+ * Handle Ctrl+C
373
+ */
374
+ function handleCtrlC(state, rl) {
375
+ console.log();
376
+ console.log(chalk.yellow('Use "exit" to quit, or press Ctrl+C again to force exit.'));
377
+ // Set up one-time listener for second Ctrl+C
378
+ const forceExit = () => {
379
+ console.log();
380
+ console.log('Exiting...');
381
+ state.isRunning = false;
382
+ rl.close();
383
+ process.exit(0);
384
+ };
385
+ rl.once('SIGINT', forceExit);
386
+ // Remove force exit listener after 3 seconds
387
+ setTimeout(() => {
388
+ rl.off('SIGINT', forceExit);
389
+ }, 3000);
390
+ }
391
+ /**
392
+ * Handle graceful exit
393
+ */
394
+ function handleExit(state, rl) {
395
+ console.log();
396
+ if (state.currentSessionId) {
397
+ console.log(chalk.yellow('⚠️ You have an active investigation session'));
398
+ console.log(chalk.gray('Consider closing it with: close <resolution>'));
399
+ console.log();
400
+ }
401
+ console.log('Goodbye!');
402
+ console.log();
403
+ state.isRunning = false;
404
+ rl.close();
405
+ process.exit(0);
406
+ }
407
+ //# sourceMappingURL=repl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repl.js","sourceRoot":"","sources":["../src/repl.ts"],"names":[],"mappings":"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"}