factory-factory 0.2.7 → 0.2.8

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 (688) hide show
  1. package/README.md +213 -81
  2. package/dist/client/assets/{_basePickBy-BZHMXNSx.js → _basePickBy-B3zDs31T.js} +1 -1
  3. package/dist/client/assets/{_baseUniq-BN3di1uG.js → _baseUniq-5DitBjx0.js} +1 -1
  4. package/dist/client/assets/{arc-DTz7ujzB.js → arc-CjyrYxXy.js} +1 -1
  5. package/dist/client/assets/{architectureDiagram-VXUJARFQ-BF0tgsxU.js → architectureDiagram-VXUJARFQ-D8_gauWH.js} +1 -1
  6. package/dist/client/assets/{blockDiagram-VD42YOAC-DMmGkDXi.js → blockDiagram-VD42YOAC-Bv3Q9CLp.js} +1 -1
  7. package/dist/client/assets/{c4Diagram-YG6GDRKO-S4AaVo8k.js → c4Diagram-YG6GDRKO-CDuqXtWq.js} +1 -1
  8. package/dist/client/assets/channel-ClmwMKLM.js +1 -0
  9. package/dist/client/assets/{chunk-4BX2VUAB-scTb9znU.js → chunk-4BX2VUAB-1hsoI9qt.js} +1 -1
  10. package/dist/client/assets/{chunk-55IACEB6-vBLzgGqE.js → chunk-55IACEB6-BArXw_yn.js} +1 -1
  11. package/dist/client/assets/{chunk-B4BG7PRW-D-cPkPte.js → chunk-B4BG7PRW-Dasu1lEb.js} +1 -1
  12. package/dist/client/assets/{chunk-DI55MBZ5-DOh8b0Kb.js → chunk-DI55MBZ5-3nCgnT2u.js} +1 -1
  13. package/dist/client/assets/{chunk-FMBD7UC4-B6lujkqO.js → chunk-FMBD7UC4-ugfv5fjr.js} +1 -1
  14. package/dist/client/assets/{chunk-QN33PNHL-spdwi0WY.js → chunk-QN33PNHL-Fy8ucaTL.js} +1 -1
  15. package/dist/client/assets/{chunk-QZHKN3VN-CFHWNeCi.js → chunk-QZHKN3VN-C3QyKoYk.js} +1 -1
  16. package/dist/client/assets/{chunk-TZMSLE5B-BW6u8yiG.js → chunk-TZMSLE5B-CDmO7gUb.js} +1 -1
  17. package/dist/client/assets/classDiagram-2ON5EDUG-eWjFrD1A.js +1 -0
  18. package/dist/client/assets/classDiagram-v2-WZHVMYZB-eWjFrD1A.js +1 -0
  19. package/dist/client/assets/clone-CXwSvl4E.js +1 -0
  20. package/dist/client/assets/{cose-bilkent-S5V4N54A-CPnnXLX6.js → cose-bilkent-S5V4N54A-DiGKlkoA.js} +1 -1
  21. package/dist/client/assets/{dagre-6UL2VRFP-DES6A9x6.js → dagre-6UL2VRFP-DtYNiYbS.js} +1 -1
  22. package/dist/client/assets/{diagram-PSM6KHXK-VwBLGizc.js → diagram-PSM6KHXK-C_ldkHcF.js} +1 -1
  23. package/dist/client/assets/{diagram-QEK2KX5R-etHARSDz.js → diagram-QEK2KX5R-DjTq7vQF.js} +1 -1
  24. package/dist/client/assets/{diagram-S2PKOQOG-BI7PXPis.js → diagram-S2PKOQOG-D998ZJke.js} +1 -1
  25. package/dist/client/assets/{erDiagram-Q2GNP2WA-Cl5v3htL.js → erDiagram-Q2GNP2WA-BIii0nEI.js} +1 -1
  26. package/dist/client/assets/{flowDiagram-NV44I4VS-Ojv0q4uM.js → flowDiagram-NV44I4VS-Bna-5_CY.js} +1 -1
  27. package/dist/client/assets/{ganttDiagram-JELNMOA3-CfjA0UJD.js → ganttDiagram-JELNMOA3-B8ql7OFO.js} +1 -1
  28. package/dist/client/assets/{gitGraphDiagram-NY62KEGX-Ch7jeuA8.js → gitGraphDiagram-NY62KEGX-BbzPjxu9.js} +1 -1
  29. package/dist/client/assets/{graph-Dox0mu8B.js → graph-Zh8aNHea.js} +1 -1
  30. package/dist/client/assets/{index-BcV5Mqxt.js → index-CRmN2i75.js} +139 -139
  31. package/dist/client/assets/{infoDiagram-WHAUD3N6-CPQAoZm7.js → infoDiagram-WHAUD3N6-CqmcR4Qs.js} +1 -1
  32. package/dist/client/assets/{journeyDiagram-XKPGCS4Q-Vwt680EE.js → journeyDiagram-XKPGCS4Q-B4fggCTJ.js} +1 -1
  33. package/dist/client/assets/{kanban-definition-3W4ZIXB7-C--4JrCO.js → kanban-definition-3W4ZIXB7-sRJoeQCK.js} +1 -1
  34. package/dist/client/assets/{layout-i4JGghUI.js → layout-j5HiA8hv.js} +1 -1
  35. package/dist/client/assets/{linear-Ck02tugp.js → linear-CxNtC6U2.js} +1 -1
  36. package/dist/client/assets/{mindmap-definition-VGOIOE7T-DhPbco6X.js → mindmap-definition-VGOIOE7T-CDfMQQjR.js} +1 -1
  37. package/dist/client/assets/{pieDiagram-ADFJNKIX-BIsu48lT.js → pieDiagram-ADFJNKIX--m-6J_VW.js} +1 -1
  38. package/dist/client/assets/{quadrantDiagram-AYHSOK5B-D7Ynqe8A.js → quadrantDiagram-AYHSOK5B-BCNVf2sk.js} +1 -1
  39. package/dist/client/assets/{requirementDiagram-UZGBJVZJ-C6ev56dv.js → requirementDiagram-UZGBJVZJ-DCwJsMZC.js} +1 -1
  40. package/dist/client/assets/{sankeyDiagram-TZEHDZUN-DbpYAdQ2.js → sankeyDiagram-TZEHDZUN-DzwuTbDD.js} +1 -1
  41. package/dist/client/assets/{sequenceDiagram-WL72ISMW-mCJUmoPE.js → sequenceDiagram-WL72ISMW-DwIMe3yH.js} +1 -1
  42. package/dist/client/assets/{stateDiagram-FKZM4ZOC-Bc83uOQH.js → stateDiagram-FKZM4ZOC-Bm5WfkNE.js} +1 -1
  43. package/dist/client/assets/stateDiagram-v2-4FDKWEC3-DuArwQxe.js +1 -0
  44. package/dist/client/assets/{terminal-instance-BRX09yrN.js → terminal-instance-gBH-UP2T.js} +1 -1
  45. package/dist/client/assets/{timeline-definition-IT6M3QCI-TG8ZfQJt.js → timeline-definition-IT6M3QCI-BafQ0_Pn.js} +1 -1
  46. package/dist/client/assets/{treemap-KMMF4GRG-mbULMdr8.js → treemap-KMMF4GRG-DlAhPj6A.js} +1 -1
  47. package/dist/client/assets/{xychartDiagram-PRI3JC2R-3URCSGAN.js → xychartDiagram-PRI3JC2R-B0AGjvZ_.js} +1 -1
  48. package/dist/client/index.html +1 -1
  49. package/dist/prompts/workflows/bugfix.md +20 -3
  50. package/dist/prompts/workflows/feature.md +17 -3
  51. package/dist/src/backend/agents/process-adapter.d.ts +0 -14
  52. package/dist/src/backend/agents/process-adapter.d.ts.map +1 -1
  53. package/dist/src/backend/agents/process-adapter.js +2 -47
  54. package/dist/src/backend/agents/process-adapter.js.map +1 -1
  55. package/dist/src/backend/clients/git.client.js +1 -1
  56. package/dist/src/backend/clients/git.client.js.map +1 -1
  57. package/dist/src/backend/domains/github/bridges.d.ts +3 -22
  58. package/dist/src/backend/domains/github/bridges.d.ts.map +1 -1
  59. package/dist/src/backend/domains/github/github-cli/constants.d.ts +12 -0
  60. package/dist/src/backend/domains/github/github-cli/constants.d.ts.map +1 -0
  61. package/dist/src/backend/domains/github/github-cli/constants.js +12 -0
  62. package/dist/src/backend/domains/github/github-cli/constants.js.map +1 -0
  63. package/dist/src/backend/domains/github/github-cli/errors.d.ts +4 -0
  64. package/dist/src/backend/domains/github/github-cli/errors.d.ts.map +1 -0
  65. package/dist/src/backend/domains/github/github-cli/errors.js +77 -0
  66. package/dist/src/backend/domains/github/github-cli/errors.js.map +1 -0
  67. package/dist/src/backend/domains/github/github-cli/mappers.d.ts +16 -0
  68. package/dist/src/backend/domains/github/github-cli/mappers.d.ts.map +1 -0
  69. package/dist/src/backend/domains/github/github-cli/mappers.js +165 -0
  70. package/dist/src/backend/domains/github/github-cli/mappers.js.map +1 -0
  71. package/dist/src/backend/domains/github/github-cli/schemas.d.ts +155 -0
  72. package/dist/src/backend/domains/github/github-cli/schemas.d.ts.map +1 -0
  73. package/dist/src/backend/domains/github/github-cli/schemas.js +128 -0
  74. package/dist/src/backend/domains/github/github-cli/schemas.js.map +1 -0
  75. package/dist/src/backend/domains/github/github-cli/types.d.ts +55 -0
  76. package/dist/src/backend/domains/github/github-cli/types.d.ts.map +1 -0
  77. package/dist/src/backend/domains/github/github-cli/types.js +2 -0
  78. package/dist/src/backend/domains/github/github-cli/types.js.map +1 -0
  79. package/dist/src/backend/domains/github/github-cli/utils.d.ts +4 -0
  80. package/dist/src/backend/domains/github/github-cli/utils.d.ts.map +1 -0
  81. package/dist/src/backend/domains/github/github-cli/utils.js +43 -0
  82. package/dist/src/backend/domains/github/github-cli/utils.js.map +1 -0
  83. package/dist/src/backend/domains/github/github-cli.service.d.ts +7 -72
  84. package/dist/src/backend/domains/github/github-cli.service.d.ts.map +1 -1
  85. package/dist/src/backend/domains/github/github-cli.service.js +35 -436
  86. package/dist/src/backend/domains/github/github-cli.service.js.map +1 -1
  87. package/dist/src/backend/domains/github/github-cli.service.test.js +34 -12
  88. package/dist/src/backend/domains/github/github-cli.service.test.js.map +1 -1
  89. package/dist/src/backend/domains/github/index.d.ts +1 -1
  90. package/dist/src/backend/domains/github/index.d.ts.map +1 -1
  91. package/dist/src/backend/domains/github/index.js +1 -1
  92. package/dist/src/backend/domains/github/index.js.map +1 -1
  93. package/dist/src/backend/domains/github/pr-review-fixer.service.d.ts +0 -1
  94. package/dist/src/backend/domains/github/pr-review-fixer.service.d.ts.map +1 -1
  95. package/dist/src/backend/domains/github/pr-review-fixer.service.js +32 -64
  96. package/dist/src/backend/domains/github/pr-review-fixer.service.js.map +1 -1
  97. package/dist/src/backend/domains/github/pr-review-fixer.service.test.d.ts +2 -0
  98. package/dist/src/backend/domains/github/pr-review-fixer.service.test.d.ts.map +1 -0
  99. package/dist/src/backend/domains/github/pr-review-fixer.service.test.js +28 -0
  100. package/dist/src/backend/domains/github/pr-review-fixer.service.test.js.map +1 -0
  101. package/dist/src/backend/domains/github/pr-review-monitor.service.d.ts.map +1 -1
  102. package/dist/src/backend/domains/github/pr-review-monitor.service.js +6 -8
  103. package/dist/src/backend/domains/github/pr-review-monitor.service.js.map +1 -1
  104. package/dist/src/backend/domains/github/pr-snapshot.service.d.ts +22 -1
  105. package/dist/src/backend/domains/github/pr-snapshot.service.d.ts.map +1 -1
  106. package/dist/src/backend/domains/github/pr-snapshot.service.js +34 -7
  107. package/dist/src/backend/domains/github/pr-snapshot.service.js.map +1 -1
  108. package/dist/src/backend/domains/github/pr-snapshot.service.test.js +152 -2
  109. package/dist/src/backend/domains/github/pr-snapshot.service.test.js.map +1 -1
  110. package/dist/src/backend/domains/ratchet/bridges.d.ts +10 -0
  111. package/dist/src/backend/domains/ratchet/bridges.d.ts.map +1 -1
  112. package/dist/src/backend/domains/ratchet/ci-fixer.service.d.ts +0 -1
  113. package/dist/src/backend/domains/ratchet/ci-fixer.service.d.ts.map +1 -1
  114. package/dist/src/backend/domains/ratchet/ci-fixer.service.js +32 -64
  115. package/dist/src/backend/domains/ratchet/ci-fixer.service.js.map +1 -1
  116. package/dist/src/backend/domains/ratchet/ci-monitor.service.d.ts +4 -1
  117. package/dist/src/backend/domains/ratchet/ci-monitor.service.d.ts.map +1 -1
  118. package/dist/src/backend/domains/ratchet/ci-monitor.service.js +21 -12
  119. package/dist/src/backend/domains/ratchet/ci-monitor.service.js.map +1 -1
  120. package/dist/src/backend/domains/ratchet/index.d.ts +3 -3
  121. package/dist/src/backend/domains/ratchet/index.d.ts.map +1 -1
  122. package/dist/src/backend/domains/ratchet/index.js +1 -1
  123. package/dist/src/backend/domains/ratchet/index.js.map +1 -1
  124. package/dist/src/backend/domains/ratchet/ratchet.service.d.ts +16 -2
  125. package/dist/src/backend/domains/ratchet/ratchet.service.d.ts.map +1 -1
  126. package/dist/src/backend/domains/ratchet/ratchet.service.js +92 -5
  127. package/dist/src/backend/domains/ratchet/ratchet.service.js.map +1 -1
  128. package/dist/src/backend/domains/ratchet/ratchet.service.test.js +175 -4
  129. package/dist/src/backend/domains/ratchet/ratchet.service.test.js.map +1 -1
  130. package/dist/src/backend/domains/ratchet/reconciliation.service.d.ts.map +1 -1
  131. package/dist/src/backend/domains/ratchet/reconciliation.service.js +10 -3
  132. package/dist/src/backend/domains/ratchet/reconciliation.service.js.map +1 -1
  133. package/dist/src/backend/domains/ratchet/reconciliation.service.test.js +47 -1
  134. package/dist/src/backend/domains/ratchet/reconciliation.service.test.js.map +1 -1
  135. package/dist/src/backend/domains/run-script/index.d.ts +1 -1
  136. package/dist/src/backend/domains/run-script/index.d.ts.map +1 -1
  137. package/dist/src/backend/domains/run-script/index.js +1 -1
  138. package/dist/src/backend/domains/run-script/index.js.map +1 -1
  139. package/dist/src/backend/domains/run-script/run-script-state-machine.service.d.ts +8 -1
  140. package/dist/src/backend/domains/run-script/run-script-state-machine.service.d.ts.map +1 -1
  141. package/dist/src/backend/domains/run-script/run-script-state-machine.service.js +8 -1
  142. package/dist/src/backend/domains/run-script/run-script-state-machine.service.js.map +1 -1
  143. package/dist/src/backend/domains/run-script/run-script-state-machine.service.test.js +73 -2
  144. package/dist/src/backend/domains/run-script/run-script-state-machine.service.test.js.map +1 -1
  145. package/dist/src/backend/domains/run-script/run-script.service.d.ts.map +1 -1
  146. package/dist/src/backend/domains/run-script/run-script.service.js +30 -10
  147. package/dist/src/backend/domains/run-script/run-script.service.js.map +1 -1
  148. package/dist/src/backend/domains/run-script/run-script.service.test.js +21 -1
  149. package/dist/src/backend/domains/run-script/run-script.service.test.js.map +1 -1
  150. package/dist/src/backend/domains/run-script/startup-script.service.d.ts.map +1 -1
  151. package/dist/src/backend/domains/run-script/startup-script.service.js +4 -2
  152. package/dist/src/backend/domains/run-script/startup-script.service.js.map +1 -1
  153. package/dist/src/backend/domains/session/chat/chat-connection.service.d.ts +1 -2
  154. package/dist/src/backend/domains/session/chat/chat-connection.service.d.ts.map +1 -1
  155. package/dist/src/backend/domains/session/chat/chat-connection.service.js +1 -1
  156. package/dist/src/backend/domains/session/chat/chat-connection.service.js.map +1 -1
  157. package/dist/src/backend/domains/session/chat/chat-connection.service.test.d.ts +2 -0
  158. package/dist/src/backend/domains/session/chat/chat-connection.service.test.d.ts.map +1 -0
  159. package/dist/src/backend/domains/session/chat/chat-connection.service.test.js +188 -0
  160. package/dist/src/backend/domains/session/chat/chat-connection.service.test.js.map +1 -0
  161. package/dist/src/backend/domains/session/chat/chat-event-forwarder.service.d.ts +2 -2
  162. package/dist/src/backend/domains/session/chat/chat-event-forwarder.service.d.ts.map +1 -1
  163. package/dist/src/backend/domains/session/chat/chat-event-forwarder.service.js +130 -123
  164. package/dist/src/backend/domains/session/chat/chat-event-forwarder.service.js.map +1 -1
  165. package/dist/src/backend/domains/session/chat/chat-message-handlers/attachment-processing.d.ts +1 -1
  166. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/list-sessions.handler.d.ts +1 -1
  167. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/list-sessions.handler.d.ts.map +1 -1
  168. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/list-sessions.handler.js +1 -1
  169. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/list-sessions.handler.js.map +1 -1
  170. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/load-session.handler.d.ts +1 -1
  171. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/load-session.handler.d.ts.map +1 -1
  172. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/load-session.handler.js +2 -2
  173. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/load-session.handler.js.map +1 -1
  174. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/permission-response.handler.d.ts +1 -1
  175. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/permission-response.handler.d.ts.map +1 -1
  176. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/permission-response.handler.js +7 -12
  177. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/permission-response.handler.js.map +1 -1
  178. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/question-response.handler.d.ts +1 -1
  179. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/question-response.handler.d.ts.map +1 -1
  180. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/question-response.handler.js +7 -9
  181. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/question-response.handler.js.map +1 -1
  182. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/queue-message.handler.d.ts +1 -1
  183. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/queue-message.handler.d.ts.map +1 -1
  184. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/queue-message.handler.js +3 -3
  185. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/queue-message.handler.js.map +1 -1
  186. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/remove-queued-message.handler.d.ts +1 -1
  187. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/remove-queued-message.handler.d.ts.map +1 -1
  188. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/remove-queued-message.handler.js +1 -1
  189. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/remove-queued-message.handler.js.map +1 -1
  190. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/resume-queued-messages.handler.d.ts +1 -1
  191. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/resume-queued-messages.handler.d.ts.map +1 -1
  192. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/resume-queued-messages.handler.js.map +1 -1
  193. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/rewind-files.handler.d.ts +1 -1
  194. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/rewind-files.handler.d.ts.map +1 -1
  195. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/rewind-files.handler.js +2 -2
  196. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/rewind-files.handler.js.map +1 -1
  197. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/set-model.handler.d.ts +1 -1
  198. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/set-model.handler.d.ts.map +1 -1
  199. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/set-model.handler.js +4 -5
  200. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/set-model.handler.js.map +1 -1
  201. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/set-thinking-budget.handler.d.ts +1 -1
  202. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/set-thinking-budget.handler.d.ts.map +1 -1
  203. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/set-thinking-budget.handler.js +4 -5
  204. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/set-thinking-budget.handler.js.map +1 -1
  205. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/start.handler.d.ts +1 -1
  206. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/start.handler.d.ts.map +1 -1
  207. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/start.handler.js +2 -2
  208. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/start.handler.js.map +1 -1
  209. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/start.handler.test.js +1 -1
  210. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/start.handler.test.js.map +1 -1
  211. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/stop.handler.d.ts +1 -1
  212. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/stop.handler.d.ts.map +1 -1
  213. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/stop.handler.js +2 -2
  214. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/stop.handler.js.map +1 -1
  215. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/user-input.handler.d.ts +1 -1
  216. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/user-input.handler.d.ts.map +1 -1
  217. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/user-input.handler.js +1 -1
  218. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/user-input.handler.js.map +1 -1
  219. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/utils.d.ts +12 -0
  220. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/utils.d.ts.map +1 -0
  221. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/utils.js +20 -0
  222. package/dist/src/backend/domains/session/chat/chat-message-handlers/handlers/utils.js.map +1 -0
  223. package/dist/src/backend/domains/session/chat/chat-message-handlers/interactive-response.js +1 -1
  224. package/dist/src/backend/domains/session/chat/chat-message-handlers/interactive-response.js.map +1 -1
  225. package/dist/src/backend/domains/session/chat/chat-message-handlers/interactive-response.test.js +1 -1
  226. package/dist/src/backend/domains/session/chat/chat-message-handlers/interactive-response.test.js.map +1 -1
  227. package/dist/src/backend/domains/session/chat/chat-message-handlers/types.d.ts +1 -1
  228. package/dist/src/backend/domains/session/chat/chat-message-handlers/types.d.ts.map +1 -1
  229. package/dist/src/backend/domains/session/chat/chat-message-handlers.service.d.ts +2 -3
  230. package/dist/src/backend/domains/session/chat/chat-message-handlers.service.d.ts.map +1 -1
  231. package/dist/src/backend/domains/session/chat/chat-message-handlers.service.js +2 -2
  232. package/dist/src/backend/domains/session/chat/chat-message-handlers.service.js.map +1 -1
  233. package/dist/src/backend/domains/session/chat/chat-message-handlers.service.test.js +2 -2
  234. package/dist/src/backend/domains/session/chat/chat-message-handlers.service.test.js.map +1 -1
  235. package/dist/src/backend/domains/session/claude/permissions.test.js +4 -2
  236. package/dist/src/backend/domains/session/claude/permissions.test.js.map +1 -1
  237. package/dist/src/backend/domains/session/claude/protocol.d.ts.map +1 -1
  238. package/dist/src/backend/domains/session/claude/protocol.js +11 -3
  239. package/dist/src/backend/domains/session/claude/protocol.js.map +1 -1
  240. package/dist/src/backend/domains/session/claude/protocol.test.js +77 -33
  241. package/dist/src/backend/domains/session/claude/protocol.test.js.map +1 -1
  242. package/dist/src/backend/domains/session/claude/types.d.ts +1 -4
  243. package/dist/src/backend/domains/session/claude/types.d.ts.map +1 -1
  244. package/dist/src/backend/domains/session/claude/types.js +1 -12
  245. package/dist/src/backend/domains/session/claude/types.js.map +1 -1
  246. package/dist/src/backend/domains/session/data/session-data.service.d.ts +5 -7
  247. package/dist/src/backend/domains/session/data/session-data.service.d.ts.map +1 -1
  248. package/dist/src/backend/domains/session/data/session-data.service.js.map +1 -1
  249. package/dist/src/backend/domains/session/index.d.ts +0 -1
  250. package/dist/src/backend/domains/session/index.d.ts.map +1 -1
  251. package/dist/src/backend/domains/session/index.js.map +1 -1
  252. package/dist/src/backend/domains/session/lifecycle/session.process-manager.d.ts +3 -3
  253. package/dist/src/backend/domains/session/lifecycle/session.process-manager.d.ts.map +1 -1
  254. package/dist/src/backend/domains/session/lifecycle/session.process-manager.js +2 -2
  255. package/dist/src/backend/domains/session/lifecycle/session.process-manager.js.map +1 -1
  256. package/dist/src/backend/domains/session/lifecycle/session.process-manager.test.js +1 -1
  257. package/dist/src/backend/domains/session/lifecycle/session.process-manager.test.js.map +1 -1
  258. package/dist/src/backend/domains/session/lifecycle/session.service.d.ts +3 -3
  259. package/dist/src/backend/domains/session/lifecycle/session.service.d.ts.map +1 -1
  260. package/dist/src/backend/domains/session/lifecycle/session.service.js +3 -3
  261. package/dist/src/backend/domains/session/lifecycle/session.service.js.map +1 -1
  262. package/dist/src/backend/domains/session/lifecycle/session.service.test.js +1 -1
  263. package/dist/src/backend/domains/session/lifecycle/session.service.test.js.map +1 -1
  264. package/dist/src/backend/domains/session/store/session-publisher.d.ts.map +1 -1
  265. package/dist/src/backend/domains/session/store/session-publisher.js +2 -2
  266. package/dist/src/backend/domains/session/store/session-publisher.js.map +1 -1
  267. package/dist/src/backend/domains/workspace/index.d.ts +1 -1
  268. package/dist/src/backend/domains/workspace/index.d.ts.map +1 -1
  269. package/dist/src/backend/domains/workspace/index.js +1 -1
  270. package/dist/src/backend/domains/workspace/index.js.map +1 -1
  271. package/dist/src/backend/domains/workspace/lifecycle/activity.service.d.ts.map +1 -1
  272. package/dist/src/backend/domains/workspace/lifecycle/activity.service.js +14 -0
  273. package/dist/src/backend/domains/workspace/lifecycle/activity.service.js.map +1 -1
  274. package/dist/src/backend/domains/workspace/lifecycle/creation.service.d.ts.map +1 -1
  275. package/dist/src/backend/domains/workspace/lifecycle/creation.service.js +1 -1
  276. package/dist/src/backend/domains/workspace/lifecycle/creation.service.js.map +1 -1
  277. package/dist/src/backend/domains/workspace/lifecycle/creation.service.test.js +2 -2
  278. package/dist/src/backend/domains/workspace/lifecycle/creation.service.test.js.map +1 -1
  279. package/dist/src/backend/domains/workspace/lifecycle/data.service.d.ts +7 -9
  280. package/dist/src/backend/domains/workspace/lifecycle/data.service.d.ts.map +1 -1
  281. package/dist/src/backend/domains/workspace/lifecycle/data.service.js +0 -3
  282. package/dist/src/backend/domains/workspace/lifecycle/data.service.js.map +1 -1
  283. package/dist/src/backend/domains/workspace/lifecycle/state-machine.service.d.ts +8 -1
  284. package/dist/src/backend/domains/workspace/lifecycle/state-machine.service.d.ts.map +1 -1
  285. package/dist/src/backend/domains/workspace/lifecycle/state-machine.service.js +23 -2
  286. package/dist/src/backend/domains/workspace/lifecycle/state-machine.service.js.map +1 -1
  287. package/dist/src/backend/domains/workspace/lifecycle/state-machine.service.test.js +181 -24
  288. package/dist/src/backend/domains/workspace/lifecycle/state-machine.service.test.js.map +1 -1
  289. package/dist/src/backend/domains/workspace/query/workspace-query.service.d.ts +5 -5
  290. package/dist/src/backend/domains/workspace/query/workspace-query.service.d.ts.map +1 -1
  291. package/dist/src/backend/domains/workspace/query/workspace-query.service.js +13 -17
  292. package/dist/src/backend/domains/workspace/query/workspace-query.service.js.map +1 -1
  293. package/dist/src/backend/domains/workspace/state/kanban-state.d.ts +1 -1
  294. package/dist/src/backend/domains/workspace/state/kanban-state.d.ts.map +1 -1
  295. package/dist/src/backend/domains/workspace/state/kanban-state.js +9 -11
  296. package/dist/src/backend/domains/workspace/state/kanban-state.js.map +1 -1
  297. package/dist/src/backend/domains/workspace/state/workspace-runtime-state.d.ts +17 -0
  298. package/dist/src/backend/domains/workspace/state/workspace-runtime-state.d.ts.map +1 -0
  299. package/dist/src/backend/domains/workspace/state/workspace-runtime-state.js +13 -0
  300. package/dist/src/backend/domains/workspace/state/workspace-runtime-state.js.map +1 -0
  301. package/dist/src/backend/domains/workspace/worktree/worktree-init.test.js +34 -0
  302. package/dist/src/backend/domains/workspace/worktree/worktree-init.test.js.map +1 -1
  303. package/dist/src/backend/interceptors/branch-rename.interceptor.js +4 -4
  304. package/dist/src/backend/interceptors/branch-rename.interceptor.js.map +1 -1
  305. package/dist/src/backend/interceptors/conversation-rename.interceptor.js +7 -7
  306. package/dist/src/backend/interceptors/conversation-rename.interceptor.js.map +1 -1
  307. package/dist/src/backend/interceptors/pr-detection.interceptor.js +2 -2
  308. package/dist/src/backend/interceptors/pr-detection.interceptor.js.map +1 -1
  309. package/dist/src/backend/interceptors/registry.js +1 -1
  310. package/dist/src/backend/interceptors/registry.js.map +1 -1
  311. package/dist/src/backend/lib/constants.d.ts +1 -0
  312. package/dist/src/backend/lib/constants.d.ts.map +1 -1
  313. package/dist/src/backend/lib/constants.js +1 -0
  314. package/dist/src/backend/lib/constants.js.map +1 -1
  315. package/dist/src/backend/lib/file-lock-mutex.js +1 -1
  316. package/dist/src/backend/lib/file-lock-mutex.js.map +1 -1
  317. package/dist/src/backend/lib/session-summaries.d.ts +15 -0
  318. package/dist/src/backend/lib/session-summaries.d.ts.map +1 -0
  319. package/dist/src/backend/lib/session-summaries.js +24 -0
  320. package/dist/src/backend/lib/session-summaries.js.map +1 -0
  321. package/dist/src/backend/middleware/cors.middleware.d.ts +1 -1
  322. package/dist/src/backend/middleware/cors.middleware.d.ts.map +1 -1
  323. package/dist/src/backend/middleware/cors.middleware.js +1 -1
  324. package/dist/src/backend/middleware/cors.middleware.js.map +1 -1
  325. package/dist/src/backend/middleware/middleware.test.js +1 -1
  326. package/dist/src/backend/middleware/middleware.test.js.map +1 -1
  327. package/dist/src/backend/middleware/request-logger.middleware.d.ts +1 -1
  328. package/dist/src/backend/middleware/request-logger.middleware.d.ts.map +1 -1
  329. package/dist/src/backend/middleware/request-logger.middleware.js +1 -1
  330. package/dist/src/backend/middleware/request-logger.middleware.js.map +1 -1
  331. package/dist/src/backend/migrate.d.ts.map +1 -1
  332. package/dist/src/backend/migrate.js +62 -7
  333. package/dist/src/backend/migrate.js.map +1 -1
  334. package/dist/src/backend/migrate.test.d.ts +2 -0
  335. package/dist/src/backend/migrate.test.d.ts.map +1 -0
  336. package/dist/src/backend/migrate.test.js +278 -0
  337. package/dist/src/backend/migrate.test.js.map +1 -0
  338. package/dist/src/backend/orchestration/domain-bridges.orchestrator.d.ts.map +1 -1
  339. package/dist/src/backend/orchestration/domain-bridges.orchestrator.js +30 -3
  340. package/dist/src/backend/orchestration/domain-bridges.orchestrator.js.map +1 -1
  341. package/dist/src/backend/orchestration/event-collector.orchestrator.d.ts +21 -0
  342. package/dist/src/backend/orchestration/event-collector.orchestrator.d.ts.map +1 -0
  343. package/dist/src/backend/orchestration/event-collector.orchestrator.js +143 -0
  344. package/dist/src/backend/orchestration/event-collector.orchestrator.js.map +1 -0
  345. package/dist/src/backend/orchestration/event-collector.orchestrator.test.d.ts +2 -0
  346. package/dist/src/backend/orchestration/event-collector.orchestrator.test.d.ts.map +1 -0
  347. package/dist/src/backend/orchestration/event-collector.orchestrator.test.js +322 -0
  348. package/dist/src/backend/orchestration/event-collector.orchestrator.test.js.map +1 -0
  349. package/dist/src/backend/orchestration/snapshot-reconciliation.orchestrator.d.ts +41 -0
  350. package/dist/src/backend/orchestration/snapshot-reconciliation.orchestrator.d.ts.map +1 -0
  351. package/dist/src/backend/orchestration/snapshot-reconciliation.orchestrator.js +237 -0
  352. package/dist/src/backend/orchestration/snapshot-reconciliation.orchestrator.js.map +1 -0
  353. package/dist/src/backend/orchestration/snapshot-reconciliation.orchestrator.test.d.ts +2 -0
  354. package/dist/src/backend/orchestration/snapshot-reconciliation.orchestrator.test.d.ts.map +1 -0
  355. package/dist/src/backend/orchestration/snapshot-reconciliation.orchestrator.test.js +502 -0
  356. package/dist/src/backend/orchestration/snapshot-reconciliation.orchestrator.test.js.map +1 -0
  357. package/dist/src/backend/orchestration/workspace-archive.orchestrator.d.ts +1 -1
  358. package/dist/src/backend/orchestration/workspace-archive.orchestrator.d.ts.map +1 -1
  359. package/dist/src/backend/orchestration/workspace-archive.orchestrator.js +19 -7
  360. package/dist/src/backend/orchestration/workspace-archive.orchestrator.js.map +1 -1
  361. package/dist/src/backend/orchestration/workspace-archive.orchestrator.test.js +22 -15
  362. package/dist/src/backend/orchestration/workspace-archive.orchestrator.test.js.map +1 -1
  363. package/dist/src/backend/orchestration/workspace-init.orchestrator.d.ts.map +1 -1
  364. package/dist/src/backend/orchestration/workspace-init.orchestrator.js +73 -10
  365. package/dist/src/backend/orchestration/workspace-init.orchestrator.js.map +1 -1
  366. package/dist/src/backend/orchestration/workspace-init.orchestrator.test.js +48 -0
  367. package/dist/src/backend/orchestration/workspace-init.orchestrator.test.js.map +1 -1
  368. package/dist/src/backend/prompts/quick-actions.js +1 -1
  369. package/dist/src/backend/prompts/quick-actions.js.map +1 -1
  370. package/dist/src/backend/prompts/ratchet-dispatch.js +1 -1
  371. package/dist/src/backend/prompts/ratchet-dispatch.js.map +1 -1
  372. package/dist/src/backend/prompts/workflows.js +1 -1
  373. package/dist/src/backend/prompts/workflows.js.map +1 -1
  374. package/dist/src/backend/prompts/workflows.test.js +3 -2
  375. package/dist/src/backend/prompts/workflows.test.js.map +1 -1
  376. package/dist/src/backend/resource_accessors/claude-session.accessor.js +1 -1
  377. package/dist/src/backend/resource_accessors/claude-session.accessor.js.map +1 -1
  378. package/dist/src/backend/resource_accessors/data-backup.accessor.js +1 -1
  379. package/dist/src/backend/resource_accessors/data-backup.accessor.js.map +1 -1
  380. package/dist/src/backend/resource_accessors/decision-log.accessor.js +1 -1
  381. package/dist/src/backend/resource_accessors/decision-log.accessor.js.map +1 -1
  382. package/dist/src/backend/resource_accessors/health.accessor.js +1 -1
  383. package/dist/src/backend/resource_accessors/health.accessor.js.map +1 -1
  384. package/dist/src/backend/resource_accessors/project.accessor.js +3 -3
  385. package/dist/src/backend/resource_accessors/project.accessor.js.map +1 -1
  386. package/dist/src/backend/resource_accessors/terminal-session.accessor.js +1 -1
  387. package/dist/src/backend/resource_accessors/terminal-session.accessor.js.map +1 -1
  388. package/dist/src/backend/resource_accessors/user-settings.accessor.js +1 -1
  389. package/dist/src/backend/resource_accessors/user-settings.accessor.js.map +1 -1
  390. package/dist/src/backend/resource_accessors/workspace.accessor.d.ts +11 -1
  391. package/dist/src/backend/resource_accessors/workspace.accessor.d.ts.map +1 -1
  392. package/dist/src/backend/resource_accessors/workspace.accessor.js +15 -4
  393. package/dist/src/backend/resource_accessors/workspace.accessor.js.map +1 -1
  394. package/dist/src/backend/resource_accessors/workspace.accessor.test.js +1 -1
  395. package/dist/src/backend/resource_accessors/workspace.accessor.test.js.map +1 -1
  396. package/dist/src/backend/routers/health.router.d.ts +4 -0
  397. package/dist/src/backend/routers/health.router.d.ts.map +1 -0
  398. package/dist/src/backend/routers/{api/health.router.js → health.router.js} +3 -5
  399. package/dist/src/backend/routers/health.router.js.map +1 -0
  400. package/dist/src/backend/routers/health.router.test.d.ts.map +1 -0
  401. package/dist/src/backend/routers/{api/health.router.test.js → health.router.test.js} +2 -2
  402. package/dist/src/backend/routers/health.router.test.js.map +1 -0
  403. package/dist/src/backend/routers/websocket/chat.handler.d.ts +2 -2
  404. package/dist/src/backend/routers/websocket/chat.handler.d.ts.map +1 -1
  405. package/dist/src/backend/routers/websocket/chat.handler.js +18 -13
  406. package/dist/src/backend/routers/websocket/chat.handler.js.map +1 -1
  407. package/dist/src/backend/routers/websocket/chat.handler.test.d.ts +2 -0
  408. package/dist/src/backend/routers/websocket/chat.handler.test.d.ts.map +1 -0
  409. package/dist/src/backend/routers/websocket/chat.handler.test.js +61 -0
  410. package/dist/src/backend/routers/websocket/chat.handler.test.js.map +1 -0
  411. package/dist/src/backend/routers/websocket/dev-logs.handler.d.ts +1 -1
  412. package/dist/src/backend/routers/websocket/dev-logs.handler.d.ts.map +1 -1
  413. package/dist/src/backend/routers/websocket/dev-logs.handler.js +7 -10
  414. package/dist/src/backend/routers/websocket/dev-logs.handler.js.map +1 -1
  415. package/dist/src/backend/routers/websocket/dev-logs.handler.test.d.ts +2 -0
  416. package/dist/src/backend/routers/websocket/dev-logs.handler.test.d.ts.map +1 -0
  417. package/dist/src/backend/routers/websocket/dev-logs.handler.test.js +53 -0
  418. package/dist/src/backend/routers/websocket/dev-logs.handler.test.js.map +1 -0
  419. package/dist/src/backend/routers/websocket/index.d.ts +1 -0
  420. package/dist/src/backend/routers/websocket/index.d.ts.map +1 -1
  421. package/dist/src/backend/routers/websocket/index.js +1 -0
  422. package/dist/src/backend/routers/websocket/index.js.map +1 -1
  423. package/dist/src/backend/routers/websocket/snapshots.handler.d.ts +9 -0
  424. package/dist/src/backend/routers/websocket/snapshots.handler.d.ts.map +1 -0
  425. package/dist/src/backend/routers/websocket/snapshots.handler.js +82 -0
  426. package/dist/src/backend/routers/websocket/snapshots.handler.js.map +1 -0
  427. package/dist/src/backend/routers/websocket/snapshots.handler.test.d.ts +2 -0
  428. package/dist/src/backend/routers/websocket/snapshots.handler.test.d.ts.map +1 -0
  429. package/dist/src/backend/routers/websocket/snapshots.handler.test.js +187 -0
  430. package/dist/src/backend/routers/websocket/snapshots.handler.test.js.map +1 -0
  431. package/dist/src/backend/routers/websocket/terminal.handler.d.ts +1 -1
  432. package/dist/src/backend/routers/websocket/terminal.handler.d.ts.map +1 -1
  433. package/dist/src/backend/routers/websocket/terminal.handler.js +15 -67
  434. package/dist/src/backend/routers/websocket/terminal.handler.js.map +1 -1
  435. package/dist/src/backend/routers/websocket/terminal.handler.test.d.ts +2 -0
  436. package/dist/src/backend/routers/websocket/terminal.handler.test.d.ts.map +1 -0
  437. package/dist/src/backend/routers/websocket/terminal.handler.test.js +116 -0
  438. package/dist/src/backend/routers/websocket/terminal.handler.test.js.map +1 -0
  439. package/dist/src/backend/routers/websocket/upgrade-utils.d.ts +6 -0
  440. package/dist/src/backend/routers/websocket/upgrade-utils.d.ts.map +1 -0
  441. package/dist/src/backend/routers/websocket/upgrade-utils.js +19 -0
  442. package/dist/src/backend/routers/websocket/upgrade-utils.js.map +1 -0
  443. package/dist/src/backend/server.d.ts.map +1 -1
  444. package/dist/src/backend/server.js +16 -10
  445. package/dist/src/backend/server.js.map +1 -1
  446. package/dist/src/backend/services/config.service.js +1 -1
  447. package/dist/src/backend/services/config.service.js.map +1 -1
  448. package/dist/src/backend/services/data-backup.service.d.ts +2 -2
  449. package/dist/src/backend/services/data-backup.service.d.ts.map +1 -1
  450. package/dist/src/backend/services/data-backup.service.js +1 -3
  451. package/dist/src/backend/services/data-backup.service.js.map +1 -1
  452. package/dist/src/backend/services/data-backup.service.test.js +4 -3
  453. package/dist/src/backend/services/data-backup.service.test.js.map +1 -1
  454. package/dist/src/backend/services/decision-log-query.service.js +1 -1
  455. package/dist/src/backend/services/decision-log-query.service.js.map +1 -1
  456. package/dist/src/backend/services/file-lock.service.d.ts +1 -0
  457. package/dist/src/backend/services/file-lock.service.d.ts.map +1 -1
  458. package/dist/src/backend/services/file-lock.service.js +27 -12
  459. package/dist/src/backend/services/file-lock.service.js.map +1 -1
  460. package/dist/src/backend/services/file-lock.service.test.js +68 -1
  461. package/dist/src/backend/services/file-lock.service.test.js.map +1 -1
  462. package/dist/src/backend/services/fixer-workflow.service.d.ts +86 -0
  463. package/dist/src/backend/services/fixer-workflow.service.d.ts.map +1 -0
  464. package/dist/src/backend/services/fixer-workflow.service.js +78 -0
  465. package/dist/src/backend/services/fixer-workflow.service.js.map +1 -0
  466. package/dist/src/backend/services/fixer-workflow.service.test.d.ts +2 -0
  467. package/dist/src/backend/services/fixer-workflow.service.test.d.ts.map +1 -0
  468. package/dist/src/backend/services/fixer-workflow.service.test.js +55 -0
  469. package/dist/src/backend/services/fixer-workflow.service.test.js.map +1 -0
  470. package/dist/src/backend/services/git-ops.service.d.ts +1 -1
  471. package/dist/src/backend/services/git-ops.service.d.ts.map +1 -1
  472. package/dist/src/backend/services/git-ops.service.js +4 -4
  473. package/dist/src/backend/services/git-ops.service.js.map +1 -1
  474. package/dist/src/backend/services/health.service.js +1 -1
  475. package/dist/src/backend/services/health.service.js.map +1 -1
  476. package/dist/src/backend/services/index.d.ts +3 -1
  477. package/dist/src/backend/services/index.d.ts.map +1 -1
  478. package/dist/src/backend/services/index.js +3 -1
  479. package/dist/src/backend/services/index.js.map +1 -1
  480. package/dist/src/backend/services/logger.service.d.ts.map +1 -1
  481. package/dist/src/backend/services/logger.service.js +56 -5
  482. package/dist/src/backend/services/logger.service.js.map +1 -1
  483. package/dist/src/backend/services/logger.service.test.d.ts +2 -0
  484. package/dist/src/backend/services/logger.service.test.d.ts.map +1 -0
  485. package/dist/src/backend/services/logger.service.test.js +227 -0
  486. package/dist/src/backend/services/logger.service.test.js.map +1 -0
  487. package/dist/src/backend/services/notification.service.js +1 -1
  488. package/dist/src/backend/services/notification.service.js.map +1 -1
  489. package/dist/src/backend/services/project-management.service.d.ts +3 -3
  490. package/dist/src/backend/services/project-management.service.d.ts.map +1 -1
  491. package/dist/src/backend/services/project-management.service.js +1 -1
  492. package/dist/src/backend/services/project-management.service.js.map +1 -1
  493. package/dist/src/backend/services/rate-limiter.service.js +1 -1
  494. package/dist/src/backend/services/rate-limiter.service.js.map +1 -1
  495. package/dist/src/backend/services/scheduler.service.d.ts.map +1 -1
  496. package/dist/src/backend/services/scheduler.service.js +4 -4
  497. package/dist/src/backend/services/scheduler.service.js.map +1 -1
  498. package/dist/src/backend/services/scheduler.service.test.js +8 -1
  499. package/dist/src/backend/services/scheduler.service.test.js.map +1 -1
  500. package/dist/src/backend/services/slash-command-cache.service.d.ts.map +1 -1
  501. package/dist/src/backend/services/slash-command-cache.service.js +1 -1
  502. package/dist/src/backend/services/slash-command-cache.service.js.map +1 -1
  503. package/dist/src/backend/services/user-settings-query.service.js +1 -1
  504. package/dist/src/backend/services/user-settings-query.service.js.map +1 -1
  505. package/dist/src/backend/services/workspace-snapshot-store.service.d.ts +130 -0
  506. package/dist/src/backend/services/workspace-snapshot-store.service.d.ts.map +1 -0
  507. package/dist/src/backend/services/workspace-snapshot-store.service.js +212 -0
  508. package/dist/src/backend/services/workspace-snapshot-store.service.js.map +1 -0
  509. package/dist/src/backend/services/workspace-snapshot-store.service.test.d.ts +2 -0
  510. package/dist/src/backend/services/workspace-snapshot-store.service.test.d.ts.map +1 -0
  511. package/dist/src/backend/services/workspace-snapshot-store.service.test.js +392 -0
  512. package/dist/src/backend/services/workspace-snapshot-store.service.test.js.map +1 -0
  513. package/dist/src/backend/trpc/admin.trpc.d.ts +2 -2
  514. package/dist/src/backend/trpc/admin.trpc.js +3 -3
  515. package/dist/src/backend/trpc/admin.trpc.js.map +1 -1
  516. package/dist/src/backend/trpc/decision-log.trpc.js +1 -1
  517. package/dist/src/backend/trpc/decision-log.trpc.js.map +1 -1
  518. package/dist/src/backend/trpc/github.trpc.js +1 -1
  519. package/dist/src/backend/trpc/github.trpc.js.map +1 -1
  520. package/dist/src/backend/trpc/index.d.ts +67 -105
  521. package/dist/src/backend/trpc/index.d.ts.map +1 -1
  522. package/dist/src/backend/trpc/procedures/project-scoped.d.ts +1 -1
  523. package/dist/src/backend/trpc/procedures/project-scoped.js +1 -1
  524. package/dist/src/backend/trpc/procedures/project-scoped.js.map +1 -1
  525. package/dist/src/backend/trpc/project.trpc.d.ts +2 -2
  526. package/dist/src/backend/trpc/project.trpc.js +3 -3
  527. package/dist/src/backend/trpc/project.trpc.js.map +1 -1
  528. package/dist/src/backend/trpc/project.trpc.test.js +1 -1
  529. package/dist/src/backend/trpc/project.trpc.test.js.map +1 -1
  530. package/dist/src/backend/trpc/session.trpc.d.ts +25 -27
  531. package/dist/src/backend/trpc/session.trpc.d.ts.map +1 -1
  532. package/dist/src/backend/trpc/session.trpc.js +1 -3
  533. package/dist/src/backend/trpc/session.trpc.js.map +1 -1
  534. package/dist/src/backend/trpc/trpc.d.ts +1 -1
  535. package/dist/src/backend/trpc/trpc.d.ts.map +1 -1
  536. package/dist/src/backend/trpc/user-settings.trpc.js +2 -2
  537. package/dist/src/backend/trpc/user-settings.trpc.js.map +1 -1
  538. package/dist/src/backend/trpc/workspace/files.trpc.d.ts +2 -2
  539. package/dist/src/backend/trpc/workspace/files.trpc.d.ts.map +1 -1
  540. package/dist/src/backend/trpc/workspace/files.trpc.js +2 -2
  541. package/dist/src/backend/trpc/workspace/files.trpc.js.map +1 -1
  542. package/dist/src/backend/trpc/workspace/git.trpc.d.ts +3 -3
  543. package/dist/src/backend/trpc/workspace/git.trpc.d.ts.map +1 -1
  544. package/dist/src/backend/trpc/workspace/git.trpc.js +4 -4
  545. package/dist/src/backend/trpc/workspace/git.trpc.js.map +1 -1
  546. package/dist/src/backend/trpc/workspace/ide.trpc.d.ts +1 -1
  547. package/dist/src/backend/trpc/workspace/ide.trpc.js +3 -3
  548. package/dist/src/backend/trpc/workspace/ide.trpc.js.map +1 -1
  549. package/dist/src/backend/trpc/workspace/init.trpc.d.ts +5 -5
  550. package/dist/src/backend/trpc/workspace/init.trpc.js +2 -2
  551. package/dist/src/backend/trpc/workspace/init.trpc.js.map +1 -1
  552. package/dist/src/backend/trpc/workspace/run-script.trpc.d.ts +1 -1
  553. package/dist/src/backend/trpc/workspace/run-script.trpc.js +1 -1
  554. package/dist/src/backend/trpc/workspace/run-script.trpc.js.map +1 -1
  555. package/dist/src/backend/trpc/workspace/workspace-helpers.d.ts +5 -5
  556. package/dist/src/backend/trpc/workspace.trpc.d.ts +60 -98
  557. package/dist/src/backend/trpc/workspace.trpc.d.ts.map +1 -1
  558. package/dist/src/backend/trpc/workspace.trpc.js +10 -29
  559. package/dist/src/backend/trpc/workspace.trpc.js.map +1 -1
  560. package/dist/src/backend/trpc/workspace.trpc.test.js +1 -1
  561. package/dist/src/backend/trpc/workspace.trpc.test.js.map +1 -1
  562. package/dist/src/shared/claude/index.d.ts +2 -2
  563. package/dist/src/shared/claude/index.d.ts.map +1 -1
  564. package/dist/src/shared/claude/index.js +2 -2
  565. package/dist/src/shared/claude/index.js.map +1 -1
  566. package/dist/src/shared/claude/protocol/agent.d.ts +28 -0
  567. package/dist/src/shared/claude/protocol/agent.d.ts.map +1 -0
  568. package/dist/src/shared/claude/protocol/agent.js +2 -0
  569. package/dist/src/shared/claude/protocol/agent.js.map +1 -0
  570. package/dist/src/shared/claude/protocol/constants.d.ts +2 -0
  571. package/dist/src/shared/claude/protocol/constants.d.ts.map +1 -0
  572. package/dist/src/shared/claude/protocol/constants.js +2 -0
  573. package/dist/src/shared/claude/protocol/constants.js.map +1 -0
  574. package/dist/src/shared/claude/protocol/content.d.ts +128 -0
  575. package/dist/src/shared/claude/protocol/content.d.ts.map +1 -0
  576. package/dist/src/shared/claude/protocol/content.js +2 -0
  577. package/dist/src/shared/claude/protocol/content.js.map +1 -0
  578. package/dist/src/shared/claude/protocol/guards.d.ts +36 -0
  579. package/dist/src/shared/claude/protocol/guards.d.ts.map +1 -0
  580. package/dist/src/shared/claude/protocol/guards.js +79 -0
  581. package/dist/src/shared/claude/protocol/guards.js.map +1 -0
  582. package/dist/src/shared/claude/protocol/index.d.ts +14 -0
  583. package/dist/src/shared/claude/protocol/index.d.ts.map +1 -0
  584. package/dist/src/shared/claude/protocol/index.js +13 -0
  585. package/dist/src/shared/claude/protocol/index.js.map +1 -0
  586. package/dist/src/shared/claude/protocol/interaction.d.ts +23 -0
  587. package/dist/src/shared/claude/protocol/interaction.d.ts.map +1 -0
  588. package/dist/src/shared/claude/protocol/interaction.js +2 -0
  589. package/dist/src/shared/claude/protocol/interaction.js.map +1 -0
  590. package/dist/src/shared/claude/protocol/messages.d.ts +51 -0
  591. package/dist/src/shared/claude/protocol/messages.d.ts.map +1 -0
  592. package/dist/src/shared/claude/protocol/messages.js +10 -0
  593. package/dist/src/shared/claude/protocol/messages.js.map +1 -0
  594. package/dist/src/shared/claude/protocol/models.d.ts +21 -0
  595. package/dist/src/shared/claude/protocol/models.d.ts.map +1 -0
  596. package/dist/src/shared/claude/protocol/models.js +16 -0
  597. package/dist/src/shared/claude/protocol/models.js.map +1 -0
  598. package/dist/src/shared/claude/protocol/queued.d.ts +20 -0
  599. package/dist/src/shared/claude/protocol/queued.d.ts.map +1 -0
  600. package/dist/src/shared/claude/protocol/queued.js +2 -0
  601. package/dist/src/shared/claude/protocol/queued.js.map +1 -0
  602. package/dist/src/shared/claude/protocol/result-dedup.d.ts +3 -0
  603. package/dist/src/shared/claude/protocol/result-dedup.d.ts.map +1 -0
  604. package/dist/src/shared/claude/protocol/result-dedup.js +87 -0
  605. package/dist/src/shared/claude/protocol/result-dedup.js.map +1 -0
  606. package/dist/src/shared/claude/protocol/session.d.ts +45 -0
  607. package/dist/src/shared/claude/protocol/session.d.ts.map +1 -0
  608. package/dist/src/shared/claude/protocol/session.js +2 -0
  609. package/dist/src/shared/claude/protocol/session.js.map +1 -0
  610. package/dist/src/shared/claude/protocol/state-machine.d.ts +40 -0
  611. package/dist/src/shared/claude/protocol/state-machine.d.ts.map +1 -0
  612. package/dist/src/shared/claude/protocol/state-machine.js +20 -0
  613. package/dist/src/shared/claude/protocol/state-machine.js.map +1 -0
  614. package/dist/src/shared/claude/protocol/websocket.d.ts +212 -0
  615. package/dist/src/shared/claude/protocol/websocket.d.ts.map +1 -0
  616. package/dist/src/shared/claude/protocol/websocket.js +38 -0
  617. package/dist/src/shared/claude/protocol/websocket.js.map +1 -0
  618. package/dist/src/shared/github-types.d.ts +1 -1
  619. package/dist/src/shared/github-types.d.ts.map +1 -1
  620. package/dist/src/shared/session-runtime.d.ts +13 -0
  621. package/dist/src/shared/session-runtime.d.ts.map +1 -1
  622. package/dist/src/shared/session-runtime.js.map +1 -1
  623. package/dist/src/shared/workspace-sidebar-status.d.ts.map +1 -1
  624. package/dist/src/shared/workspace-sidebar-status.js +9 -6
  625. package/dist/src/shared/workspace-sidebar-status.js.map +1 -1
  626. package/dist/tsconfig.backend.tsbuildinfo +1 -1
  627. package/package.json +8 -7
  628. package/prompts/workflows/bugfix.md +20 -3
  629. package/prompts/workflows/feature.md +17 -3
  630. package/dist/client/assets/channel-0Y-kzpxb.js +0 -1
  631. package/dist/client/assets/classDiagram-2ON5EDUG-BuPSxmb5.js +0 -1
  632. package/dist/client/assets/classDiagram-v2-WZHVMYZB-BuPSxmb5.js +0 -1
  633. package/dist/client/assets/clone-BcRl-M7n.js +0 -1
  634. package/dist/client/assets/stateDiagram-v2-4FDKWEC3-CsG3SZq0.js +0 -1
  635. package/dist/src/backend/routers/api/health.router.d.ts +0 -5
  636. package/dist/src/backend/routers/api/health.router.d.ts.map +0 -1
  637. package/dist/src/backend/routers/api/health.router.js.map +0 -1
  638. package/dist/src/backend/routers/api/health.router.test.d.ts.map +0 -1
  639. package/dist/src/backend/routers/api/health.router.test.js.map +0 -1
  640. package/dist/src/backend/routers/api/mcp.router.d.ts +0 -5
  641. package/dist/src/backend/routers/api/mcp.router.d.ts.map +0 -1
  642. package/dist/src/backend/routers/api/mcp.router.js +0 -41
  643. package/dist/src/backend/routers/api/mcp.router.js.map +0 -1
  644. package/dist/src/backend/routers/api/mcp.router.test.d.ts +0 -2
  645. package/dist/src/backend/routers/api/mcp.router.test.d.ts.map +0 -1
  646. package/dist/src/backend/routers/api/mcp.router.test.js +0 -196
  647. package/dist/src/backend/routers/api/mcp.router.test.js.map +0 -1
  648. package/dist/src/backend/routers/api/project.router.d.ts +0 -5
  649. package/dist/src/backend/routers/api/project.router.d.ts.map +0 -1
  650. package/dist/src/backend/routers/api/project.router.js +0 -280
  651. package/dist/src/backend/routers/api/project.router.js.map +0 -1
  652. package/dist/src/backend/routers/mcp/errors.d.ts +0 -3
  653. package/dist/src/backend/routers/mcp/errors.d.ts.map +0 -1
  654. package/dist/src/backend/routers/mcp/errors.js +0 -14
  655. package/dist/src/backend/routers/mcp/errors.js.map +0 -1
  656. package/dist/src/backend/routers/mcp/index.d.ts +0 -5
  657. package/dist/src/backend/routers/mcp/index.d.ts.map +0 -1
  658. package/dist/src/backend/routers/mcp/index.js +0 -16
  659. package/dist/src/backend/routers/mcp/index.js.map +0 -1
  660. package/dist/src/backend/routers/mcp/lock.mcp.d.ts +0 -2
  661. package/dist/src/backend/routers/mcp/lock.mcp.d.ts.map +0 -1
  662. package/dist/src/backend/routers/mcp/lock.mcp.js +0 -105
  663. package/dist/src/backend/routers/mcp/lock.mcp.js.map +0 -1
  664. package/dist/src/backend/routers/mcp/server.d.ts +0 -9
  665. package/dist/src/backend/routers/mcp/server.d.ts.map +0 -1
  666. package/dist/src/backend/routers/mcp/server.js +0 -136
  667. package/dist/src/backend/routers/mcp/server.js.map +0 -1
  668. package/dist/src/backend/routers/mcp/system.mcp.d.ts +0 -2
  669. package/dist/src/backend/routers/mcp/system.mcp.d.ts.map +0 -1
  670. package/dist/src/backend/routers/mcp/system.mcp.js +0 -34
  671. package/dist/src/backend/routers/mcp/system.mcp.js.map +0 -1
  672. package/dist/src/backend/routers/mcp/terminal.mcp.d.ts +0 -2
  673. package/dist/src/backend/routers/mcp/terminal.mcp.d.ts.map +0 -1
  674. package/dist/src/backend/routers/mcp/terminal.mcp.js +0 -113
  675. package/dist/src/backend/routers/mcp/terminal.mcp.js.map +0 -1
  676. package/dist/src/backend/routers/mcp/terminal.mcp.test.d.ts +0 -2
  677. package/dist/src/backend/routers/mcp/terminal.mcp.test.d.ts.map +0 -1
  678. package/dist/src/backend/routers/mcp/terminal.mcp.test.js +0 -218
  679. package/dist/src/backend/routers/mcp/terminal.mcp.test.js.map +0 -1
  680. package/dist/src/backend/routers/mcp/types.d.ts +0 -37
  681. package/dist/src/backend/routers/mcp/types.d.ts.map +0 -1
  682. package/dist/src/backend/routers/mcp/types.js +0 -13
  683. package/dist/src/backend/routers/mcp/types.js.map +0 -1
  684. package/dist/src/shared/claude/protocol.d.ts +0 -562
  685. package/dist/src/shared/claude/protocol.d.ts.map +0 -1
  686. package/dist/src/shared/claude/protocol.js +0 -217
  687. package/dist/src/shared/claude/protocol.js.map +0 -1
  688. /package/dist/src/backend/routers/{api/health.router.test.d.ts → health.router.test.d.ts} +0 -0
package/README.md CHANGED
@@ -3,17 +3,18 @@
3
3
  </p>
4
4
 
5
5
  <p align="center">
6
- <strong>Workspace-based coding environment for running multiple Claude Code sessions in parallel.</strong>
6
+ <strong>Run multiple Claude Code sessions in parallel with isolated git worktrees.</strong>
7
7
  </p>
8
8
 
9
9
  <p align="center">
10
- Each workspace gets its own isolated git worktree, enabling true parallel development.
10
+ Work on multiple features simultaneously, each in its own branch. Let AI agents progress PRs automatically.
11
11
  </p>
12
12
 
13
13
  <p align="center">
14
14
  <a href="https://www.npmjs.com/package/factory-factory"><img src="https://img.shields.io/npm/v/factory-factory" alt="npm"></a>
15
15
  <a href="https://github.com/purplefish-ai/factory-factory/actions/workflows/ci.yml"><img src="https://github.com/purplefish-ai/factory-factory/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
16
16
  <a href="https://github.com/purplefish-ai/factory-factory/blob/main/LICENSE"><img src="https://img.shields.io/github/license/purplefish-ai/factory-factory" alt="License"></a>
17
+ <a href="https://factoryfactory.ai"><img src="https://img.shields.io/badge/website-factoryfactory.ai-blue" alt="Website"></a>
17
18
  </p>
18
19
 
19
20
  <p align="center">
@@ -22,25 +23,55 @@
22
23
 
23
24
  ---
24
25
 
26
+ ## Table of Contents
27
+
28
+ - [Installation](#installation)
29
+ - [Running](#running)
30
+ - [Quick Start](#quick-start)
31
+ - [CLI Reference](#cli-reference)
32
+ - [Architecture](#architecture)
33
+ - [Feature Highlights](#feature-highlights)
34
+ - [Ratchet (Automatic PR Progression)](#-ratchet-automatic-pr-progression)
35
+ - [GitHub Integration](#-github-integration)
36
+ - [Kanban Board](#-kanban-board)
37
+ - [Quick Actions](#-quick-actions)
38
+ - [Development](#development)
39
+ - [Desktop App (Electron)](#desktop-app-electron)
40
+ - [Security Considerations](#security-considerations)
41
+ - [Troubleshooting](#troubleshooting)
42
+ - [Acknowledgements](#acknowledgements)
43
+
44
+ ---
45
+
25
46
  ## Installation
26
47
 
27
48
  **Prerequisites:**
28
49
  - Node.js 18+
29
- - pnpm
30
50
  - GitHub CLI (`gh`) - authenticated
31
51
  - Claude Code - authenticated via `claude login`
32
52
 
53
+ ### Option 1: Run with npx (Recommended)
54
+
55
+ No installation needed! Run Factory Factory directly:
56
+
57
+ ```bash
58
+ npx factory-factory@latest serve
59
+ ```
60
+
61
+ ### Option 2: Install globally
62
+
63
+ ```bash
64
+ npm install -g factory-factory
65
+ ff serve
66
+ ```
67
+
68
+ ### Option 3: Install from source (for development)
69
+
33
70
  ```bash
34
- # Clone and install
35
71
  git clone https://github.com/purplefish-ai/factory-factory.git
36
72
  cd factory-factory
37
73
  pnpm install
38
-
39
- # Option A: Install CLI globally from source
40
74
  pnpm link --global
41
-
42
- # Option B: Install from npm (when published)
43
- npm install -g factory-factory
44
75
  ```
45
76
 
46
77
  ## Running
@@ -48,11 +79,16 @@ npm install -g factory-factory
48
79
  ### Web App
49
80
 
50
81
  ```bash
51
- # Using pnpm (recommended for development)
52
- pnpm dev
82
+ # Using npx (no install required)
83
+ npx factory-factory@latest serve
53
84
 
54
- # Or using the CLI directly (if installed globally)
85
+ # Using installed CLI
86
+ ff serve
87
+
88
+ # Development mode with hot reload
55
89
  ff serve --dev
90
+ # or with pnpm (for local development)
91
+ pnpm dev
56
92
  ```
57
93
 
58
94
  The server automatically:
@@ -78,8 +114,11 @@ The Electron app stores data in the standard location for your OS:
78
114
 
79
115
  ## CLI Reference
80
116
 
81
- ```
82
- Usage: ff serve [options]
117
+ ```bash
118
+ # Start the server
119
+ ff serve [options]
120
+ # or
121
+ npx factory-factory@latest serve [options]
83
122
 
84
123
  Options:
85
124
  -p, --port <port> Frontend port (default: 3000)
@@ -98,29 +137,71 @@ ff db:migrate # Run database migrations
98
137
  ff db:studio # Open Prisma Studio
99
138
  ```
100
139
 
101
- ## Development Commands
140
+ **Examples:**
141
+ ```bash
142
+ # Quick start with npx
143
+ npx factory-factory@latest serve
144
+
145
+ # Development mode with custom port
146
+ ff serve --dev --port 8080
147
+
148
+ # Production mode without auto-opening browser
149
+ ff serve --no-open
150
+
151
+ # Custom database location
152
+ ff serve --database-path /path/to/data.db
153
+ ```
154
+
155
+ ## Quick Start
156
+
157
+ 1. **Authenticate required tools:**
158
+ ```bash
159
+ gh auth login # GitHub CLI
160
+ claude login # Claude Code
161
+ ```
162
+
163
+ 2. **Run Factory Factory:**
164
+ ```bash
165
+ npx factory-factory@latest serve
166
+ ```
167
+
168
+ 3. **Create your first workspace:**
169
+ - Open the web UI (automatically opens at http://localhost:3000)
170
+ - Configure your project with a local git repository
171
+ - Click "New Workspace" to create your first isolated worktree
172
+ - Start chatting with Claude Code!
173
+
174
+ ## Development
175
+
176
+ ### Development Commands
102
177
 
103
178
  ```bash
104
179
  # Server
105
- pnpm dev # Start dev server
106
- pnpm dev -- --no-open # Without browser auto-open
107
- pnpm dev -- --verbose # With detailed logging
108
- pnpm build # Build for production
109
- pnpm start # Start production server
180
+ pnpm dev # Start dev server with hot reload
181
+ pnpm dev -- --no-open # Without browser auto-open
182
+ pnpm dev -- --verbose # With detailed logging
183
+ pnpm build # Build for production
184
+ pnpm start # Start production server
110
185
 
111
186
  # Electron
112
- pnpm dev:electron # Start Electron with hot reload
113
- pnpm build:electron # Build distributable package
187
+ pnpm dev:electron # Start Electron with hot reload
188
+ pnpm build:electron # Build distributable package
114
189
 
115
190
  # Quality
116
- pnpm test # Run tests
117
- pnpm typecheck # TypeScript checking
118
- pnpm check:fix # Lint + format
191
+ pnpm test # Run tests
192
+ pnpm test:watch # Run tests in watch mode
193
+ pnpm test:coverage # Run tests with coverage
194
+ pnpm typecheck # TypeScript checking
195
+ pnpm check:fix # Lint + format with Biome
119
196
 
120
197
  # Database
121
- pnpm db:migrate # Run migrations
122
- pnpm db:studio # Prisma Studio
123
- pnpm db:generate # Regenerate Prisma client
198
+ pnpm db:migrate # Run migrations
199
+ pnpm db:studio # Open Prisma Studio
200
+ pnpm db:generate # Regenerate Prisma client
201
+
202
+ # Other
203
+ pnpm storybook # Start Storybook for UI components
204
+ pnpm deps:check # Check dependency rules
124
205
  ```
125
206
 
126
207
  ## Architecture
@@ -128,72 +209,76 @@ pnpm db:generate # Regenerate Prisma client
128
209
  ```
129
210
  Project (repository configuration)
130
211
  └── Workspace (isolated git worktree)
131
- ├── ClaudeSession (chat with Claude Code)
132
- └── TerminalSession (PTY terminal)
212
+ ├── Session (Claude Code chat session)
213
+ └── Terminal (PTY terminal)
133
214
  ```
134
215
 
135
- **Key features:**
136
- - **Isolated workspaces:** Each workspace gets its own git worktree and branch
137
- - **Real-time chat:** WebSocket-based streaming from Claude Code CLI
138
- - **Terminal access:** Full PTY terminals per workspace
139
- - **Session persistence:** Resume previous Claude sessions
216
+ **Key capabilities:**
217
+ - **Isolated workspaces:** Each workspace gets its own git worktree and branch for true parallel development
218
+ - **Real-time streaming:** WebSocket-based communication with Claude Code CLI
219
+ - **Persistent sessions:** Resume and review previous conversations
220
+ - **Terminal access:** Full PTY terminal per workspace
221
+ - **GitHub integration:** Import issues, track PR state, automatic PR progression via Ratchet
222
+ - **Kanban board:** Visual project management with GitHub issue intake
140
223
 
141
224
  ## Feature Highlights
142
225
 
143
- ### Ratchet (automatic PR progression)
226
+ ### 🔄 Ratchet (Automatic PR Progression)
144
227
 
145
- Ratchet is a background monitor that continuously moves open PR workspaces toward merge.
228
+ Ratchet automatically moves pull requests toward merge by monitoring and fixing issues.
146
229
 
147
- - Runs every minute against READY workspaces with PRs
148
- - Pulls fresh PR state from GitHub (`gh`) and classifies it into: `CI_RUNNING`, `CI_FAILED`, `REVIEW_PENDING`, `READY`, or `MERGED`
149
- - Triggers (or reuses) a dedicated **ratchet** Claude session to fix CI failures or address requested review changes (merge conflicts are resolved by agents syncing with main before each fix)
150
- - Prevents duplicate fixer sessions per workspace and can notify an active fixer if a priority state changes
151
- - Configurable in **Admin → Ratchet** with toggles for CI fixes, conflict fixes, review fixes, allowed reviewers, and auto-merge behavior
230
+ - **Automatic monitoring:** Checks READY workspaces with open PRs every minute
231
+ - **Smart PR classification:** Tracks PR state as `CI_RUNNING`, `CI_FAILED`, `REVIEW_PENDING`, `READY`, or `MERGED`
232
+ - **Auto-fix agents:** Creates Claude sessions to automatically fix CI failures and address review comments
233
+ - **Conflict resolution:** Agents sync with main branch before applying fixes
234
+ - **Configurable behavior:** Control CI fixes, review fixes, allowed reviewers, and auto-merge in Admin → Ratchet
152
235
 
153
- ### GitHub integration (issues + PR state)
236
+ ### 🔗 GitHub Integration
154
237
 
155
- Factory Factory integrates with GitHub through the local authenticated `gh` CLI.
238
+ Seamless integration with GitHub via the authenticated `gh` CLI.
156
239
 
157
- - Project-level GitHub linkage (`githubOwner` + `githubRepo`) enables issue/PR workflows
158
- - Workspace session start supports **Import from GitHub Issues** (picker with filtering/search)
159
- - Selected issues are converted into an initial prompt and auto-sent when the session is ready
160
- - Kanban’s **GitHub Issues** column pulls issues assigned to `@me`
161
- - One-click **Start** on an issue card creates a linked workspace (`githubIssueNumber`/`githubIssueUrl`) and opens it
240
+ - **Issue import:** Start workspaces directly from GitHub issues with one-click import
241
+ - **PR tracking:** Automatic PR state monitoring and status updates
242
+ - **Linked workspaces:** Issues are automatically linked to their workspaces (prevents duplicates)
243
+ - **Kanban intake:** GitHub Issues column shows issues assigned to `@me` for easy triage
162
244
 
163
- ### Kanban view (status + intake)
245
+ ### 📋 Kanban Board
164
246
 
165
- The board is a real-time operational view of work and intake.
247
+ Real-time visual project management with automatic column placement.
166
248
 
167
- - UI columns: **GitHub Issues**, **Working**, **Waiting**, **Done**
168
- - Workspace column derivation is automatic:
169
- - `WORKING`: provisioning/new/failed, or actively running
170
- - `WAITING`: idle workspaces that have had at least one session
171
- - `DONE`: merged PRs
172
- - READY workspaces with no prior sessions are hidden from the board
173
- - Issue cards are filtered to avoid duplicates once an issue is already linked to a workspace
174
- - Refresh syncs PR state and re-fetches board + issues
249
+ - **Smart columns:** GitHub Issues → Working → Waiting → Done
250
+ - **Auto-categorization:**
251
+ - **Working:** Provisioning, new, failed, or actively running sessions
252
+ - **Waiting:** Idle workspaces that have completed at least one session
253
+ - **Done:** Workspaces with merged PRs
254
+ - **Live updates:** Real-time workspace status and PR state changes
255
+ - **Mobile responsive:** Optimized layout for mobile devices
175
256
 
176
- ### Quick Actions
257
+ ### ⚡ Quick Actions
177
258
 
178
- Quick actions provide one-click prompts for common flows.
259
+ One-click prompts for common workflows, fully customizable via markdown.
179
260
 
180
- - Workspace header quick actions are loaded from `prompts/quick-actions/*.md` (frontmatter + prompt body)
181
- - Executing an agent quick action creates a follow-up session and auto-sends the predefined prompt
182
- - Current built-ins include flows like review, simplify, fetch/rebase, and branch rename
261
+ - **Agent-driven:** Each action creates a new Claude session with a predefined prompt
262
+ - **Extensible:** Add custom actions by creating markdown files in `prompts/quick-actions/`
263
+ - **Built-in actions:** Review code, simplify implementations, sync with main, rename branches, and more
183
264
 
184
265
  ## Security Considerations
185
266
 
186
- > **Warning:** Factory Factory runs Claude Code in **bypass permissions mode** by default. This means Claude can execute bash commands, write and modify files, and perform other operations without asking for confirmation.
267
+ > **⚠️ Important:** Factory Factory runs Claude Code with automatic command execution enabled by default. Claude can execute bash commands, write and modify files, and perform operations without manual confirmation.
187
268
 
188
- This design choice enables uninterrupted parallel workflows, but you should be aware that:
189
- - Claude has full access to your filesystem within each workspace
190
- - Commands are executed automatically without manual approval
191
- - The isolation is at the git worktree level, not the system level
269
+ This design enables seamless parallel workflows, but you should understand:
192
270
 
193
- **Recommendations:**
194
- - Only use Factory Factory with repositories you trust
195
- - Review Claude's changes before merging branches
196
- - Consider running in a containerized environment for sensitive projects
271
+ - **Workspace isolation:** Each workspace operates in its own git worktree with a dedicated branch
272
+ - **Filesystem access:** Claude has full access to files within each workspace
273
+ - **Automatic execution:** Commands run without approval prompts for uninterrupted operation
274
+ - **System-level access:** Isolation is at the git worktree level, not containerized
275
+
276
+ **Best practices:**
277
+ - ✅ Only use with repositories you trust
278
+ - ✅ Review changes carefully before merging PRs
279
+ - ✅ Keep your GitHub authentication secure
280
+ - ✅ Monitor Ratchet auto-fix behavior in Admin settings
281
+ - ✅ Consider running in a VM or container for untrusted code
197
282
 
198
283
  ## Brand
199
284
 
@@ -209,20 +294,67 @@ This design choice enables uninterrupted parallel workflows, but you should be a
209
294
 
210
295
  ## Troubleshooting
211
296
 
212
- **GitHub CLI:**
297
+ ### Authentication Issues
298
+
299
+ **GitHub CLI not authenticated:**
213
300
  ```bash
214
- gh auth status
215
- gh auth login
301
+ gh auth status # Check authentication status
302
+ gh auth login # Login to GitHub
216
303
  ```
217
304
 
218
- **Database issues:**
305
+ **Claude Code not authenticated:**
219
306
  ```bash
220
- pnpm db:migrate # Run migrations
221
- pnpm exec prisma migrate reset # Reset database (destroys data)
307
+ claude login # Authenticate Claude Code CLI
308
+ claude --version # Verify installation
222
309
  ```
223
310
 
224
- **Port conflicts:**
225
- The server automatically finds available ports. Use `--verbose` to see which ports are used.
311
+ ### Database Issues
312
+
313
+ **Migration failures or corrupt database:**
314
+ ```bash
315
+ # Run migrations manually
316
+ ff db:migrate
317
+
318
+ # Reset database (⚠️ destroys all data)
319
+ ff db:reset
320
+
321
+ # View database in Prisma Studio
322
+ ff db:studio
323
+ ```
324
+
325
+ ### Port Conflicts
326
+
327
+ The server automatically finds available ports if defaults are in use. Use `--verbose` to see which ports are selected:
328
+
329
+ ```bash
330
+ ff serve --verbose
331
+ ```
332
+
333
+ Or specify custom ports:
334
+ ```bash
335
+ ff serve --port 8080 --backend-port 8081
336
+ ```
337
+
338
+ ### Common Issues
339
+
340
+ **"Command not found: ff"**
341
+ - Install globally: `npm install -g factory-factory`
342
+ - Or use npx: `npx factory-factory@latest serve`
343
+
344
+ **Workspace stuck in "Provisioning" state:**
345
+ - Check logs in the Terminal tab
346
+ - Ensure git worktree creation succeeded
347
+ - Verify repository has no uncommitted changes
348
+
349
+ **Claude not responding:**
350
+ - Verify Claude Code is installed and authenticated
351
+ - Check that `claude` command works in your terminal
352
+ - Review session logs for error messages
353
+
354
+ **PR state not updating:**
355
+ - Ensure GitHub CLI is authenticated: `gh auth status`
356
+ - Manually refresh using the Refresh button in Kanban view
357
+ - Check that repository has correct GitHub remote configured
226
358
 
227
359
  ## Acknowledgements
228
360
 
@@ -1 +1 @@
1
- import{e as x,c as O,g as m,k as P,h as p,j as w,l as c,m as A,n as I,t as N,o as _}from"./_baseUniq-BN3di1uG.js";import{aU as g,aD as $,aV as E,aW as F,aX as M,aY as l,aZ as B,a_ as T,a$ as y,b0 as S}from"./index-BcV5Mqxt.js";var G=/\s/;function H(n){for(var r=n.length;r--&&G.test(n.charAt(r)););return r}var L=/^\s+/;function R(n){return n&&n.slice(0,H(n)+1).replace(L,"")}var o=NaN,W=/^[-+]0x[0-9a-f]+$/i,X=/^0b[01]+$/i,Y=/^0o[0-7]+$/i,q=parseInt;function z(n){if(typeof n=="number")return n;if(x(n))return o;if(g(n)){var r=typeof n.valueOf=="function"?n.valueOf():n;n=g(r)?r+"":r}if(typeof n!="string")return n===0?n:+n;n=R(n);var t=X.test(n);return t||Y.test(n)?q(n.slice(2),t?2:8):W.test(n)?o:+n}var v=1/0,C=17976931348623157e292;function D(n){if(!n)return n===0?n:0;if(n=z(n),n===v||n===-v){var r=n<0?-1:1;return r*C}return n===n?n:0}function K(n){var r=D(n),t=r%1;return r===r?t?r-t:r:0}function fn(n){var r=n==null?0:n.length;return r?O(n):[]}var b=Object.prototype,U=b.hasOwnProperty,dn=$(function(n,r){n=Object(n);var t=-1,i=r.length,a=i>2?r[2]:void 0;for(a&&E(r[0],r[1],a)&&(i=1);++t<i;)for(var f=r[t],e=F(f),s=-1,d=e.length;++s<d;){var u=e[s],h=n[u];(h===void 0||M(h,b[u])&&!U.call(n,u))&&(n[u]=f[u])}return n});function un(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}function Z(n){return function(r,t,i){var a=Object(r);if(!l(r)){var f=m(t);r=P(r),t=function(s){return f(a[s],s,a)}}var e=n(r,t,i);return e>-1?a[f?r[e]:e]:void 0}}var J=Math.max;function Q(n,r,t){var i=n==null?0:n.length;if(!i)return-1;var a=t==null?0:K(t);return a<0&&(a=J(i+a,0)),p(n,m(r),a)}var hn=Z(Q);function V(n,r){var t=-1,i=l(n)?Array(n.length):[];return w(n,function(a,f,e){i[++t]=r(a,f,e)}),i}function gn(n,r){var t=B(n)?c:V;return t(n,m(r))}var j=Object.prototype,k=j.hasOwnProperty;function nn(n,r){return n!=null&&k.call(n,r)}function mn(n,r){return n!=null&&A(n,r,nn)}function rn(n,r){return n<r}function tn(n,r,t){for(var i=-1,a=n.length;++i<a;){var f=n[i],e=r(f);if(e!=null&&(s===void 0?e===e&&!x(e):t(e,s)))var s=e,d=f}return d}function on(n){return n&&n.length?tn(n,T,rn):void 0}function an(n,r,t,i){if(!g(n))return n;r=I(r,n);for(var a=-1,f=r.length,e=f-1,s=n;s!=null&&++a<f;){var d=N(r[a]),u=t;if(d==="__proto__"||d==="constructor"||d==="prototype")return n;if(a!=e){var h=s[d];u=void 0,u===void 0&&(u=g(h)?h:y(r[a+1])?[]:{})}S(s,d,u),s=s[d]}return n}function vn(n,r,t){for(var i=-1,a=r.length,f={};++i<a;){var e=r[i],s=_(n,e);t(s,e)&&an(f,I(e,n),s)}return f}export{rn as a,tn as b,V as c,vn as d,on as e,fn as f,hn as g,mn as h,dn as i,K as j,un as l,gn as m,D as t};
1
+ import{e as x,c as O,g as m,k as P,h as p,j as w,l as c,m as A,n as I,t as N,o as _}from"./_baseUniq-5DitBjx0.js";import{aU as g,aD as $,aV as E,aW as F,aX as M,aY as l,aZ as B,a_ as T,a$ as y,b0 as S}from"./index-CRmN2i75.js";var G=/\s/;function H(n){for(var r=n.length;r--&&G.test(n.charAt(r)););return r}var L=/^\s+/;function R(n){return n&&n.slice(0,H(n)+1).replace(L,"")}var o=NaN,W=/^[-+]0x[0-9a-f]+$/i,X=/^0b[01]+$/i,Y=/^0o[0-7]+$/i,q=parseInt;function z(n){if(typeof n=="number")return n;if(x(n))return o;if(g(n)){var r=typeof n.valueOf=="function"?n.valueOf():n;n=g(r)?r+"":r}if(typeof n!="string")return n===0?n:+n;n=R(n);var t=X.test(n);return t||Y.test(n)?q(n.slice(2),t?2:8):W.test(n)?o:+n}var v=1/0,C=17976931348623157e292;function D(n){if(!n)return n===0?n:0;if(n=z(n),n===v||n===-v){var r=n<0?-1:1;return r*C}return n===n?n:0}function K(n){var r=D(n),t=r%1;return r===r?t?r-t:r:0}function fn(n){var r=n==null?0:n.length;return r?O(n):[]}var b=Object.prototype,U=b.hasOwnProperty,dn=$(function(n,r){n=Object(n);var t=-1,i=r.length,a=i>2?r[2]:void 0;for(a&&E(r[0],r[1],a)&&(i=1);++t<i;)for(var f=r[t],e=F(f),s=-1,d=e.length;++s<d;){var u=e[s],h=n[u];(h===void 0||M(h,b[u])&&!U.call(n,u))&&(n[u]=f[u])}return n});function un(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}function Z(n){return function(r,t,i){var a=Object(r);if(!l(r)){var f=m(t);r=P(r),t=function(s){return f(a[s],s,a)}}var e=n(r,t,i);return e>-1?a[f?r[e]:e]:void 0}}var J=Math.max;function Q(n,r,t){var i=n==null?0:n.length;if(!i)return-1;var a=t==null?0:K(t);return a<0&&(a=J(i+a,0)),p(n,m(r),a)}var hn=Z(Q);function V(n,r){var t=-1,i=l(n)?Array(n.length):[];return w(n,function(a,f,e){i[++t]=r(a,f,e)}),i}function gn(n,r){var t=B(n)?c:V;return t(n,m(r))}var j=Object.prototype,k=j.hasOwnProperty;function nn(n,r){return n!=null&&k.call(n,r)}function mn(n,r){return n!=null&&A(n,r,nn)}function rn(n,r){return n<r}function tn(n,r,t){for(var i=-1,a=n.length;++i<a;){var f=n[i],e=r(f);if(e!=null&&(s===void 0?e===e&&!x(e):t(e,s)))var s=e,d=f}return d}function on(n){return n&&n.length?tn(n,T,rn):void 0}function an(n,r,t,i){if(!g(n))return n;r=I(r,n);for(var a=-1,f=r.length,e=f-1,s=n;s!=null&&++a<f;){var d=N(r[a]),u=t;if(d==="__proto__"||d==="constructor"||d==="prototype")return n;if(a!=e){var h=s[d];u=void 0,u===void 0&&(u=g(h)?h:y(r[a+1])?[]:{})}S(s,d,u),s=s[d]}return n}function vn(n,r,t){for(var i=-1,a=r.length,f={};++i<a;){var e=r[i],s=_(n,e);t(s,e)&&an(f,I(e,n),s)}return f}export{rn as a,tn as b,V as c,vn as d,on as e,fn as f,hn as g,mn as h,dn as i,K as j,un as l,gn as m,D as t};
@@ -1 +1 @@
1
- import{bh as S,bi as Rn,aZ as T,bj as w,aY as sn,bk as xn,bl as mn,bm as Cn,bn as un,bo as x,aW as U,bp as Mn,bq as on,br as Fn,bs as E,bf as gn,bt as R,aU as ln,bu as Dn,bv as D,bw as Gn,bx as Un,by as _,b0 as Bn,bz as Nn,aX as Kn,bA as X,bB as jn,bC as Hn,a$ as qn,a_ as cn,bd as Yn,bD as C}from"./index-BcV5Mqxt.js";var Zn="[object Symbol]";function B(n){return typeof n=="symbol"||S(n)&&Rn(n)==Zn}function bn(n,r){for(var e=-1,t=n==null?0:n.length,f=Array(t);++e<t;)f[e]=r(n[e],e,n);return f}var J=w?w.prototype:void 0,Q=J?J.toString:void 0;function dn(n){if(typeof n=="string")return n;if(T(n))return bn(n,dn)+"";if(B(n))return Q?Q.call(n):"";var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function Xn(){}function pn(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}function Jn(n,r,e,t){for(var f=n.length,i=e+-1;++i<f;)if(r(n[i],i,n))return i;return-1}function Qn(n){return n!==n}function Wn(n,r,e){for(var t=e-1,f=n.length;++t<f;)if(n[t]===r)return t;return-1}function zn(n,r,e){return r===r?Wn(n,r,e):Jn(n,Qn,e)}function Vn(n,r){var e=n==null?0:n.length;return!!e&&zn(n,r,0)>-1}function $(n){return sn(n)?xn(n):mn(n)}var kn=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,nr=/^\w*$/;function N(n,r){if(T(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||B(n)?!0:nr.test(n)||!kn.test(n)||r!=null&&n in Object(r)}var rr=500;function er(n){var r=Cn(n,function(t){return e.size===rr&&e.clear(),t}),e=r.cache;return r}var tr=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ir=/\\(\\)?/g,fr=er(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(tr,function(e,t,f,i){r.push(f?i.replace(ir,"$1"):t||e)}),r});function ar(n){return n==null?"":dn(n)}function An(n,r){return T(n)?n:N(n,r)?[n]:fr(ar(n))}function m(n){if(typeof n=="string"||B(n))return n;var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function yn(n,r){r=An(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[m(r[e++])];return e&&e==t?n:void 0}function sr(n,r,e){var t=n==null?void 0:yn(n,r);return t===void 0?e:t}function K(n,r){for(var e=-1,t=r.length,f=n.length;++e<t;)n[f+e]=r[e];return n}var W=w?w.isConcatSpreadable:void 0;function ur(n){return T(n)||un(n)||!!(W&&n&&n[W])}function Ot(n,r,e,t,f){var i=-1,a=n.length;for(e||(e=ur),f||(f=[]);++i<a;){var s=n[i];e(s)?K(f,s):t||(f[f.length]=s)}return f}function or(n,r,e,t){var f=-1,i=n==null?0:n.length;for(t&&i&&(e=n[++f]);++f<i;)e=r(e,n[f],f,n);return e}function gr(n,r){return n&&x(r,$(r),n)}function lr(n,r){return n&&x(r,U(r),n)}function Tn(n,r){for(var e=-1,t=n==null?0:n.length,f=0,i=[];++e<t;){var a=n[e];r(a,e,n)&&(i[f++]=a)}return i}function hn(){return[]}var cr=Object.prototype,br=cr.propertyIsEnumerable,z=Object.getOwnPropertySymbols,j=z?function(n){return n==null?[]:(n=Object(n),Tn(z(n),function(r){return br.call(n,r)}))}:hn;function dr(n,r){return x(n,j(n),r)}var pr=Object.getOwnPropertySymbols,wn=pr?function(n){for(var r=[];n;)K(r,j(n)),n=Mn(n);return r}:hn;function Ar(n,r){return x(n,wn(n),r)}function On(n,r,e){var t=r(n);return T(n)?t:K(t,e(n))}function G(n){return On(n,$,j)}function yr(n){return On(n,U,wn)}var Tr=Object.prototype,hr=Tr.hasOwnProperty;function wr(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&hr.call(n,"index")&&(e.index=n.index,e.input=n.input),e}function Or(n,r){var e=r?on(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var $r=/\w*$/;function _r(n){var r=new n.constructor(n.source,$r.exec(n));return r.lastIndex=n.lastIndex,r}var V=w?w.prototype:void 0,k=V?V.valueOf:void 0;function Sr(n){return k?Object(k.call(n)):{}}var Er="[object Boolean]",Ir="[object Date]",Pr="[object Map]",vr="[object Number]",Lr="[object RegExp]",Rr="[object Set]",xr="[object String]",mr="[object Symbol]",Cr="[object ArrayBuffer]",Mr="[object DataView]",Fr="[object Float32Array]",Dr="[object Float64Array]",Gr="[object Int8Array]",Ur="[object Int16Array]",Br="[object Int32Array]",Nr="[object Uint8Array]",Kr="[object Uint8ClampedArray]",jr="[object Uint16Array]",Hr="[object Uint32Array]";function qr(n,r,e){var t=n.constructor;switch(r){case Cr:return on(n);case Er:case Ir:return new t(+n);case Mr:return Or(n,e);case Fr:case Dr:case Gr:case Ur:case Br:case Nr:case Kr:case jr:case Hr:return Fn(n,e);case Pr:return new t;case vr:case xr:return new t(n);case Lr:return _r(n);case Rr:return new t;case mr:return Sr(n)}}var Yr="[object Map]";function Zr(n){return S(n)&&E(n)==Yr}var nn=R&&R.isMap,Xr=nn?gn(nn):Zr,Jr="[object Set]";function Qr(n){return S(n)&&E(n)==Jr}var rn=R&&R.isSet,Wr=rn?gn(rn):Qr,zr=1,Vr=2,kr=4,$n="[object Arguments]",ne="[object Array]",re="[object Boolean]",ee="[object Date]",te="[object Error]",_n="[object Function]",ie="[object GeneratorFunction]",fe="[object Map]",ae="[object Number]",Sn="[object Object]",se="[object RegExp]",ue="[object Set]",oe="[object String]",ge="[object Symbol]",le="[object WeakMap]",ce="[object ArrayBuffer]",be="[object DataView]",de="[object Float32Array]",pe="[object Float64Array]",Ae="[object Int8Array]",ye="[object Int16Array]",Te="[object Int32Array]",he="[object Uint8Array]",we="[object Uint8ClampedArray]",Oe="[object Uint16Array]",$e="[object Uint32Array]",g={};g[$n]=g[ne]=g[ce]=g[be]=g[re]=g[ee]=g[de]=g[pe]=g[Ae]=g[ye]=g[Te]=g[fe]=g[ae]=g[Sn]=g[se]=g[ue]=g[oe]=g[ge]=g[he]=g[we]=g[Oe]=g[$e]=!0;g[te]=g[_n]=g[le]=!1;function M(n,r,e,t,f,i){var a,s=r&zr,u=r&Vr,b=r&kr;if(a!==void 0)return a;if(!ln(n))return n;var l=T(n);if(l){if(a=wr(n),!s)return Dn(n,a)}else{var o=E(n),c=o==_n||o==ie;if(D(n))return Gn(n,s);if(o==Sn||o==$n||c&&!f){if(a=u||c?{}:Un(n),!s)return u?Ar(n,lr(a,n)):dr(n,gr(a,n))}else{if(!g[o])return f?n:{};a=qr(n,o,s)}}i||(i=new _);var h=i.get(n);if(h)return h;i.set(n,a),Wr(n)?n.forEach(function(d){a.add(M(d,r,e,d,n,i))}):Xr(n)&&n.forEach(function(d,p){a.set(p,M(d,r,e,p,n,i))});var A=b?u?yr:G:u?U:$,y=l?void 0:A(n);return pn(y||n,function(d,p){y&&(p=d,d=n[p]),Bn(a,p,M(d,r,e,p,n,i))}),a}var _e="__lodash_hash_undefined__";function Se(n){return this.__data__.set(n,_e),this}function Ee(n){return this.__data__.has(n)}function I(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new Nn;++r<e;)this.add(n[r])}I.prototype.add=I.prototype.push=Se;I.prototype.has=Ee;function Ie(n,r){for(var e=-1,t=n==null?0:n.length;++e<t;)if(r(n[e],e,n))return!0;return!1}function En(n,r){return n.has(r)}var Pe=1,ve=2;function In(n,r,e,t,f,i){var a=e&Pe,s=n.length,u=r.length;if(s!=u&&!(a&&u>s))return!1;var b=i.get(n),l=i.get(r);if(b&&l)return b==r&&l==n;var o=-1,c=!0,h=e&ve?new I:void 0;for(i.set(n,r),i.set(r,n);++o<s;){var A=n[o],y=r[o];if(t)var d=a?t(y,A,o,r,n,i):t(A,y,o,n,r,i);if(d!==void 0){if(d)continue;c=!1;break}if(h){if(!Ie(r,function(p,O){if(!En(h,O)&&(A===p||f(A,p,e,t,i)))return h.push(O)})){c=!1;break}}else if(!(A===y||f(A,y,e,t,i))){c=!1;break}}return i.delete(n),i.delete(r),c}function Le(n){var r=-1,e=Array(n.size);return n.forEach(function(t,f){e[++r]=[f,t]}),e}function H(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var Re=1,xe=2,me="[object Boolean]",Ce="[object Date]",Me="[object Error]",Fe="[object Map]",De="[object Number]",Ge="[object RegExp]",Ue="[object Set]",Be="[object String]",Ne="[object Symbol]",Ke="[object ArrayBuffer]",je="[object DataView]",en=w?w.prototype:void 0,F=en?en.valueOf:void 0;function He(n,r,e,t,f,i,a){switch(e){case je:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case Ke:return!(n.byteLength!=r.byteLength||!i(new X(n),new X(r)));case me:case Ce:case De:return Kn(+n,+r);case Me:return n.name==r.name&&n.message==r.message;case Ge:case Be:return n==r+"";case Fe:var s=Le;case Ue:var u=t&Re;if(s||(s=H),n.size!=r.size&&!u)return!1;var b=a.get(n);if(b)return b==r;t|=xe,a.set(n,r);var l=In(s(n),s(r),t,f,i,a);return a.delete(n),l;case Ne:if(F)return F.call(n)==F.call(r)}return!1}var qe=1,Ye=Object.prototype,Ze=Ye.hasOwnProperty;function Xe(n,r,e,t,f,i){var a=e&qe,s=G(n),u=s.length,b=G(r),l=b.length;if(u!=l&&!a)return!1;for(var o=u;o--;){var c=s[o];if(!(a?c in r:Ze.call(r,c)))return!1}var h=i.get(n),A=i.get(r);if(h&&A)return h==r&&A==n;var y=!0;i.set(n,r),i.set(r,n);for(var d=a;++o<u;){c=s[o];var p=n[c],O=r[c];if(t)var Z=a?t(O,p,c,r,n,i):t(p,O,c,n,r,i);if(!(Z===void 0?p===O||f(p,O,e,t,i):Z)){y=!1;break}d||(d=c=="constructor")}if(y&&!d){var P=n.constructor,v=r.constructor;P!=v&&"constructor"in n&&"constructor"in r&&!(typeof P=="function"&&P instanceof P&&typeof v=="function"&&v instanceof v)&&(y=!1)}return i.delete(n),i.delete(r),y}var Je=1,tn="[object Arguments]",fn="[object Array]",L="[object Object]",Qe=Object.prototype,an=Qe.hasOwnProperty;function We(n,r,e,t,f,i){var a=T(n),s=T(r),u=a?fn:E(n),b=s?fn:E(r);u=u==tn?L:u,b=b==tn?L:b;var l=u==L,o=b==L,c=u==b;if(c&&D(n)){if(!D(r))return!1;a=!0,l=!1}if(c&&!l)return i||(i=new _),a||jn(n)?In(n,r,e,t,f,i):He(n,r,u,e,t,f,i);if(!(e&Je)){var h=l&&an.call(n,"__wrapped__"),A=o&&an.call(r,"__wrapped__");if(h||A){var y=h?n.value():n,d=A?r.value():r;return i||(i=new _),f(y,d,e,t,i)}}return c?(i||(i=new _),Xe(n,r,e,t,f,i)):!1}function q(n,r,e,t,f){return n===r?!0:n==null||r==null||!S(n)&&!S(r)?n!==n&&r!==r:We(n,r,e,t,q,f)}var ze=1,Ve=2;function ke(n,r,e,t){var f=e.length,i=f;if(n==null)return!i;for(n=Object(n);f--;){var a=e[f];if(a[2]?a[1]!==n[a[0]]:!(a[0]in n))return!1}for(;++f<i;){a=e[f];var s=a[0],u=n[s],b=a[1];if(a[2]){if(u===void 0&&!(s in n))return!1}else{var l=new _,o;if(!(o===void 0?q(b,u,ze|Ve,t,l):o))return!1}}return!0}function Pn(n){return n===n&&!ln(n)}function nt(n){for(var r=$(n),e=r.length;e--;){var t=r[e],f=n[t];r[e]=[t,f,Pn(f)]}return r}function vn(n,r){return function(e){return e==null?!1:e[n]===r&&(r!==void 0||n in Object(e))}}function rt(n){var r=nt(n);return r.length==1&&r[0][2]?vn(r[0][0],r[0][1]):function(e){return e===n||ke(e,n,r)}}function et(n,r){return n!=null&&r in Object(n)}function tt(n,r,e){r=An(r,n);for(var t=-1,f=r.length,i=!1;++t<f;){var a=m(r[t]);if(!(i=n!=null&&e(n,a)))break;n=n[a]}return i||++t!=f?i:(f=n==null?0:n.length,!!f&&Hn(f)&&qn(a,f)&&(T(n)||un(n)))}function it(n,r){return n!=null&&tt(n,r,et)}var ft=1,at=2;function st(n,r){return N(n)&&Pn(r)?vn(m(n),r):function(e){var t=sr(e,n);return t===void 0&&t===r?it(e,n):q(r,t,ft|at)}}function ut(n){return function(r){return r?.[n]}}function ot(n){return function(r){return yn(r,n)}}function gt(n){return N(n)?ut(m(n)):ot(n)}function Ln(n){return typeof n=="function"?n:n==null?cn:typeof n=="object"?T(n)?st(n[0],n[1]):rt(n):gt(n)}function lt(n,r){return n&&Yn(n,r,$)}function ct(n,r){return function(e,t){if(e==null)return e;if(!sn(e))return n(e,t);for(var f=e.length,i=-1,a=Object(e);++i<f&&t(a[i],i,a)!==!1;);return e}}var Y=ct(lt);function bt(n){return typeof n=="function"?n:cn}function $t(n,r){var e=T(n)?pn:Y;return e(n,bt(r))}function dt(n,r){var e=[];return Y(n,function(t,f,i){r(t,f,i)&&e.push(t)}),e}function _t(n,r){var e=T(n)?Tn:dt;return e(n,Ln(r))}function pt(n,r){return bn(r,function(e){return n[e]})}function St(n){return n==null?[]:pt(n,$(n))}function Et(n){return n===void 0}function At(n,r,e,t,f){return f(n,function(i,a,s){e=t?(t=!1,i):r(e,i,a,s)}),e}function It(n,r,e){var t=T(n)?or:At,f=arguments.length<3;return t(n,Ln(r),e,f,Y)}var yt=1/0,Tt=C&&1/H(new C([,-0]))[1]==yt?function(n){return new C(n)}:Xn,ht=200;function Pt(n,r,e){var t=-1,f=Vn,i=n.length,a=!0,s=[],u=s;if(i>=ht){var b=r?null:Tt(n);if(b)return H(b);a=!1,f=En,u=new I}else u=r?[]:s;n:for(;++t<i;){var l=n[t],o=r?r(l):l;if(l=l!==0?l:0,a&&o===o){for(var c=u.length;c--;)if(u[c]===o)continue n;r&&u.push(o),s.push(l)}else f(u,o,e)||(u!==s&&u.push(o),s.push(l))}return s}export{Tn as A,dt as B,Ie as C,Xn as D,I as S,Pt as a,M as b,Ot as c,$t as d,B as e,_t as f,Ln as g,Jn as h,Et as i,Y as j,$ as k,bn as l,tt as m,An as n,yn as o,bt as p,lt as q,It as r,it as s,m as t,ar as u,St as v,Vn as w,En as x,zn as y,yr as z};
1
+ import{bh as S,bi as Rn,aZ as T,bj as w,aY as sn,bk as xn,bl as mn,bm as Cn,bn as un,bo as x,aW as U,bp as Mn,bq as on,br as Fn,bs as E,bf as gn,bt as R,aU as ln,bu as Dn,bv as D,bw as Gn,bx as Un,by as _,b0 as Bn,bz as Nn,aX as Kn,bA as X,bB as jn,bC as Hn,a$ as qn,a_ as cn,bd as Yn,bD as C}from"./index-CRmN2i75.js";var Zn="[object Symbol]";function B(n){return typeof n=="symbol"||S(n)&&Rn(n)==Zn}function bn(n,r){for(var e=-1,t=n==null?0:n.length,f=Array(t);++e<t;)f[e]=r(n[e],e,n);return f}var J=w?w.prototype:void 0,Q=J?J.toString:void 0;function dn(n){if(typeof n=="string")return n;if(T(n))return bn(n,dn)+"";if(B(n))return Q?Q.call(n):"";var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function Xn(){}function pn(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}function Jn(n,r,e,t){for(var f=n.length,i=e+-1;++i<f;)if(r(n[i],i,n))return i;return-1}function Qn(n){return n!==n}function Wn(n,r,e){for(var t=e-1,f=n.length;++t<f;)if(n[t]===r)return t;return-1}function zn(n,r,e){return r===r?Wn(n,r,e):Jn(n,Qn,e)}function Vn(n,r){var e=n==null?0:n.length;return!!e&&zn(n,r,0)>-1}function $(n){return sn(n)?xn(n):mn(n)}var kn=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,nr=/^\w*$/;function N(n,r){if(T(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||B(n)?!0:nr.test(n)||!kn.test(n)||r!=null&&n in Object(r)}var rr=500;function er(n){var r=Cn(n,function(t){return e.size===rr&&e.clear(),t}),e=r.cache;return r}var tr=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ir=/\\(\\)?/g,fr=er(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(tr,function(e,t,f,i){r.push(f?i.replace(ir,"$1"):t||e)}),r});function ar(n){return n==null?"":dn(n)}function An(n,r){return T(n)?n:N(n,r)?[n]:fr(ar(n))}function m(n){if(typeof n=="string"||B(n))return n;var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function yn(n,r){r=An(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[m(r[e++])];return e&&e==t?n:void 0}function sr(n,r,e){var t=n==null?void 0:yn(n,r);return t===void 0?e:t}function K(n,r){for(var e=-1,t=r.length,f=n.length;++e<t;)n[f+e]=r[e];return n}var W=w?w.isConcatSpreadable:void 0;function ur(n){return T(n)||un(n)||!!(W&&n&&n[W])}function Ot(n,r,e,t,f){var i=-1,a=n.length;for(e||(e=ur),f||(f=[]);++i<a;){var s=n[i];e(s)?K(f,s):t||(f[f.length]=s)}return f}function or(n,r,e,t){var f=-1,i=n==null?0:n.length;for(t&&i&&(e=n[++f]);++f<i;)e=r(e,n[f],f,n);return e}function gr(n,r){return n&&x(r,$(r),n)}function lr(n,r){return n&&x(r,U(r),n)}function Tn(n,r){for(var e=-1,t=n==null?0:n.length,f=0,i=[];++e<t;){var a=n[e];r(a,e,n)&&(i[f++]=a)}return i}function hn(){return[]}var cr=Object.prototype,br=cr.propertyIsEnumerable,z=Object.getOwnPropertySymbols,j=z?function(n){return n==null?[]:(n=Object(n),Tn(z(n),function(r){return br.call(n,r)}))}:hn;function dr(n,r){return x(n,j(n),r)}var pr=Object.getOwnPropertySymbols,wn=pr?function(n){for(var r=[];n;)K(r,j(n)),n=Mn(n);return r}:hn;function Ar(n,r){return x(n,wn(n),r)}function On(n,r,e){var t=r(n);return T(n)?t:K(t,e(n))}function G(n){return On(n,$,j)}function yr(n){return On(n,U,wn)}var Tr=Object.prototype,hr=Tr.hasOwnProperty;function wr(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&hr.call(n,"index")&&(e.index=n.index,e.input=n.input),e}function Or(n,r){var e=r?on(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var $r=/\w*$/;function _r(n){var r=new n.constructor(n.source,$r.exec(n));return r.lastIndex=n.lastIndex,r}var V=w?w.prototype:void 0,k=V?V.valueOf:void 0;function Sr(n){return k?Object(k.call(n)):{}}var Er="[object Boolean]",Ir="[object Date]",Pr="[object Map]",vr="[object Number]",Lr="[object RegExp]",Rr="[object Set]",xr="[object String]",mr="[object Symbol]",Cr="[object ArrayBuffer]",Mr="[object DataView]",Fr="[object Float32Array]",Dr="[object Float64Array]",Gr="[object Int8Array]",Ur="[object Int16Array]",Br="[object Int32Array]",Nr="[object Uint8Array]",Kr="[object Uint8ClampedArray]",jr="[object Uint16Array]",Hr="[object Uint32Array]";function qr(n,r,e){var t=n.constructor;switch(r){case Cr:return on(n);case Er:case Ir:return new t(+n);case Mr:return Or(n,e);case Fr:case Dr:case Gr:case Ur:case Br:case Nr:case Kr:case jr:case Hr:return Fn(n,e);case Pr:return new t;case vr:case xr:return new t(n);case Lr:return _r(n);case Rr:return new t;case mr:return Sr(n)}}var Yr="[object Map]";function Zr(n){return S(n)&&E(n)==Yr}var nn=R&&R.isMap,Xr=nn?gn(nn):Zr,Jr="[object Set]";function Qr(n){return S(n)&&E(n)==Jr}var rn=R&&R.isSet,Wr=rn?gn(rn):Qr,zr=1,Vr=2,kr=4,$n="[object Arguments]",ne="[object Array]",re="[object Boolean]",ee="[object Date]",te="[object Error]",_n="[object Function]",ie="[object GeneratorFunction]",fe="[object Map]",ae="[object Number]",Sn="[object Object]",se="[object RegExp]",ue="[object Set]",oe="[object String]",ge="[object Symbol]",le="[object WeakMap]",ce="[object ArrayBuffer]",be="[object DataView]",de="[object Float32Array]",pe="[object Float64Array]",Ae="[object Int8Array]",ye="[object Int16Array]",Te="[object Int32Array]",he="[object Uint8Array]",we="[object Uint8ClampedArray]",Oe="[object Uint16Array]",$e="[object Uint32Array]",g={};g[$n]=g[ne]=g[ce]=g[be]=g[re]=g[ee]=g[de]=g[pe]=g[Ae]=g[ye]=g[Te]=g[fe]=g[ae]=g[Sn]=g[se]=g[ue]=g[oe]=g[ge]=g[he]=g[we]=g[Oe]=g[$e]=!0;g[te]=g[_n]=g[le]=!1;function M(n,r,e,t,f,i){var a,s=r&zr,u=r&Vr,b=r&kr;if(a!==void 0)return a;if(!ln(n))return n;var l=T(n);if(l){if(a=wr(n),!s)return Dn(n,a)}else{var o=E(n),c=o==_n||o==ie;if(D(n))return Gn(n,s);if(o==Sn||o==$n||c&&!f){if(a=u||c?{}:Un(n),!s)return u?Ar(n,lr(a,n)):dr(n,gr(a,n))}else{if(!g[o])return f?n:{};a=qr(n,o,s)}}i||(i=new _);var h=i.get(n);if(h)return h;i.set(n,a),Wr(n)?n.forEach(function(d){a.add(M(d,r,e,d,n,i))}):Xr(n)&&n.forEach(function(d,p){a.set(p,M(d,r,e,p,n,i))});var A=b?u?yr:G:u?U:$,y=l?void 0:A(n);return pn(y||n,function(d,p){y&&(p=d,d=n[p]),Bn(a,p,M(d,r,e,p,n,i))}),a}var _e="__lodash_hash_undefined__";function Se(n){return this.__data__.set(n,_e),this}function Ee(n){return this.__data__.has(n)}function I(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new Nn;++r<e;)this.add(n[r])}I.prototype.add=I.prototype.push=Se;I.prototype.has=Ee;function Ie(n,r){for(var e=-1,t=n==null?0:n.length;++e<t;)if(r(n[e],e,n))return!0;return!1}function En(n,r){return n.has(r)}var Pe=1,ve=2;function In(n,r,e,t,f,i){var a=e&Pe,s=n.length,u=r.length;if(s!=u&&!(a&&u>s))return!1;var b=i.get(n),l=i.get(r);if(b&&l)return b==r&&l==n;var o=-1,c=!0,h=e&ve?new I:void 0;for(i.set(n,r),i.set(r,n);++o<s;){var A=n[o],y=r[o];if(t)var d=a?t(y,A,o,r,n,i):t(A,y,o,n,r,i);if(d!==void 0){if(d)continue;c=!1;break}if(h){if(!Ie(r,function(p,O){if(!En(h,O)&&(A===p||f(A,p,e,t,i)))return h.push(O)})){c=!1;break}}else if(!(A===y||f(A,y,e,t,i))){c=!1;break}}return i.delete(n),i.delete(r),c}function Le(n){var r=-1,e=Array(n.size);return n.forEach(function(t,f){e[++r]=[f,t]}),e}function H(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var Re=1,xe=2,me="[object Boolean]",Ce="[object Date]",Me="[object Error]",Fe="[object Map]",De="[object Number]",Ge="[object RegExp]",Ue="[object Set]",Be="[object String]",Ne="[object Symbol]",Ke="[object ArrayBuffer]",je="[object DataView]",en=w?w.prototype:void 0,F=en?en.valueOf:void 0;function He(n,r,e,t,f,i,a){switch(e){case je:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case Ke:return!(n.byteLength!=r.byteLength||!i(new X(n),new X(r)));case me:case Ce:case De:return Kn(+n,+r);case Me:return n.name==r.name&&n.message==r.message;case Ge:case Be:return n==r+"";case Fe:var s=Le;case Ue:var u=t&Re;if(s||(s=H),n.size!=r.size&&!u)return!1;var b=a.get(n);if(b)return b==r;t|=xe,a.set(n,r);var l=In(s(n),s(r),t,f,i,a);return a.delete(n),l;case Ne:if(F)return F.call(n)==F.call(r)}return!1}var qe=1,Ye=Object.prototype,Ze=Ye.hasOwnProperty;function Xe(n,r,e,t,f,i){var a=e&qe,s=G(n),u=s.length,b=G(r),l=b.length;if(u!=l&&!a)return!1;for(var o=u;o--;){var c=s[o];if(!(a?c in r:Ze.call(r,c)))return!1}var h=i.get(n),A=i.get(r);if(h&&A)return h==r&&A==n;var y=!0;i.set(n,r),i.set(r,n);for(var d=a;++o<u;){c=s[o];var p=n[c],O=r[c];if(t)var Z=a?t(O,p,c,r,n,i):t(p,O,c,n,r,i);if(!(Z===void 0?p===O||f(p,O,e,t,i):Z)){y=!1;break}d||(d=c=="constructor")}if(y&&!d){var P=n.constructor,v=r.constructor;P!=v&&"constructor"in n&&"constructor"in r&&!(typeof P=="function"&&P instanceof P&&typeof v=="function"&&v instanceof v)&&(y=!1)}return i.delete(n),i.delete(r),y}var Je=1,tn="[object Arguments]",fn="[object Array]",L="[object Object]",Qe=Object.prototype,an=Qe.hasOwnProperty;function We(n,r,e,t,f,i){var a=T(n),s=T(r),u=a?fn:E(n),b=s?fn:E(r);u=u==tn?L:u,b=b==tn?L:b;var l=u==L,o=b==L,c=u==b;if(c&&D(n)){if(!D(r))return!1;a=!0,l=!1}if(c&&!l)return i||(i=new _),a||jn(n)?In(n,r,e,t,f,i):He(n,r,u,e,t,f,i);if(!(e&Je)){var h=l&&an.call(n,"__wrapped__"),A=o&&an.call(r,"__wrapped__");if(h||A){var y=h?n.value():n,d=A?r.value():r;return i||(i=new _),f(y,d,e,t,i)}}return c?(i||(i=new _),Xe(n,r,e,t,f,i)):!1}function q(n,r,e,t,f){return n===r?!0:n==null||r==null||!S(n)&&!S(r)?n!==n&&r!==r:We(n,r,e,t,q,f)}var ze=1,Ve=2;function ke(n,r,e,t){var f=e.length,i=f;if(n==null)return!i;for(n=Object(n);f--;){var a=e[f];if(a[2]?a[1]!==n[a[0]]:!(a[0]in n))return!1}for(;++f<i;){a=e[f];var s=a[0],u=n[s],b=a[1];if(a[2]){if(u===void 0&&!(s in n))return!1}else{var l=new _,o;if(!(o===void 0?q(b,u,ze|Ve,t,l):o))return!1}}return!0}function Pn(n){return n===n&&!ln(n)}function nt(n){for(var r=$(n),e=r.length;e--;){var t=r[e],f=n[t];r[e]=[t,f,Pn(f)]}return r}function vn(n,r){return function(e){return e==null?!1:e[n]===r&&(r!==void 0||n in Object(e))}}function rt(n){var r=nt(n);return r.length==1&&r[0][2]?vn(r[0][0],r[0][1]):function(e){return e===n||ke(e,n,r)}}function et(n,r){return n!=null&&r in Object(n)}function tt(n,r,e){r=An(r,n);for(var t=-1,f=r.length,i=!1;++t<f;){var a=m(r[t]);if(!(i=n!=null&&e(n,a)))break;n=n[a]}return i||++t!=f?i:(f=n==null?0:n.length,!!f&&Hn(f)&&qn(a,f)&&(T(n)||un(n)))}function it(n,r){return n!=null&&tt(n,r,et)}var ft=1,at=2;function st(n,r){return N(n)&&Pn(r)?vn(m(n),r):function(e){var t=sr(e,n);return t===void 0&&t===r?it(e,n):q(r,t,ft|at)}}function ut(n){return function(r){return r?.[n]}}function ot(n){return function(r){return yn(r,n)}}function gt(n){return N(n)?ut(m(n)):ot(n)}function Ln(n){return typeof n=="function"?n:n==null?cn:typeof n=="object"?T(n)?st(n[0],n[1]):rt(n):gt(n)}function lt(n,r){return n&&Yn(n,r,$)}function ct(n,r){return function(e,t){if(e==null)return e;if(!sn(e))return n(e,t);for(var f=e.length,i=-1,a=Object(e);++i<f&&t(a[i],i,a)!==!1;);return e}}var Y=ct(lt);function bt(n){return typeof n=="function"?n:cn}function $t(n,r){var e=T(n)?pn:Y;return e(n,bt(r))}function dt(n,r){var e=[];return Y(n,function(t,f,i){r(t,f,i)&&e.push(t)}),e}function _t(n,r){var e=T(n)?Tn:dt;return e(n,Ln(r))}function pt(n,r){return bn(r,function(e){return n[e]})}function St(n){return n==null?[]:pt(n,$(n))}function Et(n){return n===void 0}function At(n,r,e,t,f){return f(n,function(i,a,s){e=t?(t=!1,i):r(e,i,a,s)}),e}function It(n,r,e){var t=T(n)?or:At,f=arguments.length<3;return t(n,Ln(r),e,f,Y)}var yt=1/0,Tt=C&&1/H(new C([,-0]))[1]==yt?function(n){return new C(n)}:Xn,ht=200;function Pt(n,r,e){var t=-1,f=Vn,i=n.length,a=!0,s=[],u=s;if(i>=ht){var b=r?null:Tt(n);if(b)return H(b);a=!1,f=En,u=new I}else u=r?[]:s;n:for(;++t<i;){var l=n[t],o=r?r(l):l;if(l=l!==0?l:0,a&&o===o){for(var c=u.length;c--;)if(u[c]===o)continue n;r&&u.push(o),s.push(l)}else f(u,o,e)||(u!==s&&u.push(o),s.push(l))}return s}export{Tn as A,dt as B,Ie as C,Xn as D,I as S,Pt as a,M as b,Ot as c,$t as d,B as e,_t as f,Ln as g,Jn as h,Et as i,Y as j,$ as k,bn as l,tt as m,An as n,yn as o,bt as p,lt as q,It as r,it as s,m as t,ar as u,St as v,Vn as w,En as x,zn as y,yr as z};
@@ -1 +1 @@
1
- import{a0 as ln,a1 as an,a2 as y,a3 as tn,a4 as H,a5 as q,a6 as _,a7 as un,a8 as rn,a9 as L,aa as o,ab as B,ac as sn,ad as on,ae as fn}from"./index-BcV5Mqxt.js";function cn(l){return l.innerRadius}function yn(l){return l.outerRadius}function gn(l){return l.startAngle}function dn(l){return l.endAngle}function mn(l){return l&&l.padAngle}function pn(l,h,I,D,v,A,C,a){var O=I-l,i=D-h,n=C-v,d=a-A,u=d*O-n*i;if(!(u*u<y))return u=(n*(h-A)-d*(l-v))/u,[l+u*O,h+u*i]}function W(l,h,I,D,v,A,C){var a=l-I,O=h-D,i=(C?A:-A)/L(a*a+O*O),n=i*O,d=-i*a,u=l+n,s=h+d,f=I+n,c=D+d,F=(u+f)/2,t=(s+c)/2,m=f-u,g=c-s,R=m*m+g*g,T=v-A,P=u*c-f*s,S=(g<0?-1:1)*L(fn(0,T*T*R-P*P)),j=(P*g-m*S)/R,z=(-P*m-g*S)/R,w=(P*g+m*S)/R,p=(-P*m+g*S)/R,x=j-F,e=z-t,r=w-F,G=p-t;return x*x+e*e>r*r+G*G&&(j=w,z=p),{cx:j,cy:z,x01:-n,y01:-d,x11:j*(v/T-1),y11:z*(v/T-1)}}function hn(){var l=cn,h=yn,I=B(0),D=null,v=gn,A=dn,C=mn,a=null,O=ln(i);function i(){var n,d,u=+l.apply(this,arguments),s=+h.apply(this,arguments),f=v.apply(this,arguments)-an,c=A.apply(this,arguments)-an,F=un(c-f),t=c>f;if(a||(a=n=O()),s<u&&(d=s,s=u,u=d),!(s>y))a.moveTo(0,0);else if(F>tn-y)a.moveTo(s*H(f),s*q(f)),a.arc(0,0,s,f,c,!t),u>y&&(a.moveTo(u*H(c),u*q(c)),a.arc(0,0,u,c,f,t));else{var m=f,g=c,R=f,T=c,P=F,S=F,j=C.apply(this,arguments)/2,z=j>y&&(D?+D.apply(this,arguments):L(u*u+s*s)),w=_(un(s-u)/2,+I.apply(this,arguments)),p=w,x=w,e,r;if(z>y){var G=sn(z/u*q(j)),M=sn(z/s*q(j));(P-=G*2)>y?(G*=t?1:-1,R+=G,T-=G):(P=0,R=T=(f+c)/2),(S-=M*2)>y?(M*=t?1:-1,m+=M,g-=M):(S=0,m=g=(f+c)/2)}var J=s*H(m),K=s*q(m),N=u*H(T),Q=u*q(T);if(w>y){var U=s*H(g),V=s*q(g),X=u*H(R),Y=u*q(R),E;if(F<rn)if(E=pn(J,K,X,Y,U,V,N,Q)){var Z=J-E[0],$=K-E[1],b=U-E[0],k=V-E[1],nn=1/q(on((Z*b+$*k)/(L(Z*Z+$*$)*L(b*b+k*k)))/2),en=L(E[0]*E[0]+E[1]*E[1]);p=_(w,(u-en)/(nn-1)),x=_(w,(s-en)/(nn+1))}else p=x=0}S>y?x>y?(e=W(X,Y,J,K,s,x,t),r=W(U,V,N,Q,s,x,t),a.moveTo(e.cx+e.x01,e.cy+e.y01),x<w?a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,s,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),!t),a.arc(r.cx,r.cy,x,o(r.y11,r.x11),o(r.y01,r.x01),!t))):(a.moveTo(J,K),a.arc(0,0,s,m,g,!t)):a.moveTo(J,K),!(u>y)||!(P>y)?a.lineTo(N,Q):p>y?(e=W(N,Q,U,V,u,-p,t),r=W(J,K,X,Y,u,-p,t),a.lineTo(e.cx+e.x01,e.cy+e.y01),p<w?a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,u,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),t),a.arc(r.cx,r.cy,p,o(r.y11,r.x11),o(r.y01,r.x01),!t))):a.arc(0,0,u,T,R,t)}if(a.closePath(),n)return a=null,n+""||null}return i.centroid=function(){var n=(+l.apply(this,arguments)+ +h.apply(this,arguments))/2,d=(+v.apply(this,arguments)+ +A.apply(this,arguments))/2-rn/2;return[H(d)*n,q(d)*n]},i.innerRadius=function(n){return arguments.length?(l=typeof n=="function"?n:B(+n),i):l},i.outerRadius=function(n){return arguments.length?(h=typeof n=="function"?n:B(+n),i):h},i.cornerRadius=function(n){return arguments.length?(I=typeof n=="function"?n:B(+n),i):I},i.padRadius=function(n){return arguments.length?(D=n==null?null:typeof n=="function"?n:B(+n),i):D},i.startAngle=function(n){return arguments.length?(v=typeof n=="function"?n:B(+n),i):v},i.endAngle=function(n){return arguments.length?(A=typeof n=="function"?n:B(+n),i):A},i.padAngle=function(n){return arguments.length?(C=typeof n=="function"?n:B(+n),i):C},i.context=function(n){return arguments.length?(a=n??null,i):a},i}export{hn as d};
1
+ import{a0 as ln,a1 as an,a2 as y,a3 as tn,a4 as H,a5 as q,a6 as _,a7 as un,a8 as rn,a9 as L,aa as o,ab as B,ac as sn,ad as on,ae as fn}from"./index-CRmN2i75.js";function cn(l){return l.innerRadius}function yn(l){return l.outerRadius}function gn(l){return l.startAngle}function dn(l){return l.endAngle}function mn(l){return l&&l.padAngle}function pn(l,h,I,D,v,A,C,a){var O=I-l,i=D-h,n=C-v,d=a-A,u=d*O-n*i;if(!(u*u<y))return u=(n*(h-A)-d*(l-v))/u,[l+u*O,h+u*i]}function W(l,h,I,D,v,A,C){var a=l-I,O=h-D,i=(C?A:-A)/L(a*a+O*O),n=i*O,d=-i*a,u=l+n,s=h+d,f=I+n,c=D+d,F=(u+f)/2,t=(s+c)/2,m=f-u,g=c-s,R=m*m+g*g,T=v-A,P=u*c-f*s,S=(g<0?-1:1)*L(fn(0,T*T*R-P*P)),j=(P*g-m*S)/R,z=(-P*m-g*S)/R,w=(P*g+m*S)/R,p=(-P*m+g*S)/R,x=j-F,e=z-t,r=w-F,G=p-t;return x*x+e*e>r*r+G*G&&(j=w,z=p),{cx:j,cy:z,x01:-n,y01:-d,x11:j*(v/T-1),y11:z*(v/T-1)}}function hn(){var l=cn,h=yn,I=B(0),D=null,v=gn,A=dn,C=mn,a=null,O=ln(i);function i(){var n,d,u=+l.apply(this,arguments),s=+h.apply(this,arguments),f=v.apply(this,arguments)-an,c=A.apply(this,arguments)-an,F=un(c-f),t=c>f;if(a||(a=n=O()),s<u&&(d=s,s=u,u=d),!(s>y))a.moveTo(0,0);else if(F>tn-y)a.moveTo(s*H(f),s*q(f)),a.arc(0,0,s,f,c,!t),u>y&&(a.moveTo(u*H(c),u*q(c)),a.arc(0,0,u,c,f,t));else{var m=f,g=c,R=f,T=c,P=F,S=F,j=C.apply(this,arguments)/2,z=j>y&&(D?+D.apply(this,arguments):L(u*u+s*s)),w=_(un(s-u)/2,+I.apply(this,arguments)),p=w,x=w,e,r;if(z>y){var G=sn(z/u*q(j)),M=sn(z/s*q(j));(P-=G*2)>y?(G*=t?1:-1,R+=G,T-=G):(P=0,R=T=(f+c)/2),(S-=M*2)>y?(M*=t?1:-1,m+=M,g-=M):(S=0,m=g=(f+c)/2)}var J=s*H(m),K=s*q(m),N=u*H(T),Q=u*q(T);if(w>y){var U=s*H(g),V=s*q(g),X=u*H(R),Y=u*q(R),E;if(F<rn)if(E=pn(J,K,X,Y,U,V,N,Q)){var Z=J-E[0],$=K-E[1],b=U-E[0],k=V-E[1],nn=1/q(on((Z*b+$*k)/(L(Z*Z+$*$)*L(b*b+k*k)))/2),en=L(E[0]*E[0]+E[1]*E[1]);p=_(w,(u-en)/(nn-1)),x=_(w,(s-en)/(nn+1))}else p=x=0}S>y?x>y?(e=W(X,Y,J,K,s,x,t),r=W(U,V,N,Q,s,x,t),a.moveTo(e.cx+e.x01,e.cy+e.y01),x<w?a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,s,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),!t),a.arc(r.cx,r.cy,x,o(r.y11,r.x11),o(r.y01,r.x01),!t))):(a.moveTo(J,K),a.arc(0,0,s,m,g,!t)):a.moveTo(J,K),!(u>y)||!(P>y)?a.lineTo(N,Q):p>y?(e=W(N,Q,U,V,u,-p,t),r=W(J,K,X,Y,u,-p,t),a.lineTo(e.cx+e.x01,e.cy+e.y01),p<w?a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,u,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),t),a.arc(r.cx,r.cy,p,o(r.y11,r.x11),o(r.y01,r.x01),!t))):a.arc(0,0,u,T,R,t)}if(a.closePath(),n)return a=null,n+""||null}return i.centroid=function(){var n=(+l.apply(this,arguments)+ +h.apply(this,arguments))/2,d=(+v.apply(this,arguments)+ +A.apply(this,arguments))/2-rn/2;return[H(d)*n,q(d)*n]},i.innerRadius=function(n){return arguments.length?(l=typeof n=="function"?n:B(+n),i):l},i.outerRadius=function(n){return arguments.length?(h=typeof n=="function"?n:B(+n),i):h},i.cornerRadius=function(n){return arguments.length?(I=typeof n=="function"?n:B(+n),i):I},i.padRadius=function(n){return arguments.length?(D=n==null?null:typeof n=="function"?n:B(+n),i):D},i.startAngle=function(n){return arguments.length?(v=typeof n=="function"?n:B(+n),i):v},i.endAngle=function(n){return arguments.length?(A=typeof n=="function"?n:B(+n),i):A},i.padAngle=function(n){return arguments.length?(C=typeof n=="function"?n:B(+n),i):C},i.context=function(n){return arguments.length?(a=n??null,i):a},i}export{hn as d};