midas-mcp 5.43.12 → 5.44.2

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,5 @@
1
+ {
2
+ "rewrites": [
3
+ { "source": "/(.*)", "destination": "/index.html" }
4
+ ]
5
+ }
package/dist/index.js CHANGED
@@ -30,7 +30,7 @@ async function startMCPServer() {
30
30
  }
31
31
  async function main() {
32
32
  const args = process.argv.slice(2);
33
- const result = runCLI(args);
33
+ const result = await runCLI(args);
34
34
  switch (result) {
35
35
  case 'handled':
36
36
  process.exit(0);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,cAAc,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAErC,6DAA6D;AAC7D,cAAc,EAAE,CAAC;AAEjB,gDAAgD;AAChD,IAAI,CAAC;IACH,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;IACtD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,cAAc,CAAC,EAAE,GAAG,EAAE,mBAAmB,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;IACnF,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AACtC,CAAC;AAAC,MAAM,CAAC;IACP,6CAA6C;AAC/C,CAAC;AAED,KAAK,UAAU,cAAc;IAC3B,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;IAC9B,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;AAC5C,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAE5B,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,SAAS;YACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,MAAM;QACR,KAAK,QAAQ;YACX,MAAM,cAAc,EAAE,CAAC;YACvB,MAAM;QACR,KAAK,aAAa;YAChB,MAAM,cAAc,EAAE,CAAC;YACvB,MAAM;IACV,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,YAAY,CAAC,KAAc,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,cAAc,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAErC,6DAA6D;AAC7D,cAAc,EAAE,CAAC;AAEjB,gDAAgD;AAChD,IAAI,CAAC;IACH,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;IACtD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,cAAc,CAAC,EAAE,GAAG,EAAE,mBAAmB,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;IACnF,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AACtC,CAAC;AAAC,MAAM,CAAC;IACP,6CAA6C;AAC/C,CAAC;AAED,KAAK,UAAU,cAAc;IAC3B,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;IAC9B,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;AAC5C,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;IAElC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,SAAS;YACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,MAAM;QACR,KAAK,QAAQ;YACX,MAAM,cAAc,EAAE,CAAC;YACvB,MAAM;QACR,KAAK,aAAa;YAChB,MAAM,cAAc,EAAE,CAAC;YACvB,MAAM;IACV,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,YAAY,CAAC,KAAc,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Midas Pilot
3
+ *
4
+ * Local background runner that:
5
+ * 1. Polls the cloud for pending commands
6
+ * 2. Executes Claude Code via CLI
7
+ * 3. Streams output back to cloud
8
+ * 4. Updates task status on completion
9
+ *
10
+ * Usage: midas pilot [--project <path>] [--auto]
11
+ */
12
+ export interface PilotCommand {
13
+ id: string;
14
+ project_id: string;
15
+ command_type: 'prompt' | 'task' | 'auto_advance';
16
+ prompt: string;
17
+ status: 'pending' | 'running' | 'completed' | 'failed';
18
+ created_at: string;
19
+ started_at?: string;
20
+ completed_at?: string;
21
+ output?: string;
22
+ error?: string;
23
+ }
24
+ export interface PilotConfig {
25
+ projectPath: string;
26
+ autoMode: boolean;
27
+ maxTurns: number;
28
+ allowedTools: string[];
29
+ pollInterval: number;
30
+ outputFormat: 'text' | 'json' | 'stream-json';
31
+ }
32
+ export interface ExecutionResult {
33
+ success: boolean;
34
+ output: string;
35
+ exitCode: number;
36
+ duration: number;
37
+ sessionId?: string;
38
+ }
39
+ /**
40
+ * Execute a prompt via Claude Code CLI
41
+ */
42
+ export declare function executeClaudeCode(prompt: string, config?: Partial<PilotConfig>): Promise<ExecutionResult>;
43
+ /**
44
+ * Execute a gameplan task with context
45
+ */
46
+ export declare function executeTask(task: string, projectName: string, phase: string, step: string, config?: Partial<PilotConfig>): Promise<ExecutionResult>;
47
+ export interface PilotStatus {
48
+ running: boolean;
49
+ currentCommand?: PilotCommand;
50
+ lastExecution?: ExecutionResult;
51
+ executedCount: number;
52
+ failedCount: number;
53
+ startedAt?: string;
54
+ }
55
+ /**
56
+ * Start the Midas Pilot
57
+ * Currently runs a single command for prototyping
58
+ */
59
+ export declare function runPilot(prompt: string, config?: Partial<PilotConfig>): Promise<ExecutionResult>;
60
+ /**
61
+ * Run a gameplan task via Pilot
62
+ */
63
+ export declare function runTaskPilot(task: string, projectPath: string): Promise<ExecutionResult>;
64
+ /**
65
+ * Get current pilot status
66
+ */
67
+ export declare function getPilotStatus(): PilotStatus;
68
+ /**
69
+ * Run Pilot in watch mode - polls cloud for commands
70
+ */
71
+ export declare function runWatchMode(pollInterval?: number): Promise<void>;
72
+ /**
73
+ * CLI handler for: midas pilot "prompt"
74
+ */
75
+ export declare function runPilotCLI(args: string[]): Promise<void>;
76
+ //# sourceMappingURL=pilot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pilot.d.ts","sourceRoot":"","sources":["../src/pilot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAiBH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,QAAQ,GAAG,MAAM,GAAG,cAAc,CAAC;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;IACvD,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,aAAa,CAAC;CAC/C;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAgBD;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,OAAO,CAAC,WAAW,CAAM,GAChC,OAAO,CAAC,eAAe,CAAC,CA4E1B;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,MAAM,GAAE,OAAO,CAAC,WAAW,CAAM,GAChC,OAAO,CAAC,eAAe,CAAC,CAU1B;AAMD,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,YAAY,CAAC;IAC9B,aAAa,CAAC,EAAE,eAAe,CAAC;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAQD;;;GAGG;AACH,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,OAAO,CAAC,WAAW,CAAM,GAChC,OAAO,CAAC,eAAe,CAAC,CA6C1B;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,eAAe,CAAC,CAW1B;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,WAAW,CAE5C;AAYD;;GAEG;AACH,wBAAsB,YAAY,CAAC,YAAY,SAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAqDrE;AA6CD;;GAEG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA+C/D"}
package/dist/pilot.js ADDED
@@ -0,0 +1,312 @@
1
+ /**
2
+ * Midas Pilot
3
+ *
4
+ * Local background runner that:
5
+ * 1. Polls the cloud for pending commands
6
+ * 2. Executes Claude Code via CLI
7
+ * 3. Streams output back to cloud
8
+ * 4. Updates task status on completion
9
+ *
10
+ * Usage: midas pilot [--project <path>] [--auto]
11
+ */
12
+ import { spawn } from 'child_process';
13
+ import { isAuthenticated } from './auth.js';
14
+ import { sanitizePath } from './security.js';
15
+ import { fetchPendingCommands, markCommandRunning, markCommandCompleted, getProjectById } from './cloud.js';
16
+ // Default configuration
17
+ const DEFAULT_CONFIG = {
18
+ projectPath: process.cwd(),
19
+ autoMode: false,
20
+ maxTurns: 10,
21
+ allowedTools: ['Read', 'Edit', 'Bash', 'Grep', 'Glob'],
22
+ pollInterval: 5000,
23
+ outputFormat: 'json',
24
+ };
25
+ // ============================================================================
26
+ // CLAUDE CODE EXECUTION
27
+ // ============================================================================
28
+ /**
29
+ * Execute a prompt via Claude Code CLI
30
+ */
31
+ export async function executeClaudeCode(prompt, config = {}) {
32
+ const cfg = { ...DEFAULT_CONFIG, ...config };
33
+ const startTime = Date.now();
34
+ return new Promise((resolve) => {
35
+ const args = [
36
+ '-p', prompt,
37
+ '--output-format', cfg.outputFormat,
38
+ '--max-turns', String(cfg.maxTurns),
39
+ ];
40
+ // Add allowed tools
41
+ if (cfg.allowedTools.length > 0) {
42
+ args.push('--allowedTools', cfg.allowedTools.join(','));
43
+ }
44
+ // Add Midas context to system prompt
45
+ args.push('--append-system-prompt', `You are being executed by Midas Pilot automation.
46
+ Complete the task efficiently and report results clearly.
47
+ If you encounter errors, provide actionable diagnostics.
48
+ When done, summarize what was accomplished.`);
49
+ let output = '';
50
+ let stderr = '';
51
+ const proc = spawn('claude', args, {
52
+ cwd: cfg.projectPath,
53
+ env: process.env,
54
+ stdio: ['pipe', 'pipe', 'pipe'],
55
+ });
56
+ proc.stdout.on('data', (data) => {
57
+ output += data.toString();
58
+ });
59
+ proc.stderr.on('data', (data) => {
60
+ stderr += data.toString();
61
+ });
62
+ proc.on('error', (err) => {
63
+ resolve({
64
+ success: false,
65
+ output: `Failed to spawn claude: ${err.message}`,
66
+ exitCode: -1,
67
+ duration: Date.now() - startTime,
68
+ });
69
+ });
70
+ proc.on('close', (code) => {
71
+ const duration = Date.now() - startTime;
72
+ const exitCode = code ?? 0;
73
+ // Try to parse JSON output for session ID
74
+ let sessionId;
75
+ if (cfg.outputFormat === 'json') {
76
+ try {
77
+ const parsed = JSON.parse(output);
78
+ sessionId = parsed.session_id;
79
+ output = parsed.result || output;
80
+ }
81
+ catch {
82
+ // Not JSON, use raw output
83
+ }
84
+ }
85
+ resolve({
86
+ success: exitCode === 0,
87
+ output: output || stderr,
88
+ exitCode,
89
+ duration,
90
+ sessionId,
91
+ });
92
+ });
93
+ });
94
+ }
95
+ /**
96
+ * Execute a gameplan task with context
97
+ */
98
+ export async function executeTask(task, projectName, phase, step, config = {}) {
99
+ const prompt = `I'm working on ${projectName}, currently in ${phase} phase (${step} step).
100
+
101
+ My next task from the gameplan is:
102
+ ${task}
103
+
104
+ Please implement this task. Start by analyzing what's needed, then proceed with the implementation.
105
+ When complete, summarize what was done.`;
106
+ return executeClaudeCode(prompt, config);
107
+ }
108
+ let pilotStatus = {
109
+ running: false,
110
+ executedCount: 0,
111
+ failedCount: 0,
112
+ };
113
+ /**
114
+ * Start the Midas Pilot
115
+ * Currently runs a single command for prototyping
116
+ */
117
+ export async function runPilot(prompt, config = {}) {
118
+ if (!isAuthenticated()) {
119
+ return {
120
+ success: false,
121
+ output: 'Not authenticated. Run: midas login',
122
+ exitCode: 1,
123
+ duration: 0,
124
+ };
125
+ }
126
+ const cfg = { ...DEFAULT_CONFIG, ...config };
127
+ console.log('\n ╔══════════════════════════════════════╗');
128
+ console.log(' ║ MIDAS PILOT ENGAGED ║');
129
+ console.log(' ╚══════════════════════════════════════╝\n');
130
+ console.log(` Project: ${cfg.projectPath}`);
131
+ console.log(` Max turns: ${cfg.maxTurns}`);
132
+ console.log(` Tools: ${cfg.allowedTools.join(', ')}\n`);
133
+ console.log(' Executing prompt...\n');
134
+ pilotStatus.running = true;
135
+ pilotStatus.startedAt = new Date().toISOString();
136
+ const result = await executeClaudeCode(prompt, cfg);
137
+ pilotStatus.running = false;
138
+ pilotStatus.lastExecution = result;
139
+ if (result.success) {
140
+ pilotStatus.executedCount++;
141
+ console.log(' ✓ Execution complete\n');
142
+ console.log(` Duration: ${(result.duration / 1000).toFixed(1)}s`);
143
+ if (result.sessionId) {
144
+ console.log(` Session: ${result.sessionId}`);
145
+ }
146
+ console.log('\n --- Output ---\n');
147
+ console.log(result.output);
148
+ }
149
+ else {
150
+ pilotStatus.failedCount++;
151
+ console.log(' ✗ Execution failed\n');
152
+ console.log(` Exit code: ${result.exitCode}`);
153
+ console.log(` Error: ${result.output}\n`);
154
+ }
155
+ return result;
156
+ }
157
+ /**
158
+ * Run a gameplan task via Pilot
159
+ */
160
+ export async function runTaskPilot(task, projectPath) {
161
+ const projectName = projectPath.split('/').pop() || 'project';
162
+ // TODO: Get actual phase/step from state
163
+ const phase = 'BUILD';
164
+ const step = 'IMPLEMENT';
165
+ return runPilot(`Task from gameplan: ${task}`, { projectPath });
166
+ }
167
+ /**
168
+ * Get current pilot status
169
+ */
170
+ export function getPilotStatus() {
171
+ return { ...pilotStatus };
172
+ }
173
+ // ============================================================================
174
+ // CLI COMMAND
175
+ // ============================================================================
176
+ // ============================================================================
177
+ // WATCH MODE (polls cloud for pending commands)
178
+ // ============================================================================
179
+ let watchRunning = false;
180
+ /**
181
+ * Run Pilot in watch mode - polls cloud for commands
182
+ */
183
+ export async function runWatchMode(pollInterval = 5000) {
184
+ if (!isAuthenticated()) {
185
+ console.log('\n ✗ Not authenticated. Run: midas login\n');
186
+ return;
187
+ }
188
+ // Check for Claude Code
189
+ const checkClaude = spawn('which', ['claude']);
190
+ const hasClaudeCode = await new Promise((resolve) => {
191
+ checkClaude.on('close', (code) => resolve(code === 0));
192
+ });
193
+ if (!hasClaudeCode) {
194
+ console.log('\n ✗ Claude Code CLI not found');
195
+ console.log(' Install from: https://claude.ai/code\n');
196
+ return;
197
+ }
198
+ console.log('\n ╔══════════════════════════════════════╗');
199
+ console.log(' ║ MIDAS PILOT - WATCH MODE ║');
200
+ console.log(' ╚══════════════════════════════════════╝\n');
201
+ console.log(' Watching for commands from dashboard...');
202
+ console.log(' Press Ctrl+C to stop\n');
203
+ watchRunning = true;
204
+ // Handle graceful shutdown
205
+ process.on('SIGINT', () => {
206
+ console.log('\n\n Pilot stopped.\n');
207
+ watchRunning = false;
208
+ process.exit(0);
209
+ });
210
+ while (watchRunning) {
211
+ try {
212
+ const commands = await fetchPendingCommands();
213
+ if (commands.length > 0) {
214
+ const command = commands[0]; // Process one at a time
215
+ console.log(`\n ▸ Received command #${command.id}`);
216
+ console.log(` Type: ${command.command_type}`);
217
+ console.log(` Prompt: ${command.prompt.slice(0, 60)}...`);
218
+ await executeCommand(command);
219
+ }
220
+ }
221
+ catch (err) {
222
+ // Network error, wait and retry
223
+ console.log(` ⚠ Poll error: ${err instanceof Error ? err.message : 'unknown'}`);
224
+ }
225
+ // Wait before next poll
226
+ await new Promise(resolve => setTimeout(resolve, pollInterval));
227
+ }
228
+ }
229
+ /**
230
+ * Execute a pending command from the cloud
231
+ */
232
+ async function executeCommand(command) {
233
+ // Get project details
234
+ const project = await getProjectById(command.project_id);
235
+ if (!project) {
236
+ console.log(` ✗ Project not found: ${command.project_id}`);
237
+ return;
238
+ }
239
+ console.log(` Project: ${project.name}`);
240
+ console.log(` Path: ${project.local_path}\n`);
241
+ // Mark as running
242
+ await markCommandRunning(command.id);
243
+ // Execute
244
+ const result = await executeClaudeCode(command.prompt, {
245
+ projectPath: project.local_path,
246
+ maxTurns: command.max_turns,
247
+ });
248
+ // Update status
249
+ await markCommandCompleted(command.id, {
250
+ success: result.success,
251
+ output: result.output,
252
+ exitCode: result.exitCode,
253
+ durationMs: result.duration,
254
+ sessionId: result.sessionId,
255
+ });
256
+ if (result.success) {
257
+ console.log(` ✓ Command #${command.id} completed`);
258
+ console.log(` Duration: ${(result.duration / 1000).toFixed(1)}s`);
259
+ }
260
+ else {
261
+ console.log(` ✗ Command #${command.id} failed`);
262
+ console.log(` Exit code: ${result.exitCode}`);
263
+ }
264
+ console.log('\n Waiting for next command...');
265
+ }
266
+ /**
267
+ * CLI handler for: midas pilot "prompt"
268
+ */
269
+ export async function runPilotCLI(args) {
270
+ // Check for watch mode
271
+ if (args.includes('--watch') || args.includes('-w')) {
272
+ const pollInterval = 5000; // Could be made configurable
273
+ await runWatchMode(pollInterval);
274
+ return;
275
+ }
276
+ // Check for Claude Code
277
+ const checkClaude = spawn('which', ['claude']);
278
+ const hasClaudeCode = await new Promise((resolve) => {
279
+ checkClaude.on('close', (code) => resolve(code === 0));
280
+ });
281
+ if (!hasClaudeCode) {
282
+ console.log('\n ✗ Claude Code CLI not found');
283
+ console.log(' Install from: https://claude.ai/code\n');
284
+ return;
285
+ }
286
+ // Parse arguments
287
+ let prompt = '';
288
+ let projectPath = process.cwd();
289
+ for (let i = 0; i < args.length; i++) {
290
+ if (args[i] === '--project' && args[i + 1]) {
291
+ projectPath = sanitizePath(args[i + 1]);
292
+ i++;
293
+ }
294
+ else if (!args[i].startsWith('--')) {
295
+ prompt = args[i];
296
+ }
297
+ }
298
+ if (!prompt) {
299
+ console.log('\n Usage: midas pilot "your prompt here"');
300
+ console.log(' midas pilot --watch');
301
+ console.log('');
302
+ console.log(' Options:');
303
+ console.log(' --project <path> Project directory');
304
+ console.log(' --watch, -w Watch mode - poll cloud for commands\n');
305
+ console.log(' Examples:');
306
+ console.log(' midas pilot "Fix the failing test in auth.ts"');
307
+ console.log(' midas pilot --watch\n');
308
+ return;
309
+ }
310
+ await runPilot(prompt, { projectPath });
311
+ }
312
+ //# sourceMappingURL=pilot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pilot.js","sourceRoot":"","sources":["../src/pilot.ts"],"names":[],"mappings":"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"}