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,282 @@
1
+ "use strict";
2
+ /**
3
+ * Sections subcommand implementations
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.addSection = addSection;
7
+ exports.setPriority = setPriority;
8
+ exports.addDependency = addDependency;
9
+ exports.removeDependency = removeDependency;
10
+ const node_util_1 = require("node:util");
11
+ const connection_js_1 = require("../database/connection.js");
12
+ const queries_js_1 = require("../database/queries.js");
13
+ const output_js_1 = require("../cli/output.js");
14
+ const errors_js_1 = require("../cli/errors.js");
15
+ async function addSection(args, flags) {
16
+ const out = (0, output_js_1.createOutput)({ command: 'sections', subcommand: 'add', flags });
17
+ const { values, positionals } = (0, node_util_1.parseArgs)({
18
+ args,
19
+ options: {
20
+ position: { type: 'string', short: 'p' },
21
+ },
22
+ allowPositionals: true,
23
+ });
24
+ if (flags.help) {
25
+ out.log(`
26
+ steroids sections add <name> - Add a new section
27
+
28
+ USAGE:
29
+ steroids sections add <name> [options]
30
+
31
+ OPTIONS:
32
+ -p, --position <n> Position in list (default: end)
33
+
34
+ GLOBAL OPTIONS:
35
+ -j, --json Output as JSON
36
+ -h, --help Show help
37
+ `);
38
+ return;
39
+ }
40
+ if (positionals.length === 0) {
41
+ throw (0, errors_js_1.invalidArgumentsError)('Section name required');
42
+ }
43
+ const name = positionals.join(' ');
44
+ const position = values.position ? parseInt(values.position, 10) : undefined;
45
+ if (flags.dryRun) {
46
+ out.log(`Would create section: ${name}`);
47
+ if (position !== undefined) {
48
+ out.log(` Position: ${position}`);
49
+ }
50
+ return;
51
+ }
52
+ const { db, close } = (0, connection_js_1.openDatabase)();
53
+ try {
54
+ const section = (0, queries_js_1.createSection)(db, name, position);
55
+ if (flags.json) {
56
+ out.success({
57
+ section: {
58
+ id: section.id,
59
+ name: section.name,
60
+ position: section.position,
61
+ priority: section.priority,
62
+ created_at: section.created_at,
63
+ },
64
+ });
65
+ }
66
+ else {
67
+ out.log(`Section created: ${section.name}`);
68
+ out.log(` ID: ${section.id}`);
69
+ out.log(` Position: ${section.position}`);
70
+ }
71
+ }
72
+ finally {
73
+ close();
74
+ }
75
+ }
76
+ async function setPriority(args, flags) {
77
+ const out = (0, output_js_1.createOutput)({ command: 'sections', subcommand: 'priority', flags });
78
+ const { values, positionals } = (0, node_util_1.parseArgs)({
79
+ args,
80
+ options: {},
81
+ allowPositionals: true,
82
+ });
83
+ if (flags.help) {
84
+ out.log(`
85
+ steroids sections priority <section-id> <priority> - Set section priority
86
+
87
+ USAGE:
88
+ steroids sections priority <section-id> <priority>
89
+
90
+ ARGUMENTS:
91
+ section-id Section ID or prefix (min 4 chars)
92
+ priority Priority value (0-100) or preset (high=10, medium=50, low=90)
93
+
94
+ GLOBAL OPTIONS:
95
+ -j, --json Output as JSON
96
+ -h, --help Show help
97
+
98
+ EXAMPLES:
99
+ steroids sections priority abc123 high
100
+ steroids sections priority abc123 25
101
+ steroids sections priority abc123 low
102
+ `);
103
+ return;
104
+ }
105
+ if (positionals.length < 2) {
106
+ throw (0, errors_js_1.invalidArgumentsError)('Section ID and priority required');
107
+ }
108
+ const [sectionIdInput, priorityInput] = positionals;
109
+ // Parse priority
110
+ let priority;
111
+ if (priorityInput === 'high') {
112
+ priority = 10;
113
+ }
114
+ else if (priorityInput === 'medium') {
115
+ priority = 50;
116
+ }
117
+ else if (priorityInput === 'low') {
118
+ priority = 90;
119
+ }
120
+ else {
121
+ priority = parseInt(priorityInput, 10);
122
+ if (isNaN(priority) || priority < 0 || priority > 100) {
123
+ throw (0, errors_js_1.invalidArgumentsError)('Priority must be 0-100 or high/medium/low');
124
+ }
125
+ }
126
+ if (flags.dryRun) {
127
+ out.log(`Would set priority to ${priority} for section: ${sectionIdInput}`);
128
+ return;
129
+ }
130
+ const { db, close } = (0, connection_js_1.openDatabase)();
131
+ try {
132
+ const section = (0, queries_js_1.getSection)(db, sectionIdInput);
133
+ if (!section) {
134
+ throw (0, errors_js_1.sectionNotFoundError)(sectionIdInput);
135
+ }
136
+ (0, queries_js_1.setSectionPriority)(db, section.id, priority);
137
+ if (flags.json) {
138
+ out.success({
139
+ section: {
140
+ id: section.id,
141
+ name: section.name,
142
+ priority,
143
+ },
144
+ });
145
+ }
146
+ else {
147
+ out.log(`Priority set to ${priority} for section: ${section.name}`);
148
+ }
149
+ }
150
+ finally {
151
+ close();
152
+ }
153
+ }
154
+ async function addDependency(args, flags) {
155
+ const out = (0, output_js_1.createOutput)({ command: 'sections', subcommand: 'depends-on', flags });
156
+ const { values, positionals } = (0, node_util_1.parseArgs)({
157
+ args,
158
+ options: {},
159
+ allowPositionals: true,
160
+ });
161
+ if (flags.help) {
162
+ out.log(`
163
+ steroids sections depends-on <section-id> <depends-on-id> - Add section dependency
164
+
165
+ USAGE:
166
+ steroids sections depends-on <section-id> <depends-on-id>
167
+
168
+ ARGUMENTS:
169
+ section-id The section that depends on another
170
+ depends-on-id The section that must be completed first
171
+
172
+ GLOBAL OPTIONS:
173
+ -j, --json Output as JSON
174
+ -h, --help Show help
175
+
176
+ EXAMPLES:
177
+ steroids sections depends-on abc123 def456
178
+ `);
179
+ return;
180
+ }
181
+ if (positionals.length < 2) {
182
+ throw (0, errors_js_1.invalidArgumentsError)('Both section IDs required');
183
+ }
184
+ const [sectionIdInput, dependsOnIdInput] = positionals;
185
+ if (flags.dryRun) {
186
+ out.log(`Would add dependency: ${sectionIdInput} depends on ${dependsOnIdInput}`);
187
+ return;
188
+ }
189
+ const { db, close } = (0, connection_js_1.openDatabase)();
190
+ try {
191
+ const section = (0, queries_js_1.getSection)(db, sectionIdInput);
192
+ if (!section) {
193
+ throw (0, errors_js_1.sectionNotFoundError)(sectionIdInput);
194
+ }
195
+ const dependsOnSection = (0, queries_js_1.getSection)(db, dependsOnIdInput);
196
+ if (!dependsOnSection) {
197
+ throw (0, errors_js_1.sectionNotFoundError)(dependsOnIdInput);
198
+ }
199
+ const dependency = (0, queries_js_1.addSectionDependency)(db, section.id, dependsOnSection.id);
200
+ if (flags.json) {
201
+ out.success({
202
+ dependency: {
203
+ section_id: dependency.section_id,
204
+ depends_on_section_id: dependency.depends_on_section_id,
205
+ section_name: section.name,
206
+ depends_on_name: dependsOnSection.name,
207
+ },
208
+ });
209
+ }
210
+ else {
211
+ out.log(`Dependency added: ${section.name} depends on ${dependsOnSection.name}`);
212
+ }
213
+ }
214
+ finally {
215
+ close();
216
+ }
217
+ }
218
+ async function removeDependency(args, flags) {
219
+ const out = (0, output_js_1.createOutput)({ command: 'sections', subcommand: 'no-depends-on', flags });
220
+ const { values, positionals } = (0, node_util_1.parseArgs)({
221
+ args,
222
+ options: {},
223
+ allowPositionals: true,
224
+ });
225
+ if (flags.help) {
226
+ out.log(`
227
+ steroids sections no-depends-on <section-id> <depends-on-id> - Remove section dependency
228
+
229
+ USAGE:
230
+ steroids sections no-depends-on <section-id> <depends-on-id>
231
+
232
+ ARGUMENTS:
233
+ section-id The dependent section
234
+ depends-on-id The dependency to remove
235
+
236
+ GLOBAL OPTIONS:
237
+ -j, --json Output as JSON
238
+ -h, --help Show help
239
+
240
+ EXAMPLES:
241
+ steroids sections no-depends-on abc123 def456
242
+ `);
243
+ return;
244
+ }
245
+ if (positionals.length < 2) {
246
+ throw (0, errors_js_1.invalidArgumentsError)('Both section IDs required');
247
+ }
248
+ const [sectionIdInput, dependsOnIdInput] = positionals;
249
+ if (flags.dryRun) {
250
+ out.log(`Would remove dependency: ${sectionIdInput} no longer depends on ${dependsOnIdInput}`);
251
+ return;
252
+ }
253
+ const { db, close } = (0, connection_js_1.openDatabase)();
254
+ try {
255
+ const section = (0, queries_js_1.getSection)(db, sectionIdInput);
256
+ if (!section) {
257
+ throw (0, errors_js_1.sectionNotFoundError)(sectionIdInput);
258
+ }
259
+ const dependsOnSection = (0, queries_js_1.getSection)(db, dependsOnIdInput);
260
+ if (!dependsOnSection) {
261
+ throw (0, errors_js_1.sectionNotFoundError)(dependsOnIdInput);
262
+ }
263
+ (0, queries_js_1.removeSectionDependency)(db, section.id, dependsOnSection.id);
264
+ if (flags.json) {
265
+ out.success({
266
+ removed: {
267
+ section_id: section.id,
268
+ depends_on_section_id: dependsOnSection.id,
269
+ section_name: section.name,
270
+ depends_on_name: dependsOnSection.name,
271
+ },
272
+ });
273
+ }
274
+ else {
275
+ out.log(`Dependency removed: ${section.name} no longer depends on ${dependsOnSection.name}`);
276
+ }
277
+ }
278
+ finally {
279
+ close();
280
+ }
281
+ }
282
+ //# sourceMappingURL=sections-commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sections-commands.js","sourceRoot":"","sources":["../../src/commands/sections-commands.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Graph generation helpers for sections command
3
+ */
4
+ export interface SectionWithDeps {
5
+ section: {
6
+ id: string;
7
+ name: string;
8
+ priority?: number;
9
+ };
10
+ dependencies: Array<{
11
+ id: string;
12
+ }>;
13
+ pendingDeps: any[];
14
+ tasks: Array<{
15
+ id: string;
16
+ title: string;
17
+ status: string;
18
+ rejection_count: number;
19
+ }>;
20
+ }
21
+ export declare function generateMermaidSyntax(sectionsWithDeps: SectionWithDeps[], includeTasks: boolean): string;
22
+ export declare function isMmdcInstalled(): boolean;
23
+ export declare function installMmdc(): Promise<boolean>;
24
+ export declare function generateImageFromMermaid(mermaidSyntax: string, format: string, autoOpen: boolean): Promise<void>;
25
+ //# sourceMappingURL=sections-graph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sections-graph.d.ts","sourceRoot":"","sources":["../../src/commands/sections-graph.ts"],"names":[],"mappings":"AAAA;;GAEG;AAUH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE;QACP,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,YAAY,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpC,WAAW,EAAE,GAAG,EAAE,CAAC;IACnB,KAAK,EAAE,KAAK,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC,CAAC;CACJ;AAGD,wBAAgB,qBAAqB,CACnC,gBAAgB,EAAE,eAAe,EAAE,EACnC,YAAY,EAAE,OAAO,GACpB,MAAM,CAgER;AAGD,wBAAgB,eAAe,IAAI,OAAO,CAOzC;AAGD,wBAAsB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CA4BpD;AAkBD,wBAAsB,wBAAwB,CAC5C,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,OAAO,GAChB,OAAO,CAAC,IAAI,CAAC,CAyDf"}
@@ -0,0 +1,180 @@
1
+ "use strict";
2
+ /**
3
+ * Graph generation helpers for sections command
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.generateMermaidSyntax = generateMermaidSyntax;
7
+ exports.isMmdcInstalled = isMmdcInstalled;
8
+ exports.installMmdc = installMmdc;
9
+ exports.generateImageFromMermaid = generateImageFromMermaid;
10
+ const node_os_1 = require("node:os");
11
+ const node_fs_1 = require("node:fs");
12
+ const node_path_1 = require("node:path");
13
+ const node_child_process_1 = require("node:child_process");
14
+ const node_readline_1 = require("node:readline");
15
+ const queries_js_1 = require("../database/queries.js");
16
+ const interactive_js_1 = require("../cli/interactive.js");
17
+ // Generate Mermaid flowchart syntax
18
+ function generateMermaidSyntax(sectionsWithDeps, includeTasks) {
19
+ let mermaid = 'graph TD\n';
20
+ const nodeIds = new Map();
21
+ const taskNodes = [];
22
+ // Generate node IDs
23
+ sectionsWithDeps.forEach((item, idx) => {
24
+ nodeIds.set(item.section.id, `S${idx}`);
25
+ });
26
+ // Generate section nodes and task subgraphs
27
+ sectionsWithDeps.forEach((item) => {
28
+ const nodeId = nodeIds.get(item.section.id);
29
+ const priority = item.section.priority ?? 50;
30
+ const blocked = item.pendingDeps.length > 0 ? ' [BLOCKED]' : '';
31
+ if (includeTasks && item.tasks.length > 0) {
32
+ // Create subgraph for section with tasks
33
+ mermaid += ` subgraph ${nodeId}["${item.section.name} (priority: ${priority})${blocked}"]\n`;
34
+ item.tasks.forEach((task, idx) => {
35
+ const taskId = `${nodeId}_T${idx}`;
36
+ const marker = queries_js_1.STATUS_MARKERS[task.status] || '[ ]';
37
+ const rejections = task.rejection_count > 0 ? ` (${task.rejection_count})` : '';
38
+ mermaid += ` ${taskId}["${marker} ${task.title}${rejections}"]\n`;
39
+ // Track task nodes for styling
40
+ taskNodes.push({ id: taskId, status: task.status });
41
+ });
42
+ mermaid += ' end\n';
43
+ }
44
+ else {
45
+ // Simple section node
46
+ mermaid += ` ${nodeId}["${item.section.name} (priority: ${priority})${blocked}"]\n`;
47
+ }
48
+ });
49
+ // Generate dependency arrows
50
+ sectionsWithDeps.forEach((item) => {
51
+ const nodeId = nodeIds.get(item.section.id);
52
+ item.dependencies.forEach((dep) => {
53
+ const depNodeId = nodeIds.get(dep.id);
54
+ if (depNodeId) {
55
+ mermaid += ` ${depNodeId} --> ${nodeId}\n`;
56
+ }
57
+ });
58
+ });
59
+ // Add class definitions for task status colors
60
+ if (includeTasks && taskNodes.length > 0) {
61
+ mermaid += '\n';
62
+ mermaid += ' classDef pending fill:#9ca3af,stroke:#6b7280,color:#000\n';
63
+ mermaid += ' classDef in_progress fill:#3b82f6,stroke:#2563eb,color:#fff\n';
64
+ mermaid += ' classDef review fill:#eab308,stroke:#ca8a04,color:#000\n';
65
+ mermaid += ' classDef completed fill:#22c55e,stroke:#16a34a,color:#fff\n';
66
+ mermaid += ' classDef disputed fill:#f97316,stroke:#ea580c,color:#fff\n';
67
+ mermaid += ' classDef failed fill:#ef4444,stroke:#dc2626,color:#fff\n';
68
+ mermaid += '\n';
69
+ // Apply classes to task nodes
70
+ taskNodes.forEach(({ id, status }) => {
71
+ mermaid += ` class ${id} ${status}\n`;
72
+ });
73
+ }
74
+ return mermaid;
75
+ }
76
+ // Check if mmdc is installed
77
+ function isMmdcInstalled() {
78
+ try {
79
+ (0, node_child_process_1.execSync)('which mmdc', { stdio: 'pipe' });
80
+ return true;
81
+ }
82
+ catch {
83
+ return false;
84
+ }
85
+ }
86
+ // Prompt to install mmdc
87
+ async function installMmdc() {
88
+ console.log('Mermaid CLI not found. Install it to generate images.');
89
+ console.log('Run: npm install -g @mermaid-js/mermaid-cli');
90
+ console.log('');
91
+ // If not interactive, don't prompt
92
+ if (!(0, interactive_js_1.isInteractive)()) {
93
+ console.error('Error: Not in interactive mode. Please install @mermaid-js/mermaid-cli manually');
94
+ return false;
95
+ }
96
+ // Prompt user for confirmation
97
+ const answer = await promptUser('Install now? [y/N] ');
98
+ if (answer.toLowerCase() !== 'y' && answer.toLowerCase() !== 'yes') {
99
+ console.log('Installation cancelled.');
100
+ return false;
101
+ }
102
+ try {
103
+ console.log('Installing @mermaid-js/mermaid-cli...');
104
+ (0, node_child_process_1.execSync)('npm install -g @mermaid-js/mermaid-cli', { stdio: 'inherit' });
105
+ console.log('Installation complete!');
106
+ return true;
107
+ }
108
+ catch (error) {
109
+ console.error(`Error installing @mermaid-js/mermaid-cli: ${error.message}`);
110
+ return false;
111
+ }
112
+ }
113
+ // Helper function to prompt user for input
114
+ function promptUser(question) {
115
+ const rl = (0, node_readline_1.createInterface)({
116
+ input: process.stdin,
117
+ output: process.stdout,
118
+ });
119
+ return new Promise((resolve) => {
120
+ rl.question(question, (answer) => {
121
+ rl.close();
122
+ resolve(answer.trim());
123
+ });
124
+ });
125
+ }
126
+ // Generate image from Mermaid syntax
127
+ async function generateImageFromMermaid(mermaidSyntax, format, autoOpen) {
128
+ if (!['png', 'svg'].includes(format)) {
129
+ console.error('Error: Output format must be png or svg');
130
+ process.exit(1);
131
+ }
132
+ // Check if mmdc is installed
133
+ if (!isMmdcInstalled()) {
134
+ const installed = await installMmdc();
135
+ if (!installed) {
136
+ process.exit(1);
137
+ }
138
+ }
139
+ // Generate temp files
140
+ const timestamp = Date.now();
141
+ const tempDir = (0, node_os_1.tmpdir)();
142
+ const mmdPath = (0, node_path_1.join)(tempDir, `steroids-graph-${timestamp}.mmd`);
143
+ const outputPath = (0, node_path_1.join)(tempDir, `steroids-sections-graph-${timestamp}.${format}`);
144
+ try {
145
+ // Write Mermaid syntax to temp file
146
+ (0, node_fs_1.writeFileSync)(mmdPath, mermaidSyntax, 'utf8');
147
+ // Run mmdc to generate image
148
+ (0, node_child_process_1.execSync)(`mmdc -i "${mmdPath}" -o "${outputPath}" -b transparent`, {
149
+ stdio: 'pipe',
150
+ });
151
+ // Output the absolute path
152
+ console.log(outputPath);
153
+ // Auto-open if requested
154
+ if (autoOpen) {
155
+ const platform = process.platform;
156
+ let openCmd;
157
+ if (platform === 'darwin') {
158
+ openCmd = `open "${outputPath}"`;
159
+ }
160
+ else if (platform === 'win32') {
161
+ openCmd = `start "${outputPath}"`;
162
+ }
163
+ else {
164
+ openCmd = `xdg-open "${outputPath}"`;
165
+ }
166
+ (0, node_child_process_1.execSync)(openCmd, { stdio: 'pipe' });
167
+ }
168
+ // Clean up the .mmd file
169
+ (0, node_fs_1.unlinkSync)(mmdPath);
170
+ }
171
+ catch (error) {
172
+ console.error(`Error generating image: ${error.message}`);
173
+ try {
174
+ (0, node_fs_1.unlinkSync)(mmdPath);
175
+ }
176
+ catch { }
177
+ process.exit(1);
178
+ }
179
+ }
180
+ //# sourceMappingURL=sections-graph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sections-graph.js","sourceRoot":"","sources":["../../src/commands/sections-graph.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { GlobalFlags } from '../cli/flags.js';
2
+ export declare function sectionsCommand(args: string[], flags: GlobalFlags): Promise<void>;
3
+ //# sourceMappingURL=sections.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sections.d.ts","sourceRoot":"","sources":["../../src/commands/sections.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AA0FnD,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAuCvF"}