factory-factory 0.2.3 → 0.2.5

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 (364) hide show
  1. package/README.md +2 -2
  2. package/dist/client/assets/{_basePickBy-ClLqD23W.js → _basePickBy-BXw54oMQ.js} +1 -1
  3. package/dist/client/assets/{_baseUniq-DVVSJ599.js → _baseUniq-_2-lN-JZ.js} +1 -1
  4. package/dist/client/assets/{arc-DCPJ-atk.js → arc-DaCKgXo4.js} +1 -1
  5. package/dist/client/assets/{architectureDiagram-VXUJARFQ-dvBXEdHJ.js → architectureDiagram-VXUJARFQ-D5dlDvyJ.js} +1 -1
  6. package/dist/client/assets/{blockDiagram-VD42YOAC-BnlsKN_S.js → blockDiagram-VD42YOAC-CEAiD2S_.js} +1 -1
  7. package/dist/client/assets/{c4Diagram-YG6GDRKO-AMG1QOcD.js → c4Diagram-YG6GDRKO-DTNRx2b5.js} +1 -1
  8. package/dist/client/assets/channel-BusoDFL5.js +1 -0
  9. package/dist/client/assets/{chunk-4BX2VUAB-CvbHsudf.js → chunk-4BX2VUAB-yvp0WNZ0.js} +1 -1
  10. package/dist/client/assets/{chunk-55IACEB6-CtFa9sig.js → chunk-55IACEB6-Cse3ExNd.js} +1 -1
  11. package/dist/client/assets/{chunk-B4BG7PRW-sjqCuFZK.js → chunk-B4BG7PRW-Bl2GpPLn.js} +1 -1
  12. package/dist/client/assets/{chunk-DI55MBZ5-vsqDRqHG.js → chunk-DI55MBZ5-CV5Cqkss.js} +1 -1
  13. package/dist/client/assets/{chunk-FMBD7UC4-lEVbnFWf.js → chunk-FMBD7UC4-CP3yjlO6.js} +1 -1
  14. package/dist/client/assets/{chunk-QN33PNHL-laYvT_kS.js → chunk-QN33PNHL-DUdJaEPB.js} +1 -1
  15. package/dist/client/assets/{chunk-QZHKN3VN-Cs-LwO3R.js → chunk-QZHKN3VN-DYTUnPIc.js} +1 -1
  16. package/dist/client/assets/{chunk-TZMSLE5B-GQQ1aq3v.js → chunk-TZMSLE5B-CtWiqR24.js} +1 -1
  17. package/dist/client/assets/classDiagram-2ON5EDUG-C3RMRasv.js +1 -0
  18. package/dist/client/assets/classDiagram-v2-WZHVMYZB-C3RMRasv.js +1 -0
  19. package/dist/client/assets/clone-D6B-nWvg.js +1 -0
  20. package/dist/client/assets/{cose-bilkent-S5V4N54A-Y_FrS_Az.js → cose-bilkent-S5V4N54A-B67RdhOB.js} +1 -1
  21. package/dist/client/assets/{dagre-6UL2VRFP-DQIwKP-6.js → dagre-6UL2VRFP-D9u_oxJL.js} +1 -1
  22. package/dist/client/assets/{diagram-PSM6KHXK-jFQ4tsW4.js → diagram-PSM6KHXK-DOWfPnpa.js} +1 -1
  23. package/dist/client/assets/{diagram-QEK2KX5R-0kFBcfBt.js → diagram-QEK2KX5R-CqJwZbAA.js} +1 -1
  24. package/dist/client/assets/{diagram-S2PKOQOG-Cx_fwFHF.js → diagram-S2PKOQOG-D0ri9ztm.js} +1 -1
  25. package/dist/client/assets/{erDiagram-Q2GNP2WA-CUgHzWnq.js → erDiagram-Q2GNP2WA-0cRKPUY7.js} +1 -1
  26. package/dist/client/assets/{flowDiagram-NV44I4VS-DBPSyGKN.js → flowDiagram-NV44I4VS-Cj_5-ww1.js} +1 -1
  27. package/dist/client/assets/{ganttDiagram-JELNMOA3-BPAxxsuh.js → ganttDiagram-JELNMOA3-Cwm2arni.js} +1 -1
  28. package/dist/client/assets/{gitGraphDiagram-NY62KEGX-BHLuayx7.js → gitGraphDiagram-NY62KEGX-DKyLuO26.js} +1 -1
  29. package/dist/client/assets/{graph-hSnQ7U0p.js → graph-BhRkLhV1.js} +1 -1
  30. package/dist/client/assets/{index-CwTQdVJd.js → index-1HR_eYGL.js} +220 -182
  31. package/dist/client/assets/index-DHENAn70.css +1 -0
  32. package/dist/client/assets/{infoDiagram-WHAUD3N6-DqA4KMDO.js → infoDiagram-WHAUD3N6-DuzPbELj.js} +1 -1
  33. package/dist/client/assets/{journeyDiagram-XKPGCS4Q-DlVpIfsm.js → journeyDiagram-XKPGCS4Q-BfearpNr.js} +1 -1
  34. package/dist/client/assets/{kanban-definition-3W4ZIXB7-Bn7zJ_Qs.js → kanban-definition-3W4ZIXB7-R5KMtAj4.js} +1 -1
  35. package/dist/client/assets/{layout-BgfjjiLB.js → layout-B-tL36G2.js} +1 -1
  36. package/dist/client/assets/{linear-pgYyXM7v.js → linear-CvIBiHN-.js} +1 -1
  37. package/dist/client/assets/{mindmap-definition-VGOIOE7T-CU2bFQ_O.js → mindmap-definition-VGOIOE7T-CHYN0wBz.js} +1 -1
  38. package/dist/client/assets/{pieDiagram-ADFJNKIX-CdkFaWPc.js → pieDiagram-ADFJNKIX-LkA8WwD-.js} +1 -1
  39. package/dist/client/assets/{quadrantDiagram-AYHSOK5B-gp1mJ5Yc.js → quadrantDiagram-AYHSOK5B-B5s8Qc9j.js} +1 -1
  40. package/dist/client/assets/{requirementDiagram-UZGBJVZJ-BO59auEv.js → requirementDiagram-UZGBJVZJ-BMLpjBJA.js} +1 -1
  41. package/dist/client/assets/{sankeyDiagram-TZEHDZUN-BrZ8rlwL.js → sankeyDiagram-TZEHDZUN-BIj9RGlp.js} +1 -1
  42. package/dist/client/assets/{sequenceDiagram-WL72ISMW-LojphsDR.js → sequenceDiagram-WL72ISMW-uGM-Jh_O.js} +1 -1
  43. package/dist/client/assets/{stateDiagram-FKZM4ZOC-8bPGJ9iG.js → stateDiagram-FKZM4ZOC-CQQhnUok.js} +1 -1
  44. package/dist/client/assets/stateDiagram-v2-4FDKWEC3-BUJPEM7D.js +1 -0
  45. package/dist/client/assets/{terminal-instance-YWv2YE4B.js → terminal-instance-DpK3PfW4.js} +1 -1
  46. package/dist/client/assets/{timeline-definition-IT6M3QCI-1mTwPI08.js → timeline-definition-IT6M3QCI-BusXMYfI.js} +1 -1
  47. package/dist/client/assets/{treemap-KMMF4GRG-VwmVQuy1.js → treemap-KMMF4GRG-XF3-w8dz.js} +1 -1
  48. package/dist/client/assets/{xychartDiagram-PRI3JC2R-zPQ-EL8y.js → xychartDiagram-PRI3JC2R-DhKTXxb3.js} +1 -1
  49. package/dist/client/index.html +2 -2
  50. package/dist/prisma/generated/enums.d.ts +0 -1
  51. package/dist/prisma/generated/enums.d.ts.map +1 -1
  52. package/dist/prisma/generated/enums.js +0 -1
  53. package/dist/prisma/generated/enums.js.map +1 -1
  54. package/dist/prisma/generated/internal/class.js +2 -2
  55. package/dist/prisma/generated/internal/class.js.map +1 -1
  56. package/dist/prisma/generated/internal/prismaNamespace.d.ts +0 -1
  57. package/dist/prisma/generated/internal/prismaNamespace.d.ts.map +1 -1
  58. package/dist/prisma/generated/internal/prismaNamespace.js +0 -1
  59. package/dist/prisma/generated/internal/prismaNamespace.js.map +1 -1
  60. package/dist/prisma/generated/internal/prismaNamespaceBrowser.d.ts +0 -1
  61. package/dist/prisma/generated/internal/prismaNamespaceBrowser.d.ts.map +1 -1
  62. package/dist/prisma/generated/internal/prismaNamespaceBrowser.js +0 -1
  63. package/dist/prisma/generated/internal/prismaNamespaceBrowser.js.map +1 -1
  64. package/dist/prisma/generated/models/UserSettings.d.ts +1 -29
  65. package/dist/prisma/generated/models/UserSettings.d.ts.map +1 -1
  66. package/dist/prompts/ratchet/dispatch.md +31 -0
  67. package/dist/prompts/workflows/ratchet.md +22 -36
  68. package/dist/src/backend/app-context.d.ts +4 -0
  69. package/dist/src/backend/app-context.d.ts.map +1 -1
  70. package/dist/src/backend/app-context.js +4 -0
  71. package/dist/src/backend/app-context.js.map +1 -1
  72. package/dist/src/backend/claude/protocol.d.ts +3 -0
  73. package/dist/src/backend/claude/protocol.d.ts.map +1 -1
  74. package/dist/src/backend/claude/protocol.js +63 -10
  75. package/dist/src/backend/claude/protocol.js.map +1 -1
  76. package/dist/src/backend/claude/protocol.test.js +188 -0
  77. package/dist/src/backend/claude/protocol.test.js.map +1 -1
  78. package/dist/src/backend/claude/registry.d.ts.map +1 -1
  79. package/dist/src/backend/claude/registry.js +12 -1
  80. package/dist/src/backend/claude/registry.js.map +1 -1
  81. package/dist/src/backend/claude/session.d.ts.map +1 -1
  82. package/dist/src/backend/claude/session.js +40 -6
  83. package/dist/src/backend/claude/session.js.map +1 -1
  84. package/dist/src/backend/claude/session.test.js +46 -0
  85. package/dist/src/backend/claude/session.test.js.map +1 -1
  86. package/dist/src/backend/claude/types.d.ts +28 -3
  87. package/dist/src/backend/claude/types.d.ts.map +1 -1
  88. package/dist/src/backend/claude/types.js +28 -0
  89. package/dist/src/backend/claude/types.js.map +1 -1
  90. package/dist/src/backend/interceptors/pr-detection.interceptor.d.ts.map +1 -1
  91. package/dist/src/backend/interceptors/pr-detection.interceptor.js +19 -23
  92. package/dist/src/backend/interceptors/pr-detection.interceptor.js.map +1 -1
  93. package/dist/src/backend/prompts/markdown-loader.d.ts +22 -0
  94. package/dist/src/backend/prompts/markdown-loader.d.ts.map +1 -0
  95. package/dist/src/backend/prompts/markdown-loader.js +77 -0
  96. package/dist/src/backend/prompts/markdown-loader.js.map +1 -0
  97. package/dist/src/backend/prompts/markdown-loader.test.d.ts +2 -0
  98. package/dist/src/backend/prompts/markdown-loader.test.d.ts.map +1 -0
  99. package/dist/src/backend/prompts/markdown-loader.test.js +190 -0
  100. package/dist/src/backend/prompts/markdown-loader.test.js.map +1 -0
  101. package/dist/src/backend/prompts/quick-actions.d.ts.map +1 -1
  102. package/dist/src/backend/prompts/quick-actions.js +34 -92
  103. package/dist/src/backend/prompts/quick-actions.js.map +1 -1
  104. package/dist/src/backend/prompts/ratchet-dispatch.d.ts +3 -0
  105. package/dist/src/backend/prompts/ratchet-dispatch.d.ts.map +1 -0
  106. package/dist/src/backend/prompts/ratchet-dispatch.js +53 -0
  107. package/dist/src/backend/prompts/ratchet-dispatch.js.map +1 -0
  108. package/dist/src/backend/prompts/ratchet-dispatch.test.d.ts +2 -0
  109. package/dist/src/backend/prompts/ratchet-dispatch.test.d.ts.map +1 -0
  110. package/dist/src/backend/prompts/ratchet-dispatch.test.js +34 -0
  111. package/dist/src/backend/prompts/ratchet-dispatch.test.js.map +1 -0
  112. package/dist/src/backend/prompts/workflows.d.ts.map +1 -1
  113. package/dist/src/backend/prompts/workflows.js +23 -76
  114. package/dist/src/backend/prompts/workflows.js.map +1 -1
  115. package/dist/src/backend/resource_accessors/user-settings.accessor.d.ts +0 -1
  116. package/dist/src/backend/resource_accessors/user-settings.accessor.d.ts.map +1 -1
  117. package/dist/src/backend/resource_accessors/user-settings.accessor.js.map +1 -1
  118. package/dist/src/backend/resource_accessors/workspace.accessor.d.ts +4 -3
  119. package/dist/src/backend/resource_accessors/workspace.accessor.d.ts.map +1 -1
  120. package/dist/src/backend/resource_accessors/workspace.accessor.js +4 -2
  121. package/dist/src/backend/resource_accessors/workspace.accessor.js.map +1 -1
  122. package/dist/src/backend/routers/websocket/chat.handler.d.ts.map +1 -1
  123. package/dist/src/backend/routers/websocket/chat.handler.js +1 -30
  124. package/dist/src/backend/routers/websocket/chat.handler.js.map +1 -1
  125. package/dist/src/backend/services/chat-event-forwarder.service.d.ts.map +1 -1
  126. package/dist/src/backend/services/chat-event-forwarder.service.js +9 -13
  127. package/dist/src/backend/services/chat-event-forwarder.service.js.map +1 -1
  128. package/dist/src/backend/services/chat-message-handlers/attachment-processing.d.ts +14 -0
  129. package/dist/src/backend/services/chat-message-handlers/attachment-processing.d.ts.map +1 -0
  130. package/dist/src/backend/services/chat-message-handlers/attachment-processing.js +81 -0
  131. package/dist/src/backend/services/chat-message-handlers/attachment-processing.js.map +1 -0
  132. package/dist/src/backend/services/chat-message-handlers/attachment-processing.test.d.ts +2 -0
  133. package/dist/src/backend/services/chat-message-handlers/attachment-processing.test.d.ts.map +1 -0
  134. package/dist/src/backend/services/chat-message-handlers/attachment-processing.test.js +315 -0
  135. package/dist/src/backend/services/chat-message-handlers/attachment-processing.test.js.map +1 -0
  136. package/dist/src/backend/services/chat-message-handlers/handlers/get-history.handler.d.ts +2 -1
  137. package/dist/src/backend/services/chat-message-handlers/handlers/get-history.handler.d.ts.map +1 -1
  138. package/dist/src/backend/services/chat-message-handlers/handlers/get-history.handler.js.map +1 -1
  139. package/dist/src/backend/services/chat-message-handlers/handlers/get-queue.handler.d.ts +2 -1
  140. package/dist/src/backend/services/chat-message-handlers/handlers/get-queue.handler.d.ts.map +1 -1
  141. package/dist/src/backend/services/chat-message-handlers/handlers/get-queue.handler.js +7 -3
  142. package/dist/src/backend/services/chat-message-handlers/handlers/get-queue.handler.js.map +1 -1
  143. package/dist/src/backend/services/chat-message-handlers/handlers/handlers.test.js +156 -6
  144. package/dist/src/backend/services/chat-message-handlers/handlers/handlers.test.js.map +1 -1
  145. package/dist/src/backend/services/chat-message-handlers/handlers/list-sessions.handler.d.ts +2 -1
  146. package/dist/src/backend/services/chat-message-handlers/handlers/list-sessions.handler.d.ts.map +1 -1
  147. package/dist/src/backend/services/chat-message-handlers/handlers/list-sessions.handler.js.map +1 -1
  148. package/dist/src/backend/services/chat-message-handlers/handlers/load-session.handler.d.ts +2 -1
  149. package/dist/src/backend/services/chat-message-handlers/handlers/load-session.handler.d.ts.map +1 -1
  150. package/dist/src/backend/services/chat-message-handlers/handlers/load-session.handler.js +41 -31
  151. package/dist/src/backend/services/chat-message-handlers/handlers/load-session.handler.js.map +1 -1
  152. package/dist/src/backend/services/chat-message-handlers/handlers/permission-response.handler.d.ts +2 -1
  153. package/dist/src/backend/services/chat-message-handlers/handlers/permission-response.handler.d.ts.map +1 -1
  154. package/dist/src/backend/services/chat-message-handlers/handlers/permission-response.handler.js +1 -2
  155. package/dist/src/backend/services/chat-message-handlers/handlers/permission-response.handler.js.map +1 -1
  156. package/dist/src/backend/services/chat-message-handlers/handlers/question-response.handler.d.ts +2 -1
  157. package/dist/src/backend/services/chat-message-handlers/handlers/question-response.handler.d.ts.map +1 -1
  158. package/dist/src/backend/services/chat-message-handlers/handlers/question-response.handler.js +1 -2
  159. package/dist/src/backend/services/chat-message-handlers/handlers/question-response.handler.js.map +1 -1
  160. package/dist/src/backend/services/chat-message-handlers/handlers/queue-message.handler.d.ts +2 -1
  161. package/dist/src/backend/services/chat-message-handlers/handlers/queue-message.handler.d.ts.map +1 -1
  162. package/dist/src/backend/services/chat-message-handlers/handlers/queue-message.handler.js +6 -7
  163. package/dist/src/backend/services/chat-message-handlers/handlers/queue-message.handler.js.map +1 -1
  164. package/dist/src/backend/services/chat-message-handlers/handlers/remove-queued-message.handler.d.ts +2 -1
  165. package/dist/src/backend/services/chat-message-handlers/handlers/remove-queued-message.handler.d.ts.map +1 -1
  166. package/dist/src/backend/services/chat-message-handlers/handlers/remove-queued-message.handler.js +1 -2
  167. package/dist/src/backend/services/chat-message-handlers/handlers/remove-queued-message.handler.js.map +1 -1
  168. package/dist/src/backend/services/chat-message-handlers/handlers/rewind-files.handler.d.ts +2 -1
  169. package/dist/src/backend/services/chat-message-handlers/handlers/rewind-files.handler.d.ts.map +1 -1
  170. package/dist/src/backend/services/chat-message-handlers/handlers/rewind-files.handler.js +8 -9
  171. package/dist/src/backend/services/chat-message-handlers/handlers/rewind-files.handler.js.map +1 -1
  172. package/dist/src/backend/services/chat-message-handlers/handlers/set-model.handler.d.ts +2 -1
  173. package/dist/src/backend/services/chat-message-handlers/handlers/set-model.handler.d.ts.map +1 -1
  174. package/dist/src/backend/services/chat-message-handlers/handlers/set-model.handler.js +4 -5
  175. package/dist/src/backend/services/chat-message-handlers/handlers/set-model.handler.js.map +1 -1
  176. package/dist/src/backend/services/chat-message-handlers/handlers/set-thinking-budget.handler.d.ts +2 -1
  177. package/dist/src/backend/services/chat-message-handlers/handlers/set-thinking-budget.handler.d.ts.map +1 -1
  178. package/dist/src/backend/services/chat-message-handlers/handlers/set-thinking-budget.handler.js +4 -5
  179. package/dist/src/backend/services/chat-message-handlers/handlers/set-thinking-budget.handler.js.map +1 -1
  180. package/dist/src/backend/services/chat-message-handlers/handlers/start.handler.d.ts +2 -1
  181. package/dist/src/backend/services/chat-message-handlers/handlers/start.handler.d.ts.map +1 -1
  182. package/dist/src/backend/services/chat-message-handlers/handlers/start.handler.js +4 -2
  183. package/dist/src/backend/services/chat-message-handlers/handlers/start.handler.js.map +1 -1
  184. package/dist/src/backend/services/chat-message-handlers/handlers/stop.handler.d.ts +2 -1
  185. package/dist/src/backend/services/chat-message-handlers/handlers/stop.handler.d.ts.map +1 -1
  186. package/dist/src/backend/services/chat-message-handlers/handlers/stop.handler.js +7 -2
  187. package/dist/src/backend/services/chat-message-handlers/handlers/stop.handler.js.map +1 -1
  188. package/dist/src/backend/services/chat-message-handlers/handlers/user-input.handler.d.ts +2 -1
  189. package/dist/src/backend/services/chat-message-handlers/handlers/user-input.handler.d.ts.map +1 -1
  190. package/dist/src/backend/services/chat-message-handlers/handlers/user-input.handler.js +1 -2
  191. package/dist/src/backend/services/chat-message-handlers/handlers/user-input.handler.js.map +1 -1
  192. package/dist/src/backend/services/chat-message-handlers/registry.d.ts +5 -1
  193. package/dist/src/backend/services/chat-message-handlers/registry.d.ts.map +1 -1
  194. package/dist/src/backend/services/chat-message-handlers/registry.js.map +1 -1
  195. package/dist/src/backend/services/chat-message-handlers.service.d.ts +0 -2
  196. package/dist/src/backend/services/chat-message-handlers.service.d.ts.map +1 -1
  197. package/dist/src/backend/services/chat-message-handlers.service.js +6 -68
  198. package/dist/src/backend/services/chat-message-handlers.service.js.map +1 -1
  199. package/dist/src/backend/services/chat-transport-adapter.service.d.ts +2 -0
  200. package/dist/src/backend/services/chat-transport-adapter.service.d.ts.map +1 -1
  201. package/dist/src/backend/services/chat-transport-adapter.service.js +32 -1
  202. package/dist/src/backend/services/chat-transport-adapter.service.js.map +1 -1
  203. package/dist/src/backend/services/chat-transport-adapter.service.test.js +14 -0
  204. package/dist/src/backend/services/chat-transport-adapter.service.test.js.map +1 -1
  205. package/dist/src/backend/services/data-backup.service.d.ts +3 -144
  206. package/dist/src/backend/services/data-backup.service.d.ts.map +1 -1
  207. package/dist/src/backend/services/data-backup.service.js +119 -115
  208. package/dist/src/backend/services/data-backup.service.js.map +1 -1
  209. package/dist/src/backend/services/data-backup.service.test.d.ts +2 -0
  210. package/dist/src/backend/services/data-backup.service.test.d.ts.map +1 -0
  211. package/dist/src/backend/services/data-backup.service.test.js +602 -0
  212. package/dist/src/backend/services/data-backup.service.test.js.map +1 -0
  213. package/dist/src/backend/services/file-lock.service.d.ts.map +1 -1
  214. package/dist/src/backend/services/file-lock.service.js +3 -5
  215. package/dist/src/backend/services/file-lock.service.js.map +1 -1
  216. package/dist/src/backend/services/file-lock.service.test.js +55 -0
  217. package/dist/src/backend/services/file-lock.service.test.js.map +1 -1
  218. package/dist/src/backend/services/github-cli.service.d.ts.map +1 -1
  219. package/dist/src/backend/services/github-cli.service.js +118 -19
  220. package/dist/src/backend/services/github-cli.service.js.map +1 -1
  221. package/dist/src/backend/services/github-cli.service.test.js +126 -0
  222. package/dist/src/backend/services/github-cli.service.test.js.map +1 -1
  223. package/dist/src/backend/services/index.d.ts +1 -0
  224. package/dist/src/backend/services/index.d.ts.map +1 -1
  225. package/dist/src/backend/services/index.js +1 -0
  226. package/dist/src/backend/services/index.js.map +1 -1
  227. package/dist/src/backend/services/message-state-machine.d.ts.map +1 -1
  228. package/dist/src/backend/services/message-state-machine.js +11 -5
  229. package/dist/src/backend/services/message-state-machine.js.map +1 -1
  230. package/dist/src/backend/services/message-state.service.d.ts +16 -18
  231. package/dist/src/backend/services/message-state.service.d.ts.map +1 -1
  232. package/dist/src/backend/services/message-state.service.js +8 -14
  233. package/dist/src/backend/services/message-state.service.js.map +1 -1
  234. package/dist/src/backend/services/message-state.service.test.js +36 -45
  235. package/dist/src/backend/services/message-state.service.test.js.map +1 -1
  236. package/dist/src/backend/services/pr-snapshot.service.d.ts +9 -1
  237. package/dist/src/backend/services/pr-snapshot.service.d.ts.map +1 -1
  238. package/dist/src/backend/services/pr-snapshot.service.js +53 -3
  239. package/dist/src/backend/services/pr-snapshot.service.js.map +1 -1
  240. package/dist/src/backend/services/pr-snapshot.service.test.js +102 -47
  241. package/dist/src/backend/services/pr-snapshot.service.test.js.map +1 -1
  242. package/dist/src/backend/services/ratchet.service.d.ts +14 -71
  243. package/dist/src/backend/services/ratchet.service.d.ts.map +1 -1
  244. package/dist/src/backend/services/ratchet.service.js +198 -439
  245. package/dist/src/backend/services/ratchet.service.js.map +1 -1
  246. package/dist/src/backend/services/ratchet.service.test.js +210 -358
  247. package/dist/src/backend/services/ratchet.service.test.js.map +1 -1
  248. package/dist/src/backend/services/run-script-state-machine.service.d.ts +27 -0
  249. package/dist/src/backend/services/run-script-state-machine.service.d.ts.map +1 -0
  250. package/dist/src/backend/services/run-script-state-machine.service.js +149 -0
  251. package/dist/src/backend/services/run-script-state-machine.service.js.map +1 -0
  252. package/dist/src/backend/services/run-script-state-machine.service.test.d.ts +2 -0
  253. package/dist/src/backend/services/run-script-state-machine.service.test.d.ts.map +1 -0
  254. package/dist/src/backend/services/run-script-state-machine.service.test.js +453 -0
  255. package/dist/src/backend/services/run-script-state-machine.service.test.js.map +1 -0
  256. package/dist/src/backend/services/run-script.service.d.ts +0 -7
  257. package/dist/src/backend/services/run-script.service.d.ts.map +1 -1
  258. package/dist/src/backend/services/run-script.service.js +145 -76
  259. package/dist/src/backend/services/run-script.service.js.map +1 -1
  260. package/dist/src/backend/services/scheduler.service.d.ts.map +1 -1
  261. package/dist/src/backend/services/scheduler.service.js +16 -7
  262. package/dist/src/backend/services/scheduler.service.js.map +1 -1
  263. package/dist/src/backend/services/scheduler.service.test.js +41 -5
  264. package/dist/src/backend/services/scheduler.service.test.js.map +1 -1
  265. package/dist/src/backend/services/session-runtime-store.service.d.ts +38 -0
  266. package/dist/src/backend/services/session-runtime-store.service.d.ts.map +1 -0
  267. package/dist/src/backend/services/session-runtime-store.service.js +111 -0
  268. package/dist/src/backend/services/session-runtime-store.service.js.map +1 -0
  269. package/dist/src/backend/services/session-runtime-store.service.test.d.ts +2 -0
  270. package/dist/src/backend/services/session-runtime-store.service.test.d.ts.map +1 -0
  271. package/dist/src/backend/services/session-runtime-store.service.test.js +15 -0
  272. package/dist/src/backend/services/session-runtime-store.service.test.js.map +1 -0
  273. package/dist/src/backend/services/session.repository.d.ts +2 -0
  274. package/dist/src/backend/services/session.repository.d.ts.map +1 -1
  275. package/dist/src/backend/services/session.repository.js +3 -0
  276. package/dist/src/backend/services/session.repository.js.map +1 -1
  277. package/dist/src/backend/services/session.service.d.ts +0 -1
  278. package/dist/src/backend/services/session.service.d.ts.map +1 -1
  279. package/dist/src/backend/services/session.service.js +18 -23
  280. package/dist/src/backend/services/session.service.js.map +1 -1
  281. package/dist/src/backend/services/session.service.test.js +210 -12
  282. package/dist/src/backend/services/session.service.test.js.map +1 -1
  283. package/dist/src/backend/services/workspace-creation.service.test.js +0 -2
  284. package/dist/src/backend/services/workspace-creation.service.test.js.map +1 -1
  285. package/dist/src/backend/services/workspace-flow-state.service.d.ts.map +1 -1
  286. package/dist/src/backend/services/workspace-flow-state.service.js +0 -1
  287. package/dist/src/backend/services/workspace-flow-state.service.js.map +1 -1
  288. package/dist/src/backend/services/workspace-query.service.d.ts +1 -0
  289. package/dist/src/backend/services/workspace-query.service.d.ts.map +1 -1
  290. package/dist/src/backend/services/workspace-query.service.js +8 -0
  291. package/dist/src/backend/services/workspace-query.service.js.map +1 -1
  292. package/dist/src/backend/services/worktree-lifecycle.service.d.ts.map +1 -1
  293. package/dist/src/backend/services/worktree-lifecycle.service.js +139 -19
  294. package/dist/src/backend/services/worktree-lifecycle.service.js.map +1 -1
  295. package/dist/src/backend/services/worktree-lifecycle.service.test.js +48 -1
  296. package/dist/src/backend/services/worktree-lifecycle.service.test.js.map +1 -1
  297. package/dist/src/backend/trpc/admin.trpc.d.ts +130 -7
  298. package/dist/src/backend/trpc/admin.trpc.d.ts.map +1 -1
  299. package/dist/src/backend/trpc/admin.trpc.js +2 -1
  300. package/dist/src/backend/trpc/admin.trpc.js.map +1 -1
  301. package/dist/src/backend/trpc/github.trpc.d.ts +14 -0
  302. package/dist/src/backend/trpc/github.trpc.d.ts.map +1 -1
  303. package/dist/src/backend/trpc/github.trpc.js +28 -0
  304. package/dist/src/backend/trpc/github.trpc.js.map +1 -1
  305. package/dist/src/backend/trpc/index.d.ts +149 -20
  306. package/dist/src/backend/trpc/index.d.ts.map +1 -1
  307. package/dist/src/backend/trpc/session.trpc.d.ts +3 -3
  308. package/dist/src/backend/trpc/user-settings.trpc.d.ts +0 -3
  309. package/dist/src/backend/trpc/user-settings.trpc.d.ts.map +1 -1
  310. package/dist/src/backend/trpc/user-settings.trpc.js +0 -1
  311. package/dist/src/backend/trpc/user-settings.trpc.js.map +1 -1
  312. package/dist/src/backend/trpc/workspace/run-script.trpc.d.ts +0 -7
  313. package/dist/src/backend/trpc/workspace/run-script.trpc.d.ts.map +1 -1
  314. package/dist/src/backend/trpc/workspace.trpc.d.ts +2 -7
  315. package/dist/src/backend/trpc/workspace.trpc.d.ts.map +1 -1
  316. package/dist/src/backend/trpc/workspace.trpc.js +13 -1
  317. package/dist/src/backend/trpc/workspace.trpc.js.map +1 -1
  318. package/dist/src/shared/ci-status.d.ts +9 -0
  319. package/dist/src/shared/ci-status.d.ts.map +1 -0
  320. package/dist/src/shared/ci-status.js +44 -0
  321. package/dist/src/shared/ci-status.js.map +1 -0
  322. package/dist/src/shared/claude/index.d.ts +1 -0
  323. package/dist/src/shared/claude/index.d.ts.map +1 -1
  324. package/dist/src/shared/claude/index.js +1 -0
  325. package/dist/src/shared/claude/index.js.map +1 -1
  326. package/dist/src/shared/claude/protocol.d.ts +6 -3
  327. package/dist/src/shared/claude/protocol.d.ts.map +1 -1
  328. package/dist/src/shared/claude/protocol.js.map +1 -1
  329. package/dist/src/shared/schemas/export-data.schema.d.ts +865 -0
  330. package/dist/src/shared/schemas/export-data.schema.d.ts.map +1 -0
  331. package/dist/src/shared/schemas/export-data.schema.js +167 -0
  332. package/dist/src/shared/schemas/export-data.schema.js.map +1 -0
  333. package/dist/src/shared/schemas/persisted-stores.schema.d.ts +19 -0
  334. package/dist/src/shared/schemas/persisted-stores.schema.d.ts.map +1 -0
  335. package/dist/src/shared/schemas/persisted-stores.schema.js +17 -0
  336. package/dist/src/shared/schemas/persisted-stores.schema.js.map +1 -0
  337. package/dist/src/shared/session-runtime.d.ts +17 -0
  338. package/dist/src/shared/session-runtime.d.ts.map +1 -0
  339. package/dist/src/shared/session-runtime.js +9 -0
  340. package/dist/src/shared/session-runtime.js.map +1 -0
  341. package/dist/src/shared/websocket/chat-message.schema.d.ts +24 -11
  342. package/dist/src/shared/websocket/chat-message.schema.d.ts.map +1 -1
  343. package/dist/src/shared/websocket/chat-message.schema.js +4 -1
  344. package/dist/src/shared/websocket/chat-message.schema.js.map +1 -1
  345. package/dist/src/shared/websocket/index.d.ts +1 -1
  346. package/dist/src/shared/websocket/index.d.ts.map +1 -1
  347. package/dist/src/shared/websocket/index.js.map +1 -1
  348. package/dist/src/shared/workspace-sidebar-status.d.ts +20 -0
  349. package/dist/src/shared/workspace-sidebar-status.d.ts.map +1 -0
  350. package/dist/src/shared/workspace-sidebar-status.js +73 -0
  351. package/dist/src/shared/workspace-sidebar-status.js.map +1 -0
  352. package/dist/tsconfig.backend.tsbuildinfo +1 -1
  353. package/package.json +2 -2
  354. package/prisma/migrations/20260206170000_remove_merge_conflict_state/migration.sql +7 -0
  355. package/prisma/migrations/20260206174726_remove_ratchet_auto_fix_conflicts/migration.sql +33 -0
  356. package/prisma/schema.prisma +0 -2
  357. package/prompts/ratchet/dispatch.md +31 -0
  358. package/prompts/workflows/ratchet.md +22 -36
  359. package/dist/client/assets/channel-DWeb1p1N.js +0 -1
  360. package/dist/client/assets/classDiagram-2ON5EDUG-DkYgN_SG.js +0 -1
  361. package/dist/client/assets/classDiagram-v2-WZHVMYZB-DkYgN_SG.js +0 -1
  362. package/dist/client/assets/clone-WKF0ejf5.js +0 -1
  363. package/dist/client/assets/index-DCpIgwSv.css +0 -1
  364. package/dist/client/assets/stateDiagram-v2-4FDKWEC3-BFf_HK07.js +0 -1
@@ -4,27 +4,26 @@ import { DEBUG_CHAT_WS } from '../constants.js';
4
4
  const logger = createLogger('chat-message-handlers');
5
5
  export function createSetThinkingBudgetHandler() {
6
6
  return async ({ ws, sessionId, message }) => {
7
- const typedMessage = message;
8
7
  const client = sessionService.getClient(sessionId);
9
8
  if (!client) {
10
9
  ws.send(JSON.stringify({ type: 'error', message: 'No active client for session' }));
11
10
  return;
12
11
  }
13
12
  try {
14
- await client.setMaxThinkingTokens(typedMessage.max_tokens);
13
+ await client.setMaxThinkingTokens(message.max_tokens);
15
14
  if (DEBUG_CHAT_WS) {
16
15
  logger.info('[Chat WS] Set thinking budget', {
17
16
  sessionId,
18
- maxTokens: typedMessage.max_tokens,
17
+ maxTokens: message.max_tokens,
19
18
  });
20
19
  }
21
- ws.send(JSON.stringify({ type: 'thinking_budget_set', max_tokens: typedMessage.max_tokens }));
20
+ ws.send(JSON.stringify({ type: 'thinking_budget_set', max_tokens: message.max_tokens }));
22
21
  }
23
22
  catch (error) {
24
23
  const errorMessage = error instanceof Error ? error.message : String(error);
25
24
  logger.error('[Chat WS] Failed to set thinking budget', {
26
25
  sessionId,
27
- maxTokens: typedMessage.max_tokens,
26
+ maxTokens: message.max_tokens,
28
27
  error: errorMessage,
29
28
  });
30
29
  ws.send(JSON.stringify({ type: 'error', message: `Failed to set thinking budget: ${errorMessage}` }));
@@ -1 +1 @@
1
- {"version":3,"file":"set-thinking-budget.handler.js","sourceRoot":"","sources":["../../../../../../src/backend/services/chat-message-handlers/handlers/set-thinking-budget.handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAG7C,MAAM,MAAM,GAAG,YAAY,CAAC,uBAAuB,CAAC,CAAC;AAErD,MAAM,UAAU,8BAA8B;IAC5C,OAAO,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE;QAC1C,MAAM,YAAY,GAAG,OAAmC,CAAC;QACzD,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACnD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,8BAA8B,EAAE,CAAC,CAAC,CAAC;YACpF,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,oBAAoB,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;YAC3D,IAAI,aAAa,EAAE,CAAC;gBAClB,MAAM,CAAC,IAAI,CAAC,+BAA+B,EAAE;oBAC3C,SAAS;oBACT,SAAS,EAAE,YAAY,CAAC,UAAU;iBACnC,CAAC,CAAC;YACL,CAAC;YACD,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,UAAU,EAAE,YAAY,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QAChG,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5E,MAAM,CAAC,KAAK,CAAC,yCAAyC,EAAE;gBACtD,SAAS;gBACT,SAAS,EAAE,YAAY,CAAC,UAAU;gBAClC,KAAK,EAAE,YAAY;aACpB,CAAC,CAAC;YACH,EAAE,CAAC,IAAI,CACL,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,kCAAkC,YAAY,EAAE,EAAE,CAAC,CAC7F,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"set-thinking-budget.handler.js","sourceRoot":"","sources":["../../../../../../src/backend/services/chat-message-handlers/handlers/set-thinking-budget.handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAG7C,MAAM,MAAM,GAAG,YAAY,CAAC,uBAAuB,CAAC,CAAC;AAErD,MAAM,UAAU,8BAA8B;IAC5C,OAAO,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE;QAC1C,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACnD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,8BAA8B,EAAE,CAAC,CAAC,CAAC;YACpF,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,oBAAoB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YACtD,IAAI,aAAa,EAAE,CAAC;gBAClB,MAAM,CAAC,IAAI,CAAC,+BAA+B,EAAE;oBAC3C,SAAS;oBACT,SAAS,EAAE,OAAO,CAAC,UAAU;iBAC9B,CAAC,CAAC;YACL,CAAC;YACD,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QAC3F,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5E,MAAM,CAAC,KAAK,CAAC,yCAAyC,EAAE;gBACtD,SAAS;gBACT,SAAS,EAAE,OAAO,CAAC,UAAU;gBAC7B,KAAK,EAAE,YAAY;aACpB,CAAC,CAAC;YACH,EAAE,CAAC,IAAI,CACL,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,kCAAkC,YAAY,EAAE,EAAE,CAAC,CAC7F,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
@@ -1,3 +1,4 @@
1
+ import type { StartMessageInput } from '../../../../shared/websocket/index.js';
1
2
  import type { ChatMessageHandler, HandlerRegistryDependencies } from '../types.js';
2
- export declare function createStartHandler(deps: HandlerRegistryDependencies): ChatMessageHandler;
3
+ export declare function createStartHandler(deps: HandlerRegistryDependencies): ChatMessageHandler<StartMessageInput>;
3
4
  //# sourceMappingURL=start.handler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"start.handler.d.ts","sourceRoot":"","sources":["../../../../../../src/backend/services/chat-message-handlers/handlers/start.handler.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,2BAA2B,EAAE,MAAM,UAAU,CAAC;AAKhF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,2BAA2B,GAAG,kBAAkB,CAwBxF"}
1
+ {"version":3,"file":"start.handler.d.ts","sourceRoot":"","sources":["../../../../../../src/backend/services/chat-message-handlers/handlers/start.handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAI5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,2BAA2B,EAAE,MAAM,UAAU,CAAC;AAKhF,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,2BAA2B,GAChC,kBAAkB,CAAC,iBAAiB,CAAC,CAwBvC"}
@@ -1,5 +1,6 @@
1
1
  import { createLogger } from '../../logger.service.js';
2
2
  import { sessionService } from '../../session.service.js';
3
+ import { sessionRuntimeStoreService } from '../../session-runtime-store.service.js';
3
4
  import { getValidModel } from '../utils.js';
4
5
  const logger = createLogger('chat-message-handlers');
5
6
  export function createStartHandler(deps) {
@@ -9,10 +10,11 @@ export function createStartHandler(deps) {
9
10
  ws.send(JSON.stringify({ type: 'error', message: 'Client creator not configured' }));
10
11
  return;
11
12
  }
12
- ws.send(JSON.stringify({ type: 'starting', dbSessionId: sessionId }));
13
+ sessionRuntimeStoreService.markStarting(sessionId);
13
14
  const sessionOpts = await sessionService.getSessionOptions(sessionId);
14
15
  if (!sessionOpts) {
15
16
  logger.error('[Chat WS] Failed to get session options', { sessionId });
17
+ sessionRuntimeStoreService.markError(sessionId);
16
18
  ws.send(JSON.stringify({ type: 'error', message: 'Session not found' }));
17
19
  return;
18
20
  }
@@ -21,7 +23,7 @@ export function createStartHandler(deps) {
21
23
  planModeEnabled: message.planModeEnabled,
22
24
  model: getValidModel(message),
23
25
  });
24
- ws.send(JSON.stringify({ type: 'started', dbSessionId: sessionId }));
26
+ sessionRuntimeStoreService.markIdle(sessionId, 'alive');
25
27
  };
26
28
  }
27
29
  //# sourceMappingURL=start.handler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"start.handler.js","sourceRoot":"","sources":["../../../../../../src/backend/services/chat-message-handlers/handlers/start.handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,MAAM,GAAG,YAAY,CAAC,uBAAuB,CAAC,CAAC;AAErD,MAAM,UAAU,kBAAkB,CAAC,IAAiC;IAClE,OAAO,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE;QAC1C,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC9C,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,+BAA+B,EAAE,CAAC,CAAC,CAAC;YACrF,OAAO;QACT,CAAC;QAED,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;QAEtE,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QACtE,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,CAAC,KAAK,CAAC,yCAAyC,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;YACvE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC;YACzE,OAAO;QACT,CAAC;QAED,MAAM,aAAa,CAAC,WAAW,CAAC,SAAS,EAAE;YACzC,eAAe,EAAG,OAA6B,CAAC,eAAe;YAC/D,eAAe,EAAG,OAA6B,CAAC,eAAe;YAC/D,KAAK,EAAE,aAAa,CAAC,OAA4B,CAAC;SACnD,CAAC,CAAC;QACH,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;IACvE,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"start.handler.js","sourceRoot":"","sources":["../../../../../../src/backend/services/chat-message-handlers/handlers/start.handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AAEjF,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,MAAM,GAAG,YAAY,CAAC,uBAAuB,CAAC,CAAC;AAErD,MAAM,UAAU,kBAAkB,CAChC,IAAiC;IAEjC,OAAO,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE;QAC1C,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC9C,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,+BAA+B,EAAE,CAAC,CAAC,CAAC;YACrF,OAAO;QACT,CAAC;QACD,0BAA0B,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAEnD,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QACtE,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,CAAC,KAAK,CAAC,yCAAyC,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;YACvE,0BAA0B,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YAChD,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC;YACzE,OAAO;QACT,CAAC;QAED,MAAM,aAAa,CAAC,WAAW,CAAC,SAAS,EAAE;YACzC,eAAe,EAAE,OAAO,CAAC,eAAe;YACxC,eAAe,EAAE,OAAO,CAAC,eAAe;YACxC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC;SAC9B,CAAC,CAAC;QACH,0BAA0B,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC1D,CAAC,CAAC;AACJ,CAAC"}
@@ -1,3 +1,4 @@
1
+ import type { StopMessage } from '../../../../shared/websocket/index.js';
1
2
  import type { ChatMessageHandler } from '../types.js';
2
- export declare function createStopHandler(): ChatMessageHandler;
3
+ export declare function createStopHandler(): ChatMessageHandler<StopMessage>;
3
4
  //# sourceMappingURL=stop.handler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"stop.handler.d.ts","sourceRoot":"","sources":["../../../../../../src/backend/services/chat-message-handlers/handlers/stop.handler.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAEnD,wBAAgB,iBAAiB,IAAI,kBAAkB,CAQtD"}
1
+ {"version":3,"file":"stop.handler.d.ts","sourceRoot":"","sources":["../../../../../../src/backend/services/chat-message-handlers/handlers/stop.handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAItD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAEnD,wBAAgB,iBAAiB,IAAI,kBAAkB,CAAC,WAAW,CAAC,CAYnE"}
@@ -1,10 +1,15 @@
1
1
  import { chatEventForwarderService } from '../../chat-event-forwarder.service.js';
2
2
  import { sessionService } from '../../session.service.js';
3
+ import { sessionRuntimeStoreService } from '../../session-runtime-store.service.js';
3
4
  export function createStopHandler() {
4
- return async ({ ws, sessionId }) => {
5
+ return async ({ sessionId }) => {
6
+ const existingClient = sessionService.getClient(sessionId);
7
+ sessionRuntimeStoreService.markStopping(sessionId);
5
8
  await sessionService.stopClaudeSession(sessionId);
6
9
  chatEventForwarderService.clearPendingRequest(sessionId);
7
- ws.send(JSON.stringify({ type: 'stopped', dbSessionId: sessionId }));
10
+ if (!existingClient) {
11
+ sessionRuntimeStoreService.markIdle(sessionId, 'stopped');
12
+ }
8
13
  };
9
14
  }
10
15
  //# sourceMappingURL=stop.handler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stop.handler.js","sourceRoot":"","sources":["../../../../../../src/backend/services/chat-message-handlers/handlers/stop.handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGvD,MAAM,UAAU,iBAAiB;IAC/B,OAAO,KAAK,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;QACjC,MAAM,cAAc,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAGlD,yBAAyB,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;QACzD,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;IACvE,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"stop.handler.js","sourceRoot":"","sources":["../../../../../../src/backend/services/chat-message-handlers/handlers/stop.handler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AAGjF,MAAM,UAAU,iBAAiB;IAC/B,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;QAC7B,MAAM,cAAc,GAAG,cAAc,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC3D,0BAA0B,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QACnD,MAAM,cAAc,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAGlD,yBAAyB,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;QACzD,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,0BAA0B,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
@@ -1,3 +1,4 @@
1
+ import type { UserInputMessage } from '../../../../shared/websocket/index.js';
1
2
  import type { ChatMessageHandler } from '../types.js';
2
- export declare function createUserInputHandler(): ChatMessageHandler;
3
+ export declare function createUserInputHandler(): ChatMessageHandler<UserInputMessage>;
3
4
  //# sourceMappingURL=user-input.handler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"user-input.handler.d.ts","sourceRoot":"","sources":["../../../../../../src/backend/services/chat-message-handlers/handlers/user-input.handler.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAInD,wBAAgB,sBAAsB,IAAI,kBAAkB,CA+B3D"}
1
+ {"version":3,"file":"user-input.handler.d.ts","sourceRoot":"","sources":["../../../../../../src/backend/services/chat-message-handlers/handlers/user-input.handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAI3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAInD,wBAAgB,sBAAsB,IAAI,kBAAkB,CAAC,gBAAgB,CAAC,CA8B7E"}
@@ -3,8 +3,7 @@ import { sessionService } from '../../session.service.js';
3
3
  const logger = createLogger('chat-message-handlers');
4
4
  export function createUserInputHandler() {
5
5
  return ({ ws, sessionId, message }) => {
6
- const typedMessage = message;
7
- const rawContent = typedMessage.content || typedMessage.text;
6
+ const rawContent = message.content || message.text;
8
7
  if (!rawContent) {
9
8
  return;
10
9
  }
@@ -1 +1 @@
1
- {"version":3,"file":"user-input.handler.js","sourceRoot":"","sources":["../../../../../../src/backend/services/chat-message-handlers/handlers/user-input.handler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGvD,MAAM,MAAM,GAAG,YAAY,CAAC,uBAAuB,CAAC,CAAC;AAErD,MAAM,UAAU,sBAAsB;IACpC,OAAO,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE;QACpC,MAAM,YAAY,GAAG,OAA2B,CAAC;QACjD,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC;QAC7D,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO;QACT,CAAC;QAED,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC;YACzD,OAAO;QACT,CAAC;QAGD,MAAM,cAAc,GAClB,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAE,UAAkC,CAAC;QAEpF,MAAM,cAAc,GAAG,cAAc,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC3D,IAAI,cAAc,EAAE,SAAS,EAAE,EAAE,CAAC;YAChC,cAAc,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACzD,MAAM,CAAC,KAAK,CAAC,kCAAkC,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;YACzE,CAAC,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,EAAE,CAAC,IAAI,CACL,IAAI,CAAC,SAAS,CAAC;YACb,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,gEAAgE;SAC1E,CAAC,CACH,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"user-input.handler.js","sourceRoot":"","sources":["../../../../../../src/backend/services/chat-message-handlers/handlers/user-input.handler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGvD,MAAM,MAAM,GAAG,YAAY,CAAC,uBAAuB,CAAC,CAAC;AAErD,MAAM,UAAU,sBAAsB;IACpC,OAAO,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE;QACpC,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;QACnD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO;QACT,CAAC;QAED,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC;YACzD,OAAO;QACT,CAAC;QAGD,MAAM,cAAc,GAClB,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAE,UAAkC,CAAC;QAEpF,MAAM,cAAc,GAAG,cAAc,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC3D,IAAI,cAAc,EAAE,SAAS,EAAE,EAAE,CAAC;YAChC,cAAc,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACzD,MAAM,CAAC,KAAK,CAAC,kCAAkC,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;YACzE,CAAC,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,EAAE,CAAC,IAAI,CACL,IAAI,CAAC,SAAS,CAAC;YACb,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,gEAAgE;SAC1E,CAAC,CACH,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
@@ -1,5 +1,9 @@
1
1
  import type { ChatMessageInput } from '../../../shared/websocket/index.js';
2
2
  import type { ChatMessageHandler, HandlerRegistryDependencies } from './types.js';
3
- export type ChatMessageHandlerRegistry = Record<ChatMessageInput['type'], ChatMessageHandler>;
3
+ export type ChatMessageHandlerRegistry = {
4
+ [K in ChatMessageInput['type']]: ChatMessageHandler<Extract<ChatMessageInput, {
5
+ type: K;
6
+ }>>;
7
+ };
4
8
  export declare function createChatMessageHandlerRegistry(deps: HandlerRegistryDependencies): ChatMessageHandlerRegistry;
5
9
  //# sourceMappingURL=registry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../../../src/backend/services/chat-message-handlers/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAe3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,2BAA2B,EAAE,MAAM,SAAS,CAAC;AAE/E,MAAM,MAAM,0BAA0B,GAAG,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,kBAAkB,CAAC,CAAC;AAE9F,wBAAgB,gCAAgC,CAC9C,IAAI,EAAE,2BAA2B,GAChC,0BAA0B,CAiB5B"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../../../src/backend/services/chat-message-handlers/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAe3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,2BAA2B,EAAE,MAAM,SAAS,CAAC;AAM/E,MAAM,MAAM,0BAA0B,GAAG;KACtC,CAAC,IAAI,gBAAgB,CAAC,MAAM,CAAC,GAAG,kBAAkB,CAAC,OAAO,CAAC,gBAAgB,EAAE;QAAE,IAAI,EAAE,CAAC,CAAA;KAAE,CAAC,CAAC;CAC5F,CAAC;AAEF,wBAAgB,gCAAgC,CAC9C,IAAI,EAAE,2BAA2B,GAChC,0BAA0B,CAiB5B"}
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../../../src/backend/services/chat-message-handlers/registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAE,+BAA+B,EAAE,MAAM,wCAAwC,CAAC;AACzF,OAAO,EAAE,6BAA6B,EAAE,MAAM,sCAAsC,CAAC;AACrF,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EAAE,gCAAgC,EAAE,MAAM,0CAA0C,CAAC;AAC5F,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,8BAA8B,EAAE,MAAM,wCAAwC,CAAC;AACxF,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAKvE,MAAM,UAAU,gCAAgC,CAC9C,IAAiC;IAEjC,OAAO;QACL,aAAa,EAAE,yBAAyB,EAAE;QAC1C,KAAK,EAAE,kBAAkB,CAAC,IAAI,CAAC;QAC/B,UAAU,EAAE,sBAAsB,EAAE;QACpC,aAAa,EAAE,yBAAyB,CAAC,IAAI,CAAC;QAC9C,qBAAqB,EAAE,gCAAgC,EAAE;QACzD,IAAI,EAAE,iBAAiB,EAAE;QACzB,WAAW,EAAE,uBAAuB,EAAE;QACtC,YAAY,EAAE,wBAAwB,EAAE;QACxC,SAAS,EAAE,qBAAqB,EAAE;QAClC,iBAAiB,EAAE,6BAA6B,EAAE;QAClD,mBAAmB,EAAE,+BAA+B,EAAE;QACtD,SAAS,EAAE,qBAAqB,EAAE;QAClC,mBAAmB,EAAE,8BAA8B,EAAE;QACrD,YAAY,EAAE,wBAAwB,EAAE;KACzC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../../../src/backend/services/chat-message-handlers/registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAE,+BAA+B,EAAE,MAAM,wCAAwC,CAAC;AACzF,OAAO,EAAE,6BAA6B,EAAE,MAAM,sCAAsC,CAAC;AACrF,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EAAE,gCAAgC,EAAE,MAAM,0CAA0C,CAAC;AAC5F,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,8BAA8B,EAAE,MAAM,wCAAwC,CAAC;AACxF,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAWvE,MAAM,UAAU,gCAAgC,CAC9C,IAAiC;IAEjC,OAAO;QACL,aAAa,EAAE,yBAAyB,EAAE;QAC1C,KAAK,EAAE,kBAAkB,CAAC,IAAI,CAAC;QAC/B,UAAU,EAAE,sBAAsB,EAAE;QACpC,aAAa,EAAE,yBAAyB,CAAC,IAAI,CAAC;QAC9C,qBAAqB,EAAE,gCAAgC,EAAE;QACzD,IAAI,EAAE,iBAAiB,EAAE;QACzB,WAAW,EAAE,uBAAuB,EAAE;QACtC,YAAY,EAAE,wBAAwB,EAAE;QACxC,SAAS,EAAE,qBAAqB,EAAE;QAClC,iBAAiB,EAAE,6BAA6B,EAAE;QAClD,mBAAmB,EAAE,+BAA+B,EAAE;QACtD,SAAS,EAAE,qBAAqB,EAAE;QAClC,mBAAmB,EAAE,8BAA8B,EAAE;QACrD,YAAY,EAAE,wBAAwB,EAAE;KACzC,CAAC;AACJ,CAAC"}
@@ -15,8 +15,6 @@ declare class ChatMessageHandlerService {
15
15
  private getRequeueReason;
16
16
  private requeueWithReason;
17
17
  private isCompactCommand;
18
- private validateAttachment;
19
- private sanitizeAttachmentName;
20
18
  private buildMessageContent;
21
19
  }
22
20
  export declare const chatMessageHandlerService: ChatMessageHandlerService;
@@ -1 +1 @@
1
- {"version":3,"file":"chat-message-handlers.service.d.ts","sourceRoot":"","sources":["../../../../src/backend/services/chat-message-handlers.service.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAEpC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAO3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAanE,MAAM,MAAM,WAAW,GAAG,gBAAgB,CAAC;AAC3C,YAAY,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAMnE,cAAM,yBAAyB;IAE7B,OAAO,CAAC,kBAAkB,CAA8B;IAGxD,OAAO,CAAC,aAAa,CAA8B;IAEnD,OAAO,CAAC,eAAe,CAGpB;IAKH,gBAAgB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IASxC,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgE1D,aAAa,CACjB,EAAE,EAAE,SAAS,EACb,WAAW,EAAE,MAAM,GAAG,IAAI,EAC1B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC;YAkCF,uBAAuB;YA+BvB,eAAe;IAgD7B,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,kBAAkB;IA6B1B,OAAO,CAAC,sBAAsB;IAc9B,OAAO,CAAC,mBAAmB;CA6D5B;AAED,eAAO,MAAM,yBAAyB,2BAAkC,CAAC"}
1
+ {"version":3,"file":"chat-message-handlers.service.d.ts","sourceRoot":"","sources":["../../../../src/backend/services/chat-message-handlers.service.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAEpC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAM3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAcnE,MAAM,MAAM,WAAW,GAAG,gBAAgB,CAAC;AAC3C,YAAY,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAMnE,cAAM,yBAAyB;IAE7B,OAAO,CAAC,kBAAkB,CAA8B;IAGxD,OAAO,CAAC,aAAa,CAA8B;IAEnD,OAAO,CAAC,eAAe,CAGpB;IAKH,gBAAgB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI;IASxC,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA6D1D,aAAa,CACjB,EAAE,EAAE,SAAS,EACb,WAAW,EAAE,MAAM,GAAG,IAAI,EAC1B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC;YA0CF,uBAAuB;YA+BvB,eAAe;IA0C7B,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,mBAAmB;CAO5B;AAED,eAAO,MAAM,yBAAyB,2BAAkC,CAAC"}
@@ -1,12 +1,12 @@
1
1
  import { DEFAULT_THINKING_BUDGET, MessageState } from '../../shared/claude/index.js';
2
- import { chatConnectionService } from './chat-connection.service.js';
3
- import { resolveAttachmentContentType } from './chat-message-handlers/attachment-utils.js';
2
+ import { processAttachmentsAndBuildContent } from './chat-message-handlers/attachment-processing.js';
4
3
  import { DEBUG_CHAT_WS } from './chat-message-handlers/constants.js';
5
4
  import { createChatMessageHandlerRegistry } from './chat-message-handlers/registry.js';
6
5
  import { createLogger } from './logger.service.js';
7
6
  import { messageQueueService } from './message-queue.service.js';
8
7
  import { messageStateService } from './message-state.service.js';
9
8
  import { sessionService } from './session.service.js';
9
+ import { sessionRuntimeStoreService } from './session-runtime-store.service.js';
10
10
  const logger = createLogger('chat-message-handlers');
11
11
  class ChatMessageHandlerService {
12
12
  dispatchInProgress = new Map();
@@ -34,11 +34,11 @@ class ChatMessageHandlerService {
34
34
  try {
35
35
  let client = sessionService.getClient(dbSessionId);
36
36
  if (!client) {
37
- chatConnectionService.forwardToSession(dbSessionId, { type: 'starting', dbSessionId });
37
+ sessionRuntimeStoreService.markStarting(dbSessionId);
38
38
  const newClient = await this.autoStartClientForQueue(dbSessionId, msg);
39
39
  if (!newClient) {
40
40
  messageQueueService.requeue(dbSessionId, msg);
41
- chatConnectionService.forwardToSession(dbSessionId, { type: 'stopped', dbSessionId });
41
+ sessionRuntimeStoreService.markError(dbSessionId);
42
42
  return;
43
43
  }
44
44
  client = newClient;
@@ -111,11 +111,7 @@ class ChatMessageHandlerService {
111
111
  const thinkingTokens = msg.settings.thinkingEnabled ? DEFAULT_THINKING_BUDGET : null;
112
112
  await client.setMaxThinkingTokens(thinkingTokens);
113
113
  messageStateService.updateState(dbSessionId, msg.id, MessageState.DISPATCHED);
114
- chatConnectionService.forwardToSession(dbSessionId, {
115
- type: 'status',
116
- running: true,
117
- processAlive: client.isRunning(),
118
- });
114
+ sessionRuntimeStoreService.markRunning(dbSessionId);
119
115
  const content = this.buildMessageContent(msg);
120
116
  if (isCompactCommand) {
121
117
  client.startCompaction();
@@ -162,66 +158,8 @@ class ChatMessageHandlerService {
162
158
  const trimmed = text.trim();
163
159
  return trimmed === '/compact' || trimmed.startsWith('/compact ');
164
160
  }
165
- validateAttachment(attachment) {
166
- if (!attachment.data) {
167
- logger.error('[Chat WS] Attachment missing data', { attachmentId: attachment.id });
168
- throw new Error(`Attachment "${attachment.name}" is missing data`);
169
- }
170
- const resolvedType = resolveAttachmentContentType(attachment);
171
- if (resolvedType === 'image') {
172
- if (!/^[A-Za-z0-9+/=]+$/.test(attachment.data)) {
173
- logger.error('[Chat WS] Invalid base64 data in attachment', {
174
- attachmentId: attachment.id,
175
- name: attachment.name,
176
- });
177
- throw new Error(`Attachment "${attachment.name}" has invalid image data`);
178
- }
179
- }
180
- }
181
- sanitizeAttachmentName(name) {
182
- return name.replace(/[\x00-\x1F\x7F]/g, '').slice(0, 255);
183
- }
184
161
  buildMessageContent(msg) {
185
- if (msg.attachments && msg.attachments.length > 0) {
186
- for (const attachment of msg.attachments) {
187
- this.validateAttachment(attachment);
188
- }
189
- const resolvedAttachments = msg.attachments.map((attachment) => ({
190
- attachment,
191
- contentType: resolveAttachmentContentType(attachment),
192
- }));
193
- const textAttachments = resolvedAttachments
194
- .filter((entry) => entry.contentType === 'text')
195
- .map((entry) => entry.attachment);
196
- const imageAttachments = resolvedAttachments
197
- .filter((entry) => entry.contentType === 'image')
198
- .map((entry) => entry.attachment);
199
- let combinedText = msg.text || '';
200
- for (const attachment of textAttachments) {
201
- const prefix = combinedText ? '\n\n' : '';
202
- const safeName = this.sanitizeAttachmentName(attachment.name);
203
- combinedText += `${prefix}[Pasted content: ${safeName}]\n${attachment.data}`;
204
- }
205
- if (imageAttachments.length === 0) {
206
- return combinedText;
207
- }
208
- const content = [];
209
- if (combinedText) {
210
- content.push({ type: 'text', text: combinedText });
211
- }
212
- for (const attachment of imageAttachments) {
213
- content.push({
214
- type: 'image',
215
- source: {
216
- type: 'base64',
217
- media_type: attachment.type,
218
- data: attachment.data,
219
- },
220
- });
221
- }
222
- return content;
223
- }
224
- return msg.text;
162
+ return processAttachmentsAndBuildContent(msg.text, msg.attachments);
225
163
  }
226
164
  }
227
165
  export const chatMessageHandlerService = new ChatMessageHandlerService();
@@ -1 +1 @@
1
- {"version":3,"file":"chat-message-handlers.service.js","sourceRoot":"","sources":["../../../../src/backend/services/chat-message-handlers.service.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAIxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,4BAA4B,EAAE,MAAM,0CAA0C,CAAC;AACxF,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,gCAAgC,EAAE,MAAM,kCAAkC,CAAC;AAEpF,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAsB,MAAM,yBAAyB,CAAC;AAClF,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,MAAM,GAAG,YAAY,CAAC,uBAAuB,CAAC,CAAC;AAcrD,MAAM,yBAAyB;IAErB,kBAAkB,GAAG,IAAI,GAAG,EAAmB,CAAC;IAGhD,aAAa,GAAyB,IAAI,CAAC;IAE3C,eAAe,GAAG,gCAAgC,CAAC;QACzD,gBAAgB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa;QAC1C,sBAAsB,EAAE,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC;KAC/D,CAAC,CAAC;IAKH,gBAAgB,CAAC,OAAsB;QACrC,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;IAC/B,CAAC;IAOD,KAAK,CAAC,sBAAsB,CAAC,WAAmB;QAE9C,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;YAC7C,IAAI,aAAa,EAAE,CAAC;gBAClB,MAAM,CAAC,IAAI,CAAC,kDAAkD,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;YACnF,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAG/C,MAAM,GAAG,GAAG,mBAAmB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACrD,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;YAChD,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,IAAI,MAAM,GAA6B,cAAc,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;YAG7E,IAAI,CAAC,MAAM,EAAE,CAAC;gBAGZ,qBAAqB,CAAC,gBAAgB,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC;gBAEvF,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;gBACvE,IAAI,CAAC,SAAS,EAAE,CAAC;oBAEf,mBAAmB,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;oBAE9C,qBAAqB,CAAC,gBAAgB,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC;oBACtF,OAAO;gBACT,CAAC;gBACD,MAAM,GAAG,SAAS,CAAC;YACrB,CAAC;YAED,MAAM,mBAAmB,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;YAC1D,IAAI,mBAAmB,EAAE,CAAC;gBACxB,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,GAAG,EAAE,mBAAmB,CAAC,CAAC;gBAC9D,OAAO;YACT,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;YACvD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAGf,MAAM,CAAC,KAAK,CAAC,mDAAmD,EAAE;oBAChE,WAAW;oBACX,SAAS,EAAE,GAAG,CAAC,EAAE;oBACjB,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;iBAC9D,CAAC,CAAC;gBACH,mBAAmB,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAKD,KAAK,CAAC,aAAa,CACjB,EAAa,EACb,WAA0B,EAC1B,UAAkB,EAClB,OAAoB;QAEpB,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CAAC,kDAAkD,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YACxF,OAAO;QACT,CAAC;QAGD,IAAI,OAAO,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YACrC,MAAM,OAAO,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,WAAW,IAAI,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC;YACzE,OAAO;QACT,CAAC;QAGD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,EAAE,CAAC,IAAI,CACL,IAAI,CAAC,SAAS,CAAC;gBACb,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,+DAA+D;aACzE,CAAC,CACH,CAAC;YACF,OAAO;QACT,CAAC;QAED,MAAM,OAAO,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC;IACrE,CAAC;IASO,KAAK,CAAC,uBAAuB,CACnC,WAAmB,EACnB,GAAkB;QAElB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,MAAM,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;YACjD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,CAAC,IAAI,CAAC,mDAAmD,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;QACpF,CAAC;QAED,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,WAAW,EAAE;gBACvD,eAAe,EAAE,GAAG,CAAC,QAAQ,CAAC,eAAe;gBAC7C,eAAe,EAAE,GAAG,CAAC,QAAQ,CAAC,eAAe;gBAC7C,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC,aAAa,IAAI,SAAS;aAC/C,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,0DAA0D,EAAE;gBACvE,WAAW;gBACX,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAC9D,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAKO,KAAK,CAAC,eAAe,CAC3B,WAAmB,EACnB,MAAoB,EACpB,GAAkB;QAElB,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAKzD,MAAM,cAAc,GAAG,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC;QACrF,MAAM,MAAM,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;QAGlD,mBAAmB,CAAC,WAAW,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;QAI9E,qBAAqB,CAAC,gBAAgB,CAAC,WAAW,EAAE;YAClD,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,IAAI;YACb,YAAY,EAAE,MAAM,CAAC,SAAS,EAAE;SACjC,CAAC,CAAC;QAGH,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAC9C,IAAI,gBAAgB,EAAE,CAAC;YACrB,MAAM,CAAC,eAAe,EAAE,CAAC;QAC3B,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACpC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,gBAAgB,EAAE,CAAC;gBACrB,MAAM,CAAC,aAAa,EAAE,CAAC;YACzB,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;QAED,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,CAAC,IAAI,CAAC,+CAA+C,EAAE;gBAC3D,WAAW;gBACX,SAAS,EAAE,GAAG,CAAC,EAAE;gBACjB,gBAAgB,EAAE,mBAAmB,CAAC,cAAc,CAAC,WAAW,CAAC;aAClE,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAEO,gBAAgB,CAAC,MAAoB;QAC3C,IAAI,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC;YACvB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC;YACxB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,MAAM,CAAC,kBAAkB,EAAE,EAAE,CAAC;YAChC,OAAO,YAAY,CAAC;QACtB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,iBAAiB,CACvB,WAAmB,EACnB,GAAkB,EAClB,MAA4C;QAE5C,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,CAAC,IAAI,CAAC,+BAA+B,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC;QACxE,CAAC;aAAM,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YAChC,MAAM,CAAC,IAAI,CAAC,0DAA0D,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;QAC3F,CAAC;QACD,mBAAmB,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IAChD,CAAC;IAEO,gBAAgB,CAAC,IAAY;QACnC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,OAAO,OAAO,KAAK,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IACnE,CAAC;IAMO,kBAAkB,CAAC,UAM1B;QACC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;YACrB,MAAM,CAAC,KAAK,CAAC,mCAAmC,EAAE,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC;YACnF,MAAM,IAAI,KAAK,CAAC,eAAe,UAAU,CAAC,IAAI,mBAAmB,CAAC,CAAC;QACrE,CAAC;QAED,MAAM,YAAY,GAAG,4BAA4B,CAAC,UAAU,CAAC,CAAC;QAC9D,IAAI,YAAY,KAAK,OAAO,EAAE,CAAC;YAE7B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/C,MAAM,CAAC,KAAK,CAAC,6CAA6C,EAAE;oBAC1D,YAAY,EAAE,UAAU,CAAC,EAAE;oBAC3B,IAAI,EAAE,UAAU,CAAC,IAAI;iBACtB,CAAC,CAAC;gBACH,MAAM,IAAI,KAAK,CAAC,eAAe,UAAU,CAAC,IAAI,0BAA0B,CAAC,CAAC;YAC5E,CAAC;QACH,CAAC;IACH,CAAC;IAMO,sBAAsB,CAAC,IAAY;QAGzC,OAAO,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC5D,CAAC;IAUO,mBAAmB,CAAC,GAAkB;QAE5C,IAAI,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAElD,KAAK,MAAM,UAAU,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;gBACzC,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;YACtC,CAAC;YAED,MAAM,mBAAmB,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;gBAC/D,UAAU;gBACV,WAAW,EAAE,4BAA4B,CAAC,UAAU,CAAC;aACtD,CAAC,CAAC,CAAC;YACJ,MAAM,eAAe,GAAG,mBAAmB;iBACxC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,KAAK,MAAM,CAAC;iBAC/C,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YACpC,MAAM,gBAAgB,GAAG,mBAAmB;iBACzC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,KAAK,OAAO,CAAC;iBAChD,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAGpC,IAAI,YAAY,GAAG,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;YAGlC,KAAK,MAAM,UAAU,IAAI,eAAe,EAAE,CAAC;gBACzC,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBAC9D,YAAY,IAAI,GAAG,MAAM,oBAAoB,QAAQ,MAAM,UAAU,CAAC,IAAI,EAAE,CAAC;YAC/E,CAAC;YAGD,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAClC,OAAO,YAAY,CAAC;YACtB,CAAC;YAGD,MAAM,OAAO,GAAwB,EAAE,CAAC;YAExC,IAAI,YAAY,EAAE,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;YACrD,CAAC;YAED,KAAK,MAAM,UAAU,IAAI,gBAAgB,EAAE,CAAC;gBAC1C,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,OAAO;oBACb,MAAM,EAAE;wBACN,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE,UAAU,CAAC,IAAI;wBAC3B,IAAI,EAAE,UAAU,CAAC,IAAI;qBACtB;iBAC8B,CAAC,CAAC;YACrC,CAAC;YAED,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,OAAO,GAAG,CAAC,IAAI,CAAC;IAClB,CAAC;CAKF;AAED,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,yBAAyB,EAAE,CAAC"}
1
+ {"version":3,"file":"chat-message-handlers.service.js","sourceRoot":"","sources":["../../../../src/backend/services/chat-message-handlers.service.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,9 @@
1
1
  declare class ChatTransportAdapterService {
2
2
  private isSetup;
3
3
  private unsubscribe;
4
+ private runtimeUnsubscribe;
4
5
  private listener;
6
+ private runtimeListener;
5
7
  setup(): void;
6
8
  teardown(): void;
7
9
  }
@@ -1 +1 @@
1
- {"version":3,"file":"chat-transport-adapter.service.d.ts","sourceRoot":"","sources":["../../../../src/backend/services/chat-transport-adapter.service.ts"],"names":[],"mappings":"AAYA,cAAM,2BAA2B;IAC/B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,WAAW,CAA6B;IAChD,OAAO,CAAC,QAAQ,CAsBd;IAEF,KAAK,IAAI,IAAI;IAUb,QAAQ,IAAI,IAAI;CAKjB;AAED,eAAO,MAAM,2BAA2B,6BAAoC,CAAC"}
1
+ {"version":3,"file":"chat-transport-adapter.service.d.ts","sourceRoot":"","sources":["../../../../src/backend/services/chat-transport-adapter.service.ts"],"names":[],"mappings":"AAgBA,cAAM,2BAA2B;IAC/B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,WAAW,CAA6B;IAChD,OAAO,CAAC,kBAAkB,CAA6B;IACvD,OAAO,CAAC,QAAQ,CAsBd;IACF,OAAO,CAAC,eAAe,CAsBrB;IAEF,KAAK,IAAI,IAAI;IAgBb,QAAQ,IAAI,IAAI;CAOjB;AAED,eAAO,MAAM,2BAA2B,6BAAoC,CAAC"}
@@ -1,10 +1,12 @@
1
1
  import { chatConnectionService } from './chat-connection.service.js';
2
2
  import { createLogger } from './logger.service.js';
3
3
  import { messageStateService } from './message-state.service.js';
4
+ import { sessionRuntimeStoreService, } from './session-runtime-store.service.js';
4
5
  const logger = createLogger('chat-transport-adapter');
5
6
  class ChatTransportAdapterService {
6
7
  isSetup = false;
7
8
  unsubscribe = null;
9
+ runtimeUnsubscribe = null;
8
10
  listener = (event) => {
9
11
  switch (event.type) {
10
12
  case 'message_state_changed': {
@@ -28,17 +30,46 @@ class ChatTransportAdapterService {
28
30
  }
29
31
  }
30
32
  };
33
+ runtimeListener = (event) => {
34
+ switch (event.type) {
35
+ case 'session_runtime_snapshot': {
36
+ chatConnectionService.forwardToSession(event.sessionId, {
37
+ type: 'session_runtime_snapshot',
38
+ ...event.data,
39
+ });
40
+ break;
41
+ }
42
+ case 'session_runtime_updated': {
43
+ chatConnectionService.forwardToSession(event.sessionId, {
44
+ type: 'session_runtime_updated',
45
+ ...event.data,
46
+ });
47
+ break;
48
+ }
49
+ default: {
50
+ logger.warn('Unhandled session runtime event', {
51
+ eventType: event.type,
52
+ });
53
+ }
54
+ }
55
+ };
31
56
  setup() {
32
- if (this.isSetup && messageStateService.hasEventListener(this.listener)) {
57
+ if (this.isSetup &&
58
+ messageStateService.hasEventListener(this.listener) &&
59
+ sessionRuntimeStoreService.hasEventListener(this.runtimeListener)) {
33
60
  return;
34
61
  }
35
62
  this.unsubscribe?.();
63
+ this.runtimeUnsubscribe?.();
36
64
  this.unsubscribe = messageStateService.onEvent(this.listener);
65
+ this.runtimeUnsubscribe = sessionRuntimeStoreService.onEvent(this.runtimeListener);
37
66
  this.isSetup = true;
38
67
  }
39
68
  teardown() {
40
69
  this.unsubscribe?.();
70
+ this.runtimeUnsubscribe?.();
41
71
  this.unsubscribe = null;
72
+ this.runtimeUnsubscribe = null;
42
73
  this.isSetup = false;
43
74
  }
44
75
  }
@@ -1 +1 @@
1
- {"version":3,"file":"chat-transport-adapter.service.js","sourceRoot":"","sources":["../../../../src/backend/services/chat-transport-adapter.service.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAA0B,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEtF,MAAM,MAAM,GAAG,YAAY,CAAC,wBAAwB,CAAC,CAAC;AAEtD,MAAM,2BAA2B;IACvB,OAAO,GAAG,KAAK,CAAC;IAChB,WAAW,GAAwB,IAAI,CAAC;IACxC,QAAQ,GAAG,CAAC,KAAwB,EAAE,EAAE;QAC9C,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,uBAAuB,CAAC,CAAC,CAAC;gBAC7B,qBAAqB,CAAC,gBAAgB,CAAC,KAAK,CAAC,SAAS,EAAE;oBACtD,IAAI,EAAE,uBAAuB;oBAC7B,GAAG,KAAK,CAAC,IAAI;iBACd,CAAC,CAAC;gBACH,MAAM;YACR,CAAC;YACD,KAAK,mBAAmB,CAAC,CAAC,CAAC;gBACzB,qBAAqB,CAAC,gBAAgB,CAAC,KAAK,CAAC,SAAS,EAAE;oBACtD,IAAI,EAAE,mBAAmB;oBACzB,GAAG,KAAK,CAAC,IAAI;iBACd,CAAC,CAAC;gBACH,MAAM;YACR,CAAC;YACD,OAAO,CAAC,CAAC,CAAC;gBACR,MAAM,CAAC,IAAI,CAAC,+BAA+B,EAAE;oBAC3C,SAAS,EAAG,KAA2B,CAAC,IAAI;iBAC7C,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IAEF,KAAK;QACH,IAAI,IAAI,CAAC,OAAO,IAAI,mBAAmB,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxE,OAAO;QACT,CAAC;QACD,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;QAErB,IAAI,CAAC,WAAW,GAAG,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9D,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACvB,CAAC;CACF;AAED,MAAM,CAAC,MAAM,2BAA2B,GAAG,IAAI,2BAA2B,EAAE,CAAC"}
1
+ {"version":3,"file":"chat-transport-adapter.service.js","sourceRoot":"","sources":["../../../../src/backend/services/chat-transport-adapter.service.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ import { MessageState } from '../../shared/claude/index.js';
3
3
  import { chatConnectionService } from './chat-connection.service.js';
4
4
  import { chatTransportAdapterService } from './chat-transport-adapter.service.js';
5
5
  import { messageStateService } from './message-state.service.js';
6
+ import { sessionRuntimeStoreService } from './session-runtime-store.service.js';
6
7
  vi.mock('./chat-connection.service', () => ({
7
8
  chatConnectionService: {
8
9
  forwardToSession: vi.fn(),
@@ -13,6 +14,7 @@ describe('ChatTransportAdapterService', () => {
13
14
  beforeEach(() => {
14
15
  mockedChatConnectionService.forwardToSession.mockClear();
15
16
  messageStateService.clearAllSessions();
17
+ sessionRuntimeStoreService.clearAllSessions();
16
18
  chatTransportAdapterService.teardown();
17
19
  });
18
20
  it('forwards message state changes to the websocket transport', () => {
@@ -63,5 +65,17 @@ describe('ChatTransportAdapterService', () => {
63
65
  }),
64
66
  });
65
67
  });
68
+ it('forwards session runtime updates to the websocket transport', () => {
69
+ chatTransportAdapterService.setup();
70
+ sessionRuntimeStoreService.markRunning('session-1');
71
+ expect(mockedChatConnectionService.forwardToSession).toHaveBeenCalledWith('session-1', {
72
+ type: 'session_runtime_updated',
73
+ sessionRuntime: expect.objectContaining({
74
+ phase: 'running',
75
+ processState: 'alive',
76
+ activity: 'WORKING',
77
+ }),
78
+ });
79
+ });
66
80
  });
67
81
  //# sourceMappingURL=chat-transport-adapter.service.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chat-transport-adapter.service.test.js","sourceRoot":"","sources":["../../../../src/backend/services/chat-transport-adapter.service.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAE9D,EAAE,CAAC,IAAI,CAAC,2BAA2B,EAAE,GAAG,EAAE,CAAC,CAAC;IAC1C,qBAAqB,EAAE;QACrB,gBAAgB,EAAE,EAAE,CAAC,EAAE,EAAE;KAC1B;CACF,CAAC,CAAC,CAAC;AAEJ,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;IAC3C,MAAM,2BAA2B,GAAG,EAAE,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;IAErE,UAAU,CAAC,GAAG,EAAE;QACd,2BAA2B,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC;QACzD,mBAAmB,CAAC,gBAAgB,EAAE,CAAC;QACvC,2BAA2B,CAAC,QAAQ,EAAE,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACnE,2BAA2B,CAAC,KAAK,EAAE,CAAC;QAEpC,mBAAmB,CAAC,iBAAiB,CAAC,WAAW,EAAE;YACjD,EAAE,EAAE,OAAO;YACX,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE;gBACR,aAAa,EAAE,IAAI;gBACnB,eAAe,EAAE,KAAK;gBACtB,eAAe,EAAE,KAAK;aACvB;YACD,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;QAEH,MAAM,CAAC,2BAA2B,CAAC,gBAAgB,CAAC,CAAC,oBAAoB,CAAC,WAAW,EAAE;YACrF,IAAI,EAAE,uBAAuB;YAC7B,EAAE,EAAE,OAAO;YACX,QAAQ,EAAE,YAAY,CAAC,QAAQ;YAC/B,aAAa,EAAE,CAAC;YAChB,YAAY,EAAE,SAAS;YACvB,WAAW,EAAE,MAAM,CAAC,gBAAgB,CAAC;gBACnC,IAAI,EAAE,OAAO;aACd,CAAC;SACH,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,2BAA2B,CAAC,KAAK,EAAE,CAAC;QACpC,mBAAmB,CAAC,gBAAgB,EAAE,CAAC;QAEvC,2BAA2B,CAAC,KAAK,EAAE,CAAC;QACpC,mBAAmB,CAAC,iBAAiB,CAAC,WAAW,EAAE;YACjD,EAAE,EAAE,OAAO;YACX,IAAI,EAAE,aAAa;YACnB,QAAQ,EAAE;gBACR,aAAa,EAAE,IAAI;gBACnB,eAAe,EAAE,KAAK;gBACtB,eAAe,EAAE,KAAK;aACvB;YACD,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;QAEH,MAAM,CAAC,2BAA2B,CAAC,gBAAgB,CAAC,CAAC,oBAAoB,CAAC,WAAW,EAAE;YACrF,IAAI,EAAE,uBAAuB;YAC7B,EAAE,EAAE,OAAO;YACX,QAAQ,EAAE,YAAY,CAAC,QAAQ;YAC/B,aAAa,EAAE,CAAC;YAChB,YAAY,EAAE,SAAS;YACvB,WAAW,EAAE,MAAM,CAAC,gBAAgB,CAAC;gBACnC,IAAI,EAAE,aAAa;aACpB,CAAC;SACH,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"chat-transport-adapter.service.test.js","sourceRoot":"","sources":["../../../../src/backend/services/chat-transport-adapter.service.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAE7E,EAAE,CAAC,IAAI,CAAC,2BAA2B,EAAE,GAAG,EAAE,CAAC,CAAC;IAC1C,qBAAqB,EAAE;QACrB,gBAAgB,EAAE,EAAE,CAAC,EAAE,EAAE;KAC1B;CACF,CAAC,CAAC,CAAC;AAEJ,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;IAC3C,MAAM,2BAA2B,GAAG,EAAE,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;IAErE,UAAU,CAAC,GAAG,EAAE;QACd,2BAA2B,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC;QACzD,mBAAmB,CAAC,gBAAgB,EAAE,CAAC;QACvC,0BAA0B,CAAC,gBAAgB,EAAE,CAAC;QAC9C,2BAA2B,CAAC,QAAQ,EAAE,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACnE,2BAA2B,CAAC,KAAK,EAAE,CAAC;QAEpC,mBAAmB,CAAC,iBAAiB,CAAC,WAAW,EAAE;YACjD,EAAE,EAAE,OAAO;YACX,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE;gBACR,aAAa,EAAE,IAAI;gBACnB,eAAe,EAAE,KAAK;gBACtB,eAAe,EAAE,KAAK;aACvB;YACD,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;QAEH,MAAM,CAAC,2BAA2B,CAAC,gBAAgB,CAAC,CAAC,oBAAoB,CAAC,WAAW,EAAE;YACrF,IAAI,EAAE,uBAAuB;YAC7B,EAAE,EAAE,OAAO;YACX,QAAQ,EAAE,YAAY,CAAC,QAAQ;YAC/B,aAAa,EAAE,CAAC;YAChB,YAAY,EAAE,SAAS;YACvB,WAAW,EAAE,MAAM,CAAC,gBAAgB,CAAC;gBACnC,IAAI,EAAE,OAAO;aACd,CAAC;SACH,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,2BAA2B,CAAC,KAAK,EAAE,CAAC;QACpC,mBAAmB,CAAC,gBAAgB,EAAE,CAAC;QAEvC,2BAA2B,CAAC,KAAK,EAAE,CAAC;QACpC,mBAAmB,CAAC,iBAAiB,CAAC,WAAW,EAAE;YACjD,EAAE,EAAE,OAAO;YACX,IAAI,EAAE,aAAa;YACnB,QAAQ,EAAE;gBACR,aAAa,EAAE,IAAI;gBACnB,eAAe,EAAE,KAAK;gBACtB,eAAe,EAAE,KAAK;aACvB;YACD,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;QAEH,MAAM,CAAC,2BAA2B,CAAC,gBAAgB,CAAC,CAAC,oBAAoB,CAAC,WAAW,EAAE;YACrF,IAAI,EAAE,uBAAuB;YAC7B,EAAE,EAAE,OAAO;YACX,QAAQ,EAAE,YAAY,CAAC,QAAQ;YAC/B,aAAa,EAAE,CAAC;YAChB,YAAY,EAAE,SAAS;YACvB,WAAW,EAAE,MAAM,CAAC,gBAAgB,CAAC;gBACnC,IAAI,EAAE,aAAa;aACpB,CAAC;SACH,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;QACrE,2BAA2B,CAAC,KAAK,EAAE,CAAC;QACpC,0BAA0B,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAEpD,MAAM,CAAC,2BAA2B,CAAC,gBAAgB,CAAC,CAAC,oBAAoB,CAAC,WAAW,EAAE;YACrF,IAAI,EAAE,yBAAyB;YAC/B,cAAc,EAAE,MAAM,CAAC,gBAAgB,CAAC;gBACtC,KAAK,EAAE,SAAS;gBAChB,YAAY,EAAE,OAAO;gBACrB,QAAQ,EAAE,SAAS;aACpB,CAAC;SACH,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}