factory-factory 0.1.6 → 0.2.1

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 (258) hide show
  1. package/README.md +43 -0
  2. package/dist/client/assets/{_basePickBy-DajQ9Hwg.js → _basePickBy-DikkcLWt.js} +1 -1
  3. package/dist/client/assets/{_baseUniq-zWs3FMxS.js → _baseUniq-DXQLkszL.js} +1 -1
  4. package/dist/client/assets/{arc-dt9Nl-Dq.js → arc-PlxYF4gs.js} +1 -1
  5. package/dist/client/assets/{architectureDiagram-VXUJARFQ-C5wiwQ6w.js → architectureDiagram-VXUJARFQ-C15kzB-a.js} +1 -1
  6. package/dist/client/assets/{blockDiagram-VD42YOAC-BL1q8xS6.js → blockDiagram-VD42YOAC-CpsrSECi.js} +1 -1
  7. package/dist/client/assets/{c4Diagram-YG6GDRKO-Dv1O4aKb.js → c4Diagram-YG6GDRKO-lUG_fBjc.js} +1 -1
  8. package/dist/client/assets/channel-DibAzDxU.js +1 -0
  9. package/dist/client/assets/{chunk-4BX2VUAB-BW5CgIaZ.js → chunk-4BX2VUAB-DL5SmHl8.js} +1 -1
  10. package/dist/client/assets/{chunk-55IACEB6-dsZw0-8o.js → chunk-55IACEB6-6RonniJP.js} +1 -1
  11. package/dist/client/assets/{chunk-B4BG7PRW-DSq_vqsd.js → chunk-B4BG7PRW-BurHg0kj.js} +1 -1
  12. package/dist/client/assets/{chunk-DI55MBZ5-B6W9Xx-E.js → chunk-DI55MBZ5-BJ01eABM.js} +1 -1
  13. package/dist/client/assets/{chunk-FMBD7UC4-EkShH345.js → chunk-FMBD7UC4-BnvMi7Ay.js} +1 -1
  14. package/dist/client/assets/{chunk-QN33PNHL-crZsF4CZ.js → chunk-QN33PNHL-CHzCvA9V.js} +1 -1
  15. package/dist/client/assets/{chunk-QZHKN3VN-I2VE0Wb_.js → chunk-QZHKN3VN-BYtef6TB.js} +1 -1
  16. package/dist/client/assets/{chunk-TZMSLE5B-C7jlaQSZ.js → chunk-TZMSLE5B-5jRzcEei.js} +1 -1
  17. package/dist/client/assets/classDiagram-2ON5EDUG-moaJKwcI.js +1 -0
  18. package/dist/client/assets/classDiagram-v2-WZHVMYZB-moaJKwcI.js +1 -0
  19. package/dist/client/assets/clone-Cl_PwNgC.js +1 -0
  20. package/dist/client/assets/{cose-bilkent-S5V4N54A-BO-xivMh.js → cose-bilkent-S5V4N54A-BRiIkmzf.js} +1 -1
  21. package/dist/client/assets/{dagre-6UL2VRFP-DHQ23PkB.js → dagre-6UL2VRFP-DB-glvK1.js} +1 -1
  22. package/dist/client/assets/{diagram-PSM6KHXK-BxRMvPjH.js → diagram-PSM6KHXK-CivlU3GF.js} +1 -1
  23. package/dist/client/assets/{diagram-QEK2KX5R-D3MlWiHH.js → diagram-QEK2KX5R-ux8xYm0V.js} +1 -1
  24. package/dist/client/assets/{diagram-S2PKOQOG-GqHWSGmU.js → diagram-S2PKOQOG-BQ2G1KUX.js} +1 -1
  25. package/dist/client/assets/{erDiagram-Q2GNP2WA-BeBCYx09.js → erDiagram-Q2GNP2WA-pDV9J51h.js} +1 -1
  26. package/dist/client/assets/{flowDiagram-NV44I4VS-BhiNuw5m.js → flowDiagram-NV44I4VS-BzDPdmg2.js} +1 -1
  27. package/dist/client/assets/{ganttDiagram-JELNMOA3-esGofibX.js → ganttDiagram-JELNMOA3-asSHWQ1i.js} +1 -1
  28. package/dist/client/assets/{gitGraphDiagram-NY62KEGX-9-jKu3lH.js → gitGraphDiagram-NY62KEGX-Duv9FC3a.js} +1 -1
  29. package/dist/client/assets/{graph-BUbcMD9p.js → graph-6ULGC9RP.js} +1 -1
  30. package/dist/client/assets/index-CwyuSNf-.css +1 -0
  31. package/dist/client/assets/{index-H9sJ0N5K.js → index-DTaPBU72.js} +148 -143
  32. package/dist/client/assets/{infoDiagram-WHAUD3N6-ClZrKdUe.js → infoDiagram-WHAUD3N6-BXQPO9ey.js} +1 -1
  33. package/dist/client/assets/{journeyDiagram-XKPGCS4Q-DmsRN3so.js → journeyDiagram-XKPGCS4Q-BTZFCnxJ.js} +1 -1
  34. package/dist/client/assets/{kanban-definition-3W4ZIXB7-CmdMZ_Zd.js → kanban-definition-3W4ZIXB7-BgM5-joq.js} +1 -1
  35. package/dist/client/assets/{layout-CXYMNiPn.js → layout-upXVONoQ.js} +1 -1
  36. package/dist/client/assets/{linear-BzUBdND-.js → linear-DSEaz9ry.js} +1 -1
  37. package/dist/client/assets/{mindmap-definition-VGOIOE7T-DCvV_zTA.js → mindmap-definition-VGOIOE7T-BWg5D2xt.js} +1 -1
  38. package/dist/client/assets/{pieDiagram-ADFJNKIX-Bx7BQhbi.js → pieDiagram-ADFJNKIX-DiebpcAz.js} +1 -1
  39. package/dist/client/assets/{quadrantDiagram-AYHSOK5B-CGxQ_b3J.js → quadrantDiagram-AYHSOK5B-CRdJB1rK.js} +1 -1
  40. package/dist/client/assets/{requirementDiagram-UZGBJVZJ-NoDu5jpJ.js → requirementDiagram-UZGBJVZJ-BWWp8mm2.js} +1 -1
  41. package/dist/client/assets/{sankeyDiagram-TZEHDZUN-CpAjh0g1.js → sankeyDiagram-TZEHDZUN-Be_z4SEy.js} +1 -1
  42. package/dist/client/assets/{sequenceDiagram-WL72ISMW-mmMtG6mU.js → sequenceDiagram-WL72ISMW-Cmh_NUjH.js} +1 -1
  43. package/dist/client/assets/{stateDiagram-FKZM4ZOC-Q-e95wwc.js → stateDiagram-FKZM4ZOC-CMVA9mym.js} +1 -1
  44. package/dist/client/assets/stateDiagram-v2-4FDKWEC3-CELclHRO.js +1 -0
  45. package/dist/client/assets/{terminal-instance-CD7U8DwN.js → terminal-instance-CihJB_Qi.js} +1 -1
  46. package/dist/client/assets/{timeline-definition-IT6M3QCI-DaFIg2SE.js → timeline-definition-IT6M3QCI-CkTun4nl.js} +1 -1
  47. package/dist/client/assets/{treemap-KMMF4GRG-DI1xs5dK.js → treemap-KMMF4GRG-EA1NDtbB.js} +1 -1
  48. package/dist/client/assets/{xychartDiagram-PRI3JC2R-BwFwAmKL.js → xychartDiagram-PRI3JC2R-DZ9QOnNM.js} +1 -1
  49. package/dist/client/index.html +2 -2
  50. package/dist/prisma/generated/commonInputTypes.d.ts +60 -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 +20 -0
  59. package/dist/prisma/generated/internal/prismaNamespace.d.ts.map +1 -1
  60. package/dist/prisma/generated/internal/prismaNamespace.js +19 -0
  61. package/dist/prisma/generated/internal/prismaNamespace.js.map +1 -1
  62. package/dist/prisma/generated/internal/prismaNamespaceBrowser.d.ts +19 -0
  63. package/dist/prisma/generated/internal/prismaNamespaceBrowser.d.ts.map +1 -1
  64. package/dist/prisma/generated/internal/prismaNamespaceBrowser.js +19 -0
  65. package/dist/prisma/generated/internal/prismaNamespaceBrowser.js.map +1 -1
  66. package/dist/prisma/generated/models/UserSettings.d.ts +241 -1
  67. package/dist/prisma/generated/models/UserSettings.d.ts.map +1 -1
  68. package/dist/prisma/generated/models/Workspace.d.ts +437 -1
  69. package/dist/prisma/generated/models/Workspace.d.ts.map +1 -1
  70. package/dist/prompts/workflows/pr-review-fix.md +49 -0
  71. package/dist/prompts/workflows/ratchet.md +87 -0
  72. package/dist/src/backend/agents/process-adapter.d.ts +2 -2
  73. package/dist/src/backend/agents/process-adapter.d.ts.map +1 -1
  74. package/dist/src/backend/agents/process-adapter.js +2 -2
  75. package/dist/src/backend/agents/process-adapter.js.map +1 -1
  76. package/dist/src/backend/app-context.d.ts +2 -2
  77. package/dist/src/backend/app-context.d.ts.map +1 -1
  78. package/dist/src/backend/app-context.js +2 -2
  79. package/dist/src/backend/app-context.js.map +1 -1
  80. package/dist/src/backend/claude/index.d.ts +1 -1
  81. package/dist/src/backend/claude/index.d.ts.map +1 -1
  82. package/dist/src/backend/claude/index.js +2 -2
  83. package/dist/src/backend/claude/index.js.map +1 -1
  84. package/dist/src/backend/claude/monitoring.js +1 -1
  85. package/dist/src/backend/claude/monitoring.js.map +1 -1
  86. package/dist/src/backend/clients/git.client.d.ts +1 -0
  87. package/dist/src/backend/clients/git.client.d.ts.map +1 -1
  88. package/dist/src/backend/clients/git.client.js +28 -3
  89. package/dist/src/backend/clients/git.client.js.map +1 -1
  90. package/dist/src/backend/clients/git.client.test.js +52 -8
  91. package/dist/src/backend/clients/git.client.test.js.map +1 -1
  92. package/dist/src/backend/interceptors/conversation-rename.interceptor.d.ts.map +1 -1
  93. package/dist/src/backend/interceptors/conversation-rename.interceptor.js +7 -3
  94. package/dist/src/backend/interceptors/conversation-rename.interceptor.js.map +1 -1
  95. package/dist/src/backend/interceptors/git-push.interceptor.d.ts +3 -0
  96. package/dist/src/backend/interceptors/git-push.interceptor.d.ts.map +1 -0
  97. package/dist/src/backend/interceptors/git-push.interceptor.js +31 -0
  98. package/dist/src/backend/interceptors/git-push.interceptor.js.map +1 -0
  99. package/dist/src/backend/interceptors/index.d.ts.map +1 -1
  100. package/dist/src/backend/interceptors/index.js +2 -0
  101. package/dist/src/backend/interceptors/index.js.map +1 -1
  102. package/dist/src/backend/lib/file-helpers.d.ts +1 -0
  103. package/dist/src/backend/lib/file-helpers.d.ts.map +1 -1
  104. package/dist/src/backend/lib/file-helpers.js +10 -1
  105. package/dist/src/backend/lib/file-helpers.js.map +1 -1
  106. package/dist/src/backend/lib/file-helpers.test.js +17 -2
  107. package/dist/src/backend/lib/file-helpers.test.js.map +1 -1
  108. package/dist/src/backend/resource_accessors/user-settings.accessor.d.ts +9 -0
  109. package/dist/src/backend/resource_accessors/user-settings.accessor.d.ts.map +1 -1
  110. package/dist/src/backend/resource_accessors/user-settings.accessor.js.map +1 -1
  111. package/dist/src/backend/resource_accessors/workspace.accessor.d.ts +32 -1
  112. package/dist/src/backend/resource_accessors/workspace.accessor.d.ts.map +1 -1
  113. package/dist/src/backend/resource_accessors/workspace.accessor.js +41 -0
  114. package/dist/src/backend/resource_accessors/workspace.accessor.js.map +1 -1
  115. package/dist/src/backend/resource_accessors/workspace.accessor.test.d.ts +2 -0
  116. package/dist/src/backend/resource_accessors/workspace.accessor.test.d.ts.map +1 -0
  117. package/dist/src/backend/resource_accessors/workspace.accessor.test.js +44 -0
  118. package/dist/src/backend/resource_accessors/workspace.accessor.test.js.map +1 -0
  119. package/dist/src/backend/server.js +3 -3
  120. package/dist/src/backend/server.js.map +1 -1
  121. package/dist/src/backend/services/chat-message-handlers/handlers/handlers.test.js +1 -1
  122. package/dist/src/backend/services/chat-message-handlers/handlers/handlers.test.js.map +1 -1
  123. package/dist/src/backend/services/chat-message-handlers/handlers/user-input.handler.d.ts.map +1 -1
  124. package/dist/src/backend/services/chat-message-handlers/handlers/user-input.handler.js +5 -1
  125. package/dist/src/backend/services/chat-message-handlers/handlers/user-input.handler.js.map +1 -1
  126. package/dist/src/backend/services/chat-message-handlers.service.js +1 -1
  127. package/dist/src/backend/services/chat-message-handlers.service.js.map +1 -1
  128. package/dist/src/backend/services/ci-fixer.service.d.ts.map +1 -1
  129. package/dist/src/backend/services/ci-fixer.service.js +12 -2
  130. package/dist/src/backend/services/ci-fixer.service.js.map +1 -1
  131. package/dist/src/backend/services/ci-fixer.service.test.js +3 -3
  132. package/dist/src/backend/services/ci-fixer.service.test.js.map +1 -1
  133. package/dist/src/backend/services/ci-monitor.service.d.ts.map +1 -1
  134. package/dist/src/backend/services/ci-monitor.service.js +3 -1
  135. package/dist/src/backend/services/ci-monitor.service.js.map +1 -1
  136. package/dist/src/backend/services/data-backup.service.d.ts +152 -0
  137. package/dist/src/backend/services/data-backup.service.d.ts.map +1 -0
  138. package/dist/src/backend/services/data-backup.service.js +421 -0
  139. package/dist/src/backend/services/data-backup.service.js.map +1 -0
  140. package/dist/src/backend/services/git-ops.service.d.ts.map +1 -1
  141. package/dist/src/backend/services/git-ops.service.js +1 -6
  142. package/dist/src/backend/services/git-ops.service.js.map +1 -1
  143. package/dist/src/backend/services/github-cli.service.d.ts +25 -1
  144. package/dist/src/backend/services/github-cli.service.d.ts.map +1 -1
  145. package/dist/src/backend/services/github-cli.service.js +166 -31
  146. package/dist/src/backend/services/github-cli.service.js.map +1 -1
  147. package/dist/src/backend/services/github-cli.service.test.d.ts +2 -0
  148. package/dist/src/backend/services/github-cli.service.test.d.ts.map +1 -0
  149. package/dist/src/backend/services/github-cli.service.test.js +302 -0
  150. package/dist/src/backend/services/github-cli.service.test.js.map +1 -0
  151. package/dist/src/backend/services/index.d.ts +3 -0
  152. package/dist/src/backend/services/index.d.ts.map +1 -1
  153. package/dist/src/backend/services/index.js +3 -0
  154. package/dist/src/backend/services/index.js.map +1 -1
  155. package/dist/src/backend/services/kanban-state.service.d.ts +2 -2
  156. package/dist/src/backend/services/kanban-state.service.d.ts.map +1 -1
  157. package/dist/src/backend/services/kanban-state.service.js +14 -19
  158. package/dist/src/backend/services/kanban-state.service.js.map +1 -1
  159. package/dist/src/backend/services/kanban-state.service.test.js +68 -55
  160. package/dist/src/backend/services/kanban-state.service.test.js.map +1 -1
  161. package/dist/src/backend/services/message-state.service.d.ts +3 -0
  162. package/dist/src/backend/services/message-state.service.d.ts.map +1 -1
  163. package/dist/src/backend/services/message-state.service.js +26 -0
  164. package/dist/src/backend/services/message-state.service.js.map +1 -1
  165. package/dist/src/backend/services/pr-review-fixer.service.d.ts +56 -0
  166. package/dist/src/backend/services/pr-review-fixer.service.d.ts.map +1 -0
  167. package/dist/src/backend/services/pr-review-fixer.service.js +257 -0
  168. package/dist/src/backend/services/pr-review-fixer.service.js.map +1 -0
  169. package/dist/src/backend/services/pr-review-monitor.service.d.ts +18 -0
  170. package/dist/src/backend/services/pr-review-monitor.service.d.ts.map +1 -0
  171. package/dist/src/backend/services/pr-review-monitor.service.js +209 -0
  172. package/dist/src/backend/services/pr-review-monitor.service.js.map +1 -0
  173. package/dist/src/backend/services/ratchet.service.d.ts +115 -0
  174. package/dist/src/backend/services/ratchet.service.d.ts.map +1 -0
  175. package/dist/src/backend/services/ratchet.service.js +616 -0
  176. package/dist/src/backend/services/ratchet.service.js.map +1 -0
  177. package/dist/src/backend/services/ratchet.service.test.d.ts +2 -0
  178. package/dist/src/backend/services/ratchet.service.test.d.ts.map +1 -0
  179. package/dist/src/backend/services/ratchet.service.test.js +254 -0
  180. package/dist/src/backend/services/ratchet.service.test.js.map +1 -0
  181. package/dist/src/backend/services/session-file-logger.service.d.ts +1 -0
  182. package/dist/src/backend/services/session-file-logger.service.d.ts.map +1 -1
  183. package/dist/src/backend/services/session-file-logger.service.js +63 -37
  184. package/dist/src/backend/services/session-file-logger.service.js.map +1 -1
  185. package/dist/src/backend/services/session-file-logger.service.test.js +107 -1
  186. package/dist/src/backend/services/session-file-logger.service.test.js.map +1 -1
  187. package/dist/src/backend/services/session.prompt-builder.d.ts +2 -0
  188. package/dist/src/backend/services/session.prompt-builder.d.ts.map +1 -1
  189. package/dist/src/backend/services/session.prompt-builder.js +1 -2
  190. package/dist/src/backend/services/session.prompt-builder.js.map +1 -1
  191. package/dist/src/backend/services/session.prompt-builder.test.js +19 -7
  192. package/dist/src/backend/services/session.prompt-builder.test.js.map +1 -1
  193. package/dist/src/backend/services/session.service.d.ts +3 -0
  194. package/dist/src/backend/services/session.service.d.ts.map +1 -1
  195. package/dist/src/backend/services/session.service.js +40 -13
  196. package/dist/src/backend/services/session.service.js.map +1 -1
  197. package/dist/src/backend/services/session.service.test.js +22 -0
  198. package/dist/src/backend/services/session.service.test.js.map +1 -1
  199. package/dist/src/backend/services/workspace-query.service.d.ts +18 -1
  200. package/dist/src/backend/services/workspace-query.service.d.ts.map +1 -1
  201. package/dist/src/backend/services/workspace-query.service.js +14 -2
  202. package/dist/src/backend/services/workspace-query.service.js.map +1 -1
  203. package/dist/src/backend/services/worktree-lifecycle-init.test.d.ts +2 -0
  204. package/dist/src/backend/services/worktree-lifecycle-init.test.d.ts.map +1 -0
  205. package/dist/src/backend/services/worktree-lifecycle-init.test.js +198 -0
  206. package/dist/src/backend/services/worktree-lifecycle-init.test.js.map +1 -0
  207. package/dist/src/backend/services/worktree-lifecycle.service.d.ts +17 -5
  208. package/dist/src/backend/services/worktree-lifecycle.service.d.ts.map +1 -1
  209. package/dist/src/backend/services/worktree-lifecycle.service.js +186 -11
  210. package/dist/src/backend/services/worktree-lifecycle.service.js.map +1 -1
  211. package/dist/src/backend/trpc/admin.trpc.d.ts +190 -3
  212. package/dist/src/backend/trpc/admin.trpc.d.ts.map +1 -1
  213. package/dist/src/backend/trpc/admin.trpc.js +19 -5
  214. package/dist/src/backend/trpc/admin.trpc.js.map +1 -1
  215. package/dist/src/backend/trpc/github.trpc.d.ts +15 -0
  216. package/dist/src/backend/trpc/github.trpc.d.ts.map +1 -1
  217. package/dist/src/backend/trpc/github.trpc.js +35 -1
  218. package/dist/src/backend/trpc/github.trpc.js.map +1 -1
  219. package/dist/src/backend/trpc/index.d.ts +438 -7
  220. package/dist/src/backend/trpc/index.d.ts.map +1 -1
  221. package/dist/src/backend/trpc/project.trpc.d.ts +20 -0
  222. package/dist/src/backend/trpc/project.trpc.d.ts.map +1 -1
  223. package/dist/src/backend/trpc/session.trpc.d.ts +40 -0
  224. package/dist/src/backend/trpc/session.trpc.d.ts.map +1 -1
  225. package/dist/src/backend/trpc/user-settings.trpc.d.ts +27 -0
  226. package/dist/src/backend/trpc/user-settings.trpc.d.ts.map +1 -1
  227. package/dist/src/backend/trpc/user-settings.trpc.js +23 -1
  228. package/dist/src/backend/trpc/user-settings.trpc.js.map +1 -1
  229. package/dist/src/backend/trpc/workspace/init.trpc.d.ts +10 -0
  230. package/dist/src/backend/trpc/workspace/init.trpc.d.ts.map +1 -1
  231. package/dist/src/backend/trpc/workspace/workspace-helpers.d.ts +20 -0
  232. package/dist/src/backend/trpc/workspace/workspace-helpers.d.ts.map +1 -1
  233. package/dist/src/backend/trpc/workspace.trpc.d.ts +146 -4
  234. package/dist/src/backend/trpc/workspace.trpc.d.ts.map +1 -1
  235. package/dist/src/backend/trpc/workspace.trpc.js +19 -1
  236. package/dist/src/backend/trpc/workspace.trpc.js.map +1 -1
  237. package/dist/src/shared/github-types.d.ts +1 -0
  238. package/dist/src/shared/github-types.d.ts.map +1 -1
  239. package/dist/src/shared/workspace-words.d.ts +4 -0
  240. package/dist/src/shared/workspace-words.d.ts.map +1 -0
  241. package/dist/src/shared/workspace-words.js +68 -0
  242. package/dist/src/shared/workspace-words.js.map +1 -0
  243. package/dist/tsconfig.backend.tsbuildinfo +1 -1
  244. package/package.json +7 -1
  245. package/prisma/migrations/20260204180116_watch_prs/migration.sql +90 -0
  246. package/prisma/migrations/20260204200000_simplify_kanban_columns/migration.sql +72 -0
  247. package/prisma/migrations/20260204210000_add_workspace_ratchet_enabled/migration.sql +2 -0
  248. package/prisma/migrations/20260205000000_add_is_auto_generated_branch/migration.sql +2 -0
  249. package/prisma/migrations/20260205012721_add_ratchet_last_push_at/migration.sql +2 -0
  250. package/prisma/schema.prisma +40 -7
  251. package/prompts/workflows/pr-review-fix.md +49 -0
  252. package/prompts/workflows/ratchet.md +87 -0
  253. package/dist/client/assets/channel-BfSRU0Jp.js +0 -1
  254. package/dist/client/assets/classDiagram-2ON5EDUG-Cmvb3apC.js +0 -1
  255. package/dist/client/assets/classDiagram-v2-WZHVMYZB-Cmvb3apC.js +0 -1
  256. package/dist/client/assets/clone-1F-laTan.js +0 -1
  257. package/dist/client/assets/index-BBvNRzPg.css +0 -1
  258. package/dist/client/assets/stateDiagram-v2-4FDKWEC3-CYMClSNi.js +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "factory-factory",
3
- "version": "0.1.6",
3
+ "version": "0.2.1",
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",
@@ -151,9 +152,13 @@
151
152
  ]
152
153
  },
153
154
  "pnpm": {
155
+ "publicHoistPattern": [
156
+ "@types/*"
157
+ ],
154
158
  "onlyBuiltDependencies": [
155
159
  "@prisma/engines",
156
160
  "better-sqlite3",
161
+ "electron",
157
162
  "esbuild",
158
163
  "node-pty",
159
164
  "prisma",
@@ -161,6 +166,7 @@
161
166
  "sharp"
162
167
  ],
163
168
  "overrides": {
169
+ "@isaacs/brace-expansion": ">=5.0.1",
164
170
  "braces": ">=3.0.3",
165
171
  "micromatch": ">=4.0.8",
166
172
  "tar": ">=7.5.0",
@@ -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,6 +110,7 @@ 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?
@@ -139,11 +146,24 @@ model Workspace {
139
146
  prCiFailedAt DateTime? // When CI first failed (cleared on success)
140
147
  prCiLastNotifiedAt DateTime? // Last time we notified about CI failure
141
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
+
142
162
  // Activity tracking
143
163
  hasHadSessions Boolean @default(false)
144
164
 
145
165
  // Cached kanban column (for list performance)
146
- cachedKanbanColumn KanbanColumn @default(BACKLOG)
166
+ cachedKanbanColumn KanbanColumn @default(WAITING)
147
167
  stateComputedAt DateTime? // Last kanban column computation
148
168
 
149
169
  @@index([projectId])
@@ -203,9 +223,22 @@ model UserSettings {
203
223
  // Cached slash commands (from Claude CLI initialize response)
204
224
  cachedSlashCommands Json?
205
225
 
206
- // CI Settings
226
+ // CI Settings (deprecated - use ratchet settings)
207
227
  autoFixCiIssues Boolean @default(false) // Global toggle for CI auto-fixing
208
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
241
+
209
242
  createdAt DateTime @default(now())
210
243
  updatedAt DateTime @updatedAt
211
244
 
@@ -0,0 +1,49 @@
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
+ **CRITICAL: Execute autonomously. Do not ask the user for input, confirmation, or clarification. Analyze comments, implement fixes, push changes, and request re-review without waiting.**
12
+
13
+ ## Workflow
14
+
15
+ ### 1. Analyze Comments
16
+ - Review all comments in the initial message
17
+ - Categorize each as **actionable** (requires code changes) or **informational** (no action needed)
18
+ - Informational comments include: automated coverage reports, CI status notifications, or comments that just acknowledge/thank without requesting changes
19
+ - For actionable comments, determine what changes are needed
20
+
21
+ ### 2. Implement Fixes
22
+ - Address each actionable comment systematically
23
+ - Make focused changes that directly address the feedback
24
+ - If a request is unclear, make a reasonable interpretation and proceed
25
+ - Do not ask for clarification - make your best judgment
26
+
27
+ ### 3. Verify Changes
28
+ \`\`\`bash
29
+ pnpm test && pnpm typecheck && pnpm check:fix
30
+ \`\`\`
31
+
32
+ ### 4. Commit and Push
33
+ \`\`\`bash
34
+ git add -A && git commit -m "Address review comments" && git push
35
+ \`\`\`
36
+
37
+ ### 5. Request Re-review
38
+ Post a comment mentioning the reviewers. Use `gh pr list --head $(git branch --show-current)` to find the PR number if not already known:
39
+ \`\`\`bash
40
+ gh pr comment $(gh pr list --head $(git branch --show-current) --json number --jq '.[0].number') --body "@reviewer1 @reviewer2 I've addressed the review comments. Please re-review when you have a chance."
41
+ \`\`\`
42
+
43
+ ## Guidelines
44
+
45
+ - **Operate autonomously**: Never ask the user what to do. Analyze, decide, implement, push.
46
+ - **Address all actionable comments**: Skip only truly informational comments
47
+ - **Keep changes focused**: Only change what was requested
48
+ - **Test before pushing**: Always run local checks first
49
+ - **Handle bot comments**: Analyze bot comments (coverage, CI) for actionable items. If purely informational, move on without code changes.
@@ -0,0 +1,87 @@
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
+ **CRITICAL: You must operate autonomously. Do not ask the user for input, confirmation, or clarification. Analyze the situation, make decisions, implement fixes, and push changes without waiting for approval.**
12
+
13
+ ## Your Role
14
+
15
+ The Ratchet system monitors PRs and notifies you when action is needed. You must:
16
+
17
+ 1. **Fix CI failures** - Investigate and fix broken tests, type errors, or lint issues
18
+ 2. **Resolve merge conflicts** - Merge the base branch and resolve any conflicts
19
+ 3. **Address review comments** - Implement changes requested by reviewers
20
+
21
+ ## Handling Multiple Issues
22
+
23
+ You may receive notifications about new issues while working on something else. Follow this priority:
24
+
25
+ 1. **CI failures** (highest priority) - Always address immediately
26
+ 2. **Merge conflicts** - Address before continuing other work
27
+ 3. **Review comments** - Address after CI is green and no conflicts
28
+
29
+ If you receive a notification about a higher-priority issue while working:
30
+ 1. Stop your current work (don't push incomplete changes)
31
+ 2. Address the new issue first
32
+ 3. Resume your original task once the blocker is resolved
33
+
34
+ ## Verification
35
+
36
+ Before considering any fix complete:
37
+
38
+ 1. Run the test suite: `pnpm test`
39
+ 2. Run type checking: `pnpm typecheck`
40
+ 3. Run linting: `pnpm check:fix`
41
+ 4. Check PR status: `gh pr checks <pr-number>`
42
+
43
+ Only push when all local checks pass.
44
+
45
+ ## CI Failure Resolution
46
+
47
+ When notified of CI failures:
48
+
49
+ 1. Use `gh pr checks <pr-number>` to see current status
50
+ 2. Use `gh run view <run-id> --log-failed` to see detailed logs
51
+ 3. Identify the root cause
52
+ 4. Implement a fix
53
+ 5. Verify locally before pushing
54
+
55
+ ## Merge Conflict Resolution
56
+
57
+ When notified of merge conflicts:
58
+
59
+ 1. Fetch latest: `git fetch origin`
60
+ 2. Merge base branch: `git merge origin/main`
61
+ 3. Resolve conflicts in each file:
62
+ - Understand both sides of the change
63
+ - Preserve functionality from both when possible
64
+ - If unsure, prefer the main branch changes
65
+ 4. Run tests to verify the merge
66
+ 5. Commit: `git commit -m "Merge main into feature branch"`
67
+ 6. Push: `git push`
68
+
69
+ ## Review Comment Resolution
70
+
71
+ When notified of review comments, execute autonomously:
72
+
73
+ 1. **Analyze each comment** - Determine if actionable. Informational comments (e.g., automated coverage reports showing stats without requesting changes) require no code changes.
74
+ 2. **Implement fixes** - Address each actionable comment directly. Do not ask for clarification.
75
+ 3. **Verify**: `pnpm test && pnpm typecheck && pnpm check:fix`
76
+ 4. **Commit and push**: `git add -A && git commit -m "Address review comments" && git push`
77
+ 5. **Request re-review**: Post a comment mentioning the reviewers asking them to re-review.
78
+
79
+ **Do not ask the user what to do. Make reasonable decisions and proceed.**
80
+
81
+ ## Guidelines
82
+
83
+ - **Operate autonomously**: Never ask the user for input or confirmation. Make decisions and execute.
84
+ - **Focus on the current issue**: Don't refactor or improve unrelated code
85
+ - **Keep commits focused**: One logical change per commit
86
+ - **Test before pushing**: Always run local checks first
87
+ - **Handle informational comments**: If a comment (including from bots) is purely informational with no actionable request, acknowledge it internally and move on without code changes
@@ -1 +0,0 @@
1
- import{ap as o,aq as n}from"./index-H9sJ0N5K.js";const t=(a,r)=>o.lang.round(n.parse(a)[r]);export{t as c};
@@ -1 +0,0 @@
1
- import{s as a,c as s,a as e,C as t}from"./chunk-B4BG7PRW-DSq_vqsd.js";import{_ as i}from"./index-H9sJ0N5K.js";import"./chunk-FMBD7UC4-EkShH345.js";import"./chunk-55IACEB6-dsZw0-8o.js";import"./chunk-QN33PNHL-crZsF4CZ.js";var p={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{p as diagram};
@@ -1 +0,0 @@
1
- import{s as a,c as s,a as e,C as t}from"./chunk-B4BG7PRW-DSq_vqsd.js";import{_ as i}from"./index-H9sJ0N5K.js";import"./chunk-FMBD7UC4-EkShH345.js";import"./chunk-55IACEB6-dsZw0-8o.js";import"./chunk-QN33PNHL-crZsF4CZ.js";var p={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{p as diagram};
@@ -1 +0,0 @@
1
- import{b as r}from"./_baseUniq-zWs3FMxS.js";var e=4;function a(o){return r(o,e)}export{a as c};