factory-factory 0.4.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1045) hide show
  1. package/README.md +61 -344
  2. package/dist/client/assets/{arc-BZLkggFv.js → arc-lK3Ig9GV.js} +1 -1
  3. package/dist/client/assets/{architectureDiagram-3BPJPVTR-0dfKDS01.js → architectureDiagram-3BPJPVTR-CeUbfBqe.js} +1 -1
  4. package/dist/client/assets/{blockDiagram-GPEHLZMM-kPnqTUvo.js → blockDiagram-GPEHLZMM-DiVGPkq2.js} +1 -1
  5. package/dist/client/assets/{c4Diagram-AAUBKEIU-fGcSJ5RM.js → c4Diagram-AAUBKEIU-CT8hJB-h.js} +1 -1
  6. package/dist/client/assets/channel-CvY1mvIl.js +1 -0
  7. package/dist/client/assets/{chunk-2J33WTMH-nkRXvoLd.js → chunk-2J33WTMH-B0h8q8fD.js} +1 -1
  8. package/dist/client/assets/{chunk-4BX2VUAB-BzGqW4v8.js → chunk-4BX2VUAB-km6NpEMz.js} +1 -1
  9. package/dist/client/assets/{chunk-55IACEB6-CKYhsw8v.js → chunk-55IACEB6-COUWt3oA.js} +1 -1
  10. package/dist/client/assets/{chunk-727SXJPM-D6c3bkpP.js → chunk-727SXJPM-Bp-ts2at.js} +1 -1
  11. package/dist/client/assets/{chunk-AQP2D5EJ-Cp_aqtpa.js → chunk-AQP2D5EJ-dyo9i4xa.js} +1 -1
  12. package/dist/client/assets/{chunk-FMBD7UC4-CkbLLRk5.js → chunk-FMBD7UC4-B4C3KvLe.js} +1 -1
  13. package/dist/client/assets/{chunk-ND2GUHAM-BZ894oON.js → chunk-ND2GUHAM-Qhi4WqzZ.js} +1 -1
  14. package/dist/client/assets/{chunk-QZHKN3VN-D4NOzC69.js → chunk-QZHKN3VN-Ce3Q_vrs.js} +1 -1
  15. package/dist/client/assets/classDiagram-4FO5ZUOK-Db7ZXJ6w.js +1 -0
  16. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-Db7ZXJ6w.js +1 -0
  17. package/dist/client/assets/{cose-bilkent-S5V4N54A-CPSnsVY6.js → cose-bilkent-S5V4N54A-D6QofwFq.js} +1 -1
  18. package/dist/client/assets/{dagre-BM42HDAG-CDuVn0gJ.js → dagre-BM42HDAG-CDzpFdgD.js} +1 -1
  19. package/dist/client/assets/{diagram-2AECGRRQ-DkPx69Lt.js → diagram-2AECGRRQ-dl1_7lyq.js} +1 -1
  20. package/dist/client/assets/{diagram-5GNKFQAL-CchGithI.js → diagram-5GNKFQAL-B0ynMwBY.js} +1 -1
  21. package/dist/client/assets/{diagram-KO2AKTUF-DQ50kQAK.js → diagram-KO2AKTUF-B9ABz-Wk.js} +1 -1
  22. package/dist/client/assets/{diagram-LMA3HP47-hKBATxk5.js → diagram-LMA3HP47-DZxXcfiX.js} +1 -1
  23. package/dist/client/assets/{diagram-OG6HWLK6-Bga7_0RO.js → diagram-OG6HWLK6-BncGM9Gv.js} +1 -1
  24. package/dist/client/assets/{erDiagram-TEJ5UH35-D26at0F2.js → erDiagram-TEJ5UH35-B9hxScvO.js} +1 -1
  25. package/dist/client/assets/{flowDiagram-I6XJVG4X-Qf-TRw4O.js → flowDiagram-I6XJVG4X-DgZ2jwJQ.js} +1 -1
  26. package/dist/client/assets/{ganttDiagram-6RSMTGT7-CmRredaI.js → ganttDiagram-6RSMTGT7-BrnNMNRY.js} +1 -1
  27. package/dist/client/assets/{gitGraphDiagram-PVQCEYII-QQP7Sl8F.js → gitGraphDiagram-PVQCEYII-BJmed6oD.js} +1 -1
  28. package/dist/client/assets/index-Btlruz7h.css +1 -0
  29. package/dist/client/assets/{index-Db00yCQO.js → index-DEKuJM5_.js} +179 -177
  30. package/dist/client/assets/{infoDiagram-5YYISTIA-YKWLGpI0.js → infoDiagram-5YYISTIA-CtLzR4ip.js} +1 -1
  31. package/dist/client/assets/{ishikawaDiagram-YF4QCWOH-DrCgRttT.js → ishikawaDiagram-YF4QCWOH-BLrvV5ke.js} +1 -1
  32. package/dist/client/assets/{journeyDiagram-JHISSGLW-CcyKXKKG.js → journeyDiagram-JHISSGLW-B2-TMwJI.js} +1 -1
  33. package/dist/client/assets/{kanban-definition-UN3LZRKU-CsGSN3QV.js → kanban-definition-UN3LZRKU-B5mGKgYF.js} +1 -1
  34. package/dist/client/assets/{linear-DG8wt3yl.js → linear-ConE9euY.js} +1 -1
  35. package/dist/client/assets/{mindmap-definition-RKZ34NQL-CD6E0vLi.js → mindmap-definition-RKZ34NQL-B0BaMk8D.js} +1 -1
  36. package/dist/client/assets/{mobile-baseline-CCXJGaWY.js → mobile-baseline-DWCt7ZGJ.js} +1 -1
  37. package/dist/client/assets/{pieDiagram-4H26LBE5-PIN8tU1a.js → pieDiagram-4H26LBE5-DgPu3GTs.js} +1 -1
  38. package/dist/client/assets/{quadrantDiagram-W4KKPZXB-DV6ne1ch.js → quadrantDiagram-W4KKPZXB-DDbeggF4.js} +1 -1
  39. package/dist/client/assets/{requirementDiagram-4Y6WPE33-Cly9IJv1.js → requirementDiagram-4Y6WPE33-Cc3ozz7U.js} +1 -1
  40. package/dist/client/assets/{sankeyDiagram-5OEKKPKP-D2SFbF9j.js → sankeyDiagram-5OEKKPKP-DmYoq588.js} +1 -1
  41. package/dist/client/assets/{sequenceDiagram-3UESZ5HK-BsxZzGc-.js → sequenceDiagram-3UESZ5HK-EVqdDzgf.js} +1 -1
  42. package/dist/client/assets/{stateDiagram-AJRCARHV-DtZoFzqs.js → stateDiagram-AJRCARHV-BRd6IxSa.js} +1 -1
  43. package/dist/client/assets/stateDiagram-v2-BHNVJYJU-DR2vMoX5.js +1 -0
  44. package/dist/client/assets/{terminal-instance-DFzmxfzG.js → terminal-instance-CDKJdDaO.js} +1 -1
  45. package/dist/client/assets/{timeline-definition-PNZ67QCA-B7ZqNmvc.js → timeline-definition-PNZ67QCA-CyxBqgqv.js} +1 -1
  46. package/dist/client/assets/{vennDiagram-CIIHVFJN-Biz7Z4hM.js → vennDiagram-CIIHVFJN-CLslQYVi.js} +1 -1
  47. package/dist/client/assets/{wardley-L42UT6IY-B-ZjZQUx.js → wardley-L42UT6IY-DyEDLg3x.js} +1 -1
  48. package/dist/client/assets/{wardleyDiagram-YWT4CUSO-C9yV9o-K.js → wardleyDiagram-YWT4CUSO-CjJBpd3P.js} +1 -1
  49. package/dist/client/assets/{xychartDiagram-2RQKCTM6-DuWAbR0h.js → xychartDiagram-2RQKCTM6-DwzoT5Dl.js} +1 -1
  50. package/dist/client/index.html +2 -2
  51. package/dist/client/working.png +0 -0
  52. package/dist/prisma/generated/commonInputTypes.d.ts +30 -0
  53. package/dist/prisma/generated/commonInputTypes.d.ts.map +1 -1
  54. package/dist/prisma/generated/enums.d.ts +5 -0
  55. package/dist/prisma/generated/enums.d.ts.map +1 -1
  56. package/dist/prisma/generated/enums.js +4 -0
  57. package/dist/prisma/generated/enums.js.map +1 -1
  58. package/dist/prisma/generated/internal/class.js +4 -4
  59. package/dist/prisma/generated/internal/class.js.map +1 -1
  60. package/dist/prisma/generated/internal/prismaNamespace.d.ts +5 -0
  61. package/dist/prisma/generated/internal/prismaNamespace.d.ts.map +1 -1
  62. package/dist/prisma/generated/internal/prismaNamespace.js +4 -0
  63. package/dist/prisma/generated/internal/prismaNamespace.js.map +1 -1
  64. package/dist/prisma/generated/internal/prismaNamespaceBrowser.d.ts +4 -0
  65. package/dist/prisma/generated/internal/prismaNamespaceBrowser.d.ts.map +1 -1
  66. package/dist/prisma/generated/internal/prismaNamespaceBrowser.js +4 -0
  67. package/dist/prisma/generated/internal/prismaNamespaceBrowser.js.map +1 -1
  68. package/dist/prisma/generated/models/UserSettings.d.ts +32 -1
  69. package/dist/prisma/generated/models/UserSettings.d.ts.map +1 -1
  70. package/dist/prisma/generated/models/Workspace.d.ts +220 -1
  71. package/dist/prisma/generated/models/Workspace.d.ts.map +1 -1
  72. package/dist/src/backend/app-context.d.ts +90 -25
  73. package/dist/src/backend/app-context.d.ts.map +1 -1
  74. package/dist/src/backend/app-context.js +145 -42
  75. package/dist/src/backend/app-context.js.map +1 -1
  76. package/dist/src/backend/app-context.test.d.ts +2 -0
  77. package/dist/src/backend/app-context.test.d.ts.map +1 -0
  78. package/dist/src/backend/app-context.test.js +51 -0
  79. package/dist/src/backend/app-context.test.js.map +1 -0
  80. package/dist/src/backend/clients/git.client.d.ts.map +1 -1
  81. package/dist/src/backend/clients/git.client.js +5 -0
  82. package/dist/src/backend/clients/git.client.js.map +1 -1
  83. package/dist/src/backend/clients/git.client.test.js +24 -0
  84. package/dist/src/backend/clients/git.client.test.js.map +1 -1
  85. package/dist/src/backend/index.js +5 -5
  86. package/dist/src/backend/index.js.map +1 -1
  87. package/dist/src/backend/interceptors/branch-rename.interceptor.d.ts.map +1 -1
  88. package/dist/src/backend/interceptors/branch-rename.interceptor.js +79 -5
  89. package/dist/src/backend/interceptors/branch-rename.interceptor.js.map +1 -1
  90. package/dist/src/backend/interceptors/branch-rename.interceptor.test.js +120 -16
  91. package/dist/src/backend/interceptors/branch-rename.interceptor.test.js.map +1 -1
  92. package/dist/src/backend/interceptors/pre-pr-rename.interceptor.d.ts.map +1 -1
  93. package/dist/src/backend/interceptors/pre-pr-rename.interceptor.js +3 -0
  94. package/dist/src/backend/interceptors/pre-pr-rename.interceptor.js.map +1 -1
  95. package/dist/src/backend/interceptors/pre-pr-rename.interceptor.test.js +8 -0
  96. package/dist/src/backend/interceptors/pre-pr-rename.interceptor.test.js.map +1 -1
  97. package/dist/src/backend/interceptors/pre-push-rename.interceptor.d.ts.map +1 -1
  98. package/dist/src/backend/interceptors/pre-push-rename.interceptor.js +49 -0
  99. package/dist/src/backend/interceptors/pre-push-rename.interceptor.js.map +1 -1
  100. package/dist/src/backend/interceptors/pre-push-rename.interceptor.test.js +98 -0
  101. package/dist/src/backend/interceptors/pre-push-rename.interceptor.test.js.map +1 -1
  102. package/dist/src/backend/lib/application-error.d.ts +6 -0
  103. package/dist/src/backend/lib/application-error.d.ts.map +1 -0
  104. package/dist/src/backend/lib/application-error.js +9 -0
  105. package/dist/src/backend/lib/application-error.js.map +1 -0
  106. package/dist/src/backend/lib/application-error.test.d.ts +2 -0
  107. package/dist/src/backend/lib/application-error.test.d.ts.map +1 -0
  108. package/dist/src/backend/lib/application-error.test.js +23 -0
  109. package/dist/src/backend/lib/application-error.test.js.map +1 -0
  110. package/dist/src/backend/lib/git-helpers.d.ts +1 -7
  111. package/dist/src/backend/lib/git-helpers.d.ts.map +1 -1
  112. package/dist/src/backend/lib/git-helpers.js +4 -33
  113. package/dist/src/backend/lib/git-helpers.js.map +1 -1
  114. package/dist/src/backend/lib/git-helpers.test.js +17 -10
  115. package/dist/src/backend/lib/git-helpers.test.js.map +1 -1
  116. package/dist/src/backend/lib/process-liveness.d.ts +2 -0
  117. package/dist/src/backend/lib/process-liveness.d.ts.map +1 -0
  118. package/dist/src/backend/lib/process-liveness.js +26 -0
  119. package/dist/src/backend/lib/process-liveness.js.map +1 -0
  120. package/dist/src/backend/lib/process-liveness.test.d.ts +2 -0
  121. package/dist/src/backend/lib/process-liveness.test.d.ts.map +1 -0
  122. package/dist/src/backend/lib/process-liveness.test.js +35 -0
  123. package/dist/src/backend/lib/process-liveness.test.js.map +1 -0
  124. package/dist/src/backend/lib/session-summaries.d.ts +4 -5
  125. package/dist/src/backend/lib/session-summaries.d.ts.map +1 -1
  126. package/dist/src/backend/lib/session-summaries.js.map +1 -1
  127. package/dist/src/backend/lib/workspace-derived-state.d.ts +9 -1
  128. package/dist/src/backend/lib/workspace-derived-state.d.ts.map +1 -1
  129. package/dist/src/backend/lib/workspace-derived-state.js +6 -1
  130. package/dist/src/backend/lib/workspace-derived-state.js.map +1 -1
  131. package/dist/src/backend/lib/workspace-derived-state.test.js +11 -3
  132. package/dist/src/backend/lib/workspace-derived-state.test.js.map +1 -1
  133. package/dist/src/backend/middleware/cors.middleware.js +1 -1
  134. package/dist/src/backend/middleware/cors.middleware.js.map +1 -1
  135. package/dist/src/backend/middleware/index.d.ts +1 -1
  136. package/dist/src/backend/middleware/index.d.ts.map +1 -1
  137. package/dist/src/backend/middleware/index.js +1 -1
  138. package/dist/src/backend/middleware/index.js.map +1 -1
  139. package/dist/src/backend/middleware/middleware.test.js +1 -1
  140. package/dist/src/backend/middleware/middleware.test.js.map +1 -1
  141. package/dist/src/backend/middleware/request-logger.middleware.d.ts +1 -2
  142. package/dist/src/backend/middleware/request-logger.middleware.d.ts.map +1 -1
  143. package/dist/src/backend/middleware/request-logger.middleware.js +0 -2
  144. package/dist/src/backend/middleware/request-logger.middleware.js.map +1 -1
  145. package/dist/src/backend/orchestration/data-backup.service.d.ts.map +1 -1
  146. package/dist/src/backend/orchestration/data-backup.service.js +3 -1
  147. package/dist/src/backend/orchestration/data-backup.service.js.map +1 -1
  148. package/dist/src/backend/orchestration/data-backup.service.test.js +29 -0
  149. package/dist/src/backend/orchestration/data-backup.service.test.js.map +1 -1
  150. package/dist/src/backend/orchestration/domain-bridges.orchestrator.d.ts +24 -12
  151. package/dist/src/backend/orchestration/domain-bridges.orchestrator.d.ts.map +1 -1
  152. package/dist/src/backend/orchestration/domain-bridges.orchestrator.js +53 -63
  153. package/dist/src/backend/orchestration/domain-bridges.orchestrator.js.map +1 -1
  154. package/dist/src/backend/orchestration/domain-bridges.orchestrator.test.js +173 -82
  155. package/dist/src/backend/orchestration/domain-bridges.orchestrator.test.js.map +1 -1
  156. package/dist/src/backend/orchestration/event-coalescer.integration.test.d.ts +2 -0
  157. package/dist/src/backend/orchestration/event-coalescer.integration.test.d.ts.map +1 -0
  158. package/dist/src/backend/orchestration/event-coalescer.integration.test.js +47 -0
  159. package/dist/src/backend/orchestration/event-coalescer.integration.test.js.map +1 -0
  160. package/dist/src/backend/orchestration/event-collector-lifecycle.integration.test.d.ts +2 -0
  161. package/dist/src/backend/orchestration/event-collector-lifecycle.integration.test.d.ts.map +1 -0
  162. package/dist/src/backend/orchestration/event-collector-lifecycle.integration.test.js +34 -0
  163. package/dist/src/backend/orchestration/event-collector-lifecycle.integration.test.js.map +1 -0
  164. package/dist/src/backend/orchestration/event-collector.orchestrator.d.ts +37 -10
  165. package/dist/src/backend/orchestration/event-collector.orchestrator.d.ts.map +1 -1
  166. package/dist/src/backend/orchestration/event-collector.orchestrator.js +297 -121
  167. package/dist/src/backend/orchestration/event-collector.orchestrator.js.map +1 -1
  168. package/dist/src/backend/orchestration/event-collector.orchestrator.test.js +354 -42
  169. package/dist/src/backend/orchestration/event-collector.orchestrator.test.js.map +1 -1
  170. package/dist/src/backend/orchestration/health.service.js +2 -2
  171. package/dist/src/backend/orchestration/health.service.js.map +1 -1
  172. package/dist/src/backend/orchestration/linear-config.helper.js +2 -2
  173. package/dist/src/backend/orchestration/linear-config.helper.js.map +1 -1
  174. package/dist/src/backend/orchestration/reconciliation.service.d.ts +13 -1
  175. package/dist/src/backend/orchestration/reconciliation.service.d.ts.map +1 -1
  176. package/dist/src/backend/orchestration/reconciliation.service.js +16 -29
  177. package/dist/src/backend/orchestration/reconciliation.service.js.map +1 -1
  178. package/dist/src/backend/orchestration/reconciliation.service.test.js +15 -47
  179. package/dist/src/backend/orchestration/reconciliation.service.test.js.map +1 -1
  180. package/dist/src/backend/orchestration/scheduler.service.d.ts +2 -1
  181. package/dist/src/backend/orchestration/scheduler.service.d.ts.map +1 -1
  182. package/dist/src/backend/orchestration/scheduler.service.js +107 -44
  183. package/dist/src/backend/orchestration/scheduler.service.js.map +1 -1
  184. package/dist/src/backend/orchestration/scheduler.service.test.js +266 -59
  185. package/dist/src/backend/orchestration/scheduler.service.test.js.map +1 -1
  186. package/dist/src/backend/orchestration/snapshot-reconciliation.orchestrator.d.ts +18 -11
  187. package/dist/src/backend/orchestration/snapshot-reconciliation.orchestrator.d.ts.map +1 -1
  188. package/dist/src/backend/orchestration/snapshot-reconciliation.orchestrator.js +59 -49
  189. package/dist/src/backend/orchestration/snapshot-reconciliation.orchestrator.js.map +1 -1
  190. package/dist/src/backend/orchestration/snapshot-reconciliation.orchestrator.test.js +156 -24
  191. package/dist/src/backend/orchestration/snapshot-reconciliation.orchestrator.test.js.map +1 -1
  192. package/dist/src/backend/orchestration/types.d.ts +2 -2
  193. package/dist/src/backend/orchestration/types.d.ts.map +1 -1
  194. package/dist/src/backend/orchestration/workspace-archive.orchestrator.d.ts +13 -9
  195. package/dist/src/backend/orchestration/workspace-archive.orchestrator.d.ts.map +1 -1
  196. package/dist/src/backend/orchestration/workspace-archive.orchestrator.js +8 -10
  197. package/dist/src/backend/orchestration/workspace-archive.orchestrator.js.map +1 -1
  198. package/dist/src/backend/orchestration/workspace-archive.orchestrator.test.js +44 -13
  199. package/dist/src/backend/orchestration/workspace-archive.orchestrator.test.js.map +1 -1
  200. package/dist/src/backend/orchestration/workspace-children.orchestrator.d.ts.map +1 -1
  201. package/dist/src/backend/orchestration/workspace-children.orchestrator.js +11 -12
  202. package/dist/src/backend/orchestration/workspace-children.orchestrator.js.map +1 -1
  203. package/dist/src/backend/orchestration/workspace-children.orchestrator.test.js +41 -21
  204. package/dist/src/backend/orchestration/workspace-children.orchestrator.test.js.map +1 -1
  205. package/dist/src/backend/orchestration/workspace-init-issue-prompts.js +3 -3
  206. package/dist/src/backend/orchestration/workspace-init-issue-prompts.js.map +1 -1
  207. package/dist/src/backend/orchestration/workspace-init-script-pipeline.d.ts +1 -1
  208. package/dist/src/backend/orchestration/workspace-init-script-pipeline.d.ts.map +1 -1
  209. package/dist/src/backend/orchestration/workspace-init-script-pipeline.js.map +1 -1
  210. package/dist/src/backend/orchestration/workspace-init.orchestrator.d.ts.map +1 -1
  211. package/dist/src/backend/orchestration/workspace-init.orchestrator.js +34 -20
  212. package/dist/src/backend/orchestration/workspace-init.orchestrator.js.map +1 -1
  213. package/dist/src/backend/orchestration/workspace-init.orchestrator.test.js +278 -102
  214. package/dist/src/backend/orchestration/workspace-init.orchestrator.test.js.map +1 -1
  215. package/dist/src/backend/orchestration/workspace-notification-delivery.orchestrator.d.ts +24 -0
  216. package/dist/src/backend/orchestration/workspace-notification-delivery.orchestrator.d.ts.map +1 -0
  217. package/dist/src/backend/orchestration/workspace-notification-delivery.orchestrator.js +66 -0
  218. package/dist/src/backend/orchestration/workspace-notification-delivery.orchestrator.js.map +1 -0
  219. package/dist/src/backend/orchestration/workspace-notification-delivery.orchestrator.test.d.ts +2 -0
  220. package/dist/src/backend/orchestration/workspace-notification-delivery.orchestrator.test.d.ts.map +1 -0
  221. package/dist/src/backend/orchestration/workspace-notification-delivery.orchestrator.test.js +235 -0
  222. package/dist/src/backend/orchestration/workspace-notification-delivery.orchestrator.test.js.map +1 -0
  223. package/dist/src/backend/routers/health.router.d.ts.map +1 -1
  224. package/dist/src/backend/routers/health.router.js +5 -5
  225. package/dist/src/backend/routers/health.router.js.map +1 -1
  226. package/dist/src/backend/routers/health.router.test.js +3 -5
  227. package/dist/src/backend/routers/health.router.test.js.map +1 -1
  228. package/dist/src/backend/routers/websocket/chat-connection-registry.d.ts +15 -6
  229. package/dist/src/backend/routers/websocket/chat-connection-registry.d.ts.map +1 -1
  230. package/dist/src/backend/routers/websocket/chat-connection-registry.js +80 -33
  231. package/dist/src/backend/routers/websocket/chat-connection-registry.js.map +1 -1
  232. package/dist/src/backend/routers/websocket/chat-connection-registry.test.js +60 -21
  233. package/dist/src/backend/routers/websocket/chat-connection-registry.test.js.map +1 -1
  234. package/dist/src/backend/routers/websocket/chat.handler.d.ts.map +1 -1
  235. package/dist/src/backend/routers/websocket/chat.handler.js +4 -3
  236. package/dist/src/backend/routers/websocket/chat.handler.js.map +1 -1
  237. package/dist/src/backend/routers/websocket/chat.handler.test.js +49 -4
  238. package/dist/src/backend/routers/websocket/chat.handler.test.js.map +1 -1
  239. package/dist/src/backend/routers/websocket/context-injection.test.js +450 -14
  240. package/dist/src/backend/routers/websocket/context-injection.test.js.map +1 -1
  241. package/dist/src/backend/routers/websocket/dev-logs.handler.d.ts.map +1 -1
  242. package/dist/src/backend/routers/websocket/dev-logs.handler.js +16 -3
  243. package/dist/src/backend/routers/websocket/dev-logs.handler.js.map +1 -1
  244. package/dist/src/backend/routers/websocket/index.d.ts +2 -1
  245. package/dist/src/backend/routers/websocket/index.d.ts.map +1 -1
  246. package/dist/src/backend/routers/websocket/index.js +2 -1
  247. package/dist/src/backend/routers/websocket/index.js.map +1 -1
  248. package/dist/src/backend/routers/websocket/post-run-logs.handler.d.ts.map +1 -1
  249. package/dist/src/backend/routers/websocket/post-run-logs.handler.js +6 -3
  250. package/dist/src/backend/routers/websocket/post-run-logs.handler.js.map +1 -1
  251. package/dist/src/backend/routers/websocket/snapshots.handler.d.ts +7 -5
  252. package/dist/src/backend/routers/websocket/snapshots.handler.d.ts.map +1 -1
  253. package/dist/src/backend/routers/websocket/snapshots.handler.js +50 -23
  254. package/dist/src/backend/routers/websocket/snapshots.handler.js.map +1 -1
  255. package/dist/src/backend/routers/websocket/snapshots.handler.test.js +128 -62
  256. package/dist/src/backend/routers/websocket/snapshots.handler.test.js.map +1 -1
  257. package/dist/src/backend/routers/websocket/terminal.handler.d.ts.map +1 -1
  258. package/dist/src/backend/routers/websocket/terminal.handler.js +35 -26
  259. package/dist/src/backend/routers/websocket/terminal.handler.js.map +1 -1
  260. package/dist/src/backend/routers/websocket/terminal.handler.test.js +35 -9
  261. package/dist/src/backend/routers/websocket/terminal.handler.test.js.map +1 -1
  262. package/dist/src/backend/routers/websocket/upgrade-utils.d.ts +4 -4
  263. package/dist/src/backend/routers/websocket/upgrade-utils.d.ts.map +1 -1
  264. package/dist/src/backend/routers/websocket/upgrade-utils.js +1 -1
  265. package/dist/src/backend/routers/websocket/upgrade-utils.js.map +1 -1
  266. package/dist/src/backend/routers/websocket/upgrade-utils.test.js +39 -2
  267. package/dist/src/backend/routers/websocket/upgrade-utils.test.js.map +1 -1
  268. package/dist/src/backend/routers/websocket/websocket.integration.test.js +47 -9
  269. package/dist/src/backend/routers/websocket/websocket.integration.test.js.map +1 -1
  270. package/dist/src/backend/server.d.ts +3 -2
  271. package/dist/src/backend/server.d.ts.map +1 -1
  272. package/dist/src/backend/server.js +37 -37
  273. package/dist/src/backend/server.js.map +1 -1
  274. package/dist/src/backend/server.upgrade.test.js +177 -137
  275. package/dist/src/backend/server.upgrade.test.js.map +1 -1
  276. package/dist/src/backend/services/auto-iteration/service/auto-iteration.service.d.ts +4 -0
  277. package/dist/src/backend/services/auto-iteration/service/auto-iteration.service.d.ts.map +1 -1
  278. package/dist/src/backend/services/auto-iteration/service/auto-iteration.service.js +66 -18
  279. package/dist/src/backend/services/auto-iteration/service/auto-iteration.service.js.map +1 -1
  280. package/dist/src/backend/services/auto-iteration/service/auto-iteration.service.test.js +139 -2
  281. package/dist/src/backend/services/auto-iteration/service/auto-iteration.service.test.js.map +1 -1
  282. package/dist/src/backend/services/auto-iteration/service/bridges.d.ts +1 -0
  283. package/dist/src/backend/services/auto-iteration/service/bridges.d.ts.map +1 -1
  284. package/dist/src/backend/services/auto-iteration/service/git-ops.d.ts.map +1 -1
  285. package/dist/src/backend/services/auto-iteration/service/git-ops.js +32 -11
  286. package/dist/src/backend/services/auto-iteration/service/git-ops.js.map +1 -1
  287. package/dist/src/backend/services/auto-iteration/service/git-ops.test.d.ts +2 -0
  288. package/dist/src/backend/services/auto-iteration/service/git-ops.test.d.ts.map +1 -0
  289. package/dist/src/backend/services/auto-iteration/service/git-ops.test.js +59 -0
  290. package/dist/src/backend/services/auto-iteration/service/git-ops.test.js.map +1 -0
  291. package/dist/src/backend/services/check-service-accessor-boundaries.test.d.ts +2 -0
  292. package/dist/src/backend/services/check-service-accessor-boundaries.test.d.ts.map +1 -0
  293. package/dist/src/backend/services/check-service-accessor-boundaries.test.js +386 -0
  294. package/dist/src/backend/services/check-service-accessor-boundaries.test.js.map +1 -0
  295. package/dist/src/backend/services/check-single-writer.test.js +76 -2
  296. package/dist/src/backend/services/check-single-writer.test.js.map +1 -1
  297. package/dist/src/backend/services/config.service.d.ts +7 -0
  298. package/dist/src/backend/services/config.service.d.ts.map +1 -1
  299. package/dist/src/backend/services/config.service.js +9 -0
  300. package/dist/src/backend/services/config.service.js.map +1 -1
  301. package/dist/src/backend/services/config.service.test.js +41 -0
  302. package/dist/src/backend/services/config.service.test.js.map +1 -1
  303. package/dist/src/backend/services/constants.d.ts +3 -0
  304. package/dist/src/backend/services/constants.d.ts.map +1 -1
  305. package/dist/src/backend/services/constants.js +3 -0
  306. package/dist/src/backend/services/constants.js.map +1 -1
  307. package/dist/src/backend/services/decision-log/index.d.ts +1 -1
  308. package/dist/src/backend/services/decision-log/index.d.ts.map +1 -1
  309. package/dist/src/backend/services/decision-log/index.js +1 -1
  310. package/dist/src/backend/services/decision-log/index.js.map +1 -1
  311. package/dist/src/backend/services/decision-log/service/decision-log-domain-exports.test.d.ts +2 -0
  312. package/dist/src/backend/services/decision-log/service/decision-log-domain-exports.test.d.ts.map +1 -0
  313. package/dist/src/backend/services/decision-log/service/decision-log-domain-exports.test.js +8 -0
  314. package/dist/src/backend/services/decision-log/service/decision-log-domain-exports.test.js.map +1 -0
  315. package/dist/src/backend/{orchestration/decision-log-query.service.d.ts → services/decision-log/service/decision-log.service.d.ts} +4 -4
  316. package/dist/src/backend/services/decision-log/service/decision-log.service.d.ts.map +1 -0
  317. package/dist/src/backend/{orchestration/decision-log-query.service.js → services/decision-log/service/decision-log.service.js} +4 -4
  318. package/dist/src/backend/services/decision-log/service/decision-log.service.js.map +1 -0
  319. package/dist/src/backend/services/decision-log/service/decision-log.service.test.d.ts +2 -0
  320. package/dist/src/backend/services/decision-log/service/decision-log.service.test.d.ts.map +1 -0
  321. package/dist/src/backend/services/decision-log/service/decision-log.service.test.js +45 -0
  322. package/dist/src/backend/services/decision-log/service/decision-log.service.test.js.map +1 -0
  323. package/dist/src/backend/services/decision-log/service/index.d.ts +2 -0
  324. package/dist/src/backend/services/decision-log/service/index.d.ts.map +1 -0
  325. package/dist/src/backend/services/decision-log/service/index.js +2 -0
  326. package/dist/src/backend/services/decision-log/service/index.js.map +1 -0
  327. package/dist/src/backend/services/env-schemas.d.ts +3 -0
  328. package/dist/src/backend/services/env-schemas.d.ts.map +1 -1
  329. package/dist/src/backend/services/env-schemas.js +3 -0
  330. package/dist/src/backend/services/env-schemas.js.map +1 -1
  331. package/dist/src/backend/services/github/service/bridges.d.ts +51 -0
  332. package/dist/src/backend/services/github/service/bridges.d.ts.map +1 -1
  333. package/dist/src/backend/services/github/service/github-cli/schemas.d.ts +30 -6
  334. package/dist/src/backend/services/github/service/github-cli/schemas.d.ts.map +1 -1
  335. package/dist/src/backend/services/github/service/github-cli/schemas.js +18 -0
  336. package/dist/src/backend/services/github/service/github-cli/schemas.js.map +1 -1
  337. package/dist/src/backend/services/github/service/github-cli/types.d.ts +6 -0
  338. package/dist/src/backend/services/github/service/github-cli/types.d.ts.map +1 -1
  339. package/dist/src/backend/services/github/service/github-cli.service.d.ts +3 -6
  340. package/dist/src/backend/services/github/service/github-cli.service.d.ts.map +1 -1
  341. package/dist/src/backend/services/github/service/github-cli.service.js +39 -33
  342. package/dist/src/backend/services/github/service/github-cli.service.js.map +1 -1
  343. package/dist/src/backend/services/github/service/github-cli.service.test.js +63 -67
  344. package/dist/src/backend/services/github/service/github-cli.service.test.js.map +1 -1
  345. package/dist/src/backend/services/github/service/index.d.ts +2 -2
  346. package/dist/src/backend/services/github/service/index.d.ts.map +1 -1
  347. package/dist/src/backend/services/github/service/index.js +1 -1
  348. package/dist/src/backend/services/github/service/index.js.map +1 -1
  349. package/dist/src/backend/services/github/service/pr-fetch-registry.d.ts +13 -6
  350. package/dist/src/backend/services/github/service/pr-fetch-registry.d.ts.map +1 -1
  351. package/dist/src/backend/services/github/service/pr-fetch-registry.js +77 -12
  352. package/dist/src/backend/services/github/service/pr-fetch-registry.js.map +1 -1
  353. package/dist/src/backend/services/github/service/pr-fetch-registry.test.d.ts +2 -0
  354. package/dist/src/backend/services/github/service/pr-fetch-registry.test.d.ts.map +1 -0
  355. package/dist/src/backend/services/github/service/pr-fetch-registry.test.js +112 -0
  356. package/dist/src/backend/services/github/service/pr-fetch-registry.test.js.map +1 -0
  357. package/dist/src/backend/services/github/service/pr-snapshot.service.d.ts +19 -3
  358. package/dist/src/backend/services/github/service/pr-snapshot.service.d.ts.map +1 -1
  359. package/dist/src/backend/services/github/service/pr-snapshot.service.js +115 -16
  360. package/dist/src/backend/services/github/service/pr-snapshot.service.js.map +1 -1
  361. package/dist/src/backend/services/github/service/pr-snapshot.service.test.js +255 -9
  362. package/dist/src/backend/services/github/service/pr-snapshot.service.test.js.map +1 -1
  363. package/dist/src/backend/services/periodic-task/index.d.ts +0 -1
  364. package/dist/src/backend/services/periodic-task/index.d.ts.map +1 -1
  365. package/dist/src/backend/services/periodic-task/index.js +0 -1
  366. package/dist/src/backend/services/periodic-task/index.js.map +1 -1
  367. package/dist/src/backend/services/periodic-task/resources/periodic-task.accessor.d.ts +2 -2
  368. package/dist/src/backend/services/periodic-task/resources/periodic-task.accessor.d.ts.map +1 -1
  369. package/dist/src/backend/services/periodic-task/resources/periodic-task.accessor.js +17 -10
  370. package/dist/src/backend/services/periodic-task/resources/periodic-task.accessor.js.map +1 -1
  371. package/dist/src/backend/services/periodic-task/resources/periodic-task.accessor.test.js +29 -10
  372. package/dist/src/backend/services/periodic-task/resources/periodic-task.accessor.test.js.map +1 -1
  373. package/dist/src/backend/services/periodic-task/service/periodic-task.service.d.ts +103 -0
  374. package/dist/src/backend/services/periodic-task/service/periodic-task.service.d.ts.map +1 -1
  375. package/dist/src/backend/services/periodic-task/service/periodic-task.service.js +47 -1
  376. package/dist/src/backend/services/periodic-task/service/periodic-task.service.js.map +1 -1
  377. package/dist/src/backend/services/periodic-task/service/periodic-task.service.test.js +104 -8
  378. package/dist/src/backend/services/periodic-task/service/periodic-task.service.test.js.map +1 -1
  379. package/dist/src/backend/services/ratchet/service/bridges.d.ts +34 -4
  380. package/dist/src/backend/services/ratchet/service/bridges.d.ts.map +1 -1
  381. package/dist/src/backend/services/ratchet/service/fixer-session.service.d.ts +6 -1
  382. package/dist/src/backend/services/ratchet/service/fixer-session.service.d.ts.map +1 -1
  383. package/dist/src/backend/services/ratchet/service/fixer-session.service.js +47 -8
  384. package/dist/src/backend/services/ratchet/service/fixer-session.service.js.map +1 -1
  385. package/dist/src/backend/services/ratchet/service/fixer-session.service.test.js +131 -29
  386. package/dist/src/backend/services/ratchet/service/fixer-session.service.test.js.map +1 -1
  387. package/dist/src/backend/services/ratchet/service/index.d.ts +3 -3
  388. package/dist/src/backend/services/ratchet/service/index.d.ts.map +1 -1
  389. package/dist/src/backend/services/ratchet/service/index.js +1 -1
  390. package/dist/src/backend/services/ratchet/service/index.js.map +1 -1
  391. package/dist/src/backend/services/ratchet/service/ratchet-active-session.helpers.d.ts +5 -1
  392. package/dist/src/backend/services/ratchet/service/ratchet-active-session.helpers.d.ts.map +1 -1
  393. package/dist/src/backend/services/ratchet/service/ratchet-active-session.helpers.js +9 -6
  394. package/dist/src/backend/services/ratchet/service/ratchet-active-session.helpers.js.map +1 -1
  395. package/dist/src/backend/services/ratchet/service/ratchet-fixer-dispatch.helpers.d.ts +3 -0
  396. package/dist/src/backend/services/ratchet/service/ratchet-fixer-dispatch.helpers.d.ts.map +1 -1
  397. package/dist/src/backend/services/ratchet/service/ratchet-fixer-dispatch.helpers.js +47 -10
  398. package/dist/src/backend/services/ratchet/service/ratchet-fixer-dispatch.helpers.js.map +1 -1
  399. package/dist/src/backend/services/ratchet/service/ratchet-pr-state.helpers.d.ts +8 -3
  400. package/dist/src/backend/services/ratchet/service/ratchet-pr-state.helpers.d.ts.map +1 -1
  401. package/dist/src/backend/services/ratchet/service/ratchet-pr-state.helpers.js +63 -27
  402. package/dist/src/backend/services/ratchet/service/ratchet-pr-state.helpers.js.map +1 -1
  403. package/dist/src/backend/services/ratchet/service/ratchet-pr-state.helpers.test.js +325 -15
  404. package/dist/src/backend/services/ratchet/service/ratchet-pr-state.helpers.test.js.map +1 -1
  405. package/dist/src/backend/services/ratchet/service/ratchet-provider-resolver.service.d.ts.map +1 -1
  406. package/dist/src/backend/services/ratchet/service/ratchet-provider-resolver.service.js +4 -4
  407. package/dist/src/backend/services/ratchet/service/ratchet-provider-resolver.service.js.map +1 -1
  408. package/dist/src/backend/services/ratchet/service/ratchet-provider-resolver.service.test.js +14 -14
  409. package/dist/src/backend/services/ratchet/service/ratchet-provider-resolver.service.test.js.map +1 -1
  410. package/dist/src/backend/services/ratchet/service/ratchet.service.d.ts +8 -1
  411. package/dist/src/backend/services/ratchet/service/ratchet.service.d.ts.map +1 -1
  412. package/dist/src/backend/services/ratchet/service/ratchet.service.js +54 -29
  413. package/dist/src/backend/services/ratchet/service/ratchet.service.js.map +1 -1
  414. package/dist/src/backend/services/ratchet/service/ratchet.service.test.js +577 -194
  415. package/dist/src/backend/services/ratchet/service/ratchet.service.test.js.map +1 -1
  416. package/dist/src/backend/services/ratchet/service/ratchet.types.d.ts +2 -2
  417. package/dist/src/backend/services/ratchet/service/ratchet.types.d.ts.map +1 -1
  418. package/dist/src/backend/services/registry.d.ts +43 -0
  419. package/dist/src/backend/services/registry.d.ts.map +1 -1
  420. package/dist/src/backend/services/registry.js +42 -0
  421. package/dist/src/backend/services/registry.js.map +1 -1
  422. package/dist/src/backend/services/resources.integration.test.js +189 -96
  423. package/dist/src/backend/services/resources.integration.test.js.map +1 -1
  424. package/dist/src/backend/services/run-script/service/bridges.d.ts +4 -0
  425. package/dist/src/backend/services/run-script/service/bridges.d.ts.map +1 -1
  426. package/dist/src/backend/services/{factory-config.service.d.ts → run-script/service/factory-config.service.d.ts} +1 -1
  427. package/dist/src/backend/services/run-script/service/factory-config.service.d.ts.map +1 -0
  428. package/dist/src/backend/services/{factory-config.service.js → run-script/service/factory-config.service.js} +1 -1
  429. package/dist/src/backend/services/run-script/service/factory-config.service.js.map +1 -0
  430. package/dist/src/backend/services/run-script/service/factory-config.service.test.d.ts.map +1 -0
  431. package/dist/src/backend/services/{factory-config.service.test.js → run-script/service/factory-config.service.test.js} +1 -1
  432. package/dist/src/backend/services/run-script/service/factory-config.service.test.js.map +1 -0
  433. package/dist/src/backend/services/run-script/service/index.d.ts +2 -0
  434. package/dist/src/backend/services/run-script/service/index.d.ts.map +1 -1
  435. package/dist/src/backend/services/run-script/service/index.js +2 -0
  436. package/dist/src/backend/services/run-script/service/index.js.map +1 -1
  437. package/dist/src/backend/services/run-script/service/port-allocation.service.d.ts.map +1 -0
  438. package/dist/src/backend/services/run-script/service/port-allocation.service.js.map +1 -0
  439. package/dist/src/backend/services/run-script/service/port-allocation.service.test.d.ts.map +1 -0
  440. package/dist/src/backend/services/run-script/service/port-allocation.service.test.js.map +1 -0
  441. package/dist/src/backend/services/{run-script-config-persistence.service.d.ts → run-script/service/run-script-config-persistence.service.d.ts} +10 -1
  442. package/dist/src/backend/services/run-script/service/run-script-config-persistence.service.d.ts.map +1 -0
  443. package/dist/src/backend/services/{run-script-config-persistence.service.js → run-script/service/run-script-config-persistence.service.js} +46 -2
  444. package/dist/src/backend/services/run-script/service/run-script-config-persistence.service.js.map +1 -0
  445. package/dist/src/backend/services/run-script/service/run-script-config-persistence.service.test.d.ts.map +1 -0
  446. package/dist/src/backend/services/{run-script-config-persistence.service.test.js → run-script/service/run-script-config-persistence.service.test.js} +47 -0
  447. package/dist/src/backend/services/run-script/service/run-script-config-persistence.service.test.js.map +1 -0
  448. package/dist/src/backend/services/run-script/service/run-script-domain-exports.test.js +11 -1
  449. package/dist/src/backend/services/run-script/service/run-script-domain-exports.test.js.map +1 -1
  450. package/dist/src/backend/services/run-script/service/run-script-process-utils.d.ts.map +1 -1
  451. package/dist/src/backend/services/run-script/service/run-script-process-utils.js +1 -1
  452. package/dist/src/backend/services/run-script/service/run-script-process-utils.js.map +1 -1
  453. package/dist/src/backend/services/run-script/service/run-script-proxy.service.d.ts.map +1 -0
  454. package/dist/src/backend/services/{run-script-proxy.service.js → run-script/service/run-script-proxy.service.js} +3 -3
  455. package/dist/src/backend/services/run-script/service/run-script-proxy.service.js.map +1 -0
  456. package/dist/src/backend/services/run-script/service/run-script-proxy.service.test.d.ts.map +1 -0
  457. package/dist/src/backend/services/{run-script-proxy.service.test.js → run-script/service/run-script-proxy.service.test.js} +3 -3
  458. package/dist/src/backend/services/run-script/service/run-script-proxy.service.test.js.map +1 -0
  459. package/dist/src/backend/services/run-script/service/run-script-state-machine.service.d.ts +9 -9
  460. package/dist/src/backend/services/run-script/service/run-script-state-machine.service.d.ts.map +1 -1
  461. package/dist/src/backend/services/run-script/service/run-script-state-machine.service.js +8 -8
  462. package/dist/src/backend/services/run-script/service/run-script-state-machine.service.js.map +1 -1
  463. package/dist/src/backend/services/run-script/service/run-script.service.js +16 -16
  464. package/dist/src/backend/services/run-script/service/run-script.service.js.map +1 -1
  465. package/dist/src/backend/services/run-script/service/run-script.service.test.js +5 -5
  466. package/dist/src/backend/services/run-script/service/run-script.service.test.js.map +1 -1
  467. package/dist/src/backend/services/run-script/service/startup-script.service.d.ts.map +1 -1
  468. package/dist/src/backend/services/run-script/service/startup-script.service.js +4 -7
  469. package/dist/src/backend/services/run-script/service/startup-script.service.js.map +1 -1
  470. package/dist/src/backend/services/run-script/service/startup-script.service.test.js +5 -1
  471. package/dist/src/backend/services/run-script/service/startup-script.service.test.js.map +1 -1
  472. package/dist/src/backend/services/service-registry-check.helpers.d.ts +6 -0
  473. package/dist/src/backend/services/service-registry-check.helpers.d.ts.map +1 -0
  474. package/dist/src/backend/services/service-registry-check.helpers.js +22 -0
  475. package/dist/src/backend/services/service-registry-check.helpers.js.map +1 -0
  476. package/dist/src/backend/services/service-registry-check.test.d.ts +2 -0
  477. package/dist/src/backend/services/service-registry-check.test.d.ts.map +1 -0
  478. package/dist/src/backend/services/service-registry-check.test.js +36 -0
  479. package/dist/src/backend/services/service-registry-check.test.js.map +1 -0
  480. package/dist/src/backend/services/session/index.d.ts +0 -2
  481. package/dist/src/backend/services/session/index.d.ts.map +1 -1
  482. package/dist/src/backend/services/session/index.js +0 -2
  483. package/dist/src/backend/services/session/index.js.map +1 -1
  484. package/dist/src/backend/services/session/resources/agent-session.accessor.d.ts +4 -3
  485. package/dist/src/backend/services/session/resources/agent-session.accessor.d.ts.map +1 -1
  486. package/dist/src/backend/services/session/resources/agent-session.accessor.js +6 -15
  487. package/dist/src/backend/services/session/resources/agent-session.accessor.js.map +1 -1
  488. package/dist/src/backend/services/session/resources/agent-session.accessor.test.js +11 -15
  489. package/dist/src/backend/services/session/resources/agent-session.accessor.test.js.map +1 -1
  490. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.d.ts.map +1 -1
  491. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.js +25 -9
  492. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.js.map +1 -1
  493. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.test.js +109 -26
  494. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.test.js.map +1 -1
  495. package/dist/src/backend/services/session/service/acp/child-workspace-mcp-server.js +2 -2
  496. package/dist/src/backend/services/session/service/acp/child-workspace-mcp-server.js.map +1 -1
  497. package/dist/src/backend/services/session/service/acp/child-workspace-mcp-server.test.d.ts +2 -0
  498. package/dist/src/backend/services/session/service/acp/child-workspace-mcp-server.test.d.ts.map +1 -0
  499. package/dist/src/backend/services/session/service/acp/child-workspace-mcp-server.test.js +119 -0
  500. package/dist/src/backend/services/session/service/acp/child-workspace-mcp-server.test.js.map +1 -0
  501. package/dist/src/backend/services/session/service/bridges.d.ts +1 -0
  502. package/dist/src/backend/services/session/service/bridges.d.ts.map +1 -1
  503. package/dist/src/backend/services/session/service/chat/chat-message-handlers.service.js +3 -3
  504. package/dist/src/backend/services/session/service/chat/chat-message-handlers.service.js.map +1 -1
  505. package/dist/src/backend/services/session/service/chat/chat-message-handlers.service.test.js +16 -16
  506. package/dist/src/backend/services/session/service/chat/chat-message-handlers.service.test.js.map +1 -1
  507. package/dist/src/backend/services/session/service/data/session-data.service.d.ts +18 -166
  508. package/dist/src/backend/services/session/service/data/session-data.service.d.ts.map +1 -1
  509. package/dist/src/backend/services/session/service/data/session-data.service.js +68 -36
  510. package/dist/src/backend/services/session/service/data/session-data.service.js.map +1 -1
  511. package/dist/src/backend/services/session/service/data/session-data.service.test.d.ts +2 -0
  512. package/dist/src/backend/services/session/service/data/session-data.service.test.d.ts.map +1 -0
  513. package/dist/src/backend/services/session/service/data/session-data.service.test.js +103 -0
  514. package/dist/src/backend/services/session/service/data/session-data.service.test.js.map +1 -0
  515. package/dist/src/backend/services/session/service/data/session-provider-resolver.service.d.ts +9 -0
  516. package/dist/src/backend/services/session/service/data/session-provider-resolver.service.d.ts.map +1 -1
  517. package/dist/src/backend/services/session/service/data/session-provider-resolver.service.js +15 -5
  518. package/dist/src/backend/services/session/service/data/session-provider-resolver.service.js.map +1 -1
  519. package/dist/src/backend/services/session/service/data/session-provider-resolver.service.test.js +23 -10
  520. package/dist/src/backend/services/session/service/data/session-provider-resolver.service.test.js.map +1 -1
  521. package/dist/src/backend/services/session/service/index.d.ts +3 -2
  522. package/dist/src/backend/services/session/service/index.d.ts.map +1 -1
  523. package/dist/src/backend/services/session/service/index.js +2 -2
  524. package/dist/src/backend/services/session/service/index.js.map +1 -1
  525. package/dist/src/backend/services/session/service/lifecycle/acp-event-processor.d.ts +15 -4
  526. package/dist/src/backend/services/session/service/lifecycle/acp-event-processor.d.ts.map +1 -1
  527. package/dist/src/backend/services/session/service/lifecycle/acp-event-processor.js +63 -6
  528. package/dist/src/backend/services/session/service/lifecycle/acp-event-processor.js.map +1 -1
  529. package/dist/src/backend/services/session/service/lifecycle/acp-event-processor.text-streaming.test.d.ts +2 -0
  530. package/dist/src/backend/services/session/service/lifecycle/acp-event-processor.text-streaming.test.d.ts.map +1 -0
  531. package/dist/src/backend/services/session/service/lifecycle/acp-event-processor.text-streaming.test.js +230 -0
  532. package/dist/src/backend/services/session/service/lifecycle/acp-event-processor.text-streaming.test.js.map +1 -0
  533. package/dist/src/backend/services/session/service/lifecycle/session-pr-discovery.service.d.ts +2 -1
  534. package/dist/src/backend/services/session/service/lifecycle/session-pr-discovery.service.d.ts.map +1 -1
  535. package/dist/src/backend/services/session/service/lifecycle/session-pr-discovery.service.js +3 -28
  536. package/dist/src/backend/services/session/service/lifecycle/session-pr-discovery.service.js.map +1 -1
  537. package/dist/src/backend/services/session/service/lifecycle/session-pr-discovery.service.test.d.ts +2 -0
  538. package/dist/src/backend/services/session/service/lifecycle/session-pr-discovery.service.test.d.ts.map +1 -0
  539. package/dist/src/backend/services/session/service/lifecycle/session-pr-discovery.service.test.js +33 -0
  540. package/dist/src/backend/services/session/service/lifecycle/session-pr-discovery.service.test.js.map +1 -0
  541. package/dist/src/backend/services/session/service/lifecycle/session.config.service.d.ts.map +1 -1
  542. package/dist/src/backend/services/session/service/lifecycle/session.config.service.js +15 -4
  543. package/dist/src/backend/services/session/service/lifecycle/session.config.service.js.map +1 -1
  544. package/dist/src/backend/services/session/service/lifecycle/session.config.service.test.js +59 -6
  545. package/dist/src/backend/services/session/service/lifecycle/session.config.service.test.js.map +1 -1
  546. package/dist/src/backend/services/session/service/lifecycle/session.lifecycle.service.d.ts.map +1 -1
  547. package/dist/src/backend/services/session/service/lifecycle/session.lifecycle.service.js +14 -7
  548. package/dist/src/backend/services/session/service/lifecycle/session.lifecycle.service.js.map +1 -1
  549. package/dist/src/backend/services/session/service/lifecycle/session.lifecycle.service.test.js +74 -44
  550. package/dist/src/backend/services/session/service/lifecycle/session.lifecycle.service.test.js.map +1 -1
  551. package/dist/src/backend/services/session/service/lifecycle/session.prompt-builder.d.ts +5 -0
  552. package/dist/src/backend/services/session/service/lifecycle/session.prompt-builder.d.ts.map +1 -1
  553. package/dist/src/backend/services/session/service/lifecycle/session.prompt-builder.js +19 -11
  554. package/dist/src/backend/services/session/service/lifecycle/session.prompt-builder.js.map +1 -1
  555. package/dist/src/backend/services/session/service/lifecycle/session.prompt-builder.test.js +32 -1
  556. package/dist/src/backend/services/session/service/lifecycle/session.prompt-builder.test.js.map +1 -1
  557. package/dist/src/backend/services/session/service/lifecycle/session.repository.d.ts +1 -1
  558. package/dist/src/backend/services/session/service/lifecycle/session.repository.d.ts.map +1 -1
  559. package/dist/src/backend/services/session/service/lifecycle/session.repository.js +3 -3
  560. package/dist/src/backend/services/session/service/lifecycle/session.repository.js.map +1 -1
  561. package/dist/src/backend/services/session/service/lifecycle/session.repository.test.js +1 -1
  562. package/dist/src/backend/services/session/service/lifecycle/session.repository.test.js.map +1 -1
  563. package/dist/src/backend/services/session/service/lifecycle/session.service.d.ts.map +1 -1
  564. package/dist/src/backend/services/session/service/lifecycle/session.service.js +2 -0
  565. package/dist/src/backend/services/session/service/lifecycle/session.service.js.map +1 -1
  566. package/dist/src/backend/services/session/service/lifecycle/session.service.test.js +18 -2
  567. package/dist/src/backend/services/session/service/lifecycle/session.service.test.js.map +1 -1
  568. package/dist/src/backend/services/session/service/session-domain.service.d.ts.map +1 -1
  569. package/dist/src/backend/services/session/service/session-domain.service.js +2 -1
  570. package/dist/src/backend/services/session/service/session-domain.service.js.map +1 -1
  571. package/dist/src/backend/services/session/service/store/session-queue.test.js +1 -0
  572. package/dist/src/backend/services/session/service/store/session-queue.test.js.map +1 -1
  573. package/dist/src/backend/services/session/service/store/session-replay-builder.d.ts.map +1 -1
  574. package/dist/src/backend/services/session/service/store/session-replay-builder.js +2 -1
  575. package/dist/src/backend/services/session/service/store/session-replay-builder.js.map +1 -1
  576. package/dist/src/backend/services/session/service/store/session-replay-builder.test.js +13 -0
  577. package/dist/src/backend/services/session/service/store/session-replay-builder.test.js.map +1 -1
  578. package/dist/src/backend/services/session/service/store/session-runtime-machine.test.js +1 -0
  579. package/dist/src/backend/services/session/service/store/session-runtime-machine.test.js.map +1 -1
  580. package/dist/src/backend/services/session/service/store/session-store-registry.d.ts.map +1 -1
  581. package/dist/src/backend/services/session/service/store/session-store-registry.js +1 -0
  582. package/dist/src/backend/services/session/service/store/session-store-registry.js.map +1 -1
  583. package/dist/src/backend/services/session/service/store/session-store.types.d.ts +1 -0
  584. package/dist/src/backend/services/session/service/store/session-store.types.d.ts.map +1 -1
  585. package/dist/src/backend/services/session/service/store/session-transcript.d.ts +1 -0
  586. package/dist/src/backend/services/session/service/store/session-transcript.d.ts.map +1 -1
  587. package/dist/src/backend/services/session/service/store/session-transcript.js +83 -15
  588. package/dist/src/backend/services/session/service/store/session-transcript.js.map +1 -1
  589. package/dist/src/backend/services/session/service/store/session-transcript.test.js +148 -30
  590. package/dist/src/backend/services/session/service/store/session-transcript.test.js.map +1 -1
  591. package/dist/src/backend/services/session/service/store/slash-command-cache.service.d.ts.map +1 -1
  592. package/dist/src/backend/services/session/service/store/slash-command-cache.service.js +23 -18
  593. package/dist/src/backend/services/session/service/store/slash-command-cache.service.js.map +1 -1
  594. package/dist/src/backend/services/session/service/store/slash-command-cache.service.test.js +70 -19
  595. package/dist/src/backend/services/session/service/store/slash-command-cache.service.test.js.map +1 -1
  596. package/dist/src/backend/services/session/types.d.ts +25 -0
  597. package/dist/src/backend/services/session/types.d.ts.map +1 -0
  598. package/dist/src/backend/services/session/types.js +2 -0
  599. package/dist/src/backend/services/session/types.js.map +1 -0
  600. package/dist/src/backend/services/settings/index.d.ts +1 -3
  601. package/dist/src/backend/services/settings/index.d.ts.map +1 -1
  602. package/dist/src/backend/services/settings/index.js +1 -3
  603. package/dist/src/backend/services/settings/index.js.map +1 -1
  604. package/dist/src/backend/services/settings/resources/user-settings.accessor.d.ts +3 -1
  605. package/dist/src/backend/services/settings/resources/user-settings.accessor.d.ts.map +1 -1
  606. package/dist/src/backend/services/settings/resources/user-settings.accessor.js +9 -0
  607. package/dist/src/backend/services/settings/resources/user-settings.accessor.js.map +1 -1
  608. package/dist/src/backend/services/settings/service/health.service.d.ts +6 -0
  609. package/dist/src/backend/services/settings/service/health.service.d.ts.map +1 -0
  610. package/dist/src/backend/services/settings/service/health.service.js +8 -0
  611. package/dist/src/backend/services/settings/service/health.service.js.map +1 -0
  612. package/dist/src/backend/services/settings/service/health.service.test.d.ts +2 -0
  613. package/dist/src/backend/services/settings/service/health.service.test.d.ts.map +1 -0
  614. package/dist/src/backend/services/settings/service/health.service.test.js +16 -0
  615. package/dist/src/backend/services/settings/service/health.service.test.js.map +1 -0
  616. package/dist/src/backend/services/settings/service/index.d.ts +3 -0
  617. package/dist/src/backend/services/settings/service/index.d.ts.map +1 -0
  618. package/dist/src/backend/services/settings/service/index.js +3 -0
  619. package/dist/src/backend/services/settings/service/index.js.map +1 -0
  620. package/dist/src/backend/services/settings/service/settings-domain-exports.test.d.ts +2 -0
  621. package/dist/src/backend/services/settings/service/settings-domain-exports.test.d.ts.map +1 -0
  622. package/dist/src/backend/services/settings/service/settings-domain-exports.test.js +9 -0
  623. package/dist/src/backend/services/settings/service/settings-domain-exports.test.js.map +1 -0
  624. package/dist/src/backend/services/settings/service/user-settings.service.d.ts +27 -0
  625. package/dist/src/backend/services/settings/service/user-settings.service.d.ts.map +1 -0
  626. package/dist/src/backend/services/settings/service/user-settings.service.js +23 -0
  627. package/dist/src/backend/services/settings/service/user-settings.service.js.map +1 -0
  628. package/dist/src/backend/services/settings/service/user-settings.service.test.d.ts +2 -0
  629. package/dist/src/backend/services/settings/service/user-settings.service.test.d.ts.map +1 -0
  630. package/dist/src/backend/services/settings/service/user-settings.service.test.js +58 -0
  631. package/dist/src/backend/services/settings/service/user-settings.service.test.js.map +1 -0
  632. package/dist/src/backend/services/terminal/index.d.ts +0 -1
  633. package/dist/src/backend/services/terminal/index.d.ts.map +1 -1
  634. package/dist/src/backend/services/terminal/index.js +0 -1
  635. package/dist/src/backend/services/terminal/index.js.map +1 -1
  636. package/dist/src/backend/services/terminal/service/index.d.ts +2 -0
  637. package/dist/src/backend/services/terminal/service/index.d.ts.map +1 -1
  638. package/dist/src/backend/services/terminal/service/index.js +1 -0
  639. package/dist/src/backend/services/terminal/service/index.js.map +1 -1
  640. package/dist/src/backend/services/terminal/service/terminal-domain-exports.test.js +4 -1
  641. package/dist/src/backend/services/terminal/service/terminal-domain-exports.test.js.map +1 -1
  642. package/dist/src/backend/services/terminal/service/terminal-session.service.d.ts +95 -0
  643. package/dist/src/backend/services/terminal/service/terminal-session.service.d.ts.map +1 -0
  644. package/dist/src/backend/services/terminal/service/terminal-session.service.js +43 -0
  645. package/dist/src/backend/services/terminal/service/terminal-session.service.js.map +1 -0
  646. package/dist/src/backend/services/terminal/service/terminal-session.service.test.d.ts +2 -0
  647. package/dist/src/backend/services/terminal/service/terminal-session.service.test.d.ts.map +1 -0
  648. package/dist/src/backend/services/terminal/service/terminal-session.service.test.js +46 -0
  649. package/dist/src/backend/services/terminal/service/terminal-session.service.test.js.map +1 -0
  650. package/dist/src/backend/services/workspace/index.d.ts +0 -3
  651. package/dist/src/backend/services/workspace/index.d.ts.map +1 -1
  652. package/dist/src/backend/services/workspace/index.js +0 -3
  653. package/dist/src/backend/services/workspace/index.js.map +1 -1
  654. package/dist/src/backend/services/workspace/resources/project.accessor.d.ts +1 -1
  655. package/dist/src/backend/services/workspace/resources/workspace.accessor.d.ts +66 -2
  656. package/dist/src/backend/services/workspace/resources/workspace.accessor.d.ts.map +1 -1
  657. package/dist/src/backend/services/workspace/resources/workspace.accessor.js +259 -2
  658. package/dist/src/backend/services/workspace/resources/workspace.accessor.js.map +1 -1
  659. package/dist/src/backend/services/workspace/resources/workspace.accessor.test.js +517 -0
  660. package/dist/src/backend/services/workspace/resources/workspace.accessor.test.js.map +1 -1
  661. package/dist/src/backend/services/workspace/service/bridges.d.ts +1 -2
  662. package/dist/src/backend/services/workspace/service/bridges.d.ts.map +1 -1
  663. package/dist/src/backend/services/workspace/service/index.d.ts +12 -1
  664. package/dist/src/backend/services/workspace/service/index.d.ts.map +1 -1
  665. package/dist/src/backend/services/workspace/service/index.js +11 -1
  666. package/dist/src/backend/services/workspace/service/index.js.map +1 -1
  667. package/dist/src/backend/services/workspace/service/lifecycle/creation.service.d.ts +9 -0
  668. package/dist/src/backend/services/workspace/service/lifecycle/creation.service.d.ts.map +1 -1
  669. package/dist/src/backend/services/workspace/service/lifecycle/creation.service.js +26 -36
  670. package/dist/src/backend/services/workspace/service/lifecycle/creation.service.js.map +1 -1
  671. package/dist/src/backend/services/workspace/service/lifecycle/creation.service.test.js +47 -10
  672. package/dist/src/backend/services/workspace/service/lifecycle/creation.service.test.js.map +1 -1
  673. package/dist/src/backend/services/workspace/service/lifecycle/data.service.d.ts +156 -122
  674. package/dist/src/backend/services/workspace/service/lifecycle/data.service.d.ts.map +1 -1
  675. package/dist/src/backend/services/workspace/service/lifecycle/data.service.js +27 -7
  676. package/dist/src/backend/services/workspace/service/lifecycle/data.service.js.map +1 -1
  677. package/dist/src/backend/services/workspace/service/lifecycle/data.service.test.js +14 -1
  678. package/dist/src/backend/services/workspace/service/lifecycle/data.service.test.js.map +1 -1
  679. package/dist/src/backend/services/workspace/service/lifecycle/state-machine.service.d.ts.map +1 -1
  680. package/dist/src/backend/services/workspace/service/lifecycle/state-machine.service.js +8 -1
  681. package/dist/src/backend/services/workspace/service/lifecycle/state-machine.service.js.map +1 -1
  682. package/dist/src/backend/services/workspace/service/lifecycle/state-machine.service.test.js +3 -5
  683. package/dist/src/backend/services/workspace/service/lifecycle/state-machine.service.test.js.map +1 -1
  684. package/dist/src/backend/services/workspace/service/lifecycle/workspace-auto-iteration.service.d.ts +206 -0
  685. package/dist/src/backend/services/workspace/service/lifecycle/workspace-auto-iteration.service.d.ts.map +1 -0
  686. package/dist/src/backend/services/workspace/service/lifecycle/workspace-auto-iteration.service.js +26 -0
  687. package/dist/src/backend/services/workspace/service/lifecycle/workspace-auto-iteration.service.js.map +1 -0
  688. package/dist/src/backend/services/workspace/service/lifecycle/workspace-pr-snapshot.service.d.ts +76 -0
  689. package/dist/src/backend/services/workspace/service/lifecycle/workspace-pr-snapshot.service.d.ts.map +1 -0
  690. package/dist/src/backend/services/workspace/service/lifecycle/workspace-pr-snapshot.service.js +32 -0
  691. package/dist/src/backend/services/workspace/service/lifecycle/workspace-pr-snapshot.service.js.map +1 -0
  692. package/dist/src/backend/services/workspace/service/lifecycle/workspace-pr-snapshot.service.test.d.ts +2 -0
  693. package/dist/src/backend/services/workspace/service/lifecycle/workspace-pr-snapshot.service.test.d.ts.map +1 -0
  694. package/dist/src/backend/services/workspace/service/lifecycle/workspace-pr-snapshot.service.test.js +65 -0
  695. package/dist/src/backend/services/workspace/service/lifecycle/workspace-pr-snapshot.service.test.js.map +1 -0
  696. package/dist/src/backend/services/workspace/service/lifecycle/workspace-ratchet.service.d.ts +243 -0
  697. package/dist/src/backend/services/workspace/service/lifecycle/workspace-ratchet.service.d.ts.map +1 -0
  698. package/dist/src/backend/services/workspace/service/lifecycle/workspace-ratchet.service.js +42 -0
  699. package/dist/src/backend/services/workspace/service/lifecycle/workspace-ratchet.service.js.map +1 -0
  700. package/dist/src/backend/services/workspace/service/lifecycle/workspace-relationships.service.d.ts +186 -0
  701. package/dist/src/backend/services/workspace/service/lifecycle/workspace-relationships.service.d.ts.map +1 -0
  702. package/dist/src/backend/services/workspace/service/lifecycle/workspace-relationships.service.js +11 -0
  703. package/dist/src/backend/services/workspace/service/lifecycle/workspace-relationships.service.js.map +1 -0
  704. package/dist/src/backend/services/workspace/service/lifecycle/workspace-run-script.service.d.ts +161 -0
  705. package/dist/src/backend/services/workspace/service/lifecycle/workspace-run-script.service.d.ts.map +1 -0
  706. package/dist/src/backend/services/workspace/service/lifecycle/workspace-run-script.service.js +51 -0
  707. package/dist/src/backend/services/workspace/service/lifecycle/workspace-run-script.service.js.map +1 -0
  708. package/dist/src/backend/services/workspace/service/lifecycle/workspace-state-capabilities.test.d.ts +2 -0
  709. package/dist/src/backend/services/workspace/service/lifecycle/workspace-state-capabilities.test.d.ts.map +1 -0
  710. package/dist/src/backend/services/workspace/service/lifecycle/workspace-state-capabilities.test.js +96 -0
  711. package/dist/src/backend/services/workspace/service/lifecycle/workspace-state-capabilities.test.js.map +1 -0
  712. package/dist/src/backend/services/workspace/service/pr-discovery-schedule.d.ts +2 -0
  713. package/dist/src/backend/services/workspace/service/pr-discovery-schedule.d.ts.map +1 -0
  714. package/dist/src/backend/services/workspace/service/pr-discovery-schedule.js +11 -0
  715. package/dist/src/backend/services/workspace/service/pr-discovery-schedule.js.map +1 -0
  716. package/dist/src/backend/services/workspace/service/pr-discovery-schedule.test.d.ts +2 -0
  717. package/dist/src/backend/services/workspace/service/pr-discovery-schedule.test.d.ts.map +1 -0
  718. package/dist/src/backend/services/workspace/service/pr-discovery-schedule.test.js +24 -0
  719. package/dist/src/backend/services/workspace/service/pr-discovery-schedule.test.js.map +1 -0
  720. package/dist/src/backend/services/workspace/service/query/project-management.service.d.ts +27 -21
  721. package/dist/src/backend/services/workspace/service/query/project-management.service.d.ts.map +1 -1
  722. package/dist/src/backend/services/workspace/service/query/workspace-maintenance.service.d.ts +446 -0
  723. package/dist/src/backend/services/workspace/service/query/workspace-maintenance.service.d.ts.map +1 -0
  724. package/dist/src/backend/services/workspace/service/query/workspace-maintenance.service.js +23 -0
  725. package/dist/src/backend/services/workspace/service/query/workspace-maintenance.service.js.map +1 -0
  726. package/dist/src/backend/services/workspace/service/query/workspace-maintenance.service.test.d.ts +2 -0
  727. package/dist/src/backend/services/workspace/service/query/workspace-maintenance.service.test.d.ts.map +1 -0
  728. package/dist/src/backend/services/workspace/service/query/workspace-maintenance.service.test.js +36 -0
  729. package/dist/src/backend/services/workspace/service/query/workspace-maintenance.service.test.js.map +1 -0
  730. package/dist/src/backend/services/workspace/service/query/workspace-notification.service.d.ts +58 -0
  731. package/dist/src/backend/services/workspace/service/query/workspace-notification.service.d.ts.map +1 -0
  732. package/dist/src/backend/services/workspace/service/query/workspace-notification.service.js +24 -0
  733. package/dist/src/backend/services/workspace/service/query/workspace-notification.service.js.map +1 -0
  734. package/dist/src/backend/services/workspace/service/query/workspace-notification.service.test.d.ts +2 -0
  735. package/dist/src/backend/services/workspace/service/query/workspace-notification.service.test.d.ts.map +1 -0
  736. package/dist/src/backend/services/workspace/service/query/workspace-notification.service.test.js +28 -0
  737. package/dist/src/backend/services/workspace/service/query/workspace-notification.service.test.js.map +1 -0
  738. package/dist/src/backend/services/workspace/service/query/workspace-query.service.d.ts +45 -55
  739. package/dist/src/backend/services/workspace/service/query/workspace-query.service.d.ts.map +1 -1
  740. package/dist/src/backend/services/workspace/service/query/workspace-query.service.js +13 -64
  741. package/dist/src/backend/services/workspace/service/query/workspace-query.service.js.map +1 -1
  742. package/dist/src/backend/services/workspace/service/query/workspace-query.service.test.js +110 -64
  743. package/dist/src/backend/services/workspace/service/query/workspace-query.service.test.js.map +1 -1
  744. package/dist/src/backend/services/{workspace-snapshot-store.service.d.ts → workspace/service/snapshot/workspace-snapshot-store.service.d.ts} +24 -45
  745. package/dist/src/backend/services/workspace/service/snapshot/workspace-snapshot-store.service.d.ts.map +1 -0
  746. package/dist/src/backend/services/{workspace-snapshot-store.service.js → workspace/service/snapshot/workspace-snapshot-store.service.js} +144 -31
  747. package/dist/src/backend/services/workspace/service/snapshot/workspace-snapshot-store.service.js.map +1 -0
  748. package/dist/src/backend/services/workspace/service/snapshot/workspace-snapshot-store.service.test.d.ts.map +1 -0
  749. package/dist/src/backend/services/{workspace-snapshot-store.service.test.js → workspace/service/snapshot/workspace-snapshot-store.service.test.js} +229 -18
  750. package/dist/src/backend/services/workspace/service/snapshot/workspace-snapshot-store.service.test.js.map +1 -0
  751. package/dist/src/backend/services/workspace/service/state/kanban-state.d.ts +18 -3
  752. package/dist/src/backend/services/workspace/service/state/kanban-state.d.ts.map +1 -1
  753. package/dist/src/backend/services/workspace/service/state/kanban-state.js +136 -16
  754. package/dist/src/backend/services/workspace/service/state/kanban-state.js.map +1 -1
  755. package/dist/src/backend/services/workspace/service/state/kanban-state.test.js +319 -63
  756. package/dist/src/backend/services/workspace/service/state/kanban-state.test.js.map +1 -1
  757. package/dist/src/backend/services/workspace/service/workspace-domain-exports.test.js +18 -1
  758. package/dist/src/backend/services/workspace/service/workspace-domain-exports.test.js.map +1 -1
  759. package/dist/src/backend/services/workspace/service/worktree/git-clone.service.d.ts.map +1 -0
  760. package/dist/src/backend/services/{git-clone.service.js → workspace/service/worktree/git-clone.service.js} +4 -4
  761. package/dist/src/backend/services/workspace/service/worktree/git-clone.service.js.map +1 -0
  762. package/dist/src/backend/services/workspace/service/worktree/git-clone.service.test.d.ts.map +1 -0
  763. package/dist/src/backend/services/{git-clone.service.test.js → workspace/service/worktree/git-clone.service.test.js} +1 -1
  764. package/dist/src/backend/services/workspace/service/worktree/git-clone.service.test.js.map +1 -0
  765. package/dist/src/backend/services/{git-ops.service.d.ts → workspace/service/worktree/git-ops.service.d.ts} +3 -4
  766. package/dist/src/backend/services/workspace/service/worktree/git-ops.service.d.ts.map +1 -0
  767. package/dist/src/backend/services/{git-ops.service.js → workspace/service/worktree/git-ops.service.js} +55 -33
  768. package/dist/src/backend/services/workspace/service/worktree/git-ops.service.js.map +1 -0
  769. package/dist/src/backend/services/workspace/service/worktree/git-ops.service.test.d.ts.map +1 -0
  770. package/dist/src/backend/services/{git-ops.service.test.js → workspace/service/worktree/git-ops.service.test.js} +89 -16
  771. package/dist/src/backend/services/workspace/service/worktree/git-ops.service.test.js.map +1 -0
  772. package/dist/src/backend/services/workspace/service/worktree/worktree-init.test.js +27 -19
  773. package/dist/src/backend/services/workspace/service/worktree/worktree-init.test.js.map +1 -1
  774. package/dist/src/backend/services/workspace/service/worktree/worktree-lifecycle.service.d.ts.map +1 -1
  775. package/dist/src/backend/services/workspace/service/worktree/worktree-lifecycle.service.js +3 -1
  776. package/dist/src/backend/services/workspace/service/worktree/worktree-lifecycle.service.js.map +1 -1
  777. package/dist/src/backend/services/workspace/service/worktree/worktree-lifecycle.service.test.js +66 -2
  778. package/dist/src/backend/services/workspace/service/worktree/worktree-lifecycle.service.test.js.map +1 -1
  779. package/dist/src/backend/services/workspace/types.d.ts +32 -0
  780. package/dist/src/backend/services/workspace/types.d.ts.map +1 -0
  781. package/dist/src/backend/services/workspace/types.js +2 -0
  782. package/dist/src/backend/services/workspace/types.js.map +1 -0
  783. package/dist/src/backend/services/workspace-git-state.service.d.ts +99 -0
  784. package/dist/src/backend/services/workspace-git-state.service.d.ts.map +1 -0
  785. package/dist/src/backend/services/workspace-git-state.service.js +393 -0
  786. package/dist/src/backend/services/workspace-git-state.service.js.map +1 -0
  787. package/dist/src/backend/services/workspace-git-state.service.test.d.ts +2 -0
  788. package/dist/src/backend/services/workspace-git-state.service.test.d.ts.map +1 -0
  789. package/dist/src/backend/services/workspace-git-state.service.test.js +476 -0
  790. package/dist/src/backend/services/workspace-git-state.service.test.js.map +1 -0
  791. package/dist/src/backend/testing/typescript-import-test-utils.d.ts +11 -0
  792. package/dist/src/backend/testing/typescript-import-test-utils.d.ts.map +1 -0
  793. package/dist/src/backend/testing/typescript-import-test-utils.js +47 -0
  794. package/dist/src/backend/testing/typescript-import-test-utils.js.map +1 -0
  795. package/dist/src/backend/trpc/admin.router.test.js +18 -26
  796. package/dist/src/backend/trpc/admin.router.test.js.map +1 -1
  797. package/dist/src/backend/trpc/admin.trpc.d.ts +7 -5
  798. package/dist/src/backend/trpc/admin.trpc.d.ts.map +1 -1
  799. package/dist/src/backend/trpc/admin.trpc.js +11 -15
  800. package/dist/src/backend/trpc/admin.trpc.js.map +1 -1
  801. package/dist/src/backend/trpc/application-error-mapper.d.ts +4 -0
  802. package/dist/src/backend/trpc/application-error-mapper.d.ts.map +1 -0
  803. package/dist/src/backend/trpc/application-error-mapper.js +16 -0
  804. package/dist/src/backend/trpc/application-error-mapper.js.map +1 -0
  805. package/dist/src/backend/trpc/application-error-mapper.test.d.ts +2 -0
  806. package/dist/src/backend/trpc/application-error-mapper.test.d.ts.map +1 -0
  807. package/dist/src/backend/trpc/application-error-mapper.test.js +23 -0
  808. package/dist/src/backend/trpc/application-error-mapper.test.js.map +1 -0
  809. package/dist/src/backend/trpc/auto-iteration.trpc.d.ts +1 -1
  810. package/dist/src/backend/trpc/auto-iteration.trpc.d.ts.map +1 -1
  811. package/dist/src/backend/trpc/auto-iteration.trpc.js +20 -12
  812. package/dist/src/backend/trpc/auto-iteration.trpc.js.map +1 -1
  813. package/dist/src/backend/trpc/auto-iteration.trpc.test.js +10 -9
  814. package/dist/src/backend/trpc/auto-iteration.trpc.test.js.map +1 -1
  815. package/dist/src/backend/trpc/closed-sessions.router.test.js +3 -4
  816. package/dist/src/backend/trpc/closed-sessions.router.test.js.map +1 -1
  817. package/dist/src/backend/trpc/closed-sessions.trpc.d.ts +5 -5
  818. package/dist/src/backend/trpc/closed-sessions.trpc.d.ts.map +1 -1
  819. package/dist/src/backend/trpc/closed-sessions.trpc.js +8 -4
  820. package/dist/src/backend/trpc/closed-sessions.trpc.js.map +1 -1
  821. package/dist/src/backend/trpc/context-dependencies.test.d.ts +2 -0
  822. package/dist/src/backend/trpc/context-dependencies.test.d.ts.map +1 -0
  823. package/dist/src/backend/trpc/context-dependencies.test.js +134 -0
  824. package/dist/src/backend/trpc/context-dependencies.test.js.map +1 -0
  825. package/dist/src/backend/trpc/decision-log.router.test.js +11 -8
  826. package/dist/src/backend/trpc/decision-log.router.test.js.map +1 -1
  827. package/dist/src/backend/trpc/decision-log.trpc.d.ts +3 -3
  828. package/dist/src/backend/trpc/decision-log.trpc.d.ts.map +1 -1
  829. package/dist/src/backend/trpc/decision-log.trpc.js +6 -7
  830. package/dist/src/backend/trpc/decision-log.trpc.js.map +1 -1
  831. package/dist/src/backend/trpc/github.router.test.js +12 -6
  832. package/dist/src/backend/trpc/github.router.test.js.map +1 -1
  833. package/dist/src/backend/trpc/github.trpc.d.ts.map +1 -1
  834. package/dist/src/backend/trpc/github.trpc.js +11 -8
  835. package/dist/src/backend/trpc/github.trpc.js.map +1 -1
  836. package/dist/src/backend/trpc/index.d.ts +528 -828
  837. package/dist/src/backend/trpc/index.d.ts.map +1 -1
  838. package/dist/src/backend/trpc/index.js +0 -1
  839. package/dist/src/backend/trpc/index.js.map +1 -1
  840. package/dist/src/backend/trpc/issue-filter.d.ts.map +1 -1
  841. package/dist/src/backend/trpc/issue-filter.js.map +1 -1
  842. package/dist/src/backend/trpc/linear.router.test.js +21 -21
  843. package/dist/src/backend/trpc/linear.router.test.js.map +1 -1
  844. package/dist/src/backend/trpc/linear.trpc.d.ts +4 -4
  845. package/dist/src/backend/trpc/linear.trpc.d.ts.map +1 -1
  846. package/dist/src/backend/trpc/linear.trpc.js +9 -10
  847. package/dist/src/backend/trpc/linear.trpc.js.map +1 -1
  848. package/dist/src/backend/trpc/periodic-task.trpc.d.ts +17 -17
  849. package/dist/src/backend/trpc/periodic-task.trpc.d.ts.map +1 -1
  850. package/dist/src/backend/trpc/periodic-task.trpc.js +17 -17
  851. package/dist/src/backend/trpc/periodic-task.trpc.js.map +1 -1
  852. package/dist/src/backend/trpc/project.router.test.js +20 -21
  853. package/dist/src/backend/trpc/project.router.test.js.map +1 -1
  854. package/dist/src/backend/trpc/project.trpc.d.ts +31 -25
  855. package/dist/src/backend/trpc/project.trpc.d.ts.map +1 -1
  856. package/dist/src/backend/trpc/project.trpc.js +32 -30
  857. package/dist/src/backend/trpc/project.trpc.js.map +1 -1
  858. package/dist/src/backend/trpc/session.router.test.js +11 -9
  859. package/dist/src/backend/trpc/session.router.test.js.map +1 -1
  860. package/dist/src/backend/trpc/session.trpc.d.ts +47 -404
  861. package/dist/src/backend/trpc/session.trpc.d.ts.map +1 -1
  862. package/dist/src/backend/trpc/session.trpc.js +30 -27
  863. package/dist/src/backend/trpc/session.trpc.js.map +1 -1
  864. package/dist/src/backend/trpc/trpc.d.ts +2 -4
  865. package/dist/src/backend/trpc/trpc.d.ts.map +1 -1
  866. package/dist/src/backend/trpc/trpc.js +14 -12
  867. package/dist/src/backend/trpc/trpc.js.map +1 -1
  868. package/dist/src/backend/trpc/trpc.test.js +58 -1
  869. package/dist/src/backend/trpc/trpc.test.js.map +1 -1
  870. package/dist/src/backend/trpc/user-settings.router.test.js +27 -14
  871. package/dist/src/backend/trpc/user-settings.router.test.js.map +1 -1
  872. package/dist/src/backend/trpc/user-settings.trpc.d.ts +6 -3
  873. package/dist/src/backend/trpc/user-settings.trpc.d.ts.map +1 -1
  874. package/dist/src/backend/trpc/user-settings.trpc.js +13 -14
  875. package/dist/src/backend/trpc/user-settings.trpc.js.map +1 -1
  876. package/dist/src/backend/trpc/workspace/children.router.test.d.ts +2 -0
  877. package/dist/src/backend/trpc/workspace/children.router.test.d.ts.map +1 -0
  878. package/dist/src/backend/trpc/workspace/children.router.test.js +257 -0
  879. package/dist/src/backend/trpc/workspace/children.router.test.js.map +1 -0
  880. package/dist/src/backend/trpc/workspace/children.trpc.d.ts +154 -0
  881. package/dist/src/backend/trpc/workspace/children.trpc.d.ts.map +1 -0
  882. package/dist/src/backend/trpc/workspace/children.trpc.js +163 -0
  883. package/dist/src/backend/trpc/workspace/children.trpc.js.map +1 -0
  884. package/dist/src/backend/trpc/workspace/composition.test.d.ts +2 -0
  885. package/dist/src/backend/trpc/workspace/composition.test.d.ts.map +1 -0
  886. package/dist/src/backend/trpc/workspace/composition.test.js +51 -0
  887. package/dist/src/backend/trpc/workspace/composition.test.js.map +1 -0
  888. package/dist/src/backend/trpc/workspace/files.router.test.js +6 -0
  889. package/dist/src/backend/trpc/workspace/files.router.test.js.map +1 -1
  890. package/dist/src/backend/trpc/workspace/files.trpc.d.ts.map +1 -1
  891. package/dist/src/backend/trpc/workspace/files.trpc.js +14 -13
  892. package/dist/src/backend/trpc/workspace/files.trpc.js.map +1 -1
  893. package/dist/src/backend/trpc/workspace/git.router.test.js +137 -147
  894. package/dist/src/backend/trpc/workspace/git.router.test.js.map +1 -1
  895. package/dist/src/backend/trpc/workspace/git.trpc.d.ts +2 -2
  896. package/dist/src/backend/trpc/workspace/git.trpc.d.ts.map +1 -1
  897. package/dist/src/backend/trpc/workspace/git.trpc.js +53 -75
  898. package/dist/src/backend/trpc/workspace/git.trpc.js.map +1 -1
  899. package/dist/src/backend/trpc/workspace/ide.router.test.js +10 -9
  900. package/dist/src/backend/trpc/workspace/ide.router.test.js.map +1 -1
  901. package/dist/src/backend/trpc/workspace/ide.trpc.d.ts.map +1 -1
  902. package/dist/src/backend/trpc/workspace/ide.trpc.js +4 -4
  903. package/dist/src/backend/trpc/workspace/ide.trpc.js.map +1 -1
  904. package/dist/src/backend/trpc/workspace/init.router.test.js +18 -41
  905. package/dist/src/backend/trpc/workspace/init.router.test.js.map +1 -1
  906. package/dist/src/backend/trpc/workspace/init.trpc.d.ts +22 -18
  907. package/dist/src/backend/trpc/workspace/init.trpc.d.ts.map +1 -1
  908. package/dist/src/backend/trpc/workspace/init.trpc.js +14 -11
  909. package/dist/src/backend/trpc/workspace/init.trpc.js.map +1 -1
  910. package/dist/src/backend/trpc/workspace/run-script.router.test.js +6 -10
  911. package/dist/src/backend/trpc/workspace/run-script.router.test.js.map +1 -1
  912. package/dist/src/backend/trpc/workspace/run-script.trpc.d.ts.map +1 -1
  913. package/dist/src/backend/trpc/workspace/run-script.trpc.js +3 -4
  914. package/dist/src/backend/trpc/workspace/run-script.trpc.js.map +1 -1
  915. package/dist/src/backend/trpc/workspace/workspace-helpers.d.ts +43 -35
  916. package/dist/src/backend/trpc/workspace/workspace-helpers.d.ts.map +1 -1
  917. package/dist/src/backend/trpc/workspace/workspace-helpers.js +7 -8
  918. package/dist/src/backend/trpc/workspace/workspace-helpers.js.map +1 -1
  919. package/dist/src/backend/trpc/workspace/workspace-helpers.test.js +17 -15
  920. package/dist/src/backend/trpc/workspace/workspace-helpers.test.js.map +1 -1
  921. package/dist/src/backend/trpc/workspace.router.test.js +139 -265
  922. package/dist/src/backend/trpc/workspace.router.test.js.map +1 -1
  923. package/dist/src/backend/trpc/workspace.trpc.d.ts +1491 -325
  924. package/dist/src/backend/trpc/workspace.trpc.d.ts.map +1 -1
  925. package/dist/src/backend/trpc/workspace.trpc.js +47 -258
  926. package/dist/src/backend/trpc/workspace.trpc.js.map +1 -1
  927. package/dist/src/shared/acp-protocol/protocol/renderer-window.d.ts.map +1 -1
  928. package/dist/src/shared/acp-protocol/protocol/renderer-window.js +2 -1
  929. package/dist/src/shared/acp-protocol/protocol/renderer-window.js.map +1 -1
  930. package/dist/src/shared/acp-protocol/protocol/websocket.d.ts +9 -0
  931. package/dist/src/shared/acp-protocol/protocol/websocket.d.ts.map +1 -1
  932. package/dist/src/shared/acp-protocol/protocol/websocket.js +1 -0
  933. package/dist/src/shared/acp-protocol/protocol/websocket.js.map +1 -1
  934. package/dist/src/shared/core/enums.d.ts +5 -0
  935. package/dist/src/shared/core/enums.d.ts.map +1 -1
  936. package/dist/src/shared/core/enums.js +4 -0
  937. package/dist/src/shared/core/enums.js.map +1 -1
  938. package/dist/src/shared/core/index.d.ts +2 -2
  939. package/dist/src/shared/core/index.d.ts.map +1 -1
  940. package/dist/src/shared/core/index.js +2 -2
  941. package/dist/src/shared/core/index.js.map +1 -1
  942. package/dist/src/shared/core/workspace-sidebar-status.d.ts +4 -2
  943. package/dist/src/shared/core/workspace-sidebar-status.d.ts.map +1 -1
  944. package/dist/src/shared/core/workspace-sidebar-status.js +11 -0
  945. package/dist/src/shared/core/workspace-sidebar-status.js.map +1 -1
  946. package/dist/src/shared/schemas/export-data.schema.d.ts +20 -12
  947. package/dist/src/shared/schemas/export-data.schema.d.ts.map +1 -1
  948. package/dist/src/shared/schemas/export-data.schema.js +3 -1
  949. package/dist/src/shared/schemas/export-data.schema.js.map +1 -1
  950. package/dist/src/shared/session-runtime.d.ts +6 -3
  951. package/dist/src/shared/session-runtime.d.ts.map +1 -1
  952. package/dist/src/shared/session-runtime.js +10 -0
  953. package/dist/src/shared/session-runtime.js.map +1 -1
  954. package/dist/src/shared/workspace-flow-state.d.ts +4 -2
  955. package/dist/src/shared/workspace-flow-state.d.ts.map +1 -1
  956. package/dist/src/shared/workspace-flow-state.js +16 -1
  957. package/dist/src/shared/workspace-flow-state.js.map +1 -1
  958. package/dist/src/shared/workspace-snapshot.d.ts +1020 -0
  959. package/dist/src/shared/workspace-snapshot.d.ts.map +1 -0
  960. package/dist/src/shared/workspace-snapshot.js +113 -0
  961. package/dist/src/shared/workspace-snapshot.js.map +1 -0
  962. package/dist/src/shared/workspace-status-reason.d.ts +6 -3
  963. package/dist/src/shared/workspace-status-reason.d.ts.map +1 -1
  964. package/dist/src/shared/workspace-status-reason.js +35 -0
  965. package/dist/src/shared/workspace-status-reason.js.map +1 -1
  966. package/dist/src/test-utils/application-graph.d.ts +69 -0
  967. package/dist/src/test-utils/application-graph.d.ts.map +1 -0
  968. package/dist/src/test-utils/application-graph.js +353 -0
  969. package/dist/src/test-utils/application-graph.js.map +1 -0
  970. package/dist/tsconfig.backend.tsbuildinfo +1 -1
  971. package/package.json +2 -5
  972. package/prisma/migrations/20260717150000_add_pr_discovery_schedule/migration.sql +8 -0
  973. package/prisma/migrations/20260717160000_add_ratchet_review_trigger_mode/migration.sql +2 -0
  974. package/prisma/schema.prisma +13 -1
  975. package/dist/client/assets/channel-76ipWABm.js +0 -1
  976. package/dist/client/assets/classDiagram-4FO5ZUOK-FuxnCTTL.js +0 -1
  977. package/dist/client/assets/classDiagram-v2-Q7XG4LA2-FuxnCTTL.js +0 -1
  978. package/dist/client/assets/index-kItkrW7R.css +0 -1
  979. package/dist/client/assets/stateDiagram-v2-BHNVJYJU-Dhf9Ohaz.js +0 -1
  980. package/dist/src/backend/clients/index.d.ts +0 -2
  981. package/dist/src/backend/clients/index.d.ts.map +0 -1
  982. package/dist/src/backend/clients/index.js +0 -2
  983. package/dist/src/backend/clients/index.js.map +0 -1
  984. package/dist/src/backend/orchestration/decision-log-query.service.d.ts.map +0 -1
  985. package/dist/src/backend/orchestration/decision-log-query.service.js.map +0 -1
  986. package/dist/src/backend/orchestration/decision-log-query.service.test.d.ts +0 -2
  987. package/dist/src/backend/orchestration/decision-log-query.service.test.d.ts.map +0 -1
  988. package/dist/src/backend/orchestration/decision-log-query.service.test.js +0 -44
  989. package/dist/src/backend/orchestration/decision-log-query.service.test.js.map +0 -1
  990. package/dist/src/backend/services/factory-config.service.d.ts.map +0 -1
  991. package/dist/src/backend/services/factory-config.service.js.map +0 -1
  992. package/dist/src/backend/services/factory-config.service.test.d.ts.map +0 -1
  993. package/dist/src/backend/services/factory-config.service.test.js.map +0 -1
  994. package/dist/src/backend/services/git-clone.service.d.ts.map +0 -1
  995. package/dist/src/backend/services/git-clone.service.js.map +0 -1
  996. package/dist/src/backend/services/git-clone.service.test.d.ts.map +0 -1
  997. package/dist/src/backend/services/git-clone.service.test.js.map +0 -1
  998. package/dist/src/backend/services/git-ops.service.d.ts.map +0 -1
  999. package/dist/src/backend/services/git-ops.service.js.map +0 -1
  1000. package/dist/src/backend/services/git-ops.service.test.d.ts.map +0 -1
  1001. package/dist/src/backend/services/git-ops.service.test.js.map +0 -1
  1002. package/dist/src/backend/services/port-allocation.service.d.ts.map +0 -1
  1003. package/dist/src/backend/services/port-allocation.service.js.map +0 -1
  1004. package/dist/src/backend/services/port-allocation.service.test.d.ts.map +0 -1
  1005. package/dist/src/backend/services/port-allocation.service.test.js.map +0 -1
  1006. package/dist/src/backend/services/run-script-config-persistence.service.d.ts.map +0 -1
  1007. package/dist/src/backend/services/run-script-config-persistence.service.js.map +0 -1
  1008. package/dist/src/backend/services/run-script-config-persistence.service.test.d.ts.map +0 -1
  1009. package/dist/src/backend/services/run-script-config-persistence.service.test.js.map +0 -1
  1010. package/dist/src/backend/services/run-script-proxy.service.d.ts.map +0 -1
  1011. package/dist/src/backend/services/run-script-proxy.service.js.map +0 -1
  1012. package/dist/src/backend/services/run-script-proxy.service.test.d.ts.map +0 -1
  1013. package/dist/src/backend/services/run-script-proxy.service.test.js.map +0 -1
  1014. package/dist/src/backend/services/workspace/service/query/user-settings-query.service.d.ts +0 -24
  1015. package/dist/src/backend/services/workspace/service/query/user-settings-query.service.d.ts.map +0 -1
  1016. package/dist/src/backend/services/workspace/service/query/user-settings-query.service.js +0 -17
  1017. package/dist/src/backend/services/workspace/service/query/user-settings-query.service.js.map +0 -1
  1018. package/dist/src/backend/services/workspace-snapshot-store.service.d.ts.map +0 -1
  1019. package/dist/src/backend/services/workspace-snapshot-store.service.js.map +0 -1
  1020. package/dist/src/backend/services/workspace-snapshot-store.service.test.d.ts.map +0 -1
  1021. package/dist/src/backend/services/workspace-snapshot-store.service.test.js.map +0 -1
  1022. package/dist/src/backend/trpc/procedures/index.d.ts +0 -2
  1023. package/dist/src/backend/trpc/procedures/index.d.ts.map +0 -1
  1024. package/dist/src/backend/trpc/procedures/index.js +0 -2
  1025. package/dist/src/backend/trpc/procedures/index.js.map +0 -1
  1026. package/dist/src/backend/trpc/procedures/project-scoped.d.ts +0 -7
  1027. package/dist/src/backend/trpc/procedures/project-scoped.d.ts.map +0 -1
  1028. package/dist/src/backend/trpc/procedures/project-scoped.js +0 -18
  1029. package/dist/src/backend/trpc/procedures/project-scoped.js.map +0 -1
  1030. package/dist/src/backend/trpc/procedures/project-scoped.test.d.ts +0 -2
  1031. package/dist/src/backend/trpc/procedures/project-scoped.test.d.ts.map +0 -1
  1032. package/dist/src/backend/trpc/procedures/project-scoped.test.js +0 -17
  1033. package/dist/src/backend/trpc/procedures/project-scoped.test.js.map +0 -1
  1034. /package/dist/src/backend/services/{factory-config.service.test.d.ts → run-script/service/factory-config.service.test.d.ts} +0 -0
  1035. /package/dist/src/backend/services/{port-allocation.service.d.ts → run-script/service/port-allocation.service.d.ts} +0 -0
  1036. /package/dist/src/backend/services/{port-allocation.service.js → run-script/service/port-allocation.service.js} +0 -0
  1037. /package/dist/src/backend/services/{port-allocation.service.test.d.ts → run-script/service/port-allocation.service.test.d.ts} +0 -0
  1038. /package/dist/src/backend/services/{port-allocation.service.test.js → run-script/service/port-allocation.service.test.js} +0 -0
  1039. /package/dist/src/backend/services/{run-script-config-persistence.service.test.d.ts → run-script/service/run-script-config-persistence.service.test.d.ts} +0 -0
  1040. /package/dist/src/backend/services/{run-script-proxy.service.d.ts → run-script/service/run-script-proxy.service.d.ts} +0 -0
  1041. /package/dist/src/backend/services/{run-script-proxy.service.test.d.ts → run-script/service/run-script-proxy.service.test.d.ts} +0 -0
  1042. /package/dist/src/backend/services/{workspace-snapshot-store.service.test.d.ts → workspace/service/snapshot/workspace-snapshot-store.service.test.d.ts} +0 -0
  1043. /package/dist/src/backend/services/{git-clone.service.d.ts → workspace/service/worktree/git-clone.service.d.ts} +0 -0
  1044. /package/dist/src/backend/services/{git-clone.service.test.d.ts → workspace/service/worktree/git-clone.service.test.d.ts} +0 -0
  1045. /package/dist/src/backend/services/{git-ops.service.test.d.ts → workspace/service/worktree/git-ops.service.test.d.ts} +0 -0
@@ -10,6 +10,48 @@ export const prismaModelNames = [
10
10
  'PeriodicTask',
11
11
  'PeriodicTaskExecution',
12
12
  ];
13
+ export const infrastructureServiceRegistry = {
14
+ 'config.service': {
15
+ fileName: 'config.service.ts',
16
+ description: 'Environment and application configuration',
17
+ },
18
+ constants: {
19
+ fileName: 'constants.ts',
20
+ description: 'Shared backend service timing and retry constants',
21
+ },
22
+ 'crypto.service': {
23
+ fileName: 'crypto.service.ts',
24
+ description: 'Encryption for secrets stored at rest',
25
+ },
26
+ 'logger.service': {
27
+ fileName: 'logger.service.ts',
28
+ description: 'Process-wide structured logging',
29
+ },
30
+ 'notification.service': {
31
+ fileName: 'notification.service.ts',
32
+ description: 'Operating-system notifications',
33
+ },
34
+ 'port.service': {
35
+ fileName: 'port.service.ts',
36
+ description: 'Backend server port probing',
37
+ },
38
+ 'rate-limit-backoff': {
39
+ fileName: 'rate-limit-backoff.ts',
40
+ description: 'Shared API rate-limit retry policy',
41
+ },
42
+ 'rate-limiter.service': {
43
+ fileName: 'rate-limiter.service.ts',
44
+ description: 'Process-wide API request rate limiting',
45
+ },
46
+ 'server-instance.service': {
47
+ fileName: 'server-instance.service.ts',
48
+ description: 'Active HTTP server instance state',
49
+ },
50
+ 'workspace-git-state.service': {
51
+ fileName: 'workspace-git-state.service.ts',
52
+ description: 'Process-wide workspace Git snapshot cache and invalidation',
53
+ },
54
+ };
13
55
  export const serviceNames = [
14
56
  'session',
15
57
  'workspace',
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../../src/backend/services/registry.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,SAAS;IACT,aAAa;IACb,WAAW;IACX,uBAAuB;IACvB,cAAc;IACd,iBAAiB;IACjB,eAAe;IACf,cAAc;IACd,cAAc;IACd,uBAAuB;CACf,CAAC;AAIX,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,SAAS;IACT,WAAW;IACX,UAAU;IACV,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,YAAY;IACZ,UAAU;IACV,cAAc;IACd,gBAAgB;IAChB,eAAe;CACP,CAAC;AASX,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,OAAO,EAAE;QACP,SAAS,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,CAAC;QAC1D,UAAU,EAAE,CAAC,cAAc,EAAE,eAAe,CAAC;KAC9C;IACD,SAAS,EAAE;QACT,SAAS,EAAE,CAAC,UAAU,EAAE,gBAAgB,CAAC;QACzC,UAAU,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,uBAAuB,CAAC;KAC9D;IACD,QAAQ,EAAE;QACR,SAAS,EAAE,EAAE;QACb,UAAU,EAAE,CAAC,iBAAiB,CAAC;KAChC;IACD,MAAM,EAAE;QACN,SAAS,EAAE,CAAC,WAAW,CAAC;QACxB,UAAU,EAAE,EAAE;KACf;IACD,MAAM,EAAE;QACN,SAAS,EAAE,EAAE;QACb,UAAU,EAAE,EAAE;KACf;IACD,OAAO,EAAE;QACP,SAAS,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,CAAC;QACzD,UAAU,EAAE,EAAE;KACf;IACD,YAAY,EAAE;QACZ,SAAS,EAAE,CAAC,WAAW,CAAC;QACxB,UAAU,EAAE,EAAE;KACf;IACD,QAAQ,EAAE;QACR,SAAS,EAAE,EAAE;QACb,UAAU,EAAE,CAAC,cAAc,CAAC;KAC7B;IACD,cAAc,EAAE;QACd,SAAS,EAAE,EAAE;QACb,UAAU,EAAE,CAAC,aAAa,CAAC;KAC5B;IACD,gBAAgB,EAAE;QAChB,SAAS,EAAE,EAAE;QACb,UAAU,EAAE,EAAE;KACf;IACD,eAAe,EAAE;QACf,SAAS,EAAE,CAAC,WAAW,EAAE,UAAU,CAAC;QACpC,UAAU,EAAE,CAAC,cAAc,EAAE,uBAAuB,CAAC;KACtD;CACwD,CAAC"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../../src/backend/services/registry.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,SAAS;IACT,aAAa;IACb,WAAW;IACX,uBAAuB;IACvB,cAAc;IACd,iBAAiB;IACjB,eAAe;IACf,cAAc;IACd,cAAc;IACd,uBAAuB;CACf,CAAC;AASX,MAAM,CAAC,MAAM,6BAA6B,GAAG;IAC3C,gBAAgB,EAAE;QAChB,QAAQ,EAAE,mBAAmB;QAC7B,WAAW,EAAE,2CAA2C;KACzD;IACD,SAAS,EAAE;QACT,QAAQ,EAAE,cAAc;QACxB,WAAW,EAAE,mDAAmD;KACjE;IACD,gBAAgB,EAAE;QAChB,QAAQ,EAAE,mBAAmB;QAC7B,WAAW,EAAE,uCAAuC;KACrD;IACD,gBAAgB,EAAE;QAChB,QAAQ,EAAE,mBAAmB;QAC7B,WAAW,EAAE,iCAAiC;KAC/C;IACD,sBAAsB,EAAE;QACtB,QAAQ,EAAE,yBAAyB;QACnC,WAAW,EAAE,gCAAgC;KAC9C;IACD,cAAc,EAAE;QACd,QAAQ,EAAE,iBAAiB;QAC3B,WAAW,EAAE,6BAA6B;KAC3C;IACD,oBAAoB,EAAE;QACpB,QAAQ,EAAE,uBAAuB;QACjC,WAAW,EAAE,oCAAoC;KAClD;IACD,sBAAsB,EAAE;QACtB,QAAQ,EAAE,yBAAyB;QACnC,WAAW,EAAE,wCAAwC;KACtD;IACD,yBAAyB,EAAE;QACzB,QAAQ,EAAE,4BAA4B;QACtC,WAAW,EAAE,mCAAmC;KACjD;IACD,6BAA6B,EAAE;QAC7B,QAAQ,EAAE,gCAAgC;QAC1C,WAAW,EAAE,4DAA4D;KAC1E;CACO,CAAC;AAIX,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,SAAS;IACT,WAAW;IACX,UAAU;IACV,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,YAAY;IACZ,UAAU;IACV,cAAc;IACd,gBAAgB;IAChB,eAAe;CACP,CAAC;AASX,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,OAAO,EAAE;QACP,SAAS,EAAE,CAAC,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,CAAC;QAC1D,UAAU,EAAE,CAAC,cAAc,EAAE,eAAe,CAAC;KAC9C;IACD,SAAS,EAAE;QACT,SAAS,EAAE,CAAC,UAAU,EAAE,gBAAgB,CAAC;QACzC,UAAU,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,uBAAuB,CAAC;KAC9D;IACD,QAAQ,EAAE;QACR,SAAS,EAAE,EAAE;QACb,UAAU,EAAE,CAAC,iBAAiB,CAAC;KAChC;IACD,MAAM,EAAE;QACN,SAAS,EAAE,CAAC,WAAW,CAAC;QACxB,UAAU,EAAE,EAAE;KACf;IACD,MAAM,EAAE;QACN,SAAS,EAAE,EAAE;QACb,UAAU,EAAE,EAAE;KACf;IACD,OAAO,EAAE;QACP,SAAS,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,CAAC;QACzD,UAAU,EAAE,EAAE;KACf;IACD,YAAY,EAAE;QACZ,SAAS,EAAE,CAAC,WAAW,CAAC;QACxB,UAAU,EAAE,EAAE;KACf;IACD,QAAQ,EAAE;QACR,SAAS,EAAE,EAAE;QACb,UAAU,EAAE,CAAC,cAAc,CAAC;KAC7B;IACD,cAAc,EAAE;QACd,SAAS,EAAE,EAAE;QACb,UAAU,EAAE,CAAC,aAAa,CAAC;KAC5B;IACD,gBAAgB,EAAE;QAChB,SAAS,EAAE,EAAE;QACb,UAAU,EAAE,EAAE;KACf;IACD,eAAe,EAAE;QACf,SAAS,EAAE,CAAC,WAAW,EAAE,UAAU,CAAC;QACpC,UAAU,EAAE,CAAC,cAAc,EAAE,uBAAuB,CAAC;KACtD;CACwD,CAAC"}
@@ -7,26 +7,37 @@ import { afterAll, afterEach, beforeAll, describe, expect, it, vi } from 'vitest
7
7
  import { clearIntegrationDatabase, createIntegrationDatabase, destroyIntegrationDatabase, } from '../../backend/testing/integration-db.js';
8
8
  let db;
9
9
  let prisma;
10
- let workspaceAccessor;
11
- let projectAccessor;
12
- let agentSessionAccessor;
13
- let terminalSessionAccessor;
14
- let userSettingsAccessor;
15
- let decisionLogAccessor;
16
- let GitClientFactory;
10
+ let workspaceDataService;
11
+ let workspaceAutoIterationService;
12
+ let workspaceMaintenanceService;
13
+ let workspacePrSnapshotService;
14
+ let workspaceRatchetService;
15
+ let workspaceRunScriptService;
16
+ let workspaceStateMachine;
17
+ let projectManagementService;
18
+ let sessionDataService;
19
+ let terminalSessionService;
20
+ let userSettingsService;
21
+ let decisionLogService;
17
22
  let counter = 0;
18
23
  const tempRepoDirs = new Set();
19
24
  beforeAll(async () => {
20
25
  db = await createIntegrationDatabase();
21
26
  prisma = db.prisma;
22
- ({ workspaceAccessor } = await vi.importActual('@/backend/services/workspace'));
23
- ({ projectAccessor } = await vi.importActual('@/backend/services/workspace'));
24
- ({ agentSessionAccessor } = await vi.importActual('@/backend/services/session'));
25
- ({ terminalSessionAccessor } = await vi.importActual('@/backend/services/terminal'));
26
- ({ userSettingsAccessor } = await vi.importActual('@/backend/services/settings'));
27
- ({ decisionLogAccessor } = await vi.importActual('@/backend/services/decision-log'));
28
- const gitClientModule = await vi.importActual('@/backend/clients/git.client');
29
- ({ GitClientFactory } = gitClientModule);
27
+ ({
28
+ projectManagementService,
29
+ workspaceAutoIterationService,
30
+ workspaceDataService,
31
+ workspaceMaintenanceService,
32
+ workspacePrSnapshotService,
33
+ workspaceRatchetService,
34
+ workspaceRunScriptService,
35
+ workspaceStateMachine,
36
+ } = await vi.importActual('@/backend/services/workspace'));
37
+ ({ sessionDataService } = await vi.importActual('@/backend/services/session'));
38
+ ({ terminalSessionService } = await vi.importActual('@/backend/services/terminal'));
39
+ ({ userSettingsService } = await vi.importActual('@/backend/services/settings'));
40
+ ({ decisionLogService } = await vi.importActual('@/backend/services/decision-log'));
30
41
  }, 30_000);
31
42
  afterEach(async () => {
32
43
  await clearIntegrationDatabase(prisma);
@@ -86,34 +97,35 @@ function setOriginHead(repoPath, branch) {
86
97
  cwd: repoPath,
87
98
  });
88
99
  }
100
+ async function findWorkspaceOrThrow(workspaceId) {
101
+ const workspace = await workspaceDataService.findById(workspaceId);
102
+ if (!workspace) {
103
+ throw new Error(`Workspace not found: ${workspaceId}`);
104
+ }
105
+ return workspace;
106
+ }
89
107
  describe('resource accessors integration', () => {
90
- describe('workspaceAccessor', () => {
91
- it('enforces compare-and-swap status transitions', async () => {
108
+ describe('workspace services', () => {
109
+ it('persists validated status transitions through the state machine', async () => {
92
110
  const project = await createProjectFixture();
93
111
  const workspace = await createWorkspaceFixture(project.id, { status: WorkspaceStatus.NEW });
94
- const changed = await workspaceAccessor.transitionWithCas(workspace.id, WorkspaceStatus.NEW, {
95
- status: WorkspaceStatus.PROVISIONING,
96
- });
97
- const unchanged = await workspaceAccessor.transitionWithCas(workspace.id, WorkspaceStatus.NEW, {
98
- status: WorkspaceStatus.READY,
99
- });
100
- const reloaded = await workspaceAccessor.findRawByIdOrThrow(workspace.id);
101
- expect(changed.count).toBe(1);
102
- expect(unchanged.count).toBe(0);
103
- expect(reloaded.status).toBe(WorkspaceStatus.PROVISIONING);
112
+ await workspaceStateMachine.transition(workspace.id, WorkspaceStatus.PROVISIONING);
113
+ await workspaceStateMachine.transition(workspace.id, WorkspaceStatus.READY);
114
+ const reloaded = await findWorkspaceOrThrow(workspace.id);
115
+ expect(reloaded.status).toBe(WorkspaceStatus.READY);
104
116
  });
105
117
  it('enforces compare-and-swap run script transitions', async () => {
106
118
  const project = await createProjectFixture();
107
119
  const workspace = await createWorkspaceFixture(project.id, {
108
120
  runScriptStatus: RunScriptStatus.IDLE,
109
121
  });
110
- const started = await workspaceAccessor.casRunScriptStatusUpdate(workspace.id, RunScriptStatus.IDLE, {
122
+ const started = await workspaceRunScriptService.transitionStatusIfCurrent(workspace.id, RunScriptStatus.IDLE, {
111
123
  runScriptStatus: RunScriptStatus.STARTING,
112
124
  });
113
- const duplicate = await workspaceAccessor.casRunScriptStatusUpdate(workspace.id, RunScriptStatus.IDLE, {
125
+ const duplicate = await workspaceRunScriptService.transitionStatusIfCurrent(workspace.id, RunScriptStatus.IDLE, {
114
126
  runScriptStatus: RunScriptStatus.RUNNING,
115
127
  });
116
- const reloaded = await workspaceAccessor.findRawByIdOrThrow(workspace.id);
128
+ const reloaded = await findWorkspaceOrThrow(workspace.id);
117
129
  expect(started.count).toBe(1);
118
130
  expect(duplicate.count).toBe(0);
119
131
  expect(reloaded.runScriptStatus).toBe(RunScriptStatus.STARTING);
@@ -129,12 +141,16 @@ describe('resource accessors integration', () => {
129
141
  status: WorkspaceStatus.FAILED,
130
142
  initRetryCount: 3,
131
143
  });
132
- const eligibleResult = await workspaceAccessor.startProvisioningRetryIfAllowed(eligible.id, 3);
133
- const maxedResult = await workspaceAccessor.startProvisioningRetryIfAllowed(maxed.id, 3);
134
- const eligibleReloaded = await workspaceAccessor.findRawByIdOrThrow(eligible.id);
135
- const maxedReloaded = await workspaceAccessor.findRawByIdOrThrow(maxed.id);
136
- expect(eligibleResult.count).toBe(1);
137
- expect(maxedResult.count).toBe(0);
144
+ const eligibleResult = await workspaceStateMachine.startProvisioning(eligible.id, {
145
+ maxRetries: 3,
146
+ });
147
+ const maxedResult = await workspaceStateMachine.startProvisioning(maxed.id, {
148
+ maxRetries: 3,
149
+ });
150
+ const eligibleReloaded = await findWorkspaceOrThrow(eligible.id);
151
+ const maxedReloaded = await findWorkspaceOrThrow(maxed.id);
152
+ expect(eligibleResult).not.toBeNull();
153
+ expect(maxedResult).toBeNull();
138
154
  expect(eligibleReloaded.status).toBe(WorkspaceStatus.PROVISIONING);
139
155
  expect(eligibleReloaded.cachedKanbanColumn).toBe(KanbanColumn.WORKING);
140
156
  expect(eligibleReloaded.initRetryCount).toBe(2);
@@ -154,7 +170,7 @@ describe('resource accessors integration', () => {
154
170
  status: WorkspaceStatus.PROVISIONING,
155
171
  initStartedAt: new Date(),
156
172
  });
157
- const needingWorktree = await workspaceAccessor.findNeedingWorktree();
173
+ const needingWorktree = await workspaceMaintenanceService.findNeedingWorktree();
158
174
  const ids = new Set(needingWorktree.map((workspace) => workspace.id));
159
175
  expect(ids.has(newWorkspace.id)).toBe(true);
160
176
  expect(ids.has(staleProvisioning.id)).toBe(true);
@@ -182,14 +198,14 @@ describe('resource accessors integration', () => {
182
198
  ratchetEnabled: true,
183
199
  ratchetState: RatchetState.MERGED,
184
200
  });
185
- const ratchetCandidates = await workspaceAccessor.findWithPRsForRatchet();
201
+ const ratchetCandidates = await workspaceRatchetService.findCandidates();
186
202
  expect(ratchetCandidates.map((workspace) => workspace.id)).toEqual([included.id]);
187
203
  });
188
204
  it('truncates init output when max size is exceeded', async () => {
189
205
  const project = await createProjectFixture();
190
206
  const workspace = await createWorkspaceFixture(project.id);
191
- await workspaceAccessor.appendInitOutput(workspace.id, 'a'.repeat(80), 50);
192
- const reloaded = await workspaceAccessor.findRawByIdOrThrow(workspace.id);
207
+ await workspaceRunScriptService.appendInitOutput(workspace.id, 'a'.repeat(80), 50);
208
+ const reloaded = await findWorkspaceOrThrow(workspace.id);
193
209
  expect(reloaded.initOutput).toBeTruthy();
194
210
  expect((reloaded.initOutput || '').length).toBeLessThanOrEqual(50);
195
211
  expect(reloaded.initOutput?.startsWith('[...truncated...]\n')).toBe(true);
@@ -198,8 +214,8 @@ describe('resource accessors integration', () => {
198
214
  const project = await createProjectFixture();
199
215
  const workspace = await createWorkspaceFixture(project.id);
200
216
  const chunks = Array.from({ length: 40 }, (_, index) => `chunk-${index}\n`);
201
- await Promise.all(chunks.map((chunk) => workspaceAccessor.appendInitOutput(workspace.id, chunk, 10 * 1024)));
202
- const reloaded = await workspaceAccessor.findRawByIdOrThrow(workspace.id);
217
+ await Promise.all(chunks.map((chunk) => workspaceRunScriptService.appendInitOutput(workspace.id, chunk, 10 * 1024)));
218
+ const reloaded = await findWorkspaceOrThrow(workspace.id);
203
219
  const output = reloaded.initOutput ?? '';
204
220
  expect(output.length).toBeGreaterThan(0);
205
221
  expect(output.startsWith('[...truncated...]\n')).toBe(false);
@@ -216,8 +232,8 @@ describe('resource accessors integration', () => {
216
232
  SET "updatedAt" = ${staleUpdatedAt}
217
233
  WHERE "id" = ${workspace.id}
218
234
  `;
219
- await workspaceAccessor.appendInitOutput(workspace.id, 'hello\n');
220
- const reloaded = await workspaceAccessor.findRawByIdOrThrow(workspace.id);
235
+ await workspaceRunScriptService.appendInitOutput(workspace.id, 'hello\n');
236
+ const reloaded = await findWorkspaceOrThrow(workspace.id);
221
237
  expect(reloaded.updatedAt.getTime()).toBeGreaterThan(staleUpdatedAt.getTime());
222
238
  });
223
239
  it('settles ratchet session end only when session id matches', async () => {
@@ -225,29 +241,111 @@ describe('resource accessors integration', () => {
225
241
  const workspace = await createWorkspaceFixture(project.id, {
226
242
  ratchetActiveSessionId: 'session-1',
227
243
  });
228
- const mismatch = await workspaceAccessor.recordRatchetSessionEnd(workspace.id, 'different-session', 'DIED');
244
+ const mismatch = await workspaceRatchetService.recordSessionEnd(workspace.id, 'different-session', 'DIED');
229
245
  expect(mismatch).toBe(false);
230
- const unchanged = await workspaceAccessor.findRawByIdOrThrow(workspace.id);
246
+ const unchanged = await findWorkspaceOrThrow(workspace.id);
231
247
  expect(unchanged.ratchetActiveSessionId).toBe('session-1');
232
248
  expect(unchanged.ratchetDispatchOutcome).toBeNull();
233
- const settled = await workspaceAccessor.recordRatchetSessionEnd(workspace.id, 'session-1', 'DIED');
249
+ const settled = await workspaceRatchetService.recordSessionEnd(workspace.id, 'session-1', 'DIED');
234
250
  expect(settled).toBe(true);
235
- const cleared = await workspaceAccessor.findRawByIdOrThrow(workspace.id);
251
+ const cleared = await findWorkspaceOrThrow(workspace.id);
236
252
  expect(cleared.ratchetActiveSessionId).toBeNull();
237
253
  expect(cleared.ratchetDispatchOutcome).toBe('DIED');
238
254
  });
239
- it('throws when mutually exclusive status filters are passed', async () => {
255
+ it('resets settled Ratchet ownership only for changed PR aggregates', async () => {
240
256
  const project = await createProjectFixture();
241
- expect(() => workspaceAccessor.findByProjectIdWithSessions(project.id, {
242
- status: WorkspaceStatus.READY,
243
- excludeStatuses: [WorkspaceStatus.NEW],
244
- })).toThrow('Cannot specify both status and excludeStatuses filters');
257
+ const workspace = await createWorkspaceFixture(project.id, {
258
+ prNumber: 42,
259
+ prState: PRState.CHANGES_REQUESTED,
260
+ prReviewState: 'CHANGES_REQUESTED',
261
+ prCiStatus: CIStatus.FAILURE,
262
+ ratchetLastCiRunId: 'rich-dispatch-snapshot',
263
+ ratchetDispatchOutcome: 'DIED',
264
+ ratchetDispatchRetryCount: 3,
265
+ });
266
+ const identical = await workspacePrSnapshotService.applyPrSnapshotWithDispatchReset(workspace.id, {
267
+ prNumber: 42,
268
+ prState: PRState.CHANGES_REQUESTED,
269
+ prReviewState: 'CHANGES_REQUESTED',
270
+ prCiStatus: CIStatus.FAILURE,
271
+ prUpdatedAt: new Date('2026-07-17T12:00:00.000Z'),
272
+ });
273
+ expect(identical).toEqual({ applied: true, dispatchReset: false });
274
+ expect((await findWorkspaceOrThrow(workspace.id)).ratchetDispatchOutcome).toBe('DIED');
275
+ const changed = await workspacePrSnapshotService.applyPrSnapshotWithDispatchReset(workspace.id, {
276
+ prNumber: 42,
277
+ prState: PRState.OPEN,
278
+ prReviewState: null,
279
+ prCiStatus: CIStatus.PENDING,
280
+ prUpdatedAt: new Date('2026-07-17T12:01:00.000Z'),
281
+ });
282
+ expect(changed).toEqual({ applied: true, dispatchReset: true });
283
+ const reset = await findWorkspaceOrThrow(workspace.id);
284
+ expect(reset.ratchetDispatchOutcome).toBeNull();
285
+ expect(reset.ratchetDispatchRetryCount).toBe(0);
286
+ expect(reset.ratchetLastCiRunId).toBe('rich-dispatch-snapshot');
287
+ const ciChangedWorkspace = await createWorkspaceFixture(project.id, {
288
+ prNumber: 42,
289
+ prState: PRState.OPEN,
290
+ prReviewState: null,
291
+ prCiStatus: CIStatus.PENDING,
292
+ ratchetDispatchOutcome: 'DIED',
293
+ ratchetDispatchRetryCount: 3,
294
+ });
295
+ await expect(workspacePrSnapshotService.applyPrSnapshotWithDispatchReset(ciChangedWorkspace.id, {
296
+ prNumber: 42,
297
+ prState: PRState.OPEN,
298
+ prReviewState: null,
299
+ prCiStatus: CIStatus.FAILURE,
300
+ prUpdatedAt: new Date('2026-07-17T12:02:00.000Z'),
301
+ })).resolves.toEqual({ applied: true, dispatchReset: true });
302
+ const reviewChangedWorkspace = await createWorkspaceFixture(project.id, {
303
+ prNumber: 42,
304
+ prState: PRState.OPEN,
305
+ prReviewState: null,
306
+ prCiStatus: CIStatus.FAILURE,
307
+ ratchetDispatchOutcome: 'DIED',
308
+ ratchetDispatchRetryCount: 3,
309
+ });
310
+ await expect(workspacePrSnapshotService.applyPrSnapshotWithDispatchReset(reviewChangedWorkspace.id, {
311
+ prNumber: 42,
312
+ prState: PRState.CHANGES_REQUESTED,
313
+ prReviewState: 'CHANGES_REQUESTED',
314
+ prCiStatus: CIStatus.FAILURE,
315
+ prUpdatedAt: new Date('2026-07-17T12:03:00.000Z'),
316
+ })).resolves.toEqual({ applied: true, dispatchReset: true });
317
+ const runningWorkspace = await createWorkspaceFixture(project.id, {
318
+ prNumber: 42,
319
+ prState: PRState.CHANGES_REQUESTED,
320
+ prReviewState: 'CHANGES_REQUESTED',
321
+ prCiStatus: CIStatus.FAILURE,
322
+ ratchetDispatchOutcome: 'RUNNING',
323
+ ratchetDispatchRetryCount: 1,
324
+ });
325
+ await expect(workspacePrSnapshotService.applyPrSnapshotWithDispatchReset(runningWorkspace.id, {
326
+ prNumber: 43,
327
+ prState: PRState.OPEN,
328
+ prReviewState: null,
329
+ prCiStatus: CIStatus.SUCCESS,
330
+ prUpdatedAt: new Date('2026-07-17T12:04:00.000Z'),
331
+ })).resolves.toEqual({ applied: true, dispatchReset: false });
332
+ expect((await findWorkspaceOrThrow(runningWorkspace.id)).ratchetDispatchOutcome).toBe('RUNNING');
333
+ });
334
+ it('clears auto-iteration session only when the expected pointer still matches', async () => {
335
+ const project = await createProjectFixture();
336
+ const workspace = await createWorkspaceFixture(project.id, {
337
+ autoIterationSessionId: 'session-1',
338
+ });
339
+ await expect(workspaceAutoIterationService.clearSessionIfMatching(workspace.id, 'different-session')).resolves.toBe(false);
340
+ expect((await findWorkspaceOrThrow(workspace.id)).autoIterationSessionId).toBe('session-1');
341
+ await expect(workspaceAutoIterationService.clearSessionIfMatching(workspace.id, 'session-1')).resolves.toBe(true);
342
+ expect((await findWorkspaceOrThrow(workspace.id)).autoIterationSessionId).toBeNull();
245
343
  });
246
344
  });
247
- describe('projectAccessor', () => {
345
+ describe('projectManagementService', () => {
248
346
  it('auto-detects GitHub owner/repo from git remote during create', async () => {
249
347
  const repoPath = createGitRepository('git@github.com:purplefish-ai/factory-factory.git');
250
- const project = await projectAccessor.create({
348
+ const project = await projectManagementService.create({
251
349
  repoPath,
252
350
  }, {
253
351
  worktreeBaseDir: '/tmp/worktrees',
@@ -259,7 +357,7 @@ describe('resource accessors integration', () => {
259
357
  const repoPath = createGitRepository('git@github.com:purplefish-ai/factory-factory.git');
260
358
  createGitCommit(repoPath);
261
359
  setOriginHead(repoPath, 'unstable');
262
- const project = await projectAccessor.create({
360
+ const project = await projectManagementService.create({
263
361
  repoPath,
264
362
  }, {
265
363
  worktreeBaseDir: '/tmp/worktrees',
@@ -269,7 +367,7 @@ describe('resource accessors integration', () => {
269
367
  it('falls back to local HEAD when origin HEAD is unavailable during create', async () => {
270
368
  const repoPath = createGitRepository();
271
369
  execFileSync('git', ['checkout', '-b', 'develop'], { cwd: repoPath });
272
- const project = await projectAccessor.create({
370
+ const project = await projectManagementService.create({
273
371
  repoPath,
274
372
  }, {
275
373
  worktreeBaseDir: '/tmp/worktrees',
@@ -279,7 +377,7 @@ describe('resource accessors integration', () => {
279
377
  it('falls back to main when default branch cannot be detected during create', async () => {
280
378
  const repoPath = mkdtempSync(join(tmpdir(), 'ff-nongit-'));
281
379
  tempRepoDirs.add(repoPath);
282
- const project = await projectAccessor.create({
380
+ const project = await projectManagementService.create({
283
381
  repoPath,
284
382
  }, {
285
383
  worktreeBaseDir: '/tmp/worktrees',
@@ -288,12 +386,12 @@ describe('resource accessors integration', () => {
288
386
  });
289
387
  it('retries slug creation when a slug collision occurs', async () => {
290
388
  const repoPath = createGitRepository();
291
- const first = await projectAccessor.create({
389
+ const first = await projectManagementService.create({
292
390
  repoPath,
293
391
  }, {
294
392
  worktreeBaseDir: '/tmp/worktrees',
295
393
  });
296
- const second = await projectAccessor.create({
394
+ const second = await projectManagementService.create({
297
395
  repoPath,
298
396
  }, {
299
397
  worktreeBaseDir: '/tmp/worktrees',
@@ -305,26 +403,17 @@ describe('resource accessors integration', () => {
305
403
  const gitRepo = createGitRepository();
306
404
  const nonGitDir = mkdtempSync(join(tmpdir(), 'ff-nongit-'));
307
405
  tempRepoDirs.add(nonGitDir);
308
- const valid = await projectAccessor.validateRepoPath(gitRepo);
309
- const invalid = await projectAccessor.validateRepoPath(nonGitDir);
310
- const missing = await projectAccessor.validateRepoPath('/path/that/does/not/exist');
406
+ const valid = await projectManagementService.validateRepoPath(gitRepo);
407
+ const invalid = await projectManagementService.validateRepoPath(nonGitDir);
408
+ const missing = await projectManagementService.validateRepoPath('/path/that/does/not/exist');
311
409
  expect(valid.valid).toBe(true);
312
410
  expect(invalid.valid).toBe(false);
313
411
  expect(invalid.error).toContain('not a git repository');
314
412
  expect(missing.valid).toBe(false);
315
413
  expect(missing.error).toContain('does not exist');
316
414
  });
317
- it('evicts git client cache on project delete', async () => {
318
- const project = await createProjectFixture();
319
- const removeSpy = vi.spyOn(GitClientFactory, 'removeProject').mockImplementation(() => false);
320
- await projectAccessor.delete(project.id);
321
- expect(removeSpy).toHaveBeenCalledWith({
322
- repoPath: project.repoPath,
323
- worktreeBasePath: project.worktreeBasePath,
324
- });
325
- });
326
415
  });
327
- describe('agentSessionAccessor', () => {
416
+ describe('sessionDataService', () => {
328
417
  it('returns existing RUNNING fixer session instead of creating a new one', async () => {
329
418
  const project = await createProjectFixture();
330
419
  const workspace = await createWorkspaceFixture(project.id);
@@ -337,11 +426,12 @@ describe('resource accessors integration', () => {
337
426
  provider: 'CLAUDE',
338
427
  },
339
428
  });
340
- const acquired = await agentSessionAccessor.acquireFixerSession({
429
+ const acquired = await sessionDataService.acquireFixerSession({
341
430
  workspaceId: workspace.id,
342
431
  workflow: 'ci-fix',
343
432
  sessionName: 'CI Fixer',
344
433
  maxSessions: 3,
434
+ provider: 'CLAUDE',
345
435
  providerProjectPath: '/tmp/worktree',
346
436
  });
347
437
  expect(acquired).toEqual({
@@ -371,11 +461,12 @@ describe('resource accessors integration', () => {
371
461
  },
372
462
  ],
373
463
  });
374
- const acquired = await agentSessionAccessor.acquireFixerSession({
464
+ const acquired = await sessionDataService.acquireFixerSession({
375
465
  workspaceId: workspace.id,
376
466
  workflow: 'ci-fix',
377
467
  sessionName: 'CI Fixer',
378
468
  maxSessions: 2,
469
+ provider: 'CLAUDE',
379
470
  providerProjectPath: null,
380
471
  });
381
472
  expect(acquired).toEqual({ outcome: 'limit_reached' });
@@ -401,11 +492,12 @@ describe('resource accessors integration', () => {
401
492
  },
402
493
  ],
403
494
  });
404
- const acquired = await agentSessionAccessor.acquireFixerSession({
495
+ const acquired = await sessionDataService.acquireFixerSession({
405
496
  workspaceId: workspace.id,
406
497
  workflow: 'ci-fix',
407
498
  sessionName: 'CI Fixer',
408
499
  maxSessions: 2,
500
+ provider: 'CLAUDE',
409
501
  providerProjectPath: null,
410
502
  });
411
503
  expect(acquired.outcome).toBe('created');
@@ -422,11 +514,12 @@ describe('resource accessors integration', () => {
422
514
  provider: 'CLAUDE',
423
515
  },
424
516
  });
425
- const acquired = await agentSessionAccessor.acquireFixerSession({
517
+ const acquired = await sessionDataService.acquireFixerSession({
426
518
  workspaceId: workspace.id,
427
519
  workflow: 'ci-fix',
428
520
  sessionName: 'CI Fixer',
429
521
  maxSessions: 5,
522
+ provider: 'CLAUDE',
430
523
  providerProjectPath: '/tmp/worktree',
431
524
  });
432
525
  expect(acquired.outcome).toBe('created');
@@ -440,7 +533,7 @@ describe('resource accessors integration', () => {
440
533
  expect(created.status).toBe(SessionStatus.IDLE);
441
534
  });
442
535
  });
443
- describe('terminalSessionAccessor', () => {
536
+ describe('terminalSessionService', () => {
444
537
  it('clears pid only for matching terminal names in the requested workspace', async () => {
445
538
  const project = await createProjectFixture();
446
539
  const workspace = await createWorkspaceFixture(project.id);
@@ -453,7 +546,7 @@ describe('resource accessors integration', () => {
453
546
  { workspaceId: otherWorkspace.id, name: 'terminal-a', pid: 4004 },
454
547
  ],
455
548
  });
456
- await terminalSessionAccessor.clearPid(workspace.id, 'terminal-a');
549
+ await terminalSessionService.releaseSessionPid(workspace.id, 'terminal-a');
457
550
  const all = await prisma.terminalSession.findMany({ orderBy: { name: 'asc' } });
458
551
  const target = all.filter((session) => session.workspaceId === workspace.id && session.name === 'terminal-a');
459
552
  const untouchedName = all.find((session) => session.name === 'terminal-b');
@@ -471,13 +564,13 @@ describe('resource accessors integration', () => {
471
564
  await prisma.terminalSession.create({
472
565
  data: { workspaceId: workspace.id, name: 'idle', pid: null },
473
566
  });
474
- const withPid = await terminalSessionAccessor.findWithPid();
567
+ const withPid = await terminalSessionService.listPidBackedSessions();
475
568
  expect(withPid.map((session) => session.id)).toEqual([live.id]);
476
569
  });
477
570
  });
478
- describe('userSettingsAccessor', () => {
571
+ describe('userSettingsService', () => {
479
572
  it('creates defaults on first read', async () => {
480
- const settings = await userSettingsAccessor.get();
573
+ const settings = await userSettingsService.get();
481
574
  expect(settings.userId).toBe('default');
482
575
  expect(settings.preferredIde).toBe('cursor');
483
576
  expect(settings.playSoundOnComplete).toBe(true);
@@ -485,24 +578,24 @@ describe('resource accessors integration', () => {
485
578
  expect(settings.defaultCodexModel).toBe('default');
486
579
  });
487
580
  it('returns one default row for concurrent first reads', async () => {
488
- const settings = await Promise.all(Array.from({ length: 10 }, () => userSettingsAccessor.get()));
581
+ const settings = await Promise.all(Array.from({ length: 10 }, () => userSettingsService.get()));
489
582
  expect(new Set(settings.map((row) => row.id)).size).toBe(1);
490
583
  expect(await prisma.userSettings.count({ where: { userId: 'default' } })).toBe(1);
491
584
  });
492
585
  it('persists workspace order by project id', async () => {
493
586
  const projectA = await createProjectFixture();
494
587
  const projectB = await createProjectFixture();
495
- await userSettingsAccessor.updateWorkspaceOrder(projectA.id, ['ws-3', 'ws-1']);
496
- await userSettingsAccessor.updateWorkspaceOrder(projectB.id, ['ws-9']);
497
- const orderA = await userSettingsAccessor.getWorkspaceOrder(projectA.id);
498
- const orderB = await userSettingsAccessor.getWorkspaceOrder(projectB.id);
588
+ await userSettingsService.updateWorkspaceOrder(projectA.id, ['ws-3', 'ws-1']);
589
+ await userSettingsService.updateWorkspaceOrder(projectB.id, ['ws-9']);
590
+ const orderA = await userSettingsService.getWorkspaceOrder(projectA.id);
591
+ const orderB = await userSettingsService.getWorkspaceOrder(projectB.id);
499
592
  expect(orderA).toEqual(['ws-3', 'ws-1']);
500
593
  expect(orderB).toEqual(['ws-9']);
501
594
  });
502
595
  it('retries stale workspace order writes and preserves concurrent project entries', async () => {
503
596
  const projectA = await createProjectFixture();
504
597
  const projectB = await createProjectFixture();
505
- await userSettingsAccessor.get();
598
+ await userSettingsService.get();
506
599
  const originalUpdateMany = prisma.userSettings.updateMany.bind(prisma.userSettings);
507
600
  let injectedConcurrentUpdate = false;
508
601
  const updateManySpy = vi
@@ -525,7 +618,7 @@ describe('resource accessors integration', () => {
525
618
  }
526
619
  return originalUpdateMany(args);
527
620
  });
528
- await userSettingsAccessor.updateWorkspaceOrder(projectA.id, ['ws-3', 'ws-1']);
621
+ await userSettingsService.updateWorkspaceOrder(projectA.id, ['ws-3', 'ws-1']);
529
622
  const settings = await prisma.userSettings.findUniqueOrThrow({
530
623
  where: { userId: 'default' },
531
624
  });
@@ -536,9 +629,9 @@ describe('resource accessors integration', () => {
536
629
  });
537
630
  });
538
631
  });
539
- describe('decisionLogAccessor', () => {
632
+ describe('decisionLogService', () => {
540
633
  it('formats automatic error logs with structured context', async () => {
541
- const entry = await decisionLogAccessor.createAutomatic('agent-1', 'OpenFile', 'error', {
634
+ const entry = await decisionLogService.createAutomatic('agent-1', 'OpenFile', 'error', {
542
635
  message: 'permission denied',
543
636
  code: 'EACCES',
544
637
  });
@@ -549,11 +642,11 @@ describe('resource accessors integration', () => {
549
642
  expect(entry.context).toContain('EACCES');
550
643
  });
551
644
  it('lists recent logs scoped by agent id', async () => {
552
- await decisionLogAccessor.createManual('agent-1', 'Decision A', 'Reason A');
553
- await decisionLogAccessor.createManual('agent-2', 'Decision B', 'Reason B');
554
- await decisionLogAccessor.createManual('agent-1', 'Decision C', 'Reason C');
555
- const agentOne = await decisionLogAccessor.list({ agentId: 'agent-1', limit: 10 });
556
- const all = await decisionLogAccessor.list({ limit: 10 });
645
+ await decisionLogService.createManual('agent-1', 'Decision A', 'Reason A');
646
+ await decisionLogService.createManual('agent-2', 'Decision B', 'Reason B');
647
+ await decisionLogService.createManual('agent-1', 'Decision C', 'Reason C');
648
+ const agentOne = await decisionLogService.list({ agentId: 'agent-1', limit: 10 });
649
+ const all = await decisionLogService.list({ limit: 10 });
557
650
  expect(agentOne).toHaveLength(2);
558
651
  expect(agentOne.every((entry) => entry.agentId === 'agent-1')).toBe(true);
559
652
  expect(all).toHaveLength(3);