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,35 @@
1
+ /**
2
+ * SQLite database connection management
3
+ * Uses better-sqlite3 for synchronous operations with WAL mode
4
+ */
5
+ import Database from 'better-sqlite3';
6
+ export interface DatabaseConnection {
7
+ db: Database.Database;
8
+ close: () => void;
9
+ }
10
+ /**
11
+ * Get the path to the steroids database
12
+ */
13
+ export declare function getDbPath(projectPath?: string): string;
14
+ /**
15
+ * Check if steroids is initialized in the given directory
16
+ */
17
+ export declare function isInitialized(projectPath?: string): boolean;
18
+ /**
19
+ * Initialize the database with schema
20
+ */
21
+ export declare function initDatabase(projectPath?: string): DatabaseConnection;
22
+ /**
23
+ * Open an existing database connection
24
+ * Automatically applies pending migrations if any are found
25
+ */
26
+ export declare function openDatabase(projectPath?: string): DatabaseConnection;
27
+ /**
28
+ * Get schema version from database
29
+ */
30
+ export declare function getSchemaVersion(db: Database.Database): string | null;
31
+ /**
32
+ * Check if database schema is current
33
+ */
34
+ export declare function isSchemaUpToDate(db: Database.Database): boolean;
35
+ //# sourceMappingURL=connection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/database/connection.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAStC,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,QAAQ,CAAC,QAAQ,CAAC;IACtB,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAGtD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAE3D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,kBAAkB,CAwBrE;AAyCD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,kBAAkB,CAoCrE;AAsED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,MAAM,GAAG,IAAI,CASrE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,OAAO,CAG/D"}
@@ -0,0 +1,208 @@
1
+ "use strict";
2
+ /**
3
+ * SQLite database connection management
4
+ * Uses better-sqlite3 for synchronous operations with WAL mode
5
+ */
6
+ var __importDefault = (this && this.__importDefault) || function (mod) {
7
+ return (mod && mod.__esModule) ? mod : { "default": mod };
8
+ };
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.getDbPath = getDbPath;
11
+ exports.isInitialized = isInitialized;
12
+ exports.initDatabase = initDatabase;
13
+ exports.openDatabase = openDatabase;
14
+ exports.getSchemaVersion = getSchemaVersion;
15
+ exports.isSchemaUpToDate = isSchemaUpToDate;
16
+ const better_sqlite3_1 = __importDefault(require("better-sqlite3"));
17
+ const node_fs_1 = require("node:fs");
18
+ const node_path_1 = require("node:path");
19
+ const schema_js_1 = require("./schema.js");
20
+ const runner_js_1 = require("../migrations/runner.js");
21
+ const STEROIDS_DIR = '.steroids';
22
+ const DB_NAME = 'steroids.db';
23
+ /**
24
+ * Get the path to the steroids database
25
+ */
26
+ function getDbPath(projectPath) {
27
+ const basePath = projectPath || process.cwd();
28
+ return (0, node_path_1.join)(basePath, STEROIDS_DIR, DB_NAME);
29
+ }
30
+ /**
31
+ * Check if steroids is initialized in the given directory
32
+ */
33
+ function isInitialized(projectPath) {
34
+ return (0, node_fs_1.existsSync)(getDbPath(projectPath));
35
+ }
36
+ /**
37
+ * Initialize the database with schema
38
+ */
39
+ function initDatabase(projectPath) {
40
+ const dbPath = getDbPath(projectPath);
41
+ const steroidsDir = (0, node_path_1.dirname)(dbPath);
42
+ // Create .steroids directory if it doesn't exist
43
+ if (!(0, node_fs_1.existsSync)(steroidsDir)) {
44
+ (0, node_fs_1.mkdirSync)(steroidsDir, { recursive: true });
45
+ }
46
+ const db = new better_sqlite3_1.default(dbPath);
47
+ // Configure SQLite for optimal performance and safety
48
+ db.pragma('journal_mode = WAL');
49
+ db.pragma('busy_timeout = 5000');
50
+ db.pragma('foreign_keys = ON');
51
+ // Create schema
52
+ db.exec(schema_js_1.SCHEMA_SQL);
53
+ db.exec(schema_js_1.INITIAL_SCHEMA_DATA);
54
+ return {
55
+ db,
56
+ close: () => db.close(),
57
+ };
58
+ }
59
+ /**
60
+ * Check if an error is a schema mismatch (missing column/table)
61
+ */
62
+ function isSchemaMismatchError(err) {
63
+ if (!(err instanceof Error))
64
+ return false;
65
+ const msg = err.message.toLowerCase();
66
+ return (msg.includes('has no column named') ||
67
+ msg.includes('no such column') ||
68
+ msg.includes('no such table'));
69
+ }
70
+ /**
71
+ * Format a helpful error message for schema mismatches
72
+ */
73
+ function formatMigrationHint(originalError, migrationResult) {
74
+ const lines = [
75
+ `Database schema is out of date: ${originalError.message}`,
76
+ '',
77
+ 'Your database is missing columns or tables added in a newer version of Steroids.',
78
+ ];
79
+ if (migrationResult) {
80
+ lines.push(`Auto-migration failed: ${migrationResult}`);
81
+ }
82
+ lines.push('', 'To fix this, run:', '', ' STEROIDS_AUTO_MIGRATE=1 steroids health', '', 'Or set STEROIDS_AUTO_MIGRATE=1 in your environment to migrate automatically.');
83
+ return lines.join('\n');
84
+ }
85
+ /**
86
+ * Open an existing database connection
87
+ * Automatically applies pending migrations if any are found
88
+ */
89
+ function openDatabase(projectPath) {
90
+ const dbPath = getDbPath(projectPath);
91
+ if (!(0, node_fs_1.existsSync)(dbPath)) {
92
+ throw new Error(`Steroids not initialized. Run 'steroids init' first.\nExpected database at: ${dbPath}`);
93
+ }
94
+ const db = new better_sqlite3_1.default(dbPath);
95
+ // Configure SQLite
96
+ db.pragma('journal_mode = WAL');
97
+ db.pragma('busy_timeout = 5000');
98
+ db.pragma('foreign_keys = ON');
99
+ // Always attempt auto-migration for pending migrations
100
+ try {
101
+ const result = (0, runner_js_1.autoMigrate)(db, dbPath);
102
+ if (result.applied && result.migrations.length > 0) {
103
+ console.log(`Auto-migrated database: ${result.migrations.join(', ')}`);
104
+ }
105
+ if (result.error) {
106
+ console.error(`Warning: Migration issue: ${result.error}`);
107
+ }
108
+ }
109
+ catch (err) {
110
+ // Log but don't fail - the DB may still work if no new columns are needed
111
+ const msg = err instanceof Error ? err.message : String(err);
112
+ console.warn(`Warning: Could not check migrations: ${msg}`);
113
+ }
114
+ // Wrap the database with schema error interception
115
+ return {
116
+ db: wrapWithSchemaErrorHandling(db),
117
+ close: () => db.close(),
118
+ };
119
+ }
120
+ /**
121
+ * Wrap a database instance to intercept schema mismatch errors
122
+ * and provide helpful migration instructions instead of raw SQLite errors
123
+ */
124
+ function wrapWithSchemaErrorHandling(db) {
125
+ const originalPrepare = db.prepare.bind(db);
126
+ db.prepare = function wrappedPrepare(sql) {
127
+ try {
128
+ const stmt = originalPrepare(sql);
129
+ return wrapStatement(stmt);
130
+ }
131
+ catch (err) {
132
+ if (isSchemaMismatchError(err)) {
133
+ const hint = formatMigrationHint(err);
134
+ const wrapped = new Error(hint);
135
+ wrapped.name = 'MigrationRequired';
136
+ throw wrapped;
137
+ }
138
+ throw err;
139
+ }
140
+ };
141
+ // Also wrap db.exec for raw SQL execution
142
+ const originalExec = db.exec.bind(db);
143
+ db.exec = function wrappedExec(sql) {
144
+ try {
145
+ return originalExec(sql);
146
+ }
147
+ catch (err) {
148
+ if (isSchemaMismatchError(err)) {
149
+ const hint = formatMigrationHint(err);
150
+ const wrapped = new Error(hint);
151
+ wrapped.name = 'MigrationRequired';
152
+ throw wrapped;
153
+ }
154
+ throw err;
155
+ }
156
+ };
157
+ return db;
158
+ }
159
+ /**
160
+ * Wrap a prepared statement to intercept schema errors at execution time
161
+ */
162
+ function wrapStatement(stmt) {
163
+ const wrapMethod = (fn) => {
164
+ return ((...args) => {
165
+ try {
166
+ return fn.apply(stmt, args);
167
+ }
168
+ catch (err) {
169
+ if (isSchemaMismatchError(err)) {
170
+ const hint = formatMigrationHint(err);
171
+ const wrapped = new Error(hint);
172
+ wrapped.name = 'MigrationRequired';
173
+ throw wrapped;
174
+ }
175
+ throw err;
176
+ }
177
+ });
178
+ };
179
+ if (stmt.run)
180
+ stmt.run = wrapMethod(stmt.run.bind(stmt));
181
+ if (stmt.get)
182
+ stmt.get = wrapMethod(stmt.get.bind(stmt));
183
+ if (stmt.all)
184
+ stmt.all = wrapMethod(stmt.all.bind(stmt));
185
+ return stmt;
186
+ }
187
+ /**
188
+ * Get schema version from database
189
+ */
190
+ function getSchemaVersion(db) {
191
+ try {
192
+ const row = db
193
+ .prepare('SELECT value FROM _schema WHERE key = ?')
194
+ .get('version');
195
+ return row?.value ?? null;
196
+ }
197
+ catch {
198
+ return null;
199
+ }
200
+ }
201
+ /**
202
+ * Check if database schema is current
203
+ */
204
+ function isSchemaUpToDate(db) {
205
+ const version = getSchemaVersion(db);
206
+ return version === schema_js_1.SCHEMA_VERSION;
207
+ }
208
+ //# sourceMappingURL=connection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/database/connection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,218 @@
1
+ /**
2
+ * Database query functions for tasks, sections, and audit
3
+ */
4
+ import type Database from 'better-sqlite3';
5
+ export type TaskStatus = 'pending' | 'in_progress' | 'review' | 'completed' | 'disputed' | 'failed' | 'skipped' | 'partial';
6
+ export declare const STATUS_MARKERS: Record<TaskStatus, string>;
7
+ export interface Task {
8
+ id: string;
9
+ title: string;
10
+ status: TaskStatus;
11
+ section_id: string | null;
12
+ source_file: string | null;
13
+ file_path: string | null;
14
+ file_line: number | null;
15
+ file_commit_sha: string | null;
16
+ file_content_hash: string | null;
17
+ rejection_count: number;
18
+ created_at: string;
19
+ updated_at: string;
20
+ }
21
+ export interface Section {
22
+ id: string;
23
+ name: string;
24
+ position: number;
25
+ priority?: number;
26
+ skipped?: number;
27
+ created_at: string;
28
+ }
29
+ export interface SectionDependency {
30
+ id: string;
31
+ section_id: string;
32
+ depends_on_section_id: string;
33
+ created_at: string;
34
+ }
35
+ export interface AuditEntry {
36
+ id: number;
37
+ task_id: string;
38
+ from_status: string | null;
39
+ to_status: string;
40
+ actor: string;
41
+ notes: string | null;
42
+ commit_sha: string | null;
43
+ created_at: string;
44
+ }
45
+ export interface RejectionEntry {
46
+ rejection_number: number;
47
+ commit_sha: string | null;
48
+ notes: string | null;
49
+ actor: string;
50
+ created_at: string;
51
+ }
52
+ export declare function createSection(db: Database.Database, name: string, position?: number): Section;
53
+ export declare function listSections(db: Database.Database): Section[];
54
+ export declare function getSection(db: Database.Database, id: string): Section | null;
55
+ export declare function getSectionByName(db: Database.Database, name: string): Section | null;
56
+ export declare function getOrCreateFeedbackSection(db: Database.Database): Section;
57
+ export declare function getSectionTaskCount(db: Database.Database, sectionId: string): number;
58
+ /**
59
+ * Get dependencies for a section that have incomplete tasks
60
+ * Returns sections that the given section depends on and have any non-completed tasks
61
+ * (pending, in_progress, review, disputed, failed, skipped, partial)
62
+ */
63
+ export declare function getPendingDependencies(db: Database.Database, sectionId: string): Section[];
64
+ /**
65
+ * Check if all dependencies for a section are met
66
+ * Dependencies are considered met when all tasks in dependent sections are completed
67
+ */
68
+ export declare function hasDependenciesMet(db: Database.Database, sectionId: string): boolean;
69
+ /**
70
+ * Set the priority of a section
71
+ * Priority range: 0 (highest) to 100 (lowest), default is 50
72
+ */
73
+ export declare function setSectionPriority(db: Database.Database, sectionId: string, priority: number): void;
74
+ /**
75
+ * Check if adding a dependency would create a circular dependency
76
+ * Returns true if circular dependency would be created
77
+ */
78
+ export declare function wouldCreateCircularDependency(db: Database.Database, sectionId: string, dependsOnSectionId: string): boolean;
79
+ /**
80
+ * Add a dependency between sections
81
+ * Makes sectionId depend on dependsOnSectionId
82
+ */
83
+ export declare function addSectionDependency(db: Database.Database, sectionId: string, dependsOnSectionId: string): SectionDependency;
84
+ /**
85
+ * Remove a dependency between sections
86
+ */
87
+ export declare function removeSectionDependency(db: Database.Database, sectionId: string, dependsOnSectionId: string): void;
88
+ /**
89
+ * Get all dependencies for a section
90
+ */
91
+ export declare function getSectionDependencies(db: Database.Database, sectionId: string): Section[];
92
+ /**
93
+ * Get all sections that depend on a given section
94
+ */
95
+ export declare function getSectionDependents(db: Database.Database, sectionId: string): Section[];
96
+ export declare function createTask(db: Database.Database, title: string, options?: {
97
+ sectionId?: string;
98
+ sourceFile?: string;
99
+ status?: TaskStatus;
100
+ filePath?: string;
101
+ fileLine?: number;
102
+ fileCommitSha?: string;
103
+ fileContentHash?: string;
104
+ }): Task;
105
+ export declare function getTask(db: Database.Database, id: string): Task | null;
106
+ export declare function getTaskByTitle(db: Database.Database, title: string): Task | null;
107
+ export declare function listTasks(db: Database.Database, options?: {
108
+ status?: TaskStatus | 'all';
109
+ sectionId?: string;
110
+ search?: string;
111
+ }): Task[];
112
+ export declare function updateTaskStatus(db: Database.Database, taskId: string, newStatus: TaskStatus, actor: string, notes?: string, commitSha?: string): void;
113
+ /**
114
+ * Reset rejection count to 0 (keeps audit history)
115
+ * Use when manually restarting a task after spec changes
116
+ */
117
+ export declare function resetRejectionCount(db: Database.Database, taskId: string, actor: string, notes?: string): number;
118
+ export declare function approveTask(db: Database.Database, taskId: string, model: string, notes?: string, commitSha?: string): void;
119
+ export declare function rejectTask(db: Database.Database, taskId: string, model: string, notes?: string, commitSha?: string): {
120
+ status: 'retry' | 'failed';
121
+ rejectionCount: number;
122
+ };
123
+ export interface AuditOptions {
124
+ notes?: string;
125
+ commitSha?: string;
126
+ actorType?: 'human' | 'coder' | 'reviewer' | 'orchestrator';
127
+ model?: string;
128
+ }
129
+ export declare function addAuditEntry(db: Database.Database, taskId: string, fromStatus: string | null, toStatus: string, actor: string, options?: AuditOptions | string, commitSha?: string): void;
130
+ export declare function getTaskAudit(db: Database.Database, taskId: string): AuditEntry[];
131
+ /**
132
+ * Get rejection history for a task
133
+ * Returns entries where a review was rejected (review -> in_progress)
134
+ * Includes commit hash for easy reference
135
+ */
136
+ export declare function getTaskRejections(db: Database.Database, taskId: string): RejectionEntry[];
137
+ /**
138
+ * Get the latest submission notes (when coder submitted for review)
139
+ * This captures any notes the coder included with --notes flag
140
+ */
141
+ export declare function getLatestSubmissionNotes(db: Database.Database, taskId: string): string | null;
142
+ export declare function createSystemDisputeForRejection(db: Database.Database, taskId: string, reason: string): string;
143
+ export declare function findNextTask(db: Database.Database, sectionId?: string): {
144
+ task: Task | null;
145
+ action: 'review' | 'resume' | 'start' | 'idle';
146
+ };
147
+ /**
148
+ * Get the last rejection notes for a task
149
+ */
150
+ export declare function getLastRejectionNotes(db: Database.Database, taskId: string): string | null;
151
+ /**
152
+ * Get task counts by status for project stats
153
+ * Used by runner heartbeat to update global database
154
+ */
155
+ export declare function getTaskCountsByStatus(db: Database.Database): {
156
+ pending: number;
157
+ in_progress: number;
158
+ review: number;
159
+ completed: number;
160
+ };
161
+ export interface TaskInvocation {
162
+ id: number;
163
+ task_id: string;
164
+ role: 'coder' | 'reviewer';
165
+ provider: string;
166
+ model: string;
167
+ prompt: string;
168
+ response: string | null;
169
+ error: string | null;
170
+ exit_code: number;
171
+ duration_ms: number;
172
+ success: number;
173
+ timed_out: number;
174
+ rejection_number: number | null;
175
+ created_at: string;
176
+ }
177
+ export interface CreateInvocationParams {
178
+ taskId: string;
179
+ role: 'coder' | 'reviewer';
180
+ provider: string;
181
+ model: string;
182
+ prompt: string;
183
+ response?: string;
184
+ error?: string;
185
+ exitCode: number;
186
+ durationMs: number;
187
+ success: boolean;
188
+ timedOut: boolean;
189
+ rejectionNumber?: number;
190
+ }
191
+ /**
192
+ * Log an LLM invocation for a task
193
+ * This stores the full prompt and response for debugging
194
+ */
195
+ export declare function createTaskInvocation(db: Database.Database, params: CreateInvocationParams): number;
196
+ /**
197
+ * Get all invocations for a task
198
+ * Ordered by creation time (oldest first)
199
+ */
200
+ export declare function getTaskInvocations(db: Database.Database, taskId: string): TaskInvocation[];
201
+ /**
202
+ * Get recent invocations for a task (limited)
203
+ * Ordered by creation time (newest first)
204
+ */
205
+ export declare function getRecentTaskInvocations(db: Database.Database, taskId: string, limit?: number): TaskInvocation[];
206
+ /**
207
+ * Get the latest invocation for a specific role
208
+ */
209
+ export declare function getLatestInvocation(db: Database.Database, taskId: string, role: 'coder' | 'reviewer'): TaskInvocation | null;
210
+ /**
211
+ * Get invocation count for a task
212
+ */
213
+ export declare function getInvocationCount(db: Database.Database, taskId: string): {
214
+ coder: number;
215
+ reviewer: number;
216
+ total: number;
217
+ };
218
+ //# sourceMappingURL=queries.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../src/database/queries.ts"],"names":[],"mappings":"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"}