@specforge/mcp 2.6.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (237) hide show
  1. package/README.md +73 -0
  2. package/bin/{specforge-mcp → specforge} +0 -5
  3. package/dist/ai-provider/circuit-breaker.d.ts +63 -0
  4. package/dist/ai-provider/circuit-breaker.d.ts.map +1 -0
  5. package/dist/ai-provider/circuit-breaker.js +160 -0
  6. package/dist/ai-provider/circuit-breaker.js.map +1 -0
  7. package/dist/ai-provider/cli-version.d.ts +50 -0
  8. package/dist/ai-provider/cli-version.d.ts.map +1 -0
  9. package/dist/ai-provider/cli-version.js +141 -0
  10. package/dist/ai-provider/cli-version.js.map +1 -0
  11. package/dist/ai-provider/config-loader.d.ts +45 -0
  12. package/dist/ai-provider/config-loader.d.ts.map +1 -0
  13. package/dist/ai-provider/config-loader.js +106 -0
  14. package/dist/ai-provider/config-loader.js.map +1 -0
  15. package/dist/ai-provider/errors.d.ts +48 -0
  16. package/dist/ai-provider/errors.d.ts.map +1 -0
  17. package/dist/ai-provider/errors.js +102 -0
  18. package/dist/ai-provider/errors.js.map +1 -0
  19. package/dist/ai-provider/events.d.ts +73 -0
  20. package/dist/ai-provider/events.d.ts.map +1 -0
  21. package/dist/ai-provider/events.js +75 -0
  22. package/dist/ai-provider/events.js.map +1 -0
  23. package/dist/ai-provider/factory.d.ts +31 -0
  24. package/dist/ai-provider/factory.d.ts.map +1 -0
  25. package/dist/ai-provider/factory.js +100 -0
  26. package/dist/ai-provider/factory.js.map +1 -0
  27. package/dist/ai-provider/index.d.ts +24 -0
  28. package/dist/ai-provider/index.d.ts.map +1 -0
  29. package/dist/ai-provider/index.js +46 -0
  30. package/dist/ai-provider/index.js.map +1 -0
  31. package/dist/ai-provider/instance-coordinator.d.ts +54 -0
  32. package/dist/ai-provider/instance-coordinator.d.ts.map +1 -0
  33. package/dist/ai-provider/instance-coordinator.js +199 -0
  34. package/dist/ai-provider/instance-coordinator.js.map +1 -0
  35. package/dist/ai-provider/jsonl-parser.d.ts +43 -0
  36. package/dist/ai-provider/jsonl-parser.d.ts.map +1 -0
  37. package/dist/ai-provider/jsonl-parser.js +107 -0
  38. package/dist/ai-provider/jsonl-parser.js.map +1 -0
  39. package/dist/ai-provider/lifecycle.d.ts +50 -0
  40. package/dist/ai-provider/lifecycle.d.ts.map +1 -0
  41. package/dist/ai-provider/lifecycle.js +145 -0
  42. package/dist/ai-provider/lifecycle.js.map +1 -0
  43. package/dist/ai-provider/logger.d.ts +69 -0
  44. package/dist/ai-provider/logger.d.ts.map +1 -0
  45. package/dist/ai-provider/logger.js +161 -0
  46. package/dist/ai-provider/logger.js.map +1 -0
  47. package/dist/ai-provider/metrics.d.ts +91 -0
  48. package/dist/ai-provider/metrics.d.ts.map +1 -0
  49. package/dist/ai-provider/metrics.js +187 -0
  50. package/dist/ai-provider/metrics.js.map +1 -0
  51. package/dist/ai-provider/process-manager.d.ts +97 -0
  52. package/dist/ai-provider/process-manager.d.ts.map +1 -0
  53. package/dist/ai-provider/process-manager.js +477 -0
  54. package/dist/ai-provider/process-manager.js.map +1 -0
  55. package/dist/ai-provider/providers/claude-code.d.ts +64 -0
  56. package/dist/ai-provider/providers/claude-code.d.ts.map +1 -0
  57. package/dist/ai-provider/providers/claude-code.js +205 -0
  58. package/dist/ai-provider/providers/claude-code.js.map +1 -0
  59. package/dist/ai-provider/retry-executor.d.ts +52 -0
  60. package/dist/ai-provider/retry-executor.d.ts.map +1 -0
  61. package/dist/ai-provider/retry-executor.js +138 -0
  62. package/dist/ai-provider/retry-executor.js.map +1 -0
  63. package/dist/ai-provider/safe-args.d.ts +58 -0
  64. package/dist/ai-provider/safe-args.d.ts.map +1 -0
  65. package/dist/ai-provider/safe-args.js +176 -0
  66. package/dist/ai-provider/safe-args.js.map +1 -0
  67. package/dist/ai-provider/semaphore.d.ts +50 -0
  68. package/dist/ai-provider/semaphore.d.ts.map +1 -0
  69. package/dist/ai-provider/semaphore.js +97 -0
  70. package/dist/ai-provider/semaphore.js.map +1 -0
  71. package/dist/ai-provider/tracer.d.ts +67 -0
  72. package/dist/ai-provider/tracer.d.ts.map +1 -0
  73. package/dist/ai-provider/tracer.js +209 -0
  74. package/dist/ai-provider/tracer.js.map +1 -0
  75. package/dist/ai-provider/types.d.ts +181 -0
  76. package/dist/ai-provider/types.d.ts.map +1 -0
  77. package/dist/ai-provider/types.js +8 -0
  78. package/dist/ai-provider/types.js.map +1 -0
  79. package/dist/autopilot/agents/agent-runner.d.ts +109 -0
  80. package/dist/autopilot/agents/agent-runner.d.ts.map +1 -0
  81. package/dist/autopilot/agents/agent-runner.js +731 -0
  82. package/dist/autopilot/agents/agent-runner.js.map +1 -0
  83. package/dist/autopilot/agents/agent-selector.d.ts +59 -0
  84. package/dist/autopilot/agents/agent-selector.d.ts.map +1 -0
  85. package/dist/autopilot/agents/agent-selector.js +234 -0
  86. package/dist/autopilot/agents/agent-selector.js.map +1 -0
  87. package/dist/autopilot/agents/model-selector.d.ts +49 -0
  88. package/dist/autopilot/agents/model-selector.d.ts.map +1 -0
  89. package/dist/autopilot/agents/model-selector.js +62 -0
  90. package/dist/autopilot/agents/model-selector.js.map +1 -0
  91. package/dist/autopilot/agents/profiles/builtin.d.ts +55 -0
  92. package/dist/autopilot/agents/profiles/builtin.d.ts.map +1 -0
  93. package/dist/autopilot/agents/profiles/builtin.js +323 -0
  94. package/dist/autopilot/agents/profiles/builtin.js.map +1 -0
  95. package/dist/autopilot/agents/profiles/types.d.ts +98 -0
  96. package/dist/autopilot/agents/profiles/types.d.ts.map +1 -0
  97. package/dist/autopilot/agents/profiles/types.js +17 -0
  98. package/dist/autopilot/agents/profiles/types.js.map +1 -0
  99. package/dist/autopilot/api/autopilot-api-client.d.ts +217 -0
  100. package/dist/autopilot/api/autopilot-api-client.d.ts.map +1 -0
  101. package/dist/autopilot/api/autopilot-api-client.js +402 -0
  102. package/dist/autopilot/api/autopilot-api-client.js.map +1 -0
  103. package/dist/autopilot/cli/abort.d.ts +20 -0
  104. package/dist/autopilot/cli/abort.d.ts.map +1 -0
  105. package/dist/autopilot/cli/abort.js +201 -0
  106. package/dist/autopilot/cli/abort.js.map +1 -0
  107. package/dist/autopilot/cli/display.d.ts +63 -0
  108. package/dist/autopilot/cli/display.d.ts.map +1 -0
  109. package/dist/autopilot/cli/display.js +260 -0
  110. package/dist/autopilot/cli/display.js.map +1 -0
  111. package/dist/autopilot/cli/index.d.ts +24 -0
  112. package/dist/autopilot/cli/index.d.ts.map +1 -0
  113. package/dist/autopilot/cli/index.js +79 -0
  114. package/dist/autopilot/cli/index.js.map +1 -0
  115. package/dist/autopilot/cli/pause.d.ts +18 -0
  116. package/dist/autopilot/cli/pause.d.ts.map +1 -0
  117. package/dist/autopilot/cli/pause.js +110 -0
  118. package/dist/autopilot/cli/pause.js.map +1 -0
  119. package/dist/autopilot/cli/resume.d.ts +22 -0
  120. package/dist/autopilot/cli/resume.d.ts.map +1 -0
  121. package/dist/autopilot/cli/resume.js +172 -0
  122. package/dist/autopilot/cli/resume.js.map +1 -0
  123. package/dist/autopilot/cli/run.d.ts +25 -0
  124. package/dist/autopilot/cli/run.d.ts.map +1 -0
  125. package/dist/autopilot/cli/run.js +220 -0
  126. package/dist/autopilot/cli/run.js.map +1 -0
  127. package/dist/autopilot/cli/status.d.ts +20 -0
  128. package/dist/autopilot/cli/status.d.ts.map +1 -0
  129. package/dist/autopilot/cli/status.js +217 -0
  130. package/dist/autopilot/cli/status.js.map +1 -0
  131. package/dist/autopilot/config.d.ts +45 -0
  132. package/dist/autopilot/config.d.ts.map +1 -0
  133. package/dist/autopilot/config.js +269 -0
  134. package/dist/autopilot/config.js.map +1 -0
  135. package/dist/autopilot/core/dependency-resolver.d.ts +108 -0
  136. package/dist/autopilot/core/dependency-resolver.d.ts.map +1 -0
  137. package/dist/autopilot/core/dependency-resolver.js +394 -0
  138. package/dist/autopilot/core/dependency-resolver.js.map +1 -0
  139. package/dist/autopilot/core/dispatcher.d.ts +215 -0
  140. package/dist/autopilot/core/dispatcher.d.ts.map +1 -0
  141. package/dist/autopilot/core/dispatcher.js +594 -0
  142. package/dist/autopilot/core/dispatcher.js.map +1 -0
  143. package/dist/autopilot/core/failure-handler.d.ts +145 -0
  144. package/dist/autopilot/core/failure-handler.d.ts.map +1 -0
  145. package/dist/autopilot/core/failure-handler.js +308 -0
  146. package/dist/autopilot/core/failure-handler.js.map +1 -0
  147. package/dist/autopilot/core/rate-limit-handler.d.ts +108 -0
  148. package/dist/autopilot/core/rate-limit-handler.d.ts.map +1 -0
  149. package/dist/autopilot/core/rate-limit-handler.js +195 -0
  150. package/dist/autopilot/core/rate-limit-handler.js.map +1 -0
  151. package/dist/autopilot/core/state-manager.d.ts +160 -0
  152. package/dist/autopilot/core/state-manager.d.ts.map +1 -0
  153. package/dist/autopilot/core/state-manager.js +393 -0
  154. package/dist/autopilot/core/state-manager.js.map +1 -0
  155. package/dist/autopilot/core/timeout-manager.d.ts +95 -0
  156. package/dist/autopilot/core/timeout-manager.d.ts.map +1 -0
  157. package/dist/autopilot/core/timeout-manager.js +188 -0
  158. package/dist/autopilot/core/timeout-manager.js.map +1 -0
  159. package/dist/autopilot/git/branch-manager.d.ts +117 -0
  160. package/dist/autopilot/git/branch-manager.d.ts.map +1 -0
  161. package/dist/autopilot/git/branch-manager.js +238 -0
  162. package/dist/autopilot/git/branch-manager.js.map +1 -0
  163. package/dist/autopilot/git/index.d.ts +9 -0
  164. package/dist/autopilot/git/index.d.ts.map +1 -0
  165. package/dist/autopilot/git/index.js +9 -0
  166. package/dist/autopilot/git/index.js.map +1 -0
  167. package/dist/autopilot/git/merge-manager.d.ts +118 -0
  168. package/dist/autopilot/git/merge-manager.d.ts.map +1 -0
  169. package/dist/autopilot/git/merge-manager.js +304 -0
  170. package/dist/autopilot/git/merge-manager.js.map +1 -0
  171. package/dist/autopilot/git/worktree-manager.d.ts +128 -0
  172. package/dist/autopilot/git/worktree-manager.d.ts.map +1 -0
  173. package/dist/autopilot/git/worktree-manager.js +298 -0
  174. package/dist/autopilot/git/worktree-manager.js.map +1 -0
  175. package/dist/autopilot/index.d.ts +30 -0
  176. package/dist/autopilot/index.d.ts.map +1 -0
  177. package/dist/autopilot/index.js +55 -0
  178. package/dist/autopilot/index.js.map +1 -0
  179. package/dist/autopilot/sync/index.d.ts +7 -0
  180. package/dist/autopilot/sync/index.d.ts.map +1 -0
  181. package/dist/autopilot/sync/index.js +7 -0
  182. package/dist/autopilot/sync/index.js.map +1 -0
  183. package/dist/autopilot/sync/sync-manager.d.ts +168 -0
  184. package/dist/autopilot/sync/sync-manager.d.ts.map +1 -0
  185. package/dist/autopilot/sync/sync-manager.js +303 -0
  186. package/dist/autopilot/sync/sync-manager.js.map +1 -0
  187. package/dist/autopilot/types.d.ts +454 -0
  188. package/dist/autopilot/types.d.ts.map +1 -0
  189. package/dist/autopilot/types.js +26 -0
  190. package/dist/autopilot/types.js.map +1 -0
  191. package/dist/autopilot/utils/audit-logger.d.ts +176 -0
  192. package/dist/autopilot/utils/audit-logger.d.ts.map +1 -0
  193. package/dist/autopilot/utils/audit-logger.js +308 -0
  194. package/dist/autopilot/utils/audit-logger.js.map +1 -0
  195. package/dist/autopilot/utils/cost-tracker.d.ts +162 -0
  196. package/dist/autopilot/utils/cost-tracker.d.ts.map +1 -0
  197. package/dist/autopilot/utils/cost-tracker.js +269 -0
  198. package/dist/autopilot/utils/cost-tracker.js.map +1 -0
  199. package/dist/autopilot/utils/index.d.ts +9 -0
  200. package/dist/autopilot/utils/index.d.ts.map +1 -0
  201. package/dist/autopilot/utils/index.js +9 -0
  202. package/dist/autopilot/utils/index.js.map +1 -0
  203. package/dist/autopilot/utils/progress-reporter.d.ts +132 -0
  204. package/dist/autopilot/utils/progress-reporter.d.ts.map +1 -0
  205. package/dist/autopilot/utils/progress-reporter.js +290 -0
  206. package/dist/autopilot/utils/progress-reporter.js.map +1 -0
  207. package/dist/autopilot/worker/worker-pool.d.ts +179 -0
  208. package/dist/autopilot/worker/worker-pool.d.ts.map +1 -0
  209. package/dist/autopilot/worker/worker-pool.js +331 -0
  210. package/dist/autopilot/worker/worker-pool.js.map +1 -0
  211. package/dist/autopilot/worker/worker-session.d.ts +171 -0
  212. package/dist/autopilot/worker/worker-session.d.ts.map +1 -0
  213. package/dist/autopilot/worker/worker-session.js +295 -0
  214. package/dist/autopilot/worker/worker-session.js.map +1 -0
  215. package/dist/cli/index.d.ts +1 -1
  216. package/dist/cli/index.d.ts.map +1 -1
  217. package/dist/cli/index.js +4 -1
  218. package/dist/cli/index.js.map +1 -1
  219. package/dist/index.js +0 -1
  220. package/dist/index.js.map +1 -1
  221. package/dist/tools/core/epic.js +1 -1
  222. package/dist/tools/core/epic.js.map +1 -1
  223. package/dist/tools/core/lookup.d.ts.map +1 -1
  224. package/dist/tools/core/lookup.js +3 -2
  225. package/dist/tools/core/lookup.js.map +1 -1
  226. package/dist/tools/core/specification.js +1 -1
  227. package/dist/tools/core/specification.js.map +1 -1
  228. package/dist/tools/core/ticket.d.ts.map +1 -1
  229. package/dist/tools/core/ticket.js +4 -6
  230. package/dist/tools/core/ticket.js.map +1 -1
  231. package/dist/tools/index.d.ts.map +1 -1
  232. package/dist/tools/index.js +60 -0
  233. package/dist/tools/index.js.map +1 -1
  234. package/dist/validation/index.d.ts.map +1 -1
  235. package/dist/validation/index.js +4 -1
  236. package/dist/validation/index.js.map +1 -1
  237. package/package.json +8 -4
@@ -0,0 +1,172 @@
1
+ /**
2
+ * Autopilot Resume Command
3
+ *
4
+ * Resumes a paused autopilot session.
5
+ */
6
+ import ora from 'ora';
7
+ import * as fs from 'fs/promises';
8
+ import * as path from 'path';
9
+ import { resolveConfig as resolveCliConfig } from '../../cli/config/loader.js';
10
+ import { withErrorHandler, CliError } from '../../cli/middleware/error-handler.js';
11
+ import { loadAutopilotConfig, mergeWithDefaults } from '../config.js';
12
+ import { createDispatcher } from '../core/dispatcher.js';
13
+ import { AutopilotApiClient } from '../api/autopilot-api-client.js';
14
+ import { STATE_FILE_NAME } from '../core/state-manager.js';
15
+ import { renderDashboard, renderCompactStatus, c } from './display.js';
16
+ /**
17
+ * Load state from file
18
+ */
19
+ async function loadState(workingDirectory) {
20
+ const statePath = path.join(workingDirectory, '.specforge', STATE_FILE_NAME);
21
+ try {
22
+ const content = await fs.readFile(statePath, 'utf-8');
23
+ return JSON.parse(content);
24
+ }
25
+ catch {
26
+ return null;
27
+ }
28
+ }
29
+ /**
30
+ * Resume command action
31
+ */
32
+ async function resumeAction(options) {
33
+ const cliConfig = resolveCliConfig();
34
+ const workingDirectory = process.cwd();
35
+ // Check authentication
36
+ if (!cliConfig.apiKey) {
37
+ throw new CliError('Not authenticated', 1, 'Run `specforge login` to authenticate first');
38
+ }
39
+ const spinner = ora({
40
+ text: 'Loading autopilot state...',
41
+ color: 'cyan',
42
+ }).start();
43
+ try {
44
+ // Load saved state
45
+ const savedState = await loadState(workingDirectory);
46
+ if (!savedState) {
47
+ spinner.fail('No saved autopilot state found');
48
+ throw new CliError('No saved state', 1, 'No paused autopilot session found. Use `specforge autopilot run` to start a new session.');
49
+ }
50
+ // Check if already completed
51
+ if (savedState.status === 'completed') {
52
+ spinner.fail('Session already completed');
53
+ throw new CliError('Session completed', 1, 'This autopilot session is already completed. Use `specforge autopilot run` to start a new session.');
54
+ }
55
+ // Load config
56
+ const fileConfig = await loadAutopilotConfig(workingDirectory);
57
+ const autopilotConfig = mergeWithDefaults(fileConfig);
58
+ // Create API client
59
+ const apiClient = AutopilotApiClient.fromApiKey(cliConfig.apiKey, { apiUrl: cliConfig.apiUrl });
60
+ spinner.succeed('State loaded');
61
+ // Create dispatcher with state from saved session
62
+ const dispatcher = createDispatcher({
63
+ specificationId: savedState.specificationId,
64
+ projectId: savedState.projectId,
65
+ workingDirectory,
66
+ config: autopilotConfig,
67
+ apiClient,
68
+ });
69
+ // Apply options
70
+ if (options.skipFailed) {
71
+ console.log(c.yellow('Skipping previously failed tickets'));
72
+ }
73
+ if (options.retryFailed) {
74
+ console.log(c.blue('Retrying previously failed tickets'));
75
+ // Note: The dispatcher would need a method to handle this
76
+ // For now, this is a placeholder for the feature
77
+ }
78
+ // Set up event handlers
79
+ dispatcher.on('state:changed', (state) => {
80
+ if (options.watch && !options.json) {
81
+ if (process.stdout.isTTY) {
82
+ process.stdout.write('\x1b[2J\x1b[H');
83
+ }
84
+ console.log(renderDashboard(state));
85
+ }
86
+ else if (options.verbose && !options.json) {
87
+ console.log(renderCompactStatus(state));
88
+ }
89
+ });
90
+ dispatcher.on('ticket:completed', (data) => {
91
+ if (!options.json && !options.watch) {
92
+ console.log(c.green(`✓ Completed: ${data.ticketId}`));
93
+ }
94
+ });
95
+ dispatcher.on('ticket:failed', (data) => {
96
+ if (!options.json && !options.watch) {
97
+ console.log(c.red(`✗ Failed: ${data.ticketId} - ${data.error}`));
98
+ }
99
+ });
100
+ // Handle SIGINT
101
+ let shuttingDown = false;
102
+ process.on('SIGINT', async () => {
103
+ if (shuttingDown) {
104
+ console.log('\nForce quitting...');
105
+ process.exit(1);
106
+ }
107
+ shuttingDown = true;
108
+ console.log('\nPausing autopilot...');
109
+ await dispatcher.pause('User interrupt');
110
+ console.log('Autopilot paused. Run `specforge autopilot resume` to continue.');
111
+ process.exit(0);
112
+ });
113
+ // Resume
114
+ console.log(c.blue('Resuming autopilot...'));
115
+ console.log(`Run ID: ${c.dim(savedState.runId)}`);
116
+ console.log(`Completed: ${c.green(String(savedState.completedTickets.length))} | Failed: ${c.red(String(savedState.failedTickets.length))}`);
117
+ console.log('');
118
+ const result = await dispatcher.start();
119
+ // Output result
120
+ if (options.json) {
121
+ console.log(JSON.stringify(result, null, 2));
122
+ }
123
+ else {
124
+ console.log('');
125
+ console.log(c.bold('═══ Autopilot Complete ═══'));
126
+ console.log('');
127
+ const statusColor = result.status === 'completed' ? c.green
128
+ : result.status === 'failed' ? c.red
129
+ : c.yellow;
130
+ console.log(`Status: ${statusColor(result.status)}`);
131
+ console.log(`Completed: ${c.green(String(result.completedTickets))} tickets`);
132
+ console.log(`Failed: ${c.red(String(result.failedTickets))} tickets`);
133
+ console.log(`Total Cost: ${c.yellow(`$${result.totalCostUsd.toFixed(4)}`)}`);
134
+ console.log('');
135
+ }
136
+ }
137
+ catch (error) {
138
+ if (!(error instanceof CliError)) {
139
+ spinner.fail('Failed to resume');
140
+ }
141
+ throw error;
142
+ }
143
+ }
144
+ /**
145
+ * Register resume command
146
+ */
147
+ export function registerResumeCommand(program) {
148
+ program
149
+ .command('resume')
150
+ .description('Resume a paused autopilot session')
151
+ .option('-r, --run-id <id>', 'Resume specific run (defaults to latest)')
152
+ .option('--skip-failed', 'Skip previously failed tickets')
153
+ .option('--retry-failed', 'Retry previously failed tickets')
154
+ .option('-w, --watch', 'Watch mode with live dashboard')
155
+ .option('-v, --verbose', 'Show detailed progress')
156
+ .option('--json', 'Output as JSON')
157
+ .addHelpText('after', `
158
+ Examples:
159
+ $ specforge autopilot resume # Resume latest session
160
+ $ specforge autopilot resume --skip-failed # Skip failed tickets
161
+ $ specforge autopilot resume --retry-failed # Retry failed tickets
162
+ $ specforge autopilot resume --watch # Resume with live dashboard
163
+
164
+ Behavior:
165
+ - Resumes from saved state in .specforge/autopilot-state.json
166
+ - Previously completed tickets are not re-run
167
+ - Failed tickets can be retried with --retry-failed
168
+ - Cost and progress are preserved from the previous session
169
+ `)
170
+ .action(withErrorHandler(resumeAction));
171
+ }
172
+ //# sourceMappingURL=resume.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resume.js","sourceRoot":"","sources":["../../../src/autopilot/cli/resume.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Autopilot Run Command
3
+ *
4
+ * Starts an autopilot session to implement tickets autonomously.
5
+ */
6
+ import { Command } from 'commander';
7
+ /**
8
+ * Run command options
9
+ */
10
+ export interface RunOptions {
11
+ spec?: string;
12
+ epic?: string;
13
+ parallel?: number;
14
+ maxCost?: number;
15
+ dryRun?: boolean;
16
+ watch?: boolean;
17
+ verbose?: boolean;
18
+ json?: boolean;
19
+ resume?: string;
20
+ }
21
+ /**
22
+ * Register run command
23
+ */
24
+ export declare function registerRunCommand(program: Command): void;
25
+ //# sourceMappingURL=run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/autopilot/cli/run.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAqOD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgCzD"}
@@ -0,0 +1,220 @@
1
+ /**
2
+ * Autopilot Run Command
3
+ *
4
+ * Starts an autopilot session to implement tickets autonomously.
5
+ */
6
+ import ora from 'ora';
7
+ import { resolveConfig as resolveCliConfig } from '../../cli/config/loader.js';
8
+ import { withErrorHandler, CliError } from '../../cli/middleware/error-handler.js';
9
+ import { loadAutopilotConfig, mergeWithDefaults } from '../config.js';
10
+ import { createDispatcher } from '../core/dispatcher.js';
11
+ import { AutopilotApiClient } from '../api/autopilot-api-client.js';
12
+ import { renderDashboard, renderCompactStatus, c } from './display.js';
13
+ /**
14
+ * Validate run prerequisites
15
+ */
16
+ async function validatePrerequisites(cliConfig, options) {
17
+ // Check authentication
18
+ if (!cliConfig.apiKey) {
19
+ throw new CliError('Not authenticated', 1, 'Run `specforge login` to authenticate first');
20
+ }
21
+ // Load autopilot config
22
+ const fileConfig = await loadAutopilotConfig(process.cwd());
23
+ const autopilotConfig = mergeWithDefaults(fileConfig);
24
+ // Apply option overrides
25
+ if (options.parallel !== undefined) {
26
+ autopilotConfig.maxParallelWorkers = options.parallel;
27
+ }
28
+ if (options.maxCost !== undefined) {
29
+ autopilotConfig.maxTotalCostUsd = options.maxCost;
30
+ }
31
+ // Determine specification ID
32
+ const specificationId = options.spec || cliConfig.specificationId;
33
+ if (!specificationId) {
34
+ throw new CliError('No specification selected', 1, 'Run `specforge switch <spec-id>` or use --spec option');
35
+ }
36
+ return { specificationId, autopilotConfig };
37
+ }
38
+ /**
39
+ * Display run plan (dry run)
40
+ */
41
+ function displayRunPlan(specificationId, config, epicId) {
42
+ console.log('');
43
+ console.log(c.bold('═══ Autopilot Run Plan ═══'));
44
+ console.log('');
45
+ console.log(c.bold('Configuration:'));
46
+ console.log(` Specification: ${specificationId}`);
47
+ if (epicId) {
48
+ console.log(` Epic: ${epicId}`);
49
+ }
50
+ console.log(` Parallel Workers: ${config.maxParallelWorkers}`);
51
+ console.log(` Max Cost: $${config.maxTotalCostUsd}`);
52
+ console.log(` Auto Commit: ${config.autoCommit ? 'Yes' : 'No'}`);
53
+ console.log(` Auto Push: ${config.autoPush ? 'Yes' : 'No'}`);
54
+ console.log(` Branch Strategy: ${config.branchStrategy}`);
55
+ console.log('');
56
+ console.log(c.bold('AI Provider:'));
57
+ console.log(` Mode: ${config.aiProvider.mode}`);
58
+ console.log(` Max Parallel: ${config.aiProvider.maxParallelProcesses}`);
59
+ console.log(` Request Timeout: ${config.aiProvider.requestTimeoutSeconds}s`);
60
+ console.log(` Max Retries: ${config.aiProvider.maxRetries}`);
61
+ console.log('');
62
+ console.log(c.dim('This is a dry run. No changes will be made.'));
63
+ console.log(c.dim('Remove --dry-run to start the autopilot session.'));
64
+ console.log('');
65
+ }
66
+ /**
67
+ * Run command action
68
+ */
69
+ async function runAction(options) {
70
+ const cliConfig = resolveCliConfig();
71
+ // Validate prerequisites
72
+ const { specificationId, autopilotConfig } = await validatePrerequisites(cliConfig, options);
73
+ // Handle dry run
74
+ if (options.dryRun) {
75
+ displayRunPlan(specificationId, autopilotConfig, options.epic);
76
+ return;
77
+ }
78
+ const spinner = ora({
79
+ text: 'Initializing autopilot...',
80
+ color: 'cyan',
81
+ }).start();
82
+ try {
83
+ // Create API client
84
+ const apiClient = AutopilotApiClient.fromApiKey(cliConfig.apiKey, { apiUrl: cliConfig.apiUrl });
85
+ // Get specification to find project ID
86
+ const specification = await apiClient.getSpecification(specificationId);
87
+ if (!specification) {
88
+ throw new CliError('Specification not found', 1, `Could not find specification with ID: ${specificationId}`);
89
+ }
90
+ spinner.text = 'Creating dispatcher...';
91
+ // Create dispatcher
92
+ const dispatcher = createDispatcher({
93
+ specificationId,
94
+ projectId: specification.projectId,
95
+ workingDirectory: process.cwd(),
96
+ config: autopilotConfig,
97
+ apiClient,
98
+ });
99
+ spinner.succeed('Autopilot initialized');
100
+ // Set up event handlers
101
+ dispatcher.on('state:changed', (state) => {
102
+ if (options.watch && !options.json) {
103
+ // Clear screen and redraw dashboard
104
+ if (process.stdout.isTTY) {
105
+ process.stdout.write('\x1b[2J\x1b[H');
106
+ }
107
+ console.log(renderDashboard(state));
108
+ }
109
+ else if (options.verbose && !options.json) {
110
+ console.log(renderCompactStatus(state));
111
+ }
112
+ });
113
+ dispatcher.on('ticket:completed', (data) => {
114
+ if (!options.json && !options.watch) {
115
+ console.log(c.green(`✓ Completed: ${data.ticketId}`));
116
+ }
117
+ });
118
+ dispatcher.on('ticket:failed', (data) => {
119
+ if (!options.json && !options.watch) {
120
+ console.log(c.red(`✗ Failed: ${data.ticketId} - ${data.error}`));
121
+ }
122
+ });
123
+ dispatcher.on('rate_limit:paused', () => {
124
+ if (!options.json && !options.watch) {
125
+ console.log(c.yellow('⏸ Rate limited - pausing workers...'));
126
+ }
127
+ });
128
+ dispatcher.on('rate_limit:resumed', () => {
129
+ if (!options.json && !options.watch) {
130
+ console.log(c.green('▶ Rate limit cleared - resuming workers...'));
131
+ }
132
+ });
133
+ // Handle SIGINT for graceful shutdown
134
+ let shuttingDown = false;
135
+ process.on('SIGINT', async () => {
136
+ if (shuttingDown) {
137
+ console.log('\nForce quitting...');
138
+ process.exit(1);
139
+ }
140
+ shuttingDown = true;
141
+ console.log('\nShutting down gracefully (press Ctrl+C again to force)...');
142
+ await dispatcher.pause('User interrupt');
143
+ // Note: Dispatcher doesn't have shutdown method, pause is sufficient
144
+ console.log('Autopilot stopped. Run `specforge autopilot resume` to continue.');
145
+ process.exit(0);
146
+ });
147
+ // Start the dispatcher
148
+ console.log(c.blue('Starting autopilot...'));
149
+ console.log('');
150
+ const result = await dispatcher.start();
151
+ // Output result
152
+ if (options.json) {
153
+ console.log(JSON.stringify(result, null, 2));
154
+ }
155
+ else {
156
+ console.log('');
157
+ console.log(c.bold('═══ Autopilot Complete ═══'));
158
+ console.log('');
159
+ const statusColor = result.status === 'completed' ? c.green
160
+ : result.status === 'failed' ? c.red
161
+ : c.yellow;
162
+ console.log(`Status: ${statusColor(result.status)}`);
163
+ console.log(`Completed: ${c.green(String(result.completedTickets))} tickets`);
164
+ console.log(`Failed: ${c.red(String(result.failedTickets))} tickets`);
165
+ console.log(`Total Cost: ${c.yellow(`$${result.totalCostUsd.toFixed(4)}`)}`);
166
+ if (result.errors.length > 0) {
167
+ console.log('');
168
+ console.log(c.bold('Errors:'));
169
+ for (const error of result.errors.slice(0, 5)) {
170
+ console.log(` ${c.red('✗')} ${error}`);
171
+ }
172
+ if (result.errors.length > 5) {
173
+ console.log(c.dim(` ... and ${result.errors.length - 5} more`));
174
+ }
175
+ }
176
+ console.log('');
177
+ }
178
+ }
179
+ catch (error) {
180
+ spinner.fail('Autopilot failed');
181
+ throw error;
182
+ }
183
+ }
184
+ /**
185
+ * Register run command
186
+ */
187
+ export function registerRunCommand(program) {
188
+ program
189
+ .command('run')
190
+ .description('Start autopilot to implement tickets autonomously')
191
+ .option('-s, --spec <id>', 'Specification ID to implement')
192
+ .option('-e, --epic <id>', 'Only implement tickets from this epic')
193
+ .option('-p, --parallel <n>', 'Number of parallel workers', parseInt)
194
+ .option('-c, --max-cost <usd>', 'Maximum cost in USD', parseFloat)
195
+ .option('-n, --dry-run', 'Show plan without executing')
196
+ .option('-w, --watch', 'Watch mode with live dashboard')
197
+ .option('-v, --verbose', 'Show detailed progress')
198
+ .option('--json', 'Output as JSON')
199
+ .option('-r, --resume <run-id>', 'Resume a previous run')
200
+ .addHelpText('after', `
201
+ Examples:
202
+ $ specforge autopilot run # Run with current spec
203
+ $ specforge autopilot run --spec <id> # Run with specific spec
204
+ $ specforge autopilot run --parallel 2 # Run with 2 workers
205
+ $ specforge autopilot run --max-cost 10 # Limit to $10
206
+ $ specforge autopilot run --dry-run # Preview without running
207
+ $ specforge autopilot run --watch # Live dashboard mode
208
+ $ specforge autopilot run --resume <run-id> # Resume previous run
209
+
210
+ Configuration:
211
+ Settings can be configured in .specforge.json under the "autopilot" key.
212
+ Command-line options override config file settings.
213
+
214
+ Keyboard:
215
+ Ctrl+C Pause and save state (can resume later)
216
+ Ctrl+C×2 Force quit (may lose progress)
217
+ `)
218
+ .action(withErrorHandler(runAction));
219
+ }
220
+ //# sourceMappingURL=run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/autopilot/cli/run.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,aAAa,IAAI,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,uCAAuC,CAAC;AACnF,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AAkBvE;;GAEG;AACH,KAAK,UAAU,qBAAqB,CAClC,SAA8C,EAC9C,OAAmB;IAEnB,uBAAuB;IACvB,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;QACtB,MAAM,IAAI,QAAQ,CAChB,mBAAmB,EACnB,CAAC,EACD,6CAA6C,CAC9C,CAAC;IACJ,CAAC;IAED,wBAAwB;IACxB,MAAM,UAAU,GAAG,MAAM,mBAAmB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC5D,MAAM,eAAe,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAEtD,yBAAyB;IACzB,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACnC,eAAe,CAAC,kBAAkB,GAAG,OAAO,CAAC,QAAQ,CAAC;IACxD,CAAC;IACD,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAClC,eAAe,CAAC,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC;IACpD,CAAC;IAED,6BAA6B;IAC7B,MAAM,eAAe,GAAG,OAAO,CAAC,IAAI,IAAI,SAAS,CAAC,eAAe,CAAC;IAClE,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,MAAM,IAAI,QAAQ,CAChB,2BAA2B,EAC3B,CAAC,EACD,uDAAuD,CACxD,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CACrB,eAAuB,EACvB,MAAuB,EACvB,MAAe;IAEf,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,yBAAyB,eAAe,EAAE,CAAC,CAAC;IACxD,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,yBAAyB,MAAM,EAAE,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,yBAAyB,MAAM,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAClE,OAAO,CAAC,GAAG,CAAC,0BAA0B,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC;IAChE,OAAO,CAAC,GAAG,CAAC,yBAAyB,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACzE,OAAO,CAAC,GAAG,CAAC,yBAAyB,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACvE,OAAO,CAAC,GAAG,CAAC,yBAAyB,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC;IAC9D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;IACpC,OAAO,CAAC,GAAG,CAAC,yBAAyB,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;IAC/D,OAAO,CAAC,GAAG,CAAC,yBAAyB,MAAM,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAC/E,OAAO,CAAC,GAAG,CAAC,yBAAyB,MAAM,CAAC,UAAU,CAAC,qBAAqB,GAAG,CAAC,CAAC;IACjF,OAAO,CAAC,GAAG,CAAC,yBAAyB,MAAM,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC;IACrE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC,CAAC;IAClE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC,CAAC;IACvE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,SAAS,CAAC,OAAmB;IAC1C,MAAM,SAAS,GAAG,gBAAgB,EAAE,CAAC;IAErC,yBAAyB;IACzB,MAAM,EAAE,eAAe,EAAE,eAAe,EAAE,GAAG,MAAM,qBAAqB,CACtE,SAAS,EACT,OAAO,CACR,CAAC;IAEF,iBAAiB;IACjB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,cAAc,CAAC,eAAe,EAAE,eAAe,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/D,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,GAAG,CAAC;QAClB,IAAI,EAAE,2BAA2B;QACjC,KAAK,EAAE,MAAM;KACd,CAAC,CAAC,KAAK,EAAE,CAAC;IAEX,IAAI,CAAC;QACH,oBAAoB;QACpB,MAAM,SAAS,GAAG,kBAAkB,CAAC,UAAU,CAC7C,SAAS,CAAC,MAAO,EACjB,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,CAC7B,CAAC;QAEF,uCAAuC;QACvC,MAAM,aAAa,GAAG,MAAM,SAAS,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC;QACxE,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,IAAI,QAAQ,CAChB,yBAAyB,EACzB,CAAC,EACD,yCAAyC,eAAe,EAAE,CAC3D,CAAC;QACJ,CAAC;QAED,OAAO,CAAC,IAAI,GAAG,wBAAwB,CAAC;QAExC,oBAAoB;QACpB,MAAM,UAAU,GAAG,gBAAgB,CAAC;YAClC,eAAe;YACf,SAAS,EAAE,aAAa,CAAC,SAAS;YAClC,gBAAgB,EAAE,OAAO,CAAC,GAAG,EAAE;YAC/B,MAAM,EAAE,eAAe;YACvB,SAAS;SACV,CAAC,CAAC;QAEH,OAAO,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;QAEzC,wBAAwB;QACxB,UAAU,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,KAAK,EAAE,EAAE;YACvC,IAAI,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBACnC,oCAAoC;gBACpC,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;oBACzB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;gBACxC,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;YACtC,CAAC;iBAAM,IAAI,OAAO,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBAC5C,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,UAAU,CAAC,EAAE,CAAC,kBAAkB,EAAE,CAAC,IAAI,EAAE,EAAE;YACzC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBACpC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YACxD,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,UAAU,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,IAAI,EAAE,EAAE;YACtC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBACpC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,IAAI,CAAC,QAAQ,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACnE,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,UAAU,CAAC,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;YACtC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBACpC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,qCAAqC,CAAC,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,UAAU,CAAC,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;YACvC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBACpC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC,CAAC;YACrE,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,sCAAsC;QACtC,IAAI,YAAY,GAAG,KAAK,CAAC;QACzB,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;YAC9B,IAAI,YAAY,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;gBACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,YAAY,GAAG,IAAI,CAAC;YACpB,OAAO,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC;YAE3E,MAAM,UAAU,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;YACzC,qEAAqE;YAErE,OAAO,CAAC,GAAG,CAAC,kEAAkE,CAAC,CAAC;YAChF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,uBAAuB;QACvB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEhB,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC;QAExC,gBAAgB;QAChB,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,CAAC;YAClD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAEhB,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK;gBACzD,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;oBAClC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YAEf,OAAO,CAAC,GAAG,CAAC,eAAe,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACzD,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,UAAU,CAAC,CAAC;YAC/E,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC,CAAC;YAC1E,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YAE7E,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAChB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;gBAC/B,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;oBAC9C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;gBAC1C,CAAC;gBACD,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC7B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;gBACnE,CAAC;YACH,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACjC,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAgB;IACjD,OAAO;SACJ,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,mDAAmD,CAAC;SAChE,MAAM,CAAC,iBAAiB,EAAE,+BAA+B,CAAC;SAC1D,MAAM,CAAC,iBAAiB,EAAE,uCAAuC,CAAC;SAClE,MAAM,CAAC,oBAAoB,EAAE,4BAA4B,EAAE,QAAQ,CAAC;SACpE,MAAM,CAAC,sBAAsB,EAAE,qBAAqB,EAAE,UAAU,CAAC;SACjE,MAAM,CAAC,eAAe,EAAE,6BAA6B,CAAC;SACtD,MAAM,CAAC,aAAa,EAAE,gCAAgC,CAAC;SACvD,MAAM,CAAC,eAAe,EAAE,wBAAwB,CAAC;SACjD,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,uBAAuB,EAAE,uBAAuB,CAAC;SACxD,WAAW,CAAC,OAAO,EAAE;;;;;;;;;;;;;;;;;CAiBzB,CAAC;SACG,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;AACzC,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Autopilot Status Command
3
+ *
4
+ * Shows current autopilot session status.
5
+ */
6
+ import { Command } from 'commander';
7
+ /**
8
+ * Status command options
9
+ */
10
+ export interface StatusOptions {
11
+ watch?: boolean;
12
+ verbose?: boolean;
13
+ json?: boolean;
14
+ runId?: string;
15
+ }
16
+ /**
17
+ * Register status command
18
+ */
19
+ export declare function registerStatusCommand(program: Command): void;
20
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/autopilot/cli/status.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAmND;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuB5D"}