factory-factory 0.2.6 → 0.2.7

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 (1212) hide show
  1. package/dist/client/assets/_basePickBy-BZHMXNSx.js +1 -0
  2. package/dist/client/assets/_baseUniq-BN3di1uG.js +1 -0
  3. package/dist/client/assets/arc-DTz7ujzB.js +1 -0
  4. package/dist/client/assets/architectureDiagram-VXUJARFQ-BF0tgsxU.js +36 -0
  5. package/dist/client/assets/blockDiagram-VD42YOAC-DMmGkDXi.js +122 -0
  6. package/dist/client/assets/c4Diagram-YG6GDRKO-S4AaVo8k.js +10 -0
  7. package/dist/client/assets/channel-0Y-kzpxb.js +1 -0
  8. package/dist/client/assets/chunk-4BX2VUAB-scTb9znU.js +1 -0
  9. package/dist/client/assets/chunk-55IACEB6-vBLzgGqE.js +1 -0
  10. package/dist/client/assets/chunk-B4BG7PRW-D-cPkPte.js +165 -0
  11. package/dist/client/assets/chunk-DI55MBZ5-DOh8b0Kb.js +220 -0
  12. package/dist/client/assets/chunk-FMBD7UC4-B6lujkqO.js +15 -0
  13. package/dist/client/assets/chunk-QN33PNHL-spdwi0WY.js +1 -0
  14. package/dist/client/assets/chunk-QZHKN3VN-CFHWNeCi.js +1 -0
  15. package/dist/client/assets/chunk-TZMSLE5B-BW6u8yiG.js +1 -0
  16. package/dist/client/assets/classDiagram-2ON5EDUG-BuPSxmb5.js +1 -0
  17. package/dist/client/assets/classDiagram-v2-WZHVMYZB-BuPSxmb5.js +1 -0
  18. package/dist/client/assets/clone-BcRl-M7n.js +1 -0
  19. package/dist/client/assets/cose-bilkent-S5V4N54A-CPnnXLX6.js +1 -0
  20. package/dist/client/assets/dagre-6UL2VRFP-DES6A9x6.js +4 -0
  21. package/dist/client/assets/diagram-PSM6KHXK-VwBLGizc.js +24 -0
  22. package/dist/client/assets/diagram-QEK2KX5R-etHARSDz.js +43 -0
  23. package/dist/client/assets/diagram-S2PKOQOG-BI7PXPis.js +24 -0
  24. package/dist/client/assets/erDiagram-Q2GNP2WA-Cl5v3htL.js +60 -0
  25. package/dist/client/assets/flowDiagram-NV44I4VS-Ojv0q4uM.js +162 -0
  26. package/dist/client/assets/ganttDiagram-JELNMOA3-CfjA0UJD.js +267 -0
  27. package/dist/client/assets/gitGraphDiagram-NY62KEGX-Ch7jeuA8.js +65 -0
  28. package/dist/client/assets/graph-Dox0mu8B.js +1 -0
  29. package/dist/client/assets/index-B3WM_4ut.css +1 -0
  30. package/dist/client/assets/index-BcV5Mqxt.js +437 -0
  31. package/dist/client/assets/infoDiagram-WHAUD3N6-CPQAoZm7.js +2 -0
  32. package/dist/client/assets/journeyDiagram-XKPGCS4Q-Vwt680EE.js +139 -0
  33. package/dist/client/assets/kanban-definition-3W4ZIXB7-C--4JrCO.js +89 -0
  34. package/dist/client/assets/layout-i4JGghUI.js +1 -0
  35. package/dist/client/assets/linear-Ck02tugp.js +1 -0
  36. package/dist/client/assets/mindmap-definition-VGOIOE7T-DhPbco6X.js +68 -0
  37. package/dist/client/assets/pieDiagram-ADFJNKIX-BIsu48lT.js +30 -0
  38. package/dist/client/assets/quadrantDiagram-AYHSOK5B-D7Ynqe8A.js +7 -0
  39. package/dist/client/assets/requirementDiagram-UZGBJVZJ-C6ev56dv.js +64 -0
  40. package/dist/client/assets/sankeyDiagram-TZEHDZUN-DbpYAdQ2.js +10 -0
  41. package/dist/client/assets/sequenceDiagram-WL72ISMW-mCJUmoPE.js +145 -0
  42. package/dist/client/assets/stateDiagram-FKZM4ZOC-Bc83uOQH.js +1 -0
  43. package/dist/client/assets/stateDiagram-v2-4FDKWEC3-CsG3SZq0.js +1 -0
  44. package/dist/client/assets/terminal-instance-BRX09yrN.js +1 -0
  45. package/dist/client/assets/timeline-definition-IT6M3QCI-TG8ZfQJt.js +61 -0
  46. package/dist/client/assets/treemap-KMMF4GRG-mbULMdr8.js +128 -0
  47. package/dist/client/assets/xychartDiagram-PRI3JC2R-3URCSGAN.js +7 -0
  48. package/dist/client/index.html +2 -2
  49. package/dist/prompts/ratchet/dispatch.md +3 -1
  50. package/dist/src/backend/agents/process-adapter.d.ts +1 -1
  51. package/dist/src/backend/agents/process-adapter.d.ts.map +1 -1
  52. package/dist/src/backend/agents/process-adapter.js +1 -1
  53. package/dist/src/backend/agents/process-adapter.js.map +1 -1
  54. package/dist/src/backend/app-context.d.ts +8 -16
  55. package/dist/src/backend/app-context.d.ts.map +1 -1
  56. package/dist/src/backend/app-context.js +8 -16
  57. package/dist/src/backend/app-context.js.map +1 -1
  58. package/dist/src/backend/clients/git.client.test.js.map +1 -1
  59. package/dist/src/backend/db.d.ts +3 -0
  60. package/dist/src/backend/db.d.ts.map +1 -1
  61. package/dist/src/backend/db.js +2 -2
  62. package/dist/src/backend/db.js.map +1 -1
  63. package/dist/src/backend/domains/github/bridges.d.ts +40 -0
  64. package/dist/src/backend/domains/github/bridges.d.ts.map +1 -0
  65. package/dist/src/backend/domains/github/bridges.js +2 -0
  66. package/dist/src/backend/domains/github/bridges.js.map +1 -0
  67. package/dist/src/backend/domains/github/github-cli.service.d.ts +113 -0
  68. package/dist/src/backend/domains/github/github-cli.service.d.ts.map +1 -0
  69. package/dist/src/backend/domains/github/github-cli.service.js +860 -0
  70. package/dist/src/backend/domains/github/github-cli.service.js.map +1 -0
  71. package/dist/src/backend/domains/github/github-cli.service.test.d.ts.map +1 -0
  72. package/dist/src/backend/domains/github/github-cli.service.test.js +709 -0
  73. package/dist/src/backend/domains/github/github-cli.service.test.js.map +1 -0
  74. package/dist/src/backend/domains/github/github-domain-exports.test.d.ts +2 -0
  75. package/dist/src/backend/domains/github/github-domain-exports.test.d.ts.map +1 -0
  76. package/dist/src/backend/domains/github/github-domain-exports.test.js +17 -0
  77. package/dist/src/backend/domains/github/github-domain-exports.test.js.map +1 -0
  78. package/dist/src/backend/domains/github/index.d.ts +6 -0
  79. package/dist/src/backend/domains/github/index.d.ts.map +1 -0
  80. package/dist/src/backend/domains/github/index.js +5 -0
  81. package/dist/src/backend/domains/github/index.js.map +1 -0
  82. package/dist/src/backend/domains/github/pr-review-fixer.service.d.ts +64 -0
  83. package/dist/src/backend/domains/github/pr-review-fixer.service.d.ts.map +1 -0
  84. package/dist/src/backend/domains/github/pr-review-fixer.service.js +172 -0
  85. package/dist/src/backend/domains/github/pr-review-fixer.service.js.map +1 -0
  86. package/dist/src/backend/domains/github/pr-review-monitor.service.d.ts +19 -0
  87. package/dist/src/backend/domains/github/pr-review-monitor.service.d.ts.map +1 -0
  88. package/dist/src/backend/domains/github/pr-review-monitor.service.js +217 -0
  89. package/dist/src/backend/domains/github/pr-review-monitor.service.js.map +1 -0
  90. package/dist/src/backend/domains/github/pr-snapshot.service.d.ts +39 -0
  91. package/dist/src/backend/domains/github/pr-snapshot.service.d.ts.map +1 -0
  92. package/dist/src/backend/domains/github/pr-snapshot.service.js +116 -0
  93. package/dist/src/backend/domains/github/pr-snapshot.service.js.map +1 -0
  94. package/dist/src/backend/domains/github/pr-snapshot.service.test.d.ts.map +1 -0
  95. package/dist/src/backend/domains/github/pr-snapshot.service.test.js +149 -0
  96. package/dist/src/backend/domains/github/pr-snapshot.service.test.js.map +1 -0
  97. package/dist/src/backend/domains/ratchet/bridges.d.ts +71 -0
  98. package/dist/src/backend/domains/ratchet/bridges.d.ts.map +1 -0
  99. package/dist/src/backend/domains/ratchet/bridges.js +2 -0
  100. package/dist/src/backend/domains/ratchet/bridges.js.map +1 -0
  101. package/dist/src/backend/domains/ratchet/ci-fixer.service.d.ts +48 -0
  102. package/dist/src/backend/domains/ratchet/ci-fixer.service.d.ts.map +1 -0
  103. package/dist/src/backend/domains/ratchet/ci-fixer.service.js +126 -0
  104. package/dist/src/backend/domains/ratchet/ci-fixer.service.js.map +1 -0
  105. package/dist/src/backend/domains/ratchet/ci-fixer.service.test.d.ts.map +1 -0
  106. package/dist/src/backend/domains/ratchet/ci-fixer.service.test.js +103 -0
  107. package/dist/src/backend/domains/ratchet/ci-fixer.service.test.js.map +1 -0
  108. package/dist/src/backend/domains/ratchet/ci-monitor.service.d.ts +33 -0
  109. package/dist/src/backend/domains/ratchet/ci-monitor.service.d.ts.map +1 -0
  110. package/dist/src/backend/domains/ratchet/ci-monitor.service.js +270 -0
  111. package/dist/src/backend/domains/ratchet/ci-monitor.service.js.map +1 -0
  112. package/dist/src/backend/domains/ratchet/fixer-session.service.d.ts +55 -0
  113. package/dist/src/backend/domains/ratchet/fixer-session.service.d.ts.map +1 -0
  114. package/dist/src/backend/domains/ratchet/fixer-session.service.js +178 -0
  115. package/dist/src/backend/domains/ratchet/fixer-session.service.js.map +1 -0
  116. package/dist/src/backend/domains/ratchet/fixer-session.service.test.d.ts.map +1 -0
  117. package/dist/src/backend/domains/ratchet/fixer-session.service.test.js +165 -0
  118. package/dist/src/backend/domains/ratchet/fixer-session.service.test.js.map +1 -0
  119. package/dist/src/backend/domains/ratchet/index.d.ts +10 -0
  120. package/dist/src/backend/domains/ratchet/index.d.ts.map +1 -0
  121. package/dist/src/backend/domains/ratchet/index.js +6 -0
  122. package/dist/src/backend/domains/ratchet/index.js.map +1 -0
  123. package/dist/src/backend/domains/ratchet/ratchet-domain-exports.test.d.ts +2 -0
  124. package/dist/src/backend/domains/ratchet/ratchet-domain-exports.test.d.ts.map +1 -0
  125. package/dist/src/backend/domains/ratchet/ratchet-domain-exports.test.js +20 -0
  126. package/dist/src/backend/domains/ratchet/ratchet-domain-exports.test.js.map +1 -0
  127. package/dist/src/backend/domains/ratchet/ratchet.service.d.ts +83 -0
  128. package/dist/src/backend/domains/ratchet/ratchet.service.d.ts.map +1 -0
  129. package/dist/src/backend/domains/ratchet/ratchet.service.js +669 -0
  130. package/dist/src/backend/domains/ratchet/ratchet.service.js.map +1 -0
  131. package/dist/src/backend/domains/ratchet/ratchet.service.test.d.ts.map +1 -0
  132. package/dist/src/backend/domains/ratchet/ratchet.service.test.js +873 -0
  133. package/dist/src/backend/domains/ratchet/ratchet.service.test.js.map +1 -0
  134. package/dist/src/backend/domains/ratchet/reconciliation.service.d.ts +20 -0
  135. package/dist/src/backend/domains/ratchet/reconciliation.service.d.ts.map +1 -0
  136. package/dist/src/backend/domains/ratchet/reconciliation.service.js +138 -0
  137. package/dist/src/backend/domains/ratchet/reconciliation.service.js.map +1 -0
  138. package/dist/src/backend/domains/ratchet/reconciliation.service.test.d.ts.map +1 -0
  139. package/dist/src/backend/domains/ratchet/reconciliation.service.test.js +249 -0
  140. package/dist/src/backend/domains/ratchet/reconciliation.service.test.js.map +1 -0
  141. package/dist/src/backend/domains/run-script/bridges.d.ts +5 -0
  142. package/dist/src/backend/domains/run-script/bridges.d.ts.map +1 -0
  143. package/dist/src/backend/domains/run-script/bridges.js +2 -0
  144. package/dist/src/backend/domains/run-script/bridges.js.map +1 -0
  145. package/dist/src/backend/domains/run-script/index.d.ts +5 -0
  146. package/dist/src/backend/domains/run-script/index.d.ts.map +1 -0
  147. package/dist/src/backend/domains/run-script/index.js +4 -0
  148. package/dist/src/backend/domains/run-script/index.js.map +1 -0
  149. package/dist/src/backend/domains/run-script/run-script-domain-exports.test.d.ts +2 -0
  150. package/dist/src/backend/domains/run-script/run-script-domain-exports.test.d.ts.map +1 -0
  151. package/dist/src/backend/domains/run-script/run-script-domain-exports.test.js +23 -0
  152. package/dist/src/backend/domains/run-script/run-script-domain-exports.test.js.map +1 -0
  153. package/dist/src/backend/domains/run-script/run-script-state-machine.service.d.ts +27 -0
  154. package/dist/src/backend/domains/run-script/run-script-state-machine.service.d.ts.map +1 -0
  155. package/dist/src/backend/domains/run-script/run-script-state-machine.service.js +140 -0
  156. package/dist/src/backend/domains/run-script/run-script-state-machine.service.js.map +1 -0
  157. package/dist/src/backend/domains/run-script/run-script-state-machine.service.test.d.ts.map +1 -0
  158. package/dist/src/backend/domains/run-script/run-script-state-machine.service.test.js +526 -0
  159. package/dist/src/backend/domains/run-script/run-script-state-machine.service.test.js.map +1 -0
  160. package/dist/src/backend/domains/run-script/run-script.service.d.ts +43 -0
  161. package/dist/src/backend/domains/run-script/run-script.service.d.ts.map +1 -0
  162. package/dist/src/backend/domains/run-script/run-script.service.js +471 -0
  163. package/dist/src/backend/domains/run-script/run-script.service.js.map +1 -0
  164. package/dist/src/backend/domains/run-script/run-script.service.test.d.ts +2 -0
  165. package/dist/src/backend/domains/run-script/run-script.service.test.d.ts.map +1 -0
  166. package/dist/src/backend/domains/run-script/run-script.service.test.js +285 -0
  167. package/dist/src/backend/domains/run-script/run-script.service.test.js.map +1 -0
  168. package/dist/src/backend/domains/run-script/startup-script.service.d.ts +33 -0
  169. package/dist/src/backend/domains/run-script/startup-script.service.d.ts.map +1 -0
  170. package/dist/src/backend/domains/run-script/startup-script.service.js +237 -0
  171. package/dist/src/backend/domains/run-script/startup-script.service.js.map +1 -0
  172. package/dist/src/backend/domains/session/bridges.d.ts +22 -0
  173. package/dist/src/backend/domains/session/bridges.d.ts.map +1 -0
  174. package/dist/src/backend/domains/session/bridges.js +2 -0
  175. package/dist/src/backend/domains/session/bridges.js.map +1 -0
  176. package/dist/src/backend/domains/session/chat/chat-connection.service.d.ts +19 -0
  177. package/dist/src/backend/domains/session/chat/chat-connection.service.d.ts.map +1 -0
  178. package/dist/src/backend/domains/session/chat/chat-connection.service.js +66 -0
  179. package/dist/src/backend/domains/session/chat/chat-connection.service.js.map +1 -0
  180. package/dist/src/backend/domains/session/chat/chat-event-forwarder.service.d.ts +42 -0
  181. package/dist/src/backend/domains/session/chat/chat-event-forwarder.service.d.ts.map +1 -0
  182. package/dist/src/backend/domains/session/chat/chat-event-forwarder.service.js +665 -0
  183. package/dist/src/backend/domains/session/chat/chat-event-forwarder.service.js.map +1 -0
  184. package/dist/src/backend/domains/session/chat/chat-event-forwarder.service.test.d.ts.map +1 -0
  185. package/dist/src/backend/domains/session/chat/chat-event-forwarder.service.test.js +133 -0
  186. package/dist/src/backend/domains/session/chat/chat-event-forwarder.service.test.js.map +1 -0
  187. package/dist/src/backend/domains/session/chat/chat-message-handlers/attachment-processing.d.ts +14 -0
  188. package/dist/src/backend/domains/session/chat/chat-message-handlers/attachment-processing.d.ts.map +1 -0
  189. package/dist/src/backend/domains/session/chat/chat-message-handlers/attachment-processing.js +88 -0
  190. package/dist/src/backend/domains/session/chat/chat-message-handlers/attachment-processing.js.map +1 -0
  191. package/dist/src/backend/domains/session/chat/chat-message-handlers/attachment-processing.test.d.ts.map +1 -0
  192. package/dist/src/backend/domains/session/chat/chat-message-handlers/attachment-processing.test.js.map +1 -0
  193. package/dist/src/backend/domains/session/chat/chat-message-handlers/attachment-utils.d.ts +5 -0
  194. package/dist/src/backend/domains/session/chat/chat-message-handlers/attachment-utils.d.ts.map +1 -0
  195. package/dist/src/backend/domains/session/chat/chat-message-handlers/attachment-utils.js.map +1 -0
  196. package/dist/src/backend/domains/session/chat/chat-message-handlers/attachment-utils.test.d.ts.map +1 -0
  197. package/dist/src/backend/domains/session/chat/chat-message-handlers/attachment-utils.test.js.map +1 -0
  198. package/dist/src/backend/domains/session/chat/chat-message-handlers/constants.d.ts.map +1 -0
  199. package/dist/src/backend/domains/session/chat/chat-message-handlers/constants.js +7 -0
  200. package/dist/src/backend/domains/session/chat/chat-message-handlers/constants.js.map +1 -0
  201. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/list-sessions.handler.d.ts +4 -0
  202. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/list-sessions.handler.d.ts.map +1 -0
  203. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/list-sessions.handler.js.map +1 -0
  204. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/load-session.handler.d.ts +4 -0
  205. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/load-session.handler.d.ts.map +1 -0
  206. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/load-session.handler.js +47 -0
  207. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/load-session.handler.js.map +1 -0
  208. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/permission-response.handler.d.ts +4 -0
  209. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/permission-response.handler.d.ts.map +1 -0
  210. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/permission-response.handler.js +42 -0
  211. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/permission-response.handler.js.map +1 -0
  212. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/question-response.handler.d.ts +4 -0
  213. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/question-response.handler.d.ts.map +1 -0
  214. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/question-response.handler.js +34 -0
  215. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/question-response.handler.js.map +1 -0
  216. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/queue-message.handler.d.ts +4 -0
  217. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/queue-message.handler.d.ts.map +1 -0
  218. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/queue-message.handler.js +64 -0
  219. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/queue-message.handler.js.map +1 -0
  220. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/remove-queued-message.handler.d.ts +4 -0
  221. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/remove-queued-message.handler.d.ts.map +1 -0
  222. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/remove-queued-message.handler.js +25 -0
  223. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/remove-queued-message.handler.js.map +1 -0
  224. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/resume-queued-messages.handler.d.ts +4 -0
  225. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/resume-queued-messages.handler.d.ts.map +1 -0
  226. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/resume-queued-messages.handler.js +7 -0
  227. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/resume-queued-messages.handler.js.map +1 -0
  228. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/rewind-files.handler.d.ts +4 -0
  229. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/rewind-files.handler.d.ts.map +1 -0
  230. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/rewind-files.handler.js +48 -0
  231. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/rewind-files.handler.js.map +1 -0
  232. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/set-model.handler.d.ts +4 -0
  233. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/set-model.handler.d.ts.map +1 -0
  234. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/set-model.handler.js +29 -0
  235. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/set-model.handler.js.map +1 -0
  236. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/set-thinking-budget.handler.d.ts +4 -0
  237. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/set-thinking-budget.handler.d.ts.map +1 -0
  238. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/set-thinking-budget.handler.js +32 -0
  239. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/set-thinking-budget.handler.js.map +1 -0
  240. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/start.handler.d.ts +4 -0
  241. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/start.handler.d.ts.map +1 -0
  242. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/start.handler.js +27 -0
  243. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/start.handler.js.map +1 -0
  244. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/start.handler.test.d.ts +2 -0
  245. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/start.handler.test.d.ts.map +1 -0
  246. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/start.handler.test.js +43 -0
  247. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/start.handler.test.js.map +1 -0
  248. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/stop.handler.d.ts +4 -0
  249. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/stop.handler.d.ts.map +1 -0
  250. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/stop.handler.js +9 -0
  251. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/stop.handler.js.map +1 -0
  252. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/user-input.handler.d.ts +4 -0
  253. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/user-input.handler.d.ts.map +1 -0
  254. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/user-input.handler.js +27 -0
  255. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/user-input.handler.js.map +1 -0
  256. package/dist/src/backend/domains/session/chat/chat-message-handlers/interactive-response.d.ts.map +1 -0
  257. package/dist/src/backend/domains/session/chat/chat-message-handlers/interactive-response.js +91 -0
  258. package/dist/src/backend/domains/session/chat/chat-message-handlers/interactive-response.js.map +1 -0
  259. package/dist/src/backend/domains/session/chat/chat-message-handlers/interactive-response.test.d.ts.map +1 -0
  260. package/dist/src/backend/domains/session/chat/chat-message-handlers/interactive-response.test.js +83 -0
  261. package/dist/src/backend/domains/session/chat/chat-message-handlers/interactive-response.test.js.map +1 -0
  262. package/dist/src/backend/domains/session/chat/chat-message-handlers/registry.d.ts +9 -0
  263. package/dist/src/backend/domains/session/chat/chat-message-handlers/registry.d.ts.map +1 -0
  264. package/dist/src/backend/domains/session/chat/chat-message-handlers/registry.js +31 -0
  265. package/dist/src/backend/domains/session/chat/chat-message-handlers/registry.js.map +1 -0
  266. package/dist/src/backend/domains/session/chat/chat-message-handlers/types.d.ts +23 -0
  267. package/dist/src/backend/domains/session/chat/chat-message-handlers/types.d.ts.map +1 -0
  268. package/dist/src/backend/domains/session/chat/chat-message-handlers/types.js.map +1 -0
  269. package/dist/src/backend/domains/session/chat/chat-message-handlers/utils.d.ts +5 -0
  270. package/dist/src/backend/domains/session/chat/chat-message-handlers/utils.d.ts.map +1 -0
  271. package/dist/src/backend/domains/session/chat/chat-message-handlers/utils.js.map +1 -0
  272. package/dist/src/backend/domains/session/chat/chat-message-handlers.service.d.ts +32 -0
  273. package/dist/src/backend/domains/session/chat/chat-message-handlers.service.d.ts.map +1 -0
  274. package/dist/src/backend/domains/session/chat/chat-message-handlers.service.js +247 -0
  275. package/dist/src/backend/domains/session/chat/chat-message-handlers.service.js.map +1 -0
  276. package/dist/src/backend/domains/session/chat/chat-message-handlers.service.test.d.ts +2 -0
  277. package/dist/src/backend/domains/session/chat/chat-message-handlers.service.test.d.ts.map +1 -0
  278. package/dist/src/backend/domains/session/chat/chat-message-handlers.service.test.js +117 -0
  279. package/dist/src/backend/domains/session/chat/chat-message-handlers.service.test.js.map +1 -0
  280. package/dist/src/backend/domains/session/claude/client.d.ts +96 -0
  281. package/dist/src/backend/domains/session/claude/client.d.ts.map +1 -0
  282. package/dist/src/backend/domains/session/claude/client.js +258 -0
  283. package/dist/src/backend/domains/session/claude/client.js.map +1 -0
  284. package/dist/src/backend/domains/session/claude/constants.d.ts +8 -0
  285. package/dist/src/backend/domains/session/claude/constants.d.ts.map +1 -0
  286. package/dist/src/backend/domains/session/claude/constants.js +8 -0
  287. package/dist/src/backend/domains/session/claude/constants.js.map +1 -0
  288. package/dist/src/backend/domains/session/claude/index.d.ts +22 -0
  289. package/dist/src/backend/domains/session/claude/index.d.ts.map +1 -0
  290. package/dist/src/backend/domains/session/claude/index.js +11 -0
  291. package/dist/src/backend/domains/session/claude/index.js.map +1 -0
  292. package/dist/src/backend/domains/session/claude/monitoring.d.ts.map +1 -0
  293. package/dist/src/backend/domains/session/claude/monitoring.js +139 -0
  294. package/dist/src/backend/domains/session/claude/monitoring.js.map +1 -0
  295. package/dist/src/backend/domains/session/claude/permission-coordinator.d.ts.map +1 -0
  296. package/dist/src/backend/domains/session/claude/permission-coordinator.js +170 -0
  297. package/dist/src/backend/domains/session/claude/permission-coordinator.js.map +1 -0
  298. package/dist/src/backend/domains/session/claude/permission-coordinator.test.d.ts.map +1 -0
  299. package/dist/src/backend/domains/session/claude/permission-coordinator.test.js.map +1 -0
  300. package/dist/src/backend/domains/session/claude/permissions.d.ts +69 -0
  301. package/dist/src/backend/domains/session/claude/permissions.d.ts.map +1 -0
  302. package/dist/src/backend/domains/session/claude/permissions.js.map +1 -0
  303. package/dist/src/backend/domains/session/claude/permissions.test.d.ts.map +1 -0
  304. package/dist/src/backend/domains/session/claude/permissions.test.js.map +1 -0
  305. package/dist/src/backend/domains/session/claude/process.d.ts +100 -0
  306. package/dist/src/backend/domains/session/claude/process.d.ts.map +1 -0
  307. package/dist/src/backend/domains/session/claude/process.js +345 -0
  308. package/dist/src/backend/domains/session/claude/process.js.map +1 -0
  309. package/dist/src/backend/domains/session/claude/process.test.d.ts.map +1 -0
  310. package/dist/src/backend/domains/session/claude/process.test.js +23 -0
  311. package/dist/src/backend/domains/session/claude/process.test.js.map +1 -0
  312. package/dist/src/backend/domains/session/claude/protocol-io.d.ts.map +1 -0
  313. package/dist/src/backend/domains/session/claude/protocol-io.js.map +1 -0
  314. package/dist/src/backend/domains/session/claude/protocol.d.ts.map +1 -0
  315. package/dist/src/backend/domains/session/claude/protocol.js +388 -0
  316. package/dist/src/backend/domains/session/claude/protocol.js.map +1 -0
  317. package/dist/src/backend/domains/session/claude/protocol.test.d.ts.map +1 -0
  318. package/dist/src/backend/domains/session/claude/protocol.test.js.map +1 -0
  319. package/dist/src/backend/domains/session/claude/registry.d.ts +20 -0
  320. package/dist/src/backend/domains/session/claude/registry.d.ts.map +1 -0
  321. package/dist/src/backend/domains/session/claude/registry.js +35 -0
  322. package/dist/src/backend/domains/session/claude/registry.js.map +1 -0
  323. package/dist/src/backend/domains/session/claude/session.d.ts +24 -0
  324. package/dist/src/backend/domains/session/claude/session.d.ts.map +1 -0
  325. package/dist/src/backend/domains/session/claude/session.js +365 -0
  326. package/dist/src/backend/domains/session/claude/session.js.map +1 -0
  327. package/dist/src/backend/domains/session/claude/session.test.d.ts.map +1 -0
  328. package/dist/src/backend/domains/session/claude/session.test.js.map +1 -0
  329. package/dist/src/backend/domains/session/claude/types/process-types.d.ts.map +1 -0
  330. package/dist/src/backend/domains/session/claude/types/process-types.js.map +1 -0
  331. package/dist/src/backend/domains/session/claude/types.d.ts +371 -0
  332. package/dist/src/backend/domains/session/claude/types.d.ts.map +1 -0
  333. package/dist/src/backend/domains/session/claude/types.js.map +1 -0
  334. package/dist/src/backend/domains/session/claude/types.test.d.ts.map +1 -0
  335. package/dist/src/backend/domains/session/claude/types.test.js.map +1 -0
  336. package/dist/src/backend/domains/session/data/session-data.service.d.ts +163 -0
  337. package/dist/src/backend/domains/session/data/session-data.service.d.ts.map +1 -0
  338. package/dist/src/backend/domains/session/data/session-data.service.js +45 -0
  339. package/dist/src/backend/domains/session/data/session-data.service.js.map +1 -0
  340. package/dist/src/backend/domains/session/index.d.ts +19 -0
  341. package/dist/src/backend/domains/session/index.d.ts.map +1 -0
  342. package/dist/src/backend/domains/session/index.js +12 -0
  343. package/dist/src/backend/domains/session/index.js.map +1 -0
  344. package/dist/src/backend/domains/session/lifecycle/session.process-manager.d.ts +50 -0
  345. package/dist/src/backend/domains/session/lifecycle/session.process-manager.d.ts.map +1 -0
  346. package/dist/src/backend/domains/session/lifecycle/session.process-manager.js +237 -0
  347. package/dist/src/backend/domains/session/lifecycle/session.process-manager.js.map +1 -0
  348. package/dist/src/backend/domains/session/lifecycle/session.process-manager.test.d.ts.map +1 -0
  349. package/dist/src/backend/domains/session/lifecycle/session.process-manager.test.js +127 -0
  350. package/dist/src/backend/domains/session/lifecycle/session.process-manager.test.js.map +1 -0
  351. package/dist/src/backend/domains/session/lifecycle/session.prompt-builder.d.ts.map +1 -0
  352. package/dist/src/backend/domains/session/lifecycle/session.prompt-builder.js +29 -0
  353. package/dist/src/backend/domains/session/lifecycle/session.prompt-builder.js.map +1 -0
  354. package/dist/src/backend/domains/session/lifecycle/session.prompt-builder.test.d.ts.map +1 -0
  355. package/dist/src/backend/domains/session/lifecycle/session.prompt-builder.test.js +171 -0
  356. package/dist/src/backend/domains/session/lifecycle/session.prompt-builder.test.js.map +1 -0
  357. package/dist/src/backend/domains/session/lifecycle/session.repository.d.ts +33 -0
  358. package/dist/src/backend/domains/session/lifecycle/session.repository.d.ts.map +1 -0
  359. package/dist/src/backend/domains/session/lifecycle/session.repository.js +51 -0
  360. package/dist/src/backend/domains/session/lifecycle/session.repository.js.map +1 -0
  361. package/dist/src/backend/domains/session/lifecycle/session.repository.test.d.ts.map +1 -0
  362. package/dist/src/backend/domains/session/lifecycle/session.repository.test.js +61 -0
  363. package/dist/src/backend/domains/session/lifecycle/session.repository.test.js.map +1 -0
  364. package/dist/src/backend/domains/session/lifecycle/session.service.d.ts +67 -0
  365. package/dist/src/backend/domains/session/lifecycle/session.service.d.ts.map +1 -0
  366. package/dist/src/backend/domains/session/lifecycle/session.service.js +439 -0
  367. package/dist/src/backend/domains/session/lifecycle/session.service.js.map +1 -0
  368. package/dist/src/backend/domains/session/lifecycle/session.service.test.d.ts.map +1 -0
  369. package/dist/src/backend/domains/session/lifecycle/session.service.test.js +573 -0
  370. package/dist/src/backend/domains/session/lifecycle/session.service.test.js.map +1 -0
  371. package/dist/src/backend/domains/session/logging/session-file-logger.service.d.ts.map +1 -0
  372. package/dist/src/backend/domains/session/logging/session-file-logger.service.js +238 -0
  373. package/dist/src/backend/domains/session/logging/session-file-logger.service.js.map +1 -0
  374. package/dist/src/backend/domains/session/logging/session-file-logger.service.test.d.ts.map +1 -0
  375. package/dist/src/backend/domains/session/logging/session-file-logger.service.test.js +476 -0
  376. package/dist/src/backend/domains/session/logging/session-file-logger.service.test.js.map +1 -0
  377. package/dist/src/backend/domains/session/session-domain-exports.test.d.ts +2 -0
  378. package/dist/src/backend/domains/session/session-domain-exports.test.d.ts.map +1 -0
  379. package/dist/src/backend/domains/session/session-domain-exports.test.js +54 -0
  380. package/dist/src/backend/domains/session/session-domain-exports.test.js.map +1 -0
  381. package/dist/src/backend/domains/session/session-domain.service.d.ts +65 -0
  382. package/dist/src/backend/domains/session/session-domain.service.d.ts.map +1 -0
  383. package/dist/src/backend/domains/session/session-domain.service.js +262 -0
  384. package/dist/src/backend/domains/session/session-domain.service.js.map +1 -0
  385. package/dist/src/backend/domains/session/session-domain.service.test.d.ts +2 -0
  386. package/dist/src/backend/domains/session/session-domain.service.test.d.ts.map +1 -0
  387. package/dist/src/backend/domains/session/session-domain.service.test.js +825 -0
  388. package/dist/src/backend/domains/session/session-domain.service.test.js.map +1 -0
  389. package/dist/src/backend/domains/session/store/session-hydrator.d.ts +11 -0
  390. package/dist/src/backend/domains/session/store/session-hydrator.d.ts.map +1 -0
  391. package/dist/src/backend/domains/session/store/session-hydrator.js +55 -0
  392. package/dist/src/backend/domains/session/store/session-hydrator.js.map +1 -0
  393. package/dist/src/backend/domains/session/store/session-process-exit.d.ts +26 -0
  394. package/dist/src/backend/domains/session/store/session-process-exit.d.ts.map +1 -0
  395. package/dist/src/backend/domains/session/store/session-process-exit.js +43 -0
  396. package/dist/src/backend/domains/session/store/session-process-exit.js.map +1 -0
  397. package/dist/src/backend/domains/session/store/session-publisher.d.ts +18 -0
  398. package/dist/src/backend/domains/session/store/session-publisher.d.ts.map +1 -0
  399. package/dist/src/backend/domains/session/store/session-publisher.js +63 -0
  400. package/dist/src/backend/domains/session/store/session-publisher.js.map +1 -0
  401. package/dist/src/backend/domains/session/store/session-queue.d.ts +16 -0
  402. package/dist/src/backend/domains/session/store/session-queue.d.ts.map +1 -0
  403. package/dist/src/backend/domains/session/store/session-queue.js +46 -0
  404. package/dist/src/backend/domains/session/store/session-queue.js.map +1 -0
  405. package/dist/src/backend/domains/session/store/session-queue.test.d.ts +2 -0
  406. package/dist/src/backend/domains/session/store/session-queue.test.d.ts.map +1 -0
  407. package/dist/src/backend/domains/session/store/session-queue.test.js +109 -0
  408. package/dist/src/backend/domains/session/store/session-queue.test.js.map +1 -0
  409. package/dist/src/backend/domains/session/store/session-replay-builder.d.ts +5 -0
  410. package/dist/src/backend/domains/session/store/session-replay-builder.d.ts.map +1 -0
  411. package/dist/src/backend/domains/session/store/session-replay-builder.js +98 -0
  412. package/dist/src/backend/domains/session/store/session-replay-builder.js.map +1 -0
  413. package/dist/src/backend/domains/session/store/session-replay-builder.test.d.ts +2 -0
  414. package/dist/src/backend/domains/session/store/session-replay-builder.test.d.ts.map +1 -0
  415. package/dist/src/backend/domains/session/store/session-replay-builder.test.js +100 -0
  416. package/dist/src/backend/domains/session/store/session-replay-builder.test.js.map +1 -0
  417. package/dist/src/backend/domains/session/store/session-runtime-machine.d.ts +15 -0
  418. package/dist/src/backend/domains/session/store/session-runtime-machine.d.ts.map +1 -0
  419. package/dist/src/backend/domains/session/store/session-runtime-machine.js +37 -0
  420. package/dist/src/backend/domains/session/store/session-runtime-machine.js.map +1 -0
  421. package/dist/src/backend/domains/session/store/session-runtime-machine.test.d.ts +2 -0
  422. package/dist/src/backend/domains/session/store/session-runtime-machine.test.d.ts.map +1 -0
  423. package/dist/src/backend/domains/session/store/session-runtime-machine.test.js +65 -0
  424. package/dist/src/backend/domains/session/store/session-runtime-machine.test.js.map +1 -0
  425. package/dist/src/backend/domains/session/store/session-store-registry.d.ts +13 -0
  426. package/dist/src/backend/domains/session/store/session-store-registry.d.ts.map +1 -0
  427. package/dist/src/backend/domains/session/store/session-store-registry.js +49 -0
  428. package/dist/src/backend/domains/session/store/session-store-registry.js.map +1 -0
  429. package/dist/src/backend/domains/session/store/session-store.types.d.ts +21 -0
  430. package/dist/src/backend/domains/session/store/session-store.types.d.ts.map +1 -0
  431. package/dist/src/backend/domains/session/store/session-store.types.js +2 -0
  432. package/dist/src/backend/domains/session/store/session-store.types.js.map +1 -0
  433. package/dist/src/backend/domains/session/store/session-transcript.d.ts +19 -0
  434. package/dist/src/backend/domains/session/store/session-transcript.d.ts.map +1 -0
  435. package/dist/src/backend/domains/session/store/session-transcript.js +256 -0
  436. package/dist/src/backend/domains/session/store/session-transcript.js.map +1 -0
  437. package/dist/src/backend/domains/session/store/session-transcript.test.d.ts +2 -0
  438. package/dist/src/backend/domains/session/store/session-transcript.test.d.ts.map +1 -0
  439. package/dist/src/backend/domains/session/store/session-transcript.test.js +96 -0
  440. package/dist/src/backend/domains/session/store/session-transcript.test.js.map +1 -0
  441. package/dist/src/backend/domains/terminal/index.d.ts +2 -0
  442. package/dist/src/backend/domains/terminal/index.d.ts.map +1 -0
  443. package/dist/src/backend/domains/terminal/index.js +2 -0
  444. package/dist/src/backend/domains/terminal/index.js.map +1 -0
  445. package/dist/src/backend/domains/terminal/terminal-domain-exports.test.d.ts +2 -0
  446. package/dist/src/backend/domains/terminal/terminal-domain-exports.test.d.ts.map +1 -0
  447. package/dist/src/backend/domains/terminal/terminal-domain-exports.test.js +8 -0
  448. package/dist/src/backend/domains/terminal/terminal-domain-exports.test.js.map +1 -0
  449. package/dist/src/backend/domains/terminal/terminal.service.d.ts +72 -0
  450. package/dist/src/backend/domains/terminal/terminal.service.d.ts.map +1 -0
  451. package/dist/src/backend/domains/terminal/terminal.service.js +310 -0
  452. package/dist/src/backend/domains/terminal/terminal.service.js.map +1 -0
  453. package/dist/src/backend/domains/terminal/terminal.service.test.d.ts +2 -0
  454. package/dist/src/backend/domains/terminal/terminal.service.test.d.ts.map +1 -0
  455. package/dist/src/backend/domains/terminal/terminal.service.test.js +375 -0
  456. package/dist/src/backend/domains/terminal/terminal.service.test.js.map +1 -0
  457. package/dist/src/backend/domains/workspace/bridges.d.ts +25 -0
  458. package/dist/src/backend/domains/workspace/bridges.d.ts.map +1 -0
  459. package/dist/src/backend/domains/workspace/bridges.js +2 -0
  460. package/dist/src/backend/domains/workspace/bridges.js.map +1 -0
  461. package/dist/src/backend/domains/workspace/index.d.ts +11 -0
  462. package/dist/src/backend/domains/workspace/index.d.ts.map +1 -0
  463. package/dist/src/backend/domains/workspace/index.js +10 -0
  464. package/dist/src/backend/domains/workspace/index.js.map +1 -0
  465. package/dist/src/backend/domains/workspace/lifecycle/activity.service.d.ts +13 -0
  466. package/dist/src/backend/domains/workspace/lifecycle/activity.service.d.ts.map +1 -0
  467. package/dist/src/backend/domains/workspace/lifecycle/activity.service.js +75 -0
  468. package/dist/src/backend/domains/workspace/lifecycle/activity.service.js.map +1 -0
  469. package/dist/src/backend/domains/workspace/lifecycle/activity.service.test.d.ts +2 -0
  470. package/dist/src/backend/domains/workspace/lifecycle/activity.service.test.d.ts.map +1 -0
  471. package/dist/src/backend/domains/workspace/lifecycle/activity.service.test.js +32 -0
  472. package/dist/src/backend/domains/workspace/lifecycle/activity.service.test.js.map +1 -0
  473. package/dist/src/backend/domains/workspace/lifecycle/creation.service.d.ts +47 -0
  474. package/dist/src/backend/domains/workspace/lifecycle/creation.service.d.ts.map +1 -0
  475. package/dist/src/backend/domains/workspace/lifecycle/creation.service.js +150 -0
  476. package/dist/src/backend/domains/workspace/lifecycle/creation.service.js.map +1 -0
  477. package/dist/src/backend/domains/workspace/lifecycle/creation.service.test.d.ts +2 -0
  478. package/dist/src/backend/domains/workspace/lifecycle/creation.service.test.d.ts.map +1 -0
  479. package/dist/src/backend/domains/workspace/lifecycle/creation.service.test.js +321 -0
  480. package/dist/src/backend/domains/workspace/lifecycle/creation.service.test.js.map +1 -0
  481. package/dist/src/backend/domains/workspace/lifecycle/data.service.d.ts +258 -0
  482. package/dist/src/backend/domains/workspace/lifecycle/data.service.d.ts.map +1 -0
  483. package/dist/src/backend/domains/workspace/lifecycle/data.service.js +23 -0
  484. package/dist/src/backend/domains/workspace/lifecycle/data.service.js.map +1 -0
  485. package/dist/src/backend/domains/workspace/lifecycle/state-machine.service.d.ts +27 -0
  486. package/dist/src/backend/domains/workspace/lifecycle/state-machine.service.d.ts.map +1 -0
  487. package/dist/src/backend/domains/workspace/lifecycle/state-machine.service.js +134 -0
  488. package/dist/src/backend/domains/workspace/lifecycle/state-machine.service.js.map +1 -0
  489. package/dist/src/backend/domains/workspace/lifecycle/state-machine.service.test.d.ts +2 -0
  490. package/dist/src/backend/domains/workspace/lifecycle/state-machine.service.test.d.ts.map +1 -0
  491. package/dist/src/backend/domains/workspace/lifecycle/state-machine.service.test.js +376 -0
  492. package/dist/src/backend/domains/workspace/lifecycle/state-machine.service.test.js.map +1 -0
  493. package/dist/src/backend/domains/workspace/query/workspace-query.service.d.ts +165 -0
  494. package/dist/src/backend/domains/workspace/query/workspace-query.service.d.ts.map +1 -0
  495. package/dist/src/backend/domains/workspace/query/workspace-query.service.js +300 -0
  496. package/dist/src/backend/domains/workspace/query/workspace-query.service.js.map +1 -0
  497. package/dist/src/backend/domains/workspace/state/flow-state.d.ts +22 -0
  498. package/dist/src/backend/domains/workspace/state/flow-state.d.ts.map +1 -0
  499. package/dist/src/backend/domains/workspace/state/flow-state.js +108 -0
  500. package/dist/src/backend/domains/workspace/state/flow-state.js.map +1 -0
  501. package/dist/src/backend/domains/workspace/state/flow-state.test.d.ts +2 -0
  502. package/dist/src/backend/domains/workspace/state/flow-state.test.d.ts.map +1 -0
  503. package/dist/src/backend/domains/workspace/state/flow-state.test.js +120 -0
  504. package/dist/src/backend/domains/workspace/state/flow-state.test.js.map +1 -0
  505. package/dist/src/backend/domains/workspace/state/init-policy.d.ts +14 -0
  506. package/dist/src/backend/domains/workspace/state/init-policy.d.ts.map +1 -0
  507. package/dist/src/backend/domains/workspace/state/init-policy.js +84 -0
  508. package/dist/src/backend/domains/workspace/state/init-policy.js.map +1 -0
  509. package/dist/src/backend/domains/workspace/state/init-policy.test.d.ts +2 -0
  510. package/dist/src/backend/domains/workspace/state/init-policy.test.d.ts.map +1 -0
  511. package/dist/src/backend/domains/workspace/state/init-policy.test.js +35 -0
  512. package/dist/src/backend/domains/workspace/state/init-policy.test.js.map +1 -0
  513. package/dist/src/backend/domains/workspace/state/kanban-state.d.ts +28 -0
  514. package/dist/src/backend/domains/workspace/state/kanban-state.d.ts.map +1 -0
  515. package/dist/src/backend/domains/workspace/state/kanban-state.js +104 -0
  516. package/dist/src/backend/domains/workspace/state/kanban-state.js.map +1 -0
  517. package/dist/src/backend/domains/workspace/state/kanban-state.test.d.ts +2 -0
  518. package/dist/src/backend/domains/workspace/state/kanban-state.test.d.ts.map +1 -0
  519. package/dist/src/backend/domains/workspace/state/kanban-state.test.js +217 -0
  520. package/dist/src/backend/domains/workspace/state/kanban-state.test.js.map +1 -0
  521. package/dist/src/backend/domains/workspace/workspace-domain-exports.test.d.ts +2 -0
  522. package/dist/src/backend/domains/workspace/workspace-domain-exports.test.d.ts.map +1 -0
  523. package/dist/src/backend/domains/workspace/workspace-domain-exports.test.js +47 -0
  524. package/dist/src/backend/domains/workspace/workspace-domain-exports.test.js.map +1 -0
  525. package/dist/src/backend/domains/workspace/worktree/worktree-init.test.d.ts +2 -0
  526. package/dist/src/backend/domains/workspace/worktree/worktree-init.test.d.ts.map +1 -0
  527. package/dist/src/backend/domains/workspace/worktree/worktree-init.test.js +262 -0
  528. package/dist/src/backend/domains/workspace/worktree/worktree-init.test.js.map +1 -0
  529. package/dist/src/backend/domains/workspace/worktree/worktree-lifecycle.service.d.ts +22 -0
  530. package/dist/src/backend/domains/workspace/worktree/worktree-lifecycle.service.d.ts.map +1 -0
  531. package/dist/src/backend/domains/workspace/worktree/worktree-lifecycle.service.js +174 -0
  532. package/dist/src/backend/domains/workspace/worktree/worktree-lifecycle.service.js.map +1 -0
  533. package/dist/src/backend/domains/workspace/worktree/worktree-lifecycle.service.test.d.ts.map +1 -0
  534. package/dist/src/backend/domains/workspace/worktree/worktree-lifecycle.service.test.js +83 -0
  535. package/dist/src/backend/domains/workspace/worktree/worktree-lifecycle.service.test.js.map +1 -0
  536. package/dist/src/backend/interceptors/conversation-rename.interceptor.js +2 -2
  537. package/dist/src/backend/interceptors/conversation-rename.interceptor.js.map +1 -1
  538. package/dist/src/backend/interceptors/pr-detection.interceptor.js +1 -1
  539. package/dist/src/backend/interceptors/pr-detection.interceptor.js.map +1 -1
  540. package/dist/src/backend/lib/atomic-file.d.ts +6 -0
  541. package/dist/src/backend/lib/atomic-file.d.ts.map +1 -0
  542. package/dist/src/backend/lib/atomic-file.js +28 -0
  543. package/dist/src/backend/lib/atomic-file.js.map +1 -0
  544. package/dist/src/backend/lib/atomic-file.test.d.ts +2 -0
  545. package/dist/src/backend/lib/atomic-file.test.d.ts.map +1 -0
  546. package/dist/src/backend/lib/atomic-file.test.js +62 -0
  547. package/dist/src/backend/lib/atomic-file.test.js.map +1 -0
  548. package/dist/src/backend/lib/claude-paths.d.ts +2 -0
  549. package/dist/src/backend/lib/claude-paths.d.ts.map +1 -0
  550. package/dist/src/backend/lib/claude-paths.js +7 -0
  551. package/dist/src/backend/lib/claude-paths.js.map +1 -0
  552. package/dist/src/backend/lib/constants.d.ts +6 -0
  553. package/dist/src/backend/lib/constants.d.ts.map +1 -0
  554. package/dist/src/backend/lib/constants.js +6 -0
  555. package/dist/src/backend/lib/constants.js.map +1 -0
  556. package/dist/src/backend/lib/event-emitter-types.d.ts +4 -0
  557. package/dist/src/backend/lib/event-emitter-types.d.ts.map +1 -0
  558. package/dist/src/backend/lib/event-emitter-types.js +2 -0
  559. package/dist/src/backend/lib/event-emitter-types.js.map +1 -0
  560. package/dist/src/backend/lib/file-helpers.d.ts.map +1 -1
  561. package/dist/src/backend/lib/file-helpers.js +2 -1
  562. package/dist/src/backend/lib/file-helpers.js.map +1 -1
  563. package/dist/src/backend/lib/file-lock-mutex.d.ts +26 -0
  564. package/dist/src/backend/lib/file-lock-mutex.d.ts.map +1 -0
  565. package/dist/src/backend/lib/file-lock-mutex.js +224 -0
  566. package/dist/src/backend/lib/file-lock-mutex.js.map +1 -0
  567. package/dist/src/backend/lib/file-lock-mutex.test.d.ts +2 -0
  568. package/dist/src/backend/lib/file-lock-mutex.test.d.ts.map +1 -0
  569. package/dist/src/backend/lib/file-lock-mutex.test.js +143 -0
  570. package/dist/src/backend/lib/file-lock-mutex.test.js.map +1 -0
  571. package/dist/src/backend/lib/shell.d.ts.map +1 -1
  572. package/dist/src/backend/lib/shell.js +3 -2
  573. package/dist/src/backend/lib/shell.js.map +1 -1
  574. package/dist/src/backend/middleware/middleware.test.js +41 -37
  575. package/dist/src/backend/middleware/middleware.test.js.map +1 -1
  576. package/dist/src/backend/migrate.d.ts.map +1 -1
  577. package/dist/src/backend/migrate.js +11 -4
  578. package/dist/src/backend/migrate.js.map +1 -1
  579. package/dist/src/backend/orchestration/domain-bridges.orchestrator.d.ts +2 -0
  580. package/dist/src/backend/orchestration/domain-bridges.orchestrator.d.ts.map +1 -0
  581. package/dist/src/backend/orchestration/domain-bridges.orchestrator.js +87 -0
  582. package/dist/src/backend/orchestration/domain-bridges.orchestrator.js.map +1 -0
  583. package/dist/src/backend/orchestration/domain-bridges.orchestrator.test.d.ts +2 -0
  584. package/dist/src/backend/orchestration/domain-bridges.orchestrator.test.d.ts.map +1 -0
  585. package/dist/src/backend/orchestration/domain-bridges.orchestrator.test.js +263 -0
  586. package/dist/src/backend/orchestration/domain-bridges.orchestrator.test.js.map +1 -0
  587. package/dist/src/backend/orchestration/index.d.ts +3 -0
  588. package/dist/src/backend/orchestration/index.d.ts.map +1 -0
  589. package/dist/src/backend/orchestration/index.js +3 -0
  590. package/dist/src/backend/orchestration/index.js.map +1 -0
  591. package/dist/src/backend/orchestration/types.d.ts +3 -0
  592. package/dist/src/backend/orchestration/types.d.ts.map +1 -0
  593. package/dist/src/backend/orchestration/types.js +2 -0
  594. package/dist/src/backend/orchestration/types.js.map +1 -0
  595. package/dist/src/backend/orchestration/workspace-archive.orchestrator.d.ts +53 -0
  596. package/dist/src/backend/orchestration/workspace-archive.orchestrator.d.ts.map +1 -0
  597. package/dist/src/backend/orchestration/workspace-archive.orchestrator.js +66 -0
  598. package/dist/src/backend/orchestration/workspace-archive.orchestrator.js.map +1 -0
  599. package/dist/src/backend/orchestration/workspace-archive.orchestrator.test.d.ts +2 -0
  600. package/dist/src/backend/orchestration/workspace-archive.orchestrator.test.d.ts.map +1 -0
  601. package/dist/src/backend/orchestration/workspace-archive.orchestrator.test.js +288 -0
  602. package/dist/src/backend/orchestration/workspace-archive.orchestrator.test.js.map +1 -0
  603. package/dist/src/backend/orchestration/workspace-init.orchestrator.d.ts +5 -0
  604. package/dist/src/backend/orchestration/workspace-init.orchestrator.d.ts.map +1 -0
  605. package/dist/src/backend/orchestration/workspace-init.orchestrator.js +432 -0
  606. package/dist/src/backend/orchestration/workspace-init.orchestrator.js.map +1 -0
  607. package/dist/src/backend/orchestration/workspace-init.orchestrator.test.d.ts +2 -0
  608. package/dist/src/backend/orchestration/workspace-init.orchestrator.test.d.ts.map +1 -0
  609. package/dist/src/backend/orchestration/workspace-init.orchestrator.test.js +589 -0
  610. package/dist/src/backend/orchestration/workspace-init.orchestrator.test.js.map +1 -0
  611. package/dist/src/backend/prompts/ratchet-dispatch.d.ts.map +1 -1
  612. package/dist/src/backend/prompts/ratchet-dispatch.js +1 -0
  613. package/dist/src/backend/prompts/ratchet-dispatch.js.map +1 -1
  614. package/dist/src/backend/resource_accessors/claude-session.accessor.d.ts +19 -1
  615. package/dist/src/backend/resource_accessors/claude-session.accessor.d.ts.map +1 -1
  616. package/dist/src/backend/resource_accessors/claude-session.accessor.js +47 -0
  617. package/dist/src/backend/resource_accessors/claude-session.accessor.js.map +1 -1
  618. package/dist/src/backend/resource_accessors/data-backup.accessor.d.ts +16 -0
  619. package/dist/src/backend/resource_accessors/data-backup.accessor.d.ts.map +1 -0
  620. package/dist/src/backend/resource_accessors/data-backup.accessor.js +23 -0
  621. package/dist/src/backend/resource_accessors/data-backup.accessor.js.map +1 -0
  622. package/dist/src/backend/resource_accessors/health.accessor.d.ts +6 -0
  623. package/dist/src/backend/resource_accessors/health.accessor.d.ts.map +1 -0
  624. package/dist/src/backend/resource_accessors/health.accessor.js +8 -0
  625. package/dist/src/backend/resource_accessors/health.accessor.js.map +1 -0
  626. package/dist/src/backend/resource_accessors/index.d.ts +2 -0
  627. package/dist/src/backend/resource_accessors/index.d.ts.map +1 -1
  628. package/dist/src/backend/resource_accessors/index.js +2 -0
  629. package/dist/src/backend/resource_accessors/index.js.map +1 -1
  630. package/dist/src/backend/resource_accessors/project.accessor.d.ts +5 -2
  631. package/dist/src/backend/resource_accessors/project.accessor.d.ts.map +1 -1
  632. package/dist/src/backend/resource_accessors/project.accessor.js +3 -0
  633. package/dist/src/backend/resource_accessors/project.accessor.js.map +1 -1
  634. package/dist/src/backend/resource_accessors/workspace.accessor.d.ts +12 -0
  635. package/dist/src/backend/resource_accessors/workspace.accessor.d.ts.map +1 -1
  636. package/dist/src/backend/resource_accessors/workspace.accessor.js +55 -0
  637. package/dist/src/backend/resource_accessors/workspace.accessor.js.map +1 -1
  638. package/dist/src/backend/routers/api/health.router.js +3 -3
  639. package/dist/src/backend/routers/api/health.router.js.map +1 -1
  640. package/dist/src/backend/routers/api/health.router.test.js +6 -5
  641. package/dist/src/backend/routers/api/health.router.test.js.map +1 -1
  642. package/dist/src/backend/routers/api/mcp.router.test.js +5 -4
  643. package/dist/src/backend/routers/api/mcp.router.test.js.map +1 -1
  644. package/dist/src/backend/routers/api/project.router.d.ts.map +1 -1
  645. package/dist/src/backend/routers/api/project.router.js +12 -12
  646. package/dist/src/backend/routers/api/project.router.js.map +1 -1
  647. package/dist/src/backend/routers/mcp/server.js +2 -2
  648. package/dist/src/backend/routers/mcp/server.js.map +1 -1
  649. package/dist/src/backend/routers/mcp/system.mcp.js +2 -2
  650. package/dist/src/backend/routers/mcp/system.mcp.js.map +1 -1
  651. package/dist/src/backend/routers/mcp/terminal.mcp.d.ts.map +1 -1
  652. package/dist/src/backend/routers/mcp/terminal.mcp.js +3 -3
  653. package/dist/src/backend/routers/mcp/terminal.mcp.js.map +1 -1
  654. package/dist/src/backend/routers/mcp/terminal.mcp.test.js +4 -4
  655. package/dist/src/backend/routers/mcp/terminal.mcp.test.js.map +1 -1
  656. package/dist/src/backend/routers/websocket/chat.handler.d.ts +1 -1
  657. package/dist/src/backend/routers/websocket/chat.handler.d.ts.map +1 -1
  658. package/dist/src/backend/routers/websocket/chat.handler.js +5 -10
  659. package/dist/src/backend/routers/websocket/chat.handler.js.map +1 -1
  660. package/dist/src/backend/routers/websocket/terminal.handler.d.ts.map +1 -1
  661. package/dist/src/backend/routers/websocket/terminal.handler.js +6 -6
  662. package/dist/src/backend/routers/websocket/terminal.handler.js.map +1 -1
  663. package/dist/src/backend/server.d.ts.map +1 -1
  664. package/dist/src/backend/server.js +4 -2
  665. package/dist/src/backend/server.js.map +1 -1
  666. package/dist/src/backend/services/cli-health.service.d.ts +1 -2
  667. package/dist/src/backend/services/cli-health.service.d.ts.map +1 -1
  668. package/dist/src/backend/services/cli-health.service.js +8 -4
  669. package/dist/src/backend/services/cli-health.service.js.map +1 -1
  670. package/dist/src/backend/services/config.service.d.ts.map +1 -1
  671. package/dist/src/backend/services/config.service.js +3 -3
  672. package/dist/src/backend/services/config.service.js.map +1 -1
  673. package/dist/src/backend/services/constants.d.ts +37 -0
  674. package/dist/src/backend/services/constants.d.ts.map +1 -0
  675. package/dist/src/backend/services/constants.js +37 -0
  676. package/dist/src/backend/services/constants.js.map +1 -0
  677. package/dist/src/backend/services/data-backup.service.d.ts.map +1 -1
  678. package/dist/src/backend/services/data-backup.service.js +3 -9
  679. package/dist/src/backend/services/data-backup.service.js.map +1 -1
  680. package/dist/src/backend/services/data-backup.service.test.js.map +1 -1
  681. package/dist/src/backend/services/decision-log-query.service.d.ts +15 -0
  682. package/dist/src/backend/services/decision-log-query.service.d.ts.map +1 -0
  683. package/dist/src/backend/services/decision-log-query.service.js +23 -0
  684. package/dist/src/backend/services/decision-log-query.service.js.map +1 -0
  685. package/dist/src/backend/services/factory-config.service.d.ts +1 -10
  686. package/dist/src/backend/services/factory-config.service.d.ts.map +1 -1
  687. package/dist/src/backend/services/factory-config.service.js +1 -7
  688. package/dist/src/backend/services/factory-config.service.js.map +1 -1
  689. package/dist/src/backend/services/file-lock.service.d.ts +5 -2
  690. package/dist/src/backend/services/file-lock.service.d.ts.map +1 -1
  691. package/dist/src/backend/services/file-lock.service.js +48 -6
  692. package/dist/src/backend/services/file-lock.service.js.map +1 -1
  693. package/dist/src/backend/services/file-lock.service.test.js +63 -6
  694. package/dist/src/backend/services/file-lock.service.test.js.map +1 -1
  695. package/dist/src/backend/services/health.service.d.ts +6 -0
  696. package/dist/src/backend/services/health.service.d.ts.map +1 -0
  697. package/dist/src/backend/services/health.service.js +8 -0
  698. package/dist/src/backend/services/health.service.js.map +1 -0
  699. package/dist/src/backend/services/index.d.ts +0 -15
  700. package/dist/src/backend/services/index.d.ts.map +1 -1
  701. package/dist/src/backend/services/index.js +0 -15
  702. package/dist/src/backend/services/index.js.map +1 -1
  703. package/dist/src/backend/services/logger.service.d.ts +2 -0
  704. package/dist/src/backend/services/logger.service.d.ts.map +1 -1
  705. package/dist/src/backend/services/logger.service.js +45 -8
  706. package/dist/src/backend/services/logger.service.js.map +1 -1
  707. package/dist/src/backend/services/port.service.d.ts.map +1 -1
  708. package/dist/src/backend/services/port.service.js +2 -1
  709. package/dist/src/backend/services/port.service.js.map +1 -1
  710. package/dist/src/backend/services/project-management.service.d.ts +181 -0
  711. package/dist/src/backend/services/project-management.service.d.ts.map +1 -0
  712. package/dist/src/backend/services/project-management.service.js +26 -0
  713. package/dist/src/backend/services/project-management.service.js.map +1 -0
  714. package/dist/src/backend/services/rate-limit-backoff.d.ts +19 -0
  715. package/dist/src/backend/services/rate-limit-backoff.d.ts.map +1 -0
  716. package/dist/src/backend/services/rate-limit-backoff.js +55 -0
  717. package/dist/src/backend/services/rate-limit-backoff.js.map +1 -0
  718. package/dist/src/backend/services/rate-limit-backoff.test.d.ts +2 -0
  719. package/dist/src/backend/services/rate-limit-backoff.test.d.ts.map +1 -0
  720. package/dist/src/backend/services/rate-limit-backoff.test.js +138 -0
  721. package/dist/src/backend/services/rate-limit-backoff.test.js.map +1 -0
  722. package/dist/src/backend/services/scheduler.service.d.ts.map +1 -1
  723. package/dist/src/backend/services/scheduler.service.js +6 -9
  724. package/dist/src/backend/services/scheduler.service.js.map +1 -1
  725. package/dist/src/backend/services/scheduler.service.test.js +2 -4
  726. package/dist/src/backend/services/scheduler.service.test.js.map +1 -1
  727. package/dist/src/backend/services/slash-command-cache.service.d.ts.map +1 -1
  728. package/dist/src/backend/services/slash-command-cache.service.js +1 -1
  729. package/dist/src/backend/services/slash-command-cache.service.js.map +1 -1
  730. package/dist/src/backend/services/user-settings-query.service.d.ts +16 -0
  731. package/dist/src/backend/services/user-settings-query.service.d.ts.map +1 -0
  732. package/dist/src/backend/services/user-settings-query.service.js +17 -0
  733. package/dist/src/backend/services/user-settings-query.service.js.map +1 -0
  734. package/dist/src/backend/trpc/admin.trpc.d.ts +59 -22
  735. package/dist/src/backend/trpc/admin.trpc.d.ts.map +1 -1
  736. package/dist/src/backend/trpc/admin.trpc.js +130 -5
  737. package/dist/src/backend/trpc/admin.trpc.js.map +1 -1
  738. package/dist/src/backend/trpc/decision-log.trpc.d.ts +3 -3
  739. package/dist/src/backend/trpc/decision-log.trpc.js +4 -4
  740. package/dist/src/backend/trpc/decision-log.trpc.js.map +1 -1
  741. package/dist/src/backend/trpc/github.trpc.d.ts +8 -8
  742. package/dist/src/backend/trpc/github.trpc.js +7 -7
  743. package/dist/src/backend/trpc/github.trpc.js.map +1 -1
  744. package/dist/src/backend/trpc/index.d.ts +308 -274
  745. package/dist/src/backend/trpc/index.d.ts.map +1 -1
  746. package/dist/src/backend/trpc/pr-review.trpc.d.ts +4 -4
  747. package/dist/src/backend/trpc/project.trpc.d.ts +30 -30
  748. package/dist/src/backend/trpc/project.trpc.d.ts.map +1 -1
  749. package/dist/src/backend/trpc/project.trpc.js +19 -31
  750. package/dist/src/backend/trpc/project.trpc.js.map +1 -1
  751. package/dist/src/backend/trpc/session.trpc.d.ts +89 -89
  752. package/dist/src/backend/trpc/session.trpc.d.ts.map +1 -1
  753. package/dist/src/backend/trpc/session.trpc.js +24 -22
  754. package/dist/src/backend/trpc/session.trpc.js.map +1 -1
  755. package/dist/src/backend/trpc/user-settings.trpc.d.ts +4 -4
  756. package/dist/src/backend/trpc/user-settings.trpc.js +5 -5
  757. package/dist/src/backend/trpc/user-settings.trpc.js.map +1 -1
  758. package/dist/src/backend/trpc/workspace/git.trpc.js +2 -2
  759. package/dist/src/backend/trpc/workspace/git.trpc.js.map +1 -1
  760. package/dist/src/backend/trpc/workspace/ide.trpc.js +5 -5
  761. package/dist/src/backend/trpc/workspace/ide.trpc.js.map +1 -1
  762. package/dist/src/backend/trpc/workspace/init.trpc.d.ts +20 -21
  763. package/dist/src/backend/trpc/workspace/init.trpc.d.ts.map +1 -1
  764. package/dist/src/backend/trpc/workspace/init.trpc.js +13 -13
  765. package/dist/src/backend/trpc/workspace/init.trpc.js.map +1 -1
  766. package/dist/src/backend/trpc/workspace/workspace-helpers.d.ts +31 -31
  767. package/dist/src/backend/trpc/workspace/workspace-helpers.d.ts.map +1 -1
  768. package/dist/src/backend/trpc/workspace/workspace-helpers.js +4 -4
  769. package/dist/src/backend/trpc/workspace/workspace-helpers.js.map +1 -1
  770. package/dist/src/backend/trpc/workspace.trpc.d.ts +118 -114
  771. package/dist/src/backend/trpc/workspace.trpc.d.ts.map +1 -1
  772. package/dist/src/backend/trpc/workspace.trpc.js +10 -13
  773. package/dist/src/backend/trpc/workspace.trpc.js.map +1 -1
  774. package/dist/src/backend/utils/conversation-analyzer.d.ts +1 -1
  775. package/dist/src/backend/utils/conversation-analyzer.d.ts.map +1 -1
  776. package/dist/src/cli/index.js +86 -30
  777. package/dist/src/cli/index.js.map +1 -1
  778. package/dist/src/shared/claude/protocol.d.ts.map +1 -1
  779. package/dist/src/shared/claude/protocol.js +3 -0
  780. package/dist/src/shared/claude/protocol.js.map +1 -1
  781. package/dist/src/shared/schemas/export-data.schema.d.ts +68 -68
  782. package/dist/src/shared/schemas/factory-config.schema.d.ts +10 -0
  783. package/dist/src/shared/schemas/factory-config.schema.d.ts.map +1 -0
  784. package/dist/src/shared/schemas/factory-config.schema.js +9 -0
  785. package/dist/src/shared/schemas/factory-config.schema.js.map +1 -0
  786. package/dist/src/shared/session-runtime.js +2 -2
  787. package/dist/src/shared/session-runtime.js.map +1 -1
  788. package/dist/src/shared/websocket/chat-message.schema.d.ts +5 -0
  789. package/dist/src/shared/websocket/chat-message.schema.d.ts.map +1 -1
  790. package/dist/src/shared/websocket/chat-message.schema.js +3 -0
  791. package/dist/src/shared/websocket/chat-message.schema.js.map +1 -1
  792. package/dist/src/shared/websocket/index.d.ts +1 -1
  793. package/dist/src/shared/websocket/index.d.ts.map +1 -1
  794. package/dist/src/shared/websocket/index.js.map +1 -1
  795. package/dist/src/shared/workspace-init.d.ts +8 -0
  796. package/dist/src/shared/workspace-init.d.ts.map +1 -0
  797. package/dist/src/shared/workspace-init.js +2 -0
  798. package/dist/src/shared/workspace-init.js.map +1 -0
  799. package/dist/src/shared/workspace-words.js +2 -1
  800. package/dist/src/shared/workspace-words.js.map +1 -1
  801. package/dist/src/test-utils/unsafe-coerce.d.ts +2 -0
  802. package/dist/src/test-utils/unsafe-coerce.d.ts.map +1 -0
  803. package/dist/src/test-utils/unsafe-coerce.js +4 -0
  804. package/dist/src/test-utils/unsafe-coerce.js.map +1 -0
  805. package/dist/tsconfig.backend.tsbuildinfo +1 -1
  806. package/package.json +4 -1
  807. package/prompts/ratchet/dispatch.md +3 -1
  808. package/dist/client/assets/_basePickBy-B1TXLukC.js +0 -1
  809. package/dist/client/assets/_baseUniq-C997CyNN.js +0 -1
  810. package/dist/client/assets/arc-Dj9rabaY.js +0 -1
  811. package/dist/client/assets/architectureDiagram-VXUJARFQ-CDb4dzGu.js +0 -36
  812. package/dist/client/assets/blockDiagram-VD42YOAC-C0GqgSqb.js +0 -122
  813. package/dist/client/assets/c4Diagram-YG6GDRKO-DwI5UcIR.js +0 -10
  814. package/dist/client/assets/channel-CUWT3YnL.js +0 -1
  815. package/dist/client/assets/chunk-4BX2VUAB-B-xUvS2Q.js +0 -1
  816. package/dist/client/assets/chunk-55IACEB6-DnfB7mO6.js +0 -1
  817. package/dist/client/assets/chunk-B4BG7PRW-C3mlyOKh.js +0 -165
  818. package/dist/client/assets/chunk-DI55MBZ5-CWrY69vI.js +0 -220
  819. package/dist/client/assets/chunk-FMBD7UC4-DqIuy8cX.js +0 -15
  820. package/dist/client/assets/chunk-QN33PNHL-DaQ7aatm.js +0 -1
  821. package/dist/client/assets/chunk-QZHKN3VN-DIAhn72l.js +0 -1
  822. package/dist/client/assets/chunk-TZMSLE5B-Vv2yea82.js +0 -1
  823. package/dist/client/assets/classDiagram-2ON5EDUG-DIs9Yb8N.js +0 -1
  824. package/dist/client/assets/classDiagram-v2-WZHVMYZB-DIs9Yb8N.js +0 -1
  825. package/dist/client/assets/clone-DWe4ixM1.js +0 -1
  826. package/dist/client/assets/cose-bilkent-S5V4N54A-DCt0h-5b.js +0 -1
  827. package/dist/client/assets/dagre-6UL2VRFP-Dx9zq5ck.js +0 -4
  828. package/dist/client/assets/diagram-PSM6KHXK-DWDEKgzo.js +0 -24
  829. package/dist/client/assets/diagram-QEK2KX5R-DWNDqpN2.js +0 -43
  830. package/dist/client/assets/diagram-S2PKOQOG-DG0T0gs6.js +0 -24
  831. package/dist/client/assets/erDiagram-Q2GNP2WA-CqDgOfYs.js +0 -60
  832. package/dist/client/assets/flowDiagram-NV44I4VS-V_QvSvWm.js +0 -162
  833. package/dist/client/assets/ganttDiagram-JELNMOA3-BCPELgz0.js +0 -267
  834. package/dist/client/assets/gitGraphDiagram-NY62KEGX-D31RxlxC.js +0 -65
  835. package/dist/client/assets/graph-D1yJ-cNO.js +0 -1
  836. package/dist/client/assets/index-CgaNRc7X.js +0 -436
  837. package/dist/client/assets/index-EHCwHZbd.css +0 -1
  838. package/dist/client/assets/infoDiagram-WHAUD3N6-BIE2gcL7.js +0 -2
  839. package/dist/client/assets/journeyDiagram-XKPGCS4Q-B5q1A61b.js +0 -139
  840. package/dist/client/assets/kanban-definition-3W4ZIXB7-D7FRiZXq.js +0 -89
  841. package/dist/client/assets/layout-X-mlIEi7.js +0 -1
  842. package/dist/client/assets/linear-CGpwoS11.js +0 -1
  843. package/dist/client/assets/mindmap-definition-VGOIOE7T-XMWWZCmt.js +0 -68
  844. package/dist/client/assets/pieDiagram-ADFJNKIX-4wqJE3Xv.js +0 -30
  845. package/dist/client/assets/quadrantDiagram-AYHSOK5B-ApAId2lG.js +0 -7
  846. package/dist/client/assets/requirementDiagram-UZGBJVZJ-CNkajZw2.js +0 -64
  847. package/dist/client/assets/sankeyDiagram-TZEHDZUN-BFLGpYF1.js +0 -10
  848. package/dist/client/assets/sequenceDiagram-WL72ISMW-DB-mQnOQ.js +0 -145
  849. package/dist/client/assets/stateDiagram-FKZM4ZOC-7gdB28fK.js +0 -1
  850. package/dist/client/assets/stateDiagram-v2-4FDKWEC3-6YMfUfib.js +0 -1
  851. package/dist/client/assets/terminal-instance-BHOJvhaZ.js +0 -1
  852. package/dist/client/assets/timeline-definition-IT6M3QCI-Cc-mzevR.js +0 -61
  853. package/dist/client/assets/treemap-KMMF4GRG-BSCzOTjP.js +0 -128
  854. package/dist/client/assets/xychartDiagram-PRI3JC2R-DA09PDY1.js +0 -7
  855. package/dist/prompts/workflows/ratchet.md +0 -73
  856. package/dist/src/backend/claude/index.d.ts +0 -104
  857. package/dist/src/backend/claude/index.d.ts.map +0 -1
  858. package/dist/src/backend/claude/index.js +0 -266
  859. package/dist/src/backend/claude/index.js.map +0 -1
  860. package/dist/src/backend/claude/monitoring.d.ts.map +0 -1
  861. package/dist/src/backend/claude/monitoring.js +0 -139
  862. package/dist/src/backend/claude/monitoring.js.map +0 -1
  863. package/dist/src/backend/claude/permission-coordinator.d.ts.map +0 -1
  864. package/dist/src/backend/claude/permission-coordinator.js +0 -170
  865. package/dist/src/backend/claude/permission-coordinator.js.map +0 -1
  866. package/dist/src/backend/claude/permission-coordinator.test.d.ts.map +0 -1
  867. package/dist/src/backend/claude/permission-coordinator.test.js.map +0 -1
  868. package/dist/src/backend/claude/permissions.d.ts +0 -68
  869. package/dist/src/backend/claude/permissions.d.ts.map +0 -1
  870. package/dist/src/backend/claude/permissions.js.map +0 -1
  871. package/dist/src/backend/claude/permissions.test.d.ts.map +0 -1
  872. package/dist/src/backend/claude/permissions.test.js.map +0 -1
  873. package/dist/src/backend/claude/process.d.ts +0 -101
  874. package/dist/src/backend/claude/process.d.ts.map +0 -1
  875. package/dist/src/backend/claude/process.js +0 -345
  876. package/dist/src/backend/claude/process.js.map +0 -1
  877. package/dist/src/backend/claude/process.test.d.ts.map +0 -1
  878. package/dist/src/backend/claude/process.test.js +0 -22
  879. package/dist/src/backend/claude/process.test.js.map +0 -1
  880. package/dist/src/backend/claude/protocol-io.d.ts.map +0 -1
  881. package/dist/src/backend/claude/protocol-io.js.map +0 -1
  882. package/dist/src/backend/claude/protocol.d.ts.map +0 -1
  883. package/dist/src/backend/claude/protocol.js +0 -387
  884. package/dist/src/backend/claude/protocol.js.map +0 -1
  885. package/dist/src/backend/claude/protocol.test.d.ts.map +0 -1
  886. package/dist/src/backend/claude/protocol.test.js.map +0 -1
  887. package/dist/src/backend/claude/registry.d.ts +0 -16
  888. package/dist/src/backend/claude/registry.d.ts.map +0 -1
  889. package/dist/src/backend/claude/registry.js +0 -32
  890. package/dist/src/backend/claude/registry.js.map +0 -1
  891. package/dist/src/backend/claude/session.d.ts +0 -24
  892. package/dist/src/backend/claude/session.d.ts.map +0 -1
  893. package/dist/src/backend/claude/session.js +0 -366
  894. package/dist/src/backend/claude/session.js.map +0 -1
  895. package/dist/src/backend/claude/session.test.d.ts.map +0 -1
  896. package/dist/src/backend/claude/session.test.js.map +0 -1
  897. package/dist/src/backend/claude/types/process-types.d.ts.map +0 -1
  898. package/dist/src/backend/claude/types/process-types.js.map +0 -1
  899. package/dist/src/backend/claude/types.d.ts +0 -371
  900. package/dist/src/backend/claude/types.d.ts.map +0 -1
  901. package/dist/src/backend/claude/types.js.map +0 -1
  902. package/dist/src/backend/claude/types.test.d.ts.map +0 -1
  903. package/dist/src/backend/claude/types.test.js.map +0 -1
  904. package/dist/src/backend/services/chat-connection.service.d.ts +0 -18
  905. package/dist/src/backend/services/chat-connection.service.d.ts.map +0 -1
  906. package/dist/src/backend/services/chat-connection.service.js +0 -66
  907. package/dist/src/backend/services/chat-connection.service.js.map +0 -1
  908. package/dist/src/backend/services/chat-event-forwarder.service.d.ts +0 -36
  909. package/dist/src/backend/services/chat-event-forwarder.service.d.ts.map +0 -1
  910. package/dist/src/backend/services/chat-event-forwarder.service.js +0 -657
  911. package/dist/src/backend/services/chat-event-forwarder.service.js.map +0 -1
  912. package/dist/src/backend/services/chat-event-forwarder.service.test.d.ts.map +0 -1
  913. package/dist/src/backend/services/chat-event-forwarder.service.test.js +0 -133
  914. package/dist/src/backend/services/chat-event-forwarder.service.test.js.map +0 -1
  915. package/dist/src/backend/services/chat-message-handlers/attachment-processing.d.ts +0 -14
  916. package/dist/src/backend/services/chat-message-handlers/attachment-processing.d.ts.map +0 -1
  917. package/dist/src/backend/services/chat-message-handlers/attachment-processing.js +0 -81
  918. package/dist/src/backend/services/chat-message-handlers/attachment-processing.js.map +0 -1
  919. package/dist/src/backend/services/chat-message-handlers/attachment-processing.test.d.ts.map +0 -1
  920. package/dist/src/backend/services/chat-message-handlers/attachment-processing.test.js.map +0 -1
  921. package/dist/src/backend/services/chat-message-handlers/attachment-utils.d.ts +0 -5
  922. package/dist/src/backend/services/chat-message-handlers/attachment-utils.d.ts.map +0 -1
  923. package/dist/src/backend/services/chat-message-handlers/attachment-utils.js.map +0 -1
  924. package/dist/src/backend/services/chat-message-handlers/attachment-utils.test.d.ts.map +0 -1
  925. package/dist/src/backend/services/chat-message-handlers/attachment-utils.test.js.map +0 -1
  926. package/dist/src/backend/services/chat-message-handlers/constants.d.ts.map +0 -1
  927. package/dist/src/backend/services/chat-message-handlers/constants.js +0 -7
  928. package/dist/src/backend/services/chat-message-handlers/constants.js.map +0 -1
  929. package/dist/src/backend/services/chat-message-handlers/handlers/list-sessions.handler.d.ts +0 -4
  930. package/dist/src/backend/services/chat-message-handlers/handlers/list-sessions.handler.d.ts.map +0 -1
  931. package/dist/src/backend/services/chat-message-handlers/handlers/list-sessions.handler.js.map +0 -1
  932. package/dist/src/backend/services/chat-message-handlers/handlers/load-session.handler.d.ts +0 -4
  933. package/dist/src/backend/services/chat-message-handlers/handlers/load-session.handler.d.ts.map +0 -1
  934. package/dist/src/backend/services/chat-message-handlers/handlers/load-session.handler.js +0 -48
  935. package/dist/src/backend/services/chat-message-handlers/handlers/load-session.handler.js.map +0 -1
  936. package/dist/src/backend/services/chat-message-handlers/handlers/permission-response.handler.d.ts +0 -4
  937. package/dist/src/backend/services/chat-message-handlers/handlers/permission-response.handler.d.ts.map +0 -1
  938. package/dist/src/backend/services/chat-message-handlers/handlers/permission-response.handler.js +0 -42
  939. package/dist/src/backend/services/chat-message-handlers/handlers/permission-response.handler.js.map +0 -1
  940. package/dist/src/backend/services/chat-message-handlers/handlers/question-response.handler.d.ts +0 -4
  941. package/dist/src/backend/services/chat-message-handlers/handlers/question-response.handler.d.ts.map +0 -1
  942. package/dist/src/backend/services/chat-message-handlers/handlers/question-response.handler.js +0 -34
  943. package/dist/src/backend/services/chat-message-handlers/handlers/question-response.handler.js.map +0 -1
  944. package/dist/src/backend/services/chat-message-handlers/handlers/queue-message.handler.d.ts +0 -4
  945. package/dist/src/backend/services/chat-message-handlers/handlers/queue-message.handler.d.ts.map +0 -1
  946. package/dist/src/backend/services/chat-message-handlers/handlers/queue-message.handler.js +0 -64
  947. package/dist/src/backend/services/chat-message-handlers/handlers/queue-message.handler.js.map +0 -1
  948. package/dist/src/backend/services/chat-message-handlers/handlers/remove-queued-message.handler.d.ts +0 -4
  949. package/dist/src/backend/services/chat-message-handlers/handlers/remove-queued-message.handler.d.ts.map +0 -1
  950. package/dist/src/backend/services/chat-message-handlers/handlers/remove-queued-message.handler.js +0 -25
  951. package/dist/src/backend/services/chat-message-handlers/handlers/remove-queued-message.handler.js.map +0 -1
  952. package/dist/src/backend/services/chat-message-handlers/handlers/rewind-files.handler.d.ts +0 -4
  953. package/dist/src/backend/services/chat-message-handlers/handlers/rewind-files.handler.d.ts.map +0 -1
  954. package/dist/src/backend/services/chat-message-handlers/handlers/rewind-files.handler.js +0 -48
  955. package/dist/src/backend/services/chat-message-handlers/handlers/rewind-files.handler.js.map +0 -1
  956. package/dist/src/backend/services/chat-message-handlers/handlers/set-model.handler.d.ts +0 -4
  957. package/dist/src/backend/services/chat-message-handlers/handlers/set-model.handler.d.ts.map +0 -1
  958. package/dist/src/backend/services/chat-message-handlers/handlers/set-model.handler.js +0 -29
  959. package/dist/src/backend/services/chat-message-handlers/handlers/set-model.handler.js.map +0 -1
  960. package/dist/src/backend/services/chat-message-handlers/handlers/set-thinking-budget.handler.d.ts +0 -4
  961. package/dist/src/backend/services/chat-message-handlers/handlers/set-thinking-budget.handler.d.ts.map +0 -1
  962. package/dist/src/backend/services/chat-message-handlers/handlers/set-thinking-budget.handler.js +0 -32
  963. package/dist/src/backend/services/chat-message-handlers/handlers/set-thinking-budget.handler.js.map +0 -1
  964. package/dist/src/backend/services/chat-message-handlers/handlers/start.handler.d.ts +0 -4
  965. package/dist/src/backend/services/chat-message-handlers/handlers/start.handler.d.ts.map +0 -1
  966. package/dist/src/backend/services/chat-message-handlers/handlers/start.handler.js +0 -29
  967. package/dist/src/backend/services/chat-message-handlers/handlers/start.handler.js.map +0 -1
  968. package/dist/src/backend/services/chat-message-handlers/handlers/stop.handler.d.ts +0 -4
  969. package/dist/src/backend/services/chat-message-handlers/handlers/stop.handler.d.ts.map +0 -1
  970. package/dist/src/backend/services/chat-message-handlers/handlers/stop.handler.js +0 -15
  971. package/dist/src/backend/services/chat-message-handlers/handlers/stop.handler.js.map +0 -1
  972. package/dist/src/backend/services/chat-message-handlers/handlers/user-input.handler.d.ts +0 -4
  973. package/dist/src/backend/services/chat-message-handlers/handlers/user-input.handler.d.ts.map +0 -1
  974. package/dist/src/backend/services/chat-message-handlers/handlers/user-input.handler.js +0 -27
  975. package/dist/src/backend/services/chat-message-handlers/handlers/user-input.handler.js.map +0 -1
  976. package/dist/src/backend/services/chat-message-handlers/interactive-response.d.ts.map +0 -1
  977. package/dist/src/backend/services/chat-message-handlers/interactive-response.js +0 -91
  978. package/dist/src/backend/services/chat-message-handlers/interactive-response.js.map +0 -1
  979. package/dist/src/backend/services/chat-message-handlers/interactive-response.test.d.ts.map +0 -1
  980. package/dist/src/backend/services/chat-message-handlers/interactive-response.test.js +0 -83
  981. package/dist/src/backend/services/chat-message-handlers/interactive-response.test.js.map +0 -1
  982. package/dist/src/backend/services/chat-message-handlers/registry.d.ts +0 -9
  983. package/dist/src/backend/services/chat-message-handlers/registry.d.ts.map +0 -1
  984. package/dist/src/backend/services/chat-message-handlers/registry.js +0 -29
  985. package/dist/src/backend/services/chat-message-handlers/registry.js.map +0 -1
  986. package/dist/src/backend/services/chat-message-handlers/types.d.ts +0 -22
  987. package/dist/src/backend/services/chat-message-handlers/types.d.ts.map +0 -1
  988. package/dist/src/backend/services/chat-message-handlers/types.js.map +0 -1
  989. package/dist/src/backend/services/chat-message-handlers/utils.d.ts +0 -5
  990. package/dist/src/backend/services/chat-message-handlers/utils.d.ts.map +0 -1
  991. package/dist/src/backend/services/chat-message-handlers/utils.js.map +0 -1
  992. package/dist/src/backend/services/chat-message-handlers.service.d.ts +0 -21
  993. package/dist/src/backend/services/chat-message-handlers.service.d.ts.map +0 -1
  994. package/dist/src/backend/services/chat-message-handlers.service.js +0 -188
  995. package/dist/src/backend/services/chat-message-handlers.service.js.map +0 -1
  996. package/dist/src/backend/services/ci-fixer.service.d.ts +0 -42
  997. package/dist/src/backend/services/ci-fixer.service.d.ts.map +0 -1
  998. package/dist/src/backend/services/ci-fixer.service.js +0 -117
  999. package/dist/src/backend/services/ci-fixer.service.js.map +0 -1
  1000. package/dist/src/backend/services/ci-fixer.service.test.d.ts.map +0 -1
  1001. package/dist/src/backend/services/ci-fixer.service.test.js +0 -101
  1002. package/dist/src/backend/services/ci-fixer.service.test.js.map +0 -1
  1003. package/dist/src/backend/services/ci-monitor.service.d.ts +0 -23
  1004. package/dist/src/backend/services/ci-monitor.service.d.ts.map +0 -1
  1005. package/dist/src/backend/services/ci-monitor.service.js +0 -247
  1006. package/dist/src/backend/services/ci-monitor.service.js.map +0 -1
  1007. package/dist/src/backend/services/fixer-session.service.d.ts +0 -49
  1008. package/dist/src/backend/services/fixer-session.service.d.ts.map +0 -1
  1009. package/dist/src/backend/services/fixer-session.service.js +0 -200
  1010. package/dist/src/backend/services/fixer-session.service.js.map +0 -1
  1011. package/dist/src/backend/services/fixer-session.service.test.d.ts.map +0 -1
  1012. package/dist/src/backend/services/fixer-session.service.test.js +0 -191
  1013. package/dist/src/backend/services/fixer-session.service.test.js.map +0 -1
  1014. package/dist/src/backend/services/github-cli.service.d.ts +0 -112
  1015. package/dist/src/backend/services/github-cli.service.d.ts.map +0 -1
  1016. package/dist/src/backend/services/github-cli.service.js +0 -681
  1017. package/dist/src/backend/services/github-cli.service.js.map +0 -1
  1018. package/dist/src/backend/services/github-cli.service.test.d.ts.map +0 -1
  1019. package/dist/src/backend/services/github-cli.service.test.js +0 -428
  1020. package/dist/src/backend/services/github-cli.service.test.js.map +0 -1
  1021. package/dist/src/backend/services/kanban-state.service.d.ts +0 -22
  1022. package/dist/src/backend/services/kanban-state.service.d.ts.map +0 -1
  1023. package/dist/src/backend/services/kanban-state.service.js +0 -95
  1024. package/dist/src/backend/services/kanban-state.service.js.map +0 -1
  1025. package/dist/src/backend/services/kanban-state.service.test.d.ts +0 -2
  1026. package/dist/src/backend/services/kanban-state.service.test.d.ts.map +0 -1
  1027. package/dist/src/backend/services/kanban-state.service.test.js +0 -217
  1028. package/dist/src/backend/services/kanban-state.service.test.js.map +0 -1
  1029. package/dist/src/backend/services/pr-review-fixer.service.d.ts +0 -56
  1030. package/dist/src/backend/services/pr-review-fixer.service.d.ts.map +0 -1
  1031. package/dist/src/backend/services/pr-review-fixer.service.js +0 -156
  1032. package/dist/src/backend/services/pr-review-fixer.service.js.map +0 -1
  1033. package/dist/src/backend/services/pr-review-monitor.service.d.ts +0 -18
  1034. package/dist/src/backend/services/pr-review-monitor.service.d.ts.map +0 -1
  1035. package/dist/src/backend/services/pr-review-monitor.service.js +0 -207
  1036. package/dist/src/backend/services/pr-review-monitor.service.js.map +0 -1
  1037. package/dist/src/backend/services/pr-snapshot.service.d.ts +0 -33
  1038. package/dist/src/backend/services/pr-snapshot.service.d.ts.map +0 -1
  1039. package/dist/src/backend/services/pr-snapshot.service.js +0 -107
  1040. package/dist/src/backend/services/pr-snapshot.service.js.map +0 -1
  1041. package/dist/src/backend/services/pr-snapshot.service.test.d.ts.map +0 -1
  1042. package/dist/src/backend/services/pr-snapshot.service.test.js +0 -149
  1043. package/dist/src/backend/services/pr-snapshot.service.test.js.map +0 -1
  1044. package/dist/src/backend/services/ratchet.service.d.ts +0 -73
  1045. package/dist/src/backend/services/ratchet.service.d.ts.map +0 -1
  1046. package/dist/src/backend/services/ratchet.service.js +0 -623
  1047. package/dist/src/backend/services/ratchet.service.js.map +0 -1
  1048. package/dist/src/backend/services/ratchet.service.test.d.ts.map +0 -1
  1049. package/dist/src/backend/services/ratchet.service.test.js +0 -488
  1050. package/dist/src/backend/services/ratchet.service.test.js.map +0 -1
  1051. package/dist/src/backend/services/reconciliation.service.d.ts +0 -14
  1052. package/dist/src/backend/services/reconciliation.service.d.ts.map +0 -1
  1053. package/dist/src/backend/services/reconciliation.service.js +0 -127
  1054. package/dist/src/backend/services/reconciliation.service.js.map +0 -1
  1055. package/dist/src/backend/services/reconciliation.service.test.d.ts.map +0 -1
  1056. package/dist/src/backend/services/reconciliation.service.test.js +0 -235
  1057. package/dist/src/backend/services/reconciliation.service.test.js.map +0 -1
  1058. package/dist/src/backend/services/run-script-state-machine.service.d.ts +0 -27
  1059. package/dist/src/backend/services/run-script-state-machine.service.d.ts.map +0 -1
  1060. package/dist/src/backend/services/run-script-state-machine.service.js +0 -149
  1061. package/dist/src/backend/services/run-script-state-machine.service.js.map +0 -1
  1062. package/dist/src/backend/services/run-script-state-machine.service.test.d.ts.map +0 -1
  1063. package/dist/src/backend/services/run-script-state-machine.service.test.js +0 -453
  1064. package/dist/src/backend/services/run-script-state-machine.service.test.js.map +0 -1
  1065. package/dist/src/backend/services/run-script.service.d.ts +0 -28
  1066. package/dist/src/backend/services/run-script.service.d.ts.map +0 -1
  1067. package/dist/src/backend/services/run-script.service.js +0 -430
  1068. package/dist/src/backend/services/run-script.service.js.map +0 -1
  1069. package/dist/src/backend/services/session-file-logger.service.d.ts.map +0 -1
  1070. package/dist/src/backend/services/session-file-logger.service.js +0 -238
  1071. package/dist/src/backend/services/session-file-logger.service.js.map +0 -1
  1072. package/dist/src/backend/services/session-file-logger.service.test.d.ts.map +0 -1
  1073. package/dist/src/backend/services/session-file-logger.service.test.js +0 -476
  1074. package/dist/src/backend/services/session-file-logger.service.test.js.map +0 -1
  1075. package/dist/src/backend/services/session-store.service.d.ts +0 -73
  1076. package/dist/src/backend/services/session-store.service.d.ts.map +0 -1
  1077. package/dist/src/backend/services/session-store.service.js +0 -732
  1078. package/dist/src/backend/services/session-store.service.js.map +0 -1
  1079. package/dist/src/backend/services/session-store.service.test.d.ts +0 -2
  1080. package/dist/src/backend/services/session-store.service.test.d.ts.map +0 -1
  1081. package/dist/src/backend/services/session-store.service.test.js +0 -738
  1082. package/dist/src/backend/services/session-store.service.test.js.map +0 -1
  1083. package/dist/src/backend/services/session.process-manager.d.ts +0 -48
  1084. package/dist/src/backend/services/session.process-manager.d.ts.map +0 -1
  1085. package/dist/src/backend/services/session.process-manager.js +0 -208
  1086. package/dist/src/backend/services/session.process-manager.js.map +0 -1
  1087. package/dist/src/backend/services/session.process-manager.test.d.ts.map +0 -1
  1088. package/dist/src/backend/services/session.process-manager.test.js +0 -55
  1089. package/dist/src/backend/services/session.process-manager.test.js.map +0 -1
  1090. package/dist/src/backend/services/session.prompt-builder.d.ts.map +0 -1
  1091. package/dist/src/backend/services/session.prompt-builder.js +0 -29
  1092. package/dist/src/backend/services/session.prompt-builder.js.map +0 -1
  1093. package/dist/src/backend/services/session.prompt-builder.test.d.ts.map +0 -1
  1094. package/dist/src/backend/services/session.prompt-builder.test.js +0 -171
  1095. package/dist/src/backend/services/session.prompt-builder.test.js.map +0 -1
  1096. package/dist/src/backend/services/session.repository.d.ts +0 -33
  1097. package/dist/src/backend/services/session.repository.d.ts.map +0 -1
  1098. package/dist/src/backend/services/session.repository.js +0 -51
  1099. package/dist/src/backend/services/session.repository.js.map +0 -1
  1100. package/dist/src/backend/services/session.repository.test.d.ts.map +0 -1
  1101. package/dist/src/backend/services/session.repository.test.js +0 -60
  1102. package/dist/src/backend/services/session.repository.test.js.map +0 -1
  1103. package/dist/src/backend/services/session.service.d.ts +0 -58
  1104. package/dist/src/backend/services/session.service.d.ts.map +0 -1
  1105. package/dist/src/backend/services/session.service.js +0 -283
  1106. package/dist/src/backend/services/session.service.js.map +0 -1
  1107. package/dist/src/backend/services/session.service.test.d.ts.map +0 -1
  1108. package/dist/src/backend/services/session.service.test.js +0 -427
  1109. package/dist/src/backend/services/session.service.test.js.map +0 -1
  1110. package/dist/src/backend/services/startup-script.service.d.ts +0 -27
  1111. package/dist/src/backend/services/startup-script.service.d.ts.map +0 -1
  1112. package/dist/src/backend/services/startup-script.service.js +0 -227
  1113. package/dist/src/backend/services/startup-script.service.js.map +0 -1
  1114. package/dist/src/backend/services/terminal.service.d.ts +0 -73
  1115. package/dist/src/backend/services/terminal.service.d.ts.map +0 -1
  1116. package/dist/src/backend/services/terminal.service.js +0 -303
  1117. package/dist/src/backend/services/terminal.service.js.map +0 -1
  1118. package/dist/src/backend/services/workspace-activity.service.d.ts +0 -13
  1119. package/dist/src/backend/services/workspace-activity.service.d.ts.map +0 -1
  1120. package/dist/src/backend/services/workspace-activity.service.js +0 -75
  1121. package/dist/src/backend/services/workspace-activity.service.js.map +0 -1
  1122. package/dist/src/backend/services/workspace-activity.service.test.d.ts +0 -2
  1123. package/dist/src/backend/services/workspace-activity.service.test.d.ts.map +0 -1
  1124. package/dist/src/backend/services/workspace-activity.service.test.js +0 -32
  1125. package/dist/src/backend/services/workspace-activity.service.test.js.map +0 -1
  1126. package/dist/src/backend/services/workspace-creation.service.d.ts +0 -47
  1127. package/dist/src/backend/services/workspace-creation.service.d.ts.map +0 -1
  1128. package/dist/src/backend/services/workspace-creation.service.js +0 -150
  1129. package/dist/src/backend/services/workspace-creation.service.js.map +0 -1
  1130. package/dist/src/backend/services/workspace-creation.service.test.d.ts +0 -2
  1131. package/dist/src/backend/services/workspace-creation.service.test.d.ts.map +0 -1
  1132. package/dist/src/backend/services/workspace-creation.service.test.js +0 -320
  1133. package/dist/src/backend/services/workspace-creation.service.test.js.map +0 -1
  1134. package/dist/src/backend/services/workspace-flow-state.service.d.ts +0 -22
  1135. package/dist/src/backend/services/workspace-flow-state.service.d.ts.map +0 -1
  1136. package/dist/src/backend/services/workspace-flow-state.service.js +0 -108
  1137. package/dist/src/backend/services/workspace-flow-state.service.js.map +0 -1
  1138. package/dist/src/backend/services/workspace-flow-state.service.test.d.ts +0 -2
  1139. package/dist/src/backend/services/workspace-flow-state.service.test.d.ts.map +0 -1
  1140. package/dist/src/backend/services/workspace-flow-state.service.test.js +0 -120
  1141. package/dist/src/backend/services/workspace-flow-state.service.test.js.map +0 -1
  1142. package/dist/src/backend/services/workspace-query.service.d.ts +0 -151
  1143. package/dist/src/backend/services/workspace-query.service.d.ts.map +0 -1
  1144. package/dist/src/backend/services/workspace-query.service.js +0 -277
  1145. package/dist/src/backend/services/workspace-query.service.js.map +0 -1
  1146. package/dist/src/backend/services/workspace-state-machine.service.d.ts +0 -27
  1147. package/dist/src/backend/services/workspace-state-machine.service.d.ts.map +0 -1
  1148. package/dist/src/backend/services/workspace-state-machine.service.js +0 -168
  1149. package/dist/src/backend/services/workspace-state-machine.service.js.map +0 -1
  1150. package/dist/src/backend/services/workspace-state-machine.service.test.d.ts +0 -2
  1151. package/dist/src/backend/services/workspace-state-machine.service.test.d.ts.map +0 -1
  1152. package/dist/src/backend/services/workspace-state-machine.service.test.js +0 -376
  1153. package/dist/src/backend/services/workspace-state-machine.service.test.js.map +0 -1
  1154. package/dist/src/backend/services/worktree-lifecycle-init.test.d.ts +0 -2
  1155. package/dist/src/backend/services/worktree-lifecycle-init.test.d.ts.map +0 -1
  1156. package/dist/src/backend/services/worktree-lifecycle-init.test.js +0 -184
  1157. package/dist/src/backend/services/worktree-lifecycle-init.test.js.map +0 -1
  1158. package/dist/src/backend/services/worktree-lifecycle.service.d.ts +0 -69
  1159. package/dist/src/backend/services/worktree-lifecycle.service.d.ts.map +0 -1
  1160. package/dist/src/backend/services/worktree-lifecycle.service.js +0 -635
  1161. package/dist/src/backend/services/worktree-lifecycle.service.js.map +0 -1
  1162. package/dist/src/backend/services/worktree-lifecycle.service.test.d.ts.map +0 -1
  1163. package/dist/src/backend/services/worktree-lifecycle.service.test.js +0 -83
  1164. package/dist/src/backend/services/worktree-lifecycle.service.test.js.map +0 -1
  1165. package/prompts/workflows/ratchet.md +0 -73
  1166. /package/dist/src/backend/{services → domains/github}/github-cli.service.test.d.ts +0 -0
  1167. /package/dist/src/backend/{services → domains/github}/pr-snapshot.service.test.d.ts +0 -0
  1168. /package/dist/src/backend/{services → domains/ratchet}/ci-fixer.service.test.d.ts +0 -0
  1169. /package/dist/src/backend/{services → domains/ratchet}/fixer-session.service.test.d.ts +0 -0
  1170. /package/dist/src/backend/{services → domains/ratchet}/ratchet.service.test.d.ts +0 -0
  1171. /package/dist/src/backend/{services → domains/ratchet}/reconciliation.service.test.d.ts +0 -0
  1172. /package/dist/src/backend/{services → domains/run-script}/run-script-state-machine.service.test.d.ts +0 -0
  1173. /package/dist/src/backend/{services → domains/session/chat}/chat-event-forwarder.service.test.d.ts +0 -0
  1174. /package/dist/src/backend/{services → domains/session/chat}/chat-message-handlers/attachment-processing.test.d.ts +0 -0
  1175. /package/dist/src/backend/{services → domains/session/chat}/chat-message-handlers/attachment-processing.test.js +0 -0
  1176. /package/dist/src/backend/{services → domains/session/chat}/chat-message-handlers/attachment-utils.js +0 -0
  1177. /package/dist/src/backend/{services → domains/session/chat}/chat-message-handlers/attachment-utils.test.d.ts +0 -0
  1178. /package/dist/src/backend/{services → domains/session/chat}/chat-message-handlers/attachment-utils.test.js +0 -0
  1179. /package/dist/src/backend/{services → domains/session/chat}/chat-message-handlers/constants.d.ts +0 -0
  1180. /package/dist/src/backend/{services → domains/session/chat}/chat-message-handlers/handlers/list-sessions.handler.js +0 -0
  1181. /package/dist/src/backend/{services → domains/session/chat}/chat-message-handlers/interactive-response.d.ts +0 -0
  1182. /package/dist/src/backend/{services → domains/session/chat}/chat-message-handlers/interactive-response.test.d.ts +0 -0
  1183. /package/dist/src/backend/{services → domains/session/chat}/chat-message-handlers/types.js +0 -0
  1184. /package/dist/src/backend/{services → domains/session/chat}/chat-message-handlers/utils.js +0 -0
  1185. /package/dist/src/backend/{claude → domains/session/claude}/monitoring.d.ts +0 -0
  1186. /package/dist/src/backend/{claude → domains/session/claude}/permission-coordinator.d.ts +0 -0
  1187. /package/dist/src/backend/{claude → domains/session/claude}/permission-coordinator.test.d.ts +0 -0
  1188. /package/dist/src/backend/{claude → domains/session/claude}/permission-coordinator.test.js +0 -0
  1189. /package/dist/src/backend/{claude → domains/session/claude}/permissions.js +0 -0
  1190. /package/dist/src/backend/{claude → domains/session/claude}/permissions.test.d.ts +0 -0
  1191. /package/dist/src/backend/{claude → domains/session/claude}/permissions.test.js +0 -0
  1192. /package/dist/src/backend/{claude → domains/session/claude}/process.test.d.ts +0 -0
  1193. /package/dist/src/backend/{claude → domains/session/claude}/protocol-io.d.ts +0 -0
  1194. /package/dist/src/backend/{claude → domains/session/claude}/protocol-io.js +0 -0
  1195. /package/dist/src/backend/{claude → domains/session/claude}/protocol.d.ts +0 -0
  1196. /package/dist/src/backend/{claude → domains/session/claude}/protocol.test.d.ts +0 -0
  1197. /package/dist/src/backend/{claude → domains/session/claude}/protocol.test.js +0 -0
  1198. /package/dist/src/backend/{claude → domains/session/claude}/session.test.d.ts +0 -0
  1199. /package/dist/src/backend/{claude → domains/session/claude}/session.test.js +0 -0
  1200. /package/dist/src/backend/{claude → domains/session/claude}/types/process-types.d.ts +0 -0
  1201. /package/dist/src/backend/{claude → domains/session/claude}/types/process-types.js +0 -0
  1202. /package/dist/src/backend/{claude → domains/session/claude}/types.js +0 -0
  1203. /package/dist/src/backend/{claude → domains/session/claude}/types.test.d.ts +0 -0
  1204. /package/dist/src/backend/{claude → domains/session/claude}/types.test.js +0 -0
  1205. /package/dist/src/backend/{services → domains/session/lifecycle}/session.process-manager.test.d.ts +0 -0
  1206. /package/dist/src/backend/{services → domains/session/lifecycle}/session.prompt-builder.d.ts +0 -0
  1207. /package/dist/src/backend/{services → domains/session/lifecycle}/session.prompt-builder.test.d.ts +0 -0
  1208. /package/dist/src/backend/{services → domains/session/lifecycle}/session.repository.test.d.ts +0 -0
  1209. /package/dist/src/backend/{services → domains/session/lifecycle}/session.service.test.d.ts +0 -0
  1210. /package/dist/src/backend/{services → domains/session/logging}/session-file-logger.service.d.ts +0 -0
  1211. /package/dist/src/backend/{services → domains/session/logging}/session-file-logger.service.test.d.ts +0 -0
  1212. /package/dist/src/backend/{services → domains/workspace/worktree}/worktree-lifecycle.service.test.d.ts +0 -0
@@ -0,0 +1,873 @@
1
+ import { CIStatus, RatchetState, SessionStatus } from '../../../../prisma/generated/client.js';
2
+ import { beforeEach, describe, expect, it, vi } from 'vitest';
3
+ import { unsafeCoerce } from '../../../test-utils/unsafe-coerce.js';
4
+ vi.mock('@/backend/resource_accessors/workspace.accessor', () => ({
5
+ workspaceAccessor: {
6
+ findWithPRsForRatchet: vi.fn(),
7
+ findForRatchetById: vi.fn(),
8
+ update: vi.fn(),
9
+ },
10
+ }));
11
+ vi.mock('@/backend/resource_accessors/claude-session.accessor', () => ({
12
+ claudeSessionAccessor: {
13
+ findById: vi.fn(),
14
+ findByWorkspaceId: vi.fn(),
15
+ },
16
+ }));
17
+ vi.mock('./fixer-session.service', () => ({
18
+ fixerSessionService: {
19
+ acquireAndDispatch: vi.fn(),
20
+ },
21
+ }));
22
+ vi.mock('@/backend/services/logger.service', () => ({
23
+ createLogger: () => ({
24
+ debug: vi.fn(),
25
+ info: vi.fn(),
26
+ warn: vi.fn(),
27
+ error: vi.fn(),
28
+ }),
29
+ }));
30
+ import { claudeSessionAccessor } from '../../../backend/resource_accessors/claude-session.accessor.js';
31
+ import { workspaceAccessor } from '../../../backend/resource_accessors/workspace.accessor.js';
32
+ import { fixerSessionService } from './fixer-session.service.js';
33
+ import { ratchetService } from './ratchet.service.js';
34
+ const mockSessionBridge = {
35
+ isSessionRunning: vi.fn(),
36
+ isSessionWorking: vi.fn(),
37
+ stopClaudeSession: vi.fn(),
38
+ startClaudeSession: vi.fn(),
39
+ getClient: vi.fn(),
40
+ injectCommittedUserMessage: vi.fn(),
41
+ };
42
+ const mockGitHubBridge = {
43
+ extractPRInfo: vi.fn(),
44
+ getPRFullDetails: vi.fn(),
45
+ getReviewComments: vi.fn(),
46
+ computeCIStatus: vi.fn(),
47
+ getAuthenticatedUsername: vi.fn(),
48
+ fetchAndComputePRState: vi.fn(),
49
+ };
50
+ describe('ratchet service (state-change + idle dispatch)', () => {
51
+ beforeEach(() => {
52
+ vi.clearAllMocks();
53
+ unsafeCoerce(ratchetService).isShuttingDown = false;
54
+ ratchetService.configure({ session: mockSessionBridge, github: mockGitHubBridge });
55
+ vi.mocked(mockGitHubBridge.getAuthenticatedUsername).mockResolvedValue(null);
56
+ vi.mocked(mockSessionBridge.isSessionWorking).mockReturnValue(false);
57
+ });
58
+ it('checks workspaces and processes each', async () => {
59
+ vi.mocked(workspaceAccessor.findWithPRsForRatchet).mockResolvedValue([
60
+ {
61
+ id: 'ws-1',
62
+ prUrl: 'https://github.com/example/repo/pull/1',
63
+ prNumber: 1,
64
+ prState: 'OPEN',
65
+ prCiStatus: CIStatus.UNKNOWN,
66
+ ratchetEnabled: true,
67
+ ratchetState: RatchetState.IDLE,
68
+ ratchetActiveSessionId: null,
69
+ ratchetLastCiRunId: null,
70
+ prReviewLastCheckedAt: null,
71
+ },
72
+ ]);
73
+ vi.spyOn(unsafeCoerce(ratchetService), 'processWorkspace').mockResolvedValue({
74
+ workspaceId: 'ws-1',
75
+ previousState: RatchetState.IDLE,
76
+ newState: RatchetState.IDLE,
77
+ action: { type: 'WAITING', reason: 'noop' },
78
+ });
79
+ const result = await ratchetService.checkAllWorkspaces();
80
+ expect(result.checked).toBe(1);
81
+ });
82
+ it('does not dispatch when workspace ratcheting is disabled', async () => {
83
+ const workspace = {
84
+ id: 'ws-disabled',
85
+ prUrl: 'https://github.com/example/repo/pull/2',
86
+ prNumber: 2,
87
+ prState: 'OPEN',
88
+ prCiStatus: CIStatus.UNKNOWN,
89
+ ratchetEnabled: false,
90
+ ratchetState: RatchetState.IDLE,
91
+ ratchetActiveSessionId: null,
92
+ ratchetLastCiRunId: null,
93
+ prReviewLastCheckedAt: null,
94
+ };
95
+ const fetchPRStateSpy = vi.spyOn(unsafeCoerce(ratchetService), 'fetchPRState');
96
+ vi.mocked(workspaceAccessor.update).mockResolvedValue({});
97
+ const triggerSpy = vi.spyOn(unsafeCoerce(ratchetService), 'triggerFixer');
98
+ const result = await unsafeCoerce(ratchetService).processWorkspace(workspace);
99
+ expect(fetchPRStateSpy).not.toHaveBeenCalled();
100
+ expect(triggerSpy).not.toHaveBeenCalled();
101
+ expect(result).toMatchObject({
102
+ action: { type: 'DISABLED', reason: 'Workspace ratcheting disabled' },
103
+ newState: RatchetState.IDLE,
104
+ });
105
+ });
106
+ it('does not dispatch when workspace is not idle', async () => {
107
+ const workspace = {
108
+ id: 'ws-busy',
109
+ prUrl: 'https://github.com/example/repo/pull/3',
110
+ prNumber: 3,
111
+ prState: 'OPEN',
112
+ prCiStatus: CIStatus.UNKNOWN,
113
+ ratchetEnabled: true,
114
+ ratchetState: RatchetState.IDLE,
115
+ ratchetActiveSessionId: null,
116
+ ratchetLastCiRunId: null,
117
+ prReviewLastCheckedAt: new Date('2026-01-01T00:00:00Z'),
118
+ };
119
+ vi.spyOn(unsafeCoerce(ratchetService), 'fetchPRState').mockResolvedValue({
120
+ ciStatus: CIStatus.SUCCESS,
121
+ snapshotKey: '2026-01-02T00:00:00Z',
122
+ hasChangesRequested: false,
123
+ latestReviewActivityAtMs: new Date('2026-01-02T00:00:00Z').getTime(),
124
+ statusCheckRollup: null,
125
+ prState: 'OPEN',
126
+ prNumber: 3,
127
+ });
128
+ vi.mocked(workspaceAccessor.update).mockResolvedValue({});
129
+ vi.mocked(claudeSessionAccessor.findByWorkspaceId).mockResolvedValue([
130
+ {
131
+ id: 'chat-1',
132
+ workflow: 'default-followup',
133
+ status: 'RUNNING',
134
+ },
135
+ ]);
136
+ vi.mocked(mockSessionBridge.isSessionWorking).mockReturnValue(true);
137
+ const result = await unsafeCoerce(ratchetService).processWorkspace(workspace);
138
+ expect(result).toMatchObject({
139
+ action: {
140
+ type: 'WAITING',
141
+ reason: 'Workspace is not idle (active session)',
142
+ },
143
+ });
144
+ });
145
+ it('dispatches when PR state changed since last ratchet', async () => {
146
+ const workspace = {
147
+ id: 'ws-change',
148
+ prUrl: 'https://github.com/example/repo/pull/4',
149
+ prNumber: 4,
150
+ prState: 'OPEN',
151
+ prCiStatus: CIStatus.UNKNOWN,
152
+ ratchetEnabled: true,
153
+ ratchetState: RatchetState.IDLE,
154
+ ratchetActiveSessionId: null,
155
+ ratchetLastCiRunId: '2026-01-01T00:00:00Z',
156
+ prReviewLastCheckedAt: new Date('2026-01-01T00:00:00Z'),
157
+ };
158
+ vi.spyOn(unsafeCoerce(ratchetService), 'fetchPRState').mockResolvedValue({
159
+ ciStatus: CIStatus.FAILURE,
160
+ snapshotKey: '2026-01-02T00:00:00Z',
161
+ hasChangesRequested: false,
162
+ latestReviewActivityAtMs: null,
163
+ statusCheckRollup: null,
164
+ prState: 'OPEN',
165
+ prNumber: 4,
166
+ });
167
+ vi.mocked(workspaceAccessor.update).mockResolvedValue({});
168
+ vi.mocked(claudeSessionAccessor.findByWorkspaceId).mockResolvedValue([]);
169
+ vi.mocked(fixerSessionService.acquireAndDispatch).mockResolvedValue({
170
+ status: 'started',
171
+ sessionId: 'ratchet-session',
172
+ promptSent: true,
173
+ });
174
+ const result = await unsafeCoerce(ratchetService).processWorkspace(workspace);
175
+ expect(result).toMatchObject({
176
+ action: { type: 'TRIGGERED_FIXER' },
177
+ });
178
+ const finalUpdatePayload = vi.mocked(workspaceAccessor.update).mock.calls.at(-1)?.[1];
179
+ expect(finalUpdatePayload.ratchetLastCiRunId).toBe('2026-01-02T00:00:00Z');
180
+ expect(finalUpdatePayload).toHaveProperty('prReviewLastCheckedAt');
181
+ });
182
+ it('does dispatch when session is running but idle', async () => {
183
+ const workspace = {
184
+ id: 'ws-idle-session',
185
+ prUrl: 'https://github.com/example/repo/pull/44',
186
+ prNumber: 44,
187
+ prState: 'OPEN',
188
+ prCiStatus: CIStatus.UNKNOWN,
189
+ ratchetEnabled: true,
190
+ ratchetState: RatchetState.IDLE,
191
+ ratchetActiveSessionId: null,
192
+ ratchetLastCiRunId: '2026-01-01T00:00:00Z',
193
+ prReviewLastCheckedAt: new Date('2026-01-01T00:00:00Z'),
194
+ };
195
+ vi.spyOn(unsafeCoerce(ratchetService), 'fetchPRState').mockResolvedValue({
196
+ ciStatus: CIStatus.FAILURE,
197
+ snapshotKey: '2026-01-02T00:00:00Z',
198
+ hasChangesRequested: false,
199
+ latestReviewActivityAtMs: null,
200
+ statusCheckRollup: null,
201
+ prState: 'OPEN',
202
+ prNumber: 44,
203
+ });
204
+ vi.mocked(workspaceAccessor.update).mockResolvedValue({});
205
+ vi.mocked(claudeSessionAccessor.findByWorkspaceId).mockResolvedValue([
206
+ {
207
+ id: 'chat-idle-1',
208
+ workflow: 'default-followup',
209
+ status: 'RUNNING',
210
+ },
211
+ ]);
212
+ vi.mocked(mockSessionBridge.isSessionWorking).mockReturnValue(false);
213
+ vi.mocked(fixerSessionService.acquireAndDispatch).mockResolvedValue({
214
+ status: 'started',
215
+ sessionId: 'ratchet-session-idle-ok',
216
+ promptSent: true,
217
+ });
218
+ const result = await unsafeCoerce(ratchetService).processWorkspace(workspace);
219
+ expect(result).toMatchObject({
220
+ action: { type: 'TRIGGERED_FIXER', sessionId: 'ratchet-session-idle-ok' },
221
+ });
222
+ });
223
+ it('does not dispatch when PR state unchanged since last dispatch', async () => {
224
+ const workspace = {
225
+ id: 'ws-unchanged',
226
+ prUrl: 'https://github.com/example/repo/pull/5',
227
+ prNumber: 5,
228
+ prState: 'OPEN',
229
+ prCiStatus: CIStatus.UNKNOWN,
230
+ ratchetEnabled: true,
231
+ ratchetState: RatchetState.READY,
232
+ ratchetActiveSessionId: null,
233
+ ratchetLastCiRunId: '2026-01-02T00:00:00Z',
234
+ prReviewLastCheckedAt: new Date('2026-01-02T00:00:00Z'),
235
+ };
236
+ vi.spyOn(unsafeCoerce(ratchetService), 'fetchPRState').mockResolvedValue({
237
+ ciStatus: CIStatus.FAILURE,
238
+ snapshotKey: '2026-01-02T00:00:00Z',
239
+ hasChangesRequested: false,
240
+ latestReviewActivityAtMs: null,
241
+ statusCheckRollup: null,
242
+ prState: 'OPEN',
243
+ prNumber: 5,
244
+ });
245
+ vi.mocked(workspaceAccessor.update).mockResolvedValue({});
246
+ vi.mocked(claudeSessionAccessor.findByWorkspaceId).mockResolvedValue([]);
247
+ const result = await unsafeCoerce(ratchetService).processWorkspace(workspace);
248
+ expect(result).toMatchObject({
249
+ action: {
250
+ type: 'WAITING',
251
+ reason: 'PR state unchanged since last ratchet dispatch',
252
+ },
253
+ });
254
+ expect(claudeSessionAccessor.findByWorkspaceId).not.toHaveBeenCalled();
255
+ });
256
+ it('does not dispatch repeatedly for unchanged CHANGES_REQUESTED state', async () => {
257
+ const workspace = {
258
+ id: 'ws-review-unchanged',
259
+ prUrl: 'https://github.com/example/repo/pull/55',
260
+ prNumber: 55,
261
+ prState: 'OPEN',
262
+ prCiStatus: CIStatus.UNKNOWN,
263
+ ratchetEnabled: true,
264
+ ratchetState: RatchetState.REVIEW_PENDING,
265
+ ratchetActiveSessionId: null,
266
+ ratchetLastCiRunId: 'ci:SUCCESS|changes-requested:1735776000000',
267
+ prReviewLastCheckedAt: new Date('2026-01-02T00:00:00Z'),
268
+ };
269
+ vi.spyOn(unsafeCoerce(ratchetService), 'fetchPRState').mockResolvedValue({
270
+ ciStatus: CIStatus.SUCCESS,
271
+ snapshotKey: 'ci:SUCCESS|changes-requested:1735776000000',
272
+ hasChangesRequested: true,
273
+ latestReviewActivityAtMs: new Date('2026-01-02T00:00:00Z').getTime(),
274
+ statusCheckRollup: null,
275
+ prState: 'OPEN',
276
+ prNumber: 55,
277
+ });
278
+ vi.mocked(workspaceAccessor.update).mockResolvedValue({});
279
+ vi.mocked(claudeSessionAccessor.findByWorkspaceId).mockResolvedValue([]);
280
+ const triggerSpy = vi.spyOn(unsafeCoerce(ratchetService), 'triggerFixer');
281
+ const result = await unsafeCoerce(ratchetService).processWorkspace(workspace);
282
+ expect(triggerSpy).not.toHaveBeenCalled();
283
+ expect(result).toMatchObject({
284
+ action: {
285
+ type: 'WAITING',
286
+ reason: 'PR state unchanged since last ratchet dispatch',
287
+ },
288
+ });
289
+ expect(claudeSessionAccessor.findByWorkspaceId).not.toHaveBeenCalled();
290
+ });
291
+ it('treats closed PR as IDLE and does not dispatch', () => {
292
+ const state = unsafeCoerce(ratchetService).determineRatchetState({
293
+ ciStatus: CIStatus.SUCCESS,
294
+ snapshotKey: '2026-01-02T00:00:00Z',
295
+ hasChangesRequested: false,
296
+ latestReviewActivityAtMs: null,
297
+ prState: 'CLOSED',
298
+ prNumber: 6,
299
+ });
300
+ expect(state).toBe(RatchetState.IDLE);
301
+ });
302
+ it('handles prompt delivery failure by clearing active session and stopping runner', async () => {
303
+ const workspace = {
304
+ id: 'ws-prompt-fail',
305
+ prUrl: 'https://github.com/example/repo/pull/7',
306
+ prNumber: 7,
307
+ prState: 'OPEN',
308
+ prCiStatus: CIStatus.UNKNOWN,
309
+ ratchetEnabled: true,
310
+ ratchetState: RatchetState.IDLE,
311
+ ratchetActiveSessionId: null,
312
+ ratchetLastCiRunId: null,
313
+ prReviewLastCheckedAt: null,
314
+ };
315
+ vi.spyOn(unsafeCoerce(ratchetService), 'fetchPRState').mockResolvedValue({
316
+ ciStatus: CIStatus.SUCCESS,
317
+ snapshotKey: '2026-01-02T00:00:00Z',
318
+ hasChangesRequested: true,
319
+ latestReviewActivityAtMs: new Date('2026-01-02T00:00:00Z').getTime(),
320
+ statusCheckRollup: null,
321
+ prState: 'OPEN',
322
+ prNumber: 7,
323
+ });
324
+ vi.mocked(workspaceAccessor.update).mockResolvedValue({});
325
+ vi.mocked(claudeSessionAccessor.findByWorkspaceId).mockResolvedValue([]);
326
+ vi.mocked(fixerSessionService.acquireAndDispatch).mockResolvedValue({
327
+ status: 'started',
328
+ sessionId: 'ratchet-session',
329
+ promptSent: false,
330
+ });
331
+ vi.mocked(mockSessionBridge.isSessionRunning).mockReturnValue(true);
332
+ vi.mocked(mockSessionBridge.stopClaudeSession).mockResolvedValue();
333
+ const result = await unsafeCoerce(ratchetService).processWorkspace(workspace);
334
+ expect(result).toMatchObject({
335
+ action: { type: 'ERROR', error: 'Failed to deliver initial ratchet prompt' },
336
+ });
337
+ expect(workspaceAccessor.update).toHaveBeenCalledWith(workspace.id, {
338
+ ratchetActiveSessionId: null,
339
+ });
340
+ expect(mockSessionBridge.stopClaudeSession).toHaveBeenCalledWith('ratchet-session');
341
+ });
342
+ it('does not dispatch on a clean PR with no new review activity', async () => {
343
+ const workspace = {
344
+ id: 'ws-clean',
345
+ prUrl: 'https://github.com/example/repo/pull/8',
346
+ prNumber: 8,
347
+ prState: 'OPEN',
348
+ prCiStatus: CIStatus.UNKNOWN,
349
+ ratchetEnabled: true,
350
+ ratchetState: RatchetState.READY,
351
+ ratchetActiveSessionId: null,
352
+ ratchetLastCiRunId: '2026-01-01T00:00:00Z',
353
+ prReviewLastCheckedAt: new Date('2026-01-02T00:00:00Z'),
354
+ };
355
+ vi.spyOn(unsafeCoerce(ratchetService), 'fetchPRState').mockResolvedValue({
356
+ ciStatus: CIStatus.SUCCESS,
357
+ snapshotKey: '2026-01-03T00:00:00Z',
358
+ hasChangesRequested: false,
359
+ latestReviewActivityAtMs: new Date('2026-01-02T00:00:00Z').getTime(),
360
+ statusCheckRollup: null,
361
+ prState: 'OPEN',
362
+ prNumber: 8,
363
+ });
364
+ vi.mocked(workspaceAccessor.update).mockResolvedValue({});
365
+ vi.mocked(claudeSessionAccessor.findByWorkspaceId).mockResolvedValue([]);
366
+ const triggerSpy = vi.spyOn(unsafeCoerce(ratchetService), 'triggerFixer');
367
+ const result = await unsafeCoerce(ratchetService).processWorkspace(workspace);
368
+ expect(triggerSpy).not.toHaveBeenCalled();
369
+ expect(result).toMatchObject({
370
+ action: {
371
+ type: 'WAITING',
372
+ reason: 'PR is clean (green CI and no new review activity)',
373
+ },
374
+ });
375
+ });
376
+ it('clears active ratchet session immediately when runtime is not running', async () => {
377
+ const workspace = {
378
+ id: 'ws-stale-active',
379
+ prUrl: 'https://github.com/example/repo/pull/9',
380
+ prNumber: 9,
381
+ prState: 'OPEN',
382
+ prCiStatus: CIStatus.UNKNOWN,
383
+ ratchetEnabled: true,
384
+ ratchetState: RatchetState.CI_FAILED,
385
+ ratchetActiveSessionId: 'ratchet-session',
386
+ ratchetLastCiRunId: null,
387
+ prReviewLastCheckedAt: null,
388
+ };
389
+ vi.mocked(claudeSessionAccessor.findById).mockResolvedValue({
390
+ id: 'ratchet-session',
391
+ status: SessionStatus.RUNNING,
392
+ });
393
+ vi.mocked(mockSessionBridge.isSessionRunning).mockReturnValue(false);
394
+ vi.mocked(workspaceAccessor.update).mockResolvedValue({});
395
+ const action = await unsafeCoerce(ratchetService).getActiveRatchetSession(workspace);
396
+ expect(action).toBeNull();
397
+ expect(workspaceAccessor.update).toHaveBeenCalledWith(workspace.id, {
398
+ ratchetActiveSessionId: null,
399
+ });
400
+ });
401
+ it('stops and clears active ratchet session when runtime is idle', async () => {
402
+ const workspace = {
403
+ id: 'ws-idle-active',
404
+ prUrl: 'https://github.com/example/repo/pull/11',
405
+ prNumber: 11,
406
+ prState: 'OPEN',
407
+ prCiStatus: CIStatus.UNKNOWN,
408
+ ratchetEnabled: true,
409
+ ratchetState: RatchetState.CI_FAILED,
410
+ ratchetActiveSessionId: 'ratchet-session',
411
+ ratchetLastCiRunId: null,
412
+ prReviewLastCheckedAt: null,
413
+ };
414
+ vi.mocked(claudeSessionAccessor.findById).mockResolvedValue({
415
+ id: 'ratchet-session',
416
+ status: SessionStatus.RUNNING,
417
+ });
418
+ vi.mocked(mockSessionBridge.isSessionRunning).mockReturnValue(true);
419
+ vi.mocked(mockSessionBridge.isSessionWorking).mockReturnValue(false);
420
+ vi.mocked(mockSessionBridge.stopClaudeSession).mockResolvedValue();
421
+ vi.mocked(workspaceAccessor.update).mockResolvedValue({});
422
+ const action = await unsafeCoerce(ratchetService).getActiveRatchetSession(workspace);
423
+ expect(action).toBeNull();
424
+ expect(workspaceAccessor.update).toHaveBeenCalledWith(workspace.id, {
425
+ ratchetActiveSessionId: null,
426
+ });
427
+ expect(mockSessionBridge.stopClaudeSession).toHaveBeenCalledWith('ratchet-session');
428
+ });
429
+ it('decides to trigger fixer when context is actionable', () => {
430
+ const decision = unsafeCoerce(ratchetService).decideRatchetAction({
431
+ workspace: { ratchetEnabled: true },
432
+ prStateInfo: { prState: 'OPEN', ciStatus: CIStatus.FAILURE },
433
+ isCleanPrWithNoNewReviewActivity: false,
434
+ activeRatchetSession: null,
435
+ hasStateChangedSinceLastDispatch: true,
436
+ hasOtherActiveSession: false,
437
+ });
438
+ expect(decision).toEqual({ type: 'TRIGGER_FIXER' });
439
+ });
440
+ it('waits when CI is not in terminal state (PENDING)', () => {
441
+ const decision = unsafeCoerce(ratchetService).decideRatchetAction({
442
+ workspace: { ratchetEnabled: true },
443
+ prStateInfo: { prState: 'OPEN', ciStatus: CIStatus.PENDING },
444
+ isCleanPrWithNoNewReviewActivity: false,
445
+ activeRatchetSession: null,
446
+ hasStateChangedSinceLastDispatch: true,
447
+ hasOtherActiveSession: false,
448
+ });
449
+ expect(decision).toEqual({
450
+ type: 'RETURN_ACTION',
451
+ action: { type: 'WAITING', reason: 'Waiting for CI to complete (not in terminal state)' },
452
+ });
453
+ });
454
+ it('waits when CI is not in terminal state (UNKNOWN)', () => {
455
+ const decision = unsafeCoerce(ratchetService).decideRatchetAction({
456
+ workspace: { ratchetEnabled: true },
457
+ prStateInfo: { prState: 'OPEN', ciStatus: CIStatus.UNKNOWN },
458
+ isCleanPrWithNoNewReviewActivity: false,
459
+ activeRatchetSession: null,
460
+ hasStateChangedSinceLastDispatch: true,
461
+ hasOtherActiveSession: false,
462
+ });
463
+ expect(decision).toEqual({
464
+ type: 'RETURN_ACTION',
465
+ action: { type: 'WAITING', reason: 'Waiting for CI to complete (not in terminal state)' },
466
+ });
467
+ });
468
+ it('prefers precomputed review-activity diagnostics from decision context', () => {
469
+ const workspace = {
470
+ id: 'ws-log-diag',
471
+ prUrl: 'https://github.com/example/repo/pull/10',
472
+ prNumber: 10,
473
+ prState: 'OPEN',
474
+ prCiStatus: CIStatus.UNKNOWN,
475
+ ratchetEnabled: true,
476
+ ratchetState: RatchetState.READY,
477
+ ratchetActiveSessionId: null,
478
+ ratchetLastCiRunId: 'prev-snapshot',
479
+ prReviewLastCheckedAt: null,
480
+ };
481
+ const prStateInfo = {
482
+ ciStatus: CIStatus.SUCCESS,
483
+ snapshotKey: 'next-snapshot',
484
+ hasChangesRequested: false,
485
+ latestReviewActivityAtMs: null,
486
+ statusCheckRollup: null,
487
+ prState: 'OPEN',
488
+ prNumber: 10,
489
+ };
490
+ const logContext = unsafeCoerce(ratchetService).buildRatchetingLogContext(workspace, RatchetState.READY, RatchetState.READY, { type: 'WAITING', reason: 'noop' }, prStateInfo, 10, { hasNewReviewActivitySinceLastDispatch: true });
491
+ expect(logContext.reviewTimestampComparison.hasNewReviewActivitySinceLastDispatch).toBe(true);
492
+ });
493
+ it('ignores review activity authored by the authenticated user', () => {
494
+ const latestActivity = unsafeCoerce(ratchetService).computeLatestReviewActivityAtMs({
495
+ reviews: [
496
+ { submittedAt: '2026-01-02T00:00:00Z', author: { login: 'ratchet-bot' } },
497
+ { submittedAt: '2026-01-01T00:00:00Z', author: { login: 'reviewer' } },
498
+ ],
499
+ comments: [{ updatedAt: '2026-01-02T01:00:00Z', author: { login: 'ratchet-bot' } }],
500
+ }, [{ updatedAt: '2026-01-01T02:00:00Z', author: { login: 'reviewer2' } }], 'ratchet-bot');
501
+ expect(latestActivity).toBe(new Date('2026-01-01T02:00:00Z').getTime());
502
+ });
503
+ describe('determineRatchetState', () => {
504
+ const callDetermineRatchetState = (pr) => unsafeCoerce(ratchetService).determineRatchetState(pr);
505
+ it('returns MERGED for merged PR', () => {
506
+ expect(callDetermineRatchetState({
507
+ ciStatus: CIStatus.SUCCESS,
508
+ prState: 'MERGED',
509
+ hasChangesRequested: false,
510
+ })).toBe(RatchetState.MERGED);
511
+ });
512
+ it('returns IDLE for closed (non-merged) PR', () => {
513
+ expect(callDetermineRatchetState({
514
+ ciStatus: CIStatus.SUCCESS,
515
+ prState: 'CLOSED',
516
+ hasChangesRequested: false,
517
+ })).toBe(RatchetState.IDLE);
518
+ });
519
+ it('returns CI_RUNNING for PENDING CI on open PR', () => {
520
+ expect(callDetermineRatchetState({
521
+ ciStatus: CIStatus.PENDING,
522
+ prState: 'OPEN',
523
+ hasChangesRequested: false,
524
+ })).toBe(RatchetState.CI_RUNNING);
525
+ });
526
+ it('returns CI_RUNNING for UNKNOWN CI on open PR', () => {
527
+ expect(callDetermineRatchetState({
528
+ ciStatus: CIStatus.UNKNOWN,
529
+ prState: 'OPEN',
530
+ hasChangesRequested: false,
531
+ })).toBe(RatchetState.CI_RUNNING);
532
+ });
533
+ it('returns CI_FAILED for FAILURE CI on open PR', () => {
534
+ expect(callDetermineRatchetState({
535
+ ciStatus: CIStatus.FAILURE,
536
+ prState: 'OPEN',
537
+ hasChangesRequested: false,
538
+ })).toBe(RatchetState.CI_FAILED);
539
+ });
540
+ it('returns REVIEW_PENDING when changes requested on open PR with passing CI', () => {
541
+ expect(callDetermineRatchetState({
542
+ ciStatus: CIStatus.SUCCESS,
543
+ prState: 'OPEN',
544
+ hasChangesRequested: true,
545
+ })).toBe(RatchetState.REVIEW_PENDING);
546
+ });
547
+ it('returns READY when open PR with passing CI and no changes requested', () => {
548
+ expect(callDetermineRatchetState({
549
+ ciStatus: CIStatus.SUCCESS,
550
+ prState: 'OPEN',
551
+ hasChangesRequested: false,
552
+ })).toBe(RatchetState.READY);
553
+ });
554
+ it('returns CI_FAILED even when changes are requested if CI is failing', () => {
555
+ expect(callDetermineRatchetState({
556
+ ciStatus: CIStatus.FAILURE,
557
+ prState: 'OPEN',
558
+ hasChangesRequested: true,
559
+ })).toBe(RatchetState.CI_FAILED);
560
+ });
561
+ });
562
+ describe('computeDispatchSnapshotKey', () => {
563
+ const callComputeSnapshotKey = (ciStatus, hasChangesRequested, latestReviewActivityAtMs, statusChecks) => unsafeCoerce(ratchetService).computeDispatchSnapshotKey(ciStatus, hasChangesRequested, latestReviewActivityAtMs, statusChecks);
564
+ it('includes CI status in key for non-failure states', () => {
565
+ const key = callComputeSnapshotKey(CIStatus.SUCCESS, false, null, null);
566
+ expect(key).toContain('ci:SUCCESS');
567
+ expect(key).toContain('no-changes-requested');
568
+ expect(key).toContain('none');
569
+ });
570
+ it('includes failed check details in key for FAILURE status', () => {
571
+ const key = callComputeSnapshotKey(CIStatus.FAILURE, false, null, [
572
+ {
573
+ name: 'test',
574
+ conclusion: 'FAILURE',
575
+ detailsUrl: 'https://github.com/o/r/actions/runs/12345',
576
+ },
577
+ ]);
578
+ expect(key).toContain('ci:FAILURE');
579
+ expect(key).toContain('test:FAILURE:12345');
580
+ });
581
+ it('sorts failed checks for stable key generation', () => {
582
+ const key = callComputeSnapshotKey(CIStatus.FAILURE, false, null, [
583
+ {
584
+ name: 'ztest',
585
+ conclusion: 'FAILURE',
586
+ detailsUrl: 'https://github.com/o/r/actions/runs/2',
587
+ },
588
+ {
589
+ name: 'atest',
590
+ conclusion: 'FAILURE',
591
+ detailsUrl: 'https://github.com/o/r/actions/runs/1',
592
+ },
593
+ ]);
594
+ expect(key.indexOf('atest')).toBeLessThan(key.indexOf('ztest'));
595
+ });
596
+ it('uses unknown for FAILURE with empty check array', () => {
597
+ const key = callComputeSnapshotKey(CIStatus.FAILURE, false, null, []);
598
+ expect(key).toContain('ci:FAILURE:unknown');
599
+ });
600
+ it('includes review activity timestamp in key', () => {
601
+ const ts = 1_735_776_000_000;
602
+ const key = callComputeSnapshotKey(CIStatus.SUCCESS, true, ts, null);
603
+ expect(key).toContain(`changes-requested:${ts}`);
604
+ });
605
+ });
606
+ describe('computeLatestReviewActivityAtMs edge cases', () => {
607
+ const callCompute = (prDetails, reviewComments, authenticatedUsername) => unsafeCoerce(ratchetService).computeLatestReviewActivityAtMs(prDetails, reviewComments, authenticatedUsername);
608
+ it('returns null when there are no reviews or comments', () => {
609
+ expect(callCompute({ reviews: [], comments: [] }, [], null)).toBeNull();
610
+ });
611
+ it('returns null when all activity is from the authenticated user', () => {
612
+ expect(callCompute({
613
+ reviews: [{ submittedAt: '2026-01-01T00:00:00Z', author: { login: 'me' } }],
614
+ comments: [{ updatedAt: '2026-01-02T00:00:00Z', author: { login: 'me' } }],
615
+ }, [{ updatedAt: '2026-01-03T00:00:00Z', author: { login: 'me' } }], 'me')).toBeNull();
616
+ });
617
+ it('does not filter when authenticatedUsername is null', () => {
618
+ const result = callCompute({
619
+ reviews: [{ submittedAt: '2026-01-01T00:00:00Z', author: { login: 'bot' } }],
620
+ comments: [],
621
+ }, [], null);
622
+ expect(result).toBe(new Date('2026-01-01T00:00:00Z').getTime());
623
+ });
624
+ it('returns the latest timestamp across all sources', () => {
625
+ const result = callCompute({
626
+ reviews: [{ submittedAt: '2026-01-01T00:00:00Z', author: { login: 'a' } }],
627
+ comments: [{ updatedAt: '2026-01-03T00:00:00Z', author: { login: 'b' } }],
628
+ }, [{ updatedAt: '2026-01-02T00:00:00Z', author: { login: 'c' } }], null);
629
+ expect(result).toBe(new Date('2026-01-03T00:00:00Z').getTime());
630
+ });
631
+ });
632
+ describe('processWorkspace error handling', () => {
633
+ it('returns ERROR action when fetchPRState returns null', async () => {
634
+ const workspace = {
635
+ id: 'ws-fetch-err',
636
+ prUrl: 'https://github.com/example/repo/pull/99',
637
+ prNumber: 99,
638
+ ratchetEnabled: true,
639
+ ratchetState: RatchetState.IDLE,
640
+ ratchetActiveSessionId: null,
641
+ ratchetLastCiRunId: null,
642
+ prReviewLastCheckedAt: null,
643
+ };
644
+ vi.spyOn(unsafeCoerce(ratchetService), 'fetchPRState').mockResolvedValue(null);
645
+ vi.mocked(workspaceAccessor.update).mockResolvedValue({});
646
+ const result = await unsafeCoerce(ratchetService).processWorkspace(workspace);
647
+ expect(result).toMatchObject({
648
+ action: { type: 'ERROR', error: 'Failed to fetch PR state' },
649
+ newState: RatchetState.IDLE,
650
+ });
651
+ });
652
+ it('returns WAITING when shutting down', async () => {
653
+ unsafeCoerce(ratchetService).isShuttingDown = true;
654
+ const workspace = {
655
+ id: 'ws-shutdown',
656
+ prUrl: 'https://github.com/example/repo/pull/1',
657
+ prNumber: 1,
658
+ ratchetEnabled: true,
659
+ ratchetState: RatchetState.CI_FAILED,
660
+ ratchetActiveSessionId: null,
661
+ ratchetLastCiRunId: null,
662
+ prReviewLastCheckedAt: null,
663
+ };
664
+ const result = await unsafeCoerce(ratchetService).processWorkspace(workspace);
665
+ expect(result).toMatchObject({
666
+ action: { type: 'WAITING', reason: 'Shutting down' },
667
+ previousState: RatchetState.CI_FAILED,
668
+ newState: RatchetState.CI_FAILED,
669
+ });
670
+ });
671
+ it('returns ERROR and preserves state when processWorkspace throws', async () => {
672
+ const workspace = {
673
+ id: 'ws-throw',
674
+ prUrl: 'https://github.com/example/repo/pull/50',
675
+ prNumber: 50,
676
+ ratchetEnabled: true,
677
+ ratchetState: RatchetState.CI_FAILED,
678
+ ratchetActiveSessionId: null,
679
+ ratchetLastCiRunId: null,
680
+ prReviewLastCheckedAt: null,
681
+ };
682
+ vi.spyOn(unsafeCoerce(ratchetService), 'fetchPRState').mockRejectedValue(new Error('Unexpected explosion'));
683
+ const result = await unsafeCoerce(ratchetService).processWorkspace(workspace);
684
+ expect(result).toMatchObject({
685
+ action: { type: 'ERROR', error: 'Unexpected explosion' },
686
+ previousState: RatchetState.CI_FAILED,
687
+ newState: RatchetState.CI_FAILED,
688
+ });
689
+ });
690
+ });
691
+ describe('checkAllWorkspaces', () => {
692
+ it('returns zero counts when shutting down', async () => {
693
+ unsafeCoerce(ratchetService).isShuttingDown = true;
694
+ const result = await ratchetService.checkAllWorkspaces();
695
+ expect(result).toEqual({ checked: 0, stateChanges: 0, actionsTriggered: 0, results: [] });
696
+ });
697
+ it('returns zero counts when no workspaces have PRs', async () => {
698
+ vi.mocked(workspaceAccessor.findWithPRsForRatchet).mockResolvedValue([]);
699
+ const result = await ratchetService.checkAllWorkspaces();
700
+ expect(result).toEqual({ checked: 0, stateChanges: 0, actionsTriggered: 0, results: [] });
701
+ });
702
+ });
703
+ describe('checkWorkspaceById', () => {
704
+ it('returns null when shutting down', async () => {
705
+ unsafeCoerce(ratchetService).isShuttingDown = true;
706
+ const result = await ratchetService.checkWorkspaceById('ws-1');
707
+ expect(result).toBeNull();
708
+ });
709
+ it('returns null when workspace not found', async () => {
710
+ unsafeCoerce(ratchetService).isShuttingDown = false;
711
+ vi.mocked(workspaceAccessor.findForRatchetById).mockResolvedValue(null);
712
+ const result = await ratchetService.checkWorkspaceById('ws-nonexistent');
713
+ expect(result).toBeNull();
714
+ });
715
+ });
716
+ describe('decideRatchetAction edge cases', () => {
717
+ const callDecide = (context) => unsafeCoerce(ratchetService).decideRatchetAction(context);
718
+ it('returns COMPLETED for merged PR', () => {
719
+ expect(callDecide({
720
+ workspace: { ratchetEnabled: true },
721
+ prStateInfo: { prState: 'MERGED', ciStatus: CIStatus.SUCCESS },
722
+ isCleanPrWithNoNewReviewActivity: false,
723
+ activeRatchetSession: null,
724
+ hasStateChangedSinceLastDispatch: true,
725
+ hasOtherActiveSession: false,
726
+ })).toEqual({ type: 'RETURN_ACTION', action: { type: 'COMPLETED' } });
727
+ });
728
+ it('returns WAITING for non-open PR', () => {
729
+ const result = callDecide({
730
+ workspace: { ratchetEnabled: true },
731
+ prStateInfo: { prState: 'CLOSED', ciStatus: CIStatus.SUCCESS },
732
+ isCleanPrWithNoNewReviewActivity: false,
733
+ activeRatchetSession: null,
734
+ hasStateChangedSinceLastDispatch: true,
735
+ hasOtherActiveSession: false,
736
+ });
737
+ expect(result.action?.reason).toBe('PR is not open');
738
+ });
739
+ it('returns active session when one exists', () => {
740
+ const activeSession = { type: 'FIXER_ACTIVE', sessionId: 's-1' };
741
+ const result = callDecide({
742
+ workspace: { ratchetEnabled: true },
743
+ prStateInfo: { prState: 'OPEN', ciStatus: CIStatus.FAILURE },
744
+ isCleanPrWithNoNewReviewActivity: false,
745
+ activeRatchetSession: activeSession,
746
+ hasStateChangedSinceLastDispatch: true,
747
+ hasOtherActiveSession: false,
748
+ });
749
+ expect(result.action).toEqual(activeSession);
750
+ });
751
+ it('returns WAITING when other active session blocks dispatch', () => {
752
+ const result = callDecide({
753
+ workspace: { ratchetEnabled: true },
754
+ prStateInfo: { prState: 'OPEN', ciStatus: CIStatus.FAILURE },
755
+ isCleanPrWithNoNewReviewActivity: false,
756
+ activeRatchetSession: null,
757
+ hasStateChangedSinceLastDispatch: true,
758
+ hasOtherActiveSession: true,
759
+ });
760
+ expect(result.action?.reason).toBe('Workspace is not idle (active session)');
761
+ });
762
+ });
763
+ describe('getActiveRatchetSession edge cases', () => {
764
+ const callGetActiveRatchetSession = (workspace) => unsafeCoerce(ratchetService).getActiveRatchetSession(workspace);
765
+ it('returns null when ratchetActiveSessionId is null', async () => {
766
+ const result = await callGetActiveRatchetSession({
767
+ id: 'ws-1',
768
+ ratchetActiveSessionId: null,
769
+ });
770
+ expect(result).toBeNull();
771
+ });
772
+ it('returns null and clears when session DB record is missing', async () => {
773
+ vi.mocked(claudeSessionAccessor.findById).mockResolvedValue(null);
774
+ vi.mocked(workspaceAccessor.update).mockResolvedValue({});
775
+ const result = await callGetActiveRatchetSession({
776
+ id: 'ws-2',
777
+ ratchetActiveSessionId: 'gone-session',
778
+ });
779
+ expect(result).toBeNull();
780
+ expect(workspaceAccessor.update).toHaveBeenCalledWith('ws-2', {
781
+ ratchetActiveSessionId: null,
782
+ });
783
+ });
784
+ it('returns null and clears when session is not RUNNING', async () => {
785
+ vi.mocked(claudeSessionAccessor.findById).mockResolvedValue({
786
+ id: 'completed-session',
787
+ status: SessionStatus.IDLE,
788
+ });
789
+ vi.mocked(workspaceAccessor.update).mockResolvedValue({});
790
+ const result = await callGetActiveRatchetSession({
791
+ id: 'ws-3',
792
+ ratchetActiveSessionId: 'completed-session',
793
+ });
794
+ expect(result).toBeNull();
795
+ expect(workspaceAccessor.update).toHaveBeenCalledWith('ws-3', {
796
+ ratchetActiveSessionId: null,
797
+ });
798
+ });
799
+ });
800
+ describe('triggerFixer error handling', () => {
801
+ it('handles acquireAndDispatch throwing an error', async () => {
802
+ const workspace = {
803
+ id: 'ws-trigger-fail',
804
+ prUrl: 'https://github.com/example/repo/pull/20',
805
+ prNumber: 20,
806
+ ratchetEnabled: true,
807
+ ratchetState: RatchetState.CI_FAILED,
808
+ ratchetActiveSessionId: null,
809
+ ratchetLastCiRunId: null,
810
+ prReviewLastCheckedAt: null,
811
+ };
812
+ vi.mocked(fixerSessionService.acquireAndDispatch).mockRejectedValue(new Error('Session creation failed'));
813
+ const result = await unsafeCoerce(ratchetService).triggerFixer(workspace, {
814
+ ciStatus: CIStatus.FAILURE,
815
+ prNumber: 20,
816
+ });
817
+ expect(result).toMatchObject({
818
+ type: 'ERROR',
819
+ error: 'Session creation failed',
820
+ });
821
+ });
822
+ it('handles already_active result from acquireAndDispatch', async () => {
823
+ const workspace = {
824
+ id: 'ws-already-active',
825
+ prUrl: 'https://github.com/example/repo/pull/21',
826
+ prNumber: 21,
827
+ ratchetEnabled: true,
828
+ ratchetState: RatchetState.CI_FAILED,
829
+ ratchetActiveSessionId: null,
830
+ ratchetLastCiRunId: null,
831
+ prReviewLastCheckedAt: null,
832
+ };
833
+ vi.mocked(fixerSessionService.acquireAndDispatch).mockResolvedValue({
834
+ status: 'already_active',
835
+ sessionId: 'existing-session',
836
+ });
837
+ vi.mocked(workspaceAccessor.update).mockResolvedValue({});
838
+ const result = await unsafeCoerce(ratchetService).triggerFixer(workspace, {
839
+ ciStatus: CIStatus.FAILURE,
840
+ prNumber: 21,
841
+ });
842
+ expect(result).toMatchObject({
843
+ type: 'FIXER_ACTIVE',
844
+ sessionId: 'existing-session',
845
+ });
846
+ });
847
+ it('handles skipped result from acquireAndDispatch', async () => {
848
+ const workspace = {
849
+ id: 'ws-skipped',
850
+ prUrl: 'https://github.com/example/repo/pull/22',
851
+ prNumber: 22,
852
+ ratchetEnabled: true,
853
+ ratchetState: RatchetState.CI_FAILED,
854
+ ratchetActiveSessionId: null,
855
+ ratchetLastCiRunId: null,
856
+ prReviewLastCheckedAt: null,
857
+ };
858
+ vi.mocked(fixerSessionService.acquireAndDispatch).mockResolvedValue({
859
+ status: 'skipped',
860
+ reason: 'No worktree path',
861
+ });
862
+ const result = await unsafeCoerce(ratchetService).triggerFixer(workspace, {
863
+ ciStatus: CIStatus.FAILURE,
864
+ prNumber: 22,
865
+ });
866
+ expect(result).toMatchObject({
867
+ type: 'ERROR',
868
+ error: 'No worktree path',
869
+ });
870
+ });
871
+ });
872
+ });
873
+ //# sourceMappingURL=ratchet.service.test.js.map