@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,454 @@
1
+ /**
2
+ * SpecForge Autopilot Type Definitions
3
+ *
4
+ * Types for the autonomous ticket implementation engine.
5
+ */
6
+ import type { Ticket, Epic, Specification, TicketStatus } from '../types/index.js';
7
+ /**
8
+ * Overall autopilot run status
9
+ */
10
+ export type AutopilotStatus = 'idle' | 'running' | 'paused' | 'completed' | 'failed' | 'aborted' | 'rate_limited' | 'cost_limit_reached';
11
+ /**
12
+ * Worker status
13
+ */
14
+ export type WorkerStatus = 'idle' | 'implementing' | 'validating' | 'committing' | 'failed' | 'paused';
15
+ /**
16
+ * Ticket implementation result
17
+ */
18
+ export type TicketResult = 'success' | 'failed' | 'skipped' | 'rate_limited' | 'timeout';
19
+ /**
20
+ * Main autopilot state tracking
21
+ */
22
+ export interface AutopilotState {
23
+ /** Unique run ID */
24
+ runId: string;
25
+ /** Current status */
26
+ status: AutopilotStatus;
27
+ /** Specification being processed */
28
+ specificationId: string;
29
+ /** Project ID */
30
+ projectId: string;
31
+ /** When run started */
32
+ startedAt: Date;
33
+ /** When run ended */
34
+ endedAt?: Date;
35
+ /** When paused */
36
+ pausedAt?: Date;
37
+ /** Active worker sessions */
38
+ workers: WorkerSession[];
39
+ /** Total number of tickets to process */
40
+ totalTickets?: number;
41
+ /** Completed tickets */
42
+ completedTickets: string[];
43
+ /** Failed tickets */
44
+ failedTickets: FailedTicket[];
45
+ /** Skipped tickets (blocked or dependencies failed) */
46
+ skippedTickets: string[];
47
+ /** Current epic being processed (ID) */
48
+ currentEpicId?: string;
49
+ /** Current epic title for display */
50
+ currentEpic?: string;
51
+ /** Total estimated cost so far */
52
+ totalCostUsd: number;
53
+ /** Total tokens used */
54
+ totalTokens: TokenUsage;
55
+ /** Rate limit info if rate limited */
56
+ rateLimitInfo?: RateLimitInfo;
57
+ /** Pause reason if paused */
58
+ pauseReason?: string;
59
+ /** Error message if aborted */
60
+ errorMessage?: string;
61
+ }
62
+ /**
63
+ * Token usage tracking
64
+ */
65
+ export interface TokenUsage {
66
+ inputTokens: number;
67
+ outputTokens: number;
68
+ }
69
+ /**
70
+ * Rate limit information
71
+ */
72
+ export interface RateLimitInfo {
73
+ hitAt: Date;
74
+ message: string;
75
+ estimatedResumeAt?: Date;
76
+ }
77
+ /**
78
+ * Failed ticket information
79
+ */
80
+ export interface FailedTicket {
81
+ ticketId: string;
82
+ error: string;
83
+ attempts: number;
84
+ retryCount: number;
85
+ lastAttemptAt: Date;
86
+ }
87
+ /**
88
+ * Worker session state
89
+ */
90
+ export interface WorkerSession {
91
+ /** Worker ID (0-indexed) */
92
+ workerId: number;
93
+ /** Current status */
94
+ status: WorkerStatus;
95
+ /** Current ticket being processed */
96
+ currentTicketId?: string;
97
+ /** Git worktree path */
98
+ worktreePath: string;
99
+ /** Branch name for this worker */
100
+ branchName: string;
101
+ /** Tickets completed by this worker */
102
+ completedCount: number;
103
+ /** Tickets failed by this worker */
104
+ failedCount: number;
105
+ /** Total cost incurred by this worker */
106
+ costUsd: number;
107
+ /** Token usage for current ticket */
108
+ currentTokens?: TokenUsage;
109
+ /** When started processing current ticket */
110
+ ticketStartedAt?: Date;
111
+ /** Last error message */
112
+ lastError?: string;
113
+ /** Number of retries on current ticket */
114
+ retryCount: number;
115
+ }
116
+ /**
117
+ * File pattern matcher
118
+ */
119
+ export interface FileMatcher {
120
+ /** Glob patterns to match */
121
+ patterns: string[];
122
+ /** Patterns to exclude */
123
+ exclude?: string[];
124
+ }
125
+ /**
126
+ * Tag matcher for profile selection
127
+ */
128
+ export interface ProfileTagMatcher {
129
+ /** Tags that must be present (AND) */
130
+ required?: string[];
131
+ /** Tags where any match triggers selection (OR) */
132
+ anyOf?: string[];
133
+ /** Tags that exclude this profile */
134
+ exclude?: string[];
135
+ }
136
+ /**
137
+ * Validation command configuration
138
+ */
139
+ export interface ValidationCommand {
140
+ /** Command name for display */
141
+ name: string;
142
+ /** The command to run */
143
+ command: string;
144
+ /** Whether the command must pass for success */
145
+ required: boolean;
146
+ /** Timeout in ms */
147
+ timeoutMs?: number;
148
+ /** Working directory (relative to worktree) */
149
+ cwd?: string;
150
+ }
151
+ /**
152
+ * Agent profile for specialized implementations
153
+ */
154
+ export interface AgentProfile {
155
+ /** Profile ID */
156
+ id: string;
157
+ /** Display name */
158
+ name: string;
159
+ /** Description */
160
+ description: string;
161
+ /** File patterns this profile handles */
162
+ fileMatchers: FileMatcher[];
163
+ /** Tag matchers for selection */
164
+ tagMatchers?: ProfileTagMatcher;
165
+ /** Default model to use */
166
+ model?: string;
167
+ /** System prompt additions */
168
+ systemPromptAdditions?: string;
169
+ /** Validation commands to run after implementation */
170
+ validationCommands?: ValidationCommand[];
171
+ /** Maximum timeout for this profile (ms) */
172
+ timeoutMs?: number;
173
+ /** Profile priority (higher = more specific) */
174
+ priority?: number;
175
+ }
176
+ /**
177
+ * AI Provider configuration for autopilot
178
+ */
179
+ export interface AutopilotAIProviderConfig {
180
+ /** Provider mode (always claude_code for autopilot) */
181
+ mode: 'claude_code';
182
+ /** Maximum parallel Claude processes */
183
+ maxParallelProcesses: number;
184
+ /** Request timeout in seconds */
185
+ requestTimeoutSeconds: number;
186
+ /** Maximum retries per request */
187
+ maxRetries: number;
188
+ }
189
+ /**
190
+ * Branch strategy options
191
+ */
192
+ export type BranchStrategy = 'per-epic' | 'per-ticket' | 'single';
193
+ /**
194
+ * Autopilot configuration
195
+ */
196
+ export interface AutopilotConfig {
197
+ /** Maximum parallel workers (worktrees) */
198
+ maxParallelWorkers: number;
199
+ /** Maximum total cost before pausing (USD) */
200
+ maxTotalCostUsd: number;
201
+ /** Branch strategy */
202
+ branchStrategy: BranchStrategy;
203
+ /** Auto-commit after each ticket */
204
+ autoCommit: boolean;
205
+ /** Auto-push after commits */
206
+ autoPush: boolean;
207
+ /** AI Provider configuration */
208
+ aiProvider: AutopilotAIProviderConfig;
209
+ /** Per-ticket timeout (ms) */
210
+ ticketTimeoutMs: number;
211
+ /** Maximum retries per ticket */
212
+ maxTicketRetries: number;
213
+ /** Pause at 80% of timeout */
214
+ warnAtTimeoutPercent: number;
215
+ /** API sync interval (ms) */
216
+ syncIntervalMs: number;
217
+ /** Log file path */
218
+ logPath?: string;
219
+ /** Agent profiles */
220
+ agentProfiles?: AgentProfile[];
221
+ }
222
+ /**
223
+ * Default autopilot configuration
224
+ */
225
+ export declare const DEFAULT_AUTOPILOT_CONFIG: AutopilotConfig;
226
+ /**
227
+ * Ticket queue item with dependency info
228
+ */
229
+ export interface QueuedTicket {
230
+ ticketId: string;
231
+ epicId: string;
232
+ /** Tickets that must complete before this one */
233
+ dependsOn: string[];
234
+ /** Whether dependencies are satisfied */
235
+ ready: boolean;
236
+ /** Priority (lower is higher priority) */
237
+ priority: number;
238
+ /** Complexity estimate */
239
+ complexity: 'small' | 'medium' | 'large' | 'xlarge';
240
+ }
241
+ /**
242
+ * Dependency graph node
243
+ */
244
+ export interface DependencyNode {
245
+ ticketId: string;
246
+ status: TicketStatus;
247
+ dependsOn: string[];
248
+ blockedBy: string[];
249
+ /** True if all dependencies are completed */
250
+ ready: boolean;
251
+ }
252
+ /**
253
+ * Autopilot event types
254
+ */
255
+ export interface AutopilotEventMap {
256
+ 'state:changed': AutopilotState;
257
+ 'worker:started': {
258
+ workerId: number;
259
+ ticketId: string;
260
+ };
261
+ 'worker:completed': {
262
+ workerId: number;
263
+ ticketId: string;
264
+ result: TicketResult;
265
+ };
266
+ 'worker:failed': {
267
+ workerId: number;
268
+ ticketId: string;
269
+ error: string;
270
+ };
271
+ 'ticket:started': {
272
+ ticketId: string;
273
+ workerId: number;
274
+ };
275
+ 'ticket:completed': {
276
+ ticketId: string;
277
+ result: TicketResult;
278
+ costUsd: number;
279
+ };
280
+ 'ticket:failed': {
281
+ ticketId: string;
282
+ error: string;
283
+ retryable: boolean;
284
+ };
285
+ 'epic:started': {
286
+ epicId: string;
287
+ };
288
+ 'epic:completed': {
289
+ epicId: string;
290
+ completedTickets: number;
291
+ failedTickets: number;
292
+ };
293
+ 'rate_limit:hit': {
294
+ message: string;
295
+ };
296
+ 'rate_limit:cleared': void;
297
+ 'cost:warning': {
298
+ currentCost: number;
299
+ maxCost: number;
300
+ };
301
+ 'cost:exceeded': {
302
+ currentCost: number;
303
+ maxCost: number;
304
+ };
305
+ 'timeout:warning': {
306
+ ticketId: string;
307
+ percentUsed: number;
308
+ };
309
+ 'timeout:exceeded': {
310
+ ticketId: string;
311
+ };
312
+ 'paused': {
313
+ reason: string;
314
+ };
315
+ 'resumed': void;
316
+ 'aborted': {
317
+ reason: string;
318
+ };
319
+ 'completed': {
320
+ summary: RunSummary;
321
+ };
322
+ }
323
+ /**
324
+ * Summary of an autopilot run
325
+ */
326
+ export interface RunSummary {
327
+ runId: string;
328
+ specificationId: string;
329
+ projectId: string;
330
+ status: AutopilotStatus;
331
+ startedAt: Date;
332
+ endedAt: Date;
333
+ durationMs: number;
334
+ totalTickets: number;
335
+ completedTickets: number;
336
+ failedTickets: number;
337
+ skippedTickets: number;
338
+ totalCostUsd: number;
339
+ totalTokens: TokenUsage;
340
+ epicsProcessed: number;
341
+ workerCount: number;
342
+ averageTicketTimeMs: number;
343
+ errors: string[];
344
+ }
345
+ /**
346
+ * Ticket with full context for implementation
347
+ */
348
+ export interface TicketContext {
349
+ ticket: Ticket;
350
+ epic: Epic;
351
+ specification: Specification;
352
+ dependencies: {
353
+ blockedBy: Array<{
354
+ id: string;
355
+ title: string;
356
+ status: TicketStatus;
357
+ }>;
358
+ blocks: Array<{
359
+ id: string;
360
+ title: string;
361
+ status: TicketStatus;
362
+ }>;
363
+ };
364
+ patterns?: Record<string, unknown>;
365
+ }
366
+ /**
367
+ * Implementation result from agent
368
+ */
369
+ export interface ImplementationResult {
370
+ success: boolean;
371
+ output?: string;
372
+ error?: string;
373
+ filesModified?: string[];
374
+ filesCreated?: string[];
375
+ filesDeleted?: string[];
376
+ testsPassed?: boolean;
377
+ tokensUsed?: TokenUsage;
378
+ costUsd?: number;
379
+ durationMs?: number;
380
+ /** Model used for implementation */
381
+ modelUsed?: 'sonnet' | 'opus';
382
+ /** Commit SHA if auto-commit was performed */
383
+ commitSha?: string;
384
+ /** Discoveries parsed from AI output */
385
+ discoveries?: ParsedDiscovery[];
386
+ /** Session ID for linking to Claude Code JSONL logs */
387
+ sessionId?: string;
388
+ }
389
+ /**
390
+ * Discovery parsed from AI output using explicit markers
391
+ */
392
+ export interface ParsedDiscovery {
393
+ type: DiscoveryType;
394
+ severity: DiscoverySeverity;
395
+ title: string;
396
+ description: string;
397
+ }
398
+ /**
399
+ * Discovery types
400
+ */
401
+ export type DiscoveryType = 'bug' | 'technical_debt' | 'new_requirement' | 'question' | 'blocker' | 'improvement';
402
+ /**
403
+ * Discovery severity levels
404
+ */
405
+ export type DiscoverySeverity = 'low' | 'medium' | 'high' | 'critical';
406
+ /**
407
+ * Audit log entry types
408
+ */
409
+ export type AuditEventType = 'run_started' | 'run_completed' | 'run_aborted' | 'run_paused' | 'run_resumed' | 'ticket_started' | 'ticket_completed' | 'ticket_failed' | 'ticket_skipped' | 'epic_started' | 'epic_completed' | 'rate_limit_hit' | 'rate_limit_cleared' | 'cost_warning' | 'cost_exceeded' | 'worker_spawned' | 'worker_terminated' | 'worktree_created' | 'worktree_removed' | 'branch_created' | 'branch_merged' | 'commit_created' | 'sync_completed' | 'sync_failed';
410
+ /**
411
+ * Audit log entry
412
+ */
413
+ export interface AuditLogEntry {
414
+ timestamp: Date;
415
+ runId: string;
416
+ event: AuditEventType;
417
+ data: Record<string, unknown>;
418
+ workerId?: number;
419
+ ticketId?: string;
420
+ epicId?: string;
421
+ error?: string;
422
+ }
423
+ /**
424
+ * Progress information for display
425
+ */
426
+ export interface ProgressInfo {
427
+ status: AutopilotStatus;
428
+ currentEpic?: {
429
+ id: string;
430
+ title: string;
431
+ progress: number;
432
+ ticketsDone: number;
433
+ ticketsTotal: number;
434
+ };
435
+ workers: Array<{
436
+ id: number;
437
+ status: WorkerStatus;
438
+ currentTicket?: string;
439
+ progress?: number;
440
+ }>;
441
+ overall: {
442
+ ticketsDone: number;
443
+ ticketsTotal: number;
444
+ ticketsFailed: number;
445
+ ticketsSkipped: number;
446
+ progress: number;
447
+ costUsd: number;
448
+ elapsedMs: number;
449
+ estimatedRemainingMs?: number;
450
+ };
451
+ rateLimited?: boolean;
452
+ rateLimitMessage?: string;
453
+ }
454
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/autopilot/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * SpecForge Autopilot Type Definitions
3
+ *
4
+ * Types for the autonomous ticket implementation engine.
5
+ */
6
+ /**
7
+ * Default autopilot configuration
8
+ */
9
+ export const DEFAULT_AUTOPILOT_CONFIG = {
10
+ maxParallelWorkers: 3,
11
+ maxTotalCostUsd: 50,
12
+ branchStrategy: 'per-epic',
13
+ autoCommit: true,
14
+ autoPush: false,
15
+ aiProvider: {
16
+ mode: 'claude_code',
17
+ maxParallelProcesses: 5,
18
+ requestTimeoutSeconds: 300,
19
+ maxRetries: 3,
20
+ },
21
+ ticketTimeoutMs: 15 * 60 * 1000, // 15 minutes
22
+ maxTicketRetries: 2,
23
+ warnAtTimeoutPercent: 80,
24
+ syncIntervalMs: 30000, // 30 seconds
25
+ };
26
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/autopilot/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA0PH;;GAEG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAoB;IACvD,kBAAkB,EAAE,CAAC;IACrB,eAAe,EAAE,EAAE;IACnB,cAAc,EAAE,UAAU;IAC1B,UAAU,EAAE,IAAI;IAChB,QAAQ,EAAE,KAAK;IACf,UAAU,EAAE;QACV,IAAI,EAAE,aAAa;QACnB,oBAAoB,EAAE,CAAC;QACvB,qBAAqB,EAAE,GAAG;QAC1B,UAAU,EAAE,CAAC;KACd;IACD,eAAe,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,aAAa;IAC9C,gBAAgB,EAAE,CAAC;IACnB,oBAAoB,EAAE,EAAE;IACxB,cAAc,EAAE,KAAK,EAAE,aAAa;CACrC,CAAC"}
@@ -0,0 +1,176 @@
1
+ /**
2
+ * Audit Logger
3
+ *
4
+ * JSONL logging for autopilot runs.
5
+ */
6
+ import type { TokenUsage, AutopilotStatus, WorkerStatus } from '../types.js';
7
+ /**
8
+ * Log entry types
9
+ */
10
+ export type AuditLogType = 'run:started' | 'run:completed' | 'run:paused' | 'run:resumed' | 'run:aborted' | 'epic:started' | 'epic:completed' | 'epic:failed' | 'ticket:started' | 'ticket:completed' | 'ticket:failed' | 'ticket:retried' | 'worker:created' | 'worker:started' | 'worker:completed' | 'worker:failed' | 'worker:idle' | 'cost:threshold' | 'cost:limit_reached' | 'rate_limit:hit' | 'rate_limit:cleared' | 'error:systemic' | 'sync:state' | 'git:commit' | 'git:merge' | 'git:conflict';
11
+ /**
12
+ * Base log entry
13
+ */
14
+ export interface AuditLogEntry {
15
+ timestamp: string;
16
+ runId: string;
17
+ type: AuditLogType;
18
+ data: Record<string, unknown>;
19
+ }
20
+ /**
21
+ * Audit Logger Options
22
+ */
23
+ export interface AuditLoggerOptions {
24
+ runId: string;
25
+ workingDirectory: string;
26
+ logDir?: string;
27
+ }
28
+ /**
29
+ * Audit Logger
30
+ *
31
+ * Writes structured JSONL logs for autopilot runs.
32
+ */
33
+ export declare class AuditLogger {
34
+ private runId;
35
+ private logFilePath;
36
+ private writeQueue;
37
+ private isWriting;
38
+ private initialized;
39
+ constructor(options: AuditLoggerOptions);
40
+ /**
41
+ * Initialize the logger
42
+ */
43
+ initialize(): Promise<void>;
44
+ /**
45
+ * Log an entry
46
+ */
47
+ log(type: AuditLogType, data?: Record<string, unknown>): Promise<void>;
48
+ /**
49
+ * Process the write queue
50
+ */
51
+ private processQueue;
52
+ /**
53
+ * Log run started
54
+ */
55
+ logRunStarted(data: {
56
+ specificationId: string;
57
+ maxParallelWorkers: number;
58
+ maxTotalCostUsd: number;
59
+ }): Promise<void>;
60
+ /**
61
+ * Log run completed
62
+ */
63
+ logRunCompleted(data: {
64
+ status: AutopilotStatus;
65
+ totalCostUsd: number;
66
+ totalTokens: TokenUsage;
67
+ completedTickets: number;
68
+ failedTickets: number;
69
+ durationMs: number;
70
+ }): Promise<void>;
71
+ /**
72
+ * Log run paused
73
+ */
74
+ logRunPaused(reason: string): Promise<void>;
75
+ /**
76
+ * Log run resumed
77
+ */
78
+ logRunResumed(): Promise<void>;
79
+ /**
80
+ * Log run aborted
81
+ */
82
+ logRunAborted(reason: string): Promise<void>;
83
+ /**
84
+ * Log epic started
85
+ */
86
+ logEpicStarted(epicId: string, epicTitle: string): Promise<void>;
87
+ /**
88
+ * Log epic completed
89
+ */
90
+ logEpicCompleted(epicId: string, ticketsCompleted: number, ticketsFailed: number): Promise<void>;
91
+ /**
92
+ * Log epic failed
93
+ */
94
+ logEpicFailed(epicId: string, error: string): Promise<void>;
95
+ /**
96
+ * Log ticket started
97
+ */
98
+ logTicketStarted(ticketId: string, ticketTitle: string, workerId: number): Promise<void>;
99
+ /**
100
+ * Log ticket completed
101
+ */
102
+ logTicketCompleted(ticketId: string, workerId: number, costUsd: number, tokens: TokenUsage, filesModified: string[]): Promise<void>;
103
+ /**
104
+ * Log ticket failed
105
+ */
106
+ logTicketFailed(ticketId: string, workerId: number, error: string, retryCount: number): Promise<void>;
107
+ /**
108
+ * Log ticket retried
109
+ */
110
+ logTicketRetried(ticketId: string, workerId: number, retryCount: number): Promise<void>;
111
+ /**
112
+ * Log worker created
113
+ */
114
+ logWorkerCreated(workerId: number, worktreePath: string): Promise<void>;
115
+ /**
116
+ * Log worker status change
117
+ */
118
+ logWorkerStatus(workerId: number, status: WorkerStatus, ticketId?: string): Promise<void>;
119
+ /**
120
+ * Log cost threshold
121
+ */
122
+ logCostThreshold(threshold: number, currentCost: number, percentUsed: number): Promise<void>;
123
+ /**
124
+ * Log cost limit reached
125
+ */
126
+ logCostLimitReached(limit: number, currentCost: number): Promise<void>;
127
+ /**
128
+ * Log rate limit hit
129
+ */
130
+ logRateLimitHit(retryAfterMs: number, provider: string): Promise<void>;
131
+ /**
132
+ * Log rate limit cleared
133
+ */
134
+ logRateLimitCleared(): Promise<void>;
135
+ /**
136
+ * Log systemic error
137
+ */
138
+ logSystemicError(errorType: string, errorCount: number, message: string): Promise<void>;
139
+ /**
140
+ * Log git commit
141
+ */
142
+ logGitCommit(ticketId: string, commitHash: string, branch: string): Promise<void>;
143
+ /**
144
+ * Log git merge
145
+ */
146
+ logGitMerge(sourceBranch: string, targetBranch: string, success: boolean, commitHash?: string): Promise<void>;
147
+ /**
148
+ * Log git conflict
149
+ */
150
+ logGitConflict(sourceBranch: string, targetBranch: string, files: string[]): Promise<void>;
151
+ /**
152
+ * Flush pending writes
153
+ */
154
+ flush(): Promise<void>;
155
+ /**
156
+ * Get log file path
157
+ */
158
+ getLogFilePath(): string;
159
+ /**
160
+ * Get run ID
161
+ */
162
+ getRunId(): string;
163
+ /**
164
+ * Read log entries
165
+ */
166
+ readEntries(): Promise<AuditLogEntry[]>;
167
+ /**
168
+ * Get entries by type
169
+ */
170
+ getEntriesByType(type: AuditLogType): Promise<AuditLogEntry[]>;
171
+ }
172
+ /**
173
+ * Create an audit logger
174
+ */
175
+ export declare function createAuditLogger(options: AuditLoggerOptions): AuditLogger;
176
+ //# sourceMappingURL=audit-logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-logger.d.ts","sourceRoot":"","sources":["../../../src/autopilot/utils/audit-logger.ts"],"names":[],"mappings":"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"}