factory-factory 0.1.5 → 0.2.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 (568) hide show
  1. package/README.md +43 -0
  2. package/dist/client/assets/{_basePickBy-auQMLRsw.js → _basePickBy-BUCmhYMi.js} +1 -1
  3. package/dist/client/assets/{_baseUniq-BMdZG9To.js → _baseUniq-DkCvE4O6.js} +1 -1
  4. package/dist/client/assets/{arc-CTqmVKB0.js → arc-C1SZ3gFz.js} +1 -1
  5. package/dist/client/assets/{architectureDiagram-VXUJARFQ-mn7TDnXB.js → architectureDiagram-VXUJARFQ-DJw9fXI5.js} +1 -1
  6. package/dist/client/assets/{blockDiagram-VD42YOAC-D0QcWwFJ.js → blockDiagram-VD42YOAC-DxNjgXL1.js} +1 -1
  7. package/dist/client/assets/{c4Diagram-YG6GDRKO-Co5gIsxx.js → c4Diagram-YG6GDRKO-DYyf8hqJ.js} +1 -1
  8. package/dist/client/assets/channel-C1q-YHIv.js +1 -0
  9. package/dist/client/assets/{chunk-4BX2VUAB-D62ng-w_.js → chunk-4BX2VUAB-D_xs3w4g.js} +1 -1
  10. package/dist/client/assets/{chunk-55IACEB6-Co2YjNYs.js → chunk-55IACEB6-NeVyGiBw.js} +1 -1
  11. package/dist/client/assets/{chunk-B4BG7PRW-z38ht5-D.js → chunk-B4BG7PRW-EyCx-NZJ.js} +1 -1
  12. package/dist/client/assets/{chunk-DI55MBZ5-BhLXfyfd.js → chunk-DI55MBZ5-PoOxaYU4.js} +1 -1
  13. package/dist/client/assets/{chunk-FMBD7UC4-CkXhdTBx.js → chunk-FMBD7UC4-D1FKmcwY.js} +1 -1
  14. package/dist/client/assets/{chunk-QN33PNHL-BVUY3PSB.js → chunk-QN33PNHL-B-nhuti6.js} +1 -1
  15. package/dist/client/assets/{chunk-QZHKN3VN-DcqnpQkK.js → chunk-QZHKN3VN-BvwrXwAL.js} +1 -1
  16. package/dist/client/assets/{chunk-TZMSLE5B-B3MHL8qH.js → chunk-TZMSLE5B-CwcAJq0Y.js} +1 -1
  17. package/dist/client/assets/classDiagram-2ON5EDUG-BRch7PJo.js +1 -0
  18. package/dist/client/assets/classDiagram-v2-WZHVMYZB-BRch7PJo.js +1 -0
  19. package/dist/client/assets/clone-D8y6D-S6.js +1 -0
  20. package/dist/client/assets/{cose-bilkent-S5V4N54A-C9QD2Vj0.js → cose-bilkent-S5V4N54A-70G8lj7y.js} +1 -1
  21. package/dist/client/assets/{dagre-6UL2VRFP-Dbfyf8O9.js → dagre-6UL2VRFP-CxTqTZJX.js} +1 -1
  22. package/dist/client/assets/{diagram-PSM6KHXK-DYRvz_Qg.js → diagram-PSM6KHXK-wdA5gBhP.js} +1 -1
  23. package/dist/client/assets/{diagram-QEK2KX5R-DtPeTPAB.js → diagram-QEK2KX5R-BWiPIEBn.js} +1 -1
  24. package/dist/client/assets/{diagram-S2PKOQOG-BS4iPIf_.js → diagram-S2PKOQOG-CzhUSsIe.js} +1 -1
  25. package/dist/client/assets/{erDiagram-Q2GNP2WA-k4lDNTHf.js → erDiagram-Q2GNP2WA-DvowAcu-.js} +1 -1
  26. package/dist/client/assets/{flowDiagram-NV44I4VS-V62nOD8U.js → flowDiagram-NV44I4VS-B9jMwSHS.js} +1 -1
  27. package/dist/client/assets/{ganttDiagram-JELNMOA3-gFntrpvN.js → ganttDiagram-JELNMOA3-Bfaxm8Qf.js} +1 -1
  28. package/dist/client/assets/{gitGraphDiagram-NY62KEGX-BL07Phhj.js → gitGraphDiagram-NY62KEGX-5EWbjg13.js} +1 -1
  29. package/dist/client/assets/{graph-ETbv5TWG.js → graph-Bms-Sm3d.js} +1 -1
  30. package/dist/client/assets/index-Cp1e-xYL.js +408 -0
  31. package/dist/client/assets/index-CwyuSNf-.css +1 -0
  32. package/dist/client/assets/{infoDiagram-WHAUD3N6-C8zwYaNm.js → infoDiagram-WHAUD3N6-DYAoqgKw.js} +1 -1
  33. package/dist/client/assets/{journeyDiagram-XKPGCS4Q-DOV_hzrw.js → journeyDiagram-XKPGCS4Q-B0HifI98.js} +1 -1
  34. package/dist/client/assets/{kanban-definition-3W4ZIXB7-1FfVptSb.js → kanban-definition-3W4ZIXB7-BnBdOX8w.js} +1 -1
  35. package/dist/client/assets/{layout-Bvnfpgsa.js → layout-Tzmamt4J.js} +1 -1
  36. package/dist/client/assets/{linear-BFfZiIkJ.js → linear-DuZ88VjU.js} +1 -1
  37. package/dist/client/assets/{mindmap-definition-VGOIOE7T-BMCn7QhC.js → mindmap-definition-VGOIOE7T-mIqXf7ud.js} +1 -1
  38. package/dist/client/assets/{pieDiagram-ADFJNKIX-DMOd-_iB.js → pieDiagram-ADFJNKIX-LU3IJ_3z.js} +1 -1
  39. package/dist/client/assets/{quadrantDiagram-AYHSOK5B-u_3HRHh2.js → quadrantDiagram-AYHSOK5B-RcfMXzE1.js} +1 -1
  40. package/dist/client/assets/{requirementDiagram-UZGBJVZJ-BZwVSXWr.js → requirementDiagram-UZGBJVZJ-fCa8OVB7.js} +1 -1
  41. package/dist/client/assets/{sankeyDiagram-TZEHDZUN-DOWjxbUH.js → sankeyDiagram-TZEHDZUN-ByI3z-Yp.js} +1 -1
  42. package/dist/client/assets/{sequenceDiagram-WL72ISMW-DwXxnRBe.js → sequenceDiagram-WL72ISMW-Bi2fH0fZ.js} +1 -1
  43. package/dist/client/assets/{stateDiagram-FKZM4ZOC-8BpOZTJw.js → stateDiagram-FKZM4ZOC-BcKHGHcW.js} +1 -1
  44. package/dist/client/assets/stateDiagram-v2-4FDKWEC3-DIADSwH3.js +1 -0
  45. package/dist/client/assets/{terminal-instance-Bpw7QC1n.js → terminal-instance-CXvzjFQW.js} +1 -1
  46. package/dist/client/assets/{timeline-definition-IT6M3QCI-CbV19eXj.js → timeline-definition-IT6M3QCI-7U7VPI2C.js} +1 -1
  47. package/dist/client/assets/{treemap-KMMF4GRG-CZkxCyK0.js → treemap-KMMF4GRG-B1RMkeMx.js} +1 -1
  48. package/dist/client/assets/{xychartDiagram-PRI3JC2R-DPKbYLDL.js → xychartDiagram-PRI3JC2R-DC1DrOy8.js} +1 -1
  49. package/dist/client/index.html +2 -2
  50. package/dist/prisma/generated/commonInputTypes.d.ts +100 -0
  51. package/dist/prisma/generated/commonInputTypes.d.ts.map +1 -1
  52. package/dist/prisma/generated/enums.d.ts +11 -5
  53. package/dist/prisma/generated/enums.d.ts.map +1 -1
  54. package/dist/prisma/generated/enums.js +10 -5
  55. package/dist/prisma/generated/enums.js.map +1 -1
  56. package/dist/prisma/generated/internal/class.js +2 -2
  57. package/dist/prisma/generated/internal/class.js.map +1 -1
  58. package/dist/prisma/generated/internal/prismaNamespace.d.ts +43 -0
  59. package/dist/prisma/generated/internal/prismaNamespace.d.ts.map +1 -1
  60. package/dist/prisma/generated/internal/prismaNamespace.js +37 -0
  61. package/dist/prisma/generated/internal/prismaNamespace.js.map +1 -1
  62. package/dist/prisma/generated/internal/prismaNamespaceBrowser.d.ts +40 -0
  63. package/dist/prisma/generated/internal/prismaNamespaceBrowser.d.ts.map +1 -1
  64. package/dist/prisma/generated/internal/prismaNamespaceBrowser.js +37 -0
  65. package/dist/prisma/generated/internal/prismaNamespaceBrowser.js.map +1 -1
  66. package/dist/prisma/generated/models/UserSettings.d.ts +341 -1
  67. package/dist/prisma/generated/models/UserSettings.d.ts.map +1 -1
  68. package/dist/prisma/generated/models/Workspace.d.ts +480 -1
  69. package/dist/prisma/generated/models/Workspace.d.ts.map +1 -1
  70. package/dist/prompts/workflows/ci-fix.md +52 -0
  71. package/dist/prompts/workflows/pr-review-fix.md +61 -0
  72. package/dist/prompts/workflows/ratchet.md +83 -0
  73. package/dist/src/backend/app-context.d.ts +56 -0
  74. package/dist/src/backend/app-context.d.ts.map +1 -0
  75. package/dist/src/backend/app-context.js +59 -0
  76. package/dist/src/backend/app-context.js.map +1 -0
  77. package/dist/src/backend/claude/index.d.ts +5 -14
  78. package/dist/src/backend/claude/index.d.ts.map +1 -1
  79. package/dist/src/backend/claude/index.js +27 -121
  80. package/dist/src/backend/claude/index.js.map +1 -1
  81. package/dist/src/backend/claude/monitoring.d.ts +53 -0
  82. package/dist/src/backend/claude/monitoring.d.ts.map +1 -0
  83. package/dist/src/backend/claude/monitoring.js +139 -0
  84. package/dist/src/backend/claude/monitoring.js.map +1 -0
  85. package/dist/src/backend/claude/permission-coordinator.d.ts +43 -0
  86. package/dist/src/backend/claude/permission-coordinator.d.ts.map +1 -0
  87. package/dist/src/backend/claude/permission-coordinator.js +170 -0
  88. package/dist/src/backend/claude/permission-coordinator.js.map +1 -0
  89. package/dist/src/backend/claude/permission-coordinator.test.d.ts +2 -0
  90. package/dist/src/backend/claude/permission-coordinator.test.d.ts.map +1 -0
  91. package/dist/src/backend/claude/permission-coordinator.test.js +86 -0
  92. package/dist/src/backend/claude/permission-coordinator.test.js.map +1 -0
  93. package/dist/src/backend/claude/process.d.ts +6 -22
  94. package/dist/src/backend/claude/process.d.ts.map +1 -1
  95. package/dist/src/backend/claude/process.js +22 -118
  96. package/dist/src/backend/claude/process.js.map +1 -1
  97. package/dist/src/backend/claude/protocol-io.d.ts +47 -0
  98. package/dist/src/backend/claude/protocol-io.d.ts.map +1 -0
  99. package/dist/src/backend/claude/protocol-io.js +60 -0
  100. package/dist/src/backend/claude/protocol-io.js.map +1 -0
  101. package/dist/src/backend/claude/types.d.ts +19 -124
  102. package/dist/src/backend/claude/types.d.ts.map +1 -1
  103. package/dist/src/backend/claude/types.js.map +1 -1
  104. package/dist/src/backend/clients/git.client.d.ts +7 -0
  105. package/dist/src/backend/clients/git.client.d.ts.map +1 -1
  106. package/dist/src/backend/clients/git.client.js +127 -3
  107. package/dist/src/backend/clients/git.client.js.map +1 -1
  108. package/dist/src/backend/clients/git.client.test.js +52 -8
  109. package/dist/src/backend/clients/git.client.test.js.map +1 -1
  110. package/dist/src/backend/index.js +5 -4
  111. package/dist/src/backend/index.js.map +1 -1
  112. package/dist/src/backend/interceptors/conversation-rename.interceptor.d.ts.map +1 -1
  113. package/dist/src/backend/interceptors/conversation-rename.interceptor.js +1 -2
  114. package/dist/src/backend/interceptors/conversation-rename.interceptor.js.map +1 -1
  115. package/dist/src/backend/interceptors/git-push.interceptor.d.ts +3 -0
  116. package/dist/src/backend/interceptors/git-push.interceptor.d.ts.map +1 -0
  117. package/dist/src/backend/interceptors/git-push.interceptor.js +31 -0
  118. package/dist/src/backend/interceptors/git-push.interceptor.js.map +1 -0
  119. package/dist/src/backend/interceptors/index.d.ts.map +1 -1
  120. package/dist/src/backend/interceptors/index.js +2 -0
  121. package/dist/src/backend/interceptors/index.js.map +1 -1
  122. package/dist/src/backend/lib/file-helpers.d.ts +1 -0
  123. package/dist/src/backend/lib/file-helpers.d.ts.map +1 -1
  124. package/dist/src/backend/lib/file-helpers.js +10 -1
  125. package/dist/src/backend/lib/file-helpers.js.map +1 -1
  126. package/dist/src/backend/lib/file-helpers.test.js +17 -2
  127. package/dist/src/backend/lib/file-helpers.test.js.map +1 -1
  128. package/dist/src/backend/middleware/cors.middleware.d.ts +3 -1
  129. package/dist/src/backend/middleware/cors.middleware.d.ts.map +1 -1
  130. package/dist/src/backend/middleware/cors.middleware.js +18 -15
  131. package/dist/src/backend/middleware/cors.middleware.js.map +1 -1
  132. package/dist/src/backend/middleware/index.d.ts +2 -2
  133. package/dist/src/backend/middleware/index.d.ts.map +1 -1
  134. package/dist/src/backend/middleware/index.js +2 -2
  135. package/dist/src/backend/middleware/index.js.map +1 -1
  136. package/dist/src/backend/middleware/middleware.test.js +23 -21
  137. package/dist/src/backend/middleware/middleware.test.js.map +1 -1
  138. package/dist/src/backend/middleware/request-logger.middleware.d.ts +3 -1
  139. package/dist/src/backend/middleware/request-logger.middleware.d.ts.map +1 -1
  140. package/dist/src/backend/middleware/request-logger.middleware.js +19 -16
  141. package/dist/src/backend/middleware/request-logger.middleware.js.map +1 -1
  142. package/dist/src/backend/resource_accessors/project.accessor.d.ts +4 -0
  143. package/dist/src/backend/resource_accessors/project.accessor.d.ts.map +1 -1
  144. package/dist/src/backend/resource_accessors/project.accessor.js +28 -0
  145. package/dist/src/backend/resource_accessors/project.accessor.js.map +1 -1
  146. package/dist/src/backend/resource_accessors/project.accessor.test.d.ts +2 -0
  147. package/dist/src/backend/resource_accessors/project.accessor.test.d.ts.map +1 -0
  148. package/dist/src/backend/resource_accessors/project.accessor.test.js +85 -0
  149. package/dist/src/backend/resource_accessors/project.accessor.test.js.map +1 -0
  150. package/dist/src/backend/resource_accessors/user-settings.accessor.d.ts +16 -1
  151. package/dist/src/backend/resource_accessors/user-settings.accessor.d.ts.map +1 -1
  152. package/dist/src/backend/resource_accessors/user-settings.accessor.js +18 -0
  153. package/dist/src/backend/resource_accessors/user-settings.accessor.js.map +1 -1
  154. package/dist/src/backend/resource_accessors/workspace.accessor.d.ts +34 -1
  155. package/dist/src/backend/resource_accessors/workspace.accessor.d.ts.map +1 -1
  156. package/dist/src/backend/resource_accessors/workspace.accessor.js +63 -0
  157. package/dist/src/backend/resource_accessors/workspace.accessor.js.map +1 -1
  158. package/dist/src/backend/resource_accessors/workspace.accessor.test.d.ts +2 -0
  159. package/dist/src/backend/resource_accessors/workspace.accessor.test.d.ts.map +1 -0
  160. package/dist/src/backend/resource_accessors/workspace.accessor.test.js +44 -0
  161. package/dist/src/backend/resource_accessors/workspace.accessor.test.js.map +1 -0
  162. package/dist/src/backend/routers/api/health.router.d.ts +4 -2
  163. package/dist/src/backend/routers/api/health.router.d.ts.map +1 -1
  164. package/dist/src/backend/routers/api/health.router.js +62 -59
  165. package/dist/src/backend/routers/api/health.router.js.map +1 -1
  166. package/dist/src/backend/routers/api/health.router.test.js +19 -17
  167. package/dist/src/backend/routers/api/health.router.test.js.map +1 -1
  168. package/dist/src/backend/routers/api/mcp.router.d.ts +4 -2
  169. package/dist/src/backend/routers/api/mcp.router.d.ts.map +1 -1
  170. package/dist/src/backend/routers/api/mcp.router.js +33 -30
  171. package/dist/src/backend/routers/api/mcp.router.js.map +1 -1
  172. package/dist/src/backend/routers/api/mcp.router.test.js +16 -12
  173. package/dist/src/backend/routers/api/mcp.router.test.js.map +1 -1
  174. package/dist/src/backend/routers/api/project.router.d.ts +4 -2
  175. package/dist/src/backend/routers/api/project.router.d.ts.map +1 -1
  176. package/dist/src/backend/routers/api/project.router.js +226 -219
  177. package/dist/src/backend/routers/api/project.router.js.map +1 -1
  178. package/dist/src/backend/routers/websocket/chat.handler.d.ts +3 -1
  179. package/dist/src/backend/routers/websocket/chat.handler.d.ts.map +1 -1
  180. package/dist/src/backend/routers/websocket/chat.handler.js +199 -158
  181. package/dist/src/backend/routers/websocket/chat.handler.js.map +1 -1
  182. package/dist/src/backend/routers/websocket/dev-logs.handler.d.ts +3 -1
  183. package/dist/src/backend/routers/websocket/dev-logs.handler.d.ts.map +1 -1
  184. package/dist/src/backend/routers/websocket/dev-logs.handler.js +58 -55
  185. package/dist/src/backend/routers/websocket/dev-logs.handler.js.map +1 -1
  186. package/dist/src/backend/routers/websocket/index.d.ts +3 -3
  187. package/dist/src/backend/routers/websocket/index.d.ts.map +1 -1
  188. package/dist/src/backend/routers/websocket/index.js +3 -3
  189. package/dist/src/backend/routers/websocket/index.js.map +1 -1
  190. package/dist/src/backend/routers/websocket/message-utils.d.ts +2 -0
  191. package/dist/src/backend/routers/websocket/message-utils.d.ts.map +1 -0
  192. package/dist/src/backend/routers/websocket/message-utils.js +16 -0
  193. package/dist/src/backend/routers/websocket/message-utils.js.map +1 -0
  194. package/dist/src/backend/routers/websocket/terminal.handler.d.ts +3 -1
  195. package/dist/src/backend/routers/websocket/terminal.handler.d.ts.map +1 -1
  196. package/dist/src/backend/routers/websocket/terminal.handler.js +288 -247
  197. package/dist/src/backend/routers/websocket/terminal.handler.js.map +1 -1
  198. package/dist/src/backend/schemas/websocket/index.d.ts +1 -1
  199. package/dist/src/backend/schemas/websocket/index.d.ts.map +1 -1
  200. package/dist/src/backend/schemas/websocket/index.js +1 -1
  201. package/dist/src/backend/schemas/websocket/index.js.map +1 -1
  202. package/dist/src/backend/server.d.ts +4 -8
  203. package/dist/src/backend/server.d.ts.map +1 -1
  204. package/dist/src/backend/server.js +25 -19
  205. package/dist/src/backend/server.js.map +1 -1
  206. package/dist/src/backend/services/chat-event-forwarder.service.d.ts.map +1 -1
  207. package/dist/src/backend/services/chat-event-forwarder.service.js +16 -18
  208. package/dist/src/backend/services/chat-event-forwarder.service.js.map +1 -1
  209. package/dist/src/backend/services/chat-message-handlers/attachment-utils.d.ts +5 -0
  210. package/dist/src/backend/services/chat-message-handlers/attachment-utils.d.ts.map +1 -0
  211. package/dist/src/backend/services/chat-message-handlers/attachment-utils.js +27 -0
  212. package/dist/src/backend/services/chat-message-handlers/attachment-utils.js.map +1 -0
  213. package/dist/src/backend/services/chat-message-handlers/attachment-utils.test.d.ts +2 -0
  214. package/dist/src/backend/services/chat-message-handlers/attachment-utils.test.d.ts.map +1 -0
  215. package/dist/src/backend/services/chat-message-handlers/attachment-utils.test.js +36 -0
  216. package/dist/src/backend/services/chat-message-handlers/attachment-utils.test.js.map +1 -0
  217. package/dist/src/backend/services/chat-message-handlers/constants.d.ts +5 -0
  218. package/dist/src/backend/services/chat-message-handlers/constants.d.ts.map +1 -0
  219. package/dist/src/backend/services/chat-message-handlers/constants.js +7 -0
  220. package/dist/src/backend/services/chat-message-handlers/constants.js.map +1 -0
  221. package/dist/src/backend/services/chat-message-handlers/handlers/get-history.handler.d.ts +3 -0
  222. package/dist/src/backend/services/chat-message-handlers/handlers/get-history.handler.d.ts.map +1 -0
  223. package/dist/src/backend/services/chat-message-handlers/handlers/get-history.handler.js +16 -0
  224. package/dist/src/backend/services/chat-message-handlers/handlers/get-history.handler.js.map +1 -0
  225. package/dist/src/backend/services/chat-message-handlers/handlers/get-queue.handler.d.ts +3 -0
  226. package/dist/src/backend/services/chat-message-handlers/handlers/get-queue.handler.d.ts.map +1 -0
  227. package/dist/src/backend/services/chat-message-handlers/handlers/get-queue.handler.js +13 -0
  228. package/dist/src/backend/services/chat-message-handlers/handlers/get-queue.handler.js.map +1 -0
  229. package/dist/src/backend/services/chat-message-handlers/handlers/handlers.test.d.ts +2 -0
  230. package/dist/src/backend/services/chat-message-handlers/handlers/handlers.test.d.ts.map +1 -0
  231. package/dist/src/backend/services/chat-message-handlers/handlers/handlers.test.js +478 -0
  232. package/dist/src/backend/services/chat-message-handlers/handlers/handlers.test.js.map +1 -0
  233. package/dist/src/backend/services/chat-message-handlers/handlers/list-sessions.handler.d.ts +3 -0
  234. package/dist/src/backend/services/chat-message-handlers/handlers/list-sessions.handler.d.ts.map +1 -0
  235. package/dist/src/backend/services/chat-message-handlers/handlers/list-sessions.handler.js +8 -0
  236. package/dist/src/backend/services/chat-message-handlers/handlers/list-sessions.handler.js.map +1 -0
  237. package/dist/src/backend/services/chat-message-handlers/handlers/load-session.handler.d.ts +3 -0
  238. package/dist/src/backend/services/chat-message-handlers/handlers/load-session.handler.d.ts.map +1 -0
  239. package/dist/src/backend/services/chat-message-handlers/handlers/load-session.handler.js +113 -0
  240. package/dist/src/backend/services/chat-message-handlers/handlers/load-session.handler.js.map +1 -0
  241. package/dist/src/backend/services/chat-message-handlers/handlers/permission-response.handler.d.ts +3 -0
  242. package/dist/src/backend/services/chat-message-handlers/handlers/permission-response.handler.d.ts.map +1 -0
  243. package/dist/src/backend/services/chat-message-handlers/handlers/permission-response.handler.js +43 -0
  244. package/dist/src/backend/services/chat-message-handlers/handlers/permission-response.handler.js.map +1 -0
  245. package/dist/src/backend/services/chat-message-handlers/handlers/question-response.handler.d.ts +3 -0
  246. package/dist/src/backend/services/chat-message-handlers/handlers/question-response.handler.d.ts.map +1 -0
  247. package/dist/src/backend/services/chat-message-handlers/handlers/question-response.handler.js +35 -0
  248. package/dist/src/backend/services/chat-message-handlers/handlers/question-response.handler.js.map +1 -0
  249. package/dist/src/backend/services/chat-message-handlers/handlers/queue-message.handler.d.ts +3 -0
  250. package/dist/src/backend/services/chat-message-handlers/handlers/queue-message.handler.d.ts.map +1 -0
  251. package/dist/src/backend/services/chat-message-handlers/handlers/queue-message.handler.js +46 -0
  252. package/dist/src/backend/services/chat-message-handlers/handlers/queue-message.handler.js.map +1 -0
  253. package/dist/src/backend/services/chat-message-handlers/handlers/remove-queued-message.handler.d.ts +3 -0
  254. package/dist/src/backend/services/chat-message-handlers/handlers/remove-queued-message.handler.d.ts.map +1 -0
  255. package/dist/src/backend/services/chat-message-handlers/handlers/remove-queued-message.handler.js +23 -0
  256. package/dist/src/backend/services/chat-message-handlers/handlers/remove-queued-message.handler.js.map +1 -0
  257. package/dist/src/backend/services/chat-message-handlers/handlers/rewind-files.handler.d.ts +3 -0
  258. package/dist/src/backend/services/chat-message-handlers/handlers/rewind-files.handler.d.ts.map +1 -0
  259. package/dist/src/backend/services/chat-message-handlers/handlers/rewind-files.handler.js +49 -0
  260. package/dist/src/backend/services/chat-message-handlers/handlers/rewind-files.handler.js.map +1 -0
  261. package/dist/src/backend/services/chat-message-handlers/handlers/set-model.handler.d.ts +3 -0
  262. package/dist/src/backend/services/chat-message-handlers/handlers/set-model.handler.d.ts.map +1 -0
  263. package/dist/src/backend/services/chat-message-handlers/handlers/set-model.handler.js +31 -0
  264. package/dist/src/backend/services/chat-message-handlers/handlers/set-model.handler.js.map +1 -0
  265. package/dist/src/backend/services/chat-message-handlers/handlers/set-thinking-budget.handler.d.ts +3 -0
  266. package/dist/src/backend/services/chat-message-handlers/handlers/set-thinking-budget.handler.d.ts.map +1 -0
  267. package/dist/src/backend/services/chat-message-handlers/handlers/set-thinking-budget.handler.js +34 -0
  268. package/dist/src/backend/services/chat-message-handlers/handlers/set-thinking-budget.handler.js.map +1 -0
  269. package/dist/src/backend/services/chat-message-handlers/handlers/start.handler.d.ts +3 -0
  270. package/dist/src/backend/services/chat-message-handlers/handlers/start.handler.d.ts.map +1 -0
  271. package/dist/src/backend/services/chat-message-handlers/handlers/start.handler.js +27 -0
  272. package/dist/src/backend/services/chat-message-handlers/handlers/start.handler.js.map +1 -0
  273. package/dist/src/backend/services/chat-message-handlers/handlers/stop.handler.d.ts +3 -0
  274. package/dist/src/backend/services/chat-message-handlers/handlers/stop.handler.d.ts.map +1 -0
  275. package/dist/src/backend/services/chat-message-handlers/handlers/stop.handler.js +10 -0
  276. package/dist/src/backend/services/chat-message-handlers/handlers/stop.handler.js.map +1 -0
  277. package/dist/src/backend/services/chat-message-handlers/handlers/user-input.handler.d.ts +3 -0
  278. package/dist/src/backend/services/chat-message-handlers/handlers/user-input.handler.d.ts.map +1 -0
  279. package/dist/src/backend/services/chat-message-handlers/handlers/user-input.handler.js +24 -0
  280. package/dist/src/backend/services/chat-message-handlers/handlers/user-input.handler.js.map +1 -0
  281. package/dist/src/backend/services/chat-message-handlers/interactive-response.d.ts +3 -0
  282. package/dist/src/backend/services/chat-message-handlers/interactive-response.d.ts.map +1 -0
  283. package/dist/src/backend/services/chat-message-handlers/interactive-response.js +83 -0
  284. package/dist/src/backend/services/chat-message-handlers/interactive-response.js.map +1 -0
  285. package/dist/src/backend/services/chat-message-handlers/registry.d.ts +5 -0
  286. package/dist/src/backend/services/chat-message-handlers/registry.d.ts.map +1 -0
  287. package/dist/src/backend/services/chat-message-handlers/registry.js +33 -0
  288. package/dist/src/backend/services/chat-message-handlers/registry.js.map +1 -0
  289. package/dist/src/backend/services/chat-message-handlers/types.d.ts +22 -0
  290. package/dist/src/backend/services/chat-message-handlers/types.d.ts.map +1 -0
  291. package/dist/src/backend/services/chat-message-handlers/types.js +2 -0
  292. package/dist/src/backend/services/chat-message-handlers/types.js.map +1 -0
  293. package/dist/src/backend/services/chat-message-handlers/utils.d.ts +6 -0
  294. package/dist/src/backend/services/chat-message-handlers/utils.d.ts.map +1 -0
  295. package/dist/src/backend/services/chat-message-handlers/utils.js +28 -0
  296. package/dist/src/backend/services/chat-message-handlers/utils.js.map +1 -0
  297. package/dist/src/backend/services/chat-message-handlers.service.d.ts +4 -33
  298. package/dist/src/backend/services/chat-message-handlers.service.d.ts.map +1 -1
  299. package/dist/src/backend/services/chat-message-handlers.service.js +32 -478
  300. package/dist/src/backend/services/chat-message-handlers.service.js.map +1 -1
  301. package/dist/src/backend/services/chat-transport-adapter.service.d.ts +10 -0
  302. package/dist/src/backend/services/chat-transport-adapter.service.d.ts.map +1 -0
  303. package/dist/src/backend/services/chat-transport-adapter.service.js +46 -0
  304. package/dist/src/backend/services/chat-transport-adapter.service.js.map +1 -0
  305. package/dist/src/backend/services/chat-transport-adapter.service.test.d.ts +2 -0
  306. package/dist/src/backend/services/chat-transport-adapter.service.test.d.ts.map +1 -0
  307. package/dist/src/backend/services/chat-transport-adapter.service.test.js +67 -0
  308. package/dist/src/backend/services/chat-transport-adapter.service.test.js.map +1 -0
  309. package/dist/src/backend/services/ci-fixer.service.d.ts +42 -0
  310. package/dist/src/backend/services/ci-fixer.service.d.ts.map +1 -0
  311. package/dist/src/backend/services/ci-fixer.service.js +210 -0
  312. package/dist/src/backend/services/ci-fixer.service.js.map +1 -0
  313. package/dist/src/backend/services/ci-fixer.service.test.d.ts +2 -0
  314. package/dist/src/backend/services/ci-fixer.service.test.d.ts.map +1 -0
  315. package/dist/src/backend/services/ci-fixer.service.test.js +561 -0
  316. package/dist/src/backend/services/ci-fixer.service.test.js.map +1 -0
  317. package/dist/src/backend/services/ci-monitor.service.d.ts +3 -0
  318. package/dist/src/backend/services/ci-monitor.service.d.ts.map +1 -1
  319. package/dist/src/backend/services/ci-monitor.service.js +103 -36
  320. package/dist/src/backend/services/ci-monitor.service.js.map +1 -1
  321. package/dist/src/backend/services/data-backup.service.d.ts +152 -0
  322. package/dist/src/backend/services/data-backup.service.d.ts.map +1 -0
  323. package/dist/src/backend/services/data-backup.service.js +421 -0
  324. package/dist/src/backend/services/data-backup.service.js.map +1 -0
  325. package/dist/src/backend/services/event-compression.service.d.ts +1 -0
  326. package/dist/src/backend/services/event-compression.service.d.ts.map +1 -1
  327. package/dist/src/backend/services/event-compression.service.js +4 -1
  328. package/dist/src/backend/services/event-compression.service.js.map +1 -1
  329. package/dist/src/backend/services/git-ops.service.d.ts +29 -0
  330. package/dist/src/backend/services/git-ops.service.d.ts.map +1 -0
  331. package/dist/src/backend/services/git-ops.service.js +127 -0
  332. package/dist/src/backend/services/git-ops.service.js.map +1 -0
  333. package/dist/src/backend/services/github-cli.service.d.ts +31 -0
  334. package/dist/src/backend/services/github-cli.service.d.ts.map +1 -1
  335. package/dist/src/backend/services/github-cli.service.js +144 -0
  336. package/dist/src/backend/services/github-cli.service.js.map +1 -1
  337. package/dist/src/backend/services/index.d.ts +5 -0
  338. package/dist/src/backend/services/index.d.ts.map +1 -1
  339. package/dist/src/backend/services/index.js +5 -0
  340. package/dist/src/backend/services/index.js.map +1 -1
  341. package/dist/src/backend/services/kanban-state.service.d.ts +2 -2
  342. package/dist/src/backend/services/kanban-state.service.d.ts.map +1 -1
  343. package/dist/src/backend/services/kanban-state.service.js +14 -19
  344. package/dist/src/backend/services/kanban-state.service.js.map +1 -1
  345. package/dist/src/backend/services/kanban-state.service.test.js +68 -55
  346. package/dist/src/backend/services/kanban-state.service.test.js.map +1 -1
  347. package/dist/src/backend/services/message-event-store.d.ts +12 -0
  348. package/dist/src/backend/services/message-event-store.d.ts.map +1 -0
  349. package/dist/src/backend/services/message-event-store.js +21 -0
  350. package/dist/src/backend/services/message-event-store.js.map +1 -0
  351. package/dist/src/backend/services/message-event-store.test.d.ts +2 -0
  352. package/dist/src/backend/services/message-event-store.test.d.ts.map +1 -0
  353. package/dist/src/backend/services/message-event-store.test.js +32 -0
  354. package/dist/src/backend/services/message-event-store.test.js.map +1 -0
  355. package/dist/src/backend/services/message-queue.service.d.ts +2 -2
  356. package/dist/src/backend/services/message-queue.service.d.ts.map +1 -1
  357. package/dist/src/backend/services/message-state-machine.d.ts +37 -0
  358. package/dist/src/backend/services/message-state-machine.d.ts.map +1 -0
  359. package/dist/src/backend/services/message-state-machine.js +262 -0
  360. package/dist/src/backend/services/message-state-machine.js.map +1 -0
  361. package/dist/src/backend/services/message-state-machine.test.d.ts +2 -0
  362. package/dist/src/backend/services/message-state-machine.test.d.ts.map +1 -0
  363. package/dist/src/backend/services/message-state-machine.test.js +67 -0
  364. package/dist/src/backend/services/message-state-machine.test.js.map +1 -0
  365. package/dist/src/backend/services/message-state.service.d.ts +41 -8
  366. package/dist/src/backend/services/message-state.service.d.ts.map +1 -1
  367. package/dist/src/backend/services/message-state.service.js +136 -251
  368. package/dist/src/backend/services/message-state.service.js.map +1 -1
  369. package/dist/src/backend/services/message-state.service.test.js +98 -54
  370. package/dist/src/backend/services/message-state.service.test.js.map +1 -1
  371. package/dist/src/backend/services/pr-review-fixer.service.d.ts +56 -0
  372. package/dist/src/backend/services/pr-review-fixer.service.d.ts.map +1 -0
  373. package/dist/src/backend/services/pr-review-fixer.service.js +247 -0
  374. package/dist/src/backend/services/pr-review-fixer.service.js.map +1 -0
  375. package/dist/src/backend/services/pr-review-monitor.service.d.ts +18 -0
  376. package/dist/src/backend/services/pr-review-monitor.service.d.ts.map +1 -0
  377. package/dist/src/backend/services/pr-review-monitor.service.js +209 -0
  378. package/dist/src/backend/services/pr-review-monitor.service.js.map +1 -0
  379. package/dist/src/backend/services/ratchet.service.d.ts +115 -0
  380. package/dist/src/backend/services/ratchet.service.d.ts.map +1 -0
  381. package/dist/src/backend/services/ratchet.service.js +587 -0
  382. package/dist/src/backend/services/ratchet.service.js.map +1 -0
  383. package/dist/src/backend/services/ratchet.service.test.d.ts +2 -0
  384. package/dist/src/backend/services/ratchet.service.test.d.ts.map +1 -0
  385. package/dist/src/backend/services/ratchet.service.test.js +254 -0
  386. package/dist/src/backend/services/ratchet.service.test.js.map +1 -0
  387. package/dist/src/backend/services/reconciliation.service.d.ts.map +1 -1
  388. package/dist/src/backend/services/reconciliation.service.js +3 -1
  389. package/dist/src/backend/services/reconciliation.service.js.map +1 -1
  390. package/dist/src/backend/services/reconciliation.service.test.js +6 -2
  391. package/dist/src/backend/services/reconciliation.service.test.js.map +1 -1
  392. package/dist/src/backend/services/server-instance.service.d.ts +3 -2
  393. package/dist/src/backend/services/server-instance.service.d.ts.map +1 -1
  394. package/dist/src/backend/services/server-instance.service.js.map +1 -1
  395. package/dist/src/backend/services/session-file-logger.service.d.ts +1 -0
  396. package/dist/src/backend/services/session-file-logger.service.d.ts.map +1 -1
  397. package/dist/src/backend/services/session-file-logger.service.js +63 -37
  398. package/dist/src/backend/services/session-file-logger.service.js.map +1 -1
  399. package/dist/src/backend/services/session-file-logger.service.test.js +107 -1
  400. package/dist/src/backend/services/session-file-logger.service.test.js.map +1 -1
  401. package/dist/src/backend/services/session.process-manager.d.ts +47 -0
  402. package/dist/src/backend/services/session.process-manager.d.ts.map +1 -0
  403. package/dist/src/backend/services/session.process-manager.js +188 -0
  404. package/dist/src/backend/services/session.process-manager.js.map +1 -0
  405. package/dist/src/backend/services/session.process-manager.test.d.ts +2 -0
  406. package/dist/src/backend/services/session.process-manager.test.d.ts.map +1 -0
  407. package/dist/src/backend/services/session.process-manager.test.js +55 -0
  408. package/dist/src/backend/services/session.process-manager.test.js.map +1 -0
  409. package/dist/src/backend/services/session.prompt-builder.d.ts +26 -0
  410. package/dist/src/backend/services/session.prompt-builder.d.ts.map +1 -0
  411. package/dist/src/backend/services/session.prompt-builder.js +24 -0
  412. package/dist/src/backend/services/session.prompt-builder.js.map +1 -0
  413. package/dist/src/backend/services/session.prompt-builder.test.d.ts +2 -0
  414. package/dist/src/backend/services/session.prompt-builder.test.d.ts.map +1 -0
  415. package/dist/src/backend/services/session.prompt-builder.test.js +89 -0
  416. package/dist/src/backend/services/session.prompt-builder.test.js.map +1 -0
  417. package/dist/src/backend/services/session.repository.d.ts +28 -0
  418. package/dist/src/backend/services/session.repository.d.ts.map +1 -0
  419. package/dist/src/backend/services/session.repository.js +31 -0
  420. package/dist/src/backend/services/session.repository.js.map +1 -0
  421. package/dist/src/backend/services/session.service.d.ts +21 -5
  422. package/dist/src/backend/services/session.service.d.ts.map +1 -1
  423. package/dist/src/backend/services/session.service.js +180 -197
  424. package/dist/src/backend/services/session.service.js.map +1 -1
  425. package/dist/src/backend/services/session.service.test.d.ts +2 -0
  426. package/dist/src/backend/services/session.service.test.d.ts.map +1 -0
  427. package/dist/src/backend/services/session.service.test.js +173 -0
  428. package/dist/src/backend/services/session.service.test.js.map +1 -0
  429. package/dist/src/backend/services/slash-command-cache.service.d.ts +8 -0
  430. package/dist/src/backend/services/slash-command-cache.service.d.ts.map +1 -0
  431. package/dist/src/backend/services/slash-command-cache.service.js +89 -0
  432. package/dist/src/backend/services/slash-command-cache.service.js.map +1 -0
  433. package/dist/src/backend/services/startup-script.service.d.ts +1 -0
  434. package/dist/src/backend/services/startup-script.service.d.ts.map +1 -1
  435. package/dist/src/backend/services/startup-script.service.js +42 -2
  436. package/dist/src/backend/services/startup-script.service.js.map +1 -1
  437. package/dist/src/backend/services/workspace-query.service.d.ts +140 -0
  438. package/dist/src/backend/services/workspace-query.service.d.ts.map +1 -0
  439. package/dist/src/backend/services/workspace-query.service.js +247 -0
  440. package/dist/src/backend/services/workspace-query.service.js.map +1 -0
  441. package/dist/src/backend/services/worktree-lifecycle-init.test.d.ts +2 -0
  442. package/dist/src/backend/services/worktree-lifecycle-init.test.d.ts.map +1 -0
  443. package/dist/src/backend/services/worktree-lifecycle-init.test.js +198 -0
  444. package/dist/src/backend/services/worktree-lifecycle-init.test.js.map +1 -0
  445. package/dist/src/backend/services/worktree-lifecycle.service.d.ts +68 -0
  446. package/dist/src/backend/services/worktree-lifecycle.service.d.ts.map +1 -0
  447. package/dist/src/backend/services/worktree-lifecycle.service.js +481 -0
  448. package/dist/src/backend/services/worktree-lifecycle.service.js.map +1 -0
  449. package/dist/src/backend/services/worktree-lifecycle.service.test.d.ts +2 -0
  450. package/dist/src/backend/services/worktree-lifecycle.service.test.d.ts.map +1 -0
  451. package/dist/src/backend/services/worktree-lifecycle.service.test.js +36 -0
  452. package/dist/src/backend/services/worktree-lifecycle.service.test.js.map +1 -0
  453. package/dist/src/backend/trpc/admin.trpc.d.ts +200 -5
  454. package/dist/src/backend/trpc/admin.trpc.d.ts.map +1 -1
  455. package/dist/src/backend/trpc/admin.trpc.js +42 -9
  456. package/dist/src/backend/trpc/admin.trpc.js.map +1 -1
  457. package/dist/src/backend/trpc/decision-log.trpc.d.ts +4 -7
  458. package/dist/src/backend/trpc/decision-log.trpc.d.ts.map +1 -1
  459. package/dist/src/backend/trpc/github.trpc.d.ts +52 -0
  460. package/dist/src/backend/trpc/github.trpc.d.ts.map +1 -0
  461. package/dist/src/backend/trpc/github.trpc.js +87 -0
  462. package/dist/src/backend/trpc/github.trpc.js.map +1 -0
  463. package/dist/src/backend/trpc/index.d.ts +660 -138
  464. package/dist/src/backend/trpc/index.d.ts.map +1 -1
  465. package/dist/src/backend/trpc/index.js +2 -0
  466. package/dist/src/backend/trpc/index.js.map +1 -1
  467. package/dist/src/backend/trpc/pr-review.trpc.d.ts +1 -4
  468. package/dist/src/backend/trpc/pr-review.trpc.d.ts.map +1 -1
  469. package/dist/src/backend/trpc/pr-review.trpc.js +12 -11
  470. package/dist/src/backend/trpc/pr-review.trpc.js.map +1 -1
  471. package/dist/src/backend/trpc/procedures/project-scoped.d.ts +2 -4
  472. package/dist/src/backend/trpc/procedures/project-scoped.d.ts.map +1 -1
  473. package/dist/src/backend/trpc/project.trpc.d.ts +46 -10
  474. package/dist/src/backend/trpc/project.trpc.d.ts.map +1 -1
  475. package/dist/src/backend/trpc/project.trpc.js +64 -2
  476. package/dist/src/backend/trpc/project.trpc.js.map +1 -1
  477. package/dist/src/backend/trpc/session.trpc.d.ts +98 -57
  478. package/dist/src/backend/trpc/session.trpc.d.ts.map +1 -1
  479. package/dist/src/backend/trpc/session.trpc.js +12 -10
  480. package/dist/src/backend/trpc/session.trpc.js.map +1 -1
  481. package/dist/src/backend/trpc/trpc.d.ts +4 -3
  482. package/dist/src/backend/trpc/trpc.d.ts.map +1 -1
  483. package/dist/src/backend/trpc/trpc.js +2 -1
  484. package/dist/src/backend/trpc/trpc.js.map +1 -1
  485. package/dist/src/backend/trpc/user-settings.trpc.d.ts +55 -4
  486. package/dist/src/backend/trpc/user-settings.trpc.d.ts.map +1 -1
  487. package/dist/src/backend/trpc/user-settings.trpc.js +39 -1
  488. package/dist/src/backend/trpc/user-settings.trpc.js.map +1 -1
  489. package/dist/src/backend/trpc/workspace/files.trpc.d.ts +2 -4
  490. package/dist/src/backend/trpc/workspace/files.trpc.d.ts.map +1 -1
  491. package/dist/src/backend/trpc/workspace/files.trpc.js +4 -3
  492. package/dist/src/backend/trpc/workspace/files.trpc.js.map +1 -1
  493. package/dist/src/backend/trpc/workspace/git.trpc.d.ts +2 -4
  494. package/dist/src/backend/trpc/workspace/git.trpc.d.ts.map +1 -1
  495. package/dist/src/backend/trpc/workspace/git.trpc.js +4 -3
  496. package/dist/src/backend/trpc/workspace/git.trpc.js.map +1 -1
  497. package/dist/src/backend/trpc/workspace/ide.trpc.d.ts +1 -4
  498. package/dist/src/backend/trpc/workspace/ide.trpc.d.ts.map +1 -1
  499. package/dist/src/backend/trpc/workspace/init.trpc.d.ts +27 -14
  500. package/dist/src/backend/trpc/workspace/init.trpc.d.ts.map +1 -1
  501. package/dist/src/backend/trpc/workspace/init.trpc.js +20 -106
  502. package/dist/src/backend/trpc/workspace/init.trpc.js.map +1 -1
  503. package/dist/src/backend/trpc/workspace/run-script.trpc.d.ts +1 -4
  504. package/dist/src/backend/trpc/workspace/run-script.trpc.d.ts.map +1 -1
  505. package/dist/src/backend/trpc/workspace/run-script.trpc.js +5 -8
  506. package/dist/src/backend/trpc/workspace/run-script.trpc.js.map +1 -1
  507. package/dist/src/backend/trpc/workspace/workspace-helpers.d.ts +34 -12
  508. package/dist/src/backend/trpc/workspace/workspace-helpers.d.ts.map +1 -1
  509. package/dist/src/backend/trpc/workspace.trpc.d.ts +207 -48
  510. package/dist/src/backend/trpc/workspace.trpc.d.ts.map +1 -1
  511. package/dist/src/backend/trpc/workspace.trpc.js +93 -235
  512. package/dist/src/backend/trpc/workspace.trpc.js.map +1 -1
  513. package/dist/src/backend/types/server-instance.d.ts +8 -0
  514. package/dist/src/backend/types/server-instance.d.ts.map +1 -0
  515. package/dist/src/backend/types/server-instance.js +2 -0
  516. package/dist/src/backend/types/server-instance.js.map +1 -0
  517. package/dist/src/cli/index.js +61 -43
  518. package/dist/src/cli/index.js.map +1 -1
  519. package/dist/src/shared/claude/index.d.ts +2 -0
  520. package/dist/src/shared/claude/index.d.ts.map +1 -0
  521. package/dist/src/shared/claude/index.js +2 -0
  522. package/dist/src/shared/claude/index.js.map +1 -0
  523. package/dist/src/{lib/claude-types.d.ts → shared/claude/protocol.d.ts} +4 -87
  524. package/dist/src/shared/claude/protocol.d.ts.map +1 -0
  525. package/dist/src/shared/claude/protocol.js +32 -0
  526. package/dist/src/shared/claude/protocol.js.map +1 -0
  527. package/dist/src/shared/github-types.d.ts +1 -0
  528. package/dist/src/shared/github-types.d.ts.map +1 -1
  529. package/dist/src/{backend/schemas → shared}/websocket/chat-message.schema.d.ts +23 -0
  530. package/dist/src/shared/websocket/chat-message.schema.d.ts.map +1 -0
  531. package/dist/src/{backend/schemas → shared}/websocket/chat-message.schema.js +3 -2
  532. package/dist/src/shared/websocket/chat-message.schema.js.map +1 -0
  533. package/dist/src/shared/websocket/index.d.ts +2 -0
  534. package/dist/src/shared/websocket/index.d.ts.map +1 -0
  535. package/dist/src/shared/websocket/index.js +2 -0
  536. package/dist/src/shared/websocket/index.js.map +1 -0
  537. package/dist/src/shared/workspace-words.d.ts +4 -0
  538. package/dist/src/shared/workspace-words.d.ts.map +1 -0
  539. package/dist/src/shared/workspace-words.js +68 -0
  540. package/dist/src/shared/workspace-words.js.map +1 -0
  541. package/dist/tsconfig.backend.tsbuildinfo +1 -1
  542. package/package.json +24 -13
  543. package/prisma/migrations/20260202150527_add_notification_sound_path/migration.sql +2 -0
  544. package/prisma/migrations/20260202172937_add_auto_fix_ci_issues_setting/migration.sql +21 -0
  545. package/prisma/migrations/20260203120000_add_cached_slash_commands/migration.sql +20 -0
  546. package/prisma/migrations/20260203190000_add_workspace_order/migration.sql +2 -0
  547. package/prisma/migrations/20260204000000_add_init_output/migration.sql +2 -0
  548. package/prisma/migrations/20260204180116_watch_prs/migration.sql +90 -0
  549. package/prisma/migrations/20260204200000_simplify_kanban_columns/migration.sql +72 -0
  550. package/prisma/migrations/20260204210000_add_workspace_ratchet_enabled/migration.sql +2 -0
  551. package/prisma/migrations/20260205000000_add_is_auto_generated_branch/migration.sql +2 -0
  552. package/prisma/migrations/20260205012721_add_ratchet_last_push_at/migration.sql +2 -0
  553. package/prisma/schema.prisma +57 -13
  554. package/prompts/workflows/ci-fix.md +52 -0
  555. package/prompts/workflows/pr-review-fix.md +61 -0
  556. package/prompts/workflows/ratchet.md +83 -0
  557. package/dist/client/assets/channel-CSRLM5uf.js +0 -1
  558. package/dist/client/assets/classDiagram-2ON5EDUG-Bq8cRujI.js +0 -1
  559. package/dist/client/assets/classDiagram-v2-WZHVMYZB-Bq8cRujI.js +0 -1
  560. package/dist/client/assets/clone-CM-lZVxH.js +0 -1
  561. package/dist/client/assets/index-BH_6oh9T.js +0 -389
  562. package/dist/client/assets/index-C0yWBGfE.css +0 -1
  563. package/dist/client/assets/stateDiagram-v2-4FDKWEC3-G6JS4dBh.js +0 -1
  564. package/dist/src/backend/schemas/websocket/chat-message.schema.d.ts.map +0 -1
  565. package/dist/src/backend/schemas/websocket/chat-message.schema.js.map +0 -1
  566. package/dist/src/lib/claude-types.d.ts.map +0 -1
  567. package/dist/src/lib/claude-types.js +0 -338
  568. package/dist/src/lib/claude-types.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "factory-factory",
3
- "version": "0.1.5",
3
+ "version": "0.2.0",
4
4
  "description": "Workspace-based coding environment for running multiple Claude Code sessions in parallel",
5
5
  "private": false,
6
6
  "license": "MIT",
@@ -41,6 +41,7 @@
41
41
  "scripts": {
42
42
  "dev": "node scripts/ensure-native-modules.mjs node && tsx src/cli/index.ts serve --dev",
43
43
  "build": "tsc -p tsconfig.backend.json && tsc-alias -p tsconfig.backend.json --resolve-full-paths && cp -r prompts dist/ && vite build",
44
+ "build:storybook": "storybook build",
44
45
  "start": "node scripts/ensure-native-modules.mjs node && tsx src/cli/index.ts serve",
45
46
  "test": "vitest run",
46
47
  "test:watch": "vitest",
@@ -64,6 +65,9 @@
64
65
  "knip": "knip --include files,dependencies,unlisted"
65
66
  },
66
67
  "dependencies": {
68
+ "@dnd-kit/core": "^6.3.1",
69
+ "@dnd-kit/sortable": "^10.0.0",
70
+ "@dnd-kit/utilities": "^3.2.2",
67
71
  "@hookform/resolvers": "^5.2.2",
68
72
  "@prisma/adapter-better-sqlite3": "^7.3.0",
69
73
  "@prisma/client": "^7.3.0",
@@ -126,10 +130,12 @@
126
130
  "react-dom": "^19.2.4",
127
131
  "react-hook-form": "^7.71.1",
128
132
  "react-markdown": "^10.1.0",
129
- "react-resizable-panels": "^4.5.7",
133
+ "react-resizable-panels": "^4.5.9",
130
134
  "react-router": "^7.13.0",
131
135
  "react-syntax-highlighter": "^16.1.0",
132
136
  "recharts": "3.7.0",
137
+ "rehype-raw": "^7.0.0",
138
+ "rehype-sanitize": "^6.0.0",
133
139
  "remark-gfm": "^4.0.1",
134
140
  "sonner": "^2.0.7",
135
141
  "superjson": "^2.2.6",
@@ -146,9 +152,13 @@
146
152
  ]
147
153
  },
148
154
  "pnpm": {
155
+ "publicHoistPattern": [
156
+ "@types/*"
157
+ ],
149
158
  "onlyBuiltDependencies": [
150
159
  "@prisma/engines",
151
160
  "better-sqlite3",
161
+ "electron",
152
162
  "esbuild",
153
163
  "node-pty",
154
164
  "prisma",
@@ -156,6 +166,7 @@
156
166
  "sharp"
157
167
  ],
158
168
  "overrides": {
169
+ "@isaacs/brace-expansion": ">=5.0.1",
159
170
  "braces": ">=3.0.3",
160
171
  "micromatch": ">=4.0.8",
161
172
  "tar": ">=7.5.0",
@@ -169,37 +180,37 @@
169
180
  },
170
181
  "devDependencies": {
171
182
  "@biomejs/biome": "^2.3.13",
172
- "@electron/rebuild": "^4.0.2",
173
- "@storybook/addon-a11y": "10.2.3",
174
- "@storybook/addon-docs": "10.2.3",
183
+ "@electron/rebuild": "^4.0.3",
184
+ "@storybook/addon-a11y": "10.2.4",
185
+ "@storybook/addon-docs": "10.2.4",
175
186
  "@storybook/addon-mcp": "^0.2.2",
176
- "@storybook/addon-themes": "10.2.3",
177
- "@storybook/react": "10.2.3",
178
- "@storybook/react-vite": "10.2.3",
187
+ "@storybook/addon-themes": "10.2.4",
188
+ "@storybook/react": "10.2.4",
189
+ "@storybook/react-vite": "10.2.4",
179
190
  "@tailwindcss/vite": "^4.1.18",
180
191
  "@types/better-sqlite3": "^7.6.13",
181
192
  "@types/express": "^5.0.6",
182
- "@types/node": "^25.1.0",
193
+ "@types/node": "^25.2.0",
183
194
  "@types/pidusage": "^2.0.5",
184
195
  "@types/react": "^19.2.10",
185
196
  "@types/react-dom": "^19.2.3",
186
197
  "@types/react-syntax-highlighter": "^15.5.13",
187
198
  "@types/supertest": "^6.0.3",
188
199
  "@types/ws": "^8.18.1",
189
- "@vitejs/plugin-react": "^5.1.2",
200
+ "@vitejs/plugin-react": "^5.1.3",
190
201
  "@vitest/coverage-v8": "^4.0.18",
191
202
  "autoprefixer": "^10.4.24",
192
- "concurrently": "^9.1.0",
203
+ "concurrently": "^9.2.1",
193
204
  "dependency-cruiser": "^17.3.7",
194
205
  "electron": "^40.1.0",
195
206
  "electron-builder": "^26.7.0",
196
207
  "husky": "^9.1.7",
197
- "knip": "^5.82.1",
208
+ "knip": "^5.83.0",
198
209
  "lint-staged": "^16.2.7",
199
210
  "next-themes": "^0.4.6",
200
211
  "postcss": "^8.5.6",
201
212
  "prisma": "^7.3.0",
202
- "storybook": "10.2.3",
213
+ "storybook": "10.2.4",
203
214
  "supertest": "^7.2.2",
204
215
  "tailwindcss": "^4.1.18",
205
216
  "tsc-alias": "^1.8.16",
@@ -0,0 +1,2 @@
1
+ -- AlterTable
2
+ ALTER TABLE "UserSettings" ADD COLUMN "notificationSoundPath" TEXT;
@@ -0,0 +1,21 @@
1
+ -- RedefineTables
2
+ PRAGMA defer_foreign_keys=ON;
3
+ PRAGMA foreign_keys=OFF;
4
+ CREATE TABLE "new_UserSettings" (
5
+ "id" TEXT NOT NULL PRIMARY KEY,
6
+ "userId" TEXT NOT NULL DEFAULT 'default',
7
+ "preferredIde" TEXT NOT NULL DEFAULT 'cursor',
8
+ "customIdeCommand" TEXT,
9
+ "notificationSoundPath" TEXT,
10
+ "playSoundOnComplete" BOOLEAN NOT NULL DEFAULT true,
11
+ "autoFixCiIssues" BOOLEAN NOT NULL DEFAULT false,
12
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
13
+ "updatedAt" DATETIME NOT NULL
14
+ );
15
+ INSERT INTO "new_UserSettings" ("createdAt", "customIdeCommand", "id", "notificationSoundPath", "preferredIde", "updatedAt", "userId") SELECT "createdAt", "customIdeCommand", "id", "notificationSoundPath", "preferredIde", "updatedAt", "userId" FROM "UserSettings";
16
+ DROP TABLE "UserSettings";
17
+ ALTER TABLE "new_UserSettings" RENAME TO "UserSettings";
18
+ CREATE UNIQUE INDEX "UserSettings_userId_key" ON "UserSettings"("userId");
19
+ CREATE INDEX "UserSettings_userId_idx" ON "UserSettings"("userId");
20
+ PRAGMA foreign_keys=ON;
21
+ PRAGMA defer_foreign_keys=OFF;
@@ -0,0 +1,20 @@
1
+ -- RedefineTables
2
+ PRAGMA defer_foreign_keys=ON;
3
+ PRAGMA foreign_keys=OFF;
4
+ CREATE TABLE "new_UserSettings" (
5
+ "id" TEXT NOT NULL PRIMARY KEY,
6
+ "userId" TEXT NOT NULL DEFAULT 'default',
7
+ "preferredIde" TEXT NOT NULL DEFAULT 'cursor',
8
+ "customIdeCommand" TEXT,
9
+ "playSoundOnComplete" BOOLEAN NOT NULL DEFAULT true,
10
+ "cachedSlashCommands" TEXT,
11
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
12
+ "updatedAt" DATETIME NOT NULL
13
+ );
14
+ INSERT INTO "new_UserSettings" ("createdAt", "customIdeCommand", "id", "playSoundOnComplete", "preferredIde", "updatedAt", "userId") SELECT "createdAt", "customIdeCommand", "id", "playSoundOnComplete", "preferredIde", "updatedAt", "userId" FROM "UserSettings";
15
+ DROP TABLE "UserSettings";
16
+ ALTER TABLE "new_UserSettings" RENAME TO "UserSettings";
17
+ CREATE UNIQUE INDEX "UserSettings_userId_key" ON "UserSettings"("userId");
18
+ CREATE INDEX "UserSettings_userId_idx" ON "UserSettings"("userId");
19
+ PRAGMA foreign_keys=ON;
20
+ PRAGMA defer_foreign_keys=OFF;
@@ -0,0 +1,2 @@
1
+ -- AlterTable
2
+ ALTER TABLE "UserSettings" ADD COLUMN "workspaceOrder" TEXT;
@@ -0,0 +1,2 @@
1
+ -- AlterTable
2
+ ALTER TABLE "Workspace" ADD COLUMN "initOutput" TEXT;
@@ -0,0 +1,90 @@
1
+ /*
2
+ Warnings:
3
+
4
+ - You are about to alter the column `cachedSlashCommands` on the `UserSettings` table. The data in that column could be lost. The data in that column will be cast from `String` to `Json`.
5
+ - You are about to alter the column `workspaceOrder` on the `UserSettings` table. The data in that column could be lost. The data in that column will be cast from `String` to `Json`.
6
+
7
+ */
8
+ -- RedefineTables
9
+ PRAGMA defer_foreign_keys=ON;
10
+ PRAGMA foreign_keys=OFF;
11
+ CREATE TABLE "new_UserSettings" (
12
+ "id" TEXT NOT NULL PRIMARY KEY,
13
+ "userId" TEXT NOT NULL DEFAULT 'default',
14
+ "preferredIde" TEXT NOT NULL DEFAULT 'cursor',
15
+ "customIdeCommand" TEXT,
16
+ "playSoundOnComplete" BOOLEAN NOT NULL DEFAULT true,
17
+ "notificationSoundPath" TEXT,
18
+ "workspaceOrder" JSONB,
19
+ "cachedSlashCommands" JSONB,
20
+ "autoFixCiIssues" BOOLEAN NOT NULL DEFAULT false,
21
+ "autoFixPrReviewComments" BOOLEAN NOT NULL DEFAULT false,
22
+ "prReviewFixAllowedUsers" JSONB,
23
+ "prReviewFixPrompt" TEXT,
24
+ "ratchetEnabled" BOOLEAN NOT NULL DEFAULT false,
25
+ "ratchetAutoFixCi" BOOLEAN NOT NULL DEFAULT true,
26
+ "ratchetAutoFixConflicts" BOOLEAN NOT NULL DEFAULT true,
27
+ "ratchetAutoFixReviews" BOOLEAN NOT NULL DEFAULT true,
28
+ "ratchetAutoMerge" BOOLEAN NOT NULL DEFAULT false,
29
+ "ratchetAllowedReviewers" JSONB,
30
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
31
+ "updatedAt" DATETIME NOT NULL
32
+ );
33
+ INSERT INTO "new_UserSettings" ("cachedSlashCommands", "createdAt", "customIdeCommand", "id", "playSoundOnComplete", "preferredIde", "updatedAt", "userId", "workspaceOrder") SELECT "cachedSlashCommands", "createdAt", "customIdeCommand", "id", "playSoundOnComplete", "preferredIde", "updatedAt", "userId", "workspaceOrder" FROM "UserSettings";
34
+ DROP TABLE "UserSettings";
35
+ ALTER TABLE "new_UserSettings" RENAME TO "UserSettings";
36
+ CREATE UNIQUE INDEX "UserSettings_userId_key" ON "UserSettings"("userId");
37
+ CREATE INDEX "UserSettings_userId_idx" ON "UserSettings"("userId");
38
+ CREATE TABLE "new_Workspace" (
39
+ "id" TEXT NOT NULL PRIMARY KEY,
40
+ "projectId" TEXT NOT NULL,
41
+ "name" TEXT NOT NULL,
42
+ "description" TEXT,
43
+ "status" TEXT NOT NULL DEFAULT 'NEW',
44
+ "worktreePath" TEXT,
45
+ "branchName" TEXT,
46
+ "initErrorMessage" TEXT,
47
+ "initOutput" TEXT,
48
+ "initStartedAt" DATETIME,
49
+ "initCompletedAt" DATETIME,
50
+ "initRetryCount" INTEGER NOT NULL DEFAULT 0,
51
+ "runScriptCommand" TEXT,
52
+ "runScriptCleanupCommand" TEXT,
53
+ "runScriptPid" INTEGER,
54
+ "runScriptPort" INTEGER,
55
+ "runScriptStartedAt" DATETIME,
56
+ "runScriptStatus" TEXT NOT NULL DEFAULT 'IDLE',
57
+ "prUrl" TEXT,
58
+ "githubIssueNumber" INTEGER,
59
+ "githubIssueUrl" TEXT,
60
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
61
+ "updatedAt" DATETIME NOT NULL,
62
+ "prNumber" INTEGER,
63
+ "prState" TEXT NOT NULL DEFAULT 'NONE',
64
+ "prReviewState" TEXT,
65
+ "prCiStatus" TEXT NOT NULL DEFAULT 'UNKNOWN',
66
+ "prUpdatedAt" DATETIME,
67
+ "prCiFailedAt" DATETIME,
68
+ "prCiLastNotifiedAt" DATETIME,
69
+ "prReviewLastCheckedAt" DATETIME,
70
+ "prReviewLastCommentId" TEXT,
71
+ "ratchetState" TEXT NOT NULL DEFAULT 'IDLE',
72
+ "ratchetLastCheckedAt" DATETIME,
73
+ "ratchetActiveSessionId" TEXT,
74
+ "ratchetLastCiRunId" TEXT,
75
+ "ratchetLastNotifiedState" TEXT,
76
+ "hasHadSessions" BOOLEAN NOT NULL DEFAULT false,
77
+ "cachedKanbanColumn" TEXT NOT NULL DEFAULT 'BACKLOG',
78
+ "stateComputedAt" DATETIME,
79
+ CONSTRAINT "Workspace_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
80
+ );
81
+ INSERT INTO "new_Workspace" ("branchName", "cachedKanbanColumn", "createdAt", "description", "githubIssueNumber", "githubIssueUrl", "hasHadSessions", "id", "initCompletedAt", "initErrorMessage", "initOutput", "initRetryCount", "initStartedAt", "name", "prCiFailedAt", "prCiLastNotifiedAt", "prCiStatus", "prNumber", "prReviewState", "prState", "prUpdatedAt", "prUrl", "projectId", "runScriptCleanupCommand", "runScriptCommand", "runScriptPid", "runScriptPort", "runScriptStartedAt", "runScriptStatus", "stateComputedAt", "status", "updatedAt", "worktreePath") SELECT "branchName", "cachedKanbanColumn", "createdAt", "description", "githubIssueNumber", "githubIssueUrl", "hasHadSessions", "id", "initCompletedAt", "initErrorMessage", "initOutput", "initRetryCount", "initStartedAt", "name", "prCiFailedAt", "prCiLastNotifiedAt", "prCiStatus", "prNumber", "prReviewState", "prState", "prUpdatedAt", "prUrl", "projectId", "runScriptCleanupCommand", "runScriptCommand", "runScriptPid", "runScriptPort", "runScriptStartedAt", "runScriptStatus", "stateComputedAt", "status", "updatedAt", "worktreePath" FROM "Workspace";
82
+ DROP TABLE "Workspace";
83
+ ALTER TABLE "new_Workspace" RENAME TO "Workspace";
84
+ CREATE INDEX "Workspace_projectId_idx" ON "Workspace"("projectId");
85
+ CREATE INDEX "Workspace_status_idx" ON "Workspace"("status");
86
+ CREATE INDEX "Workspace_cachedKanbanColumn_idx" ON "Workspace"("cachedKanbanColumn");
87
+ CREATE INDEX "Workspace_projectId_status_idx" ON "Workspace"("projectId", "status");
88
+ CREATE INDEX "Workspace_projectId_cachedKanbanColumn_idx" ON "Workspace"("projectId", "cachedKanbanColumn");
89
+ PRAGMA foreign_keys=ON;
90
+ PRAGMA defer_foreign_keys=OFF;
@@ -0,0 +1,72 @@
1
+ -- Simplify KanbanColumn enum from 7 values to 3: WORKING, WAITING, DONE
2
+ -- Migration strategy:
3
+ -- - BACKLOG, IN_PROGRESS -> WORKING (initializing or actively working)
4
+ -- - PR_OPEN, WAITING, APPROVED -> WAITING (idle, waiting for input)
5
+ -- - MERGED, DONE -> DONE (completed)
6
+
7
+ -- Step 1: Update existing cachedKanbanColumn values to new enum values
8
+ UPDATE "Workspace"
9
+ SET "cachedKanbanColumn" = CASE
10
+ WHEN "cachedKanbanColumn" IN ('BACKLOG', 'IN_PROGRESS') THEN 'WORKING'
11
+ WHEN "cachedKanbanColumn" IN ('PR_OPEN', 'WAITING', 'APPROVED') THEN 'WAITING'
12
+ WHEN "cachedKanbanColumn" IN ('MERGED', 'DONE') THEN 'DONE'
13
+ ELSE 'WAITING'
14
+ END;
15
+
16
+ -- Step 2: Recreate table with new default value (WAITING instead of BACKLOG)
17
+ -- RedefineTables
18
+ PRAGMA defer_foreign_keys=ON;
19
+ PRAGMA foreign_keys=OFF;
20
+ CREATE TABLE "new_Workspace" (
21
+ "id" TEXT NOT NULL PRIMARY KEY,
22
+ "projectId" TEXT NOT NULL,
23
+ "name" TEXT NOT NULL,
24
+ "description" TEXT,
25
+ "status" TEXT NOT NULL DEFAULT 'NEW',
26
+ "worktreePath" TEXT,
27
+ "branchName" TEXT,
28
+ "initErrorMessage" TEXT,
29
+ "initOutput" TEXT,
30
+ "initStartedAt" DATETIME,
31
+ "initCompletedAt" DATETIME,
32
+ "initRetryCount" INTEGER NOT NULL DEFAULT 0,
33
+ "runScriptCommand" TEXT,
34
+ "runScriptCleanupCommand" TEXT,
35
+ "runScriptPid" INTEGER,
36
+ "runScriptPort" INTEGER,
37
+ "runScriptStartedAt" DATETIME,
38
+ "runScriptStatus" TEXT NOT NULL DEFAULT 'IDLE',
39
+ "prUrl" TEXT,
40
+ "githubIssueNumber" INTEGER,
41
+ "githubIssueUrl" TEXT,
42
+ "createdAt" DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
43
+ "updatedAt" DATETIME NOT NULL,
44
+ "prNumber" INTEGER,
45
+ "prState" TEXT NOT NULL DEFAULT 'NONE',
46
+ "prReviewState" TEXT,
47
+ "prCiStatus" TEXT NOT NULL DEFAULT 'UNKNOWN',
48
+ "prUpdatedAt" DATETIME,
49
+ "prCiFailedAt" DATETIME,
50
+ "prCiLastNotifiedAt" DATETIME,
51
+ "prReviewLastCheckedAt" DATETIME,
52
+ "prReviewLastCommentId" TEXT,
53
+ "ratchetState" TEXT NOT NULL DEFAULT 'IDLE',
54
+ "ratchetLastCheckedAt" DATETIME,
55
+ "ratchetActiveSessionId" TEXT,
56
+ "ratchetLastCiRunId" TEXT,
57
+ "ratchetLastNotifiedState" TEXT,
58
+ "hasHadSessions" BOOLEAN NOT NULL DEFAULT false,
59
+ "cachedKanbanColumn" TEXT NOT NULL DEFAULT 'WAITING',
60
+ "stateComputedAt" DATETIME,
61
+ CONSTRAINT "Workspace_projectId_fkey" FOREIGN KEY ("projectId") REFERENCES "Project" ("id") ON DELETE RESTRICT ON UPDATE CASCADE
62
+ );
63
+ INSERT INTO "new_Workspace" ("branchName", "cachedKanbanColumn", "createdAt", "description", "githubIssueNumber", "githubIssueUrl", "hasHadSessions", "id", "initCompletedAt", "initErrorMessage", "initOutput", "initRetryCount", "initStartedAt", "name", "prCiFailedAt", "prCiLastNotifiedAt", "prCiStatus", "prNumber", "prReviewLastCheckedAt", "prReviewLastCommentId", "prReviewState", "prState", "prUpdatedAt", "prUrl", "projectId", "ratchetActiveSessionId", "ratchetLastCheckedAt", "ratchetLastCiRunId", "ratchetLastNotifiedState", "ratchetState", "runScriptCleanupCommand", "runScriptCommand", "runScriptPid", "runScriptPort", "runScriptStartedAt", "runScriptStatus", "stateComputedAt", "status", "updatedAt", "worktreePath") SELECT "branchName", "cachedKanbanColumn", "createdAt", "description", "githubIssueNumber", "githubIssueUrl", "hasHadSessions", "id", "initCompletedAt", "initErrorMessage", "initOutput", "initRetryCount", "initStartedAt", "name", "prCiFailedAt", "prCiLastNotifiedAt", "prCiStatus", "prNumber", "prReviewLastCheckedAt", "prReviewLastCommentId", "prReviewState", "prState", "prUpdatedAt", "prUrl", "projectId", "ratchetActiveSessionId", "ratchetLastCheckedAt", "ratchetLastCiRunId", "ratchetLastNotifiedState", "ratchetState", "runScriptCleanupCommand", "runScriptCommand", "runScriptPid", "runScriptPort", "runScriptStartedAt", "runScriptStatus", "stateComputedAt", "status", "updatedAt", "worktreePath" FROM "Workspace";
64
+ DROP TABLE "Workspace";
65
+ ALTER TABLE "new_Workspace" RENAME TO "Workspace";
66
+ CREATE INDEX "Workspace_projectId_idx" ON "Workspace"("projectId");
67
+ CREATE INDEX "Workspace_status_idx" ON "Workspace"("status");
68
+ CREATE INDEX "Workspace_cachedKanbanColumn_idx" ON "Workspace"("cachedKanbanColumn");
69
+ CREATE INDEX "Workspace_projectId_status_idx" ON "Workspace"("projectId", "status");
70
+ CREATE INDEX "Workspace_projectId_cachedKanbanColumn_idx" ON "Workspace"("projectId", "cachedKanbanColumn");
71
+ PRAGMA foreign_keys=ON;
72
+ PRAGMA defer_foreign_keys=OFF;
@@ -0,0 +1,2 @@
1
+ -- AlterTable
2
+ ALTER TABLE "Workspace" ADD COLUMN "ratchetEnabled" BOOLEAN NOT NULL DEFAULT true;
@@ -0,0 +1,2 @@
1
+ -- AlterTable
2
+ ALTER TABLE "Workspace" ADD COLUMN "isAutoGeneratedBranch" BOOLEAN NOT NULL DEFAULT false;
@@ -0,0 +1,2 @@
1
+ -- AlterTable
2
+ ALTER TABLE "Workspace" ADD COLUMN "ratchetLastPushAt" DATETIME;
@@ -46,15 +46,21 @@ enum CIStatus {
46
46
  }
47
47
 
48
48
  enum KanbanColumn {
49
- BACKLOG
50
- IN_PROGRESS
49
+ WORKING
51
50
  WAITING
52
- PR_OPEN
53
- APPROVED
54
- MERGED
55
51
  DONE
56
52
  }
57
53
 
54
+ enum RatchetState {
55
+ IDLE // No PR or ratchet not active for this workspace
56
+ CI_RUNNING // CI checks in progress
57
+ CI_FAILED // CI checks failed
58
+ MERGE_CONFLICT // Has merge conflicts with base branch
59
+ REVIEW_PENDING // Has unaddressed review comments
60
+ READY // Ready to merge (CI green, no conflicts, no pending reviews)
61
+ MERGED // PR has been merged
62
+ }
63
+
58
64
 
59
65
  // Models
60
66
  model Project {
@@ -104,9 +110,11 @@ model Workspace {
104
110
  status WorkspaceStatus @default(NEW)
105
111
  worktreePath String?
106
112
  branchName String?
113
+ isAutoGeneratedBranch Boolean @default(false) // True if branch was auto-generated at creation time
107
114
 
108
115
  // Initialization tracking (used by NEW, PROVISIONING, FAILED states)
109
116
  initErrorMessage String?
117
+ initOutput String? // Accumulated stdout/stderr from startup script
110
118
  initStartedAt DateTime?
111
119
  initCompletedAt DateTime?
112
120
  initRetryCount Int @default(0)
@@ -138,11 +146,24 @@ model Workspace {
138
146
  prCiFailedAt DateTime? // When CI first failed (cleared on success)
139
147
  prCiLastNotifiedAt DateTime? // Last time we notified about CI failure
140
148
 
149
+ // PR Review tracking
150
+ prReviewLastCheckedAt DateTime? // When PR review comments were last checked
151
+ prReviewLastCommentId String? // ID of the last processed review comment
152
+
153
+ // Ratchet tracking (centralized PR progression)
154
+ ratchetEnabled Boolean @default(true) // Workspace-level ratchet toggle
155
+ ratchetState RatchetState @default(IDLE) // Current state in the ratchet progression
156
+ ratchetLastCheckedAt DateTime? // When ratchet last checked this workspace
157
+ ratchetLastPushAt DateTime? // When a push was last detected (for temporary ratchet animation)
158
+ ratchetActiveSessionId String? // ID of active fixer session (if any)
159
+ ratchetLastCiRunId String? // Track which CI run we processed
160
+ ratchetLastNotifiedState RatchetState? // Last state we notified the fixer about
161
+
141
162
  // Activity tracking
142
163
  hasHadSessions Boolean @default(false)
143
164
 
144
165
  // Cached kanban column (for list performance)
145
- cachedKanbanColumn KanbanColumn @default(BACKLOG)
166
+ cachedKanbanColumn KanbanColumn @default(WAITING)
146
167
  stateComputedAt DateTime? // Last kanban column computation
147
168
 
148
169
  @@index([projectId])
@@ -185,18 +206,41 @@ model TerminalSession {
185
206
  }
186
207
 
187
208
  model UserSettings {
188
- id String @id @default(cuid())
189
- userId String @default("default") @unique // Single user for now, expandable later
209
+ id String @id @default(cuid())
210
+ userId String @default("default") @unique // Single user for now, expandable later
190
211
 
191
212
  // IDE Settings
192
- preferredIde String @default("cursor") // "cursor" | "vscode" | "custom"
193
- customIdeCommand String? // For custom IDE, supports placeholders like {workspace}
213
+ preferredIde String @default("cursor") // "cursor" | "vscode" | "custom"
214
+ customIdeCommand String? // For custom IDE, supports placeholders like {workspace}
194
215
 
195
216
  // Notification Settings
196
- playSoundOnComplete Boolean @default(true) // Play sound when workspace completes
217
+ playSoundOnComplete Boolean @default(true) // Play sound when workspace completes
218
+ notificationSoundPath String? // Path to custom notification sound file
219
+
220
+ // Sidebar Settings
221
+ workspaceOrder Json? // { [projectId]: string[] } - ordered workspace IDs per project
222
+
223
+ // Cached slash commands (from Claude CLI initialize response)
224
+ cachedSlashCommands Json?
225
+
226
+ // CI Settings (deprecated - use ratchet settings)
227
+ autoFixCiIssues Boolean @default(false) // Global toggle for CI auto-fixing
228
+
229
+ // PR Review Auto-Fix Settings (deprecated - use ratchet settings)
230
+ autoFixPrReviewComments Boolean @default(false) // Global toggle for PR review auto-fixing
231
+ prReviewFixAllowedUsers Json? // Array of GitHub usernames whose comments trigger auto-fix
232
+ prReviewFixPrompt String? // Custom instructions for the PR review fixing session
233
+
234
+ // Ratchet Settings (unified PR progression)
235
+ ratchetEnabled Boolean @default(false) // Default for new GitHub-issue-created workspaces
236
+ ratchetAutoFixCi Boolean @default(true) // Auto-fix CI failures
237
+ ratchetAutoFixConflicts Boolean @default(true) // Auto-resolve merge conflicts
238
+ ratchetAutoFixReviews Boolean @default(true) // Auto-address review comments
239
+ ratchetAutoMerge Boolean @default(false) // Auto-merge when ready
240
+ ratchetAllowedReviewers Json? // GitHub usernames whose reviews trigger auto-fix
197
241
 
198
- createdAt DateTime @default(now())
199
- updatedAt DateTime @updatedAt
242
+ createdAt DateTime @default(now())
243
+ updatedAt DateTime @updatedAt
200
244
 
201
245
  @@index([userId])
202
246
  }
@@ -0,0 +1,52 @@
1
+ ---
2
+ name: CI Fix
3
+ description: Investigate and fix CI failures
4
+ expectsPR: false
5
+ ---
6
+
7
+ # CI Failure Resolution
8
+
9
+ You are investigating and fixing CI failures for this workspace's pull request. Your goal is to get the CI checks passing.
10
+
11
+ ## Workflow Steps
12
+
13
+ ### 1. Understand the Failures
14
+ - Review the CI failure information provided in the initial message
15
+ - Use `gh pr checks <pr-number>` to see current check status
16
+ - Use `gh run view <run-id> --log-failed` to see detailed failure logs
17
+
18
+ ### 2. Diagnose Root Cause
19
+ - Identify which specific tests or checks are failing
20
+ - Understand why each is failing (test logic, code bug, environment issue, flaky test)
21
+ - Prioritize fixes based on impact
22
+
23
+ ### 3. Implement Fixes
24
+ - Fix the underlying issues causing the failures
25
+ - Run failing tests locally to verify your fix works: `pnpm test <test-file>`
26
+ - Keep changes focused on fixing CI - avoid unrelated improvements
27
+
28
+ ### 4. Verify Locally
29
+ - Run the full test suite: `pnpm test`
30
+ - Run type checking: `pnpm typecheck`
31
+ - Run linting: `pnpm check:fix`
32
+
33
+ ### 5. Commit and Push
34
+ - Commit your fixes with clear messages explaining what was fixed
35
+ - Push to the branch: `git push`
36
+ - The CI will automatically re-run
37
+
38
+ ## Guidelines
39
+
40
+ - **Focus on CI failures only**: Don't refactor or improve unrelated code
41
+ - **One fix at a time**: Commit each logical fix separately for easier review
42
+ - **Verify locally first**: Run tests locally before pushing to avoid CI cycles
43
+ - **Handle flaky tests**: If a test is flaky, fix the flakiness rather than just re-running
44
+ - **Communicate blockers**: If you cannot determine the cause of a failure, explain what you've tried
45
+
46
+ ## Common CI Failure Patterns
47
+
48
+ - **Type errors**: Run `pnpm typecheck` and fix any issues
49
+ - **Lint errors**: Run `pnpm check:fix` to auto-fix, then review remaining issues
50
+ - **Test failures**: Read the test output carefully, reproduce locally, fix the code or test
51
+ - **Build failures**: Check for missing dependencies or syntax errors
52
+ - **Timeout issues**: Look for infinite loops or very slow operations
@@ -0,0 +1,61 @@
1
+ ---
2
+ name: PR Review Fix
3
+ description: Address PR review comments and feedback
4
+ expectsPR: false
5
+ ---
6
+
7
+ # PR Review Comment Resolution
8
+
9
+ You are addressing PR review comments for this workspace's pull request. Your goal is to implement the requested changes and satisfy the reviewers.
10
+
11
+ ## Workflow Steps
12
+
13
+ ### 1. Understand the Feedback
14
+ - Review the comments provided in the initial message carefully
15
+ - Pay attention to both inline code comments and general review comments
16
+ - Understand what changes each reviewer is requesting
17
+ - Note any questions or clarifications the reviewer is asking for
18
+
19
+ ### 2. Plan Your Changes
20
+ - Identify which files need to be modified
21
+ - Determine the scope of changes needed
22
+ - Consider if the requested change impacts other parts of the codebase
23
+ - If a request is unclear, make a reasonable interpretation and document your assumptions
24
+
25
+ ### 3. Implement the Changes
26
+ - Address each review comment systematically
27
+ - Make focused changes that directly address the feedback
28
+ - Avoid scope creep - only fix what was requested
29
+ - If you disagree with a suggestion, implement it anyway but note your reasoning in the commit message
30
+
31
+ ### 4. Verify Your Changes
32
+ - Run the test suite: `pnpm test`
33
+ - Run type checking: `pnpm typecheck`
34
+ - Run linting: `pnpm check:fix`
35
+ - Test any affected functionality manually if appropriate
36
+
37
+ ### 5. Commit and Push
38
+ - Commit your changes with clear messages referencing the review feedback
39
+ - Push to the branch: `git push`
40
+ - The reviewers will be notified of your updates
41
+
42
+ ### 6. Request Re-review
43
+ - After pushing your changes, post a comment on the PR asking reviewers to re-review
44
+ - Mention the specific reviewers who left comments using @username
45
+
46
+ ## Guidelines
47
+
48
+ - **Address all comments**: Don't leave any review comment unaddressed
49
+ - **Keep changes focused**: Only change what was requested in the reviews
50
+ - **Test thoroughly**: Make sure your changes don't break existing functionality
51
+ - **Be responsive**: Implement changes promptly to keep the PR moving
52
+ - **Document decisions**: If you make judgment calls, explain your reasoning
53
+
54
+ ## Common Review Comment Types
55
+
56
+ - **Code style**: Follow the project's coding conventions
57
+ - **Bug fix requests**: Understand the bug and fix it properly
58
+ - **Refactoring suggestions**: Implement the cleaner code pattern suggested
59
+ - **Missing tests**: Add tests for the functionality as requested
60
+ - **Documentation**: Add or improve comments and documentation
61
+ - **Logic changes**: Implement the alternative approach suggested
@@ -0,0 +1,83 @@
1
+ ---
2
+ name: Ratchet
3
+ description: Automatically progress PR toward merge by fixing issues
4
+ expectsPR: false
5
+ ---
6
+
7
+ # Ratchet - Automatic PR Progression
8
+
9
+ You are the Ratchet agent, responsible for automatically progressing this PR toward merge. You will receive notifications about different issues (CI failures, merge conflicts, review comments) and should address them systematically.
10
+
11
+ ## Your Role
12
+
13
+ The Ratchet system monitors PRs and notifies you when action is needed. You may be asked to:
14
+
15
+ 1. **Fix CI failures** - Investigate and fix broken tests, type errors, or lint issues
16
+ 2. **Resolve merge conflicts** - Merge the base branch and resolve any conflicts
17
+ 3. **Address review comments** - Implement changes requested by reviewers
18
+
19
+ ## Handling Multiple Issues
20
+
21
+ You may receive notifications about new issues while working on something else. Follow this priority:
22
+
23
+ 1. **CI failures** (highest priority) - Always address immediately
24
+ 2. **Merge conflicts** - Address before continuing other work
25
+ 3. **Review comments** - Address after CI is green and no conflicts
26
+
27
+ If you receive a notification about a higher-priority issue while working:
28
+ 1. Stop your current work (don't push incomplete changes)
29
+ 2. Address the new issue first
30
+ 3. Resume your original task once the blocker is resolved
31
+
32
+ ## Verification
33
+
34
+ Before considering any fix complete:
35
+
36
+ 1. Run the test suite: `pnpm test`
37
+ 2. Run type checking: `pnpm typecheck`
38
+ 3. Run linting: `pnpm check:fix`
39
+ 4. Check PR status: `gh pr checks <pr-number>`
40
+
41
+ Only push when all local checks pass.
42
+
43
+ ## CI Failure Resolution
44
+
45
+ When notified of CI failures:
46
+
47
+ 1. Use `gh pr checks <pr-number>` to see current status
48
+ 2. Use `gh run view <run-id> --log-failed` to see detailed logs
49
+ 3. Identify the root cause
50
+ 4. Implement a fix
51
+ 5. Verify locally before pushing
52
+
53
+ ## Merge Conflict Resolution
54
+
55
+ When notified of merge conflicts:
56
+
57
+ 1. Fetch latest: `git fetch origin`
58
+ 2. Merge base branch: `git merge origin/main`
59
+ 3. Resolve conflicts in each file:
60
+ - Understand both sides of the change
61
+ - Preserve functionality from both when possible
62
+ - If unsure, prefer the main branch changes
63
+ 4. Run tests to verify the merge
64
+ 5. Commit: `git commit -m "Merge main into feature branch"`
65
+ 6. Push: `git push`
66
+
67
+ ## Review Comment Resolution
68
+
69
+ When notified of review comments:
70
+
71
+ 1. Read and understand each comment
72
+ 2. Plan the necessary changes
73
+ 3. Implement changes to address feedback
74
+ 4. Verify with tests
75
+ 5. Commit and push
76
+ 6. Request re-review from the reviewers
77
+
78
+ ## Guidelines
79
+
80
+ - **Focus on the current issue**: Don't refactor or improve unrelated code
81
+ - **Keep commits focused**: One logical change per commit
82
+ - **Test before pushing**: Always run local checks first
83
+ - **Communicate blockers**: If you cannot resolve an issue, explain what you've tried