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
@@ -0,0 +1,53 @@
1
+ import { EventEmitter } from 'node:events';
2
+ import type { ResourceUsage } from './types/process-types.js';
3
+ export interface ResourceMonitoringOptions {
4
+ enabled?: boolean;
5
+ maxMemoryBytes?: number;
6
+ maxCpuPercent?: number;
7
+ activityTimeoutMs?: number;
8
+ hungWarningThresholdMs?: number;
9
+ monitoringIntervalMs?: number;
10
+ }
11
+ export interface MonitorTarget {
12
+ getPid(): number | undefined;
13
+ isRunning(): boolean;
14
+ kill(): void;
15
+ }
16
+ export interface MonitorEvents {
17
+ resource_exceeded: (data: {
18
+ type: 'memory' | 'cpu';
19
+ value: number;
20
+ }) => void;
21
+ hung_warning: (data: {
22
+ lastActivity: number;
23
+ idleTimeMs: number;
24
+ timeoutMs: number;
25
+ }) => void;
26
+ hung_process: (data: {
27
+ lastActivity: number;
28
+ }) => void;
29
+ resource_usage: (usage: ResourceUsage) => void;
30
+ }
31
+ export declare class ClaudeProcessMonitor extends EventEmitter {
32
+ private target;
33
+ private options;
34
+ private monitoringInterval;
35
+ private lastActivityAt;
36
+ private lastResourceUsage;
37
+ private hungWarningEmitted;
38
+ constructor(target: MonitorTarget, options?: ResourceMonitoringOptions);
39
+ static buildDefaultMonitoring(): Required<ResourceMonitoringOptions>;
40
+ isEnabled(): boolean;
41
+ start(): void;
42
+ stop(): void;
43
+ recordActivity(): void;
44
+ getLastActivityAt(): number;
45
+ getIdleTimeMs(): number;
46
+ getResourceUsage(): ResourceUsage | null;
47
+ private performResourceCheck;
48
+ private updateResourceUsage;
49
+ private checkIdleTime;
50
+ on<K extends keyof MonitorEvents>(event: K, handler: MonitorEvents[K]): this;
51
+ emit<K extends keyof MonitorEvents>(event: K, ...args: Parameters<MonitorEvents[K]>): boolean;
52
+ }
53
+ //# sourceMappingURL=monitoring.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"monitoring.d.ts","sourceRoot":"","sources":["../../../../src/backend/claude/monitoring.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAO3D,MAAM,WAAW,yBAAyB;IAExC,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAEhC,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,IAAI,MAAM,GAAG,SAAS,CAAC;IAC7B,SAAS,IAAI,OAAO,CAAC;IACrB,IAAI,IAAI,IAAI,CAAC;CACd;AAED,MAAM,WAAW,aAAa;IAC5B,iBAAiB,EAAE,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,QAAQ,GAAG,KAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAC7E,YAAY,EAAE,CAAC,IAAI,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAC9F,YAAY,EAAE,CAAC,IAAI,EAAE;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACvD,cAAc,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;CAChD;AAED,qBAAa,oBAAqB,SAAQ,YAAY;IACpD,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,OAAO,CAAsC;IACrD,OAAO,CAAC,kBAAkB,CAA+B;IACzD,OAAO,CAAC,cAAc,CAAsB;IAC5C,OAAO,CAAC,iBAAiB,CAA8B;IACvD,OAAO,CAAC,kBAAkB,CAAS;gBAEvB,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,yBAAyB;IAStE,MAAM,CAAC,sBAAsB,IAAI,QAAQ,CAAC,yBAAyB,CAAC;IAYpE,SAAS,IAAI,OAAO;IAIpB,KAAK,IAAI,IAAI;IAWb,IAAI,IAAI,IAAI;IAOZ,cAAc,IAAI,IAAI;IAKtB,iBAAiB,IAAI,MAAM;IAI3B,aAAa,IAAI,MAAM;IAIvB,gBAAgB,IAAI,aAAa,GAAG,IAAI;YAI1B,oBAAoB;IAoBlC,OAAO,CAAC,mBAAmB;IA2B3B,OAAO,CAAC,aAAa;IAkCZ,EAAE,CAAC,CAAC,SAAS,MAAM,aAAa,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI;IAK5E,IAAI,CAAC,CAAC,SAAS,MAAM,aAAa,EACzC,KAAK,EAAE,CAAC,EACR,GAAG,IAAI,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,GACpC,OAAO;CAIX"}
@@ -0,0 +1,139 @@
1
+ import { EventEmitter } from 'node:events';
2
+ import pidusage from 'pidusage';
3
+ import { configService } from '../services/config.service.js';
4
+ import { createLogger } from '../services/logger.service.js';
5
+ const logger = createLogger('claude-process-monitor');
6
+ export class ClaudeProcessMonitor extends EventEmitter {
7
+ target;
8
+ options;
9
+ monitoringInterval = null;
10
+ lastActivityAt = Date.now();
11
+ lastResourceUsage = null;
12
+ hungWarningEmitted = false;
13
+ constructor(target, options) {
14
+ super();
15
+ this.target = target;
16
+ this.options = {
17
+ ...ClaudeProcessMonitor.buildDefaultMonitoring(),
18
+ ...options,
19
+ };
20
+ }
21
+ static buildDefaultMonitoring() {
22
+ const activityTimeoutMs = configService.getClaudeProcessConfig().hungTimeoutMs;
23
+ return {
24
+ enabled: true,
25
+ maxMemoryBytes: 2 * 1024 * 1024 * 1024,
26
+ maxCpuPercent: 90,
27
+ activityTimeoutMs,
28
+ hungWarningThresholdMs: Math.floor(activityTimeoutMs * 0.8),
29
+ monitoringIntervalMs: 5000,
30
+ };
31
+ }
32
+ isEnabled() {
33
+ return this.options.enabled;
34
+ }
35
+ start() {
36
+ if (!this.options.enabled || this.monitoringInterval) {
37
+ return;
38
+ }
39
+ const { monitoringIntervalMs } = this.options;
40
+ this.monitoringInterval = setInterval(async () => {
41
+ await this.performResourceCheck();
42
+ }, monitoringIntervalMs);
43
+ }
44
+ stop() {
45
+ if (this.monitoringInterval) {
46
+ clearInterval(this.monitoringInterval);
47
+ this.monitoringInterval = null;
48
+ }
49
+ }
50
+ recordActivity() {
51
+ this.lastActivityAt = Date.now();
52
+ this.hungWarningEmitted = false;
53
+ }
54
+ getLastActivityAt() {
55
+ return this.lastActivityAt;
56
+ }
57
+ getIdleTimeMs() {
58
+ return Date.now() - this.lastActivityAt;
59
+ }
60
+ getResourceUsage() {
61
+ return this.lastResourceUsage;
62
+ }
63
+ async performResourceCheck() {
64
+ const pid = this.target.getPid();
65
+ if (!(pid && this.target.isRunning())) {
66
+ this.stop();
67
+ return;
68
+ }
69
+ try {
70
+ const usage = await pidusage(pid);
71
+ this.updateResourceUsage(usage, pid);
72
+ this.checkIdleTime(pid);
73
+ }
74
+ catch (error) {
75
+ logger.debug('Failed to get resource usage, stopping monitoring', {
76
+ pid,
77
+ error: error instanceof Error ? error.message : String(error),
78
+ });
79
+ this.stop();
80
+ }
81
+ }
82
+ updateResourceUsage(usage, pid) {
83
+ const { maxMemoryBytes, maxCpuPercent } = this.options;
84
+ const resourceUsage = {
85
+ cpu: usage.cpu,
86
+ memory: usage.memory,
87
+ timestamp: new Date(),
88
+ };
89
+ this.lastResourceUsage = resourceUsage;
90
+ this.emit('resource_usage', resourceUsage);
91
+ if (usage.memory > maxMemoryBytes) {
92
+ logger.warn('Process exceeded memory threshold, killing', {
93
+ pid,
94
+ memoryBytes: usage.memory,
95
+ maxMemoryBytes,
96
+ });
97
+ this.emit('resource_exceeded', { type: 'memory', value: usage.memory });
98
+ this.target.kill();
99
+ return;
100
+ }
101
+ if (usage.cpu > maxCpuPercent) {
102
+ this.emit('resource_exceeded', { type: 'cpu', value: usage.cpu });
103
+ }
104
+ }
105
+ checkIdleTime(pid) {
106
+ const { activityTimeoutMs, hungWarningThresholdMs } = this.options;
107
+ const idleTime = Date.now() - this.lastActivityAt;
108
+ if (idleTime > hungWarningThresholdMs && !this.hungWarningEmitted) {
109
+ logger.warn('Process approaching hung timeout', {
110
+ pid,
111
+ idleTimeMs: idleTime,
112
+ warningThresholdMs: hungWarningThresholdMs,
113
+ timeoutMs: activityTimeoutMs,
114
+ });
115
+ this.hungWarningEmitted = true;
116
+ this.emit('hung_warning', {
117
+ lastActivity: this.lastActivityAt,
118
+ idleTimeMs: idleTime,
119
+ timeoutMs: activityTimeoutMs,
120
+ });
121
+ }
122
+ if (idleTime > activityTimeoutMs) {
123
+ logger.warn('Process exceeded activity timeout, killing', {
124
+ pid,
125
+ idleTimeMs: idleTime,
126
+ activityTimeoutMs,
127
+ });
128
+ this.emit('hung_process', { lastActivity: this.lastActivityAt });
129
+ this.target.kill();
130
+ }
131
+ }
132
+ on(event, handler) {
133
+ return super.on(event, handler);
134
+ }
135
+ emit(event, ...args) {
136
+ return super.emit(event, ...args);
137
+ }
138
+ }
139
+ //# sourceMappingURL=monitoring.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"monitoring.js","sourceRoot":"","sources":["../../../../src/backend/claude/monitoring.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import { EventEmitter } from 'node:events';
2
+ import { DeferredHandler, type PermissionHandler } from './permissions.js';
3
+ import type { ProtocolIO } from './protocol-io.js';
4
+ import type { ControlRequest } from './types.js';
5
+ export interface PendingInteractiveRequest {
6
+ requestId: string;
7
+ toolName: string;
8
+ toolUseId: string;
9
+ input: Record<string, unknown>;
10
+ }
11
+ export interface PermissionCoordinatorOptions {
12
+ permissionHandler: PermissionHandler;
13
+ interactiveHandler?: DeferredHandler;
14
+ interactiveTimeoutMs?: number;
15
+ }
16
+ export interface PermissionCoordinatorEvents {
17
+ permission_request: (request: ControlRequest) => void;
18
+ interactive_request: (request: PendingInteractiveRequest) => void;
19
+ permission_cancelled: (requestId: string) => void;
20
+ }
21
+ export declare class ClaudePermissionCoordinator extends EventEmitter {
22
+ private permissionHandler;
23
+ private interactiveHandler;
24
+ private pendingInteractiveRequests;
25
+ private protocolToToolRequestId;
26
+ private cancelledProtocolRequests;
27
+ private protocol;
28
+ private boundHandlers;
29
+ constructor(options: PermissionCoordinatorOptions);
30
+ bind(protocol: ProtocolIO): void;
31
+ unbind(): void;
32
+ stop(reason?: string): void;
33
+ answerQuestion(requestId: string, answers: Record<string, string | string[]>): void;
34
+ approveInteractiveRequest(requestId: string): void;
35
+ denyInteractiveRequest(requestId: string, reason: string): void;
36
+ private handleControlRequestMessage;
37
+ private handleControlCancelMessage;
38
+ private handleControlRequest;
39
+ private handleHookCallback;
40
+ on<K extends keyof PermissionCoordinatorEvents>(event: K, handler: PermissionCoordinatorEvents[K]): this;
41
+ emit<K extends keyof PermissionCoordinatorEvents>(event: K, ...args: Parameters<PermissionCoordinatorEvents[K]>): boolean;
42
+ }
43
+ //# sourceMappingURL=permission-coordinator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permission-coordinator.d.ts","sourceRoot":"","sources":["../../../../src/backend/claude/permission-coordinator.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,OAAO,EAEL,eAAe,EAEf,KAAK,iBAAiB,EACvB,MAAM,eAAe,CAAC;AAEvB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAGV,cAAc,EAEf,MAAM,SAAS,CAAC;AAKjB,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,4BAA4B;IAC3C,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,kBAAkB,CAAC,EAAE,eAAe,CAAC;IACrC,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,2BAA2B;IAC1C,kBAAkB,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;IACtD,mBAAmB,EAAE,CAAC,OAAO,EAAE,yBAAyB,KAAK,IAAI,CAAC;IAClE,oBAAoB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CACnD;AAED,qBAAa,2BAA4B,SAAQ,YAAY;IAC3D,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,kBAAkB,CAAkB;IAC5C,OAAO,CAAC,0BAA0B,CAA6C;IAC/E,OAAO,CAAC,uBAAuB,CAAkC;IACjE,OAAO,CAAC,yBAAyB,CAA0B;IAC3D,OAAO,CAAC,QAAQ,CAA2B;IAC3C,OAAO,CAAC,aAAa,CAGL;gBAEJ,OAAO,EAAE,4BAA4B;IAuBjD,IAAI,CAAC,QAAQ,EAAE,UAAU,GAAG,IAAI;IAqBhC,MAAM,IAAI,IAAI;IAad,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IAK3B,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,GAAG,IAAI;IAoBnF,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAUlD,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;YAKjD,2BAA2B;IAoCzC,OAAO,CAAC,0BAA0B;YAyBpB,oBAAoB;YAoBpB,kBAAkB;IAkBvB,EAAE,CAAC,CAAC,SAAS,MAAM,2BAA2B,EACrD,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,2BAA2B,CAAC,CAAC,CAAC,GACtC,IAAI;IAKE,IAAI,CAAC,CAAC,SAAS,MAAM,2BAA2B,EACvD,KAAK,EAAE,CAAC,EACR,GAAG,IAAI,EAAE,UAAU,CAAC,2BAA2B,CAAC,CAAC,CAAC,CAAC,GAClD,OAAO;CAIX"}
@@ -0,0 +1,170 @@
1
+ import { EventEmitter } from 'node:events';
2
+ import { AskUserQuestionInputSchema, safeParseToolInput } from '../schemas/tool-inputs.schema.js';
3
+ import { createLogger } from '../services/logger.service.js';
4
+ import { createAllowResponse, DeferredHandler, INTERACTIVE_TOOLS, } from './permissions.js';
5
+ import { isCanUseToolRequest, isHookCallbackRequest } from './types.js';
6
+ const logger = createLogger('claude-permissions');
7
+ export class ClaudePermissionCoordinator extends EventEmitter {
8
+ permissionHandler;
9
+ interactiveHandler;
10
+ pendingInteractiveRequests = new Map();
11
+ protocolToToolRequestId = new Map();
12
+ cancelledProtocolRequests = new Set();
13
+ protocol = null;
14
+ boundHandlers = null;
15
+ constructor(options) {
16
+ super();
17
+ this.permissionHandler = options.permissionHandler;
18
+ this.interactiveHandler =
19
+ options.interactiveHandler ??
20
+ new DeferredHandler({ timeout: options.interactiveTimeoutMs ?? 300_000 });
21
+ this.interactiveHandler.on('permission_request', (request, requestId) => {
22
+ this.pendingInteractiveRequests.set(requestId, request);
23
+ this.emit('interactive_request', {
24
+ requestId,
25
+ toolName: request.tool_name,
26
+ toolUseId: request.tool_use_id ?? requestId,
27
+ input: request.input,
28
+ });
29
+ });
30
+ this.interactiveHandler.on('request_timeout', (requestId) => {
31
+ this.pendingInteractiveRequests.delete(requestId);
32
+ });
33
+ }
34
+ bind(protocol) {
35
+ if (this.protocol) {
36
+ this.unbind();
37
+ }
38
+ this.protocol = protocol;
39
+ const onControlRequest = (controlRequest) => {
40
+ void this.handleControlRequestMessage(controlRequest);
41
+ };
42
+ const onControlCancel = (cancelRequest) => {
43
+ this.handleControlCancelMessage(cancelRequest);
44
+ };
45
+ this.boundHandlers = { onControlRequest, onControlCancel };
46
+ protocol.on('control_request', onControlRequest);
47
+ protocol.on('control_cancel', onControlCancel);
48
+ }
49
+ unbind() {
50
+ if (!(this.protocol && this.boundHandlers)) {
51
+ this.protocol = null;
52
+ this.boundHandlers = null;
53
+ return;
54
+ }
55
+ this.protocol.removeListener('control_request', this.boundHandlers.onControlRequest);
56
+ this.protocol.removeListener('control_cancel', this.boundHandlers.onControlCancel);
57
+ this.protocol = null;
58
+ this.boundHandlers = null;
59
+ }
60
+ stop(reason) {
61
+ this.pendingInteractiveRequests.clear();
62
+ this.interactiveHandler.cancelAll(reason ?? 'Permission coordinator stopped');
63
+ }
64
+ answerQuestion(requestId, answers) {
65
+ const storedRequest = this.pendingInteractiveRequests.get(requestId);
66
+ if (!storedRequest) {
67
+ throw new Error(`No pending interactive request found with ID: ${requestId}`);
68
+ }
69
+ const parsed = safeParseToolInput(AskUserQuestionInputSchema, storedRequest.input, 'AskUserQuestion');
70
+ if (!parsed.success) {
71
+ throw new Error(`Invalid AskUserQuestion input for request ID: ${requestId}`);
72
+ }
73
+ const questions = parsed.data.questions;
74
+ this.pendingInteractiveRequests.delete(requestId);
75
+ this.interactiveHandler.approve(requestId, { questions, answers });
76
+ }
77
+ approveInteractiveRequest(requestId) {
78
+ const storedRequest = this.pendingInteractiveRequests.get(requestId);
79
+ if (!storedRequest) {
80
+ throw new Error(`No pending interactive request found with ID: ${requestId}`);
81
+ }
82
+ this.pendingInteractiveRequests.delete(requestId);
83
+ this.interactiveHandler.approve(requestId, storedRequest.input);
84
+ }
85
+ denyInteractiveRequest(requestId, reason) {
86
+ this.pendingInteractiveRequests.delete(requestId);
87
+ this.interactiveHandler.deny(requestId, reason);
88
+ }
89
+ async handleControlRequestMessage(controlRequest) {
90
+ this.emit('permission_request', controlRequest);
91
+ if (isCanUseToolRequest(controlRequest.request) &&
92
+ INTERACTIVE_TOOLS.has(controlRequest.request.tool_name)) {
93
+ const toolUseId = controlRequest.request.tool_use_id;
94
+ if (toolUseId) {
95
+ this.protocolToToolRequestId.set(controlRequest.request_id, toolUseId);
96
+ }
97
+ }
98
+ try {
99
+ const response = await this.handleControlRequest(controlRequest.request);
100
+ this.protocolToToolRequestId.delete(controlRequest.request_id);
101
+ await this.protocol?.sendControlResponse(controlRequest.request_id, response);
102
+ }
103
+ catch (error) {
104
+ this.protocolToToolRequestId.delete(controlRequest.request_id);
105
+ if (this.cancelledProtocolRequests.has(controlRequest.request_id)) {
106
+ this.cancelledProtocolRequests.delete(controlRequest.request_id);
107
+ logger.debug('Skipping deny response for cancelled request', {
108
+ requestId: controlRequest.request_id,
109
+ });
110
+ return;
111
+ }
112
+ const errorMessage = error instanceof Error ? error.message : String(error);
113
+ await this.protocol?.sendControlResponse(controlRequest.request_id, {
114
+ behavior: 'deny',
115
+ message: `Permission handler error: ${errorMessage}`,
116
+ });
117
+ }
118
+ }
119
+ handleControlCancelMessage(cancelRequest) {
120
+ const toolUseId = this.protocolToToolRequestId.get(cancelRequest.request_id);
121
+ const requestIdToCancel = toolUseId ?? cancelRequest.request_id;
122
+ logger.debug('Control cancel received', {
123
+ protocolRequestId: cancelRequest.request_id,
124
+ toolUseId,
125
+ requestIdToCancel,
126
+ });
127
+ this.cancelledProtocolRequests.add(cancelRequest.request_id);
128
+ this.interactiveHandler.cancel(requestIdToCancel, 'Request cancelled by CLI');
129
+ const hadStoredRequest = this.pendingInteractiveRequests.has(requestIdToCancel);
130
+ this.pendingInteractiveRequests.delete(requestIdToCancel);
131
+ this.protocolToToolRequestId.delete(cancelRequest.request_id);
132
+ logger.debug('Request cancelled cleanup', {
133
+ requestIdToCancel,
134
+ hadStoredRequest,
135
+ });
136
+ this.emit('permission_cancelled', requestIdToCancel);
137
+ }
138
+ async handleControlRequest(request) {
139
+ if (isCanUseToolRequest(request)) {
140
+ if (INTERACTIVE_TOOLS.has(request.tool_name)) {
141
+ return await this.interactiveHandler.onCanUseTool(request);
142
+ }
143
+ return await this.permissionHandler.onCanUseTool(request);
144
+ }
145
+ if (isHookCallbackRequest(request)) {
146
+ return await this.handleHookCallback(request);
147
+ }
148
+ return {
149
+ behavior: 'deny',
150
+ message: `Unknown request subtype: ${request.subtype ?? 'undefined'}`,
151
+ };
152
+ }
153
+ async handleHookCallback(request) {
154
+ const hookEventName = request.input.hook_event_name;
155
+ if (hookEventName === 'PreToolUse') {
156
+ return await this.permissionHandler.onPreToolUseHook(request);
157
+ }
158
+ if (hookEventName === 'Stop') {
159
+ return await this.permissionHandler.onStopHook(request);
160
+ }
161
+ return createAllowResponse();
162
+ }
163
+ on(event, handler) {
164
+ return super.on(event, handler);
165
+ }
166
+ emit(event, ...args) {
167
+ return super.emit(event, ...args);
168
+ }
169
+ }
170
+ //# sourceMappingURL=permission-coordinator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permission-coordinator.js","sourceRoot":"","sources":["../../../../src/backend/claude/permission-coordinator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=permission-coordinator.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permission-coordinator.test.d.ts","sourceRoot":"","sources":["../../../../src/backend/claude/permission-coordinator.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,86 @@
1
+ import { EventEmitter } from 'node:events';
2
+ import { describe, expect, it, vi } from 'vitest';
3
+ import { ClaudePermissionCoordinator } from './permission-coordinator.js';
4
+ import { AutoApproveHandler } from './permissions.js';
5
+ class FakeProtocol extends EventEmitter {
6
+ sendControlResponse = vi.fn(async (_requestId, _response) => undefined);
7
+ sendInitialize = vi.fn(async () => ({}));
8
+ sendSetPermissionMode = vi.fn(async (_mode) => undefined);
9
+ sendUserMessage = vi.fn(async (_content) => undefined);
10
+ sendSetModel = vi.fn(async (_model) => undefined);
11
+ sendSetMaxThinkingTokens = vi.fn(async (_tokens) => undefined);
12
+ sendInterrupt = vi.fn(async () => undefined);
13
+ sendRewindFiles = vi.fn(async () => ({}));
14
+ start() {
15
+ }
16
+ stop() {
17
+ }
18
+ }
19
+ const askUserQuestionInput = {
20
+ questions: [
21
+ {
22
+ question: 'Ready to proceed?',
23
+ header: 'Confirm',
24
+ options: [
25
+ { label: 'Yes', description: 'Continue' },
26
+ { label: 'No', description: 'Cancel' },
27
+ ],
28
+ },
29
+ ],
30
+ };
31
+ const buildAskUserQuestionRequest = (requestId, toolUseId) => ({
32
+ type: 'control_request',
33
+ request_id: requestId,
34
+ request: {
35
+ subtype: 'can_use_tool',
36
+ tool_name: 'AskUserQuestion',
37
+ tool_use_id: toolUseId,
38
+ input: askUserQuestionInput,
39
+ },
40
+ });
41
+ describe('ClaudePermissionCoordinator', () => {
42
+ it('emits interactive_request and sends answers via protocol', async () => {
43
+ const protocol = new FakeProtocol();
44
+ const coordinator = new ClaudePermissionCoordinator({
45
+ permissionHandler: new AutoApproveHandler(),
46
+ });
47
+ coordinator.bind(protocol);
48
+ const interactivePromise = new Promise((resolve) => {
49
+ coordinator.on('interactive_request', (request) => resolve(request));
50
+ });
51
+ protocol.emit('control_request', buildAskUserQuestionRequest('req-1', 'tool-1'));
52
+ const interactive = await interactivePromise;
53
+ coordinator.answerQuestion(interactive.requestId, { 'Ready to proceed?': 'Yes' });
54
+ await vi.waitFor(() => expect(protocol.sendControlResponse).toHaveBeenCalled());
55
+ const [requestId, response] = protocol.sendControlResponse.mock.calls[0];
56
+ expect(requestId).toBe('req-1');
57
+ expect(response).toEqual({
58
+ behavior: 'allow',
59
+ updatedInput: {
60
+ questions: askUserQuestionInput.questions,
61
+ answers: { 'Ready to proceed?': 'Yes' },
62
+ },
63
+ });
64
+ });
65
+ it('emits permission_cancelled without sending a deny response', async () => {
66
+ const protocol = new FakeProtocol();
67
+ const coordinator = new ClaudePermissionCoordinator({
68
+ permissionHandler: new AutoApproveHandler(),
69
+ });
70
+ coordinator.bind(protocol);
71
+ const cancelledPromise = new Promise((resolve) => {
72
+ coordinator.on('permission_cancelled', (requestId) => resolve(requestId));
73
+ });
74
+ protocol.emit('control_request', buildAskUserQuestionRequest('req-2', 'tool-2'));
75
+ const cancel = {
76
+ type: 'control_cancel_request',
77
+ request_id: 'req-2',
78
+ };
79
+ protocol.emit('control_cancel', cancel);
80
+ const cancelledId = await cancelledPromise;
81
+ expect(cancelledId).toBe('tool-2');
82
+ await new Promise((resolve) => setTimeout(resolve, 0));
83
+ expect(protocol.sendControlResponse).not.toHaveBeenCalled();
84
+ });
85
+ });
86
+ //# sourceMappingURL=permission-coordinator.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permission-coordinator.test.js","sourceRoot":"","sources":["../../../../src/backend/claude/permission-coordinator.test.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,9 @@
1
1
  import { EventEmitter } from 'node:events';
2
- import { ClaudeProtocol } from './protocol.js';
2
+ import { type ResourceMonitoringOptions } from './monitoring.js';
3
+ import { ClaudeProtocolIO } from './protocol-io.js';
3
4
  import type { ClaudeJson, HooksConfig, InitializeResponseData, PermissionMode } from './types.js';
4
- export interface ResourceMonitoringOptions {
5
- enabled?: boolean;
6
- maxMemoryBytes?: number;
7
- maxCpuPercent?: number;
8
- activityTimeoutMs?: number;
9
- hungWarningThresholdMs?: number;
10
- monitoringIntervalMs?: number;
11
- }
12
5
  import type { ProcessStatus, ResourceUsage } from './types/process-types.js';
6
+ export type { ResourceMonitoringOptions } from './monitoring.js';
13
7
  export type { ProcessStatus, ResourceUsage } from './types/process-types.js';
14
8
  export interface ClaudeProcessOptions {
15
9
  workingDir: string;
@@ -32,20 +26,14 @@ export interface ExitResult {
32
26
  claudeSessionId: string | null;
33
27
  }
34
28
  export declare class ClaudeProcess extends EventEmitter {
35
- readonly protocol: ClaudeProtocol;
29
+ readonly protocol: ClaudeProtocolIO;
36
30
  private static readonly SPAWN_TIMEOUT;
37
- private static getDefaultActivityTimeoutMs;
38
- private static buildDefaultMonitoring;
39
31
  private process;
40
32
  private claudeSessionId;
41
33
  private status;
42
34
  private initializeResponse;
43
35
  private stderrBuffer;
44
- private monitoringOptions;
45
- private monitoringInterval;
46
- private lastActivityAt;
47
- private lastResourceUsage;
48
- private hungWarningEmitted;
36
+ private monitor;
49
37
  private isIntentionallyStopping;
50
38
  private sessionId;
51
39
  private constructor();
@@ -107,11 +95,7 @@ export declare class ClaudeProcess extends EventEmitter {
107
95
  private initialize;
108
96
  private extractClaudeSessionId;
109
97
  private setStatus;
110
- private startResourceMonitoring;
111
- private performResourceCheck;
112
- private updateResourceUsage;
113
- private checkIdleTime;
114
- private stopResourceMonitoring;
115
98
  private updateActivity;
99
+ private attachMonitor;
116
100
  }
117
101
  //# sourceMappingURL=process.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"process.d.ts","sourceRoot":"","sources":["../../../../src/backend/claude/process.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"process.d.ts","sourceRoot":"","sources":["../../../../src/backend/claude/process.ts"],"names":[],"mappings":"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"}