hungry-ghost-hive 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (467) hide show
  1. package/LICENSE +111 -0
  2. package/README.md +352 -0
  3. package/dist/agents/base-agent.d.ts +63 -0
  4. package/dist/agents/base-agent.d.ts.map +1 -0
  5. package/dist/agents/base-agent.js +189 -0
  6. package/dist/agents/base-agent.js.map +1 -0
  7. package/dist/agents/index.d.ts +7 -0
  8. package/dist/agents/index.d.ts.map +1 -0
  9. package/dist/agents/index.js +7 -0
  10. package/dist/agents/index.js.map +1 -0
  11. package/dist/agents/intermediate.d.ts +15 -0
  12. package/dist/agents/intermediate.d.ts.map +1 -0
  13. package/dist/agents/intermediate.js +142 -0
  14. package/dist/agents/intermediate.js.map +1 -0
  15. package/dist/agents/junior.d.ts +15 -0
  16. package/dist/agents/junior.d.ts.map +1 -0
  17. package/dist/agents/junior.js +147 -0
  18. package/dist/agents/junior.js.map +1 -0
  19. package/dist/agents/qa.d.ts +23 -0
  20. package/dist/agents/qa.d.ts.map +1 -0
  21. package/dist/agents/qa.js +238 -0
  22. package/dist/agents/qa.js.map +1 -0
  23. package/dist/agents/senior.d.ts +18 -0
  24. package/dist/agents/senior.d.ts.map +1 -0
  25. package/dist/agents/senior.js +267 -0
  26. package/dist/agents/senior.js.map +1 -0
  27. package/dist/agents/tech-lead.d.ts +17 -0
  28. package/dist/agents/tech-lead.d.ts.map +1 -0
  29. package/dist/agents/tech-lead.js +274 -0
  30. package/dist/agents/tech-lead.js.map +1 -0
  31. package/dist/cli/commands/add-repo.d.ts +3 -0
  32. package/dist/cli/commands/add-repo.d.ts.map +1 -0
  33. package/dist/cli/commands/add-repo.js +84 -0
  34. package/dist/cli/commands/add-repo.js.map +1 -0
  35. package/dist/cli/commands/agents.d.ts +3 -0
  36. package/dist/cli/commands/agents.d.ts.map +1 -0
  37. package/dist/cli/commands/agents.js +214 -0
  38. package/dist/cli/commands/agents.js.map +1 -0
  39. package/dist/cli/commands/assign.d.ts +3 -0
  40. package/dist/cli/commands/assign.d.ts.map +1 -0
  41. package/dist/cli/commands/assign.js +81 -0
  42. package/dist/cli/commands/assign.js.map +1 -0
  43. package/dist/cli/commands/config.d.ts +3 -0
  44. package/dist/cli/commands/config.d.ts.map +1 -0
  45. package/dist/cli/commands/config.js +118 -0
  46. package/dist/cli/commands/config.js.map +1 -0
  47. package/dist/cli/commands/escalations.d.ts +3 -0
  48. package/dist/cli/commands/escalations.d.ts.map +1 -0
  49. package/dist/cli/commands/escalations.js +157 -0
  50. package/dist/cli/commands/escalations.js.map +1 -0
  51. package/dist/cli/commands/index.d.ts +17 -0
  52. package/dist/cli/commands/index.d.ts.map +1 -0
  53. package/dist/cli/commands/index.js +17 -0
  54. package/dist/cli/commands/index.js.map +1 -0
  55. package/dist/cli/commands/init.d.ts +3 -0
  56. package/dist/cli/commands/init.d.ts.map +1 -0
  57. package/dist/cli/commands/init.js +59 -0
  58. package/dist/cli/commands/init.js.map +1 -0
  59. package/dist/cli/commands/manager.d.ts +3 -0
  60. package/dist/cli/commands/manager.d.ts.map +1 -0
  61. package/dist/cli/commands/manager.js +775 -0
  62. package/dist/cli/commands/manager.js.map +1 -0
  63. package/dist/cli/commands/manager.test.d.ts +2 -0
  64. package/dist/cli/commands/manager.test.d.ts.map +1 -0
  65. package/dist/cli/commands/manager.test.js +45 -0
  66. package/dist/cli/commands/manager.test.js.map +1 -0
  67. package/dist/cli/commands/msg.d.ts +3 -0
  68. package/dist/cli/commands/msg.d.ts.map +1 -0
  69. package/dist/cli/commands/msg.js +190 -0
  70. package/dist/cli/commands/msg.js.map +1 -0
  71. package/dist/cli/commands/my-stories.d.ts +3 -0
  72. package/dist/cli/commands/my-stories.d.ts.map +1 -0
  73. package/dist/cli/commands/my-stories.js +174 -0
  74. package/dist/cli/commands/my-stories.js.map +1 -0
  75. package/dist/cli/commands/nuke.d.ts +3 -0
  76. package/dist/cli/commands/nuke.d.ts.map +1 -0
  77. package/dist/cli/commands/nuke.js +189 -0
  78. package/dist/cli/commands/nuke.js.map +1 -0
  79. package/dist/cli/commands/pr.d.ts +3 -0
  80. package/dist/cli/commands/pr.d.ts.map +1 -0
  81. package/dist/cli/commands/pr.js +488 -0
  82. package/dist/cli/commands/pr.js.map +1 -0
  83. package/dist/cli/commands/req.d.ts +3 -0
  84. package/dist/cli/commands/req.d.ts.map +1 -0
  85. package/dist/cli/commands/req.js +212 -0
  86. package/dist/cli/commands/req.js.map +1 -0
  87. package/dist/cli/commands/resume.d.ts +3 -0
  88. package/dist/cli/commands/resume.d.ts.map +1 -0
  89. package/dist/cli/commands/resume.js +114 -0
  90. package/dist/cli/commands/resume.js.map +1 -0
  91. package/dist/cli/commands/status.d.ts +3 -0
  92. package/dist/cli/commands/status.d.ts.map +1 -0
  93. package/dist/cli/commands/status.js +259 -0
  94. package/dist/cli/commands/status.js.map +1 -0
  95. package/dist/cli/commands/stories.d.ts +3 -0
  96. package/dist/cli/commands/stories.d.ts.map +1 -0
  97. package/dist/cli/commands/stories.js +111 -0
  98. package/dist/cli/commands/stories.js.map +1 -0
  99. package/dist/cli/commands/teams.d.ts +3 -0
  100. package/dist/cli/commands/teams.d.ts.map +1 -0
  101. package/dist/cli/commands/teams.js +137 -0
  102. package/dist/cli/commands/teams.js.map +1 -0
  103. package/dist/cli/dashboard/index.d.ts +5 -0
  104. package/dist/cli/dashboard/index.d.ts.map +1 -0
  105. package/dist/cli/dashboard/index.js +128 -0
  106. package/dist/cli/dashboard/index.js.map +1 -0
  107. package/dist/cli/dashboard/panels/activity.d.ts +5 -0
  108. package/dist/cli/dashboard/panels/activity.d.ts.map +1 -0
  109. package/dist/cli/dashboard/panels/activity.js +64 -0
  110. package/dist/cli/dashboard/panels/activity.js.map +1 -0
  111. package/dist/cli/dashboard/panels/agents.d.ts +5 -0
  112. package/dist/cli/dashboard/panels/agents.d.ts.map +1 -0
  113. package/dist/cli/dashboard/panels/agents.js +196 -0
  114. package/dist/cli/dashboard/panels/agents.js.map +1 -0
  115. package/dist/cli/dashboard/panels/escalations.d.ts +5 -0
  116. package/dist/cli/dashboard/panels/escalations.d.ts.map +1 -0
  117. package/dist/cli/dashboard/panels/escalations.js +93 -0
  118. package/dist/cli/dashboard/panels/escalations.js.map +1 -0
  119. package/dist/cli/dashboard/panels/merge-queue.d.ts +5 -0
  120. package/dist/cli/dashboard/panels/merge-queue.d.ts.map +1 -0
  121. package/dist/cli/dashboard/panels/merge-queue.js +57 -0
  122. package/dist/cli/dashboard/panels/merge-queue.js.map +1 -0
  123. package/dist/cli/dashboard/panels/pipeline.d.ts +5 -0
  124. package/dist/cli/dashboard/panels/pipeline.d.ts.map +1 -0
  125. package/dist/cli/dashboard/panels/pipeline.js +54 -0
  126. package/dist/cli/dashboard/panels/pipeline.js.map +1 -0
  127. package/dist/cli/dashboard/panels/stories.d.ts +5 -0
  128. package/dist/cli/dashboard/panels/stories.d.ts.map +1 -0
  129. package/dist/cli/dashboard/panels/stories.js +79 -0
  130. package/dist/cli/dashboard/panels/stories.js.map +1 -0
  131. package/dist/cli-runtimes/claude.d.ts +8 -0
  132. package/dist/cli-runtimes/claude.d.ts.map +1 -0
  133. package/dist/cli-runtimes/claude.js +27 -0
  134. package/dist/cli-runtimes/claude.js.map +1 -0
  135. package/dist/cli-runtimes/codex.d.ts +8 -0
  136. package/dist/cli-runtimes/codex.d.ts.map +1 -0
  137. package/dist/cli-runtimes/codex.js +27 -0
  138. package/dist/cli-runtimes/codex.js.map +1 -0
  139. package/dist/cli-runtimes/gemini.d.ts +8 -0
  140. package/dist/cli-runtimes/gemini.d.ts.map +1 -0
  141. package/dist/cli-runtimes/gemini.js +29 -0
  142. package/dist/cli-runtimes/gemini.js.map +1 -0
  143. package/dist/cli-runtimes/index.d.ts +25 -0
  144. package/dist/cli-runtimes/index.d.ts.map +1 -0
  145. package/dist/cli-runtimes/index.js +48 -0
  146. package/dist/cli-runtimes/index.js.map +1 -0
  147. package/dist/cli-runtimes/index.test.d.ts +2 -0
  148. package/dist/cli-runtimes/index.test.d.ts.map +1 -0
  149. package/dist/cli-runtimes/index.test.js +216 -0
  150. package/dist/cli-runtimes/index.test.js.map +1 -0
  151. package/dist/cli-runtimes/types.d.ts +27 -0
  152. package/dist/cli-runtimes/types.d.ts.map +1 -0
  153. package/dist/cli-runtimes/types.js +2 -0
  154. package/dist/cli-runtimes/types.js.map +1 -0
  155. package/dist/config/index.d.ts +3 -0
  156. package/dist/config/index.d.ts.map +1 -0
  157. package/dist/config/index.js +3 -0
  158. package/dist/config/index.js.map +1 -0
  159. package/dist/config/loader.d.ts +11 -0
  160. package/dist/config/loader.d.ts.map +1 -0
  161. package/dist/config/loader.js +72 -0
  162. package/dist/config/loader.js.map +1 -0
  163. package/dist/config/schema.d.ts +660 -0
  164. package/dist/config/schema.d.ts.map +1 -0
  165. package/dist/config/schema.js +217 -0
  166. package/dist/config/schema.js.map +1 -0
  167. package/dist/config/schema.test.d.ts +2 -0
  168. package/dist/config/schema.test.d.ts.map +1 -0
  169. package/dist/config/schema.test.js +123 -0
  170. package/dist/config/schema.test.js.map +1 -0
  171. package/dist/context-files/generator.d.ts +32 -0
  172. package/dist/context-files/generator.d.ts.map +1 -0
  173. package/dist/context-files/generator.js +120 -0
  174. package/dist/context-files/generator.js.map +1 -0
  175. package/dist/context-files/index.d.ts +38 -0
  176. package/dist/context-files/index.d.ts.map +1 -0
  177. package/dist/context-files/index.js +76 -0
  178. package/dist/context-files/index.js.map +1 -0
  179. package/dist/context-files/index.test.d.ts +2 -0
  180. package/dist/context-files/index.test.d.ts.map +1 -0
  181. package/dist/context-files/index.test.js +265 -0
  182. package/dist/context-files/index.test.js.map +1 -0
  183. package/dist/context-files/templates.d.ts +19 -0
  184. package/dist/context-files/templates.d.ts.map +1 -0
  185. package/dist/context-files/templates.js +266 -0
  186. package/dist/context-files/templates.js.map +1 -0
  187. package/dist/db/client.d.ts +95 -0
  188. package/dist/db/client.d.ts.map +1 -0
  189. package/dist/db/client.js +343 -0
  190. package/dist/db/client.js.map +1 -0
  191. package/dist/db/lock.d.ts +25 -0
  192. package/dist/db/lock.d.ts.map +1 -0
  193. package/dist/db/lock.js +56 -0
  194. package/dist/db/lock.js.map +1 -0
  195. package/dist/db/lock.test.d.ts +2 -0
  196. package/dist/db/lock.test.d.ts.map +1 -0
  197. package/dist/db/lock.test.js +73 -0
  198. package/dist/db/lock.test.js.map +1 -0
  199. package/dist/db/queries/agents.d.ts +31 -0
  200. package/dist/db/queries/agents.d.ts.map +1 -0
  201. package/dist/db/queries/agents.js +76 -0
  202. package/dist/db/queries/agents.js.map +1 -0
  203. package/dist/db/queries/escalations.d.ts +29 -0
  204. package/dist/db/queries/escalations.d.ts.map +1 -0
  205. package/dist/db/queries/escalations.js +105 -0
  206. package/dist/db/queries/escalations.js.map +1 -0
  207. package/dist/db/queries/heartbeat.d.ts +20 -0
  208. package/dist/db/queries/heartbeat.d.ts.map +1 -0
  209. package/dist/db/queries/heartbeat.js +61 -0
  210. package/dist/db/queries/heartbeat.js.map +1 -0
  211. package/dist/db/queries/index.d.ts +8 -0
  212. package/dist/db/queries/index.d.ts.map +1 -0
  213. package/dist/db/queries/index.js +8 -0
  214. package/dist/db/queries/index.js.map +1 -0
  215. package/dist/db/queries/logs.d.ts +21 -0
  216. package/dist/db/queries/logs.d.ts.map +1 -0
  217. package/dist/db/queries/logs.js +72 -0
  218. package/dist/db/queries/logs.js.map +1 -0
  219. package/dist/db/queries/messages.d.ts +17 -0
  220. package/dist/db/queries/messages.d.ts.map +1 -0
  221. package/dist/db/queries/messages.js +22 -0
  222. package/dist/db/queries/messages.js.map +1 -0
  223. package/dist/db/queries/pull-requests.d.ts +33 -0
  224. package/dist/db/queries/pull-requests.d.ts.map +1 -0
  225. package/dist/db/queries/pull-requests.js +130 -0
  226. package/dist/db/queries/pull-requests.js.map +1 -0
  227. package/dist/db/queries/requirements.d.ts +22 -0
  228. package/dist/db/queries/requirements.d.ts.map +1 -0
  229. package/dist/db/queries/requirements.js +53 -0
  230. package/dist/db/queries/requirements.js.map +1 -0
  231. package/dist/db/queries/stories.d.ts +42 -0
  232. package/dist/db/queries/stories.d.ts.map +1 -0
  233. package/dist/db/queries/stories.js +163 -0
  234. package/dist/db/queries/stories.js.map +1 -0
  235. package/dist/db/queries/teams.d.ts +14 -0
  236. package/dist/db/queries/teams.d.ts.map +1 -0
  237. package/dist/db/queries/teams.js +24 -0
  238. package/dist/db/queries/teams.js.map +1 -0
  239. package/dist/git/branches.d.ts +52 -0
  240. package/dist/git/branches.d.ts.map +1 -0
  241. package/dist/git/branches.js +133 -0
  242. package/dist/git/branches.js.map +1 -0
  243. package/dist/git/github.d.ts +75 -0
  244. package/dist/git/github.d.ts.map +1 -0
  245. package/dist/git/github.js +162 -0
  246. package/dist/git/github.js.map +1 -0
  247. package/dist/git/index.d.ts +4 -0
  248. package/dist/git/index.d.ts.map +1 -0
  249. package/dist/git/index.js +4 -0
  250. package/dist/git/index.js.map +1 -0
  251. package/dist/git/submodules.d.ts +47 -0
  252. package/dist/git/submodules.d.ts.map +1 -0
  253. package/dist/git/submodules.js +115 -0
  254. package/dist/git/submodules.js.map +1 -0
  255. package/dist/index.d.ts +3 -0
  256. package/dist/index.d.ts.map +1 -0
  257. package/dist/index.js +62 -0
  258. package/dist/index.js.map +1 -0
  259. package/dist/llm/anthropic.d.ts +18 -0
  260. package/dist/llm/anthropic.d.ts.map +1 -0
  261. package/dist/llm/anthropic.js +111 -0
  262. package/dist/llm/anthropic.js.map +1 -0
  263. package/dist/llm/index.d.ts +6 -0
  264. package/dist/llm/index.d.ts.map +1 -0
  265. package/dist/llm/index.js +24 -0
  266. package/dist/llm/index.js.map +1 -0
  267. package/dist/llm/openai.d.ts +18 -0
  268. package/dist/llm/openai.d.ts.map +1 -0
  269. package/dist/llm/openai.js +103 -0
  270. package/dist/llm/openai.js.map +1 -0
  271. package/dist/llm/provider.d.ts +38 -0
  272. package/dist/llm/provider.d.ts.map +1 -0
  273. package/dist/llm/provider.js +17 -0
  274. package/dist/llm/provider.js.map +1 -0
  275. package/dist/orchestrator/index.d.ts +4 -0
  276. package/dist/orchestrator/index.d.ts.map +1 -0
  277. package/dist/orchestrator/index.js +4 -0
  278. package/dist/orchestrator/index.js.map +1 -0
  279. package/dist/orchestrator/scaler.d.ts +42 -0
  280. package/dist/orchestrator/scaler.d.ts.map +1 -0
  281. package/dist/orchestrator/scaler.js +154 -0
  282. package/dist/orchestrator/scaler.js.map +1 -0
  283. package/dist/orchestrator/scheduler.d.ts +90 -0
  284. package/dist/orchestrator/scheduler.d.ts.map +1 -0
  285. package/dist/orchestrator/scheduler.js +1003 -0
  286. package/dist/orchestrator/scheduler.js.map +1 -0
  287. package/dist/orchestrator/scheduler.test.d.ts +2 -0
  288. package/dist/orchestrator/scheduler.test.d.ts.map +1 -0
  289. package/dist/orchestrator/scheduler.test.js +242 -0
  290. package/dist/orchestrator/scheduler.test.js.map +1 -0
  291. package/dist/orchestrator/workflow.d.ts +18 -0
  292. package/dist/orchestrator/workflow.d.ts.map +1 -0
  293. package/dist/orchestrator/workflow.js +106 -0
  294. package/dist/orchestrator/workflow.js.map +1 -0
  295. package/dist/state-detectors/claude.d.ts +33 -0
  296. package/dist/state-detectors/claude.d.ts.map +1 -0
  297. package/dist/state-detectors/claude.js +237 -0
  298. package/dist/state-detectors/claude.js.map +1 -0
  299. package/dist/state-detectors/claude.test.d.ts +2 -0
  300. package/dist/state-detectors/claude.test.d.ts.map +1 -0
  301. package/dist/state-detectors/claude.test.js +127 -0
  302. package/dist/state-detectors/claude.test.js.map +1 -0
  303. package/dist/state-detectors/codex.d.ts +34 -0
  304. package/dist/state-detectors/codex.d.ts.map +1 -0
  305. package/dist/state-detectors/codex.js +233 -0
  306. package/dist/state-detectors/codex.js.map +1 -0
  307. package/dist/state-detectors/codex.test.d.ts +2 -0
  308. package/dist/state-detectors/codex.test.d.ts.map +1 -0
  309. package/dist/state-detectors/codex.test.js +85 -0
  310. package/dist/state-detectors/codex.test.js.map +1 -0
  311. package/dist/state-detectors/factory.d.ts +22 -0
  312. package/dist/state-detectors/factory.d.ts.map +1 -0
  313. package/dist/state-detectors/factory.js +37 -0
  314. package/dist/state-detectors/factory.js.map +1 -0
  315. package/dist/state-detectors/factory.test.d.ts +2 -0
  316. package/dist/state-detectors/factory.test.d.ts.map +1 -0
  317. package/dist/state-detectors/factory.test.js +44 -0
  318. package/dist/state-detectors/factory.test.js.map +1 -0
  319. package/dist/state-detectors/gemini.d.ts +34 -0
  320. package/dist/state-detectors/gemini.d.ts.map +1 -0
  321. package/dist/state-detectors/gemini.js +236 -0
  322. package/dist/state-detectors/gemini.js.map +1 -0
  323. package/dist/state-detectors/gemini.test.d.ts +2 -0
  324. package/dist/state-detectors/gemini.test.d.ts.map +1 -0
  325. package/dist/state-detectors/gemini.test.js +93 -0
  326. package/dist/state-detectors/gemini.test.js.map +1 -0
  327. package/dist/state-detectors/index.d.ts +20 -0
  328. package/dist/state-detectors/index.d.ts.map +1 -0
  329. package/dist/state-detectors/index.js +21 -0
  330. package/dist/state-detectors/index.js.map +1 -0
  331. package/dist/state-detectors/types.d.ts +67 -0
  332. package/dist/state-detectors/types.d.ts.map +1 -0
  333. package/dist/state-detectors/types.js +28 -0
  334. package/dist/state-detectors/types.js.map +1 -0
  335. package/dist/tmux/index.d.ts +2 -0
  336. package/dist/tmux/index.d.ts.map +1 -0
  337. package/dist/tmux/index.js +2 -0
  338. package/dist/tmux/index.js.map +1 -0
  339. package/dist/tmux/manager.d.ts +45 -0
  340. package/dist/tmux/manager.d.ts.map +1 -0
  341. package/dist/tmux/manager.js +252 -0
  342. package/dist/tmux/manager.js.map +1 -0
  343. package/dist/utils/claude-code-state.d.ts +46 -0
  344. package/dist/utils/claude-code-state.d.ts.map +1 -0
  345. package/dist/utils/claude-code-state.js +252 -0
  346. package/dist/utils/claude-code-state.js.map +1 -0
  347. package/dist/utils/cli-builder.d.ts +19 -0
  348. package/dist/utils/cli-builder.d.ts.map +1 -0
  349. package/dist/utils/cli-builder.js +58 -0
  350. package/dist/utils/cli-builder.js.map +1 -0
  351. package/dist/utils/cli-commands.d.ts +27 -0
  352. package/dist/utils/cli-commands.d.ts.map +1 -0
  353. package/dist/utils/cli-commands.js +69 -0
  354. package/dist/utils/cli-commands.js.map +1 -0
  355. package/dist/utils/index.d.ts +3 -0
  356. package/dist/utils/index.d.ts.map +1 -0
  357. package/dist/utils/index.js +3 -0
  358. package/dist/utils/index.js.map +1 -0
  359. package/dist/utils/logger.d.ts +13 -0
  360. package/dist/utils/logger.d.ts.map +1 -0
  361. package/dist/utils/logger.js +77 -0
  362. package/dist/utils/logger.js.map +1 -0
  363. package/dist/utils/paths.d.ts +17 -0
  364. package/dist/utils/paths.d.ts.map +1 -0
  365. package/dist/utils/paths.js +33 -0
  366. package/dist/utils/paths.js.map +1 -0
  367. package/dist/utils/timeout.d.ts +25 -0
  368. package/dist/utils/timeout.d.ts.map +1 -0
  369. package/dist/utils/timeout.js +57 -0
  370. package/dist/utils/timeout.js.map +1 -0
  371. package/package.json +78 -0
  372. package/src/agents/base-agent.ts +255 -0
  373. package/src/agents/index.ts +6 -0
  374. package/src/agents/intermediate.ts +161 -0
  375. package/src/agents/junior.ts +166 -0
  376. package/src/agents/qa.ts +272 -0
  377. package/src/agents/senior.ts +307 -0
  378. package/src/agents/tech-lead.ts +324 -0
  379. package/src/cli/commands/add-repo.ts +89 -0
  380. package/src/cli/commands/agents.ts +247 -0
  381. package/src/cli/commands/assign.ts +86 -0
  382. package/src/cli/commands/config.ts +121 -0
  383. package/src/cli/commands/escalations.ts +179 -0
  384. package/src/cli/commands/index.ts +16 -0
  385. package/src/cli/commands/init.ts +66 -0
  386. package/src/cli/commands/manager.test.ts +52 -0
  387. package/src/cli/commands/manager.ts +916 -0
  388. package/src/cli/commands/msg.ts +232 -0
  389. package/src/cli/commands/my-stories.ts +198 -0
  390. package/src/cli/commands/nuke.ts +223 -0
  391. package/src/cli/commands/pr.ts +559 -0
  392. package/src/cli/commands/req.ts +231 -0
  393. package/src/cli/commands/resume.ts +129 -0
  394. package/src/cli/commands/status.ts +284 -0
  395. package/src/cli/commands/stories.ts +131 -0
  396. package/src/cli/commands/teams.ts +158 -0
  397. package/src/cli/dashboard/index.ts +141 -0
  398. package/src/cli/dashboard/panels/activity.ts +77 -0
  399. package/src/cli/dashboard/panels/agents.ts +244 -0
  400. package/src/cli/dashboard/panels/escalations.ts +109 -0
  401. package/src/cli/dashboard/panels/merge-queue.ts +65 -0
  402. package/src/cli/dashboard/panels/pipeline.ts +65 -0
  403. package/src/cli/dashboard/panels/stories.ts +87 -0
  404. package/src/cli-runtimes/claude.ts +31 -0
  405. package/src/cli-runtimes/codex.ts +31 -0
  406. package/src/cli-runtimes/gemini.ts +33 -0
  407. package/src/cli-runtimes/index.test.ts +261 -0
  408. package/src/cli-runtimes/index.ts +52 -0
  409. package/src/cli-runtimes/types.ts +30 -0
  410. package/src/config/index.ts +2 -0
  411. package/src/config/loader.ts +89 -0
  412. package/src/config/schema.test.ts +135 -0
  413. package/src/config/schema.ts +238 -0
  414. package/src/context-files/generator.ts +132 -0
  415. package/src/context-files/index.test.ts +323 -0
  416. package/src/context-files/index.ts +102 -0
  417. package/src/context-files/templates.ts +279 -0
  418. package/src/db/client.ts +475 -0
  419. package/src/db/lock.test.ts +93 -0
  420. package/src/db/lock.ts +74 -0
  421. package/src/db/migrations/001-initial.sql +121 -0
  422. package/src/db/migrations/005-add-agent-heartbeat.sql +4 -0
  423. package/src/db/queries/agents.ts +113 -0
  424. package/src/db/queries/escalations.ts +140 -0
  425. package/src/db/queries/heartbeat.ts +92 -0
  426. package/src/db/queries/index.ts +7 -0
  427. package/src/db/queries/logs.ts +136 -0
  428. package/src/db/queries/messages.ts +38 -0
  429. package/src/db/queries/pull-requests.ts +170 -0
  430. package/src/db/queries/requirements.ts +81 -0
  431. package/src/db/queries/stories.ts +223 -0
  432. package/src/db/queries/teams.ts +39 -0
  433. package/src/git/branches.ts +186 -0
  434. package/src/git/github.ts +247 -0
  435. package/src/git/index.ts +3 -0
  436. package/src/git/submodules.ts +141 -0
  437. package/src/index.ts +93 -0
  438. package/src/llm/anthropic.ts +134 -0
  439. package/src/llm/index.ts +26 -0
  440. package/src/llm/openai.ts +125 -0
  441. package/src/llm/provider.ts +60 -0
  442. package/src/orchestrator/index.ts +3 -0
  443. package/src/orchestrator/scaler.ts +201 -0
  444. package/src/orchestrator/scheduler.test.ts +288 -0
  445. package/src/orchestrator/scheduler.ts +1130 -0
  446. package/src/orchestrator/workflow.ts +137 -0
  447. package/src/state-detectors/claude.test.ts +149 -0
  448. package/src/state-detectors/claude.ts +256 -0
  449. package/src/state-detectors/codex.test.ts +100 -0
  450. package/src/state-detectors/codex.ts +252 -0
  451. package/src/state-detectors/factory.test.ts +51 -0
  452. package/src/state-detectors/factory.ts +40 -0
  453. package/src/state-detectors/gemini.test.ts +110 -0
  454. package/src/state-detectors/gemini.ts +255 -0
  455. package/src/state-detectors/index.ts +25 -0
  456. package/src/state-detectors/types.ts +80 -0
  457. package/src/tmux/index.ts +1 -0
  458. package/src/tmux/manager.ts +310 -0
  459. package/src/types/sql.js.d.ts +34 -0
  460. package/src/utils/claude-code-state.ts +281 -0
  461. package/src/utils/cli-builder.ts +78 -0
  462. package/src/utils/cli-commands.ts +84 -0
  463. package/src/utils/index.ts +2 -0
  464. package/src/utils/logger.ts +93 -0
  465. package/src/utils/paths.ts +49 -0
  466. package/src/utils/timeout.ts +84 -0
  467. package/tsconfig.json +25 -0
@@ -0,0 +1,238 @@
1
+ import { BaseAgent } from './base-agent.js';
2
+ import { getTeamById } from '../db/queries/teams.js';
3
+ import { getStoriesByStatus, updateStory } from '../db/queries/stories.js';
4
+ import { createPullRequest, getPullRequestByStory } from '../db/queries/pull-requests.js';
5
+ import { execa } from 'execa';
6
+ export class QAAgent extends BaseAgent {
7
+ team = null;
8
+ qaConfig;
9
+ pendingStories = [];
10
+ constructor(context) {
11
+ super(context);
12
+ this.qaConfig = context.qaConfig;
13
+ if (context.agentRow.team_id) {
14
+ this.team = getTeamById(this.db, context.agentRow.team_id) || null;
15
+ this.pendingStories = getStoriesByStatus(this.db, 'qa')
16
+ .filter(s => s.team_id === context.agentRow.team_id);
17
+ }
18
+ }
19
+ getSystemPrompt() {
20
+ const teamInfo = this.team
21
+ ? `Team: ${this.team.name}\nRepository: ${this.team.repo_path}`
22
+ : 'No team assigned';
23
+ return `You are the QA Agent ensuring code quality before PR submission.
24
+
25
+ ## Your Team
26
+ ${teamInfo}
27
+
28
+ ## Quality Checklist
29
+ - Code passes linting
30
+ - Code passes type checking
31
+ - Build succeeds
32
+ - Tests pass (if configured)
33
+ - Changes align with acceptance criteria
34
+ - No obvious security issues
35
+ - Code follows repository patterns
36
+
37
+ ## Commands
38
+ Quality checks: ${this.qaConfig.qualityChecks.join(', ')}
39
+ Build: ${this.qaConfig.buildCommand}
40
+ ${this.qaConfig.testCommand ? `Test: ${this.qaConfig.testCommand}` : ''}
41
+
42
+ ## On Failure
43
+ - Mark story as 'qa_failed'
44
+ - Log specific failures with actionable feedback
45
+ - Story returns to developer for fixes
46
+
47
+ ## On Success
48
+ - Create GitHub PR
49
+ - Mark story as 'pr_submitted'
50
+
51
+ ## Current Context
52
+ ${this.memoryState.conversationSummary || 'Starting fresh.'}`;
53
+ }
54
+ async execute() {
55
+ if (this.pendingStories.length === 0) {
56
+ this.log('STORY_QA_STARTED', 'No stories pending QA');
57
+ return;
58
+ }
59
+ for (const story of this.pendingStories) {
60
+ await this.processStory(story);
61
+ }
62
+ }
63
+ async processStory(story) {
64
+ this.setCurrentTask(story.id, 'qa');
65
+ this.log('STORY_QA_STARTED', `QA for story: ${story.title}`, { storyId: story.id });
66
+ // Checkout the branch
67
+ if (story.branch_name) {
68
+ try {
69
+ await execa('git', ['checkout', story.branch_name], { cwd: this.workDir });
70
+ }
71
+ catch (err) {
72
+ this.log('STORY_QA_FAILED', `Failed to checkout branch: ${err instanceof Error ? err.message : 'Unknown error'}`, {
73
+ storyId: story.id,
74
+ });
75
+ updateStory(this.db, story.id, { status: 'qa_failed' });
76
+ return;
77
+ }
78
+ }
79
+ // Run quality checks
80
+ const qualityPassed = await this.runQualityChecks(story.id);
81
+ if (!qualityPassed) {
82
+ updateStory(this.db, story.id, { status: 'qa_failed' });
83
+ return;
84
+ }
85
+ // Run build
86
+ const buildPassed = await this.runBuild(story.id);
87
+ if (!buildPassed) {
88
+ updateStory(this.db, story.id, { status: 'qa_failed' });
89
+ return;
90
+ }
91
+ // Run tests if configured
92
+ if (this.qaConfig.testCommand) {
93
+ const testsPassed = await this.runTests(story.id);
94
+ if (!testsPassed) {
95
+ updateStory(this.db, story.id, { status: 'qa_failed' });
96
+ return;
97
+ }
98
+ }
99
+ // All checks passed
100
+ this.log('STORY_QA_PASSED', 'All QA checks passed', { storyId: story.id });
101
+ // Create PR
102
+ await this.createPR(story);
103
+ }
104
+ async runQualityChecks(storyId) {
105
+ this.log('CODE_QUALITY_CHECK_STARTED', 'Running quality checks', { storyId });
106
+ for (const check of this.qaConfig.qualityChecks) {
107
+ try {
108
+ const [cmd, ...args] = check.split(' ');
109
+ await execa(cmd, args, { cwd: this.workDir });
110
+ }
111
+ catch (err) {
112
+ const error = err;
113
+ this.log('CODE_QUALITY_CHECK_FAILED', `Check failed: ${check}`, {
114
+ storyId,
115
+ error: error.stderr || error.stdout,
116
+ });
117
+ return false;
118
+ }
119
+ }
120
+ this.log('CODE_QUALITY_CHECK_PASSED', 'All quality checks passed', { storyId });
121
+ return true;
122
+ }
123
+ async runBuild(storyId) {
124
+ this.log('BUILD_STARTED', 'Running build', { storyId });
125
+ try {
126
+ const [cmd, ...args] = this.qaConfig.buildCommand.split(' ');
127
+ await execa(cmd, args, { cwd: this.workDir });
128
+ this.log('BUILD_PASSED', 'Build succeeded', { storyId });
129
+ return true;
130
+ }
131
+ catch (err) {
132
+ const error = err;
133
+ this.log('BUILD_FAILED', 'Build failed', {
134
+ storyId,
135
+ error: error.stderr || error.stdout,
136
+ });
137
+ return false;
138
+ }
139
+ }
140
+ async runTests(storyId) {
141
+ if (!this.qaConfig.testCommand)
142
+ return true;
143
+ this.log('BUILD_STARTED', 'Running tests', { storyId });
144
+ try {
145
+ const [cmd, ...args] = this.qaConfig.testCommand.split(' ');
146
+ await execa(cmd, args, { cwd: this.workDir });
147
+ this.log('BUILD_PASSED', 'Tests passed', { storyId });
148
+ return true;
149
+ }
150
+ catch (err) {
151
+ const error = err;
152
+ this.log('BUILD_FAILED', 'Tests failed', {
153
+ storyId,
154
+ error: error.stderr || error.stdout,
155
+ });
156
+ return false;
157
+ }
158
+ }
159
+ async createPR(story) {
160
+ if (!story.branch_name) {
161
+ this.log('STORY_PR_CREATED', 'No branch name, skipping PR creation', { storyId: story.id });
162
+ updateStory(this.db, story.id, { status: 'pr_submitted' });
163
+ return;
164
+ }
165
+ // Check if PR already exists
166
+ const existingPR = getPullRequestByStory(this.db, story.id);
167
+ if (existingPR) {
168
+ this.log('STORY_PR_CREATED', 'PR already exists', {
169
+ storyId: story.id,
170
+ prUrl: existingPR.github_pr_url,
171
+ });
172
+ return;
173
+ }
174
+ // Create PR using gh CLI
175
+ try {
176
+ const title = `${story.id}: ${story.title}`;
177
+ const body = this.generatePRBody(story);
178
+ const { stdout } = await execa('gh', [
179
+ 'pr', 'create',
180
+ '--title', title,
181
+ '--body', body,
182
+ '--base', 'main',
183
+ '--head', story.branch_name,
184
+ ], { cwd: this.workDir });
185
+ // Extract PR URL from output
186
+ const prUrl = stdout.trim();
187
+ const prNumberMatch = prUrl.match(/\/pull\/(\d+)/);
188
+ const prNumber = prNumberMatch ? parseInt(prNumberMatch[1], 10) : undefined;
189
+ // Create PR record
190
+ const pr = createPullRequest(this.db, {
191
+ storyId: story.id,
192
+ teamId: story.team_id,
193
+ branchName: story.branch_name || `feature/${story.id}`,
194
+ githubPrNumber: prNumber,
195
+ githubPrUrl: prUrl,
196
+ });
197
+ // Update story
198
+ updateStory(this.db, story.id, {
199
+ prUrl,
200
+ status: 'pr_submitted',
201
+ });
202
+ this.log('STORY_PR_CREATED', `PR created: ${prUrl}`, {
203
+ storyId: story.id,
204
+ prId: pr.id,
205
+ prNumber,
206
+ });
207
+ }
208
+ catch (err) {
209
+ const error = err;
210
+ this.log('STORY_PR_CREATED', `Failed to create PR: ${error.stderr || 'Unknown error'}`, {
211
+ storyId: story.id,
212
+ });
213
+ // Still mark as pr_submitted since QA passed
214
+ updateStory(this.db, story.id, { status: 'pr_submitted' });
215
+ }
216
+ }
217
+ generatePRBody(story) {
218
+ const acceptanceCriteria = story.acceptance_criteria
219
+ ? JSON.parse(story.acceptance_criteria).map((c) => `- [ ] ${c}`).join('\n')
220
+ : 'N/A';
221
+ return `## Story: ${story.id}
222
+
223
+ ${story.description}
224
+
225
+ ### Acceptance Criteria
226
+ ${acceptanceCriteria}
227
+
228
+ ### QA Checklist
229
+ - [x] Code passes linting
230
+ - [x] Code passes type checking
231
+ - [x] Build succeeds
232
+ - [x] Changes align with acceptance criteria
233
+
234
+ ---
235
+ *Generated by Hive QA Agent*`;
236
+ }
237
+ }
238
+ //# sourceMappingURL=qa.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qa.js","sourceRoot":"","sources":["../../src/agents/qa.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { BaseAgent, type AgentContext } from './base-agent.js';
2
+ export interface SeniorContext extends AgentContext {
3
+ teamId: string;
4
+ }
5
+ export declare class SeniorAgent extends BaseAgent {
6
+ private team;
7
+ private assignedStories;
8
+ constructor(context: SeniorContext);
9
+ getSystemPrompt(): string;
10
+ execute(): Promise<void>;
11
+ private analyzeCodebase;
12
+ private processStory;
13
+ private delegateStory;
14
+ private implementStory;
15
+ private reviewStory;
16
+ escalateToTechLead(reason: string): Promise<void>;
17
+ }
18
+ //# sourceMappingURL=senior.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"senior.d.ts","sourceRoot":"","sources":["../../src/agents/senior.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAU/D,MAAM,WAAW,aAAc,SAAQ,YAAY;IACjD,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,WAAY,SAAQ,SAAS;IACxC,OAAO,CAAC,IAAI,CAAwB;IACpC,OAAO,CAAC,eAAe,CAAkB;gBAE7B,OAAO,EAAE,aAAa;IASlC,eAAe,IAAI,MAAM;IAuCnB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;YAqBhB,eAAe;YAwBf,YAAY;YAkBZ,aAAa;YA8Db,cAAc;YAqDd,WAAW;IA6CnB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAiBxD"}
@@ -0,0 +1,267 @@
1
+ import { BaseAgent } from './base-agent.js';
2
+ import { getTeamById } from '../db/queries/teams.js';
3
+ import { getStoriesByTeam, updateStory } from '../db/queries/stories.js';
4
+ import { createAgent, updateAgent, getTechLead } from '../db/queries/agents.js';
5
+ import { createEscalation } from '../db/queries/escalations.js';
6
+ import { spawnTmuxSession, generateSessionName } from '../tmux/manager.js';
7
+ import { loadConfig } from '../config/index.js';
8
+ import { getCliRuntimeBuilder } from '../cli-runtimes/index.js';
9
+ import { findHiveRoot, getHivePaths } from '../utils/paths.js';
10
+ export class SeniorAgent extends BaseAgent {
11
+ team = null;
12
+ assignedStories = [];
13
+ constructor(context) {
14
+ super(context);
15
+ if (context.teamId) {
16
+ this.team = getTeamById(this.db, context.teamId) || null;
17
+ this.assignedStories = getStoriesByTeam(this.db, context.teamId)
18
+ .filter(s => ['planned', 'in_progress', 'review'].includes(s.status));
19
+ }
20
+ }
21
+ getSystemPrompt() {
22
+ const teamInfo = this.team
23
+ ? `Team: ${this.team.name}\nRepository: ${this.team.repo_url}\nPath: ${this.team.repo_path}`
24
+ : 'No team assigned';
25
+ const storiesInfo = this.assignedStories.length > 0
26
+ ? this.assignedStories.map(s => `- ${s.id}: ${s.title} (${s.status}, complexity: ${s.complexity_score})`).join('\n')
27
+ : 'No stories assigned';
28
+ return `You are a Senior Developer responsible for a specific team and repository.
29
+
30
+ ## Your Team
31
+ ${teamInfo}
32
+
33
+ ## Assigned Stories
34
+ ${storiesInfo}
35
+
36
+ ## Your Responsibilities
37
+ 1. Conduct codebase analysis when requested
38
+ 2. Estimate story complexity accurately
39
+ 3. Delegate work based on complexity:
40
+ - 1-3 points → Delegate to Junior
41
+ - 4-5 points → Delegate to Intermediate
42
+ - 6+ points → Handle directly
43
+ 4. Review code from delegated work
44
+ 5. Handle complex implementations
45
+ 6. Escalate blockers to Tech Lead
46
+
47
+ ## Development Guidelines
48
+ - Create feature branches: feature/{story-id}-{slug}
49
+ - Write clean, tested code following existing patterns
50
+ - Update story status as you progress
51
+ - Commit frequently with clear messages
52
+ - If stuck after 2 attempts, escalate
53
+
54
+ ## Current Context
55
+ ${this.memoryState.conversationSummary || 'Starting fresh.'}`;
56
+ }
57
+ async execute() {
58
+ if (!this.team) {
59
+ this.log('CODEBASE_SWEEP_STARTED', 'No team assigned, waiting for assignment');
60
+ return;
61
+ }
62
+ this.log('CODEBASE_SWEEP_STARTED', `Analyzing codebase for ${this.team.name}`);
63
+ // Perform codebase sweep
64
+ await this.analyzeCodebase();
65
+ // Process assigned stories
66
+ for (const story of this.assignedStories) {
67
+ if (story.status === 'planned') {
68
+ await this.processStory(story);
69
+ }
70
+ else if (story.status === 'review') {
71
+ await this.reviewStory(story);
72
+ }
73
+ }
74
+ }
75
+ async analyzeCodebase() {
76
+ const prompt = `Analyze the codebase structure for this repository.
77
+
78
+ Working directory: ${this.workDir}
79
+
80
+ Please identify:
81
+ 1. Main technology stack
82
+ 2. Key directories and their purposes
83
+ 3. Coding patterns and conventions used
84
+ 4. Testing setup
85
+ 5. Build/deployment configuration
86
+
87
+ This will help with story estimation and implementation.`;
88
+ const analysis = await this.chat(prompt);
89
+ this.memoryState.context.codebaseNotes = analysis;
90
+ this.saveMemoryState();
91
+ this.log('CODEBASE_SWEEP_COMPLETED', 'Codebase analysis complete', {
92
+ summary: analysis.substring(0, 200),
93
+ });
94
+ }
95
+ async processStory(story) {
96
+ const complexity = story.complexity_score || 5;
97
+ this.setCurrentTask(story.id, 'processing');
98
+ this.log('STORY_STARTED', `Processing story: ${story.title}`, { storyId: story.id });
99
+ if (complexity <= 3) {
100
+ // Delegate to Junior
101
+ await this.delegateStory(story, 'junior');
102
+ }
103
+ else if (complexity <= 5) {
104
+ // Delegate to Intermediate
105
+ await this.delegateStory(story, 'intermediate');
106
+ }
107
+ else {
108
+ // Handle directly
109
+ await this.implementStory(story);
110
+ }
111
+ }
112
+ async delegateStory(story, agentType) {
113
+ this.log('STORY_ASSIGNED', `Delegating to ${agentType}`, {
114
+ storyId: story.id,
115
+ agentType,
116
+ });
117
+ // Create subordinate agent
118
+ const subordinate = createAgent(this.db, {
119
+ type: agentType,
120
+ teamId: this.teamId,
121
+ });
122
+ // Spawn tmux session
123
+ const sessionName = generateSessionName(agentType, this.team?.name);
124
+ try {
125
+ // Load config and get CLI runtime settings for the subordinate agent type
126
+ const hiveRoot = findHiveRoot(this.workDir);
127
+ if (!hiveRoot) {
128
+ throw new Error('Hive root not found');
129
+ }
130
+ const paths = getHivePaths(hiveRoot);
131
+ const config = loadConfig(paths.hiveDir);
132
+ const agentConfig = config.models[agentType];
133
+ const cliTool = agentConfig.cli_tool;
134
+ const model = agentConfig.model;
135
+ // Build spawn command using CLI runtime builder (spawn fresh session, will be resumed later)
136
+ const runtimeBuilder = getCliRuntimeBuilder(cliTool);
137
+ const commandArray = runtimeBuilder.buildSpawnCommand(model);
138
+ const command = commandArray.join(' ');
139
+ await spawnTmuxSession({
140
+ sessionName,
141
+ workDir: this.workDir,
142
+ command,
143
+ });
144
+ updateAgent(this.db, subordinate.id, {
145
+ tmuxSession: sessionName,
146
+ status: 'working',
147
+ currentStoryId: story.id,
148
+ });
149
+ // Update story assignment
150
+ updateStory(this.db, story.id, {
151
+ assignedAgentId: subordinate.id,
152
+ status: 'in_progress',
153
+ });
154
+ this.log('AGENT_SPAWNED', `${agentType} spawned for story ${story.id}`, {
155
+ agentId: subordinate.id,
156
+ storyId: story.id,
157
+ });
158
+ }
159
+ catch (err) {
160
+ // If delegation fails, handle it ourselves
161
+ this.log('STORY_PROGRESS_UPDATE', `Failed to delegate, handling directly: ${err instanceof Error ? err.message : 'Unknown error'}`, {
162
+ storyId: story.id,
163
+ });
164
+ await this.implementStory(story);
165
+ }
166
+ }
167
+ async implementStory(story) {
168
+ // Update assignment
169
+ updateStory(this.db, story.id, {
170
+ assignedAgentId: this.agentId,
171
+ status: 'in_progress',
172
+ });
173
+ updateAgent(this.db, this.agentId, { currentStoryId: story.id });
174
+ // Create feature branch
175
+ const branchName = `feature/${story.id.toLowerCase()}-${story.title.toLowerCase().replace(/[^a-z0-9]+/g, '-').substring(0, 30)}`;
176
+ this.log('STORY_STARTED', `Implementing: ${story.title}`, { branchName });
177
+ const prompt = `Implement this story:
178
+
179
+ ## Story: ${story.id}
180
+ **Title:** ${story.title}
181
+
182
+ **Description:**
183
+ ${story.description}
184
+
185
+ **Acceptance Criteria:**
186
+ ${story.acceptance_criteria ? JSON.parse(story.acceptance_criteria).join('\n- ') : 'None specified'}
187
+
188
+ ## Instructions
189
+ 1. First, create a feature branch: ${branchName}
190
+ 2. Analyze the codebase to understand where changes need to be made
191
+ 3. Implement the changes following existing patterns
192
+ 4. Write/update tests as needed
193
+ 5. Commit your changes with clear messages
194
+ 6. Report when complete
195
+
196
+ Let me know when you're ready to proceed or if you have questions.`;
197
+ const response = await this.chat(prompt);
198
+ this.updateTaskProgress('Implementation started', []);
199
+ // Continue the conversation to complete implementation
200
+ // In a real scenario, this would be an iterative process
201
+ this.log('STORY_PROGRESS_UPDATE', response.substring(0, 200), { storyId: story.id });
202
+ // Mark for review when done (simplified)
203
+ updateStory(this.db, story.id, {
204
+ branchName,
205
+ status: 'review',
206
+ });
207
+ this.log('STORY_COMPLETED', `Implementation complete, ready for review`, {
208
+ storyId: story.id,
209
+ branchName,
210
+ });
211
+ }
212
+ async reviewStory(story) {
213
+ if (story.assigned_agent_id === this.agentId) {
214
+ // Self-review, move to QA
215
+ updateStory(this.db, story.id, { status: 'qa' });
216
+ this.log('STORY_REVIEW_REQUESTED', 'Self-implemented, moving to QA', { storyId: story.id });
217
+ return;
218
+ }
219
+ this.log('STORY_REVIEW_REQUESTED', `Reviewing story: ${story.title}`, { storyId: story.id });
220
+ const prompt = `Review the code for this story:
221
+
222
+ ## Story: ${story.id}
223
+ **Title:** ${story.title}
224
+ **Branch:** ${story.branch_name}
225
+
226
+ Please review:
227
+ 1. Code quality and adherence to patterns
228
+ 2. Test coverage
229
+ 3. Potential bugs or issues
230
+ 4. Performance considerations
231
+
232
+ If issues found, describe them. If approved, confirm.`;
233
+ const review = await this.chat(prompt);
234
+ // Parse review result (simplified)
235
+ const hasIssues = review.toLowerCase().includes('issue') ||
236
+ review.toLowerCase().includes('problem') ||
237
+ review.toLowerCase().includes('fix');
238
+ if (hasIssues) {
239
+ // Send back for fixes
240
+ updateStory(this.db, story.id, { status: 'in_progress' });
241
+ this.log('STORY_PROGRESS_UPDATE', 'Review issues found, sent back for fixes', {
242
+ storyId: story.id,
243
+ review: review.substring(0, 200),
244
+ });
245
+ }
246
+ else {
247
+ // Approve and move to QA
248
+ updateStory(this.db, story.id, { status: 'qa' });
249
+ this.log('STORY_REVIEW_REQUESTED', 'Review passed, moving to QA', { storyId: story.id });
250
+ }
251
+ }
252
+ async escalateToTechLead(reason) {
253
+ const techLead = getTechLead(this.db);
254
+ const escalation = createEscalation(this.db, {
255
+ storyId: this.memoryState.currentTask?.storyId,
256
+ fromAgentId: this.agentId,
257
+ toAgentId: techLead?.id,
258
+ reason,
259
+ });
260
+ this.log('ESCALATION_CREATED', reason, {
261
+ escalationId: escalation.id,
262
+ });
263
+ this.updateStatus('blocked');
264
+ this.addBlocker(`Escalated to Tech Lead: ${reason}`);
265
+ }
266
+ }
267
+ //# sourceMappingURL=senior.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"senior.js","sourceRoot":"","sources":["../../src/agents/senior.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { BaseAgent, type AgentContext } from './base-agent.js';
2
+ export interface TechLeadContext extends AgentContext {
3
+ requirementId?: string;
4
+ }
5
+ export declare class TechLeadAgent extends BaseAgent {
6
+ private teams;
7
+ private requirementId?;
8
+ private requirement?;
9
+ constructor(context: TechLeadContext);
10
+ getSystemPrompt(): string;
11
+ execute(): Promise<void>;
12
+ private analyzeRequirement;
13
+ private createStories;
14
+ private coordinateWithSeniors;
15
+ private escalateToHuman;
16
+ }
17
+ //# sourceMappingURL=tech-lead.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tech-lead.d.ts","sourceRoot":"","sources":["../../src/agents/tech-lead.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAa/D,MAAM,WAAW,eAAgB,SAAQ,YAAY;IACnD,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,aAAc,SAAQ,SAAS;IAC1C,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,aAAa,CAAC,CAAS;IAC/B,OAAO,CAAC,WAAW,CAAC,CAAiB;gBAEzB,OAAO,EAAE,eAAe;IAUpC,eAAe,IAAI,MAAM;IA2CnB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;YA4BhB,kBAAkB;YAyElB,aAAa;YAgDb,qBAAqB;YAoFrB,eAAe;CAe9B"}