steroids-api 0.2.7

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 (328) hide show
  1. package/dist/API/src/index.d.ts +10 -0
  2. package/dist/API/src/index.d.ts.map +1 -0
  3. package/dist/API/src/index.js +130 -0
  4. package/dist/API/src/index.js.map +1 -0
  5. package/dist/API/src/routes/activity.d.ts +7 -0
  6. package/dist/API/src/routes/activity.d.ts.map +1 -0
  7. package/dist/API/src/routes/activity.js +252 -0
  8. package/dist/API/src/routes/activity.js.map +1 -0
  9. package/dist/API/src/routes/config.d.ts +7 -0
  10. package/dist/API/src/routes/config.d.ts.map +1 -0
  11. package/dist/API/src/routes/config.js +521 -0
  12. package/dist/API/src/routes/config.js.map +1 -0
  13. package/dist/API/src/routes/health.d.ts +7 -0
  14. package/dist/API/src/routes/health.d.ts.map +1 -0
  15. package/dist/API/src/routes/health.js +172 -0
  16. package/dist/API/src/routes/health.js.map +1 -0
  17. package/dist/API/src/routes/incidents.d.ts +7 -0
  18. package/dist/API/src/routes/incidents.d.ts.map +1 -0
  19. package/dist/API/src/routes/incidents.js +117 -0
  20. package/dist/API/src/routes/incidents.js.map +1 -0
  21. package/dist/API/src/routes/projects.d.ts +7 -0
  22. package/dist/API/src/routes/projects.d.ts.map +1 -0
  23. package/dist/API/src/routes/projects.js +398 -0
  24. package/dist/API/src/routes/projects.js.map +1 -0
  25. package/dist/API/src/routes/runners.d.ts +7 -0
  26. package/dist/API/src/routes/runners.d.ts.map +1 -0
  27. package/dist/API/src/routes/runners.js +242 -0
  28. package/dist/API/src/routes/runners.js.map +1 -0
  29. package/dist/API/src/routes/tasks.d.ts +7 -0
  30. package/dist/API/src/routes/tasks.d.ts.map +1 -0
  31. package/dist/API/src/routes/tasks.js +1007 -0
  32. package/dist/API/src/routes/tasks.js.map +1 -0
  33. package/dist/API/src/utils/validation.d.ts +22 -0
  34. package/dist/API/src/utils/validation.d.ts.map +1 -0
  35. package/dist/API/src/utils/validation.js +50 -0
  36. package/dist/API/src/utils/validation.js.map +1 -0
  37. package/dist/index.d.ts +10 -0
  38. package/dist/index.d.ts.map +1 -0
  39. package/dist/index.js +184 -0
  40. package/dist/index.js.map +1 -0
  41. package/dist/routes/activity.d.ts +7 -0
  42. package/dist/routes/activity.d.ts.map +1 -0
  43. package/dist/routes/activity.js +252 -0
  44. package/dist/routes/activity.js.map +1 -0
  45. package/dist/routes/config.d.ts +7 -0
  46. package/dist/routes/config.d.ts.map +1 -0
  47. package/dist/routes/config.js +647 -0
  48. package/dist/routes/config.js.map +1 -0
  49. package/dist/routes/credit-alerts.d.ts +2 -0
  50. package/dist/routes/credit-alerts.d.ts.map +1 -0
  51. package/dist/routes/credit-alerts.js +97 -0
  52. package/dist/routes/credit-alerts.js.map +1 -0
  53. package/dist/routes/health.d.ts +7 -0
  54. package/dist/routes/health.d.ts.map +1 -0
  55. package/dist/routes/health.js +200 -0
  56. package/dist/routes/health.js.map +1 -0
  57. package/dist/routes/incidents.d.ts +7 -0
  58. package/dist/routes/incidents.d.ts.map +1 -0
  59. package/dist/routes/incidents.js +117 -0
  60. package/dist/routes/incidents.js.map +1 -0
  61. package/dist/routes/projects.d.ts +7 -0
  62. package/dist/routes/projects.d.ts.map +1 -0
  63. package/dist/routes/projects.js +643 -0
  64. package/dist/routes/projects.js.map +1 -0
  65. package/dist/routes/runners.d.ts +7 -0
  66. package/dist/routes/runners.d.ts.map +1 -0
  67. package/dist/routes/runners.js +299 -0
  68. package/dist/routes/runners.js.map +1 -0
  69. package/dist/routes/skills.d.ts +3 -0
  70. package/dist/routes/skills.d.ts.map +1 -0
  71. package/dist/routes/skills.js +109 -0
  72. package/dist/routes/skills.js.map +1 -0
  73. package/dist/routes/storage.d.ts +7 -0
  74. package/dist/routes/storage.d.ts.map +1 -0
  75. package/dist/routes/storage.js +93 -0
  76. package/dist/routes/storage.js.map +1 -0
  77. package/dist/routes/tasks.d.ts +7 -0
  78. package/dist/routes/tasks.d.ts.map +1 -0
  79. package/dist/routes/tasks.js +1145 -0
  80. package/dist/routes/tasks.js.map +1 -0
  81. package/dist/src/cleanup/invocation-logs.d.ts +30 -0
  82. package/dist/src/cleanup/invocation-logs.d.ts.map +1 -0
  83. package/dist/src/cleanup/invocation-logs.js +66 -0
  84. package/dist/src/cleanup/invocation-logs.js.map +1 -0
  85. package/dist/src/commands/loop-phases.d.ts +11 -0
  86. package/dist/src/commands/loop-phases.d.ts.map +1 -0
  87. package/dist/src/commands/loop-phases.js +304 -0
  88. package/dist/src/commands/loop-phases.js.map +1 -0
  89. package/dist/src/config/loader.d.ts +160 -0
  90. package/dist/src/config/loader.d.ts.map +1 -0
  91. package/dist/src/config/loader.js +276 -0
  92. package/dist/src/config/loader.js.map +1 -0
  93. package/dist/src/database/connection.d.ts +35 -0
  94. package/dist/src/database/connection.d.ts.map +1 -0
  95. package/dist/src/database/connection.js +197 -0
  96. package/dist/src/database/connection.js.map +1 -0
  97. package/dist/src/database/queries.d.ts +220 -0
  98. package/dist/src/database/queries.d.ts.map +1 -0
  99. package/dist/src/database/queries.js +589 -0
  100. package/dist/src/database/queries.js.map +1 -0
  101. package/dist/src/database/schema.d.ts +8 -0
  102. package/dist/src/database/schema.d.ts.map +1 -0
  103. package/dist/src/database/schema.js +184 -0
  104. package/dist/src/database/schema.js.map +1 -0
  105. package/dist/src/git/push.d.ts +26 -0
  106. package/dist/src/git/push.d.ts.map +1 -0
  107. package/dist/src/git/push.js +91 -0
  108. package/dist/src/git/push.js.map +1 -0
  109. package/dist/src/git/status.d.ts +83 -0
  110. package/dist/src/git/status.d.ts.map +1 -0
  111. package/dist/src/git/status.js +315 -0
  112. package/dist/src/git/status.js.map +1 -0
  113. package/dist/src/health/stuck-task-detector.d.ts +131 -0
  114. package/dist/src/health/stuck-task-detector.d.ts.map +1 -0
  115. package/dist/src/health/stuck-task-detector.js +233 -0
  116. package/dist/src/health/stuck-task-detector.js.map +1 -0
  117. package/dist/src/health/stuck-task-recovery.d.ts +45 -0
  118. package/dist/src/health/stuck-task-recovery.d.ts.map +1 -0
  119. package/dist/src/health/stuck-task-recovery.js +309 -0
  120. package/dist/src/health/stuck-task-recovery.js.map +1 -0
  121. package/dist/src/index.d.ts +10 -0
  122. package/dist/src/index.d.ts.map +1 -0
  123. package/dist/src/index.js +130 -0
  124. package/dist/src/index.js.map +1 -0
  125. package/dist/src/locking/queries.d.ts +116 -0
  126. package/dist/src/locking/queries.d.ts.map +1 -0
  127. package/dist/src/locking/queries.js +232 -0
  128. package/dist/src/locking/queries.js.map +1 -0
  129. package/dist/src/locking/section-lock.d.ts +74 -0
  130. package/dist/src/locking/section-lock.d.ts.map +1 -0
  131. package/dist/src/locking/section-lock.js +196 -0
  132. package/dist/src/locking/section-lock.js.map +1 -0
  133. package/dist/src/locking/task-lock.d.ts +92 -0
  134. package/dist/src/locking/task-lock.d.ts.map +1 -0
  135. package/dist/src/locking/task-lock.js +233 -0
  136. package/dist/src/locking/task-lock.js.map +1 -0
  137. package/dist/src/migrations/index.d.ts +7 -0
  138. package/dist/src/migrations/index.d.ts.map +1 -0
  139. package/dist/src/migrations/index.js +9 -0
  140. package/dist/src/migrations/index.js.map +1 -0
  141. package/dist/src/migrations/manifest.d.ts +92 -0
  142. package/dist/src/migrations/manifest.d.ts.map +1 -0
  143. package/dist/src/migrations/manifest.js +255 -0
  144. package/dist/src/migrations/manifest.js.map +1 -0
  145. package/dist/src/migrations/runner.d.ts +84 -0
  146. package/dist/src/migrations/runner.d.ts.map +1 -0
  147. package/dist/src/migrations/runner.js +338 -0
  148. package/dist/src/migrations/runner.js.map +1 -0
  149. package/dist/src/orchestrator/coder.d.ts +32 -0
  150. package/dist/src/orchestrator/coder.d.ts.map +1 -0
  151. package/dist/src/orchestrator/coder.js +170 -0
  152. package/dist/src/orchestrator/coder.js.map +1 -0
  153. package/dist/src/orchestrator/coordinator.d.ts +28 -0
  154. package/dist/src/orchestrator/coordinator.d.ts.map +1 -0
  155. package/dist/src/orchestrator/coordinator.js +252 -0
  156. package/dist/src/orchestrator/coordinator.js.map +1 -0
  157. package/dist/src/orchestrator/fallback-handler.d.ts +24 -0
  158. package/dist/src/orchestrator/fallback-handler.d.ts.map +1 -0
  159. package/dist/src/orchestrator/fallback-handler.js +280 -0
  160. package/dist/src/orchestrator/fallback-handler.js.map +1 -0
  161. package/dist/src/orchestrator/invoke.d.ts +14 -0
  162. package/dist/src/orchestrator/invoke.d.ts.map +1 -0
  163. package/dist/src/orchestrator/invoke.js +76 -0
  164. package/dist/src/orchestrator/invoke.js.map +1 -0
  165. package/dist/src/orchestrator/post-coder.d.ts +10 -0
  166. package/dist/src/orchestrator/post-coder.d.ts.map +1 -0
  167. package/dist/src/orchestrator/post-coder.js +198 -0
  168. package/dist/src/orchestrator/post-coder.js.map +1 -0
  169. package/dist/src/orchestrator/post-reviewer.d.ts +10 -0
  170. package/dist/src/orchestrator/post-reviewer.d.ts.map +1 -0
  171. package/dist/src/orchestrator/post-reviewer.js +199 -0
  172. package/dist/src/orchestrator/post-reviewer.js.map +1 -0
  173. package/dist/src/orchestrator/reviewer.d.ts +35 -0
  174. package/dist/src/orchestrator/reviewer.d.ts.map +1 -0
  175. package/dist/src/orchestrator/reviewer.js +237 -0
  176. package/dist/src/orchestrator/reviewer.js.map +1 -0
  177. package/dist/src/orchestrator/schemas.d.ts +10 -0
  178. package/dist/src/orchestrator/schemas.d.ts.map +1 -0
  179. package/dist/src/orchestrator/schemas.js +81 -0
  180. package/dist/src/orchestrator/schemas.js.map +1 -0
  181. package/dist/src/orchestrator/task-selector.d.ts +102 -0
  182. package/dist/src/orchestrator/task-selector.d.ts.map +1 -0
  183. package/dist/src/orchestrator/task-selector.js +326 -0
  184. package/dist/src/orchestrator/task-selector.js.map +1 -0
  185. package/dist/src/orchestrator/types.d.ts +74 -0
  186. package/dist/src/orchestrator/types.d.ts.map +1 -0
  187. package/dist/src/orchestrator/types.js +5 -0
  188. package/dist/src/orchestrator/types.js.map +1 -0
  189. package/dist/src/prompts/coder.d.ts +36 -0
  190. package/dist/src/prompts/coder.d.ts.map +1 -0
  191. package/dist/src/prompts/coder.js +303 -0
  192. package/dist/src/prompts/coder.js.map +1 -0
  193. package/dist/src/prompts/prompt-helpers.d.ts +51 -0
  194. package/dist/src/prompts/prompt-helpers.d.ts.map +1 -0
  195. package/dist/src/prompts/prompt-helpers.js +299 -0
  196. package/dist/src/prompts/prompt-helpers.js.map +1 -0
  197. package/dist/src/prompts/reviewer.d.ts +40 -0
  198. package/dist/src/prompts/reviewer.d.ts.map +1 -0
  199. package/dist/src/prompts/reviewer.js +416 -0
  200. package/dist/src/prompts/reviewer.js.map +1 -0
  201. package/dist/src/providers/claude.d.ts +53 -0
  202. package/dist/src/providers/claude.d.ts.map +1 -0
  203. package/dist/src/providers/claude.js +227 -0
  204. package/dist/src/providers/claude.js.map +1 -0
  205. package/dist/src/providers/codex.d.ts +53 -0
  206. package/dist/src/providers/codex.d.ts.map +1 -0
  207. package/dist/src/providers/codex.js +253 -0
  208. package/dist/src/providers/codex.js.map +1 -0
  209. package/dist/src/providers/gemini.d.ts +58 -0
  210. package/dist/src/providers/gemini.d.ts.map +1 -0
  211. package/dist/src/providers/gemini.js +240 -0
  212. package/dist/src/providers/gemini.js.map +1 -0
  213. package/dist/src/providers/interface.d.ts +185 -0
  214. package/dist/src/providers/interface.d.ts.map +1 -0
  215. package/dist/src/providers/interface.js +92 -0
  216. package/dist/src/providers/interface.js.map +1 -0
  217. package/dist/src/providers/invocation-logger.d.ts +97 -0
  218. package/dist/src/providers/invocation-logger.d.ts.map +1 -0
  219. package/dist/src/providers/invocation-logger.js +378 -0
  220. package/dist/src/providers/invocation-logger.js.map +1 -0
  221. package/dist/src/providers/openai.d.ts +53 -0
  222. package/dist/src/providers/openai.d.ts.map +1 -0
  223. package/dist/src/providers/openai.js +230 -0
  224. package/dist/src/providers/openai.js.map +1 -0
  225. package/dist/src/providers/registry.d.ts +100 -0
  226. package/dist/src/providers/registry.d.ts.map +1 -0
  227. package/dist/src/providers/registry.js +170 -0
  228. package/dist/src/providers/registry.js.map +1 -0
  229. package/dist/src/routes/activity.d.ts +7 -0
  230. package/dist/src/routes/activity.d.ts.map +1 -0
  231. package/dist/src/routes/activity.js +252 -0
  232. package/dist/src/routes/activity.js.map +1 -0
  233. package/dist/src/routes/config.d.ts +7 -0
  234. package/dist/src/routes/config.d.ts.map +1 -0
  235. package/dist/src/routes/config.js +521 -0
  236. package/dist/src/routes/config.js.map +1 -0
  237. package/dist/src/routes/health.d.ts +7 -0
  238. package/dist/src/routes/health.d.ts.map +1 -0
  239. package/dist/src/routes/health.js +172 -0
  240. package/dist/src/routes/health.js.map +1 -0
  241. package/dist/src/routes/incidents.d.ts +7 -0
  242. package/dist/src/routes/incidents.d.ts.map +1 -0
  243. package/dist/src/routes/incidents.js +117 -0
  244. package/dist/src/routes/incidents.js.map +1 -0
  245. package/dist/src/routes/projects.d.ts +7 -0
  246. package/dist/src/routes/projects.d.ts.map +1 -0
  247. package/dist/src/routes/projects.js +398 -0
  248. package/dist/src/routes/projects.js.map +1 -0
  249. package/dist/src/routes/runners.d.ts +7 -0
  250. package/dist/src/routes/runners.d.ts.map +1 -0
  251. package/dist/src/routes/runners.js +242 -0
  252. package/dist/src/routes/runners.js.map +1 -0
  253. package/dist/src/routes/tasks.d.ts +7 -0
  254. package/dist/src/routes/tasks.d.ts.map +1 -0
  255. package/dist/src/routes/tasks.js +1007 -0
  256. package/dist/src/routes/tasks.js.map +1 -0
  257. package/dist/src/runners/activity-log.d.ts +65 -0
  258. package/dist/src/runners/activity-log.d.ts.map +1 -0
  259. package/dist/src/runners/activity-log.js +140 -0
  260. package/dist/src/runners/activity-log.js.map +1 -0
  261. package/dist/src/runners/cron.d.ts +30 -0
  262. package/dist/src/runners/cron.d.ts.map +1 -0
  263. package/dist/src/runners/cron.js +333 -0
  264. package/dist/src/runners/cron.js.map +1 -0
  265. package/dist/src/runners/daemon.d.ts +71 -0
  266. package/dist/src/runners/daemon.d.ts.map +1 -0
  267. package/dist/src/runners/daemon.js +233 -0
  268. package/dist/src/runners/daemon.js.map +1 -0
  269. package/dist/src/runners/global-db.d.ts +31 -0
  270. package/dist/src/runners/global-db.d.ts.map +1 -0
  271. package/dist/src/runners/global-db.js +220 -0
  272. package/dist/src/runners/global-db.js.map +1 -0
  273. package/dist/src/runners/hang-detector.d.ts +38 -0
  274. package/dist/src/runners/hang-detector.d.ts.map +1 -0
  275. package/dist/src/runners/hang-detector.js +130 -0
  276. package/dist/src/runners/hang-detector.js.map +1 -0
  277. package/dist/src/runners/heartbeat.d.ts +39 -0
  278. package/dist/src/runners/heartbeat.d.ts.map +1 -0
  279. package/dist/src/runners/heartbeat.js +71 -0
  280. package/dist/src/runners/heartbeat.js.map +1 -0
  281. package/dist/src/runners/lock.d.ts +47 -0
  282. package/dist/src/runners/lock.d.ts.map +1 -0
  283. package/dist/src/runners/lock.js +140 -0
  284. package/dist/src/runners/lock.js.map +1 -0
  285. package/dist/src/runners/orchestrator-loop.d.ts +20 -0
  286. package/dist/src/runners/orchestrator-loop.d.ts.map +1 -0
  287. package/dist/src/runners/orchestrator-loop.js +208 -0
  288. package/dist/src/runners/orchestrator-loop.js.map +1 -0
  289. package/dist/src/runners/projects.d.ts +96 -0
  290. package/dist/src/runners/projects.d.ts.map +1 -0
  291. package/dist/src/runners/projects.js +243 -0
  292. package/dist/src/runners/projects.js.map +1 -0
  293. package/dist/src/runners/wakeup.d.ts +37 -0
  294. package/dist/src/runners/wakeup.d.ts.map +1 -0
  295. package/dist/src/runners/wakeup.js +355 -0
  296. package/dist/src/runners/wakeup.js.map +1 -0
  297. package/dist/src/utils/validation.d.ts +22 -0
  298. package/dist/src/utils/validation.d.ts.map +1 -0
  299. package/dist/src/utils/validation.js +50 -0
  300. package/dist/src/utils/validation.js.map +1 -0
  301. package/dist/utils/sqlite.d.ts +17 -0
  302. package/dist/utils/sqlite.d.ts.map +1 -0
  303. package/dist/utils/sqlite.js +27 -0
  304. package/dist/utils/sqlite.js.map +1 -0
  305. package/dist/utils/storage-cache.d.ts +33 -0
  306. package/dist/utils/storage-cache.d.ts.map +1 -0
  307. package/dist/utils/storage-cache.js +81 -0
  308. package/dist/utils/storage-cache.js.map +1 -0
  309. package/dist/utils/validation.d.ts +22 -0
  310. package/dist/utils/validation.d.ts.map +1 -0
  311. package/dist/utils/validation.js +51 -0
  312. package/dist/utils/validation.js.map +1 -0
  313. package/package.json +39 -0
  314. package/src/index.ts +199 -0
  315. package/src/routes/activity.ts +302 -0
  316. package/src/routes/config.ts +723 -0
  317. package/src/routes/credit-alerts.ts +73 -0
  318. package/src/routes/health.ts +219 -0
  319. package/src/routes/incidents.ts +131 -0
  320. package/src/routes/projects.ts +854 -0
  321. package/src/routes/runners.ts +357 -0
  322. package/src/routes/skills.ts +127 -0
  323. package/src/routes/storage.ts +108 -0
  324. package/src/routes/tasks.ts +1372 -0
  325. package/src/utils/sqlite.ts +36 -0
  326. package/src/utils/storage-cache.ts +107 -0
  327. package/src/utils/validation.ts +61 -0
  328. package/tsconfig.json +20 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../../src/migrations/runner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC5E,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAIL,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,cAAc,EACd,qBAAqB,GACtB,MAAM,eAAe,CAAC;AAoBvB;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAe;IAChD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,cAAc,GAA2B,MAAM,CAAC;IACpD,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,SAAS,GAAa,EAAE,CAAC;IAE/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAE1C,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;YACxB,cAAc,GAAG,IAAI,CAAC;YACtB,SAAS;QACX,CAAC;QAED,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,cAAc,GAAG,MAAM,CAAC;YACxB,SAAS;QACX,CAAC;QAED,IAAI,cAAc,KAAK,IAAI,EAAE,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;aAAM,IAAI,cAAc,KAAK,MAAM,EAAE,CAAC;YACrC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,OAAO;QACL,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;QAC7B,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;KAClC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAqB;IACrD,MAAM,QAAQ,GAAG,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAElD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,6BAA6B,QAAQ,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,OAAO,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,EAAqB;IACxD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,oEAAoE,CAAC,CAAC,GAAG,EAAE,CAAC;QACpG,OAAO,IAA0B,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,0BAA0B;QAC1B,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,EAAqB;IACtD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAkC,CAAC;QAClH,IAAI,CAAC,GAAG;YAAE,OAAO,CAAC,CAAC;QAEnB,2DAA2D;QAC3D,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC;QAC1B,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1B,OAAO,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC/B,CAAC;QAED,kEAAkE;QAClE,MAAM,UAAU,GAAG,oBAAoB,CAAC,EAAE,CAAC,CAAC;QAC5C,OAAO,UAAU,CAAC,MAAM,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB,CAAC,EAAqB,EAAE,OAAe,EAAE,aAAqB;IAC1F,EAAE,CAAC,OAAO,CAAC,2DAA2D,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC3G,EAAE,CAAC,OAAO,CAAC,2DAA2D,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC;AAC/G,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,EAAqB,EAAE,KAAqB,EAAE,QAAgB;IACrF,EAAE,CAAC,OAAO,CAAC,+DAA+D,CAAC,CAAC,GAAG,CAC7E,KAAK,CAAC,EAAE,EACR,KAAK,CAAC,IAAI,EACV,QAAQ,CACT,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB,CAAC,EAAqB,EAAE,EAAU;IAC9D,EAAE,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC7D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,MAAc;IACzC,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACpC,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAE9C,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACjE,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,eAAe,SAAS,KAAK,CAAC,CAAC;IAElE,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAEjC,4CAA4C;IAC5C,MAAM,OAAO,GAAG,GAAG,MAAM,MAAM,CAAC;IAChC,MAAM,OAAO,GAAG,GAAG,MAAM,MAAM,CAAC;IAEhC,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACxB,YAAY,CAAC,OAAO,EAAE,GAAG,UAAU,MAAM,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACxB,YAAY,CAAC,OAAO,EAAE,GAAG,UAAU,MAAM,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAC5B,EAAqB,EACrB,KAAqB,EACrB,OAAe;IAEf,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAE5C,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC/D,MAAM,IAAI,KAAK,CACb,mCAAmC,KAAK,CAAC,IAAI,IAAI;YACjD,YAAY,KAAK,CAAC,QAAQ,SAAS,QAAQ,IAAI;YAC/C,8DAA8D,CAC/D,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,aAAa,KAAK,CAAC,IAAI,oBAAoB,CAAC,CAAC;IAC/D,CAAC;IAED,uCAAuC;IACvC,iFAAiF;IACjF,MAAM,WAAW,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;QACtC,IAAI,CAAC;YACH,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACrB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,sEAAsE;YACtE,MAAM,gBAAgB,GAAG;gBACvB,uBAAuB;gBACvB,sBAAsB;gBACtB,sBAAsB;aACvB,CAAC;YACF,MAAM,YAAY,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/E,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,MAAM,GAAG,CAAC;YACZ,CAAC;YACD,mDAAmD;QACrD,CAAC;QACD,eAAe,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QACrC,qBAAqB,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,WAAW,EAAE,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC/B,EAAqB,EACrB,KAAqB,EACrB,OAAe;IAEf,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAE3C,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,aAAa,KAAK,CAAC,IAAI,wCAAwC,CAAC,CAAC;IACnF,CAAC;IAED,4BAA4B;IAC5B,MAAM,WAAW,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;QACtC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACrB,qBAAqB,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;QAEpC,uCAAuC;QACvC,MAAM,UAAU,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;QAChC,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;YACnB,MAAM,QAAQ,GAAG,mBAAmB,EAAE,CAAC;YACvC,MAAM,iBAAiB,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC;YAC7E,IAAI,iBAAiB,EAAE,CAAC;gBACtB,qBAAqB,CAAC,EAAE,EAAE,UAAU,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAChE,CAAC;QACH,CAAC;aAAM,CAAC;YACN,uCAAuC;YACvC,EAAE,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC/D,EAAE,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QACxE,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,WAAW,EAAE,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAC3B,EAAqB,EACrB,QAA2B,EAC3B,UAGI,EAAE;IAEN,MAAM,OAAO,GAAG,oBAAoB,CAAC,EAAE,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,qBAAqB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAEzD,wCAAwC;IACxC,MAAM,iBAAiB,GAAG,OAAO,CAAC,SAAS;QACzC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,OAAO,CAAC,SAAU,CAAC;QACjD,CAAC,CAAC,OAAO,CAAC;IAEZ,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnC,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,EAAE;SACZ,CAAC;IACJ,CAAC;IAED,qCAAqC;IACrC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IAE9C,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;SAC5C,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAAa,EAAE,CAAC;IAElC,KAAK,MAAM,SAAS,IAAI,iBAAiB,EAAE,CAAC;QAC1C,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAC7C,cAAc,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;YACvC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,YAAY;gBACrB,MAAM,EAAE,SAAS,CAAC,IAAI;gBACtB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAC9D,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO;QACL,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,YAAY;KACtB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC/B,EAAqB,EACrB,QAA2B,EAC3B,aAAqB;IAErB,MAAM,OAAO,GAAG,oBAAoB,CAAC,EAAE,CAAC,CAAC;IAEzC,8DAA8D;IAC9D,MAAM,UAAU,GAAG,OAAO;SACvB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,aAAa,CAAC;SACjC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,4BAA4B;IAE5D,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,EAAE;SACZ,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAa,EAAE,CAAC;IAEhC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,CAAC,CAAC;QACnE,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,UAAU;gBACnB,MAAM,EAAE,SAAS,CAAC,IAAI;gBACtB,KAAK,EAAE,aAAa,SAAS,CAAC,IAAI,wBAAwB;aAC3D,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;YACzC,iBAAiB,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;YACtC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,UAAU;gBACnB,MAAM,EAAE,SAAS,CAAC,IAAI;gBACtB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAC9D,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO;QACL,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,UAAU;KACpB,CAAC;AACJ,CAAC;AAaD,MAAM,UAAU,kBAAkB,CAChC,EAAqB,EACrB,QAA2B;IAE3B,MAAM,OAAO,GAAG,oBAAoB,CAAC,EAAE,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,qBAAqB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACzD,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAEpF,OAAO;QACL,cAAc;QACd,aAAa,EAAE,QAAQ,CAAC,eAAe;QACvC,UAAU,EAAE,OAAO,CAAC,MAAM,KAAK,CAAC;QAChC,OAAO;QACP,OAAO;KACR,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,EAAqB,EAAE,MAAe;IAKhE,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,mBAAmB,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,kBAAkB,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QAEhD,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACtB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;QAC5C,CAAC;QAED,kDAAkD;QAClD,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC;gBACH,YAAY,CAAC,MAAM,CAAC,CAAC;YACvB,CAAC;YAAC,OAAO,SAAS,EAAE,CAAC;gBACnB,0CAA0C;gBAC1C,OAAO,CAAC,KAAK,CAAC,oDAAoD,EAAE,SAAS,CAAC,CAAC;YACjF,CAAC;QACH,CAAC;QAED,2BAA2B;QAC3B,MAAM,MAAM,GAAG,aAAa,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QAE3C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,UAAU,EAAE,MAAM,CAAC,OAAO;gBAC1B,KAAK,EAAE,uBAAuB,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,EAAE;aAC/D,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;YAClC,UAAU,EAAE,MAAM,CAAC,OAAO;SAC3B,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,OAAO,EAAE,KAAK;YACd,UAAU,EAAE,EAAE;YACd,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;SACxD,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Coder invocation
3
+ * Uses AI provider system for flexible LLM support
4
+ */
5
+ import type { Task } from '../database/queries.js';
6
+ export interface CoderResult {
7
+ success: boolean;
8
+ exitCode: number;
9
+ stdout: string;
10
+ stderr: string;
11
+ duration: number;
12
+ timedOut: boolean;
13
+ }
14
+ export interface BatchCoderResult {
15
+ success: boolean;
16
+ exitCode: number;
17
+ stdout: string;
18
+ stderr: string;
19
+ duration: number;
20
+ timedOut: boolean;
21
+ taskCount: number;
22
+ }
23
+ /**
24
+ * Invoke coder for a task
25
+ * @param coordinatorGuidance Optional guidance from coordinator after repeated rejections
26
+ */
27
+ export declare function invokeCoder(task: Task, projectPath: string, action: 'start' | 'resume', coordinatorGuidance?: string): Promise<CoderResult>;
28
+ /**
29
+ * Invoke coder for a batch of tasks
30
+ */
31
+ export declare function invokeCoderBatch(tasks: Task[], sectionName: string, projectPath: string): Promise<BatchCoderResult>;
32
+ //# sourceMappingURL=coder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coder.d.ts","sourceRoot":"","sources":["../../../../src/orchestrator/coder.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAenD,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAiFD;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,OAAO,GAAG,QAAQ,EAC1B,mBAAmB,CAAC,EAAE,MAAM,GAC3B,OAAO,CAAC,WAAW,CAAC,CAmEtB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,IAAI,EAAE,EACb,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,gBAAgB,CAAC,CAgC3B"}
@@ -0,0 +1,170 @@
1
+ /**
2
+ * Coder invocation
3
+ * Uses AI provider system for flexible LLM support
4
+ */
5
+ import { writeFileSync, unlinkSync, existsSync } from 'node:fs';
6
+ import { tmpdir } from 'node:os';
7
+ import { join } from 'node:path';
8
+ import { getTaskRejections } from '../database/queries.js';
9
+ import { openDatabase } from '../database/connection.js';
10
+ import { generateCoderPrompt, generateResumingCoderPrompt, generateBatchCoderPrompt, } from '../prompts/coder.js';
11
+ import { getGitStatus, getGitDiff } from '../git/status.js';
12
+ import { loadConfig } from '../config/loader.js';
13
+ import { getProviderRegistry } from '../providers/registry.js';
14
+ import { logInvocation } from '../providers/invocation-logger.js';
15
+ /**
16
+ * Write prompt to temp file
17
+ */
18
+ function writePromptToTempFile(prompt) {
19
+ const tempPath = join(tmpdir(), `steroids-prompt-${Date.now()}.txt`);
20
+ writeFileSync(tempPath, prompt, 'utf-8');
21
+ return tempPath;
22
+ }
23
+ /**
24
+ * Invoke AI provider with prompt
25
+ * Uses configuration to determine which provider to use
26
+ */
27
+ async function invokeProvider(promptFile, timeoutMs = 900_000, // 15 minutes default
28
+ taskId, projectPath) {
29
+ // Load configuration to get coder provider settings
30
+ // Project config overrides global config
31
+ const config = loadConfig(projectPath);
32
+ const coderConfig = config.ai?.coder;
33
+ const providerName = coderConfig?.provider;
34
+ const modelName = coderConfig?.model;
35
+ if (!providerName || !modelName) {
36
+ throw new Error('Coder AI provider not configured. Run "steroids config ai coder" to configure.');
37
+ }
38
+ // Get the provider from registry
39
+ const registry = getProviderRegistry();
40
+ const provider = registry.get(providerName);
41
+ // Check if provider is available
42
+ if (!(await provider.isAvailable())) {
43
+ throw new Error(`Provider '${providerName}' is not available. ` +
44
+ `Ensure the CLI is installed and in PATH.`);
45
+ }
46
+ // Read prompt content
47
+ const promptContent = require('fs').readFileSync(promptFile, 'utf-8');
48
+ const result = await logInvocation(promptContent, (ctx) => provider.invoke(promptContent, {
49
+ model: modelName,
50
+ timeout: timeoutMs,
51
+ cwd: process.cwd(),
52
+ promptFile,
53
+ role: 'coder',
54
+ streamOutput: true,
55
+ onActivity: ctx?.onActivity,
56
+ }), {
57
+ role: 'coder',
58
+ provider: providerName,
59
+ model: modelName,
60
+ taskId,
61
+ projectPath,
62
+ });
63
+ return {
64
+ success: result.success,
65
+ exitCode: result.exitCode,
66
+ stdout: result.stdout,
67
+ stderr: result.stderr,
68
+ duration: result.duration,
69
+ timedOut: result.timedOut,
70
+ };
71
+ }
72
+ /**
73
+ * Invoke coder for a task
74
+ * @param coordinatorGuidance Optional guidance from coordinator after repeated rejections
75
+ */
76
+ export async function invokeCoder(task, projectPath, action, coordinatorGuidance) {
77
+ // Load config to show provider/model being used
78
+ const config = loadConfig(projectPath);
79
+ const coderConfig = config.ai?.coder;
80
+ console.log(`\n${'='.repeat(60)}`);
81
+ console.log(`CODER: ${task.title}`);
82
+ console.log(`Action: ${action}`);
83
+ console.log(`Task ID: ${task.id}`);
84
+ console.log(`Provider: ${coderConfig?.provider ?? 'not configured'}`);
85
+ console.log(`Model: ${coderConfig?.model ?? 'not configured'}`);
86
+ if (coordinatorGuidance) {
87
+ console.log(`Coordinator guidance: included (${coordinatorGuidance.length} chars)`);
88
+ }
89
+ console.log(`${'='.repeat(60)}\n`);
90
+ // Fetch rejection history so coder can see past attempts
91
+ let rejectionHistory = [];
92
+ try {
93
+ const { db, close } = openDatabase(projectPath);
94
+ rejectionHistory = getTaskRejections(db, task.id);
95
+ if (rejectionHistory.length > 0) {
96
+ console.log(`Found ${rejectionHistory.length} previous rejection(s) - coder will see full history`);
97
+ }
98
+ close();
99
+ }
100
+ catch (error) {
101
+ console.warn('Could not fetch rejection history:', error);
102
+ }
103
+ const context = {
104
+ task,
105
+ projectPath,
106
+ previousStatus: task.status,
107
+ rejectionHistory,
108
+ coordinatorGuidance,
109
+ };
110
+ let prompt;
111
+ if (action === 'resume') {
112
+ // Get git status for resuming prompt
113
+ context.gitStatus = getGitStatus(projectPath);
114
+ context.gitDiff = getGitDiff(projectPath);
115
+ prompt = generateResumingCoderPrompt(context);
116
+ }
117
+ else {
118
+ prompt = generateCoderPrompt(context);
119
+ }
120
+ // Write prompt to temp file
121
+ const promptFile = writePromptToTempFile(prompt);
122
+ try {
123
+ const result = await invokeProvider(promptFile, 900_000, task.id, projectPath);
124
+ console.log(`\n${'='.repeat(60)}`);
125
+ console.log(`CODER COMPLETED`);
126
+ console.log(`Exit code: ${result.exitCode}`);
127
+ console.log(`Duration: ${(result.duration / 1000).toFixed(1)}s`);
128
+ console.log(`${'='.repeat(60)}\n`);
129
+ return result;
130
+ }
131
+ finally {
132
+ // Clean up temp file
133
+ if (existsSync(promptFile)) {
134
+ unlinkSync(promptFile);
135
+ }
136
+ }
137
+ }
138
+ /**
139
+ * Invoke coder for a batch of tasks
140
+ */
141
+ export async function invokeCoderBatch(tasks, sectionName, projectPath) {
142
+ // Load config to show provider/model being used
143
+ const config = loadConfig(projectPath);
144
+ const coderConfig = config.ai?.coder;
145
+ console.log(`\n${'='.repeat(60)}`);
146
+ console.log(`BATCH CODER: Section "${sectionName}"`);
147
+ console.log(`Tasks: ${tasks.length}`);
148
+ tasks.forEach((t, i) => console.log(` ${i + 1}. ${t.title} (${t.id})`));
149
+ console.log(`Provider: ${coderConfig?.provider ?? 'not configured'}`);
150
+ console.log(`Model: ${coderConfig?.model ?? 'not configured'}`);
151
+ console.log(`${'='.repeat(60)}\n`);
152
+ const prompt = generateBatchCoderPrompt({ tasks, projectPath, sectionName });
153
+ const promptFile = writePromptToTempFile(prompt);
154
+ try {
155
+ // Longer timeout for batch: base 30 minutes + 5 minutes per task
156
+ const timeoutMs = 30 * 60 * 1000 + tasks.length * 5 * 60 * 1000;
157
+ const result = await invokeProvider(promptFile, timeoutMs, undefined, projectPath);
158
+ console.log(`\n${'='.repeat(60)}`);
159
+ console.log(`BATCH CODER COMPLETED`);
160
+ console.log(`Duration: ${(result.duration / 1000).toFixed(1)}s`);
161
+ console.log(`${'='.repeat(60)}\n`);
162
+ return { ...result, taskCount: tasks.length };
163
+ }
164
+ finally {
165
+ if (existsSync(promptFile)) {
166
+ unlinkSync(promptFile);
167
+ }
168
+ }
169
+ }
170
+ //# sourceMappingURL=coder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coder.js","sourceRoot":"","sources":["../../../../src/orchestrator/coder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Coordinator intervention
3
+ * Steps in after repeated rejections to break deadlocks
4
+ * Uses the orchestrator AI config to analyze rejection patterns
5
+ * and provide actionable guidance to the coder
6
+ */
7
+ import type { Task, RejectionEntry } from '../database/queries.js';
8
+ export interface CoordinatorContext {
9
+ sectionTasks?: {
10
+ id: string;
11
+ title: string;
12
+ status: string;
13
+ }[];
14
+ submissionNotes?: string | null;
15
+ gitDiffSummary?: string;
16
+ previousGuidance?: string;
17
+ }
18
+ export interface CoordinatorResult {
19
+ success: boolean;
20
+ guidance: string;
21
+ decision: 'guide_coder' | 'override_reviewer' | 'narrow_scope';
22
+ }
23
+ /**
24
+ * Invoke the coordinator to analyze rejection patterns and provide guidance
25
+ * Returns guidance string to inject into the coder prompt, or null if coordinator unavailable
26
+ */
27
+ export declare function invokeCoordinator(task: Task, rejectionHistory: RejectionEntry[], projectPath: string, extra?: CoordinatorContext): Promise<CoordinatorResult | null>;
28
+ //# sourceMappingURL=coordinator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coordinator.d.ts","sourceRoot":"","sources":["../../../../src/orchestrator/coordinator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAMnE,MAAM,WAAW,kBAAkB;IACjC,YAAY,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC/D,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,aAAa,GAAG,mBAAmB,GAAG,cAAc,CAAC;CAChE;AAoMD;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,IAAI,EACV,gBAAgB,EAAE,cAAc,EAAE,EAClC,WAAW,EAAE,MAAM,EACnB,KAAK,CAAC,EAAE,kBAAkB,GACzB,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CA0EnC"}
@@ -0,0 +1,252 @@
1
+ /**
2
+ * Coordinator intervention
3
+ * Steps in after repeated rejections to break deadlocks
4
+ * Uses the orchestrator AI config to analyze rejection patterns
5
+ * and provide actionable guidance to the coder
6
+ */
7
+ import { writeFileSync, unlinkSync, existsSync } from 'node:fs';
8
+ import { tmpdir } from 'node:os';
9
+ import { join } from 'node:path';
10
+ import { loadConfig } from '../config/loader.js';
11
+ import { getProviderRegistry } from '../providers/registry.js';
12
+ import { logInvocation } from '../providers/invocation-logger.js';
13
+ import { getAgentsMd, getSourceFileContent } from '../prompts/prompt-helpers.js';
14
+ /**
15
+ * Generate the coordinator prompt
16
+ * The coordinator reviews rejection history and MUST provide a path forward
17
+ * Gets full project context: architecture, spec, and user-facing perspective
18
+ */
19
+ function generateCoordinatorPrompt(task, rejectionHistory, projectPath, extra) {
20
+ const rejectionSummary = rejectionHistory.map(r => `### Rejection #${r.rejection_number}
21
+ ${r.notes || '(no notes)'}
22
+ `).join('\n---\n');
23
+ // Pull in project context so coordinator understands the bigger picture
24
+ const agentsMd = getAgentsMd(projectPath);
25
+ const specContent = getSourceFileContent(projectPath, task.source_file);
26
+ // Build optional context sections
27
+ const sectionTasksSection = extra?.sectionTasks && extra.sectionTasks.length > 1
28
+ ? `
29
+ ---
30
+
31
+ ## Other Tasks in This Section
32
+
33
+ This task is part of a group. Other tasks handle related work - don't demand this task does their job:
34
+ ${extra.sectionTasks.filter(t => t.id !== task.id).map(t => `- [${t.status}] ${t.title}`).join('\n')}
35
+ `
36
+ : '';
37
+ const submissionNotesSection = extra?.submissionNotes
38
+ ? `
39
+ ---
40
+
41
+ ## Coder's Latest Submission Notes
42
+
43
+ > ${extra.submissionNotes}
44
+ `
45
+ : '';
46
+ const diffSection = extra?.gitDiffSummary
47
+ ? `
48
+ ---
49
+
50
+ ## What The Coder Actually Changed (Latest Attempt)
51
+
52
+ \`\`\`
53
+ ${extra.gitDiffSummary}
54
+ \`\`\`
55
+ `
56
+ : '';
57
+ // Previous coordinator guidance section (prevents repeating itself)
58
+ const previousGuidanceSection = extra?.previousGuidance
59
+ ? `
60
+ ---
61
+
62
+ ## Your Previous Guidance
63
+
64
+ You previously provided this guidance for this task:
65
+
66
+ > ${extra.previousGuidance.substring(0, 500)}${extra.previousGuidance.length > 500 ? '...' : ''}
67
+
68
+ **Do NOT repeat the same guidance.** If the previous guidance didn't work, provide a DIFFERENT approach.
69
+ `
70
+ : '';
71
+ return `# COORDINATOR INTERVENTION
72
+
73
+ You are a COORDINATOR in a fully automated task system with NO human in the loop.
74
+ A task has been rejected ${rejectionHistory.length} times. You MUST provide a decision that moves the task forward.
75
+
76
+ **Your job is to MAKE A DECISION, not to escalate.** There is no human to escalate to.
77
+
78
+ **IMPORTANT: Your guidance will be sent to BOTH the coder AND the reviewer.**
79
+ - The coder will follow your guidance when implementing fixes
80
+ - The reviewer will see your decision and must respect it (especially override_reviewer decisions)
81
+
82
+ ---
83
+
84
+ ## Task Information
85
+
86
+ **Task ID:** ${task.id}
87
+ **Title:** ${task.title}
88
+ **Rejection Count:** ${task.rejection_count}/15
89
+ **Project:** ${projectPath}
90
+
91
+ ---
92
+
93
+ ## Task Specification (The Brief)
94
+
95
+ From: ${task.source_file ?? '(not specified)'}
96
+
97
+ ${specContent}
98
+
99
+ ---
100
+
101
+ ## Project Architecture & Best Practices
102
+
103
+ ${agentsMd}
104
+
105
+ ---
106
+
107
+ ## Full Rejection History
108
+
109
+ ${rejectionSummary}
110
+ ${sectionTasksSection}${submissionNotesSection}${diffSection}${previousGuidanceSection}
111
+ ---
112
+
113
+ ## Your Decision Framework
114
+
115
+ When making your decision, always consider:
116
+
117
+ 1. **Architecture** - Does the coder's approach follow the project's established patterns and best practices (see above)?
118
+ 2. **The brief** - Does the implementation actually deliver what the specification asks for?
119
+ 3. **User value** - Will this be usable and useful for the end user? Don't get bogged down in technical perfection at the expense of shipping.
120
+ 4. **Scope** - Is the reviewer asking for things outside this single task's responsibility?
121
+
122
+ ---
123
+
124
+ ## Your Analysis
125
+
126
+ 1. **Is there a pattern?** Are the same issues raised repeatedly?
127
+ 2. **Is the feedback achievable?** Can the coder do what the reviewer asks within THIS task's scope?
128
+ 3. **Is there a scope mismatch?** Is the reviewer demanding work outside this task (e.g., global coverage)?
129
+ 4. **Is there a design disagreement?** Different architectural assumptions?
130
+
131
+ ---
132
+
133
+ ## Your Response Format
134
+
135
+ DECISION: (one of: guide_coder | override_reviewer | narrow_scope)
136
+
137
+ - **guide_coder** - The reviewer is right but the coder needs clearer direction
138
+ - **override_reviewer** - The reviewer is asking for something out of scope or impossible; tell the coder what to ignore
139
+ - **narrow_scope** - Both have valid points; narrow the task scope to what's achievable
140
+
141
+ GUIDANCE:
142
+ (Your specific guidance. This will be shown to BOTH the coder AND the reviewer. Be concrete:
143
+ - Which files to modify and what changes to make
144
+ - What reviewer feedback to address vs what to ignore
145
+ - If using override_reviewer: explicitly list which reviewer demands the coder should IGNORE
146
+ - If using narrow_scope: explicitly describe the NARROWED scope the reviewer should evaluate against
147
+ - If the reviewer demands global metrics, state clearly that this is out of scope
148
+ - If there's a design disagreement, pick the approach that best fits the project architecture
149
+ - Give the coder a clear path to get this task approved)
150
+
151
+ ---
152
+
153
+ ## Rules
154
+
155
+ - You MUST provide guidance that unblocks the task. "Try again" is not guidance.
156
+ - If the reviewer demands global project metrics from a single task, tell the coder to ignore that demand
157
+ - If there's a design disagreement, PICK the approach that matches the project's architecture and tell the coder to follow it
158
+ - If the same feedback appeared 3+ times unchanged, the coder needs a fundamentally different approach - describe it
159
+ - Always ask: "Will this be usable for the end user?" - if the current approach works for users, don't block on technicalities
160
+ - Keep guidance under 500 words
161
+ - Focus on UNBLOCKING - the goal is to get this task approved on the next attempt
162
+ `;
163
+ }
164
+ /**
165
+ * Parse the coordinator's response
166
+ * Handles cases where guidance text may contain --- separators
167
+ */
168
+ function parseCoordinatorResponse(output) {
169
+ // Extract decision - look for valid decision values only
170
+ const decisionMatch = output.match(/DECISION:\s*(guide_coder|override_reviewer|narrow_scope)/i);
171
+ const rawDecision = decisionMatch?.[1]?.trim().toLowerCase();
172
+ // Validate decision is one of the allowed values
173
+ const validDecisions = ['guide_coder', 'override_reviewer', 'narrow_scope'];
174
+ const decision = validDecisions.includes(rawDecision)
175
+ ? rawDecision
176
+ : 'guide_coder';
177
+ // Extract guidance - everything after "GUIDANCE:" until end of output
178
+ // Use a greedy match since guidance is typically the last section
179
+ const guidanceMatch = output.match(/GUIDANCE:\s*([\s\S]+)$/i);
180
+ let guidance = guidanceMatch?.[1]?.trim() || output.trim();
181
+ // Strip trailing section markers that might be from prompt template leaking
182
+ guidance = guidance.replace(/\n## Rules[\s\S]*$/i, '').trim();
183
+ return {
184
+ success: true,
185
+ guidance,
186
+ decision,
187
+ };
188
+ }
189
+ /**
190
+ * Invoke the coordinator to analyze rejection patterns and provide guidance
191
+ * Returns guidance string to inject into the coder prompt, or null if coordinator unavailable
192
+ */
193
+ export async function invokeCoordinator(task, rejectionHistory, projectPath, extra) {
194
+ const config = loadConfig(projectPath);
195
+ const orchestratorConfig = config.ai?.orchestrator;
196
+ // If no orchestrator configured, fall back to reviewer config
197
+ const providerName = orchestratorConfig?.provider || config.ai?.reviewer?.provider;
198
+ const modelName = orchestratorConfig?.model || config.ai?.reviewer?.model;
199
+ if (!providerName || !modelName) {
200
+ console.warn('No orchestrator or reviewer AI configured - skipping coordinator intervention');
201
+ return null;
202
+ }
203
+ console.log(`\n${'='.repeat(60)}`);
204
+ console.log(`COORDINATOR: Analyzing rejections for "${task.title}"`);
205
+ console.log(`Rejection count: ${task.rejection_count}`);
206
+ console.log(`Provider: ${providerName} / ${modelName}`);
207
+ console.log(`${'='.repeat(60)}\n`);
208
+ const registry = getProviderRegistry();
209
+ const provider = registry.get(providerName);
210
+ if (!(await provider.isAvailable())) {
211
+ console.warn(`Coordinator provider '${providerName}' not available - skipping`);
212
+ return null;
213
+ }
214
+ const prompt = generateCoordinatorPrompt(task, rejectionHistory, projectPath, extra);
215
+ // Write prompt to temp file
216
+ const tempPath = join(tmpdir(), `steroids-coordinator-${Date.now()}.txt`);
217
+ writeFileSync(tempPath, prompt, 'utf-8');
218
+ try {
219
+ const result = await logInvocation(prompt, (ctx) => provider.invoke(prompt, {
220
+ model: modelName,
221
+ timeout: 300_000, // 5 minutes for coordinator
222
+ cwd: projectPath,
223
+ promptFile: tempPath,
224
+ role: 'orchestrator',
225
+ streamOutput: false,
226
+ onActivity: ctx?.onActivity,
227
+ }), {
228
+ role: 'orchestrator',
229
+ provider: providerName,
230
+ model: modelName,
231
+ taskId: task.id,
232
+ projectPath,
233
+ });
234
+ if (!result.success) {
235
+ console.warn('Coordinator invocation failed - continuing without guidance');
236
+ return null;
237
+ }
238
+ const parsed = parseCoordinatorResponse(result.stdout);
239
+ console.log(`\n${'='.repeat(60)}`);
240
+ console.log('COORDINATOR RESULT');
241
+ console.log(`Decision: ${parsed.decision}`);
242
+ console.log(`Guidance length: ${parsed.guidance.length} chars`);
243
+ console.log(`${'='.repeat(60)}\n`);
244
+ return parsed;
245
+ }
246
+ finally {
247
+ if (existsSync(tempPath)) {
248
+ unlinkSync(tempPath);
249
+ }
250
+ }
251
+ }
252
+ //# sourceMappingURL=coordinator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coordinator.js","sourceRoot":"","sources":["../../../../src/orchestrator/coordinator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Fallback handler for orchestrator output parsing
3
+ * Multi-layer parsing strategy to handle invalid JSON
4
+ */
5
+ import { CoderOrchestrationResult, ReviewerOrchestrationResult } from './types.js';
6
+ export declare class OrchestrationFallbackHandler {
7
+ /**
8
+ * Parse coder orchestrator output with multi-layer fallback
9
+ */
10
+ parseCoderOutput(rawOutput: string): CoderOrchestrationResult;
11
+ /**
12
+ * Parse reviewer orchestrator output with multi-layer fallback
13
+ */
14
+ parseReviewerOutput(rawOutput: string): ReviewerOrchestrationResult;
15
+ /**
16
+ * Keyword-based fallback for coder orchestrator
17
+ */
18
+ private keywordFallbackCoder;
19
+ /**
20
+ * Keyword-based fallback for reviewer orchestrator
21
+ */
22
+ private keywordFallbackReviewer;
23
+ }
24
+ //# sourceMappingURL=fallback-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fallback-handler.d.ts","sourceRoot":"","sources":["../../../../src/orchestrator/fallback-handler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,wBAAwB,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAGnF,qBAAa,4BAA4B;IACvC;;OAEG;IACH,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,wBAAwB;IAoD7D;;OAEG;IACH,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,2BAA2B;IAoDnE;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAkF5B;;OAEG;IACH,OAAO,CAAC,uBAAuB;CAiFhC"}