@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,63 @@
1
+ /**
2
+ * Autopilot CLI Display Utilities
3
+ *
4
+ * Status tables, progress bars, and rate limit banners.
5
+ */
6
+ import type { AutopilotState, AutopilotStatus, WorkerSession } from '../types.js';
7
+ /**
8
+ * Color helpers
9
+ */
10
+ export declare const c: {
11
+ bold: (text: string) => string;
12
+ dim: (text: string) => string;
13
+ red: (text: string) => string;
14
+ green: (text: string) => string;
15
+ yellow: (text: string) => string;
16
+ blue: (text: string) => string;
17
+ cyan: (text: string) => string;
18
+ };
19
+ /**
20
+ * Format cost
21
+ */
22
+ export declare function formatCost(cost: number): string;
23
+ /**
24
+ * Format duration
25
+ */
26
+ export declare function formatDuration(ms: number): string;
27
+ /**
28
+ * Render progress bar
29
+ */
30
+ export declare function renderProgressBar(completed: number, total: number, width?: number): string;
31
+ /**
32
+ * Get status display
33
+ */
34
+ export declare function getStatusDisplay(status: AutopilotStatus): string;
35
+ /**
36
+ * Get worker status display
37
+ */
38
+ export declare function getWorkerStatusDisplay(status: string): string;
39
+ /**
40
+ * Render workers table
41
+ */
42
+ export declare function renderWorkersTable(workers: WorkerSession[]): string;
43
+ /**
44
+ * Render status summary
45
+ */
46
+ export declare function renderStatusSummary(state: AutopilotState): string;
47
+ /**
48
+ * Render rate limit banner
49
+ */
50
+ export declare function renderRateLimitBanner(retryAfterMs?: number): string;
51
+ /**
52
+ * Render cost limit banner
53
+ */
54
+ export declare function renderCostLimitBanner(currentCost: number, maxCost: number): string;
55
+ /**
56
+ * Render full dashboard
57
+ */
58
+ export declare function renderDashboard(state: AutopilotState): string;
59
+ /**
60
+ * Render compact status line
61
+ */
62
+ export declare function renderCompactStatus(state: AutopilotState): string;
63
+ //# sourceMappingURL=display.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"display.d.ts","sourceRoot":"","sources":["../../../src/autopilot/cli/display.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AA6BlF;;GAEG;AACH,eAAO,MAAM,CAAC;iBACC,MAAM;gBACP,MAAM;gBACN,MAAM;kBACJ,MAAM;mBACL,MAAM;iBACR,MAAM;iBACN,MAAM;CACpB,CAAC;AAEF;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAYjD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,KAAK,GAAE,MAAW,GACjB,MAAM,CAWR;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAchE;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAW7D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,MAAM,CAuCnE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,CAwDjE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAmBnE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAclF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,CAkC7D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,CAUjE"}
@@ -0,0 +1,260 @@
1
+ /**
2
+ * Autopilot CLI Display Utilities
3
+ *
4
+ * Status tables, progress bars, and rate limit banners.
5
+ */
6
+ /**
7
+ * ANSI color codes
8
+ */
9
+ const colors = {
10
+ reset: '\x1b[0m',
11
+ bold: '\x1b[1m',
12
+ dim: '\x1b[2m',
13
+ red: '\x1b[31m',
14
+ green: '\x1b[32m',
15
+ yellow: '\x1b[33m',
16
+ blue: '\x1b[34m',
17
+ cyan: '\x1b[36m',
18
+ };
19
+ /**
20
+ * Check if colors are supported
21
+ */
22
+ const useColors = process.stdout.isTTY && !process.env.NO_COLOR;
23
+ /**
24
+ * Apply color if supported
25
+ */
26
+ function color(text, code) {
27
+ if (!useColors)
28
+ return text;
29
+ return `${code}${text}${colors.reset}`;
30
+ }
31
+ /**
32
+ * Color helpers
33
+ */
34
+ export const c = {
35
+ bold: (text) => color(text, colors.bold),
36
+ dim: (text) => color(text, colors.dim),
37
+ red: (text) => color(text, colors.red),
38
+ green: (text) => color(text, colors.green),
39
+ yellow: (text) => color(text, colors.yellow),
40
+ blue: (text) => color(text, colors.blue),
41
+ cyan: (text) => color(text, colors.cyan),
42
+ };
43
+ /**
44
+ * Format cost
45
+ */
46
+ export function formatCost(cost) {
47
+ return `$${cost.toFixed(4)}`;
48
+ }
49
+ /**
50
+ * Format duration
51
+ */
52
+ export function formatDuration(ms) {
53
+ const seconds = Math.floor(ms / 1000);
54
+ const minutes = Math.floor(seconds / 60);
55
+ const hours = Math.floor(minutes / 60);
56
+ if (hours > 0) {
57
+ return `${hours}h ${minutes % 60}m`;
58
+ }
59
+ if (minutes > 0) {
60
+ return `${minutes}m ${seconds % 60}s`;
61
+ }
62
+ return `${seconds}s`;
63
+ }
64
+ /**
65
+ * Render progress bar
66
+ */
67
+ export function renderProgressBar(completed, total, width = 30) {
68
+ if (total === 0)
69
+ return `[${'░'.repeat(width)}] 0%`;
70
+ const percentage = completed / total;
71
+ const filled = Math.round(percentage * width);
72
+ const empty = width - filled;
73
+ const bar = '█'.repeat(filled) + '░'.repeat(empty);
74
+ const percentText = `${Math.round(percentage * 100)}%`;
75
+ return `[${bar}] ${percentText}`;
76
+ }
77
+ /**
78
+ * Get status display
79
+ */
80
+ export function getStatusDisplay(status) {
81
+ const displays = {
82
+ idle: { symbol: '○', color: c.dim },
83
+ running: { symbol: '●', color: c.green },
84
+ paused: { symbol: '◐', color: c.yellow },
85
+ completed: { symbol: '✓', color: c.green },
86
+ failed: { symbol: '✗', color: c.red },
87
+ aborted: { symbol: '⊘', color: c.red },
88
+ rate_limited: { symbol: '⏸', color: c.yellow },
89
+ cost_limit_reached: { symbol: '$', color: c.red },
90
+ };
91
+ const display = displays[status] || displays.idle;
92
+ return `${display.symbol} ${display.color(status.toUpperCase())}`;
93
+ }
94
+ /**
95
+ * Get worker status display
96
+ */
97
+ export function getWorkerStatusDisplay(status) {
98
+ const displays = {
99
+ idle: { symbol: '○', color: c.dim },
100
+ implementing: { symbol: '●', color: c.blue },
101
+ validating: { symbol: '◑', color: c.cyan },
102
+ committing: { symbol: '◒', color: c.green },
103
+ paused: { symbol: '◐', color: c.yellow },
104
+ };
105
+ const display = displays[status] || displays.idle;
106
+ return `${display.symbol} ${display.color(status)}`;
107
+ }
108
+ /**
109
+ * Render workers table
110
+ */
111
+ export function renderWorkersTable(workers) {
112
+ const lines = [];
113
+ lines.push(c.bold('Workers'));
114
+ lines.push('─'.repeat(70));
115
+ lines.push('ID'.padEnd(6) +
116
+ 'Status'.padEnd(16) +
117
+ 'Ticket'.padEnd(20) +
118
+ 'Elapsed'.padEnd(10) +
119
+ 'Done'.padEnd(8) +
120
+ 'Cost');
121
+ lines.push('─'.repeat(70));
122
+ for (const worker of workers) {
123
+ const elapsed = worker.ticketStartedAt
124
+ ? formatDuration(Date.now() - new Date(worker.ticketStartedAt).getTime())
125
+ : '-';
126
+ const ticket = worker.currentTicketId
127
+ ? worker.currentTicketId.substring(0, 18)
128
+ : '-';
129
+ const done = `${c.green(worker.completedCount.toString())}/${c.red(worker.failedCount.toString())}`;
130
+ lines.push(`#${worker.workerId}`.padEnd(6) +
131
+ getWorkerStatusDisplay(worker.status).padEnd(24) + // Extra padding for ANSI
132
+ ticket.padEnd(20) +
133
+ elapsed.padEnd(10) +
134
+ done.padEnd(16) + // Extra padding for ANSI
135
+ formatCost(worker.costUsd));
136
+ }
137
+ lines.push('─'.repeat(70));
138
+ return lines.join('\n');
139
+ }
140
+ /**
141
+ * Render status summary
142
+ */
143
+ export function renderStatusSummary(state) {
144
+ const lines = [];
145
+ const total = state.totalTickets || 0;
146
+ const completed = state.completedTickets.length;
147
+ const failed = state.failedTickets.length;
148
+ const inProgress = state.workers.filter(w => w.status !== 'idle' && w.status !== 'paused').length;
149
+ const pending = Math.max(0, total - completed - failed - inProgress);
150
+ lines.push('');
151
+ lines.push(c.bold('═══ SpecForge Autopilot ═══'));
152
+ lines.push('');
153
+ // Status
154
+ lines.push(`Status: ${getStatusDisplay(state.status)}`);
155
+ if (state.currentEpic) {
156
+ lines.push(`Epic: ${state.currentEpic}`);
157
+ }
158
+ lines.push(`Run ID: ${c.dim(state.runId)}`);
159
+ lines.push('');
160
+ // Progress bar
161
+ lines.push(`Progress: ${renderProgressBar(completed, total)}`);
162
+ lines.push('');
163
+ // Counts
164
+ lines.push(`Tickets: ${c.green(`✓ ${completed}`)} completed | ` +
165
+ `${c.red(`✗ ${failed}`)} failed | ` +
166
+ `${c.blue(`● ${inProgress}`)} in progress | ` +
167
+ `${c.dim(`○ ${pending}`)} pending`);
168
+ // Cost and time
169
+ const elapsed = state.startedAt
170
+ ? formatDuration(Date.now() - new Date(state.startedAt).getTime())
171
+ : '-';
172
+ lines.push(`Cost: ${c.yellow(formatCost(state.totalCostUsd))} | ` +
173
+ `Elapsed: ${elapsed}`);
174
+ // Tokens
175
+ if (state.totalTokens) {
176
+ lines.push(`Tokens: ${state.totalTokens.inputTokens.toLocaleString()} in | ` +
177
+ `${state.totalTokens.outputTokens.toLocaleString()} out`);
178
+ }
179
+ lines.push('');
180
+ return lines.join('\n');
181
+ }
182
+ /**
183
+ * Render rate limit banner
184
+ */
185
+ export function renderRateLimitBanner(retryAfterMs) {
186
+ const lines = [];
187
+ lines.push('');
188
+ lines.push(c.yellow('╔════════════════════════════════════════════════════════════════════╗'));
189
+ lines.push(c.yellow('║') + ' RATE LIMITED ' + c.yellow('║'));
190
+ lines.push(c.yellow('╟────────────────────────────────────────────────────────────────────╢'));
191
+ if (retryAfterMs) {
192
+ const retryIn = formatDuration(retryAfterMs);
193
+ lines.push(c.yellow('║') + ` All workers are paused. Retry in: ${c.bold(retryIn)}`.padEnd(68) + c.yellow('║'));
194
+ }
195
+ else {
196
+ lines.push(c.yellow('║') + ' All workers are paused. Waiting for rate limit to clear... ' + c.yellow('║'));
197
+ }
198
+ lines.push(c.yellow('╚════════════════════════════════════════════════════════════════════╝'));
199
+ lines.push('');
200
+ return lines.join('\n');
201
+ }
202
+ /**
203
+ * Render cost limit banner
204
+ */
205
+ export function renderCostLimitBanner(currentCost, maxCost) {
206
+ const lines = [];
207
+ lines.push('');
208
+ lines.push(c.red('╔════════════════════════════════════════════════════════════════════╗'));
209
+ lines.push(c.red('║') + ' COST LIMIT REACHED ' + c.red('║'));
210
+ lines.push(c.red('╟────────────────────────────────────────────────────────────────────╢'));
211
+ lines.push(c.red('║') + ` Current: ${formatCost(currentCost)} / Max: ${formatCost(maxCost)}`.padEnd(68) + c.red('║'));
212
+ lines.push(c.red('║') + ' Autopilot has been paused to prevent exceeding budget. ' + c.red('║'));
213
+ lines.push(c.red('║') + ' Use --max-cost to increase the limit, or resume to continue. ' + c.red('║'));
214
+ lines.push(c.red('╚════════════════════════════════════════════════════════════════════╝'));
215
+ lines.push('');
216
+ return lines.join('\n');
217
+ }
218
+ /**
219
+ * Render full dashboard
220
+ */
221
+ export function renderDashboard(state) {
222
+ const lines = [];
223
+ // Summary
224
+ lines.push(renderStatusSummary(state));
225
+ // Rate limit banner if applicable
226
+ if (state.status === 'rate_limited') {
227
+ lines.push(renderRateLimitBanner());
228
+ }
229
+ // Workers table
230
+ if (state.workers.length > 0) {
231
+ lines.push(renderWorkersTable(state.workers));
232
+ }
233
+ // Failed tickets summary
234
+ if (state.failedTickets.length > 0) {
235
+ lines.push('');
236
+ lines.push(c.bold('Failed Tickets'));
237
+ lines.push('─'.repeat(70));
238
+ for (const failed of state.failedTickets.slice(0, 5)) {
239
+ lines.push(` ${c.red('✗')} ${failed.ticketId}: ${failed.error.substring(0, 50)}...`);
240
+ }
241
+ if (state.failedTickets.length > 5) {
242
+ lines.push(c.dim(` ... and ${state.failedTickets.length - 5} more`));
243
+ }
244
+ }
245
+ lines.push('');
246
+ return lines.join('\n');
247
+ }
248
+ /**
249
+ * Render compact status line
250
+ */
251
+ export function renderCompactStatus(state) {
252
+ const total = state.totalTickets || 0;
253
+ const completed = state.completedTickets.length;
254
+ const percentage = total > 0 ? Math.round((completed / total) * 100) : 0;
255
+ const elapsed = state.startedAt
256
+ ? formatDuration(Date.now() - new Date(state.startedAt).getTime())
257
+ : '-';
258
+ return `[${state.status}] ${completed}/${total} (${percentage}%) | ${formatCost(state.totalCostUsd)} | ${elapsed}`;
259
+ }
260
+ //# sourceMappingURL=display.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"display.js","sourceRoot":"","sources":["../../../src/autopilot/cli/display.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Autopilot CLI Commands
3
+ *
4
+ * Registers all autopilot subcommands with Commander.
5
+ */
6
+ import { Command } from 'commander';
7
+ /**
8
+ * Register autopilot commands with the main program
9
+ *
10
+ * Creates an 'autopilot' command group with subcommands:
11
+ * - run: Start autopilot session
12
+ * - status: Show session status
13
+ * - resume: Resume paused session
14
+ * - pause: Pause active session
15
+ * - abort: Abort and cleanup
16
+ */
17
+ export declare function registerAutopilotCommands(program: Command): void;
18
+ export { registerRunCommand } from './run.js';
19
+ export { registerStatusCommand } from './status.js';
20
+ export { registerResumeCommand } from './resume.js';
21
+ export { registerPauseCommand } from './pause.js';
22
+ export { registerAbortCommand } from './abort.js';
23
+ export * from './display.js';
24
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/autopilot/cli/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkDhE;AAGD,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAGlD,cAAc,cAAc,CAAC"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Autopilot CLI Commands
3
+ *
4
+ * Registers all autopilot subcommands with Commander.
5
+ */
6
+ import { registerRunCommand } from './run.js';
7
+ import { registerStatusCommand } from './status.js';
8
+ import { registerResumeCommand } from './resume.js';
9
+ import { registerPauseCommand } from './pause.js';
10
+ import { registerAbortCommand } from './abort.js';
11
+ /**
12
+ * Register autopilot commands with the main program
13
+ *
14
+ * Creates an 'autopilot' command group with subcommands:
15
+ * - run: Start autopilot session
16
+ * - status: Show session status
17
+ * - resume: Resume paused session
18
+ * - pause: Pause active session
19
+ * - abort: Abort and cleanup
20
+ */
21
+ export function registerAutopilotCommands(program) {
22
+ const autopilotCommand = program
23
+ .command('autopilot')
24
+ .description('Autonomous ticket implementation engine')
25
+ .addHelpText('after', `
26
+ Overview:
27
+ Autopilot autonomously implements tickets using Claude Code CLI.
28
+ It manages parallel workers, handles rate limits, and tracks costs.
29
+
30
+ Commands:
31
+ run Start autopilot to implement tickets
32
+ status Show current session status
33
+ resume Resume a paused session
34
+ pause Pause the active session
35
+ abort Abort and cleanup resources
36
+
37
+ Quick Start:
38
+ $ specforge autopilot run # Start with current spec
39
+ $ specforge autopilot run --parallel 2 # Run with 2 workers
40
+ $ specforge autopilot run --max-cost 10 # Limit to $10
41
+
42
+ Configuration:
43
+ Configure autopilot in .specforge.json:
44
+
45
+ {
46
+ "autopilot": {
47
+ "maxParallelWorkers": 3,
48
+ "maxTotalCostUsd": 50,
49
+ "branchStrategy": "per-epic",
50
+ "autoCommit": true,
51
+ "autoPush": false,
52
+ "aiProvider": {
53
+ "mode": "claude_code",
54
+ "maxParallelProcesses": 5,
55
+ "requestTimeoutSeconds": 300,
56
+ "maxRetries": 3
57
+ }
58
+ }
59
+ }
60
+
61
+ Documentation:
62
+ https://docs.specforge.com/autopilot
63
+ `);
64
+ // Register subcommands
65
+ registerRunCommand(autopilotCommand);
66
+ registerStatusCommand(autopilotCommand);
67
+ registerResumeCommand(autopilotCommand);
68
+ registerPauseCommand(autopilotCommand);
69
+ registerAbortCommand(autopilotCommand);
70
+ }
71
+ // Re-export individual command registrations for flexibility
72
+ export { registerRunCommand } from './run.js';
73
+ export { registerStatusCommand } from './status.js';
74
+ export { registerResumeCommand } from './resume.js';
75
+ export { registerPauseCommand } from './pause.js';
76
+ export { registerAbortCommand } from './abort.js';
77
+ // Export display utilities
78
+ export * from './display.js';
79
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/autopilot/cli/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAElD;;;;;;;;;GASG;AACH,MAAM,UAAU,yBAAyB,CAAC,OAAgB;IACxD,MAAM,gBAAgB,GAAG,OAAO;SAC7B,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CAAC,yCAAyC,CAAC;SACtD,WAAW,CAAC,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsCzB,CAAC,CAAC;IAED,uBAAuB;IACvB,kBAAkB,CAAC,gBAAgB,CAAC,CAAC;IACrC,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;IACxC,qBAAqB,CAAC,gBAAgB,CAAC,CAAC;IACxC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;IACvC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;AACzC,CAAC;AAED,6DAA6D;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAElD,2BAA2B;AAC3B,cAAc,cAAc,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Autopilot Pause Command
3
+ *
4
+ * Pauses an active autopilot session.
5
+ */
6
+ import { Command } from 'commander';
7
+ /**
8
+ * Pause command options
9
+ */
10
+ export interface PauseOptions {
11
+ force?: boolean;
12
+ json?: boolean;
13
+ }
14
+ /**
15
+ * Register pause command
16
+ */
17
+ export declare function registerPauseCommand(program: Command): void;
18
+ //# sourceMappingURL=pause.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pause.d.ts","sourceRoot":"","sources":["../../../src/autopilot/cli/pause.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AA2FD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsB3D"}
@@ -0,0 +1,110 @@
1
+ /**
2
+ * Autopilot Pause Command
3
+ *
4
+ * Pauses an active autopilot session.
5
+ */
6
+ import ora from 'ora';
7
+ import * as fs from 'fs/promises';
8
+ import * as path from 'path';
9
+ import { withErrorHandler, CliError } from '../../cli/middleware/error-handler.js';
10
+ import { STATE_FILE_NAME } from '../core/state-manager.js';
11
+ import { c, formatCost } from './display.js';
12
+ /**
13
+ * Load and update state
14
+ */
15
+ async function pauseState(workingDirectory) {
16
+ const statePath = path.join(workingDirectory, '.specforge', STATE_FILE_NAME);
17
+ try {
18
+ const content = await fs.readFile(statePath, 'utf-8');
19
+ const state = JSON.parse(content);
20
+ // Update status to paused
21
+ if (state.status === 'running') {
22
+ state.status = 'paused';
23
+ state.pausedAt = new Date().toISOString();
24
+ // Save updated state
25
+ await fs.writeFile(statePath, JSON.stringify(state, null, 2));
26
+ }
27
+ return state;
28
+ }
29
+ catch {
30
+ return null;
31
+ }
32
+ }
33
+ /**
34
+ * Pause command action
35
+ */
36
+ async function pauseAction(options) {
37
+ const workingDirectory = process.cwd();
38
+ const spinner = ora({
39
+ text: 'Pausing autopilot...',
40
+ color: 'cyan',
41
+ }).start();
42
+ try {
43
+ const state = await pauseState(workingDirectory);
44
+ if (!state) {
45
+ spinner.fail('No active autopilot session');
46
+ throw new CliError('No active session', 1, 'No autopilot session is currently running.');
47
+ }
48
+ if (state.status !== 'paused' && state.status !== 'running') {
49
+ spinner.fail(`Session is ${state.status}`);
50
+ throw new CliError('Cannot pause', 1, `Session is already ${state.status}. Cannot pause.`);
51
+ }
52
+ spinner.succeed('Autopilot paused');
53
+ if (options.json) {
54
+ console.log(JSON.stringify({
55
+ success: true,
56
+ runId: state.runId,
57
+ status: state.status,
58
+ completed: state.completedTickets.length,
59
+ failed: state.failedTickets.length,
60
+ cost: state.totalCostUsd,
61
+ }, null, 2));
62
+ }
63
+ else {
64
+ console.log('');
65
+ console.log(c.bold('Session Paused'));
66
+ console.log('');
67
+ console.log(`Run ID: ${c.dim(state.runId)}`);
68
+ console.log(`Completed: ${c.green(state.completedTickets.length.toString())} tickets`);
69
+ console.log(`Failed: ${c.red(state.failedTickets.length.toString())} tickets`);
70
+ console.log(`Cost: ${c.yellow(formatCost(state.totalCostUsd))}`);
71
+ console.log('');
72
+ console.log(c.dim('Use `specforge autopilot resume` to continue.'));
73
+ console.log(c.dim('Use `specforge autopilot abort` to cancel and cleanup.'));
74
+ console.log('');
75
+ }
76
+ }
77
+ catch (error) {
78
+ if (!(error instanceof CliError)) {
79
+ spinner.fail('Failed to pause');
80
+ }
81
+ throw error;
82
+ }
83
+ }
84
+ /**
85
+ * Register pause command
86
+ */
87
+ export function registerPauseCommand(program) {
88
+ program
89
+ .command('pause')
90
+ .description('Pause the active autopilot session')
91
+ .option('-f, --force', 'Force pause (interrupt active workers)')
92
+ .option('--json', 'Output as JSON')
93
+ .addHelpText('after', `
94
+ Examples:
95
+ $ specforge autopilot pause # Pause gracefully
96
+ $ specforge autopilot pause --force # Force pause active workers
97
+
98
+ Behavior:
99
+ - Workers will complete their current task before pausing
100
+ - Use --force to interrupt workers immediately (may lose progress)
101
+ - State is saved to .specforge/autopilot-state.json
102
+ - Use 'specforge autopilot resume' to continue later
103
+
104
+ Note:
105
+ If you run this command while autopilot is running in another terminal,
106
+ it will signal that process to pause after the current task completes.
107
+ `)
108
+ .action(withErrorHandler(pauseAction));
109
+ }
110
+ //# sourceMappingURL=pause.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pause.js","sourceRoot":"","sources":["../../../src/autopilot/cli/pause.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Autopilot Resume Command
3
+ *
4
+ * Resumes a paused autopilot session.
5
+ */
6
+ import { Command } from 'commander';
7
+ /**
8
+ * Resume command options
9
+ */
10
+ export interface ResumeOptions {
11
+ runId?: string;
12
+ skipFailed?: boolean;
13
+ retryFailed?: boolean;
14
+ watch?: boolean;
15
+ verbose?: boolean;
16
+ json?: boolean;
17
+ }
18
+ /**
19
+ * Register resume command
20
+ */
21
+ export declare function registerResumeCommand(program: Command): void;
22
+ //# sourceMappingURL=resume.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resume.d.ts","sourceRoot":"","sources":["../../../src/autopilot/cli/resume.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAuKD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwB5D"}