@vantran-se/openchamber-web 2.1.1 → 2.2.0

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 (442) hide show
  1. package/README.md +32 -24
  2. package/bin/cli.js +1 -3
  3. package/bin/cli.test.js +40 -16
  4. package/bin/lib/DOCUMENTATION.md +6 -5
  5. package/bin/lib/cli-args.js +6 -1
  6. package/bin/lib/cli-args.test.js +34 -0
  7. package/bin/lib/cli-lifecycle.js +0 -1
  8. package/bin/lib/cli-network.js +8 -2
  9. package/bin/lib/cli-process.js +1 -1
  10. package/bin/lib/cli-settings-accessors.test.js +21 -13
  11. package/bin/lib/cli-startup.js +17 -11
  12. package/bin/lib/cli-startup.test.js +92 -2
  13. package/bin/lib/commands-connect-url.js +8 -1
  14. package/bin/lib/commands-schedule.js +8 -2
  15. package/bin/lib/commands-serve.js +15 -21
  16. package/bin/lib/commands-update.js +12 -24
  17. package/bin/lib/commands-update.test.js +14 -46
  18. package/dist/assets/DiffView-Cv9MSXl1.js +4 -0
  19. package/dist/assets/FilePreviewCommentMenu-D4kLseHj.js +4 -0
  20. package/dist/assets/FilesView-BVoD8I2x.js +14 -0
  21. package/dist/assets/{GitView-DzuzhIPx.js → GitView-Bzb8p-ew.js} +4 -4
  22. package/dist/assets/GuestSurfacePane-Crdbvsxo.js +1 -0
  23. package/dist/assets/InProgressOperationBanner-CwMjNQgk.js +2 -0
  24. package/dist/assets/{JsonTreeView-B_EPRjzy.js → JsonTreeView-DRKHZfsn.js} +1 -1
  25. package/dist/assets/MarkdownImageGallery-DZtqT1Zn.js +1 -0
  26. package/dist/assets/MarkdownRendererImpl-CqG7HCNd.js +10 -0
  27. package/dist/assets/OnboardingScreen-DMIxwYK5.js +1 -0
  28. package/dist/assets/{PatchDiff-6yh1csza.js → PatchDiff-CUcCg1jk.js} +1 -1
  29. package/dist/assets/PierreDiffViewer-CnnR-dnD.js +228 -0
  30. package/dist/assets/PlanView-RCBadcY7.js +5 -0
  31. package/dist/assets/SettingsView-CjBjZFRO.js +30 -0
  32. package/dist/assets/SettingsWindow-DyM7QuhI.js +1 -0
  33. package/dist/assets/SubmoduleDiffSummary-BWIfgMED.js +1 -0
  34. package/dist/assets/ToolOutputDialog-Q0P3FuAi.js +15 -0
  35. package/dist/assets/ToolPartDiffPreview-p7qR9FpU.js +8 -0
  36. package/dist/assets/{VirtualizedFileDiff-BTJVRkyo.js → VirtualizedFileDiff-CFpjL8Ns.js} +3 -3
  37. package/dist/assets/{Virtualizer-xCEYz34p.js → Virtualizer-C0IsclZn.js} +1 -1
  38. package/dist/assets/WalkthroughView-DI31zD02.js +4 -0
  39. package/dist/assets/appThemeRegistry-B9gkFq9i.js +1 -0
  40. package/dist/assets/{computeVirtualFileMetrics-CmPe29DM.js → computeVirtualFileMetrics-C2WM6JC2.js} +2 -2
  41. package/dist/assets/de-YKfk5MmC.js +14 -0
  42. package/dist/assets/es-_gwT0kr-.js +20 -0
  43. package/dist/assets/fileTreeStatus-D438yi8M.js +1 -0
  44. package/dist/assets/fr-DqzvXmIm.js +18 -0
  45. package/dist/assets/index-BLaHKdtx.js +1 -0
  46. package/dist/assets/index-BkMXRrVQ.css +1 -0
  47. package/dist/assets/index-DxNa7xYB.js +65 -0
  48. package/dist/assets/initializeSharedPreferences-Bck5EAWP.js +1 -0
  49. package/dist/assets/{isDiffPlainText-CQmDCnEv.js → isDiffPlainText-Dgbw8VKk.js} +1 -1
  50. package/dist/assets/{isFilePlainText-CYBUzW4I.js → isFilePlainText-_ZS5UYRj.js} +1 -1
  51. package/dist/assets/ja-B-GFYhQE.js +20 -0
  52. package/dist/assets/ko-mzksfqDC.js +20 -0
  53. package/dist/assets/main-C5Xx8dn_.js +2 -0
  54. package/dist/assets/main-CfBSQM1H.js +990 -0
  55. package/dist/assets/markdownCore-BmWwW1ll.js +7 -0
  56. package/dist/assets/miniChat-mnKwy4vQ.js +2 -0
  57. package/dist/assets/mobile-DeEQd0wZ.js +2 -0
  58. package/dist/assets/nl-CWQr6NSq.js +20 -0
  59. package/dist/assets/{parseDiffFromFile-Cy0PNxun.js → parseDiffFromFile-BUgn-T9p.js} +2 -2
  60. package/dist/assets/patchFileDiff-Dt8LhgBh.js +13 -0
  61. package/dist/assets/pl-UmRcDUX2.js +20 -0
  62. package/dist/assets/pt-BR-BSLybvVF.js +20 -0
  63. package/dist/assets/relocateRestoredSession-B5E9xb3T.js +1 -0
  64. package/dist/assets/renderElectronMiniChatApp-C0a9A5_J.js +2 -0
  65. package/dist/assets/renderMobileApp-BNncg3Pk.js +25 -0
  66. package/dist/assets/runtimeEndpointReset-CZ5aafpl.js +62 -0
  67. package/dist/assets/{selectionMarkdown-TkYk5h9l.js → selectionMarkdown-CUN3wUld.js} +9 -9
  68. package/dist/assets/{sessionOwnership-Bs1xbRfB.js → sessionOwnership-BSuxCEhb.js} +1 -1
  69. package/dist/assets/shikiHighlight-DHDx-6eM.js +1 -0
  70. package/dist/assets/space-apply-DM_2pRW7.js +1 -0
  71. package/dist/assets/space-close-Bpomt8z0.js +1 -0
  72. package/dist/assets/{surface-B6n7wJtt.js → surface-C-jQaGnL.js} +1 -1
  73. package/dist/assets/{textMateThemeFromAppTheme-CDlKffWz.js → textMateThemeFromAppTheme-DlsTphbY.js} +1 -1
  74. package/dist/assets/tr-gaTrX_HK.js +11 -0
  75. package/dist/assets/uk-CnJF6ykl.js +20 -0
  76. package/dist/assets/{useAppFontEffects-DCqCVGlT.js → useAppFontEffects-DGlvOqP_.js} +194 -233
  77. package/dist/assets/useInlineCommentController-kMN4Wg_D.js +2 -0
  78. package/dist/assets/{useRootScrollLock-BowwS8kq.js → useRootScrollLock-DMPpvpNP.js} +2 -2
  79. package/dist/assets/{vendor-base-ui-DX96QhTP.js → vendor-base-ui-Det7U81h.js} +1 -1
  80. package/dist/assets/{vendor-codemirror-autocomplete-DW1FQz9_.js → vendor-codemirror-autocomplete-BSHQHbKu.js} +1 -1
  81. package/dist/assets/{vendor-codemirror-commands-DpmhalwN.js → vendor-codemirror-commands-C4G_dPWe.js} +1 -1
  82. package/dist/assets/{vendor-codemirror-lang-angular-BqExbN1M.js → vendor-codemirror-lang-angular-B6LbBGHB.js} +1 -1
  83. package/dist/assets/{vendor-codemirror-lang-cpp-DZA36HfS.js → vendor-codemirror-lang-cpp-BWWXBx7W.js} +1 -1
  84. package/dist/assets/{vendor-codemirror-lang-css-B07blnnZ.js → vendor-codemirror-lang-css-Cayfb29q.js} +1 -1
  85. package/dist/assets/{vendor-codemirror-lang-go-BM8K9D1-.js → vendor-codemirror-lang-go-BoKlCNKw.js} +1 -1
  86. package/dist/assets/{vendor-codemirror-lang-html-DaH9adfE.js → vendor-codemirror-lang-html-BQWerHsJ.js} +1 -1
  87. package/dist/assets/{vendor-codemirror-lang-java-CsdC0viz.js → vendor-codemirror-lang-java-DWX7Fq_K.js} +1 -1
  88. package/dist/assets/{vendor-codemirror-lang-javascript-CpGYXGuo.js → vendor-codemirror-lang-javascript-DbpEcZM0.js} +2 -2
  89. package/dist/assets/{vendor-codemirror-lang-jinja-BBeGzXw5.js → vendor-codemirror-lang-jinja-D1JIJRA7.js} +1 -1
  90. package/dist/assets/{vendor-codemirror-lang-json-58T70Hqs.js → vendor-codemirror-lang-json-BzgckzmB.js} +1 -1
  91. package/dist/assets/{vendor-codemirror-lang-less-BI-xCA59.js → vendor-codemirror-lang-less-B9EpDXFi.js} +1 -1
  92. package/dist/assets/{vendor-codemirror-lang-liquid-zEcMa-zy.js → vendor-codemirror-lang-liquid-9U7kRbSf.js} +1 -1
  93. package/dist/assets/{vendor-codemirror-lang-markdown-BLKnlLP4.js → vendor-codemirror-lang-markdown-D2TEBIvZ.js} +1 -1
  94. package/dist/assets/{vendor-codemirror-lang-php-9f35M83-.js → vendor-codemirror-lang-php-BT6sDVzE.js} +1 -1
  95. package/dist/assets/vendor-codemirror-lang-python-jAMtYiA9.js +3 -0
  96. package/dist/assets/{vendor-codemirror-lang-rust-MNDL_jZQ.js → vendor-codemirror-lang-rust-CVO56EiL.js} +1 -1
  97. package/dist/assets/{vendor-codemirror-lang-sass-p9epsSNm.js → vendor-codemirror-lang-sass-DZlOoUWu.js} +1 -1
  98. package/dist/assets/{vendor-codemirror-lang-sql-Bqzh0EXX.js → vendor-codemirror-lang-sql-fZ6t1DPw.js} +1 -1
  99. package/dist/assets/{vendor-codemirror-lang-vue-BnNUWV-p.js → vendor-codemirror-lang-vue-DxbqrLiE.js} +1 -1
  100. package/dist/assets/{vendor-codemirror-lang-wast-C2a-oLmk.js → vendor-codemirror-lang-wast-DyU1Gt-I.js} +1 -1
  101. package/dist/assets/vendor-codemirror-lang-xml-C9a_K5_p.js +1 -0
  102. package/dist/assets/{vendor-codemirror-lang-yaml-C0sjswB0.js → vendor-codemirror-lang-yaml-Cptq8l0e.js} +1 -1
  103. package/dist/assets/{vendor-codemirror-language-ByBn5zIW.js → vendor-codemirror-language-DufXoQvE.js} +2 -2
  104. package/dist/assets/vendor-codemirror-language-data-CtwSWKtX.js +2 -0
  105. package/dist/assets/{vendor-codemirror-search-ib-sHD5W.js → vendor-codemirror-search-CvXM_pZg.js} +1 -1
  106. package/dist/assets/{vendor-codemirror-state-G3UuR-be.js → vendor-codemirror-state-Dek9sMtw.js} +1 -1
  107. package/dist/assets/{vendor-codemirror-view-Bniqp7p5.js → vendor-codemirror-view-1e0FQ6Wn.js} +1 -1
  108. package/dist/assets/vendor-framer-motion-DxDVhOLc.js +9 -0
  109. package/dist/assets/vendor-katex-CuQvj9-L.js +257 -0
  110. package/dist/assets/vendor-katex-DdZNUVNG.css +1 -0
  111. package/dist/assets/{vendor-motion-dom-DcCgeG69.js → vendor-motion-dom-HXPOMxb7.js} +1 -1
  112. package/dist/assets/{vendor-opencode-client-DHzhmLwV.js → vendor-opencode-client-BmFcUkbQ.js} +1 -1
  113. package/dist/assets/{vendor-replit-codemirror-vim-DkzqxN2H.js → vendor-replit-codemirror-vim-BlJRn-cW.js} +2 -2
  114. package/dist/assets/{vendor-tanstack-react-virtual-H_JmXOFV.js → vendor-tanstack-react-virtual-CvuLsk7D.js} +1 -1
  115. package/dist/assets/{vendor-tanstack-virtual-core-Dxc8hSTB.js → vendor-tanstack-virtual-core-DPaNcJcT.js} +1 -1
  116. package/dist/assets/zh-CN-t2vigSB1.js +20 -0
  117. package/dist/assets/zh-TW-jAgqBokB.js +20 -0
  118. package/dist/index.html +6 -6
  119. package/dist/mini-chat.html +6 -6
  120. package/dist/mobile.html +6 -6
  121. package/package.json +8 -5
  122. package/server/index.js +80 -36
  123. package/server/lib/agent-memory/actions.js +1 -6
  124. package/server/lib/agent-memory/routes.js +1 -2
  125. package/server/lib/agent-memory/runtime.js +1 -8
  126. package/server/lib/agent-tool/DOCUMENTATION.md +7 -3
  127. package/server/lib/agent-tool/runtime.js +3 -6
  128. package/server/lib/agent-tool/runtime.test.js +0 -2
  129. package/server/lib/browser-control/DOCUMENTATION.md +6 -0
  130. package/server/lib/changelog/update-notes.js +1 -1
  131. package/server/lib/context-obligatory/runtime.js +1 -2
  132. package/server/lib/dev-tunnel/DOCUMENTATION.md +8 -0
  133. package/server/lib/dev-tunnel/client.js +21 -10
  134. package/server/lib/dev-tunnel/tunnel.test.js +34 -0
  135. package/server/lib/dispatch-results/runtime.js +1 -1
  136. package/server/lib/enterprise-mode.d.ts +1 -0
  137. package/server/lib/enterprise-mode.js +13 -2
  138. package/server/lib/enterprise-mode.test.js +21 -0
  139. package/server/lib/event-stream/DOCUMENTATION.md +2 -2
  140. package/server/lib/event-stream/index.js +1 -3
  141. package/server/lib/event-stream/translate-v2.js +1 -9
  142. package/server/lib/event-stream/translate-v2.test.js +0 -11
  143. package/server/lib/fs/DOCUMENTATION.md +5 -2
  144. package/server/lib/fs/routes.js +62 -15
  145. package/server/lib/fs/routes.test.js +278 -48
  146. package/server/lib/fs/workspace-file-names.js +104 -0
  147. package/server/lib/fs/workspace-file-names.test.js +62 -0
  148. package/server/lib/git/DOCUMENTATION.md +17 -5
  149. package/server/lib/git/contributor-provenance-storage.js +9 -6
  150. package/server/lib/git/contributor-provenance-storage.test.js +29 -0
  151. package/server/lib/git/credential-broker.js +1 -1
  152. package/server/lib/git/credential-resolver.js +1 -4
  153. package/server/lib/git/credentials.js +1 -0
  154. package/server/lib/git/discovery-endpoint.js +1 -1
  155. package/server/lib/git/identity-provisioning.js +2 -1
  156. package/server/lib/git/identity-storage.js +3 -4
  157. package/server/lib/git/lfs-discovery.js +14 -14
  158. package/server/lib/git/lfs-discovery.test.js +16 -6
  159. package/server/lib/git/network-operation-plan.js +50 -62
  160. package/server/lib/git/network-operation-plan.test.js +103 -1
  161. package/server/lib/git/network-operation-registry.js +4 -6
  162. package/server/lib/git/network-operation-storage.js +4 -6
  163. package/server/lib/git/network-operations.js +12 -4
  164. package/server/lib/git/network-operations.test.js +19 -6
  165. package/server/lib/git/redaction.js +2 -1
  166. package/server/lib/git/repository-credential-runtime.js +5 -3
  167. package/server/lib/git/repository-credential-runtime.test.js +22 -0
  168. package/server/lib/git/routes.js +31 -137
  169. package/server/lib/git/routes.test.js +2 -2
  170. package/server/lib/git/service.js +143 -27
  171. package/server/lib/git/service.test.js +215 -1
  172. package/server/lib/git/ssh-credential-storage.js +1 -4
  173. package/server/lib/git/submodule-discovery.js +1 -1
  174. package/server/lib/git/worktree-bootstrap-storage.js +3 -4
  175. package/server/lib/git/worktree-bootstrap-storage.test.js +15 -0
  176. package/server/lib/git/worktree-creation.js +194 -0
  177. package/server/lib/git/worktree-creation.test.js +155 -0
  178. package/server/lib/github/DOCUMENTATION.md +11 -6
  179. package/server/lib/github/auth.js +2 -4
  180. package/server/lib/github/device-flow.js +2 -2
  181. package/server/lib/github/gh-cli-credential.js +1 -0
  182. package/server/lib/github/octokit.js +31 -0
  183. package/server/lib/github/pr-status.js +35 -18
  184. package/server/lib/github/pr-status.test.js +271 -3
  185. package/server/lib/github/reference-search.js +102 -13
  186. package/server/lib/github/reference-search.test.js +48 -7
  187. package/server/lib/github/routes.auth.test.js +18 -0
  188. package/server/lib/github/routes.js +360 -6
  189. package/server/lib/github/routes.mutations.test.js +239 -0
  190. package/server/lib/github/routes.test.js +134 -2
  191. package/server/lib/gitlab/DOCUMENTATION.md +5 -1
  192. package/server/lib/gitlab/auth-storage.test.js +1 -0
  193. package/server/lib/gitlab/mappers.js +30 -1
  194. package/server/lib/gitlab/resources.js +230 -6
  195. package/server/lib/gitlab/resources.test.js +179 -0
  196. package/server/lib/gitlab/routes.js +200 -6
  197. package/server/lib/gitlab/routes.test.js +186 -2
  198. package/server/lib/gitlab/validation.js +1 -5
  199. package/server/lib/guests/DOCUMENTATION.md +1 -1
  200. package/server/lib/guests/oauth.js +2 -2
  201. package/server/lib/guests/service.js +1 -1
  202. package/server/lib/guests/sockets.js +1 -1
  203. package/server/lib/injected-env.d.ts +8 -0
  204. package/server/lib/injected-env.js +50 -0
  205. package/server/lib/injected-env.test.js +56 -0
  206. package/server/lib/linear/DOCUMENTATION.md +5 -6
  207. package/server/lib/linear/issues.js +62 -4
  208. package/server/lib/linear/issues.test.js +68 -0
  209. package/server/lib/linear/oauth.js +5 -5
  210. package/server/lib/linear/parse.js +2 -9
  211. package/server/lib/message-queue/DOCUMENTATION.md +23 -1
  212. package/server/lib/message-queue/runtime.js +85 -12
  213. package/server/lib/message-queue/runtime.test.js +172 -2
  214. package/server/lib/notifications/apns-runtime.js +5 -6
  215. package/server/lib/notifications/apns-runtime.test.js +20 -4
  216. package/server/lib/openchamber-control/DOCUMENTATION.md +19 -1
  217. package/server/lib/openchamber-control/actions.js +2 -1
  218. package/server/lib/openchamber-control/service.js +119 -20
  219. package/server/lib/openchamber-control/service.test.js +166 -0
  220. package/server/lib/openchamber-sessions/archive-store.js +1 -6
  221. package/server/lib/openchamber-sessions/routes.js +47 -12
  222. package/server/lib/openchamber-sessions/routes.test.js +65 -2
  223. package/server/lib/openchamber-sessions/session-metadata-store.js +1 -6
  224. package/server/lib/opencode/DOCUMENTATION.md +22 -8
  225. package/server/lib/opencode/agents.js +62 -0
  226. package/server/lib/opencode/auth-state-runtime.js +3 -1
  227. package/server/lib/opencode/auth.d.ts +1 -1
  228. package/server/lib/opencode/auth.js +8 -0
  229. package/server/lib/opencode/auth.test.js +31 -0
  230. package/server/lib/opencode/config-entity-routes.js +16 -0
  231. package/server/lib/opencode/config-entity-v2.test.js +16 -1
  232. package/server/lib/opencode/config-paths.test.js +2 -2
  233. package/server/lib/opencode/config-v2.js +2 -4
  234. package/server/lib/opencode/feature-routes-runtime.js +89 -49
  235. package/server/lib/opencode/lifecycle.js +41 -21
  236. package/server/lib/opencode/lifecycle.test.js +50 -2
  237. package/server/lib/opencode/model-discovery.js +1 -1
  238. package/server/lib/opencode/model-discovery.test.js +17 -0
  239. package/server/lib/opencode/models-metadata.js +0 -2
  240. package/server/lib/opencode/openchamber-routes.test.js +3 -3
  241. package/server/lib/opencode/plugins.js +6 -9
  242. package/server/lib/opencode/provider-source-route.test.js +101 -3
  243. package/server/lib/opencode/providers-disabled.test.js +59 -0
  244. package/server/lib/opencode/providers.js +34 -0
  245. package/server/lib/opencode/proxy.js +11 -3
  246. package/server/lib/opencode/routes.js +40 -2
  247. package/server/lib/opencode/settings-helpers.js +27 -1
  248. package/server/lib/opencode/settings-helpers.test.js +19 -7
  249. package/server/lib/opencode/settings-registry.json +27 -16
  250. package/server/lib/opencode/settings-runtime.test.js +18 -0
  251. package/server/lib/opencode/shared-service-runtime.js +23 -104
  252. package/server/lib/opencode/shared.js +77 -46
  253. package/server/lib/opencode/shared.test.js +12 -12
  254. package/server/lib/opencode/shutdown-runtime.test.js +2 -3
  255. package/server/lib/opencode/skill-routes.js +123 -38
  256. package/server/lib/opencode/skill-routes.test.js +201 -0
  257. package/server/lib/opencode/skills.js +81 -34
  258. package/server/lib/opencode/skills.test.js +176 -21
  259. package/server/lib/opencode/startup-pipeline-runtime.js +6 -3
  260. package/server/lib/opencode/startup-pipeline-runtime.test.js +2 -1
  261. package/server/lib/opencode/watcher.test.js +0 -54
  262. package/server/lib/outbound-proxy.js +52 -0
  263. package/server/lib/outbound-proxy.test.js +55 -0
  264. package/server/lib/package-manager.js +23 -17
  265. package/server/lib/package-manager.test.js +5 -18
  266. package/server/lib/permission-auto-accept/DOCUMENTATION.md +1 -1
  267. package/server/lib/permission-auto-accept/runtime.js +19 -47
  268. package/server/lib/permission-auto-accept/runtime.test.js +2 -2
  269. package/server/lib/project-context/DOCUMENTATION.md +7 -1
  270. package/server/lib/project-context/routes.js +1 -2
  271. package/server/lib/project-context/runtime.js +12 -14
  272. package/server/lib/project-context/runtime.test.js +78 -2
  273. package/server/lib/projects/project-config.js +30 -15
  274. package/server/lib/projects/project-config.test.js +30 -0
  275. package/server/lib/projects/project-setup.js +1 -2
  276. package/server/lib/projects/routes.js +1 -2
  277. package/server/lib/quota/DOCUMENTATION.md +35 -7
  278. package/server/lib/quota/index.js +1 -0
  279. package/server/lib/quota/providers/claude/index.js +1 -1
  280. package/server/lib/quota/providers/cline-pass.js +1 -1
  281. package/server/lib/quota/providers/exe-dev.js +1 -1
  282. package/server/lib/quota/providers/google/index.js +1 -1
  283. package/server/lib/quota/providers/hyper.js +1 -1
  284. package/server/lib/quota/providers/kimi.js +116 -36
  285. package/server/lib/quota/providers/kimi.test.js +128 -3
  286. package/server/lib/quota/providers/opencode-go.js +144 -21
  287. package/server/lib/quota/providers/opencode-go.test.js +229 -6
  288. package/server/lib/quota/providers/openrouter.js +1 -1
  289. package/server/lib/quota/providers/zenmux.js +1 -1
  290. package/server/lib/quota/utils/auth.js +1 -0
  291. package/server/lib/quota/utils/transformers.js +2 -6
  292. package/server/lib/relay/DOCUMENTATION.md +18 -3
  293. package/server/lib/relay/e2ee.js +7 -7
  294. package/server/lib/relay/host-client.js +84 -13
  295. package/server/lib/relay/host-client.test.js +201 -1
  296. package/server/lib/relay/identity.js +6 -29
  297. package/server/lib/relay/identity.test.js +18 -28
  298. package/server/lib/relay/key-store.js +141 -0
  299. package/server/lib/relay/key-store.test.js +138 -0
  300. package/server/lib/relay/service.js +8 -8
  301. package/server/lib/relay/service.test.js +10 -5
  302. package/server/lib/relay/signing-key.js +13 -36
  303. package/server/lib/relay/tunnel-codec.js +10 -10
  304. package/server/lib/route-module-exports.test.js +22 -0
  305. package/server/lib/routing/DOCUMENTATION.md +23 -3
  306. package/server/lib/routing/cache.js +87 -0
  307. package/server/lib/routing/defaults.js +11 -0
  308. package/server/lib/routing/history.js +12 -4
  309. package/server/lib/routing/runtime.js +39 -3
  310. package/server/lib/routing/runtime.test.js +81 -2
  311. package/server/lib/routing/store.js +12 -1
  312. package/server/lib/routing/store.test.js +13 -0
  313. package/server/lib/scheduled-tasks/DOCUMENTATION.md +59 -1
  314. package/server/lib/scheduled-tasks/existing-session.js +119 -0
  315. package/server/lib/scheduled-tasks/existing-session.test.js +350 -0
  316. package/server/lib/scheduled-tasks/loops.js +1 -8
  317. package/server/lib/scheduled-tasks/routes.js +8 -8
  318. package/server/lib/scheduled-tasks/runtime.js +103 -13
  319. package/server/lib/scheduled-tasks/runtime.test.js +48 -0
  320. package/server/lib/scheduled-tasks/service.js +33 -11
  321. package/server/lib/scheduled-tasks/service.test.js +128 -2
  322. package/server/lib/scheduled-tasks/session-defaults.js +27 -0
  323. package/server/lib/scheduled-tasks/session-defaults.test.js +19 -0
  324. package/server/lib/session-assist/context.js +1 -0
  325. package/server/lib/session-folders/routes.js +2 -2
  326. package/server/lib/session-goal/objectives.js +1 -1
  327. package/server/lib/session-knowledge/routes.js +2 -2
  328. package/server/lib/session-knowledge/runtime.js +1 -2
  329. package/server/lib/session-work/DOCUMENTATION.md +39 -14
  330. package/server/lib/session-work/questions.js +31 -2
  331. package/server/lib/session-work/runtime.js +22 -13
  332. package/server/lib/session-work/runtime.test.js +43 -26
  333. package/server/lib/session-work/state.js +10 -4
  334. package/server/lib/session-work/state.test.js +8 -1
  335. package/server/lib/shared/DOCUMENTATION.md +89 -0
  336. package/server/lib/shared/guards.js +53 -0
  337. package/server/lib/shared/guards.test.js +112 -0
  338. package/server/lib/skills-catalog/DOCUMENTATION.md +10 -8
  339. package/server/lib/skills-catalog/cache.js +3 -2
  340. package/server/lib/skills-catalog/curated-sources.js +5 -1
  341. package/server/lib/skills-catalog/git.js +107 -20
  342. package/server/lib/skills-catalog/git.test.js +78 -0
  343. package/server/lib/skills-catalog/install.js +21 -12
  344. package/server/lib/skills-catalog/scan.js +25 -15
  345. package/server/lib/skills-catalog/source.js +26 -1
  346. package/server/lib/skills-catalog/source.test.js +27 -0
  347. package/server/lib/source-control/DOCUMENTATION.md +2 -1
  348. package/server/lib/source-control/audit-storage.js +7 -6
  349. package/server/lib/source-control/audit-storage.test.js +11 -0
  350. package/server/lib/source-control/binding-service.js +2 -5
  351. package/server/lib/source-control/change-request-worktree.js +90 -0
  352. package/server/lib/source-control/change-request-worktree.test.js +121 -0
  353. package/server/lib/source-control/mutation-executor.js +1 -1
  354. package/server/lib/source-control/mutation-storage.js +11 -5
  355. package/server/lib/source-control/provider-instance.js +1 -2
  356. package/server/lib/source-control/repository-identity.js +1 -1
  357. package/server/lib/source-control/routes.js +14 -2
  358. package/server/lib/spaces/DOCUMENTATION.md +42 -17
  359. package/server/lib/spaces/command-stream.test.js +15 -0
  360. package/server/lib/spaces/dispatcher.js +7 -0
  361. package/server/lib/spaces/dispatcher.test.js +17 -0
  362. package/server/lib/spaces/hardening.js +2 -2
  363. package/server/lib/spaces/hardening.test.js +1 -1
  364. package/server/lib/spaces/host.js +2 -0
  365. package/server/lib/spaces/journey.js +66 -5
  366. package/server/lib/spaces/journey.test.js +95 -4
  367. package/server/lib/spaces/layout.js +1 -1
  368. package/server/lib/spaces/places/docker-disk.js +38 -14
  369. package/server/lib/spaces/places/docker-disk.test.js +80 -1
  370. package/server/lib/spaces/places/docker.js +35 -11
  371. package/server/lib/spaces/places/fake-docker.js +22 -3
  372. package/server/lib/spaces/places/memory-place.js +3 -0
  373. package/server/lib/spaces/places/packed.docker.live.test.js +1 -1
  374. package/server/lib/spaces/routes.js +5 -0
  375. package/server/lib/spaces/routes.test.js +4 -2
  376. package/server/lib/spaces/run-command.js +9 -2
  377. package/server/lib/spaces/tools.js +4 -5
  378. package/server/lib/spaces/tools.test.js +2 -2
  379. package/server/lib/terminal/runtime.js +18 -6
  380. package/server/lib/terminal/runtime.test.js +66 -0
  381. package/server/lib/tts/index.js +3 -0
  382. package/server/lib/tts/service.js +4 -2
  383. package/server/lib/walkthrough/DOCUMENTATION.md +3 -1
  384. package/server/lib/walkthrough/index.js +2 -3
  385. package/server/lib/walkthrough/pr-source.test.js +22 -0
  386. package/server/lib/walkthrough/sources.js +6 -1
  387. package/server/opencode-proxy.test.js +127 -0
  388. package/bin/lib/commands-startup.test.js +0 -15
  389. package/dist/assets/CodeMirrorCommentWidgets-CVDSjcrP.js +0 -1
  390. package/dist/assets/DiffView-Ct7vL3fD.js +0 -4
  391. package/dist/assets/FilesView-DT0uEYgT.js +0 -17
  392. package/dist/assets/GuestSurfacePane-DVvk1VPu.js +0 -1
  393. package/dist/assets/LinearIssuesView-C10MwA9h.js +0 -1
  394. package/dist/assets/MarkdownImageGallery-BbN_K_3d.js +0 -1
  395. package/dist/assets/MarkdownRendererImpl-BLt2Tkk9.js +0 -10
  396. package/dist/assets/OnboardingScreen-Bgp5A3WB.js +0 -1
  397. package/dist/assets/PierreDiffViewer-CWJLj-S-.js +0 -210
  398. package/dist/assets/PlanView-DsRWnsOI.js +0 -5
  399. package/dist/assets/PublishDialog-CCeKloRu.js +0 -2
  400. package/dist/assets/SettingsView-BuPPsNPp.js +0 -30
  401. package/dist/assets/SettingsWindow-CM5fL8Ot.js +0 -1
  402. package/dist/assets/SubmoduleDiffSummary-CfsMcfiQ.js +0 -1
  403. package/dist/assets/ToolOutputDialog-mZrfSofz.js +0 -15
  404. package/dist/assets/ToolPartDiffPreview-BUGCRYEL.js +0 -8
  405. package/dist/assets/WalkthroughView-ClBo7PPd.js +0 -4
  406. package/dist/assets/appThemeRegistry-CxzMxR-H.js +0 -1
  407. package/dist/assets/de-CBla4hjd.js +0 -14
  408. package/dist/assets/es-BmnZtxTD.js +0 -20
  409. package/dist/assets/fileTreeStatus-BSHFIGEg.js +0 -1
  410. package/dist/assets/fr-OVKIBUZO.js +0 -18
  411. package/dist/assets/index-CKCFKmjF.js +0 -1
  412. package/dist/assets/index-Dbx4V4GN.css +0 -1
  413. package/dist/assets/index-vQ1Pg1cr.js +0 -61
  414. package/dist/assets/ja-6v-yr-gE.js +0 -20
  415. package/dist/assets/ko-I_ZLvgQ9.js +0 -20
  416. package/dist/assets/main-CmO4dRtR.js +0 -2
  417. package/dist/assets/main-b9vqhlYM.js +0 -999
  418. package/dist/assets/markdownCore-BPEZRQfP.js +0 -7
  419. package/dist/assets/miniChat-B5Oi7B-6.js +0 -2
  420. package/dist/assets/mobile-CVtShif9.js +0 -2
  421. package/dist/assets/nl-DcvIJf46.js +0 -20
  422. package/dist/assets/patchFileDiff-CW3wCH1O.js +0 -13
  423. package/dist/assets/pl-JxCUl0sd.js +0 -20
  424. package/dist/assets/pt-BR-L89mjja2.js +0 -20
  425. package/dist/assets/relocateRestoredSession-DYh_9oBa.js +0 -1
  426. package/dist/assets/renderElectronMiniChatApp-BD-1JHSg.js +0 -2
  427. package/dist/assets/renderMobileApp-7s5InXt1.js +0 -25
  428. package/dist/assets/runtimeEndpointReset-DqLJC6L1.js +0 -53
  429. package/dist/assets/shikiHighlight-CXgZnvHh.js +0 -1
  430. package/dist/assets/space-apply-1trGVIl8.js +0 -1
  431. package/dist/assets/space-close-y7j-NuBv.js +0 -1
  432. package/dist/assets/tr-ka5J1flt.js +0 -11
  433. package/dist/assets/uk-PyGe6Q_u.js +0 -20
  434. package/dist/assets/useInlineCommentController-CrjSGCpi.js +0 -2
  435. package/dist/assets/vendor-codemirror-lang-python-B7ClrMIT.js +0 -3
  436. package/dist/assets/vendor-codemirror-lang-xml-C8tGnS64.js +0 -1
  437. package/dist/assets/vendor-codemirror-language-data-q2bKO1EM.js +0 -2
  438. package/dist/assets/vendor-framer-motion-Bq3iTZ6r.js +0 -1
  439. package/dist/assets/vendor-katex-CHD9BdDO.js +0 -257
  440. package/dist/assets/vendor-katex-Cp579UoJ.css +0 -1
  441. package/dist/assets/zh-CN-B0P2tybJ.js +0 -20
  442. package/dist/assets/zh-TW-Bs9C5cN8.js +0 -20
@@ -1,25 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/FilesView-DT0uEYgT.js","assets/vendor-react-BUCujlKS.js","assets/vendor-scheduler-7OC5HNn7.js","assets/index-vQ1Pg1cr.js","assets/vendor-zod-CxRSdNoV.js","assets/vendor-vite-runtime-DD1OZmLC.js","assets/vendor-zustand-BAGL70zf.js","assets/vendor-opencode-client-DHzhmLwV.js","assets/index-Dbx4V4GN.css","assets/useAppFontEffects-DCqCVGlT.js","assets/vendor-simplewebauthn-browser-VDA66rT_.js","assets/vendor-class-variance-authority-5VPnzWs2.js","assets/vendor-clsx-B-dksMZM.js","assets/vendor-base-ui-DX96QhTP.js","assets/vendor-floating-ui-utils-D6FqdtJt.js","assets/vendor-floating-ui-dom-BTvzWks8.js","assets/vendor-floating-ui-core-PuGzNPnN.js","assets/vendor-floating-ui-react-dom-DxYCWdHj.js","assets/vendor-use-sync-external-store-D6wYuSt-.js","assets/vendor-dnd-kit-core-BZknOX2w.js","assets/vendor-dnd-kit-utilities-B_MdXhJC.js","assets/vendor-dnd-kit-accessibility-BHxJPORy.js","assets/vendor-dnd-kit-sortable-CsEagZ81.js","assets/vendor-tanstack-react-virtual-H_JmXOFV.js","assets/vendor-tanstack-virtual-core-Dxc8hSTB.js","assets/vendor-framer-motion-Bq3iTZ6r.js","assets/vendor-motion-dom-DcCgeG69.js","assets/vendor-motion-utils-BGh8QBgx.js","assets/vendor-sonner-DFyL3AvE.js","assets/vendor-cmdk-DgLInKvT.js","assets/vendor-radix-ui-react-dialog-B94Bt2qq.js","assets/vendor-radix-ui-primitive-Dc_FVRD7.js","assets/vendor-radix-ui-react-compose-refs-DcAh5WdT.js","assets/vendor-radix-ui-react-context-Czxm7Z62.js","assets/vendor-radix-ui-react-id-f5BLKEVw.js","assets/vendor-radix-ui-react-use-layout-effect-D_3IhJdJ.js","assets/vendor-radix-ui-react-use-controllable-state-BFT5YmkA.js","assets/vendor-radix-ui-react-dismissable-layer-D7kXcwgJ.js","assets/vendor-radix-ui-react-primitive-DhVoX9SD.js","assets/vendor-radix-ui-react-slot-BQgQOasS.js","assets/vendor-radix-ui-react-use-callback-ref-BZPnuXAC.js","assets/vendor-radix-ui-react-use-escape-keydown-oph88g-F.js","assets/vendor-radix-ui-react-focus-scope-CiaxW4dD.js","assets/vendor-radix-ui-react-portal-BMJYHWck.js","assets/vendor-radix-ui-react-presence-CNxf-uq4.js","assets/vendor-radix-ui-react-focus-guards-B6qJXYua.js","assets/vendor-react-remove-scroll-DO7dCTnK.js","assets/vendor-tslib-De9GV7Vy.js","assets/vendor-react-remove-scroll-bar-BcFYyj3E.js","assets/vendor-react-style-singleton-q6EMHnwf.js","assets/vendor-get-nonce-C-Z93AgS.js","assets/vendor-use-sidecar-zDC0RhA3.js","assets/vendor-use-callback-ref-D3RC8gqK.js","assets/vendor-aria-hidden-DvXkyWUv.js","assets/vendor-codemirror-language-ByBn5zIW.js","assets/vendor-lezer-common-B3-cUCR_.js","assets/vendor-codemirror-state-G3UuR-be.js","assets/vendor-marijn-find-cluster-break-DXwl3gUT.js","assets/vendor-codemirror-view-Bniqp7p5.js","assets/vendor-style-mod-NZ5MEPvj.js","assets/vendor-w3c-keyname-Vcq4gwWv.js","assets/vendor-crelt-C8TCjufn.js","assets/vendor-lezer-highlight-CDMHUZ74.js","assets/vendor-codemirror-lang-javascript-CpGYXGuo.js","assets/vendor-lezer-javascript-D7Tj24ot.js","assets/vendor-lezer-lr-bhwg1HMg.js","assets/vendor-codemirror-autocomplete-DW1FQz9_.js","assets/vendor-codemirror-lang-json-58T70Hqs.js","assets/vendor-lezer-json-Iaex0UN-.js","assets/vendor-codemirror-lang-css-B07blnnZ.js","assets/vendor-lezer-css-C5xB6jxd.js","assets/vendor-codemirror-lang-html-DaH9adfE.js","assets/vendor-lezer-html-C0I1p52t.js","assets/vendor-codemirror-lang-markdown-BLKnlLP4.js","assets/vendor-lezer-markdown-C6g-d6P3.js","assets/vendor-codemirror-language-data-q2bKO1EM.js","assets/vendor-codemirror-lang-python-B7ClrMIT.js","assets/vendor-lezer-python-CvuFxeZl.js","assets/vendor-codemirror-commands-DpmhalwN.js","assets/vendor-legendapp-list-DViGR95I.js","assets/vendor-tailwind-merge-CPcsbTWB.js","assets/vendor-fuse.js-Dw8P0qyA.js","assets/shikiHighlight-CXgZnvHh.js","assets/vendor-codemirror-search-ib-sHD5W.js","assets/vendor-replit-codemirror-vim-DkzqxN2H.js","assets/vendor-replit-codemirror-vim-core-FHzKdNUS.js","assets/fileTreeStatus-BSHFIGEg.js","assets/JsonTreeView-B_EPRjzy.js","assets/parseDiffFromFile-Cy0PNxun.js","assets/computeVirtualFileMetrics-CmPe29DM.js","assets/vendor-shiki-Bbf2GEcE.js","assets/vendor-shikijs-core-CGM_jqPK.js","assets/vendor-shikijs-types-CPSbSeK6.js","assets/vendor-shikijs-vscode-textmate-BgLrS_2D.js","assets/vendor-hast-util-to-html-BKBhbTDb.js","assets/vendor-html-void-elements-CkdplsNl.js","assets/vendor-property-information-rJCbAzvX.js","assets/vendor-zwitch-C2o2j-tx.js","assets/vendor-stringify-entities-CsH1VEn9.js","assets/vendor-character-entities-legacy-BpoLgcEt.js","assets/vendor-character-entities-html4-D7taRCQ7.js","assets/vendor-ccount-c2V3InAJ.js","assets/vendor-comma-separated-tokens-D8TqSuIK.js","assets/vendor-space-separated-tokens-DD3iYX1K.js","assets/vendor-hast-util-whitespace-D4Wp6AEg.js","assets/vendor-shikijs-engine-oniguruma-DPWuIF1G.js","assets/themeResolver-BmJyTmjJ.js","assets/vendor-pierre-theming-C6Z4M5_u.js","assets/vendor-shikijs-engine-javascript-Cme4830A.js","assets/vendor-oniguruma-to-es-DLBnFDCE.js","assets/vendor-oniguruma-parser-C0D4_9rT.js","assets/vendor-regex-BBWcyTkg.js","assets/vendor-regex-utilities-2BQyy0xI.js","assets/vendor-regex-recursion-JU4mF-dD.js","assets/vendor-shikijs-transformers-CZWsLLKm.js","assets/vendor-diff-C3JhlQdm.js","assets/Virtualizer-CGNyscoc.js","assets/isFilePlainText-CYBUzW4I.js","assets/appThemeRegistry-CxzMxR-H.js","assets/textMateThemeFromAppTheme-CDlKffWz.js","assets/runtimeEndpointReset-DqLJC6L1.js","assets/space-apply-1trGVIl8.js","assets/vendor-cron-parser-CjvYVigk.js","assets/vendor-luxon-BZ0puJYg.js","assets/Virtualizer-xCEYz34p.js","assets/vendor-react-drawio-Ct3Q0DsD.js","assets/useInlineCommentController-CrjSGCpi.js","assets/CodeMirrorCommentWidgets-CVDSjcrP.js","assets/vendor-capacitor-app-BrDJj9I_.js","assets/vendor-capacitor-core-B4EWRrHz.js","assets/vendor-capacitor-push-notifications-KNe1zSBF.js"])))=>i.map(i=>d[i]);
2
- import{f as fe,r as xr,j as t,R as u,c as ws,h as Ca}from"./vendor-react-BUCujlKS.js";import"./vendor-katex-CHD9BdDO.js";import{u as Be,a as rn,b as uo,d as hi,i as Ke,e as St,s as ps,f as en,h as Ir,j as Ra,k as fo,l as Ea,p as Ia,m as Aa,n as Lt,o as on,q as Pa,t as Ta,v as cs,x as Da,y as gi,z as ar,A as _a,G as bi,B as Ma,C as xi,D as mo,E as yi,F as vi,H as wi,M as wn,I as Oa,J as za,K as La}from"./index-vQ1Pg1cr.js";import{u as xs,a as Ba,b as it,c as yr,d as po,r as ho,e as Fa,f as xe,t as le,o as $a,I as H,B as Ne,g as go,O as hs,h as ee,P as bo,i as Wa,j as Va,k as Ua,l as ft,m as Ga,n as qt,p as Ka,q as ji,s as qa,v as Ha,w as Ar,x as Ja,y as Ya,z as De,A as Xa,C as Pr,D as Tr,E as Dr,F as Qa,S as _r,G as Tn,H as xo,J as Za,K as yo,L as rt,M as vo,N as Fn,Q as el,R as tl,T as sl,U as nl,V as En,W as vr,X as Ot,Y as rl,Z as wo,_ as jo,$ as ko,a0 as So,a1 as No,a2 as Co,a3 as il,a4 as ol,a5 as ki,a6 as Ro,a7 as Eo,a8 as Io,a9 as al,aa as ll,ab as Ao,ac as cl,ad as ul,ae as dl,af as lr,ag as fl,ah as Vs,ai as us,aj as Si,ak as Po,al as ml,am as pl,an as $n,ao as hl,ap as To,aq as Do,ar as gl,as as bl,at as ms,au as ys,av as xl,aw as yl,ax as vl,ay as wl,az as jl,aA as Mr,aB as kl,aC as Sl,aD as Nl,aE as Cl,aF as Rl,aG as _o,aH as El,aI as Il,aJ as Al,aK as Pl,aL as Tl,aM as Dl,aN as _l,aO as Ml,aP as Ol,aQ as zl,aR as Ni,aS as jn,aT as Ll,aU as Bl,aV as Fl,aW as $l,aX as Wl,aY as kn,aZ as Vl,a_ as Ul,a$ as Gl,b0 as Kl,b1 as ql,b2 as Hl,b3 as Mo,b4 as Ye,b5 as Jl,b6 as Yl,b7 as Xl,b8 as Ql,b9 as Zl,ba as ec,bb as tc,bc as sc,bd as Or,be as nc,bf as rc,bg as ic,bh as oc,bi as Oo,bj as ac,bk as lc,bl as cc,bm as uc,bn as dc,bo as fc,bp as mc,bq as pc,br as hc,bs as gc,bt as bc,bu as xc,bv as yc,bw as vc,bx as wc,by as jc,bz as kc,bA as Sc,bB as Nc,bC as Cc,bD as Rc,bE as Ec,bF as Ic,bG as Ac,bH as Pc,bI as Tc,bJ as Dc,bK as _c,bL as Mc,bM as Oc}from"./useAppFontEffects-DCqCVGlT.js";import{u as gs,a as zc,S as Lc,r as Bc,h as Fc,b as zo,c as Lo,C as Bo,d as $c,s as Wc,g as Sn,p as Vc,e as Uc,f as Ci,i as Gc,j as Kc,D as qc,k as Hc,l as Jc,m as Nn,n as Yc,o as cr,q as Xc,B as Qc,I as Zc,t as eu,v as tu,w as su,G as nu,N as ru,x as iu,y as ou,A as au,z as lu,E as cu,T as uu,P as du,O as fu,F as mu,H as pu,J as hu,K as gu,L as bu,M as xu,Q as yu,R as vu,U as wu,V as ju,W as ku,X as Su,Y as Nu,Z as Cu,_ as Ru,$ as Eu,a0 as Iu,a1 as Au,a2 as Pu,a3 as Tu,a4 as Du,a5 as _u}from"./runtimeEndpointReset-DqLJC6L1.js";import{_ as js}from"./vendor-vite-runtime-DD1OZmLC.js";import{S as Mu,A as Ou}from"./SettingsView-BuPPsNPp.js";import{PlanView as zu}from"./PlanView-DsRWnsOI.js";import{p as Lu}from"./vendor-aparajita-capacitor-secure-storage-5IShChL0.js";import{Capacitor as Bu,registerPlugin as Fu}from"./vendor-capacitor-core-B4EWRrHz.js";import{k as wr,d as $u,M as Dn,J as jr,s as Fo,a as zr,p as Wu,_ as Ri,f as Lr,V as Vu,K as Ei,P as Uu,b as Gu,c as Ku,U as qu,Z as Hu,Q as Ju,r as Yu}from"./vendor-remixicon-react-D6dZ0UwF.js";import{f as Br,h as ks,i as Fr,P as $r,D as Wr,j as Vr}from"./vendor-dnd-kit-core-BZknOX2w.js";import{s as Ur,S as Gr,v as Kr,u as qr}from"./vendor-dnd-kit-sortable-CsEagZ81.js";import{C as Hr}from"./vendor-dnd-kit-utilities-B_MdXhJC.js";import{c as Xu}from"./sessionOwnership-Bs1xbRfB.js";import{c as Jr,p as $o}from"./vendor-zustand-BAGL70zf.js";import{toast as kr}from"./vendor-sonner-DFyL3AvE.js";import{u as Qu,a as Zu,P as ed,C as td,R as sd,I as nd,b as rd,c as id,d as od,D as ad}from"./PublishDialog-CCeKloRu.js";import{u as ld,a as cd,b as ud,c as dd,i as fd,f as Ii,B as md,C as pd,P as Ai}from"./patchFileDiff-CW3wCH1O.js";import{u as hd,a as gd,i as bd,S as xd,b as yd}from"./SubmoduleDiffSummary-CfsMcfiQ.js";import{P as vd}from"./PierreDiffViewer-CWJLj-S-.js";import{p as wd}from"./parseDiffFromFile-Cy0PNxun.js";import"./vendor-scheduler-7OC5HNn7.js";import"./vendor-zod-CxRSdNoV.js";import"./vendor-opencode-client-DHzhmLwV.js";import"./vendor-simplewebauthn-browser-VDA66rT_.js";import"./vendor-class-variance-authority-5VPnzWs2.js";import"./vendor-clsx-B-dksMZM.js";import"./vendor-base-ui-DX96QhTP.js";import"./vendor-floating-ui-utils-D6FqdtJt.js";import"./vendor-floating-ui-dom-BTvzWks8.js";import"./vendor-floating-ui-core-PuGzNPnN.js";import"./vendor-floating-ui-react-dom-DxYCWdHj.js";import"./vendor-use-sync-external-store-D6wYuSt-.js";import"./vendor-tanstack-react-virtual-H_JmXOFV.js";import"./vendor-tanstack-virtual-core-Dxc8hSTB.js";import"./vendor-framer-motion-Bq3iTZ6r.js";import"./vendor-motion-dom-DcCgeG69.js";import"./vendor-motion-utils-BGh8QBgx.js";import"./vendor-cmdk-DgLInKvT.js";import"./vendor-radix-ui-react-dialog-B94Bt2qq.js";import"./vendor-radix-ui-primitive-Dc_FVRD7.js";import"./vendor-radix-ui-react-compose-refs-DcAh5WdT.js";import"./vendor-radix-ui-react-context-Czxm7Z62.js";import"./vendor-radix-ui-react-id-f5BLKEVw.js";import"./vendor-radix-ui-react-use-layout-effect-D_3IhJdJ.js";import"./vendor-radix-ui-react-use-controllable-state-BFT5YmkA.js";import"./vendor-radix-ui-react-dismissable-layer-D7kXcwgJ.js";import"./vendor-radix-ui-react-primitive-DhVoX9SD.js";import"./vendor-radix-ui-react-slot-BQgQOasS.js";import"./vendor-radix-ui-react-use-callback-ref-BZPnuXAC.js";import"./vendor-radix-ui-react-use-escape-keydown-oph88g-F.js";import"./vendor-radix-ui-react-focus-scope-CiaxW4dD.js";import"./vendor-radix-ui-react-portal-BMJYHWck.js";import"./vendor-radix-ui-react-presence-CNxf-uq4.js";import"./vendor-radix-ui-react-focus-guards-B6qJXYua.js";import"./vendor-react-remove-scroll-DO7dCTnK.js";import"./vendor-tslib-De9GV7Vy.js";import"./vendor-react-remove-scroll-bar-BcFYyj3E.js";import"./vendor-react-style-singleton-q6EMHnwf.js";import"./vendor-get-nonce-C-Z93AgS.js";import"./vendor-use-sidecar-zDC0RhA3.js";import"./vendor-use-callback-ref-D3RC8gqK.js";import"./vendor-aria-hidden-DvXkyWUv.js";import"./vendor-codemirror-language-ByBn5zIW.js";import"./vendor-lezer-common-B3-cUCR_.js";import"./vendor-codemirror-state-G3UuR-be.js";import"./vendor-marijn-find-cluster-break-DXwl3gUT.js";import"./vendor-codemirror-view-Bniqp7p5.js";import"./vendor-style-mod-NZ5MEPvj.js";import"./vendor-w3c-keyname-Vcq4gwWv.js";import"./vendor-crelt-C8TCjufn.js";import"./vendor-lezer-highlight-CDMHUZ74.js";import"./vendor-codemirror-lang-javascript-CpGYXGuo.js";import"./vendor-lezer-javascript-D7Tj24ot.js";import"./vendor-lezer-lr-bhwg1HMg.js";import"./vendor-codemirror-autocomplete-DW1FQz9_.js";import"./vendor-codemirror-lang-json-58T70Hqs.js";import"./vendor-lezer-json-Iaex0UN-.js";import"./vendor-codemirror-lang-css-B07blnnZ.js";import"./vendor-lezer-css-C5xB6jxd.js";import"./vendor-codemirror-lang-html-DaH9adfE.js";import"./vendor-lezer-html-C0I1p52t.js";import"./vendor-codemirror-lang-markdown-BLKnlLP4.js";import"./vendor-lezer-markdown-C6g-d6P3.js";import"./vendor-codemirror-language-data-q2bKO1EM.js";import"./vendor-codemirror-lang-python-B7ClrMIT.js";import"./vendor-lezer-python-CvuFxeZl.js";import"./vendor-codemirror-commands-DpmhalwN.js";import"./vendor-legendapp-list-DViGR95I.js";import"./vendor-tailwind-merge-CPcsbTWB.js";import"./vendor-fuse.js-Dw8P0qyA.js";import"./space-apply-1trGVIl8.js";import"./vendor-cron-parser-CjvYVigk.js";import"./vendor-luxon-BZ0puJYg.js";import"./vendor-yaml-3778uTud.js";import"./shikiHighlight-CXgZnvHh.js";import"./vendor-codemirror-search-ib-sHD5W.js";import"./vendor-replit-codemirror-vim-DkzqxN2H.js";import"./vendor-replit-codemirror-vim-core-FHzKdNUS.js";import"./appThemeRegistry-CxzMxR-H.js";import"./textMateThemeFromAppTheme-CDlKffWz.js";import"./themeResolver-BmJyTmjJ.js";import"./vendor-pierre-theming-C6Z4M5_u.js";import"./vendor-shikijs-core-CGM_jqPK.js";import"./vendor-shikijs-types-CPSbSeK6.js";import"./vendor-shikijs-vscode-textmate-BgLrS_2D.js";import"./vendor-hast-util-to-html-BKBhbTDb.js";import"./vendor-html-void-elements-CkdplsNl.js";import"./vendor-property-information-rJCbAzvX.js";import"./vendor-zwitch-C2o2j-tx.js";import"./vendor-stringify-entities-CsH1VEn9.js";import"./vendor-character-entities-legacy-BpoLgcEt.js";import"./vendor-character-entities-html4-D7taRCQ7.js";import"./vendor-ccount-c2V3InAJ.js";import"./vendor-comma-separated-tokens-D8TqSuIK.js";import"./vendor-space-separated-tokens-DD3iYX1K.js";import"./vendor-hast-util-whitespace-D4Wp6AEg.js";import"./vendor-qrcode-DTJ12-WC.js";import"./vendor-dijkstrajs-COg3n3zL.js";import"./vendor-strip-json-comments-5dJlOkP1.js";import"./useInlineCommentController-CrjSGCpi.js";import"./CodeMirrorCommentWidgets-CVDSjcrP.js";import"./vendor-dnd-kit-accessibility-BHxJPORy.js";import"./changesTree-CePHbFcj.js";import"./computeVirtualFileMetrics-CmPe29DM.js";import"./vendor-shiki-Bbf2GEcE.js";import"./vendor-shikijs-engine-oniguruma-DPWuIF1G.js";import"./vendor-shikijs-engine-javascript-Cme4830A.js";import"./vendor-oniguruma-to-es-DLBnFDCE.js";import"./vendor-oniguruma-parser-C0D4_9rT.js";import"./vendor-regex-BBWcyTkg.js";import"./vendor-regex-utilities-2BQyy0xI.js";import"./vendor-regex-recursion-JU4mF-dD.js";import"./vendor-shikijs-transformers-CZWsLLKm.js";import"./isDiffPlainText-CQmDCnEv.js";import"./vendor-diff-C3JhlQdm.js";import"./VirtualizedFileDiff-BTJVRkyo.js";import"./Virtualizer-xCEYz34p.js";let Wo=null,Pi=!1;const jd=new Promise(n=>{Wo=n});function kd(){Pi||(Pi=!0,Wo?.())}const Sd=6,Nd=n=>n.parentID??null,Ti=n=>{const e=n.replace(/\/+$/,"");return e.slice(e.lastIndexOf("/")+1)||e},Cd=n=>n.replace(/\\/g,"/").replace(/\/+$/,""),Rd=(n,e)=>{if(!n)return"";let s=null,i=-1;for(const r of e){const a=Cd(r.path);(n===a||n.startsWith(`${a}/`))&&a.length>i&&(s=r,i=a.length)}return s?s.label?.trim()||Ti(s.path):Ti(n)},Ed=()=>{const n=xs.getState().activeSessions,e=Ba.getState().index.session.unseenCount,s=Be.getState().notifyOnSubtasks,i=it.getState().projects,r=yr.getState().ids,a=po.getState().rankById;let o=0;const l=[];for(const c of n){const p=Nd(c)!==null,m=(e[c.id]??0)>0&&(!p||s);m&&(o+=1),p||l.push({session:c,unread:m,project:Rd(ho(c),i)})}l.sort((c,p)=>Fa(c.session,p.session,r,a));const f=l.slice(0,Sd).map(({session:c,unread:p,project:g})=>({id:c.id,title:c.title??"",unread:p,project:g}));return{runtimeKey:rn(),attentionCount:o,recentSessions:f}},Id="__OPENCHAMBER_WIDGET_SNAPSHOT__",Ad=()=>{typeof window>"u"||(window[Id]=()=>{try{return JSON.stringify(Ed())}catch{return null}})},ur="mobile-app-update-available",Di="mobile-app-update-toast-dismissed-version",Pd=()=>{const n=fe.c(8),{t:e}=xe(),s=gs(Td),i=gs(Dd),r=gs(_d),a=gs(Md);let o;n[0]===Symbol.for("react.memo_cache_sentinel")?(o=new Set,n[0]=o):o=n[0];const l=xr.useRef(o);let f,c;return n[1]!==s||n[2]!==a||n[3]!==i||n[4]!==e||n[5]!==r?(f=()=>{if(uo()!=="android"||i!=="mobile"||!s||!r||!a){le.dismiss(ur);return}hi().getItem(Di)!==r&&(l.current.has(r)||(l.current.add(r),le.info(e("mobileUpdate.toast.available.title"),{id:ur,description:e("mobileUpdate.toast.available.description",{version:r}),duration:1/0,icon:t.jsx(H,{name:"download",className:"h-4 w-4 text-muted-foreground"}),action:{label:e("mobileUpdate.toast.actions.download"),onClick:()=>{$a(a)}},cancel:{label:e("mobileUpdate.toast.actions.dismiss"),onClick:()=>{hi().setItem(Di,r),le.dismiss(ur)}}})))},c=[s,a,i,e,r],n[1]=s,n[2]=a,n[3]=i,n[4]=e,n[5]=r,n[6]=f,n[7]=c):(f=n[6],c=n[7]),xr.useEffect(f,c),null};function Td(n){return n.available}function Dd(n){return n.runtimeType}function _d(n){return n.info?.version}function Md(n){return n.info?.downloadUrl}const _i=300,Od="openchamber.mobile.connectLog.v1",bs=[];if(typeof window<"u")try{window.localStorage.removeItem(Od)}catch{}const Yr=(n,e)=>{bs.push({at:Date.now(),step:n,detail:e}),bs.length>_i&&bs.splice(0,bs.length-_i)};typeof window<"u"&&Yr("app:launch","{}");const zd=()=>[...bs],Ld=n=>{const e=new Date(n),s=(i,r=2)=>String(i).padStart(r,"0");return`${s(e.getHours())}:${s(e.getMinutes())}:${s(e.getSeconds())}.${s(e.getMilliseconds(),3)}`},Vo=n=>`${Ld(n.at)} ${n.step}${n.detail&&n.detail!=="{}"?` ${n.detail}`:""}`,Bd=()=>bs.map(Vo).join(`
3
- `),Uo=(n,e)=>{const s=fe.c(10),i=700,r=u.useRef(null),a=u.useRef(null),o=u.useRef(!1);let l;s[0]===Symbol.for("react.memo_cache_sentinel")?(l=()=>{r.current!==null&&window.clearTimeout(r.current),r.current=null,a.current=null},s[0]=l):l=s[0];const f=l;let c,p;s[1]===Symbol.for("react.memo_cache_sentinel")?(c=()=>f,p=[f],s[1]=c,s[2]=p):(c=s[1],p=s[2]),u.useEffect(c,p);let g;s[3]!==i||s[4]!==n?(g=w=>{o.current=!1,a.current={x:w.clientX,y:w.clientY},r.current!==null&&window.clearTimeout(r.current),r.current=window.setTimeout(()=>{r.current=null,o.current=!0,n()},i)},s[3]=i,s[4]=n,s[5]=g):g=s[5];const m=g;let h;s[6]===Symbol.for("react.memo_cache_sentinel")?(h=w=>{const E=a.current;E&&(Math.abs(w.clientX-E.x)>10||Math.abs(w.clientY-E.y)>10)&&f()},s[6]=h):h=s[6];const b=h;let S;s[7]===Symbol.for("react.memo_cache_sentinel")?(S=w=>{o.current&&(o.current=!1,w.preventDefault(),w.stopPropagation())},s[7]=S):S=s[7];const x=S;let R;return s[8]!==m?(R={onPointerDown:m,onPointerMove:b,onPointerUp:f,onPointerCancel:f,onClickCapture:x},s[8]=m,s[9]=R):R=s[9],R},_n="openchamber.mobile.connections.v1",Fd="openchamber.mobile.",Mi="openchamber.mobile.deviceId",$d=()=>{try{const n=window.localStorage.getItem(Mi);if(n&&n.trim())return n.trim();const e=crypto.randomUUID();return window.localStorage.setItem(Mi,e),e}catch{return crypto.randomUUID()}},Oi=()=>`mobile:${$d()}`,zi=()=>{try{const n=Bu.getPlatform();return n==="ios"||n==="android"?n:void 0}catch{return}},Go=12,Ko=8e3,Wd=2500,Vd=3e3,Mn=2500,Ud=()=>{let n=0;return{begin:()=>(n+=1,n),cancel:()=>{n+=1},isCurrent:e=>e===n}},Rs=n=>{const e=n.trim();if(!e)return"";const s=/^https?:\/\//i.test(e)?e:`http://${e}`,i=new URL(s);return i.hash="",i.search="",i.pathname=i.pathname.replace(/\/+$/,""),i.toString().replace(/\/+$/,"")},In=n=>{try{return new URL(n).host}catch{return n}},Ss=n=>{try{return Rs(n)}catch{return n.trim().replace(/\/+$/g,"")}},qo=(n,e)=>Ss(n)===Ss(e),Ho=n=>`relay:${n.serverId}@${n.relayUrl.trim()}`,Gd=n=>`relay://${n.serverId}`,Wn=n=>n.candidates.filter(e=>e.kind==="direct"),Yt=n=>{const e=n.candidates.find(s=>s.kind==="relay");return e&&e.kind==="relay"?e.relay:null},It=n=>{const e=Wn(n)[0];if(e)return e.url;const s=Yt(n);return s?Gd(s):""},Ve=n=>{const e=Yt(n);if(e)return Ho(e);const s=Wn(n)[0];return s?Ss(s.url):""},On=(n,e)=>{const s=n.find(a=>a.kind==="relay"),i=s&&s.kind==="relay"?s.relay.serverId:null,r=new Set(n.filter(a=>a.kind==="direct").map(a=>Ss(a.url)));return e.some(a=>a.kind==="relay"?i!==null&&a.relay.serverId===i:r.has(Ss(a.url)))},Xr=n=>{const e=(()=>{try{return Rs(n)}catch{return""}})();return e?[{kind:"direct",url:e}]:[]},Li=n=>{if(n.candidates&&n.candidates.length>0)return n.candidates;const e=[];return typeof n.url=="string"&&n.url.trim()&&!/^relay:\/\//i.test(n.url.trim())&&e.push(...Xr(n.url)),n.relay&&e.push({kind:"relay",relay:n.relay}),e},Qr=n=>{if(!n||typeof n!="object"||Array.isArray(n))return null;const e=n;if(typeof e.relayUrl!="string"||!e.relayUrl.trim()||typeof e.serverId!="string"||!e.serverId.trim())return null;const s=e.hostEncPubJwk;if(!s||typeof s!="object"||Array.isArray(s))return null;const i=s;return i.kty!=="EC"||i.crv!=="P-256"||typeof i.x!="string"||!i.x||typeof i.y!="string"||!i.y?null:{relayUrl:e.relayUrl,serverId:e.serverId,hostEncPubJwk:{kty:"EC",crv:"P-256",x:i.x,y:i.y}}},Jo=n=>{try{return JSON.stringify(n)}catch{return String(n)}},Ee=(n,e={})=>{const s=Jo(e);console.info("[mobile-connect]",n,s),Yr(n,s)},Us=(n,e={})=>{Ee(n,e)},Ns=(n,e={})=>{const s=Jo(e);console.info("[mobile-storage]",n,s),Yr(n,s)},Kd=n=>{if(typeof n!="string")return n;try{return JSON.parse(n)}catch{return n}},qd=n=>{if(typeof n!="string")return n??void 0;try{return JSON.parse(n)}catch{return n}},Hd=async(n,e)=>{if(!Ke())return null;try{const{CapacitorHttp:s}=await js(async()=>{const{CapacitorHttp:a}=await import("./vendor-capacitor-core-B4EWRrHz.js");return{CapacitorHttp:a}},[]),i=Ea(n,new Headers(e?.headers)),r=await s.request({url:n,method:e?.method||"GET",headers:Object.fromEntries(i.entries()),data:qd(e?.body)});return{ok:r.status>=200&&r.status<300,status:r.status,source:"native-http",json:async()=>Kd(r.data)}}catch(s){return Ee("native-http:failed",{url:n,error:s instanceof Error?s.message:String(s)}),null}},Jd=async(n,e)=>{const s=await fetch(n,e).catch(i=>(Ee("browser-fetch:failed",{url:n,error:i instanceof Error?i.message:String(i)}),null));return s?{ok:s.ok,status:s.status,source:"browser-fetch",json:()=>s.json()}:null},Bt=async(n,e,s)=>{let i;const r=new Promise(a=>{i=window.setTimeout(()=>{s?.(),a(null)},n)});try{return await Promise.race([e,r])}catch{return null}finally{i!==void 0&&window.clearTimeout(i)}},Xt=async(n,e,s)=>{const i=s?.totalTimeoutMs??Ko,r=Date.now(),a=await Bt(Math.min(Wd,i),Hd(n,e));if(a)return a;const o=new AbortController,l=Math.max(500,i-(Date.now()-r));return Bt(l,Jd(n,{...e,signal:o.signal}),()=>o.abort())},Vn=async n=>{if(!n)return null;const e=await n.json().catch(()=>null);if(!e||typeof e!="object")return null;const s=e;return{authenticated:typeof s.authenticated=="boolean"?s.authenticated:void 0,disabled:typeof s.disabled=="boolean"?s.disabled:void 0,scope:typeof s.scope=="string"?s.scope:void 0}},Cs=15e3,Yd=async(n,e,s,i=Cs,r)=>{const a=fo({relayUrl:n.relayUrl,serverId:n.serverId,hostEncPubJwk:n.hostEncPubJwk}),o=l=>l==="ok"&&r?.keepTunnel?{outcome:l,tunnel:a}:(a.close(),{outcome:l});try{const l=e?{Authorization:`Bearer ${e}`}:void 0,f=await Bt(i,a.fetch("/auth/session",{headers:l}).catch(()=>null));if(Ee("relay:session",{ok:f?.ok===!0,status:f?.status??null,hasToken:!!e}),!f)return o("unreachable");if(f.status===401)return o(e?"auth-failed":"needs-login");if(!f.ok&&f.status!==404)return o("auth-failed");const c=await Vn(f);return c&&c.disabled!==!0&&c.authenticated===!1?o(e?"auth-failed":"needs-login"):o("ok")}catch(l){throw a.close(),l}},Xd=(n,e,s,i,r)=>{const a=typeof window<"u"?window.location.origin:"",o={relayUrl:n.relayUrl,serverId:n.serverId,hostEncPubJwk:n.hostEncPubJwk,...s?{grant:s}:{}};r&&Ra(o,r),ps({apiBaseUrl:a,clientToken:e,runtimeKey:i??Ho(n),relay:o})},Qd=n=>{if(!n||typeof n!="object")return null;const e=n;if(e.kind==="direct")return typeof e.url=="string"&&e.url.trim()?{kind:"direct",url:e.url}:null;if(e.kind==="relay"){const s=Qr(e.relay);return s?{kind:"relay",relay:s}:null}return null},Zd=n=>{if(n.mode==="relay"){const e=Qr(n.relay);return e?[{kind:"relay",relay:e}]:[]}return typeof n.url=="string"?Xr(n.url):[]},Qt=()=>{if(typeof window>"u")return[];let n;try{n=JSON.parse(window.localStorage.getItem(_n)||"[]")}catch{return[]}if(!Array.isArray(n))return[];const e=Ke();return n.flatMap(s=>{if(!s||typeof s!="object")return[];const i=s;if(typeof i.id!="string")return[];const r=Array.isArray(i.candidates)?i.candidates.map(Qd).filter(f=>!!f):Zd(i);if(r.length===0)return[];const a=typeof i.clientToken=="string"&&i.clientToken.trim()?i.clientToken:void 0,o=typeof i.label=="string"&&i.label.trim()?i.label:In(It({candidates:r})),l={id:i.id,label:o,candidates:r,lastUsedAt:typeof i.lastUsedAt=="number"?i.lastUsedAt:0};return e?[{...l,hasToken:!!i.hasToken||!!a}]:[{...l,clientToken:a,hasToken:!!a}]}).sort((s,i)=>i.lastUsedAt-s.lastUsedAt)},Sr=n=>n.kind==="relay"?{kind:"relay",relay:{relayUrl:n.relay.relayUrl,serverId:n.relay.serverId,hostEncPubJwk:n.relay.hostEncPubJwk}}:{kind:"direct",url:n.url},Zr=n=>{if(typeof window>"u")return;const e=Ke(),s=n.slice(0,Go).map(i=>{const r={id:i.id,label:i.label,candidates:i.candidates.map(Sr),lastUsedAt:i.lastUsedAt};return e?{...r,hasToken:!!(i.hasToken||i.clientToken)}:{...r,clientToken:i.clientToken}});try{window.localStorage.setItem(_n,JSON.stringify(s))}catch(i){console.warn("[mobile-storage] failed to persist connection metadata",i)}},Yo=(n,e)=>{const s=n.find(a=>e.id&&a.id===e.id||On(a.candidates,e.candidates)),i=Ke(),r={id:e.id||s?.id||crypto.randomUUID(),label:e.label,candidates:e.candidates,lastUsedAt:Date.now(),...i?{hasToken:e.hasToken??(!!e.clientToken||s?.hasToken||!1)}:{clientToken:e.clientToken??s?.clientToken,hasToken:!!(e.clientToken??s?.clientToken)}};return[r,...n.filter(a=>a.id!==r.id&&!On(a.candidates,e.candidates))].slice(0,Go)},ei=Lu,ef=0,ti=n=>`${Fd}token.${encodeURIComponent(n)}`,tf=async(n,e)=>{let s;const i=new Promise(r=>{s=window.setTimeout(()=>r(e),Vd)});try{return await Promise.race([n.catch(()=>e),i])}finally{s!==void 0&&window.clearTimeout(s)}},si=async(n,e,s)=>Ke()?tf(e().catch(i=>(console.warn(`[mobile-storage] ${n} failed`,i),s)),s):s,tn=async n=>{Ns("secure:read-start",{key:n});const e=await si("secure:read",async()=>(await ei.internalGetItem({prefixedKey:ti(n),sync:!1})).data,null),s=typeof e=="string"&&e.trim()?e:void 0;return Ns("secure:read",{key:n,hasToken:!!s}),s},Ht=async(n,e)=>{Ns("secure:write-start",{key:n});const s=await si("secure:write",async()=>(await ei.internalSetItem({prefixedKey:ti(n),data:e,sync:!1,access:ef}),!0),!1);return Ns("secure:write",{key:n,ok:s}),s},sf=async n=>{await si("secure:delete",async()=>(await ei.internalRemoveItem({prefixedKey:ti(n),sync:!1}),!0),!1)},nf=async(n,e)=>{let s=0,i=0;return{records:await Promise.all(n.map(async a=>{if(!a||typeof a!="object")return a;const o=a,l=typeof o.url=="string"?o.url:null,f=typeof o.clientToken=="string"?o.clientToken.trim():"";if(!l||!f)return a;if(!await e(l,f))return i+=1,a;s+=1;const{clientToken:c,...p}=o;return{...p,hasToken:!0}})),migrated:s,failed:i}},Xo=async()=>{if(typeof window>"u"||!Ke())return;let n;try{n=JSON.parse(window.localStorage.getItem(_n)||"[]")}catch{return}if(!Array.isArray(n))return;const e=n.filter(i=>!!i&&typeof i=="object"&&typeof i.url=="string"&&typeof i.clientToken=="string"&&!!i.clientToken.trim());if(e.length===0)return;Ns("secure:migrate-start",{count:e.length});const s=await nf(n,async(i,r)=>{const a=Ss(i);return await Ht(a,r)?await tn(a)===r:!1});if(s.migrated>0)try{window.localStorage.setItem(_n,JSON.stringify(s.records))}catch(i){console.warn("[mobile-storage] failed to finalize secure token migration",i);return}Ns("secure:migrate-done",{migrated:s.migrated,failed:s.failed})},rf=async()=>(await Xo(),Qt()),zn=async n=>{const e=Yo(Qt(),n);return Zr(e),Ke()&&n.clientToken&&await Ht(Ve({candidates:n.candidates}),n.clientToken),e},of=async n=>{const e=Qt(),s=e.find(r=>r.id===n)??null,i=e.filter(r=>r.id!==n);return Zr(i),s&&Ke()&&await sf(Ve(s)),i},af=1500,Ln=async(n,e,s)=>{const i=s?.fast?{totalTimeoutMs:Mn}:void 0,r=Yt({candidates:n})?.serverId??null,a=n.find(c=>c.kind==="relay")??null,o=n.filter(c=>c.kind==="direct"),l=async()=>{for(const c of o){const p=Rs(c.url)||c.url,g=e?{Authorization:`Bearer ${e}`}:void 0,m=await Xt(`${p}/health`,{method:"GET"},i);if(Ee("probe:direct:health",{url:p,ok:m?.ok===!0,status:m?.status??null,source:m?.source??null}),!m?.ok)continue;if(r){const x=await m.json().catch(()=>null),R=x&&typeof x=="object"?x.serverId:null;if(typeof R=="string"&&R&&R!==r){Ee("probe:server-id-mismatch",{url:p});continue}}const h=await Xt(`${p}/auth/session`,{method:"GET",credentials:e?"omit":"include",headers:g},i);if(Ee("probe:direct:session",{url:p,ok:h?.ok===!0,status:h?.status??null,source:h?.source??null,hasToken:!!e}),h?.status===401)return{status:"needs-login"};if(!h||!h.ok&&h.status!==404)continue;const b=await Vn(h);if(b&&b.disabled!==!0&&b.authenticated===!1)return{status:"needs-login"};const S=b?.disabled===!0;return!e&&Ke()&&!S&&b?.scope!=="client"?{status:"needs-login"}:{status:"ok",transport:{kind:"direct",url:p}}}return{status:"unreachable"}},f=async()=>{if(!a)return{status:"unreachable"};const{outcome:c,tunnel:p}=await Yd(a.relay,e,void 0,s?.fast?Mn:Ko,{keepTunnel:!0});return c==="ok"?{status:"ok",transport:{kind:"relay",relay:a.relay,tunnel:p}}:c==="needs-login"||c==="auth-failed"?{status:"needs-login"}:{status:"unreachable"}};return a?o.length===0?f():new Promise(c=>{let p=!1,g=!1,m,h=null,b=null;const S=w=>{w?.status==="ok"&&w.transport.kind==="relay"&&w.transport.tunnel?.close()},x=w=>{p||(p=!0,c(w))},R=()=>{g||p||(m!==void 0&&(window.clearTimeout(m),m=void 0),f().then(w=>{if(b=w,p||g){S(w);return}if(w.status==="ok"||w.status==="needs-login"){x(w);return}h&&x(h)}))};l().then(w=>{if(h=w,!p){if(w.status==="ok"||w.status==="needs-login"){g=!0,m!==void 0&&window.clearTimeout(m),S(b),x(w);return}if(b){x(b);return}R()}}),m=window.setTimeout(R,af)}):l()},Jt=(n,e,s)=>{n.kind==="relay"?Xd(n.relay,e,s?.grant,s?.runtimeKey,n.tunnel):ps({apiBaseUrl:n.url,clientToken:e,runtimeKey:s?.runtimeKey}),Zo()},Hs=()=>{const n=Qt()[0];return n?.label?.trim()?n.label:null},Gs=async n=>{const e=n?.fast!==!1;await Xo();const s=Qt()[0];if(Ee("auto-connect:start",{hasCandidate:!!s,fast:e}),!s)return{status:"no-candidate"};let i;if(Ke()){if(s.hasToken&&(i=await tn(Ve(s)),!i))return{status:"no-candidate"}}else if(i=s.clientToken,!i&&s.hasToken)return{status:"no-candidate"};const r=await Ln(s.candidates,i,{fast:e});return Ee("auto-connect:probe",{status:r.status,candidates:s.candidates.map(a=>a.kind)}),r.status==="needs-login"?{status:"needs-login",label:s.label}:r.status!=="ok"?{status:"unreachable",label:s.label}:n?.skipIfConnected&&St()?(r.transport.kind==="relay"&&r.transport.tunnel?.close(),Ee("auto-connect:superseded",{}),{status:"no-candidate"}):(await zn({id:s.id,label:s.label,candidates:s.candidates}),Jt(r.transport,i??null,{runtimeKey:Ve(s)}),{status:"connected"})},lf=async(n,e)=>{let s="";try{s=Rs(n.url)}catch{return!1}if(!s)return!1;const i=n.clientToken?.trim()||void 0,r=i?{Authorization:`Bearer ${i}`}:void 0,a=e?.fast?{totalTimeoutMs:Mn}:void 0;if(!(await Xt(`${s}/health`,{method:"GET",headers:r},a))?.ok)return!1;const l=await Xt(`${s}/auth/session`,{method:"GET",credentials:i?"omit":"include",headers:r},a);if(!l||!l.ok&&l.status!==404)return!1;const f=await Vn(l);return!(f&&f.disabled!==!0&&f.authenticated===!1)},cf=n=>[...n].sort((e,s)=>{const i=(e.priority??100)-(s.priority??100);if(i!==0)return i;const r=a=>a.type==="relay"?2:a.url.startsWith("https://")?0:1;return r(e)-r(s)}).flatMap(e=>{if(e.type==="relay"){const s=Qr({relayUrl:e.relayUrl,serverId:e.serverId,hostEncPubJwk:e.hostEncPubJwk});return s?[{kind:"relay",relay:s}]:[]}return Xr(e.url)}),Bi=async n=>{const e=Yt({candidates:n})?.serverId??null;for(const s of n){if(s.kind==="relay"){const a=fo(s.relay),o=await Bt(Cs,a.fetch("/health").catch(()=>null));if(Ee("establish:relay:health",{ok:o?.ok===!0,status:o?.status??null}),o?.ok)return{kind:"relay",relay:s.relay,tunnel:a};a.close();continue}const i=Rs(s.url)||s.url,r=await Xt(`${i}/health`,{method:"GET"});if(Ee("establish:direct:health",{ok:r?.ok===!0,status:r?.status??null}),!!r?.ok){if(e){const a=await r.json().catch(()=>null),o=a&&typeof a=="object"?a.serverId:null;if(typeof o=="string"&&o&&o!==e){Ee("establish:server-id-mismatch",{url:i});continue}}return{kind:"direct",url:i}}}return null},uf=async(n,e)=>{if(!en())return lf(n,e);const s=await Bt(e?.fast?Mn:Cs,Ir("/auth/session").then(r=>r).catch(()=>null));if(!s)return!0;if(s.status===401)return!1;if(!s.ok&&s.status!==404)return!0;const i=await Vn(s);return!(i&&i.disabled!==!0&&i.authenticated===!1)},df=n=>n.kind==="relay"?en():!en()&&qo(n.url,St()),Qo=()=>{const n=rn();return n?Qt().find(e=>Ve(e)===n)??null:null},Fi=n=>{const e=rn();return!!e&&Ve(n)===e},An=async n=>{const e=n?.fast!==!1,s=Qo();if(!s)return Ee("reprobe:no-connection",{runtimeKey:!!rn()}),"no-connection";let i;if(Ke()?i=s.hasToken?await tn(Ve(s)):void 0:i=s.clientToken,!i&&s.hasToken)return Ee("reprobe:no-token",{hasToken:!0}),"unreachable";Ee("reprobe:start",{candidates:s.candidates.map(c=>c.kind),fast:e,hasToken:!!i});const r=s.candidates.findIndex(c=>df(c.kind==="relay"?{kind:"relay",relay:c.relay}:{kind:"direct",url:c.url})),a=r>=0?s.candidates.slice(0,r):s.candidates,o=await Ln(a,i,{fast:e});if(Ee("reprobe:better",{status:o.status,probed:a.length}),o.status==="ok")return await zn({id:s.id,label:s.label,candidates:s.candidates}),Jt(o.transport,i??null,{runtimeKey:Ve(s)}),"switched";if(o.status==="needs-login")return"needs-login";if(r>=0){const c=await uf({url:St(),clientToken:i},{fast:e});if(Ee("reprobe:current",{stillValid:c}),c)return Zo(),"unchanged"}const l=r>=0?s.candidates.slice(r+1):[],f=await Ln(l,i,{fast:e});return Ee("reprobe:fallback",{status:f.status,probed:l.length}),f.status==="ok"?(await zn({id:s.id,label:s.label,candidates:s.candidates}),Jt(f.transport,i??null,{runtimeKey:Ve(s)}),"switched"):f.status==="needs-login"?"needs-login":"unreachable"},ff=5e3;let dr=!1;const mf=async()=>{if(dr)return"skipped";const n=Qo();if(!n)return Ee("candidates:refresh-skip",{reason:"no-active-connection"}),"skipped";const e=Yt(n);if(!e)return Ee("candidates:refresh-skip",{reason:"no-relay-candidate"}),"skipped";dr=!0;try{const s=await Bt(Cs,Ir("/api/client-auth/connection/candidates").then(c=>c).catch(()=>null));if(!s?.ok)return Ee("candidates:refresh-skip",{reason:"fetch-failed",status:s?.status??null}),"skipped";const i=await s.json().catch(()=>null);if(!i||i.serverId!==e.serverId)return Ee("candidates:refresh-skip",{reason:"server-id-mismatch"}),"skipped";const r=Array.isArray(i.candidates)?i.candidates:[],a=[];for(const c of r){if(!c||typeof c!="object")continue;const p=c;if(!(p.type!=="lan"||typeof p.url!="string"))try{const g=Rs(p.url);g&&!a.includes(g)&&a.push(g)}catch{}}if(a.length===0)return Ee("candidates:refresh-skip",{reason:"no-lan-reported"}),"skipped";const o=Wn(n).filter(c=>c.url.startsWith("https://")),l=[...a.map(c=>({kind:"direct",url:c})),...o,{kind:"relay",relay:e}];return JSON.stringify(n.candidates.map(Sr))===JSON.stringify(l.map(Sr))?"unchanged":(Ee("candidates:refreshed",{lanCount:a.length}),await zn({id:n.id,label:n.label,candidates:l}),"updated")}finally{dr=!1}},Zo=()=>{typeof window>"u"||window.setTimeout(()=>{(async()=>{const n=await mf().catch(()=>"skipped");Ee("candidates:refresh-result",{result:n}),n==="updated"&&en()&&await An().catch(()=>null)})()},ff)},ea=n=>{const{t:e}=xe(),[s,i]=u.useState(()=>Qt()),[r,a]=u.useState(null),[o,l]=u.useState(null),[f,c]=u.useState(null),p=u.useRef(s),g=u.useRef(null),m=u.useRef(Ud()),h=u.useCallback(v=>{p.current=v,i(v)},[]),b=u.useCallback(v=>{g.current=v,a(v)},[]),S=u.useCallback(v=>{g.current===v&&(g.current=null,a(null))},[]);u.useEffect(()=>{let v=!1;return rf().then(N=>{v||h(N)}),()=>{v=!0}},[h]);const x=u.useCallback(v=>{const N=Yo(p.current,v);return h(N),Zr(N),N},[h]),R=u.useCallback(async v=>{l(null),b("connect");try{const N=Li(v);if(N.length===0){l(e("mobile.connect.error.urlRequired"));return}const C=v.id?p.current.find(V=>V.id===v.id):p.current.find(V=>On(V.candidates,N)),M=v.label?.trim()||C?.label||In(It({candidates:N})),O=v.relayGrant;let B=v.clientToken?.trim()||void 0;const I=!!B;B||(Ke()?C?.hasToken&&(B=await tn(Ve({candidates:N}))):B=C?.clientToken),Ee("connect:start",{candidates:N.map(V=>V.kind),hasToken:!!B});const D=await Ln(N,B);if(Ee("connect:probe",{status:D.status}),D.status==="unreachable"){l(e("mobile.connect.error.unreachable"));return}if(D.status==="needs-login"){x({id:C?.id,label:M,candidates:N}),c({id:C?.id??crypto.randomUUID(),label:M,candidates:N,relay:Yt({candidates:N})??void 0,relayGrant:O});return}B&&I&&Ke()&&await Ht(Ve({candidates:N}),B),x({id:C?.id,label:M,candidates:N,clientToken:B}),Jt(D.transport,B??null,{runtimeKey:Ve({candidates:N}),grant:O}),n()}catch(N){console.warn("[mobile-connect] connect threw",N),l(e("mobile.connect.error.invalidUrl"))}finally{S("connect")}},[b,S,n,x,e]),w=u.useCallback(async v=>{if(g.current==="pairing")return;l(null),b("pairing");const N=cf(v.candidates);let C=null,M=!1;try{if(C=await Bi(N),!C){l(e("mobile.connect.error.unreachable"));return}const O=JSON.stringify({pairingId:v.pairingId,secret:v.secret,clientLabel:"OpenChamber Mobile",clientKind:"mobile",deviceName:"OpenChamber Mobile",devicePlatform:zi(),dedupeKey:Oi()}),B={method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:O},I=C.kind==="relay"?await Bt(Cs,C.tunnel.fetch("/api/client-auth/pairing/redeem",B).catch(()=>null)):await Xt(`${C.url}/api/client-auth/pairing/redeem`,B);if(!I?.ok){l(e("mobile.connect.error.authRequired"));return}const D=await I.json().catch(()=>null),V=typeof D?.clientToken=="string"?D.clientToken.trim():"";if(!V){l(e("mobile.connect.error.authRequired"));return}const A=typeof D?.server?.label=="string"?D.server.label:"",_=v.label||A||In(It({candidates:N}));if(Ke()&&!await Ht(Ve({candidates:N}),V)){l(e("mobile.connect.error.authRequired"));return}x({label:_,candidates:N,clientToken:V}),Jt(C.kind==="relay"?{kind:"relay",relay:C.relay,tunnel:C.tunnel}:{kind:"direct",url:C.url},V,{runtimeKey:Ve({candidates:N})}),M=C.kind==="relay",n()}catch(O){console.warn("[mobile-connect] pairing threw",O),l(e("mobile.connect.error.authRequired"))}finally{!M&&C?.kind==="relay"&&C.tunnel.close(),S("pairing")}},[b,S,n,x,e]),E=u.useCallback(async v=>{if(!f||!v.trim()||g.current==="password")return;l(null),b("password");const N=m.current.begin(),C=()=>m.current.isCurrent(N),{id:M,label:O,candidates:B}=f;let I=null,D=!1;try{if(I=await Bi(B),!C())return;if(!I){l(e("mobile.connect.error.unreachable"));return}const V={method:"POST",credentials:"include",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({password:v,trustDevice:!0,issueClientToken:!0,clientLabel:"OpenChamber Mobile",clientKind:"mobile",devicePlatform:zi(),dedupeKey:Oi()})};Ee("password:start",{transport:I.kind});const A=I.kind==="relay"?await Bt(Cs,I.tunnel.fetch("/auth/session",V).catch(()=>null)):await Xt(`${I.url}/auth/session`,V);if(!C())return;if(Ee("password:done",{ok:A?.ok===!0,status:A?.status??null}),!A?.ok){l(e("mobile.connect.error.passwordFailed"));return}const _=await A.json().catch(()=>null);if(!C())return;const F=typeof _?.clientToken=="string"?_.clientToken.trim():"";if(Ee("password:token",{issued:!!F}),!F){if(I.kind==="direct"&&!Ke()){x({id:M,label:O,candidates:B}),c(null),Jt({kind:"direct",url:I.url},null,{runtimeKey:Ve({candidates:B})}),n();return}l(e("mobile.connect.error.authRequired"));return}if(Ke()&&(!C()||(await Ht(Ve({candidates:B}),F),!C()))||!C()||(x({id:M,label:O,candidates:B,clientToken:F}),c(null),Jt(I.kind==="relay"?{kind:"relay",relay:I.relay,tunnel:I.tunnel}:{kind:"direct",url:I.url},F,{runtimeKey:Ve({candidates:B})}),D=I.kind==="relay",!C()))return;n()}catch(V){if(!C())return;console.warn("[mobile-connect] password threw",V),l(e("mobile.connect.error.passwordFailed"))}finally{!D&&I?.kind==="relay"&&I.tunnel.close(),C()&&S("password")}},[b,S,n,f,x,e]),P=u.useCallback(()=>{m.current.cancel(),S("password"),c(null),l(null)},[S]),k=u.useCallback(async v=>{l(null);let N=Li(v);const C=v.id?p.current.find(I=>I.id===v.id)??null:null;if(C){const I=N.filter(A=>A.kind==="direct"),D=Wn(C).filter(A=>A.url.startsWith("https://")&&!I.some(_=>qo(_.url,A.url))),V=Yt(C);N=[...I,...D,...V?[{kind:"relay",relay:V}]:[]]}if(N.length===0)return l(e("mobile.connect.error.urlRequired")),null;const M=v.clientToken?.trim()||void 0,O=v.label?.trim()||In(It({candidates:N}));if(Ke()){const I=Ve({candidates:N});if(M)await Ht(I,M);else if(C?.hasToken){const D=Ve(C);if(D&&I&&D!==I){const V=await tn(D);V&&await Ht(I,V)}}}return x({id:v.id,label:O,candidates:N,clientToken:M}).find(I=>On(I.candidates,N))??null},[x,e]),j=u.useCallback(async v=>{const N=p.current.find(M=>M.id===v)??null,C=await of(v);return h(C),N},[h]);return{connections:s,isBusy:r!==null,isPasswordBusy:r==="password",error:o,pendingConnection:f,connect:R,redeemPairingConnection:w,submitPassword:E,cancelPassword:P,saveConnection:k,removeConnection:j,setError:l}},ta=n=>{const e=fe.c(31),{onClose:s}=n,{t:i}=xe(),[r,a]=u.useState(!1);let o;e[0]===Symbol.for("react.memo_cache_sentinel")?(o=zd(),e[0]=o):o=e[0];const l=o;let f;e[1]===Symbol.for("react.memo_cache_sentinel")?(f=()=>{go(Bd()).then(v=>{v.ok&&(a(!0),window.setTimeout(()=>a(!1),2e3))})},e[1]=f):f=e[1];const c=f;let p;e[2]!==i?(p=i("mobile.connectionDebug.title"),e[2]=i,e[3]=p):p=e[3];let g;e[4]!==p?(g=t.jsx("h2",{className:"min-w-0 truncate typography-ui-label text-foreground",children:p}),e[4]=p,e[5]=g):g=e[5];const m=r?"check":"file-copy";let h;e[6]!==m?(h=t.jsx(H,{name:m,className:"size-4"}),e[6]=m,e[7]=h):h=e[7];let b;e[8]!==r||e[9]!==i?(b=i(r?"mobile.connectionDebug.copied":"mobile.connectionDebug.copy"),e[8]=r,e[9]=i,e[10]=b):b=e[10];let S;e[11]!==h||e[12]!==b?(S=t.jsxs(Ne,{type:"button",variant:"outline",size:"sm",onClick:c,disabled:l.length===0,children:[h,b]}),e[11]=h,e[12]=b,e[13]=S):S=e[13];let x;e[14]!==i?(x=i("mobile.connectionDebug.close"),e[14]=i,e[15]=x):x=e[15];let R;e[16]===Symbol.for("react.memo_cache_sentinel")?(R=t.jsx(H,{name:"close",className:"size-[18px]"}),e[16]=R):R=e[16];let w;e[17]!==s||e[18]!==x?(w=t.jsx(Ne,{type:"button",variant:"ghost",size:"icon","aria-label":x,onClick:s,children:R}),e[17]=s,e[18]=x,e[19]=w):w=e[19];let E;e[20]!==w||e[21]!==S?(E=t.jsxs("div",{className:"flex shrink-0 items-center gap-1.5",children:[S,w]}),e[20]=w,e[21]=S,e[22]=E):E=e[22];let P;e[23]!==E||e[24]!==g?(P=t.jsxs("div",{className:"flex items-center justify-between gap-2 border-b border-border/70 px-4 py-2.5",children:[g,E]}),e[23]=E,e[24]=g,e[25]=P):P=e[25];let k;e[26]!==i?(k=t.jsx("div",{className:"min-h-0 flex-1 overflow-y-auto overflow-x-hidden px-4 py-3",children:l.length===0?t.jsx("p",{className:"typography-small text-muted-foreground",children:i("mobile.connectionDebug.empty")}):t.jsx("pre",{className:"whitespace-pre-wrap break-words typography-code text-muted-foreground",children:l.map(Vo).join(`
4
- `)})}),e[26]=i,e[27]=k):k=e[27];let j;return e[28]!==P||e[29]!==k?(j=t.jsxs("div",{className:"fixed inset-0 z-[70] flex flex-col bg-background pb-[var(--safe-area-inset-bottom,env(safe-area-inset-bottom,0px))] pt-[var(--safe-area-inset-top,env(safe-area-inset-top,0px))] text-foreground",children:[P,k]}),e[28]=P,e[29]=k,e[30]=j):j=e[30],j},sa=()=>{if(typeof window>"u")return null;const e=window.Capacitor?.Plugins?.BarcodeScanner;return e&&(typeof e.scan=="function"||typeof e.startScan=="function")?e:null},pf=()=>window.Capacitor?.getPlatform?.()==="android",na=n=>{const e=n.trim();if(!e)return null;if(/^openchamber:\/\//i.test(e)){const s=Ia(e);return s?{pairing:s}:null}return/^https?:\/\//i.test(e)?{url:e}:null},ra=(n,e)=>{const s=na(n);if(!s&&e?.pairingStringFallback){const i=Aa(n);if(i)return{status:"pairing",pairing:i}}return s?"pairing"in s?{status:"pairing",...s}:{status:"ok",...s}:{status:"invalid"}},hf=async(n,e)=>{if(!n.startScan||!n.stopScan||!n.addListener)return{status:"unsupported"};if(e?.aborted)return{status:"cancelled"};let s,i,r=!1,a=()=>{};const o=new Promise(c=>{a=c}),l=c=>{r||(r=!0,a(c))},f=()=>l({status:"cancelled"});e?.addEventListener("abort",f,{once:!0});try{return(await Promise.allSettled([Promise.resolve(n.addListener("barcodesScanned",({barcodes:p})=>{const g=p?.[0],m=(g?.rawValue??g?.displayValue??"").trim();m&&l(ra(m,{pairingStringFallback:!0}))})).then(p=>{s=p}),Promise.resolve(n.addListener("scanError",()=>l({status:"failed"}))).then(p=>{i=p})])).some(({status:p})=>p==="rejected")?l({status:"failed"}):r||n.startScan({formats:["QR_CODE"]}).catch(()=>l({status:"failed"})),await o}finally{e?.removeEventListener("abort",f),await Promise.allSettled([Promise.resolve(s?.remove()),Promise.resolve(i?.remove()),n.stopScan()])}},Nr=()=>sa()!==null,ia=async n=>{const e=sa();if(!e)return{status:"unsupported"};try{if(e.requestPermissions){const o=(await e.requestPermissions())?.camera;if(o&&o!=="granted"&&o!=="limited")return{status:"permission-denied"}}if(n?.signal?.aborted)return{status:"cancelled"};if(pf())return hf(e,n?.signal);if(!e.scan)return{status:"unsupported"};const i=(await e.scan({formats:["QR_CODE"]}))?.barcodes?.[0],r=(i?.rawValue??i?.displayValue??"").trim();return r?ra(r):{status:"cancelled"}}catch{return{status:"failed"}}},vs={autoComplete:"off",autoCorrect:"off",spellCheck:!1},Js="oc-surface-elevated h-12 w-full rounded-[16px] border border-border/70 bg-surface-elevated px-4 text-[16px] text-foreground outline-none transition-colors placeholder:text-muted-foreground focus:border-interactive-border-focus focus:ring-2 focus:ring-ring",oa=n=>{const e=fe.c(22),{onCancel:s}=n,{t:i}=xe(),r=u.useRef(null);let a,o;e[0]===Symbol.for("react.memo_cache_sentinel")?(a=()=>{const R={value:document.documentElement.style.getPropertyValue("background-color"),priority:document.documentElement.style.getPropertyPriority("background-color")},w={value:document.body.style.getPropertyValue("background-color"),priority:document.body.style.getPropertyPriority("background-color")};document.documentElement.style.setProperty("background-color","rgba(0, 0, 0, 0)","important"),document.body.style.setProperty("background-color","rgba(0, 0, 0, 0)","important");const E=new Map,P=j=>{!(j instanceof HTMLElement)||j===r.current||E.has(j)||(E.set(j,{opacity:j.style.opacity,pointerEvents:j.style.pointerEvents}),j.style.setProperty("opacity","0"),j.style.setProperty("pointer-events","none"))};Array.from(document.body.children).forEach(P);const k=new MutationObserver(j=>{j.forEach(v=>v.addedNodes.forEach(P))});return k.observe(document.body,{childList:!0}),()=>{k.disconnect(),E.forEach(gf),R.value?document.documentElement.style.setProperty("background-color",R.value,R.priority):document.documentElement.style.removeProperty("background-color"),w.value?document.body.style.setProperty("background-color",w.value,w.priority):document.body.style.removeProperty("background-color")}},o=[],e[0]=a,e[1]=o):(a=e[0],o=e[1]),u.useLayoutEffect(a,o);let l,f;e[2]!==s?(l=()=>{const R=()=>{document.visibilityState==="hidden"&&s()};return document.addEventListener("visibilitychange",R),()=>document.removeEventListener("visibilitychange",R)},f=[s],e[2]=s,e[3]=l,e[4]=f):(l=e[3],f=e[4]),u.useEffect(l,f);let c;e[5]!==i?(c=i("mobile.connect.scanQr"),e[5]=i,e[6]=c):c=e[6];let p;e[7]===Symbol.for("react.memo_cache_sentinel")?(p=t.jsx("div",{className:"aspect-square w-full max-w-72 rounded-[28px] border-2 border-foreground/90 shadow-[0_0_0_9999px_color-mix(in_srgb,var(--surface-background)_18%,transparent)]","aria-hidden":!0}),e[7]=p):p=e[7];let g;e[8]!==i?(g=i("mobile.connect.welcome.scanHint"),e[8]=i,e[9]=g):g=e[9];let m;e[10]!==g?(m=t.jsxs("div",{className:"flex flex-1 flex-col items-center justify-center gap-6",children:[p,t.jsx("p",{className:"max-w-sm rounded-[16px] border border-border/60 bg-background px-4 py-3 text-center typography-body text-foreground shadow-sm",children:g})]}),e[10]=g,e[11]=m):m=e[11];let h;e[12]===Symbol.for("react.memo_cache_sentinel")?(h=t.jsx(H,{name:"close",className:"size-[18px]"}),e[12]=h):h=e[12];let b;e[13]!==i?(b=i("mobile.instances.cancelEdit"),e[13]=i,e[14]=b):b=e[14];let S;e[15]!==s||e[16]!==b?(S=t.jsxs(Ne,{type:"button",variant:"outline",size:"lg",className:"mx-auto min-h-12 w-full max-w-sm bg-background",onClick:s,children:[h,b]}),e[15]=s,e[16]=b,e[17]=S):S=e[17];let x;return e[18]!==S||e[19]!==c||e[20]!==m?(x=ws.createPortal(t.jsxs("div",{ref:r,role:"dialog","aria-modal":"true","aria-label":c,className:"fixed inset-0 z-[1000] flex flex-col bg-transparent px-6 pb-[calc(var(--safe-area-inset-bottom,env(safe-area-inset-bottom,0px))+24px)] pt-[calc(var(--safe-area-inset-top,env(safe-area-inset-top,0px))+24px)] text-foreground",children:[m,S]}),document.body),e[18]=S,e[19]=c,e[20]=m,e[21]=x):x=e[21],x},aa=()=>{const n=fe.c(6),{t:e}=xe();let s;n[0]===Symbol.for("react.memo_cache_sentinel")?(s=t.jsx(hs,{width:96,height:96,isAnimated:!0}),n[0]=s):s=n[0];let i;n[1]===Symbol.for("react.memo_cache_sentinel")?(i=t.jsx(H,{name:"loader-4",className:"size-[18px] animate-spin"}),n[1]=i):i=n[1];let r;n[2]!==e?(r=e("mobile.connect.connecting"),n[2]=e,n[3]=r):r=n[3];let a;return n[4]!==r?(a=ws.createPortal(t.jsxs("div",{role:"status",className:"fixed inset-0 z-[1000] flex flex-col items-center justify-center gap-5 bg-background px-6 text-foreground",children:[s,t.jsxs("div",{className:"flex items-center gap-2 typography-ui-label text-muted-foreground",children:[i,t.jsx("span",{children:r})]})]}),document.body),n[4]=r,n[5]=a):a=n[5],a};function gf(n,e){e.style.opacity=n.opacity,e.style.pointerEvents=n.pointerEvents}const bf=({onConnected:n,notice:e=null})=>{const{t:s}=xe(),i=ea(n),{connections:r,isBusy:a,isPasswordBusy:o,error:l,pendingConnection:f}=i,[c,p]=u.useState(""),[g,m]=u.useState(""),[h,b]=u.useState(""),[S,x]=u.useState(!1),[R,w]=u.useState(!1),E=u.useRef(null),P=u.useMemo(()=>Nr(),[]),[k,j]=u.useState(()=>!Nr()),[v,N]=u.useState(null),[C,M]=u.useState(""),[O,B]=u.useState(!1),I=Uo(u.useCallback(()=>B(!0),[])),D=u.useCallback(L=>{L.preventDefault(),i.connect({url:c,clientToken:h,label:g})},[h,i,g,c]),V=u.useCallback(L=>{if(/^openchamber:\/\//i.test(L.trim())){const K=na(L);if(K){if("pairing"in K){i.redeemPairingConnection(K.pairing);return}p(K.url),K.label&&m(K.label),K.clientToken&&b(K.clientToken);return}}p(L)},[i]),A=u.useCallback(async()=>{if(E.current||a)return;i.setError(null),x(!0);const L=new AbortController;E.current=L;try{const K=await ia({signal:L.signal});switch(E.current===L&&(E.current=null,x(!1)),K.status){case"ok":w(!0),p(K.url),K.label&&m(K.label),K.clientToken&&b(K.clientToken),await i.connect({url:K.url,clientToken:K.clientToken,label:K.label});break;case"pairing":w(!0),await i.redeemPairingConnection(K.pairing);break;case"permission-denied":i.setError(s("mobile.connect.scan.permissionDenied"));break;case"invalid":i.setError(s("mobile.connect.scan.invalid"));break;case"unsupported":i.setError(s("mobile.connect.scan.unsupported"));break;case"failed":i.setError(s("mobile.connect.scan.failed"));break;default:break}}finally{w(!1),E.current===L&&(E.current=null,x(!1))}},[i,a,s]);u.useEffect(()=>()=>E.current?.abort(),[]);const _=u.useCallback(L=>{L.preventDefault(),i.submitPassword(C)},[i,C]),F=u.useCallback(()=>{M(""),i.cancelPassword()},[i]);return t.jsxs(t.Fragment,{children:[S?t.jsx(oa,{onCancel:()=>E.current?.abort()}):null,R?t.jsx(aa,{}):null,O?t.jsx(ta,{onClose:()=>B(!1)}):null,t.jsx("main",{className:"oc-keyboard-fill-screen flex min-h-dvh flex-col overflow-y-auto bg-background px-6 pb-[calc(var(--safe-area-inset-bottom,env(safe-area-inset-bottom,0px))+28px)] pt-[calc(var(--safe-area-inset-top,env(safe-area-inset-top,0px))+28px)] text-foreground",children:t.jsxs("div",{className:"m-auto flex w-full max-w-[360px] shrink-0 flex-col items-center gap-9 py-8",children:[t.jsxs("div",{className:"flex flex-col items-center gap-5 text-center",children:[t.jsx("span",{...I,className:"select-none",style:{touchAction:"manipulation"},children:t.jsx(hs,{width:72,height:72,className:"size-[72px]"})}),t.jsx("h1",{className:"typography-h2 text-foreground",children:s("mobile.connect.welcome.title")})]}),e?t.jsxs("div",{role:"status",className:"flex w-full items-center gap-3 rounded-[18px] border border-[color-mix(in_srgb,var(--status-warning)_35%,transparent)] bg-[color-mix(in_srgb,var(--status-warning)_10%,transparent)] px-3.5 py-3",children:[t.jsx("span",{className:"flex size-9 shrink-0 items-center justify-center rounded-[12px] bg-[color-mix(in_srgb,var(--status-warning)_16%,transparent)] text-[var(--status-warning)]",children:t.jsx(H,{name:e.kind==="auth-expired"?"lock":"cloud-off",className:"size-[18px]"})}),t.jsx("p",{className:"min-w-0 flex-1 typography-small text-foreground",children:e.kind==="auth-expired"?s("mobile.connect.notice.authExpired",{label:e.label}):s("mobile.connect.notice.unreachable",{label:e.label})})]}):null,f?t.jsxs("form",{className:"flex w-full flex-col gap-3",onSubmit:_,children:[t.jsxs("div",{className:"flex items-center gap-3 rounded-[18px] border border-border/70 bg-surface-elevated px-3.5 py-3",children:[t.jsx("span",{className:"flex size-9 shrink-0 items-center justify-center rounded-[12px] bg-interactive-hover text-foreground",children:t.jsx(H,{name:"lock",className:"size-[18px]"})}),t.jsxs("div",{className:"min-w-0 text-left",children:[t.jsx("p",{className:"truncate typography-ui-label text-foreground",children:f.label}),t.jsx("p",{className:"truncate typography-small text-muted-foreground",children:f.candidates.some(L=>L.kind==="direct")?It(f):s("mobile.connect.relay.badge")})]})]}),t.jsx("input",{...vs,value:C,onChange:L=>M(L.target.value),placeholder:s("mobile.connect.password.placeholder"),"aria-label":s("mobile.connect.password.label"),type:"password",autoFocus:!0,className:Js}),l?t.jsx("p",{className:"px-1 text-center typography-small text-[var(--status-error)]",children:l}):null,t.jsx(Ne,{type:"submit",size:"lg",className:"mt-1 h-12 w-full",disabled:o||!C.trim(),children:s(o?"mobile.connect.connecting":"mobile.connect.unlockButton")}),t.jsx(Ne,{type:"button",variant:"ghost",size:"sm",className:"w-full",onClick:F,children:s("mobile.connect.cancelPassword")})]}):t.jsxs("div",{className:"flex w-full flex-col gap-6",children:[P?t.jsxs("div",{className:"flex w-full flex-col gap-2",children:[t.jsxs(Ne,{type:"button",size:"lg",className:"h-12 w-full",onClick:()=>{A()},disabled:S||a,children:[t.jsx(H,{name:"scan-2",className:ee("size-[18px]",S&&"animate-pulse")}),s(a?"mobile.connect.connecting":"mobile.connect.scanQr")]}),t.jsx("p",{className:"px-2 text-center typography-small text-muted-foreground",children:s("mobile.connect.welcome.scanHint")})]}):null,l&&!k?t.jsx("p",{className:"px-1 text-center typography-small text-[var(--status-error)]",children:l}):null,r.length>0?t.jsxs("section",{className:"flex w-full flex-col gap-2.5",children:[t.jsx("h2",{className:"text-center typography-micro uppercase tracking-[0.14em] text-muted-foreground",children:s("mobile.connect.saved.title")}),t.jsx("div",{className:"overflow-hidden rounded-[18px] border border-border/70 bg-surface-elevated",children:r.map(L=>{const K=v===L.id;return t.jsxs("button",{type:"button",disabled:a,className:"flex min-h-14 w-full items-center gap-3 border-b border-border/70 px-3.5 py-2.5 text-left last:border-b-0 hover:bg-interactive-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring disabled:opacity-70",onClick:()=>{N(L.id),i.connect({id:L.id,candidates:L.candidates,clientToken:L.clientToken,label:L.label}).finally(()=>N(null))},children:[t.jsx("span",{className:"flex size-9 shrink-0 items-center justify-center rounded-[12px] bg-interactive-hover text-foreground",children:t.jsx(H,{name:"server",className:"size-[18px]"})}),t.jsxs("span",{className:"min-w-0 flex-1",children:[t.jsx("span",{className:"block truncate typography-ui-label text-foreground",children:L.label}),t.jsx("span",{className:ee("block truncate typography-small",K?"text-foreground":"text-muted-foreground"),children:K?s("mobile.connect.connecting"):L.candidates.some(Z=>Z.kind==="direct")?It(L):s("mobile.connect.relay.badge")})]}),K?t.jsx(H,{name:"loader-4",className:"size-5 animate-spin text-muted-foreground"}):t.jsx(H,{name:"arrow-right-s",className:"size-5 text-muted-foreground"})]},L.id)})})]}):null,t.jsxs("div",{className:"flex w-full flex-col",children:[P?t.jsxs("button",{type:"button",onClick:()=>j(L=>!L),"aria-expanded":k,className:"mx-auto flex items-center gap-1 rounded-full px-2 py-1 typography-small text-muted-foreground transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",children:[t.jsx("span",{children:s("mobile.connect.manual.toggle")}),t.jsx(H,{name:"arrow-down-s",className:ee("size-4 transition-transform duration-200",k&&"rotate-180")})]}):null,t.jsx("div",{className:"grid transition-[grid-template-rows] duration-200 ease-out",style:{gridTemplateRows:k?"1fr":"0fr"},children:t.jsx("div",{className:"min-h-0 overflow-hidden",children:t.jsxs("form",{className:"flex w-full flex-col gap-3 pt-3",onSubmit:D,children:[t.jsx("input",{...vs,value:c,onChange:L=>V(L.target.value),placeholder:s("mobile.connect.url.placeholder"),"aria-label":s("mobile.connect.url.label"),type:"url",inputMode:"url",autoCapitalize:"none",tabIndex:k?void 0:-1,className:ee(Js,"text-center")}),t.jsx("input",{value:g,onChange:L=>m(L.target.value),placeholder:s("mobile.instances.label.placeholder"),"aria-label":s("mobile.instances.label.label"),autoComplete:"off",autoCapitalize:"words",autoCorrect:"off",spellCheck:!1,tabIndex:k?void 0:-1,className:ee(Js,"text-center")}),t.jsx("input",{...vs,value:h,onChange:L=>b(L.target.value),placeholder:s("mobile.connect.token.placeholder"),"aria-label":s("mobile.connect.token.label"),tabIndex:k?void 0:-1,autoCapitalize:"none",className:ee(Js,"text-center")}),t.jsx("p",{className:"px-1 text-center typography-micro text-muted-foreground",children:s("mobile.connect.token.hint")}),l?t.jsx("p",{className:"px-1 text-center typography-small text-[var(--status-error)]",children:l}):null,t.jsx(Ne,{type:"submit",variant:P?"outline":"default",size:"lg",className:"h-12 w-full",disabled:a||S||!c.trim(),children:s(a?"mobile.connect.connecting":"mobile.connect.connectButton")})]})})})]})]})]})})]})},xf=n=>{const e=n.usedPercent;return typeof e!="number"||!Number.isFinite(e)?"text-foreground":e>=80?"text-[var(--status-error)]":e>=50?"text-[var(--status-warning)]":"text-foreground"},yf=n=>{const e=fe.c(12),{groups:s,displayMode:i,timeFormatPreference:r,className:a}=n;let o;e[0]!==a?(o=ee("space-y-1.5",a),e[0]=a,e[1]=o):o=e[1];let l;if(e[2]!==i||e[3]!==s||e[4]!==r){let c;e[6]!==i||e[7]!==r?(c=p=>t.jsxs("div",{className:"min-w-0 rounded-xl bg-foreground/[0.03] p-2.5",children:[t.jsxs("div",{className:"flex min-w-0 items-center gap-2",children:[t.jsx(bo,{providerId:p.providerId,className:"size-4 shrink-0"}),t.jsx("span",{className:"min-w-0 flex-1 truncate typography-ui-label font-medium text-foreground",children:p.providerName}),p.planLabel?t.jsx("span",{className:"shrink-0 typography-micro capitalize text-muted-foreground",children:p.planLabel}):null,p.status&&p.rows.length===0?t.jsx("span",{className:"shrink-0 truncate typography-micro text-muted-foreground",children:p.status}):null]}),p.rows.length>0?t.jsx("div",{className:"mt-1.5 space-y-1",children:p.rows.map(g=>{const m=i==="remaining"?g.window.remainingPercent:g.window.usedPercent,h=Wa(g.window.valueLabel,m),b=Va(g.window.resetAt,g.window.resetAfterFormatted??g.window.resetAtFormatted,r);return t.jsxs("div",{className:"flex min-w-0 items-baseline justify-between gap-3",children:[t.jsxs("span",{className:"flex min-w-0 flex-1 items-baseline gap-1.5",children:[t.jsx("span",{className:"shrink-0 truncate typography-ui-label text-muted-foreground",children:g.subtitle?`${g.subtitle} · ${g.label}`:g.label}),b?t.jsx("span",{className:"min-w-0 truncate typography-micro text-muted-foreground/70",children:b}):null]}),t.jsx("span",{className:ee("shrink-0 typography-ui-label font-semibold tabular-nums",xf(g.window)),children:h==="-"?"":h})]},g.key)})}):null,p.status&&p.rows.length>0?t.jsx("div",{className:"mt-1.5 typography-micro text-muted-foreground",children:p.status}):null]},p.providerId),e[6]=i,e[7]=r,e[8]=c):c=e[8],l=s.map(c),e[2]=i,e[3]=s,e[4]=r,e[5]=l}else l=e[5];let f;return e[9]!==o||e[10]!==l?(f=t.jsx("div",{className:o,children:l}),e[9]=o,e[10]=l,e[11]=f):f=e[11],f},$i=380,vf=(n,e)=>{if(!n||typeof n!="object")return;const s=n[e];return typeof s=="number"&&Number.isFinite(s)?s:void 0},fr=n=>n>=1e6?`${(n/1e6).toFixed(1)}M`:n>=1e3?`${(n/1e3).toFixed(1)}K`:String(n),wf="—",la=n=>{const e=fe.c(20),{percentage:s}=n;let i,r,a,o,l,f,c;if(e[0]!==s){a=Ja(s??0)??0;const h=Ya(s??0);r=h==="critical"?"var(--status-error)":h==="warn"?"var(--status-warning)":"var(--status-success)",i=2*Math.PI*7.5,o="0 0 18 18",l="size-[18px] -rotate-90",f="progressbar",c=s===null?void 0:Math.round(a),e[0]=s,e[1]=i,e[2]=r,e[3]=a,e[4]=o,e[5]=l,e[6]=f,e[7]=c}else i=e[1],r=e[2],a=e[3],o=e[4],l=e[5],f=e[6],c=e[7];let p;e[8]===Symbol.for("react.memo_cache_sentinel")?(p=t.jsx("circle",{cx:9,cy:9,r:7.5,fill:"none",stroke:"var(--interactive-border)",strokeWidth:3}),e[8]=p):p=e[8];let g;e[9]!==i||e[10]!==s||e[11]!==r||e[12]!==a?(g=s===null?null:t.jsx("circle",{cx:9,cy:9,r:7.5,fill:"none",stroke:r,strokeWidth:3,strokeLinecap:"round",strokeDasharray:i,strokeDashoffset:i*(1-a/100),className:"transition-[stroke-dashoffset,stroke] duration-300"}),e[9]=i,e[10]=s,e[11]=r,e[12]=a,e[13]=g):g=e[13];let m;return e[14]!==o||e[15]!==l||e[16]!==f||e[17]!==c||e[18]!==g?(m=t.jsxs("svg",{viewBox:o,className:l,role:f,"aria-valuenow":c,"aria-valuemin":0,"aria-valuemax":100,children:[p,g]}),e[14]=o,e[15]=l,e[16]=f,e[17]=c,e[18]=g,e[19]=m):m=e[19],m},jf=n=>{const e=fe.c(13),{icon:s,iconNode:i,label:r,children:a}=n;let o;e[0]!==s||e[1]!==i?(o=i??(s?t.jsx(H,{name:s,className:"size-[18px]"}):null),e[0]=s,e[1]=i,e[2]=o):o=e[2];let l;e[3]!==o?(l=t.jsx("span",{className:"flex size-5 shrink-0 items-center justify-center text-muted-foreground",children:o}),e[3]=o,e[4]=l):l=e[4];let f;e[5]!==r?(f=t.jsx("span",{className:"shrink-0 typography-ui-label text-muted-foreground",children:r}),e[5]=r,e[6]=f):f=e[6];let c;e[7]!==a?(c=t.jsx("span",{className:"min-w-0 flex-1 truncate text-right typography-ui-label font-medium text-foreground",children:a}),e[7]=a,e[8]=c):c=e[8];let p;return e[9]!==l||e[10]!==f||e[11]!==c?(p=t.jsxs("div",{className:"flex min-w-0 items-center gap-3 rounded-xl px-2.5 py-2.5",children:[l,f,c]}),e[9]=l,e[10]=f,e[11]=c,e[12]=p):p=e[12],p},kf=n=>{const e=fe.c(57),{open:s,onClose:i,anchorRef:r,contextDisplay:a,usageGroups:o,usageDisplayMode:l,isUsageLoading:f,timeFormatPreference:c}=n,{t:p}=xe(),g=u.useRef(null),[m,h]=u.useState(s),[b,S]=u.useState(!1),{enabled:x}=Ar(),R=u.useRef(null),[w,E]=u.useState(null);let P,k;e[0]!==r||e[1]!==x||e[2]!==s||e[3]!==m?(P=()=>{if(!s||!x||!m)return;const G=()=>{const re=r.current?.getBoundingClientRect(),ie=R.current?.getBoundingClientRect();if(!re||!ie){E(null);return}const q=re.left-ie.left,ae=Math.min(Math.max(q,8),Math.max(8,ie.width-$i-8));E(ae)};G();const T=R.current;if(typeof ResizeObserver>"u"||!T)return;const ne=new ResizeObserver(G);return ne.observe(T),()=>ne.disconnect()},k=[r,x,s,m],e[0]=r,e[1]=x,e[2]=s,e[3]=m,e[4]=P,e[5]=k):(P=e[4],k=e[5]),u.useLayoutEffect(P,k);const j=x&&w!==null;let v,N;e[6]!==s||e[7]!==m?(v=()=>{if(s){h(!0),S(!1);return}if(!m)return;S(!0);const G=window.setTimeout(()=>{h(!1),S(!1)},140);return()=>window.clearTimeout(G)},N=[s,m],e[6]=s,e[7]=m,e[8]=v,e[9]=N):(v=e[8],N=e[9]),u.useEffect(v,N);let C,M;e[10]!==i||e[11]!==s?(C=()=>{if(!s)return;const G=T=>{T.key==="Escape"&&i()};return document.addEventListener("keydown",G),()=>document.removeEventListener("keydown",G)},M=[i,s],e[10]=i,e[11]=s,e[12]=C,e[13]=M):(C=e[12],M=e[13]),u.useEffect(C,M);let O,B;if(e[14]!==r||e[15]!==i||e[16]!==s?(O=()=>{if(!s)return;const G=T=>{const ne=T.target;if(!(ne instanceof Node)){i();return}g.current?.contains(ne)||r.current?.contains(ne)||i()};return document.addEventListener("pointerdown",G,!0),document.addEventListener("wheel",G,!0),()=>{document.removeEventListener("pointerdown",G,!0),document.removeEventListener("wheel",G,!0)}},B=[r,i,s],e[14]=r,e[15]=i,e[16]=s,e[17]=O,e[18]=B):(O=e[17],B=e[18]),u.useEffect(O,B),!m)return null;let I;e[19]!==p?(I=p("mobile.header.openMetadataAria"),e[19]=p,e[20]=I):I=e[20];const D=j?"absolute origin-top-left":"mx-3 mt-2",V=b?"pointer-events-none":"pointer-events-auto";let A;e[21]!==D||e[22]!==V?(A=ee("oc-surface-elevated overflow-y-auto overscroll-contain rounded-[20px] border border-border/70 bg-surface-elevated p-2 shadow-[0_12px_32px_rgb(0_0_0_/_0.2)] will-change-transform",D,V),e[21]=D,e[22]=V,e[23]=A):A=e[23];const _=`${b?"session-metadata-out":"session-metadata-in"} ${b?140:170}ms cubic-bezier(0.32, 0.72, 0, 1) forwards`;let F;e[24]!==w||e[25]!==j?(F=j?{top:8,left:w??8,width:`min(${$i}px, calc(100% - 16px))`}:null,e[24]=w,e[25]=j,e[26]=F):F=e[26];let L;e[27]!==_||e[28]!==F?(L={animation:_,maxHeight:"min(72dvh, calc(100dvh - var(--oc-safe-area-top, 0px) - var(--oc-header-height, 56px) - 1rem))",...F},e[27]=_,e[28]=F,e[29]=L):L=e[29];let K;e[30]!==a||e[31]!==p?(K=a?t.jsx(jf,{iconNode:t.jsx(la,{percentage:a.state==="measured"?a.percentage:null}),label:p("mobile.header.metadata.context"),children:a.state==="pending"?null:t.jsxs("span",{className:"inline-flex items-baseline gap-1.5 tabular-nums",children:[a.state==="measured"?t.jsxs("span",{className:ee("font-semibold",a.colorClass),children:[a.percentage.toFixed(1),"%"]}):null,t.jsx("span",{className:"text-muted-foreground",children:a.tokens})]})}):null,e[30]=a,e[31]=p,e[32]=K):K=e[32];let Z;e[33]!==a?.state||e[34]!==p?(Z=a?.state==="compacted"?t.jsx("p",{className:"px-2.5 pb-1 typography-meta text-muted-foreground",children:p("contextUsage.compacted.description")}):null,e[33]=a?.state,e[34]=p,e[35]=Z):Z=e[35];let X;e[36]!==a?.state||e[37]!==p?(X=a?.state==="pending"?t.jsx("p",{className:"px-2.5 pb-1 typography-meta text-muted-foreground",children:p("mobile.header.metadata.contextPending")}):null,e[36]=a?.state,e[37]=p,e[38]=X):X=e[38];let te;e[39]!==f||e[40]!==c||e[41]!==l||e[42]!==o?(te=t.jsx(Sf,{groups:o,displayMode:l,isLoading:f,timeFormatPreference:c}),e[39]=f,e[40]=c,e[41]=l,e[42]=o,e[43]=te):te=e[43];let Q;e[44]!==K||e[45]!==Z||e[46]!==X||e[47]!==te?(Q=t.jsxs("div",{className:"space-y-1",children:[K,Z,X,te]}),e[44]=K,e[45]=Z,e[46]=X,e[47]=te,e[48]=Q):Q=e[48];let pe;e[49]!==A||e[50]!==L||e[51]!==Q||e[52]!==I?(pe=t.jsx("div",{ref:g,role:"dialog","aria-label":I,className:A,style:L,children:Q}),e[49]=A,e[50]=L,e[51]=Q,e[52]=I,e[53]=pe):pe=e[53];let ue;e[54]===Symbol.for("react.memo_cache_sentinel")?(ue=t.jsx("style",{children:`
5
- @keyframes session-metadata-in {
6
- from { opacity: 0; transform: translateY(-8px) scale(0.985); }
7
- to { opacity: 1; transform: translateY(0) scale(1); }
8
- }
9
- @keyframes session-metadata-out {
10
- from { opacity: 1; transform: translateY(0) scale(1); }
11
- to { opacity: 0; transform: translateY(-6px) scale(0.985); }
12
- }
13
- `}),e[54]=ue):ue=e[54];let U;return e[55]!==pe?(U=t.jsxs("div",{ref:R,className:"fixed inset-x-0 bottom-0 top-[calc(var(--oc-safe-area-top,0px)+var(--oc-header-height,56px))] z-20 pointer-events-none",children:[pe,ue]}),e[55]=pe,e[56]=U):U=e[56],U},Sf=n=>{const e=fe.c(30),{groups:s,displayMode:i,isLoading:r,timeFormatPreference:a}=n,{t:o}=xe();let l;e[0]!==i||e[1]!==o?(l=o(i==="remaining"?"header.services.remaining":"header.services.used"),e[0]=i,e[1]=o,e[2]=l):l=e[2];const f=l;if(s.length===0){if(!r)return null;let w;e[3]===Symbol.for("react.memo_cache_sentinel")?(w=t.jsx(H,{name:"loader-4",className:"size-4 animate-spin","aria-hidden":!0}),e[3]=w):w=e[3];let E;e[4]!==o?(E=o("common.loading"),e[4]=o,e[5]=E):E=e[5];let P;return e[6]!==E?(P=t.jsxs("div",{className:"flex items-center justify-center gap-2 px-2.5 py-6 text-muted-foreground",children:[w,t.jsx("span",{className:"typography-ui-label",children:E})]}),e[6]=E,e[7]=P):P=e[7],P}let c;e[8]===Symbol.for("react.memo_cache_sentinel")?(c=t.jsx("span",{className:"flex size-5 shrink-0 items-center justify-center text-muted-foreground",children:t.jsx(H,{name:"timer",className:"size-[18px]"})}),e[8]=c):c=e[8];let p;e[9]!==o?(p=o("mobile.header.metadata.usage"),e[9]=o,e[10]=p):p=e[10];let g;e[11]!==p?(g=t.jsx("span",{className:"shrink-0 typography-ui-label text-muted-foreground",children:p}),e[11]=p,e[12]=g):g=e[12];let m;e[13]!==r?(m=r?t.jsx(H,{name:"refresh",className:"size-3.5 animate-spin"}):null,e[13]=r,e[14]=m):m=e[14];let h;e[15]!==f?(h=t.jsx("span",{className:"truncate",children:f}),e[15]=f,e[16]=h):h=e[16];let b;e[17]!==m||e[18]!==h?(b=t.jsxs("span",{className:"inline-flex min-w-0 flex-1 items-center justify-end gap-1.5 typography-ui-label text-muted-foreground",children:[m,h]}),e[17]=m,e[18]=h,e[19]=b):b=e[19];let S;e[20]!==g||e[21]!==b?(S=t.jsxs("div",{className:"flex min-w-0 items-center gap-3 px-2.5 pb-1.5",children:[c,g,b]}),e[20]=g,e[21]=b,e[22]=S):S=e[22];let x;e[23]!==i||e[24]!==s||e[25]!==a?(x=t.jsx(yf,{groups:s,displayMode:i,timeFormatPreference:a}),e[23]=i,e[24]=s,e[25]=a,e[26]=x):x=e[26];let R;return e[27]!==S||e[28]!==x?(R=t.jsxs("div",{className:"pt-2.5",children:[S,x]}),e[27]=S,e[28]=x,e[29]=R):R=e[29],R},Nf=u.memo(function({open:e,onOpenChange:s,currentSessionId:i,effectiveDirectory:r,isNewSessionDraftOpen:a}){const{t:o}=xe(),l=u.useRef(null),f=Ua(i??"",r||void 0),c=ft(A=>A.providers),p=ft(A=>A.currentProviderId),g=ft(A=>A.currentModelId),m=ft(A=>A.getModelMetadata);ft(A=>A.modelsMetadata.size);const h=Ga(u.useCallback(A=>i?A.sessionModelSelections.get(i)??null:null,[i])),b=qt(A=>A.results),S=qt(A=>A.refreshErrors),x=u.useRef(!1),R=qt(A=>A.loadSettings),w=qt(A=>A.fetchAllQuotas),E=qt(A=>A.isLoading),P=qt(A=>A.displayMode),k=qt(A=>A.dropdownProviderIds),j=Be(A=>A.timeFormatPreference);Ka(),u.useEffect(()=>{R()},[R]),u.useEffect(()=>{ji(k)},[k]),u.useEffect(()=>{if(!e){x.current=!1;return}x.current||E||!k.some(_=>!b.some(F=>F.providerId===_)||S[_])||(x.current=!0,w())},[k,w,E,e,b,S]);const N=u.useMemo(()=>{for(let A=f.length-1;A>=0;A-=1){const _=f[A];if(_.role!=="assistant")continue;const F=_.providerID.trim(),L=_.modelID.trim();if(F&&L)return{providerID:F,modelID:L}}return null},[f])??(h?{providerID:h.providerId,modelID:h.modelId}:null)??(p&&g?{providerID:p,modelID:g}:null),M=(N?c.find(A=>A.id===N.providerID):void 0)?.models.find(A=>A.id===N?.modelID),O=N?m(N.providerID,N.modelID):void 0,B=vf(M?.limit,"context")??O?.limit?.context??0,I=u.useMemo(()=>qa(f),[f]),D=u.useMemo(()=>{if(B<=0)return null;if(a||!I)return{state:"pending"};if(I.state==="compacted")return{state:"compacted",tokens:`${wf}/${fr(B)}`};const A=Math.min(I.totalTokens/B*100,999),_=A>=90?"text-[var(--status-error)]":A>=75?"text-[var(--status-warning)]":"text-[var(--status-success)]";return{state:"measured",percentage:A,tokens:`${fr(I.totalTokens)}/${fr(B)}`,colorClass:_}},[I,B,a]),V=Ha();return u.useEffect(()=>{!e||V.length===0||ji(V.map(A=>A.providerId))},[e,V]),t.jsxs(t.Fragment,{children:[t.jsx("button",{ref:l,type:"button",className:"flex size-10 shrink-0 items-center justify-center rounded-full text-muted-foreground transition-colors hover:bg-interactive-hover hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring","aria-label":o("mobile.header.openMetadataAria"),"aria-expanded":e,onClick:()=>s(A=>!A),style:{touchAction:"manipulation"},children:t.jsx(la,{percentage:D?.state==="measured"?D.percentage:D?.state==="compacted"?null:0})}),t.jsx(kf,{open:e,onClose:()=>s(!1),anchorRef:l,contextDisplay:D,usageGroups:V,usageDisplayMode:P,isUsageLoading:E,timeFormatPreference:j})]})}),Cf=10,Wi=380,Rf=(n,e)=>n.title?.trim()||e,Ef=n=>{const e=fe.c(33),{session:s,meta:i,active:r,onSelect:a}=n,{t:o}=xe(),l=Pr(s.id),f=Tr(s.id),c=f!==null,p=!c&&l>0&&!r,g=Dr(s.id,c),m=(c||p)&&g,h=s.time?.updated??s.time?.created??0;let b;e[0]!==h?(b=Qa(h),e[0]=h,e[1]=b):b=e[1];const S=b,x=r&&"bg-[color-mix(in_srgb,var(--primary)_10%,transparent)]";let R;e[2]!==x?(R=ee("flex w-full items-center gap-3 rounded-xl px-2.5 py-2 text-left transition-colors active:bg-interactive-active focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring",x),e[2]=x,e[3]=R):R=e[3];let w;e[4]===Symbol.for("react.memo_cache_sentinel")?(w={touchAction:"manipulation"},e[4]=w):w=e[4];const E=r?"text-primary":"text-foreground";let P;e[5]!==E?(P=ee("block truncate text-left typography-ui-label",E),e[5]=E,e[6]=P):P=e[6];let k;e[7]!==s||e[8]!==o?(k=Rf(s,o("sessions.sidebar.session.untitled")),e[7]=s,e[8]=o,e[9]=k):k=e[9];let j;e[10]!==P||e[11]!==k?(j=t.jsx("span",{dir:"auto",className:P,children:k}),e[10]=P,e[11]=k,e[12]=j):j=e[12];let v;e[13]!==i?(v=i?t.jsx("span",{className:"block truncate typography-micro text-muted-foreground",children:i}):null,e[13]=i,e[14]=v):v=e[14];let N;e[15]!==v||e[16]!==j?(N=t.jsxs("span",{className:"flex min-w-0 flex-1 flex-col",children:[j,v]}),e[15]=v,e[16]=j,e[17]=N):N=e[17];let C;e[18]!==c||e[19]!==p||e[20]!==f?(C=c||p?t.jsx(Tn,{state:f??"unread"}):null,e[18]=c,e[19]=p,e[20]=f,e[21]=C):C=e[21];let M;e[22]!==c||e[23]!==s.id||e[24]!==m||e[25]!==S?(M=m?t.jsx(_r,{sessionId:s.id,running:c,className:"typography-micro"}):S?t.jsx("span",{className:"shrink-0 typography-micro text-muted-foreground tabular-nums",children:S}):null,e[22]=c,e[23]=s.id,e[24]=m,e[25]=S,e[26]=M):M=e[26];let O;return e[27]!==a||e[28]!==N||e[29]!==C||e[30]!==M||e[31]!==R?(O=t.jsxs("button",{type:"button",className:R,onClick:a,style:w,children:[N,C,M]}),e[27]=a,e[28]=N,e[29]=C,e[30]=M,e[31]=R,e[32]=O):O=e[32],O},If=n=>{const e=fe.c(50),{open:s,onClose:i,anchorRef:r}=n,{t:a}=xe(),o=u.useRef(null),[l,f]=u.useState(s),[c,p]=u.useState(!1),{enabled:g}=Ar(),m=u.useRef(null),[h,b]=u.useState(null);let S,x;e[0]!==r||e[1]!==g||e[2]!==s||e[3]!==l?(S=()=>{if(!s||!g||!l)return;const U=()=>{const ne=r.current?.getBoundingClientRect(),re=m.current?.getBoundingClientRect();if(!ne||!re){b(null);return}const ie=ne.left-re.left;b(Math.min(Math.max(ie,8),Math.max(8,re.width-Wi-8)))};U();const G=m.current;if(typeof ResizeObserver>"u"||!G)return;const T=new ResizeObserver(U);return T.observe(G),()=>T.disconnect()},x=[r,g,s,l],e[0]=r,e[1]=g,e[2]=s,e[3]=l,e[4]=S,e[5]=x):(S=e[4],x=e[5]),u.useLayoutEffect(S,x);const R=g&&h!==null,w=De(Af),E=De(Pf),P=it(Tf);let k;e[6]===Symbol.for("react.memo_cache_sentinel")?(k={maxParents:Cf},e[6]=k):k=e[6];const j=Xa(s||l,k);let v,N;e[7]!==s||e[8]!==l?(v=()=>{if(s){xo(),f(!0),p(!1);return}if(!l)return;p(!0);const U=window.setTimeout(()=>{f(!1),p(!1)},140);return()=>window.clearTimeout(U)},N=[s,l],e[7]=s,e[8]=l,e[9]=v,e[10]=N):(v=e[9],N=e[10]),u.useEffect(v,N);let C,M;e[11]!==i||e[12]!==s?(C=()=>{if(!s)return;const U=G=>{G.key==="Escape"&&i()};return document.addEventListener("keydown",U),()=>document.removeEventListener("keydown",U)},M=[i,s],e[11]=i,e[12]=s,e[13]=C,e[14]=M):(C=e[13],M=e[14]),u.useEffect(C,M);let O,B;e[15]!==r||e[16]!==i||e[17]!==s?(O=()=>{if(!s)return;const U=G=>{const T=G.target;if(!(T instanceof Node)){i();return}o.current?.contains(T)||r.current?.contains(T)||i()};return document.addEventListener("pointerdown",U,!0),()=>document.removeEventListener("pointerdown",U,!0)},B=[r,i,s],e[15]=r,e[16]=i,e[17]=s,e[18]=O,e[19]=B):(O=e[18],B=e[19]),u.useEffect(O,B);let I;e[20]!==i||e[21]!==E?(I=U=>{E(U.id,ho(U)),i()},e[20]=i,e[21]=E,e[22]=I):I=e[22];const D=I;if(!l)return null;let V;e[23]!==a?(V=a("sessions.switcher.openAria"),e[23]=a,e[24]=V):V=e[24];const A=R?"absolute origin-top-left":"mx-3 mt-2",_=c?"pointer-events-none":"pointer-events-auto";let F;e[25]!==A||e[26]!==_?(F=ee("oc-surface-elevated flex flex-col overflow-hidden rounded-[20px] border border-border/70 bg-surface-elevated p-2 shadow-[0_12px_32px_rgb(0_0_0_/_0.2)] will-change-transform",A,_),e[25]=A,e[26]=_,e[27]=F):F=e[27];const L=`${c?"session-switcher-out":"session-switcher-in"} ${c?140:170}ms cubic-bezier(0.32, 0.72, 0, 1) forwards`;let K;e[28]!==h||e[29]!==R?(K=R?{top:8,left:h??8,width:`min(${Wi}px, calc(100% - 16px))`}:null,e[28]=h,e[29]=R,e[30]=K):K=e[30];let Z;e[31]!==L||e[32]!==K?(Z={animation:L,maxHeight:"min(72dvh, calc(100dvh - var(--oc-safe-area-top, 0px) - var(--oc-header-height, 56px) - 1rem))",...K},e[31]=L,e[32]=K,e[33]=Z):Z=e[33];let X;e[34]!==w||e[35]!==D||e[36]!==j||e[37]!==P||e[38]!==a?(X=j.length===0?t.jsx("p",{className:"px-3 py-6 text-center typography-small text-muted-foreground",children:a("sessions.switcher.empty")}):j.map(U=>{const G=U.node.session,T=[U.secondaryMeta?.projectLabel,U.secondaryMeta?.branchLabel].filter(Boolean).join(" · ");return t.jsx(Ef,{session:G,meta:T,active:G.id===w,onSelect:()=>{U.projectId&&P(U.projectId),D(G)}},G.id)}),e[34]=w,e[35]=D,e[36]=j,e[37]=P,e[38]=a,e[39]=X):X=e[39];let te;e[40]!==X?(te=t.jsx("div",{className:"oc-hide-scrollbar min-h-0 flex-1 space-y-0.5 overflow-y-auto overscroll-contain",children:X}),e[40]=X,e[41]=te):te=e[41];let Q;e[42]!==V||e[43]!==F||e[44]!==Z||e[45]!==te?(Q=t.jsx("div",{ref:o,role:"dialog","aria-label":V,className:F,style:Z,children:te}),e[42]=V,e[43]=F,e[44]=Z,e[45]=te,e[46]=Q):Q=e[46];let pe;e[47]===Symbol.for("react.memo_cache_sentinel")?(pe=t.jsx("style",{children:`
14
- @keyframes session-switcher-in {
15
- from { opacity: 0; transform: translateY(-8px) scale(0.985); }
16
- to { opacity: 1; transform: translateY(0) scale(1); }
17
- }
18
- @keyframes session-switcher-out {
19
- from { opacity: 1; transform: translateY(0) scale(1); }
20
- to { opacity: 0; transform: translateY(-6px) scale(0.985); }
21
- }
22
- `}),e[47]=pe):pe=e[47];let ue;return e[48]!==Q?(ue=t.jsxs("div",{ref:m,className:"fixed inset-x-0 bottom-0 top-[calc(var(--oc-safe-area-top,0px)+var(--oc-header-height,56px))] z-20 pointer-events-none",children:[Q,pe]}),e[48]=Q,e[49]=ue):ue=e[49],ue};function Af(n){return n.currentSessionId}function Pf(n){return n.setCurrentSession}function Tf(n){return n.setActiveProjectIdOnly}const Df=n=>{const e=fe.c(84),{onOpenSessions:s,onOpenWorkspace:i,compactTitle:r}=n,a=r===void 0?!1:r,{t:o}=xe(),[l,f]=u.useState(!1),[c,p]=u.useState(!1),g=u.useRef(null),m=Lt(_f),h=De(Mf);let b;e[0]!==h?(b=Oe=>h?Oe.getDirectoryForSession(h):null,e[0]=h,e[1]=b):b=e[1];const x=De(b)||m,R=Za(h,x||void 0),w=De(Of),E=yo(x||null);let P;e[2]!==x||e[3]!==E?(P=Oe=>{if(!x||E!==!0)return!1;const He=Oe.directories.get(x)?.status;return!!(He&&!He.isClean)},e[2]=x,e[3]=E,e[4]=P):P=e[4];const k=rt(P),j=Be(zf),v=zc(j);let N;e[5]!==R?.title?(N=R?.title?.trim(),e[5]=R?.title,e[6]=N):N=e[6];const C=N;let M;e[7]!==h||e[8]!==j||e[9]!==v||e[10]!==C||e[11]!==o?(M=(j?v:null)||C||o(h?"mobile.sessions.untitled":"sessions.switcher.draftTitle"),e[7]=h,e[8]=j,e[9]=v,e[10]=C,e[11]=o,e[12]=M):M=e[12];const O=M;let B;e[13]===Symbol.for("react.memo_cache_sentinel")?(B=()=>{f(!1),p(!1)},e[13]=B):B=e[13];let I;e[14]!==h||e[15]!==x?(I=[h,x],e[14]=h,e[15]=x,e[16]=I):I=e[16],u.useEffect(B,I);let D;e[17]!==s?(D=()=>{f(!1),p(!1),s()},e[17]=s,e[18]=D):D=e[18];const V=D;let A;e[19]===Symbol.for("react.memo_cache_sentinel")?(A=Oe=>{f(He=>{const ot=typeof Oe=="function"?Oe(He):Oe;return ot&&p(!1),ot})},e[19]=A):A=e[19];const _=A;let F;e[20]===Symbol.for("react.memo_cache_sentinel")?(F=()=>{p(Oe=>{const He=!Oe;return He&&f(!1),He})},e[20]=F):F=e[20];const L=F;let K;e[21]===Symbol.for("react.memo_cache_sentinel")?(K={paddingTop:"var(--oc-safe-area-top, 0px)"},e[21]=K):K=e[21];let Z;e[22]!==o?(Z=o("mobile.sessions.openSheetAria"),e[22]=o,e[23]=Z):Z=e[23];let X,te;e[24]===Symbol.for("react.memo_cache_sentinel")?(X={touchAction:"manipulation"},te=t.jsx(H,{name:"list-unordered",className:"size-5"}),e[24]=X,e[25]=te):(X=e[24],te=e[25]);let Q;e[26]!==V||e[27]!==Z?(Q=t.jsx("button",{type:"button",className:"flex size-10 shrink-0 items-center justify-center rounded-full text-muted-foreground transition-colors hover:bg-interactive-hover hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring","aria-label":Z,onClick:V,style:X,children:te}),e[26]=V,e[27]=Z,e[28]=Q):Q=e[28];const pe=a?"shrink":"flex-1";let ue;e[29]!==pe?(ue=ee("flex min-w-0 items-center rounded-lg px-2 py-1.5 text-left transition-colors active:bg-interactive-active focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",pe),e[29]=pe,e[30]=ue):ue=e[30];let U;e[31]!==o?(U=o("sessions.switcher.openAria"),e[31]=o,e[32]=U):U=e[32];let G;e[33]===Symbol.for("react.memo_cache_sentinel")?(G={touchAction:"manipulation"},e[33]=G):G=e[33];let T;e[34]!==O?(T=t.jsx("span",{dir:"auto",className:"block min-w-0 truncate text-left typography-ui-label text-foreground",children:O}),e[34]=O,e[35]=T):T=e[35];const ne=c&&"rotate-180";let re;e[36]!==ne?(re=ee("size-4 shrink-0 text-muted-foreground transition-transform duration-150",ne),e[36]=ne,e[37]=re):re=e[37];let ie;e[38]!==re?(ie=t.jsx(H,{name:"arrow-down-s",className:re}),e[38]=re,e[39]=ie):ie=e[39];let q;e[40]!==T||e[41]!==ie?(q=t.jsxs("span",{className:"flex min-w-0 items-center gap-1",children:[T,ie]}),e[40]=T,e[41]=ie,e[42]=q):q=e[42];let ae;e[43]!==c||e[44]!==ue||e[45]!==U||e[46]!==q?(ae=t.jsx("button",{ref:g,type:"button",className:ue,"aria-label":U,"aria-haspopup":"dialog","aria-expanded":c,onClick:L,style:G,children:q}),e[43]=c,e[44]=ue,e[45]=U,e[46]=q,e[47]=ae):ae=e[47];let de;e[48]!==a?(de=a?t.jsx("div",{className:"min-w-0 flex-1"}):null,e[48]=a,e[49]=de):de=e[49];let ve;e[50]!==h||e[51]!==x||e[52]!==w||e[53]!==l||e[54]!==j?(ve=j?null:t.jsx(Nf,{open:l,onOpenChange:_,currentSessionId:h,effectiveDirectory:x,isNewSessionDraftOpen:w}),e[50]=h,e[51]=x,e[52]=w,e[53]=l,e[54]=j,e[55]=ve):ve=e[55];let je;e[56]!==x?(je=t.jsx(Lc,{directory:x,className:"flex size-10 shrink-0 items-center justify-center rounded-full text-muted-foreground transition-colors hover:bg-interactive-hover hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",iconClassName:"size-5"}),e[56]=x,e[57]=je):je=e[57];let Se;e[58]!==k||e[59]!==o?(Se=o(k?"mobile.header.openWorkspaceWithChangesAria":"mobile.header.openWorkspaceAria"),e[58]=k,e[59]=o,e[60]=Se):Se=e[60];let he;e[61]!==i?(he=()=>{f(!1),p(!1),i()},e[61]=i,e[62]=he):he=e[62];let Y,be;e[63]===Symbol.for("react.memo_cache_sentinel")?(Y={touchAction:"manipulation"},be=t.jsx(H,{name:"pencil-ruler-2",className:"size-5"}),e[63]=Y,e[64]=be):(Y=e[63],be=e[64]);let me;e[65]!==k?(me=k?t.jsx("span",{className:"absolute right-1.5 top-1.5 size-2.5 rounded-full border-2 border-[var(--background)] bg-[var(--status-warning)]","aria-hidden":!0}):null,e[65]=k,e[66]=me):me=e[66];let Ce;e[67]!==Se||e[68]!==he||e[69]!==me?(Ce=t.jsxs("button",{type:"button",className:"relative flex size-10 shrink-0 items-center justify-center rounded-full text-muted-foreground transition-colors hover:bg-interactive-hover hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring","aria-label":Se,onClick:he,style:Y,children:[be,me]}),e[67]=Se,e[68]=he,e[69]=me,e[70]=Ce):Ce=e[70];let Pe;e[71]!==Q||e[72]!==ae||e[73]!==de||e[74]!==ve||e[75]!==je||e[76]!==Ce?(Pe=t.jsx("header",{className:"oc-mobile-header relative z-30 flex shrink-0 items-center gap-1 bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/80",style:K,children:t.jsxs("div",{className:"flex h-[var(--oc-header-height,56px)] w-full items-center gap-1 px-2",children:[Q,ae,de,ve,je,Ce]})}),e[71]=Q,e[72]=ae,e[73]=de,e[74]=ve,e[75]=je,e[76]=Ce,e[77]=Pe):Pe=e[77];let Ie;e[78]===Symbol.for("react.memo_cache_sentinel")?(Ie=()=>p(!1),e[78]=Ie):Ie=e[78];let _e;e[79]!==c?(_e=t.jsx(If,{open:c,onClose:Ie,anchorRef:g}),e[79]=c,e[80]=_e):_e=e[80];let qe;return e[81]!==Pe||e[82]!==_e?(qe=t.jsxs(t.Fragment,{children:[Pe,_e]}),e[81]=Pe,e[82]=_e,e[83]=qe):qe=e[83],qe};function _f(n){return n.currentDirectory}function Mf(n){return n.currentSessionId}function Of(n){return!!n.newSessionDraft?.open}function zf(n){return n.runOverviewKey}const Lf=({onActiveConnectionDeleted:n,onConnect:e})=>{const{t:s}=xe(),i=ea(e),{connections:r,isBusy:a,isPasswordBusy:o,error:l,pendingConnection:f,connect:c,submitPassword:p,cancelPassword:g,saveConnection:m,removeConnection:h,setError:b}=i,[S,x]=u.useState(null),R=S?r.find(q=>q.id===S)??null:null,[w,E]=u.useState(null),[P,k]=u.useState(""),[j,v]=u.useState(""),[N,C]=u.useState(""),[M,O]=u.useState(""),[B,I]=u.useState(!1),[D,V]=u.useState(!1),A=u.useRef(null),_=u.useMemo(()=>Nr(),[]),[F,L]=u.useState(!1),[K,Z]=u.useState(null),[X,te]=u.useState(!1),Q=Uo(u.useCallback(()=>te(!0),[])),pe=u.useCallback(()=>{x(null),k(""),v(""),C(""),b(null),L(!1)},[b]),ue=u.useCallback(q=>{q.preventDefault(),m({id:S??void 0,url:P,label:j,clientToken:N}).then(ae=>{ae&&pe()})},[N,S,j,pe,m,P]),U=u.useCallback(async()=>{if(A.current)return;b(null),I(!0);const q=new AbortController;A.current=q;try{const ae=await ia({signal:q.signal});switch(A.current===q&&(A.current=null,I(!1)),ae.status){case"ok":k(ae.url),ae.label&&v(ae.label),ae.clientToken&&C(ae.clientToken),L(!0);break;case"pairing":V(!0),await i.redeemPairingConnection(ae.pairing);break;case"permission-denied":b(s("mobile.connect.scan.permissionDenied"));break;case"invalid":b(s("mobile.connect.scan.invalid"));break;case"unsupported":b(s("mobile.connect.scan.unsupported"));break;case"failed":b(s("mobile.connect.scan.failed"));break;default:break}}finally{V(!1),A.current===q&&(A.current=null,I(!1))}},[i,b,s]);u.useEffect(()=>()=>A.current?.abort(),[]);const G=u.useCallback(q=>{q.preventDefault(),p(M)},[M,p]),T=u.useCallback(()=>{O(""),g()},[g]),ne=u.useCallback(q=>{E(ae=>ae===q?null:q)},[]),re=u.useCallback(q=>{E(null),S===q&&pe();const ae=r.length===1;h(q).then(de=>{de&&(ae||Fi(de))&&n()})},[r.length,S,n,h,pe]),ie=Js;return f?t.jsx("div",{className:"flex h-full flex-col overflow-hidden",children:t.jsx("form",{className:"flex-1 overflow-y-auto px-5 py-4",onSubmit:G,children:t.jsxs("div",{className:"flex flex-col gap-3",children:[t.jsxs("div",{className:"flex items-center gap-3 rounded-[18px] border border-border/70 bg-surface-elevated px-3.5 py-3",children:[t.jsx("span",{className:"flex size-9 shrink-0 items-center justify-center rounded-[12px] bg-interactive-hover text-foreground",children:t.jsx(H,{name:"lock",className:"size-[18px]"})}),t.jsxs("div",{className:"min-w-0",children:[t.jsx("p",{className:"truncate typography-ui-label text-foreground",children:f.label}),t.jsx("p",{className:"truncate typography-small text-muted-foreground",children:f.candidates.some(q=>q.kind==="direct")?It(f):s("mobile.connect.relay.badge")})]})]}),t.jsx("input",{...vs,value:M,onChange:q=>O(q.target.value),placeholder:s("mobile.connect.password.placeholder"),"aria-label":s("mobile.connect.password.label"),type:"password",autoFocus:!0,className:ie}),l?t.jsx("p",{className:"px-1 typography-small text-[var(--status-error)]",children:l}):null,t.jsx(Ne,{type:"submit",size:"lg",className:"mt-1 h-12 w-full",disabled:o||!M.trim(),children:s(o?"mobile.connect.connecting":"mobile.connect.unlockButton")}),t.jsx(Ne,{type:"button",variant:"ghost",size:"sm",className:"w-full",onClick:T,children:s("mobile.connect.cancelPassword")})]})})}):t.jsxs(t.Fragment,{children:[B?t.jsx(oa,{onCancel:()=>A.current?.abort()}):null,D?t.jsx(aa,{}):null,X?t.jsx(ta,{onClose:()=>te(!1)}):null,t.jsx("div",{className:"flex h-full flex-col overflow-hidden",children:t.jsx("div",{className:"flex-1 overflow-y-auto px-5 py-4",children:t.jsxs("div",{className:"space-y-6",children:[r.length>0?t.jsx("div",{...Q,className:"overflow-hidden rounded-[18px] border border-border/70 bg-surface-elevated",children:r.map(q=>{const ae=w===q.id,de=Fi(q),ve=K===q.id,je=ve?s("mobile.connect.connecting"):de?en()?s("mobile.instances.status.connectedRelay"):s("mobile.instances.status.connectedDirect"):q.candidates.some(Se=>Se.kind==="direct")?It(q):s("mobile.connect.relay.badge");return t.jsxs("div",{className:ee("flex items-center border-b border-border/70 transition-colors last:border-b-0",ae&&"bg-[color-mix(in_srgb,var(--destructive)_8%,transparent)]"),children:[t.jsxs("button",{type:"button",className:"flex min-w-0 flex-1 items-center gap-3 px-3.5 py-3 text-left transition-colors active:bg-interactive-active focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring disabled:opacity-60",onClick:()=>{de||(Z(q.id),c({id:q.id,candidates:q.candidates,clientToken:q.clientToken,label:q.label}).finally(()=>Z(null)))},disabled:a&&!ve||ae,children:[t.jsxs("span",{className:"relative flex size-9 shrink-0 items-center justify-center rounded-[12px] bg-interactive-hover text-foreground",children:[t.jsx(H,{name:"server",className:"size-[18px]"}),de?t.jsx("span",{className:"absolute -right-0.5 -top-0.5 size-2.5 rounded-full border-2 border-[var(--surface-elevated)] bg-[var(--status-success)]","aria-hidden":!0}):null]}),t.jsxs("span",{className:"min-w-0 flex-1",children:[t.jsx("span",{className:"block truncate typography-ui-label text-foreground",children:q.label}),t.jsx("span",{className:ee("block truncate typography-small",de&&!ve?"text-[var(--status-success)]":"text-muted-foreground"),children:je})]}),ve?t.jsx(H,{name:"loader-4",className:"size-5 shrink-0 animate-spin text-muted-foreground"}):null]}),t.jsxs("div",{className:"flex items-center gap-0.5 pr-2",children:[ae?t.jsxs("button",{type:"button","aria-label":s("mobile.instances.confirmDeleteAria",{label:q.label}),className:"flex h-9 shrink-0 items-center gap-1.5 rounded-full bg-destructive px-3 text-destructive-foreground transition-opacity active:opacity-90 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-destructive",onClick:()=>re(q.id),style:{touchAction:"manipulation"},children:[t.jsx(H,{name:"delete-bin",className:"size-[18px]"}),t.jsx("span",{className:"typography-ui-label",children:s("mobile.instances.delete")})]}):q.candidates.some(Se=>Se.kind==="direct")?t.jsx("button",{type:"button","aria-label":s("mobile.instances.edit"),className:"flex size-9 items-center justify-center rounded-full text-muted-foreground transition-colors active:bg-interactive-active focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",onClick:()=>{x(q.id),k(It(q)),v(q.label),C(q.clientToken||""),b(null)},style:{touchAction:"manipulation"},children:t.jsx(H,{name:"edit",className:"size-[18px]"})}):null,t.jsx("button",{type:"button","aria-label":ae?s("mobile.instances.cancelDeleteAria",{label:q.label}):s("mobile.instances.deleteAria",{label:q.label}),className:"flex size-9 items-center justify-center rounded-full text-muted-foreground transition-colors active:bg-interactive-active focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",onClick:()=>ne(q.id),style:{touchAction:"manipulation"},children:t.jsx(H,{name:ae?"close":"delete-bin",className:"size-[18px]"})})]})]},q.id)})}):t.jsx("p",{...Q,className:"rounded-[18px] border border-dashed border-border/70 px-4 py-6 text-center typography-small text-muted-foreground",children:s("mobile.connect.saved.empty")}),!F&&!R?t.jsxs("div",{className:"space-y-2",children:[_?t.jsxs(Ne,{type:"button",size:"lg",className:"h-12 w-full",onClick:()=>{U()},disabled:B,children:[t.jsx(H,{name:"scan-2",className:ee("size-[18px]",B&&"animate-pulse")}),s("mobile.connect.scanQr")]}):null,t.jsxs(Ne,{type:"button",variant:_?"ghost":"outline",size:"lg",className:"h-12 w-full",onClick:()=>{b(null),L(!0)},children:[t.jsx(H,{name:"add",className:"size-[18px]"}),s("mobile.instances.addManual")]}),l?t.jsx("p",{className:"px-1 text-center typography-small text-[var(--status-error)]",children:l}):null]}):t.jsxs("form",{className:"space-y-3",onSubmit:ue,children:[t.jsxs("div",{className:"flex h-8 items-center justify-between gap-3 px-1",children:[t.jsx("h3",{className:"typography-ui-label text-foreground",children:s(R?"mobile.instances.editTitle":"mobile.instances.addTitle")}),t.jsx(Ne,{type:"button",variant:"ghost",size:"xs",onClick:pe,children:s("mobile.instances.cancelEdit")})]}),t.jsxs("label",{className:"block space-y-1.5",children:[t.jsx("span",{className:"block px-1 typography-ui-label text-foreground",children:s("mobile.connect.url.label")}),t.jsx("input",{...vs,value:P,onChange:q=>k(q.target.value),placeholder:s("mobile.connect.url.placeholder"),type:"url",inputMode:"url",autoCapitalize:"none",className:ie})]}),t.jsxs("label",{className:"block space-y-1.5",children:[t.jsx("span",{className:"block px-1 typography-ui-label text-foreground",children:s("mobile.instances.label.label")}),t.jsx("input",{value:j,onChange:q=>v(q.target.value),placeholder:s("mobile.instances.label.placeholder"),autoComplete:"off",autoCapitalize:"words",autoCorrect:"off",spellCheck:!1,className:ie})]}),t.jsxs("label",{className:"block space-y-1.5",children:[t.jsx("span",{className:"block px-1 typography-ui-label text-foreground",children:s("mobile.connect.token.label")}),t.jsx("input",{...vs,value:N,onChange:q=>C(q.target.value),placeholder:s("mobile.connect.token.placeholder"),autoCapitalize:"none",className:ie}),t.jsx("p",{className:"px-1 typography-micro text-muted-foreground",children:s("mobile.connect.token.hint")})]}),l?t.jsx("p",{className:"px-1 typography-small text-[var(--status-error)]",children:l}):null,t.jsx(Ne,{type:"submit",size:"lg",className:"mt-1 h-12 w-full",children:s(R?"mobile.instances.saveEdit":"mobile.instances.saveNew")})]})]})})})]})},Le=n=>on(n)??"",mr=n=>{const e=Le(n);if(!e)return"";const s=e.split("/").filter(Boolean);return s[s.length-1]?.replace(/[-_]/g," ")||e},Vi=Jr(n=>({expandedParents:{},toggleParent:e=>n(s=>{const i={...s.expandedParents};return i[e]?delete i[e]:i[e]=!0,{expandedParents:i}})})),Cn=Jr()($o(n=>({projectExpanded:{},worktreeExpanded:{},setProjectExpanded:(e,s)=>n(i=>({projectExpanded:{...i.projectExpanded,[e]:s}})),setWorktreeExpanded:(e,s)=>n(i=>({worktreeExpanded:{...i.worktreeExpanded,[e]:s}}))}),{name:"mobile-session-tree"})),Cr=Jr()($o(n=>({orderByProject:{},setWorktreeOrder:(e,s)=>n(i=>({orderByProject:{...i.orderByProject,[e]:s}}))}),{name:"mobile-worktree-order"})),Ui=n=>n.replace(/\\/g,"/").replace(/\/+$/,""),Bf=(n,e)=>{if(!n||n.length===0)return e;const s=new Map(n.map((r,a)=>[Ui(r),a])),i=r=>s.get(Ui(r.path))??Number.MAX_SAFE_INTEGER;return e.map((r,a)=>({worktree:r,index:a})).sort((r,a)=>{const o=i(r.worktree)-i(a.worktree);return o!==0?o:r.index-a.index}).map(r=>r.worktree)},Ys=n=>on(n)??"",Ff=n=>{const e=n;return Ys(e.directory??e.project?.worktree??null)},ca=({open:n,project:e,worktree:s,onClose:i,onDeleted:r})=>{const{t:a}=xe(),o=vo(),l=xs(D=>D.activeSessions),f=De(D=>D.archiveSessions),c=Lt(D=>D.currentDirectory),{git:p,sourceControl:g}=Fn(),[m,h]=u.useState(!1),[b,S]=u.useState(!1),[x,R]=u.useState(!1),[w,E]=u.useState(null),[P,k]=u.useState(!1),j=Ys(s?.path),v=typeof s?.branch=="string"&&s.branch.trim().length>0,N=u.useMemo(()=>{if(!j)return[];const D=new Map;for(const V of[...l,...o])Ff(V)===j&&D.set(V.id,V);return Array.from(D.values())},[l,o,j]);u.useEffect(()=>{if(!n){h(!1),S(!1),R(!1),E(null),k(!1);return}if(!s?.path)return;let D=!1;return el(s.path).then(V=>{D||(R(!!V?.isDirty),E(V?.upstream?.split("/")[0]?.trim()||null))}).catch(()=>{D||R(!!s.status?.isDirty)}),()=>{D=!0}},[n,s?.path,s?.status?.isDirty]);const C=u.useCallback(async D=>(await tl(e,D,{deleteRemoteBranch:v&&b,deleteLocalBranch:v&&m,remoteName:w??void 0,network:{git:p,sourceControl:g}}),Ys(c)===j&&Ys(e.path)&&Lt.getState().setDirectory(Ys(e.path),{showOverlay:!1}),!0),[c,m,b,p,v,e,w,g,j]),M=u.useCallback((D,V)=>{const A=sl(D),_=le.loading(a("sessions.sidebar.sessionDialogs.worktree.removingTitle",{name:A}));nl(D.path),(async()=>{try{const F=await Bc({sessionIds:V,removeWorktree:()=>C(D),archiveSessions:f});if(!F.removed){le.dismiss(_);return}const{failedIds:L}=F.archive;if(L.length>0){le.error(L.length===1?a("sessions.sidebar.bulkActions.failedArchiveSingle",{count:L.length}):a("sessions.sidebar.bulkActions.failedArchivePlural",{count:L.length}),{id:_,description:a("sessions.sidebar.dialogs.deleteResult.tryAgain")});return}le.success(a("sessions.sidebar.sessionDialogs.worktree.removedTitle",{name:A}),{id:_,description:a(v&&b?"sessions.sidebar.sessionDialogs.worktree.removedWithRemote":"sessions.sidebar.sessionDialogs.worktree.removed")}),r?.()}catch(F){const L=F instanceof En?F.message||a("sessions.sidebar.dialogs.deleteResult.tryAgain"):F instanceof vr||F instanceof Ot&&!F.message.includes(" ")?a("gitView.publish.remoteNotGranted"):F instanceof Error?F.message:a("sessions.sidebar.dialogs.deleteResult.tryAgain");le.error(a("sessions.sidebar.sessionDialogs.worktree.errorRemoveTitle",{name:A}),{id:_,description:L})}finally{rl(D.path)}})()},[f,b,v,r,C,a]),O=()=>{!s||P||(M(s,N.map(D=>D.id)),i())};if(!s)return null;const B=s.branch||s.label||s.path,I=(D,V,A,_)=>t.jsxs("button",{type:"button",role:"switch","aria-checked":D,disabled:_,onClick:()=>V(!D),className:ee("flex w-full items-center justify-between gap-3 rounded-xl border border-border/70 px-3.5 py-3 text-left transition-colors","hover:bg-interactive-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",_&&"pointer-events-none opacity-40"),style:{touchAction:"manipulation"},children:[t.jsx("span",{className:"typography-ui-label text-foreground",children:A}),t.jsx("span",{className:ee("relative h-6 w-10 shrink-0 rounded-full transition-colors",D?"bg-primary":"bg-muted-foreground/30"),children:t.jsx("span",{className:ee("absolute top-0.5 size-5 rounded-full bg-white transition-transform",D?"translate-x-[1.125rem]":"translate-x-0.5")})})]});return t.jsx(wo,{open:n,onClose:i,title:a("mobile.projectEdit.deleteWorktreeTitle"),footer:t.jsxs("div",{className:"flex gap-2",children:[t.jsx(Ne,{variant:"ghost",className:"flex-1",onClick:i,disabled:P,children:a("projectEditDialog.actions.cancel")}),t.jsx(Ne,{variant:"destructive",className:"flex-1",onClick:()=>{O()},disabled:P,children:a("mobile.projectEdit.deleteWorktreeConfirmButton")})]}),children:t.jsxs("div",{className:"flex flex-col gap-4 px-1 py-1",children:[t.jsx("p",{className:"typography-ui-body text-foreground",children:a("mobile.projectEdit.deleteWorktreeConfirm",{name:B})}),x?t.jsx("p",{className:"rounded-xl border border-[var(--warning)]/40 bg-[color-mix(in_srgb,var(--warning)_10%,transparent)] px-3.5 py-3 typography-meta text-foreground",children:a("mobile.projectEdit.deleteWorktreeDirty")}):null,N.length>0?t.jsx("p",{className:"typography-meta text-muted-foreground",children:a("mobile.projectEdit.deleteWorktreeArchiveNote",{count:N.length})}):null,v?t.jsxs("div",{className:"flex flex-col gap-2",children:[I(m,h,a("mobile.projectEdit.deleteLocalBranch"),P),I(b,S,a("mobile.projectEdit.deleteRemoteBranch"),P||!w)]}):null]})})},sn=n=>{const e=fe.c(18),{project:s,size:i}=n,r=i===void 0?"md":i,{currentTheme:a}=jo(),o=s.icon?ko[s.icon]:null,l=s.color?So[s.color]??null:null,f=r==="sm"?"size-6 rounded-md":"size-8 rounded-lg",c=r==="sm"?"size-3.5":"size-4";let p;e[0]!==o||e[1]!==l||e[2]!==c?(p=o?t.jsx(H,{name:o,className:c,style:l?{color:l}:void 0}):t.jsx(wr,{className:c,style:l?{color:l}:void 0}),e[0]=o,e[1]=l,e[2]=c,e[3]=p):p=e[3];const g=p,m=r==="md"&&"bg-[var(--surface-muted)]";let h;e[4]!==f||e[5]!==m?(h=ee("flex shrink-0 items-center justify-center overflow-hidden text-muted-foreground",m,f),e[4]=f,e[5]=m,e[6]=h):h=e[6];let b;e[7]!==s.iconBackground?(b=s.iconBackground?{backgroundColor:s.iconBackground}:void 0,e[7]=s.iconBackground,e[8]=b):b=e[8];let S;e[9]!==a||e[10]!==g||e[11]!==s.iconImage||e[12]!==s.id?(S=s.iconImage?t.jsx(No,{project:{id:s.id,iconImage:s.iconImage??null},options:{themeVariant:a.metadata.variant,iconColor:a.colors.surface.foreground},className:"size-full object-contain",fallback:g}):g,e[9]=a,e[10]=g,e[11]=s.iconImage,e[12]=s.id,e[13]=S):S=e[13];let x;return e[14]!==h||e[15]!==b||e[16]!==S?(x=t.jsx("span",{className:h,style:b,children:S}),e[14]=h,e[15]=b,e[16]=S,e[17]=x):x=e[17],x},ua=n=>{const e=fe.c(57),{initialTitle:s,indent:i,className:r,aiRename:a,onSubmit:o,onCancel:l}=n,{t:f}=xe(),[c,p]=u.useState(s),g=$f;let m;e[0]!==s||e[1]!==l||e[2]!==o||e[3]!==c?(m=()=>{const X=c.trim();if(!X||X===s.trim()){l();return}o(X)},e[0]=s,e[1]=l,e[2]=o,e[3]=c,e[4]=m):m=e[4];const h=m;let b;e[5]!==r?(b=ee("flex h-9 min-w-0 flex-1 items-center gap-2 pr-2",r),e[5]=r,e[6]=b):b=e[6];let S;e[7]!==i?(S={paddingLeft:i},e[7]=i,e[8]=S):S=e[8];let x;e[9]!==h?(x=X=>{X.preventDefault(),h()},e[9]=h,e[10]=x):x=e[10];let R;e[11]===Symbol.for("react.memo_cache_sentinel")?(R=X=>p(X.target.value),e[11]=R):R=e[11];let w;e[12]!==l?(w=X=>Fc(X,l),e[12]=l,e[13]=w):w=e[13];let E;e[14]!==f?(E=f("sessions.sidebar.session.rename.save"),e[14]=f,e[15]=E):E=e[15];let P;e[16]!==f?(P=f("sessions.sidebar.session.menu.rename"),e[16]=f,e[17]=P):P=e[17];let k;e[18]===Symbol.for("react.memo_cache_sentinel")?(k={minHeight:0},e[18]=k):k=e[18];let j;e[19]!==w||e[20]!==E||e[21]!==P||e[22]!==c?(j=t.jsx("input",{ref:g,value:c,onChange:R,onKeyDown:w,"aria-label":E,placeholder:P,className:"min-w-0 flex-1 bg-transparent text-[16px] typography-ui-label text-foreground outline-none placeholder:text-muted-foreground",style:k,enterKeyHint:"done"}),e[19]=w,e[20]=E,e[21]=P,e[22]=c,e[23]=j):j=e[23];const v=a.disabled;let N;e[24]!==a||e[25]!==l?(N=()=>{a.run(),l()},e[24]=a,e[25]=l,e[26]=N):N=e[26];let C;e[27]!==f?(C=f("sessions.aiRename.action"),e[27]=f,e[28]=C):C=e[28];let M,O;e[29]===Symbol.for("react.memo_cache_sentinel")?(M={touchAction:"manipulation",minHeight:0,minWidth:0},O=t.jsx(H,{name:"ai-generate-2",className:"size-4"}),e[29]=M,e[30]=O):(M=e[29],O=e[30]);let B;e[31]!==a.disabled||e[32]!==a.hint||e[33]!==N||e[34]!==C?(B=t.jsx("button",{type:"button",disabled:v,onClick:N,"aria-label":C,"aria-description":a.hint,title:a.hint,className:"flex size-8 shrink-0 items-center justify-center rounded-full text-muted-foreground transition-colors hover:text-foreground disabled:opacity-40 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",style:M,children:O}),e[31]=a.disabled,e[32]=a.hint,e[33]=N,e[34]=C,e[35]=B):B=e[35];let I;e[36]!==f?(I=f("sessions.sidebar.session.rename.save"),e[36]=f,e[37]=I):I=e[37];let D,V;e[38]===Symbol.for("react.memo_cache_sentinel")?(D={touchAction:"manipulation",minHeight:0,minWidth:0},V=t.jsx(H,{name:"check",className:"size-4"}),e[38]=D,e[39]=V):(D=e[38],V=e[39]);let A;e[40]!==I?(A=t.jsx("button",{type:"submit","aria-label":I,className:"flex size-8 shrink-0 items-center justify-center rounded-full text-muted-foreground transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",style:D,children:V}),e[40]=I,e[41]=A):A=e[41];let _;e[42]!==f?(_=f("sessions.sidebar.session.rename.cancel"),e[42]=f,e[43]=_):_=e[43];let F,L;e[44]===Symbol.for("react.memo_cache_sentinel")?(F={touchAction:"manipulation",minHeight:0,minWidth:0},L=t.jsx(H,{name:"close",className:"size-4"}),e[44]=F,e[45]=L):(F=e[44],L=e[45]);let K;e[46]!==l||e[47]!==_?(K=t.jsx("button",{type:"button",onClick:l,"aria-label":_,className:"flex size-8 shrink-0 items-center justify-center rounded-full text-muted-foreground transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",style:F,children:L}),e[46]=l,e[47]=_,e[48]=K):K=e[48];let Z;return e[49]!==j||e[50]!==B||e[51]!==b||e[52]!==A||e[53]!==K||e[54]!==S||e[55]!==x?(Z=t.jsxs("form",{className:b,style:S,onSubmit:x,children:[j,B,A,K]}),e[49]=j,e[50]=B,e[51]=b,e[52]=A,e[53]=K,e[54]=S,e[55]=x,e[56]=Z):Z=e[56],Z};function $f(n){n&&(n.focus(),n.select())}const nn=48,da=4*nn,Wf=180,Bn=n=>{const e=fe.c(27),{actionsWidth:s,actions:i,revealed:r,onRevealedChange:a,dataActiveSession:o,contentClassName:l,children:f}=n,c=l===void 0?"relative flex w-full items-center bg-background":l,p=u.useRef(null),g=u.useRef(null),m=u.useRef(!1),h=u.useRef(0),b=u.useRef(r);let S;e[0]===Symbol.for("react.memo_cache_sentinel")?(S=(A,_)=>{const F=p.current;F&&(F.style.transition=_?`transform ${Wf}ms ease-out`:"none",F.style.transform=A===0?"none":`translateX(${A}px)`,h.current=A)},e[0]=S):S=e[0];const x=S;let R,w;e[1]!==s||e[2]!==r?(R=()=>{b.current=r,x(r?s:0,!0)},w=[s,x,r],e[1]=s,e[2]=r,e[3]=R,e[4]=w):(R=e[3],w=e[4]),u.useEffect(R,w);let E;e[5]===Symbol.for("react.memo_cache_sentinel")?(E=A=>{if(A.touches.length!==1)return;const _=A.touches[0];g.current={x:_.clientX,y:_.clientY},m.current=!1},e[5]=E):E=e[5];const P=E;let k;e[6]!==s?(k=A=>{if(!g.current)return;const _=A.touches[0],F=_.clientX-g.current.x,L=_.clientY-g.current.y;if(!m.current){if(Math.abs(F)<8||Math.abs(F)<=Math.abs(L))return;m.current=!0}const K=b.current?s:0;x(Math.max(0,Math.min(s,K+F)),!1)},e[6]=s,e[7]=k):k=e[7];const j=k;let v;e[8]!==s||e[9]!==a?(v=()=>{if(g.current=null,!m.current)return;m.current=!1;const A=h.current>s/2;x(A?s:0,!0),A!==b.current&&a(A)},e[8]=s,e[9]=a,e[10]=v):v=e[10];const N=v,C=o||void 0;let M;e[11]===Symbol.for("react.memo_cache_sentinel")?(M={touchAction:"pan-y"},e[11]=M):M=e[11];let O;e[12]!==s?(O={width:s},e[12]=s,e[13]=O):O=e[13];const B=!r;let I;e[14]!==i||e[15]!==O||e[16]!==B?(I=t.jsx("div",{className:"absolute inset-y-0 left-0 flex items-stretch",style:O,"aria-hidden":B,children:i}),e[14]=i,e[15]=O,e[16]=B,e[17]=I):I=e[17];let D;e[18]!==f||e[19]!==c?(D=t.jsx("div",{ref:p,className:c,children:f}),e[18]=f,e[19]=c,e[20]=D):D=e[20];let V;return e[21]!==N||e[22]!==j||e[23]!==I||e[24]!==D||e[25]!==C?(V=t.jsxs("div",{"data-active-session":C,className:"relative overflow-hidden",onTouchStart:P,onTouchMove:j,onTouchEnd:N,onTouchCancel:N,style:M,children:[I,D]}),e[21]=N,e[22]=j,e[23]=I,e[24]=D,e[25]=C,e[26]=V):V=e[26],V},fa=n=>{const e=fe.c(62),{sessionId:s,title:i,revealed:r,confirmingDelete:a,onArchive:o,onRequestDelete:l,onConfirmDelete:f,onRequestRename:c,onRevealedChange:p,work:g,pin:m}=n,{t:h}=xe(),b=r?0:-1;let S;e[0]!==p||e[1]!==s||e[2]!==h?(S=async()=>{if(!(await go(s).catch(Vf))?.ok){kr.error(h("sessions.sidebar.session.copyId.error"));return}p?.(!1),kr.success(h("sessions.sidebar.session.copyId.success"))},e[0]=p,e[1]=s,e[2]=h,e[3]=S):S=e[3];const x=S;let R;e[4]!==h||e[5]!==i?(R=h("mobile.sessions.archiveSessionAria",{title:i}),e[4]=h,e[5]=i,e[6]=R):R=e[6];let w,E;e[7]===Symbol.for("react.memo_cache_sentinel")?(w={touchAction:"manipulation"},E=t.jsx($u,{className:"size-[18px]"}),e[7]=w,e[8]=E):(w=e[7],E=e[8]);let P;e[9]!==o||e[10]!==R||e[11]!==b?(P=t.jsx("button",{type:"button",tabIndex:b,className:"flex flex-1 items-center justify-center text-muted-foreground transition-colors active:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring","aria-label":R,onClick:o,style:w,children:E}),e[9]=o,e[10]=R,e[11]=b,e[12]=P):P=e[12];let k;e[13]!==p||e[14]!==m||e[15]!==h||e[16]!==b?(k=m?t.jsx("button",{type:"button",tabIndex:b,className:"flex flex-1 items-center justify-center text-muted-foreground transition-colors active:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring","aria-label":m.pinned?h("sessions.sidebar.session.menu.unpin"):h("sessions.sidebar.session.menu.pin"),onClick:()=>{m.onToggle(),p?.(!1)},style:{touchAction:"manipulation"},children:t.jsx(H,{name:m.pinned?"unpin":"pushpin",className:"size-[18px]"})}):null,e[13]=p,e[14]=m,e[15]=h,e[16]=b,e[17]=k):k=e[17];let j;e[18]!==p||e[19]!==h||e[20]!==b||e[21]!==g?(j=g?t.jsx("button",{type:"button",tabIndex:b,className:ee("flex flex-1 items-center justify-center transition-colors active:opacity-80 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring",g.inWork?"text-status-success":"text-muted-foreground active:text-foreground"),"aria-label":g.inWork?h("sessions.sidebar.session.work.markDone"):h("sessions.sidebar.session.work.track"),onClick:()=>{g.onToggle(),p?.(!1)},style:{touchAction:"manipulation"},children:t.jsx(H,{name:g.inWork?"check":"eye",className:g.inWork?"size-5":"size-[18px]"})}):null,e[18]=p,e[19]=h,e[20]=b,e[21]=g,e[22]=j):j=e[22];const v=a?"rounded-lg bg-destructive text-destructive-foreground":"text-[var(--status-error)] active:opacity-80";let N;e[23]!==v?(N=ee("flex flex-1 items-center justify-center transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-destructive",v),e[23]=v,e[24]=N):N=e[24];let C;e[25]!==a||e[26]!==h||e[27]!==i?(C=a?h("mobile.sessions.confirmDeleteSessionAria",{title:i}):h("mobile.sessions.deleteSessionAria",{title:i}),e[25]=a,e[26]=h,e[27]=i,e[28]=C):C=e[28];const M=a?f:l;let O,B;e[29]===Symbol.for("react.memo_cache_sentinel")?(O={touchAction:"manipulation"},B=t.jsx(Dn,{className:"size-[18px]"}),e[29]=O,e[30]=B):(O=e[29],B=e[30]);let I;e[31]!==C||e[32]!==M||e[33]!==N||e[34]!==b?(I=t.jsx("button",{type:"button",tabIndex:b,className:N,"aria-label":C,onClick:M,style:O,children:B}),e[31]=C,e[32]=M,e[33]=N,e[34]=b,e[35]=I):I=e[35];let D;e[36]!==h||e[37]!==i?(D=h("mobile.sessions.renameSessionAria",{title:i}),e[36]=h,e[37]=i,e[38]=D):D=e[38];let V,A;e[39]===Symbol.for("react.memo_cache_sentinel")?(V={touchAction:"manipulation"},A=t.jsx(jr,{className:"size-[18px]"}),e[39]=V,e[40]=A):(V=e[39],A=e[40]);let _;e[41]!==c||e[42]!==D||e[43]!==b?(_=t.jsx("button",{type:"button",tabIndex:b,className:"flex flex-1 items-center justify-center text-muted-foreground transition-colors active:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring","aria-label":D,onClick:c,style:V,children:A}),e[41]=c,e[42]=D,e[43]=b,e[44]=_):_=e[44];let F;e[45]!==h?(F=h("sessions.sidebar.session.menu.copyId"),e[45]=h,e[46]=F):F=e[46];let L;e[47]!==x?(L=()=>{x()},e[47]=x,e[48]=L):L=e[48];let K,Z;e[49]===Symbol.for("react.memo_cache_sentinel")?(K={touchAction:"manipulation"},Z=t.jsx(H,{name:"file-copy",className:"size-[18px]"}),e[49]=K,e[50]=Z):(K=e[49],Z=e[50]);let X;e[51]!==F||e[52]!==L||e[53]!==b?(X=t.jsx("button",{type:"button",tabIndex:b,className:"flex flex-1 items-center justify-center text-muted-foreground transition-colors active:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring","aria-label":F,onClick:L,style:K,children:Z}),e[51]=F,e[52]=L,e[53]=b,e[54]=X):X=e[54];let te;return e[55]!==I||e[56]!==_||e[57]!==X||e[58]!==P||e[59]!==k||e[60]!==j?(te=t.jsxs(t.Fragment,{children:[P,k,j,I,_,X]}),e[55]=I,e[56]=_,e[57]=X,e[58]=P,e[59]=k,e[60]=j,e[61]=te):te=e[61],te};function Vf(){return null}const yt=n=>n.parentID??null,kt=n=>{const e=n;return Le(e.directory??e.project?.worktree??null)},ma=n=>{const e=n.time?.updated??n.time?.created,s=typeof e=="number"?e:Number(e);return Number.isFinite(s)&&s>0?s:0},Un=n=>{if(n<=0)return"";const e=Date.now()-n;if(e<6e4)return"now";const s=Math.floor(e/6e4);if(s<60)return`${s}m`;const i=Math.floor(s/60);if(i<24)return`${i}h`;const r=Math.floor(i/24);return r<7?`${r}d`:new Intl.DateTimeFormat(void 0,{month:"short",day:"numeric"}).format(new Date(n))},Uf=4,pa=n=>{const e=fe.c(4),{providerIDs:s}=n;let i;e[0]!==s?(i=s.slice(0,Uf).map(Gf),e[0]=s,e[1]=i):i=e[1];let r;return e[2]!==i?(r=t.jsx("span",{className:"inline-flex shrink-0 items-center -space-x-1",children:i}),e[2]=i,e[3]=r):r=e[3],r};function Gf(n){return t.jsx("span",{className:"inline-flex size-4 items-center justify-center rounded-full bg-background ring-1 ring-background",children:t.jsx(bo,{providerId:n,className:"size-3 opacity-80"})},n)}const ha=n=>{const e=fe.c(8),{session:s}=n,{t:i}=xe(),r=Co(s);if(!r)return null;const a=il[r.status];let o;e[0]!==i||e[1]!==a?(o=i(a),e[0]=i,e[1]=a,e[2]=o):o=e[2];const l=o,f=ol[r.status];let c;e[3]!==f?(c={color:f},e[3]=f,e[4]=c):c=e[4];let p;return e[5]!==l||e[6]!==c?(p=t.jsx(H,{name:"target",className:"size-3.5 shrink-0",style:c,"aria-label":l}),e[5]=l,e[6]=c,e[7]=p):p=e[7],p},ga=n=>{const e=fe.c(12),{permissionCount:s,formCount:i}=n,{t:r}=xe();if(s===0&&i===0)return null;let a;e[0]!==i||e[1]!==r?(a=i===1?r("sessions.sidebar.session.status.questionPendingSingle"):r("sessions.sidebar.session.status.questionPendingMany",{count:i}),e[0]=i,e[1]=r,e[2]=a):a=e[2];const o=a;let l;e[3]!==s||e[4]!==r?(l=s>0?t.jsxs("span",{className:"inline-flex shrink-0 items-center gap-1 rounded bg-destructive/10 px-1 py-0.5 text-[0.7rem] text-destructive","aria-label":r("sessions.sidebar.session.status.permissionRequired"),children:[t.jsx(H,{name:"shield",className:"size-3"}),t.jsx("span",{className:"leading-none tabular-nums",children:s})]}):null,e[3]=s,e[4]=r,e[5]=l):l=e[5];let f;e[6]!==i||e[7]!==o?(f=i>0?t.jsxs("span",{className:"inline-flex shrink-0 items-center gap-1 rounded bg-status-info/10 px-1 py-0.5 text-[0.7rem] text-status-info","aria-label":o,children:[t.jsx(H,{name:"question",className:"size-3"}),t.jsx("span",{className:"leading-none tabular-nums",children:i})]}):null,e[6]=i,e[7]=o,e[8]=f):f=e[8];let c;return e[9]!==l||e[10]!==f?(c=t.jsxs(t.Fragment,{children:[l,f]}),e[9]=l,e[10]=f,e[11]=c):c=e[11],c},ba=n=>{const e=fe.c(7);let s;e[0]!==n?(s=l=>{let f=0;for(const c of n)f=f+(l.bySession.get(c)?.permissions.length??0);return f},e[0]=n,e[1]=s):s=e[1];const i=ki(s);let r;e[2]!==n?(r=l=>{let f=0;for(const c of n)f=f+(l.bySession.get(c)?.forms.length??0);return f},e[2]=n,e[3]=r):r=e[3];const a=ki(r);let o;return e[4]!==a||e[5]!==i?(o={permissionCount:i,formCount:a},e[4]=a,e[5]=i,e[6]=o):o=e[6],o},Rr=12,Er="flex min-w-0 flex-1 flex-col gap-1 py-2.5 pr-3 text-left",Kf=n=>{const e=fe.c(54),{entry:s}=n,{t:i}=xe(),{run:r,project:a}=s;let o;e[0]!==r.key?(o=L=>L.runOverviewKey===r.key,e[0]=r.key,e[1]=o):o=e[1];const l=Be(o);let f;e[2]!==s.laneNodes?(f={nodes:s.laneNodes,includeUnreadSubtasks:!1},e[2]=s.laneNodes,e[3]=f):f=e[3];const c=zo(f);let p;e[4]!==r.lastActivity?(p=Un(r.lastActivity),e[4]=r.lastActivity,e[5]=p):p=e[5];const g=p,m=r.lanes.length,h=l||void 0,b=l&&"bg-[color-mix(in_srgb,var(--primary)_10%,var(--background))]";let S;e[6]!==b?(S=ee("relative bg-background transition-colors",b),e[6]=b,e[7]=S):S=e[7];let x,R;e[8]===Symbol.for("react.memo_cache_sentinel")?(x=ee(Er,"w-full focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring"),R={paddingLeft:Rr,touchAction:"manipulation"},e[8]=x,e[9]=R):(x=e[8],R=e[9]);let w;e[10]!==r.key?(w=()=>Be.getState().setRunOverviewKey(r.key),e[10]=r.key,e[11]=w):w=e[11];let E;e[12]!==r.title||e[13]!==i?(E=i("sessions.sidebar.run.openOverviewAria",{title:r.title}),e[12]=r.title,e[13]=i,e[14]=E):E=e[14];let P;e[15]!==a?(P=t.jsx(sn,{project:a,size:"sm"}),e[15]=a,e[16]=P):P=e[16];let k;e[17]!==a.label?(k=t.jsx("span",{className:"block min-w-0 flex-1 truncate typography-micro text-muted-foreground",children:a.label}),e[17]=a.label,e[18]=k):k=e[18];let j;e[19]!==c?(j=c?t.jsx(Bo,{state:c}):null,e[19]=c,e[20]=j):j=e[20];let v;e[21]!==g?(v=g?t.jsx("span",{className:"shrink-0 typography-micro text-muted-foreground tabular-nums",children:g}):null,e[21]=g,e[22]=v):v=e[22];let N;e[23]!==P||e[24]!==k||e[25]!==j||e[26]!==v?(N=t.jsxs("span",{className:"flex min-w-0 items-center gap-2",children:[P,k,j,v]}),e[23]=P,e[24]=k,e[25]=j,e[26]=v,e[27]=N):N=e[27];const C=l?"text-primary":"text-foreground";let M;e[28]!==C?(M=ee("block min-w-0 truncate text-left typography-ui-label",C),e[28]=C,e[29]=M):M=e[29];let O;e[30]!==r.title||e[31]!==M?(O=t.jsx("span",{dir:"auto",className:M,children:r.title}),e[30]=r.title,e[31]=M,e[32]=O):O=e[32];let B;e[33]===Symbol.for("react.memo_cache_sentinel")?(B=t.jsx(Eo,{className:"size-3.5 shrink-0","aria-hidden":"true"}),e[33]=B):B=e[33];let I;e[34]!==m||e[35]!==i?(I=m===1?i("sessions.sidebar.run.laneCountSingle",{count:m}):i("sessions.sidebar.run.laneCountPlural",{count:m}),e[34]=m,e[35]=i,e[36]=I):I=e[36];let D;e[37]!==I?(D=t.jsx("span",{className:"block min-w-0 flex-1 truncate typography-micro",children:I}),e[37]=I,e[38]=D):D=e[38];let V;e[39]!==r.providerIDs?(V=t.jsx(pa,{providerIDs:r.providerIDs}),e[39]=r.providerIDs,e[40]=V):V=e[40];let A;e[41]!==D||e[42]!==V?(A=t.jsxs("span",{className:"flex min-w-0 items-center gap-1.5 text-muted-foreground",children:[B,D,V]}),e[41]=D,e[42]=V,e[43]=A):A=e[43];let _;e[44]!==E||e[45]!==N||e[46]!==O||e[47]!==A||e[48]!==w?(_=t.jsxs("button",{type:"button",className:x,style:R,onClick:w,"aria-label":E,children:[N,O,A]}),e[44]=E,e[45]=N,e[46]=O,e[47]=A,e[48]=w,e[49]=_):_=e[49];let F;return e[50]!==_||e[51]!==h||e[52]!==S?(F=t.jsx("div",{"data-active-session":h,className:S,children:_}),e[50]=_,e[51]=h,e[52]=S,e[53]=F):F=e[53],F},qf=n=>{const e=fe.c(116),{entry:s,active:i,revealed:r,confirmingDelete:a,renaming:o,handlers:l}=n,{t:f}=xe(),{session:c,project:p,branch:g}=s;let m;e[0]!==c.title||e[1]!==f?(m=c.title?.trim()||f("mobile.sessions.untitled"),e[0]=c.title,e[1]=f,e[2]=m):m=e[2];const h=m;let b;e[3]!==c?(b=Un(ma(c)),e[3]=c,e[4]=b):b=e[4];const S=b,x=Lo(c.id,c.directory,r||o),R=Pr(c.id),w=Tr(c.id),E=w!==null,P=!E&&R>0&&!i,k=Dr(c.id,E),j=(E||P)&&k,v=l.onToggleWork;let N;e[5]!==c?(N=Ro(c),e[5]=c,e[6]=N):N=e[6];const C=N;let M;e[7]!==C||e[8]!==v||e[9]!==c?(M=v?{inWork:C,onToggle:()=>v(c,C)}:void 0,e[7]=C,e[8]=v,e[9]=c,e[10]=M):M=e[10];const O=M;let B;e[11]!==l||e[12]!==c?(B=l.isPinned(c),e[11]=l,e[12]=c,e[13]=B):B=e[13];const I=B;let D;e[14]!==l||e[15]!==c?(D=()=>l.onTogglePin(c),e[14]=l,e[15]=c,e[16]=D):D=e[16];let V;e[17]!==I||e[18]!==D?(V={pinned:I,onToggle:D},e[17]=I,e[18]=D,e[19]=V):V=e[19];const A=V,{descendantIdsOf:_}=l;let F;e[20]!==_||e[21]!==c.id?(F=[c.id,..._(c.id)],e[20]=_,e[21]=c.id,e[22]=F):F=e[22];const K=ba(F),Z=K.permissionCount>0||K.formCount>0;let X;e[23]!==c?(X=Co(c),e[23]=c,e[24]=X):X=e[24];const te=X!==null,Q=da+nn+(O?nn:0);let pe;e[25]!==l||e[26]!==c.id?(pe=ve=>l.onRevealedChange(c.id,ve),e[25]=l,e[26]=c.id,e[27]=pe):pe=e[27];const ue=i&&"bg-[color-mix(in_srgb,var(--primary)_10%,var(--background))]";let U;e[28]!==ue?(U=ee("relative flex w-full items-center bg-background transition-colors",ue),e[28]=ue,e[29]=U):U=e[29];let G;e[30]!==l||e[31]!==c?(G=()=>l.onArchive(c),e[30]=l,e[31]=c,e[32]=G):G=e[32];let T;e[33]!==l||e[34]!==c.id?(T=()=>l.onRequestDelete(c.id),e[33]=l,e[34]=c.id,e[35]=T):T=e[35];let ne;e[36]!==l||e[37]!==c?(ne=()=>l.onConfirmDelete(c),e[36]=l,e[37]=c,e[38]=ne):ne=e[38];let re,ie;e[39]!==l||e[40]!==c.id?(re=()=>l.onRequestRename(c.id),ie=ve=>l.onRevealedChange(c.id,ve),e[39]=l,e[40]=c.id,e[41]=re,e[42]=ie):(re=e[41],ie=e[42]);let q;e[43]!==a||e[44]!==A||e[45]!==r||e[46]!==c.id||e[47]!==G||e[48]!==T||e[49]!==ne||e[50]!==re||e[51]!==ie||e[52]!==h||e[53]!==O?(q=t.jsx(fa,{sessionId:c.id,title:h,revealed:r,confirmingDelete:a,onArchive:G,onRequestDelete:T,onConfirmDelete:ne,onRequestRename:re,onRevealedChange:ie,work:O,pin:A}),e[43]=a,e[44]=A,e[45]=r,e[46]=c.id,e[47]=G,e[48]=T,e[49]=ne,e[50]=re,e[51]=ie,e[52]=h,e[53]=O,e[54]=q):q=e[54];let ae;e:{let ve;e[55]!==p?(ve=t.jsx(sn,{project:p,size:"sm"}),e[55]=p,e[56]=ve):ve=e[56];let je;e[57]!==p.label?(je=t.jsx("span",{className:"block min-w-0 flex-1 truncate typography-micro text-muted-foreground",children:p.label}),e[57]=p.label,e[58]=je):je=e[58];let Se;e[59]!==I||e[60]!==f?(Se=I?t.jsx(H,{name:"pushpin",className:"size-3 shrink-0 text-muted-foreground","aria-label":f("sessions.sidebar.session.status.pinned")}):null,e[59]=I,e[60]=f,e[61]=Se):Se=e[61];let he;e[62]!==x.pending||e[63]!==E||e[64]!==P||e[65]!==f||e[66]!==w?(he=x.pending?t.jsx(H,{name:"loader-4",className:"size-3 shrink-0 animate-spin text-primary","aria-label":f("sessions.aiRename.generating")}):E||P?t.jsx(Tn,{state:w??"unread"}):null,e[62]=x.pending,e[63]=E,e[64]=P,e[65]=f,e[66]=w,e[67]=he):he=e[67];let Y;e[68]!==E||e[69]!==c.id||e[70]!==j||e[71]!==S?(Y=j?t.jsx(_r,{sessionId:c.id,running:E,className:"shrink-0 typography-micro"}):S?t.jsx("span",{className:"shrink-0 typography-micro text-muted-foreground tabular-nums",children:S}):null,e[68]=E,e[69]=c.id,e[70]=j,e[71]=S,e[72]=Y):Y=e[72];let be;e[73]!==ve||e[74]!==je||e[75]!==Se||e[76]!==he||e[77]!==Y?(be=t.jsxs("span",{className:"flex min-w-0 items-center gap-2",children:[ve,je,Se,he,Y]}),e[73]=ve,e[74]=je,e[75]=Se,e[76]=he,e[77]=Y,e[78]=be):be=e[78];let me;e[79]!==i||e[80]!==x||e[81]!==l||e[82]!==o||e[83]!==c.id||e[84]!==h?(me=o?t.jsx(ua,{initialTitle:h,indent:0,aiRename:x,className:"h-[1lh] pr-0 typography-ui-label [&_button]:size-6 [&_button>svg]:size-3.5",onSubmit:ot=>l.onSubmitRename(c.id,ot),onCancel:l.onCancelRename}):t.jsx("span",{dir:"auto",className:ee("block min-w-0 truncate text-left typography-ui-label",i?"text-primary":"text-foreground"),children:h}),e[79]=i,e[80]=x,e[81]=l,e[82]=o,e[83]=c.id,e[84]=h,e[85]=me):me=e[85];let Ce;e[86]!==g||e[87]!==te||e[88]!==Z||e[89]!==K||e[90]!==c?(Ce=g||te||Z?t.jsxs("span",{className:"flex min-w-0 items-center gap-1.5 text-muted-foreground",children:[g?t.jsxs(t.Fragment,{children:[t.jsx(H,{name:"git-branch",className:"size-3.5 shrink-0"}),t.jsx("span",{className:"block min-w-0 truncate typography-micro",children:g})]}):null,t.jsxs("span",{className:"ml-auto flex shrink-0 items-center gap-1.5",children:[t.jsx(ha,{session:c}),t.jsx(ga,{...K})]})]}):null,e[86]=g,e[87]=te,e[88]=Z,e[89]=K,e[90]=c,e[91]=Ce):Ce=e[91];let Pe;e[92]!==be||e[93]!==me||e[94]!==Ce?(Pe=t.jsxs(t.Fragment,{children:[be,me,Ce]}),e[92]=be,e[93]=me,e[94]=Ce,e[95]=Pe):Pe=e[95];const Ie=Pe;if(o){let ot;e[96]===Symbol.for("react.memo_cache_sentinel")?(ot={paddingLeft:Rr},e[96]=ot):ot=e[96];let tt;e[97]!==Ie?(tt=t.jsx("div",{className:Er,style:ot,children:Ie}),e[97]=Ie,e[98]=tt):tt=e[98],ae=tt;break e}let _e,qe;e[99]===Symbol.for("react.memo_cache_sentinel")?(_e=ee(Er,"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring"),qe={paddingLeft:Rr,touchAction:"manipulation"},e[99]=_e,e[100]=qe):(_e=e[99],qe=e[100]);let Oe;e[101]!==l||e[102]!==r||e[103]!==c?(Oe=()=>{if(r){l.onRevealedChange(c.id,!1);return}l.onSelect(c)},e[101]=l,e[102]=r,e[103]=c,e[104]=Oe):Oe=e[104];let He;e[105]!==Ie||e[106]!==Oe?(He=t.jsx("button",{type:"button",className:_e,style:qe,onClick:Oe,children:Ie}),e[105]=Ie,e[106]=Oe,e[107]=He):He=e[107],ae=He}let de;return e[108]!==i||e[109]!==r||e[110]!==Q||e[111]!==pe||e[112]!==U||e[113]!==q||e[114]!==ae?(de=t.jsx(Bn,{actionsWidth:Q,revealed:r,onRevealedChange:pe,dataActiveSession:i,contentClassName:U,actions:q,children:ae}),e[108]=i,e[109]=r,e[110]=Q,e[111]=pe,e[112]=U,e[113]=q,e[114]=ae,e[115]=de):de=e[115],de},Hf=n=>{const e=fe.c(9),{scrollRootRef:s,visibleCount:i,onReachEnd:r}=n,a=u.useRef(null),o=u.useRef(r);let l,f;e[0]!==r?(l=()=>{o.current=r},f=[r],e[0]=r,e[1]=l,e[2]=f):(l=e[1],f=e[2]),u.useEffect(l,f);let c;e[3]!==s?(c=()=>{const m=a.current;if(!m)return;const h=new IntersectionObserver(b=>{b.some(Yf)&&o.current()},{root:s.current??null,rootMargin:"400px 0px"});return h.observe(m),()=>h.disconnect()},e[3]=s,e[4]=c):c=e[4];let p;e[5]!==s||e[6]!==i?(p=[s,i],e[5]=s,e[6]=i,e[7]=p):p=e[7],u.useEffect(c,p);let g;return e[8]===Symbol.for("react.memo_cache_sentinel")?(g=t.jsx("div",{ref:a,"aria-hidden":!0,className:"h-px w-full"}),e[8]=g):g=e[8],g},Jf=n=>{const e=fe.c(35),{entries:s,visibleCount:i,onRevealMore:r,scrollRootRef:a,handlers:o}=n,{t:l}=xe();let f,c,p,g,m;if(e[0]!==s||e[1]!==o||e[2]!==l||e[3]!==i){m=s.slice(0,i),p="border-t border-border/70";let x;e[9]===Symbol.for("react.memo_cache_sentinel")?(x=t.jsx("span",{className:"flex size-8 shrink-0 items-center justify-center overflow-hidden rounded-lg bg-[var(--surface-muted)] text-muted-foreground",children:t.jsx(H,{name:"folder-6",className:"size-4"})}),e[9]=x):x=e[9];let R;e[10]!==l?(R=l("mobile.sessions.section.projects"),e[10]=l,e[11]=R):R=e[11];let w;e[12]!==R?(w=t.jsx("span",{className:"block min-w-0 flex-1 truncate typography-ui-label font-semibold text-foreground",children:R}),e[12]=R,e[13]=w):w=e[13];let E;e[14]!==s.length?(E=t.jsx("span",{className:"shrink-0 typography-micro text-muted-foreground tabular-nums",children:s.length}),e[14]=s.length,e[15]=E):E=e[15],e[16]!==w||e[17]!==E?(g=t.jsxs("div",{className:"flex min-h-12 w-full items-center gap-2 px-3 py-1.5",children:[x,w,E]}),e[16]=w,e[17]=E,e[18]=g):g=e[18],f="pb-2";let P;e[19]!==o?(P=k=>k.kind==="run"?t.jsx(Kf,{entry:k},`run:${k.run.key}`):t.jsx(qf,{entry:k,active:o.currentSessionId===k.session.id,revealed:o.revealedSessionId===k.session.id,confirmingDelete:o.confirmingDeleteSessionId===k.session.id,renaming:o.renamingSessionId===k.session.id,handlers:o},k.session.id),e[19]=o,e[20]=P):P=e[20],c=m.map(P),e[0]=s,e[1]=o,e[2]=l,e[3]=i,e[4]=f,e[5]=c,e[6]=p,e[7]=g,e[8]=m}else f=e[4],c=e[5],p=e[6],g=e[7],m=e[8];let h;e[21]!==s.length||e[22]!==r||e[23]!==a||e[24]!==i||e[25]!==m.length?(h=m.length<s.length?t.jsx(Hf,{scrollRootRef:a,visibleCount:i,onReachEnd:r}):null,e[21]=s.length,e[22]=r,e[23]=a,e[24]=i,e[25]=m.length,e[26]=h):h=e[26];let b;e[27]!==f||e[28]!==c||e[29]!==h?(b=t.jsxs("div",{className:f,children:[c,h]}),e[27]=f,e[28]=c,e[29]=h,e[30]=b):b=e[30];let S;return e[31]!==p||e[32]!==g||e[33]!==b?(S=t.jsxs("section",{className:p,children:[g,b]}),e[31]=p,e[32]=g,e[33]=b,e[34]=S):S=e[34],S};function Yf(n){return n.isIntersecting}const Pn=40,Xf=(n,e)=>Math.min(e,Math.max(n,0)+Pn),Gi="mobile-surface-root",pr=16,Rn=200,Qf=()=>{if(typeof document>"u")return null;let n=document.getElementById(Gi);return n||(n=document.createElement("div"),n.id=Gi,document.body.appendChild(n)),n},zt=({open:n,onClose:e,title:s,subtitle:i,trailing:r,disableEscapeDismiss:a=!1,headerless:o=!1,noHeaderBorder:l=!1,ariaLabel:f,variant:c="fullscreen",dialogAlign:p="chat",children:g})=>{const{t:m}=xe(),h=u.useRef(null),[b,S]=u.useState(!1),[x,R]=u.useState(!1),w=u.useRef(null),E=u.useRef(null),P=u.useRef(e);if(u.useEffect(()=>{P.current=e},[e]),typeof document<"u"&&!h.current&&(h.current=Qf()),u.useEffect(()=>{if(!n){S(!1);return}const v=window.setTimeout(()=>S(!0),pr);return()=>window.clearTimeout(v)},[n]),u.useEffect(()=>{if(!n){R(!1);return}const v=window.setTimeout(()=>R(!0),pr+Rn+80);return()=>window.clearTimeout(v)},[n]),u.useEffect(()=>{if(!n)return;const v=document.body.style.overflow;E.current=document.activeElement instanceof HTMLElement?document.activeElement:null,document.body.style.overflow="hidden";const N=()=>{const O=w.current;if(!O)return;(O.querySelector('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])')??O).focus({preventScroll:!0})},C=window.setTimeout(N,pr),M=O=>{if(O.key==="Escape"&&!a){P.current();return}if(O.key!=="Tab")return;const B=w.current;if(!B)return;const I=Array.from(B.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])')).filter(_=>!_.hasAttribute("disabled")&&_.getAttribute("aria-hidden")!=="true");if(I.length===0){O.preventDefault(),B.focus({preventScroll:!0});return}const D=I[0],V=I[I.length-1],A=document.activeElement;O.shiftKey&&A===D?(O.preventDefault(),V.focus({preventScroll:!0})):!O.shiftKey&&A===V&&(O.preventDefault(),D.focus({preventScroll:!0}))};return document.addEventListener("keydown",M),()=>{window.clearTimeout(C),document.body.style.overflow=v,document.removeEventListener("keydown",M),E.current?.focus?.({preventScroll:!0}),E.current=null}},[a,n]),!n||!h.current)return null;const k=c==="dialog",j=t.jsxs("section",{ref:w,role:"dialog","aria-modal":"true","aria-label":f,tabIndex:-1,className:ee("flex flex-col bg-background text-foreground",k?"h-[min(88dvh,860px)] w-full max-w-[720px] overflow-hidden rounded-2xl border border-border/70 shadow-[0_24px_64px_rgb(0_0_0_/_0.32)]":"oc-keyboard-inset-surface oc-bottom-safe-surface fixed inset-0 z-50"),style:k?{opacity:b?1:0,transform:b?"none":"scale(0.97)",transition:`opacity ${Rn}ms ease-out, transform ${Rn}ms cubic-bezier(0.32, 0.72, 0, 1)`}:{paddingTop:"var(--oc-safe-area-top, 0px)",transform:b?"none":"translateX(100%)",transition:`transform ${Rn}ms cubic-bezier(0.32, 0.72, 0, 1)`},onTransitionEnd:v=>{b&&v.target===v.currentTarget&&v.propertyName==="transform"&&R(!0)},children:[o?null:t.jsxs("header",{className:ee("flex h-[var(--oc-header-height,56px)] shrink-0 items-center gap-2 px-3",!l&&"border-b border-border/70"),children:[t.jsx("button",{type:"button",className:"-ml-1 flex size-10 shrink-0 items-center justify-center rounded-full text-muted-foreground transition-colors hover:bg-interactive-hover hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring","aria-label":m("mobile.surface.closeAria"),onClick:e,style:{touchAction:"manipulation"},children:t.jsx(H,{name:"close",className:"size-5"})}),t.jsxs("div",{className:"min-w-0 flex-1 px-1",children:[s?typeof s=="string"?t.jsx("h2",{className:"truncate typography-ui-label text-foreground",children:s}):s:null,i?typeof i=="string"?t.jsx("p",{className:"truncate typography-micro text-muted-foreground",children:i}):i:null]}),r?t.jsx("div",{className:"flex shrink-0 items-center gap-1.5",children:r}):null]}),t.jsx("div",{className:"min-h-0 flex-1 overflow-hidden",children:x?t.jsx("div",{className:"h-full",style:{animation:"oc-surface-content-in 200ms ease-out"},children:g}):null}),t.jsx("style",{children:"@keyframes oc-surface-content-in { from { opacity: 0 } to { opacity: 1 } }"})]});return k?ws.createPortal(t.jsx("div",{className:"oc-keyboard-inset-surface oc-bottom-safe-surface fixed inset-0 z-50 flex items-center justify-center p-4 transition-opacity duration-200 ease-out",style:{background:"rgb(0 0 0 / 0.45)",opacity:b?1:0,paddingLeft:p==="chat"?"max(1rem, var(--oc-chat-inset-left, 0px))":"1rem",paddingRight:p==="chat"?"max(1rem, var(--oc-chat-inset-right, 0px))":"1rem",paddingTop:"max(1rem, var(--oc-safe-area-top, 0px))"},onClick:e,children:t.jsx("div",{className:"flex w-full max-w-[720px] justify-center",onClick:v=>v.stopPropagation(),children:j})}),h.current):ws.createPortal(j,h.current)},Zf=n=>{const e=fe.c(8),{projectPath:s}=n,{t:i}=xe(),{journey:r}=Pa();let a;if(e[0]!==r||e[1]!==s||e[2]!==i){const o=r?Ta(r,s):[];let l;e[4]!==i?(l=i("mobile.projectEdit.spacesTitle"),e[4]=i,e[5]=l):l=e[5];let f;e[6]!==l?(f=t.jsx("label",{className:"typography-ui-label font-medium text-foreground",children:l}),e[6]=l,e[7]=f):f=e[7],a=t.jsxs("div",{className:"flex flex-col gap-2",children:[f,r!==null&&o.length===0?t.jsx("p",{className:"typography-meta text-muted-foreground",children:i("spaces.page.empty")}):null,o.map(nm)]}),e[0]=r,e[1]=s,e[2]=i,e[3]=a}else a=e[3];return a},em=n=>on(n)??"",tm=n=>{const e=fe.c(38),{worktree:s,onDelete:i}=n,{t:r}=xe();let a;e[0]!==s.path?(a={id:s.path},e[0]=s.path,e[1]=a):a=e[1];const{attributes:o,listeners:l,setNodeRef:f,transform:c,transition:p,isDragging:g}=qr(a);let m;e[2]!==c?(m=Hr.Transform.toString(c),e[2]=c,e[3]=m):m=e[3];const h=g?10:1;let b;e[4]!==m||e[5]!==h||e[6]!==p?(b={transform:m,transition:p,zIndex:h},e[4]=m,e[5]=h,e[6]=p,e[7]=b):b=e[7];const S=b,x=s.branch||s.label||s.path,R=Ao(s.path),w=g&&"shadow-lg shadow-black/20",E=R&&"opacity-60";let P;e[8]!==w||e[9]!==E?(P=ee("flex items-center gap-1 rounded-2xl border border-border/70 bg-[var(--surface-elevated)] px-1.5 py-1.5 transition-colors",w,E),e[8]=w,e[9]=E,e[10]=P):P=e[10];const k=R||void 0;let j;e[11]!==x||e[12]!==r?(j=r("mobile.projectEdit.dragWorktreeAria",{label:x}),e[11]=x,e[12]=r,e[13]=j):j=e[13];let v;e[14]===Symbol.for("react.memo_cache_sentinel")?(v=t.jsx(zr,{className:"size-4"}),e[14]=v):v=e[14];let N;e[15]!==o||e[16]!==l||e[17]!==j?(N=t.jsx("button",{type:"button",className:"flex size-9 shrink-0 cursor-grab touch-none items-center justify-center rounded-xl text-muted-foreground/70 transition-colors hover:text-foreground active:cursor-grabbing","aria-label":j,...o,...l,children:v}),e[15]=o,e[16]=l,e[17]=j,e[18]=N):N=e[18];let C;e[19]!==R||e[20]!==r?(C=R?t.jsx("span",{className:"inline-flex shrink-0 text-muted-foreground",role:"status","aria-label":r("sessions.sidebar.group.worktreeRemoving"),children:t.jsx(H,{name:"loader-4",className:"size-4 animate-spin"})}):t.jsx(H,{name:"node-tree",className:"size-4 shrink-0 text-muted-foreground"}),e[19]=R,e[20]=r,e[21]=C):C=e[21];let M;e[22]!==x?(M=t.jsx("span",{className:"block min-w-0 flex-1 truncate typography-ui-label text-foreground",children:x}),e[22]=x,e[23]=M):M=e[23];let O;e[24]!==x||e[25]!==i||e[26]!==R||e[27]!==r?(O=R?null:t.jsx("button",{type:"button",className:"flex size-9 shrink-0 items-center justify-center rounded-xl text-muted-foreground transition-colors hover:bg-destructive/10 hover:text-destructive focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-destructive","aria-label":r("mobile.projectEdit.deleteWorktreeAria",{label:x}),onClick:i,style:{touchAction:"manipulation"},children:t.jsx(Dn,{className:"size-4"})}),e[24]=x,e[25]=i,e[26]=R,e[27]=r,e[28]=O):O=e[28];let B;return e[29]!==f||e[30]!==S||e[31]!==N||e[32]!==C||e[33]!==M||e[34]!==O||e[35]!==P||e[36]!==k?(B=t.jsxs("div",{ref:f,style:S,className:P,"aria-busy":k,children:[N,C,M,O]}),e[29]=f,e[30]=S,e[31]=N,e[32]=C,e[33]=M,e[34]=O,e[35]=P,e[36]=k,e[37]=B):B=e[37],B},sm=({open:n,project:e,onClose:s,onWorktreesChanged:i})=>{const{t:r}=xe(),{currentTheme:a}=jo(),o=Be(_=>_.isolatedSpacesEnabled),l=it(_=>_.updateProjectMeta),f=it(_=>_.discoverProjectIcon),c=it(_=>_.removeProjectIcon),p=Cr(_=>_.setWorktreeOrder),g=it(_=>e?_.projects.find(F=>F.id===e.id)?.iconImage??null:null),[m,h]=u.useState(""),[b,S]=u.useState(null),[x,R]=u.useState(null),[w,E]=u.useState(!1),[P,k]=u.useState([]),[j,v]=u.useState(null),N=e?.id??null;u.useEffect(()=>{!n||!e||(h(e.label),S(e.icon??null),R(e.color??null),k(e.worktrees))},[n,N]),u.useEffect(()=>{!n||!e||k(_=>{const F=e.worktrees.map(Z=>Z.path),L=_.map(Z=>Z.path);return F.length===L.length&&F.every(Z=>L.includes(Z))?_:e.worktrees})},[e?.worktrees]);const C=Br(ks($r,{activationConstraint:{distance:8}}),ks(Fr,{coordinateGetter:Ur})),M=()=>{if(!e)return;const _=m.trim();l(e.id,{label:_||e.label,icon:b,color:x}),s()},O=()=>{!e||w||(E(!0),f(e.id).then(_=>{if(!_.ok){le.error(_.error||r("projectEditDialog.toast.failedToDiscoverIcon"));return}if(_.skipped){le.success(r("projectEditDialog.toast.customIconAlreadySet"));return}le.success(r("projectEditDialog.toast.iconDiscovered"))}).finally(()=>E(!1)))},B=()=>{e&&c(e.id).then(_=>{if(!_.ok){le.error(_.error||r("projectEditDialog.toast.failedToRemoveIcon"));return}le.success(r("projectEditDialog.toast.iconRemoved"))})},I=_=>{const{active:F,over:L}=_;if(!L||F.id===L.id||!e)return;const K=P.findIndex(Q=>Q.path===F.id),Z=P.findIndex(Q=>Q.path===L.id);if(K<0||Z<0)return;const X=[...P],[te]=X.splice(K,1);X.splice(Z,0,te),k(X),p(e.id,X.map(Q=>em(Q.path)))},D=x?So[x]??null:null,V=b?ko[b]:null,A=!!g;return t.jsxs(t.Fragment,{children:[t.jsx(zt,{open:n,onClose:s,title:r("projectEditDialog.title"),ariaLabel:r("projectEditDialog.title"),noHeaderBorder:!0,trailing:t.jsxs(Ne,{type:"button",variant:"default",size:"sm","aria-label":r("projectEditDialog.actions.save"),onClick:M,disabled:!m.trim(),style:{touchAction:"manipulation"},children:[t.jsx(Fo,{className:"size-4"}),r("projectEditDialog.actions.save")]}),children:e?t.jsxs("div",{className:"h-full space-y-6 overflow-y-auto px-4 pb-8 pt-2",children:[t.jsx("div",{className:"flex justify-center pt-2",children:t.jsx("span",{className:"flex size-16 items-center justify-center overflow-hidden rounded-2xl bg-[var(--surface-muted)] text-muted-foreground",style:e.iconBackground?{backgroundColor:e.iconBackground}:void 0,children:A?t.jsx(No,{project:{id:e.id,iconImage:g},options:{themeVariant:a.metadata.variant,iconColor:a.colors.surface.foreground},className:"size-full object-contain",fallback:t.jsx(wr,{className:"size-7"})}):V?t.jsx(H,{name:V,className:"size-7",style:D?{color:D}:void 0}):t.jsx(wr,{className:"size-7",style:D?{color:D}:void 0})})}),t.jsxs("div",{className:"flex flex-col gap-1.5",children:[t.jsx("label",{className:"typography-ui-label font-medium text-foreground",children:r("projectEditDialog.field.name")}),t.jsx(Io,{value:m,onChange:_=>h(_.target.value),placeholder:r("projectEditDialog.field.namePlaceholder"),className:"h-11"}),t.jsx("p",{className:"truncate typography-meta text-muted-foreground",title:e.path,children:e.path})]}),t.jsxs("div",{className:"flex flex-col gap-2",children:[t.jsx("label",{className:"typography-ui-label font-medium text-foreground",children:r("projectEditDialog.field.color")}),t.jsxs("div",{className:"flex flex-wrap gap-2.5",children:[t.jsx("button",{type:"button",onClick:()=>R(null),"aria-label":r("projectEditDialog.option.none"),className:ee("flex size-9 items-center justify-center rounded-xl border-2 transition-all",x===null?"border-foreground":"border-border/70 hover:border-border/70"),style:{touchAction:"manipulation"},children:t.jsx("span",{className:"h-0.5 w-4 rotate-45 rounded-full bg-muted-foreground/40"})}),al.map(_=>t.jsx("button",{type:"button",onClick:()=>R(_.key),"aria-label":_.label,title:_.label,className:ee("size-9 rounded-xl border-2 transition-all",x===_.key?"border-foreground":"border-transparent hover:border-border/70"),style:{backgroundColor:_.cssVar,touchAction:"manipulation"}},_.key))]})]}),t.jsxs("div",{className:"flex flex-col gap-2",children:[t.jsx("label",{className:"typography-ui-label font-medium text-foreground",children:r("projectEditDialog.field.icon")}),t.jsxs("div",{className:"flex flex-wrap gap-2.5",children:[t.jsx("button",{type:"button",onClick:()=>S(null),"aria-label":r("projectEditDialog.option.none"),className:ee("flex size-9 items-center justify-center rounded-xl border-2 transition-all",b===null?"border-foreground bg-[var(--surface-elevated)]":"border-border/70 hover:border-border/70"),style:{touchAction:"manipulation"},children:t.jsx("span",{className:"h-0.5 w-4 rotate-45 rounded-full bg-muted-foreground/40"})}),ll.map(_=>t.jsx("button",{type:"button",onClick:()=>S(_.key),"aria-label":_.label,title:_.label,className:ee("flex size-9 items-center justify-center rounded-xl border-2 transition-all",b===_.key?"border-foreground bg-[var(--surface-elevated)]":"border-border/70 hover:border-border/70"),style:{touchAction:"manipulation"},children:t.jsx(H,{name:_.Icon,className:"size-4",style:D?{color:D}:void 0})},_.key))]}),t.jsxs("div",{className:"flex flex-wrap items-center gap-2 pt-1",children:[t.jsx(Ne,{size:"sm",variant:"outline",onClick:O,disabled:w,children:r(w?"projectEditDialog.actions.discovering":"projectEditDialog.actions.discoverFavicon")}),A?t.jsx(Ne,{size:"sm",variant:"outline",onClick:B,children:r("projectEditDialog.actions.removeProjectIcon")}):null]})]}),e.isGitRepo?t.jsxs("div",{className:"flex flex-col gap-2",children:[t.jsx("label",{className:"typography-ui-label font-medium text-foreground",children:r("mobile.projectEdit.worktreesTitle")}),P.length===0?t.jsx("p",{className:"typography-meta text-muted-foreground",children:r("mobile.projectEdit.worktreesEmpty")}):t.jsxs(t.Fragment,{children:[t.jsx("p",{className:"typography-meta text-muted-foreground",children:r("mobile.projectEdit.reorderHint")}),t.jsx(Wr,{sensors:C,collisionDetection:Vr,onDragEnd:I,children:t.jsx(Gr,{items:P.map(_=>_.path),strategy:Kr,children:t.jsx("div",{className:"flex flex-col gap-1.5",children:P.map(_=>t.jsx(tm,{worktree:_,onDelete:()=>v(_)},_.path))})})})]})]}):null,e.isGitRepo&&o?t.jsx(Zf,{projectPath:e.path}):null]}):null}),e?t.jsx(ca,{open:!!j,project:{id:e.id,path:e.path},worktree:j,onClose:()=>v(null),onDeleted:()=>{k(_=>_.filter(F=>F.path!==j?.path)),i?.()}}):null]})};function nm(n){return t.jsx($c,{entry:n,actions:"sheet"},n.id)}const rm=32,im=80,om=64,am=.7,lm=(n,e,s)=>{const i=e.ownerDocument.defaultView;if(!i)return!1;for(let r=n instanceof i.Element?n:null;r&&r!==e;r=r.parentElement){const a=r.scrollWidth-r.clientWidth;if(a<=1)continue;const o=i.getComputedStyle(r);if(o.overflowX!=="auto"&&o.overflowX!=="scroll")continue;const l=o.direction==="rtl"?-a:0,f=l+a;if(s?r.scrollLeft>l+1:r.scrollLeft<f-1)return!0}return!1},ni=(n,e)=>{const s=u.useRef(e);s.current=e;const i=e.enabled??!0;u.useEffect(()=>{if(!i)return;const r=n.current;if(!r)return;const o=window.Capacitor?.getPlatform?.()==="android"?im:rm,l=r.ownerDocument;let f=!1,c=!1,p=0,g=0;const m=()=>l.getSelection()?.isCollapsed===!1,h=()=>{f=!1},b=()=>{f&&m()&&h()},S=R=>{if(R.touches.length!==1||m()){f=!1;return}const w=R.touches[0],E=r.clientWidth,P=w.clientX<=o,k=w.clientX>=E-o;c=P,f=(P||k)&&!lm(R.target,r,c),p=w.clientX,g=w.clientY},x=R=>{if(!f||(f=!1,m()))return;const w=R.changedTouches[0];if(!w)return;const E=w.clientX-p,P=w.clientY-g;Math.abs(E)<om||Math.abs(P)>Math.abs(E)*am||c&&E<=0||!c&&E>=0||(c?s.current.onLeftEdgeSwipe?.():s.current.onRightEdgeSwipe?.())};return r.addEventListener("touchstart",S,{passive:!0}),r.addEventListener("touchend",x,{passive:!0}),r.addEventListener("touchcancel",h,{passive:!0}),r.addEventListener("selectstart",h),l.addEventListener("selectionchange",b),()=>{r.removeEventListener("touchstart",S),r.removeEventListener("touchend",x),r.removeEventListener("touchcancel",h),r.removeEventListener("selectstart",h),l.removeEventListener("selectionchange",b)}},[i,n])},cm=new Set,um=[["manual","sessions.sidebar.header.projectSort.manual"],["a-z","sessions.sidebar.header.projectSort.aToZ"],["z-a","sessions.sidebar.header.projectSort.zToA"],["date-added","sessions.sidebar.header.projectSort.dateAdded"],["recent","sessions.sidebar.header.projectSort.recent"]],dm=[["projects","mobile.sessions.viewMode.projects"],["timeline","mobile.sessions.viewMode.timeline"]],fm=7,mm=3,ds=40,Ks="openchamber:work",qs="openchamber:recent",pm=12,hm=16,gm=(n,e)=>{const s=Le(n),i=Le(e),r=i.endsWith("/")?i:`${i}/`;return!!(s&&i&&(s===i||s.startsWith(r)))},hr=(n,e)=>n.worktrees.find(s=>Le(s.path)===e)??null,gr=(n,e,s)=>Po([n.title,n.id,kt(n),e],s),bm=n=>{const e=fe.c(3),{path:s,children:i}=n,r=Ao(s);let a;return e[0]!==i||e[1]!==r?(a=i(r),e[0]=i,e[1]=r,e[2]=a):a=e[2],a},xm=n=>{const e=fe.c(2),{ariaLabel:s}=n;let i;return e[0]!==s?(i=t.jsx("span",{className:"inline-block size-1.5 shrink-0 rounded-full bg-primary","aria-label":s}),e[0]=s,e[1]=i):i=e[1],i},Ki=n=>{const e=fe.c(12),{onClick:s,className:i}=n,{t:r}=xe();let a;e[0]!==r?(a=r("sessions.sidebar.project.actions.newWorktree"),e[0]=r,e[1]=a):a=e[1];const o=a;let l;e[2]!==i?(l=ee("flex size-9 shrink-0 items-center justify-center rounded-full text-muted-foreground transition-colors hover:bg-[var(--interactive-hover)] hover:text-[var(--surface-foreground)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--interactive-focus-ring)]",i),e[2]=i,e[3]=l):l=e[3];let f;e[4]!==s?(f=m=>{m.stopPropagation(),s()},e[4]=s,e[5]=f):f=e[5];let c,p;e[6]===Symbol.for("react.memo_cache_sentinel")?(c={touchAction:"manipulation"},p=t.jsx(H,{name:"node-tree",className:"size-4"}),e[6]=c,e[7]=p):(c=e[6],p=e[7]);let g;return e[8]!==o||e[9]!==l||e[10]!==f?(g=t.jsx("button",{type:"button",className:l,"aria-label":o,title:o,onClick:f,style:c,children:p}),e[8]=o,e[9]=l,e[10]=f,e[11]=g):g=e[11],g},br=n=>{const e=fe.c(10),{label:s,onClick:i,className:r}=n;let a;e[0]!==r?(a=ee("flex size-9 shrink-0 items-center justify-center rounded-full text-muted-foreground transition-colors hover:bg-[var(--interactive-hover)] hover:text-[var(--surface-foreground)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--interactive-focus-ring)]",r),e[0]=r,e[1]=a):a=e[1];let o;e[2]!==i?(o=p=>{p.stopPropagation(),i()},e[2]=i,e[3]=o):o=e[3];let l,f;e[4]===Symbol.for("react.memo_cache_sentinel")?(l={touchAction:"manipulation"},f=t.jsx(H,{name:"add",className:"size-4"}),e[4]=l,e[5]=f):(l=e[4],f=e[5]);let c;return e[6]!==s||e[7]!==a||e[8]!==o?(c=t.jsx("button",{type:"button",className:a,"aria-label":s,title:s,onClick:o,style:l,children:f}),e[6]=s,e[7]=a,e[8]=o,e[9]=c):c=e[9],c},qi=n=>{const e=fe.c(83),{session:s,active:i,indent:r,contextLabel:a,statusOnRight:o,hasChildren:l,expanded:f,onToggleChildren:c,onSelect:p,revealed:g,onRevealedChange:m,confirmingDelete:h,onArchive:b,onRequestDelete:S,onConfirmDelete:x,renaming:R,onRequestRename:w,onSubmitRename:E,onCancelRename:P,work:k,pin:j,descendantIdsOf:v}=n,N=o===void 0?!1:o,C=l===void 0?!1:l,M=f===void 0?!1:f,O=g===void 0?!1:g,B=h===void 0?!1:h,I=R===void 0?!1:R,{t:D}=xe();let V;e[0]!==s?(V=Un(ma(s)),e[0]=s,e[1]=V):V=e[1];const A=V;let _;e[2]!==s.title||e[3]!==D?(_=s.title?.trim()||D("mobile.sessions.untitled"),e[2]=s.title,e[3]=D,e[4]=_):_=e[4];const F=_,L=!!(m&&b),K=Lo(s.id,s.directory,L&&(O||I)),Z=Pr(s.id),X=Tr(s.id),te=X!==null,Q=!te&&Z>0&&!i,pe=Dr(s.id,te),ue=(te||Q)&&pe;let U;e[5]!==te||e[6]!==s||e[7]!==k?.inWork?(U=!!k?.inWork&&!te&&gl(s),e[5]=te,e[6]=s,e[7]=k?.inWork,e[8]=U):U=e[8];const G=U;let T;e[9]!==v||e[10]!==M||e[11]!==C||e[12]!==s.id?(T=v&&!(C&&M)?[s.id,...v(s.id)]:[s.id],e[9]=v,e[10]=M,e[11]=C,e[12]=s.id,e[13]=T):T=e[13];const re=ba(T);let ie;e[14]!==K||e[15]!==M||e[16]!==C||e[17]!==r||e[18]!==te||e[19]!==c||e[20]!==Q||e[21]!==N||e[22]!==D||e[23]!==X?(ie=!N&&(K.pending||te||Q||C&&c)?t.jsx("button",{type:"button",className:"absolute z-10 flex w-6 items-center justify-center rounded-md text-muted-foreground/70 transition-colors hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",style:{left:Math.max(r-32,2),top:0,bottom:0,touchAction:"manipulation"},"aria-label":K.pending?D("sessions.aiRename.generating"):D(M?"sessions.sidebar.session.subsessions.collapse":"sessions.sidebar.session.subsessions.expand"),disabled:!C||!c,onClick:me=>{me.stopPropagation(),c?.()},children:K.pending?t.jsx(H,{name:"loader-4",className:"size-3 animate-spin text-primary","aria-label":D("sessions.aiRename.generating")}):te||Q?t.jsx(Tn,{state:X??"unread"}):t.jsx(Lr,{className:ee("size-[18px] transition-transform duration-150",M?"rotate-0":"-rotate-90")})}):null,e[14]=K,e[15]=M,e[16]=C,e[17]=r,e[18]=te,e[19]=c,e[20]=Q,e[21]=N,e[22]=D,e[23]=X,e[24]=ie):ie=e[24];let q;e[25]!==i||e[26]!==K||e[27]!==a||e[28]!==r||e[29]!==te||e[30]!==P||e[31]!==m||e[32]!==p||e[33]!==E||e[34]!==re||e[35]!==j?.pinned||e[36]!==I||e[37]!==O||e[38]!==s||e[39]!==ue||e[40]!==G||e[41]!==Q||e[42]!==N||e[43]!==D||e[44]!==A||e[45]!==F||e[46]!==X?(q=I&&E&&P?t.jsx(ua,{initialTitle:F,indent:r,aiRename:K,onSubmit:E,onCancel:P}):t.jsx("button",{type:"button",className:ee("flex min-w-0 flex-1 items-center gap-2.5 pr-3.5 text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset",a?"min-h-10 py-1":"h-9"),style:{paddingLeft:r,touchAction:"manipulation"},onClick:()=>{if(O){m?.(!1);return}p()},children:t.jsxs("span",{className:"flex min-w-0 flex-1 flex-col",children:[t.jsxs("span",{className:"flex items-center gap-2.5",children:[t.jsx("span",{dir:"auto",className:ee("block min-w-0 flex-1 truncate text-left typography-ui-label",i?"text-primary":"text-foreground"),children:F}),j?.pinned?t.jsx(H,{name:"pushpin",className:"size-3 shrink-0 text-muted-foreground","aria-label":D("sessions.sidebar.session.status.pinned")}):null,N&&(K.pending||te||Q)?K.pending?t.jsx(H,{name:"loader-4",className:"size-3 shrink-0 animate-spin text-primary","aria-label":D("sessions.aiRename.generating")}):t.jsx(Tn,{state:X??"unread"}):null,G?t.jsx(H,{name:"check",className:"size-3.5 shrink-0 text-muted-foreground","aria-label":D("sessions.sidebar.session.work.doneSuggested")}):null,t.jsx(ha,{session:s}),t.jsx(ga,{...re}),ue?t.jsx(_r,{sessionId:s.id,running:te,className:"typography-micro"}):A?t.jsx("span",{className:"shrink-0 typography-micro text-muted-foreground tabular-nums",children:A}):null]}),a?t.jsx("span",{className:"block truncate typography-micro text-muted-foreground",children:a}):null]})}),e[25]=i,e[26]=K,e[27]=a,e[28]=r,e[29]=te,e[30]=P,e[31]=m,e[32]=p,e[33]=E,e[34]=re,e[35]=j?.pinned,e[36]=I,e[37]=O,e[38]=s,e[39]=ue,e[40]=G,e[41]=Q,e[42]=N,e[43]=D,e[44]=A,e[45]=F,e[46]=X,e[47]=q):q=e[47];let ae;e[48]!==ie||e[49]!==q?(ae=t.jsxs(t.Fragment,{children:[ie,q]}),e[48]=ie,e[49]=q,e[50]=ae):ae=e[50];const de=ae;if(!L){const me=i||void 0,Ce=i&&"bg-[color-mix(in_srgb,var(--primary)_10%,transparent)]";let Pe;e[51]!==Ce?(Pe=ee("relative flex items-center gap-1 transition-colors",Ce),e[51]=Ce,e[52]=Pe):Pe=e[52];let Ie;e[53]!==de||e[54]!==Pe?(Ie=t.jsx("div",{className:Pe,children:de}),e[53]=de,e[54]=Pe,e[55]=Ie):Ie=e[55];let _e;return e[56]!==me||e[57]!==Ie?(_e=t.jsx("div",{"data-active-session":me,className:"relative overflow-hidden",children:Ie}),e[56]=me,e[57]=Ie,e[58]=_e):_e=e[58],_e}const ve=da+(k?nn:0)+(j?nn:0);let je;e[59]!==m?(je=me=>m?.(me),e[59]=m,e[60]=je):je=e[60];const Se=i&&"bg-[color-mix(in_srgb,var(--primary)_10%,var(--background))]";let he;e[61]!==Se?(he=ee("relative flex w-full items-center gap-1 bg-background transition-colors",Se),e[61]=Se,e[62]=he):he=e[62];let Y;e[63]!==B||e[64]!==b||e[65]!==x||e[66]!==S||e[67]!==w||e[68]!==m||e[69]!==j||e[70]!==O||e[71]!==s.id||e[72]!==F||e[73]!==k?(Y=t.jsx(fa,{sessionId:s.id,title:F,revealed:O,confirmingDelete:B,onArchive:b,onRequestDelete:S,onConfirmDelete:x,onRequestRename:w,onRevealedChange:m,work:k,pin:j}),e[63]=B,e[64]=b,e[65]=x,e[66]=S,e[67]=w,e[68]=m,e[69]=j,e[70]=O,e[71]=s.id,e[72]=F,e[73]=k,e[74]=Y):Y=e[74];let be;return e[75]!==i||e[76]!==O||e[77]!==de||e[78]!==ve||e[79]!==je||e[80]!==he||e[81]!==Y?(be=t.jsx(Bn,{actionsWidth:ve,revealed:O,onRevealedChange:je,dataActiveSession:i,contentClassName:he,actions:Y,children:de}),e[75]=i,e[76]=O,e[77]=de,e[78]=ve,e[79]=je,e[80]=he,e[81]=Y,e[82]=be):be=e[82],be},Hi=[],ym=n=>{const e=fe.c(40),{run:s,laneNodes:i,indent:r}=n,{t:a}=xe();let o;e[0]!==s.key?(o=O=>O.runOverviewKey===s.key,e[0]=s.key,e[1]=o):o=e[1];const l=Be(o);let f;e[2]!==i?(f={nodes:i,includeUnreadSubtasks:!1},e[2]=i,e[3]=f):f=e[3];const c=zo(f);let p;e[4]!==s.lastActivity?(p=Un(s.lastActivity),e[4]=s.lastActivity,e[5]=p):p=e[5];const g=p,m=l||void 0,h=l&&"bg-[color-mix(in_srgb,var(--primary)_10%,transparent)]";let b;e[6]!==h?(b=ee("relative flex items-center overflow-hidden transition-colors",h),e[6]=h,e[7]=b):b=e[7];let S;e[8]!==c||e[9]!==r?(S=c?t.jsx("span",{className:"absolute flex w-6 items-center justify-center",style:{left:Math.max(r-32,2),top:0,bottom:0},children:t.jsx(Bo,{state:c})}):null,e[8]=c,e[9]=r,e[10]=S):S=e[10];let x;e[11]!==r?(x={paddingLeft:r,touchAction:"manipulation"},e[11]=r,e[12]=x):x=e[12];let R;e[13]!==s.key?(R=()=>Be.getState().setRunOverviewKey(s.key),e[13]=s.key,e[14]=R):R=e[14];let w;e[15]!==s.title||e[16]!==a?(w=a("sessions.sidebar.run.openOverviewAria",{title:s.title}),e[15]=s.title,e[16]=a,e[17]=w):w=e[17];let E;e[18]===Symbol.for("react.memo_cache_sentinel")?(E=t.jsx(Eo,{className:"size-3.5 shrink-0 text-muted-foreground","aria-hidden":"true"}),e[18]=E):E=e[18];const P=l?"text-primary":"text-foreground";let k;e[19]!==P?(k=ee("block min-w-0 flex-1 truncate text-left typography-ui-label",P),e[19]=P,e[20]=k):k=e[20];let j;e[21]!==s.title||e[22]!==k?(j=t.jsxs("span",{className:"flex min-w-0 flex-1 items-center gap-1.5",children:[E,t.jsx("span",{dir:"auto",className:k,children:s.title})]}),e[21]=s.title,e[22]=k,e[23]=j):j=e[23];let v;e[24]!==s.providerIDs?(v=t.jsx(pa,{providerIDs:s.providerIDs}),e[24]=s.providerIDs,e[25]=v):v=e[25];let N;e[26]!==g?(N=g?t.jsx("span",{className:"shrink-0 typography-micro text-muted-foreground tabular-nums",children:g}):null,e[26]=g,e[27]=N):N=e[27];let C;e[28]!==w||e[29]!==j||e[30]!==v||e[31]!==N||e[32]!==x||e[33]!==R?(C=t.jsxs("button",{type:"button",className:"flex h-9 w-full min-w-0 items-center gap-2.5 pr-3.5 text-left focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset",style:x,onClick:R,"aria-label":w,children:[j,v,N]}),e[28]=w,e[29]=j,e[30]=v,e[31]=N,e[32]=x,e[33]=R,e[34]=C):C=e[34];let M;return e[35]!==C||e[36]!==m||e[37]!==b||e[38]!==S?(M=t.jsxs("div",{"data-active-session":m,className:b,children:[S,C]}),e[35]=C,e[36]=m,e[37]=b,e[38]=S,e[39]=M):M=e[39],M},vm=n=>{const e=fe.c(11),{indent:s,onClick:i}=n,{t:r}=xe();let a;e[0]!==s?(a={paddingLeft:s,touchAction:"manipulation"},e[0]=s,e[1]=a):a=e[1];let o;e[2]===Symbol.for("react.memo_cache_sentinel")?(o=t.jsx(Lr,{className:"size-4"}),e[2]=o):o=e[2];let l;e[3]!==r?(l=r("sessions.sidebar.group.showMore"),e[3]=r,e[4]=l):l=e[4];let f;e[5]!==l?(f=t.jsx("span",{className:"typography-micro",children:l}),e[5]=l,e[6]=f):f=e[6];let c;return e[7]!==i||e[8]!==a||e[9]!==f?(c=t.jsxs("button",{type:"button",className:"flex min-h-9 w-full items-center gap-2 py-1 pr-3 text-left text-muted-foreground transition-colors hover:bg-interactive-hover hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset",style:a,onClick:i,children:[o,f]}),e[7]=i,e[8]=a,e[9]=f,e[10]=c):c=e[10],c},wm=n=>{const e=fe.c(11),{indent:s,onClick:i}=n,{t:r}=xe();let a;e[0]!==s?(a={paddingLeft:s,touchAction:"manipulation"},e[0]=s,e[1]=a):a=e[1];let o;e[2]===Symbol.for("react.memo_cache_sentinel")?(o=t.jsx(Vu,{className:"size-4"}),e[2]=o):o=e[2];let l;e[3]!==r?(l=r("sessions.sidebar.group.showFewer"),e[3]=r,e[4]=l):l=e[4];let f;e[5]!==l?(f=t.jsx("span",{className:"typography-micro",children:l}),e[5]=l,e[6]=f):f=e[6];let c;return e[7]!==i||e[8]!==a||e[9]!==f?(c=t.jsxs("button",{type:"button",className:"flex min-h-9 w-full items-center gap-2 py-1 pr-3 text-left text-muted-foreground transition-colors hover:bg-interactive-hover hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset",style:a,onClick:i,children:[o,f]}),e[7]=i,e[8]=a,e[9]=f,e[10]=c):c=e[10],c},jm=n=>{const e=fe.c(29),{worktree:s}=n,{t:i}=xe();let r;e[0]!==s.path?(r=Le(s.path),e[0]=s.path,e[1]=r):r=e[1];const a=r;let o;e[2]!==a?(o={id:a},e[2]=a,e[3]=o):o=e[3];const{attributes:l,listeners:f,setNodeRef:c,transform:p,transition:g,isDragging:m}=qr(o),h=s.branch||s.label||s.path;let b;e[4]!==p?(b=Hr.Transform.toString(p),e[4]=p,e[5]=b):b=e[5];const S=m?10:1;let x;e[6]!==b||e[7]!==S||e[8]!==g?(x={transform:b,transition:g,zIndex:S},e[6]=b,e[7]=S,e[8]=g,e[9]=x):x=e[9];const R=m&&"shadow-lg shadow-black/20";let w;e[10]!==R?(w=ee("flex items-center gap-1 rounded-xl bg-background px-1 py-1",R),e[10]=R,e[11]=w):w=e[11];let E;e[12]!==h||e[13]!==i?(E=i("mobile.sessions.dragHandleAria",{label:h}),e[12]=h,e[13]=i,e[14]=E):E=e[14];let P;e[15]===Symbol.for("react.memo_cache_sentinel")?(P=t.jsx(zr,{className:"size-4"}),e[15]=P):P=e[15];let k;e[16]!==l||e[17]!==f||e[18]!==E?(k=t.jsx("button",{type:"button",className:"flex size-8 shrink-0 cursor-grab touch-none items-center justify-center rounded-lg text-muted-foreground/70 transition-colors hover:text-foreground active:cursor-grabbing","aria-label":E,...l,...f,children:P}),e[16]=l,e[17]=f,e[18]=E,e[19]=k):k=e[19];let j;e[20]===Symbol.for("react.memo_cache_sentinel")?(j=t.jsx(H,{name:"git-branch",className:"size-4 shrink-0 text-muted-foreground"}),e[20]=j):j=e[20];let v;e[21]!==h?(v=t.jsx("span",{className:"block min-w-0 flex-1 truncate typography-ui-label font-bold text-muted-foreground",children:h}),e[21]=h,e[22]=v):v=e[22];let N;return e[23]!==c||e[24]!==k||e[25]!==v||e[26]!==x||e[27]!==w?(N=t.jsxs("div",{ref:c,style:x,className:w,children:[k,j,v]}),e[23]=c,e[24]=k,e[25]=v,e[26]=x,e[27]=w,e[28]=N):N=e[28],N},km=n=>{const e=fe.c(61),{project:s,totalSessions:i,expanded:r,onToggleExpanded:a,onReorderWorktrees:o}=n,{t:l}=xe();let f;e[0]!==s.id?(f={id:s.id},e[0]=s.id,e[1]=f):f=e[1];const{attributes:c,listeners:p,setNodeRef:g,transform:m,transition:h,isDragging:b}=qr(f);let S;e[2]===Symbol.for("react.memo_cache_sentinel")?(S={activationConstraint:{distance:8}},e[2]=S):S=e[2];let x;e[3]===Symbol.for("react.memo_cache_sentinel")?(x={coordinateGetter:Ur},e[3]=x):x=e[3];const R=Br(ks($r,S),ks(Fr,x)),w=s.worktrees.length>0;let E;e[4]!==o||e[5]!==s.worktrees?(E=Q=>{const{active:pe,over:ue}=Q;if(!ue||pe.id===ue.id)return;const U=s.worktrees.map(Rm),G=U.indexOf(String(pe.id)),T=U.indexOf(String(ue.id));if(G<0||T<0)return;const ne=[...U],[re]=ne.splice(G,1);ne.splice(T,0,re),o(ne)},e[4]=o,e[5]=s.worktrees,e[6]=E):E=e[6];const P=E;let k;e[7]!==m?(k=Hr.Transform.toString(m),e[7]=m,e[8]=k):k=e[8];const j=b?10:1;let v;e[9]!==k||e[10]!==j||e[11]!==h?(v={transform:k,transition:h,zIndex:j},e[9]=k,e[10]=j,e[11]=h,e[12]=v):v=e[12];const N=b&&"shadow-lg shadow-black/20";let C;e[13]!==N?(C=ee("rounded-2xl border border-border/70 bg-[var(--surface-elevated)] px-1.5 py-1.5 transition-colors",N),e[13]=N,e[14]=C):C=e[14];let M;e[15]!==s.label||e[16]!==l?(M=l("mobile.sessions.dragHandleAria",{label:s.label}),e[15]=s.label,e[16]=l,e[17]=M):M=e[17];let O;e[18]===Symbol.for("react.memo_cache_sentinel")?(O=t.jsx(zr,{className:"size-4"}),e[18]=O):O=e[18];let B;e[19]!==c||e[20]!==p||e[21]!==M?(B=t.jsx("button",{type:"button",className:"flex size-9 shrink-0 cursor-grab touch-none items-center justify-center rounded-xl text-muted-foreground/70 transition-colors hover:text-foreground active:cursor-grabbing","aria-label":M,...c,...p,children:O}),e[19]=c,e[20]=p,e[21]=M,e[22]=B):B=e[22];let I;e[23]!==r||e[24]!==s.label||e[25]!==l?(I=r?l("sessions.sidebar.group.collapseAria",{label:s.label}):l("sessions.sidebar.group.expandAria",{label:s.label}),e[23]=r,e[24]=s.label,e[25]=l,e[26]=I):I=e[26];const D=!w;let V;e[27]===Symbol.for("react.memo_cache_sentinel")?(V={touchAction:"manipulation"},e[27]=V):V=e[27];let A;e[28]!==s?(A=t.jsx(sn,{project:s}),e[28]=s,e[29]=A):A=e[29];let _;e[30]!==s.label?(_=t.jsx("span",{className:"block min-w-0 flex-1 truncate typography-ui-label text-foreground",children:s.label}),e[30]=s.label,e[31]=_):_=e[31];let F;e[32]!==i?(F=t.jsx("span",{className:"shrink-0 typography-micro text-muted-foreground tabular-nums",children:i}),e[32]=i,e[33]=F):F=e[33];let L;e[34]!==r||e[35]!==w?(L=w?t.jsx(Lr,{className:ee("size-4 shrink-0 text-muted-foreground transition-transform",r&&"rotate-180")}):null,e[34]=r,e[35]=w,e[36]=L):L=e[36];let K;e[37]!==r||e[38]!==a||e[39]!==I||e[40]!==D||e[41]!==A||e[42]!==_||e[43]!==F||e[44]!==L?(K=t.jsxs("button",{type:"button",className:"flex min-h-9 min-w-0 flex-1 items-center gap-2 rounded-xl px-1 text-left transition-colors hover:bg-interactive-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring",onClick:a,"aria-expanded":r,"aria-label":I,disabled:D,style:V,children:[A,_,F,L]}),e[37]=r,e[38]=a,e[39]=I,e[40]=D,e[41]=A,e[42]=_,e[43]=F,e[44]=L,e[45]=K):K=e[45];let Z;e[46]!==B||e[47]!==K?(Z=t.jsxs("div",{className:"flex items-center gap-1",children:[B,K]}),e[46]=B,e[47]=K,e[48]=Z):Z=e[48];let X;e[49]!==r||e[50]!==P||e[51]!==w||e[52]!==s.worktrees||e[53]!==R?(X=r&&w?t.jsx(Wr,{sensors:R,collisionDetection:Vr,onDragEnd:P,children:t.jsx(Gr,{items:s.worktrees.map(Em),strategy:Kr,children:t.jsx("div",{className:"mt-1 flex flex-col gap-0.5 pl-3",children:s.worktrees.map(Im)})})}):null,e[49]=r,e[50]=P,e[51]=w,e[52]=s.worktrees,e[53]=R,e[54]=X):X=e[54];let te;return e[55]!==g||e[56]!==Z||e[57]!==X||e[58]!==v||e[59]!==C?(te=t.jsxs("div",{ref:g,style:v,className:C,children:[Z,X]}),e[55]=g,e[56]=Z,e[57]=X,e[58]=v,e[59]=C,e[60]=te):te=e[60],te},Ji=({open:n,onOpenChange:e,variant:s="drawer",footer:i})=>{const{t:r}=xe(),{git:a}=Fn(),o=rt(d=>d.ensureStatus),l=vo(),f=xs(d=>d.activeSessions),c=n||s==="sidebar",p=u.useRef(cm),g=yr(u.useCallback(d=>(c&&(p.current=d.ids),p.current),[c])),m=u.useRef(cl),h=po(u.useCallback(d=>(c&&(m.current=d.rankById),m.current),[c])),b=it(d=>d.projects),S=ul(d=>d.projects),x=it(d=>d.activeProjectId),R=Lt(d=>d.currentDirectory),w=De(d=>d.currentSessionId),E=De(d=>d.setCurrentSession),P=De(d=>d.archiveSession),k=De(d=>d.archiveSessions),j=De(d=>d.deleteSession),v=De(d=>d.deleteSessions),N=De(d=>d.updateSessionTitle),C=De(d=>d.openNewSessionDraft),M=it(d=>d.setActiveProject),O=it(d=>d.setActiveProjectIdOnly),B=it(d=>d.reorderProjects),I=it(d=>d.manualProjectOrder),D=cs(d=>d.projectSortOrder),V=cs(d=>d.setProjectSortOrder),A=cs(d=>d.sidebarViewMode),_=cs(d=>d.setSidebarViewMode),F=cs(d=>d.showRecentSection),L=cs(d=>d.setShowRecentSection),K=yr(d=>d.toggle),Z=A==="projects"&&F,X=dl(c&&(A==="timeline"||Z)),te=it(d=>d.removeProject),Q=Cn(d=>d.projectExpanded),pe=Cn(d=>d.worktreeExpanded),ue=Cn(d=>d.setProjectExpanded),U=Cn(d=>d.setWorktreeExpanded),G=Cr(d=>d.orderByProject),T=Cr(d=>d.setWorktreeOrder),ne=Vi(d=>d.expandedParents),re=Vi(d=>d.toggleParent),[ie,q]=u.useState(""),[ae,de]=u.useState(null),[ve,je]=u.useState(null),[Se,he]=u.useState(null),[Y,be]=u.useState(null),[me,Ce]=u.useState(null),[Pe,Ie]=u.useState(null),[_e,qe]=u.useState(null),[Oe,He]=u.useState(0),[ot,tt]=u.useState(!1),[Gn,At]=u.useState(!1),[an,Es]=u.useState(!1),[ln,cn]=u.useState(null),[Zt,at]=u.useState(()=>new Map(De.getState().availableWorktreesByProject)),[vt,es]=u.useState(()=>{const d=new Set;for(const[z,$]of De.getState().availableWorktreesByProject)$.length>0&&d.add(z);return d}),[Fe,ts]=u.useState(!1),[un,Is]=u.useState(new Set),[Kn,Ft]=u.useState(new Map),[qn,Ct]=u.useState(Pn),$e=u.useRef(null);u.useEffect(()=>{if(!n){q(""),ts(!1),Is(new Set),Ft(new Map),Ct(Pn),de(null),je(null),he(null),be(null),Ce(null),Ie(null);return}xo(l)},[n]),u.useEffect(()=>{Fe||Is(new Set)},[Fe]),u.useEffect(()=>{Ct(Pn)},[A]),u.useEffect(()=>{if(!n||b.length===0)return;let d=!1;return(async()=>{const $=await Promise.all(b.map(async J=>{const oe=Le(J.path);if(!oe)return null;const ge=await a.checkIsGitRepository(oe).catch(()=>null),ce=ge?await To({id:J.id,path:oe}).catch(()=>null):[];return[oe,ce,ge]}));d||(at(J=>{const oe=new Map;for(const ge of $){if(!ge)continue;const[ce,Ge,st]=ge,jt=st===null||Ge===null;oe.set(ce,jt?J.get(ce)??[]:Ge)}return Do(b,oe)}),es(J=>{const oe=new Set;for(const ge of $){if(!ge)continue;const[ce,,Ge]=ge;(Ge===null?J.has(ce):Ge)&&oe.add(ce)}return oe}))})(),()=>{d=!0}},[a,n,b,Oe]);const ke=u.useMemo(()=>Wc(b.map(d=>({id:d.id,label:d.label?.trim()||mr(d.path),path:Le(d.path),icon:d.icon,color:d.color,iconImage:d.iconImage,iconBackground:d.iconBackground,isGitRepo:vt.has(Le(d.path)),worktrees:Bf(G[d.id],Zt.get(Le(d.path))??[]),addedAt:d.addedAt,lastOpenedAt:d.lastOpenedAt})),D,I),[vt,I,D,b,G,Zt]),Ze=u.useMemo(()=>{const d=[...f],z=new Set(d.map($=>$.id));for(const $ of l)z.has($.id)||(z.add($.id),d.push($));return d.filter($=>!$.time?.archived)},[f,l]),pt=u.useMemo(()=>{const d=new Map;for(const z of Ze){const $=yt(z);if(!$)continue;const J=d.get($)??[];J.push(z),d.set($,J)}return d},[Ze]),As=u.useCallback(d=>Sn(pt,d),[pt]),{projectSessions:ht,chatSessions:et}=u.useMemo(()=>Vc(Ze,!1),[Ze]),Xe=Be(d=>d.sessionWorkEnabled),Je=u.useMemo(()=>{const d=new Set;if(!Xe)return d;for(const z of Ze)if(!(yt(z)||lr(kt(z))||!Ro(z))){d.add(z.id);for(const $ of Sn(pt,z.id))d.add($)}return d},[pt,Xe,Ze]),We=u.useMemo(()=>Je.size>0?ht.filter(d=>!Je.has(d.id)):ht,[ht,Je]),$t=u.useMemo(()=>Je.size>0?et.filter(d=>!Je.has(d.id)):et,[et,Je]),wt=Da(),ss=u.useMemo(()=>new Map(wt.map(d=>[d.id,d])),[wt]),ns=u.useMemo(()=>new Map(wt.map(d=>[d.id,d.name||r("sessions.sidebar.grouping.spaceUnnamed")])),[wt,r]),Ae=u.useMemo(()=>Xu(ht,ke.map(d=>({id:d.id,normalizedPath:d.path})),new Map(ke.map(d=>[d.path,d.worktrees])),!1,[],S,wt),[S,ht,ke,wt]),Qe=u.useMemo(()=>fl(ht,d=>{const z=Ae.bySessionId.get(d.id);return(z?ke.find(J=>J.id===z.projectId):void 0)?.path||Le(kt(d))||null}),[ht,ke,Ae]),Ps=u.useMemo(()=>{const d=new Map(Ze.map(J=>[J.id,J])),z=J=>({session:J,children:(pt.get(J.id)??[]).map(z),worktree:null}),$=new Map;for(const J of Qe.runs.values())$.set(J.key,J.memberIds.flatMap(oe=>{const ge=d.get(oe);return ge?[z(ge)]:[]}));return $},[pt,Qe,Ze]),Wt=u.useMemo(()=>({key:Vs,label:"",path:"",worktree:null,space:null,sessions:us($t,g,h)}),[g,$t,h]),Te=u.useMemo(()=>new Set(Wt.sessions.filter(d=>Si(g,kt(d)||null,d.id)).map(d=>d.id)),[Wt,g]),Pt=u.useMemo(()=>({key:Ks,label:"",path:"",worktree:null,space:null,sessions:Je.size>0?us(Ze.filter(d=>Je.has(d.id)),g,h):[]}),[g,h,Ze,Je]),Vt=Uc({enabled:c&&Z,isVSCode:!1,pinnedSessionIds:g,sessionOrderRanks:h,sessions:We}),[rs,gt]=u.useState(Vt);c&&rs!==Vt&&gt(Vt);const Tt=c?Vt:rs,dn=u.useMemo(()=>{const d=new Set;for(const z of Tt){d.add(z.id);for(const $ of Sn(pt,z.id))d.add($)}return{key:qs,label:"",path:"",worktree:null,space:null,sessions:d.size>0?us(We.filter(z=>d.has(z.id)),g,h):[]}},[pt,g,Tt,We,h]),Hn=u.useMemo(()=>{const d=new Map;if(Tt.length===0)return d;const z=Ci({sessions:Tt,projects:ke.map($=>({id:$.id,normalizedPath:$.path,label:$.label})),ownerBySessionId:Ae.bySessionId,availableWorktreesByProject:new Map(ke.map($=>[$.path,$.worktrees])),gitBranches:X,homeDirectory:null,hideBranchMatchingProjectLabel:!0,spaceLabelById:ns});for(const[$,J]of z)J.projectLabel&&d.set($,J.branchLabel?`${J.projectLabel} · ${J.branchLabel}`:J.projectLabel);return d},[X,ke,Tt,Ae,ns]),Jn=`${Vs}::${Vs}`,lt=u.useMemo(()=>$t.filter(d=>!yt(d)).length,[$t]),ze=ie.trim().toLowerCase(),Ts=u.useRef(null);u.useEffect(()=>{if(!n)return;const d=window.requestAnimationFrame(()=>{const z=Ts.current;if(!z)return;(z.querySelector('[data-active-session="true"]')??z.querySelector('[data-active-project="true"]'))?.scrollIntoView({block:"center"})});return()=>window.cancelAnimationFrame(d)},[n]);const Dt=u.useMemo(()=>{const d=ke.map($=>({project:$,buckets:[],totalSessions:0,isActive:$.id===x})),z=($,J,oe,ge=null)=>{const ce=Le(J)||$.project.path,Ge=ce||"__root__";let st=$.buckets.find(jt=>jt.key===Ge);return st||(st={key:Ge,label:(ge?ge.name||r("sessions.sidebar.grouping.spaceUnnamed"):null)||oe?.branch||mr(ce),path:ce,worktree:oe,space:ge,sessions:[]},$.buckets.push(st)),st};for(const $ of d){z($,$.project.path,null);for(const J of $.project.worktrees)z($,J.path,J);for(const J of wt)J.directory&&Le(J.projectDirectory)===Le($.project.path)&&z($,J.directory,null,J)}for(const $ of We){const J=Ae.bySessionId.get($.id);if(!J)continue;const oe=d.find(st=>st.project.id===J.projectId);if(!oe)continue;const ge=hr(oe.project,J.scopeDirectory),ce=J.kind==="space"&&J.spaceId?ss.get(J.spaceId)??null:null;(ce?z(oe,J.scopeDirectory,null,ce):ge&&!Qe.runKeyBySessionId.has($.id)?z(oe,ge.path,ge):z(oe,oe.project.path,null)).sessions.push($)}for(const $ of d)for(const J of $.buckets){J.sessions=us(J.sessions,g,h);for(const oe of J.sessions)yt(oe)||($.totalSessions+=1)}return d},[x,g,ke,Qe,We,h,Ae,wt,ss,r]),fn=Le(R),is=d=>d.isActive?fn===d.project.path?d.project.path:d.project.worktrees.find($=>gm(fn,$.path))?.path??d.project.path:null,os=d=>Q[d.project.id]??!0,ct=(d,z)=>pe[`${d.project.id}::${z.key}`]??!0,bt=d=>{Ft(z=>{if(!z.has(d))return z;const $=new Map(z);return $.delete(d),$})},Ds=d=>{Ft(z=>{let $=!1;const J=new Map(z),oe=`${d}::`;for(const ge of J.keys())ge.startsWith(oe)&&(J.delete(ge),$=!0);return $?J:z})},Yn=(d,z,$)=>{Ft(J=>{const oe=new Map(J);return oe.set(d,z+$),oe})},Ut=(d,z,$,J)=>{const oe=J?.pageSize??fm,ge=J?.alwaysVisibleIds,ce=new Set(z.sessions.map(we=>we.id)),Ge=new Map;for(const we of z.sessions){const nt=yt(we);if(nt&&ce.has(nt)){const Rt=Ge.get(nt)??[];Rt.push(we),Ge.set(nt,Rt)}}const st=z.sessions.filter(we=>{const nt=yt(we);return!nt||!ce.has(nt)}),jt=new Set,$s=st.flatMap(we=>{const nt=Qe.runKeyBySessionId.get(we.id),Rt=nt?Qe.runs.get(nt):void 0;return Rt?jt.has(Rt.key)?[]:(jt.add(Rt.key),[{kind:"run",run:Rt}]):[{kind:"session",session:we}]}),di=we=>we.kind==="session"&&!!ge?.has(we.session.id),wa=ge?$s.filter(di):[],rr=ge?$s.filter(we=>!di(we)):$s,ja=Kn.get(d)??oe,ir=rr.slice(0,ja),ka=[...wa,...ir],fi=rr.length-ir.length,Sa=rr.length>oe&&fi===0,mi=(we,nt)=>{const Rt=Ge.get(we.id)??[],or=Rt.length>0,pi=!!ne[we.id],Na=nt===$;return t.jsxs(u.Fragment,{children:[t.jsx(qi,{session:we,active:w===we.id,indent:nt,contextLabel:Na?J?.rootContextLabel?.(we):void 0,hasChildren:or,expanded:pi,onToggleChildren:or?()=>re(we.id):void 0,onSelect:()=>_s(we),statusOnRight:J?.statusOnRight,revealed:ve===we.id,onRevealedChange:Ws=>mn(we.id,Ws),confirmingDelete:Se===we.id,onArchive:()=>{hn(we)},onRequestDelete:()=>he(we.id),onConfirmDelete:()=>{ls(we)},renaming:Y===we.id,onRequestRename:()=>Os(we.id),onSubmitRename:Ws=>{gn(we.id,Ws)},onCancelRename:()=>be(null),work:Et(we),pin:Ms(we),descendantIdsOf:As}),or&&pi?Rt.map(Ws=>mi(Ws,nt+hm)):null]},we.id)};return t.jsxs("div",{children:[ka.map(we=>we.kind==="run"?t.jsx(ym,{run:we.run,laneNodes:Ps.get(we.run.key)??Hi,indent:$},`run:${we.run.key}`):mi(we.session,$)),fi>0?t.jsx(vm,{indent:$,onClick:()=>Yn(d,ir.length,oe)}):null,Sa?t.jsx(wm,{indent:$,onClick:()=>bt(d)}):null]})},as=(d,z)=>{ue(d,!z),Ds(d)},Ue=(d,z,$)=>{U(`${d}::${z}`,!$),bt(`${d}::${z}`)},_s=d=>{const z=kt(d)||null,$=Ae.bySessionId.get(d.id),J=$?ke.find(oe=>oe.id===$.projectId)??null:null;if(J){O(J.id),ue(J.id,!0);const oe=hr(J,$?.scopeDirectory??"");oe&&U(`${J.id}::${Le(oe.path)}`,!0)}E(d.id,z),e(!1)},mn=(d,z)=>{je(z?d:null),he(null),Ce(null),Ie(null)},xt=(d,z)=>{Ce(z?d:null),Ie(null),je(null),he(null)},pn=(d,z)=>(je(null),he(null),Hc(d,z,Jc(z.id,Sn(pt,z.id),d==="delete"),{archiveSession:P,archiveSessions:k,deleteSession:j,deleteSessions:v},r)),hn=d=>pn("archive",d),Gt=async(d,z)=>{try{await bl(d.id,kt(d)||null,z?"done":"open")}catch{le.error(r("sessions.sidebar.session.work.updateFailed"))}},Et=d=>{if(!Xe||yt(d)||lr(kt(d)))return;const z=Je.has(d.id);return{inWork:z,onToggle:()=>{Gt(d,z)}}},_t=d=>Si(g,kt(d)||null,d.id),Mt=d=>{const z=kt(d);z&&K({directory:z,sessionId:d.id})},Ms=d=>{if(!(yt(d)||!kt(d)))return{pinned:_t(d),onToggle:()=>Mt(d)}},ls=d=>pn("delete",d),Os=d=>{je(null),he(null),be(d)},gn=async(d,z)=>{be(null);try{await N(d,z)}catch{le.error(r("mobile.sessions.renameError"))}},bn=()=>{C(),e(!1)},zs=d=>{cn(d),O(d),Es(!0)},Xn=Br(ks($r,{activationConstraint:{distance:8}}),ks(Fr,{coordinateGetter:Ur})),Kt=d=>{V(d),ar({sidebarProjectSortOrder:d}),d!=="manual"&&ts(!1)},Qn=d=>{_(d),ar({sidebarViewMode:d}),d==="timeline"&&ts(!1)},xn=()=>{const d=!F;L(d),ar({sidebarShowRecentSection:d})},Zn=d=>{const{active:z,over:$}=d;if(!$||z.id===$.id)return;const J=ke.findIndex(ge=>ge.id===z.id),oe=ke.findIndex(ge=>ge.id===$.id);J<0||oe<0||B(J,oe)},er=d=>{Is(z=>{const $=new Set(z);return $.has(d)?$.delete(d):$.add(d),$})},Ls=u.useCallback(d=>{const z=kt(d);if(lr(z))return r("mobile.sessions.section.chats");const $=Ae.bySessionId.get(d.id),J=$?ke.find(ce=>ce.id===$.projectId)??null:null;if(!J)return mr(z)||z;const oe=$?.kind==="space"&&$.spaceId?ss.get($.spaceId):void 0;if(oe)return`${J.label} · ${oe.name||r("sessions.sidebar.grouping.spaceUnnamed")}`;const ge=hr(J,$?.scopeDirectory??"");return ge?.branch?`${J.label} · ${ge.branch}`:J.label},[ke,Ae,ss,r]),Bs=d=>{M(d.id),e(!1)},Fs=d=>{O(d.id),C({selectedProjectId:d.id,directoryOverride:d.path}),e(!1)},sr=u.useMemo(()=>ze?Dt.filter(d=>Po([d.project.label,d.project.path],ze)?!0:d.buckets.some(z=>z.sessions.some($=>gr($,d.project.label,ze)))):Dt,[ze,Dt]),y=u.useMemo(()=>ze?us(Ze.filter(d=>{if(yt(d))return!1;const z=Ae.bySessionId.get(d.id),$=z?ke.find(J=>J.id===z.projectId)??null:null;return gr(d,$?.label??"",ze)}),g,h):[],[ze,g,ke,h,Ae,Ze]),W=u.useMemo(()=>ze?ml(ke,ze,d=>[d.label,d.path]):[],[ze,ke]),se=A==="timeline"&&!ze&&!Fe,ye=se||Z;u.useEffect(()=>{if(!(!ye||!a))for(const d of ke){const z=Le(d.path);z&&pl(()=>o(z,a))}},[o,a,ye,ke]);const Re=u.useMemo(()=>{const d=new Map;if(!se)return d;const z=Ci({sessions:ht,projects:ke.map($=>({id:$.id,normalizedPath:$.path,label:$.label})),ownerBySessionId:Ae.bySessionId,availableWorktreesByProject:new Map(ke.map($=>[$.path,$.worktrees])),gitBranches:X,homeDirectory:null,hideBranchMatchingProjectLabel:!1,spaceLabelById:ns});for(const $ of ht){if(yt($))continue;const J=z.get($.id),oe=J?ke.find(ge=>ge.id===J.projectId):null;!oe||!J||d.set($.id,{project:oe,branch:J.branchLabel})}return d},[X,ht,ke,Ae,ns,se]),ut=u.useMemo(()=>{if(!se)return[];const d=We.filter($=>!yt($)&&Re.has($.id)),z=new Set;return us(d,g,h).flatMap($=>{const J=Re.get($.id);if(!J)return[];const oe=Qe.runKeyBySessionId.get($.id),ge=oe?Qe.runs.get(oe):void 0;return ge?z.has(ge.key)?[]:(z.add(ge.key),[{kind:"run",run:ge,laneNodes:Ps.get(ge.key)??Hi,project:J.project}]):[{kind:"session",session:$,project:J.project,branch:J.branch}]})},[g,Qe,Ps,We,h,se,Re]),Me=u.useCallback(()=>{Ct(d=>Xf(d,ut.length))},[ut.length]),ii={currentSessionId:w,revealedSessionId:ve,confirmingDeleteSessionId:Se,renamingSessionId:Y,onSelect:_s,onRevealedChange:mn,onArchive:d=>{hn(d)},onRequestDelete:he,onConfirmDelete:d=>{ls(d)},onRequestRename:Os,onSubmitRename:(d,z)=>{gn(d,z)},onCancelRename:()=>be(null),onToggleWork:Xe?(d,z)=>{Gt(d,z)}:void 0,isPinned:_t,onTogglePin:Mt,descendantIdsOf:As},yn=ze&&y.length===0&&W.length===0,nr=!ze&&!se&&ke.length>1&&D==="manual",oi=!Fe&&!ze&&ke.length>0?t.jsx(Ne,{type:"button",variant:"chip",size:"sm","aria-label":r("sessions.sidebar.header.displayMode.label"),title:r("sessions.sidebar.header.displayMode.label"),onClick:()=>tt(!0),style:{touchAction:"manipulation"},children:t.jsx(H,{name:"equalizer-2",className:"size-4"})}):null,ai=nr?t.jsx(Ne,{type:"button",variant:"chip",size:"sm","aria-label":r(Fe?"mobile.sessions.doneEditing":"mobile.sessions.editOrder"),"aria-pressed":Fe,onClick:()=>ts(d=>!d),style:{touchAction:"manipulation"},children:Fe?t.jsx(Fo,{className:"size-4"}):t.jsx(jr,{className:"size-4"})}):null,li=!Fe&&ke.length>0?t.jsxs(Ne,{type:"button",variant:"default",size:"sm","aria-label":r("mobile.sessions.newChat"),onClick:bn,style:{touchAction:"manipulation"},children:[t.jsx(Wu,{className:"size-4"}),r("mobile.sessions.newChat")]}):null,ci=Fe?null:t.jsx(Ne,{type:"button",variant:"chip",size:"sm","aria-label":r("sessions.sidebar.header.actions.addProject"),title:r("sessions.sidebar.header.actions.addProject"),onClick:()=>At(!0),style:{touchAction:"manipulation"},children:t.jsx(Ri,{className:"size-4"})}),vn=li||ci||oi||ai?t.jsxs(t.Fragment,{children:[ci,oi,ai,li]}):null,ui=t.jsxs("div",{ref:Ts,className:"flex min-h-0 flex-1 flex-col",children:[t.jsxs($n,{ref:$e,className:"min-h-0 flex-1 overflow-y-auto pb-4",children:[t.jsx("div",{className:ee("px-4 pb-2 pt-1",Fe&&"hidden"),children:t.jsx(Gc,{value:ie,onSearch:q,active:n||s==="sidebar",mobile:!0,placeholder:r("mobile.sessions.search.placeholder"),clearLabel:r("mobile.sessions.clearSearchAria")})}),ke.length===0&&et.length===0?t.jsx(Qi,{title:r("mobile.sessions.empty.noProjectsTitle"),description:r("mobile.sessions.empty.noProjectsDescription"),action:t.jsxs("button",{type:"button",className:"flex items-center justify-center gap-2 rounded-2xl bg-primary px-5 py-3 typography-ui-label text-primary-foreground transition-opacity hover:opacity-90 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",onClick:()=>At(!0),children:[t.jsx(Ri,{className:"size-4"}),r("sessions.sidebar.header.actions.addProject")]})}):yn?t.jsx(Qi,{title:r("mobile.sessions.empty.searchTitle"),description:r("mobile.sessions.empty.searchDescription")}):ze&&!Fe?t.jsxs("div",{className:"flex flex-col gap-3 px-3 pt-2",children:[y.length>0?t.jsxs("section",{children:[t.jsxs("div",{className:"flex items-center justify-between px-1 pb-1.5",children:[t.jsx("span",{className:"typography-micro font-semibold uppercase tracking-wider text-muted-foreground",children:r("mobile.sessions.search.section.sessions")}),t.jsx("span",{className:"typography-micro text-muted-foreground tabular-nums",children:y.length})]}),t.jsx("div",{className:"overflow-hidden rounded-2xl border border-border/70 bg-[var(--surface-elevated)]",children:y.map((d,z)=>t.jsx("div",{className:ee(z>0&&"border-t border-border/70"),children:t.jsx(qi,{session:d,active:w===d.id,indent:12,contextLabel:Ls(d),onSelect:()=>_s(d)})},d.id))})]}):null,W.length>0?t.jsxs("section",{children:[t.jsxs("div",{className:"flex items-center justify-between px-1 pb-1.5",children:[t.jsx("span",{className:"typography-micro font-semibold uppercase tracking-wider text-muted-foreground",children:r("mobile.sessions.search.section.projects")}),t.jsx("span",{className:"typography-micro text-muted-foreground tabular-nums",children:W.length})]}),t.jsx("div",{className:"overflow-hidden rounded-2xl border border-border/70 bg-[var(--surface-elevated)]",children:W.map((d,z)=>t.jsxs("div",{className:ee("flex items-center",z>0&&"border-t border-border/70"),children:[t.jsxs("button",{type:"button",className:"flex min-h-12 min-w-0 flex-1 items-center gap-3 px-3 py-1.5 text-left transition-colors hover:bg-interactive-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset",onClick:()=>Bs(d),style:{touchAction:"manipulation"},children:[t.jsx(sn,{project:d}),t.jsx("span",{className:"block min-w-0 flex-1 truncate typography-ui-label text-foreground",children:d.label})]}),d.isGitRepo?t.jsx(Ki,{onClick:()=>zs(d.id)}):null,t.jsx(br,{className:"mr-2",label:r("mobile.sessions.newSessionInProjectAria",{label:d.label}),onClick:()=>Fs(d)})]},d.id))})]}):null]}):Fe?t.jsxs("div",{className:"flex flex-col gap-2 px-3 py-2",children:[t.jsx("p",{className:"px-1 typography-micro text-muted-foreground",children:r("mobile.sessions.editOrderHint")}),t.jsx(Wr,{sensors:Xn,collisionDetection:Vr,onDragEnd:Zn,children:t.jsx(Gr,{items:ke.map(d=>d.id),strategy:Kr,children:t.jsx("div",{className:"flex flex-col gap-1.5",children:ke.map(d=>{const z=Dt.find($=>$.project.id===d.id);return t.jsx(km,{project:d,totalSessions:z?.totalSessions??0,expanded:un.has(d.id),onToggleExpanded:()=>er(d.id),onReorderWorktrees:$=>T(d.id,$)},d.id)})})})})]}):t.jsxs("div",{className:"flex flex-col",children:[(()=>{const d=Q[Vs]??!0,z=r("mobile.sessions.section.chats");return t.jsxs("section",{children:[t.jsxs("div",{className:"flex min-h-12 w-full items-center",children:[t.jsxs("button",{type:"button",className:"flex min-h-12 min-w-0 flex-1 items-center gap-2 px-3 py-1.5 text-left transition-colors hover:bg-interactive-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset",onClick:()=>{if(me){xt(me,!1);return}as(Vs,d)},"aria-expanded":d,"aria-label":d?r("sessions.sidebar.group.collapseAria",{label:z}):r("sessions.sidebar.group.expandAria",{label:z}),style:{touchAction:"manipulation"},children:[t.jsx("span",{className:"flex size-8 shrink-0 items-center justify-center overflow-hidden rounded-lg bg-[var(--surface-muted)] text-muted-foreground",children:t.jsx(H,{name:"chat-4",className:"size-4"})}),t.jsx("span",{className:"block min-w-0 flex-1 truncate typography-ui-label font-semibold text-foreground",children:z}),t.jsx("span",{className:"shrink-0 typography-micro text-muted-foreground tabular-nums",children:lt})]}),Fe?null:t.jsx(br,{className:"mr-2",label:r("mobile.sessions.newChat"),onClick:bn})]}),d?t.jsx("div",{className:"pb-2",children:Wt.sessions.length>0?Ut(Jn,Wt,se?pm:ds,se?{pageSize:mm,alwaysVisibleIds:Te,statusOnRight:!0}:void 0):t.jsx("p",{className:"px-3 pb-1 typography-micro text-muted-foreground",style:{paddingLeft:ds},children:r("sessions.sidebar.activity.chatsEmpty")})}):null]})})(),Pt.sessions.length>0?(()=>{const d=Q[Ks]??!0,z=r("sessions.sidebar.work.title");return t.jsxs("section",{children:[t.jsxs("button",{type:"button",className:"flex min-h-12 w-full min-w-0 items-center gap-2 px-3 py-1.5 text-left transition-colors hover:bg-interactive-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset",onClick:()=>{if(me){xt(me,!1);return}as(Ks,d)},"aria-expanded":d,"aria-label":d?r("sessions.sidebar.group.collapseAria",{label:z}):r("sessions.sidebar.group.expandAria",{label:z}),style:{touchAction:"manipulation"},children:[t.jsx("span",{className:"flex size-8 shrink-0 items-center justify-center overflow-hidden rounded-lg bg-[var(--surface-muted)] text-muted-foreground",children:t.jsx(H,{name:"eye",className:"size-4"})}),t.jsx("span",{className:"block min-w-0 flex-1 truncate typography-ui-label font-semibold text-foreground",children:z}),t.jsx("span",{className:"shrink-0 typography-micro text-muted-foreground tabular-nums",children:Pt.sessions.filter($=>!yt($)).length})]}),d?t.jsx("div",{className:"pb-2",children:Ut(`${Ks}::${Ks}`,Pt,ds,{pageSize:Number.MAX_SAFE_INTEGER})}):null]})})():null,!se&&dn.sessions.length>0?(()=>{const d=Q[qs]??!0,z=r("mobile.sessions.section.recent");return t.jsxs("section",{children:[t.jsxs("button",{type:"button",className:"flex min-h-12 w-full min-w-0 items-center gap-2 px-3 py-1.5 text-left transition-colors hover:bg-interactive-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset",onClick:()=>{if(me){xt(me,!1);return}as(qs,d)},"aria-expanded":d,"aria-label":d?r("sessions.sidebar.group.collapseAria",{label:z}):r("sessions.sidebar.group.expandAria",{label:z}),style:{touchAction:"manipulation"},children:[t.jsx("span",{className:"flex size-8 shrink-0 items-center justify-center overflow-hidden rounded-lg bg-[var(--surface-muted)] text-muted-foreground",children:t.jsx(H,{name:"history",className:"size-4"})}),t.jsx("span",{className:"block min-w-0 flex-1 truncate typography-ui-label font-semibold text-foreground",children:z}),t.jsx("span",{className:"shrink-0 typography-micro text-muted-foreground tabular-nums",children:Tt.length})]}),d?t.jsx("div",{className:"pb-2",children:Ut(`${qs}::${qs}`,dn,ds,{rootContextLabel:$=>Hn.get($.id)??Ls($)})}):null]})})():null,se?t.jsx(Jf,{entries:ut,visibleCount:qn,onRevealMore:Me,scrollRootRef:$e,handlers:ii}):null,se?null:sr.map(d=>{const z=os(d),$=ze?d.buckets.filter(oe=>oe.sessions.some(ge=>gr(ge,d.project.label,ze))):d.buckets,J=is(d);return t.jsxs("section",{className:"border-t border-border/70",children:[t.jsx(Bn,{actionsWidth:96,revealed:me===`project:${d.project.id}`,onRevealedChange:oe=>xt(`project:${d.project.id}`,oe),actions:t.jsxs(t.Fragment,{children:[t.jsx("button",{type:"button",tabIndex:me===`project:${d.project.id}`?0:-1,className:ee("flex flex-1 items-center justify-center transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-destructive",Pe===d.project.id?"rounded-lg bg-destructive text-destructive-foreground":"text-[var(--status-error)] active:opacity-80"),"aria-label":Pe===d.project.id?r("mobile.sessions.confirmRemoveProjectAria",{label:d.project.label}):r("mobile.sessions.removeProjectAria",{label:d.project.label}),onClick:()=>{if(Pe===d.project.id){Ce(null),Ie(null),te(d.project.id),le.success(r("mobile.sessions.toast.projectRemoved",{label:d.project.label}));return}Ie(d.project.id)},style:{touchAction:"manipulation"},children:t.jsx(Dn,{className:"size-[18px]"})}),t.jsx("button",{type:"button",tabIndex:me===`project:${d.project.id}`?0:-1,className:"flex flex-1 items-center justify-center text-muted-foreground transition-colors active:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring","aria-label":r("mobile.sessions.editProjectAria",{label:d.project.label}),onClick:()=>{Ce(null),de(d.project.id)},style:{touchAction:"manipulation"},children:t.jsx(jr,{className:"size-[18px]"})})]}),children:t.jsxs("div",{"data-active-project":d.isActive||void 0,className:"flex min-h-12 w-full items-center",children:[t.jsxs("button",{type:"button",className:"flex min-h-12 min-w-0 flex-1 items-center gap-2 px-3 py-1.5 text-left transition-colors hover:bg-interactive-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset",onClick:()=>{if(me){xt(me,!1);return}as(d.project.id,z)},"aria-expanded":z,"aria-label":z?r("sessions.sidebar.group.collapseAria",{label:d.project.label}):r("sessions.sidebar.group.expandAria",{label:d.project.label}),style:{touchAction:"manipulation"},children:[t.jsx(sn,{project:d.project}),t.jsx("span",{className:"block min-w-0 flex-1 truncate typography-ui-label font-semibold text-foreground",children:d.project.label})]}),d.project.isGitRepo?t.jsx(Ki,{onClick:()=>zs(d.project.id)}):null,t.jsx(br,{className:"mr-2",label:r("mobile.sessions.newSessionInProjectAria",{label:d.project.label}),onClick:()=>Fs(d.project)})]})}),z?t.jsx("div",{className:"pb-2",children:(()=>{const oe=$.find(ce=>ce.worktree===null&&ce.space===null),ge=$.filter(ce=>ce!==oe);return t.jsxs(t.Fragment,{children:[oe&&oe.sessions.length>0?Ut(`${d.project.id}::${oe.key}`,oe,ds):null,ge.map(ce=>{const Ge=ct(d,ce),st=J===ce.path;return t.jsx(bm,{path:ce.worktree?.path??null,children:jt=>t.jsxs("div",{className:ee(jt&&"opacity-60"),"aria-busy":jt||void 0,children:[t.jsx(Bn,{actionsWidth:ce.space?96:48,revealed:me===`wt:${ce.key}`,onRevealedChange:$s=>xt(`wt:${ce.key}`,$s),actions:ce.space?t.jsxs(t.Fragment,{children:[t.jsx("button",{type:"button",tabIndex:me===`wt:${ce.key}`?0:-1,className:"flex flex-1 items-center justify-center text-foreground transition-colors active:opacity-80 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring","aria-label":r("spaces.group.access.giveAria",{label:ce.label}),onClick:()=>{Ce(null),ce.space&&gi.getState().openAccessDialog(ce.space.id)},style:{touchAction:"manipulation"},children:t.jsx(H,{name:"key",className:"size-[18px]"})}),t.jsx("button",{type:"button",tabIndex:me===`wt:${ce.key}`?0:-1,className:"flex flex-1 items-center justify-center text-foreground transition-colors active:opacity-80 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring","aria-label":r("spaces.actions.menuAria",{label:ce.label}),onClick:()=>{Ce(null),ce.space&&gi.getState().openActionsSheet(ce.space.id)},style:{touchAction:"manipulation"},children:t.jsx(H,{name:"more-2",className:"size-[18px]"})})]}):ce.worktree&&!jt?t.jsx("button",{type:"button",tabIndex:me===`wt:${ce.key}`?0:-1,className:"flex flex-1 items-center justify-center text-[var(--status-error)] transition-colors active:opacity-80 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-destructive","aria-label":r("mobile.projectEdit.deleteWorktreeAria",{label:ce.label}),onClick:()=>{Ce(null),ce.worktree&&qe({project:d.project,worktree:ce.worktree})},style:{touchAction:"manipulation"},children:t.jsx(Dn,{className:"size-[18px]"})}):null,children:t.jsxs("button",{type:"button",className:"flex min-h-10 w-full items-center gap-2 px-3 py-1 text-left transition-colors hover:bg-interactive-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset",onClick:()=>{if(me){xt(me,!1);return}Ue(d.project.id,ce.key,Ge)},"aria-expanded":Ge,"aria-label":Ge?r("sessions.sidebar.group.collapseAria",{label:ce.label}):r("sessions.sidebar.group.expandAria",{label:ce.label}),style:{touchAction:"manipulation"},children:[jt?t.jsx("span",{className:"inline-flex shrink-0 text-muted-foreground",role:"status","aria-label":r("sessions.sidebar.group.worktreeRemoving"),children:t.jsx(H,{name:"loader-4",className:"size-4 animate-spin"})}):t.jsx(H,{name:ce.space?"box-3":"git-branch",className:ee("size-4 shrink-0",st?"text-primary":"text-muted-foreground")}),t.jsx("span",{className:ee("block min-w-0 flex-1 truncate typography-ui-label font-bold",st?"text-foreground":"text-muted-foreground"),children:ce.label}),st?t.jsx(xm,{ariaLabel:r("mobile.sessions.activeWorktreeAria")}):null,t.jsx("span",{className:"shrink-0 typography-micro text-muted-foreground tabular-nums",children:ce.sessions.length})]})}),ce.space?t.jsx(Kc,{spaceId:ce.space.id,className:"px-3 pb-1 pl-9"}):null,Ge?Ut(`${d.project.id}::${ce.key}`,ce,ds):null]})},ce.key)})]})})()}):null]},d.project.id)})]})]}),i?t.jsxs("div",{className:"flex shrink-0 items-center justify-between gap-2 border-t border-border/70 px-2 pt-1.5",style:{paddingBottom:"calc(0.375rem + var(--oc-safe-area-bottom, 0px))"},children:[i.instanceLabel&&i.onOpenInstances?t.jsxs(Ne,{type:"button",variant:"info",size:"lg",className:"min-w-0 shrink justify-start",onClick:i.onOpenInstances,"aria-label":r("mobile.menu.instances"),style:{touchAction:"manipulation"},children:[t.jsx(H,{name:"server",className:"size-[18px]"}),t.jsx("span",{className:"block min-w-0 truncate",children:i.instanceLabel})]}):t.jsx("div",{className:"min-w-0 flex-1"}),t.jsxs("div",{className:"flex shrink-0 items-center gap-1",children:[i.onOpenUpdate?t.jsxs(Ne,{type:"button",variant:"default",size:"lg",className:"w-10 px-0",onClick:i.onOpenUpdate,"aria-label":r("mobile.menu.update"),title:r("mobile.menu.update"),style:{touchAction:"manipulation"},children:[t.jsx(H,{name:"download",className:"size-5"}),t.jsx("span",{className:"absolute right-2 top-2 inline-flex size-2 rounded-full bg-primary","aria-hidden":!0})]}):null,t.jsx(Ne,{type:"button",variant:"default",size:"lg",className:"w-10 px-0",onClick:i.onOpenScheduled,"aria-label":r("sessions.sidebar.header.actions.scheduledTasks"),title:r("sessions.sidebar.header.actions.scheduledTasks"),style:{touchAction:"manipulation"},children:t.jsx(H,{name:"calendar-schedule",className:"size-5"})}),t.jsx(Ne,{type:"button",variant:"default",size:"lg",className:"w-10 px-0",onClick:i.onOpenArchive,"aria-label":r("sessions.sidebar.nav.archive"),title:r("sessions.sidebar.nav.archive"),style:{touchAction:"manipulation"},children:t.jsx(H,{name:"archive",className:"size-5"})}),t.jsx(Ne,{type:"button",variant:"default",size:"lg",className:"w-10 px-0",onClick:i.onOpenUsage,"aria-label":r("usageStats.openAction"),title:r("usageStats.openAction"),style:{touchAction:"manipulation"},children:t.jsx(H,{name:"bar-chart",className:"size-5"})}),t.jsx(Ne,{type:"button",variant:"default",size:"lg",className:"w-10 px-0",onClick:i.onOpenSettings,"aria-label":r("mobile.menu.settings"),title:r("mobile.menu.settings"),style:{touchAction:"manipulation"},children:t.jsx(H,{name:"settings-3",className:"size-5"})})]})]}):null,t.jsx(qc,{open:Gn,onOpenChange:At}),t.jsx(hl,{open:an,onOpenChange:d=>{Es(d),d||cn(null)},project:(()=>{const d=ke.find(z=>z.id===ln);return d?{id:d.id,path:d.path}:void 0})(),onWorktreeCreated:d=>{C({selectedProjectId:ln,directoryOverride:d,preserveDirectoryOverride:!0}),e(!1)}}),t.jsx(sm,{open:ae!==null,project:ke.find(d=>d.id===ae)??null,onClose:()=>de(null),onWorktreesChanged:()=>He(d=>d+1)}),t.jsx(wo,{open:ot,onClose:()=>tt(!1),title:r("sessions.sidebar.header.displayMode.label"),children:t.jsxs("div",{className:"flex flex-col",children:[t.jsx("span",{className:"px-3 pb-1 pt-1 typography-micro font-semibold uppercase tracking-wider text-muted-foreground",children:r("mobile.sessions.viewMode.label")}),dm.map(([d,z])=>t.jsxs("button",{type:"button",className:ee("flex min-h-11 w-full items-center justify-between rounded-lg px-3 text-left transition-colors active:bg-interactive-active focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring",A===d?"text-primary":"text-foreground"),onClick:()=>{Qn(d),tt(!1)},style:{touchAction:"manipulation"},children:[t.jsx("span",{className:"typography-ui-label",children:r(z)}),A===d?t.jsx(H,{name:"check",className:"size-4"}):null]},d)),A==="timeline"?null:t.jsx("span",{className:"px-3 pb-1 pt-3 typography-micro font-semibold uppercase tracking-wider text-muted-foreground",children:r("sessions.sidebar.header.actions.sortProjects")}),A==="timeline"?null:um.map(([d,z])=>t.jsxs("button",{type:"button",className:ee("flex min-h-11 w-full items-center justify-between rounded-lg px-3 text-left transition-colors active:bg-interactive-active focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring",D===d?"text-primary":"text-foreground"),onClick:()=>{Kt(d),tt(!1)},style:{touchAction:"manipulation"},children:[t.jsx("span",{className:"typography-ui-label",children:r(z)}),D===d?t.jsx(H,{name:"check",className:"size-4"}):null]},d)),A==="timeline"?null:t.jsxs("button",{type:"button","aria-pressed":F,className:ee("mt-2 flex min-h-11 w-full items-center justify-between rounded-lg px-3 text-left transition-colors active:bg-interactive-active focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ring",F?"text-primary":"text-foreground"),onClick:()=>{xn(),tt(!1)},style:{touchAction:"manipulation"},children:[t.jsx("span",{className:"typography-ui-label",children:r("sessions.sidebar.header.displayMode.showRecent")}),F?t.jsx(H,{name:"check",className:"size-4"}):null]})]})}),_e?t.jsx(ca,{open:!0,project:{id:_e.project.id,path:_e.project.path},worktree:_e.worktree,onClose:()=>qe(null),onDeleted:()=>He(d=>d+1)}):null]});return s==="sidebar"?n?t.jsxs("div",{className:"flex h-full min-h-0 flex-col",children:[t.jsxs("div",{className:"flex h-[var(--oc-header-height,56px)] shrink-0 items-center justify-between gap-2 border-b border-border/70 px-4",children:[t.jsx("h2",{className:"truncate typography-ui-label font-semibold text-foreground",children:r("mobile.sessions.sheet.title")}),vn?t.jsx("div",{className:"flex shrink-0 items-center gap-2",children:vn}):null]}),ui]}):null:t.jsxs(Cm,{open:n,onClose:()=>e(!1),onSwipeClose:()=>{if(ve||me){je(null),Ce(null),he(null),Ie(null);return}e(!1)},ariaLabel:r("mobile.sessions.sheet.title"),children:[t.jsxs("div",{className:"flex h-[var(--oc-header-height,56px)] shrink-0 items-center gap-2 px-3",children:[t.jsx("button",{type:"button",className:"-ml-1 flex size-10 shrink-0 items-center justify-center rounded-full text-muted-foreground transition-colors hover:bg-interactive-hover hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring","aria-label":r("mobile.surface.closeAria"),onClick:()=>e(!1),style:{touchAction:"manipulation"},children:t.jsx(H,{name:"close",className:"size-5"})}),t.jsx("h2",{className:"min-w-0 flex-1 truncate px-1 typography-ui-label font-semibold text-foreground",children:r("mobile.sessions.sheet.title")}),vn?t.jsx("div",{className:"flex shrink-0 items-center gap-2",children:vn}):null]}),ui]})},Yi="mobile-surface-root",Sm=16,Xi=320,Nm="cubic-bezier(0.22, 1, 0.36, 1)",Cm=({open:n,onClose:e,onSwipeClose:s,ariaLabel:i,children:r})=>{const a=u.useRef(null),o=u.useRef(null),[l,f]=u.useState(!1),[c,p]=u.useState(n),g=u.useRef(e);u.useEffect(()=>{g.current=e},[e]);const m=u.useRef(s);if(u.useEffect(()=>{m.current=s},[s]),ni(o,{enabled:n,onRightEdgeSwipe:()=>(m.current??g.current)()}),typeof document<"u"&&!a.current){let h=document.getElementById(Yi);h||(h=document.createElement("div"),h.id=Yi,document.body.appendChild(h)),a.current=h}return u.useEffect(()=>{if(n){p(!0);const b=window.setTimeout(()=>f(!0),Sm);return()=>window.clearTimeout(b)}f(!1);const h=window.setTimeout(()=>p(!1),Xi+40);return()=>window.clearTimeout(h)},[n]),u.useEffect(()=>{if(!n)return;const h=document.body.style.overflow;document.body.style.overflow="hidden";const b=S=>{S.key==="Escape"&&g.current()};return document.addEventListener("keydown",b),()=>{document.body.style.overflow=h,document.removeEventListener("keydown",b)}},[n]),a.current?ws.createPortal(t.jsx("section",{ref:o,role:"dialog","aria-modal":"true","aria-label":i,"aria-hidden":!n,className:"oc-keyboard-inset-surface fixed inset-0 z-50 flex flex-col bg-background text-foreground",style:{paddingTop:"var(--oc-safe-area-top, 0px)",transform:l?"none":"translateX(-100%)",transition:`transform ${Xi}ms ${Nm}`,visibility:c?"visible":"hidden",pointerEvents:n?"auto":"none"},children:t.jsx("div",{className:"flex h-full min-h-0 flex-col",children:r})}),a.current):null},Qi=n=>{const e=fe.c(10),{title:s,description:i,action:r}=n;let a;e[0]!==s?(a=t.jsx("p",{className:"typography-ui-label text-foreground",children:s}),e[0]=s,e[1]=a):a=e[1];let o;e[2]!==i?(o=i?t.jsx("p",{className:"typography-meta text-muted-foreground",children:i}):null,e[2]=i,e[3]=o):o=e[3];let l;e[4]!==r?(l=r?t.jsx("div",{className:"pt-2",children:r}):null,e[4]=r,e[5]=l):l=e[5];let f;return e[6]!==a||e[7]!==o||e[8]!==l?(f=t.jsxs("div",{className:"flex h-full flex-col items-center justify-center gap-3 px-6 text-center",children:[a,o,l]}),e[6]=a,e[7]=o,e[8]=l,e[9]=f):f=e[9],f};function Rm(n){return Le(n.path)}function Em(n){return Le(n.path)}function Im(n){return t.jsx(jm,{worktree:n},Le(n.path))}const Am=6e4,Pm=(n,e)=>{if(!n)return e("mcpDropdown.status.unknown");const s=n.status;switch(s.status){case"connected":return e("mcpDropdown.status.connected");case"failed":return e("mcpDropdown.status.failed",{error:s.error||e("mcpDropdown.status.unknownError")});case"needs_auth":return e("mcpDropdown.status.needsAuth");default:return s.status}},Tm=n=>{switch(n?.status.status){case"connected":return"success";case"failed":return"error";case"needs_auth":return"warning";default:return"default"}},Dm=({active:n,className:e,headerAction:s,listClassName:i,hideHeader:r=!1,mobileListDensity:a=!1})=>{const{t:o}=xe(),f=Lt(j=>j.currentDirectory)??null,c=ms(j=>j.getStatusForDirectory(f)),p=ms(j=>j.refresh),g=ms(j=>j.ensureFresh),m=ms(j=>j.connect),h=ms(j=>j.disconnect),b=ys(j=>j.mcpServers),S=ys(j=>j.loadMcpConfigs),[x,R]=u.useState(!1),[w,E]=u.useState(null);u.useEffect(()=>{S({force:!0})},[S]),u.useEffect(()=>{n&&Promise.all([g({directory:f,silent:!0,maxAgeMs:Am}),S({force:!0})])},[n,g,f,S]);const P=u.useMemo(()=>{const j=new Set(Object.keys(c));for(const v of b)v?.name&&j.add(v.name);return Array.from(j).sort((v,N)=>v.localeCompare(N))},[b,c]),k=u.useCallback(j=>{if(j?.preventDefault(),x)return;R(!0);const v=new Promise(N=>setTimeout(N,500));Promise.all([p({directory:f}),v]).finally(()=>{R(!1)})},[x,p,f]);return t.jsxs("div",{className:ee("w-full",e),children:[r?null:t.jsx("div",{className:"border-b border-[var(--interactive-border)]",children:t.jsxs("div",{className:"flex items-center justify-between gap-3 px-4 py-2.5",children:[t.jsxs("div",{className:"min-w-0 flex items-baseline gap-2",children:[t.jsx("div",{className:"typography-ui-header font-semibold text-foreground",children:o("mcpDropdown.title")}),f&&t.jsx("div",{className:"truncate typography-micro text-muted-foreground",children:f.split("/").pop()||f})]}),t.jsxs("div",{className:"flex shrink-0 items-center gap-1",children:[s,t.jsx("button",{type:"button",className:"inline-flex h-7 w-7 items-center justify-center rounded-md text-muted-foreground transition-colors hover:text-foreground hover:bg-interactive-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",disabled:x,onClick:k,"aria-label":o("mcpDropdown.actions.refreshAria"),children:t.jsx(H,{name:"refresh",className:ee("h-4 w-4",x&&"animate-spin")})})]})]})}),t.jsx("div",{className:ee("max-h-64 overflow-y-auto",a?"space-y-1 py-3":"px-3 py-2.5",i),children:t.jsxs("div",{className:ee(!a&&P.length>0&&"p-1.5"),children:[P.map(j=>{const v=c[j],N=Tm(v),C=v?.status.status==="connected",M=w===j,O=Pm(v,o);return t.jsxs("div",{className:ee("flex items-center justify-between rounded-lg hover:bg-interactive-hover",a?"gap-3 px-4 py-3":"gap-2 px-2.5 py-2"),children:[t.jsx("div",{className:"min-w-0 flex-1",children:t.jsxs("div",{className:"flex items-center gap-2 min-w-0",children:[t.jsxs(xl,{children:[t.jsx(yl,{asChild:!0,children:t.jsx("span",{className:ee("rounded-full flex-shrink-0",a?"h-2.5 w-2.5":"h-2 w-2",N==="success"&&"bg-status-success",N==="error"&&"bg-status-error",N==="warning"&&"bg-status-warning",N==="default"&&"bg-muted-foreground/40"),"aria-label":O})}),t.jsx(vl,{side:"left",children:t.jsx("p",{children:O})})]}),t.jsx("span",{className:ee("truncate",a?"text-[17px] leading-6 font-medium":"typography-ui-label"),children:j})]})}),t.jsx(wl,{checked:C,disabled:M,className:"data-[checked]:bg-status-info",onCheckedChange:async B=>{E(j);try{B?await m(j,f):await h(j,f)}catch(I){kr.error(I instanceof Error?I.message:o("mcpDropdown.status.unknownError"))}finally{E(null)}}})]},j)}),P.length===0&&t.jsx("div",{className:"px-4 py-5 typography-ui-label text-muted-foreground text-center",children:o("mcpDropdown.empty.configureInConfig")})]})})]})};async function _m(n,e,s=Number.POSITIVE_INFINITY){const i=Array.from(new Set(n)),r=[];return await jl(i,s,async a=>{try{await e(a)}catch(o){r.push({path:a,error:o instanceof Error?o:null})}}),{paths:i,failures:r}}const Zi={status:"loading"},Mm=1e6,fs={type:"list"},Om=2,zm=n=>{const e=n.index?.trim();return!!(e&&e!=="?")},Lm=n=>{const e=n.working_dir?.trim(),s=n.index?.trim();return!!(e||s==="?")},eo=(n,e)=>e?`${n}\0staged`:n,Bm=n=>{const e=fe.c(6),s=on(Mr()??null)??"",i=n.visible??!0;let r;e[0]!==i?(r={enabled:i},e[0]=i,e[1]=r):r=e[1];const a=kl(s||null,r);let o;return e[2]!==n||e[3]!==a||e[4]!==s?(o=t.jsx(Fm,{...n,rootDirectory:s,repository:a}),e[2]=n,e[3]=a,e[4]=s,e[5]=o):o=e[5],o},Fm=({rootDirectory:n,repository:e,onClose:s,initialDiff:i,visible:r=!0,onNavigatedToChat:a})=>{const{t:o}=xe(),{git:l,sourceControl:f}=Fn(),{rootIsGitRepo:c,gitDirectory:p,nestedRepos:g}=e,m=p??n,h=Sl(m||null),b=Nl(m||null),S=Cl(m||null),[x,R]=u.useState(!1),[w,E]=u.useState(!1),P=Nn(y=>y.profiles),k=Nn(y=>y.globalIdentity),j=Nn(y=>y.loadProfiles),v=Nn(y=>y.loadGlobalIdentity);u.useEffect(()=>{j(),v()},[j,v]);const N=Rl(),C=_o(y=>y.refreshIdentityAccounts),M=u.useMemo(()=>El(P,k,y=>_a(y)&&Il(y,N)),[P,k,N]),O=async y=>{if(!(!m||w)){E(!0);try{(await iu({directory:m,identity:y,remoteName:$t||null},{git:l,sourceControl:f})).status==="failed"?le.error(o("gitView.toast.applyIdentityFailed")):le.success(o("gitView.toast.appliedIdentity",{name:Kl(y,o)}))}finally{E(!1)}}},B=yo(m||null),I=Al(m||null),D=rt(y=>y.setActiveDirectory),V=rt(y=>y.ensureAll),A=rt(y=>y.ensureNestedRepos),_=rt(y=>y.selectNestedRepo),F=rt(y=>y.fetchStatus),L=rt(y=>y.fetchBranches),K=rt(y=>y.prefetchDiffs),Z=rt(y=>y.getDiff),X=rt(y=>y.setDiff),te=rt(y=>y.runtimeKey),Q=JSON.stringify([te,m]),pe=u.useRef(Q);pe.current=Q;const[ue,U]=u.useState(()=>({ownerKey:Q,mode:"working",route:i?.path?{type:"diff",path:i.path,staged:i.staged}:fs})),G=ue.ownerKey===Q?ue.mode:"working",T=ue.ownerKey===Q?ue.route:fs,[ne,re]=u.useState(!1),ie=u.useCallback(y=>{U({ownerKey:Q,mode:y,route:fs}),re(!1)},[Q]),q=u.useCallback(y=>{U(W=>({ownerKey:Q,mode:W.ownerKey===Q?W.mode:"working",route:y}))},[Q]);u.useEffect(()=>{U(y=>y.ownerKey===Q?y:{ownerKey:Q,mode:"working",route:fs}),re(!1)},[Q]),u.useEffect(()=>{r||re(!1)},[r]),u.useEffect(()=>{i?.path&&U({ownerKey:pe.current,mode:"working",route:{type:"diff",path:i.path,staged:i.staged}})},[i]);const[ae,de]=u.useState(null),[ve,je]=u.useState(null),[Se,he]=u.useState(""),[Y,be]=u.useState(new Set),[me,Ce]=u.useState(!1),[Pe,Ie]=u.useState(!1),[_e,qe]=u.useState([]),[Oe,He]=u.useState([]),[ot,tt]=u.useState([]),[Gn,At]=u.useState(null),[an,Es]=u.useState(null),[ln,cn]=u.useState(0),Zt=Qu(),at=Zu({directory:m,branch:h?.current,chooseContributor:Zt.choose}),vt=Yc(m,l,f),[es,Fe]=u.useState(null),[ts,un]=u.useState(!1),[Is,Kn]=u.useState([]),[Ft,qn]=u.useState("rebase"),Ct=u.useCallback((y,W)=>{Kn(y),qn(W),un(!0)},[]),$e=h?.current??null,ke=h?.tracking?.trim().split("/")[0],Ze=(ke&&b?.defaultBranches?.[ke])??b?.defaultBranches?.origin??null,pt=yd($e,Ze),As=B===!1||bd($e,Ze,h!==null,b!==null),ht=ld(y=>y.setOverride),et=cd(m||null,$e,r&&G==="branch"&&pt),Xe=ud(m||null,$e,r&&G==="commit"&&B===!0),Je=Xe.selectedCommit?.hash??null,We=Pl(m||null,f),$t=We.read?.binding?.remotes[0]?.name??We.read?.repository.remotes.find(y=>y.name==="origin")?.name??We.read?.repository.remotes[0]?.name??"",wt=We.read?We.read.binding?.providers.find(y=>y.readiness==="ready")?.accountId??null:void 0,ss=u.useMemo(()=>Tl(P,k,S,y=>({id:"local-config",name:y.userName,...y,color:"info",icon:"user"}),wt),[wt,S,P,k]),ns=u.useMemo(()=>{const y=We.read;return!y?.binding||We.status!=="ready"||y.binding.state==="bound"?null:Dl(y.binding)?o("gitView.identity.configChanged"):o("gitView.context.needsAttention")},[We.read,We.status,o]),Ae=dd(m||null,$e,We.contexts[0]??null,r&&G==="pr"&&B===!0),Qe=Ae.selectedSource,Ps=u.useMemo(()=>G==="pr"?Qe:G==="branch"&&$e&&et.base?{kind:"branch",baseRef:et.base,headRef:$e}:G==="commit"&&Je?{kind:"commit",hash:Je}:null,[et.base,$e,G,Je,Qe]),Wt=G==="branch"?et.revision:"",Te=hd(m||null,Ps,r&&B===!0,Wt,Ae.readContext,Ae.provider),{fetchDiff:Pt,fetchFullFile:Vt}=Te,rs=u.useMemo(()=>Te.files?[...Te.files].sort((y,W)=>y.path.localeCompare(W.path)):null,[Te.files]),gt=T.type==="comparison"&&T.sourceKey===Te.key?T.path:null,[Tt,dn]=u.useState(0),Hn=u.useCallback(async y=>{try{const{diff:W}=await Pt(y),se={original:"",modified:"",isBinary:fd(W)};return se.isBinary||(se.fileDiff=Ii(y,W)),{status:"ready",diff:se}}catch(W){return{status:"error",message:W instanceof Error?W.message:o("diffView.state.failedToLoadDiff")}}},[Pt,o]),Jn=gd(Te.files?G==="pr"?JSON.stringify([Te.key,Te.revision]):Te.key:null,r&&gt?gt:"",r?Hn:null,Zi,JSON.stringify([Wt,G==="pr"?Te.revision:0,Tt])),lt=gt?Jn.get(gt)??Zi:null,[ze,Ts]=u.useState(null),[Dt,fn]=u.useState(null),is=ze&&ze.source===lt?ze.request:null,os=Dt&&Dt.source===lt?Dt.diff:null;u.useEffect(()=>{const y=lt;if(!is||!gt||y?.status!=="ready"||os)return;let W=!1;const se=gt,ye=async()=>{if(G==="pr"){const{original:ut,modified:Me}=await Vt(se);return{original:ut,modified:Me,fileDiff:wd({name:se,contents:ut},{name:se,contents:Me})}}const{diff:Re}=await Pt(se,Mm);return{original:"",modified:"",fileDiff:Ii(se,Re)}};return(async()=>{try{const Re=await ye();W||fn({source:y,diff:Re})}catch(Re){if(W)return;le.error(Re instanceof Error?Re.message:o("diffView.state.failedToLoadDiff")),Ts(null)}})(),()=>{W=!0}},[lt,gt,os,Pt,Vt,G,is,o]),u.useEffect(()=>{G==="branch"&&As&&ie("working")},[As,ie,G]),u.useEffect(()=>{U(y=>y.ownerKey===Q&&y.route.type==="comparison"&&y.route.sourceKey!==Te.key?{...y,route:fs}:y)},[Te.key,Q]);const ct=u.useMemo(()=>{const y=h?.files??[],W=new Map;for(const se of y)W.set(se.path,se);return Array.from(W.values()).sort((se,ye)=>se.path.localeCompare(ye.path))},[h?.files]),bt=u.useMemo(()=>ct.filter(zm),[ct]),Ds=u.useMemo(()=>ct.filter(Lm),[ct]),Yn=ot,Ut=rt(u.useCallback(y=>!m||T.type!=="diff"?null:y.directories.get(m)?.diffCache.get(eo(T.path,T.staged))??null,[m,T])),as=u.useMemo(()=>T.type!=="diff"?null:ct.find(y=>y.path===T.path)??null,[ct,T]),Ue=u.useCallback(async(y=!0)=>{if(m)try{await Promise.all([F(m,l),L(m,l)])}catch(W){y&&le.error(W instanceof Error?W.message:o("gitView.toast.refreshRepositoryFailed"))}},[m,L,F,l,o]),_s=u.useMemo(()=>(b?.all??[]).filter(y=>!y.startsWith("remotes/")).sort(),[b]),mn=u.useMemo(()=>(b?.all??[]).filter(y=>y.startsWith("remotes/")).map(y=>y.replace(/^remotes\//,"")).sort(),[b]),xt=u.useCallback(async y=>{if(!m)return;const W=y.replace(/^remotes\//,"");try{const se=await l.checkoutBranch(m,W);le.success(o("gitView.toast.checkedOut",{name:se.branch||W})),await Ue()}catch(se){le.error(se instanceof Error?se.message:o("gitView.toast.checkoutFailed",{name:W}))}},[m,l,Ue,o]),pn=u.useCallback(y=>{const W=y.replace(/^remotes\//,"");if((h?.files?.length??0)>0){Fe(W);return}xt(W)},[xt,h?.files]),hn=u.useCallback(async y=>{if(m)try{await l.createBranch(m,y,$e??"HEAD"),await l.checkoutBranch(m,y),await Ue()}catch(W){throw le.error(W instanceof Error?W.message:o("gitView.toast.createBranchFailed")),W}},[$e,m,l,Ue,o]),Gt=u.useCallback(async()=>{if(!m){tt([]);return}try{const y=await l.getRemotes(m);tt(y)}catch{tt([])}},[m,l]),Et=u.useCallback(async()=>{m&&(Promise.allSettled([L(m,l),Gt()]),await F(m,l).catch(()=>{}))},[m,L,F,l,Gt]);u.useEffect(()=>{!m||!r||(D(m),V(m,l))},[m,V,l,D,r]),u.useEffect(()=>{r&&Gt()},[Gt,r]),u.useEffect(()=>{if(!r||G!=="working"||!m||ct.length===0)return;const y=Array.from(new Set([...bt.map(se=>se.path),...Oe,...ct.slice(0,20).map(se=>se.path)])).filter(Boolean);if(y.length===0)return;const W=window.setTimeout(()=>{K(m,l,y,{maxFiles:40})},120);return()=>window.clearTimeout(W)},[ct,m,l,G,K,bt,Oe,r]),u.useEffect(()=>{if(!r)return;if(T.type!=="diff"){At(null);return}const y=eo(T.path,T.staged);if(Es(null),!m||Z(m,y)){At(null);return}let W=!1;const se=rn();return At(null),l.getGitFileDiff(m,{path:T.path,staged:T.staged||void 0}).then(ye=>{W||X(m,y,{original:ye.original??"",modified:ye.modified??"",isBinary:ye.isBinary,submodule:ye.submodule},se)}).catch(ye=>{if(!W){if(ye instanceof bi&&ye.reason!=="path_not_found"){Es({key:`${m}\0${T.path}`,reason:ye.reason});return}ye instanceof bi&&F(m,l,{force:!0,silent:!0}),At(ye instanceof Error?ye.message:String(ye))}}),()=>{W=!0}},[m,ln,F,Z,l,T,X,r]);const _t=async(y,W,se=!1)=>{if(!m)return;const ye=vt.start();if(!ye)return;de(y);const Re=o(y==="fetch"?"gitView.sync.fetch":y==="pull"?"gitView.sync.pull":y==="publish"?"gitView.publish.title":"gitView.sync.syncChanges");let ut=null;try{if(y==="sync"||y==="publish"){const Me=await at.prepare(y==="publish"?"push":"sync",{forceChoose:se,onOperation:ye.onOperation});ut=ql(await Me())}else if(W&&h)await Hl({action:y,directory:m,remoteName:W.name,status:h,sourceControl:f,git:l,onOperation:ye.onOperation});else throw new Ot("tracking-required");if(!ye.isCurrent())return;y==="fetch"&&W?le.success(o("gitView.toast.fetchedFromRemote",{name:W.name})):y==="pull"&&W?le.success(o("gitView.toast.pulledFromRemote",{name:W.name})):y==="sync"?le.success(ut?.kind==="up-to-date"?o("gitView.toast.alreadyUpToDate"):ut?.kind==="pulled"?o("gitView.toast.pulledFromRemote",{name:ut.remoteName}):ut?.kind==="pushed"?o("gitView.toast.pushedToUpstream",{name:ut.remoteName}):o("gitView.toast.syncedChanges")):y==="publish"&&le.success(o("gitView.publish.succeeded")),await Et()}catch(Me){if(Me instanceof En||Me instanceof vr){if(ye.isCurrent()&&await Et(),ye.isCurrent()&&Me instanceof En&&Me.read.availability==="available"&&Me.read.operation.state==="conflicted"&&Me.read.operation.error.code==="CONFLICT"){const yn=((await l.getGitStatus(m).catch(()=>null))?.files??[]).filter(cr).map(nr=>nr.path);yn.length>0&&Ct(yn,"merge")}return}if(Me instanceof Ot&&Me.code==="stale-runtime")return;if(Me instanceof Ot&&at.errorMessage(Me)){le.info(at.errorMessage(Me));return}await Et(),le.error(Me instanceof Ot?Me.code==="contributor-publish-cancelled-after-update"?o("gitView.toast.contributorPublishCancelledAfterUpdate"):Me.code==="contributor-publish-cancelled"?o("gitView.toast.contributorPublishCancelled"):o("gitView.toast.syncActionFailed",{action:Re}):Me instanceof Error?Me.message:o("gitView.toast.syncActionFailed",{action:Re}))}finally{ye.finish(),ye.isCurrent()&&de(null)}},Mt=u.useCallback(async(y,W)=>{if(!(!m||y.length===0))try{W==="stage"?y.length>1?await _l(m,y):await Ml(m,y[0]):y.length>1?await Ol(m,y):await zl(m,y[0]),await Ue(!1)}catch(se){le.error(se instanceof Error?se.message:o(W==="stage"?"gitView.toast.stageFileFailed":"gitView.toast.unstageFileFailed"))}},[m,Ue,o]),Ms=u.useCallback((y,W=!1)=>{q({type:"diff",path:y,staged:W})},[q]),ls=u.useCallback(async y=>{if(m){be(W=>new Set(W).add(y));try{await l.revertGitFile(m,y),le.success(o("gitView.toast.revertedFile",{path:y})),await Ue(!1)}catch(W){le.error(W instanceof Error?W.message:o("gitView.toast.revertFailed"))}finally{be(W=>{const se=new Set(W);return se.delete(y),se})}}},[m,l,Ue,o]),Os=u.useCallback(async y=>{if(!m||y.length===0||me)return;const W=Array.from(new Set(y));Ce(!0),be(new Set(W));try{const se=await _m(W,ye=>l.revertGitFile(m,ye),Om);if(await Ue(!1),se.failures.length===0)le.success(W.length===1?o("gitView.toast.revertedFilesSingle",{count:W.length}):o("gitView.toast.revertedFilesPlural",{count:W.length}));else if(se.failures.length===W.length)le.error(se.failures[0]?.error?.message??o("gitView.toast.revertFailed"));else{const ye=W.length-se.failures.length;le.warning(ye===1?o("gitView.toast.revertedSomeSingle",{success:ye,failed:se.failures.length}):o("gitView.toast.revertedSomePlural",{success:ye,failed:se.failures.length}))}}catch(se){le.error(se instanceof Error?se.message:o("gitView.toast.revertFailed"))}finally{be(new Set),Ce(!1)}},[m,l,me,Ue,o]),gn=u.useCallback(y=>{const W=y.map(se=>se.trim()).filter(Boolean);if(W.length===0){qe([]);return}he(se=>`${se.trim()}${se.trim()?`
23
-
24
- `:""}${W.join(`
25
- `)}`.trim()),qe([])},[]),bn=u.useCallback(async()=>{if(!m)return;const y=bt.map(W=>W.path).sort();if(y.length===0){le.error(o("gitView.toast.selectFileToDescribe"));return}Ie(!0);try{const{message:W}=await Ni(m,y);he(W.subject?.trim()??""),qe(Array.isArray(W.highlights)?W.highlights:[])}catch(W){le.error(W instanceof Error?W.message:o("gitView.toast.generateCommitMessageFailed"))}finally{Ie(!1)}},[m,bt,o]),zs=async(y={})=>{if(!m)return;if(!Se.trim()){le.error(o("gitView.toast.enterCommitMessage"));return}const W=bt.map(Re=>Re.path).sort();if(W.length===0){le.error(o("gitView.toast.selectFileToCommit"));return}je(y.pushAfter?"commitAndPush":"commit");let se=null,ye="pending";try{if(await l.createGitCommit(m,Se.trim(),{files:W}),ye="local",le.success(o("gitView.toast.commitCreated")),he(""),qe([]),y.pushAfter){if(se=vt.start(),!se){le.warning(o("gitView.publish.commitKept")),await Et();return}const Re=await at.prepare("push",{onOperation:se.onOperation});de("publish"),await Re(),ye="published",le.success(o("gitView.publish.succeeded"))}await Et()}catch(Re){if(y.pushAfter&&ye==="local"&&le.warning(o("gitView.publish.commitKept")),Re instanceof En||Re instanceof vr){await Et();return}if(Re instanceof Ot&&Re.code==="stale-runtime")return;if(Re instanceof Ot&&at.errorMessage(Re)){le.info(at.errorMessage(Re));return}y.pushAfter&&await Et(),le.error(Re instanceof Ot?Re.code==="contributor-publish-cancelled-after-update"?o("gitView.toast.contributorPublishCancelledAfterUpdate"):Re.code==="contributor-publish-cancelled"?o("gitView.toast.contributorPublishCancelled"):o("gitView.toast.syncActionFailed",{action:o("gitView.sync.syncChanges")}):Re instanceof Error?Re.message:o("gitView.toast.createCommitFailed"))}finally{se?.finish(),je(null),y.pushAfter&&de(null)}},Xn=u.useMemo(()=>(h?.files??[]).filter(cr).length,[h?.files]),Kt=!!h?.mergeInProgress?.head,Qn=u.useCallback(async()=>{if(m)try{if(Kt){const y=await l.continueMerge(m);y.conflict?(Ct(y.conflictFiles??[],"merge"),le.error(o("gitView.toast.mergeConflictsDetected"))):le.success(o("gitView.toast.mergeCompleted"))}else{const y=await l.continueRebase(m);y.conflict?(Ct(y.conflictFiles??[],"rebase"),le.error(o("gitView.toast.rebaseConflictsDetected"))):le.success(o("gitView.toast.rebaseStepCompleted"))}await Ue(!1)}catch(y){le.error(y instanceof Error?y.message:o("gitView.toast.continueOperationFailed"))}},[m,l,Kt,Ct,Ue,o]),xn=u.useCallback(async y=>{if(m)try{y==="merge"?(await l.abortMerge(m),le.success(o("gitView.toast.mergeAborted"))):(await l.abortRebase(m),le.success(o("gitView.toast.rebaseAborted"))),await Ue(!1)}catch(W){le.error(W instanceof Error?W.message:o("gitView.toast.abortOperationFailed"))}},[m,l,Ue,o]),Zn=u.useCallback(()=>{const y=(h?.files??[]).filter(cr).map(W=>W.path);Ct(y,Kt?"merge":"rebase")},[Kt,Ct,h?.files]),er=u.useMemo(()=>{const y=[];return bt.length>0&&y.push({id:"staged",title:o("gitView.changes.stagedTitle"),entries:bt,statsScope:"staged",actionSymbol:"-",actionAllLabel:o("gitView.changes.unstageAllAria"),getActionLabel:W=>o("gitView.changes.unstageFileAria",{path:W}),onActionFile:W=>{Mt([W],"unstage")},onActionAll:W=>{Mt(W,"unstage")},onViewDiff:W=>Ms(W,!0),onRevertFile:ls,showRevertActions:!1,accent:!0}),Ds.length>0&&y.push({id:"unstaged",title:o("gitView.changes.title"),entries:Ds,statsScope:"working",actionSymbol:"+",actionAllLabel:o("gitView.changes.stageAllAria"),getActionLabel:W=>o("gitView.changes.stageFileAria",{path:W}),onActionFile:W=>{Mt([W],"stage")},onActionAll:W=>{Mt(W,"stage")},onViewDiff:W=>Ms(W,!1),onRevertFile:ls}),y},[ls,Ms,Mt,bt,o,Ds]),Ls=t.jsxs(t.Fragment,{children:[at.context?t.jsx(ed,{context:at.context,onSelect:at.settle}):null,at.confirmDialog,t.jsx(td,{candidates:Zt.candidates,onSelect:Zt.settle})]}),Bs=y=>t.jsxs("div",{className:"flex h-full flex-col overflow-hidden bg-background text-foreground",children:[Ls,t.jsxs("header",{className:"flex h-[var(--oc-header-height,56px)] shrink-0 items-center gap-2 px-3 text-foreground",children:[s?t.jsx("button",{type:"button",className:"-ml-1 flex size-10 shrink-0 items-center justify-center rounded-full text-muted-foreground transition-colors hover:bg-interactive-hover hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring","aria-label":o("mobile.surface.closeAria"),onClick:s,style:{touchAction:"manipulation"},children:t.jsx(H,{name:"close",className:"size-5"})}):null,t.jsxs("div",{className:"min-w-0 flex-1 px-1",children:[t.jsx("h2",{className:"typography-ui-label text-foreground",children:o("mobile.nav.changes")}),t.jsx("p",{className:"truncate typography-micro text-muted-foreground",children:h?.current||m||""})]}),c===!1&&Array.isArray(g)&&g.length>0?t.jsx(ru,{repositories:g,selectedRepository:p??null,onSelectRepository:W=>{n&&_(n,W)},repositoryRoot:n??void 0}):null]}),t.jsx("div",{className:"min-h-0 flex-1",children:y})]});if(!m)return Bs(t.jsx(mt,{message:o("gitView.empty.selectSessionOrDirectory")}));if(c===!1&&B!==!0)return Bs(t.jsx(ou,{root:n,rootIsGitRepo:c,resolvedIsGitRepo:B,nestedRepos:g,onRetryDiscovery:()=>{n&&A(n,{force:!0})}}));if(I&&B===null)return Bs(t.jsx(mt,{loading:!0,message:o("gitView.loading.checkingRepository")}));if(T.type==="diff")return t.jsx(to,{path:T.path,diff:Ut,staged:T.staged,fileExists:!!as,unavailableReason:an?.key===`${m}\0${T.path}`?an.reason:null,error:Gn,onBack:()=>q({type:"list"}),onRetry:()=>cn(y=>y+1)});const Fs=o(G==="pr"?jn("session.githubIntegration.tabs.pullRequests",Ae.provider):G==="branch"?"diffView.scope.branch":G==="commit"?"commitComparison.mode":"mobile.nav.changes"),tr=G==="branch"&&et.base?Xc(et.base):G==="commit"?Je?.slice(0,8):G==="pr"&&Qe?`#${Qe.number}`:null;if(gt&&lt)return t.jsx(to,{path:gt,subtitle:[Fs,tr].filter(Boolean).join(" · "),diff:os??(lt.status==="ready"?lt.diff:null),fileExists:!Te.files||Te.files.some(y=>y.path===gt),error:Te.error??(lt.status==="error"?lt.message:null),onBack:()=>q(fs),onRetry:()=>{Te.error&&Te.refresh(),dn(y=>y+1)},onExpandContextRequest:lt.status==="ready"?y=>Ts({source:lt,request:y}):void 0,pendingContextExpansion:is,contextLoading:is!==null&&!os});const sr=()=>G==="pr"&&!Qe?t.jsxs("div",{className:"flex h-full flex-col items-center justify-center gap-3 px-6 text-center",children:[t.jsx(mt,{loading:Ae.loading,message:Ae.error??(Ae.loading?o(jn("session.githubPrPicker.loading.pullRequests",Ae.provider)):o(jn("pullRequestComparison.select",Ae.provider)))}),!Ae.loading&&t.jsx(Ai,{mobile:!0,comparison:Ae})]}):G==="branch"&&!et.base?t.jsx(mt,{loading:!et.resolved,message:et.resolved?o("gitView.pr.toast.baseBranchRequired"):o("diffView.branch.resolvingBase")}):G==="commit"&&!Je?t.jsxs("div",{className:"flex h-full flex-col items-center justify-center gap-3 px-6 text-center",children:[Xe.loading&&t.jsx(H,{name:"loader-4",className:"size-5 animate-spin text-muted-foreground"}),t.jsx("p",{className:"typography-ui-label text-muted-foreground",children:Xe.loading?o("diffView.state.loadingChanges"):Xe.error??o("commitComparison.noCommits")}),Xe.error&&t.jsx(Ne,{variant:"outline",size:"lg",onClick:()=>{Xe.refresh()},children:o("diffView.actions.retry")})]}):Te.error?t.jsxs("div",{className:"flex h-full flex-col items-center justify-center gap-3 px-6 text-center",children:[t.jsx("p",{className:"typography-ui-label font-semibold",children:o("diffView.state.failedToLoadDiff")}),t.jsx("p",{className:"typography-meta text-muted-foreground",children:Te.error}),t.jsx(Ne,{variant:"outline",size:"lg",onClick:()=>{Te.refresh()},children:o("diffView.actions.retry")})]}):rs?rs.length===0?t.jsx(mt,{icon:G==="branch",message:G==="pr"?o("walkthrough.blocked.emptyDiff.description"):G==="commit"?o("commitComparison.emptyDiff"):o("diffView.branch.empty",{base:tr??""})}):t.jsx($m,{files:rs,onSelect:y=>{Te.key&&q({type:"comparison",path:y,sourceKey:Te.key})}}):t.jsx(mt,{loading:!0,message:o("diffView.state.loadingChanges")});return t.jsxs("div",{className:"flex h-full flex-col overflow-hidden bg-background text-foreground",children:[Ls,t.jsxs("header",{className:"flex shrink-0 flex-wrap items-center gap-2 border-b border-border/60 px-3 py-2",children:[s?t.jsx("button",{type:"button",className:"-ml-1 flex size-10 shrink-0 items-center justify-center rounded-full text-muted-foreground transition-colors hover:bg-interactive-hover hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring","aria-label":o("mobile.surface.closeAria"),onClick:s,style:{touchAction:"manipulation"},children:t.jsx(H,{name:"close",className:"size-5"})}):null,t.jsxs(Ll,{open:ne,onOpenChange:re,children:[t.jsx(Bl,{asChild:!0,children:t.jsxs(Ne,{variant:"outline",className:Fl({size:"default"}),"data-mobile-comparison-trigger":!0,"aria-label":o("diffView.scope.selectorAria"),children:[t.jsx("span",{children:Fs}),t.jsx(H,{name:"arrow-down-s",className:"size-4"})]})}),t.jsx($l,{align:"start",children:t.jsxs(Wl,{value:G,onValueChange:y=>{(y==="working"||y==="branch"||y==="commit"||y==="pr")&&ie(y)},children:[t.jsx(kn,{value:"working",className:"min-h-8 items-center",children:o("mobile.nav.changes")}),pt&&t.jsx(kn,{value:"branch",className:"min-h-8 items-center",children:o("diffView.scope.branch")}),t.jsx(kn,{value:"commit",className:"min-h-8 items-center",children:o("commitComparison.mode")}),t.jsx(kn,{value:"pr",className:"min-h-8 items-center",children:o(jn("session.githubIntegration.tabs.pullRequests",Ae.provider))})]})})]}),r&&G==="branch"&&t.jsx(md,{mobile:!0,branches:b?.all??[],currentBranch:$e,base:et.base,onSelect:y=>{$e&&ht(m,$e,y)}},JSON.stringify([Q,$e])),r&&G==="commit"&&t.jsx(pd,{mobile:!0,commits:Xe.commits,selectedHash:Je,loading:Xe.loading,error:Xe.error,onSelect:Xe.select,onRefresh:()=>{Xe.refresh()}},JSON.stringify([Q,$e])),r&&G==="pr"&&t.jsxs(t.Fragment,{children:[t.jsx(Ai,{mobile:!0,comparison:Ae},JSON.stringify([Q,$e])),Qe&&t.jsx(Ne,{variant:"ghost",size:"sm",disabled:Te.loading,"aria-label":o("session.githubIssuePicker.actions.refresh"),onClick:()=>{Te.refresh()},children:t.jsx(H,{name:"refresh",className:"size-4"})})]})]}),G==="working"&&t.jsxs("div",{className:"flex shrink-0 items-center gap-2 px-3 py-2",children:[t.jsx("div",{className:"min-w-0 flex-1",children:t.jsx(Qc,{currentBranch:h?.current,localBranches:_s,remoteBranches:mn,branchInfo:b?.branches,currentBranchAhead:h?.ahead,onCheckout:y=>{pn(y)},onCreate:hn,disabled:I,directory:m,switchBlockedNotice:(h?.files?.length??0)>0?o("gitView.branch.switchBlockedNotice"):null})}),t.jsx(Zc,{activeProfile:ss,identities:M,attention:ns,triggerClassName:"max-w-[10rem] shrink [&_.git-identity-label]:hidden sm:[&_.git-identity-label]:inline",onOpen:()=>{C(f,P.map(y=>y.account))},onSelect:y=>{O(y)},isApplying:w,onConfigure:()=>R(!0),applicability:y=>{const W=We.read?.repository.remotes.find(se=>se.name===$t);return W?eu(y,Vl(W.fetch.displayUrl)):{applicable:!0}}}),t.jsx(tu,{syncAction:vt.entry?.executing?ae:null,remotes:Yn,onFetch:y=>{_t("fetch",y)},onPull:y=>{_t("pull",y)},onSync:y=>{_t("sync",y)},onPublish:()=>{_t("publish")},onChooseSyncTargets:()=>{_t("sync",void 0,!0)},currentBranch:h?.current,hasTracking:!!h?.tracking,disabled:I||vt.blocked,aheadCount:h?.ahead??0,behindCount:h?.behind??0,trackingRemoteName:h?.tracking?.split("/")[0],trackingBranch:h?.tracking,hasUncommittedChanges:su(ct)})]}),t.jsx(sd,{open:x,onOpenChange:R,directory:m}),t.jsx(nu,{className:"mx-3 mt-3",entry:vt.entry,onRefresh:()=>{vt.refresh()},onCancel:()=>{vt.cancel()}}),G==="working"&&t.jsx(nd,{mergeInProgress:h?.mergeInProgress,rebaseInProgress:h?.rebaseInProgress,onContinue:Qn,onAbort:()=>xn(Kt?"merge":"rebase"),onResolveWithAI:Zn,conflictCount:Xn,isLoading:ae!==null||ve!==null}),G!=="working"?t.jsx("div",{className:"min-h-0 flex-1",children:sr()}):ct.length>0?t.jsxs("div",{className:"flex min-h-0 flex-1 flex-col",children:[t.jsx("div",{className:"min-h-0 flex-1 overflow-hidden px-4 pt-4",children:t.jsx(rd,{groups:er,diffStats:h?.diffStats,revertingPaths:Y,onRevertAll:Os,isRevertingAll:me,headerBackgroundClassName:"bg-transparent",onVisiblePathsChange:He})}),t.jsx("div",{className:"shrink-0 border-t border-border/70 px-4 pb-4 pt-3",children:t.jsx(id,{stagedCount:bt.length,commitMessage:Se,onCommitMessageChange:he,generatedHighlights:_e,onInsertHighlights:gn,onGenerateMessage:bn,isGeneratingMessage:Pe,onCommit:()=>{zs({pushAfter:!1})},onCommitAndPush:()=>{zs({pushAfter:!0})},commitAction:ve,networkOperationBlocked:vt.blocked,gitmojiEnabled:!1,onOpenGitmojiPicker:()=>{}})})]}):t.jsx("div",{className:"min-h-0 flex-1",children:t.jsx(mt,{icon:!0,message:o("gitView.empty.cleanTitle"),description:o("mobile.changes.cleanDescription")})}),m&&t.jsx(od,{open:ts,onOpenChange:un,conflictFiles:Is,directory:m,operation:Ft,onAbort:()=>{xn(Ft)},onNavigatedToChat:a}),t.jsx(ad,{open:es!==null,onOpenChange:y=>{y||Fe(null)},targetBranch:es??"",changedFileCount:h?.files?.length??0,onCommitAndSwitch:async(y,W)=>{const se=es;if(!se||!m)return;const ye=h?.current??null;if(await l.createGitCommit(m,y,{addAll:!0}),W)try{await(await at.prepare("push"))()}catch{le.error(o("gitView.dirtySwitch.pushFailed")),await Ue(),Fe(null);return}le.success(ye?W?o("gitView.publish.succeeded"):o("gitView.dirtySwitch.committedNotPushed",{branch:ye}):o("gitView.toast.commitCreated")),await Ue(),Fe(null),await xt(se)},onGenerateMessage:async()=>{if(!m)return"";const y=(h?.files??[]).map(se=>se.path).sort(),{message:W}=await Ni(m,y);return W.subject?.trim()??""},onRevertAndSwitch:async()=>{const y=es;if(!y||!m)return;await Os((h?.files??[]).map(se=>se.path));const W=await l.getGitStatus(m);if(!W.isClean&&(W.files?.length??0)>0){le.error(o("gitView.dirtySwitch.revertIncomplete"));return}Fe(null),await xt(y)}})]})},mt=n=>{const e=fe.c(13),{message:s,description:i,loading:r,icon:a}=n,o=r===void 0?!1:r,l=a===void 0?!1:a;let f;e[0]!==o?(f=o?t.jsx(H,{name:"loader-4",className:"size-5 animate-spin text-muted-foreground"}):null,e[0]=o,e[1]=f):f=e[1];let c;e[2]!==l?(c=l?t.jsx(H,{name:"git-branch",className:"size-6 text-muted-foreground"}):null,e[2]=l,e[3]=c):c=e[3];let p;e[4]!==s?(p=t.jsx("p",{className:"typography-ui-label font-semibold text-foreground",children:s}),e[4]=s,e[5]=p):p=e[5];let g;e[6]!==i?(g=i?t.jsx("p",{className:"typography-meta text-muted-foreground",children:i}):null,e[6]=i,e[7]=g):g=e[7];let m;return e[8]!==f||e[9]!==c||e[10]!==p||e[11]!==g?(m=t.jsx("div",{className:"flex h-full items-center justify-center px-6 text-center",children:t.jsxs("div",{className:"flex max-w-sm flex-col items-center gap-2",children:[f,c,p,g]})}),e[8]=f,e[9]=c,e[10]=p,e[11]=g,e[12]=m):m=e[12],m},to=n=>{const e=fe.c(34),{path:s,subtitle:i,diff:r,staged:a,fileExists:o,unavailableReason:l,error:f,onBack:c,onRetry:p,onExpandContextRequest:g,pendingContextExpansion:m,contextLoading:h}=n,b=a===void 0?!1:a,S=l===void 0?null:l,{t:x}=xe();let R;e[0]!==s?(R=Ul(s)||"text",e[0]=s,e[1]=R):R=e[1];const w=R;let E;e[2]!==x?(E=x("header.actions.backAria"),e[2]=x,e[3]=E):E=e[3];let P;e[4]===Symbol.for("react.memo_cache_sentinel")?(P=t.jsx(H,{name:"arrow-left",className:"size-5"}),e[4]=P):P=e[4];let k;e[5]!==c||e[6]!==E?(k=t.jsx("button",{type:"button",className:"flex size-9 shrink-0 items-center justify-center rounded-lg text-muted-foreground hover:bg-interactive-hover hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring","aria-label":E,onClick:c,children:P}),e[5]=c,e[6]=E,e[7]=k):k=e[7];let j;e[8]!==s?(j=t.jsx("h2",{className:"truncate typography-ui-header text-foreground",children:s}),e[8]=s,e[9]=j):j=e[9];let v;e[10]!==i?(v=i&&t.jsx("p",{className:"truncate typography-meta text-muted-foreground",children:i}),e[10]=i,e[11]=v):v=e[11];let N;e[12]!==j||e[13]!==v?(N=t.jsxs("div",{className:"min-w-0 flex-1 px-2",children:[j,v]}),e[12]=j,e[13]=v,e[14]=N):N=e[14];let C;e[15]!==k||e[16]!==N?(C=t.jsxs("header",{className:"flex h-[var(--oc-header-height,56px)] shrink-0 items-center gap-3 border-b border-border/70 px-3 text-foreground",children:[k,N]}),e[15]=k,e[16]=N,e[17]=C):C=e[17];let M;e[18]!==h||e[19]!==r||e[20]!==f||e[21]!==o||e[22]!==w||e[23]!==g||e[24]!==p||e[25]!==s||e[26]!==m||e[27]!==b||e[28]!==x||e[29]!==S?(M=t.jsx("div",{className:"min-h-0 flex-1 overflow-hidden",children:o?S==="nested_repository"?t.jsx(mt,{icon:!0,message:x("diffView.unavailable.nestedRepositoryTitle"),description:x("diffView.unavailable.nestedRepositoryDescription")}):S==="untracked_directory"?t.jsx(mt,{icon:!0,message:x("diffView.unavailable.untrackedDirectoryTitle"),description:x("diffView.unavailable.untrackedDirectoryDescription")}):f?t.jsx("div",{className:"flex h-full items-center justify-center px-6 text-center",children:t.jsxs("div",{className:"flex max-w-sm flex-col items-center gap-3",children:[t.jsx("p",{className:"typography-ui-label font-semibold text-foreground",children:x("mobile.changes.diffDetail.loadFailed")}),t.jsx("p",{className:"typography-meta text-muted-foreground",children:f}),t.jsx(Ne,{type:"button",size:"sm",variant:"outline",onClick:p,children:x("diffView.actions.retry")})]})}):r?r.submodule?t.jsx("div",{className:"p-3",children:t.jsx(xd,{state:r.submodule,staged:b})}):r.isBinary?t.jsx(mt,{icon:!0,message:x("diffView.binary.unavailable")}):Gl(s)&&!r.fileDiff?t.jsx(mt,{icon:!0,message:x("mobile.changes.diffDetail.imageUnavailable")}):t.jsx($n,{className:"h-full overflow-y-auto overflow-x-hidden p-3","data-diff-virtual-root":!0,"data-diff-virtual-content":!0,children:t.jsx(vd,{original:r.original,modified:r.modified,fileDiff:r.fileDiff,language:w,fileName:s,renderSideBySide:!1,wrapLines:!0,layout:"inline",onExpandContextRequest:g,pendingContextExpansion:m,contextLoading:h})}):t.jsx(mt,{loading:!0,message:x("diffView.state.loadingDiff")}):t.jsx(mt,{icon:!0,message:x("mobile.changes.diffDetail.missingTitle"),description:x("mobile.changes.diffDetail.missingDescription")})}),e[18]=h,e[19]=r,e[20]=f,e[21]=o,e[22]=w,e[23]=g,e[24]=p,e[25]=s,e[26]=m,e[27]=b,e[28]=x,e[29]=S,e[30]=M):M=e[30];let O;return e[31]!==C||e[32]!==M?(O=t.jsxs("div",{className:"flex h-full flex-col overflow-hidden bg-background text-foreground",children:[C,M]}),e[31]=C,e[32]=M,e[33]=O):O=e[33],O},$m=n=>{const e=fe.c(12),{files:s,onSelect:i}=n,{t:r}=xe();let a;e[0]!==r?(a=r("gitView.changes.changedFilesAria"),e[0]=r,e[1]=a):a=e[1];let o;if(e[2]!==s||e[3]!==i||e[4]!==r){let f;e[6]!==i||e[7]!==r?(f=c=>{const p=c.status==="A"?r("diffView.change.new"):c.status==="D"?r("diffView.change.deleted"):c.status==="R"?r("diffView.change.renamed"):c.status==="C"?r("diffView.change.copied"):r("diffView.change.modified"),g=c.status==="A"?"var(--status-success)":c.status==="D"?"var(--status-error)":c.status==="R"||c.status==="C"?"var(--status-info)":"var(--status-warning)";return t.jsx("li",{children:t.jsxs(Ne,{variant:"ghost",size:"lg",className:"w-full justify-start gap-2.5 text-left normal-case",onClick:()=>i(c.path),children:[t.jsx("span",{className:"w-4 shrink-0 text-center typography-meta font-semibold uppercase",style:{color:g},"aria-label":p,children:c.status}),t.jsx(Mo,{filePath:c.path,className:"size-4 shrink-0"}),t.jsx("span",{className:"min-w-0 flex-1 truncate typography-ui-label",title:c.path,children:c.path}),(c.insertions>0||c.deletions>0)&&t.jsxs("span",{className:"shrink-0 typography-meta text-muted-foreground",children:["+",c.insertions," -",c.deletions]}),t.jsx(H,{name:"arrow-right-s",className:"size-4 shrink-0 text-muted-foreground"})]})},c.path)},e[6]=i,e[7]=r,e[8]=f):f=e[8],o=s.map(f),e[2]=s,e[3]=i,e[4]=r,e[5]=o}else o=e[5];let l;return e[9]!==a||e[10]!==o?(l=t.jsx($n,{className:"h-full overflow-y-auto overflow-x-hidden px-3 py-2",children:t.jsx("ul",{"aria-label":a,className:"flex flex-col gap-1",children:o})}),e[9]=a,e[10]=o,e[11]=l):l=e[11],l},Wm=u.lazy(()=>js(()=>import("./FilesView-DT0uEYgT.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127])).then(n=>({default:n.FilesView}))),Nt=n=>on(n)??"",Qs=n=>{const e=Nt(n);return!e||e==="/"?e||"/":e.split("/").filter(Boolean).at(-1)??e},Vm=n=>{const e=Nt(n);if(!e||e==="/")return null;const s=e.lastIndexOf("/");return s<=0?e.startsWith("/")?"/":null:e.slice(0,s)},Um=(n,e)=>{const s=Nt(n),i=Nt(e);return!i||s===i?Qs(s):s.startsWith(`${i}/`)?s.slice(i.length+1):s},Gm=n=>{if(typeof n!="number"||!Number.isFinite(n)||n<0)return"";if(n<1024)return`${n} B`;const e=["KB","MB","GB"];let s=n/1024;for(const i of e){if(s<1024||i===e[e.length-1])return`${s.toFixed(s>=10?0:1)} ${i}`;s/=1024}return""},Km=n=>{const e=fe.c(6),{onClose:s,visible:i}=n,r=i===void 0?!0:i,a=Mr()??null;let o;e[0]!==a?(o=Nt(a),e[0]=a,e[1]=o):o=e[1];const l=o;let f;return e[2]!==s||e[3]!==l||e[4]!==r?(f=t.jsx(qm,{root:l,onClose:s,visible:r},l),e[2]=s,e[3]=l,e[4]=r,e[5]=f):f=e[5],f},qm=({root:n,onClose:e,visible:s})=>{const{t:i}=xe(),{files:r}=Fn(),a=Ma(U=>U.setSelectedPath),[o,l]=u.useState(()=>({type:"browser",directory:n})),[f,c]=u.useState([]),[p,g]=u.useState(!1),[m,h]=u.useState(null),[b,S]=u.useState(""),[x,R]=u.useState([]),[w,E]=u.useState(!1),P=u.useRef(0),k=o.type==="browser"?o.directory:o.returnDirectory,j=u.useRef(k);j.current=k;const v=u.useCallback(async(U,G)=>{if(!U)return;const T=P.current+1;P.current=T,g(!0),G?.background||h(null);try{const ne=await r.listDirectory(U);if(P.current!==T)return;h(null),c(ne.entries.slice().sort((re,ie)=>re.isDirectory!==ie.isDirectory?re.isDirectory?-1:1:re.name.localeCompare(ie.name)))}catch(ne){if(P.current!==T)return;if(G?.background){console.error("Failed to reload mobile directory:",ne);return}c([]),h(ne instanceof Error?ne.message:i("mobile.files.error.listFailed"))}finally{P.current===T&&g(!1)}},[r,i]);u.useEffect(()=>{o.type==="browser"&&v(o.directory)},[v,o]);const N=u.useRef(o);N.current=o;const C=u.useRef(f);C.current=f;const M=u.useCallback(({directories:U})=>{const G=N.current;G.type==="browser"&&(U&&!U.some(T=>Nt(T)===Nt(G.directory))||C.current.length>au||v(G.directory,{background:!0}))},[v]);lu({root:n,active:s,whileInactive:"hold",onChanges:M});const O=u.useCallback(async U=>{Nt(U)===Nt(j.current)&&await v(j.current)},[v]),{canUpload:B,uploadingDirectory:I,pickFiles:D,uploadElements:V}=cu({root:n,refreshDirectory:O}),A=I!==null;u.useEffect(()=>{if(o.type!=="browser")return;const U=b.trim();if(!U){R([]),E(!1);return}let G=!1;const T=window.setTimeout(()=>{E(!0),r.search({directory:o.directory,query:U,maxResults:40}).then(ne=>{G||R(ne)}).catch(()=>{G||R([])}).finally(()=>{G||E(!1)})},250);return()=>{G=!0,window.clearTimeout(T)}},[r,b,o]);const _=U=>{S(""),l({type:"browser",directory:U})},F=U=>{a(n,U),l({type:"file",path:U,returnDirectory:k||n})},L=Be(U=>U.pendingFileFocusPath),K=Be(U=>U.pendingFileNavigation);if(u.useEffect(()=>{const U=Nt(K?.path??L??"");!U||!n||(a(n,U,{allowOutsideRoot:!0}),l({type:"file",path:U,returnDirectory:n}),L&&Be.getState().setPendingFileFocusPath(null))},[L,K,n,a]),!n)return t.jsx(Zs,{message:i("mobile.files.empty.noDirectory")});if(o.type==="file")return t.jsxs("div",{className:"flex h-full flex-col overflow-hidden bg-background text-foreground",children:[t.jsxs("header",{className:"flex h-[var(--oc-header-height,56px)] shrink-0 items-center gap-2 border-b border-border/70 px-3 text-foreground",children:[t.jsx("button",{type:"button",className:"-ml-1 flex size-10 shrink-0 items-center justify-center rounded-lg text-muted-foreground hover:bg-interactive-hover hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring","aria-label":i("header.actions.backAria"),onClick:()=>l({type:"browser",directory:o.returnDirectory}),style:{touchAction:"manipulation"},children:t.jsx(Ei,{className:"size-5"})}),t.jsx("div",{className:"min-w-0 flex-1",children:t.jsx("h2",{className:"truncate typography-ui-header text-foreground",children:Qs(o.path)})})]}),t.jsx("div",{className:"min-h-0 flex-1 overflow-hidden",children:t.jsx(Ye,{children:t.jsx(u.Suspense,{fallback:t.jsx(Zs,{loading:!0,message:i("filesView.state.loading")}),children:t.jsx(Wm,{mode:"editor-only"})})})})]});const Z=o.directory===n?i("mobile.files.rootDirectory"):Qs(o.directory),X=b.trim()?x:[],te=Vm(o.directory),Q=o.directory!==n&&te!==null&&(te===n||te.startsWith(`${n}/`)),pe=Q&&!b.trim(),ue=Q?te:null;return t.jsxs("div",{className:"flex h-full flex-col overflow-hidden bg-background text-foreground",children:[V,t.jsxs("header",{className:"flex h-[var(--oc-header-height,56px)] shrink-0 items-center gap-2 px-3 text-foreground",children:[e?t.jsx("button",{type:"button",className:"-ml-1 flex size-10 shrink-0 items-center justify-center rounded-full text-muted-foreground transition-colors hover:bg-interactive-hover hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring","aria-label":i("mobile.surface.closeAria"),onClick:e,style:{touchAction:"manipulation"},children:t.jsx(Uu,{className:"size-5"})}):null,pe&&ue?t.jsx("button",{type:"button",className:"flex size-10 shrink-0 items-center justify-center rounded-full text-muted-foreground transition-colors hover:bg-interactive-hover hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring","aria-label":i("mobile.files.backToParentAria",{name:Qs(ue)}),onClick:()=>_(ue),style:{touchAction:"manipulation"},children:t.jsx(Ei,{className:"size-5"})}):null,t.jsx("div",{className:"min-w-0 flex-1 px-1",children:t.jsx("h2",{className:"truncate typography-ui-label text-foreground",children:Z})}),t.jsx("button",{type:"button",className:"flex size-10 shrink-0 items-center justify-center rounded-full text-muted-foreground transition-colors hover:bg-interactive-hover hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring","aria-label":i("mobile.files.refreshAria"),onClick:()=>{v(o.directory)},style:{touchAction:"manipulation"},children:t.jsx(Gu,{className:ee("size-5",p&&"animate-spin")})}),B?t.jsx("button",{type:"button",className:"flex size-10 shrink-0 items-center justify-center rounded-full text-muted-foreground transition-colors hover:bg-interactive-hover hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:opacity-50","aria-label":i("sidebarFilesTree.actions.uploadFilesTitle"),onClick:()=>D(o.directory),disabled:A,style:{touchAction:"manipulation"},children:t.jsx(H,{name:A?"loader-4":"upload-2",className:ee("size-5",A&&"animate-spin")})}):null]}),t.jsx("div",{className:"shrink-0 px-4 pb-2 pt-1",children:t.jsxs("div",{className:"relative",children:[t.jsx(Ku,{className:"pointer-events-none absolute left-3 top-1/2 size-4 -translate-y-1/2 text-muted-foreground"}),t.jsx(Io,{value:b,onChange:U=>S(U.target.value),placeholder:i("mobile.files.search.placeholder"),className:"h-11 pl-9"})]})}),t.jsx($n,{className:"min-h-0 flex-1 overflow-y-auto px-4 pb-3",children:m?t.jsx(Zs,{message:m}):b.trim()?t.jsx(Hm,{results:X,isSearching:w,onOpenFile:F}):t.jsxs("div",{className:"overflow-hidden rounded-2xl border border-border/70 bg-[var(--surface-elevated)]",children:[f.length===0&&!p?t.jsx("div",{className:"px-4 py-8 text-center typography-body text-muted-foreground",children:i("mobile.files.empty.directory")}):null,f.map(U=>t.jsx(xa,{name:U.name,path:U.path,directory:U.isDirectory,meta:U.isDirectory?void 0:Gm(U.size),onClick:()=>U.isDirectory?_(U.path):F(U.path)},U.path))]})})]})},xa=n=>{const e=fe.c(16),{name:s,path:i,directory:r,meta:a,onClick:o}=n;let l;e[0]===Symbol.for("react.memo_cache_sentinel")?(l={touchAction:"manipulation"},e[0]=l):l=e[0];let f;e[1]!==r||e[2]!==i?(f=r?t.jsx(Ju,{className:"size-5 shrink-0 text-primary/80"}):t.jsx(Mo,{filePath:i,className:"size-5 shrink-0"}),e[1]=r,e[2]=i,e[3]=f):f=e[3];let c;e[4]!==s?(c=t.jsx("span",{className:"block min-w-0 flex-1 truncate typography-ui-label text-foreground",children:s}),e[4]=s,e[5]=c):c=e[5];let p;e[6]!==a?(p=a?t.jsx("span",{className:"shrink-0 typography-micro text-muted-foreground",children:a}):null,e[6]=a,e[7]=p):p=e[7];let g;e[8]!==r?(g=r?t.jsx(Yu,{className:"size-4 shrink-0 text-muted-foreground/60"}):null,e[8]=r,e[9]=g):g=e[9];let m;return e[10]!==o||e[11]!==f||e[12]!==c||e[13]!==p||e[14]!==g?(m=t.jsxs("button",{type:"button",className:"flex min-h-14 w-full items-center gap-3 border-b border-border/70 px-3 py-2.5 text-left transition-colors last:border-b-0 hover:bg-interactive-hover focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-inset",onClick:o,style:l,children:[f,c,p,g]}),e[10]=o,e[11]=f,e[12]=c,e[13]=p,e[14]=g,e[15]=m):m=e[15],m},Hm=n=>{const e=fe.c(10),{results:s,isSearching:i,onOpenFile:r}=n,{t:a}=xe(),o=Nt(Mr()??null);if(i){let p;e[0]!==a?(p=a("common.loading"),e[0]=a,e[1]=p):p=e[1];let g;return e[2]!==p?(g=t.jsx(Zs,{loading:!0,message:p}),e[2]=p,e[3]=g):g=e[3],g}if(s.length===0){let p;e[4]!==a?(p=a("mobile.files.search.empty"),e[4]=a,e[5]=p):p=e[5];let g;return e[6]!==p?(g=t.jsx(Zs,{message:p}),e[6]=p,e[7]=g):g=e[7],g}const l="overflow-hidden rounded-2xl border border-border/70 bg-[var(--surface-elevated)]",f=s.map(p=>t.jsx(xa,{name:Qs(p.path),path:p.path,directory:!1,meta:Um(p.path,o),onClick:()=>r(p.path)},p.path));let c;return e[8]!==f?(c=t.jsx("div",{className:l,children:f}),e[8]=f,e[9]=c):c=e[9],c},Zs=n=>{const e=fe.c(7),{message:s,loading:i}=n,r=i===void 0?!1:i;let a;e[0]!==r?(a=r?t.jsx(qu,{className:"size-5 animate-spin text-muted-foreground"}):t.jsx(Hu,{className:"size-6 text-muted-foreground"}),e[0]=r,e[1]=a):a=e[1];let o;e[2]!==s?(o=t.jsx("p",{className:"typography-ui-label font-semibold text-foreground",children:s}),e[2]=s,e[3]=o):o=e[3];let l;return e[4]!==a||e[5]!==o?(l=t.jsx("div",{className:"flex h-full items-center justify-center px-6 text-center",children:t.jsxs("div",{className:"flex max-w-sm flex-col items-center gap-2",children:[a,o]})}),e[4]=a,e[5]=o,e[6]=l):l=e[6],l},so="mobile-surface-root",Jm=16,no=320,Ym="cubic-bezier(0.22, 1, 0.36, 1)",Xm=n=>{const e=fe.c(38),{onOpenMcpSettings:s,active:i}=n,{t:r}=xe(),[a,o]=u.useState(!1),l=Lt(Zm),f=ms(ep),c=ys(tp);let p;e[0]!==l||e[1]!==a||e[2]!==c||e[3]!==f?(p=()=>{if(a)return;o(!0);const O=new Promise(sp);Promise.all([f({directory:l||null,silent:!0}),c({force:!0}),O]).finally(()=>o(!1))},e[0]=l,e[1]=a,e[2]=c,e[3]=f,e[4]=p):p=e[4];const g=p;let m;e[5]!==r?(m=r("settings.mcp.sidebar.actions.addServerTitle"),e[5]=r,e[6]=m):m=e[6];let h;e[7]!==r?(h=r("settings.mcp.sidebar.actions.addServerTitle"),e[7]=r,e[8]=h):h=e[8];let b,S;e[9]===Symbol.for("react.memo_cache_sentinel")?(b={touchAction:"manipulation"},S=t.jsx(H,{name:"add",className:"size-5"}),e[9]=b,e[10]=S):(b=e[9],S=e[10]);let x;e[11]!==s||e[12]!==m||e[13]!==h?(x=t.jsx("button",{type:"button",className:"flex size-10 items-center justify-center rounded-full text-muted-foreground transition-colors hover:bg-interactive-hover hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",onClick:s,"aria-label":m,title:h,style:b,children:S}),e[11]=s,e[12]=m,e[13]=h,e[14]=x):x=e[14];let R;e[15]!==r?(R=r("mcpDropdown.actions.refreshAria"),e[15]=r,e[16]=R):R=e[16];let w;e[17]!==r?(w=r("mcpDropdown.actions.refreshAria"),e[17]=r,e[18]=w):w=e[18];let E;e[19]===Symbol.for("react.memo_cache_sentinel")?(E={touchAction:"manipulation"},e[19]=E):E=e[19];const P=a&&"animate-spin";let k;e[20]!==P?(k=ee("size-5",P),e[20]=P,e[21]=k):k=e[21];let j;e[22]!==k?(j=t.jsx(H,{name:"refresh",className:k}),e[22]=k,e[23]=j):j=e[23];let v;e[24]!==a||e[25]!==g||e[26]!==j||e[27]!==R||e[28]!==w?(v=t.jsx("button",{type:"button",className:"flex size-10 items-center justify-center rounded-full text-muted-foreground transition-colors hover:bg-interactive-hover hover:text-foreground disabled:opacity-60 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",onClick:g,disabled:a,"aria-label":R,title:w,style:E,children:j}),e[24]=a,e[25]=g,e[26]=j,e[27]=R,e[28]=w,e[29]=v):v=e[29];let N;e[30]!==v||e[31]!==x?(N=t.jsxs("div",{className:"flex shrink-0 items-center justify-end gap-1 px-2 pt-1",children:[x,v]}),e[30]=v,e[31]=x,e[32]=N):N=e[32];let C;e[33]!==i?(C=t.jsx("div",{className:"min-h-0 flex-1",children:t.jsx(Dm,{active:i,className:"h-full",listClassName:"max-h-none",hideHeader:!0,mobileListDensity:!0})}),e[33]=i,e[34]=C):C=e[34];let M;return e[35]!==N||e[36]!==C?(M=t.jsxs("div",{className:"flex h-full min-h-0 flex-col",children:[N,C]}),e[35]=N,e[36]=C,e[37]=M):M=e[37],M},Qm=({open:n,onClose:e,tab:s,onTabChange:i,pendingChangesDiff:r,onOpenPlan:a,onOpenMcpSettings:o,variant:l="drawer"})=>{const{t:f}=xe(),c=u.useRef(null),p=u.useRef(null),[g,m]=u.useState(!1),[h,b]=u.useState(n),S=u.useRef(e);u.useEffect(()=>{S.current=e},[e]);const x=u.useRef(s);u.useEffect(()=>{x.current=s},[s]),ni(p,{enabled:l==="drawer"&&n,onLeftEdgeSwipe:()=>S.current()});const[R,w]=u.useState(()=>new Set);if(u.useEffect(()=>{n&&w(k=>{if(k.has(s))return k;const j=new Set(k);return j.add(s),j})},[n,s]),typeof document<"u"&&!c.current){let k=document.getElementById(so);k||(k=document.createElement("div"),k.id=so,document.body.appendChild(k)),c.current=k}if(u.useEffect(()=>{if(n){b(!0);const j=window.setTimeout(()=>m(!0),Jm);return()=>window.clearTimeout(j)}m(!1);const k=window.setTimeout(()=>b(!1),no+40);return()=>window.clearTimeout(k)},[n]),u.useEffect(()=>{if(!n)return;const k=document.body.style.overflow;l==="drawer"&&(document.body.style.overflow="hidden");const j=v=>{v.key!=="Escape"||x.current==="terminal"||Xl(v.target)||S.current()};return document.addEventListener("keydown",j),()=>{l==="drawer"&&(document.body.style.overflow=k),document.removeEventListener("keydown",j)}},[n,l]),l==="drawer"&&!c.current)return null;const E=[{id:"changes",label:f("mobile.menu.changes"),icon:t.jsx(H,{name:"git-branch",className:"h-3.5 w-3.5"})},{id:"files",label:f("mobile.menu.files"),icon:t.jsx(H,{name:"file-text",className:"h-3.5 w-3.5"})},{id:"terminal",label:f("mobile.menu.terminal"),icon:t.jsx(H,{name:"terminal",className:"h-3.5 w-3.5"})},{id:"notes",label:f("contextRail.surface.notes"),icon:t.jsx(H,{name:"sticky-note",className:"h-3.5 w-3.5"})},{id:"mcp",label:f("mobile.menu.mcp"),icon:t.jsx(Jl,{className:"h-3.5 w-3.5"})}],P=t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"flex h-[var(--oc-header-height,56px)] shrink-0 items-center gap-2 px-3",children:[t.jsx("div",{className:"flex h-9 min-w-0 flex-1 items-center",children:h?t.jsx(Yl,{items:E,activeId:s,onSelect:k=>i(k),layoutMode:"fit",variant:"active-pill",nonCompositedIndicator:!0,inactiveTabsIconOnly:!0,className:"h-full"}):null}),t.jsx("button",{type:"button",className:"-mr-1 flex size-10 shrink-0 items-center justify-center rounded-full text-muted-foreground transition-colors hover:bg-interactive-hover hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring","aria-label":f("mobile.surface.closeAria"),onClick:e,style:{touchAction:"manipulation"},children:t.jsx(H,{name:"close",className:"size-5"})})]}),t.jsxs("div",{className:"min-h-0 flex-1 overflow-hidden",children:[R.has("changes")?t.jsx("div",{className:ee("h-full",s!=="changes"&&"hidden"),children:t.jsx(Ye,{children:t.jsx(Bm,{visible:n&&s==="changes",initialDiff:r,onNavigatedToChat:e})})},r?`changes:${r.path}:${r.staged}`:"changes"):null,R.has("files")?t.jsx("div",{className:ee("h-full",s!=="files"&&"hidden"),children:t.jsx(Ye,{children:t.jsx(Km,{visible:n&&s==="files"})})}):null,R.has("terminal")?t.jsx("div",{className:ee("h-full",s!=="terminal"&&"hidden"),children:t.jsx(Ye,{children:t.jsx(uu,{visible:n&&s==="terminal"})})}):null,R.has("notes")?t.jsx("div",{className:ee("h-full",s!=="notes"&&"hidden"),children:t.jsx(Ye,{children:t.jsx(du,{onActionComplete:e,onOpenPlan:a})})}):null,R.has("mcp")?t.jsx("div",{className:ee("h-full",s!=="mcp"&&"hidden"),children:t.jsx(Ye,{children:t.jsx(Xm,{active:n&&s==="mcp",onOpenMcpSettings:o})})}):null]})]});return l==="panel"?t.jsx("div",{className:"flex h-full min-h-0 flex-col bg-background text-foreground",children:P}):ws.createPortal(t.jsx("section",{ref:p,role:"dialog","aria-modal":"true","aria-label":f("mobile.header.openWorkspaceAria"),"aria-hidden":!n,className:"oc-keyboard-inset-surface oc-bottom-safe-surface fixed inset-0 z-50 flex flex-col bg-background text-foreground",style:{paddingTop:"var(--oc-safe-area-top, 0px)",transform:g?"none":"translateX(100%)",transition:`transform ${no}ms ${Ym}`,visibility:h?"visible":"hidden",pointerEvents:n?"auto":"none"},children:P}),c.current)};function Zm(n){return n.currentDirectory}function ep(n){return n.refresh}function tp(n){return n.loadMcpConfigs}function sp(n){return window.setTimeout(n,500)}function np(n){const e=fe.c(4),s=2500,{uiFont:i}=Ql(),[r,a]=u.useState(!1);let o,l;return e[0]!==s||e[1]!==i?(o=()=>{let f=!1;const c=()=>{f||a(!0)},p=()=>{requestAnimationFrame(()=>requestAnimationFrame(c))},g=Promise.all([Zl(i).catch(lp),document.fonts?.ready?.then(ap).catch(op)??Promise.resolve(),jd.catch(ip)]).then(rp),m=new Promise(h=>{window.setTimeout(h,s)});return Promise.race([g,m]).then(p),()=>{f=!0}},l=[i,s],e[0]=s,e[1]=i,e[2]=o,e[3]=l):(o=e[2],l=e[3]),u.useEffect(o,l),r}function rp(){}function ip(){}function op(){}function ap(){}function lp(){}const cp="openchamber",up=n=>n.replace(/^\/+|\/+$/g,""),dp=n=>{const e=up(n.pathname).split("/").filter(Boolean);return n.host?[n.host,...e]:e};function fp(n){if(typeof n!="string"||n.length===0)return null;let e;try{e=new URL(n)}catch{return null}if(e.protocol!==`${cp}:`)return null;const s=dp(e),i=(s[0]??"").toLowerCase(),r=s.slice(1),a=e.searchParams;switch(i){case"session":{const o=r[0]||a.get("id")||"";if(!o)return null;const l=a.get("message")?.trim()??"";return{type:"session",sessionId:o,directory:a.get("dir")??void 0,...ec(l)?{messageId:l}:{}}}case"new":case"new-session":return{type:"new-session",directory:a.get("dir")??void 0,projectId:a.get("project")??void 0,agent:a.get("agent")??void 0,model:a.get("model")??void 0};case"sessions":{const o=a.get("filter");return{type:"sessions",filter:o==="attention"||o==="recent"||o==="all"?o:void 0}}case"status":return{type:"status"};case"settings":return{type:"settings",section:r[0]||a.get("section")||void 0};case"changes":return{type:"changes",path:r.join("/")||a.get("path")||void 0,staged:a.get("staged")==="true"};case"view":{const o=(r[0]||"").toLowerCase();return o==="changes"?{type:"changes"}:o==="files"||o==="mcp"||o==="instances"||o==="update"?{type:"view",target:o}:null}default:return null}}let dt={},ya=!1,Xs=null;const mp=n=>{switch(n.type){case"session":return n.messageId&&!n.directory?(tc(n.sessionId,n.messageId),!0):(n.messageId&&sc(n.sessionId,n.messageId),De.getState().setCurrentSession(n.sessionId,n.directory??null),!0);case"new-session":{const e=De.getState();return e.openNewSessionDraft(),(n.directory||n.projectId)&&e.setNewSessionDraftTarget({directoryOverride:n.directory??null,projectId:n.projectId??null,selectedProjectId:n.projectId??null}),!0}case"sessions":return dt.openSessions?(dt.openSessions(n.filter),!0):!1;case"status":return dt.openSessions?(dt.openSessions(),!0):!1;case"view":return dt.openView?(dt.openView(n.target),!0):!1;case"changes":return dt.openChanges?(dt.openChanges({path:n.path,staged:n.staged}),!0):!1;case"settings":return dt.openSettings?(dt.openSettings(n.section),!0):!1}},ri=()=>{if(!ya||!Xs)return;const n=Xs;Xs=null,mp(n)||(Xs=n)},va=n=>{Xs=n,ri()},ro=n=>{const e=fp(n);e&&va(e)},pp=n=>{ya=n,ri()},hp=n=>{const e=fe.c(3);let s,i;e[0]!==n?(s=()=>(dt=n,ri(),()=>{dt===n&&(dt={})}),i=[n],e[0]=n,e[1]=s,e[2]=i):(s=e[1],i=e[2]),u.useEffect(s,i)},gp=n=>{const{ready:e}=n;u.useEffect(()=>{pp(e)},[e]),u.useEffect(()=>{if(!Ke())return;let s=!1;const i=[];return js(()=>import("./vendor-capacitor-app-BrDJj9I_.js"),__vite__mapDeps([128,5,129])).then(async({App:r})=>{if(s)return;const a=await r.addListener("appUrlOpen",o=>{ro(o?.url)});if(s){a.remove();return}i.push(()=>{a.remove()})}).catch(()=>{}),js(()=>import("./vendor-capacitor-push-notifications-KNe1zSBF.js"),__vite__mapDeps([130,129])).then(async({PushNotifications:r})=>{if(s)return;const a=await r.addListener("pushNotificationActionPerformed",o=>{const l=o?.notification?.data,f=typeof l?.url=="string"?l.url:typeof l?.deeplink=="string"?l.deeplink:void 0;if(f){ro(f);return}const c=typeof l?.sessionId=="string"?l.sessionId:void 0;c&&va({type:"session",sessionId:c})});if(s){a.remove();return}i.push(()=>{a.remove()})}).catch(()=>{}),()=>{s=!0,i.forEach(r=>r())}},[])},bp=()=>{if(typeof window>"u")return;const n=window.__OPENCHAMBER_APNS_ENV__;if(n==="development")return"sandbox";if(n==="production")return"production"},io=/^[A-Za-z0-9+/]{43}=$/,xp=Fu("PushKey"),yp=async()=>{const n=window.__OPENCHAMBER_PUSH_KEY__;if(n&&io.test(n))return n;const e=await xp.get().then(s=>s.key).catch(()=>{});return e&&io.test(e)?e:void 0},vp=()=>{if(typeof window>"u")return!1;const e=window.Capacitor?.getPlatform?.();return e==="ios"||e==="android"},wp=n=>{const{enabled:e}=n,s=Be(r=>r.nativeNotificationsEnabled),i=u.useRef(null);u.useEffect(()=>{if(!e||!s||!vp())return;let r=!1;const a=[];return js(()=>import("./vendor-capacitor-push-notifications-KNe1zSBF.js"),__vite__mapDeps([130,129])).then(async({PushNotifications:o})=>{if(r)return;let l=await o.checkPermissions().catch(()=>null);if(l?.receive!=="granted"&&(l=await o.requestPermissions().catch(()=>null)),l?.receive!=="granted")return;const f=await o.addListener("registration",p=>{i.current=p.value,yp().then(g=>{const m=xi(),h={token:p.value,platform:uo(),environment:bp()};g&&(h.pushKey=g),m?.push?.registerApnsToken?.(h)})}),c=await o.addListener("registrationError",p=>{console.warn("[Push] APNs registration error:",p)});if(await o.register().catch(()=>{}),r){f.remove(),c.remove();return}a.push(()=>{f.remove()},()=>{c.remove()})}).catch(()=>{}),()=>{r=!0,a.forEach(o=>o())}},[e,s]),u.useEffect(()=>{if(s)return;const r=i.current;if(!r)return;i.current=null,xi()?.push?.unregisterApnsToken?.({token:r})},[s])},oo=n=>{const e=fe.c(12),{side:s,isResizing:i,ariaLabel:r,handleProps:a}=n,o=s==="left"?"right-0":"left-0";let l;e[0]!==o?(l=ee("absolute inset-y-0 z-50 w-6 cursor-col-resize touch-none",o),e[0]=o,e[1]=l):l=e[1];const f=s==="left"?"right-0":"left-0",c=i&&"bg-[var(--interactive-border)]";let p;e[2]!==f||e[3]!==c?(p=ee("absolute inset-y-0 w-[3px] transition-colors",f,c),e[2]=f,e[3]=c,e[4]=p):p=e[4];let g;e[5]!==p?(g=t.jsx("div",{className:p}),e[5]=p,e[6]=g):g=e[6];let m;return e[7]!==r||e[8]!==a||e[9]!==l||e[10]!==g?(m=t.jsx("div",{className:l,role:"separator","aria-orientation":"vertical","aria-label":r,...a,children:g}),e[7]=r,e[8]=a,e[9]=l,e[10]=g,e[11]=m):m=e[11],m},jp=320,kp=380,ao=280,Sp=560,Np=900;function lo(n,e,s,i){const r=fe.c(23),a=i===void 0?Sp:i,o=u.useRef(null);let l;r[0]!==s||r[1]!==a||r[2]!==e?(l=()=>{if(typeof window>"u")return s;const I=Number.parseInt(window.localStorage.getItem(e)??"",10);return Number.isFinite(I)?Math.min(a,Math.max(ao,I)):s},r[0]=s,r[1]=a,r[2]=e,r[3]=l):l=r[3];const[f,c]=u.useState(l),[p,g]=u.useState(!1),m=u.useRef(0),h=u.useRef(f),b=u.useRef(null),S=u.useRef(null);let x;r[4]!==a?(x=I=>Math.min(a,Math.max(ao,Math.round(I))),r[4]=a,r[5]=x):x=r[5];const R=x;let w;r[6]===Symbol.for("react.memo_cache_sentinel")?(w=I=>{const D=o.current;D&&(D.style.width=`${I}px`,D.style.minWidth=`${I}px`,D.style.maxWidth=`${I}px`,D.style.setProperty("--oc-ipad-sidebar-width",`${I}px`))},r[6]=w):w=r[6];const E=w;let P;r[7]!==f?(P=I=>{try{I.currentTarget.setPointerCapture(I.pointerId)}catch{}S.current=I.pointerId,m.current=I.clientX,h.current=f,b.current=f,g(!0),I.preventDefault()},r[7]=f,r[8]=P):P=r[8];const k=P;let j;r[9]!==R||r[10]!==n?(j=I=>{if(S.current!==I.pointerId)return;const D=I.clientX-m.current,V=R(h.current+(n==="left"?D:-D));b.current!==V&&(b.current=V,E(V))},r[9]=R,r[10]=n,r[11]=j):j=r[11];const v=j;let N;r[12]!==R||r[13]!==e?(N=I=>{if(S.current!==I.pointerId)return;try{I.currentTarget.releasePointerCapture(I.pointerId)}catch{}const D=R(b.current??h.current);S.current=null,b.current=null,g(!1),c(D);try{window.localStorage.setItem(e,String(D))}catch{}},r[12]=R,r[13]=e,r[14]=N):N=r[14];const C=N;let M;r[15]!==k||r[16]!==C||r[17]!==v?(M={onPointerDown:k,onPointerMove:v,onPointerUp:C,onPointerCancel:C},r[15]=k,r[16]=C,r[17]=v,r[18]=M):M=r[18];const O=M;let B;return r[19]!==O||r[20]!==p||r[21]!==f?(B={asideRef:o,width:f,isResizing:p,handleProps:O},r[19]=O,r[20]=p,r[21]=f,r[22]=B):B=r[22],B}const Cp=["general","isolated-spaces","appearance","chat","notifications","sessions","routing","git","magic-prompts","snippets","behavior","agents","commands","mcp","plugins","skills.installed","skills.catalog","providers","web-search","usage","voice","integrations","about"],Rp=1e3,Ep=({onActiveConnectionDeleted:n})=>{const{t:e}=xe();Eu();const[s,i]=u.useState(!1);u.useEffect(()=>De.subscribe((Y,be)=>{Y.currentSessionId&&Y.currentSessionId!==be.currentSessionId&&Be.getState().setRunOverviewKey(null)}),[]);const r=Be(Y=>Y.runOverviewKey!==null);u.useEffect(()=>{r&&i(!1)},[r]);const[a,o]=u.useState(null),[l,f]=u.useState(!1),[c,p]=u.useState("changes"),[g,m]=u.useState(null),[h,b]=u.useState("nav"),[S,x]=u.useState(null),R=Be(Y=>Y.setSettingsPage),w=Be(Y=>Y.wideChatLayoutEnabled),E=gs(Y=>Y.available),P=gs(Y=>Y.runtimeType),k=u.useMemo(()=>Or(),[]),j=ys(Y=>Y.mcpServers),v=ys(Y=>Y.setMcpDraft),N=ys(Y=>Y.setSelectedMcp),C=u.useCallback(()=>{o(null),m(null)},[]),M=u.useCallback(Y=>{o(Y)},[]),O=u.useCallback(()=>{f(!1)},[]),B=u.useCallback(Y=>{b(Y),M("settings")},[M]),{enabled:I,roomyForPanels:D}=Ar(),A=wc()==="portrait",_=jc(),[F,L]=u.useState(()=>kc().roomyForPanels),K=u.useCallback(()=>{L(Y=>!Y)},[]);u.useEffect(()=>{I||L(!1)},[I]);const Z=u.useCallback(()=>{x(null),p("files"),f(!0)},[]);u.useEffect(()=>Oo(Y=>{if(Y.type!=="file-open-request")return;const be=Y.directory??Lt.getState().currentDirectory;be&&(Be.getState().openContextFile(be,Y.path),Z())}),[Z]);const X=u.useCallback((Y=null)=>{x(Y),p("changes"),f(!0)},[]),te=lo("left","openchamber.ipad.leftSidebarWidth",jp),Q=lo("right","openchamber.ipad.rightSidebarWidth",kp,Np),pe=D,ue=pe&&l?Q.width:0,U=I&&F?te.width:0;u.useEffect(()=>{if(typeof document>"u")return;const Y=document.documentElement;return Y.style.setProperty("--oc-chat-inset-left",`${U}px`),Y.style.setProperty("--oc-chat-inset-right",`${ue}px`),()=>{Y.style.removeProperty("--oc-chat-inset-left"),Y.style.removeProperty("--oc-chat-inset-right")}},[U,ue]),u.useEffect(()=>{if(typeof document>"u")return;const Y=document.documentElement;return Y.classList.toggle("wide-chat-layout",w),()=>Y.classList.remove("wide-chat-layout")},[w]),u.useEffect(()=>{if(typeof document>"u")return;const Y=I&&(A||_),be=document.documentElement;return be.classList.toggle("oc-keep-draft-starters",Y),()=>be.classList.remove("oc-keep-draft-starters")},[_,I,A]);const G=u.useMemo(()=>({openChanges:({diffPath:Y,staged:be}={})=>{X(Y?{path:Y,staged:be===!0}:null)},openFiles:()=>Z(),openSettings:()=>B("nav")}),[X,Z,B]),T=u.useMemo(()=>({openSessions:()=>{I?L(!0):i(!0)},openView:Y=>{if(Y==="files"){Z();return}if(Y==="mcp"){p("mcp"),f(!0);return}M(Y)},openChanges:({path:Y,staged:be}={})=>{X(Y?{path:Y,staged:be===!0}:null)},openSettings:Y=>{Y&&R(Y),B(Y?"page-content":"nav")}}),[I,X,Z,B,M,R]);hp(T);const ne=u.useRef(null);ni(ne,{onLeftEdgeSwipe:()=>{I?L(!0):i(!0)},onRightEdgeSwipe:()=>f(!0)});const re=u.useRef(null),ie=u.useCallback(Y=>{re.current=Y},[]),q=u.useCallback(()=>Sc()?!0:g?(m(null),!0):a==="settings"&&re.current?.()?!0:a?(C(),!0):l?(O(),!0):s?(i(!1),!0):!1,[a,C,O,g,s,l]);Nc(q);const ae=!k&&E&&(P==="desktop"||P==="web"),de=I?"dialog":"fullscreen",ve=u.useMemo(()=>({instanceLabel:k?Hs():null,onOpenInstances:k?()=>M("instances"):void 0,onOpenSettings:()=>B("nav"),onOpenUsage:()=>M("usage"),onOpenScheduled:()=>M("scheduled"),onOpenArchive:()=>M("archive"),onOpenUpdate:ae?()=>M("update"):void 0}),[B,M,k,ae]),je=u.useCallback(Y=>{C(),i(!1),Y==="file"&&Z()},[C,Z]),Se=u.useCallback(()=>{C(),i(!1),I&&!D&&L(!1)},[C,I,D]),he=u.useCallback(()=>{const Y="new-mcp-server";let be=Y,me=1;for(;j.some(Pe=>Pe.name===be);)be=`${Y}-${me}`,me+=1;v({name:be,scope:"user",type:"local",command:[],url:"",environment:[],headers:[],oauthEnabled:!0,oauthClientId:"",oauthClientSecret:"",oauthScope:"",oauthRedirectUri:"",oauthCallbackPort:"",oauthAuthServerMetadataUrl:"",protocol:"legacy",timeoutStartup:"",timeoutCatalog:"",timeoutExecution:"",codemode:"default",disabled:!1}),N(be),R("mcp"),B("page-content")},[j,B,v,N,R]);return t.jsx(Cc,{actions:G,children:t.jsxs("div",{className:"oc-mobile-app-shell main-content-safe-area flex h-[100dvh] flex-row bg-background text-foreground","data-page-scroll-lock":"true",children:[I?t.jsxs("aside",{ref:te.asideRef,className:ee("relative flex h-full shrink-0 flex-col overflow-hidden border-r border-border/70 bg-background will-change-[width] motion-reduce:transition-none",!F&&"border-r-0"),style:{width:F?te.width:0,minWidth:F?te.width:0,maxWidth:F?te.width:0,"--oc-ipad-sidebar-width":`${te.width}px`,overflowX:"clip",paddingTop:"var(--oc-safe-area-top, 0px)",transitionProperty:te.isResizing?"none":"width, min-width, max-width",transitionDuration:"200ms",transitionTimingFunction:"cubic-bezier(0.22, 1, 0.36, 1)"},"aria-hidden":!F,"data-page-scroll-lock":"true",children:[t.jsx("div",{className:ee("flex h-full shrink-0 flex-col transition-opacity duration-200 ease-[cubic-bezier(0.22,1,0.36,1)] motion-reduce:transition-none",te.isResizing&&"pointer-events-none",!F&&"pointer-events-none select-none opacity-0"),style:{width:"var(--oc-ipad-sidebar-width)",overflowX:"hidden"},children:t.jsx(Ye,{children:t.jsx(Ji,{open:!0,variant:"sidebar",onOpenChange:Y=>{!Y&&!D&&L(!1)},footer:ve})})}),F?t.jsx(oo,{side:"left",isResizing:te.isResizing,ariaLabel:e("sidebar.resize.leftPanelAria"),handleProps:te.handleProps}):null]}):null,t.jsxs("div",{className:"flex h-full min-w-0 flex-1 flex-col","data-page-scroll-lock":"true",children:[t.jsx(Df,{onOpenSessions:()=>I?K():i(!0),onOpenWorkspace:()=>f(!0),compactTitle:I}),t.jsxs("main",{ref:ne,className:"relative min-h-0 flex-1 overflow-hidden","data-page-scroll-lock":"true",children:[t.jsx("div",{className:"h-full w-full",children:t.jsx(Ye,{children:t.jsx(Iu,{})})}),t.jsx(Ye,{children:t.jsx(Au,{})})]})]}),I?null:t.jsx(Ji,{open:s,onOpenChange:i,footer:ve}),t.jsxs("aside",{ref:Q.asideRef,className:ee("relative flex h-full shrink-0 flex-col overflow-hidden border-l border-border/70 bg-background will-change-[width] motion-reduce:transition-none",!ue&&"border-l-0"),style:{width:ue,minWidth:ue,maxWidth:ue,"--oc-ipad-sidebar-width":`${Q.width}px`,overflowX:"clip",paddingTop:"var(--oc-safe-area-top, 0px)",transitionProperty:Q.isResizing?"none":"width, min-width, max-width",transitionDuration:"200ms",transitionTimingFunction:"cubic-bezier(0.22, 1, 0.36, 1)"},"aria-hidden":!ue,"data-page-scroll-lock":"true",children:[t.jsx("div",{className:ee("flex h-full min-h-0 shrink-0 flex-col transition-opacity duration-200 ease-[cubic-bezier(0.22,1,0.36,1)] motion-reduce:transition-none",Q.isResizing&&"pointer-events-none",!ue&&"pointer-events-none select-none opacity-0"),style:{width:"var(--oc-ipad-sidebar-width)",overflowX:"hidden"},children:t.jsx(Ye,{children:t.jsx(Qm,{open:l,onClose:O,tab:c,onTabChange:p,pendingChangesDiff:S,onOpenPlan:m,onOpenMcpSettings:he,variant:pe?"panel":"drawer"})})}),ue?t.jsx(oo,{side:"right",isResizing:Q.isResizing,ariaLabel:e("sidebar.resize.rightPanelAria"),handleProps:Q.handleProps}):null]}),g?t.jsx(zt,{open:!0,variant:de,onClose:()=>m(null),ariaLabel:g.title,title:g.title,children:t.jsx(Ye,{children:t.jsx(zu,{savedProjectPlan:{projectRef:g.projectRef,planId:g.id},onNavigatedToChat:()=>{C(),O()}})})}):null,a==="instances"&&k?t.jsx(zt,{open:!0,variant:de,dialogAlign:"app",onClose:C,ariaLabel:e("mobile.menu.instances"),title:e("mobile.menu.instances"),children:t.jsx(Lf,{onConnect:C,onActiveConnectionDeleted:n})}):null,a==="settings"?t.jsx(zt,{open:!0,variant:de,dialogAlign:"app",onClose:C,ariaLabel:e("mobile.menu.settings"),headerless:!0,children:t.jsx(Ye,{children:t.jsx(Mu,{forceMobile:!0,isWindowed:!0,initialMobileStage:h,registerBackHandler:ie,visiblePageSlugs:[...Cp],onClose:C})})}):null,a==="usage"?t.jsx(zt,{open:!0,variant:de,dialogAlign:"app",onClose:C,ariaLabel:e("usageStats.title"),title:e("usageStats.title"),children:t.jsx(Ye,{children:t.jsx(Pu,{})})}):null,a==="scheduled"?t.jsx(zt,{open:!0,variant:de,dialogAlign:"app",onClose:C,ariaLabel:e("sessions.scheduledTasks.dialog.title"),title:e("sessions.scheduledTasks.dialog.title"),children:t.jsx(Ye,{children:t.jsx(Tu,{layout:"mobile",onLeave:je})})}):null,a==="archive"?t.jsx(zt,{open:!0,variant:de,dialogAlign:"app",onClose:C,ariaLabel:e("sessions.archivePage.title"),title:e("sessions.archivePage.title"),children:t.jsx(Ye,{children:t.jsx(Du,{open:!0,layout:"mobile",onLeave:Se})})}):null,a==="update"?t.jsx(zt,{open:!0,variant:de,dialogAlign:"app",onClose:C,ariaLabel:e("mobile.menu.update"),title:e("mobile.menu.update"),children:t.jsx(Ye,{children:t.jsx("div",{className:"h-full overflow-auto px-5 py-4",children:t.jsx(Ou,{initialUpdateDialogOpen:!0})})})}):null]})})};function co({apis:n}){const e=Be(T=>T.isolatedSpacesEnabled),{t:s}=xe(),i=ft(T=>T.initializeApp),r=ft(T=>T.isInitialized),a=ft(T=>T.isConnected),o=ft(T=>T.connectionPhase),l=ft(T=>T.providers.length),f=ft(T=>T.agents.length),c=ft(T=>T.loadProviders),p=ft(T=>T.loadAgents),g=Lt(T=>T.currentDirectory),m=De(T=>T.error),h=De(T=>T.clearError),b=Be(T=>T.setIsMobile),S=_o(T=>T.refreshAll),x=nc(T=>T.refreshStatus),R=rc(T=>T.setPlanModeEnabled),w=it(T=>T.projects),E=xs(T=>T.activeSessions),P=xs(T=>T.archivedSessions),k=xs(T=>T.status==="ready"),j=u.useMemo(()=>[...E,...P],[E,P]);mu({hasAuthoritativeGlobalSessions:k,sessions:j});const[v,N]=u.useState(0),[C,M]=u.useState(0),[O,B]=u.useState(!1),[I,D]=u.useState("pending"),[V,A]=u.useState(null),_=u.useMemo(()=>Hs(),[]),[,F]=u.useReducer(T=>T+1,0),L=u.useMemo(()=>Or(),[]),K=u.useRef(0),Z=u.useRef(0),X=u.useCallback(()=>{const T=St(),ne=Z.current+1;if(Z.current=ne,!T){Us("resume:auto-connect",{}),Gs();return}Us("resume:reprobe",{});const re=()=>{i(),S(n.sourceControl,{force:!0}),x(n.linear,{force:!0}),l===0&&c({source:"mobileApp:nativeResume"}),f===0&&p({source:"mobileApp:nativeResume"})},ie=ae=>{Us("resume:disconnect",{reason:ae}),ps({apiBaseUrl:"",clientToken:null,runtimeKey:wn}),N(de=>de+1)};An().then(ae=>{if(Z.current===ne){if(ae==="no-connection"){ie("no-connection");return}if(ae==="needs-login"){A({kind:"auth-expired",label:Hs()??""}),ie("needs-login");return}if(ae==="unreachable"){const de=[4e3,1e4],ve=je=>{window.setTimeout(()=>{if(Z.current!==ne)return;const Se=je===de.length-1;An({fast:!Se}).then(he=>{if(Z.current===ne&&he!=="switched"){if(he==="unchanged"){re();return}if(he==="needs-login"){A({kind:"auth-expired",label:Hs()??""}),ie("retry-needs-login");return}if(!Se){ve(je+1);return}ie(`retry-${he}`)}})},de[je])};ve(0);return}ae!=="switched"&&re()}});const q=Date.now();q-K.current>=Rp&&(K.current=q,window.dispatchEvent(new Event("openchamber:system-resume")))},[f,n.sourceControl,n.linear,i,p,c,l,S,x]);ic(),oc(X),u.useEffect(()=>{if(!L)return;let T;const ne=()=>{window.clearTimeout(T),T=window.setTimeout(()=>X(),1500)};return window.addEventListener("online",ne),()=>{window.removeEventListener("online",ne),window.clearTimeout(T)}},[L,X]),u.useEffect(()=>{if(L)return yi.subscribe((T,ne)=>{T.state==="expired"&&ne.state!=="expired"&&(X(),yi.getState().markAuthenticated())})},[L,X]),u.useEffect(()=>(vi(n),()=>vi(null)),[n]),u.useEffect(()=>mo(T=>{if(Us("endpoint:changed",{runtimeKey:T.runtimeKey||"none",previousRuntimeKey:T.previousRuntimeKey||"none",connected:!!T.apiBaseUrl}),!!T.runtimeKey&&T.runtimeKey===T.previousRuntimeKey){pu(),F();return}hu(T),M(re=>re+1),N(re=>re+1)}),[]),u.useEffect(()=>{if(!L||a||St()){D("done");return}let T=!1;return D("attempting"),(async()=>{const ne=await Gs().catch(()=>({status:"no-candidate"}));T||(ne.status==="unreachable"?A({kind:"unreachable",label:ne.label}):ne.status==="needs-login"&&A({kind:"auth-expired",label:ne.label}),D("done"),ne.status==="unreachable"&&Gs({fast:!1,skipIfConnected:!0}).catch(()=>null))})(),()=>{T=!0}},[]),u.useEffect(()=>{if(!L||!St())return;let T=!1;const ne=re=>{Us("cold-launch:drop",{kind:re?.kind??"unknown"}),re&&A(re),ps({apiBaseUrl:"",clientToken:null,runtimeKey:wn}),N(ie=>ie+1)};return An().then(async re=>{if(T||re==="switched"||re==="unchanged")return;const ie=Hs();if(re==="needs-login"){ne({kind:"auth-expired",label:ie??""});return}if(re==="unreachable"){ne(ie?{kind:"unreachable",label:ie}:null),Gs({fast:!1,skipIfConnected:!0}).catch(()=>null);return}const q=await Gs().catch(()=>({status:"no-candidate"}));T||q.status==="connected"||(q.status==="needs-login"?ne({kind:"auth-expired",label:q.label}):q.status==="unreachable"?ne({kind:"unreachable",label:q.label}):ne(null))}),()=>{T=!0}},[]),u.useEffect(()=>{b(!0)},[b]),u.useEffect(()=>{L&&!St()||i()},[v,i,L]),u.useEffect(()=>{a&&(l===0&&c({source:"mobileApp:recovery"}),f===0&&p({source:"mobileApp:recovery"}))},[f,a,p,c,l]);const te=u.useRef(!1),[Q,pe]=u.useState(L);u.useEffect(()=>{if(!L||!a||te.current)return;let T=!1;const ne=window.setTimeout(()=>pe(!1),6e3);return(async()=>{const re=await gu({refresh:!0});T||(re!=="failed"&&(te.current=!0),pe(!1))})(),()=>{T=!0,window.clearTimeout(ne)}},[v,a,L]),u.useEffect(()=>{a&&wi.setDirectory(g)},[g,a]),u.useEffect(()=>{a&&(S(n.sourceControl,{force:!0}),x(n.linear,{force:!0}))},[n.sourceControl,n.linear,a,S,x]),u.useEffect(()=>{if(!a||w.length===0)return;let T=!1;return(async()=>{const re=new Map(De.getState().availableWorktreesByProject);if(await Promise.all(w.map(async ae=>{const de=ae.path.replace(/\\/g,"/").replace(/\/+$/,"");if(de)try{if(!(rt.getState().directories.get(de)?.isGitRepo??await js(()=>import("./useAppFontEffects-DCqCVGlT.js").then(he=>he.ma),__vite__mapDeps([9,1,2,3,4,5,6,7,8,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81])).then(he=>he.checkIsGitRepository(de))))return;const Se=await To({id:ae.id,path:de});if(T)return;re.set(de,Se)}catch{}})),T)return;const ie=Do(w,re),q=De.getState().availableWorktreesByProject;yc(ie,q)||De.setState({availableWorktrees:[...ie.values()].flat(),availableWorktreesByProject:ie})})(),()=>{T=!0}},[a,w]),u.useEffect(()=>{if(!a)return;let T=!1;const ne=Oo(re=>{re.type==="worktree-changed"&&vc(w,re.directories,()=>T)});return()=>{T=!0,ne()}},[a,w]),u.useEffect(()=>{let T=!1;return(async()=>{const re=await Ir("/health",{method:"GET"}).catch(()=>null);if(!re||!re.ok||T)return;const ie=await re.json().catch(()=>null);if(!ie||T)return;const q=ie.planModeExperimentalEnabled;R(q===!0||q===1||q==="1"||q==="true")})(),()=>{T=!0}},[R]),u.useEffect(()=>{if(!m)return;const T=window.setTimeout(()=>h(),5e3);return()=>window.clearTimeout(T)},[h,m]),u.useEffect(()=>{if(!(!a&&(L?!!St():!0))){B(!1);return}const ne=window.setTimeout(()=>{B(!0)},L?4e3:8e3);return()=>window.clearTimeout(ne)},[a,L,v,C]),ac(),lc({enabled:!0}),bu(),cc(),uc(),xu(),yu(),wp({enabled:L&&a}),gp({ready:L&&a&&r});const ue=np(),U=!a&&o==="reconnecting";if(!ue)return t.jsx("main",{className:"flex min-h-dvh items-center justify-center bg-[var(--splash-background,var(--surface-background))] text-foreground",children:t.jsx(hs,{width:120,height:120,isAnimated:!0,variant:"splash"})});const G=!!St();return L&&(!G||!a&&!U)?G?t.jsx("main",{className:"flex min-h-dvh items-center justify-center bg-[var(--splash-background,var(--surface-background))] px-6 text-center text-foreground",children:t.jsxs("div",{className:"flex max-w-sm flex-col items-center gap-4",children:[t.jsx(hs,{width:120,height:120,isAnimated:!O,variant:"splash"}),O?t.jsxs(t.Fragment,{children:[t.jsxs("div",{className:"space-y-2",children:[t.jsx("h1",{className:"typography-h3 text-foreground",children:s("sessionAuth.error.networkTitle")}),t.jsx("p",{className:"typography-body text-muted-foreground",children:s("mobile.connect.recovery.description")})]}),t.jsx(Ne,{type:"button",variant:"outline",onClick:()=>{ps({apiBaseUrl:"",clientToken:null,runtimeKey:wn}),N(T=>T+1)},children:s("mobile.connect.cancelPassword")})]}):null]})}):I!=="done"?t.jsxs("main",{className:"relative flex min-h-dvh items-center justify-center bg-[var(--splash-background,var(--surface-background))] text-foreground",children:[t.jsx(hs,{width:120,height:120,isAnimated:!0,variant:"splash"}),_?t.jsxs("div",{className:"absolute inset-x-0 top-[calc(50%+84px)] flex flex-col items-center gap-0.5 px-6 text-center",children:[t.jsx("p",{className:"typography-small text-muted-foreground",children:s("mobile.connect.splash.connectingTo")}),t.jsxs("p",{className:"typography-small text-foreground",children:[_,t.jsx(dc,{})]})]}):null]}):t.jsx(t.Fragment,{children:t.jsx(bf,{onConnected:()=>N(T=>T+1),notice:V})}):!a&&!U?O?t.jsx("main",{className:"flex min-h-dvh items-center justify-center bg-background px-6 text-center text-foreground",children:t.jsxs("div",{className:"max-w-sm space-y-3",children:[t.jsx("h1",{className:"typography-h3 text-foreground",children:s("sessionAuth.error.networkTitle")}),t.jsx("p",{className:"typography-body text-muted-foreground",children:s("sessionAuth.error.networkDescription")})]})}):t.jsx("main",{className:"flex min-h-dvh items-center justify-center bg-[var(--splash-background,var(--surface-background))] text-foreground",children:t.jsx(hs,{width:120,height:120,isAnimated:!0,variant:"splash"})}):t.jsx(Ye,{children:t.jsx(fc,{sdk:wi.getSdkClient(),directory:g||"",children:t.jsx(mc,{apis:n,children:t.jsx(pc,{delayDuration:300,skipDelayDuration:150,children:t.jsxs("div",{className:"h-full bg-background text-foreground",children:[t.jsx(vu,{ready:!L||!Q,animated:!0}),t.jsx(hc,{backgroundWorkEnabled:r}),t.jsx(wu,{}),t.jsx(Pd,{}),t.jsx(Ep,{onActiveConnectionDeleted:()=>{ps({apiBaseUrl:"",clientToken:null,runtimeKey:wn}),N(T=>T+1)}}),t.jsx(gc,{}),t.jsx(bc,{}),e?t.jsxs(t.Fragment,{children:[t.jsx(ju,{}),t.jsx(ku,{}),t.jsx(Su,{}),t.jsx(Nu,{}),t.jsx(Cu,{})]}):null,t.jsx(xc,{position:"top-center",offset:"calc(var(--oc-safe-area-top, 0px) + 16px)"}),r?t.jsx(Ru,{}):null]})})})},C)})}function Ip(n){const e=fe.c(4),s=u.useSyncExternalStore(Ap,St,St);if(Or()&&!s){let r;return e[0]!==n?(r=t.jsx(co,{...n}),e[0]=n,e[1]=r):r=e[1],r}let i;return e[2]!==n?(i=t.jsx(fu,{children:t.jsx(co,{...n})}),e[2]=n,e[3]=i):i=e[3],i}function Ap(n){return mo(()=>n())}const Pp=()=>{Oa(),za().then(()=>{Promise.all([La(),Dc()]).catch(n=>{console.error("[mobile-main] settings init failed:",n)}),_c(),Mc(),Oc()}).catch(n=>{console.error("[mobile-main] appearance init failed:",n)}).finally(()=>{kd()})};function cb(n){window.__OPENCHAMBER_SURFACE__="mobile",Rc(),Pp(),Ad(),Ec();const e=document.getElementById("root");if(!e)throw new Error("Root element not found");const i=window.Capacitor?.isNativePlatform?.()===!0||window.location.protocol==="capacitor:",r=i?{...n,notifications:{notifyAgentCompletion:async()=>!1,canNotify:()=>!1}}:n,a=t.jsx(Ip,{apis:r});Ca.createRoot(e).render(t.jsx(xr.StrictMode,{children:t.jsx(Ic,{children:t.jsx(Ac,{children:t.jsx(Pc,{children:t.jsx(_u,{children:i?a:t.jsx(Tc,{children:a})})})})})}))}export{cb as renderMobileApp};