factory-factory 0.4.7 → 0.4.9

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 (1271) hide show
  1. package/README.md +72 -23
  2. package/dist/client/assets/Archive.es-moH8rDRO.js +1 -0
  3. package/dist/client/assets/ArrowLeft.es-CVl_zVBC.js +1 -0
  4. package/dist/client/assets/abnfDiagram-VCTEODGH-DzuBdUSN.js +1 -0
  5. package/dist/client/assets/admin-page-CAsPxzW9.js +1 -0
  6. package/dist/client/assets/alert-2CAe526X.js +1 -0
  7. package/dist/client/assets/alert-dialog-8vhMuR-k.js +1 -0
  8. package/dist/client/assets/arc-Pry-7G1_.js +1 -0
  9. package/dist/client/assets/architecture-7GRP2DOG-Bcwjoi8B.js +1 -0
  10. package/dist/client/assets/architectureDiagram-5GKGNRK7-CeuoQvaW.js +36 -0
  11. package/dist/client/assets/array-BifhSqXX.js +1 -0
  12. package/dist/client/assets/badge-CoDH1rER.js +1 -0
  13. package/dist/client/assets/blockDiagram-I7D4REHJ-BY92gQgN.js +129 -0
  14. package/dist/client/assets/c4Diagram-7LVT6UL2-D5TNBYXh.js +38 -0
  15. package/dist/client/assets/channel-NEbtzeVB.js +1 -0
  16. package/dist/client/assets/chunk-2Q5K7J3B-C1jixKkw.js +1 -0
  17. package/dist/client/assets/chunk-4HAMMTFA-DBbX-wzu.js +62 -0
  18. package/dist/client/assets/{chunk-5VM5RSS4-D2hwZzSy.js → chunk-5VM5RSS4-ZNzvKenW.js} +2 -2
  19. package/dist/client/assets/chunk-75Z2AOVW-962-yyBD.js +2 -0
  20. package/dist/client/assets/chunk-DU6HZSFF-CHHMX1CR.js +127 -0
  21. package/dist/client/assets/chunk-F27PBJKO-BOnYAGjZ.js +1 -0
  22. package/dist/client/assets/chunk-FOHPRMQF-CoA4358r.js +161 -0
  23. package/dist/client/assets/chunk-GMAD6QVW-DQF31PdR.js +72 -0
  24. package/dist/client/assets/chunk-GVQU2GXP-rruJzn36.js +1 -0
  25. package/dist/client/assets/chunk-IMKFNOWR-GIKO0MCA.js +231 -0
  26. package/dist/client/assets/chunk-JWPE2WC7-DVXcaiue.js +1 -0
  27. package/dist/client/assets/chunk-L3NEJ4N5-USlKRxmU.js +1 -0
  28. package/dist/client/assets/chunk-OSK3NFVY-DYQeYWNP.js +10 -0
  29. package/dist/client/assets/chunk-P2QGCYS3-SDkZ9hQX.js +1 -0
  30. package/dist/client/assets/chunk-POPQ4Y6H-bdnFdIMc.js +1 -0
  31. package/dist/client/assets/chunk-PWAF6VOD-DuKrEmQw.js +1 -0
  32. package/dist/client/assets/chunk-SHT3W25Y-BnWDS29f.js +168 -0
  33. package/dist/client/assets/chunk-SVP7TREG-BqyZjR36.js +88 -0
  34. package/dist/client/assets/chunk-TICWLB2K-ZCb3dlre.js +206 -0
  35. package/dist/client/assets/chunk-XXDRQBXY-DqAYeljN.js +1 -0
  36. package/dist/client/assets/chunk-Y2CYZVJY-DsF7k-Jl.js +1 -0
  37. package/dist/client/assets/ci-status-cs76P3se.js +1 -0
  38. package/dist/client/assets/classDiagram-ZZMXUADV-zE_E4kYq.js +1 -0
  39. package/dist/client/assets/classDiagram-v2-VYDZK3BY-zE_E4kYq.js +1 -0
  40. package/dist/client/assets/components-CoS_rGt2.js +1 -0
  41. package/dist/client/assets/confirm-dialog-CfvO9f42.js +1 -0
  42. package/dist/client/assets/core-DW3tuXQ3.js +1 -0
  43. package/dist/client/assets/cose-bilkent-JH36ORCC-BbJNf1Rj.js +1 -0
  44. package/dist/client/assets/cynefin-OW5HDTMX-Ci2WypGa.js +1 -0
  45. package/dist/client/assets/cynefinDiagram-5FMLGOSQ-CGea7wa2.js +62 -0
  46. package/dist/client/assets/cytoscape.esm-B-1iW2ft.js +321 -0
  47. package/dist/client/assets/dagre-C-rnJpZF.js +1 -0
  48. package/dist/client/assets/dagre-GXQ25YYZ-CJcHs09G.js +4 -0
  49. package/dist/client/assets/data-import-button-cvKmYZJe.js +6 -0
  50. package/dist/client/assets/defaultLocale-BFoDCU3G.js +1 -0
  51. package/dist/client/assets/detail-C3U9ED1b.js +1 -0
  52. package/dist/client/assets/diagram-S7CK7UJ4-Drsfjeco.js +30 -0
  53. package/dist/client/assets/diagram-UQ7AKVKN-0SrBP_3E.js +41 -0
  54. package/dist/client/assets/diagram-VSXAHHWV-DB2rqHgv.js +3 -0
  55. package/dist/client/assets/diagram-VX7I27RA-B2y3VQbR.js +24 -0
  56. package/dist/client/assets/diagram-Z3DM3KII-D63_zfy5.js +24 -0
  57. package/dist/client/assets/diff-highlight.worker-FEJq0yPv.js +60 -0
  58. package/dist/client/assets/dist-BO6Gz-vk.js +1 -0
  59. package/dist/client/assets/dist-DGw3MClt.js +41 -0
  60. package/dist/client/assets/dist-v5Q1xZ2K.js +1 -0
  61. package/dist/client/assets/ebnfDiagram-PWID7BFC-8gEK-ifx.js +1 -0
  62. package/dist/client/assets/en-US-C-x19js7.js +1 -0
  63. package/dist/client/assets/erDiagram-RLTQ6QDP-B2CcHHg7.js +99 -0
  64. package/dist/client/assets/eventmodeling-NTZA5JFV-DqUwwD9w.js +1 -0
  65. package/dist/client/assets/factory-config-scripts-C2BfO5od.js +1 -0
  66. package/dist/client/assets/flowDiagram-HODETNUW-DCZkaOsj.js +1 -0
  67. package/dist/client/assets/formatters-D_bnXRun.js +1 -0
  68. package/dist/client/assets/ganttDiagram-EL5Y4UJY-B_Y3HJTL.js +292 -0
  69. package/dist/client/assets/gitGraph-4MIJSDKK-DBd1UxTm.js +1 -0
  70. package/dist/client/assets/gitGraphDiagram-WWUBYQGX-CrdKibnu.js +106 -0
  71. package/dist/client/assets/graphlib-DS17s2tU.js +1 -0
  72. package/dist/client/assets/home-DRzNpm0E.js +1 -0
  73. package/dist/client/assets/hooks-3rxtNHRh.js +1 -0
  74. package/dist/client/assets/index-BJo4hZ8z.js +10 -0
  75. package/dist/client/assets/index-CpFffknJ.css +2 -0
  76. package/dist/client/assets/info-A6RAGUB7-CCMRmQ2H.js +1 -0
  77. package/dist/client/assets/infoDiagram-27XIBGKW-DO-IhKUM.js +2 -0
  78. package/dist/client/assets/init-C-OQMol4.js +1 -0
  79. package/dist/client/assets/ishikawaDiagram-5VMMS53U-KejlLQ1k.js +70 -0
  80. package/dist/client/assets/journeyDiagram-3NMN7TZE-DemWKqD6.js +139 -0
  81. package/dist/client/assets/jsx-runtime-BNakU3Ej.js +1 -0
  82. package/dist/client/assets/kanban-definition-UXKFOSKX-uRffHAE9.js +89 -0
  83. package/dist/client/assets/katex-ZlcWpGUi.js +257 -0
  84. package/dist/client/assets/label-ANA2Lfpk.js +1 -0
  85. package/dist/client/assets/lib-CHy_7XQu.js +1 -0
  86. package/dist/client/assets/line-CfCBYCoS.js +1 -0
  87. package/dist/client/assets/linear-SzVmGSw4.js +1 -0
  88. package/dist/client/assets/list-C3P6JbyU.js +30 -0
  89. package/dist/client/assets/list-oJCufmEX.js +1 -0
  90. package/dist/client/assets/logs-zb2la033.js +1 -0
  91. package/dist/client/assets/mermaid-diagram-kbWN558y.js +44 -0
  92. package/dist/client/assets/mermaid-parser.core-CpkwJ-8U.js +7 -0
  93. package/dist/client/assets/mindmap-definition-YA3MSWOX-DYYi_9Si.js +96 -0
  94. package/dist/client/assets/mobile-baseline-BVS3GXLz.js +10 -0
  95. package/dist/client/assets/new-BiEmR60A.js +1 -0
  96. package/dist/client/assets/new-CcQm3ES8.js +1 -0
  97. package/dist/client/assets/ordinal-BDEzSJ7C.js +1 -0
  98. package/dist/client/assets/packet-AYTQ26CC-kvNXQn-j.js +1 -0
  99. package/dist/client/assets/page-header-CpSh-j1O.js +1 -0
  100. package/dist/client/assets/path-fybaL0A-.js +1 -0
  101. package/dist/client/assets/pegDiagram-XKGWAZYB-CMAngYAK.js +1 -0
  102. package/dist/client/assets/pie-WAS4IAKB-DFNGAljQ.js +1 -0
  103. package/dist/client/assets/pieDiagram-E7YTZNPT-XGRy7b5E.js +39 -0
  104. package/dist/client/assets/popover-CIfFCO0U.js +1 -0
  105. package/dist/client/assets/pr-inbox-item-D9UcI0SS.js +2 -0
  106. package/dist/client/assets/preload-helper-BZ1Pz5am.js +1 -0
  107. package/dist/client/assets/project-repo-form-Dc8ha6XP.js +1 -0
  108. package/dist/client/assets/provider-cli-warning-CIAJ88Cy.js +1 -0
  109. package/dist/client/assets/quadrantDiagram-AXDQQJYC-BFek-axl.js +7 -0
  110. package/dist/client/assets/radar-RG4KPBEZ-k-UBw86I.js +1 -0
  111. package/dist/client/assets/radio-group-BhmTXkIv.js +1 -0
  112. package/dist/client/assets/railroad-74A4TZTK-B6DuT-HY.js +1 -0
  113. package/dist/client/assets/railroad-abnf-HS5TGJTU-DF-z1cVb.js +1 -0
  114. package/dist/client/assets/railroad-ebnf-LZEXJU2U-C6VgaalR.js +1 -0
  115. package/dist/client/assets/railroad-peg-WCYAUIDC-DRMqhGU3.js +1 -0
  116. package/dist/client/assets/railroadDiagram-O6MQD6OU-CBzDTFh9.js +1 -0
  117. package/dist/client/assets/redirect-DexaYCz_.js +1 -0
  118. package/dist/client/assets/requirementDiagram-BXWQKSXE-DSgpbBy3.js +84 -0
  119. package/dist/client/assets/reviews-DDO7Pvrz.js +1 -0
  120. package/dist/client/assets/rolldown-runtime-hePW80VL.js +1 -0
  121. package/dist/client/assets/rough.esm-Dy-Kn_BL.js +1 -0
  122. package/dist/client/assets/sankeyDiagram-P5KCCOFB-BOWaOPXp.js +40 -0
  123. package/dist/client/assets/select-Cq3ddA2b.js +1 -0
  124. package/dist/client/assets/sequenceDiagram-WJ2MYXX4-9wHsZFGh.js +162 -0
  125. package/dist/client/assets/sizeCapture-INFHLROL-B0uUizjq.js +1 -0
  126. package/dist/client/assets/spinner-BszfzCYe.js +1 -0
  127. package/dist/client/assets/src-B6xuSHsQ.js +1 -0
  128. package/dist/client/assets/startup-script-form-CHvwd1Nb.js +1 -0
  129. package/dist/client/assets/stateDiagram-D77RDMKH-Blo9H6q_.js +1 -0
  130. package/dist/client/assets/stateDiagram-v2-MP3YSRHH-BzJ9AKXW.js +1 -0
  131. package/dist/client/assets/swimlanes-42K2YHIH-DI0BHdWG.js +1 -0
  132. package/dist/client/assets/swimlanesDiagram-VR7AAH4N-DSnxWZUW.js +8 -0
  133. package/dist/client/assets/table-CUvMM0aA.js +1 -0
  134. package/dist/client/assets/tabs-BBAQyvSA.js +1 -0
  135. package/dist/client/assets/terminal-instance-BEqkmyvv.js +16 -0
  136. package/dist/client/assets/terminal-instance-BrP-ENHg.css +1 -0
  137. package/dist/client/assets/textarea-DxWYClhS.js +1 -0
  138. package/dist/client/assets/timeline-definition-24CTP7MA-C8fyxpVm.js +120 -0
  139. package/dist/client/assets/tooltip-DXcY1U7y.js +1 -0
  140. package/dist/client/assets/treeView-Q6P3EWNA-CzQAwJw-.js +1 -0
  141. package/dist/client/assets/treemap-WGGIJYW6-zWRSK6WR.js +1 -0
  142. package/dist/client/assets/trpc-CQO3zfei.js +1 -0
  143. package/dist/client/assets/use-auto-scroll-DNohsNoz.js +1 -0
  144. package/dist/client/assets/use-download-server-log-efKIcIwE.js +1 -0
  145. package/dist/client/assets/use-project-header-navigation-D5yIIgnb.js +1 -0
  146. package/dist/client/assets/use-websocket-channel-dNXOJZfW.js +4 -0
  147. package/dist/client/assets/use-websocket-transport-BuYcrZTd.js +55 -0
  148. package/dist/client/assets/vbnet-CwR9YcOY.js +57 -0
  149. package/dist/client/assets/vennDiagram-4TSXK5OY-ffnMpD5u.js +34 -0
  150. package/dist/client/assets/voice-vad-ChMQMgBS.js +1 -0
  151. package/dist/client/assets/wardley-WFR3VGLG-acbsrLnl.js +1 -0
  152. package/dist/client/assets/wardleyDiagram-VM6X3IG4-BtqGCwsu.js +78 -0
  153. package/dist/client/assets/workspace-a6lf168c.js +18 -0
  154. package/dist/client/assets/xychartDiagram-S5SC5T6Z-Bfy9xcWF.js +7 -0
  155. package/dist/client/index.html +30 -10
  156. package/dist/prisma/generated/client.js.map +1 -1
  157. package/dist/prisma/generated/enums.d.ts +86 -86
  158. package/dist/prisma/generated/enums.d.ts.map +1 -1
  159. package/dist/prisma/generated/internal/class.js +4 -4
  160. package/dist/prisma/generated/internal/class.js.map +1 -1
  161. package/dist/prisma/generated/internal/prismaNamespace.d.ts +206 -206
  162. package/dist/prisma/generated/internal/prismaNamespace.d.ts.map +1 -1
  163. package/dist/prisma/generated/internal/prismaNamespace.js +2 -2
  164. package/dist/prisma/generated/internal/prismaNamespace.js.map +1 -1
  165. package/dist/prisma/generated/internal/prismaNamespaceBrowser.d.ts +204 -204
  166. package/dist/prisma/generated/internal/prismaNamespaceBrowser.d.ts.map +1 -1
  167. package/dist/prompts/quick-actions/fetch-rebase.md +5 -9
  168. package/dist/prompts/quick-actions/rename-branch.md +4 -8
  169. package/dist/prompts/quick-actions/review.md +6 -5
  170. package/dist/prompts/quick-actions/screenshots.md +7 -20
  171. package/dist/prompts/quick-actions/simplify.md +4 -1
  172. package/dist/prompts/ratchet/dispatch.md +13 -46
  173. package/dist/scripts/check-fk-indexes.js.map +1 -1
  174. package/dist/scripts/check-no-direct-process-env.d.mts +1 -1
  175. package/dist/scripts/check-no-direct-process-env.d.mts.map +1 -1
  176. package/dist/scripts/check-no-direct-process-env.mjs.map +1 -1
  177. package/dist/src/backend/app-context.d.ts +2 -2
  178. package/dist/src/backend/app-context.d.ts.map +1 -1
  179. package/dist/src/backend/app-context.js +2 -2
  180. package/dist/src/backend/app-context.js.map +1 -1
  181. package/dist/src/backend/clients/git.client.d.ts.map +1 -1
  182. package/dist/src/backend/clients/git.client.js +2 -2
  183. package/dist/src/backend/clients/git.client.js.map +1 -1
  184. package/dist/src/backend/constants/http.d.ts.map +1 -1
  185. package/dist/src/backend/constants/websocket.d.ts.map +1 -1
  186. package/dist/src/backend/interceptors/auto-branch-rename.d.ts +1 -1
  187. package/dist/src/backend/interceptors/auto-branch-rename.d.ts.map +1 -1
  188. package/dist/src/backend/interceptors/auto-branch-rename.js +3 -3
  189. package/dist/src/backend/interceptors/branch-naming.interceptor.js +4 -4
  190. package/dist/src/backend/interceptors/branch-naming.interceptor.test.js +14 -17
  191. package/dist/src/backend/interceptors/branch-naming.interceptor.test.js.map +1 -1
  192. package/dist/src/backend/interceptors/branch-rename.utils.d.ts +1 -1
  193. package/dist/src/backend/interceptors/branch-rename.utils.js +1 -1
  194. package/dist/src/backend/interceptors/conversation-rename.interceptor.js +6 -6
  195. package/dist/src/backend/interceptors/conversation-rename.interceptor.test.js +7 -7
  196. package/dist/src/backend/interceptors/conversation-rename.interceptor.test.js.map +1 -1
  197. package/dist/src/backend/interceptors/pr-detection.interceptor.js +3 -3
  198. package/dist/src/backend/interceptors/registry.d.ts.map +1 -1
  199. package/dist/src/backend/interceptors/registry.js +1 -1
  200. package/dist/src/backend/lib/application-error.d.ts.map +1 -1
  201. package/dist/src/backend/lib/application-error.js.map +1 -1
  202. package/dist/src/backend/lib/atomic-file.js.map +1 -1
  203. package/dist/src/backend/lib/constants.d.ts.map +1 -1
  204. package/dist/src/backend/lib/env.js.map +1 -1
  205. package/dist/src/backend/lib/file-helpers.js.map +1 -1
  206. package/dist/src/backend/lib/file-lock-mutex.d.ts.map +1 -1
  207. package/dist/src/backend/lib/file-lock-mutex.js +1 -1
  208. package/dist/src/backend/lib/file-lock-mutex.js.map +1 -1
  209. package/dist/src/backend/lib/file-preview.d.ts +6 -0
  210. package/dist/src/backend/lib/file-preview.d.ts.map +1 -0
  211. package/dist/src/backend/lib/file-preview.js +34 -0
  212. package/dist/src/backend/lib/file-preview.js.map +1 -0
  213. package/dist/src/backend/lib/git-status-parser.test.js +1 -1
  214. package/dist/src/backend/lib/request-trust.js.map +1 -1
  215. package/dist/src/backend/lib/topic-broadcaster.d.ts.map +1 -1
  216. package/dist/src/backend/lib/topic-broadcaster.js.map +1 -1
  217. package/dist/src/backend/lib/topic-broadcaster.test.js +1 -1
  218. package/dist/src/backend/lib/websocket-send.js +1 -1
  219. package/dist/src/backend/lib/websocket-send.test.js +1 -1
  220. package/dist/src/backend/lib/websocket-send.test.js.map +1 -1
  221. package/dist/src/backend/lib/workspace-derived-state.test.js.map +1 -1
  222. package/dist/src/backend/middleware/cors.middleware.d.ts +1 -1
  223. package/dist/src/backend/middleware/cors.middleware.d.ts.map +1 -1
  224. package/dist/src/backend/middleware/cors.middleware.js +1 -1
  225. package/dist/src/backend/middleware/middleware.test.js.map +1 -1
  226. package/dist/src/backend/middleware/request-logger.middleware.d.ts +1 -1
  227. package/dist/src/backend/middleware/request-logger.middleware.d.ts.map +1 -1
  228. package/dist/src/backend/migrate.js.map +1 -1
  229. package/dist/src/backend/orchestration/cli-health.service.d.ts +1 -1
  230. package/dist/src/backend/orchestration/cli-health.service.d.ts.map +1 -1
  231. package/dist/src/backend/orchestration/cli-health.service.js +35 -27
  232. package/dist/src/backend/orchestration/cli-health.service.js.map +1 -1
  233. package/dist/src/backend/orchestration/cli-health.service.test.js +40 -0
  234. package/dist/src/backend/orchestration/cli-health.service.test.js.map +1 -1
  235. package/dist/src/backend/orchestration/data-backup.service.d.ts.map +1 -1
  236. package/dist/src/backend/orchestration/data-backup.service.js +2 -2
  237. package/dist/src/backend/orchestration/data-backup.service.test.js +38 -5
  238. package/dist/src/backend/orchestration/data-backup.service.test.js.map +1 -1
  239. package/dist/src/backend/orchestration/domain-bridges.orchestrator.d.ts +9 -9
  240. package/dist/src/backend/orchestration/domain-bridges.orchestrator.js +2 -2
  241. package/dist/src/backend/orchestration/domain-bridges.orchestrator.test.js +9 -9
  242. package/dist/src/backend/orchestration/domain-bridges.orchestrator.test.js.map +1 -1
  243. package/dist/src/backend/orchestration/event-coalescer.integration.test.js +1 -1
  244. package/dist/src/backend/orchestration/event-collector-lifecycle.integration.test.js +6 -6
  245. package/dist/src/backend/orchestration/event-collector.idle-refresh.test.d.ts +2 -0
  246. package/dist/src/backend/orchestration/event-collector.idle-refresh.test.d.ts.map +1 -0
  247. package/dist/src/backend/orchestration/event-collector.idle-refresh.test.js +83 -0
  248. package/dist/src/backend/orchestration/event-collector.idle-refresh.test.js.map +1 -0
  249. package/dist/src/backend/orchestration/event-collector.linear.test.d.ts +2 -0
  250. package/dist/src/backend/orchestration/event-collector.linear.test.d.ts.map +1 -0
  251. package/dist/src/backend/orchestration/event-collector.linear.test.js +206 -0
  252. package/dist/src/backend/orchestration/event-collector.linear.test.js.map +1 -0
  253. package/dist/src/backend/orchestration/event-collector.orchestrator.d.ts +11 -11
  254. package/dist/src/backend/orchestration/event-collector.orchestrator.d.ts.map +1 -1
  255. package/dist/src/backend/orchestration/event-collector.orchestrator.js +63 -141
  256. package/dist/src/backend/orchestration/event-collector.orchestrator.js.map +1 -1
  257. package/dist/src/backend/orchestration/event-collector.orchestrator.test.js +39 -121
  258. package/dist/src/backend/orchestration/event-collector.orchestrator.test.js.map +1 -1
  259. package/dist/src/backend/orchestration/health.service.d.ts.map +1 -1
  260. package/dist/src/backend/orchestration/health.service.js +1 -1
  261. package/dist/src/backend/orchestration/linear-config.helper.js +2 -2
  262. package/dist/src/backend/orchestration/ratchet-projection.worker.d.ts +24 -0
  263. package/dist/src/backend/orchestration/ratchet-projection.worker.d.ts.map +1 -0
  264. package/dist/src/backend/orchestration/ratchet-projection.worker.js +128 -0
  265. package/dist/src/backend/orchestration/ratchet-projection.worker.js.map +1 -0
  266. package/dist/src/backend/orchestration/ratchet-projection.worker.test.d.ts +2 -0
  267. package/dist/src/backend/orchestration/ratchet-projection.worker.test.d.ts.map +1 -0
  268. package/dist/src/backend/orchestration/ratchet-projection.worker.test.js +174 -0
  269. package/dist/src/backend/orchestration/ratchet-projection.worker.test.js.map +1 -0
  270. package/dist/src/backend/orchestration/reconciliation.service.d.ts.map +1 -1
  271. package/dist/src/backend/orchestration/reconciliation.service.js +5 -5
  272. package/dist/src/backend/orchestration/reconciliation.service.test.js +2 -2
  273. package/dist/src/backend/orchestration/scheduler.service.d.ts.map +1 -1
  274. package/dist/src/backend/orchestration/scheduler.service.js +7 -7
  275. package/dist/src/backend/orchestration/scheduler.service.test.js +1 -1
  276. package/dist/src/backend/orchestration/snapshot-reconciliation.orchestrator.d.ts +8 -6
  277. package/dist/src/backend/orchestration/snapshot-reconciliation.orchestrator.d.ts.map +1 -1
  278. package/dist/src/backend/orchestration/snapshot-reconciliation.orchestrator.js +122 -78
  279. package/dist/src/backend/orchestration/snapshot-reconciliation.orchestrator.js.map +1 -1
  280. package/dist/src/backend/orchestration/snapshot-reconciliation.orchestrator.test.js +61 -110
  281. package/dist/src/backend/orchestration/snapshot-reconciliation.orchestrator.test.js.map +1 -1
  282. package/dist/src/backend/orchestration/snapshot-reconciliation.streaming.test.d.ts +2 -0
  283. package/dist/src/backend/orchestration/snapshot-reconciliation.streaming.test.d.ts.map +1 -0
  284. package/dist/src/backend/orchestration/snapshot-reconciliation.streaming.test.js +206 -0
  285. package/dist/src/backend/orchestration/snapshot-reconciliation.streaming.test.js.map +1 -0
  286. package/dist/src/backend/orchestration/snapshot-reconciliation.test-helpers.d.ts +6 -0
  287. package/dist/src/backend/orchestration/snapshot-reconciliation.test-helpers.d.ts.map +1 -0
  288. package/dist/src/backend/orchestration/snapshot-reconciliation.test-helpers.js +117 -0
  289. package/dist/src/backend/orchestration/snapshot-reconciliation.test-helpers.js.map +1 -0
  290. package/dist/src/backend/orchestration/snapshot-reconciliation.test-helpers.test.d.ts +2 -0
  291. package/dist/src/backend/orchestration/snapshot-reconciliation.test-helpers.test.d.ts.map +1 -0
  292. package/dist/src/backend/orchestration/snapshot-reconciliation.test-helpers.test.js +8 -0
  293. package/dist/src/backend/orchestration/snapshot-reconciliation.test-helpers.test.js.map +1 -0
  294. package/dist/src/backend/orchestration/types.d.ts +1 -1
  295. package/dist/src/backend/orchestration/workspace-archive.orchestrator.d.ts +4 -4
  296. package/dist/src/backend/orchestration/workspace-archive.orchestrator.d.ts.map +1 -1
  297. package/dist/src/backend/orchestration/workspace-archive.orchestrator.js +42 -36
  298. package/dist/src/backend/orchestration/workspace-archive.orchestrator.js.map +1 -1
  299. package/dist/src/backend/orchestration/workspace-archive.orchestrator.test.js +6 -2
  300. package/dist/src/backend/orchestration/workspace-archive.orchestrator.test.js.map +1 -1
  301. package/dist/src/backend/orchestration/workspace-children.orchestrator.d.ts.map +1 -1
  302. package/dist/src/backend/orchestration/workspace-children.orchestrator.js +5 -6
  303. package/dist/src/backend/orchestration/workspace-children.orchestrator.js.map +1 -1
  304. package/dist/src/backend/orchestration/workspace-children.orchestrator.test.js +2 -2
  305. package/dist/src/backend/orchestration/workspace-init-github-username-cache.d.ts.map +1 -1
  306. package/dist/src/backend/orchestration/workspace-init-github-username-cache.js +1 -1
  307. package/dist/src/backend/orchestration/workspace-init-github-username-cache.js.map +1 -1
  308. package/dist/src/backend/orchestration/workspace-init-issue-prompts.d.ts +1 -1
  309. package/dist/src/backend/orchestration/workspace-init-issue-prompts.js +3 -3
  310. package/dist/src/backend/orchestration/workspace-init-issue-prompts.test.js +5 -5
  311. package/dist/src/backend/orchestration/workspace-init-issue-prompts.test.js.map +1 -1
  312. package/dist/src/backend/orchestration/workspace-init-script-pipeline.d.ts +1 -1
  313. package/dist/src/backend/orchestration/workspace-init-script-pipeline.d.ts.map +1 -1
  314. package/dist/src/backend/orchestration/workspace-init-script-pipeline.js +6 -6
  315. package/dist/src/backend/orchestration/workspace-init-script-pipeline.js.map +1 -1
  316. package/dist/src/backend/orchestration/workspace-init-script-pipeline.test.d.ts +2 -0
  317. package/dist/src/backend/orchestration/workspace-init-script-pipeline.test.d.ts.map +1 -0
  318. package/dist/src/backend/orchestration/workspace-init-script-pipeline.test.js +52 -0
  319. package/dist/src/backend/orchestration/workspace-init-script-pipeline.test.js.map +1 -0
  320. package/dist/src/backend/orchestration/workspace-init.orchestrator.js +9 -9
  321. package/dist/src/backend/orchestration/workspace-init.orchestrator.test.js +5 -5
  322. package/dist/src/backend/orchestration/workspace-notification-delivery.orchestrator.js +2 -2
  323. package/dist/src/backend/orchestration/workspace-runtime-cleanup-notification.test.d.ts +2 -0
  324. package/dist/src/backend/orchestration/workspace-runtime-cleanup-notification.test.d.ts.map +1 -0
  325. package/dist/src/backend/orchestration/workspace-runtime-cleanup-notification.test.js +175 -0
  326. package/dist/src/backend/orchestration/workspace-runtime-cleanup-notification.test.js.map +1 -0
  327. package/dist/src/backend/prompts/branch-rename.js +1 -1
  328. package/dist/src/backend/prompts/markdown-loader.d.ts.map +1 -1
  329. package/dist/src/backend/prompts/quick-actions.js +1 -1
  330. package/dist/src/backend/prompts/quick-actions.js.map +1 -1
  331. package/dist/src/backend/prompts/ratchet-dispatch.d.ts.map +1 -1
  332. package/dist/src/backend/prompts/ratchet-dispatch.js +12 -78
  333. package/dist/src/backend/prompts/ratchet-dispatch.js.map +1 -1
  334. package/dist/src/backend/prompts/ratchet-dispatch.test.js +39 -27
  335. package/dist/src/backend/prompts/ratchet-dispatch.test.js.map +1 -1
  336. package/dist/src/backend/routers/health.router.d.ts +1 -1
  337. package/dist/src/backend/routers/health.router.js +2 -2
  338. package/dist/src/backend/routers/websocket/chat-connection-registry.d.ts +1 -1
  339. package/dist/src/backend/routers/websocket/chat-connection-registry.d.ts.map +1 -1
  340. package/dist/src/backend/routers/websocket/chat-connection-registry.js +3 -3
  341. package/dist/src/backend/routers/websocket/chat-connection-registry.test.js +2 -2
  342. package/dist/src/backend/routers/websocket/chat-connection-registry.test.js.map +1 -1
  343. package/dist/src/backend/routers/websocket/chat.handler.d.ts +2 -2
  344. package/dist/src/backend/routers/websocket/chat.handler.js +3 -3
  345. package/dist/src/backend/routers/websocket/chat.handler.test.js +2 -2
  346. package/dist/src/backend/routers/websocket/chat.handler.test.js.map +1 -1
  347. package/dist/src/backend/routers/websocket/context-injection.test.js +8 -8
  348. package/dist/src/backend/routers/websocket/context-injection.test.js.map +1 -1
  349. package/dist/src/backend/routers/websocket/log-stream-dev.handler.test.js +2 -2
  350. package/dist/src/backend/routers/websocket/log-stream-post-run.handler.test.js +1 -1
  351. package/dist/src/backend/routers/websocket/log-stream.handler.d.ts +2 -2
  352. package/dist/src/backend/routers/websocket/log-stream.handler.js +1 -1
  353. package/dist/src/backend/routers/websocket/message-utils.js +1 -1
  354. package/dist/src/backend/routers/websocket/message-utils.test.js +1 -1
  355. package/dist/src/backend/routers/websocket/push-channel.handler.d.ts +2 -2
  356. package/dist/src/backend/routers/websocket/push-channel.handler.js +1 -1
  357. package/dist/src/backend/routers/websocket/setup-terminal.handler.d.ts +1 -1
  358. package/dist/src/backend/routers/websocket/setup-terminal.handler.js +4 -4
  359. package/dist/src/backend/routers/websocket/setup-terminal.handler.js.map +1 -1
  360. package/dist/src/backend/routers/websocket/setup-terminal.handler.test.js +2 -2
  361. package/dist/src/backend/routers/websocket/snapshots.handler.d.ts +2 -2
  362. package/dist/src/backend/routers/websocket/snapshots.handler.d.ts.map +1 -1
  363. package/dist/src/backend/routers/websocket/snapshots.handler.js +5 -5
  364. package/dist/src/backend/routers/websocket/snapshots.handler.js.map +1 -1
  365. package/dist/src/backend/routers/websocket/snapshots.handler.test.js +6 -6
  366. package/dist/src/backend/routers/websocket/snapshots.handler.test.js.map +1 -1
  367. package/dist/src/backend/routers/websocket/terminal.handler.d.ts +2 -2
  368. package/dist/src/backend/routers/websocket/terminal.handler.js +5 -5
  369. package/dist/src/backend/routers/websocket/terminal.handler.test.js +4 -4
  370. package/dist/src/backend/routers/websocket/terminal.handler.test.js.map +1 -1
  371. package/dist/src/backend/routers/websocket/upgrade-utils.d.ts +1 -1
  372. package/dist/src/backend/routers/websocket/upgrade-utils.js +2 -2
  373. package/dist/src/backend/routers/websocket/upgrade-utils.test.js.map +1 -1
  374. package/dist/src/backend/routers/websocket/voice-soft-stop.handler.d.ts +1 -1
  375. package/dist/src/backend/routers/websocket/voice.handler.d.ts +1 -1
  376. package/dist/src/backend/routers/websocket/voice.handler.js +1 -1
  377. package/dist/src/backend/routers/websocket/websocket.integration.test.js +4 -4
  378. package/dist/src/backend/routers/websocket/websocket.integration.test.js.map +1 -1
  379. package/dist/src/backend/server.upgrade.test.js.map +1 -1
  380. package/dist/src/backend/services/auto-iteration/service/auto-iteration.service.d.ts +1 -1
  381. package/dist/src/backend/services/auto-iteration/service/auto-iteration.service.d.ts.map +1 -1
  382. package/dist/src/backend/services/auto-iteration/service/auto-iteration.service.js +6 -1
  383. package/dist/src/backend/services/auto-iteration/service/auto-iteration.service.js.map +1 -1
  384. package/dist/src/backend/services/auto-iteration/service/auto-iteration.service.test.js +60 -1
  385. package/dist/src/backend/services/auto-iteration/service/auto-iteration.service.test.js.map +1 -1
  386. package/dist/src/backend/services/auto-iteration/service/git-ops.js +1 -1
  387. package/dist/src/backend/services/auto-iteration/service/index.js +1 -1
  388. package/dist/src/backend/services/auto-iteration/service/insights.service.d.ts.map +1 -1
  389. package/dist/src/backend/services/auto-iteration/service/logbook.service.d.ts.map +1 -1
  390. package/dist/src/backend/services/auto-iteration/service/prompts.d.ts.map +1 -1
  391. package/dist/src/backend/services/auto-iteration/service/prompts.js +14 -54
  392. package/dist/src/backend/services/auto-iteration/service/prompts.js.map +1 -1
  393. package/dist/src/backend/services/check-service-accessor-boundaries.test.js +10 -14
  394. package/dist/src/backend/services/check-service-accessor-boundaries.test.js.map +1 -1
  395. package/dist/src/backend/services/check-single-writer.test.js +9 -12
  396. package/dist/src/backend/services/check-single-writer.test.js.map +1 -1
  397. package/dist/src/backend/services/config.service.d.ts.map +1 -1
  398. package/dist/src/backend/services/config.service.js +1 -1
  399. package/dist/src/backend/services/constants.d.ts +1 -0
  400. package/dist/src/backend/services/constants.d.ts.map +1 -1
  401. package/dist/src/backend/services/constants.js +1 -0
  402. package/dist/src/backend/services/constants.js.map +1 -1
  403. package/dist/src/backend/services/crypto.service.d.ts.map +1 -1
  404. package/dist/src/backend/services/decision-log/resources/decision-log.accessor.d.ts.map +1 -1
  405. package/dist/src/backend/services/decision-log/resources/decision-log.accessor.js +1 -1
  406. package/dist/src/backend/services/decision-log/service/decision-log-domain-exports.test.js +1 -1
  407. package/dist/src/backend/services/decision-log/service/decision-log.service.d.ts.map +1 -1
  408. package/dist/src/backend/services/decision-log/service/decision-log.service.js +1 -1
  409. package/dist/src/backend/services/env-schemas.d.ts +53 -53
  410. package/dist/src/backend/services/github/service/github-cli/constants.d.ts.map +1 -1
  411. package/dist/src/backend/services/github/service/github-cli/errors.js +2 -2
  412. package/dist/src/backend/services/github/service/github-cli/schemas.d.ts +13 -13
  413. package/dist/src/backend/services/github/service/github-cli/utils.js +1 -1
  414. package/dist/src/backend/services/github/service/github-cli-health-cache.test.d.ts +2 -0
  415. package/dist/src/backend/services/github/service/github-cli-health-cache.test.d.ts.map +1 -0
  416. package/dist/src/backend/services/github/service/github-cli-health-cache.test.js +45 -0
  417. package/dist/src/backend/services/github/service/github-cli-health-cache.test.js.map +1 -0
  418. package/dist/src/backend/services/github/service/github-cli-review-pagination.test.d.ts +2 -0
  419. package/dist/src/backend/services/github/service/github-cli-review-pagination.test.d.ts.map +1 -0
  420. package/dist/src/backend/services/github/service/github-cli-review-pagination.test.js +58 -0
  421. package/dist/src/backend/services/github/service/github-cli-review-pagination.test.js.map +1 -0
  422. package/dist/src/backend/services/github/service/github-cli.service.d.ts +1 -1
  423. package/dist/src/backend/services/github/service/github-cli.service.d.ts.map +1 -1
  424. package/dist/src/backend/services/github/service/github-cli.service.js +29 -27
  425. package/dist/src/backend/services/github/service/github-cli.service.js.map +1 -1
  426. package/dist/src/backend/services/github/service/github-cli.service.test.js.map +1 -1
  427. package/dist/src/backend/services/github/service/pr-fetch-coordinator.d.ts.map +1 -1
  428. package/dist/src/backend/services/github/service/pr-fetch-coordinator.js +1 -1
  429. package/dist/src/backend/services/github/service/pr-snapshot.service.d.ts +2 -2
  430. package/dist/src/backend/services/github/service/pr-snapshot.service.d.ts.map +1 -1
  431. package/dist/src/backend/services/github/service/pr-snapshot.service.js +2 -2
  432. package/dist/src/backend/services/github/service/pr-snapshot.service.js.map +1 -1
  433. package/dist/src/backend/services/job-runner.service.d.ts.map +1 -1
  434. package/dist/src/backend/services/job-runner.service.js +1 -1
  435. package/dist/src/backend/services/job-runner.service.js.map +1 -1
  436. package/dist/src/backend/services/linear/service/linear-client.service.d.ts +1 -1
  437. package/dist/src/backend/services/linear/service/linear-client.service.d.ts.map +1 -1
  438. package/dist/src/backend/services/linear/service/linear-client.service.js +25 -10
  439. package/dist/src/backend/services/linear/service/linear-client.service.js.map +1 -1
  440. package/dist/src/backend/services/linear/service/linear-client.service.test.js +46 -5
  441. package/dist/src/backend/services/linear/service/linear-client.service.test.js.map +1 -1
  442. package/dist/src/backend/services/linear/service/linear-client.transport.test.d.ts +2 -0
  443. package/dist/src/backend/services/linear/service/linear-client.transport.test.d.ts.map +1 -0
  444. package/dist/src/backend/services/linear/service/linear-client.transport.test.js +64 -0
  445. package/dist/src/backend/services/linear/service/linear-client.transport.test.js.map +1 -0
  446. package/dist/src/backend/services/linear/service/linear-state-sync.service.d.ts +1 -1
  447. package/dist/src/backend/services/linear/service/linear-state-sync.service.d.ts.map +1 -1
  448. package/dist/src/backend/services/linear/service/linear-state-sync.service.js +3 -2
  449. package/dist/src/backend/services/linear/service/linear-state-sync.service.js.map +1 -1
  450. package/dist/src/backend/services/linear/service/linear-state-sync.service.test.js +7 -3
  451. package/dist/src/backend/services/linear/service/linear-state-sync.service.test.js.map +1 -1
  452. package/dist/src/backend/services/logger.service.d.ts.map +1 -1
  453. package/dist/src/backend/services/logger.service.js +1 -1
  454. package/dist/src/backend/services/notification.service.d.ts.map +1 -1
  455. package/dist/src/backend/services/notification.service.js +2 -2
  456. package/dist/src/backend/services/notification.service.js.map +1 -1
  457. package/dist/src/backend/services/periodic-task/index.js +1 -1
  458. package/dist/src/backend/services/periodic-task/resources/periodic-task.accessor.js +1 -1
  459. package/dist/src/backend/services/periodic-task/resources/periodic-task.accessor.js.map +1 -1
  460. package/dist/src/backend/services/periodic-task/service/periodic-task.service.d.ts +23 -23
  461. package/dist/src/backend/services/periodic-task/service/periodic-task.service.d.ts.map +1 -1
  462. package/dist/src/backend/services/periodic-task/service/periodic-task.service.js +4 -4
  463. package/dist/src/backend/services/periodic-task/service/periodic-task.service.js.map +1 -1
  464. package/dist/src/backend/services/periodic-task/service/periodic-task.service.test.js.map +1 -1
  465. package/dist/src/backend/services/port.service.test.js +1 -3
  466. package/dist/src/backend/services/port.service.test.js.map +1 -1
  467. package/dist/src/backend/services/ratchet/service/fixer-session.service.d.ts.map +1 -1
  468. package/dist/src/backend/services/ratchet/service/fixer-session.service.js +4 -4
  469. package/dist/src/backend/services/ratchet/service/fixer-session.service.js.map +1 -1
  470. package/dist/src/backend/services/ratchet/service/fixer-session.service.test.js +2 -2
  471. package/dist/src/backend/services/ratchet/service/provider-selection.js +1 -1
  472. package/dist/src/backend/services/ratchet/service/ratchet-active-session.helpers.js +1 -1
  473. package/dist/src/backend/services/ratchet/service/ratchet-decision-logging.helpers.d.ts +1 -1
  474. package/dist/src/backend/services/ratchet/service/ratchet-decision-logging.helpers.js +1 -1
  475. package/dist/src/backend/services/ratchet/service/ratchet-fixer-dispatch.helpers.js +5 -5
  476. package/dist/src/backend/services/ratchet/service/ratchet-pr-state.helpers.d.ts +1 -1
  477. package/dist/src/backend/services/ratchet/service/ratchet-pr-state.helpers.d.ts.map +1 -1
  478. package/dist/src/backend/services/ratchet/service/ratchet-pr-state.helpers.js +2 -2
  479. package/dist/src/backend/services/ratchet/service/ratchet-pr-state.helpers.test.js.map +1 -1
  480. package/dist/src/backend/services/ratchet/service/ratchet-provider-resolver.service.d.ts.map +1 -1
  481. package/dist/src/backend/services/ratchet/service/ratchet-provider-resolver.service.js +2 -2
  482. package/dist/src/backend/services/ratchet/service/ratchet-provider-resolver.service.test.js +2 -2
  483. package/dist/src/backend/services/ratchet/service/ratchet-workspace-check-coordinator.d.ts.map +1 -1
  484. package/dist/src/backend/services/ratchet/service/ratchet-workspace-check-coordinator.js.map +1 -1
  485. package/dist/src/backend/services/ratchet/service/ratchet.service.d.ts +3 -3
  486. package/dist/src/backend/services/ratchet/service/ratchet.service.d.ts.map +1 -1
  487. package/dist/src/backend/services/ratchet/service/ratchet.service.js +7 -7
  488. package/dist/src/backend/services/ratchet/service/ratchet.service.js.map +1 -1
  489. package/dist/src/backend/services/ratchet/service/ratchet.service.test.js +4 -4
  490. package/dist/src/backend/services/ratchet/service/ratchet.service.test.js.map +1 -1
  491. package/dist/src/backend/services/ratchet/service/ratchet.types.d.ts +1 -1
  492. package/dist/src/backend/services/rate-limit-backoff.d.ts.map +1 -1
  493. package/dist/src/backend/services/rate-limit-backoff.js +1 -1
  494. package/dist/src/backend/services/rate-limiter.service.d.ts.map +1 -1
  495. package/dist/src/backend/services/rate-limiter.service.js.map +1 -1
  496. package/dist/src/backend/services/registry.d.ts +24 -24
  497. package/dist/src/backend/services/registry.d.ts.map +1 -1
  498. package/dist/src/backend/services/resources.integration.test.js +1 -1
  499. package/dist/src/backend/services/resources.integration.test.js.map +1 -1
  500. package/dist/src/backend/services/run-script/service/factory-config.service.d.ts.map +1 -1
  501. package/dist/src/backend/services/run-script/service/factory-config.service.js.map +1 -1
  502. package/dist/src/backend/services/run-script/service/port-allocation.service.d.ts.map +1 -1
  503. package/dist/src/backend/services/run-script/service/port-allocation.service.js.map +1 -1
  504. package/dist/src/backend/services/run-script/service/run-script-config-persistence.service.d.ts.map +1 -1
  505. package/dist/src/backend/services/run-script/service/run-script-config-persistence.service.js +2 -2
  506. package/dist/src/backend/services/run-script/service/run-script-output-buffer.d.ts.map +1 -1
  507. package/dist/src/backend/services/run-script/service/run-script-output-buffer.js.map +1 -1
  508. package/dist/src/backend/services/run-script/service/run-script-process-utils.d.ts +1 -1
  509. package/dist/src/backend/services/run-script/service/run-script-process-utils.js +1 -1
  510. package/dist/src/backend/services/run-script/service/run-script-proxy.service.d.ts.map +1 -1
  511. package/dist/src/backend/services/run-script/service/run-script-proxy.service.js +2 -2
  512. package/dist/src/backend/services/run-script/service/run-script-proxy.service.test.js +1 -1
  513. package/dist/src/backend/services/run-script/service/run-script-proxy.service.test.js.map +1 -1
  514. package/dist/src/backend/services/run-script/service/run-script-state-machine.service.d.ts +2 -2
  515. package/dist/src/backend/services/run-script/service/run-script-state-machine.service.d.ts.map +1 -1
  516. package/dist/src/backend/services/run-script/service/run-script-state-machine.service.js +2 -2
  517. package/dist/src/backend/services/run-script/service/run-script-state-machine.service.js.map +1 -1
  518. package/dist/src/backend/services/run-script/service/run-script.service.d.ts.map +1 -1
  519. package/dist/src/backend/services/run-script/service/run-script.service.js +3 -3
  520. package/dist/src/backend/services/run-script/service/run-script.service.js.map +1 -1
  521. package/dist/src/backend/services/run-script/service/run-script.service.test.js.map +1 -1
  522. package/dist/src/backend/services/run-script/service/startup-script.integration.test.d.ts +2 -0
  523. package/dist/src/backend/services/run-script/service/startup-script.integration.test.d.ts.map +1 -0
  524. package/dist/src/backend/services/run-script/service/startup-script.integration.test.js +63 -0
  525. package/dist/src/backend/services/run-script/service/startup-script.integration.test.js.map +1 -0
  526. package/dist/src/backend/services/run-script/service/startup-script.service.d.ts +1 -0
  527. package/dist/src/backend/services/run-script/service/startup-script.service.d.ts.map +1 -1
  528. package/dist/src/backend/services/run-script/service/startup-script.service.js +41 -15
  529. package/dist/src/backend/services/run-script/service/startup-script.service.js.map +1 -1
  530. package/dist/src/backend/services/run-script/service/startup-script.service.test.js +52 -2
  531. package/dist/src/backend/services/run-script/service/startup-script.service.test.js.map +1 -1
  532. package/dist/src/backend/services/server-instance.service.d.ts +1 -1
  533. package/dist/src/backend/services/server-instance.service.d.ts.map +1 -1
  534. package/dist/src/backend/services/session/resources/agent-session.accessor.js +2 -2
  535. package/dist/src/backend/services/session/resources/closed-session.accessor.d.ts.map +1 -1
  536. package/dist/src/backend/services/session/resources/closed-session.accessor.js +1 -1
  537. package/dist/src/backend/services/session/resources/session-lifecycle-event.accessor.d.ts.map +1 -1
  538. package/dist/src/backend/services/session/resources/session-lifecycle-event.accessor.js +1 -1
  539. package/dist/src/backend/services/session/resources/session-lifecycle-event.accessor.test.js +1 -1
  540. package/dist/src/backend/services/session/service/acp/acp-client-factory.d.ts.map +1 -1
  541. package/dist/src/backend/services/session/service/acp/acp-client-factory.js +2 -1
  542. package/dist/src/backend/services/session/service/acp/acp-client-factory.js.map +1 -1
  543. package/dist/src/backend/services/session/service/acp/acp-client-factory.test.js +4 -9
  544. package/dist/src/backend/services/session/service/acp/acp-client-factory.test.js.map +1 -1
  545. package/dist/src/backend/services/session/service/acp/acp-client-handler.d.ts.map +1 -1
  546. package/dist/src/backend/services/session/service/acp/acp-client-handler.js +1 -1
  547. package/dist/src/backend/services/session/service/acp/acp-permission-bridge.d.ts +2 -0
  548. package/dist/src/backend/services/session/service/acp/acp-permission-bridge.d.ts.map +1 -1
  549. package/dist/src/backend/services/session/service/acp/acp-permission-bridge.js +15 -2
  550. package/dist/src/backend/services/session/service/acp/acp-permission-bridge.js.map +1 -1
  551. package/dist/src/backend/services/session/service/acp/acp-permission-bridge.test.js +12 -0
  552. package/dist/src/backend/services/session/service/acp/acp-permission-bridge.test.js.map +1 -1
  553. package/dist/src/backend/services/session/service/acp/acp-process-handle.d.ts +3 -0
  554. package/dist/src/backend/services/session/service/acp/acp-process-handle.d.ts.map +1 -1
  555. package/dist/src/backend/services/session/service/acp/acp-process-handle.js +2 -0
  556. package/dist/src/backend/services/session/service/acp/acp-process-handle.js.map +1 -1
  557. package/dist/src/backend/services/session/service/acp/acp-prompt-controller.d.ts.map +1 -1
  558. package/dist/src/backend/services/session/service/acp/acp-prompt-controller.js +2 -1
  559. package/dist/src/backend/services/session/service/acp/acp-prompt-controller.js.map +1 -1
  560. package/dist/src/backend/services/session/service/acp/acp-prompt-controller.test.js +53 -0
  561. package/dist/src/backend/services/session/service/acp/acp-prompt-controller.test.js.map +1 -1
  562. package/dist/src/backend/services/session/service/acp/acp-runtime-config-controller.d.ts.map +1 -1
  563. package/dist/src/backend/services/session/service/acp/acp-runtime-config-controller.js +4 -32
  564. package/dist/src/backend/services/session/service/acp/acp-runtime-config-controller.js.map +1 -1
  565. package/dist/src/backend/services/session/service/acp/acp-runtime-config-controller.test.js +10 -61
  566. package/dist/src/backend/services/session/service/acp/acp-runtime-config-controller.test.js.map +1 -1
  567. package/dist/src/backend/services/session/service/acp/acp-runtime-error-handler.d.ts.map +1 -1
  568. package/dist/src/backend/services/session/service/acp/acp-runtime-error-handler.js +8 -13
  569. package/dist/src/backend/services/session/service/acp/acp-runtime-error-handler.js.map +1 -1
  570. package/dist/src/backend/services/session/service/acp/acp-runtime-errors.d.ts.map +1 -1
  571. package/dist/src/backend/services/session/service/acp/acp-runtime-errors.js.map +1 -1
  572. package/dist/src/backend/services/session/service/acp/acp-runtime-events.d.ts +0 -2
  573. package/dist/src/backend/services/session/service/acp/acp-runtime-events.d.ts.map +1 -1
  574. package/dist/src/backend/services/session/service/acp/acp-runtime-exit-handler.d.ts.map +1 -1
  575. package/dist/src/backend/services/session/service/acp/acp-runtime-exit-handler.js +2 -7
  576. package/dist/src/backend/services/session/service/acp/acp-runtime-exit-handler.js.map +1 -1
  577. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.config.test.js +6 -20
  578. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.config.test.js.map +1 -1
  579. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.creation.test.js +15 -4
  580. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.creation.test.js.map +1 -1
  581. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.d.ts.map +1 -1
  582. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.facade.test.js.map +1 -1
  583. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.manual.integration.test.js +2 -2
  584. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.manual.integration.test.js.map +1 -1
  585. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.termination.test.js +4 -5
  586. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.termination.test.js.map +1 -1
  587. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.test-harness.d.ts +0 -1
  588. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.test-harness.d.ts.map +1 -1
  589. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.test-harness.js +0 -4
  590. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.test-harness.js.map +1 -1
  591. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.test-helpers.d.ts +1 -1
  592. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.test-helpers.d.ts.map +1 -1
  593. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.test-helpers.js +2 -2
  594. package/dist/src/backend/services/session/service/acp/acp-runtime-manager.test-helpers.js.map +1 -1
  595. package/dist/src/backend/services/session/service/acp/acp-runtime-quiescence.d.ts.map +1 -1
  596. package/dist/src/backend/services/session/service/acp/acp-runtime-quiescence.js +1 -1
  597. package/dist/src/backend/services/session/service/acp/acp-runtime-quiescence.js.map +1 -1
  598. package/dist/src/backend/services/session/service/acp/acp-runtime-spawn.js +1 -1
  599. package/dist/src/backend/services/session/service/acp/acp-runtime-spawn.js.map +1 -1
  600. package/dist/src/backend/services/session/service/acp/acp-runtime-supervisor.creation.test.js +8 -10
  601. package/dist/src/backend/services/session/service/acp/acp-runtime-supervisor.creation.test.js.map +1 -1
  602. package/dist/src/backend/services/session/service/acp/acp-runtime-supervisor.d.ts.map +1 -1
  603. package/dist/src/backend/services/session/service/acp/acp-runtime-supervisor.js +3 -2
  604. package/dist/src/backend/services/session/service/acp/acp-runtime-supervisor.js.map +1 -1
  605. package/dist/src/backend/services/session/service/acp/acp-runtime-supervisor.termination.test.js +28 -1
  606. package/dist/src/backend/services/session/service/acp/acp-runtime-supervisor.termination.test.js.map +1 -1
  607. package/dist/src/backend/services/session/service/acp/acp-session-config-options.d.ts +10 -2
  608. package/dist/src/backend/services/session/service/acp/acp-session-config-options.d.ts.map +1 -1
  609. package/dist/src/backend/services/session/service/acp/acp-session-config-options.js +7 -4
  610. package/dist/src/backend/services/session/service/acp/acp-session-config-options.js.map +1 -1
  611. package/dist/src/backend/services/session/service/acp/acp-session-config-options.test.js +20 -2
  612. package/dist/src/backend/services/session/service/acp/acp-session-config-options.test.js.map +1 -1
  613. package/dist/src/backend/services/session/service/acp/acp-session-negotiation.integration.test.js +24 -2
  614. package/dist/src/backend/services/session/service/acp/acp-session-negotiation.integration.test.js.map +1 -1
  615. package/dist/src/backend/services/session/service/acp/acp-subagent-browser.d.ts.map +1 -1
  616. package/dist/src/backend/services/session/service/acp/child-workspace-mcp-server.js.map +1 -1
  617. package/dist/src/backend/services/session/service/acp/child-workspace-mcp-server.test.js.map +1 -1
  618. package/dist/src/backend/services/session/service/acp/claude-model-catalog-loader.js +1 -1
  619. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-adapter-parsing.d.ts +1 -1
  620. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-adapter-parsing.d.ts.map +1 -1
  621. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-adapter-parsing.js +4 -0
  622. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-adapter-parsing.js.map +1 -1
  623. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-adapter-parsing.test.d.ts +2 -0
  624. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-adapter-parsing.test.d.ts.map +1 -0
  625. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-adapter-parsing.test.js +8 -0
  626. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-adapter-parsing.test.js.map +1 -0
  627. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-app-server-acp-adapter.d.ts.map +1 -1
  628. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-app-server-acp-adapter.js +25 -30
  629. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-app-server-acp-adapter.js.map +1 -1
  630. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-app-server-acp-adapter.notification-ordering.test.js +88 -0
  631. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-app-server-acp-adapter.notification-ordering.test.js.map +1 -1
  632. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-app-server-acp-adapter.test.js +2 -2
  633. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-app-server-acp-adapter.test.js.map +1 -1
  634. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-notification-queue.d.ts.map +1 -1
  635. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-notification-queue.js +1 -3
  636. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-notification-queue.js.map +1 -1
  637. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-rpc-client.d.ts.map +1 -1
  638. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-subagent-controller.d.ts.map +1 -1
  639. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-subagent-controller.js.map +1 -1
  640. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-subagent-controller.test.js.map +1 -1
  641. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-zod.d.ts +16 -16
  642. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-zod.test.js +1 -4
  643. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/codex-zod.test.js.map +1 -1
  644. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/command-metadata.js.map +1 -1
  645. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/retry-logic.d.ts.map +1 -1
  646. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/retry-logic.js +1 -3
  647. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/retry-logic.js.map +1 -1
  648. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/retry-logic.test.d.ts +2 -0
  649. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/retry-logic.test.d.ts.map +1 -0
  650. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/retry-logic.test.js +31 -0
  651. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/retry-logic.test.js.map +1 -0
  652. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/session-state-container.d.ts.map +1 -1
  653. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/shape-drift-reporter.d.ts.map +1 -1
  654. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/stream-event-handler.cancellation.test.d.ts +2 -0
  655. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/stream-event-handler.cancellation.test.d.ts.map +1 -0
  656. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/stream-event-handler.cancellation.test.js +181 -0
  657. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/stream-event-handler.cancellation.test.js.map +1 -0
  658. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/stream-event-handler.d.ts +5 -0
  659. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/stream-event-handler.d.ts.map +1 -1
  660. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/stream-event-handler.js +48 -12
  661. package/dist/src/backend/services/session/service/acp/codex-app-server-adapter/stream-event-handler.js.map +1 -1
  662. package/dist/src/backend/services/session/service/acp/codex-cli-import-resolution.integration.test.js.map +1 -1
  663. package/dist/src/backend/services/session/service/acp/types.d.ts +0 -1
  664. package/dist/src/backend/services/session/service/acp/types.d.ts.map +1 -1
  665. package/dist/src/backend/services/session/service/chat/chat-event-forwarder.service.d.ts +1 -1
  666. package/dist/src/backend/services/session/service/chat/chat-event-forwarder.service.d.ts.map +1 -1
  667. package/dist/src/backend/services/session/service/chat/chat-event-forwarder.service.js +6 -6
  668. package/dist/src/backend/services/session/service/chat/chat-event-forwarder.service.test.js.map +1 -1
  669. package/dist/src/backend/services/session/service/chat/chat-message-handlers/attachment-processing.d.ts.map +1 -1
  670. package/dist/src/backend/services/session/service/chat/chat-message-handlers/attachment-processing.js +1 -1
  671. package/dist/src/backend/services/session/service/chat/chat-message-handlers/attachment-processing.test.js +1 -1
  672. package/dist/src/backend/services/session/service/chat/chat-message-handlers/attachment-processing.test.js.map +1 -1
  673. package/dist/src/backend/services/session/service/chat/chat-message-handlers/attachment-utils.test.js.map +1 -1
  674. package/dist/src/backend/services/session/service/chat/chat-message-handlers/constants.js +1 -1
  675. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/load-session.handler.d.ts +1 -1
  676. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/load-session.handler.js +9 -9
  677. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/load-session.handler.test.js +1 -4
  678. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/load-session.handler.test.js.map +1 -1
  679. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/permission-response.handler.d.ts +1 -1
  680. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/permission-response.handler.js +2 -2
  681. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/queue-message.handler.d.ts +1 -1
  682. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/queue-message.handler.js +3 -3
  683. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/remove-queued-message.handler.d.ts +1 -1
  684. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/remove-queued-message.handler.js +3 -3
  685. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/resume-queued-messages.handler.d.ts +1 -1
  686. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/set-config-option.handler.d.ts +1 -1
  687. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/set-config-option.handler.js +4 -4
  688. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/set-model.handler.d.ts +1 -1
  689. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/set-model.handler.js +2 -2
  690. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/set-thinking-budget.handler.d.ts +1 -1
  691. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/set-thinking-budget.handler.js +3 -3
  692. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/start.handler.d.ts +1 -1
  693. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/start.handler.js +4 -4
  694. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/start.handler.test.js +1 -5
  695. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/start.handler.test.js.map +1 -1
  696. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/stop.handler.d.ts +1 -1
  697. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/stop.handler.js +2 -2
  698. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/user-input.handler.d.ts +1 -1
  699. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/user-input.handler.js +1 -1
  700. package/dist/src/backend/services/session/service/chat/chat-message-handlers/handlers/utils.js +1 -1
  701. package/dist/src/backend/services/session/service/chat/chat-message-handlers/types.d.ts +1 -1
  702. package/dist/src/backend/services/session/service/chat/chat-message-handlers/utils.d.ts +3 -3
  703. package/dist/src/backend/services/session/service/chat/chat-message-handlers/utils.d.ts.map +1 -1
  704. package/dist/src/backend/services/session/service/chat/chat-message-handlers.service.d.ts +1 -1
  705. package/dist/src/backend/services/session/service/chat/chat-message-handlers.service.d.ts.map +1 -1
  706. package/dist/src/backend/services/session/service/chat/chat-message-handlers.service.js +7 -7
  707. package/dist/src/backend/services/session/service/chat/chat-message-handlers.service.js.map +1 -1
  708. package/dist/src/backend/services/session/service/chat/chat-message-handlers.service.test.js +2 -2
  709. package/dist/src/backend/services/session/service/chat/chat-message-handlers.service.test.js.map +1 -1
  710. package/dist/src/backend/services/session/service/data/codex-session-history-loader.service.d.ts.map +1 -1
  711. package/dist/src/backend/services/session/service/data/codex-session-history-loader.service.js +2 -2
  712. package/dist/src/backend/services/session/service/data/session-data.service.d.ts +5 -5
  713. package/dist/src/backend/services/session/service/data/session-data.service.d.ts.map +1 -1
  714. package/dist/src/backend/services/session/service/data/session-data.service.js +2 -2
  715. package/dist/src/backend/services/session/service/data/session-data.service.test.js +1 -1
  716. package/dist/src/backend/services/session/service/data/session-history-loader.service.d.ts.map +1 -1
  717. package/dist/src/backend/services/session/service/data/session-history-loader.service.js +3 -3
  718. package/dist/src/backend/services/session/service/data/session-history-loader.service.test.js +1 -1
  719. package/dist/src/backend/services/session/service/data/session-provider-resolver.service.d.ts.map +1 -1
  720. package/dist/src/backend/services/session/service/data/session-provider-resolver.service.js +4 -4
  721. package/dist/src/backend/services/session/service/data/session-provider-resolver.service.test.js +3 -3
  722. package/dist/src/backend/services/session/service/data/session-provider-resolver.service.test.js.map +1 -1
  723. package/dist/src/backend/services/session/service/index.d.ts +5 -4
  724. package/dist/src/backend/services/session/service/index.d.ts.map +1 -1
  725. package/dist/src/backend/services/session/service/index.js +4 -3
  726. package/dist/src/backend/services/session/service/index.js.map +1 -1
  727. package/dist/src/backend/services/session/service/lifecycle/acp-config-snapshot.d.ts +47 -0
  728. package/dist/src/backend/services/session/service/lifecycle/acp-config-snapshot.d.ts.map +1 -0
  729. package/dist/src/backend/services/session/service/lifecycle/acp-config-snapshot.js +59 -0
  730. package/dist/src/backend/services/session/service/lifecycle/acp-config-snapshot.js.map +1 -0
  731. package/dist/src/backend/services/session/service/lifecycle/acp-config-snapshot.test.d.ts +2 -0
  732. package/dist/src/backend/services/session/service/lifecycle/acp-config-snapshot.test.d.ts.map +1 -0
  733. package/dist/src/backend/services/session/service/lifecycle/acp-config-snapshot.test.js +82 -0
  734. package/dist/src/backend/services/session/service/lifecycle/acp-config-snapshot.test.js.map +1 -0
  735. package/dist/src/backend/services/session/service/lifecycle/acp-event-processor.d.ts +2 -2
  736. package/dist/src/backend/services/session/service/lifecycle/acp-event-processor.d.ts.map +1 -1
  737. package/dist/src/backend/services/session/service/lifecycle/acp-event-processor.js +7 -7
  738. package/dist/src/backend/services/session/service/lifecycle/acp-event-processor.slash-commands.test.js.map +1 -1
  739. package/dist/src/backend/services/session/service/lifecycle/acp-event-processor.text-streaming.test.js +2 -6
  740. package/dist/src/backend/services/session/service/lifecycle/acp-event-processor.text-streaming.test.js.map +1 -1
  741. package/dist/src/backend/services/session/service/lifecycle/acp-event-processor.tool-timeout.test.js +1 -1
  742. package/dist/src/backend/services/session/service/lifecycle/acp-event-processor.tool-timeout.test.js.map +1 -1
  743. package/dist/src/backend/services/session/service/lifecycle/closed-session-persistence.service.d.ts.map +1 -1
  744. package/dist/src/backend/services/session/service/lifecycle/closed-session-persistence.service.js +3 -3
  745. package/dist/src/backend/services/session/service/lifecycle/closed-session-persistence.service.test.js +2 -2
  746. package/dist/src/backend/services/session/service/lifecycle/codex-model-catalog.service.d.ts +13 -0
  747. package/dist/src/backend/services/session/service/lifecycle/codex-model-catalog.service.d.ts.map +1 -0
  748. package/dist/src/backend/services/session/service/lifecycle/codex-model-catalog.service.js +25 -0
  749. package/dist/src/backend/services/session/service/lifecycle/codex-model-catalog.service.js.map +1 -0
  750. package/dist/src/backend/services/session/service/lifecycle/codex-model-catalog.service.test.d.ts +2 -0
  751. package/dist/src/backend/services/session/service/lifecycle/codex-model-catalog.service.test.d.ts.map +1 -0
  752. package/dist/src/backend/services/session/service/lifecycle/codex-model-catalog.service.test.js +111 -0
  753. package/dist/src/backend/services/session/service/lifecycle/codex-model-catalog.service.test.js.map +1 -0
  754. package/dist/src/backend/services/session/service/lifecycle/session-config-option-helpers.d.ts.map +1 -1
  755. package/dist/src/backend/services/session/service/lifecycle/session-config-option-helpers.js +3 -0
  756. package/dist/src/backend/services/session/service/lifecycle/session-config-option-helpers.js.map +1 -1
  757. package/dist/src/backend/services/session/service/lifecycle/session-config-option-helpers.test.d.ts +2 -0
  758. package/dist/src/backend/services/session/service/lifecycle/session-config-option-helpers.test.d.ts.map +1 -0
  759. package/dist/src/backend/services/session/service/lifecycle/session-config-option-helpers.test.js +8 -0
  760. package/dist/src/backend/services/session/service/lifecycle/session-config-option-helpers.test.js.map +1 -0
  761. package/dist/src/backend/services/session/service/lifecycle/session-context.service.d.ts +3 -7
  762. package/dist/src/backend/services/session/service/lifecycle/session-context.service.d.ts.map +1 -1
  763. package/dist/src/backend/services/session/service/lifecycle/session-context.service.js +3 -64
  764. package/dist/src/backend/services/session/service/lifecycle/session-context.service.js.map +1 -1
  765. package/dist/src/backend/services/session/service/lifecycle/session-context.service.test.js +24 -100
  766. package/dist/src/backend/services/session/service/lifecycle/session-context.service.test.js.map +1 -1
  767. package/dist/src/backend/services/session/service/lifecycle/session-core-services.d.ts +2 -0
  768. package/dist/src/backend/services/session/service/lifecycle/session-core-services.d.ts.map +1 -1
  769. package/dist/src/backend/services/session/service/lifecycle/session-core-services.js +11 -6
  770. package/dist/src/backend/services/session/service/lifecycle/session-core-services.js.map +1 -1
  771. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle-event.service.d.ts +2 -2
  772. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle-event.service.d.ts.map +1 -1
  773. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle-event.service.js +2 -2
  774. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle-event.service.js.map +1 -1
  775. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle-event.service.test.js +2 -2
  776. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle-external-ports.d.ts.map +1 -1
  777. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle-external-ports.js +17 -11
  778. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle-external-ports.js.map +1 -1
  779. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle-external-ports.test.js +27 -11
  780. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle-external-ports.test.js.map +1 -1
  781. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle-gate.d.ts +1 -0
  782. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle-gate.d.ts.map +1 -1
  783. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle-gate.js +3 -0
  784. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle-gate.js.map +1 -1
  785. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle.test-helpers.d.ts +6 -6
  786. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle.test-helpers.d.ts.map +1 -1
  787. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle.test-helpers.js +1 -12
  788. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle.test-helpers.js.map +1 -1
  789. package/dist/src/backend/services/session/service/lifecycle/session-lifecycle.types.d.ts +1 -1
  790. package/dist/src/backend/services/session/service/lifecycle/session-notification-delivery.service.d.ts.map +1 -1
  791. package/dist/src/backend/services/session/service/lifecycle/session-notification-delivery.service.js +1 -1
  792. package/dist/src/backend/services/session/service/lifecycle/session-notification-delivery.service.test.js.map +1 -1
  793. package/dist/src/backend/services/session/service/lifecycle/session-pr-discovery.service.d.ts +2 -2
  794. package/dist/src/backend/services/session/service/lifecycle/session-pr-discovery.service.test.js +1 -1
  795. package/dist/src/backend/services/session/service/lifecycle/session-provider-history-hydrator.js +6 -6
  796. package/dist/src/backend/services/session/service/lifecycle/session-runtime-exit.coordinator.d.ts +3 -4
  797. package/dist/src/backend/services/session/service/lifecycle/session-runtime-exit.coordinator.d.ts.map +1 -1
  798. package/dist/src/backend/services/session/service/lifecycle/session-runtime-exit.coordinator.js +11 -27
  799. package/dist/src/backend/services/session/service/lifecycle/session-runtime-exit.coordinator.js.map +1 -1
  800. package/dist/src/backend/services/session/service/lifecycle/session-runtime-exit.coordinator.test.js +28 -16
  801. package/dist/src/backend/services/session/service/lifecycle/session-runtime-exit.coordinator.test.js.map +1 -1
  802. package/dist/src/backend/services/session/service/lifecycle/session-services.composition.test.js +1 -2
  803. package/dist/src/backend/services/session/service/lifecycle/session-services.composition.test.js.map +1 -1
  804. package/dist/src/backend/services/session/service/lifecycle/session-services.d.ts +3 -3
  805. package/dist/src/backend/services/session/service/lifecycle/session-services.d.ts.map +1 -1
  806. package/dist/src/backend/services/session/service/lifecycle/session-services.js +3 -3
  807. package/dist/src/backend/services/session/service/lifecycle/session-services.js.map +1 -1
  808. package/dist/src/backend/services/session/service/lifecycle/session-startup.coordinator.d.ts +4 -4
  809. package/dist/src/backend/services/session/service/lifecycle/session-startup.coordinator.d.ts.map +1 -1
  810. package/dist/src/backend/services/session/service/lifecycle/session-startup.coordinator.js +2 -4
  811. package/dist/src/backend/services/session/service/lifecycle/session-startup.coordinator.js.map +1 -1
  812. package/dist/src/backend/services/session/service/lifecycle/session-startup.coordinator.test.js +4 -4
  813. package/dist/src/backend/services/session/service/lifecycle/session-termination.coordinator.d.ts +3 -3
  814. package/dist/src/backend/services/session/service/lifecycle/session-termination.coordinator.d.ts.map +1 -1
  815. package/dist/src/backend/services/session/service/lifecycle/session-termination.coordinator.js +2 -2
  816. package/dist/src/backend/services/session/service/lifecycle/session-termination.coordinator.js.map +1 -1
  817. package/dist/src/backend/services/session/service/lifecycle/session-termination.coordinator.test.js +2 -2
  818. package/dist/src/backend/services/session/service/lifecycle/session-workflow-finalizer.d.ts +4 -4
  819. package/dist/src/backend/services/session/service/lifecycle/session-workflow-finalizer.d.ts.map +1 -1
  820. package/dist/src/backend/services/session/service/lifecycle/session-workflow-finalizer.js +1 -1
  821. package/dist/src/backend/services/session/service/lifecycle/session-workflow-finalizer.js.map +1 -1
  822. package/dist/src/backend/services/session/service/lifecycle/session-workflow-finalizer.test.js.map +1 -1
  823. package/dist/src/backend/services/session/service/lifecycle/session-workflow-permissions.d.ts +7 -0
  824. package/dist/src/backend/services/session/service/lifecycle/session-workflow-permissions.d.ts.map +1 -0
  825. package/dist/src/backend/services/session/service/lifecycle/session-workflow-permissions.js +9 -0
  826. package/dist/src/backend/services/session/service/lifecycle/session-workflow-permissions.js.map +1 -0
  827. package/dist/src/backend/services/session/service/lifecycle/session.config-validation.test.d.ts +2 -0
  828. package/dist/src/backend/services/session/service/lifecycle/session.config-validation.test.d.ts.map +1 -0
  829. package/dist/src/backend/services/session/service/lifecycle/session.config-validation.test.js +92 -0
  830. package/dist/src/backend/services/session/service/lifecycle/session.config-validation.test.js.map +1 -0
  831. package/dist/src/backend/services/session/service/lifecycle/session.config.service.cached-options.test.d.ts +2 -0
  832. package/dist/src/backend/services/session/service/lifecycle/session.config.service.cached-options.test.d.ts.map +1 -0
  833. package/dist/src/backend/services/session/service/lifecycle/session.config.service.cached-options.test.js +41 -0
  834. package/dist/src/backend/services/session/service/lifecycle/session.config.service.cached-options.test.js.map +1 -0
  835. package/dist/src/backend/services/session/service/lifecycle/session.config.service.d.ts +6 -7
  836. package/dist/src/backend/services/session/service/lifecycle/session.config.service.d.ts.map +1 -1
  837. package/dist/src/backend/services/session/service/lifecycle/session.config.service.js +27 -84
  838. package/dist/src/backend/services/session/service/lifecycle/session.config.service.js.map +1 -1
  839. package/dist/src/backend/services/session/service/lifecycle/session.config.service.test.js +18 -20
  840. package/dist/src/backend/services/session/service/lifecycle/session.config.service.test.js.map +1 -1
  841. package/dist/src/backend/services/session/service/lifecycle/session.lifecycle.facade.test.js +1 -3
  842. package/dist/src/backend/services/session/service/lifecycle/session.lifecycle.facade.test.js.map +1 -1
  843. package/dist/src/backend/services/session/service/lifecycle/session.lifecycle.service.d.ts +4 -5
  844. package/dist/src/backend/services/session/service/lifecycle/session.lifecycle.service.d.ts.map +1 -1
  845. package/dist/src/backend/services/session/service/lifecycle/session.lifecycle.service.js.map +1 -1
  846. package/dist/src/backend/services/session/service/lifecycle/session.permission.service.d.ts +2 -2
  847. package/dist/src/backend/services/session/service/lifecycle/session.permission.service.d.ts.map +1 -1
  848. package/dist/src/backend/services/session/service/lifecycle/session.permission.service.js +6 -3
  849. package/dist/src/backend/services/session/service/lifecycle/session.permission.service.js.map +1 -1
  850. package/dist/src/backend/services/session/service/lifecycle/session.permission.service.test.js +21 -0
  851. package/dist/src/backend/services/session/service/lifecycle/session.permission.service.test.js.map +1 -1
  852. package/dist/src/backend/services/session/service/lifecycle/session.prompt-builder.d.ts +0 -33
  853. package/dist/src/backend/services/session/service/lifecycle/session.prompt-builder.d.ts.map +1 -1
  854. package/dist/src/backend/services/session/service/lifecycle/session.prompt-builder.js +0 -40
  855. package/dist/src/backend/services/session/service/lifecycle/session.prompt-builder.js.map +1 -1
  856. package/dist/src/backend/services/session/service/lifecycle/session.prompt-builder.test.js +2 -170
  857. package/dist/src/backend/services/session/service/lifecycle/session.prompt-builder.test.js.map +1 -1
  858. package/dist/src/backend/services/session/service/lifecycle/session.prompt-turn-completion.service.d.ts.map +1 -1
  859. package/dist/src/backend/services/session/service/lifecycle/session.prompt-turn-completion.service.js +1 -1
  860. package/dist/src/backend/services/session/service/lifecycle/session.prompt.service.test.js +2 -2
  861. package/dist/src/backend/services/session/service/lifecycle/session.repository.d.ts +5 -13
  862. package/dist/src/backend/services/session/service/lifecycle/session.repository.d.ts.map +1 -1
  863. package/dist/src/backend/services/session/service/lifecycle/session.repository.js +3 -8
  864. package/dist/src/backend/services/session/service/lifecycle/session.repository.js.map +1 -1
  865. package/dist/src/backend/services/session/service/lifecycle/session.repository.test.js +1 -4
  866. package/dist/src/backend/services/session/service/lifecycle/session.repository.test.js.map +1 -1
  867. package/dist/src/backend/services/session/service/lifecycle/session.retry.service.d.ts.map +1 -1
  868. package/dist/src/backend/services/session/service/lifecycle/session.retry.service.js +1 -1
  869. package/dist/src/backend/services/session/service/lifecycle/session.service.d.ts +3 -3
  870. package/dist/src/backend/services/session/service/lifecycle/session.service.d.ts.map +1 -1
  871. package/dist/src/backend/services/session/service/lifecycle/session.service.js +2 -2
  872. package/dist/src/backend/services/session/service/lifecycle/session.service.test.js +27 -182
  873. package/dist/src/backend/services/session/service/lifecycle/session.service.test.js.map +1 -1
  874. package/dist/src/backend/services/session/service/logging/acp-trace-logger.service.d.ts.map +1 -1
  875. package/dist/src/backend/services/session/service/logging/acp-trace-logger.service.js +2 -2
  876. package/dist/src/backend/services/session/service/logging/acp-trace-logger.service.test.js +1 -1
  877. package/dist/src/backend/services/session/service/logging/session-file-logger.service.d.ts.map +1 -1
  878. package/dist/src/backend/services/session/service/logging/session-file-logger.service.js +2 -2
  879. package/dist/src/backend/services/session/service/logging/session-file-logger.service.js.map +1 -1
  880. package/dist/src/backend/services/session/service/session-domain.service.d.ts.map +1 -1
  881. package/dist/src/backend/services/session/service/session-domain.service.js +1 -1
  882. package/dist/src/backend/services/session/service/session-domain.service.test.js +2 -2
  883. package/dist/src/backend/services/session/service/session-event-bus.d.ts.map +1 -1
  884. package/dist/src/backend/services/session/service/store/session-lifecycle-transcript.d.ts +1 -1
  885. package/dist/src/backend/services/session/service/store/session-publisher.d.ts.map +1 -1
  886. package/dist/src/backend/services/session/service/store/session-publisher.js +2 -2
  887. package/dist/src/backend/services/session/service/store/session-queue.js +1 -1
  888. package/dist/src/backend/services/session/service/store/session-queue.test.js +1 -1
  889. package/dist/src/backend/services/session/service/store/session-runtime-machine.d.ts.map +1 -1
  890. package/dist/src/backend/services/session/service/store/session-runtime-machine.js.map +1 -1
  891. package/dist/src/backend/services/session/service/store/session-store-registry.d.ts.map +1 -1
  892. package/dist/src/backend/services/session/service/store/session-tool-call-recovery.d.ts.map +1 -1
  893. package/dist/src/backend/services/session/service/store/session-tool-call-recovery.js +2 -0
  894. package/dist/src/backend/services/session/service/store/session-tool-call-recovery.js.map +1 -1
  895. package/dist/src/backend/services/session/service/store/session-tool-call-recovery.test.js +11 -0
  896. package/dist/src/backend/services/session/service/store/session-tool-call-recovery.test.js.map +1 -1
  897. package/dist/src/backend/services/session/service/store/session-transcript.js +2 -2
  898. package/dist/src/backend/services/session/service/store/session-transcript.js.map +1 -1
  899. package/dist/src/backend/services/session/service/store/slash-command-cache.service.d.ts.map +1 -1
  900. package/dist/src/backend/services/session/service/store/slash-command-cache.service.js +2 -2
  901. package/dist/src/backend/services/session/service/store/slash-command-cache.service.test.js +1 -1
  902. package/dist/src/backend/services/session/service/store/slash-command-disk-scanner.js.map +1 -1
  903. package/dist/src/backend/services/session/service/voice/voice-narration.service.d.ts +1 -0
  904. package/dist/src/backend/services/session/service/voice/voice-narration.service.d.ts.map +1 -1
  905. package/dist/src/backend/services/session/service/voice/voice-narration.service.js +75 -25
  906. package/dist/src/backend/services/session/service/voice/voice-narration.service.js.map +1 -1
  907. package/dist/src/backend/services/session/service/voice/voice-narration.service.test.js +197 -114
  908. package/dist/src/backend/services/session/service/voice/voice-narration.service.test.js.map +1 -1
  909. package/dist/src/backend/services/settings/resources/data-backup.accessor.d.ts.map +1 -1
  910. package/dist/src/backend/services/settings/resources/data-backup.accessor.js +1 -1
  911. package/dist/src/backend/services/settings/resources/health.accessor.d.ts.map +1 -1
  912. package/dist/src/backend/services/settings/resources/health.accessor.js +1 -1
  913. package/dist/src/backend/services/settings/resources/user-settings.accessor.d.ts.map +1 -1
  914. package/dist/src/backend/services/settings/resources/user-settings.accessor.js +2 -2
  915. package/dist/src/backend/services/settings/service/health.service.d.ts.map +1 -1
  916. package/dist/src/backend/services/settings/service/health.service.js +1 -1
  917. package/dist/src/backend/services/settings/service/settings-domain-exports.test.js +1 -1
  918. package/dist/src/backend/services/settings/service/user-settings.service.d.ts.map +1 -1
  919. package/dist/src/backend/services/settings/service/user-settings.service.js +1 -1
  920. package/dist/src/backend/services/terminal/resources/terminal-session.accessor.d.ts.map +1 -1
  921. package/dist/src/backend/services/terminal/resources/terminal-session.accessor.js +1 -1
  922. package/dist/src/backend/services/terminal/service/terminal-session.service.d.ts +7 -7
  923. package/dist/src/backend/services/terminal/service/terminal-session.service.d.ts.map +1 -1
  924. package/dist/src/backend/services/terminal/service/terminal-session.service.js +2 -2
  925. package/dist/src/backend/services/terminal/service/terminal-session.service.test.js +1 -1
  926. package/dist/src/backend/services/terminal/service/terminal.service.d.ts.map +1 -1
  927. package/dist/src/backend/services/terminal/service/terminal.service.js +2 -2
  928. package/dist/src/backend/services/terminal/service/terminal.service.js.map +1 -1
  929. package/dist/src/backend/services/workspace/resources/project.accessor.d.ts +3 -3
  930. package/dist/src/backend/services/workspace/resources/project.accessor.d.ts.map +1 -1
  931. package/dist/src/backend/services/workspace/resources/project.accessor.js +5 -2
  932. package/dist/src/backend/services/workspace/resources/project.accessor.js.map +1 -1
  933. package/dist/src/backend/services/workspace/resources/project.accessor.test.js +24 -2
  934. package/dist/src/backend/services/workspace/resources/project.accessor.test.js.map +1 -1
  935. package/dist/src/backend/services/workspace/resources/workspace-auto-iteration.accessor.d.ts.map +1 -1
  936. package/dist/src/backend/services/workspace/resources/workspace-auto-iteration.accessor.js +1 -1
  937. package/dist/src/backend/services/workspace/resources/workspace-notification.accessor.d.ts.map +1 -1
  938. package/dist/src/backend/services/workspace/resources/workspace-notification.accessor.js +1 -1
  939. package/dist/src/backend/services/workspace/resources/workspace-pr.accessor.d.ts +1 -1
  940. package/dist/src/backend/services/workspace/resources/workspace-pr.accessor.d.ts.map +1 -1
  941. package/dist/src/backend/services/workspace/resources/workspace-pr.accessor.js +1 -1
  942. package/dist/src/backend/services/workspace/resources/workspace-ratchet.accessor.d.ts.map +1 -1
  943. package/dist/src/backend/services/workspace/resources/workspace-ratchet.accessor.js +2 -2
  944. package/dist/src/backend/services/workspace/resources/workspace-ratchet.accessor.test.js.map +1 -1
  945. package/dist/src/backend/services/workspace/resources/workspace-run-script.accessor.d.ts.map +1 -1
  946. package/dist/src/backend/services/workspace/resources/workspace-run-script.accessor.js +1 -1
  947. package/dist/src/backend/services/workspace/resources/workspace.accessor.d.ts +5 -5
  948. package/dist/src/backend/services/workspace/resources/workspace.accessor.d.ts.map +1 -1
  949. package/dist/src/backend/services/workspace/resources/workspace.accessor.js +5 -5
  950. package/dist/src/backend/services/workspace/resources/workspace.accessor.test.js.map +1 -1
  951. package/dist/src/backend/services/workspace/service/lifecycle/activity.service.d.ts +3 -0
  952. package/dist/src/backend/services/workspace/service/lifecycle/activity.service.d.ts.map +1 -1
  953. package/dist/src/backend/services/workspace/service/lifecycle/activity.service.js +54 -9
  954. package/dist/src/backend/services/workspace/service/lifecycle/activity.service.js.map +1 -1
  955. package/dist/src/backend/services/workspace/service/lifecycle/activity.service.test.js +253 -2
  956. package/dist/src/backend/services/workspace/service/lifecycle/activity.service.test.js.map +1 -1
  957. package/dist/src/backend/services/workspace/service/lifecycle/creation.service.d.ts +3 -3
  958. package/dist/src/backend/services/workspace/service/lifecycle/creation.service.d.ts.map +1 -1
  959. package/dist/src/backend/services/workspace/service/lifecycle/creation.service.js +6 -6
  960. package/dist/src/backend/services/workspace/service/lifecycle/creation.service.js.map +1 -1
  961. package/dist/src/backend/services/workspace/service/lifecycle/creation.service.test.js +8 -8
  962. package/dist/src/backend/services/workspace/service/lifecycle/creation.service.test.js.map +1 -1
  963. package/dist/src/backend/services/workspace/service/lifecycle/data.service.d.ts +115 -115
  964. package/dist/src/backend/services/workspace/service/lifecycle/data.service.d.ts.map +1 -1
  965. package/dist/src/backend/services/workspace/service/lifecycle/data.service.js +3 -3
  966. package/dist/src/backend/services/workspace/service/lifecycle/state-machine.service.d.ts +1 -1
  967. package/dist/src/backend/services/workspace/service/lifecycle/state-machine.service.d.ts.map +1 -1
  968. package/dist/src/backend/services/workspace/service/lifecycle/state-machine.service.js +2 -2
  969. package/dist/src/backend/services/workspace/service/lifecycle/state-machine.service.js.map +1 -1
  970. package/dist/src/backend/services/workspace/service/lifecycle/workspace-auto-iteration.service.d.ts +2 -2
  971. package/dist/src/backend/services/workspace/service/lifecycle/workspace-auto-iteration.service.d.ts.map +1 -1
  972. package/dist/src/backend/services/workspace/service/lifecycle/workspace-auto-iteration.service.js +1 -1
  973. package/dist/src/backend/services/workspace/service/lifecycle/workspace-pr-snapshot.service.d.ts +5 -5
  974. package/dist/src/backend/services/workspace/service/lifecycle/workspace-pr-snapshot.service.d.ts.map +1 -1
  975. package/dist/src/backend/services/workspace/service/lifecycle/workspace-pr-snapshot.service.js +2 -2
  976. package/dist/src/backend/services/workspace/service/lifecycle/workspace-ratchet.service.d.ts +2 -2
  977. package/dist/src/backend/services/workspace/service/lifecycle/workspace-ratchet.service.d.ts.map +1 -1
  978. package/dist/src/backend/services/workspace/service/lifecycle/workspace-ratchet.service.js +1 -1
  979. package/dist/src/backend/services/workspace/service/lifecycle/workspace-relationships.service.d.ts +76 -76
  980. package/dist/src/backend/services/workspace/service/lifecycle/workspace-relationships.service.d.ts.map +1 -1
  981. package/dist/src/backend/services/workspace/service/lifecycle/workspace-relationships.service.js +1 -1
  982. package/dist/src/backend/services/workspace/service/lifecycle/workspace-run-script.service.d.ts +2 -2
  983. package/dist/src/backend/services/workspace/service/lifecycle/workspace-run-script.service.d.ts.map +1 -1
  984. package/dist/src/backend/services/workspace/service/lifecycle/workspace-run-script.service.js +1 -1
  985. package/dist/src/backend/services/workspace/service/lifecycle/workspace-state-capabilities.test.js +2 -2
  986. package/dist/src/backend/services/workspace/service/pr-discovery-schedule.js.map +1 -1
  987. package/dist/src/backend/services/workspace/service/query/project-management.service.d.ts +16 -16
  988. package/dist/src/backend/services/workspace/service/query/project-management.service.d.ts.map +1 -1
  989. package/dist/src/backend/services/workspace/service/query/project-management.service.js +1 -1
  990. package/dist/src/backend/services/workspace/service/query/workspace-maintenance.service.d.ts +118 -118
  991. package/dist/src/backend/services/workspace/service/query/workspace-maintenance.service.d.ts.map +1 -1
  992. package/dist/src/backend/services/workspace/service/query/workspace-maintenance.service.js +2 -2
  993. package/dist/src/backend/services/workspace/service/query/workspace-notification.service.d.ts +12 -12
  994. package/dist/src/backend/services/workspace/service/query/workspace-notification.service.d.ts.map +1 -1
  995. package/dist/src/backend/services/workspace/service/query/workspace-notification.service.js +1 -1
  996. package/dist/src/backend/services/workspace/service/query/workspace-notification.service.test.js +1 -1
  997. package/dist/src/backend/services/workspace/service/query/workspace-query.service.d.ts +7 -7
  998. package/dist/src/backend/services/workspace/service/query/workspace-query.service.d.ts.map +1 -1
  999. package/dist/src/backend/services/workspace/service/query/workspace-query.service.js +10 -10
  1000. package/dist/src/backend/services/workspace/service/query/workspace-query.service.test.js +2 -2
  1001. package/dist/src/backend/services/workspace/service/snapshot/workspace-snapshot-store.service.d.ts +2 -2
  1002. package/dist/src/backend/services/workspace/service/snapshot/workspace-snapshot-store.service.d.ts.map +1 -1
  1003. package/dist/src/backend/services/workspace/service/snapshot/workspace-snapshot-store.service.js +8 -5
  1004. package/dist/src/backend/services/workspace/service/snapshot/workspace-snapshot-store.service.js.map +1 -1
  1005. package/dist/src/backend/services/workspace/service/snapshot/workspace-snapshot-store.service.test.js +5 -5
  1006. package/dist/src/backend/services/workspace/service/snapshot/workspace-snapshot-store.service.test.js.map +1 -1
  1007. package/dist/src/backend/services/workspace/service/worktree/git-clone.service.d.ts.map +1 -1
  1008. package/dist/src/backend/services/workspace/service/worktree/git-clone.service.js +4 -4
  1009. package/dist/src/backend/services/workspace/service/worktree/git-ops.service.d.ts +1 -1
  1010. package/dist/src/backend/services/workspace/service/worktree/git-ops.service.d.ts.map +1 -1
  1011. package/dist/src/backend/services/workspace/service/worktree/git-ops.service.js +30 -7
  1012. package/dist/src/backend/services/workspace/service/worktree/git-ops.service.js.map +1 -1
  1013. package/dist/src/backend/services/workspace/service/worktree/git-ops.service.test.js +50 -1
  1014. package/dist/src/backend/services/workspace/service/worktree/git-ops.service.test.js.map +1 -1
  1015. package/dist/src/backend/services/workspace/service/worktree/git-ops.symlink.integration.test.d.ts +2 -0
  1016. package/dist/src/backend/services/workspace/service/worktree/git-ops.symlink.integration.test.d.ts.map +1 -0
  1017. package/dist/src/backend/services/workspace/service/worktree/git-ops.symlink.integration.test.js +47 -0
  1018. package/dist/src/backend/services/workspace/service/worktree/git-ops.symlink.integration.test.js.map +1 -0
  1019. package/dist/src/backend/services/workspace/service/worktree/worktree-init.test.js +1 -1
  1020. package/dist/src/backend/services/workspace/service/worktree/worktree-lifecycle.service.d.ts +1 -1
  1021. package/dist/src/backend/services/workspace/service/worktree/worktree-lifecycle.service.d.ts.map +1 -1
  1022. package/dist/src/backend/services/workspace/service/worktree/worktree-lifecycle.service.js +3 -3
  1023. package/dist/src/backend/services/workspace/service/worktree/worktree-lifecycle.service.js.map +1 -1
  1024. package/dist/src/backend/services/workspace/service/worktree/worktree-lifecycle.service.test.js +2 -2
  1025. package/dist/src/backend/services/workspace-depth-triggers.integration.test.js +1 -1
  1026. package/dist/src/backend/services/workspace-git-state.service.d.ts +8 -2
  1027. package/dist/src/backend/services/workspace-git-state.service.d.ts.map +1 -1
  1028. package/dist/src/backend/services/workspace-git-state.service.js +111 -9
  1029. package/dist/src/backend/services/workspace-git-state.service.js.map +1 -1
  1030. package/dist/src/backend/services/workspace-git-state.service.test.js +99 -3
  1031. package/dist/src/backend/services/workspace-git-state.service.test.js.map +1 -1
  1032. package/dist/src/backend/testing/check-prisma-generated-drift-script.test.js.map +1 -1
  1033. package/dist/src/backend/testing/check-prisma-versions-script.test.js.map +1 -1
  1034. package/dist/src/backend/testing/integration-db.js +1 -1
  1035. package/dist/src/backend/testing/npm-publish-workflow.test.js +14 -2
  1036. package/dist/src/backend/testing/npm-publish-workflow.test.js.map +1 -1
  1037. package/dist/src/backend/trpc/admin.router.test.js +34 -1
  1038. package/dist/src/backend/trpc/admin.router.test.js.map +1 -1
  1039. package/dist/src/backend/trpc/admin.trpc.d.ts +41 -41
  1040. package/dist/src/backend/trpc/admin.trpc.d.ts.map +1 -1
  1041. package/dist/src/backend/trpc/admin.trpc.js +2 -2
  1042. package/dist/src/backend/trpc/admin.trpc.js.map +1 -1
  1043. package/dist/src/backend/trpc/application-error-mapper.d.ts +1 -1
  1044. package/dist/src/backend/trpc/application-error-mapper.test.js +2 -2
  1045. package/dist/src/backend/trpc/application-error-mapper.test.js.map +1 -1
  1046. package/dist/src/backend/trpc/auto-iteration.trpc.d.ts +4 -4
  1047. package/dist/src/backend/trpc/closed-sessions.trpc.d.ts +9 -9
  1048. package/dist/src/backend/trpc/context-dependencies.test.js +9 -9
  1049. package/dist/src/backend/trpc/decision-log.trpc.d.ts +12 -12
  1050. package/dist/src/backend/trpc/github.trpc.d.ts +7 -7
  1051. package/dist/src/backend/trpc/github.trpc.js +1 -1
  1052. package/dist/src/backend/trpc/index.d.ts +562 -562
  1053. package/dist/src/backend/trpc/linear.trpc.d.ts +3 -3
  1054. package/dist/src/backend/trpc/model-catalog.integration.test.d.ts +2 -0
  1055. package/dist/src/backend/trpc/model-catalog.integration.test.d.ts.map +1 -0
  1056. package/dist/src/backend/trpc/model-catalog.integration.test.js +91 -0
  1057. package/dist/src/backend/trpc/model-catalog.integration.test.js.map +1 -0
  1058. package/dist/src/backend/trpc/periodic-task.trpc.d.ts +26 -26
  1059. package/dist/src/backend/trpc/pr-review.trpc.d.ts +4 -4
  1060. package/dist/src/backend/trpc/project.router.test.js.map +1 -1
  1061. package/dist/src/backend/trpc/project.trpc.d.ts +68 -68
  1062. package/dist/src/backend/trpc/project.trpc.d.ts.map +1 -1
  1063. package/dist/src/backend/trpc/project.trpc.js +3 -3
  1064. package/dist/src/backend/trpc/session.trpc.d.ts +174 -174
  1065. package/dist/src/backend/trpc/session.trpc.js +2 -2
  1066. package/dist/src/backend/trpc/trpc.d.ts +5 -5
  1067. package/dist/src/backend/trpc/trpc.d.ts.map +1 -1
  1068. package/dist/src/backend/trpc/trpc.js +2 -2
  1069. package/dist/src/backend/trpc/trpc.test.js +1 -1
  1070. package/dist/src/backend/trpc/user-settings.router.test.js +11 -9
  1071. package/dist/src/backend/trpc/user-settings.router.test.js.map +1 -1
  1072. package/dist/src/backend/trpc/user-settings.trpc.d.ts +19 -19
  1073. package/dist/src/backend/trpc/user-settings.trpc.js +4 -4
  1074. package/dist/src/backend/trpc/user-settings.trpc.js.map +1 -1
  1075. package/dist/src/backend/trpc/voice.trpc.d.ts +3 -3
  1076. package/dist/src/backend/trpc/voice.trpc.d.ts.map +1 -1
  1077. package/dist/src/backend/trpc/voice.trpc.js +6 -3
  1078. package/dist/src/backend/trpc/voice.trpc.js.map +1 -1
  1079. package/dist/src/backend/trpc/voice.trpc.test.js +27 -8
  1080. package/dist/src/backend/trpc/voice.trpc.test.js.map +1 -1
  1081. package/dist/src/backend/trpc/workspace/children.trpc.d.ts +7 -7
  1082. package/dist/src/backend/trpc/workspace/children.trpc.js +4 -4
  1083. package/dist/src/backend/trpc/workspace/composition.test.js +1 -1
  1084. package/dist/src/backend/trpc/workspace/composition.test.js.map +1 -1
  1085. package/dist/src/backend/trpc/workspace/files.preview.router.test.d.ts +2 -0
  1086. package/dist/src/backend/trpc/workspace/files.preview.router.test.d.ts.map +1 -0
  1087. package/dist/src/backend/trpc/workspace/files.preview.router.test.js +196 -0
  1088. package/dist/src/backend/trpc/workspace/files.preview.router.test.js.map +1 -0
  1089. package/dist/src/backend/trpc/workspace/files.trpc.d.ts +5 -5
  1090. package/dist/src/backend/trpc/workspace/files.trpc.d.ts.map +1 -1
  1091. package/dist/src/backend/trpc/workspace/files.trpc.js +9 -23
  1092. package/dist/src/backend/trpc/workspace/files.trpc.js.map +1 -1
  1093. package/dist/src/backend/trpc/workspace/git.router.test.js +72 -1
  1094. package/dist/src/backend/trpc/workspace/git.router.test.js.map +1 -1
  1095. package/dist/src/backend/trpc/workspace/git.trpc.d.ts +7 -7
  1096. package/dist/src/backend/trpc/workspace/git.trpc.d.ts.map +1 -1
  1097. package/dist/src/backend/trpc/workspace/git.trpc.js +34 -15
  1098. package/dist/src/backend/trpc/workspace/git.trpc.js.map +1 -1
  1099. package/dist/src/backend/trpc/workspace/ide.trpc.d.ts +4 -4
  1100. package/dist/src/backend/trpc/workspace/ide.trpc.js +2 -2
  1101. package/dist/src/backend/trpc/workspace/init.router.test.js +40 -1
  1102. package/dist/src/backend/trpc/workspace/init.router.test.js.map +1 -1
  1103. package/dist/src/backend/trpc/workspace/init.trpc.d.ts +42 -42
  1104. package/dist/src/backend/trpc/workspace/init.trpc.d.ts.map +1 -1
  1105. package/dist/src/backend/trpc/workspace/init.trpc.js +23 -17
  1106. package/dist/src/backend/trpc/workspace/init.trpc.js.map +1 -1
  1107. package/dist/src/backend/trpc/workspace/run-script.trpc.d.ts +4 -4
  1108. package/dist/src/backend/trpc/workspace/run-script.trpc.js +1 -1
  1109. package/dist/src/backend/trpc/workspace/workspace-helpers.d.ts +71 -71
  1110. package/dist/src/backend/trpc/workspace.router.test.js +2 -1
  1111. package/dist/src/backend/trpc/workspace.router.test.js.map +1 -1
  1112. package/dist/src/backend/trpc/workspace.trpc.d.ts +339 -339
  1113. package/dist/src/backend/trpc/workspace.trpc.d.ts.map +1 -1
  1114. package/dist/src/backend/trpc/workspace.trpc.js +22 -21
  1115. package/dist/src/backend/trpc/workspace.trpc.js.map +1 -1
  1116. package/dist/src/cli/database-path.js.map +1 -1
  1117. package/dist/src/cli/index.js.map +1 -1
  1118. package/dist/src/cli/proxy.d.ts.map +1 -1
  1119. package/dist/src/cli/proxy.js.map +1 -1
  1120. package/dist/src/cli/runtime-utils.js.map +1 -1
  1121. package/dist/src/cli/runtime-utils.test.js +1 -3
  1122. package/dist/src/cli/runtime-utils.test.js.map +1 -1
  1123. package/dist/src/cli/serve-env.js.map +1 -1
  1124. package/dist/src/cli/serve-env.test.js +1 -5
  1125. package/dist/src/cli/serve-env.test.js.map +1 -1
  1126. package/dist/src/shared/acp-protocol/index.d.ts +1 -1
  1127. package/dist/src/shared/acp-protocol/index.js +1 -1
  1128. package/dist/src/shared/acp-protocol/protocol/guards.js +1 -1
  1129. package/dist/src/shared/acp-protocol/protocol/guards.js.map +1 -1
  1130. package/dist/src/shared/acp-protocol/protocol/index.d.ts +1 -1
  1131. package/dist/src/shared/acp-protocol/protocol/messages.d.ts +2 -2
  1132. package/dist/src/shared/acp-protocol/protocol/websocket.d.ts +7 -7
  1133. package/dist/src/shared/acp-protocol/protocol/websocket.d.ts.map +1 -1
  1134. package/dist/src/shared/acp-protocol/session-update-translator.d.ts.map +1 -1
  1135. package/dist/src/shared/acp-protocol/session-update-translator.js.map +1 -1
  1136. package/dist/src/shared/acp-protocol/subagents.d.ts +92 -92
  1137. package/dist/src/shared/core/enums.d.ts +84 -84
  1138. package/dist/src/shared/core/enums.d.ts.map +1 -1
  1139. package/dist/src/shared/core/workspace-sidebar-status.d.ts +2 -2
  1140. package/dist/src/shared/core/workspace-sidebar-status.d.ts.map +1 -1
  1141. package/dist/src/shared/deepgram-voices.d.ts +7 -3
  1142. package/dist/src/shared/deepgram-voices.d.ts.map +1 -1
  1143. package/dist/src/shared/deepgram-voices.js +62 -45
  1144. package/dist/src/shared/deepgram-voices.js.map +1 -1
  1145. package/dist/src/shared/issue-start-prompt.d.ts.map +1 -1
  1146. package/dist/src/shared/issue-start-prompt.js +6 -160
  1147. package/dist/src/shared/issue-start-prompt.js.map +1 -1
  1148. package/dist/src/shared/kanban-column-projection.d.ts +2 -2
  1149. package/dist/src/shared/kanban-column-projection.js +1 -1
  1150. package/dist/src/shared/pending-request-types.d.ts +1 -1
  1151. package/dist/src/shared/pending-request-types.d.ts.map +1 -1
  1152. package/dist/src/shared/proxy-utils.d.ts +1 -1
  1153. package/dist/src/shared/proxy-utils.d.ts.map +1 -1
  1154. package/dist/src/shared/schemas/auto-iteration.schema.d.ts +10 -10
  1155. package/dist/src/shared/schemas/export-data.schema.d.ts +55 -55
  1156. package/dist/src/shared/schemas/export-data.schema.d.ts.map +1 -1
  1157. package/dist/src/shared/schemas/export-data.schema.js +16 -8
  1158. package/dist/src/shared/schemas/export-data.schema.js.map +1 -1
  1159. package/dist/src/shared/session-runtime.d.ts +4 -4
  1160. package/dist/src/shared/session-runtime.d.ts.map +1 -1
  1161. package/dist/src/shared/websocket/chat-message.schema.d.ts +2 -2
  1162. package/dist/src/shared/workspace-flow-state.d.ts +2 -2
  1163. package/dist/src/shared/workspace-flow-state.d.ts.map +1 -1
  1164. package/dist/src/shared/workspace-sidebar-status.d.ts +1 -1
  1165. package/dist/src/shared/workspace-sidebar-status.js +1 -1
  1166. package/dist/src/shared/workspace-snapshot.d.ts +433 -427
  1167. package/dist/src/shared/workspace-snapshot.d.ts.map +1 -1
  1168. package/dist/src/shared/workspace-snapshot.js +6 -4
  1169. package/dist/src/shared/workspace-snapshot.js.map +1 -1
  1170. package/dist/src/shared/workspace-status-reason.d.ts +5 -5
  1171. package/dist/src/shared/workspace-status-reason.d.ts.map +1 -1
  1172. package/dist/src/test-utils/application-graph.d.ts +3 -3
  1173. package/dist/src/test-utils/application-graph.d.ts.map +1 -1
  1174. package/dist/src/test-utils/application-graph.js +3 -3
  1175. package/dist/src/test-utils/application-graph.js.map +1 -1
  1176. package/dist/tsconfig.backend.tsbuildinfo +1 -1
  1177. package/package.json +67 -75
  1178. package/prisma/migrations/20260904150539_upgrade_deepgram_flux_tts/migration.sql +43 -0
  1179. package/prisma/schema.prisma +1 -1
  1180. package/prompts/quick-actions/fetch-rebase.md +5 -9
  1181. package/prompts/quick-actions/rename-branch.md +4 -8
  1182. package/prompts/quick-actions/review.md +6 -5
  1183. package/prompts/quick-actions/screenshots.md +7 -20
  1184. package/prompts/quick-actions/simplify.md +4 -1
  1185. package/prompts/ratchet/dispatch.md +13 -46
  1186. package/dist/client/assets/abnfDiagram-N423BO3Z-BZQ2vUo6.js +0 -1
  1187. package/dist/client/assets/arc-XI8Jpfl3.js +0 -1
  1188. package/dist/client/assets/architectureDiagram-T3A2C74G-Dt7Y1pyP.js +0 -36
  1189. package/dist/client/assets/blockDiagram-VBNYF7ZC-DldefwGh.js +0 -132
  1190. package/dist/client/assets/c4Diagram-5PPSVZJV-Ba08x7Ef.js +0 -10
  1191. package/dist/client/assets/channel-CRP5IiHm.js +0 -1
  1192. package/dist/client/assets/chunk-2GRJ4B5K-B9S0F-4G.js +0 -1
  1193. package/dist/client/assets/chunk-2Q5K7J3B-CZXgC_Jx.js +0 -1
  1194. package/dist/client/assets/chunk-5RXB4S5H-3z0Q5lZX.js +0 -231
  1195. package/dist/client/assets/chunk-6Q2QTUOP-DhgyUVVB.js +0 -88
  1196. package/dist/client/assets/chunk-GF5L2VYU-B9CpXn1z.js +0 -206
  1197. package/dist/client/assets/chunk-JWPE2WC7-C3uO_aKI.js +0 -1
  1198. package/dist/client/assets/chunk-KBJHAD2P-BclkmYso.js +0 -1
  1199. package/dist/client/assets/chunk-RYQCIY6F-D6aZFqMZ.js +0 -1
  1200. package/dist/client/assets/chunk-XXDRQBXY-BQb7-SCi.js +0 -1
  1201. package/dist/client/assets/classDiagram-JCYQIIEL-CB4-8RDd.js +0 -1
  1202. package/dist/client/assets/classDiagram-v2-OCEON4UE-CB4-8RDd.js +0 -1
  1203. package/dist/client/assets/cose-bilkent-JH36ORCC-WLzzMmoC.js +0 -1
  1204. package/dist/client/assets/cynefin-VYW2F7L2-D2EF0q2Q.js +0 -166
  1205. package/dist/client/assets/cynefinDiagram-MW4NZA55-CwoCQCrP.js +0 -62
  1206. package/dist/client/assets/cytoscape.esm-D3_iZ_3b.js +0 -321
  1207. package/dist/client/assets/dagre-VZM6K2ZE-Cg4AkVGB.js +0 -4
  1208. package/dist/client/assets/defaultLocale-DX6XiGOO.js +0 -1
  1209. package/dist/client/assets/diagram-7IWD3JNH-D9lnDmSl.js +0 -30
  1210. package/dist/client/assets/diagram-B4RE2ZJO-AhUFMusY.js +0 -3
  1211. package/dist/client/assets/diagram-LBJQPF4R-C81JtkuS.js +0 -24
  1212. package/dist/client/assets/diagram-Q27KOJAE-BOzaYlQ2.js +0 -24
  1213. package/dist/client/assets/diagram-UB23O5K3-uXHocDB0.js +0 -41
  1214. package/dist/client/assets/ebnfDiagram-BXEA7PRR-Du4yOTiI.js +0 -1
  1215. package/dist/client/assets/erDiagram-JOGREHBK-BxBwtYA0.js +0 -85
  1216. package/dist/client/assets/flowDiagram-UKHOOZJN-YQc_Us9R.js +0 -156
  1217. package/dist/client/assets/ganttDiagram-PKOTCBZU-CO08NXgj.js +0 -292
  1218. package/dist/client/assets/gitGraphDiagram-DS77QQ5N-NRBrIkNv.js +0 -106
  1219. package/dist/client/assets/graph-DOmOIIwC.js +0 -1
  1220. package/dist/client/assets/index-CVVo6xHd.css +0 -1
  1221. package/dist/client/assets/index-CrLTUCBe.js +0 -695
  1222. package/dist/client/assets/infoDiagram-6WML65LV-CcOh5qQM.js +0 -2
  1223. package/dist/client/assets/init-Gi6I4Gst.js +0 -1
  1224. package/dist/client/assets/ishikawaDiagram-WSZJBQD7-Ci4gKk1n.js +0 -70
  1225. package/dist/client/assets/journeyDiagram-NVQOT4AX-CpW1inrw.js +0 -139
  1226. package/dist/client/assets/kanban-definition-27J2QSJJ-jez_FwZT.js +0 -89
  1227. package/dist/client/assets/katex-HP8lGamR.js +0 -257
  1228. package/dist/client/assets/layout-D-LzfAck.js +0 -1
  1229. package/dist/client/assets/linear-6SNETQpS.js +0 -1
  1230. package/dist/client/assets/map-DxJ2ADlA.js +0 -1
  1231. package/dist/client/assets/mindmap-definition-FAOFIHXS-SmrP71Hb.js +0 -96
  1232. package/dist/client/assets/mobile-baseline-8VVGaFwv.js +0 -10
  1233. package/dist/client/assets/ordinal-Cboi1Yqb.js +0 -1
  1234. package/dist/client/assets/pegDiagram-VL7TDLO6-BdZpPP9I.js +0 -1
  1235. package/dist/client/assets/pieDiagram-7S7Q4E2Y-JiNW5VtU.js +0 -39
  1236. package/dist/client/assets/quadrantDiagram-CIZ2JOQS-C2VhzPor.js +0 -7
  1237. package/dist/client/assets/railroadDiagram-AXF67PYL-BdfHLYrf.js +0 -1
  1238. package/dist/client/assets/requirementDiagram-LRYGKXZP-BRxDcjdJ.js +0 -84
  1239. package/dist/client/assets/sankeyDiagram-W5VNT64P-BvibpHKV.js +0 -40
  1240. package/dist/client/assets/sequenceDiagram-SI44F4Z6-CstrIf8Q.js +0 -162
  1241. package/dist/client/assets/sizeCapture-X5ZJPWSS-fplvtb2v.js +0 -1
  1242. package/dist/client/assets/stateDiagram-OKZ733FA-Cb0qJfhN.js +0 -1
  1243. package/dist/client/assets/stateDiagram-v2-UEYNNEHI-C_Uzjhvg.js +0 -1
  1244. package/dist/client/assets/swimlanes-SLNWSIFB-BAqCm7Gx.js +0 -2
  1245. package/dist/client/assets/swimlanesDiagram-ULZ7WXOC-CO4t8Utk.js +0 -8
  1246. package/dist/client/assets/terminal-instance-B0prRfF6.js +0 -16
  1247. package/dist/client/assets/terminal-instance-DDGTF8rc.css +0 -1
  1248. package/dist/client/assets/timeline-definition-Z64GVDOM-BZbQ0pZK.js +0 -120
  1249. package/dist/client/assets/vennDiagram-T6HMQDX7-B3YQXfS4.js +0 -34
  1250. package/dist/client/assets/wardleyDiagram-T6FBY63Y-Cufi2KwO.js +0 -78
  1251. package/dist/client/assets/xychartDiagram-ELKLHX3M-CHGxh5zQ.js +0 -7
  1252. package/dist/prompts/workflows/bugfix.md +0 -86
  1253. package/dist/prompts/workflows/ci-fix.md +0 -52
  1254. package/dist/prompts/workflows/explore.md +0 -54
  1255. package/dist/prompts/workflows/feature.md +0 -80
  1256. package/dist/prompts/workflows/followup.md +0 -32
  1257. package/dist/prompts/workflows/pr-review-fix.md +0 -50
  1258. package/dist/src/backend/prompts/workflows.d.ts +0 -14
  1259. package/dist/src/backend/prompts/workflows.d.ts.map +0 -1
  1260. package/dist/src/backend/prompts/workflows.js +0 -47
  1261. package/dist/src/backend/prompts/workflows.js.map +0 -1
  1262. package/dist/src/backend/prompts/workflows.test.d.ts +0 -2
  1263. package/dist/src/backend/prompts/workflows.test.d.ts.map +0 -1
  1264. package/dist/src/backend/prompts/workflows.test.js +0 -128
  1265. package/dist/src/backend/prompts/workflows.test.js.map +0 -1
  1266. package/prompts/workflows/bugfix.md +0 -86
  1267. package/prompts/workflows/ci-fix.md +0 -52
  1268. package/prompts/workflows/explore.md +0 -54
  1269. package/prompts/workflows/feature.md +0 -80
  1270. package/prompts/workflows/followup.md +0 -32
  1271. package/prompts/workflows/pr-review-fix.md +0 -50
package/README.md CHANGED
@@ -21,18 +21,24 @@
21
21
  <img src="public/working.png" alt="Factory Factory workspace with parallel agents, code changes, and an integrated terminal" width="1000">
22
22
  </p>
23
23
 
24
- Factory Factory is a local workspace manager for AI coding agents. Every workspace gets its own git worktree and branch, so agents can work on separate tasks without stepping on each other. The UI brings chat, diffs, files, terminals, issues, and pull request status together in one place.
24
+ Factory Factory is a local workspace manager for AI coding agents. Every
25
+ workspace gets its own git worktree and branch, so agents can work on separate
26
+ tasks without stepping on each other. The UI brings chat, diffs, files,
27
+ terminals, issues, and pull request status together in one place.
25
28
 
26
29
  ## Quick start
27
30
 
28
31
  You will need:
29
32
 
30
- - Node.js 22.22+ or 24+
33
+ - Node.js 26.8.1+ for the CLI and development (pinned in `.node-version`); the
34
+ desktop app uses Electron's bundled Node.js runtime
35
+ - macOS 13 (Ventura) or newer for the macOS desktop app
31
36
  - A local git repository
32
37
  - At least one agent provider:
33
38
  - Claude Code, authenticated with `claude login`
34
39
  - A ChatGPT/Codex account configured for Codex sessions
35
- - The authenticated [GitHub CLI](https://cli.github.com/) for GitHub issues and pull requests
40
+ - The authenticated [GitHub CLI](https://cli.github.com/) for GitHub issues and
41
+ pull requests
36
42
 
37
43
  Start Factory Factory without installing it:
38
44
 
@@ -40,23 +46,35 @@ Start Factory Factory without installing it:
40
46
  npx factory-factory@latest serve
41
47
  ```
42
48
 
43
- Factory Factory opens in your browser and stores its database in `~/factory-factory/` by default.
49
+ Factory Factory opens in your browser and stores its database in
50
+ `~/factory-factory/` by default.
51
+
52
+ See [Settings](docs/admin-settings.md) for IDE commands, default chat models,
53
+ and project configuration.
44
54
 
45
55
  Then:
46
56
 
47
57
  1. Add a project by selecting a local git repository.
48
58
  2. Create a workspace, or start one from a GitHub or Linear issue.
49
59
  3. Choose Claude or Codex and start a session.
50
- 4. Review the agent's changes, use the integrated terminal when needed, and open a pull request.
60
+ 4. Review the agent's changes, use the integrated terminal when needed, and open
61
+ a pull request.
51
62
 
52
63
  ## What it does
53
64
 
54
- - **Parallel, isolated work:** Each task runs in a dedicated worktree and branch while your main checkout stays untouched.
55
- - **One workspace for the whole task:** Chat with agents, inspect files and diffs, run commands, and track PR state without switching tools.
56
- - **Claude and Codex sessions:** Factory Factory connects to both providers through the Agent Client Protocol (ACP), with resumable sessions and runtime model options.
57
- - **Issue-to-PR workflow:** Pull assigned work from GitHub or Linear, link it to a workspace, and follow it through to merge.
58
- - **Automatic PR progression:** Ratchet watches open pull requests and can dispatch follow-up agents for failing CI and actionable review feedback.
59
- - **Repeatable automation:** Quick actions, periodic tasks, and child workspaces help split up or repeat common workflows.
65
+ - **Parallel, isolated work:** Each task runs in a dedicated worktree and branch
66
+ while your main checkout stays untouched.
67
+ - **One workspace for the whole task:** Chat with agents, inspect files and
68
+ diffs, run commands, and track PR state without switching tools.
69
+ - **Claude and Codex sessions:** Factory Factory connects to both providers
70
+ through the Agent Client Protocol (ACP), with resumable sessions and runtime
71
+ model options.
72
+ - **Issue-to-PR workflow:** Pull assigned work from GitHub or Linear, link it to
73
+ a workspace, and follow it through to merge.
74
+ - **Automatic PR progression:** Ratchet watches open pull requests and can
75
+ dispatch follow-up agents for failing CI and actionable review feedback.
76
+ - **Repeatable automation:** Quick actions, periodic tasks, and child workspaces
77
+ help split up or repeat common workflows.
60
78
 
61
79
  The core model is intentionally small:
62
80
 
@@ -84,26 +102,53 @@ ff proxy --private # Share the app through a password-protected Cloudflare tunn
84
102
  ff db:studio # Inspect the local database with Prisma Studio
85
103
  ```
86
104
 
87
- `ff proxy` requires `cloudflared` on your `PATH`. Factory Factory automatically runs database migrations, finds an available port, and opens the browser when the server is ready.
105
+ `ff proxy` requires `cloudflared` on your `PATH`. Factory Factory automatically
106
+ runs database migrations, finds an available port, and opens the browser when
107
+ the server is ready.
88
108
 
89
109
  ### Hosting behind your own reverse proxy
90
110
 
91
- To serve Factory Factory from your own domain (e.g. `https://ff.example.com`) via nginx, Caddy, or another reverse proxy:
92
-
93
- - Set `CORS_ALLOWED_ORIGINS` to the exact public origin(s), comma-separated: `CORS_ALLOWED_ORIGINS=https://ff.example.com`. This gates both HTTP CORS and WebSocket upgrades; non-loopback origins must match exactly (scheme + host + non-default port, no trailing slash).
94
- - Keep `BACKEND_HOST` bound to `localhost`/`127.0.0.1` so only your proxy can reach the server.
95
-
96
- By default the server rejects WebSocket upgrades that carry client-address headers (`x-forwarded-for`, `cf-connecting-ip`, etc.), because it expects to sit behind an authenticated proxy that strips them. If your reverse proxy adds these headers, either strip them before forwarding, or set `TRUST_PROXY_HEADERS=true` to accept them. **Only enable `TRUST_PROXY_HEADERS` when the backend is reachable solely through your trusted proxy** (i.e. bound to loopback) — otherwise clients could spoof address headers. The remote-address trust check (loopback / `TRUSTED_LOCAL_CIDRS`) still applies.
111
+ To serve Factory Factory from your own domain (e.g. `https://ff.example.com`)
112
+ via nginx, Caddy, or another reverse proxy:
113
+
114
+ - Set `CORS_ALLOWED_ORIGINS` to the exact public origin(s), comma-separated:
115
+ `CORS_ALLOWED_ORIGINS=https://ff.example.com`. This gates both HTTP CORS and
116
+ WebSocket upgrades; non-loopback origins must match exactly (scheme + host +
117
+ non-default port, no trailing slash).
118
+ - Keep `BACKEND_HOST` bound to `localhost`/`127.0.0.1` so only your proxy can
119
+ reach the server.
120
+
121
+ By default the server rejects WebSocket upgrades that carry client-address
122
+ headers (`x-forwarded-for`, `cf-connecting-ip`, etc.), because it expects to sit
123
+ behind an authenticated proxy that strips them. If your reverse proxy adds these
124
+ headers, either strip them before forwarding, or set `TRUST_PROXY_HEADERS=true`
125
+ to accept them. **Only enable `TRUST_PROXY_HEADERS` when the backend is
126
+ reachable solely through your trusted proxy** (i.e. bound to loopback) —
127
+ otherwise clients could spoof address headers. The remote-address trust check
128
+ (loopback / `TRUSTED_LOCAL_CIDRS`) still applies.
97
129
 
98
130
  ## Security
99
131
 
100
- > [!WARNING]
101
- > Factory Factory runs coding agents that can execute commands and modify files without manual confirmation. Workspaces isolate git branches; they are not containers or security sandboxes.
132
+ > [!WARNING] Factory Factory runs coding agents that can execute commands and
133
+ > modify files without manual confirmation. Workspaces isolate git branches;
134
+ > they are not containers or security sandboxes.
102
135
 
103
- Use Factory Factory only with repositories and agent instructions you trust. Review changes before merging, protect your GitHub and Linear credentials, and consider a VM or container when working with untrusted code.
136
+ Use Factory Factory only with repositories and agent instructions you trust.
137
+ Review changes before merging, protect your GitHub and Linear credentials, and
138
+ consider a VM or container when working with untrusted code.
104
139
 
105
140
  ## Development
106
141
 
142
+ Use pnpm 12.4.2, pinned in `package.json`. Dependency build permissions live in
143
+ `pnpm-workspace.yaml` under `allowBuilds`; review new build scripts with
144
+ `pnpm approve-builds` when adding or updating dependencies.
145
+
146
+ Development requires Git 2.32 or newer for lint-staged. Builds and typechecks
147
+ use TypeScript 7 through the `@typescript/native` package alias. The
148
+ `typescript` alias provides Microsoft's TypeScript 6 compatibility API for
149
+ guardrail scripts and tools that parse source files; `tsc` runs version 7 and
150
+ `tsc6` runs version 6.
151
+
107
152
  ```bash
108
153
  git clone https://github.com/purplefish-ai/factory-factory.git
109
154
  cd factory-factory
@@ -119,11 +164,15 @@ pnpm typecheck
119
164
  pnpm check
120
165
  ```
121
166
 
122
- See [CONTRIBUTING.md](CONTRIBUTING.md) for project structure, conventions, and the full contributor workflow.
167
+ See [CONTRIBUTING.md](CONTRIBUTING.md) for project structure, conventions, and
168
+ the full contributor workflow.
123
169
 
124
170
  ## Acknowledgements
125
171
 
126
- Factory Factory was inspired by [Conductor](https://conductor.build), [VibeKanban](https://vibekanban.com), [Gastown](https://github.com/steveyegge/gastown), and [Multiclaude](https://github.com/dlorenc/multiclaude).
172
+ Factory Factory was inspired by [Conductor](https://conductor.build),
173
+ [VibeKanban](https://vibekanban.com),
174
+ [Gastown](https://github.com/steveyegge/gastown), and
175
+ [Multiclaude](https://github.com/dlorenc/multiclaude).
127
176
 
128
177
  ## License
129
178
 
@@ -0,0 +1 @@
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{n as t}from"./jsx-runtime-BNakU3Ej.js";import{h as n}from"./dist-BO6Gz-vk.js";var r=e(t(),1),i=new Map([[`bold`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M224,44H32A20,20,0,0,0,12,64V88a20,20,0,0,0,16,19.6V192a20,20,0,0,0,20,20H208a20,20,0,0,0,20-20V107.6A20,20,0,0,0,244,88V64A20,20,0,0,0,224,44ZM36,68H220V84H36ZM52,188V108H204v80Zm112-52a12,12,0,0,1-12,12H104a12,12,0,0,1,0-24h48A12,12,0,0,1,164,136Z`}))],[`duotone`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M216,96v96a8,8,0,0,1-8,8H48a8,8,0,0,1-8-8V96Z`,opacity:`0.2`}),r.createElement(`path`,{d:`M224,48H32A16,16,0,0,0,16,64V88a16,16,0,0,0,16,16v88a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V104a16,16,0,0,0,16-16V64A16,16,0,0,0,224,48ZM208,192H48V104H208ZM224,88H32V64H224V88ZM96,136a8,8,0,0,1,8-8h48a8,8,0,0,1,0,16H104A8,8,0,0,1,96,136Z`}))],[`fill`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M224,48H32A16,16,0,0,0,16,64V88a16,16,0,0,0,16,16v88a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V104a16,16,0,0,0,16-16V64A16,16,0,0,0,224,48Zm-72,96H104a8,8,0,0,1,0-16h48a8,8,0,0,1,0,16Zm72-56H32V64H224V88Z`}))],[`light`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M224,50H32A14,14,0,0,0,18,64V88a14,14,0,0,0,14,14h2v90a14,14,0,0,0,14,14H208a14,14,0,0,0,14-14V102h2a14,14,0,0,0,14-14V64A14,14,0,0,0,224,50ZM210,192a2,2,0,0,1-2,2H48a2,2,0,0,1-2-2V102H210ZM226,88a2,2,0,0,1-2,2H32a2,2,0,0,1-2-2V64a2,2,0,0,1,2-2H224a2,2,0,0,1,2,2ZM98,136a6,6,0,0,1,6-6h48a6,6,0,0,1,0,12H104A6,6,0,0,1,98,136Z`}))],[`regular`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M224,48H32A16,16,0,0,0,16,64V88a16,16,0,0,0,16,16v88a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V104a16,16,0,0,0,16-16V64A16,16,0,0,0,224,48ZM208,192H48V104H208ZM224,88H32V64H224V88ZM96,136a8,8,0,0,1,8-8h48a8,8,0,0,1,0,16H104A8,8,0,0,1,96,136Z`}))],[`thin`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M224,52H32A12,12,0,0,0,20,64V88a12,12,0,0,0,12,12h4v92a12,12,0,0,0,12,12H208a12,12,0,0,0,12-12V100h4a12,12,0,0,0,12-12V64A12,12,0,0,0,224,52ZM212,192a4,4,0,0,1-4,4H48a4,4,0,0,1-4-4V100H212ZM228,88a4,4,0,0,1-4,4H32a4,4,0,0,1-4-4V64a4,4,0,0,1,4-4H224a4,4,0,0,1,4,4ZM100,136a4,4,0,0,1,4-4h48a4,4,0,0,1,0,8H104A4,4,0,0,1,100,136Z`}))]]),a=r.forwardRef((e,t)=>r.createElement(n,{ref:t,...e,weights:i}));a.displayName=`ArchiveIcon`;export{a as t};
@@ -0,0 +1 @@
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{n as t}from"./jsx-runtime-BNakU3Ej.js";import{h as n}from"./dist-BO6Gz-vk.js";var r=e(t(),1),i=new Map([[`bold`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M228,128a12,12,0,0,1-12,12H69l51.52,51.51a12,12,0,0,1-17,17l-72-72a12,12,0,0,1,0-17l72-72a12,12,0,0,1,17,17L69,116H216A12,12,0,0,1,228,128Z`}))],[`duotone`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M112,56V200L40,128Z`,opacity:`0.2`}),r.createElement(`path`,{d:`M216,120H120V56a8,8,0,0,0-13.66-5.66l-72,72a8,8,0,0,0,0,11.32l72,72A8,8,0,0,0,120,200V136h96a8,8,0,0,0,0-16ZM104,180.69,51.31,128,104,75.31Z`}))],[`fill`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M224,128a8,8,0,0,1-8,8H120v64a8,8,0,0,1-13.66,5.66l-72-72a8,8,0,0,1,0-11.32l72-72A8,8,0,0,1,120,56v64h96A8,8,0,0,1,224,128Z`}))],[`light`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M222,128a6,6,0,0,1-6,6H54.49l61.75,61.76a6,6,0,1,1-8.48,8.48l-72-72a6,6,0,0,1,0-8.48l72-72a6,6,0,0,1,8.48,8.48L54.49,122H216A6,6,0,0,1,222,128Z`}))],[`regular`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M224,128a8,8,0,0,1-8,8H59.31l58.35,58.34a8,8,0,0,1-11.32,11.32l-72-72a8,8,0,0,1,0-11.32l72-72a8,8,0,0,1,11.32,11.32L59.31,120H216A8,8,0,0,1,224,128Z`}))],[`thin`,r.createElement(r.Fragment,null,r.createElement(`path`,{d:`M220,128a4,4,0,0,1-4,4H49.66l65.17,65.17a4,4,0,0,1-5.66,5.66l-72-72a4,4,0,0,1,0-5.66l72-72a4,4,0,0,1,5.66,5.66L49.66,124H216A4,4,0,0,1,220,128Z`}))]]),a=r.forwardRef((e,t)=>r.createElement(n,{ref:t,...e,weights:i}));a.displayName=`ArrowLeftIcon`;export{a as t};
@@ -0,0 +1 @@
1
+ import{m as e,t}from"./mermaid-parser.core-CpkwJ-8U.js";import{n}from"./chunk-Y2CYZVJY-DsF7k-Jl.js";import{m as r}from"./src-B6xuSHsQ.js";import"./chunk-DU6HZSFF-CHHMX1CR.js";import{n as i,r as a,t as o}from"./chunk-SVP7TREG-BqyZjR36.js";import{t as s}from"./chunk-JWPE2WC7-DVXcaiue.js";import"./mermaid-diagram-kbWN558y.js";var c=e().RailroadAbnf.parser.LangiumParser,l=n(e=>{let t=e.alternatives.map(u);return t.length===1?t[0]:{type:`choice`,alternatives:t}},`transformAlternation`),u=n(e=>{let t=e.elements.map(f);return t.length===1?t[0]:{type:`sequence`,elements:t}},`transformConcatenation`),d=n(e=>{if(e.includes(`*`)){let[t,n]=e.split(`*`);return{min:t?parseInt(t,10):0,max:n?parseInt(n,10):1/0}}let t=parseInt(e,10);return{min:t,max:t}},`parseRepeat`),f=n(e=>{let t=p(e.primary);if(!e.repeat)return t;let{min:n,max:r}=d(e.repeat);return n===0&&r===1?{type:`optional`,element:t}:{type:`repetition`,element:t,min:n,max:r}},`transformElement`),p=n(e=>{switch(e.$type){case`AbnfStringLiteral`:return{type:`terminal`,value:e.value};case`AbnfNumVal`:return{type:`terminal`,value:e.value};case`AbnfRuleName`:return{type:`nonterminal`,name:e.name};case`AbnfGroup`:return l(e.element);case`AbnfOptionalGroup`:return{type:`optional`,element:l(e.element)};default:throw Error(`Unsupported ABNF primary node: ${e.$type}`)}},`transformPrimary`),m=n(e=>({name:e.name,definition:l(e.definition)}),`transformRule`),h=n(e=>{s(e,o),e.title&&o.setTitle(e.title),e.rules.map(e=>o.addRule(m(e)))},`populateDb`),g={parser:{parse:n(e=>{o.clear(),r.debug(`[ABNF Parser] Starting Langium parse`);let n=c.parse(e);if(n.lexerErrors.length>0||n.parserErrors.length>0)throw new t(n);let i=n.value;r.debug(`[ABNF Parser] Parsed rules:`,i.rules.length),h(i),r.debug(`[ABNF Parser] Parse complete`)},`parse`),parser:{yy:o}},db:o,renderer:a,styles:i};export{g as diagram};
@@ -0,0 +1 @@
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{n as t,t as n}from"./jsx-runtime-BNakU3Ej.js";import{h as r,i,o as a,p as o,r as s,t as c}from"./dist-BO6Gz-vk.js";import{t as l}from"./lib-CHy_7XQu.js";import{C as u,E as d,O as f,p,t as m}from"./workspace-a6lf168c.js";import{n as h}from"./trpc-CQO3zfei.js";import{en as g,fn as _,vn as v}from"./vbnet-CwR9YcOY.js";import{l as y}from"./use-websocket-channel-dNXOJZfW.js";import{p as b}from"./en-US-C-x19js7.js";import{c as x,i as S,l as C,n as w,o as T,s as E,t as D}from"./select-Cq3ddA2b.js";import{r as O,v as k}from"./core-DW3tuXQ3.js";import{p as ee}from"./radio-group-BhmTXkIv.js";import{a as te,c as A,i as ne,l as re,n as ie,r as ae,s as oe,t as se}from"./data-import-button-cvKmYZJe.js";import{n as ce,r as le,t as ue}from"./use-download-server-log-efKIcIwE.js";import{n as de,t as fe}from"./textarea-DxWYClhS.js";import{n as pe,t as me}from"./provider-cli-warning-CIAJ88Cy.js";import{O as he}from"./use-websocket-transport-BuYcrZTd.js";import{C as ge,E as j,b as _e,n as ve,t as ye,u as be,w as M}from"./dist-DGw3MClt.js";import{t as N}from"./badge-CoDH1rER.js";import{t as P}from"./label-ANA2Lfpk.js";import{A as xe,O as Se,T as Ce,_ as F,a as we,g as I,h as L,i as Te,k as R,m as z,v as B}from"./index-BJo4hZ8z.js";import{i as V,n as H,r as Ee,t as De}from"./tabs-BBAQyvSA.js";import{i as Oe,n as ke,r as Ae,t as je}from"./voice-vad-ChMQMgBS.js";import{a as Me,i as U,n as Ne,o as W,r as G,t as Pe}from"./table-CUvMM0aA.js";import{i as Fe,n as Ie,t as Le}from"./formatters-D_bnXRun.js";import{t as Re}from"./factory-config-scripts-C2BfO5od.js";var K=e(t(),1),ze=new Map([[`bold`,K.createElement(K.Fragment,null,K.createElement(`path`,{d:`M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z`}))],[`duotone`,K.createElement(K.Fragment,null,K.createElement(`path`,{d:`M218.34,119.6,183.6,154.34a46.58,46.58,0,0,1-44.31,12.26c-.31.34-.62.67-.95,1L103.6,202.34A46.63,46.63,0,1,1,37.66,136.4L72.4,101.66A46.6,46.6,0,0,1,116.71,89.4c.31-.34.62-.67,1-1L152.4,53.66a46.63,46.63,0,0,1,65.94,65.94Z`,opacity:`0.2`}),K.createElement(`path`,{d:`M240,88.23a54.43,54.43,0,0,1-16,37L189.25,160a54.27,54.27,0,0,1-38.63,16h-.05A54.63,54.63,0,0,1,96,119.84a8,8,0,0,1,16,.45A38.62,38.62,0,0,0,150.58,160h0a38.39,38.39,0,0,0,27.31-11.31l34.75-34.75a38.63,38.63,0,0,0-54.63-54.63l-11,11A8,8,0,0,1,135.7,59l11-11A54.65,54.65,0,0,1,224,48,54.86,54.86,0,0,1,240,88.23ZM109,185.66l-11,11A38.41,38.41,0,0,1,70.6,208h0a38.63,38.63,0,0,1-27.29-65.94L78,107.31A38.63,38.63,0,0,1,144,135.71a8,8,0,0,0,7.78,8.22H152a8,8,0,0,0,8-7.78A54.86,54.86,0,0,0,144,96a54.65,54.65,0,0,0-77.27,0L32,130.75A54.62,54.62,0,0,0,70.56,224h0a54.28,54.28,0,0,0,38.64-16l11-11A8,8,0,0,0,109,185.66Z`}))],[`fill`,K.createElement(K.Fragment,null,K.createElement(`path`,{d:`M208,32H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32ZM115.7,192.49a43.31,43.31,0,0,1-55-66.43l25.37-25.37a43.35,43.35,0,0,1,61.25,0,42.9,42.9,0,0,1,9.95,15.43,8,8,0,1,1-15,5.6A27.33,27.33,0,0,0,97.37,112L72,137.37a27.32,27.32,0,0,0,34.68,41.91,8,8,0,1,1,9,13.21Zm79.61-62.55-25.37,25.37A43,43,0,0,1,139.32,168h0a43.35,43.35,0,0,1-40.53-28.12,8,8,0,1,1,15-5.6A27.35,27.35,0,0,0,139.28,152h0a27.14,27.14,0,0,0,19.32-8L184,118.63a27.32,27.32,0,0,0-34.68-41.91,8,8,0,1,1-9-13.21,43.32,43.32,0,0,1,55,66.43Z`}))],[`light`,K.createElement(K.Fragment,null,K.createElement(`path`,{d:`M238,88.18a52.42,52.42,0,0,1-15.4,35.66l-34.75,34.75A52.28,52.28,0,0,1,150.62,174h-.05A52.63,52.63,0,0,1,98,119.9a6,6,0,0,1,6-5.84h.17a6,6,0,0,1,5.83,6.16A40.62,40.62,0,0,0,150.58,162h0a40.4,40.4,0,0,0,28.73-11.9l34.75-34.74A40.63,40.63,0,0,0,156.63,57.9l-11,11a6,6,0,0,1-8.49-8.49l11-11a52.62,52.62,0,0,1,74.43,0A52.83,52.83,0,0,1,238,88.18Zm-127.62,98.9-11,11A40.36,40.36,0,0,1,70.6,210h0a40.63,40.63,0,0,1-28.7-69.36L76.62,105.9A40.63,40.63,0,0,1,146,135.77a6,6,0,0,0,5.83,6.16H152a6,6,0,0,0,6-5.84A52.63,52.63,0,0,0,68.14,97.42L33.38,132.16A52.63,52.63,0,0,0,70.56,222h0a52.26,52.26,0,0,0,37.22-15.42l11-11a6,6,0,1,0-8.49-8.48Z`}))],[`regular`,K.createElement(K.Fragment,null,K.createElement(`path`,{d:`M240,88.23a54.43,54.43,0,0,1-16,37L189.25,160a54.27,54.27,0,0,1-38.63,16h-.05A54.63,54.63,0,0,1,96,119.84a8,8,0,0,1,16,.45A38.62,38.62,0,0,0,150.58,160h0a38.39,38.39,0,0,0,27.31-11.31l34.75-34.75a38.63,38.63,0,0,0-54.63-54.63l-11,11A8,8,0,0,1,135.7,59l11-11A54.65,54.65,0,0,1,224,48,54.86,54.86,0,0,1,240,88.23ZM109,185.66l-11,11A38.41,38.41,0,0,1,70.6,208h0a38.63,38.63,0,0,1-27.29-65.94L78,107.31A38.63,38.63,0,0,1,144,135.71a8,8,0,0,0,16,.45A54.86,54.86,0,0,0,144,96a54.65,54.65,0,0,0-77.27,0L32,130.75A54.62,54.62,0,0,0,70.56,224h0a54.28,54.28,0,0,0,38.64-16l11-11A8,8,0,0,0,109,185.66Z`}))],[`thin`,K.createElement(K.Fragment,null,K.createElement(`path`,{d:`M236,88.12a50.44,50.44,0,0,1-14.81,34.31l-34.75,34.74A50.33,50.33,0,0,1,150.62,172h-.05A50.63,50.63,0,0,1,100,120a4,4,0,0,1,4-3.89h.11a4,4,0,0,1,3.89,4.11A42.64,42.64,0,0,0,150.58,164h0a42.32,42.32,0,0,0,30.14-12.49l34.75-34.74a42.63,42.63,0,1,0-60.29-60.28l-11,11a4,4,0,0,1-5.66-5.65l11-11A50.64,50.64,0,0,1,236,88.12ZM111.78,188.49l-11,11A42.33,42.33,0,0,1,70.6,212h0a42.63,42.63,0,0,1-30.11-72.77l34.75-34.74A42.63,42.63,0,0,1,148,135.82a4,4,0,0,0,8,.23A50.64,50.64,0,0,0,69.55,98.83L34.8,133.57A50.63,50.63,0,0,0,70.56,220h0a50.33,50.33,0,0,0,35.81-14.83l11-11a4,4,0,1,0-5.65-5.66Z`}))]]),Be=new Map([[`bold`,K.createElement(K.Fragment,null,K.createElement(`path`,{d:`M216,48H180V36A28,28,0,0,0,152,8H104A28,28,0,0,0,76,36V48H40a12,12,0,0,0,0,24h4V208a20,20,0,0,0,20,20H192a20,20,0,0,0,20-20V72h4a12,12,0,0,0,0-24ZM100,36a4,4,0,0,1,4-4h48a4,4,0,0,1,4,4V48H100Zm88,168H68V72H188ZM116,104v64a12,12,0,0,1-24,0V104a12,12,0,0,1,24,0Zm48,0v64a12,12,0,0,1-24,0V104a12,12,0,0,1,24,0Z`}))],[`duotone`,K.createElement(K.Fragment,null,K.createElement(`path`,{d:`M200,56V208a8,8,0,0,1-8,8H64a8,8,0,0,1-8-8V56Z`,opacity:`0.2`}),K.createElement(`path`,{d:`M216,48H176V40a24,24,0,0,0-24-24H104A24,24,0,0,0,80,40v8H40a8,8,0,0,0,0,16h8V208a16,16,0,0,0,16,16H192a16,16,0,0,0,16-16V64h8a8,8,0,0,0,0-16ZM96,40a8,8,0,0,1,8-8h48a8,8,0,0,1,8,8v8H96Zm96,168H64V64H192ZM112,104v64a8,8,0,0,1-16,0V104a8,8,0,0,1,16,0Zm48,0v64a8,8,0,0,1-16,0V104a8,8,0,0,1,16,0Z`}))],[`fill`,K.createElement(K.Fragment,null,K.createElement(`path`,{d:`M216,48H176V40a24,24,0,0,0-24-24H104A24,24,0,0,0,80,40v8H40a8,8,0,0,0,0,16h8V208a16,16,0,0,0,16,16H192a16,16,0,0,0,16-16V64h8a8,8,0,0,0,0-16ZM112,168a8,8,0,0,1-16,0V104a8,8,0,0,1,16,0Zm48,0a8,8,0,0,1-16,0V104a8,8,0,0,1,16,0Zm0-120H96V40a8,8,0,0,1,8-8h48a8,8,0,0,1,8,8Z`}))],[`light`,K.createElement(K.Fragment,null,K.createElement(`path`,{d:`M216,50H174V40a22,22,0,0,0-22-22H104A22,22,0,0,0,82,40V50H40a6,6,0,0,0,0,12H50V208a14,14,0,0,0,14,14H192a14,14,0,0,0,14-14V62h10a6,6,0,0,0,0-12ZM94,40a10,10,0,0,1,10-10h48a10,10,0,0,1,10,10V50H94ZM194,208a2,2,0,0,1-2,2H64a2,2,0,0,1-2-2V62H194ZM110,104v64a6,6,0,0,1-12,0V104a6,6,0,0,1,12,0Zm48,0v64a6,6,0,0,1-12,0V104a6,6,0,0,1,12,0Z`}))],[`regular`,K.createElement(K.Fragment,null,K.createElement(`path`,{d:`M216,48H176V40a24,24,0,0,0-24-24H104A24,24,0,0,0,80,40v8H40a8,8,0,0,0,0,16h8V208a16,16,0,0,0,16,16H192a16,16,0,0,0,16-16V64h8a8,8,0,0,0,0-16ZM96,40a8,8,0,0,1,8-8h48a8,8,0,0,1,8,8v8H96Zm96,168H64V64H192ZM112,104v64a8,8,0,0,1-16,0V104a8,8,0,0,1,16,0Zm48,0v64a8,8,0,0,1-16,0V104a8,8,0,0,1,16,0Z`}))],[`thin`,K.createElement(K.Fragment,null,K.createElement(`path`,{d:`M216,52H172V40a20,20,0,0,0-20-20H104A20,20,0,0,0,84,40V52H40a4,4,0,0,0,0,8H52V208a12,12,0,0,0,12,12H192a12,12,0,0,0,12-12V60h12a4,4,0,0,0,0-8ZM92,40a12,12,0,0,1,12-12h48a12,12,0,0,1,12,12V52H92ZM196,208a4,4,0,0,1-4,4H64a4,4,0,0,1-4-4V60H196ZM108,104v64a4,4,0,0,1-8,0V104a4,4,0,0,1,8,0Zm48,0v64a4,4,0,0,1-8,0V104a4,4,0,0,1,8,0Z`}))]]),Ve=K.forwardRef((e,t)=>K.createElement(r,{ref:t,...e,weights:ze}));Ve.displayName=`LinkIcon`;var He=K.forwardRef((e,t)=>K.createElement(r,{ref:t,...e,weights:Be}));He.displayName=`TrashIcon`;var q=n(),Ue={ok:`border-l-success`,warning:`border-l-warning`,error:`border-l-destructive`};function We({title:e,value:t,subtitle:n,status:r}){return(0,q.jsxs)(z,{className:`border-l-4 ${r?Ue[r]:`border-l-muted`}`,children:[(0,q.jsxs)(F,{className:`pb-2`,children:[(0,q.jsx)(I,{children:e}),(0,q.jsx)(B,{className:`text-2xl`,children:t})]}),n&&(0,q.jsx)(L,{className:`pt-0`,children:(0,q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:n})})]})}function Ge({apiUsage:e,onReset:t,isResetting:n}){return(0,q.jsxs)(z,{children:[(0,q.jsxs)(F,{className:`flex flex-row items-center justify-between space-y-0 pb-4`,children:[(0,q.jsx)(B,{children:`API Usage`}),(0,q.jsx)(i,{variant:`link`,onClick:t,disabled:n,className:`h-auto p-0`,children:`Reset Stats`})]}),(0,q.jsx)(L,{children:(0,q.jsxs)(`div`,{className:`grid grid-cols-1 md:grid-cols-4 gap-4`,children:[(0,q.jsx)(We,{title:`Requests/min`,value:e?.requestsLastMinute||0,status:e?.isRateLimited?`warning`:`ok`}),(0,q.jsx)(We,{title:`Requests/hour`,value:e?.requestsLastHour||0}),(0,q.jsx)(We,{title:`Total Requests`,value:e?.totalRequests||0}),(0,q.jsx)(We,{title:`Queue Depth`,value:e?.queueDepth||0,status:e?.queueDepth&&e.queueDepth>10?`warning`:`ok`})]})})]})}function Ke(e,t=`(restart to detect)`){return e==null?t:String(e)}function qe(e){if(e.port){let t=Number.parseInt(e.port,10);if(!Number.isNaN(t))return String(t)}return e.protocol===`http:`?`80`:e.protocol===`https:`?`443`:`(not available)`}function Je(){let{data:e,isLoading:t}=h.admin.getServerInfo.useQuery(void 0,{retry:1,retryDelay:1e3,meta:{suppressErrors:!0}}),n=qe(window.location),r=e?.backendPort??null;return t?(0,q.jsxs)(z,{children:[(0,q.jsxs)(F,{children:[(0,q.jsx)(B,{children:`App Info`}),(0,q.jsx)(I,{children:`Repository and runtime details`})]}),(0,q.jsx)(L,{children:(0,q.jsx)(R,{className:`h-10 w-full`})})]}):(0,q.jsxs)(z,{children:[(0,q.jsxs)(F,{children:[(0,q.jsx)(B,{children:`App Info`}),(0,q.jsx)(I,{children:`Repository and runtime details`})]}),(0,q.jsxs)(L,{className:`space-y-4`,children:[(0,q.jsxs)(`div`,{className:`space-y-2`,children:[(0,q.jsx)(P,{children:`Repository`}),(0,q.jsxs)(`a`,{href:`https://github.com/purplefish-ai/factory-factory`,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center gap-1.5 text-sm text-muted-foreground hover:text-foreground transition-colors`,children:[`GitHub`,(0,q.jsx)(v,{className:`h-3.5 w-3.5`})]})]}),(0,q.jsxs)(`div`,{className:`space-y-2`,children:[(0,q.jsx)(P,{children:`Ports`}),(0,q.jsxs)(`div`,{className:`space-y-1 text-sm text-muted-foreground`,children:[(0,q.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,q.jsx)(`span`,{children:`Frontend`}),(0,q.jsx)(`code`,{className:`rounded bg-muted px-1.5 py-0.5`,children:n})]}),(0,q.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,q.jsx)(`span`,{children:`Backend`}),(0,q.jsx)(`code`,{className:`rounded bg-muted px-1.5 py-0.5`,children:Ke(r)})]})]})]})]})]})}function Ye(){let{data:e,isLoading:t}=h.userSettings.get.useQuery(),{data:n}=h.userSettings.getProviderOptions.useQuery(void 0,{staleTime:3e4}),r=h.useUtils(),[i,a]=(0,K.useState)(`sonnet`),[o,s]=(0,K.useState)(`default`),c=h.userSettings.update.useMutation({onSuccess:()=>{j.success(`Chat defaults updated`),r.userSettings.get.invalidate()},onError:(t,n)=>{let i=r.userSettings.get.getData()??e;n.defaultClaudeModel!==void 0&&a(e=>e===n.defaultClaudeModel?i?.defaultClaudeModel??`sonnet`:e),n.defaultCodexModel!==void 0&&s(e=>e===n.defaultCodexModel?i?.defaultCodexModel??`default`:e),j.error(`Failed to update chat defaults: ${t.message}`)}});if((0,K.useEffect)(()=>{a(e?.defaultClaudeModel??`sonnet`),s(e?.defaultCodexModel??`default`)},[e?.defaultClaudeModel,e?.defaultCodexModel]),t)return(0,q.jsxs)(z,{children:[(0,q.jsxs)(F,{children:[(0,q.jsx)(B,{children:`Chat Defaults`}),(0,q.jsx)(I,{children:`Default provider for new chats`})]}),(0,q.jsx)(L,{children:(0,q.jsx)(R,{className:`h-10 w-full`})})]});let l=e?.defaultSessionProvider??`CLAUDE`,u=e?.defaultClaudeModel??`sonnet`,d=e?.defaultCodexModel??`default`,f=e?.defaultClaudeReasoningEffort??null,p=e?.defaultCodexReasoningEffort??null,m=e?.defaultWorkspacePermissions??`STRICT`,g=`__provider_default__`,_=(e,t)=>{let r=n?.[e]?.models??[];return r.some(e=>e.value===t)?r:[{value:t,label:e===`CLAUDE`?`Saved model — ${t} (not in current catalog)`:t},...r]},v=(e,t)=>{let r=n?.[e]?.efforts??[];return!t||r.some(e=>e.value===t)?r:[{value:t,label:t},...r]},y={CLAUDE:{fallbackValue:`sonnet`,currentValue:u,localValue:i,setLocalValue:a,buildPayload:e=>({defaultClaudeModel:e}),buildEffortPayload:e=>({defaultClaudeReasoningEffort:e})},CODEX:{fallbackValue:`default`,currentValue:d,localValue:o,setLocalValue:s,buildPayload:e=>({defaultCodexModel:e}),buildEffortPayload:e=>({defaultCodexReasoningEffort:e})}},b=(e,t)=>{let n=y[e],r=t.trim()||n.fallbackValue;if(r===n.currentValue){n.localValue!==n.currentValue&&n.setLocalValue(n.currentValue);return}c.mutate(n.buildPayload(r))},x=(e,t)=>{let n=t===g?null:t;c.mutate(y[e].buildEffortPayload(n))};return(0,q.jsxs)(z,{children:[(0,q.jsxs)(F,{children:[(0,q.jsx)(B,{children:`Chat Defaults`}),(0,q.jsx)(I,{children:`Default provider used when a workspace defers provider selection`})]}),(0,q.jsxs)(L,{className:`space-y-3`,children:[(0,q.jsx)(P,{htmlFor:`chat-default-provider`,children:`Default chat provider`}),(0,q.jsxs)(D,{value:l,onValueChange:e=>{(e===`CLAUDE`||e===`CODEX`)&&c.mutate({defaultSessionProvider:e})},disabled:c.isPending,children:[(0,q.jsx)(T,{id:`chat-default-provider`,children:(0,q.jsx)(E,{})}),(0,q.jsxs)(w,{children:[(0,q.jsx)(S,{value:`CLAUDE`,children:`Claude`}),(0,q.jsx)(S,{value:`CODEX`,children:`Codex`})]})]}),(0,q.jsx)(me,{provider:l}),(0,q.jsxs)(`div`,{className:`grid gap-3 pt-1 sm:grid-cols-2`,children:[(0,q.jsxs)(`div`,{className:`space-y-2`,children:[(0,q.jsx)(P,{htmlFor:`default-claude-model`,children:`Default Claude model`}),(0,q.jsxs)(D,{value:i,onValueChange:e=>{a(e),b(`CLAUDE`,e)},disabled:c.isPending,children:[(0,q.jsx)(T,{id:`default-claude-model`,children:(0,q.jsx)(E,{})}),(0,q.jsx)(w,{children:_(`CLAUDE`,u).map(e=>(0,q.jsx)(S,{value:e.value,children:e.label},e.value))})]}),(0,q.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`Claude aliases like `,(0,q.jsx)(`code`,{className:`rounded bg-muted px-1`,children:`sonnet`}),` and`,` `,(0,q.jsx)(`code`,{className:`rounded bg-muted px-1`,children:`opus`}),` are supported.`]})]}),(0,q.jsxs)(`div`,{className:`space-y-2`,children:[(0,q.jsx)(P,{htmlFor:`default-codex-model`,children:`Default Codex model`}),(0,q.jsxs)(D,{value:o,onValueChange:e=>{s(e),b(`CODEX`,e)},disabled:c.isPending,children:[(0,q.jsx)(T,{id:`default-codex-model`,children:(0,q.jsx)(E,{})}),(0,q.jsx)(w,{children:_(`CODEX`,d).map(e=>(0,q.jsx)(S,{value:e.value,children:e.label},e.value))})]}),(0,q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Codex options are loaded from the CLI when available.`})]})]}),(0,q.jsxs)(`div`,{className:`grid gap-3 pt-1 sm:grid-cols-2`,children:[(0,q.jsxs)(`div`,{className:`space-y-2`,children:[(0,q.jsx)(P,{htmlFor:`default-claude-effort`,children:`Default Claude effort`}),(0,q.jsxs)(D,{value:f??g,onValueChange:e=>x(`CLAUDE`,e),disabled:c.isPending,children:[(0,q.jsx)(T,{id:`default-claude-effort`,children:(0,q.jsx)(E,{})}),(0,q.jsxs)(w,{children:[(0,q.jsx)(S,{value:g,children:`Provider default`}),v(`CLAUDE`,f).map(e=>(0,q.jsx)(S,{value:e.value,children:e.label},e.value))]})]})]}),(0,q.jsxs)(`div`,{className:`space-y-2`,children:[(0,q.jsx)(P,{htmlFor:`default-codex-effort`,children:`Default Codex effort`}),(0,q.jsxs)(D,{value:p??g,onValueChange:e=>x(`CODEX`,e),disabled:c.isPending,children:[(0,q.jsx)(T,{id:`default-codex-effort`,children:(0,q.jsx)(E,{})}),(0,q.jsxs)(w,{children:[(0,q.jsx)(S,{value:g,children:`Provider default`}),v(`CODEX`,p).map(e=>(0,q.jsx)(S,{value:e.value,children:e.label},e.value))]})]})]})]}),(0,q.jsxs)(`div`,{className:`space-y-2 pt-1`,children:[(0,q.jsx)(P,{htmlFor:`workspace-permissions`,children:`Default permissions for new workspaces`}),(0,q.jsxs)(D,{value:m,onValueChange:e=>{(e===`STRICT`||e===`RELAXED`||e===`YOLO`)&&c.mutate({defaultWorkspacePermissions:e})},disabled:c.isPending,children:[(0,q.jsx)(T,{id:`workspace-permissions`,children:(0,q.jsx)(E,{})}),(0,q.jsxs)(w,{children:[(0,q.jsx)(S,{value:`STRICT`,children:`Strict`}),(0,q.jsx)(S,{value:`RELAXED`,children:`Relaxed`}),(0,q.jsx)(S,{value:`YOLO`,children:`YOLO`})]})]})]})]})]})}function Xe(){let[e,t]=(0,K.useState)(!1),{refresh:n}=re();return(0,q.jsxs)(z,{children:[(0,q.jsxs)(F,{children:[(0,q.jsxs)(B,{className:`flex items-center gap-2`,children:[(0,q.jsx)(he,{className:`w-5 h-5`}),`CLI Authentication`]}),(0,q.jsx)(I,{children:`Check and manage authentication for Claude, Codex, and GitHub CLI`})]}),(0,q.jsxs)(L,{children:[(0,q.jsx)(A,{onOpenTerminal:()=>t(!0)}),(0,q.jsx)(oe,{open:e,onClose:()=>{t(!1),n()}})]})]})}function Ze(){let[e,t]=(0,K.useState)(!1),n=h.useUtils();return(0,q.jsxs)(z,{children:[(0,q.jsxs)(F,{children:[(0,q.jsxs)(B,{className:`flex items-center gap-2`,children:[(0,q.jsx)(de,{className:`w-5 h-5`}),`Data Backup`]}),(0,q.jsx)(I,{children:`Export and import database data for backup or migration purposes`})]}),(0,q.jsxs)(L,{className:`space-y-4`,children:[(0,q.jsxs)(`div`,{className:`flex flex-col gap-2 sm:flex-row sm:gap-4`,children:[(0,q.jsxs)(i,{onClick:async()=>{t(!0);try{let e=await n.admin.exportData.fetch(),t=JSON.stringify(e,null,2);ce({data:t,mimeType:`application/json`,fileName:`factory-factory-backup-${new Date().toISOString().split(`T`)[0]}.json`}),j.success(`Export completed`)}catch(e){j.error(`Export failed: ${e instanceof Error?e.message:`Unknown error`}`)}finally{t(!1)}},disabled:e,variant:`outline`,className:`w-full sm:w-auto`,children:[(0,q.jsx)(le,{className:`w-4 h-4 mr-2`}),e?`Exporting...`:`Export Data`]}),(0,q.jsx)(se,{variant:`outline`,className:`w-full sm:w-auto`})]}),(0,q.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Export includes projects, workspaces, session metadata, and user preferences. Caches will be rebuilt automatically after import.`})]})]})}function Qe(){let{data:e,isLoading:t}=h.userSettings.get.useQuery(),n=h.useUtils(),[r,a]=(0,K.useState)(!1),o=h.userSettings.update.useMutation({onSuccess:async()=>{j.success(`IDE settings updated`),await Promise.all([n.userSettings.get.invalidate(),n.workspace.getAvailableIdes.invalidate()]),a(!1)},onError:e=>{j.error(`Failed to update settings: ${e.message}`)}}),c=h.userSettings.testCustomCommand.useMutation({onSuccess:()=>{j.success(`Command executed successfully!`)},onError:e=>{j.error(`Command test failed: ${e.message}`)}}),[l,u]=(0,K.useState)(e?.customIdeCommand||``);(0,K.useEffect)(()=>{u(e?.customIdeCommand||``)},[e?.customIdeCommand]);let d=e=>{let t=e.trim();t&&o.mutate({preferredIde:`custom`,customIdeCommand:t})},f=e=>{e===`custom`?(a(!0),d(l)):(e===`cursor`||e===`vscode`)&&(a(!1),o.mutate({preferredIde:e}))},p=r?`custom`:e?.preferredIde??`cursor`;return t?(0,q.jsxs)(z,{children:[(0,q.jsxs)(F,{children:[(0,q.jsx)(B,{children:`IDE Settings`}),(0,q.jsx)(I,{children:`Configure your preferred IDE for opening workspaces`})]}),(0,q.jsx)(L,{children:(0,q.jsx)(R,{className:`h-10 w-full`})})]}):(0,q.jsxs)(z,{children:[(0,q.jsxs)(F,{children:[(0,q.jsx)(B,{children:`IDE Settings`}),(0,q.jsx)(I,{children:`Configure your preferred IDE for opening workspaces`})]}),(0,q.jsxs)(L,{className:`space-y-4`,children:[(0,q.jsxs)(`div`,{className:`space-y-2`,children:[(0,q.jsx)(P,{htmlFor:`ide-select`,children:`Preferred IDE`}),(0,q.jsxs)(D,{value:p,onValueChange:f,disabled:o.isPending,children:[(0,q.jsx)(T,{id:`ide-select`,children:(0,q.jsx)(E,{placeholder:`Select an IDE`})}),(0,q.jsxs)(w,{children:[(0,q.jsx)(S,{value:`cursor`,children:`Cursor`}),(0,q.jsx)(S,{value:`vscode`,children:`VS Code`}),(0,q.jsx)(S,{value:`custom`,children:`Custom`})]})]})]}),p===`custom`&&(0,q.jsxs)(`div`,{className:`space-y-2`,children:[(0,q.jsx)(P,{htmlFor:`custom-command`,children:`Custom Command`}),(0,q.jsxs)(`div`,{className:`flex flex-col gap-2 sm:flex-row`,children:[(0,q.jsx)(s,{id:`custom-command`,value:l,onChange:e=>u(e.target.value),onBlur:()=>d(l),placeholder:`code-insiders {workspace}`,className:`font-mono text-sm flex-1`,disabled:o.isPending}),(0,q.jsx)(i,{variant:`outline`,onClick:()=>{if(!l.trim()){j.error(`Please enter a custom command first`);return}c.mutate({customCommand:l})},disabled:c.isPending||!l.trim(),children:c.isPending?`Testing...`:`Test`})]}),(0,q.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`Use `,(0,q.jsx)(`code`,{className:`bg-muted px-1 py-0.5 rounded`,children:`{workspace}`}),` as a placeholder for the workspace path. Example:`,` `,(0,q.jsxs)(`code`,{className:`bg-muted px-1 py-0.5 rounded`,children:[`code-insiders `,`{workspace}`]})]})]})]})]})}function $e({projectId:e,linearConfig:t,onSave:n,isSaving:r}){let[a,o]=(0,K.useState)(``),[c,l]=(0,K.useState)(t?.viewerName??null),[u,d]=(0,K.useState)([]),[f,p]=(0,K.useState)(null),m=h.linear.validateKeyAndListTeams.useMutation({onError:e=>j.error(`Validation failed: ${e.message}`)}),g=async()=>{try{let e=await m.mutateAsync({apiKey:a});e.valid?(l(e.viewerName??null),d(e.teams??[])):j.error(`Validation failed: ${e.error??`Unknown error`}`)}catch{}},_=()=>{let e=u.find(e=>e.id===f);e&&c&&(n({linear:{apiKey:a,teamId:e.id,teamName:`${e.name} (${e.key})`,viewerName:c}}),o(``),l(null),d([]),p(null))},v=c!==null,y=u.length>0,b=t?.hasApiKey??!1,x=t?.teamName??null;return(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(`div`,{className:`flex items-end gap-2`,children:[(0,q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,q.jsx)(P,{htmlFor:`api-key-${e}`,children:`API Key`}),v&&(0,q.jsxs)(`span`,{className:`flex items-center gap-1 text-xs text-green-600`,children:[(0,q.jsx)(k,{className:`w-3 h-3`}),`Connected as `,c]})]}),(0,q.jsx)(s,{id:`api-key-${e}`,type:`password`,value:a,onChange:e=>o(e.target.value),placeholder:b?`••••••••••••••••••••`:`lin_api_...`,className:`font-mono text-sm w-[280px]`})]}),(0,q.jsx)(i,{variant:`outline`,onClick:g,disabled:m.isPending||!a,children:m.isPending?`Validating...`:`Validate`})]}),v&&y&&(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,q.jsx)(P,{children:`Team`}),(0,q.jsxs)(D,{value:f??``,onValueChange:p,children:[(0,q.jsx)(T,{className:`w-[220px]`,children:(0,q.jsx)(E,{placeholder:`Select a team`})}),(0,q.jsx)(w,{children:u.map(e=>(0,q.jsxs)(S,{value:e.id,children:[e.name,` (`,e.key,`)`]},e.id))})]})]}),(0,q.jsx)(i,{onClick:_,disabled:!f||r,className:`self-end`,children:r?`Saving...`:`Save`})]}),x&&!y&&(0,q.jsxs)(`p`,{className:`text-sm text-muted-foreground self-end pb-2`,children:[`Team: `,x]}),!v&&(0,q.jsxs)(`p`,{className:`text-xs text-muted-foreground mt-2 basis-full`,children:[`Create a personal API key at`,` `,(0,q.jsx)(`a`,{href:`https://linear.app/settings/api`,target:`_blank`,rel:`noopener noreferrer`,className:`underline`,children:`linear.app/settings/api`})]})]})}function et({projectId:e,projectName:t,currentProvider:n,issueTrackerConfig:r}){let i=h.useUtils(),[a,o]=(0,K.useState)(n),s=h.project.update.useMutation({onSuccess:()=>{j.success(`Issue tracking settings saved`),i.project.list.invalidate()},onError:e=>j.error(`Failed to save: ${e.message}`)}),c=t=>{o(t),s.mutate({id:e,issueProvider:t})},l=t=>{s.mutate({id:e,issueProvider:O.LINEAR,issueTrackerConfig:t})},u=a===O.LINEAR,d=!u||r?.linear!=null;return(0,q.jsxs)(`div`,{className:`rounded-lg border bg-card`,children:[(0,q.jsx)(`div`,{className:`border-b bg-muted/50 px-4 py-3`,children:(0,q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,q.jsx)(`h3`,{className:`font-semibold text-sm`,children:t}),d&&(0,q.jsxs)(N,{variant:`default`,className:`bg-green-600 hover:bg-green-700`,children:[(0,q.jsx)(k,{className:`w-3 h-3 mr-1`}),u?`Linear`:`GitHub`]})]})}),(0,q.jsx)(`div`,{className:`p-4`,children:(0,q.jsxs)(`div`,{className:`flex flex-wrap items-end gap-3`,children:[(0,q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,q.jsx)(P,{children:`Issue Provider`}),(0,q.jsxs)(D,{value:a,onValueChange:c,disabled:s.isPending,children:[(0,q.jsx)(T,{className:`w-[180px]`,children:(0,q.jsx)(E,{})}),(0,q.jsxs)(w,{children:[(0,q.jsx)(S,{value:O.GITHUB,children:`GitHub Issues`}),(0,q.jsx)(S,{value:O.LINEAR,children:`Linear Issues`})]})]})]}),u&&(0,q.jsx)($e,{projectId:e,linearConfig:r?.linear??null,onSave:l,isSaving:s.isPending})]})})]})}var tt=Object.defineProperty,J=(e,t)=>tt(e,`name`,{value:t,configurable:!0}),nt=`Switch`,[rt,it]=ge(nt),[at,ot]=rt(nt);function st(e){let{__scopeSwitch:t,checked:n,children:r,defaultChecked:i,disabled:a,form:o,name:s,onCheckedChange:c,required:l,value:u=`on`,internal_do_not_use_render:d}=e,[f,p]=_e({prop:n,defaultProp:i??!1,onChange:c,caller:nt}),[m,h]=K.useState(null),[g,_]=K.useState(null),v=K.useRef(!1),[y,b]=K.useReducer(e=>e+1,0),x={checked:f,setChecked:p,disabled:a,control:m,setControl:h,name:s,form:o,value:u,hasConsumerStoppedPropagationRef:v,userInteractionCount:y,onUserInteraction:b,required:l,defaultChecked:i,isFormControl:!m||!!o||!!m.closest(`form`),bubbleInput:g,setBubbleInput:_};return(0,q.jsx)(at,{scope:t,...x,children:ht(d)?d(x):r})}J(st,`SwitchProvider`);var ct=`SwitchTrigger`,lt=K.forwardRef(J(function({__scopeSwitch:e,onClick:t,...n},r){let{control:i,form:a,value:s,disabled:l,checked:u,required:d,setControl:f,setChecked:p,hasConsumerStoppedPropagationRef:m,onUserInteraction:h,isFormControl:g,bubbleInput:_}=ot(ct,e),v=o(r,f),y=K.useRef(u);return K.useEffect(()=>{let e=a?i?.ownerDocument.getElementById(a):i?.form;if(e instanceof HTMLFormElement){let t=J(()=>p(y.current),`reset`);return e.addEventListener(`reset`,t),()=>e.removeEventListener(`reset`,t)}},[i,a,p]),(0,q.jsx)(c.button,{type:`button`,role:`switch`,"aria-checked":u,"aria-required":d,"data-state":gt(u),"data-disabled":l?``:void 0,disabled:l,value:s,...n,ref:v,onClick:M(t,e=>{h(),p(e=>!e),_&&g&&(m.current=e.isPropagationStopped(),m.current||e.stopPropagation())})})},`SwitchTrigger`)),ut=K.forwardRef(J(function(e,t){let{__scopeSwitch:n,name:r,checked:i,defaultChecked:a,required:o,disabled:s,value:c,onCheckedChange:l,form:u,...d}=e;return(0,q.jsx)(st,{__scopeSwitch:n,checked:i,defaultChecked:a,disabled:s,required:o,onCheckedChange:l,name:r,form:u,value:c,internal_do_not_use_render:({isFormControl:e})=>(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(lt,{...d,ref:t,__scopeSwitch:n}),e&&(0,q.jsx)(mt,{__scopeSwitch:n})]})})},`Switch`)),dt=`SwitchThumb`,ft=K.forwardRef(J(function(e,t){let{__scopeSwitch:n,...r}=e,i=ot(dt,n);return(0,q.jsx)(c.span,{"data-state":gt(i.checked),"data-disabled":i.disabled?``:void 0,...r,ref:t})},`SwitchThumb`)),pt=`SwitchBubbleInput`,mt=K.forwardRef(J(function({__scopeSwitch:e,onClick:t,...n},r){let{control:i,hasConsumerStoppedPropagationRef:a,userInteractionCount:s,checked:l,defaultChecked:u,required:d,disabled:f,name:p,value:m,form:h,bubbleInput:g,setBubbleInput:_}=ot(pt,e),v=o(r,_),y=be(i),b=K.useRef(!1),x=K.useRef(l),S=K.useRef(s);K.useEffect(()=>{let e=g;if(!e)return;let t=window.HTMLInputElement.prototype,n=Object.getOwnPropertyDescriptor(t,`checked`).set,r=s!==S.current;S.current=s;let i=x.current!==l;x.current=l;let o=!(r&&a.current);if(i&&n){b.current=!r;let t=new Event(`click`,{bubbles:o});n.call(e,l),e.dispatchEvent(t),b.current=!1}},[g,l,a,s]);let C=K.useRef(l);return(0,q.jsx)(c.input,{type:`checkbox`,"aria-hidden":!0,defaultChecked:u??C.current,required:d,disabled:f,name:p,value:m,form:h,...n,tabIndex:-1,ref:v,onClick:M(t,e=>{b.current&&e.stopPropagation()}),style:{...n.style,...y,position:`absolute`,pointerEvents:`none`,opacity:0,margin:0,transform:`translateX(-100%)`}})},`SwitchBubbleInput`));function ht(e){return typeof e==`function`}J(ht,`isFunction`);function gt(e){return e?`checked`:`unchecked`}J(gt,`getState`);function Y({className:e,size:t=`default`,...n}){return(0,q.jsx)(ut,{"data-slot":`switch`,"data-size":t,className:a(`peer group/switch inline-flex shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-[1.15rem] data-[size=default]:w-8 data-[size=sm]:h-3.5 data-[size=sm]:w-6 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input dark:data-[state=unchecked]:bg-input/80`,e),...n,children:(0,q.jsx)(ft,{"data-slot":`switch-thumb`,className:a(`pointer-events-none block rounded-full bg-background ring-0 transition-transform group-data-[size=default]/switch:size-4 group-data-[size=sm]/switch:size-3 data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0 dark:data-[state=checked]:bg-primary-foreground dark:data-[state=unchecked]:bg-foreground`)})})}function _t(){let{data:e,isLoading:t}=h.userSettings.get.useQuery(),n=h.useUtils(),r=h.userSettings.update.useMutation({onSuccess:()=>{n.userSettings.get.invalidate()},onError:e=>{j.error(`Failed to update settings: ${e.message}`)}});return t?(0,q.jsxs)(z,{children:[(0,q.jsxs)(F,{children:[(0,q.jsx)(B,{children:`Notification Settings`}),(0,q.jsx)(I,{children:`Configure notification behavior`})]}),(0,q.jsx)(L,{children:(0,q.jsx)(R,{className:`h-10 w-full`})})]}):(0,q.jsxs)(z,{children:[(0,q.jsxs)(F,{children:[(0,q.jsx)(B,{children:`Notification Settings`}),(0,q.jsx)(I,{children:`Configure notification behavior`})]}),(0,q.jsx)(L,{className:`space-y-4`,children:(0,q.jsxs)(`div`,{className:`flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between`,children:[(0,q.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,q.jsx)(P,{htmlFor:`sound-toggle`,children:`Play completion sound`}),(0,q.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Play a sound when a workspace finishes`})]}),(0,q.jsx)(Y,{id:`sound-toggle`,checked:e?.playSoundOnComplete??!0,onCheckedChange:e=>{r.mutate({playSoundOnComplete:e})},disabled:r.isPending})]})})]})}var vt=5;function yt(e,t=Date.now()){let n=e.getTime()-t,r=Math.round(n/1e3);if(Math.abs(r)<=vt)return`now`;let i=bt(Math.abs(r));return r<0?`${i} overdue`:`in ${i}`}function bt(e){if(e<60)return`${e}s`;let t=Math.round(e/60);if(t<60)return`${t}m`;let n=Math.round(t/60);return n<24?`${n}h`:`${Math.round(n/24)}d`}function xt(e,t=localStorage){return Te(t)||e[0]?.slug||``}function St({projects:e}){let[t,n]=(0,K.useState)(()=>xt(e)),r=e.find(e=>e.slug===t)??e[0];return(0,K.useEffect)(()=>{r&&r.slug!==t&&(n(r.slug),we(r.slug))},[r,t]),r?(0,q.jsxs)(`div`,{className:`space-y-6`,children:[(0,q.jsx)(`div`,{className:`flex items-center gap-3`,children:(0,q.jsxs)(D,{value:r.slug,onValueChange:e=>{n(e),we(e)},children:[(0,q.jsx)(T,{className:`w-auto max-w-xs`,children:(0,q.jsx)(E,{placeholder:`Select a project`})}),(0,q.jsx)(w,{children:e.map(e=>(0,q.jsx)(S,{value:e.slug,children:e.name},e.id))})]})}),(0,q.jsx)(Ct,{projectId:r.id})]}):(0,q.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`No projects found.`})}function Ct({projectId:e}){let t=h.useUtils(),{data:n,isLoading:r}=h.periodicTask.list.useQuery({projectId:e},{refetchInterval:1e4}),i=h.periodicTask.delete.useMutation({onSuccess:()=>{j.success(`Periodic task deleted`),t.periodicTask.list.invalidate({projectId:e})},onError:e=>j.error(`Delete failed: ${e.message}`)}),a=h.periodicTask.toggleEnabled.useMutation({onSuccess:()=>{t.periodicTask.list.invalidate({projectId:e})},onError:e=>j.error(`Toggle failed: ${e.message}`)}),o=h.periodicTask.update.useMutation({onSuccess:()=>{j.success(`Periodic task updated`),t.periodicTask.list.invalidate({projectId:e})},onError:e=>j.error(`Update failed: ${e.message}`)});return r?(0,q.jsxs)(z,{children:[(0,q.jsx)(F,{children:(0,q.jsxs)(B,{className:`flex items-center gap-2`,children:[(0,q.jsx)(b,{className:`w-5 h-5`}),`Periodic Tasks`]})}),(0,q.jsx)(L,{children:(0,q.jsx)(R,{className:`h-20 w-full`})})]}):(0,q.jsxs)(z,{children:[(0,q.jsxs)(F,{children:[(0,q.jsxs)(B,{className:`flex items-center gap-2`,children:[(0,q.jsx)(b,{className:`w-5 h-5`}),`Periodic Tasks`]}),(0,q.jsx)(I,{children:`Recurring tasks that create workspaces on a schedule`})]}),(0,q.jsx)(L,{children:!n||n.length===0?(0,q.jsx)(`p`,{className:`text-sm text-muted-foreground py-4 text-center`,children:`No periodic tasks yet. Create one from the workspace launch dropdown.`}):(0,q.jsx)(`div`,{className:`space-y-3`,children:n.map(e=>(0,q.jsx)(Ot,{task:e,onToggle:t=>a.mutate({id:e.id,enabled:t}),onDelete:()=>i.mutate({id:e.id}),onUpdate:t=>o.mutate({id:e.id,...t}),isUpdating:o.isPending||a.isPending},e.id))})})]})}function wt({status:e}){return(0,q.jsx)(N,{variant:{PR_CREATED:`default`,RUNNING:`secondary`}[e]??`destructive`,className:`text-[10px]`,children:{PR_CREATED:`PR Created`,RUNNING:`Running`,FAILED:`Failed`,SKIPPED:`Skipped`}[e]??e})}var Tt=new Set([`DAILY`,`WEEKLY`,`MONTHLY`]);function Et(e,t,n){return e!==t||!n?Intl.DateTimeFormat().resolvedOptions().timeZone:n}function Dt(e,t){let n=e.split(`:`).map(Number),r=n[0]??0,i=n[1]??0,a=new Date(Date.UTC(2e3,0,1,r,i,0,0)),o=a.toLocaleTimeString([],{hour:`numeric`,minute:`2-digit`,timeZone:`UTC`}),s=new Intl.DateTimeFormat(`en-US`,{timeZone:t,timeZoneName:`short`}).formatToParts(a).find(e=>e.type===`timeZoneName`)?.value;return s?`${o} (${s})`:o}function Ot({task:e,onToggle:t,onDelete:n,onUpdate:r,isUpdating:a}){let[o,c]=(0,K.useState)(!1),[l,u]=(0,K.useState)(e.name),[d,p]=(0,K.useState)(e.prompt),[m,h]=(0,K.useState)(e.cadence),[g,_]=(0,K.useState)(e.scheduledTime??``),[v,y]=(0,K.useState)(!1),b=()=>{let t=Tt.has(m)&&!!g,n=t?g:null,i=t?Et(g,e.scheduledTime,e.timezone):null;r({name:l===e.name?void 0:l,prompt:d===e.prompt?void 0:d,cadence:m===e.cadence?void 0:m,scheduledTime:n===e.scheduledTime?void 0:n,timezone:i===e.timezone?void 0:i}),c(!1)},x={EVERY_MINUTE:`Every minute`,EVERY_FIVE_MINUTES:`Every 5 minutes`,DAILY:`Daily`,WEEKLY:`Weekly`,MONTHLY:`Monthly`}[e.cadence]??e.cadence,C=e.executions[0];return(0,q.jsxs)(`div`,{className:`rounded-md border p-3 space-y-2`,children:[(0,q.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0`,children:[(0,q.jsx)(Y,{checked:e.isEnabled,onCheckedChange:t,disabled:a,className:`shrink-0`}),(0,q.jsx)(`span`,{className:`font-medium text-sm truncate`,children:e.name}),(0,q.jsx)(N,{variant:`secondary`,className:`shrink-0 text-[10px]`,children:x})]}),(0,q.jsxs)(`div`,{className:`flex items-center gap-1 shrink-0`,children:[(0,q.jsx)(i,{variant:`ghost`,size:`icon`,className:`h-7 w-7`,onClick:()=>{u(e.name),p(e.prompt),h(e.cadence),_(e.scheduledTime??``),c(!o)},children:(0,q.jsx)(f,{className:`h-3.5 w-3.5`})}),(0,q.jsx)(i,{variant:`ghost`,size:`icon`,className:`h-7 w-7 text-destructive hover:text-destructive`,onClick:n,children:(0,q.jsx)(He,{className:`h-3.5 w-3.5`})})]})]}),(0,q.jsx)(`p`,{className:`text-xs text-muted-foreground line-clamp-2`,children:e.prompt}),(0,q.jsxs)(`div`,{className:`flex items-center gap-3 text-[10px] text-muted-foreground`,children:[e.lastRunAt&&(0,q.jsxs)(`span`,{children:[`Last run: `,new Date(e.lastRunAt).toLocaleString()]}),(0,q.jsxs)(`span`,{title:new Date(e.nextRunAt).toLocaleString(),children:[`Next run: `,yt(new Date(e.nextRunAt))]}),Tt.has(e.cadence)&&e.scheduledTime&&e.timezone&&(0,q.jsxs)(`span`,{children:[`at `,Dt(e.scheduledTime,e.timezone)]}),C&&(0,q.jsx)(wt,{status:C.status})]}),o&&(0,q.jsxs)(`div`,{className:`space-y-2 pt-2 border-t`,children:[(0,q.jsxs)(`div`,{className:`space-y-1`,children:[(0,q.jsx)(P,{className:`text-xs`,children:`Name`}),(0,q.jsx)(s,{className:`h-7 text-xs`,value:l,onChange:e=>u(e.target.value)})]}),(0,q.jsxs)(`div`,{className:`space-y-1`,children:[(0,q.jsx)(P,{className:`text-xs`,children:`Prompt`}),(0,q.jsx)(fe,{className:`text-xs min-h-[60px]`,value:d,onChange:e=>p(e.target.value)})]}),(0,q.jsxs)(`div`,{className:`space-y-1`,children:[(0,q.jsx)(P,{className:`text-xs`,children:`Cadence`}),(0,q.jsxs)(D,{value:m,onValueChange:h,children:[(0,q.jsx)(T,{className:`h-7 text-xs`,children:(0,q.jsx)(E,{})}),(0,q.jsxs)(w,{children:[(0,q.jsx)(S,{value:`EVERY_MINUTE`,children:`Every minute (testing)`}),(0,q.jsx)(S,{value:`EVERY_FIVE_MINUTES`,children:`Every 5 minutes (testing)`}),(0,q.jsx)(S,{value:`DAILY`,children:`Daily`}),(0,q.jsx)(S,{value:`WEEKLY`,children:`Weekly`}),(0,q.jsx)(S,{value:`MONTHLY`,children:`Monthly`})]})]})]}),Tt.has(m)&&(0,q.jsxs)(`div`,{className:`space-y-1`,children:[(0,q.jsx)(P,{className:`text-xs`,children:`Run time (optional)`}),(0,q.jsx)(s,{type:`time`,className:`h-7 text-xs`,value:g,onChange:e=>_(e.target.value)})]}),(0,q.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,q.jsx)(i,{variant:`ghost`,size:`sm`,className:`h-7 text-xs`,onClick:()=>c(!1),children:`Cancel`}),(0,q.jsx)(i,{size:`sm`,className:`h-7 text-xs`,onClick:b,disabled:a,children:`Save`})]})]}),e.executions.length>0&&(0,q.jsxs)(`div`,{children:[(0,q.jsxs)(`button`,{type:`button`,className:`text-[10px] text-muted-foreground hover:text-foreground underline`,onClick:()=>y(!v),children:[v?`Hide`:`Show`,` execution history (`,e.executions.length,`)`]}),v&&(0,q.jsx)(`div`,{className:`mt-2 space-y-1`,children:e.executions.map(e=>(0,q.jsxs)(`div`,{className:`flex items-center gap-2 text-[10px] text-muted-foreground`,children:[(0,q.jsx)(wt,{status:e.status}),(0,q.jsx)(`span`,{children:new Date(e.startedAt).toLocaleString()}),e.prUrl&&(0,q.jsx)(`a`,{href:e.prUrl,target:`_blank`,rel:`noopener noreferrer`,className:`text-primary hover:underline`,children:`PR`})]},e.id))})]})]})}function kt(e){switch(e.toUpperCase()){case`RUNNING`:return`default`;case`IDLE`:case`COMPLETED`:return`secondary`;case`FAILED`:return`destructive`;default:return`outline`}}function At(e){let{process:t}=e;return(0,q.jsx)(G,{children:(0,q.jsxs)(`div`,{className:`flex flex-col`,children:[t.projectSlug?(0,q.jsx)(l,{to:`/projects/${t.projectSlug}/workspaces/${t.workspaceId}`,className:`font-medium hover:underline`,children:t.workspaceName}):(0,q.jsx)(`span`,{className:`font-medium`,children:t.workspaceName}),t.workspaceBranch&&(0,q.jsx)(`span`,{className:`text-xs text-muted-foreground font-mono`,children:t.workspaceBranch})]})})}function jt({process:e,isStopping:t,onStop:n}){return(0,q.jsxs)(`div`,{className:`rounded-md border bg-background p-3`,children:[(0,q.jsxs)(`div`,{className:`flex items-start justify-between gap-2`,children:[(0,q.jsxs)(`div`,{className:`min-w-0`,children:[(0,q.jsx)(`div`,{className:`font-medium truncate`,children:e.workspaceName}),e.workspaceBranch&&(0,q.jsx)(`div`,{className:`text-xs text-muted-foreground font-mono truncate`,children:e.workspaceBranch}),(0,q.jsx)(`div`,{className:`mt-1 text-xs text-muted-foreground font-mono`,children:e.name||e.sessionId.slice(0,8)})]}),(0,q.jsx)(i,{variant:`ghost`,size:`sm`,onClick:()=>n(e.sessionId),disabled:t||e.status===`COMPLETED`||e.status===`FAILED`,title:`Stop session`,children:(0,q.jsx)(g,{className:`w-4 h-4`})})]}),(0,q.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-center gap-2 text-xs`,children:[(0,q.jsx)(N,{variant:`outline`,children:e.workflow}),(0,q.jsx)(N,{variant:kt(e.status),children:e.status})]}),(0,q.jsxs)(`div`,{className:`mt-2 grid grid-cols-2 gap-2 text-xs font-mono text-muted-foreground`,children:[(0,q.jsxs)(`span`,{children:[`CPU: `,Ie(e.cpuPercent)]}),(0,q.jsxs)(`span`,{children:[`Mem: `,Le(e.memoryBytes)]}),(0,q.jsxs)(`span`,{children:[`Idle: `,Fe(e.idleTimeMs)]}),(0,q.jsxs)(`span`,{children:[`PID: `,e.pid??`-`]})]})]})}function Mt({process:e}){return(0,q.jsxs)(`div`,{className:`rounded-md border bg-background p-3`,children:[(0,q.jsx)(`div`,{className:`font-medium truncate`,children:e.workspaceName}),e.workspaceBranch&&(0,q.jsx)(`div`,{className:`text-xs text-muted-foreground font-mono truncate`,children:e.workspaceBranch}),(0,q.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-center gap-2 text-xs text-muted-foreground font-mono`,children:[(0,q.jsxs)(`span`,{children:[`Terminal: `,e.terminalId.slice(0,12)]}),(0,q.jsxs)(`span`,{children:[`PID: `,e.pid]}),(0,q.jsxs)(`span`,{children:[`Size: `,e.cols,`x`,e.rows]})]}),(0,q.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-center gap-2 text-xs font-mono text-muted-foreground`,children:[(0,q.jsxs)(`span`,{children:[`CPU: `,Ie(e.cpuPercent)]}),(0,q.jsxs)(`span`,{children:[`Mem: `,Le(e.memoryBytes)]}),(0,q.jsxs)(`span`,{children:[`Created: `,new Date(e.createdAt).toLocaleTimeString()]})]})]})}function Nt(){return(0,q.jsxs)(z,{children:[(0,q.jsxs)(F,{children:[(0,q.jsxs)(B,{className:`flex items-center gap-2`,children:[`Active Processes`,(0,q.jsx)(R,{className:`h-5 w-16 ml-2`})]}),(0,q.jsx)(I,{children:`Agent and Terminal processes currently running`})]}),(0,q.jsx)(L,{className:`space-y-6`,children:(0,q.jsxs)(`div`,{className:`space-y-3`,children:[(0,q.jsx)(R,{className:`h-5 w-48`}),(0,q.jsxs)(`div`,{className:`border rounded-md p-4 space-y-3`,children:[(0,q.jsx)(R,{className:`h-8 w-full`}),(0,q.jsx)(R,{className:`h-12 w-full`}),(0,q.jsx)(R,{className:`h-12 w-full`})]})]})})]})}function Pt({processes:e}){let t=ee(),n=e?.agent&&e.agent.length>0,r=e?.terminal&&e.terminal.length>0,a=!(n||r),[o,s]=(0,K.useState)(new Set),{data:c}=h.session.getMaxSessionsPerWorkspace.useQuery(),l=h.useUtils(),u=h.admin.stopSession.useMutation(),f=(0,K.useCallback)(async e=>{s(t=>new Set(t).add(e));try{(await u.mutateAsync({sessionId:e})).wasRunning?j.success(`Session stopped`):j.info(`Session was already stopped`),l.admin.getActiveProcesses.invalidate()}catch(e){j.error(`Failed to stop session: ${e instanceof Error?e.message:String(e)}`)}finally{s(t=>{let n=new Set(t);return n.delete(e),n})}},[u,l]),p=e?.agent&&e.agent.length>0?Math.max(...Object.values(e.agent.reduce((e,t)=>(e[t.workspaceId]=(e[t.workspaceId]||0)+1,e),{}))):0;return(0,q.jsxs)(z,{children:[(0,q.jsxs)(F,{children:[(0,q.jsxs)(B,{className:`flex flex-wrap items-center gap-2`,children:[`Active Processes`,e?.summary&&(0,q.jsxs)(q.Fragment,{children:[(0,q.jsxs)(N,{variant:`secondary`,className:`ml-2`,children:[e.summary.totalAgent,` Agent sessions`]}),c!==void 0&&p>0&&(0,q.jsxs)(N,{variant:p>=c*.8?`destructive`:`outline`,title:`Highest session count across all workspaces. Limit is ${c} per workspace.`,children:[`Max per workspace: `,p,`/`,c]})]})]}),(0,q.jsx)(I,{children:`Agent and Terminal processes currently running`})]}),(0,q.jsxs)(L,{className:`space-y-6`,children:[a&&(0,q.jsx)(`p`,{className:`text-muted-foreground text-sm`,children:`No active processes`}),n&&(0,q.jsxs)(`div`,{children:[(0,q.jsxs)(`h4`,{className:`text-sm font-medium mb-2 flex items-center gap-2`,children:[(0,q.jsx)(d,{className:`w-4 h-4`}),`Agent Sessions (`,e.agent.length,`)`]}),t?(0,q.jsx)(`div`,{className:`space-y-2`,children:e.agent.map(e=>(0,q.jsx)(jt,{process:e,isStopping:o.has(e.sessionId),onStop:f},e.sessionId))}):(0,q.jsx)(`div`,{className:`border rounded-md`,children:(0,q.jsxs)(Pe,{children:[(0,q.jsx)(Me,{children:(0,q.jsxs)(W,{children:[(0,q.jsx)(U,{children:`Workspace`}),(0,q.jsx)(U,{children:`Session`}),(0,q.jsx)(U,{children:`Workflow`}),(0,q.jsx)(U,{children:`PID`}),(0,q.jsx)(U,{children:`Resources`}),(0,q.jsx)(U,{children:`Status`}),(0,q.jsx)(U,{children:`Actions`})]})}),(0,q.jsx)(Ne,{children:e.agent.map(e=>(0,q.jsxs)(W,{children:[(0,q.jsx)(At,{process:e}),(0,q.jsx)(G,{children:(0,q.jsxs)(`div`,{className:`flex flex-col`,children:[(0,q.jsx)(`span`,{className:`text-xs font-mono text-muted-foreground`,children:e.name||e.sessionId.slice(0,8)}),(0,q.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:e.model})]})}),(0,q.jsx)(G,{children:(0,q.jsx)(N,{variant:`outline`,children:e.workflow})}),(0,q.jsx)(G,{className:`font-mono text-xs`,children:e.pid??`-`}),(0,q.jsx)(G,{children:(0,q.jsxs)(`div`,{className:`flex flex-col text-xs font-mono`,children:[(0,q.jsxs)(`span`,{children:[`CPU: `,Ie(e.cpuPercent)]}),(0,q.jsxs)(`span`,{children:[`Mem: `,Le(e.memoryBytes)]}),(0,q.jsxs)(`span`,{className:`text-muted-foreground`,children:[`Idle: `,Fe(e.idleTimeMs)]})]})}),(0,q.jsx)(G,{children:(0,q.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,q.jsx)(N,{variant:kt(e.status),children:e.status}),e.memoryStatus&&e.memoryStatus!==e.status.toLowerCase()&&(0,q.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[`(`,e.memoryStatus,`)`]})]})}),(0,q.jsx)(G,{children:(0,q.jsx)(i,{variant:`ghost`,size:`sm`,onClick:()=>f(e.sessionId),disabled:o.has(e.sessionId)||e.status===`COMPLETED`||e.status===`FAILED`,title:`Stop session`,children:(0,q.jsx)(g,{className:`w-4 h-4`})})})]},e.sessionId))})]})})]}),r&&(0,q.jsxs)(`div`,{children:[(0,q.jsxs)(`h4`,{className:`text-sm font-medium mb-2 flex items-center gap-2`,children:[(0,q.jsx)(he,{className:`w-4 h-4`}),`Terminal Processes (`,e.terminal.length,`)`]}),t?(0,q.jsx)(`div`,{className:`space-y-2`,children:e.terminal.map(e=>(0,q.jsx)(Mt,{process:e},e.terminalId))}):(0,q.jsx)(`div`,{className:`border rounded-md`,children:(0,q.jsxs)(Pe,{children:[(0,q.jsx)(Me,{children:(0,q.jsxs)(W,{children:[(0,q.jsx)(U,{children:`Workspace`}),(0,q.jsx)(U,{children:`Terminal ID`}),(0,q.jsx)(U,{children:`PID`}),(0,q.jsx)(U,{children:`Resources`}),(0,q.jsx)(U,{children:`Size`}),(0,q.jsx)(U,{children:`Created`})]})}),(0,q.jsx)(Ne,{children:e.terminal.map(e=>(0,q.jsxs)(W,{children:[(0,q.jsx)(At,{process:e}),(0,q.jsx)(G,{children:(0,q.jsx)(`span`,{className:`text-xs font-mono text-muted-foreground`,children:e.terminalId.slice(0,12)})}),(0,q.jsx)(G,{className:`font-mono text-xs`,children:e.pid}),(0,q.jsx)(G,{children:(0,q.jsxs)(`div`,{className:`flex flex-col text-xs font-mono`,children:[(0,q.jsxs)(`span`,{children:[`CPU: `,Ie(e.cpuPercent)]}),(0,q.jsxs)(`span`,{children:[`Mem: `,Le(e.memoryBytes)]})]})}),(0,q.jsxs)(G,{className:`font-mono text-xs`,children:[e.cols,`x`,e.rows]}),(0,q.jsx)(G,{className:`text-xs text-muted-foreground`,children:new Date(e.createdAt).toLocaleTimeString()})]},e.terminalId))})]})})]})]})]})}function Ft({projectId:e,projectName:t}){let[n,r]=(0,K.useState)(!1),a=h.useUtils(),{data:o,isPending:s,isSuccess:c,isError:l,error:d,refetch:p}=h.workspace.getFactoryConfig.useQuery({projectId:e});(0,K.useEffect)(()=>{c||r(!1)},[c]);let m=h.project.saveFactoryConfig.useMutation({onSuccess:()=>{a.workspace.getFactoryConfig.invalidate({projectId:e}),r(!1)},onError:e=>{j.error(`Failed to save configuration: ${e.message}`)}}),g=h.workspace.refreshFactoryConfigs.useMutation({onSuccess:e=>{e.errors.length>0?j.warning(`Refreshed ${e.updatedCount} workspace(s), but ${e.errors.length} failed`):j.success(`Refreshed factory-factory.json for ${e.updatedCount} workspace(s)`)},onError:e=>{j.error(`Failed to refresh configurations: ${e.message}`)}});return(0,q.jsxs)(`div`,{className:`rounded-lg border bg-card`,children:[c&&(0,q.jsx)(u,{open:n,onOpenChange:r,currentConfig:o?o.scripts:void 0,onSave:t=>{c&&m.mutate({projectId:e,config:t})},isPending:m.isPending,error:m.error}),(0,q.jsx)(`div`,{className:`border-b bg-muted/50 px-4 py-3`,children:(0,q.jsxs)(`div`,{className:`flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between`,children:[(0,q.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-2`,children:[(0,q.jsx)(`h3`,{className:`min-w-0 truncate font-semibold text-sm`,children:t}),c&&(o?(0,q.jsxs)(N,{variant:`default`,className:`bg-green-600 hover:bg-green-700`,children:[(0,q.jsx)(k,{className:`w-3 h-3 mr-1`}),`Configured`]}):(0,q.jsxs)(N,{variant:`secondary`,className:`bg-muted`,children:[(0,q.jsx)(de,{className:`w-3 h-3 mr-1`}),`Not configured`]})),(0,q.jsx)(i,{variant:`ghost`,size:`icon`,className:`h-7 w-7`,"aria-label":`Edit factory configuration`,disabled:!c,onClick:()=>r(!0),children:(0,q.jsx)(f,{className:`w-3.5 h-3.5`})})]}),(0,q.jsxs)(i,{variant:`outline`,size:`sm`,onClick:()=>{g.mutate({projectId:e})},disabled:g.isPending,className:`w-full gap-2 sm:w-auto`,children:[(0,q.jsx)(y,{className:`w-4 h-4 ${g.isPending?`animate-spin`:``}`}),`Refresh Workspaces`]})]})}),(0,q.jsxs)(`div`,{className:`p-4`,children:[s&&(0,q.jsx)(`p`,{role:`status`,className:`text-sm text-muted-foreground`,children:`Loading configuration...`}),l&&(0,q.jsxs)(`div`,{role:`alert`,className:`space-y-3`,children:[(0,q.jsxs)(`p`,{className:`text-sm text-destructive`,children:[`Failed to load configuration: `,d.message]}),(0,q.jsx)(i,{variant:`outline`,size:`sm`,onClick:()=>void p(),children:`Retry`})]}),c&&(o?(0,q.jsx)(`div`,{className:`space-y-4`,children:(0,q.jsx)(Re,{factoryConfig:o,variant:`card`})}):(0,q.jsx)(`div`,{className:`space-y-3`,children:(0,q.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`No factory-factory.json found in this repository. Click the edit button above to configure workspace setup and run scripts.`})}))]})]})}function It({projects:e}){let[t,n]=(0,K.useState)(()=>Te()||e[0]?.slug||``),r=e.find(e=>e.slug===t)??e[0];return r?(0,q.jsxs)(`div`,{className:`space-y-6`,children:[(0,q.jsx)(`div`,{className:`flex items-center gap-3`,children:(0,q.jsxs)(D,{value:r.slug,onValueChange:e=>{n(e),we(e)},children:[(0,q.jsx)(T,{className:`w-auto max-w-xs`,children:(0,q.jsx)(E,{placeholder:`Select a project`})}),(0,q.jsx)(w,{children:e.map(e=>(0,q.jsx)(S,{value:e.slug,children:e.name},e.id))})]})}),(0,q.jsxs)(z,{children:[(0,q.jsxs)(F,{children:[(0,q.jsxs)(B,{className:`flex items-center gap-2`,children:[(0,q.jsx)(de,{className:`w-5 h-5`}),`Factory Configuration`]}),(0,q.jsx)(I,{children:`Configuration for workspace setup and run scripts (factory-factory.json)`})]}),(0,q.jsxs)(L,{className:`space-y-4`,children:[(0,q.jsx)(Ft,{projectId:r.id,projectName:r.name},r.id),(0,q.jsxs)(`div`,{className:`text-xs text-muted-foreground space-y-1 border-t pt-4`,children:[(0,q.jsxs)(`p`,{children:[(0,q.jsx)(`strong`,{children:`Port Allocation:`}),` Use`,` `,(0,q.jsx)(`code`,{className:`bg-muted px-1 rounded`,children:`{port}`}),` in run script for automatic port allocation`]}),(0,q.jsxs)(`p`,{children:[(0,q.jsx)(`strong`,{children:`Location:`}),` factory-factory.json in repository root`]})]})]})]}),(0,q.jsxs)(z,{children:[(0,q.jsxs)(F,{children:[(0,q.jsxs)(B,{className:`flex items-center gap-2`,children:[(0,q.jsx)(Ve,{className:`w-5 h-5`}),`Issue Tracking`]}),(0,q.jsx)(I,{children:`Configure the issue provider (GitHub Issues or Linear)`})]}),(0,q.jsx)(L,{children:(0,q.jsx)(et,{projectId:r.id,projectName:r.name,currentProvider:r.issueProvider,issueTrackerConfig:r.issueTrackerConfig},r.id)})]})]}):(0,q.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`No projects found.`})}function Lt(){let{data:e,isLoading:t}=h.userSettings.get.useQuery(),n=h.useUtils(),r=h.userSettings.update.useMutation({onSuccess:()=>{j.success(`Ratchet settings updated`),n.userSettings.get.invalidate()},onError:e=>{j.error(`Failed to update settings: ${e.message}`)}}),a=h.admin.triggerRatchetCheck.useMutation({onSuccess:e=>{j.success(`Ratchet check completed: ${e.checked} checked, ${e.stateChanges} state changes, ${e.actionsTriggered} actions triggered`)},onError:e=>{j.error(`Failed to trigger ratchet check: ${e.message}`)}});if(t)return(0,q.jsxs)(z,{children:[(0,q.jsxs)(F,{children:[(0,q.jsxs)(B,{className:`flex items-center gap-2`,children:[(0,q.jsx)(p,{enabled:!0,className:`w-5 h-5`,iconClassName:`w-3.5 h-3.5`}),`Ratchet Pull Requests`]}),(0,q.jsx)(I,{children:`Automatically dispatch agents to fix CI failures and address code review comments`})]}),(0,q.jsx)(L,{children:(0,q.jsx)(R,{className:`h-10 w-full`})})]});let o=e?.ratchetPermissions??`YOLO`,s=e?.ratchetReviewTriggerMode??`CHANGES_REQUESTED`;return(0,q.jsxs)(z,{children:[(0,q.jsxs)(F,{children:[(0,q.jsxs)(B,{className:`flex items-center gap-2`,children:[(0,q.jsx)(p,{enabled:!0,className:`w-5 h-5`,iconClassName:`w-3.5 h-3.5`}),`Ratchet Pull Requests`]}),(0,q.jsx)(I,{children:`Automatically dispatch agents to fix CI failures and address code review comments`})]}),(0,q.jsxs)(L,{className:`space-y-4`,children:[(0,q.jsxs)(`div`,{className:`rounded-md border bg-muted/40 p-3 space-y-1.5`,children:[(0,q.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`When a workspace has an open pull request, Factory Factory can automatically:`}),(0,q.jsxs)(`ul`,{className:`text-sm text-muted-foreground list-disc list-inside space-y-0.5 ml-2`,children:[(0,q.jsx)(`li`,{children:`Fix failing CI checks`}),(0,q.jsx)(`li`,{children:`Address code review comments`})]})]}),(0,q.jsxs)(`div`,{className:`flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between`,children:[(0,q.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,q.jsx)(P,{htmlFor:`ratchet-enabled`,children:`Default for new workspaces`}),(0,q.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Enable Ratchet for workspaces created from GitHub issues`})]}),(0,q.jsx)(Y,{id:`ratchet-enabled`,checked:e?.ratchetEnabled??!1,onCheckedChange:e=>{r.mutate({ratchetEnabled:e})},disabled:r.isPending})]}),(0,q.jsxs)(`div`,{className:`space-y-2`,children:[(0,q.jsx)(P,{htmlFor:`ratchet-review-trigger`,children:`Review feedback trigger`}),(0,q.jsxs)(D,{value:s,onValueChange:e=>{(e===`CHANGES_REQUESTED`||e===`ALL_REVIEW_FEEDBACK`)&&r.mutate({ratchetReviewTriggerMode:e})},disabled:r.isPending,children:[(0,q.jsx)(T,{id:`ratchet-review-trigger`,children:(0,q.jsx)(E,{})}),(0,q.jsxs)(w,{children:[(0,q.jsx)(S,{value:`CHANGES_REQUESTED`,children:`Changes requested and unresolved threads`}),(0,q.jsx)(S,{value:`ALL_REVIEW_FEEDBACK`,children:`All review feedback`})]})]}),(0,q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`All review feedback also lets top-level commented review summaries start sessions. Ordinary PR conversation comments never trigger Ratchet.`})]}),(0,q.jsxs)(`div`,{className:`space-y-2`,children:[(0,q.jsx)(P,{htmlFor:`ratchet-permissions`,children:`Ratchet permission defaults`}),(0,q.jsxs)(D,{value:o,onValueChange:e=>{(e===`STRICT`||e===`RELAXED`||e===`YOLO`)&&r.mutate({ratchetPermissions:e})},disabled:r.isPending,children:[(0,q.jsx)(T,{id:`ratchet-permissions`,children:(0,q.jsx)(E,{})}),(0,q.jsxs)(w,{children:[(0,q.jsx)(S,{value:`STRICT`,children:`Strict`}),(0,q.jsx)(S,{value:`RELAXED`,children:`Relaxed`}),(0,q.jsx)(S,{value:`YOLO`,children:`YOLO`})]})]}),(0,q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Controls the default execution mode used when Ratchet starts a fixer session.`})]}),(0,q.jsxs)(`div`,{className:`flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between`,children:[(0,q.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,q.jsx)(P,{htmlFor:`ratchet-reply-to-pr-comments`,children:`Reply to PR comments`}),(0,q.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`When enabled, Ratchet replies on review threads and posts a re-review PR comment`})]}),(0,q.jsx)(Y,{id:`ratchet-reply-to-pr-comments`,checked:e?.ratchetReplyToPrComments??!0,onCheckedChange:e=>{r.mutate({ratchetReplyToPrComments:e})},disabled:r.isPending})]}),(0,q.jsx)(`div`,{className:`border-t pt-4`,children:(0,q.jsxs)(`div`,{className:`flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between`,children:[(0,q.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,q.jsx)(P,{children:`Manual Check`}),(0,q.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Check all workspaces with PRs and dispatch agents if needed`})]}),(0,q.jsx)(i,{variant:`outline`,size:`sm`,onClick:()=>a.mutate(),disabled:a.isPending,children:a.isPending?(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(y,{className:`w-4 h-4 mr-2 animate-spin`}),`Checking...`]}):(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(y,{className:`w-4 h-4 mr-2`}),`Check All PRs Now`]})})]})})]})]})}function Rt(){let{download:e,isDownloading:t}=ue();return(0,q.jsxs)(z,{children:[(0,q.jsxs)(F,{children:[(0,q.jsxs)(B,{className:`flex items-center gap-2`,children:[(0,q.jsx)(_,{className:`w-5 h-5`}),`Server Logs`]}),(0,q.jsx)(I,{children:`View and search structured server log entries`})]}),(0,q.jsxs)(L,{className:`flex flex-col gap-2 sm:flex-row sm:gap-3`,children:[(0,q.jsx)(i,{variant:`outline`,className:`w-full sm:w-auto`,asChild:!0,children:(0,q.jsx)(l,{to:`/logs`,children:`View Logs`})}),(0,q.jsxs)(i,{variant:`outline`,onClick:e,disabled:t,className:`w-full sm:w-auto`,children:[(0,q.jsx)(le,{className:`w-4 h-4 mr-2`}),t?`Downloading...`:`Download Log File`]})]})]})}var zt=Object.defineProperty,X=(e,t)=>zt(e,`name`,{value:t,configurable:!0}),Bt=[`PageUp`,`PageDown`],Vt=[`ArrowUp`,`ArrowDown`,`ArrowLeft`,`ArrowRight`],Ht={"from-left":[`Home`,`PageDown`,`ArrowDown`,`ArrowLeft`],"from-right":[`Home`,`PageDown`,`ArrowDown`,`ArrowRight`],"from-bottom":[`Home`,`PageDown`,`ArrowDown`,`ArrowLeft`],"from-top":[`Home`,`PageDown`,`ArrowUp`,`ArrowLeft`]},Z=`Slider`,[Ut,Wt,Gt]=ve(Z),[Kt,qt]=ge(Z,[Gt]),[Jt,Q]=Kt(Z),Yt=K.forwardRef(X(function(e,t){let{name:n,min:r=0,max:i=100,step:a=1,orientation:s=`horizontal`,disabled:c=!1,minStepsBetweenThumbs:l=0,defaultValue:u=[r],value:d,onValueChange:f=X(()=>{},`onValueChange`),onValueCommit:p=X(()=>{},`onValueCommit`),inverted:m=!1,form:h,...g}=e,_=K.useRef(new Set),v=K.useRef(0),y=K.useRef(!1),b=s===`horizontal`?Qt:$t,[x,S]=K.useState(null),w=o(t,S),[T=[],E]=_e({prop:d,defaultProp:u,onChange:X(e=>{[..._.current][v.current]?.focus({preventScroll:!0,focusVisible:y.current}),y.current=!1,f(e)},`onChange`)}),D=K.useRef(T),O=K.useRef(T);K.useEffect(()=>{let e=h?x?.ownerDocument.getElementById(h):x?.closest(`form`);if(e instanceof HTMLFormElement){let t=X(()=>E(O.current),`reset`);return e.addEventListener(`reset`,t),()=>e.removeEventListener(`reset`,t)}},[x,h,E]);function k(e){A(e,vn(T,e))}X(k,`handleSlideStart`);function ee(e){A(e,v.current)}X(ee,`handleSlideMove`);function te(){String(T)!==String(D.current)&&p(T)}X(te,`handleSlideEnd`);function A(e,t,{commit:n}={commit:!1}){let o=Cn(a),s=$(Math.round((e-r)/a)*a+r,o),c=C(s,[r,i]);E((e=[])=>{let r=hn(e,c,t);if(xn(r,l*a)){v.current=r.indexOf(c);let t=String(r)!==String(e);return t&&n&&p(r),t?r:e}return e})}return X(A,`updateValues`),(0,q.jsx)(Jt,{scope:e.__scopeSlider,name:n,disabled:c,min:r,max:i,valueIndexToChangeRef:v,thumbs:_.current,values:T,orientation:s,form:h,children:(0,q.jsx)(Ut.Provider,{scope:e.__scopeSlider,children:(0,q.jsx)(Ut.Slot,{scope:e.__scopeSlider,children:(0,q.jsx)(b,{"aria-disabled":c,"data-disabled":c?``:void 0,...g,ref:w,onPointerDown:M(g.onPointerDown,()=>{c||(D.current=T,y.current=!1)}),min:r,max:i,inverted:m,onSlideStart:c?void 0:k,onSlideMove:c?void 0:ee,onSlideEnd:c?void 0:te,onHomeKeyDown:()=>{c||(y.current=!0,A(r,0,{commit:!0}))},onEndKeyDown:()=>{c||(y.current=!0,A(i,T.length-1,{commit:!0}))},onStepKeyDown:({event:e,direction:t})=>{if(!c){y.current=!0;let n=Bt.includes(e.key)||e.shiftKey&&Vt.includes(e.key)?10:1,i=v.current,o=T[i];A(wn(o,{min:r,step:a,direction:t,multiplier:n}),i,{commit:!0})}}})})})})},`Slider`)),[Xt,Zt]=Kt(Z,{startEdge:`left`,endEdge:`right`,size:`width`,direction:1}),Qt=K.forwardRef(X(function(e,t){let{min:n,max:r,dir:i,inverted:a,onSlideStart:s,onSlideMove:c,onSlideEnd:l,onStepKeyDown:u,...d}=e,[f,p]=K.useState(null),m=o(t,p),h=K.useRef(void 0),g=ye(i),_=g===`ltr`,v=_&&!a||!_&&a;function y(e){let t=h.current||f.getBoundingClientRect(),i=Sn([0,t.width],v?[n,r]:[r,n]);return h.current=t,i(e-t.left)}return X(y,`getValueFromPointer`),(0,q.jsx)(Xt,{scope:e.__scopeSlider,startEdge:v?`left`:`right`,endEdge:v?`right`:`left`,direction:v?1:-1,size:`width`,children:(0,q.jsx)(en,{dir:g,"data-orientation":`horizontal`,...d,ref:m,style:{...d.style,"--radix-slider-thumb-transform":`translateX(-50%)`},onSlideStart:e=>{let t=y(e.clientX);s?.(t)},onSlideMove:e=>{let t=y(e.clientX);c?.(t)},onSlideEnd:()=>{h.current=void 0,l?.()},onStepKeyDown:e=>{let t=Ht[v?`from-left`:`from-right`].includes(e.key);u?.({event:e,direction:t?-1:1})}})})},`SliderHorizontal`)),$t=K.forwardRef(X(function(e,t){let{min:n,max:r,inverted:i,onSlideStart:a,onSlideMove:s,onSlideEnd:c,onStepKeyDown:l,...u}=e,d=K.useRef(null),f=o(t,d),p=K.useRef(void 0),m=!i;function h(e){let t=p.current||d.current.getBoundingClientRect(),i=Sn([0,t.height],m?[r,n]:[n,r]);return p.current=t,i(e-t.top)}return X(h,`getValueFromPointer`),(0,q.jsx)(Xt,{scope:e.__scopeSlider,startEdge:m?`bottom`:`top`,endEdge:m?`top`:`bottom`,size:`height`,direction:m?1:-1,children:(0,q.jsx)(en,{"data-orientation":`vertical`,...u,ref:f,style:{...u.style,"--radix-slider-thumb-transform":`translateY(50%)`},onSlideStart:e=>{let t=h(e.clientY);a?.(t)},onSlideMove:e=>{let t=h(e.clientY);s?.(t)},onSlideEnd:()=>{p.current=void 0,c?.()},onStepKeyDown:e=>{let t=Ht[m?`from-bottom`:`from-top`].includes(e.key);l?.({event:e,direction:t?-1:1})}})})},`SliderVertical`)),en=K.forwardRef(X(function(e,t){let{__scopeSlider:n,onSlideStart:r,onSlideMove:i,onSlideEnd:a,onHomeKeyDown:o,onEndKeyDown:s,onStepKeyDown:l,...u}=e,d=Q(Z,n);return(0,q.jsx)(c.span,{...u,ref:t,onKeyDown:M(e.onKeyDown,e=>{e.key===`Home`?(o(e),e.preventDefault()):e.key===`End`?(s(e),e.preventDefault()):Bt.concat(Vt).includes(e.key)&&(l(e),e.preventDefault())}),onPointerDown:M(e.onPointerDown,e=>{let t=e.target;t.setPointerCapture(e.pointerId),e.preventDefault(),d.thumbs.has(t)?t.focus({preventScroll:!0,focusVisible:!1}):r(e)}),onPointerMove:M(e.onPointerMove,e=>{e.target.hasPointerCapture(e.pointerId)&&i(e)}),onPointerUp:M(e.onPointerUp,e=>{let t=e.target;t.hasPointerCapture(e.pointerId)&&(t.releasePointerCapture(e.pointerId),a(e))})})},`SliderImpl`)),tn=`SliderTrack`,nn=K.forwardRef(X(function(e,t){let{__scopeSlider:n,...r}=e,i=Q(tn,n);return(0,q.jsx)(c.span,{"data-disabled":i.disabled?``:void 0,"data-orientation":i.orientation,...r,ref:t})},`SliderTrack`)),rn=`SliderRange`,an=K.forwardRef(X(function(e,t){let{__scopeSlider:n,...r}=e,i=Q(rn,n),a=Zt(rn,n),s=K.useRef(null),l=o(t,s),u=i.values.length,d=i.values.map(e=>gn(e,i.min,i.max)),f=u>1?Math.min(...d):0,p=100-Math.max(...d);return(0,q.jsx)(c.span,{"data-orientation":i.orientation,"data-disabled":i.disabled?``:void 0,...r,ref:l,style:{...e.style,[a.startEdge]:f+`%`,[a.endEdge]:p+`%`}})},`SliderRange`)),[on,sn]=Kt(`SliderThumb`),cn=`SliderThumbProvider`;function ln(e){let{__scopeSlider:t,name:n,children:r,internal_do_not_use_render:i}=e,a=Q(cn,t),o=Wt(t),[s,c]=K.useState(null),l=K.useMemo(()=>s?o().findIndex(e=>e.ref.current===s):-1,[o,s]),u=be(s),d=!s||!!a.form||!!s.closest(`form`),f=a.values[l],p=n??(a.name?a.name+(a.values.length>1?`[]`:``):void 0),m=f===void 0?0:gn(f,a.min,a.max);K.useEffect(()=>{if(s)return a.thumbs.add(s),()=>{a.thumbs.delete(s)}},[s,a.thumbs]);let h={value:f,name:p,form:a.form,isFormControl:d,index:l,thumb:s,onThumbChange:c,percent:m,size:u};return(0,q.jsx)(on,{scope:t,...h,children:Tn(i)?i(h):r})}X(ln,`SliderThumbProvider`);var un=`SliderThumbTrigger`,dn=K.forwardRef(X(function(e,t){let{__scopeSlider:n,...r}=e,i=Q(un,n),a=Zt(un,n),{index:s,value:l,percent:u,size:d,onThumbChange:f}=sn(un,n),p=o(t,f),m=_n(s,i.values.length),h=d?.[a.size],g=h?yn(h,u,a.direction):0;return(0,q.jsx)(`span`,{style:{transform:`var(--radix-slider-thumb-transform)`,position:`absolute`,[a.startEdge]:`calc(${u}% + ${g}px)`},children:(0,q.jsx)(Ut.ItemSlot,{scope:n,children:(0,q.jsx)(c.span,{role:`slider`,"aria-label":e[`aria-label`]||m,"aria-valuemin":i.min,"aria-valuenow":l,"aria-valuemax":i.max,"aria-orientation":i.orientation,"data-orientation":i.orientation,"data-disabled":i.disabled?``:void 0,tabIndex:i.disabled?void 0:0,...r,ref:p,style:l===void 0?{display:`none`}:e.style,onFocus:M(e.onFocus,()=>{i.valueIndexToChangeRef.current=s})})})})},`SliderThumbTrigger`)),fn=K.forwardRef(X(function(e,t){let{__scopeSlider:n,name:r,...i}=e;return(0,q.jsx)(ln,{__scopeSlider:n,name:r,internal_do_not_use_render:({index:e,isFormControl:r})=>(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(dn,{...i,ref:t,__scopeSlider:n}),r?(0,q.jsx)(mn,{__scopeSlider:n},e):null]})})},`SliderThumb`)),pn=`SliderBubbleInput`,mn=K.forwardRef(X(function({__scopeSlider:e,...t},n){let{value:r,name:i,form:a}=sn(pn,e),s=K.useRef(null),l=o(s,n),u=x(r);return K.useEffect(()=>{let e=s.current;if(!e)return;let t=window.HTMLInputElement.prototype,n=Object.getOwnPropertyDescriptor(t,`value`).set;if(u!==r&&n){let t=new Event(`input`,{bubbles:!0});n.call(e,r),e.dispatchEvent(t)}},[u,r]),(0,q.jsx)(c.input,{style:{display:`none`},name:i,form:a,...t,ref:l,defaultValue:r})},`SliderBubbleInput`));function hn(e=[],t,n){let r=[...e];return r[n]=t,r.sort((e,t)=>e-t)}X(hn,`getNextSortedValues`);function gn(e,t,n){let r=100/(n-t)*(e-t);return C(r,[0,100])}X(gn,`convertValueToPercentage`);function _n(e,t){if(t>2)return`Value ${e+1} of ${t}`;if(t===2)return[`Minimum`,`Maximum`][e]}X(_n,`getLabel`);function vn(e,t){if(e.length===1)return 0;let n=e.map(e=>Math.abs(e-t)),r=Math.min(...n);return n.indexOf(r)}X(vn,`getClosestValueIndex`);function yn(e,t,n){let r=e/2;return(r-Sn([0,50],[0,r])(t)*n)*n}X(yn,`getThumbInBoundsOffset`);function bn(e){return e.slice(0,-1).map((t,n)=>e[n+1]-t)}X(bn,`getStepsBetweenValues`);function xn(e,t){if(t>0){let n=bn(e);return Math.min(...n)>=t}return!0}X(xn,`hasMinStepsBetweenValues`);function Sn(e,t){return n=>{if(e[0]===e[1]||t[0]===t[1])return t[0];let r=(t[1]-t[0])/(e[1]-e[0]);return t[0]+r*(n-e[0])}}X(Sn,`linearScale`);function Cn(e){if(!Number.isFinite(e))return 0;let t=e.toString();if(t.includes(`e`)){let[e,n]=t.split(`e`),r=e.split(`.`)[1]||``,i=Number(n);return Math.max(0,r.length-i)}let n=t.split(`.`)[1];return n?n.length:0}X(Cn,`getDecimalCount`);function $(e,t){let n=10**t;return Math.round(e*n)/n}X($,`roundValue`);function wn(e,{min:t,step:n,direction:r,multiplier:i}){let a=Cn(n),o=(e-t)/n,s=Math.round(o),c=$(s*n+t,a)===$(e,a),l;return l=c?s+i*r:r>0?Math.ceil(o):Math.floor(o),$(l*n+t,a)}X(wn,`getNextStepValue`);function Tn(e){return typeof e==`function`}X(Tn,`isFunction`);function En({className:e,defaultValue:t,value:n,min:r=0,max:i=100,...o}){let s=n?.length??t?.length??1,c=K.useMemo(()=>Array.from({length:s},(e,t)=>`thumb-${t}`),[s]);return(0,q.jsxs)(Yt,{"data-slot":`slider`,defaultValue:t,value:n,min:r,max:i,className:a(`relative flex w-full touch-none items-center select-none data-[disabled]:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:min-h-44 data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col`,e),...o,children:[(0,q.jsx)(nn,{"data-slot":`slider-track`,className:a(`relative grow overflow-hidden rounded-full bg-muted data-[orientation=horizontal]:h-1.5 data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-1.5`),children:(0,q.jsx)(an,{"data-slot":`slider-range`,className:a(`absolute bg-primary data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full`)})}),c.map(e=>(0,q.jsx)(fn,{"data-slot":`slider-thumb`,className:`block size-4 shrink-0 rounded-full border border-primary bg-background shadow-sm ring-ring/50 transition-[color,box-shadow] hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50`},e))]})}function Dn({id:e,label:t,helpText:n,value:r,min:i,max:a,step:o,formatValue:s,disabled:c,onChange:l,onCommit:u}){return(0,q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,q.jsxs)(`div`,{className:`flex items-center justify-between w-[280px]`,children:[(0,q.jsx)(P,{htmlFor:e,children:t}),(0,q.jsxs)(`span`,{className:`text-xs text-muted-foreground font-mono`,children:[s(r),` · `,Oe(r,i,a)]})]}),(0,q.jsx)(En,{id:e,className:`w-[280px]`,value:[r],onValueChange:([e])=>l(e??r),onValueCommit:([e])=>u(e??r),min:i,max:a,step:o,disabled:c}),(0,q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:n})]})}function On(e,t){return h.voice.validateApiKey.useMutation({onSuccess:(n,r)=>{n.valid?(t(r.apiKey),j.success(`Deepgram API key is valid`)):(r.apiKey===e&&t(null),j.error(`Validation failed: ${n.error??`Unknown error`}`))},onError:(n,r)=>{r.apiKey===e&&t(null),j.error(`Validation failed: ${n.message}`)}})}function kn({apiKey:e,onApiKeyChange:t,validated:n,hasStoredKey:r,validating:a,saving:o,onValidate:c,onSave:l}){return(0,q.jsxs)(`div`,{className:`flex flex-wrap items-end gap-2`,children:[(0,q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,q.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,q.jsx)(P,{htmlFor:`deepgram-api-key`,children:`Deepgram API Key`}),n&&(0,q.jsxs)(`span`,{className:`flex items-center gap-1 text-xs text-green-600`,children:[(0,q.jsx)(k,{className:`w-3 h-3`}),`Valid`]})]}),(0,q.jsx)(s,{id:`deepgram-api-key`,type:`password`,value:e,onChange:e=>t(e.target.value),placeholder:r?`••••••••••••••••••••`:`Enter your Deepgram API key`,className:`font-mono text-sm w-[280px]`})]}),(0,q.jsx)(i,{variant:`outline`,onClick:c,disabled:a||!e,children:a?`Validating...`:`Validate`}),n&&(0,q.jsx)(i,{onClick:l,disabled:o,children:o?`Saving...`:`Save`})]})}function An({utteranceEndMs:e,bargeInSustainedMs:t,enabled:n,disabled:r,updateConfig:i}){let[a,o]=(0,K.useState)(je),[s,c]=(0,K.useState)(16);return(0,K.useEffect)(()=>{e!==void 0&&o(e)},[e]),(0,K.useEffect)(()=>{t!==void 0&&c(t)},[t]),(0,q.jsxs)(q.Fragment,{children:[(0,q.jsx)(Dn,{id:`voice-utterance-end`,label:`Stop-speaking sensitivity`,helpText:`How long a pause before voice mode decides you've finished talking.`,value:a,min:Ae,max:ke,step:250,formatValue:e=>`${(e/1e3).toFixed(2)}s`,disabled:r,onChange:o,onCommit:t=>i.mutate({enabled:n,utteranceEndMs:t},{onError:()=>o(e??1e3)})}),(0,q.jsx)(Dn,{id:`voice-barge-in`,label:`Barge-in sensitivity`,helpText:`How quickly voice mode notices you've started talking over its spoken reply and stops to listen.`,value:s,min:8,max:80,step:8,formatValue:e=>`${e}ms`,disabled:r,onChange:c,onCommit:e=>i.mutate({enabled:n,bargeInSustainedMs:e},{onError:()=>c(t??16)})})]})}function jn(){let{data:e,isLoading:t}=h.voice.getConfig.useQuery(),n=h.useUtils(),[r,i]=(0,K.useState)(``),[a,o]=(0,K.useState)(null),s=a!==null&&a===r,[c,l]=(0,K.useState)(1);(0,K.useEffect)(()=>{e?.ttsSpeed!==void 0&&l(e.ttsSpeed)},[e?.ttsSpeed]);let u=On(r,o),d=h.voice.updateConfig.useMutation({onSuccess:e=>{n.voice.getConfig.setData(void 0,e),n.voice.getConfig.invalidate()},onError:e=>j.error(`Failed to save: ${e.message}`)});if(t)return(0,q.jsxs)(z,{children:[(0,q.jsx)(F,{children:(0,q.jsxs)(B,{className:`flex items-center gap-2`,children:[(0,q.jsx)(pe,{className:`w-5 h-5`}),`Voice Mode`]})}),(0,q.jsx)(L,{children:(0,q.jsx)(R,{className:`h-10 w-full`})})]});let f=e?.hasApiKey??!1,p=e?.enabled??!1,m=e?.ttsModel??`flux-haley-en`;return(0,q.jsxs)(z,{children:[(0,q.jsxs)(F,{children:[(0,q.jsxs)(B,{className:`flex items-center gap-2`,children:[(0,q.jsx)(pe,{className:`w-5 h-5`}),`Voice Mode`]}),(0,q.jsx)(I,{children:`Talk to Claude/Codex sessions by voice using your own Deepgram API key for speech-to-text and text-to-speech.`})]}),(0,q.jsxs)(L,{className:`space-y-4`,children:[(0,q.jsxs)(`div`,{className:`flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between`,children:[(0,q.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,q.jsx)(P,{htmlFor:`voice-mode-enabled`,children:`Enable voice mode`}),(0,q.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:f?`Available in workspace chat`:`Requires a Deepgram API key below`})]}),(0,q.jsx)(Y,{id:`voice-mode-enabled`,checked:p,onCheckedChange:e=>d.mutate({enabled:e}),disabled:d.isPending||!f})]}),(0,q.jsx)(kn,{apiKey:r,onApiKeyChange:e=>{i(e),o(null)},validated:s,hasStoredKey:f,validating:u.isPending,saving:d.isPending,onValidate:()=>{r&&u.mutate({apiKey:r})},onSave:()=>{r&&s&&d.mutate({enabled:p,apiKey:r},{onSuccess:()=>{i(``),o(null)}})}}),(0,q.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`Create an API key at`,` `,(0,q.jsx)(`a`,{href:`https://console.deepgram.com/`,target:`_blank`,rel:`noopener noreferrer`,className:`underline`,children:`console.deepgram.com`})]}),(0,q.jsxs)(`div`,{className:`border-t pt-4 space-y-4`,children:[(0,q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,q.jsx)(P,{htmlFor:`voice-model`,children:`Voice`}),(0,q.jsxs)(D,{value:m,onValueChange:e=>d.mutate({enabled:p,ttsModel:e}),disabled:d.isPending||!f,children:[(0,q.jsx)(T,{id:`voice-model`,className:`w-[280px]`,children:(0,q.jsx)(E,{})}),(0,q.jsx)(w,{children:ie.map(e=>(0,q.jsxs)(S,{value:e.model,children:[e.name,e.description?` — ${e.description}`:``]},e.model))})]}),(0,q.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`Deepgram Flux TTS English voices`})]}),(0,q.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,q.jsxs)(`div`,{className:`flex items-center justify-between w-[280px]`,children:[(0,q.jsx)(P,{htmlFor:`voice-speed`,children:`Speed`}),(0,q.jsxs)(`span`,{className:`text-xs text-muted-foreground font-mono`,children:[c.toFixed(2),`x`]})]}),(0,q.jsx)(En,{id:`voice-speed`,className:`w-[280px]`,value:[c],onValueChange:([e])=>l(e??1),onValueCommit:([t])=>d.mutate({enabled:p,ttsSpeed:t??1},{onError:()=>l(e?.ttsSpeed??1)}),min:ne,max:ae,step:te,disabled:d.isPending||!f})]}),(0,q.jsx)(An,{utteranceEndMs:e?.utteranceEndMs,bargeInSustainedMs:e?.bargeInSustainedMs,enabled:p,disabled:d.isPending||!f,updateConfig:d})]})]})]})}function Mn(e){if(!e||e.length===0)return;let t=Te();return t&&e.some(e=>e.slug===t)?t:e[0]?.slug}function Nn(){Se({title:`Settings`});let[e,t]=(0,K.useState)(`general`),{data:n,isLoading:r,refetch:i}=h.admin.getSystemStats.useQuery(void 0,{refetchInterval:5e3}),{data:a,isLoading:o}=h.admin.getActiveProcesses.useQuery(void 0,{refetchInterval:5e3}),{data:s}=h.project.list.useQuery(),c=h.admin.resetApiUsageStats.useMutation({onSuccess:()=>{i()}}),l=Mn(s);return r?(0,q.jsx)(xe,{message:`Loading settings...`}):(0,q.jsxs)(`div`,{className:`h-full overflow-y-auto`,children:[l&&(0,q.jsx)(Ce,{children:(0,q.jsx)(m,{projectSlug:l})}),(0,q.jsx)(`div`,{className:`space-y-6 p-3 md:p-6`,children:(0,q.jsxs)(De,{value:e,onValueChange:e=>t(e),children:[(0,q.jsxs)(Ee,{className:`w-full sm:w-auto`,children:[(0,q.jsx)(V,{value:`general`,className:`flex-1 sm:flex-initial`,children:`General Settings`}),(0,q.jsx)(V,{value:`project`,className:`flex-1 sm:flex-initial`,children:`Project Settings`}),(0,q.jsx)(V,{value:`periodic-tasks`,className:`flex-1 sm:flex-initial`,children:`Periodic Tasks`}),(0,q.jsx)(V,{value:`voice`,className:`flex-1 sm:flex-initial`,children:`Voice Mode`})]}),(0,q.jsxs)(H,{value:`general`,className:`space-y-6 mt-4`,children:[(0,q.jsx)(Ge,{apiUsage:n?.apiUsage,onReset:()=>c.mutate(),isResetting:c.isPending}),o?(0,q.jsx)(Nt,{}):(0,q.jsx)(Pt,{processes:a}),(0,q.jsx)(z,{className:`bg-muted/50`,children:(0,q.jsx)(L,{className:`py-4`,children:(0,q.jsxs)(`div`,{className:`flex flex-wrap items-center gap-x-2 gap-y-1 text-sm`,children:[(0,q.jsx)(`span`,{className:`font-medium`,children:`Environment:`}),(0,q.jsx)(N,{variant:`outline`,children:n?.environment||`unknown`})]})})}),(0,q.jsx)(_t,{}),(0,q.jsx)(Qe,{}),(0,q.jsx)(Ye,{}),(0,q.jsx)(Xe,{}),(0,q.jsx)(Lt,{}),(0,q.jsx)(Je,{}),(0,q.jsx)(Ze,{}),(0,q.jsx)(Rt,{})]}),(0,q.jsx)(H,{value:`project`,className:`mt-4`,children:s?(0,q.jsx)(It,{projects:s}):(0,q.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Loading projects...`})}),(0,q.jsx)(H,{value:`periodic-tasks`,className:`mt-4`,children:s?(0,q.jsx)(St,{projects:s}):(0,q.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`Loading projects...`})}),(0,q.jsx)(H,{value:`voice`,className:`mt-4`,children:(0,q.jsx)(jn,{})})]})})]})}export{Nn as default};
@@ -0,0 +1 @@
1
+ import{t as e}from"./jsx-runtime-BNakU3Ej.js";import{c as t,o as n}from"./dist-BO6Gz-vk.js";var r=e(),i=t(`relative grid w-full grid-cols-[0_1fr] items-start gap-y-0.5 rounded-lg border px-4 py-3 text-sm has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] has-[>svg]:gap-x-3 [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current`,{variants:{variant:{default:`bg-card text-card-foreground`,destructive:`bg-card text-destructive *:data-[slot=alert-description]:text-destructive/90 [&>svg]:text-current`}},defaultVariants:{variant:`default`}});function a({className:e,variant:t,...a}){return(0,r.jsx)(`div`,{"data-slot":`alert`,role:`alert`,className:n(i({variant:t}),e),...a})}function o({className:e,...t}){return(0,r.jsx)(`div`,{"data-slot":`alert-description`,className:n(`col-start-2 grid justify-items-start gap-1 text-sm text-muted-foreground [&_p]:leading-relaxed`,e),...t})}export{o as n,a as t};
@@ -0,0 +1 @@
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{n as t,t as n}from"./jsx-runtime-BNakU3Ej.js";import{i as r,o as i,p as a}from"./dist-BO6Gz-vk.js";import{S as o,_ as s,b as c,g as l,h as u,m as d,v as f,x as p,y as m}from"./radio-group-BhmTXkIv.js";import{C as h,w as g}from"./dist-DGw3MClt.js";var _=e(t(),1),v=n(),y=Object.defineProperty,b=(e,t)=>y(e,`name`,{value:t,configurable:!0}),[x,S]=h(`AlertDialog`,[o]),C=o(),w=b(e=>{let{__scopeAlertDialog:t,...n}=e,r=C(t);return(0,v.jsx)(d,{...r,...n,modal:!0})},`AlertDialog`);_.forwardRef(b(function(e,t){let{__scopeAlertDialog:n,...r}=e,i=C(n);return(0,v.jsx)(p,{...i,...r,ref:t})},`AlertDialogTrigger`));var T=b(e=>{let{__scopeAlertDialog:t,...n}=e,r=C(t);return(0,v.jsx)(m,{...r,...n})},`AlertDialogPortal`),E=_.forwardRef(b(function(e,t){let{__scopeAlertDialog:n,...r}=e,i=C(n);return(0,v.jsx)(f,{...i,...r,ref:t})},`AlertDialogOverlay`)),[D,O]=x(`AlertDialogContent`),k=_.forwardRef(b(function(e,t){let{__scopeAlertDialog:n,children:r,...i}=e,o=C(n),s=_.useRef(null),c=a(t,s),u=_.useRef(null);return(0,v.jsx)(D,{scope:n,cancelRef:u,children:(0,v.jsx)(l,{role:`alertdialog`,...o,...i,ref:c,onOpenAutoFocus:g(i.onOpenAutoFocus,e=>{e.preventDefault(),u.current?.focus({preventScroll:!0})}),onPointerDownOutside:e=>e.preventDefault(),onInteractOutside:e=>e.preventDefault(),children:r})})},`AlertDialogContent`)),A=_.forwardRef(b(function(e,t){let{__scopeAlertDialog:n,...r}=e,i=C(n);return(0,v.jsx)(c,{...i,...r,ref:t})},`AlertDialogTitle`)),j=_.forwardRef(b(function(e,t){let{__scopeAlertDialog:n,...r}=e,i=C(n);return(0,v.jsx)(s,{...i,...r,ref:t})},`AlertDialogDescription`)),M=_.forwardRef(b(function(e,t){let{__scopeAlertDialog:n,...r}=e,i=C(n);return(0,v.jsx)(u,{...i,...r,ref:t})},`AlertDialogAction`)),N=`AlertDialogCancel`,P=_.forwardRef(b(function(e,t){let{__scopeAlertDialog:n,...r}=e,{cancelRef:i}=O(N,n),o=C(n),s=a(t,i);return(0,v.jsx)(u,{...o,...r,ref:s})},`AlertDialogCancel`)),F=w,I=T,L=E,R=k,z=M,B=P,V=A,H=j;function U({...e}){return(0,v.jsx)(F,{"data-slot":`alert-dialog`,...e})}function W({...e}){return(0,v.jsx)(I,{"data-slot":`alert-dialog-portal`,...e})}function G({className:e,...t}){return(0,v.jsx)(L,{"data-slot":`alert-dialog-overlay`,className:i(`fixed inset-0 z-50 bg-black/50 motion-reduce:data-[state=open]:animate-none motion-reduce:data-[state=closed]:animate-none data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0`,e),...t})}function K({className:e,size:t=`default`,...n}){return(0,v.jsxs)(W,{children:[(0,v.jsx)(G,{}),(0,v.jsx)(R,{"data-slot":`alert-dialog-content`,"data-size":t,className:i(`group/alert-dialog-content fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border bg-background p-6 shadow-sm duration-200 motion-reduce:data-[state=open]:animate-none motion-reduce:data-[state=closed]:animate-none data-[size=sm]:max-w-xs data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[size=default]:sm:max-w-lg`,e),...n})]})}function q({className:e,...t}){return(0,v.jsx)(`div`,{"data-slot":`alert-dialog-header`,className:i(`grid grid-rows-[auto_1fr] place-items-center gap-1.5 text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr] has-data-[slot=alert-dialog-media]:gap-x-6 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr]`,e),...t})}function J({className:e,...t}){return(0,v.jsx)(`div`,{"data-slot":`alert-dialog-footer`,className:i(`flex flex-col-reverse gap-2 group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2 sm:flex-row sm:justify-end`,e),...t})}function Y({className:e,...t}){return(0,v.jsx)(V,{"data-slot":`alert-dialog-title`,className:i(`text-lg font-semibold sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2`,e),...t})}function X({className:e,...t}){return(0,v.jsx)(H,{"data-slot":`alert-dialog-description`,className:i(`text-sm text-muted-foreground`,e),...t})}function Z({className:e,variant:t=`default`,size:n=`default`,...i}){return(0,v.jsx)(r,{variant:t,size:n,className:e,asChild:!0,children:(0,v.jsx)(z,{"data-slot":`alert-dialog-action`,...i})})}function Q({className:e,variant:t=`outline`,size:n=`default`,...i}){return(0,v.jsx)(r,{variant:t,size:n,className:e,asChild:!0,children:(0,v.jsx)(B,{"data-slot":`alert-dialog-cancel`,...i})})}export{X as a,Y as c,K as i,Z as n,J as o,Q as r,q as s,U as t};
@@ -0,0 +1 @@
1
+ import{n as e,t}from"./path-fybaL0A-.js";import{a as n,c as r,d as i,f as a,i as o,l as s,m as c,n as l,o as u,p as d,r as f,u as p}from"./dist-v5Q1xZ2K.js";function m(e){return e.innerRadius}function h(e){return e.outerRadius}function g(e){return e.startAngle}function _(e){return e.endAngle}function v(e){return e&&e.padAngle}function y(e,t,n,r,i,a,o,s){var c=n-e,l=r-t,u=o-i,d=s-a,f=d*c-u*l;if(!(f*f<1e-12))return f=(u*(t-a)-d*(e-i))/f,[e+f*c,t+f*l]}function b(e,t,n,r,i,a,o){var c=e-n,l=t-r,u=(o?a:-a)/d(c*c+l*l),f=u*l,p=-u*c,m=e+f,h=t+p,g=n+f,_=r+p,v=(m+g)/2,y=(h+_)/2,b=g-m,x=_-h,S=b*b+x*x,C=i-a,w=m*_-g*h,T=(x<0?-1:1)*d(s(0,C*C*S-w*w)),E=(w*x-b*T)/S,D=(-w*b-x*T)/S,O=(w*x+b*T)/S,k=(-w*b+x*T)/S,A=E-v,j=D-y,M=O-v,N=k-y;return A*A+j*j>M*M+N*N&&(E=O,D=k),{cx:E,cy:D,x01:-f,y01:-p,x11:E*(i/C-1),y11:D*(i/C-1)}}function x(){var s=m,x=h,S=e(0),C=null,w=g,T=_,E=v,D=null,O=t(k);function k(){var e,t,m=+s.apply(this,arguments),h=+x.apply(this,arguments),g=w.apply(this,arguments)-r,_=T.apply(this,arguments)-r,v=l(_-g),k=_>g;if(D||=e=O(),h<m&&(t=h,h=m,m=t),!(h>1e-12))D.moveTo(0,0);else if(v>c-1e-12)D.moveTo(h*u(g),h*a(g)),D.arc(0,0,h,g,_,!k),m>1e-12&&(D.moveTo(m*u(_),m*a(_)),D.arc(0,0,m,_,g,k));else{var A=g,j=_,M=g,N=_,P=v,F=v,I=E.apply(this,arguments)/2,L=I>1e-12&&(C?+C.apply(this,arguments):d(m*m+h*h)),R=p(l(h-m)/2,+S.apply(this,arguments)),z=R,B=R,V,H;if(L>1e-12){var U=o(L/m*a(I)),W=o(L/h*a(I));(P-=U*2)>1e-12?(U*=k?1:-1,M+=U,N-=U):(P=0,M=N=(g+_)/2),(F-=W*2)>1e-12?(W*=k?1:-1,A+=W,j-=W):(F=0,A=j=(g+_)/2)}var G=h*u(A),K=h*a(A),q=m*u(N),J=m*a(N);if(R>1e-12){var Y=h*u(j),X=h*a(j),Z=m*u(M),Q=m*a(M),$;if(v<i){if($=y(G,K,Z,Q,Y,X,q,J)){var ee=G-$[0],te=K-$[1],ne=Y-$[0],re=X-$[1],ie=1/a(f((ee*ne+te*re)/(d(ee*ee+te*te)*d(ne*ne+re*re)))/2),ae=d($[0]*$[0]+$[1]*$[1]);z=p(R,(m-ae)/(ie-1)),B=p(R,(h-ae)/(ie+1))}else z=B=0}}F>1e-12?B>1e-12?(V=b(Z,Q,G,K,h,B,k),H=b(Y,X,q,J,h,B,k),D.moveTo(V.cx+V.x01,V.cy+V.y01),B<R?D.arc(V.cx,V.cy,B,n(V.y01,V.x01),n(H.y01,H.x01),!k):(D.arc(V.cx,V.cy,B,n(V.y01,V.x01),n(V.y11,V.x11),!k),D.arc(0,0,h,n(V.cy+V.y11,V.cx+V.x11),n(H.cy+H.y11,H.cx+H.x11),!k),D.arc(H.cx,H.cy,B,n(H.y11,H.x11),n(H.y01,H.x01),!k))):(D.moveTo(G,K),D.arc(0,0,h,A,j,!k)):D.moveTo(G,K),!(m>1e-12)||!(P>1e-12)?D.lineTo(q,J):z>1e-12?(V=b(q,J,Y,X,m,-z,k),H=b(G,K,Z,Q,m,-z,k),D.lineTo(V.cx+V.x01,V.cy+V.y01),z<R?D.arc(V.cx,V.cy,z,n(V.y01,V.x01),n(H.y01,H.x01),!k):(D.arc(V.cx,V.cy,z,n(V.y01,V.x01),n(V.y11,V.x11),!k),D.arc(0,0,m,n(V.cy+V.y11,V.cx+V.x11),n(H.cy+H.y11,H.cx+H.x11),k),D.arc(H.cx,H.cy,z,n(H.y11,H.x11),n(H.y01,H.x01),!k))):D.arc(0,0,m,N,M,k)}if(D.closePath(),e)return D=null,e+``||null}return k.centroid=function(){var e=(+s.apply(this,arguments)+ +x.apply(this,arguments))/2,t=(+w.apply(this,arguments)+ +T.apply(this,arguments))/2-i/2;return[u(t)*e,a(t)*e]},k.innerRadius=function(t){return arguments.length?(s=typeof t==`function`?t:e(+t),k):s},k.outerRadius=function(t){return arguments.length?(x=typeof t==`function`?t:e(+t),k):x},k.cornerRadius=function(t){return arguments.length?(S=typeof t==`function`?t:e(+t),k):S},k.padRadius=function(t){return arguments.length?(C=t==null?null:typeof t==`function`?t:e(+t),k):C},k.startAngle=function(t){return arguments.length?(w=typeof t==`function`?t:e(+t),k):w},k.endAngle=function(t){return arguments.length?(T=typeof t==`function`?t:e(+t),k):T},k.padAngle=function(t){return arguments.length?(E=typeof t==`function`?t:e(+t),k):E},k.context=function(e){return arguments.length?(D=e??null,k):D},k}export{x as t};
@@ -0,0 +1 @@
1
+ import"./chunk-FOHPRMQF-CoA4358r.js";import{M as e}from"./mermaid-parser.core-CpkwJ-8U.js";export{e as createArchitectureServices};