steroids-cli 0.4.47

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 (395) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +640 -0
  3. package/dist/cli/colors.d.ts +110 -0
  4. package/dist/cli/colors.d.ts.map +1 -0
  5. package/dist/cli/colors.js +228 -0
  6. package/dist/cli/colors.js.map +1 -0
  7. package/dist/cli/env.d.ts +159 -0
  8. package/dist/cli/env.d.ts.map +1 -0
  9. package/dist/cli/env.js +227 -0
  10. package/dist/cli/env.js.map +1 -0
  11. package/dist/cli/errors.d.ts +166 -0
  12. package/dist/cli/errors.d.ts.map +1 -0
  13. package/dist/cli/errors.js +244 -0
  14. package/dist/cli/errors.js.map +1 -0
  15. package/dist/cli/flags.d.ts +75 -0
  16. package/dist/cli/flags.d.ts.map +1 -0
  17. package/dist/cli/flags.js +232 -0
  18. package/dist/cli/flags.js.map +1 -0
  19. package/dist/cli/help.d.ts +97 -0
  20. package/dist/cli/help.d.ts.map +1 -0
  21. package/dist/cli/help.js +275 -0
  22. package/dist/cli/help.js.map +1 -0
  23. package/dist/cli/index.d.ts +13 -0
  24. package/dist/cli/index.d.ts.map +1 -0
  25. package/dist/cli/index.js +29 -0
  26. package/dist/cli/index.js.map +1 -0
  27. package/dist/cli/interactive.d.ts +58 -0
  28. package/dist/cli/interactive.d.ts.map +1 -0
  29. package/dist/cli/interactive.js +127 -0
  30. package/dist/cli/interactive.js.map +1 -0
  31. package/dist/cli/output.d.ts +116 -0
  32. package/dist/cli/output.d.ts.map +1 -0
  33. package/dist/cli/output.js +178 -0
  34. package/dist/cli/output.js.map +1 -0
  35. package/dist/commands/about.d.ts +7 -0
  36. package/dist/commands/about.d.ts.map +1 -0
  37. package/dist/commands/about.js +259 -0
  38. package/dist/commands/about.js.map +1 -0
  39. package/dist/commands/ai.d.ts +6 -0
  40. package/dist/commands/ai.d.ts.map +1 -0
  41. package/dist/commands/ai.js +382 -0
  42. package/dist/commands/ai.js.map +1 -0
  43. package/dist/commands/backup.d.ts +3 -0
  44. package/dist/commands/backup.d.ts.map +1 -0
  45. package/dist/commands/backup.js +528 -0
  46. package/dist/commands/backup.js.map +1 -0
  47. package/dist/commands/completion.d.ts +3 -0
  48. package/dist/commands/completion.d.ts.map +1 -0
  49. package/dist/commands/completion.js +405 -0
  50. package/dist/commands/completion.js.map +1 -0
  51. package/dist/commands/config.d.ts +3 -0
  52. package/dist/commands/config.d.ts.map +1 -0
  53. package/dist/commands/config.js +665 -0
  54. package/dist/commands/config.js.map +1 -0
  55. package/dist/commands/disputes.d.ts +3 -0
  56. package/dist/commands/disputes.d.ts.map +1 -0
  57. package/dist/commands/disputes.js +499 -0
  58. package/dist/commands/disputes.js.map +1 -0
  59. package/dist/commands/gc.d.ts +3 -0
  60. package/dist/commands/gc.d.ts.map +1 -0
  61. package/dist/commands/gc.js +300 -0
  62. package/dist/commands/gc.js.map +1 -0
  63. package/dist/commands/git.d.ts +3 -0
  64. package/dist/commands/git.d.ts.map +1 -0
  65. package/dist/commands/git.js +458 -0
  66. package/dist/commands/git.js.map +1 -0
  67. package/dist/commands/health.d.ts +3 -0
  68. package/dist/commands/health.d.ts.map +1 -0
  69. package/dist/commands/health.js +604 -0
  70. package/dist/commands/health.js.map +1 -0
  71. package/dist/commands/hooks.d.ts +6 -0
  72. package/dist/commands/hooks.d.ts.map +1 -0
  73. package/dist/commands/hooks.js +529 -0
  74. package/dist/commands/hooks.js.map +1 -0
  75. package/dist/commands/init.d.ts +6 -0
  76. package/dist/commands/init.d.ts.map +1 -0
  77. package/dist/commands/init.js +200 -0
  78. package/dist/commands/init.js.map +1 -0
  79. package/dist/commands/llm.d.ts +7 -0
  80. package/dist/commands/llm.d.ts.map +1 -0
  81. package/dist/commands/llm.js +285 -0
  82. package/dist/commands/llm.js.map +1 -0
  83. package/dist/commands/locks.d.ts +3 -0
  84. package/dist/commands/locks.d.ts.map +1 -0
  85. package/dist/commands/locks.js +431 -0
  86. package/dist/commands/locks.js.map +1 -0
  87. package/dist/commands/logs.d.ts +3 -0
  88. package/dist/commands/logs.d.ts.map +1 -0
  89. package/dist/commands/logs.js +487 -0
  90. package/dist/commands/logs.js.map +1 -0
  91. package/dist/commands/loop-phases.d.ts +11 -0
  92. package/dist/commands/loop-phases.d.ts.map +1 -0
  93. package/dist/commands/loop-phases.js +204 -0
  94. package/dist/commands/loop-phases.js.map +1 -0
  95. package/dist/commands/loop.d.ts +3 -0
  96. package/dist/commands/loop.d.ts.map +1 -0
  97. package/dist/commands/loop.js +396 -0
  98. package/dist/commands/loop.js.map +1 -0
  99. package/dist/commands/projects.d.ts +6 -0
  100. package/dist/commands/projects.d.ts.map +1 -0
  101. package/dist/commands/projects.js +362 -0
  102. package/dist/commands/projects.js.map +1 -0
  103. package/dist/commands/purge.d.ts +3 -0
  104. package/dist/commands/purge.d.ts.map +1 -0
  105. package/dist/commands/purge.js +516 -0
  106. package/dist/commands/purge.js.map +1 -0
  107. package/dist/commands/runners.d.ts +3 -0
  108. package/dist/commands/runners.d.ts.map +1 -0
  109. package/dist/commands/runners.js +1076 -0
  110. package/dist/commands/runners.js.map +1 -0
  111. package/dist/commands/scan.d.ts +3 -0
  112. package/dist/commands/scan.d.ts.map +1 -0
  113. package/dist/commands/scan.js +291 -0
  114. package/dist/commands/scan.js.map +1 -0
  115. package/dist/commands/sections-commands.d.ts +9 -0
  116. package/dist/commands/sections-commands.d.ts.map +1 -0
  117. package/dist/commands/sections-commands.js +282 -0
  118. package/dist/commands/sections-commands.js.map +1 -0
  119. package/dist/commands/sections-graph.d.ts +25 -0
  120. package/dist/commands/sections-graph.d.ts.map +1 -0
  121. package/dist/commands/sections-graph.js +180 -0
  122. package/dist/commands/sections-graph.js.map +1 -0
  123. package/dist/commands/sections.d.ts +3 -0
  124. package/dist/commands/sections.d.ts.map +1 -0
  125. package/dist/commands/sections.js +376 -0
  126. package/dist/commands/sections.js.map +1 -0
  127. package/dist/commands/stats.d.ts +6 -0
  128. package/dist/commands/stats.d.ts.map +1 -0
  129. package/dist/commands/stats.js +324 -0
  130. package/dist/commands/stats.js.map +1 -0
  131. package/dist/commands/tasks.d.ts +3 -0
  132. package/dist/commands/tasks.d.ts.map +1 -0
  133. package/dist/commands/tasks.js +1115 -0
  134. package/dist/commands/tasks.js.map +1 -0
  135. package/dist/commands/web.d.ts +7 -0
  136. package/dist/commands/web.d.ts.map +1 -0
  137. package/dist/commands/web.js +204 -0
  138. package/dist/commands/web.js.map +1 -0
  139. package/dist/config/ai-setup.d.ts +27 -0
  140. package/dist/config/ai-setup.d.ts.map +1 -0
  141. package/dist/config/ai-setup.js +432 -0
  142. package/dist/config/ai-setup.js.map +1 -0
  143. package/dist/config/browser.d.ts +9 -0
  144. package/dist/config/browser.d.ts.map +1 -0
  145. package/dist/config/browser.js +200 -0
  146. package/dist/config/browser.js.map +1 -0
  147. package/dist/config/json-schema.d.ts +28 -0
  148. package/dist/config/json-schema.d.ts.map +1 -0
  149. package/dist/config/json-schema.js +84 -0
  150. package/dist/config/json-schema.js.map +1 -0
  151. package/dist/config/loader.d.ts +152 -0
  152. package/dist/config/loader.d.ts.map +1 -0
  153. package/dist/config/loader.js +270 -0
  154. package/dist/config/loader.js.map +1 -0
  155. package/dist/config/schema.d.ts +34 -0
  156. package/dist/config/schema.d.ts.map +1 -0
  157. package/dist/config/schema.js +437 -0
  158. package/dist/config/schema.js.map +1 -0
  159. package/dist/config/validator.d.ts +32 -0
  160. package/dist/config/validator.d.ts.map +1 -0
  161. package/dist/config/validator.js +187 -0
  162. package/dist/config/validator.js.map +1 -0
  163. package/dist/database/connection.d.ts +35 -0
  164. package/dist/database/connection.d.ts.map +1 -0
  165. package/dist/database/connection.js +208 -0
  166. package/dist/database/connection.js.map +1 -0
  167. package/dist/database/queries.d.ts +218 -0
  168. package/dist/database/queries.d.ts.map +1 -0
  169. package/dist/database/queries.js +613 -0
  170. package/dist/database/queries.js.map +1 -0
  171. package/dist/database/schema.d.ts +8 -0
  172. package/dist/database/schema.d.ts.map +1 -0
  173. package/dist/database/schema.js +160 -0
  174. package/dist/database/schema.js.map +1 -0
  175. package/dist/disputes/behavior.d.ts +106 -0
  176. package/dist/disputes/behavior.d.ts.map +1 -0
  177. package/dist/disputes/behavior.js +150 -0
  178. package/dist/disputes/behavior.js.map +1 -0
  179. package/dist/disputes/create.d.ts +59 -0
  180. package/dist/disputes/create.d.ts.map +1 -0
  181. package/dist/disputes/create.js +222 -0
  182. package/dist/disputes/create.js.map +1 -0
  183. package/dist/disputes/index.d.ts +21 -0
  184. package/dist/disputes/index.d.ts.map +1 -0
  185. package/dist/disputes/index.js +76 -0
  186. package/dist/disputes/index.js.map +1 -0
  187. package/dist/disputes/markdown.d.ts +41 -0
  188. package/dist/disputes/markdown.d.ts.map +1 -0
  189. package/dist/disputes/markdown.js +261 -0
  190. package/dist/disputes/markdown.js.map +1 -0
  191. package/dist/disputes/queries.d.ts +83 -0
  192. package/dist/disputes/queries.d.ts.map +1 -0
  193. package/dist/disputes/queries.js +180 -0
  194. package/dist/disputes/queries.js.map +1 -0
  195. package/dist/disputes/resolve.d.ts +57 -0
  196. package/dist/disputes/resolve.d.ts.map +1 -0
  197. package/dist/disputes/resolve.js +171 -0
  198. package/dist/disputes/resolve.js.map +1 -0
  199. package/dist/disputes/stale.d.ts +98 -0
  200. package/dist/disputes/stale.d.ts.map +1 -0
  201. package/dist/disputes/stale.js +205 -0
  202. package/dist/disputes/stale.js.map +1 -0
  203. package/dist/disputes/types.d.ts +92 -0
  204. package/dist/disputes/types.d.ts.map +1 -0
  205. package/dist/disputes/types.js +100 -0
  206. package/dist/disputes/types.js.map +1 -0
  207. package/dist/git/push.d.ts +26 -0
  208. package/dist/git/push.d.ts.map +1 -0
  209. package/dist/git/push.js +97 -0
  210. package/dist/git/push.js.map +1 -0
  211. package/dist/git/status.d.ts +61 -0
  212. package/dist/git/status.d.ts.map +1 -0
  213. package/dist/git/status.js +251 -0
  214. package/dist/git/status.js.map +1 -0
  215. package/dist/hooks/events.d.ts +72 -0
  216. package/dist/hooks/events.d.ts.map +1 -0
  217. package/dist/hooks/events.js +120 -0
  218. package/dist/hooks/events.js.map +1 -0
  219. package/dist/hooks/index.d.ts +19 -0
  220. package/dist/hooks/index.d.ts.map +1 -0
  221. package/dist/hooks/index.js +48 -0
  222. package/dist/hooks/index.js.map +1 -0
  223. package/dist/hooks/integration.d.ts +69 -0
  224. package/dist/hooks/integration.d.ts.map +1 -0
  225. package/dist/hooks/integration.js +179 -0
  226. package/dist/hooks/integration.js.map +1 -0
  227. package/dist/hooks/merge.d.ts +115 -0
  228. package/dist/hooks/merge.d.ts.map +1 -0
  229. package/dist/hooks/merge.js +161 -0
  230. package/dist/hooks/merge.js.map +1 -0
  231. package/dist/hooks/orchestrator.d.ts +115 -0
  232. package/dist/hooks/orchestrator.d.ts.map +1 -0
  233. package/dist/hooks/orchestrator.js +226 -0
  234. package/dist/hooks/orchestrator.js.map +1 -0
  235. package/dist/hooks/payload.d.ts +294 -0
  236. package/dist/hooks/payload.d.ts.map +1 -0
  237. package/dist/hooks/payload.js +267 -0
  238. package/dist/hooks/payload.js.map +1 -0
  239. package/dist/hooks/script-runner.d.ts +63 -0
  240. package/dist/hooks/script-runner.d.ts.map +1 -0
  241. package/dist/hooks/script-runner.js +221 -0
  242. package/dist/hooks/script-runner.js.map +1 -0
  243. package/dist/hooks/templates.d.ts +104 -0
  244. package/dist/hooks/templates.d.ts.map +1 -0
  245. package/dist/hooks/templates.js +327 -0
  246. package/dist/hooks/templates.js.map +1 -0
  247. package/dist/hooks/webhook-runner.d.ts +69 -0
  248. package/dist/hooks/webhook-runner.d.ts.map +1 -0
  249. package/dist/hooks/webhook-runner.js +208 -0
  250. package/dist/hooks/webhook-runner.js.map +1 -0
  251. package/dist/index.d.ts +7 -0
  252. package/dist/index.d.ts.map +1 -0
  253. package/dist/index.js +281 -0
  254. package/dist/index.js.map +1 -0
  255. package/dist/locking/cleanup.d.ts +70 -0
  256. package/dist/locking/cleanup.d.ts.map +1 -0
  257. package/dist/locking/cleanup.js +157 -0
  258. package/dist/locking/cleanup.js.map +1 -0
  259. package/dist/locking/queries.d.ts +116 -0
  260. package/dist/locking/queries.d.ts.map +1 -0
  261. package/dist/locking/queries.js +255 -0
  262. package/dist/locking/queries.js.map +1 -0
  263. package/dist/locking/section-lock.d.ts +74 -0
  264. package/dist/locking/section-lock.d.ts.map +1 -0
  265. package/dist/locking/section-lock.js +207 -0
  266. package/dist/locking/section-lock.js.map +1 -0
  267. package/dist/locking/task-lock.d.ts +92 -0
  268. package/dist/locking/task-lock.d.ts.map +1 -0
  269. package/dist/locking/task-lock.js +246 -0
  270. package/dist/locking/task-lock.js.map +1 -0
  271. package/dist/migrations/index.d.ts +7 -0
  272. package/dist/migrations/index.d.ts.map +1 -0
  273. package/dist/migrations/index.js +37 -0
  274. package/dist/migrations/index.js.map +1 -0
  275. package/dist/migrations/manifest.d.ts +92 -0
  276. package/dist/migrations/manifest.d.ts.map +1 -0
  277. package/dist/migrations/manifest.js +270 -0
  278. package/dist/migrations/manifest.js.map +1 -0
  279. package/dist/migrations/runner.d.ts +84 -0
  280. package/dist/migrations/runner.d.ts.map +1 -0
  281. package/dist/migrations/runner.js +351 -0
  282. package/dist/migrations/runner.js.map +1 -0
  283. package/dist/orchestrator/coder.d.ts +32 -0
  284. package/dist/orchestrator/coder.d.ts.map +1 -0
  285. package/dist/orchestrator/coder.js +174 -0
  286. package/dist/orchestrator/coder.js.map +1 -0
  287. package/dist/orchestrator/coordinator.d.ts +28 -0
  288. package/dist/orchestrator/coordinator.d.ts.map +1 -0
  289. package/dist/orchestrator/coordinator.js +256 -0
  290. package/dist/orchestrator/coordinator.js.map +1 -0
  291. package/dist/orchestrator/reviewer.d.ts +35 -0
  292. package/dist/orchestrator/reviewer.d.ts.map +1 -0
  293. package/dist/orchestrator/reviewer.js +241 -0
  294. package/dist/orchestrator/reviewer.js.map +1 -0
  295. package/dist/orchestrator/task-selector.d.ts +102 -0
  296. package/dist/orchestrator/task-selector.d.ts.map +1 -0
  297. package/dist/orchestrator/task-selector.js +341 -0
  298. package/dist/orchestrator/task-selector.js.map +1 -0
  299. package/dist/prompts/coder.d.ts +36 -0
  300. package/dist/prompts/coder.d.ts.map +1 -0
  301. package/dist/prompts/coder.js +315 -0
  302. package/dist/prompts/coder.js.map +1 -0
  303. package/dist/prompts/prompt-helpers.d.ts +51 -0
  304. package/dist/prompts/prompt-helpers.d.ts.map +1 -0
  305. package/dist/prompts/prompt-helpers.js +312 -0
  306. package/dist/prompts/prompt-helpers.js.map +1 -0
  307. package/dist/prompts/reviewer.d.ts +40 -0
  308. package/dist/prompts/reviewer.d.ts.map +1 -0
  309. package/dist/prompts/reviewer.js +438 -0
  310. package/dist/prompts/reviewer.js.map +1 -0
  311. package/dist/providers/api-models.d.ts +65 -0
  312. package/dist/providers/api-models.d.ts.map +1 -0
  313. package/dist/providers/api-models.js +323 -0
  314. package/dist/providers/api-models.js.map +1 -0
  315. package/dist/providers/claude.d.ts +53 -0
  316. package/dist/providers/claude.d.ts.map +1 -0
  317. package/dist/providers/claude.js +229 -0
  318. package/dist/providers/claude.js.map +1 -0
  319. package/dist/providers/codex.d.ts +53 -0
  320. package/dist/providers/codex.d.ts.map +1 -0
  321. package/dist/providers/codex.js +214 -0
  322. package/dist/providers/codex.js.map +1 -0
  323. package/dist/providers/gemini.d.ts +58 -0
  324. package/dist/providers/gemini.d.ts.map +1 -0
  325. package/dist/providers/gemini.js +242 -0
  326. package/dist/providers/gemini.js.map +1 -0
  327. package/dist/providers/index.d.ts +13 -0
  328. package/dist/providers/index.d.ts.map +1 -0
  329. package/dist/providers/index.js +49 -0
  330. package/dist/providers/index.js.map +1 -0
  331. package/dist/providers/interface.d.ts +173 -0
  332. package/dist/providers/interface.d.ts.map +1 -0
  333. package/dist/providers/interface.js +96 -0
  334. package/dist/providers/interface.js.map +1 -0
  335. package/dist/providers/invocation-logger.d.ts +114 -0
  336. package/dist/providers/invocation-logger.d.ts.map +1 -0
  337. package/dist/providers/invocation-logger.js +298 -0
  338. package/dist/providers/invocation-logger.js.map +1 -0
  339. package/dist/providers/openai.d.ts +53 -0
  340. package/dist/providers/openai.d.ts.map +1 -0
  341. package/dist/providers/openai.js +232 -0
  342. package/dist/providers/openai.js.map +1 -0
  343. package/dist/providers/registry.d.ts +100 -0
  344. package/dist/providers/registry.d.ts.map +1 -0
  345. package/dist/providers/registry.js +178 -0
  346. package/dist/providers/registry.js.map +1 -0
  347. package/dist/runners/activity-log.d.ts +65 -0
  348. package/dist/runners/activity-log.d.ts.map +1 -0
  349. package/dist/runners/activity-log.js +148 -0
  350. package/dist/runners/activity-log.js.map +1 -0
  351. package/dist/runners/cron.d.ts +26 -0
  352. package/dist/runners/cron.d.ts.map +1 -0
  353. package/dist/runners/cron.js +176 -0
  354. package/dist/runners/cron.js.map +1 -0
  355. package/dist/runners/daemon.d.ts +71 -0
  356. package/dist/runners/daemon.d.ts.map +1 -0
  357. package/dist/runners/daemon.js +245 -0
  358. package/dist/runners/daemon.js.map +1 -0
  359. package/dist/runners/global-db.d.ts +31 -0
  360. package/dist/runners/global-db.d.ts.map +1 -0
  361. package/dist/runners/global-db.js +230 -0
  362. package/dist/runners/global-db.js.map +1 -0
  363. package/dist/runners/hang-detector.d.ts +38 -0
  364. package/dist/runners/hang-detector.d.ts.map +1 -0
  365. package/dist/runners/hang-detector.js +136 -0
  366. package/dist/runners/hang-detector.js.map +1 -0
  367. package/dist/runners/heartbeat.d.ts +39 -0
  368. package/dist/runners/heartbeat.d.ts.map +1 -0
  369. package/dist/runners/heartbeat.js +79 -0
  370. package/dist/runners/heartbeat.js.map +1 -0
  371. package/dist/runners/lock.d.ts +47 -0
  372. package/dist/runners/lock.d.ts.map +1 -0
  373. package/dist/runners/lock.js +150 -0
  374. package/dist/runners/lock.js.map +1 -0
  375. package/dist/runners/orchestrator-loop.d.ts +20 -0
  376. package/dist/runners/orchestrator-loop.d.ts.map +1 -0
  377. package/dist/runners/orchestrator-loop.js +285 -0
  378. package/dist/runners/orchestrator-loop.js.map +1 -0
  379. package/dist/runners/projects.d.ts +96 -0
  380. package/dist/runners/projects.d.ts.map +1 -0
  381. package/dist/runners/projects.js +255 -0
  382. package/dist/runners/projects.js.map +1 -0
  383. package/dist/runners/wakeup.d.ts +34 -0
  384. package/dist/runners/wakeup.d.ts.map +1 -0
  385. package/dist/runners/wakeup.js +291 -0
  386. package/dist/runners/wakeup.js.map +1 -0
  387. package/migrations/001_initial_schema.sql +106 -0
  388. package/migrations/002_add_commit_sha.sql +12 -0
  389. package/migrations/003_add_section_priority.sql +13 -0
  390. package/migrations/004_add_section_dependencies.sql +18 -0
  391. package/migrations/005_add_audit_actor_model.sql +10 -0
  392. package/migrations/006_add_task_invocations.sql +33 -0
  393. package/migrations/007_add_file_anchor.sql +14 -0
  394. package/migrations/manifest.json +62 -0
  395. package/package.json +49 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-helpers.js","sourceRoot":"","sources":["../../src/prompts/prompt-helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Reviewer prompt templates
3
+ * Following the exact templates from PROMPTS.md
4
+ */
5
+ import type { Task, RejectionEntry } from '../database/queries.js';
6
+ import type { SteroidsConfig } from '../config/loader.js';
7
+ import type { SectionTask } from './prompt-helpers.js';
8
+ export interface ReviewerPromptContext {
9
+ task: Task;
10
+ projectPath: string;
11
+ reviewerModel: string;
12
+ gitDiff: string;
13
+ modifiedFiles: string[];
14
+ sectionTasks?: SectionTask[];
15
+ rejectionHistory?: RejectionEntry[];
16
+ submissionNotes?: string | null;
17
+ config: SteroidsConfig;
18
+ coordinatorGuidance?: string;
19
+ coordinatorDecision?: string;
20
+ }
21
+ /**
22
+ * Generate the reviewer prompt
23
+ */
24
+ export declare function generateReviewerPrompt(context: ReviewerPromptContext): string;
25
+ /**
26
+ * Context for batch reviewer prompts
27
+ */
28
+ export interface BatchReviewerPromptContext {
29
+ tasks: Task[];
30
+ projectPath: string;
31
+ sectionName: string;
32
+ gitDiff: string;
33
+ modifiedFiles: string[];
34
+ config: SteroidsConfig;
35
+ }
36
+ /**
37
+ * Generate the reviewer prompt for a batch of tasks
38
+ */
39
+ export declare function generateBatchReviewerPrompt(context: BatchReviewerPromptContext): string;
40
+ //# sourceMappingURL=reviewer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reviewer.d.ts","sourceRoot":"","sources":["../../src/prompts/reviewer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,IAAI,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;IAC7B,gBAAgB,CAAC,EAAE,cAAc,EAAE,CAAC;IACpC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,MAAM,EAAE,cAAc,CAAC;IACvB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAgID;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,qBAAqB,GAAG,MAAM,CA+M7E;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,EAAE,cAAc,CAAC;CACxB;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,0BAA0B,GAAG,MAAM,CA6GvF"}
@@ -0,0 +1,438 @@
1
+ "use strict";
2
+ /**
3
+ * Reviewer prompt templates
4
+ * Following the exact templates from PROMPTS.md
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.generateReviewerPrompt = generateReviewerPrompt;
8
+ exports.generateBatchReviewerPrompt = generateBatchReviewerPrompt;
9
+ const prompt_helpers_js_1 = require("./prompt-helpers.js");
10
+ /**
11
+ * Format rejection history for display
12
+ */
13
+ function formatRejectionHistory(rejections) {
14
+ if (!rejections || rejections.length === 0) {
15
+ return `
16
+ ---
17
+
18
+ ## Rejection History
19
+
20
+ No previous rejections. This is the first review.
21
+ `;
22
+ }
23
+ const lines = rejections.map(r => {
24
+ const commitRef = r.commit_sha ? ` (commit: ${r.commit_sha.substring(0, 7)})` : '';
25
+ const notes = r.notes || '(no notes provided)';
26
+ return `### Rejection #${r.rejection_number}${commitRef}
27
+ ${notes}
28
+ `;
29
+ });
30
+ // Always provide specific guidance - don't wait for high rejection count
31
+ const guidanceNote = `
32
+ **Rejection Best Practices:**
33
+ - Provide specific file:line references (e.g., \`src/foo.ts:42\`)
34
+ - Include exact code snippets that need to change
35
+ - Point to similar working patterns in the codebase
36
+ - Explain WHY the current approach doesn't work, not just WHAT is wrong
37
+ - **NEVER demand global/overall project coverage** - only coverage for THIS task's modified files
38
+ - **Follow the project's architecture** - if coder's approach matches existing patterns, accept it`;
39
+ const highRejectionWarning = rejections.length >= 3 ? `
40
+
41
+ **CRITICAL: This task has been rejected ${rejections.length} times.**
42
+ - If you are about to reject for the SAME reasons as before, consider whether the requirement is achievable
43
+ - If the coder has attempted to address your feedback but can't fully resolve it, consider APPROVING with notes
44
+ - If there's a fundamental disagreement, use DISPUTE instead of rejecting again
45
+ - Ask yourself: "Is what I'm asking for within the scope of THIS single task?"
46
+ ` : '';
47
+ return `
48
+ ---
49
+
50
+ ## Rejection History (${rejections.length} previous)
51
+ ${highRejectionWarning}
52
+ **Review this history carefully before making your decision.**
53
+ - Look for patterns: Is the same issue being raised repeatedly?
54
+ - If an issue was raised before and not fixed, be MORE SPECIFIC about what exactly needs to change
55
+ - Use commit hashes to examine previous attempts: \`git show <hash>\`
56
+ - The coder only sees YOUR rejection notes - make them actionable
57
+ ${guidanceNote}
58
+ ${lines.join('\n')}
59
+ `;
60
+ }
61
+ /**
62
+ * Format section tasks for display
63
+ */
64
+ /**
65
+ * Format coordinator guidance for the reviewer
66
+ * Makes coordinator decisions visible and enforceable by the reviewer
67
+ */
68
+ function formatCoordinatorGuidance(guidance, decision) {
69
+ if (!guidance)
70
+ return '';
71
+ const decisionLabels = {
72
+ 'guide_coder': 'Guide coder (reviewer feedback is valid, coder needs clearer direction)',
73
+ 'override_reviewer': 'Override reviewer (some reviewer demands are out of scope or unachievable)',
74
+ 'narrow_scope': 'Narrow scope (task scope reduced to achievable subset)',
75
+ };
76
+ const decisionLabel = decisionLabels[decision || ''] || decision || 'unknown';
77
+ return `
78
+ ---
79
+
80
+ ## COORDINATOR INTERVENTION
81
+
82
+ A coordinator has reviewed the rejection history for this task and made the following decision:
83
+
84
+ **Decision:** ${decisionLabel}
85
+
86
+ **Coordinator's Guidance:**
87
+
88
+ ${guidance}
89
+
90
+ **You MUST consider this when making your decision:**
91
+ - If the coordinator decided **override_reviewer**: do NOT re-raise the issues the coordinator flagged as out of scope or unachievable. Those demands have been ruled invalid.
92
+ - If the coordinator decided **narrow_scope**: evaluate the coder's work against the NARROWED scope described above, not the original full scope.
93
+ - If the coordinator decided **guide_coder**: the coder was given specific direction - check whether they followed it.
94
+ - You may still reject for NEW issues not addressed by the coordinator, but do not contradict the coordinator's ruling.
95
+
96
+ `;
97
+ }
98
+ /**
99
+ * Generate test coverage instructions if required
100
+ * Coverage is scoped to MODIFIED FILES ONLY - not global project coverage
101
+ */
102
+ function getTestCoverageInstructions(config, modifiedFiles) {
103
+ if (!config.quality?.tests?.required) {
104
+ return '';
105
+ }
106
+ const minCoverage = config.quality.tests.minCoverage ?? 80;
107
+ const filesScope = modifiedFiles && modifiedFiles.length > 0
108
+ ? `- Coverage applies to files MODIFIED IN THIS TASK:\n${modifiedFiles.map(f => ` - ${f}`).join('\n')}`
109
+ : '- Coverage applies to the files modified in this task';
110
+ return `
111
+
112
+ ## Test Coverage (REQUIRED - SCOPED TO THIS TASK)
113
+
114
+ **This project requires tests for new code.**
115
+
116
+ ${filesScope}
117
+ - Target coverage for THIS TASK's modified files: ${minCoverage}%
118
+ - Tests must exercise the new/changed code paths
119
+ - **DO NOT demand global/overall project coverage from a single task**
120
+ - Other modules' coverage is tracked separately and is NOT this task's responsibility
121
+ - REJECT only if tests for the NEW CODE in this task are missing or inadequate
122
+ `;
123
+ }
124
+ /**
125
+ * Generate the reviewer prompt
126
+ */
127
+ function generateReviewerPrompt(context) {
128
+ const { task, projectPath, reviewerModel, gitDiff, modifiedFiles, sectionTasks, rejectionHistory, submissionNotes, config, coordinatorGuidance, coordinatorDecision } = context;
129
+ // Format coder's submission notes if present
130
+ const submissionNotesSection = submissionNotes
131
+ ? `
132
+ ---
133
+
134
+ ## Coder's Notes
135
+
136
+ The coder included these notes when submitting for review:
137
+
138
+ > ${submissionNotes}
139
+
140
+ **CRITICAL: If the coder claims work already exists:**
141
+ 1. **DO NOT reject just because the diff is empty or only shows version bumps**
142
+ 2. If a commit hash is mentioned, run \`git show <hash>\` to verify the work
143
+ 3. Check if the files/functionality described actually exist in the codebase
144
+ 4. If the existing work fulfills the specification: **APPROVE**
145
+ 5. If gaps remain: specify exactly what's missing, don't ask for re-implementation
146
+ `
147
+ : '';
148
+ const sourceContent = (0, prompt_helpers_js_1.getSourceFileContent)(projectPath, task.source_file);
149
+ const fileAnchorSection = (0, prompt_helpers_js_1.buildFileAnchorSection)(task);
150
+ // Truncate diff if too long (max 20000 chars per spec)
151
+ let diffContent = gitDiff;
152
+ if (diffContent.length > 20000) {
153
+ diffContent = diffContent.substring(0, 20000) + '\n\n[Diff truncated]';
154
+ }
155
+ const filesListFormatted = modifiedFiles.length > 0
156
+ ? modifiedFiles.map(f => `- ${f}`).join('\n')
157
+ : 'No files modified';
158
+ return `# TASK: ${task.id.substring(0, 8)} - ${task.title}
159
+ # Status: review | Rejections: ${task.rejection_count}/15
160
+
161
+ You are a REVIEWER in an automated task execution system. Your job is to verify the coder's implementation matches the specification.
162
+
163
+ **Follow the project's existing architecture.** If the coder's implementation follows the patterns already established in the codebase (as described in AGENTS.md), do not reject for architectural style differences. Focus on correctness and spec compliance.
164
+
165
+ ---
166
+
167
+ ## Task Information
168
+
169
+ **Task ID:** ${task.id}
170
+ **Title:** ${task.title}
171
+ **Rejection Count:** ${task.rejection_count}/15
172
+ **Project:** ${projectPath}
173
+ ${fileAnchorSection}${(0, prompt_helpers_js_1.formatSectionTasks)(task.id, sectionTasks)}${formatRejectionHistory(rejectionHistory)}${submissionNotesSection}${formatCoordinatorGuidance(coordinatorGuidance, coordinatorDecision)}
174
+ ## Original Specification
175
+
176
+ From ${task.source_file ?? '(not specified)'}:
177
+
178
+ ${sourceContent}
179
+
180
+ ---
181
+
182
+ ## Changes Made by Coder
183
+
184
+ \`\`\`diff
185
+ ${diffContent}
186
+ \`\`\`
187
+
188
+ ---
189
+
190
+ ## Files Modified
191
+
192
+ ${filesListFormatted}
193
+
194
+ ---
195
+
196
+ ## Review Checklist
197
+
198
+ Answer these questions:
199
+ 1. Does the implementation match the specification?
200
+ 2. Are there bugs or logic errors?
201
+ 3. Are tests present and adequate?
202
+ 4. Does code follow AGENTS.md guidelines?
203
+ 5. Are all files under 500 lines?
204
+
205
+ ## Security Review
206
+
207
+ **Check the coder's NEW or CHANGED code for security vulnerabilities.**
208
+
209
+ **Scope rule:** Only evaluate code in the diff. Pre-existing patterns in unchanged code are NOT the coder's responsibility — note them as advisory but do NOT reject for them. If the coder follows an existing pattern already in the codebase, that is acceptable even if the pattern is imperfect.
210
+
211
+ Check for:
212
+ - **Injection attacks**: User input concatenated directly into SQL strings (instead of parameterized queries), or user input interpolated into shell command strings. String interpolation of hardcoded constants or internal config values is NOT injection.
213
+ - **Shell safety**: When passing user-controlled or external values as arguments to commands, prefer array-based APIs (e.g., Node \`execFileSync(cmd, [args])\`, Python \`subprocess.run([cmd, args])\` without \`shell=True\`). Using \`execSync\` with hardcoded commands, shell features (pipes, chaining), or user-configured hook commands is acceptable.
214
+ - **Path traversal**: File paths from end-user CLI input should be validated to stay within the expected directory. Internally-constructed paths to known locations (\`~/.steroids/\`, temp dirs, config paths) are fine.
215
+ - **Secrets exposure**: No real API keys, tokens, or passwords hardcoded in source. Placeholder/example values, checksums, env var names, and test fixtures are NOT secrets.
216
+ - **Unsafe code execution**: No \`eval()\`, \`new Function()\`, or dynamic code execution on any input. \`JSON.parse\` is safe to use — validate the parsed result before using it in security-sensitive operations (file paths, shell commands, SQL). Simple \`JSON.parse\` with try/catch is acceptable.
217
+ - **Permission escalation**: Do not set overly permissive modes (e.g., 0o777) or disable security controls. Default permissions (0o644 files, 0o755 executables) are acceptable.
218
+ - **Information leakage**: For HTTP/API responses, do not expose stack traces or internal paths. For CLI output, showing file paths and error details is expected and helpful — only ensure credentials are never logged.
219
+ - **Dependency hygiene** (advisory only): If new dependencies are added, list them as a note and suggest alternatives if known. Do NOT reject solely for dependency choice.
220
+
221
+ If you find a genuine vulnerability where an attacker could exploit the NEW code to gain unauthorized access, execute arbitrary code, or exfiltrate data — **REJECT** with a clear explanation and remediation steps. If the coder's notes explain why a flagged pattern is safe in context, evaluate their justification before rejecting. If you are uncertain, describe the concern as a security note rather than rejecting on uncertainty alone.
222
+ ${getTestCoverageInstructions(config, modifiedFiles)}
223
+ ---
224
+
225
+ ## Your Decision
226
+
227
+ You MUST run ONE of these commands to record your decision:
228
+
229
+ ### APPROVE (implementation is correct)
230
+ If the code correctly implements the specification:
231
+ \`\`\`bash
232
+ steroids tasks approve ${task.id} --model codex
233
+ \`\`\`
234
+
235
+ ### APPROVE WITH NOTE (minor issues, not blocking)
236
+ If you have minor concerns but the implementation is acceptable:
237
+ \`\`\`bash
238
+ steroids tasks approve ${task.id} --model codex --notes "Minor: your feedback here"
239
+ \`\`\`
240
+
241
+ ### APPROVE SKIP (external setup required)
242
+ If the coder requested a SKIP and it's legitimate:
243
+ 1. **Verify** the spec section says SKIP, MANUAL, or requires external action
244
+ 2. **Verify** the skip notes explain WHAT human action is needed
245
+ 3. If valid:
246
+ \`\`\`bash
247
+ steroids tasks skip ${task.id} --notes "Verified: spec says SKIP. Human must [action]. Approved to unblock pipeline."
248
+ \`\`\`
249
+
250
+ For **partial** skips (coder did some work, rest is external):
251
+ 1. **Review the code** the coder submitted - it must be correct
252
+ 2. **Verify** the external part truly cannot be automated
253
+ 3. If valid:
254
+ \`\`\`bash
255
+ steroids tasks skip ${task.id} --partial --notes "Code reviewed and correct. External setup verified as manual-only."
256
+ \`\`\`
257
+
258
+ ### REJECT (needs changes)
259
+ If there are issues that must be fixed:
260
+ \`\`\`bash
261
+ steroids tasks reject ${task.id} --model codex --notes "specific feedback for coder"
262
+ \`\`\`
263
+
264
+ **CRITICAL: Format rejection notes with checkboxes for EACH actionable item:**
265
+
266
+ \`\`\`
267
+ - [ ] Fix type error in src/foo.ts:42 - change \`string\` to \`number\`
268
+ - [ ] Add missing null check in src/bar.ts:15 before accessing \`.data\`
269
+ - [ ] Add unit test for the new \`processItem()\` function
270
+ - [ ] Remove unused import on line 3
271
+ \`\`\`
272
+
273
+ **Why checkboxes?** The coder will use these to verify they've addressed EVERY issue before resubmitting. Each checkbox = one specific action.
274
+
275
+ **Rules for rejection notes:**
276
+ 1. One checkbox per actionable item (not paragraphs of prose)
277
+ 2. Include file:line references where applicable
278
+ 3. Be specific about WHAT to change, not just WHAT is wrong
279
+ 4. Group related items logically
280
+
281
+ This will be rejection #${task.rejection_count + 1}.
282
+
283
+ ### DISPUTE (fundamental disagreement)
284
+ Only if there's a genuine specification or architecture conflict:
285
+ \`\`\`bash
286
+ steroids dispute create ${task.id} --reason "explanation" --type reviewer
287
+ \`\`\`
288
+ Use sparingly. Most issues should be resolved via reject/fix cycle.
289
+
290
+ ---
291
+
292
+ ## CRITICAL RULES
293
+
294
+ 1. **NEVER modify code yourself** - only review it
295
+ 2. **Be specific in rejection notes** - vague feedback wastes cycles
296
+ 3. **Approve if it works** - don't reject for style preferences
297
+ 4. **You MUST run one of the commands above** to record your decision
298
+ 5. **Verify coder's claims** - if coder says work exists in a commit, CHECK IT before rejecting
299
+ 6. **Empty diff ≠ no work** - work may exist in earlier commits the coder referenced
300
+ 7. **SKIP requests are valid** - if spec says SKIP/manual, approve the skip to unblock the pipeline
301
+ 8. **Don't reject skips for infrastructure tasks** - Cloud SQL, GKE, etc. truly need human action
302
+
303
+ If you do NOT run a command, the task will remain in review and you will be invoked again.
304
+
305
+ ---
306
+
307
+ ## Feedback Tasks
308
+
309
+ **After making your decision**, create feedback tasks for anything a human should review later. These go to a skipped section and will NOT block the pipeline.
310
+
311
+ Create a feedback task when you notice:
312
+ - A pre-existing security concern in unchanged code
313
+ - A minor design dispute even if you approved
314
+ - Something uncertain that a human should verify
315
+ - A suggestion the coder should consider for a future task
316
+
317
+ \`\`\`bash
318
+ steroids tasks add "Description of the concern" --feedback
319
+ \`\`\`
320
+
321
+ You may create multiple feedback tasks. Do this AFTER your approve/reject/dispute decision, not instead of it.
322
+
323
+ ---
324
+
325
+ ## Review Now
326
+
327
+ Examine the diff above, then run the appropriate command to record your decision.
328
+ `;
329
+ }
330
+ /**
331
+ * Generate the reviewer prompt for a batch of tasks
332
+ */
333
+ function generateBatchReviewerPrompt(context) {
334
+ const { tasks, projectPath, sectionName, gitDiff, modifiedFiles, config } = context;
335
+ // Build task specs for each task
336
+ const taskSpecs = tasks.map((task, index) => {
337
+ const sourceContent = (0, prompt_helpers_js_1.getSourceFileContent)(projectPath, task.source_file);
338
+ return `
339
+ ### Task ${index + 1}: ${task.title}
340
+ **Task ID:** ${task.id}
341
+ **Spec File:** ${task.source_file ?? '(not specified)'}
342
+
343
+ ${sourceContent}
344
+ `;
345
+ }).join('\n---\n');
346
+ // Truncate diff if too long
347
+ let diffContent = gitDiff;
348
+ if (diffContent.length > 30000) {
349
+ diffContent = diffContent.substring(0, 30000) + '\n\n[Diff truncated - review individual commits for full changes]';
350
+ }
351
+ const filesListFormatted = modifiedFiles.length > 0
352
+ ? modifiedFiles.map(f => `- ${f}`).join('\n')
353
+ : 'No files modified';
354
+ const taskIds = tasks.map(t => t.id);
355
+ return `# STEROIDS BATCH REVIEWER TASK
356
+
357
+ You are a REVIEWER reviewing MULTIPLE tasks from section "${sectionName}".
358
+
359
+ **IMPORTANT:** Review all changes as a cohesive unit. The coder implemented all these tasks together.
360
+
361
+ ## Section: ${sectionName}
362
+ **Total Tasks:** ${tasks.length}
363
+ **Project:** ${projectPath}
364
+
365
+ ---
366
+
367
+ ## TASKS BEING REVIEWED
368
+
369
+ ${taskSpecs}
370
+
371
+ ---
372
+
373
+ ## Combined Changes (All Tasks)
374
+
375
+ \`\`\`diff
376
+ ${diffContent}
377
+ \`\`\`
378
+
379
+ ---
380
+
381
+ ## Files Modified
382
+
383
+ ${filesListFormatted}
384
+
385
+ ---
386
+ ${getTestCoverageInstructions(config, modifiedFiles)}
387
+ ## Review Checklist (For Each Task)
388
+
389
+ For EACH task, verify:
390
+ 1. Does the implementation match the specification?
391
+ 2. Are there bugs, security issues, or logic errors?
392
+ 3. Are tests present and adequate (if project requires tests)?
393
+ 4. Does code follow project guidelines?
394
+ 5. Are all files under 500 lines?
395
+
396
+ ---
397
+
398
+ ## YOUR WORKFLOW
399
+
400
+ Review all tasks, then record your decision for EACH one:
401
+
402
+ **For each task that passes review:**
403
+ \`\`\`bash
404
+ steroids tasks approve <task-id> --model codex
405
+ \`\`\`
406
+
407
+ **For each task that needs changes:**
408
+ \`\`\`bash
409
+ steroids tasks reject <task-id> --model codex --notes "- [ ] specific issue 1
410
+ - [ ] specific issue 2"
411
+ \`\`\`
412
+
413
+ **CRITICAL:** You MUST run a command for EACH task. Use checkboxes in rejection notes.
414
+
415
+ ---
416
+
417
+ ## TASK IDS
418
+
419
+ ${taskIds.map((id, i) => `- Task ${i + 1}: ${id}`).join('\n')}
420
+
421
+ ---
422
+
423
+ ## CRITICAL RULES
424
+
425
+ 1. **NEVER modify code yourself** - only review it
426
+ 2. **Review ALL tasks** - don't skip any
427
+ 3. **Be specific in rejection notes** - use checkboxes for each issue
428
+ 4. **Consider tasks as a unit** - they were implemented together
429
+ 5. **You MUST run approve/reject for EACH task**
430
+
431
+ ---
432
+
433
+ ## Review Now
434
+
435
+ Examine the diff, verify each task's specification is met, then run the appropriate commands.
436
+ `;
437
+ }
438
+ //# sourceMappingURL=reviewer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reviewer.js","sourceRoot":"","sources":["../../src/prompts/reviewer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Provider Model Discovery
3
+ * Fetches available models from providers (via CLI or API)
4
+ */
5
+ import { type ProviderStatus } from './registry.js';
6
+ export interface APIModel {
7
+ id: string;
8
+ name: string;
9
+ description?: string;
10
+ contextWindow?: number;
11
+ created?: Date;
12
+ }
13
+ export interface ProviderModel {
14
+ id: string;
15
+ name: string;
16
+ recommendedFor?: ('orchestrator' | 'coder' | 'reviewer')[];
17
+ supportsStreaming?: boolean;
18
+ }
19
+ /**
20
+ * Check if provider CLI is available
21
+ * Uses the provider registry to verify CLI availability
22
+ */
23
+ export declare function checkProviderCLI(provider: 'claude' | 'openai' | 'gemini' | 'codex'): Promise<ProviderStatus>;
24
+ /**
25
+ * Get models for a provider from the registry (CLI-based)
26
+ * Does not require API keys - uses hardcoded model lists from provider implementations
27
+ */
28
+ export declare function getModelsForProvider(provider: 'claude' | 'openai' | 'gemini' | 'codex'): ProviderModel[];
29
+ /**
30
+ * Get the default model for a provider and role
31
+ */
32
+ export declare function getDefaultModel(provider: 'claude' | 'openai' | 'gemini' | 'codex', role: 'orchestrator' | 'coder' | 'reviewer'): string | undefined;
33
+ export interface FetchModelsResult {
34
+ success: boolean;
35
+ models: APIModel[];
36
+ error?: string;
37
+ }
38
+ /**
39
+ * Fetch models from Anthropic API
40
+ * Uses ANTHROPIC_API_KEY environment variable
41
+ */
42
+ export declare function fetchClaudeModels(): Promise<FetchModelsResult>;
43
+ /**
44
+ * Fetch models from OpenAI API
45
+ * Uses OPENAI_API_KEY environment variable
46
+ */
47
+ export declare function fetchOpenAIModels(): Promise<FetchModelsResult>;
48
+ /**
49
+ * Fetch models from Google AI (Gemini) API
50
+ * Uses GOOGLE_API_KEY or GEMINI_API_KEY environment variable
51
+ */
52
+ export declare function fetchGeminiModels(): Promise<FetchModelsResult>;
53
+ /**
54
+ * Fetch models for a specific provider
55
+ */
56
+ export declare function fetchModelsForProvider(provider: 'claude' | 'openai' | 'gemini'): Promise<FetchModelsResult>;
57
+ /**
58
+ * Get the environment variable name for a provider's API key
59
+ */
60
+ export declare function getApiKeyEnvVar(provider: 'claude' | 'openai' | 'gemini'): string;
61
+ /**
62
+ * Check if API key is set for a provider
63
+ */
64
+ export declare function hasApiKey(provider: 'claude' | 'openai' | 'gemini'): boolean;
65
+ //# sourceMappingURL=api-models.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-models.d.ts","sourceRoot":"","sources":["../../src/providers/api-models.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAuB,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAGzE,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,IAAI,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,CAAC,cAAc,GAAG,OAAO,GAAG,UAAU,CAAC,EAAE,CAAC;IAC3D,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GACjD,OAAO,CAAC,cAAc,CAAC,CAqBzB;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GACjD,aAAa,EAAE,CAejB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,EAClD,IAAI,EAAE,cAAc,GAAG,OAAO,GAAG,UAAU,GAC1C,MAAM,GAAG,SAAS,CAIpB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,QAAQ,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,iBAAiB,CAAC,CA4DpE;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAoEpE;AAsBD;;;GAGG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,iBAAiB,CAAC,CA2EpE;AASD;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GACvC,OAAO,CAAC,iBAAiB,CAAC,CAe5B;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAShF;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAS3E"}