factory-factory 0.2.3 → 0.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (364) hide show
  1. package/README.md +2 -2
  2. package/dist/client/assets/{_basePickBy-ClLqD23W.js → _basePickBy-BXw54oMQ.js} +1 -1
  3. package/dist/client/assets/{_baseUniq-DVVSJ599.js → _baseUniq-_2-lN-JZ.js} +1 -1
  4. package/dist/client/assets/{arc-DCPJ-atk.js → arc-DaCKgXo4.js} +1 -1
  5. package/dist/client/assets/{architectureDiagram-VXUJARFQ-dvBXEdHJ.js → architectureDiagram-VXUJARFQ-D5dlDvyJ.js} +1 -1
  6. package/dist/client/assets/{blockDiagram-VD42YOAC-BnlsKN_S.js → blockDiagram-VD42YOAC-CEAiD2S_.js} +1 -1
  7. package/dist/client/assets/{c4Diagram-YG6GDRKO-AMG1QOcD.js → c4Diagram-YG6GDRKO-DTNRx2b5.js} +1 -1
  8. package/dist/client/assets/channel-BusoDFL5.js +1 -0
  9. package/dist/client/assets/{chunk-4BX2VUAB-CvbHsudf.js → chunk-4BX2VUAB-yvp0WNZ0.js} +1 -1
  10. package/dist/client/assets/{chunk-55IACEB6-CtFa9sig.js → chunk-55IACEB6-Cse3ExNd.js} +1 -1
  11. package/dist/client/assets/{chunk-B4BG7PRW-sjqCuFZK.js → chunk-B4BG7PRW-Bl2GpPLn.js} +1 -1
  12. package/dist/client/assets/{chunk-DI55MBZ5-vsqDRqHG.js → chunk-DI55MBZ5-CV5Cqkss.js} +1 -1
  13. package/dist/client/assets/{chunk-FMBD7UC4-lEVbnFWf.js → chunk-FMBD7UC4-CP3yjlO6.js} +1 -1
  14. package/dist/client/assets/{chunk-QN33PNHL-laYvT_kS.js → chunk-QN33PNHL-DUdJaEPB.js} +1 -1
  15. package/dist/client/assets/{chunk-QZHKN3VN-Cs-LwO3R.js → chunk-QZHKN3VN-DYTUnPIc.js} +1 -1
  16. package/dist/client/assets/{chunk-TZMSLE5B-GQQ1aq3v.js → chunk-TZMSLE5B-CtWiqR24.js} +1 -1
  17. package/dist/client/assets/classDiagram-2ON5EDUG-C3RMRasv.js +1 -0
  18. package/dist/client/assets/classDiagram-v2-WZHVMYZB-C3RMRasv.js +1 -0
  19. package/dist/client/assets/clone-D6B-nWvg.js +1 -0
  20. package/dist/client/assets/{cose-bilkent-S5V4N54A-Y_FrS_Az.js → cose-bilkent-S5V4N54A-B67RdhOB.js} +1 -1
  21. package/dist/client/assets/{dagre-6UL2VRFP-DQIwKP-6.js → dagre-6UL2VRFP-D9u_oxJL.js} +1 -1
  22. package/dist/client/assets/{diagram-PSM6KHXK-jFQ4tsW4.js → diagram-PSM6KHXK-DOWfPnpa.js} +1 -1
  23. package/dist/client/assets/{diagram-QEK2KX5R-0kFBcfBt.js → diagram-QEK2KX5R-CqJwZbAA.js} +1 -1
  24. package/dist/client/assets/{diagram-S2PKOQOG-Cx_fwFHF.js → diagram-S2PKOQOG-D0ri9ztm.js} +1 -1
  25. package/dist/client/assets/{erDiagram-Q2GNP2WA-CUgHzWnq.js → erDiagram-Q2GNP2WA-0cRKPUY7.js} +1 -1
  26. package/dist/client/assets/{flowDiagram-NV44I4VS-DBPSyGKN.js → flowDiagram-NV44I4VS-Cj_5-ww1.js} +1 -1
  27. package/dist/client/assets/{ganttDiagram-JELNMOA3-BPAxxsuh.js → ganttDiagram-JELNMOA3-Cwm2arni.js} +1 -1
  28. package/dist/client/assets/{gitGraphDiagram-NY62KEGX-BHLuayx7.js → gitGraphDiagram-NY62KEGX-DKyLuO26.js} +1 -1
  29. package/dist/client/assets/{graph-hSnQ7U0p.js → graph-BhRkLhV1.js} +1 -1
  30. package/dist/client/assets/{index-CwTQdVJd.js → index-1HR_eYGL.js} +220 -182
  31. package/dist/client/assets/index-DHENAn70.css +1 -0
  32. package/dist/client/assets/{infoDiagram-WHAUD3N6-DqA4KMDO.js → infoDiagram-WHAUD3N6-DuzPbELj.js} +1 -1
  33. package/dist/client/assets/{journeyDiagram-XKPGCS4Q-DlVpIfsm.js → journeyDiagram-XKPGCS4Q-BfearpNr.js} +1 -1
  34. package/dist/client/assets/{kanban-definition-3W4ZIXB7-Bn7zJ_Qs.js → kanban-definition-3W4ZIXB7-R5KMtAj4.js} +1 -1
  35. package/dist/client/assets/{layout-BgfjjiLB.js → layout-B-tL36G2.js} +1 -1
  36. package/dist/client/assets/{linear-pgYyXM7v.js → linear-CvIBiHN-.js} +1 -1
  37. package/dist/client/assets/{mindmap-definition-VGOIOE7T-CU2bFQ_O.js → mindmap-definition-VGOIOE7T-CHYN0wBz.js} +1 -1
  38. package/dist/client/assets/{pieDiagram-ADFJNKIX-CdkFaWPc.js → pieDiagram-ADFJNKIX-LkA8WwD-.js} +1 -1
  39. package/dist/client/assets/{quadrantDiagram-AYHSOK5B-gp1mJ5Yc.js → quadrantDiagram-AYHSOK5B-B5s8Qc9j.js} +1 -1
  40. package/dist/client/assets/{requirementDiagram-UZGBJVZJ-BO59auEv.js → requirementDiagram-UZGBJVZJ-BMLpjBJA.js} +1 -1
  41. package/dist/client/assets/{sankeyDiagram-TZEHDZUN-BrZ8rlwL.js → sankeyDiagram-TZEHDZUN-BIj9RGlp.js} +1 -1
  42. package/dist/client/assets/{sequenceDiagram-WL72ISMW-LojphsDR.js → sequenceDiagram-WL72ISMW-uGM-Jh_O.js} +1 -1
  43. package/dist/client/assets/{stateDiagram-FKZM4ZOC-8bPGJ9iG.js → stateDiagram-FKZM4ZOC-CQQhnUok.js} +1 -1
  44. package/dist/client/assets/stateDiagram-v2-4FDKWEC3-BUJPEM7D.js +1 -0
  45. package/dist/client/assets/{terminal-instance-YWv2YE4B.js → terminal-instance-DpK3PfW4.js} +1 -1
  46. package/dist/client/assets/{timeline-definition-IT6M3QCI-1mTwPI08.js → timeline-definition-IT6M3QCI-BusXMYfI.js} +1 -1
  47. package/dist/client/assets/{treemap-KMMF4GRG-VwmVQuy1.js → treemap-KMMF4GRG-XF3-w8dz.js} +1 -1
  48. package/dist/client/assets/{xychartDiagram-PRI3JC2R-zPQ-EL8y.js → xychartDiagram-PRI3JC2R-DhKTXxb3.js} +1 -1
  49. package/dist/client/index.html +2 -2
  50. package/dist/prisma/generated/enums.d.ts +0 -1
  51. package/dist/prisma/generated/enums.d.ts.map +1 -1
  52. package/dist/prisma/generated/enums.js +0 -1
  53. package/dist/prisma/generated/enums.js.map +1 -1
  54. package/dist/prisma/generated/internal/class.js +2 -2
  55. package/dist/prisma/generated/internal/class.js.map +1 -1
  56. package/dist/prisma/generated/internal/prismaNamespace.d.ts +0 -1
  57. package/dist/prisma/generated/internal/prismaNamespace.d.ts.map +1 -1
  58. package/dist/prisma/generated/internal/prismaNamespace.js +0 -1
  59. package/dist/prisma/generated/internal/prismaNamespace.js.map +1 -1
  60. package/dist/prisma/generated/internal/prismaNamespaceBrowser.d.ts +0 -1
  61. package/dist/prisma/generated/internal/prismaNamespaceBrowser.d.ts.map +1 -1
  62. package/dist/prisma/generated/internal/prismaNamespaceBrowser.js +0 -1
  63. package/dist/prisma/generated/internal/prismaNamespaceBrowser.js.map +1 -1
  64. package/dist/prisma/generated/models/UserSettings.d.ts +1 -29
  65. package/dist/prisma/generated/models/UserSettings.d.ts.map +1 -1
  66. package/dist/prompts/ratchet/dispatch.md +31 -0
  67. package/dist/prompts/workflows/ratchet.md +22 -36
  68. package/dist/src/backend/app-context.d.ts +4 -0
  69. package/dist/src/backend/app-context.d.ts.map +1 -1
  70. package/dist/src/backend/app-context.js +4 -0
  71. package/dist/src/backend/app-context.js.map +1 -1
  72. package/dist/src/backend/claude/protocol.d.ts +3 -0
  73. package/dist/src/backend/claude/protocol.d.ts.map +1 -1
  74. package/dist/src/backend/claude/protocol.js +63 -10
  75. package/dist/src/backend/claude/protocol.js.map +1 -1
  76. package/dist/src/backend/claude/protocol.test.js +188 -0
  77. package/dist/src/backend/claude/protocol.test.js.map +1 -1
  78. package/dist/src/backend/claude/registry.d.ts.map +1 -1
  79. package/dist/src/backend/claude/registry.js +12 -1
  80. package/dist/src/backend/claude/registry.js.map +1 -1
  81. package/dist/src/backend/claude/session.d.ts.map +1 -1
  82. package/dist/src/backend/claude/session.js +40 -6
  83. package/dist/src/backend/claude/session.js.map +1 -1
  84. package/dist/src/backend/claude/session.test.js +46 -0
  85. package/dist/src/backend/claude/session.test.js.map +1 -1
  86. package/dist/src/backend/claude/types.d.ts +28 -3
  87. package/dist/src/backend/claude/types.d.ts.map +1 -1
  88. package/dist/src/backend/claude/types.js +28 -0
  89. package/dist/src/backend/claude/types.js.map +1 -1
  90. package/dist/src/backend/interceptors/pr-detection.interceptor.d.ts.map +1 -1
  91. package/dist/src/backend/interceptors/pr-detection.interceptor.js +19 -23
  92. package/dist/src/backend/interceptors/pr-detection.interceptor.js.map +1 -1
  93. package/dist/src/backend/prompts/markdown-loader.d.ts +22 -0
  94. package/dist/src/backend/prompts/markdown-loader.d.ts.map +1 -0
  95. package/dist/src/backend/prompts/markdown-loader.js +77 -0
  96. package/dist/src/backend/prompts/markdown-loader.js.map +1 -0
  97. package/dist/src/backend/prompts/markdown-loader.test.d.ts +2 -0
  98. package/dist/src/backend/prompts/markdown-loader.test.d.ts.map +1 -0
  99. package/dist/src/backend/prompts/markdown-loader.test.js +190 -0
  100. package/dist/src/backend/prompts/markdown-loader.test.js.map +1 -0
  101. package/dist/src/backend/prompts/quick-actions.d.ts.map +1 -1
  102. package/dist/src/backend/prompts/quick-actions.js +34 -92
  103. package/dist/src/backend/prompts/quick-actions.js.map +1 -1
  104. package/dist/src/backend/prompts/ratchet-dispatch.d.ts +3 -0
  105. package/dist/src/backend/prompts/ratchet-dispatch.d.ts.map +1 -0
  106. package/dist/src/backend/prompts/ratchet-dispatch.js +53 -0
  107. package/dist/src/backend/prompts/ratchet-dispatch.js.map +1 -0
  108. package/dist/src/backend/prompts/ratchet-dispatch.test.d.ts +2 -0
  109. package/dist/src/backend/prompts/ratchet-dispatch.test.d.ts.map +1 -0
  110. package/dist/src/backend/prompts/ratchet-dispatch.test.js +34 -0
  111. package/dist/src/backend/prompts/ratchet-dispatch.test.js.map +1 -0
  112. package/dist/src/backend/prompts/workflows.d.ts.map +1 -1
  113. package/dist/src/backend/prompts/workflows.js +23 -76
  114. package/dist/src/backend/prompts/workflows.js.map +1 -1
  115. package/dist/src/backend/resource_accessors/user-settings.accessor.d.ts +0 -1
  116. package/dist/src/backend/resource_accessors/user-settings.accessor.d.ts.map +1 -1
  117. package/dist/src/backend/resource_accessors/user-settings.accessor.js.map +1 -1
  118. package/dist/src/backend/resource_accessors/workspace.accessor.d.ts +4 -3
  119. package/dist/src/backend/resource_accessors/workspace.accessor.d.ts.map +1 -1
  120. package/dist/src/backend/resource_accessors/workspace.accessor.js +4 -2
  121. package/dist/src/backend/resource_accessors/workspace.accessor.js.map +1 -1
  122. package/dist/src/backend/routers/websocket/chat.handler.d.ts.map +1 -1
  123. package/dist/src/backend/routers/websocket/chat.handler.js +1 -30
  124. package/dist/src/backend/routers/websocket/chat.handler.js.map +1 -1
  125. package/dist/src/backend/services/chat-event-forwarder.service.d.ts.map +1 -1
  126. package/dist/src/backend/services/chat-event-forwarder.service.js +9 -13
  127. package/dist/src/backend/services/chat-event-forwarder.service.js.map +1 -1
  128. package/dist/src/backend/services/chat-message-handlers/attachment-processing.d.ts +14 -0
  129. package/dist/src/backend/services/chat-message-handlers/attachment-processing.d.ts.map +1 -0
  130. package/dist/src/backend/services/chat-message-handlers/attachment-processing.js +81 -0
  131. package/dist/src/backend/services/chat-message-handlers/attachment-processing.js.map +1 -0
  132. package/dist/src/backend/services/chat-message-handlers/attachment-processing.test.d.ts +2 -0
  133. package/dist/src/backend/services/chat-message-handlers/attachment-processing.test.d.ts.map +1 -0
  134. package/dist/src/backend/services/chat-message-handlers/attachment-processing.test.js +315 -0
  135. package/dist/src/backend/services/chat-message-handlers/attachment-processing.test.js.map +1 -0
  136. package/dist/src/backend/services/chat-message-handlers/handlers/get-history.handler.d.ts +2 -1
  137. package/dist/src/backend/services/chat-message-handlers/handlers/get-history.handler.d.ts.map +1 -1
  138. package/dist/src/backend/services/chat-message-handlers/handlers/get-history.handler.js.map +1 -1
  139. package/dist/src/backend/services/chat-message-handlers/handlers/get-queue.handler.d.ts +2 -1
  140. package/dist/src/backend/services/chat-message-handlers/handlers/get-queue.handler.d.ts.map +1 -1
  141. package/dist/src/backend/services/chat-message-handlers/handlers/get-queue.handler.js +7 -3
  142. package/dist/src/backend/services/chat-message-handlers/handlers/get-queue.handler.js.map +1 -1
  143. package/dist/src/backend/services/chat-message-handlers/handlers/handlers.test.js +156 -6
  144. package/dist/src/backend/services/chat-message-handlers/handlers/handlers.test.js.map +1 -1
  145. package/dist/src/backend/services/chat-message-handlers/handlers/list-sessions.handler.d.ts +2 -1
  146. package/dist/src/backend/services/chat-message-handlers/handlers/list-sessions.handler.d.ts.map +1 -1
  147. package/dist/src/backend/services/chat-message-handlers/handlers/list-sessions.handler.js.map +1 -1
  148. package/dist/src/backend/services/chat-message-handlers/handlers/load-session.handler.d.ts +2 -1
  149. package/dist/src/backend/services/chat-message-handlers/handlers/load-session.handler.d.ts.map +1 -1
  150. package/dist/src/backend/services/chat-message-handlers/handlers/load-session.handler.js +41 -31
  151. package/dist/src/backend/services/chat-message-handlers/handlers/load-session.handler.js.map +1 -1
  152. package/dist/src/backend/services/chat-message-handlers/handlers/permission-response.handler.d.ts +2 -1
  153. package/dist/src/backend/services/chat-message-handlers/handlers/permission-response.handler.d.ts.map +1 -1
  154. package/dist/src/backend/services/chat-message-handlers/handlers/permission-response.handler.js +1 -2
  155. package/dist/src/backend/services/chat-message-handlers/handlers/permission-response.handler.js.map +1 -1
  156. package/dist/src/backend/services/chat-message-handlers/handlers/question-response.handler.d.ts +2 -1
  157. package/dist/src/backend/services/chat-message-handlers/handlers/question-response.handler.d.ts.map +1 -1
  158. package/dist/src/backend/services/chat-message-handlers/handlers/question-response.handler.js +1 -2
  159. package/dist/src/backend/services/chat-message-handlers/handlers/question-response.handler.js.map +1 -1
  160. package/dist/src/backend/services/chat-message-handlers/handlers/queue-message.handler.d.ts +2 -1
  161. package/dist/src/backend/services/chat-message-handlers/handlers/queue-message.handler.d.ts.map +1 -1
  162. package/dist/src/backend/services/chat-message-handlers/handlers/queue-message.handler.js +6 -7
  163. package/dist/src/backend/services/chat-message-handlers/handlers/queue-message.handler.js.map +1 -1
  164. package/dist/src/backend/services/chat-message-handlers/handlers/remove-queued-message.handler.d.ts +2 -1
  165. package/dist/src/backend/services/chat-message-handlers/handlers/remove-queued-message.handler.d.ts.map +1 -1
  166. package/dist/src/backend/services/chat-message-handlers/handlers/remove-queued-message.handler.js +1 -2
  167. package/dist/src/backend/services/chat-message-handlers/handlers/remove-queued-message.handler.js.map +1 -1
  168. package/dist/src/backend/services/chat-message-handlers/handlers/rewind-files.handler.d.ts +2 -1
  169. package/dist/src/backend/services/chat-message-handlers/handlers/rewind-files.handler.d.ts.map +1 -1
  170. package/dist/src/backend/services/chat-message-handlers/handlers/rewind-files.handler.js +8 -9
  171. package/dist/src/backend/services/chat-message-handlers/handlers/rewind-files.handler.js.map +1 -1
  172. package/dist/src/backend/services/chat-message-handlers/handlers/set-model.handler.d.ts +2 -1
  173. package/dist/src/backend/services/chat-message-handlers/handlers/set-model.handler.d.ts.map +1 -1
  174. package/dist/src/backend/services/chat-message-handlers/handlers/set-model.handler.js +4 -5
  175. package/dist/src/backend/services/chat-message-handlers/handlers/set-model.handler.js.map +1 -1
  176. package/dist/src/backend/services/chat-message-handlers/handlers/set-thinking-budget.handler.d.ts +2 -1
  177. package/dist/src/backend/services/chat-message-handlers/handlers/set-thinking-budget.handler.d.ts.map +1 -1
  178. package/dist/src/backend/services/chat-message-handlers/handlers/set-thinking-budget.handler.js +4 -5
  179. package/dist/src/backend/services/chat-message-handlers/handlers/set-thinking-budget.handler.js.map +1 -1
  180. package/dist/src/backend/services/chat-message-handlers/handlers/start.handler.d.ts +2 -1
  181. package/dist/src/backend/services/chat-message-handlers/handlers/start.handler.d.ts.map +1 -1
  182. package/dist/src/backend/services/chat-message-handlers/handlers/start.handler.js +4 -2
  183. package/dist/src/backend/services/chat-message-handlers/handlers/start.handler.js.map +1 -1
  184. package/dist/src/backend/services/chat-message-handlers/handlers/stop.handler.d.ts +2 -1
  185. package/dist/src/backend/services/chat-message-handlers/handlers/stop.handler.d.ts.map +1 -1
  186. package/dist/src/backend/services/chat-message-handlers/handlers/stop.handler.js +7 -2
  187. package/dist/src/backend/services/chat-message-handlers/handlers/stop.handler.js.map +1 -1
  188. package/dist/src/backend/services/chat-message-handlers/handlers/user-input.handler.d.ts +2 -1
  189. package/dist/src/backend/services/chat-message-handlers/handlers/user-input.handler.d.ts.map +1 -1
  190. package/dist/src/backend/services/chat-message-handlers/handlers/user-input.handler.js +1 -2
  191. package/dist/src/backend/services/chat-message-handlers/handlers/user-input.handler.js.map +1 -1
  192. package/dist/src/backend/services/chat-message-handlers/registry.d.ts +5 -1
  193. package/dist/src/backend/services/chat-message-handlers/registry.d.ts.map +1 -1
  194. package/dist/src/backend/services/chat-message-handlers/registry.js.map +1 -1
  195. package/dist/src/backend/services/chat-message-handlers.service.d.ts +0 -2
  196. package/dist/src/backend/services/chat-message-handlers.service.d.ts.map +1 -1
  197. package/dist/src/backend/services/chat-message-handlers.service.js +6 -68
  198. package/dist/src/backend/services/chat-message-handlers.service.js.map +1 -1
  199. package/dist/src/backend/services/chat-transport-adapter.service.d.ts +2 -0
  200. package/dist/src/backend/services/chat-transport-adapter.service.d.ts.map +1 -1
  201. package/dist/src/backend/services/chat-transport-adapter.service.js +32 -1
  202. package/dist/src/backend/services/chat-transport-adapter.service.js.map +1 -1
  203. package/dist/src/backend/services/chat-transport-adapter.service.test.js +14 -0
  204. package/dist/src/backend/services/chat-transport-adapter.service.test.js.map +1 -1
  205. package/dist/src/backend/services/data-backup.service.d.ts +3 -144
  206. package/dist/src/backend/services/data-backup.service.d.ts.map +1 -1
  207. package/dist/src/backend/services/data-backup.service.js +119 -115
  208. package/dist/src/backend/services/data-backup.service.js.map +1 -1
  209. package/dist/src/backend/services/data-backup.service.test.d.ts +2 -0
  210. package/dist/src/backend/services/data-backup.service.test.d.ts.map +1 -0
  211. package/dist/src/backend/services/data-backup.service.test.js +602 -0
  212. package/dist/src/backend/services/data-backup.service.test.js.map +1 -0
  213. package/dist/src/backend/services/file-lock.service.d.ts.map +1 -1
  214. package/dist/src/backend/services/file-lock.service.js +3 -5
  215. package/dist/src/backend/services/file-lock.service.js.map +1 -1
  216. package/dist/src/backend/services/file-lock.service.test.js +55 -0
  217. package/dist/src/backend/services/file-lock.service.test.js.map +1 -1
  218. package/dist/src/backend/services/github-cli.service.d.ts.map +1 -1
  219. package/dist/src/backend/services/github-cli.service.js +118 -19
  220. package/dist/src/backend/services/github-cli.service.js.map +1 -1
  221. package/dist/src/backend/services/github-cli.service.test.js +126 -0
  222. package/dist/src/backend/services/github-cli.service.test.js.map +1 -1
  223. package/dist/src/backend/services/index.d.ts +1 -0
  224. package/dist/src/backend/services/index.d.ts.map +1 -1
  225. package/dist/src/backend/services/index.js +1 -0
  226. package/dist/src/backend/services/index.js.map +1 -1
  227. package/dist/src/backend/services/message-state-machine.d.ts.map +1 -1
  228. package/dist/src/backend/services/message-state-machine.js +11 -5
  229. package/dist/src/backend/services/message-state-machine.js.map +1 -1
  230. package/dist/src/backend/services/message-state.service.d.ts +16 -18
  231. package/dist/src/backend/services/message-state.service.d.ts.map +1 -1
  232. package/dist/src/backend/services/message-state.service.js +8 -14
  233. package/dist/src/backend/services/message-state.service.js.map +1 -1
  234. package/dist/src/backend/services/message-state.service.test.js +36 -45
  235. package/dist/src/backend/services/message-state.service.test.js.map +1 -1
  236. package/dist/src/backend/services/pr-snapshot.service.d.ts +9 -1
  237. package/dist/src/backend/services/pr-snapshot.service.d.ts.map +1 -1
  238. package/dist/src/backend/services/pr-snapshot.service.js +53 -3
  239. package/dist/src/backend/services/pr-snapshot.service.js.map +1 -1
  240. package/dist/src/backend/services/pr-snapshot.service.test.js +102 -47
  241. package/dist/src/backend/services/pr-snapshot.service.test.js.map +1 -1
  242. package/dist/src/backend/services/ratchet.service.d.ts +14 -71
  243. package/dist/src/backend/services/ratchet.service.d.ts.map +1 -1
  244. package/dist/src/backend/services/ratchet.service.js +198 -439
  245. package/dist/src/backend/services/ratchet.service.js.map +1 -1
  246. package/dist/src/backend/services/ratchet.service.test.js +210 -358
  247. package/dist/src/backend/services/ratchet.service.test.js.map +1 -1
  248. package/dist/src/backend/services/run-script-state-machine.service.d.ts +27 -0
  249. package/dist/src/backend/services/run-script-state-machine.service.d.ts.map +1 -0
  250. package/dist/src/backend/services/run-script-state-machine.service.js +149 -0
  251. package/dist/src/backend/services/run-script-state-machine.service.js.map +1 -0
  252. package/dist/src/backend/services/run-script-state-machine.service.test.d.ts +2 -0
  253. package/dist/src/backend/services/run-script-state-machine.service.test.d.ts.map +1 -0
  254. package/dist/src/backend/services/run-script-state-machine.service.test.js +453 -0
  255. package/dist/src/backend/services/run-script-state-machine.service.test.js.map +1 -0
  256. package/dist/src/backend/services/run-script.service.d.ts +0 -7
  257. package/dist/src/backend/services/run-script.service.d.ts.map +1 -1
  258. package/dist/src/backend/services/run-script.service.js +145 -76
  259. package/dist/src/backend/services/run-script.service.js.map +1 -1
  260. package/dist/src/backend/services/scheduler.service.d.ts.map +1 -1
  261. package/dist/src/backend/services/scheduler.service.js +16 -7
  262. package/dist/src/backend/services/scheduler.service.js.map +1 -1
  263. package/dist/src/backend/services/scheduler.service.test.js +41 -5
  264. package/dist/src/backend/services/scheduler.service.test.js.map +1 -1
  265. package/dist/src/backend/services/session-runtime-store.service.d.ts +38 -0
  266. package/dist/src/backend/services/session-runtime-store.service.d.ts.map +1 -0
  267. package/dist/src/backend/services/session-runtime-store.service.js +111 -0
  268. package/dist/src/backend/services/session-runtime-store.service.js.map +1 -0
  269. package/dist/src/backend/services/session-runtime-store.service.test.d.ts +2 -0
  270. package/dist/src/backend/services/session-runtime-store.service.test.d.ts.map +1 -0
  271. package/dist/src/backend/services/session-runtime-store.service.test.js +15 -0
  272. package/dist/src/backend/services/session-runtime-store.service.test.js.map +1 -0
  273. package/dist/src/backend/services/session.repository.d.ts +2 -0
  274. package/dist/src/backend/services/session.repository.d.ts.map +1 -1
  275. package/dist/src/backend/services/session.repository.js +3 -0
  276. package/dist/src/backend/services/session.repository.js.map +1 -1
  277. package/dist/src/backend/services/session.service.d.ts +0 -1
  278. package/dist/src/backend/services/session.service.d.ts.map +1 -1
  279. package/dist/src/backend/services/session.service.js +18 -23
  280. package/dist/src/backend/services/session.service.js.map +1 -1
  281. package/dist/src/backend/services/session.service.test.js +210 -12
  282. package/dist/src/backend/services/session.service.test.js.map +1 -1
  283. package/dist/src/backend/services/workspace-creation.service.test.js +0 -2
  284. package/dist/src/backend/services/workspace-creation.service.test.js.map +1 -1
  285. package/dist/src/backend/services/workspace-flow-state.service.d.ts.map +1 -1
  286. package/dist/src/backend/services/workspace-flow-state.service.js +0 -1
  287. package/dist/src/backend/services/workspace-flow-state.service.js.map +1 -1
  288. package/dist/src/backend/services/workspace-query.service.d.ts +1 -0
  289. package/dist/src/backend/services/workspace-query.service.d.ts.map +1 -1
  290. package/dist/src/backend/services/workspace-query.service.js +8 -0
  291. package/dist/src/backend/services/workspace-query.service.js.map +1 -1
  292. package/dist/src/backend/services/worktree-lifecycle.service.d.ts.map +1 -1
  293. package/dist/src/backend/services/worktree-lifecycle.service.js +139 -19
  294. package/dist/src/backend/services/worktree-lifecycle.service.js.map +1 -1
  295. package/dist/src/backend/services/worktree-lifecycle.service.test.js +48 -1
  296. package/dist/src/backend/services/worktree-lifecycle.service.test.js.map +1 -1
  297. package/dist/src/backend/trpc/admin.trpc.d.ts +130 -7
  298. package/dist/src/backend/trpc/admin.trpc.d.ts.map +1 -1
  299. package/dist/src/backend/trpc/admin.trpc.js +2 -1
  300. package/dist/src/backend/trpc/admin.trpc.js.map +1 -1
  301. package/dist/src/backend/trpc/github.trpc.d.ts +14 -0
  302. package/dist/src/backend/trpc/github.trpc.d.ts.map +1 -1
  303. package/dist/src/backend/trpc/github.trpc.js +28 -0
  304. package/dist/src/backend/trpc/github.trpc.js.map +1 -1
  305. package/dist/src/backend/trpc/index.d.ts +149 -20
  306. package/dist/src/backend/trpc/index.d.ts.map +1 -1
  307. package/dist/src/backend/trpc/session.trpc.d.ts +3 -3
  308. package/dist/src/backend/trpc/user-settings.trpc.d.ts +0 -3
  309. package/dist/src/backend/trpc/user-settings.trpc.d.ts.map +1 -1
  310. package/dist/src/backend/trpc/user-settings.trpc.js +0 -1
  311. package/dist/src/backend/trpc/user-settings.trpc.js.map +1 -1
  312. package/dist/src/backend/trpc/workspace/run-script.trpc.d.ts +0 -7
  313. package/dist/src/backend/trpc/workspace/run-script.trpc.d.ts.map +1 -1
  314. package/dist/src/backend/trpc/workspace.trpc.d.ts +2 -7
  315. package/dist/src/backend/trpc/workspace.trpc.d.ts.map +1 -1
  316. package/dist/src/backend/trpc/workspace.trpc.js +13 -1
  317. package/dist/src/backend/trpc/workspace.trpc.js.map +1 -1
  318. package/dist/src/shared/ci-status.d.ts +9 -0
  319. package/dist/src/shared/ci-status.d.ts.map +1 -0
  320. package/dist/src/shared/ci-status.js +44 -0
  321. package/dist/src/shared/ci-status.js.map +1 -0
  322. package/dist/src/shared/claude/index.d.ts +1 -0
  323. package/dist/src/shared/claude/index.d.ts.map +1 -1
  324. package/dist/src/shared/claude/index.js +1 -0
  325. package/dist/src/shared/claude/index.js.map +1 -1
  326. package/dist/src/shared/claude/protocol.d.ts +6 -3
  327. package/dist/src/shared/claude/protocol.d.ts.map +1 -1
  328. package/dist/src/shared/claude/protocol.js.map +1 -1
  329. package/dist/src/shared/schemas/export-data.schema.d.ts +865 -0
  330. package/dist/src/shared/schemas/export-data.schema.d.ts.map +1 -0
  331. package/dist/src/shared/schemas/export-data.schema.js +167 -0
  332. package/dist/src/shared/schemas/export-data.schema.js.map +1 -0
  333. package/dist/src/shared/schemas/persisted-stores.schema.d.ts +19 -0
  334. package/dist/src/shared/schemas/persisted-stores.schema.d.ts.map +1 -0
  335. package/dist/src/shared/schemas/persisted-stores.schema.js +17 -0
  336. package/dist/src/shared/schemas/persisted-stores.schema.js.map +1 -0
  337. package/dist/src/shared/session-runtime.d.ts +17 -0
  338. package/dist/src/shared/session-runtime.d.ts.map +1 -0
  339. package/dist/src/shared/session-runtime.js +9 -0
  340. package/dist/src/shared/session-runtime.js.map +1 -0
  341. package/dist/src/shared/websocket/chat-message.schema.d.ts +24 -11
  342. package/dist/src/shared/websocket/chat-message.schema.d.ts.map +1 -1
  343. package/dist/src/shared/websocket/chat-message.schema.js +4 -1
  344. package/dist/src/shared/websocket/chat-message.schema.js.map +1 -1
  345. package/dist/src/shared/websocket/index.d.ts +1 -1
  346. package/dist/src/shared/websocket/index.d.ts.map +1 -1
  347. package/dist/src/shared/websocket/index.js.map +1 -1
  348. package/dist/src/shared/workspace-sidebar-status.d.ts +20 -0
  349. package/dist/src/shared/workspace-sidebar-status.d.ts.map +1 -0
  350. package/dist/src/shared/workspace-sidebar-status.js +73 -0
  351. package/dist/src/shared/workspace-sidebar-status.js.map +1 -0
  352. package/dist/tsconfig.backend.tsbuildinfo +1 -1
  353. package/package.json +2 -2
  354. package/prisma/migrations/20260206170000_remove_merge_conflict_state/migration.sql +7 -0
  355. package/prisma/migrations/20260206174726_remove_ratchet_auto_fix_conflicts/migration.sql +33 -0
  356. package/prisma/schema.prisma +0 -2
  357. package/prompts/ratchet/dispatch.md +31 -0
  358. package/prompts/workflows/ratchet.md +22 -36
  359. package/dist/client/assets/channel-DWeb1p1N.js +0 -1
  360. package/dist/client/assets/classDiagram-2ON5EDUG-DkYgN_SG.js +0 -1
  361. package/dist/client/assets/classDiagram-v2-WZHVMYZB-DkYgN_SG.js +0 -1
  362. package/dist/client/assets/clone-WKF0ejf5.js +0 -1
  363. package/dist/client/assets/index-DCpIgwSv.css +0 -1
  364. package/dist/client/assets/stateDiagram-v2-4FDKWEC3-BFf_HK07.js +0 -1
@@ -0,0 +1,602 @@
1
+ import { CIStatus, KanbanColumn, PRState, RatchetState, RunScriptStatus, WorkspaceCreationSource, WorkspaceStatus, } from '../../../prisma/generated/client.js';
2
+ import { beforeEach, describe, expect, it, vi } from 'vitest';
3
+ const mockTx = vi.hoisted(() => ({
4
+ project: {
5
+ findUnique: vi.fn(),
6
+ create: vi.fn(),
7
+ },
8
+ workspace: {
9
+ findUnique: vi.fn(),
10
+ create: vi.fn(),
11
+ },
12
+ claudeSession: {
13
+ findUnique: vi.fn(),
14
+ create: vi.fn(),
15
+ },
16
+ terminalSession: {
17
+ findUnique: vi.fn(),
18
+ create: vi.fn(),
19
+ },
20
+ userSettings: {
21
+ findFirst: vi.fn(),
22
+ create: vi.fn(),
23
+ },
24
+ }));
25
+ vi.mock('../db', () => ({
26
+ prisma: {
27
+ project: {
28
+ findMany: vi.fn(),
29
+ findUnique: vi.fn(),
30
+ create: vi.fn(),
31
+ },
32
+ workspace: {
33
+ findMany: vi.fn(),
34
+ findUnique: vi.fn(),
35
+ create: vi.fn(),
36
+ },
37
+ claudeSession: {
38
+ findMany: vi.fn(),
39
+ findUnique: vi.fn(),
40
+ create: vi.fn(),
41
+ },
42
+ terminalSession: {
43
+ findMany: vi.fn(),
44
+ findUnique: vi.fn(),
45
+ create: vi.fn(),
46
+ },
47
+ userSettings: {
48
+ findFirst: vi.fn(),
49
+ create: vi.fn(),
50
+ },
51
+ $transaction: vi.fn((callback) => callback(mockTx)),
52
+ },
53
+ }));
54
+ import { prisma } from '../db.js';
55
+ import { dataBackupService, exportDataSchema } from './data-backup.service.js';
56
+ describe('DataBackupService', () => {
57
+ const mockProject = {
58
+ id: 'proj-1',
59
+ name: 'Test Project',
60
+ slug: 'test-project',
61
+ repoPath: '/path/to/repo',
62
+ worktreeBasePath: '/path/to/worktrees',
63
+ defaultBranch: 'main',
64
+ githubOwner: 'test-owner',
65
+ githubRepo: 'test-repo',
66
+ isArchived: false,
67
+ startupScriptCommand: 'npm install',
68
+ startupScriptPath: null,
69
+ startupScriptTimeout: 300,
70
+ createdAt: new Date('2025-01-01T00:00:00.000Z'),
71
+ updatedAt: new Date('2025-01-01T00:00:00.000Z'),
72
+ };
73
+ const mockWorkspaceV2 = {
74
+ id: 'ws-1',
75
+ projectId: 'proj-1',
76
+ name: 'Test Workspace',
77
+ description: 'Test description',
78
+ status: WorkspaceStatus.READY,
79
+ worktreePath: '/path/to/worktree',
80
+ branchName: 'feature/test',
81
+ isAutoGeneratedBranch: true,
82
+ creationSource: WorkspaceCreationSource.GITHUB_ISSUE,
83
+ creationMetadata: { issueNumber: 123 },
84
+ initErrorMessage: null,
85
+ initOutput: 'Init output',
86
+ initStartedAt: new Date('2025-01-01T00:00:00.000Z'),
87
+ initCompletedAt: new Date('2025-01-01T00:05:00.000Z'),
88
+ initRetryCount: 0,
89
+ runScriptCommand: 'npm run dev',
90
+ runScriptCleanupCommand: 'npm run cleanup',
91
+ runScriptPid: 12_345,
92
+ runScriptPort: 3000,
93
+ runScriptStartedAt: new Date('2025-01-01T00:10:00.000Z'),
94
+ runScriptStatus: RunScriptStatus.RUNNING,
95
+ prUrl: 'https://github.com/test/repo/pull/1',
96
+ githubIssueNumber: 123,
97
+ githubIssueUrl: 'https://github.com/test/repo/issues/123',
98
+ prNumber: 1,
99
+ prState: PRState.OPEN,
100
+ prReviewState: 'APPROVED',
101
+ prCiStatus: CIStatus.SUCCESS,
102
+ prUpdatedAt: new Date('2025-01-01T00:15:00.000Z'),
103
+ prCiFailedAt: null,
104
+ prCiLastNotifiedAt: null,
105
+ prReviewLastCheckedAt: new Date('2025-01-01T00:20:00.000Z'),
106
+ prReviewLastCommentId: 'comment-123',
107
+ ratchetEnabled: true,
108
+ ratchetState: RatchetState.READY,
109
+ ratchetLastCheckedAt: new Date('2025-01-01T00:25:00.000Z'),
110
+ ratchetLastPushAt: new Date('2025-01-01T00:30:00.000Z'),
111
+ ratchetActiveSessionId: 'session-123',
112
+ ratchetLastCiRunId: 'run-123',
113
+ ratchetLastNotifiedState: RatchetState.CI_RUNNING,
114
+ hasHadSessions: true,
115
+ cachedKanbanColumn: KanbanColumn.WORKING,
116
+ stateComputedAt: new Date('2025-01-01T00:35:00.000Z'),
117
+ createdAt: new Date('2025-01-01T00:00:00.000Z'),
118
+ updatedAt: new Date('2025-01-01T00:35:00.000Z'),
119
+ };
120
+ const mockUserSettingsV2 = {
121
+ id: 'settings-1',
122
+ userId: 'default',
123
+ preferredIde: 'cursor',
124
+ customIdeCommand: null,
125
+ playSoundOnComplete: true,
126
+ notificationSoundPath: '/path/to/sound.mp3',
127
+ workspaceOrder: { 'proj-1': ['ws-1', 'ws-2'] },
128
+ cachedSlashCommands: { commands: [] },
129
+ ratchetEnabled: true,
130
+ ratchetAutoFixCi: true,
131
+ ratchetAutoFixReviews: false,
132
+ ratchetAutoMerge: false,
133
+ ratchetAllowedReviewers: ['user1', 'user2'],
134
+ createdAt: new Date('2025-01-01T00:00:00.000Z'),
135
+ updatedAt: new Date('2025-01-01T00:00:00.000Z'),
136
+ };
137
+ beforeEach(() => {
138
+ vi.clearAllMocks();
139
+ });
140
+ describe('exportData', () => {
141
+ it('should export data in v2 format with all fields', async () => {
142
+ vi.mocked(prisma.project.findMany).mockResolvedValue([mockProject]);
143
+ vi.mocked(prisma.workspace.findMany).mockResolvedValue([mockWorkspaceV2]);
144
+ vi.mocked(prisma.claudeSession.findMany).mockResolvedValue([]);
145
+ vi.mocked(prisma.terminalSession.findMany).mockResolvedValue([]);
146
+ vi.mocked(prisma.userSettings.findFirst).mockResolvedValue(mockUserSettingsV2);
147
+ const result = await dataBackupService.exportData('1.0.0');
148
+ expect(result.meta.schemaVersion).toBe(2);
149
+ expect(result.meta.version).toBe('1.0.0');
150
+ expect(result.data.projects).toHaveLength(1);
151
+ expect(result.data.workspaces).toHaveLength(1);
152
+ const exportedWorkspace = result.data.workspaces[0];
153
+ expect(exportedWorkspace).toBeDefined();
154
+ expect(exportedWorkspace?.ratchetEnabled).toBe(true);
155
+ expect(exportedWorkspace?.ratchetState).toBe(RatchetState.READY);
156
+ expect(exportedWorkspace?.ratchetLastCheckedAt).toBe('2025-01-01T00:25:00.000Z');
157
+ expect(exportedWorkspace?.ratchetActiveSessionId).toBe('session-123');
158
+ expect(exportedWorkspace?.ratchetLastCiRunId).toBe('run-123');
159
+ expect(exportedWorkspace?.prReviewLastCheckedAt).toBe('2025-01-01T00:20:00.000Z');
160
+ expect(exportedWorkspace?.prReviewLastCommentId).toBe('comment-123');
161
+ const exportedSettings = result.data.userSettings;
162
+ expect(exportedSettings).not.toBeNull();
163
+ expect(exportedSettings?.ratchetEnabled).toBe(true);
164
+ expect(exportedSettings?.ratchetAutoFixCi).toBe(true);
165
+ expect(exportedSettings?.ratchetAutoFixReviews).toBe(false);
166
+ expect(exportedSettings?.ratchetAutoMerge).toBe(false);
167
+ expect(exportedSettings?.ratchetAllowedReviewers).toEqual(['user1', 'user2']);
168
+ expect('workspaceOrder' in (exportedSettings ?? {})).toBe(false);
169
+ expect('cachedSlashCommands' in (exportedSettings ?? {})).toBe(false);
170
+ });
171
+ it('should handle null user settings', async () => {
172
+ vi.mocked(prisma.project.findMany).mockResolvedValue([]);
173
+ vi.mocked(prisma.workspace.findMany).mockResolvedValue([]);
174
+ vi.mocked(prisma.claudeSession.findMany).mockResolvedValue([]);
175
+ vi.mocked(prisma.terminalSession.findMany).mockResolvedValue([]);
176
+ vi.mocked(prisma.userSettings.findFirst).mockResolvedValue(null);
177
+ const result = await dataBackupService.exportData('1.0.0');
178
+ expect(result.data.userSettings).toBeNull();
179
+ });
180
+ it('should export valid v2 schema', async () => {
181
+ vi.mocked(prisma.project.findMany).mockResolvedValue([mockProject]);
182
+ vi.mocked(prisma.workspace.findMany).mockResolvedValue([mockWorkspaceV2]);
183
+ vi.mocked(prisma.claudeSession.findMany).mockResolvedValue([]);
184
+ vi.mocked(prisma.terminalSession.findMany).mockResolvedValue([]);
185
+ vi.mocked(prisma.userSettings.findFirst).mockResolvedValue(mockUserSettingsV2);
186
+ const result = await dataBackupService.exportData('1.0.0');
187
+ const parseResult = exportDataSchema.safeParse(result);
188
+ expect(parseResult.success).toBe(true);
189
+ });
190
+ });
191
+ describe('importData - v2 round-trip', () => {
192
+ it('should import v2 data without loss', async () => {
193
+ const exportedData = {
194
+ meta: {
195
+ exportedAt: '2025-01-01T00:00:00.000Z',
196
+ version: '1.0.0',
197
+ schemaVersion: 2,
198
+ },
199
+ data: {
200
+ projects: [
201
+ {
202
+ id: 'proj-1',
203
+ name: 'Test Project',
204
+ slug: 'test-project',
205
+ repoPath: '/path/to/repo',
206
+ worktreeBasePath: '/path/to/worktrees',
207
+ defaultBranch: 'main',
208
+ githubOwner: 'test-owner',
209
+ githubRepo: 'test-repo',
210
+ isArchived: false,
211
+ startupScriptCommand: 'npm install',
212
+ startupScriptPath: null,
213
+ startupScriptTimeout: 300,
214
+ createdAt: '2025-01-01T00:00:00.000Z',
215
+ updatedAt: '2025-01-01T00:00:00.000Z',
216
+ },
217
+ ],
218
+ workspaces: [
219
+ {
220
+ id: 'ws-1',
221
+ projectId: 'proj-1',
222
+ name: 'Test Workspace',
223
+ description: 'Test description',
224
+ status: WorkspaceStatus.READY,
225
+ worktreePath: '/path/to/worktree',
226
+ branchName: 'feature/test',
227
+ isAutoGeneratedBranch: true,
228
+ creationSource: WorkspaceCreationSource.GITHUB_ISSUE,
229
+ creationMetadata: { issueNumber: 123 },
230
+ initErrorMessage: null,
231
+ initOutput: 'Init output',
232
+ initStartedAt: '2025-01-01T00:00:00.000Z',
233
+ initCompletedAt: '2025-01-01T00:05:00.000Z',
234
+ initRetryCount: 0,
235
+ runScriptCommand: 'npm run dev',
236
+ runScriptCleanupCommand: 'npm run cleanup',
237
+ runScriptPid: 12_345,
238
+ runScriptPort: 3000,
239
+ runScriptStartedAt: '2025-01-01T00:10:00.000Z',
240
+ runScriptStatus: RunScriptStatus.RUNNING,
241
+ prUrl: 'https://github.com/test/repo/pull/1',
242
+ githubIssueNumber: 123,
243
+ githubIssueUrl: 'https://github.com/test/repo/issues/123',
244
+ prNumber: 1,
245
+ prState: PRState.OPEN,
246
+ prReviewState: 'APPROVED',
247
+ prCiStatus: CIStatus.SUCCESS,
248
+ prUpdatedAt: '2025-01-01T00:15:00.000Z',
249
+ prCiFailedAt: null,
250
+ prCiLastNotifiedAt: null,
251
+ prReviewLastCheckedAt: '2025-01-01T00:20:00.000Z',
252
+ prReviewLastCommentId: 'comment-123',
253
+ ratchetEnabled: true,
254
+ ratchetState: RatchetState.READY,
255
+ ratchetLastCheckedAt: '2025-01-01T00:25:00.000Z',
256
+ ratchetLastPushAt: '2025-01-01T00:30:00.000Z',
257
+ ratchetActiveSessionId: 'session-123',
258
+ ratchetLastCiRunId: 'run-123',
259
+ ratchetLastNotifiedState: RatchetState.CI_RUNNING,
260
+ hasHadSessions: true,
261
+ cachedKanbanColumn: KanbanColumn.WORKING,
262
+ stateComputedAt: '2025-01-01T00:35:00.000Z',
263
+ createdAt: '2025-01-01T00:00:00.000Z',
264
+ updatedAt: '2025-01-01T00:35:00.000Z',
265
+ },
266
+ ],
267
+ claudeSessions: [],
268
+ terminalSessions: [],
269
+ userSettings: {
270
+ preferredIde: 'cursor',
271
+ customIdeCommand: null,
272
+ playSoundOnComplete: true,
273
+ notificationSoundPath: '/path/to/sound.mp3',
274
+ ratchetEnabled: true,
275
+ ratchetAutoFixCi: true,
276
+ ratchetAutoFixReviews: false,
277
+ ratchetAutoMerge: false,
278
+ ratchetAllowedReviewers: ['user1', 'user2'],
279
+ },
280
+ },
281
+ };
282
+ vi.mocked(mockTx.project.findUnique)
283
+ .mockResolvedValueOnce(null)
284
+ .mockResolvedValueOnce(null)
285
+ .mockResolvedValue(mockProject);
286
+ vi.mocked(mockTx.project.create).mockResolvedValue(mockProject);
287
+ vi.mocked(mockTx.workspace.findUnique).mockResolvedValue(null);
288
+ vi.mocked(mockTx.workspace.create).mockResolvedValue(mockWorkspaceV2);
289
+ vi.mocked(mockTx.userSettings.findFirst).mockResolvedValue(null);
290
+ vi.mocked(mockTx.userSettings.create).mockResolvedValue(mockUserSettingsV2);
291
+ const result = await dataBackupService.importData(exportedData);
292
+ expect(result.projects.imported).toBe(1);
293
+ expect(result.workspaces.imported).toBe(1);
294
+ expect(result.userSettings.imported).toBe(true);
295
+ expect(mockTx.workspace.create).toHaveBeenCalledWith({
296
+ data: expect.objectContaining({
297
+ ratchetEnabled: true,
298
+ ratchetState: RatchetState.READY,
299
+ ratchetActiveSessionId: 'session-123',
300
+ ratchetLastCiRunId: 'run-123',
301
+ prReviewLastCommentId: 'comment-123',
302
+ }),
303
+ });
304
+ expect(mockTx.userSettings.create).toHaveBeenCalledWith({
305
+ data: expect.objectContaining({
306
+ ratchetEnabled: true,
307
+ ratchetAutoFixCi: true,
308
+ ratchetAutoFixReviews: false,
309
+ ratchetAutoMerge: false,
310
+ }),
311
+ });
312
+ });
313
+ });
314
+ describe('importData - v1 compatibility', () => {
315
+ it('should import v1 data with migration to v2 defaults', async () => {
316
+ const v1Data = {
317
+ meta: {
318
+ exportedAt: '2024-12-01T00:00:00.000Z',
319
+ version: '0.9.0',
320
+ schemaVersion: 1,
321
+ },
322
+ data: {
323
+ projects: [
324
+ {
325
+ id: 'proj-1',
326
+ name: 'Test Project',
327
+ slug: 'test-project',
328
+ repoPath: '/path/to/repo',
329
+ worktreeBasePath: '/path/to/worktrees',
330
+ defaultBranch: 'main',
331
+ githubOwner: null,
332
+ githubRepo: null,
333
+ isArchived: false,
334
+ startupScriptCommand: null,
335
+ startupScriptPath: null,
336
+ startupScriptTimeout: 300,
337
+ createdAt: '2024-12-01T00:00:00.000Z',
338
+ updatedAt: '2024-12-01T00:00:00.000Z',
339
+ },
340
+ ],
341
+ workspaces: [
342
+ {
343
+ id: 'ws-1',
344
+ projectId: 'proj-1',
345
+ name: 'Old Workspace',
346
+ description: null,
347
+ status: WorkspaceStatus.READY,
348
+ worktreePath: '/path/to/worktree',
349
+ branchName: 'main',
350
+ initErrorMessage: null,
351
+ initOutput: null,
352
+ initStartedAt: null,
353
+ initCompletedAt: null,
354
+ initRetryCount: 0,
355
+ runScriptCommand: null,
356
+ runScriptCleanupCommand: null,
357
+ runScriptPid: null,
358
+ runScriptPort: null,
359
+ runScriptStartedAt: null,
360
+ runScriptStatus: RunScriptStatus.IDLE,
361
+ prUrl: null,
362
+ githubIssueNumber: null,
363
+ githubIssueUrl: null,
364
+ prNumber: null,
365
+ prState: PRState.NONE,
366
+ prReviewState: null,
367
+ prCiStatus: CIStatus.UNKNOWN,
368
+ prUpdatedAt: null,
369
+ prCiFailedAt: null,
370
+ prCiLastNotifiedAt: null,
371
+ hasHadSessions: false,
372
+ cachedKanbanColumn: KanbanColumn.WAITING,
373
+ stateComputedAt: null,
374
+ createdAt: '2024-12-01T00:00:00.000Z',
375
+ updatedAt: '2024-12-01T00:00:00.000Z',
376
+ },
377
+ ],
378
+ claudeSessions: [],
379
+ terminalSessions: [],
380
+ userSettings: {
381
+ preferredIde: 'cursor',
382
+ customIdeCommand: null,
383
+ playSoundOnComplete: true,
384
+ notificationSoundPath: null,
385
+ },
386
+ },
387
+ };
388
+ vi.mocked(mockTx.project.findUnique)
389
+ .mockResolvedValueOnce(null)
390
+ .mockResolvedValueOnce(null)
391
+ .mockResolvedValue(mockProject);
392
+ vi.mocked(mockTx.project.create).mockResolvedValue(mockProject);
393
+ vi.mocked(mockTx.workspace.findUnique).mockResolvedValue(null);
394
+ vi.mocked(mockTx.workspace.create).mockResolvedValue(mockWorkspaceV2);
395
+ vi.mocked(mockTx.userSettings.findFirst).mockResolvedValue(null);
396
+ vi.mocked(mockTx.userSettings.create).mockResolvedValue(mockUserSettingsV2);
397
+ const result = await dataBackupService.importData(v1Data);
398
+ expect(result.projects.imported).toBe(1);
399
+ expect(result.workspaces.imported).toBe(1);
400
+ expect(result.userSettings.imported).toBe(true);
401
+ expect(mockTx.workspace.create).toHaveBeenCalledWith({
402
+ data: expect.objectContaining({
403
+ id: 'ws-1',
404
+ name: 'Old Workspace',
405
+ isAutoGeneratedBranch: false,
406
+ creationSource: WorkspaceCreationSource.MANUAL,
407
+ creationMetadata: undefined,
408
+ ratchetEnabled: true,
409
+ ratchetState: RatchetState.IDLE,
410
+ ratchetLastCheckedAt: null,
411
+ ratchetLastPushAt: null,
412
+ ratchetActiveSessionId: null,
413
+ ratchetLastCiRunId: null,
414
+ ratchetLastNotifiedState: null,
415
+ prReviewLastCheckedAt: null,
416
+ prReviewLastCommentId: null,
417
+ }),
418
+ });
419
+ expect(mockTx.userSettings.create).toHaveBeenCalledWith({
420
+ data: expect.objectContaining({
421
+ preferredIde: 'cursor',
422
+ ratchetEnabled: false,
423
+ ratchetAutoFixCi: true,
424
+ ratchetAutoFixReviews: true,
425
+ ratchetAutoMerge: false,
426
+ }),
427
+ });
428
+ });
429
+ it('should handle v1 PAUSED runScriptStatus migration', async () => {
430
+ const v1Data = {
431
+ meta: {
432
+ exportedAt: '2024-12-01T00:00:00.000Z',
433
+ version: '0.9.0',
434
+ schemaVersion: 1,
435
+ },
436
+ data: {
437
+ projects: [],
438
+ workspaces: [
439
+ {
440
+ id: 'ws-1',
441
+ projectId: 'proj-1',
442
+ name: 'Old Workspace',
443
+ description: null,
444
+ status: WorkspaceStatus.READY,
445
+ worktreePath: '/path',
446
+ branchName: 'main',
447
+ initErrorMessage: null,
448
+ initOutput: null,
449
+ initStartedAt: null,
450
+ initCompletedAt: null,
451
+ initRetryCount: 0,
452
+ runScriptCommand: null,
453
+ runScriptCleanupCommand: null,
454
+ runScriptPid: null,
455
+ runScriptPort: null,
456
+ runScriptStartedAt: null,
457
+ runScriptStatus: 'PAUSED',
458
+ prUrl: null,
459
+ githubIssueNumber: null,
460
+ githubIssueUrl: null,
461
+ prNumber: null,
462
+ prState: PRState.NONE,
463
+ prReviewState: null,
464
+ prCiStatus: CIStatus.UNKNOWN,
465
+ prUpdatedAt: null,
466
+ prCiFailedAt: null,
467
+ prCiLastNotifiedAt: null,
468
+ hasHadSessions: false,
469
+ cachedKanbanColumn: KanbanColumn.WAITING,
470
+ stateComputedAt: null,
471
+ createdAt: '2024-12-01T00:00:00.000Z',
472
+ updatedAt: '2024-12-01T00:00:00.000Z',
473
+ },
474
+ ],
475
+ claudeSessions: [],
476
+ terminalSessions: [],
477
+ userSettings: null,
478
+ },
479
+ };
480
+ vi.mocked(mockTx.project.findUnique).mockResolvedValue(mockProject);
481
+ vi.mocked(mockTx.workspace.findUnique).mockResolvedValue(null);
482
+ vi.mocked(mockTx.workspace.create).mockResolvedValue(mockWorkspaceV2);
483
+ await dataBackupService.importData(v1Data);
484
+ expect(mockTx.workspace.create).toHaveBeenCalledWith({
485
+ data: expect.objectContaining({
486
+ runScriptStatus: RunScriptStatus.IDLE,
487
+ }),
488
+ });
489
+ });
490
+ });
491
+ describe('importData - skip existing records', () => {
492
+ it('should skip projects that already exist', async () => {
493
+ const exportedData = {
494
+ meta: {
495
+ exportedAt: '2025-01-01T00:00:00.000Z',
496
+ version: '1.0.0',
497
+ schemaVersion: 2,
498
+ },
499
+ data: {
500
+ projects: [
501
+ {
502
+ id: 'proj-1',
503
+ name: 'Test Project',
504
+ slug: 'test-project',
505
+ repoPath: '/path',
506
+ worktreeBasePath: '/path',
507
+ defaultBranch: 'main',
508
+ githubOwner: null,
509
+ githubRepo: null,
510
+ isArchived: false,
511
+ startupScriptCommand: null,
512
+ startupScriptPath: null,
513
+ startupScriptTimeout: 300,
514
+ createdAt: '2025-01-01T00:00:00.000Z',
515
+ updatedAt: '2025-01-01T00:00:00.000Z',
516
+ },
517
+ ],
518
+ workspaces: [],
519
+ claudeSessions: [],
520
+ terminalSessions: [],
521
+ userSettings: null,
522
+ },
523
+ };
524
+ vi.mocked(mockTx.project.findUnique).mockResolvedValue(mockProject);
525
+ const result = await dataBackupService.importData(exportedData);
526
+ expect(result.projects.skipped).toBe(1);
527
+ expect(result.projects.imported).toBe(0);
528
+ expect(mockTx.project.create).not.toHaveBeenCalled();
529
+ });
530
+ it('should skip workspaces with missing projects', async () => {
531
+ const exportedData = {
532
+ meta: {
533
+ exportedAt: '2025-01-01T00:00:00.000Z',
534
+ version: '1.0.0',
535
+ schemaVersion: 2,
536
+ },
537
+ data: {
538
+ projects: [],
539
+ workspaces: [
540
+ {
541
+ id: 'ws-1',
542
+ projectId: 'missing-project',
543
+ name: 'Orphaned Workspace',
544
+ description: null,
545
+ status: WorkspaceStatus.NEW,
546
+ worktreePath: null,
547
+ branchName: null,
548
+ isAutoGeneratedBranch: false,
549
+ creationSource: WorkspaceCreationSource.MANUAL,
550
+ creationMetadata: null,
551
+ initErrorMessage: null,
552
+ initOutput: null,
553
+ initStartedAt: null,
554
+ initCompletedAt: null,
555
+ initRetryCount: 0,
556
+ runScriptCommand: null,
557
+ runScriptCleanupCommand: null,
558
+ runScriptPid: null,
559
+ runScriptPort: null,
560
+ runScriptStartedAt: null,
561
+ runScriptStatus: RunScriptStatus.IDLE,
562
+ prUrl: null,
563
+ githubIssueNumber: null,
564
+ githubIssueUrl: null,
565
+ prNumber: null,
566
+ prState: PRState.NONE,
567
+ prReviewState: null,
568
+ prCiStatus: CIStatus.UNKNOWN,
569
+ prUpdatedAt: null,
570
+ prCiFailedAt: null,
571
+ prCiLastNotifiedAt: null,
572
+ prReviewLastCheckedAt: null,
573
+ prReviewLastCommentId: null,
574
+ ratchetEnabled: true,
575
+ ratchetState: RatchetState.IDLE,
576
+ ratchetLastCheckedAt: null,
577
+ ratchetLastPushAt: null,
578
+ ratchetActiveSessionId: null,
579
+ ratchetLastCiRunId: null,
580
+ ratchetLastNotifiedState: null,
581
+ hasHadSessions: false,
582
+ cachedKanbanColumn: KanbanColumn.WAITING,
583
+ stateComputedAt: null,
584
+ createdAt: '2025-01-01T00:00:00.000Z',
585
+ updatedAt: '2025-01-01T00:00:00.000Z',
586
+ },
587
+ ],
588
+ claudeSessions: [],
589
+ terminalSessions: [],
590
+ userSettings: null,
591
+ },
592
+ };
593
+ vi.mocked(mockTx.workspace.findUnique).mockResolvedValue(null);
594
+ vi.mocked(mockTx.project.findUnique).mockResolvedValue(null);
595
+ const result = await dataBackupService.importData(exportedData);
596
+ expect(result.workspaces.skipped).toBe(1);
597
+ expect(result.workspaces.imported).toBe(0);
598
+ expect(mockTx.workspace.create).not.toHaveBeenCalled();
599
+ });
600
+ });
601
+ });
602
+ //# sourceMappingURL=data-backup.service.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-backup.service.test.js","sourceRoot":"","sources":["../../../../src/backend/services/data-backup.service.test.ts"],"names":[],"mappings":"AACA,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,OAAO,EACP,YAAY,EACZ,eAAe,EACf,uBAAuB,EACvB,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAI9D,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC/B,OAAO,EAAE;QACP,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE;QACnB,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE;KAChB;IACD,SAAS,EAAE;QACT,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE;QACnB,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE;KAChB;IACD,aAAa,EAAE;QACb,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE;QACnB,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE;KAChB;IACD,eAAe,EAAE;QACf,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE;QACnB,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE;KAChB;IACD,YAAY,EAAE;QACZ,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE;QAClB,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE;KAChB;CACF,CAAC,CAAC,CAAC;AAGJ,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;IACtB,MAAM,EAAE;QACN,OAAO,EAAE;YACP,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE;YACjB,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE;YACnB,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE;SAChB;QACD,SAAS,EAAE;YACT,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE;YACjB,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE;YACnB,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE;SAChB;QACD,aAAa,EAAE;YACb,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE;YACjB,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE;YACnB,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE;SAChB;QACD,eAAe,EAAE;YACf,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE;YACjB,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE;YACnB,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE;SAChB;QACD,YAAY,EAAE;YACZ,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE;YAClB,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE;SAChB;QACD,YAAY,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;KACpD;CACF,CAAC,CAAC,CAAC;AAEJ,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE5E,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,MAAM,WAAW,GAAY;QAC3B,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,cAAc;QACpB,IAAI,EAAE,cAAc;QACpB,QAAQ,EAAE,eAAe;QACzB,gBAAgB,EAAE,oBAAoB;QACtC,aAAa,EAAE,MAAM;QACrB,WAAW,EAAE,YAAY;QACzB,UAAU,EAAE,WAAW;QACvB,UAAU,EAAE,KAAK;QACjB,oBAAoB,EAAE,aAAa;QACnC,iBAAiB,EAAE,IAAI;QACvB,oBAAoB,EAAE,GAAG;QACzB,SAAS,EAAE,IAAI,IAAI,CAAC,0BAA0B,CAAC;QAC/C,SAAS,EAAE,IAAI,IAAI,CAAC,0BAA0B,CAAC;KAChD,CAAC;IAEF,MAAM,eAAe,GAAc;QACjC,EAAE,EAAE,MAAM;QACV,SAAS,EAAE,QAAQ;QACnB,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,kBAAkB;QAC/B,MAAM,EAAE,eAAe,CAAC,KAAK;QAC7B,YAAY,EAAE,mBAAmB;QACjC,UAAU,EAAE,cAAc;QAC1B,qBAAqB,EAAE,IAAI;QAC3B,cAAc,EAAE,uBAAuB,CAAC,YAAY;QACpD,gBAAgB,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE;QACtC,gBAAgB,EAAE,IAAI;QACtB,UAAU,EAAE,aAAa;QACzB,aAAa,EAAE,IAAI,IAAI,CAAC,0BAA0B,CAAC;QACnD,eAAe,EAAE,IAAI,IAAI,CAAC,0BAA0B,CAAC;QACrD,cAAc,EAAE,CAAC;QACjB,gBAAgB,EAAE,aAAa;QAC/B,uBAAuB,EAAE,iBAAiB;QAC1C,YAAY,EAAE,MAAM;QACpB,aAAa,EAAE,IAAI;QACnB,kBAAkB,EAAE,IAAI,IAAI,CAAC,0BAA0B,CAAC;QACxD,eAAe,EAAE,eAAe,CAAC,OAAO;QACxC,KAAK,EAAE,qCAAqC;QAC5C,iBAAiB,EAAE,GAAG;QACtB,cAAc,EAAE,yCAAyC;QACzD,QAAQ,EAAE,CAAC;QACX,OAAO,EAAE,OAAO,CAAC,IAAI;QACrB,aAAa,EAAE,UAAU;QACzB,UAAU,EAAE,QAAQ,CAAC,OAAO;QAC5B,WAAW,EAAE,IAAI,IAAI,CAAC,0BAA0B,CAAC;QACjD,YAAY,EAAE,IAAI;QAClB,kBAAkB,EAAE,IAAI;QAExB,qBAAqB,EAAE,IAAI,IAAI,CAAC,0BAA0B,CAAC;QAC3D,qBAAqB,EAAE,aAAa;QAEpC,cAAc,EAAE,IAAI;QACpB,YAAY,EAAE,YAAY,CAAC,KAAK;QAChC,oBAAoB,EAAE,IAAI,IAAI,CAAC,0BAA0B,CAAC;QAC1D,iBAAiB,EAAE,IAAI,IAAI,CAAC,0BAA0B,CAAC;QACvD,sBAAsB,EAAE,aAAa;QACrC,kBAAkB,EAAE,SAAS;QAC7B,wBAAwB,EAAE,YAAY,CAAC,UAAU;QACjD,cAAc,EAAE,IAAI;QACpB,kBAAkB,EAAE,YAAY,CAAC,OAAO;QACxC,eAAe,EAAE,IAAI,IAAI,CAAC,0BAA0B,CAAC;QACrD,SAAS,EAAE,IAAI,IAAI,CAAC,0BAA0B,CAAC;QAC/C,SAAS,EAAE,IAAI,IAAI,CAAC,0BAA0B,CAAC;KAChD,CAAC;IAEF,MAAM,kBAAkB,GAAiB;QACvC,EAAE,EAAE,YAAY;QAChB,MAAM,EAAE,SAAS;QACjB,YAAY,EAAE,QAAQ;QACtB,gBAAgB,EAAE,IAAI;QACtB,mBAAmB,EAAE,IAAI;QACzB,qBAAqB,EAAE,oBAAoB;QAC3C,cAAc,EAAE,EAAE,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE;QAC9C,mBAAmB,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;QAErC,cAAc,EAAE,IAAI;QACpB,gBAAgB,EAAE,IAAI;QACtB,qBAAqB,EAAE,KAAK;QAC5B,gBAAgB,EAAE,KAAK;QACvB,uBAAuB,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;QAC3C,SAAS,EAAE,IAAI,IAAI,CAAC,0BAA0B,CAAC;QAC/C,SAAS,EAAE,IAAI,IAAI,CAAC,0BAA0B,CAAC;KAChD,CAAC;IAEF,UAAU,CAAC,GAAG,EAAE;QACd,EAAE,CAAC,aAAa,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;YAC/D,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;YACpE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;YAC1E,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;YAC/D,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;YACjE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;YAE/E,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAE3D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC1C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC1C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC7C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAG/C,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YACpD,MAAM,CAAC,iBAAiB,CAAC,CAAC,WAAW,EAAE,CAAC;YACxC,MAAM,CAAC,iBAAiB,EAAE,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrD,MAAM,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YACjE,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;YACjF,MAAM,CAAC,iBAAiB,EAAE,sBAAsB,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACtE,MAAM,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC9D,MAAM,CAAC,iBAAiB,EAAE,qBAAqB,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;YAClF,MAAM,CAAC,iBAAiB,EAAE,qBAAqB,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAGrE,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;YAClD,MAAM,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YACxC,MAAM,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpD,MAAM,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtD,MAAM,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5D,MAAM,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACvD,MAAM,CAAC,gBAAgB,EAAE,uBAAuB,CAAC,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;YAG9E,MAAM,CAAC,gBAAgB,IAAI,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjE,MAAM,CAAC,qBAAqB,IAAI,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;YAChD,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;YACzD,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;YAC3D,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;YAC/D,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;YACjE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAEjE,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAE3D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;YAC7C,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;YACpE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;YAC1E,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;YAC/D,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;YACjE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;YAE/E,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YAG3D,MAAM,WAAW,GAAG,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YACvD,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;QAC1C,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;YAClD,MAAM,YAAY,GAAiB;gBACjC,IAAI,EAAE;oBACJ,UAAU,EAAE,0BAA0B;oBACtC,OAAO,EAAE,OAAO;oBAChB,aAAa,EAAE,CAAC;iBACjB;gBACD,IAAI,EAAE;oBACJ,QAAQ,EAAE;wBACR;4BACE,EAAE,EAAE,QAAQ;4BACZ,IAAI,EAAE,cAAc;4BACpB,IAAI,EAAE,cAAc;4BACpB,QAAQ,EAAE,eAAe;4BACzB,gBAAgB,EAAE,oBAAoB;4BACtC,aAAa,EAAE,MAAM;4BACrB,WAAW,EAAE,YAAY;4BACzB,UAAU,EAAE,WAAW;4BACvB,UAAU,EAAE,KAAK;4BACjB,oBAAoB,EAAE,aAAa;4BACnC,iBAAiB,EAAE,IAAI;4BACvB,oBAAoB,EAAE,GAAG;4BACzB,SAAS,EAAE,0BAA0B;4BACrC,SAAS,EAAE,0BAA0B;yBACtC;qBACF;oBACD,UAAU,EAAE;wBACV;4BACE,EAAE,EAAE,MAAM;4BACV,SAAS,EAAE,QAAQ;4BACnB,IAAI,EAAE,gBAAgB;4BACtB,WAAW,EAAE,kBAAkB;4BAC/B,MAAM,EAAE,eAAe,CAAC,KAAK;4BAC7B,YAAY,EAAE,mBAAmB;4BACjC,UAAU,EAAE,cAAc;4BAC1B,qBAAqB,EAAE,IAAI;4BAC3B,cAAc,EAAE,uBAAuB,CAAC,YAAY;4BACpD,gBAAgB,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE;4BACtC,gBAAgB,EAAE,IAAI;4BACtB,UAAU,EAAE,aAAa;4BACzB,aAAa,EAAE,0BAA0B;4BACzC,eAAe,EAAE,0BAA0B;4BAC3C,cAAc,EAAE,CAAC;4BACjB,gBAAgB,EAAE,aAAa;4BAC/B,uBAAuB,EAAE,iBAAiB;4BAC1C,YAAY,EAAE,MAAM;4BACpB,aAAa,EAAE,IAAI;4BACnB,kBAAkB,EAAE,0BAA0B;4BAC9C,eAAe,EAAE,eAAe,CAAC,OAAO;4BACxC,KAAK,EAAE,qCAAqC;4BAC5C,iBAAiB,EAAE,GAAG;4BACtB,cAAc,EAAE,yCAAyC;4BACzD,QAAQ,EAAE,CAAC;4BACX,OAAO,EAAE,OAAO,CAAC,IAAI;4BACrB,aAAa,EAAE,UAAU;4BACzB,UAAU,EAAE,QAAQ,CAAC,OAAO;4BAC5B,WAAW,EAAE,0BAA0B;4BACvC,YAAY,EAAE,IAAI;4BAClB,kBAAkB,EAAE,IAAI;4BACxB,qBAAqB,EAAE,0BAA0B;4BACjD,qBAAqB,EAAE,aAAa;4BACpC,cAAc,EAAE,IAAI;4BACpB,YAAY,EAAE,YAAY,CAAC,KAAK;4BAChC,oBAAoB,EAAE,0BAA0B;4BAChD,iBAAiB,EAAE,0BAA0B;4BAC7C,sBAAsB,EAAE,aAAa;4BACrC,kBAAkB,EAAE,SAAS;4BAC7B,wBAAwB,EAAE,YAAY,CAAC,UAAU;4BACjD,cAAc,EAAE,IAAI;4BACpB,kBAAkB,EAAE,YAAY,CAAC,OAAO;4BACxC,eAAe,EAAE,0BAA0B;4BAC3C,SAAS,EAAE,0BAA0B;4BACrC,SAAS,EAAE,0BAA0B;yBACtC;qBACF;oBACD,cAAc,EAAE,EAAE;oBAClB,gBAAgB,EAAE,EAAE;oBACpB,YAAY,EAAE;wBACZ,YAAY,EAAE,QAAQ;wBACtB,gBAAgB,EAAE,IAAI;wBACtB,mBAAmB,EAAE,IAAI;wBACzB,qBAAqB,EAAE,oBAAoB;wBAC3C,cAAc,EAAE,IAAI;wBACpB,gBAAgB,EAAE,IAAI;wBACtB,qBAAqB,EAAE,KAAK;wBAC5B,gBAAgB,EAAE,KAAK;wBACvB,uBAAuB,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;qBAC5C;iBACF;aACF,CAAC;YAGF,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;iBACjC,qBAAqB,CAAC,IAAI,CAAC;iBAC3B,qBAAqB,CAAC,IAAI,CAAC;iBAC3B,iBAAiB,CAAC,WAAW,CAAC,CAAC;YAClC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;YAChE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC/D,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;YACtE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YACjE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;YAE5E,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;YAEhE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACzC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC3C,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAGhD,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC;gBACnD,IAAI,EAAE,MAAM,CAAC,gBAAgB,CAAC;oBAC5B,cAAc,EAAE,IAAI;oBACpB,YAAY,EAAE,YAAY,CAAC,KAAK;oBAChC,sBAAsB,EAAE,aAAa;oBACrC,kBAAkB,EAAE,SAAS;oBAC7B,qBAAqB,EAAE,aAAa;iBACrC,CAAC;aACH,CAAC,CAAC;YAGH,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC;gBACtD,IAAI,EAAE,MAAM,CAAC,gBAAgB,CAAC;oBAC5B,cAAc,EAAE,IAAI;oBACpB,gBAAgB,EAAE,IAAI;oBACtB,qBAAqB,EAAE,KAAK;oBAC5B,gBAAgB,EAAE,KAAK;iBACxB,CAAC;aACH,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;QAC7C,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;YACnE,MAAM,MAAM,GAAiB;gBAC3B,IAAI,EAAE;oBACJ,UAAU,EAAE,0BAA0B;oBACtC,OAAO,EAAE,OAAO;oBAChB,aAAa,EAAE,CAAC;iBACjB;gBACD,IAAI,EAAE;oBACJ,QAAQ,EAAE;wBACR;4BACE,EAAE,EAAE,QAAQ;4BACZ,IAAI,EAAE,cAAc;4BACpB,IAAI,EAAE,cAAc;4BACpB,QAAQ,EAAE,eAAe;4BACzB,gBAAgB,EAAE,oBAAoB;4BACtC,aAAa,EAAE,MAAM;4BACrB,WAAW,EAAE,IAAI;4BACjB,UAAU,EAAE,IAAI;4BAChB,UAAU,EAAE,KAAK;4BACjB,oBAAoB,EAAE,IAAI;4BAC1B,iBAAiB,EAAE,IAAI;4BACvB,oBAAoB,EAAE,GAAG;4BACzB,SAAS,EAAE,0BAA0B;4BACrC,SAAS,EAAE,0BAA0B;yBACtC;qBACF;oBACD,UAAU,EAAE;wBACV;4BACE,EAAE,EAAE,MAAM;4BACV,SAAS,EAAE,QAAQ;4BACnB,IAAI,EAAE,eAAe;4BACrB,WAAW,EAAE,IAAI;4BACjB,MAAM,EAAE,eAAe,CAAC,KAAK;4BAC7B,YAAY,EAAE,mBAAmB;4BACjC,UAAU,EAAE,MAAM;4BAElB,gBAAgB,EAAE,IAAI;4BACtB,UAAU,EAAE,IAAI;4BAChB,aAAa,EAAE,IAAI;4BACnB,eAAe,EAAE,IAAI;4BACrB,cAAc,EAAE,CAAC;4BACjB,gBAAgB,EAAE,IAAI;4BACtB,uBAAuB,EAAE,IAAI;4BAC7B,YAAY,EAAE,IAAI;4BAClB,aAAa,EAAE,IAAI;4BACnB,kBAAkB,EAAE,IAAI;4BACxB,eAAe,EAAE,eAAe,CAAC,IAAI;4BACrC,KAAK,EAAE,IAAI;4BACX,iBAAiB,EAAE,IAAI;4BACvB,cAAc,EAAE,IAAI;4BACpB,QAAQ,EAAE,IAAI;4BACd,OAAO,EAAE,OAAO,CAAC,IAAI;4BACrB,aAAa,EAAE,IAAI;4BACnB,UAAU,EAAE,QAAQ,CAAC,OAAO;4BAC5B,WAAW,EAAE,IAAI;4BACjB,YAAY,EAAE,IAAI;4BAClB,kBAAkB,EAAE,IAAI;4BACxB,cAAc,EAAE,KAAK;4BACrB,kBAAkB,EAAE,YAAY,CAAC,OAAO;4BACxC,eAAe,EAAE,IAAI;4BACrB,SAAS,EAAE,0BAA0B;4BACrC,SAAS,EAAE,0BAA0B;yBACtC;qBACF;oBACD,cAAc,EAAE,EAAE;oBAClB,gBAAgB,EAAE,EAAE;oBACpB,YAAY,EAAE;wBACZ,YAAY,EAAE,QAAQ;wBACtB,gBAAgB,EAAE,IAAI;wBACtB,mBAAmB,EAAE,IAAI;wBACzB,qBAAqB,EAAE,IAAI;qBAC5B;iBACF;aACF,CAAC;YAGF,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;iBACjC,qBAAqB,CAAC,IAAI,CAAC;iBAC3B,qBAAqB,CAAC,IAAI,CAAC;iBAC3B,iBAAiB,CAAC,WAAW,CAAC,CAAC;YAClC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;YAChE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC/D,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;YACtE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YACjE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;YAE5E,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAE1D,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACzC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC3C,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAGhD,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC;gBACnD,IAAI,EAAE,MAAM,CAAC,gBAAgB,CAAC;oBAE5B,EAAE,EAAE,MAAM;oBACV,IAAI,EAAE,eAAe;oBAErB,qBAAqB,EAAE,KAAK;oBAC5B,cAAc,EAAE,uBAAuB,CAAC,MAAM;oBAC9C,gBAAgB,EAAE,SAAS;oBAC3B,cAAc,EAAE,IAAI;oBACpB,YAAY,EAAE,YAAY,CAAC,IAAI;oBAC/B,oBAAoB,EAAE,IAAI;oBAC1B,iBAAiB,EAAE,IAAI;oBACvB,sBAAsB,EAAE,IAAI;oBAC5B,kBAAkB,EAAE,IAAI;oBACxB,wBAAwB,EAAE,IAAI;oBAC9B,qBAAqB,EAAE,IAAI;oBAC3B,qBAAqB,EAAE,IAAI;iBAC5B,CAAC;aACH,CAAC,CAAC;YAGH,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC;gBACtD,IAAI,EAAE,MAAM,CAAC,gBAAgB,CAAC;oBAC5B,YAAY,EAAE,QAAQ;oBACtB,cAAc,EAAE,KAAK;oBACrB,gBAAgB,EAAE,IAAI;oBACtB,qBAAqB,EAAE,IAAI;oBAC3B,gBAAgB,EAAE,KAAK;iBACxB,CAAC;aACH,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;YACjE,MAAM,MAAM,GAAiB;gBAC3B,IAAI,EAAE;oBACJ,UAAU,EAAE,0BAA0B;oBACtC,OAAO,EAAE,OAAO;oBAChB,aAAa,EAAE,CAAC;iBACjB;gBACD,IAAI,EAAE;oBACJ,QAAQ,EAAE,EAAE;oBACZ,UAAU,EAAE;wBACV;4BACE,EAAE,EAAE,MAAM;4BACV,SAAS,EAAE,QAAQ;4BACnB,IAAI,EAAE,eAAe;4BACrB,WAAW,EAAE,IAAI;4BACjB,MAAM,EAAE,eAAe,CAAC,KAAK;4BAC7B,YAAY,EAAE,OAAO;4BACrB,UAAU,EAAE,MAAM;4BAClB,gBAAgB,EAAE,IAAI;4BACtB,UAAU,EAAE,IAAI;4BAChB,aAAa,EAAE,IAAI;4BACnB,eAAe,EAAE,IAAI;4BACrB,cAAc,EAAE,CAAC;4BACjB,gBAAgB,EAAE,IAAI;4BACtB,uBAAuB,EAAE,IAAI;4BAC7B,YAAY,EAAE,IAAI;4BAClB,aAAa,EAAE,IAAI;4BACnB,kBAAkB,EAAE,IAAI;4BAExB,eAAe,EAAE,QAAsC;4BACvD,KAAK,EAAE,IAAI;4BACX,iBAAiB,EAAE,IAAI;4BACvB,cAAc,EAAE,IAAI;4BACpB,QAAQ,EAAE,IAAI;4BACd,OAAO,EAAE,OAAO,CAAC,IAAI;4BACrB,aAAa,EAAE,IAAI;4BACnB,UAAU,EAAE,QAAQ,CAAC,OAAO;4BAC5B,WAAW,EAAE,IAAI;4BACjB,YAAY,EAAE,IAAI;4BAClB,kBAAkB,EAAE,IAAI;4BACxB,cAAc,EAAE,KAAK;4BACrB,kBAAkB,EAAE,YAAY,CAAC,OAAO;4BACxC,eAAe,EAAE,IAAI;4BACrB,SAAS,EAAE,0BAA0B;4BACrC,SAAS,EAAE,0BAA0B;yBACtC;qBACF;oBACD,cAAc,EAAE,EAAE;oBAClB,gBAAgB,EAAE,EAAE;oBACpB,YAAY,EAAE,IAAI;iBACnB;aACF,CAAC;YAGF,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;YACpE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC/D,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;YAEtE,MAAM,iBAAiB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAG3C,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC;gBACnD,IAAI,EAAE,MAAM,CAAC,gBAAgB,CAAC;oBAC5B,eAAe,EAAE,eAAe,CAAC,IAAI;iBACtC,CAAC;aACH,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAClD,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;YACvD,MAAM,YAAY,GAAiB;gBACjC,IAAI,EAAE;oBACJ,UAAU,EAAE,0BAA0B;oBACtC,OAAO,EAAE,OAAO;oBAChB,aAAa,EAAE,CAAC;iBACjB;gBACD,IAAI,EAAE;oBACJ,QAAQ,EAAE;wBACR;4BACE,EAAE,EAAE,QAAQ;4BACZ,IAAI,EAAE,cAAc;4BACpB,IAAI,EAAE,cAAc;4BACpB,QAAQ,EAAE,OAAO;4BACjB,gBAAgB,EAAE,OAAO;4BACzB,aAAa,EAAE,MAAM;4BACrB,WAAW,EAAE,IAAI;4BACjB,UAAU,EAAE,IAAI;4BAChB,UAAU,EAAE,KAAK;4BACjB,oBAAoB,EAAE,IAAI;4BAC1B,iBAAiB,EAAE,IAAI;4BACvB,oBAAoB,EAAE,GAAG;4BACzB,SAAS,EAAE,0BAA0B;4BACrC,SAAS,EAAE,0BAA0B;yBACtC;qBACF;oBACD,UAAU,EAAE,EAAE;oBACd,cAAc,EAAE,EAAE;oBAClB,gBAAgB,EAAE,EAAE;oBACpB,YAAY,EAAE,IAAI;iBACnB;aACF,CAAC;YAEF,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;YAEpE,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;YAEhE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACxC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACzC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;YAC5D,MAAM,YAAY,GAAiB;gBACjC,IAAI,EAAE;oBACJ,UAAU,EAAE,0BAA0B;oBACtC,OAAO,EAAE,OAAO;oBAChB,aAAa,EAAE,CAAC;iBACjB;gBACD,IAAI,EAAE;oBACJ,QAAQ,EAAE,EAAE;oBACZ,UAAU,EAAE;wBACV;4BACE,EAAE,EAAE,MAAM;4BACV,SAAS,EAAE,iBAAiB;4BAC5B,IAAI,EAAE,oBAAoB;4BAC1B,WAAW,EAAE,IAAI;4BACjB,MAAM,EAAE,eAAe,CAAC,GAAG;4BAC3B,YAAY,EAAE,IAAI;4BAClB,UAAU,EAAE,IAAI;4BAChB,qBAAqB,EAAE,KAAK;4BAC5B,cAAc,EAAE,uBAAuB,CAAC,MAAM;4BAC9C,gBAAgB,EAAE,IAAI;4BACtB,gBAAgB,EAAE,IAAI;4BACtB,UAAU,EAAE,IAAI;4BAChB,aAAa,EAAE,IAAI;4BACnB,eAAe,EAAE,IAAI;4BACrB,cAAc,EAAE,CAAC;4BACjB,gBAAgB,EAAE,IAAI;4BACtB,uBAAuB,EAAE,IAAI;4BAC7B,YAAY,EAAE,IAAI;4BAClB,aAAa,EAAE,IAAI;4BACnB,kBAAkB,EAAE,IAAI;4BACxB,eAAe,EAAE,eAAe,CAAC,IAAI;4BACrC,KAAK,EAAE,IAAI;4BACX,iBAAiB,EAAE,IAAI;4BACvB,cAAc,EAAE,IAAI;4BACpB,QAAQ,EAAE,IAAI;4BACd,OAAO,EAAE,OAAO,CAAC,IAAI;4BACrB,aAAa,EAAE,IAAI;4BACnB,UAAU,EAAE,QAAQ,CAAC,OAAO;4BAC5B,WAAW,EAAE,IAAI;4BACjB,YAAY,EAAE,IAAI;4BAClB,kBAAkB,EAAE,IAAI;4BACxB,qBAAqB,EAAE,IAAI;4BAC3B,qBAAqB,EAAE,IAAI;4BAC3B,cAAc,EAAE,IAAI;4BACpB,YAAY,EAAE,YAAY,CAAC,IAAI;4BAC/B,oBAAoB,EAAE,IAAI;4BAC1B,iBAAiB,EAAE,IAAI;4BACvB,sBAAsB,EAAE,IAAI;4BAC5B,kBAAkB,EAAE,IAAI;4BACxB,wBAAwB,EAAE,IAAI;4BAC9B,cAAc,EAAE,KAAK;4BACrB,kBAAkB,EAAE,YAAY,CAAC,OAAO;4BACxC,eAAe,EAAE,IAAI;4BACrB,SAAS,EAAE,0BAA0B;4BACrC,SAAS,EAAE,0BAA0B;yBACtC;qBACF;oBACD,cAAc,EAAE,EAAE;oBAClB,gBAAgB,EAAE,EAAE;oBACpB,YAAY,EAAE,IAAI;iBACnB;aACF,CAAC;YAEF,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC/D,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAE7D,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;YAEhE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC1C,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC3C,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QACzD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"file-lock.service.d.ts","sourceRoot":"","sources":["../../../../src/backend/services/file-lock.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file-lock.service.d.ts","sourceRoot":"","sources":["../../../../src/backend/services/file-lock.service.ts"],"names":[],"mappings":"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"}