purplemux 0.3.0 → 0.3.2

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 (204) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/build-manifest.json +49 -49
  3. package/.next/standalone/.next/prerender-manifest.json +3 -3
  4. package/.next/standalone/.next/required-server-files.json +1 -1
  5. package/.next/standalone/.next/routes-manifest.json +7 -7
  6. package/.next/standalone/.next/server/chunks/[root-of-the-server]__06an6au._.js +1 -1
  7. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__02f5zis._.js → [root-of-the-server]__08dxtof._.js} +1 -1
  8. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__08z3drz._.js +1 -1
  9. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__11uqzxt._.js → [root-of-the-server]__0kumyrr._.js} +2 -2
  10. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0s7k1je._.js +3 -0
  11. package/.next/standalone/.next/server/chunks/ssr/{_13qovxu._.js → _0.stp0n._.js} +2 -2
  12. package/.next/standalone/.next/server/chunks/ssr/{_11h746h._.js → _00cx0p2._.js} +2 -2
  13. package/.next/standalone/.next/server/chunks/ssr/_02rms4q._.js +1 -1
  14. package/.next/standalone/.next/server/chunks/ssr/_06_8vkn._.js +2 -2
  15. package/.next/standalone/.next/server/chunks/ssr/{_0uwytsj._.js → _078y4dk._.js} +2 -2
  16. package/.next/standalone/.next/server/chunks/ssr/{_0uph6rf._.js → _0kzht5v._.js} +2 -2
  17. package/.next/standalone/.next/server/chunks/ssr/_0m6flec._.js +1 -1
  18. package/.next/standalone/.next/server/chunks/ssr/_0pg-q18._.js +1 -1
  19. package/.next/standalone/.next/server/chunks/ssr/_0r90z3l._.js +8 -0
  20. package/.next/standalone/.next/server/chunks/ssr/_0w.1ts8._.js +1 -1
  21. package/.next/standalone/.next/server/chunks/ssr/_0w6jc9p._.js +1 -1
  22. package/.next/standalone/.next/server/chunks/ssr/{_0z6yp7a._.js → _0y_feze._.js} +1 -1
  23. package/.next/standalone/.next/server/chunks/ssr/{_0v2czf2._.js → _10dec5o._.js} +1 -1
  24. package/.next/standalone/.next/server/chunks/ssr/{messages_01~7za1._.js → messages_0f3u1ly._.js} +1 -1
  25. package/.next/standalone/.next/server/chunks/ssr/{messages_10_yt3k._.js → messages_0k204ao._.js} +1 -1
  26. package/.next/standalone/.next/server/chunks/ssr/messages_de_terminal_json_[json]_cjs_05jirtw._.js +1 -1
  27. package/.next/standalone/.next/server/chunks/ssr/messages_en_terminal_json_[json]_cjs_0~ls3g-._.js +1 -1
  28. package/.next/standalone/.next/server/chunks/ssr/messages_es_terminal_json_[json]_cjs_04g2b1_._.js +1 -1
  29. package/.next/standalone/.next/server/chunks/ssr/messages_fr_terminal_json_[json]_cjs_0uhakya._.js +1 -1
  30. package/.next/standalone/.next/server/chunks/ssr/messages_ja_terminal_json_[json]_cjs_0776z4f._.js +1 -1
  31. package/.next/standalone/.next/server/chunks/ssr/messages_ko_terminal_json_[json]_cjs_06611.3._.js +1 -1
  32. package/.next/standalone/.next/server/chunks/ssr/messages_pt-BR_terminal_json_[json]_cjs_034yyg9._.js +1 -1
  33. package/.next/standalone/.next/server/chunks/ssr/messages_ru_terminal_json_[json]_cjs_0emk8~n._.js +1 -1
  34. package/.next/standalone/.next/server/chunks/ssr/messages_tr_terminal_json_[json]_cjs_0xpix8g._.js +1 -1
  35. package/.next/standalone/.next/server/chunks/ssr/messages_zh-CN_terminal_json_[json]_cjs_12vwl8a._.js +1 -1
  36. package/.next/standalone/.next/server/chunks/ssr/messages_zh-TW_terminal_json_[json]_cjs_0spg5z5._.js +1 -1
  37. package/.next/standalone/.next/server/chunks/ssr/node_modules_0t5csgq._.js +1 -1
  38. package/.next/standalone/.next/server/chunks/ssr/node_modules_use-intl_dist_esm_production_react_0bnxcps.js +1 -1
  39. package/.next/standalone/.next/server/chunks/ssr/{src_components_00nri37._.js → src_components_05-kki3._.js} +1 -1
  40. package/.next/standalone/.next/server/chunks/ssr/{src_components_0jrgsp7._.js → src_components_0fb83uz._.js} +1 -1
  41. package/.next/standalone/.next/server/chunks/ssr/{src_components_0mhu5-5._.js → src_components_0gkfyrc._.js} +1 -1
  42. package/.next/standalone/.next/server/chunks/ssr/{src_components_0~e6p9k._.js → src_components_0n3s0.7._.js} +1 -1
  43. package/.next/standalone/.next/server/chunks/ssr/src_components_features_mobile_mobile-terminal-page_tsx_02chzch._.js +1 -1
  44. package/.next/standalone/.next/server/chunks/ssr/src_components_features_workspace_terminal-page_tsx_0wuq-jl._.js +1 -1
  45. package/.next/standalone/.next/server/functions-config-manifest.json +1 -1
  46. package/.next/standalone/.next/server/middleware-build-manifest.js +49 -49
  47. package/.next/standalone/.next/server/pages/_app/build-manifest.json +6 -6
  48. package/.next/standalone/.next/server/pages/_app/client-build-manifest.json +1 -1
  49. package/.next/standalone/.next/server/pages/_app.js +2 -2
  50. package/.next/standalone/.next/server/pages/_app.js.nft.json +1 -1
  51. package/.next/standalone/.next/server/pages/_document.js +3 -3
  52. package/.next/standalone/.next/server/pages/_document.js.nft.json +1 -1
  53. package/.next/standalone/.next/server/pages/_error/build-manifest.json +3 -3
  54. package/.next/standalone/.next/server/pages/_error/client-build-manifest.json +1 -1
  55. package/.next/standalone/.next/server/pages/_error.js +4 -4
  56. package/.next/standalone/.next/server/pages/_error.js.nft.json +1 -1
  57. package/.next/standalone/.next/server/pages/de/404.html +1 -1
  58. package/.next/standalone/.next/server/pages/de/500.html +1 -1
  59. package/.next/standalone/.next/server/pages/en/404.html +1 -1
  60. package/.next/standalone/.next/server/pages/en/500.html +1 -1
  61. package/.next/standalone/.next/server/pages/es/404.html +1 -1
  62. package/.next/standalone/.next/server/pages/es/500.html +1 -1
  63. package/.next/standalone/.next/server/pages/fr/404.html +1 -1
  64. package/.next/standalone/.next/server/pages/fr/500.html +1 -1
  65. package/.next/standalone/.next/server/pages/index/build-manifest.json +7 -7
  66. package/.next/standalone/.next/server/pages/index/client-build-manifest.json +1 -1
  67. package/.next/standalone/.next/server/pages/index/react-loadable-manifest.json +4 -4
  68. package/.next/standalone/.next/server/pages/index.js +5 -5
  69. package/.next/standalone/.next/server/pages/index.js.nft.json +1 -1
  70. package/.next/standalone/.next/server/pages/ja/404.html +1 -1
  71. package/.next/standalone/.next/server/pages/ja/500.html +1 -1
  72. package/.next/standalone/.next/server/pages/ko/404.html +1 -1
  73. package/.next/standalone/.next/server/pages/ko/500.html +1 -1
  74. package/.next/standalone/.next/server/pages/login/build-manifest.json +4 -4
  75. package/.next/standalone/.next/server/pages/login/client-build-manifest.json +1 -1
  76. package/.next/standalone/.next/server/pages/login.js +4 -4
  77. package/.next/standalone/.next/server/pages/login.js.nft.json +1 -1
  78. package/.next/standalone/.next/server/pages/pt-BR/404.html +1 -1
  79. package/.next/standalone/.next/server/pages/pt-BR/500.html +1 -1
  80. package/.next/standalone/.next/server/pages/reports/build-manifest.json +6 -6
  81. package/.next/standalone/.next/server/pages/reports/client-build-manifest.json +1 -1
  82. package/.next/standalone/.next/server/pages/reports.js +5 -5
  83. package/.next/standalone/.next/server/pages/reports.js.nft.json +1 -1
  84. package/.next/standalone/.next/server/pages/reset/build-manifest.json +4 -4
  85. package/.next/standalone/.next/server/pages/reset/client-build-manifest.json +1 -1
  86. package/.next/standalone/.next/server/pages/reset.js +5 -5
  87. package/.next/standalone/.next/server/pages/reset.js.nft.json +1 -1
  88. package/.next/standalone/.next/server/pages/ru/404.html +1 -1
  89. package/.next/standalone/.next/server/pages/ru/500.html +1 -1
  90. package/.next/standalone/.next/server/pages/stats/build-manifest.json +6 -6
  91. package/.next/standalone/.next/server/pages/stats/client-build-manifest.json +1 -1
  92. package/.next/standalone/.next/server/pages/stats.js +5 -5
  93. package/.next/standalone/.next/server/pages/stats.js.nft.json +1 -1
  94. package/.next/standalone/.next/server/pages/tools-required/build-manifest.json +4 -4
  95. package/.next/standalone/.next/server/pages/tools-required/client-build-manifest.json +1 -1
  96. package/.next/standalone/.next/server/pages/tools-required.js +5 -5
  97. package/.next/standalone/.next/server/pages/tools-required.js.nft.json +1 -1
  98. package/.next/standalone/.next/server/pages/tr/404.html +1 -1
  99. package/.next/standalone/.next/server/pages/tr/500.html +1 -1
  100. package/.next/standalone/.next/server/pages/webview/build-manifest.json +6 -6
  101. package/.next/standalone/.next/server/pages/webview/client-build-manifest.json +1 -1
  102. package/.next/standalone/.next/server/pages/webview.js +5 -5
  103. package/.next/standalone/.next/server/pages/webview.js.nft.json +1 -1
  104. package/.next/standalone/.next/server/pages/zh-CN/404.html +1 -1
  105. package/.next/standalone/.next/server/pages/zh-CN/500.html +1 -1
  106. package/.next/standalone/.next/server/pages/zh-TW/404.html +1 -1
  107. package/.next/standalone/.next/server/pages/zh-TW/500.html +1 -1
  108. package/.next/standalone/.next/static/chunks/01.oujz.z9cq..js +1 -0
  109. package/.next/standalone/.next/static/chunks/{0~23in~aqup16.js → 0176ysv-agwwx.js} +1 -1
  110. package/.next/standalone/.next/static/chunks/{0icark0o3b_6j.js → 03s5e91.zrsi_.js} +4 -4
  111. package/.next/standalone/.next/static/chunks/{0h57gqab.hlp8.js → 05zk.ks4roh-4.js} +6 -6
  112. package/.next/standalone/.next/static/chunks/05~6_0_288m3t.js +1 -0
  113. package/.next/standalone/.next/static/chunks/06uy95ammv.ud.js +1 -0
  114. package/.next/standalone/.next/static/chunks/08-el~h0ax929.js +1 -0
  115. package/.next/standalone/.next/static/chunks/{14_wa..vd6~2y.js → 0984g4~der6-4.js} +2 -2
  116. package/.next/standalone/.next/static/chunks/{016ho28abx9rt.js → 0_psc1~qmka.m.js} +4 -4
  117. package/.next/standalone/.next/static/chunks/{00s6ekn81~vi-.js → 0ap~c~__qw2_0.js} +6 -6
  118. package/.next/standalone/.next/static/chunks/0cir.n19rqu--.js +8 -0
  119. package/.next/standalone/.next/static/chunks/0dpud6_2~.2iv.js +1 -0
  120. package/.next/standalone/.next/static/chunks/0euxle0n3zjm3.js +1 -0
  121. package/.next/standalone/.next/static/chunks/0fax5v7rwhm7g.js +6 -0
  122. package/.next/standalone/.next/static/chunks/{0wf0tx~eo05t~.js → 0gfoib7v3q4k_.js} +1 -1
  123. package/.next/standalone/.next/static/chunks/{0538dx15fw8_n.js → 0kep81gqgj5f5.js} +7 -7
  124. package/.next/standalone/.next/static/chunks/0kriln8d9.mdo.js +1 -0
  125. package/.next/standalone/.next/static/chunks/{0eia27slkj8a0.js → 0l.88yoxq6tq8.js} +6 -6
  126. package/.next/standalone/.next/static/chunks/{0ea-k_kbq5gi1.js → 0n7jmg60eqx1a.js} +1 -1
  127. package/.next/standalone/.next/static/chunks/0nm1wy7i1z64_.js +1 -0
  128. package/.next/standalone/.next/static/chunks/0o1e0e_okaxww.js +1 -0
  129. package/.next/standalone/.next/static/chunks/{0l80eb3i.wx6k.js → 0p2m6i37_wprv.js} +1 -1
  130. package/.next/standalone/.next/static/chunks/0qz-agdkp9v1q.js +16 -0
  131. package/.next/standalone/.next/static/chunks/0w1v1a5wi.byq.js +1 -0
  132. package/.next/standalone/.next/static/chunks/0wha_~zny181w.js +1 -0
  133. package/.next/standalone/.next/static/chunks/0wu-q.gmu-64d.js +5 -0
  134. package/.next/standalone/.next/static/chunks/{00l132mp04ubq.js → 0xfp8sfehtui9.js} +1 -1
  135. package/.next/standalone/.next/static/chunks/0yzd69blq638o.js +1 -0
  136. package/.next/standalone/.next/static/chunks/{0erebazb6ppou.js → 12f3vk2rnkb8u.js} +6 -6
  137. package/.next/standalone/.next/static/chunks/135cvydv7redz.js +1 -0
  138. package/.next/standalone/.next/static/chunks/14rrqgjvv0_69.js +1 -0
  139. package/.next/standalone/.next/static/chunks/14vposxx99rq4.js +1 -0
  140. package/.next/standalone/.next/static/chunks/{09mlfwheuib_9.js → 168.xhj-0lt8a.js} +1 -1
  141. package/.next/standalone/.next/static/chunks/1792_-2m366un.js +1 -0
  142. package/.next/standalone/.next/static/chunks/{0nr5ul7mf1bo7.js → 179vwj~zm1gya.js} +1 -1
  143. package/.next/standalone/.next/static/chunks/{turbopack-10c4z.4l4dxnu.js → turbopack-0.6hkxuraykc4.js} +1 -1
  144. package/.next/standalone/.next/static/chunks/{turbopack-05.ehb143ourd.js → turbopack-0g2bivvnd2gyd.js} +1 -1
  145. package/.next/standalone/.next/static/chunks/{turbopack-0ji23rzquaykn.js → turbopack-0heaqdupr4xj6.js} +1 -1
  146. package/.next/standalone/.next/static/chunks/{turbopack-02wj1-z8.1081.js → turbopack-0jcfxeuy1ge85.js} +1 -1
  147. package/.next/standalone/.next/static/chunks/{turbopack-07.z46yb_52p5.js → turbopack-0rntg0~hh7h.0.js} +1 -1
  148. package/.next/standalone/.next/static/chunks/{turbopack-05j~l.6~_nm9l.js → turbopack-0sk1uk-fkcqdx.js} +1 -1
  149. package/.next/standalone/.next/static/chunks/{turbopack-11utvoktq4lmr.js → turbopack-0w89gj59tho~b.js} +1 -1
  150. package/.next/standalone/.next/static/chunks/{turbopack-04t3309-jsj3y.js → turbopack-0~gn911-6yqk2.js} +1 -1
  151. package/.next/standalone/.next/static/chunks/{turbopack-0-rpf9ad3km~v.js → turbopack-14fnzd5yh28gy.js} +1 -1
  152. package/.next/standalone/.next/static/{bybcCRIlOhSPtqdnJUPM- → pZhcwQ83aP87HDTIzzyJ6}/_buildManifest.js +8 -8
  153. package/.next/standalone/.next/static/{bybcCRIlOhSPtqdnJUPM- → pZhcwQ83aP87HDTIzzyJ6}/_clientMiddlewareManifest.js +1 -1
  154. package/.next/standalone/messages/de/terminal.json +1 -1
  155. package/.next/standalone/messages/en/terminal.json +1 -1
  156. package/.next/standalone/messages/es/terminal.json +1 -1
  157. package/.next/standalone/messages/fr/terminal.json +1 -1
  158. package/.next/standalone/messages/ja/terminal.json +1 -1
  159. package/.next/standalone/messages/ko/terminal.json +1 -1
  160. package/.next/standalone/messages/pt-BR/terminal.json +1 -1
  161. package/.next/standalone/messages/ru/terminal.json +1 -1
  162. package/.next/standalone/messages/tr/terminal.json +1 -1
  163. package/.next/standalone/messages/zh-CN/terminal.json +1 -1
  164. package/.next/standalone/messages/zh-TW/terminal.json +1 -1
  165. package/.next/standalone/package.json +6 -5
  166. package/.next/standalone/server.js +1 -1
  167. package/.next/standalone/src/config/tmux.conf +11 -3
  168. package/README.de.md +41 -14
  169. package/README.es.md +41 -14
  170. package/README.fr.md +41 -14
  171. package/README.ja.md +41 -14
  172. package/README.ko.md +41 -14
  173. package/README.md +41 -14
  174. package/README.pt-BR.md +41 -14
  175. package/README.ru.md +41 -14
  176. package/README.tr.md +41 -14
  177. package/README.zh-CN.md +41 -14
  178. package/README.zh-TW.md +41 -14
  179. package/dist/server.js +6 -5
  180. package/package.json +6 -5
  181. package/src/config/tmux.conf +11 -3
  182. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0y7-o~r._.js +0 -3
  183. package/.next/standalone/.next/server/chunks/ssr/_08ytq3p._.js +0 -8
  184. package/.next/standalone/.next/static/chunks/00snihvygw9l4.js +0 -1
  185. package/.next/standalone/.next/static/chunks/00yfl7agnve...js +0 -5
  186. package/.next/standalone/.next/static/chunks/02ocrfbfg24nx.js +0 -1
  187. package/.next/standalone/.next/static/chunks/04rkjr-2duj5b.js +0 -1
  188. package/.next/standalone/.next/static/chunks/0c8wt2p0xhe5i.js +0 -1
  189. package/.next/standalone/.next/static/chunks/0duqg-kf_y-i3.js +0 -1
  190. package/.next/standalone/.next/static/chunks/0ep22zye8flqz.js +0 -1
  191. package/.next/standalone/.next/static/chunks/0ff6a07hvp4pu.js +0 -6
  192. package/.next/standalone/.next/static/chunks/0fg9x61ohrtv3.js +0 -1
  193. package/.next/standalone/.next/static/chunks/0fgx5m8vdxaap.js +0 -1
  194. package/.next/standalone/.next/static/chunks/0m_sn0gry7q~c.js +0 -1
  195. package/.next/standalone/.next/static/chunks/0p5c0gp6gyhh6.js +0 -1
  196. package/.next/standalone/.next/static/chunks/0qsmo2marl-6d.js +0 -16
  197. package/.next/standalone/.next/static/chunks/0ul9.j_tmw365.js +0 -1
  198. package/.next/standalone/.next/static/chunks/107yj1xx63glr.js +0 -1
  199. package/.next/standalone/.next/static/chunks/12_04jv.ecbd-.js +0 -1
  200. package/.next/standalone/.next/static/chunks/14cccdp9z2qvf.js +0 -8
  201. package/.next/standalone/.next/static/chunks/14yj.l6qq359_.js +0 -1
  202. package/.next/standalone/.next/static/chunks/1786bmcy3s8sd.js +0 -1
  203. package/.next/standalone/.next/static/chunks/17mf_h-e8sebp.js +0 -1
  204. /package/.next/standalone/.next/static/{bybcCRIlOhSPtqdnJUPM- → pZhcwQ83aP87HDTIzzyJ6}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,432270,e=>{"use strict";var t=e.i(391398),n=e.i(191788),s=e.i(432237),a=e.i(398957),l=e.i(482192),r=e.i(972733),i=e.i(352819),o=e.i(199648),c=e.i(679935),d=e.i(939310),u=e.i(335288),f=e.i(806185),m=e.i(490034),x=e.i(453783),p=e.i(868462),g=e.i(570513),h=e.i(876208),b=e.i(721070),y=e.i(235090),w=e.i(462376),S=e.i(714233),C=e.i(413646),v=e.i(883590),j=e.i(57098),k=e.i(13628);let N=({open:e,onOpenChange:s,sessionName:a})=>{let l=(0,i.useTranslations)("terminal"),[r,o]=(0,n.useState)(""),[u,f]=(0,n.useState)(!1),[m,x]=(0,n.useState)(null),[p,g]=(0,n.useState)(null),b=e&&a?a:null;b!==p&&(g(b),o(""),x(null),f(null!==b)),(0,n.useEffect)(()=>{if(!p)return;let e=!1;return fetch(`/api/tmux/capture?session=${encodeURIComponent(p)}`).then(e=>{if(!e.ok)throw Error("capture failed");return e.json()}).then(t=>{e||(o((t.content??"").replace(/\s+$/g,"")),f(!1))}).catch(()=>{e||(x(l("copyPaneCaptureFailed")),f(!1))}),()=>{e=!0}},[p,l]);let y=(0,n.useCallback)(async()=>{r&&(await (0,k.copyToClipboard)(r)?(c.toast.success(l("copyPaneSuccess"),{duration:1500}),s(!1)):c.toast.error(l("copyPaneCopyFailed")))},[r,s,l]);return(0,t.jsx)(j.Drawer,{open:e,onOpenChange:s,children:(0,t.jsxs)(j.DrawerContent,{className:"h-[80dvh] data-[vaul-drawer-direction=bottom]:max-h-[80dvh]",children:[(0,t.jsxs)(j.DrawerHeader,{className:"pb-2",children:[(0,t.jsx)(j.DrawerTitle,{children:l("copyPaneDrawerTitle")}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:l("copyPaneDrawerHint")})]}),(0,t.jsxs)("div",{className:"flex min-h-0 flex-1 flex-col gap-3 px-4 pb-4",children:[u?(0,t.jsx)("div",{className:"flex flex-1 items-center justify-center py-8 text-sm text-muted-foreground",children:l("copyPaneLoading")}):m?(0,t.jsx)("div",{className:"flex flex-1 items-center justify-center py-8 text-sm text-ui-red",children:m}):(0,t.jsx)("textarea",{value:r,onChange:e=>o(e.target.value),spellCheck:!1,autoCorrect:"off",autoCapitalize:"off",className:"min-h-0 flex-1 w-full resize-none rounded border border-border bg-muted/30 p-3 font-mono text-xs text-foreground outline-none focus:ring-1 focus:ring-ring"}),(0,t.jsxs)(d.Button,{onClick:y,disabled:u||!!m||!r,className:"w-full",children:[(0,t.jsx)(h.Copy,{className:"mr-2 h-4 w-4"}),l("copyPaneCopyAll")]})]})]})})};var T=e.i(399267),I=e.i(320183),P=e.i(353533),R=e.i(237022),A=e.i(509637),L=e.i(212283);let E="relative inline-flex h-9 w-9 shrink-0 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-foreground",D="h-4 w-4 shrink-0",B={dirty:"text-muted-foreground/75",sync:"text-muted-foreground/75",stash:"text-muted-foreground/65"},z=e=>"claude-code"===e||"codex-cli"===e?"Chat":"Terminal",M=({tabId:e,tabName:s,sessionName:a,cwdKey:l,panelType:o,onSwitchPanelType:c,onCreateTab:d,onOpenGit:u,onClose:f})=>{let m=(0,i.useTranslations)("mobile"),x=(0,i.useTranslations)("common"),k=(0,i.useTranslations)("terminal"),[M,O]=(0,n.useState)(!1),[$,W]=(0,n.useState)(!1),F="terminal"===o&&!!a,V=(0,T.default)(t=>t.tabs[e]),H=(0,R.default)(e=>e.phase),U=(0,R.default)(e=>e.status),G=(0,R.default)(e=>e.branch),K=(0,R.default)(e=>e.resetForTarget),_=(0,R.default)(e=>e.fetchForTarget),q=(0,R.getGitStatusIndicators)(U),J=(0,R.formatGitStatusSummary)(H,G,U,"Open Git"),Q=q.length>0||"error"===H;(0,n.useEffect)(()=>{let e={cwdKey:l,tmuxSession:a};if(K(e),_(e),!l||!a)return;let t=window.setInterval(()=>{_(e)},15e3);return()=>window.clearInterval(t)},[l,_,K,a]);let X="terminal"===o||"claude-code"===o||"codex-cli"===o,Y=(0,A.getAgentPanelTypeFromProvider)(V?.agentProviderId),Z=!!Y&&(V?.agentProcess===!0||((e,t)=>{if(!t)return!1;let n=t.toLowerCase();return"claude-code"===e?"claude"===n:"codex-cli"===e&&"codex"===n})(Y,V?.currentProcess)),ee=(0,A.isAgentPanel)(o)?o:Z?Y:void 0,et=[{type:"terminal",label:"Terminal"},...ee?[{type:ee,label:z(ee)}]:[{type:"claude-code",label:"Claude",startAction:!0},{type:"codex-cli",label:"Codex",startAction:!0}]],en=V?.terminalStatus==="server"?"text-ui-green":V?.terminalStatus==="running"?"text-ui-blue":"text-muted-foreground/50";return(0,t.jsxs)("div",{className:"flex h-11 shrink-0 items-center border-b border-border/50 bg-background",children:[(0,t.jsx)("div",{className:"flex min-w-0 flex-1 items-center gap-2 px-2",children:(0,t.jsxs)("div",{className:"flex min-w-0 flex-1 items-center gap-2 px-1.5 py-1",children:[(0,t.jsx)(v.default,{tabId:e,panelType:o}),"claude-code"===o?(0,t.jsx)(S.default,{size:16}):"codex-cli"===o?(0,t.jsx)(C.default,{size:16,className:"shrink-0 text-foreground","aria-label":"Codex"}):"diff"===o?(0,t.jsx)(g.GitCompareArrows,{className:(0,P.cn)(D,"text-muted-foreground")}):"agent-sessions"===o?(0,t.jsx)(b.History,{className:(0,P.cn)(D,"text-muted-foreground")}):(0,t.jsx)(I.default,{process:V?.currentProcess,className:(0,P.cn)(D,en)}),(0,t.jsx)("span",{className:"min-w-0 flex-1 truncate text-xs text-foreground",children:s}),X&&(0,t.jsx)("button",{type:"button",className:"h-7 rounded border border-border/70 bg-muted/30 px-2 text-xs text-muted-foreground",onClick:()=>W(!0),"aria-label":"Select tab mode",children:z(o)})]})}),(0,t.jsxs)("div",{className:"flex shrink-0 items-center gap-0.5 pr-0.5",children:[F&&(0,t.jsx)("button",{className:E,onClick:()=>O(!0),"aria-label":k("copyPaneLabel"),title:k("copyPaneLabel"),children:(0,t.jsx)(h.Copy,{className:D})}),(0,t.jsxs)("button",{className:(0,P.cn)(E,Q&&"w-auto gap-1 px-2"),onClick:u,"aria-label":"Open Git",title:J,children:[(0,t.jsx)(g.GitCompareArrows,{className:D}),"error"===H&&(0,t.jsx)("span",{className:"text-[10px] font-semibold leading-none text-negative/70","aria-hidden":"true",children:"!"}),q.map(e=>(0,t.jsx)("span",{className:(0,P.cn)("flex h-4 min-w-0 items-center justify-center text-[10px] font-medium leading-none",B[e.tone]),"aria-hidden":"true",children:e.label},e.key))]}),(0,t.jsx)("button",{className:E,onClick:d,"aria-label":m("newTab"),title:m("newTab"),children:(0,t.jsx)(r.Plus,{className:D})}),(0,t.jsxs)(L.AlertDialog,{children:[(0,t.jsx)(L.AlertDialogTrigger,{className:(0,P.cn)(E,"hover:text-ui-red"),"aria-label":m("closeTab"),title:m("closeTab"),children:(0,t.jsx)(p.X,{className:D})}),(0,t.jsxs)(L.AlertDialogContent,{children:[(0,t.jsxs)(L.AlertDialogHeader,{children:[(0,t.jsx)(L.AlertDialogTitle,{children:m("closeTab")}),(0,t.jsx)(L.AlertDialogDescription,{children:m("closeTabConfirm",{name:s})})]}),(0,t.jsxs)(L.AlertDialogFooter,{children:[(0,t.jsx)(L.AlertDialogCancel,{children:x("cancel")}),(0,t.jsx)(L.AlertDialogAction,{className:"bg-ui-red hover:bg-ui-red/80",onClick:f,children:x("close")})]})]})]})]}),(0,t.jsx)(N,{open:M,onOpenChange:O,sessionName:a}),(0,t.jsx)(j.Drawer,{open:$,onOpenChange:W,children:(0,t.jsxs)(j.DrawerContent,{children:[(0,t.jsx)(j.DrawerHeader,{children:(0,t.jsx)(j.DrawerTitle,{children:"View as"})}),(0,t.jsx)("div",{className:"flex flex-col gap-1 px-4 pb-[calc(1rem+env(safe-area-inset-bottom))]",children:et.map(n=>(0,t.jsxs)("button",{type:"button",className:(0,P.cn)("flex min-h-11 items-center gap-3 rounded-md px-3 text-left text-sm text-foreground hover:bg-accent",o===n.type&&"bg-accent font-medium"),onClick:()=>(t=>{if(o===t.type)return void W(!1);if((0,A.tryAgentSwitch)({current:o,target:t.type,cliState:V?.cliState,agentProcess:V?.agentProcess,runningAgentPanelType:Y})){if(W(!1),t.startAction&&("claude-code"===t.type||"codex-cli"===t.type))return void window.dispatchEvent(new CustomEvent("purplemux-start-agent",{detail:{tabId:e,provider:"codex-cli"===t.type?"codex":"claude"}}));c(t.type)}})(n),children:["terminal"===n.type?(0,t.jsx)(w.TerminalSquare,{className:(0,P.cn)(D,"text-muted-foreground")}):(0,t.jsx)(y.MessageSquare,{className:(0,P.cn)(D,"text-muted-foreground")}),(0,t.jsx)("span",{children:n.startAction?`Start ${n.label}`:n.label})]},n.type))})]})})]})};var O=e.i(125687),$=e.i(40830),W=e.i(236495),F=e.i(244046),V=e.i(355327),H=e.i(756494),U=e.i(391046),G=e.i(918324),K=e.i(231382),_=e.i(377181),q=e.i(418760),J=e.i(815435),Q=e.i(967086),X=e.i(541301),Y=e.i(767708),Z=e.i(650001),ee=e.i(441693),et=e.i(17122),en=e.i(74531),es=e.i(273062),ea=e.i(165137),el=e.i(87093),er=e.i(124726),ei=e.i(148141),eo=e.i(624306),ec=e.i(706140),ed=e.i(529511);let eu=({open:e,onOpenChange:n,meta:s,toolCount:a,toolBreakdown:l,branch:r,isBranchLoading:i,sessionId:o,gitStatus:c,tmuxInfo:d})=>(0,t.jsx)(ed.Sheet,{open:e,onOpenChange:n,children:(0,t.jsxs)(ed.SheetContent,{side:"bottom",showCloseButton:!1,className:"rounded-t-xl",children:[(0,t.jsx)("div",{className:"mx-auto mt-2 h-1.5 w-12 rounded-full bg-muted-foreground/20"}),(0,t.jsx)("div",{className:"px-4 pt-4 pb-6",children:(0,t.jsx)(ec.MetaDetail,{title:s.title,sessionId:o,createdAt:s.createdAt,updatedAt:s.updatedAt,fileSize:s.fileSize,userCount:s.userCount,assistantCount:s.assistantCount,toolCount:a,toolBreakdown:l,inputTokens:s.inputTokens,cachedInputTokens:s.cachedInputTokens,outputTokens:s.outputTokens,reasoningOutputTokens:s.reasoningOutputTokens,totalCost:s.totalCost,currentContextTokens:s.currentContextTokens,contextWindowSize:s.contextWindowSize,usedPercentage:s.usedPercentage,model:s.model,branch:r,isBranchLoading:i,gitStatus:c,tmuxInfo:d})})]})});var ef=e.i(639530);let em=({tabId:e,wsId:s,sessionName:a,claudeSessionId:l,cwd:r,sendStdin:d,terminalWsConnected:u,focusTerminal:f,focusInputRef:m,setInputValueRef:x,onCliStateChange:p,onInputVisibleChange:g,onRestartSession:h,onNewSession:b,trustPrompt:y,onTrustResponse:w})=>{let S=(0,i.useTranslations)("terminal"),{prompts:C}=(0,ef.default)(),[v,j]=(0,n.useState)(null),[k,N]=(0,n.useState)(!1),I=(0,n.useRef)(void 0),P=(0,T.default)(t=>e?t.tabs[e]?.agentProcess??null:null),R=(0,T.default)(t=>!e||(t.tabs[e]?.agentInstalled??!0)),A=(0,T.default)(t=>e?t.tabs[e]?.cliState??"inactive":"inactive"),L=(0,T.default)(t=>e?t.tabs[e]?.compactingSince??null:null),E=(0,T.default)(t=>e?t.tabs[e]?.agentSummary??null:null),D=(0,T.default)(t=>e?t.tabs[e]?.lastUserMessage??null:null),B=(0,n.useCallback)(()=>{j(null)},[]),z=(0,n.useCallback)(e=>{j(null),c.toast.warning(S("resumeBlocked"),{description:e.processName?S("resumeBlockedProcess",{name:e.processName}):void 0})},[S]),M=(0,n.useCallback)(()=>{j(null),c.toast.error(S("resumeFailed"))},[S]),{entries:O,tasks:$,sessionId:W,jsonlPath:F,sessionSummary:V,initMeta:H,sessionStats:U,agentProcess:ed,wsStatus:em,isLoading:ex,error:ep,loadMore:eg,hasMore:eh,retrySession:eb,sendResume:ey,addPendingUserMessage:ew,removePendingUserMessage:eS}=(0,K.default)({sessionName:a,claudeSessionId:l,enabled:!!a,resumeCallbacks:{onResumeStarted:B,onResumeBlocked:z,onResumeError:M},onSync:e?t=>{let n=Date.now();null!==t.agentProcess&&T.default.getState().setAgentProcess(e,t.agentProcess,n),t.agentInstalled||T.default.getState().setAgentInstalled(e,!1),T.default.getState().setTimelineLoading(e,t.isLoading)}:void 0,getCliState:e?()=>T.default.getState().tabs[e]?.cliState:void 0}),eC=e?P:ed,{sessions:ev,hasMore:ej,isLoading:ek,isLoadingMore:eN,error:eT,refetch:eI,loadMore:eP}=(0,q.default)({tmuxSession:a,enabled:!!a&&!0!==eC,cwd:r}),eR=(0,n.useRef)(P);(0,n.useEffect)(()=>{let e=eR.current;eR.current=P,!0!==e&&!0===P&&!0!==ed&&eb()},[P,ed,eb]);let eA=(0,T.default)(t=>e?(0,T.selectSessionView)(t.tabs,e):"session-list"),{meta:eL}=(0,J.default)(O,V,H,U,E,D),{branch:eE,isLoading:eD}=(0,Q.default)(a),{status:eB}=(0,X.default)(a,k),ez=(0,Y.default)(a,k),eM=(0,Z.default)(F,k),eO=eM?{...eL,userCount:eM.userCount,assistantCount:eM.assistantCount}:eL,e$="timeline"===eA,eW=(0,_.default)("check"===eA,a);(0,n.useEffect)(()=>{p(A)},[A,p]),(0,n.useEffect)(()=>{g(e$)},[e$,g]);let eF=(0,n.useCallback)(()=>{"idle"===A&&I.current?.()},[A]),eV=(0,n.useCallback)(e=>{x.current?.(e),m.current?.()},[x,m]),eH=(0,n.useCallback)(e=>{v||(j(e),ey(e,a))},[v,ey,a]);return R?y&&w?(0,t.jsx)("div",{className:"animate-delayed-fade-in flex min-h-0 flex-1 flex-col items-center justify-center bg-muted px-4",children:(0,t.jsx)(ea.default,{folderPath:y.folderPath,agent:y.agent,onRespond:w})}):null===P&&"check"!==eA?(0,t.jsx)("div",{className:"animate-delayed-fade-in flex min-h-0 flex-1 flex-col items-center justify-center bg-muted",children:(0,t.jsx)(o.default,{className:"h-4 w-4 text-muted-foreground"})}):"check"===eA?eW?(0,t.jsx)("div",{className:"animate-delayed-fade-in flex min-h-0 flex-1 flex-col items-center justify-center bg-muted",children:eW.isBypassPrompt&&eW.options.length>0?(0,t.jsx)(es.default,{sessionName:a,options:eW.options,fallback:(0,t.jsx)("span",{className:"text-xs text-muted-foreground",children:S("checkTerminal")})}):(0,t.jsx)("span",{className:"mt-3 text-xs text-muted-foreground",children:S("checkTerminal")})}):(0,t.jsx)(en.default,{icon:(0,t.jsx)(er.default,{className:"h-8 w-8 text-foreground motion-safe:animate-spin motion-reduce:opacity-70 [animation-duration:1.5s]"}),main:l||W?S("claudeBootResuming"):S("claudeBootMain"),almostReady:S("claudeBootAlmostReady"),subtitle:S("claudeBootSubtitle"),className:"animate-delayed-fade-in min-h-0 flex-1 bg-muted"}):"session-list"===eA?ek&&0===ev.length?(0,t.jsx)("div",{className:"animate-delayed-fade-in flex min-h-0 flex-1 flex-col items-center justify-center bg-muted",children:(0,t.jsx)(o.default,{className:"h-4 w-4 text-muted-foreground"})}):0!==ev.length||eT?(0,t.jsx)("div",{className:"flex min-h-0 flex-1 flex-col bg-muted",children:(0,t.jsx)(ee.default,{sessions:ev,isLoading:ek,isLoadingMore:eN,hasMore:ej,error:eT,resumingSessionId:v,onSelectSession:eH,onRefresh:eI,onLoadMore:eP,onNewSession:b})}):(0,t.jsx)("div",{className:"flex min-h-0 flex-1 flex-col bg-muted",children:(0,t.jsx)(et.default,{onNewSession:b})}):(0,t.jsxs)("div",{className:"flex min-h-0 flex-1 flex-col bg-muted",children:[(0,t.jsxs)("div",{className:"flex shrink-0 cursor-pointer items-center justify-between border-b px-4 py-1.5 hover:bg-muted/30",role:"button",tabIndex:0,onClick:()=>N(!0),onKeyDown:e=>{("Enter"===e.key||" "===e.key)&&(e.preventDefault(),N(!0))},children:[(0,t.jsx)(ec.MetaCompact,{title:eL.title,totalCost:eL.totalCost,branch:eE,usedPercentage:eL.usedPercentage,currentContextTokens:eL.currentContextTokens,contextWindowSize:eL.contextWindowSize}),(0,t.jsx)(G.ChevronDown,{size:14,className:"shrink-0 text-muted-foreground"})]}),(0,t.jsx)("div",{className:"min-h-0 flex-1",children:(0,t.jsx)(el.default,{entries:O,tasks:$,sessionId:W,sessionName:a,tabId:e,initMeta:H,sessionStats:U,cliState:A,compactingSince:L,wsStatus:em,isLoading:ex,error:ep,onRetry:eb,onLoadMore:eg,hasMore:eh,scrollToBottomRef:I})}),(0,t.jsxs)("div",{className:"shrink-0 pb-3",children:[(0,t.jsx)(ei.default,{tabId:e,wsId:s,sessionName:a,agentSessionId:l,cliState:A,sendStdin:d,terminalWsConnected:u,visible:e$,focusTerminal:f,focusInputRef:m,setInputValueRef:x,maxRows:3,onRestartSession:h,onSend:eF,onOptimisticSend:ew,onAddPendingMessage:ew,onRemovePendingMessage:eS}),(0,t.jsx)(eo.default,{prompts:C,visible:e$,onSelect:eV})]}),(0,t.jsx)(eu,{open:k,onOpenChange:N,meta:eO,toolCount:eM?.toolCount??null,toolBreakdown:eM?.toolBreakdown??null,branch:eE,isBranchLoading:eD,sessionId:W,gitStatus:eB,tmuxInfo:ez})]}):(0,t.jsxs)("div",{className:"flex min-h-0 flex-1 flex-col items-center justify-center gap-3 bg-muted text-muted-foreground",children:[(0,t.jsx)("span",{className:"text-sm font-medium",children:S("installClaude")}),(0,t.jsx)("span",{className:"text-xs",children:S("installClaudeHint")})]})};var ex=e.i(224050),ep=e.i(695813),eg=e.i(672432),eh=e.i(326287);let eb=({tabId:e,wsId:s,sessionName:a,cwd:l,sendStdin:u,terminalWsConnected:f,focusTerminal:m,focusInputRef:x,setInputValueRef:p,onNewSession:g,onRestart:h,updatePrompt:b,onUpdatePromptResponse:y,trustPrompt:w,onTrustResponse:S})=>{let v=(0,i.useTranslations)("terminal"),j=(0,T.default)(t=>e?t.tabs[e]?.agentProcess??null:null),k=(0,T.default)(t=>!e||(t.tabs[e]?.agentInstalled??!0)),N=(0,T.default)(t=>e?t.tabs[e]?.cliState??"inactive":"inactive"),I=(0,T.default)(t=>e?t.tabs[e]?.compactingSince??null:null),P=(0,T.default)(t=>e?t.tabs[e]?.agentSessionId??null:null),R=(0,T.default)(t=>e?t.tabs[e]?.agentSummary??null:null),A=(0,T.default)(t=>e?t.tabs[e]?.lastUserMessage??null:null),L=(0,T.default)(t=>e?(0,T.selectSessionView)(t.tabs,e):"session-list"),[E,D]=(0,n.useState)(!1),[B,z]=(0,n.useState)(null),M=(0,n.useRef)(void 0),{prompts:O}=(0,ef.default)(),$=(0,n.useCallback)(()=>g?.(),[g]),W=(0,n.useCallback)(()=>{"idle"===N&&M.current?.()},[N]),F=(0,n.useCallback)(e=>{p.current?.(e),x.current?.()},[p,x]),V=(0,n.useCallback)(()=>{z(null)},[]),H=(0,n.useCallback)(e=>{z(null),c.toast.warning(v("resumeBlocked"),{description:e.processName?v("resumeBlockedProcess",{name:e.processName}):void 0})},[v]),U=(0,n.useCallback)(()=>{z(null),c.toast.error(v("codexResumeFailed"))},[v]),{entries:_,tasks:q,sessionId:ee,jsonlPath:et,sessionSummary:en,initMeta:es,sessionStats:er,wsStatus:ed,isLoading:em,error:eb,loadMore:ey,hasMore:ew,retrySession:eS,sendResume:eC,addPendingUserMessage:ev,removePendingUserMessage:ej,agentProcess:ek}=(0,K.default)({sessionName:a??"",agentSessionId:P,panelType:"codex-cli",enabled:!!a,resumeCallbacks:{onResumeStarted:V,onResumeBlocked:H,onResumeError:U},onSync:e?t=>{let n=Date.now();null!==t.agentProcess&&T.default.getState().setAgentProcess(e,t.agentProcess,n),t.agentInstalled||T.default.getState().setAgentInstalled(e,!1),T.default.getState().setTimelineLoading(e,t.isLoading)}:void 0,getCliState:e?()=>T.default.getState().tabs[e]?.cliState:void 0}),{sessions:eN,isLoading:eT,error:eI,refresh:eP}=(0,ex.useCodexSessions)(l,!!l&&"session-list"===L&&!0!==j),eR=(0,n.useRef)(j);(0,n.useEffect)(()=>{let e=eR.current;eR.current=j,!0!==e&&!0===j&&!0!==ek&&eS()},[j,ek,eS]),(0,n.useEffect)(()=>{if(!e||"unknown"!==N)return;let t=new AbortController;return fetch("/api/tmux/recover-unknown",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({tabId:e}),signal:t.signal}).catch(()=>{}),()=>t.abort()},[e,N]),(0,n.useEffect)(()=>{if(!e||!a||"check"!==L)return;if("inactive"!==N&&"unknown"!==N&&"cancelled"!==N)return void T.default.getState().setSessionView(e,"timeline");if(!0===j||!0===ek)return void T.default.getState().setAgentProcess(e,!0,Date.now());let t=!1,n=async()=>{try{let n=await fetch(`/api/check-agent?session=${a}`);if(!n.ok)return;let s=await n.json();if(t||!0!==s.running||"codex-cli"!==s.providerPanelType)return;T.default.getState().setAgentProcess(e,!0,"number"==typeof s.checkedAt?s.checkedAt:Date.now())}catch{}};n();let s=window.setInterval(n,800);return()=>{t=!0,window.clearInterval(s)}},[j,ek,N,a,e,L]);let{meta:eA}=(0,J.default)(_,en,es,er,R,A),{branch:eL,isLoading:eE}=(0,Q.default)(a??""),{status:eD}=(0,X.default)(a??"",E),eB=(0,Y.default)(a??"",E),ez=(0,Z.default)(et,E),eM=ez?{...eA,userCount:ez.userCount,assistantCount:ez.assistantCount}:eA,eO=(0,n.useCallback)(e=>{a&&!B&&(z(e.sessionId),eC(e.sessionId,a))},[B,eC,a]);return k?b&&y?(0,t.jsx)("div",{className:"animate-delayed-fade-in flex min-h-0 flex-1 flex-col items-center justify-center bg-muted px-4",children:(0,t.jsx)(eg.default,{prompt:b,onRespond:y})}):w&&S?(0,t.jsx)("div",{className:"animate-delayed-fade-in flex min-h-0 flex-1 flex-col items-center justify-center bg-muted px-4",children:(0,t.jsx)(ea.default,{folderPath:w.folderPath,agent:w.agent,onRespond:S})}):"check"===L?(0,t.jsx)("div",{className:"animate-delayed-fade-in flex min-h-0 flex-1 flex-col items-center justify-center bg-muted px-4",children:(0,t.jsx)(ep.default,{onRestart:h})}):"session-list"===L?null!==j&&l?(0,t.jsx)("div",{className:"min-h-0 flex-1 bg-muted",children:(0,t.jsx)(eh.default,{sessions:eN,isLoading:eT,error:eI?v("codexSessionsLoadFailed"):null,resumingSessionId:B,onSelectSession:eO,onRefresh:eP,onNewSession:g})}):(0,t.jsx)("div",{className:"animate-delayed-fade-in flex min-h-0 flex-1 flex-col items-center justify-center bg-muted px-4",children:(0,t.jsx)(o.default,{className:"h-4 w-4 text-muted-foreground"})}):"inactive"!==N||!1!==j||P||em?(0,t.jsxs)("div",{className:"flex min-h-0 flex-1 flex-col bg-muted",children:[(0,t.jsxs)("div",{className:"flex shrink-0 cursor-pointer items-center justify-between border-b px-4 py-1.5 hover:bg-muted/30",role:"button",tabIndex:0,onClick:()=>D(!0),onKeyDown:e=>{("Enter"===e.key||" "===e.key)&&(e.preventDefault(),D(!0))},children:[(0,t.jsx)(ec.MetaCompact,{title:eA.title,totalCost:eA.totalCost,branch:eL,usedPercentage:eA.usedPercentage,currentContextTokens:eA.currentContextTokens,contextWindowSize:eA.contextWindowSize}),(0,t.jsx)(G.ChevronDown,{size:14,className:"shrink-0 text-muted-foreground"})]}),(0,t.jsx)("div",{className:"min-h-0 flex-1",children:(0,t.jsx)(el.default,{entries:_,tasks:q,sessionId:ee,sessionName:a,tabId:e,initMeta:es,sessionStats:er,cliState:N,compactingSince:I,wsStatus:ed,isLoading:em,error:eb,onRetry:eS,onLoadMore:ey,hasMore:ew,scrollToBottomRef:M})}),(0,t.jsxs)("div",{className:"shrink-0 pb-3",children:[(0,t.jsx)(ei.default,{tabId:e,wsId:s,sessionName:a,agentSessionId:P,provider:"codex",cliState:N,sendStdin:u,terminalWsConnected:f,visible:"timeline"===L,focusTerminal:m,focusInputRef:x,setInputValueRef:p,maxRows:3,onRestartSession:h,onSend:W,onOptimisticSend:ev,onAddPendingMessage:ev,onRemovePendingMessage:ej}),(0,t.jsx)(eo.default,{prompts:O,visible:"timeline"===L,onSelect:F})]}),(0,t.jsx)(eu,{open:E,onOpenChange:D,meta:eM,toolCount:ez?.toolCount??null,toolBreakdown:ez?.toolBreakdown??null,branch:eL,isBranchLoading:eE,sessionId:ee,gitStatus:eD,tmuxInfo:eB})]}):(0,t.jsxs)("div",{className:"flex min-h-0 flex-1 flex-col items-center justify-center gap-4 bg-muted px-6 text-center",role:"status",children:[(0,t.jsx)(C.default,{size:32,className:"text-muted-foreground/60"}),(0,t.jsx)("p",{className:"text-sm font-medium text-foreground",children:v("codexInactiveMessage")}),g&&(0,t.jsxs)(d.Button,{size:"default",className:"min-h-11",onClick:$,children:[(0,t.jsx)(r.Plus,{className:"size-4"}),v("codexStartSession")]})]}):(0,t.jsxs)("div",{className:"flex min-h-0 flex-1 flex-col items-center justify-center gap-3 bg-muted px-6 text-center text-muted-foreground",role:"status",children:[(0,t.jsx)(C.default,{size:32,className:"text-muted-foreground/60"}),(0,t.jsx)("span",{className:"text-sm font-medium text-foreground",children:v("codexNotInstalled")})]})};var ey=e.i(204360),ew=e.i(166229);let eS="__CTRL__",eC="__SHIFT__",ev={fontFamily:"MesloLGLDZ, monospace"},ej=[{label:"Tab",value:" "},{label:"Esc",value:"\x1b"},{label:"Ctrl",value:eS},{label:"Shift",value:eC},{label:"󱞥",value:"\r",nerd:!0},{label:"󰁝",value:"\x1b[A",nerd:!0},{label:"󰁅",value:"\x1b[B",nerd:!0},{label:"󰁍",value:"\x1b[D",nerd:!0},{label:"󰁔",value:"\x1b[C",nerd:!0},{label:"󰍴",value:"|",nerd:!0,rotate:!0},{label:"󰜥",value:"~",nerd:!0}],ek=({sendStdin:e,terminalConnected:s})=>{let a=(0,i.useTranslations)("mobile"),[l,r]=(0,n.useState)(""),[o,c]=(0,n.useState)(!1),[u,f]=(0,n.useState)(!1),m=(0,n.useRef)(null),x=(0,n.useCallback)(()=>{let e=m.current;e&&(e.style.height="auto",e.style.height=`${Math.min(e.scrollHeight,76)}px`)},[]);(0,n.useEffect)(()=>{x()},[l,x]);let p=(0,n.useCallback)(()=>{s&&(l&&e(l),e("\r"),r(""))},[l,e,s]),g=(0,n.useCallback)(t=>{let n=t.target.value;if(o&&n.length===l.length+1){let t=n[n.length-1].toLowerCase().charCodeAt(0);if(t>=97&&t<=122){e(String.fromCharCode(t-96)),c(!1);return}}if(u&&n.length===l.length+1){let e=n[n.length-1],t=e.toUpperCase();if(t!==e){r(l+t),f(!1);return}}r(n)},[o,u,l,e]),h=(0,n.useCallback)(t=>{t.value===eS?c(e=>!e):t.value===eC?f(e=>!e):(e(t.value),o&&c(!1),u&&f(!1))},[o,u,e]);return(0,t.jsxs)("div",{className:"shrink-0 border-t border-border bg-background",children:[(0,t.jsxs)("div",{className:"flex items-end gap-2 px-3 py-2",children:[(0,t.jsx)("textarea",{ref:m,value:l,onChange:g,placeholder:o?"Ctrl + ...":u?"Shift + ...":a("commandPlaceholder"),autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",spellCheck:!1,rows:1,className:(0,P.cn)("flex-1 resize-none rounded-md border px-3 py-1.5 text-sm text-foreground outline-none placeholder:text-muted-foreground",o||u?"border-claude-active bg-claude-active/10":"border-border bg-black/5 focus:border-ring dark:bg-white/5"),style:{lineHeight:"20px",maxHeight:"76px",overflowY:"auto"}}),(0,t.jsx)(d.Button,{variant:"ghost",size:"sm",className:(0,P.cn)("h-8 w-8 shrink-0 p-0 text-muted-foreground hover:text-foreground",l.trim()&&"text-claude-active"),onClick:p,"aria-label":a("send"),children:(0,t.jsx)(ew.SendHorizontal,{size:16})})]}),(0,t.jsx)("div",{className:"flex items-center gap-1 overflow-x-auto px-3 pb-2",style:{scrollbarWidth:"none",WebkitOverflowScrolling:"touch"},children:ej.map(e=>(0,t.jsx)("button",{className:(0,P.cn)("shrink-0 rounded-md border px-2.5 py-1 text-xs font-medium transition-colors",e.value===eS&&o||e.value===eC&&u?"border-claude-active bg-claude-active/20 text-claude-active":"border-border bg-muted/50 text-muted-foreground active:bg-muted"),onClick:()=>h(e),children:(0,t.jsx)("span",{className:(0,P.cn)("inline-block",e.rotate&&"rotate-90"),style:e.nerd?ev:void 0,children:e.label})},e.label))})]})};var eN=e.i(196755),eT=e.i(251748),eI=e.i(610782),eP=e.i(117369),eR=e.i(31050),eA=e.i(750147),eL=e.i(732859),eE=e.i(1398),eD=e.i(828324),eB=e.i(827294),ez=e.i(530417),eM=e.i(824075),eO=e.i(635255);let e$={write:()=>{},reset:()=>{},fit:()=>({cols:40,rows:24}),focus:()=>{},getBufferText:()=>""},eW={sendStdin:()=>{},sendResize:()=>{}},eF=({paneId:e,tabs:s,activeTabId:a,panelType:l,onCreateTab:f,onDeleteTab:m,onSwitchTab:p,onRemoveTabLocally:g,onUpdateTabPanelType:h,onUpdateDiffSettings:b,onCliStateChange:y,onOpenNewTabDialog:w})=>{let S=(0,i.useTranslations)("mobile"),C=(0,i.useTranslations)("terminal"),v=s.find(e=>e.id===a),j="claude-code"===l,k="codex-cli"===l,N="agent-sessions"===l,I=j||k,R=I||N,A="web-browser"===l,L="diff"===l,{ensureAgentInstalled:E,installDialogs:D}=(0,eE.useAgentInstallCheck)(),B=(0,x.default)(e=>a?e.metadata[a]?.cwd:void 0),z=(0,u.useLayoutStore)(e=>e.workspaceId),M=(0,u.useLayoutStore)(e=>e.layout?.diffSettings),{theme:G}=(0,eP.default)(),[K,_]=(0,n.useState)(!1),[q,J]=(0,n.useState)(!1),[Q,X]=(0,n.useState)(!0),Y=(0,n.useRef)(e$),Z=(0,n.useRef)(eW),ee=(0,n.useRef)(null),et=(0,n.useRef)(null),en=(0,n.useRef)(null),[es,ea]=(0,n.useState)(null),el=(0,n.useRef)(null),er=(0,n.useRef)(!1),ei=(0,n.useRef)(s),eo=(0,n.useRef)(a);(0,n.useEffect)(()=>{ei.current=s,eo.current=a});let ec=(0,n.useCallback)(async()=>{let e=eo.current,t=e?ei.current.find(t=>t.id===e):null;if(t)try{let e=await fetch(`/api/layout/cwd?session=${t.sessionName}`);if(!e.ok)return;let{cwd:n}=await e.json();n&&x.default.getState().setCwd(t.id,n)}catch{}},[]),ed=(0,n.useRef)(()=>{}),eu=(0,n.useRef)(void 0),ef=(0,n.useRef)(void 0),ex=(0,n.useRef)(null),ep=(0,n.useRef)(null),eg=(0,n.useRef)(()=>{}),eh=(0,n.useRef)(""),ew=(0,T.default)(e=>a?e.tabs[a]?.agentProcess??null:null),eS=(0,T.default)(e=>a?e.tabs[a]?.agentSessionId??null:null),eC=(0,T.default)(e=>a?(0,T.selectSessionView)(e.tabs,a):null),ev=(0,T.default)(e=>a?e.tabs[a]?.cliState??"inactive":"inactive"),ej=(0,n.useRef)(new Set),[eF,eV]=(0,n.useState)(null),eH=(0,n.useCallback)((e,t)=>{if(!0!==t.running||!(0,eM.isAgentPanelType)(t.providerPanelType))return void eV(t=>t?.tabId===e?null:t);let n="string"==typeof t.providerId&&t.providerId?t.providerId:t.providerPanelType,s=`${e}:${n}`;if(ej.current.has(s))return;ej.current.add(s);let a="string"==typeof t.providerDisplayName&&t.providerDisplayName?t.providerDisplayName:n;eV({tabId:e,providerId:n,displayName:a,panelType:t.providerPanelType,sessionId:"string"==typeof t.sessionId&&t.sessionId?t.sessionId:null,resumable:!0===t.resumable})},[]),{trustPrompt:eU,onTerminalData:eG,onTrustResponse:eK}=(0,eA.default)({enabled:(j||k)&&"inactive"===ev,getBufferText:()=>Y.current.getBufferText(),sendStdin:e=>Z.current.sendStdin(e)}),{updatePrompt:e_,onTerminalData:eq,onRespond:eJ}=(0,eL.default)({enabled:k&&"inactive"===ev,scopeKey:a,getBufferText:()=>Y.current.getBufferText(),sendStdin:e=>Z.current.sendStdin(e),onUpdated:()=>{eg.current()}}),eQ=(0,n.useCallback)(e=>{y?.(e)},[y]),eX=(0,n.useCallback)(e=>{},[]),eY=(0,n.useCallback)(e=>(0,eI.isAppShortcut)(e)?(e.preventDefault(),(0,eI.isClearShortcut)(e)&&ed.current(),(0,eI.isFocusInputShortcut)(e)&&eu.current?.(),!1):!(0,eI.isShiftEnter)(e)||(e.preventDefault(),Z.current.sendStdin("\n"),!1),[]),{terminalRef:eZ,write:e0,clear:e1,reset:e3,fit:e2,focus:e5,isReady:e4,getBufferText:e7}=(0,F.default)({theme:G.colors,fontSize:I?void 0:11,onInput:e=>Z.current.sendStdin(e),onResize:(e,t)=>{Z.current.sendResize(e,t),er.current&&(el.current&&clearTimeout(el.current),el.current=setTimeout(()=>{er.current=!1,X(!0)},200))},onTitleChange:e=>{let t=eo.current;if(!t)return;let n=ei.current.find(e=>e.id===t);if(!n||"web-browser"===n.panelType||"agent-sessions"===n.panelType||e===eh.current)return;eh.current=e;let s=(0,eT.formatTabTitle)(e,n?.panelType);if(x.default.getState().setTitle(t,s),(0,eT.isShellProcess)(e)&&ex.current){let e=ex.current;ex.current=null,Z.current.sendStdin(`${e}\r`)}let a=ei.current.find(e=>e.id===t);if(a){let e=T.default.getState().tabs[t]?.agentProcessCheckedAt??0;fetch(`/api/check-agent?session=${a.sessionName}`).then(e=>e.json()).then(s=>{n?.panelType==="terminal"&&eH(t,s);let l=!0===s.running&&(0,eM.isAgentPanelType)(s.providerPanelType),r=T.default.getState().tabs[t];if(r&&r.agentProcessCheckedAt!==e){r.agentProcess!==l&&setTimeout(()=>{fetch(`/api/check-agent?session=${a.sessionName}`).then(e=>e.json()).then(e=>{n?.panelType==="terminal"&&eH(t,e),(0,eM.applyAgentCheckResult)(t,e)}).catch(()=>{})},500);return}(0,eM.applyAgentCheckResult)(t,s)}).catch(()=>{})}ec()},customKeyEventHandler:eY});(0,n.useEffect)(()=>{ed.current=e1});let e6=(0,n.useCallback)(async()=>{if(en.current)return;let t=ei.current,n=eo.current;if(!n)return;en.current=n;let s=[...t].sort((e,t)=>e.order-t.order),a=s.findIndex(e=>e.id===n),l=s[a+1]||s[a-1];l&&p(e,l.id);try{await m(e,n)}finally{en.current=null}},[e,p,m]),{status:e8,retryCount:e9,disconnectReason:te,connect:tt,reconnect:tn,sendStdin:ts,sendWebStdin:ta,sendResize:tl}=(0,V.default)({onData:e=>{Y.current.write(e),eG(),eq()},onConnected:()=>{_(!0),ea(eo.current),et.current=eo.current;let e=eo.current;e&&T.default.getState().setTerminalConnected(e,!0);let{cols:t,rows:n}=Y.current.fit();Z.current.sendResize(t,n),ec()},onSessionEnded:e6});(0,n.useEffect)(()=>{Y.current={write:e0,reset:e3,fit:e2,focus:e5,getBufferText:e7},Z.current={sendStdin:ts,sendResize:tl}}),(0,n.useEffect)(()=>{e4||(ee.current=null)},[e4]),(0,n.useEffect)(()=>{if(!e4||!a)return;let e=s.find(e=>e.id===a);if(!e)return;if("web-browser"===e.panelType){ee.current=null,eh.current="";return}if(ee.current===e.sessionName)return;null!==ee.current&&e3();let t=T.default.getState(),n=t.tabs[a];t.initTab(a,{terminalConnected:!1,panelType:e.panelType,...!n?(0,T.getInitialTabStateFromLayoutTab)(e):{}}),ee.current=e.sessionName,tt(e.sessionName)},[e4,a]),(0,n.useEffect)(()=>{let e=eo.current;e&&T.default.getState().setTerminalConnected(e,"connected"===e8)},[e8]),(0,n.useEffect)(()=>{"disconnected"===e8&&K&&ea(eo.current)},[e8,K]),(0,n.useEffect)(()=>{"disconnected"===e8&&K&&et.current&&et.current!==a&&s.some(e=>e.id===et.current)&&(ee.current=null,p(e,et.current))},[e8]),(0,n.useEffect)(()=>{if(!e4||"connected"!==e8)return;let e=setTimeout(()=>{let{cols:e,rows:t}=e2();Z.current.sendResize(e,t)},300);return()=>clearTimeout(e)},[e8]),(0,n.useEffect)(()=>{if(I){er.current=!1,el.current&&clearTimeout(el.current),ec();return}if(e4&&"connected"===e8)return er.current=!0,queueMicrotask(()=>X(!1)),el.current=setTimeout(()=>{er.current=!1,X(!0)},200),()=>{el.current&&clearTimeout(el.current),er.current=!1};queueMicrotask(()=>X(!0))},[I]);let tr=(0,n.useCallback)(async()=>{J(!0),await f(e),J(!1)},[e,f]),ti=(0,n.useCallback)(e=>(0,eD.buildClaudeLaunchCommand)({workspaceId:z,dangerouslySkipPermissions:eR.default.getState().dangerouslySkipPermissions,resumeSessionId:e}),[z]),to=(0,n.useCallback)(async()=>{"connected"!==e8||!a||await E("claude")&&(T.default.getState().setSessionView(a,"check"),ts(`${ti(null)}\r`))},[e8,ts,a,ti,E]),tc=(0,n.useCallback)(async()=>{"connected"!==e8||!a||await E("claude")&&(ex.current=ti(null),T.default.getState().setSessionView(a,"check"),ts("/exit\r"))},[e8,ts,a,ti,E]),td=(0,n.useCallback)(()=>(0,eB.fetchCodexLaunchCommand)(z),[z]),tu=(0,n.useCallback)((e,t)=>{fetch("/api/status/agent-launch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({tabId:e,resetAgentSession:t?.resetAgentSession===!0})}).catch(()=>{})},[]),tf=(0,n.useCallback)(async()=>{let e;if("connected"===e8&&a&&await E("codex")){try{e=await td()}catch{c.toast.error(C("codexLaunchFailed"));return}tu(a,{resetAgentSession:!0}),T.default.getState().setSessionView(a,"check"),ts(`${e}\r`)}},[e8,ts,a,td,E,tu,C]),tm=(0,n.useCallback)(async()=>{!a||await E("claude")&&(h(e,a,"claude-code"),to())},[a,E,to,h,e]),tx=(0,n.useCallback)(async()=>{!a||await E("codex")&&(h(e,a,"codex-cli"),tf())},[a,E,tf,h,e]),tp=(0,n.useCallback)(async t=>{if("connected"!==e8||!a)return;let n="codex"===t.provider?"codex-cli":"claude-code";if(await E(t.provider)){if(h(e,a,n),T.default.getState().setSessionView(a,"check"),"codex"===t.provider){let e;try{e=await (0,eB.fetchCodexLaunchCommand)(z,t.sessionId)}catch{c.toast.error(C("codexLaunchFailed"));return}tu(a,{resetAgentSession:!1}),ts(`${e}\r`);return}ts(`${ti(t.sessionId)}\r`)}},[a,ti,E,z,tu,h,e,ts,e8,C]),tg=(0,n.useCallback)(async()=>{let e;if("connected"===e8&&a&&await E("codex")){try{e=await td()}catch{c.toast.error(C("codexLaunchFailed"));return}tu(a,{resetAgentSession:!0}),T.default.getState().setSessionView(a,"check"),ts(`${e}\r`)}},[e8,ts,a,td,E,tu,C]);(0,n.useEffect)(()=>{eg.current=tg},[tg]);let th=(0,n.useCallback)(async()=>{let e;if("connected"===e8&&a&&await E("codex")){try{e=await td()}catch{c.toast.error(C("codexLaunchFailed"));return}ex.current=e,tu(a,{resetAgentSession:!0}),T.default.getState().setSessionView(a,"check"),(0,ez.sendCodexQuitCommand)(ts)}},[e8,ts,a,td,E,tu,C]);(0,n.useEffect)(()=>{let t=t=>{let n=t.detail;if(n?.tabId!==a||"claude"!==n.provider&&"codex"!==n.provider)return;let s=n.provider;(async()=>{if(await E(s)){if(h(e,a,"codex"===s?"codex-cli":"claude-code"),"codex"===s)return tf();to()}})()};return window.addEventListener("purplemux-start-agent",t),()=>window.removeEventListener("purplemux-start-agent",t)},[a,E,to,tf,h,e]),(0,n.useEffect)(()=>{if(!ex.current||!0===ew||"connected"!==e8||!(0,eT.isShellProcess)(eh.current))return;let e=ex.current;ex.current=null;let t=eo.current;t&&tu(t),ts(`${e}\r`)},[ew,e8,ts,tu]),(0,n.useEffect)(()=>{if(!a||!0!==ew||"terminal"!==l)return void eV(null);if(eF?.tabId!==a)return},[a,ew,l,eF]),(0,n.useEffect)(()=>{if(!a||!0!==ew||"terminal"!==l||eF?.tabId===a)return;let e=v?.sessionName;if(!e)return;let t=!1;return fetch(`/api/check-agent?session=${e}`).then(e=>e.json()).then(e=>{t||eH(a,e)}).catch(()=>{}),()=>{t=!0}},[a,v?.sessionName,ew,l,eF?.tabId,eH]);let tb=(0,n.useCallback)(async()=>{if(!a||!eF||eF.tabId!==a||(eV(null),h(e,a,eF.panelType),"connected"!==e8))return;let t=eF.resumable?eF.sessionId:null;if("codex-cli"===eF.panelType){let e;if(!await E("codex"))return;try{e=await (0,eB.fetchCodexLaunchCommand)(z,t)}catch{c.toast.error(C("codexLaunchFailed"));return}ex.current=e,tu(a,{resetAgentSession:!t}),T.default.getState().setSessionView(a,"check"),(0,ez.sendCodexQuitCommand)(ts);return}await E("claude")&&(ex.current=ti(t),T.default.getState().setSessionView(a,"check"),ts("\x03"),setTimeout(()=>ts("\x03"),300))},[a,eF,ti,E,z,tu,h,e,ts,e8,C]),ty=(0,n.useCallback)(async(t,n)=>{!a||await E(n)&&(ep.current={text:t,provider:n},h(e,a,"codex"===n?"codex-cli":"claude-code"))},[a,E,e,h]);(0,n.useEffect)(()=>{let t=t=>{let n=t.detail;n?.paneId===e&&n.text&&n.provider&&ty(n.text,n.provider)};return window.addEventListener("purplemux-send-to-agent",t),()=>window.removeEventListener("purplemux-send-to-agent",t)},[e,ty]),(0,n.useEffect)(()=>{let e=ep.current;if(!e||l!==("codex"===e.provider?"codex-cli":"claude-code"))return;ep.current=null;let t=window.setTimeout(()=>{ef.current?.(e.text),eu.current?.()},100);return()=>window.clearTimeout(t)},[l]);let tw=(0,n.useCallback)(t=>{a&&z&&fetch(`/api/layout/pane/${e}/tabs/${a}?workspace=${z}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({webUrl:t})}).catch(()=>{})},[a,e,z]),tS=0===s.length,tC=A||L||N||e4&&"connected"===e8&&!tS,tv=null!==a&&es!==a,tj=(0,n.useRef)(new Set);return(0,n.useEffect)(()=>{"disconnected"!==e8||"session-not-found"!==te||tv||!a||!v||"terminal"!==(v.panelType??"terminal")||v.lastCommand||tj.current.has(a)||(tj.current.add(a),(async()=>{await u.useLayoutStore.getState().restartTabInPane(e,a)&&tn()})())},[e8,te,a,v,tv,e,tn]),(0,t.jsxs)("div",{className:"relative flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden",style:{backgroundColor:G.colors.background,overscrollBehavior:"none"},children:[A&&a&&(0,t.jsx)($.default,{tabId:a,initialUrl:v?.webUrl,onUrlChange:tw},a),L&&v&&(0,t.jsx)(W.default,{sessionName:v.sessionName,onSendToAgent:ty,settings:M,onSettingsChange:b},v.sessionName),N&&v&&(0,t.jsx)(ey.default,{sessionName:v.sessionName,cwd:B||v.cwd,onSelectSession:tp,onNewClaudeSession:tm,onNewCodexSession:tx},v.sessionName),j&&v&&(0,t.jsx)(em,{tabId:a??void 0,wsId:z??void 0,sessionName:v.sessionName,claudeSessionId:eS,cwd:B,sendStdin:ta,terminalWsConnected:"connected"===e8,focusTerminal:e5,focusInputRef:eu,setInputValueRef:ef,onCliStateChange:eQ,onInputVisibleChange:eX,onRestartSession:tc,onNewSession:to,trustPrompt:eU,onTrustResponse:eK}),k&&v&&(0,t.jsx)(eb,{tabId:a??void 0,wsId:z??void 0,sessionName:v.sessionName,cwd:B||v.cwd,sendStdin:ta,terminalWsConnected:"connected"===e8,focusTerminal:e5,focusInputRef:eu,setInputValueRef:ef,onNewSession:tf,onRestart:th,updatePrompt:e_,onUpdatePromptResponse:eJ,trustPrompt:eU,onTrustResponse:eK}),!A&&!L&&(0,t.jsx)(H.default,{ref:eZ,className:(0,P.cn)(!R&&"transition-opacity duration-150",R?"absolute inset-0 pointer-events-none opacity-0":"min-h-0 flex-1",!R&&tC&&Q?"opacity-100":"",R||tC&&Q?"":"opacity-0")}),!I&&!A&&!L&&!N&&"connected"===e8&&(0,t.jsx)(ek,{sendStdin:ta,terminalConnected:"connected"===e8}),eF&&eF.tabId===a&&"terminal"===l&&(0,t.jsx)(eN.default,{modeName:eF.displayName,onSwitch:tb,onDismiss:()=>eV(null),className:"bottom-28"}),tS&&(0,t.jsx)("div",{className:"absolute inset-0 z-20 flex flex-col items-center justify-center gap-3",children:(0,t.jsxs)(d.Button,{className:"gap-1.5",onClick:w??tr,disabled:q,children:[q?(0,t.jsx)(o.default,{className:"h-3 w-3"}):(0,t.jsx)(r.Plus,{className:"h-3.5 w-3.5"}),C("openNewTab")]})}),!tS&&!A&&"disconnected"===e8&&!tv&&(0,t.jsxs)("div",{className:"absolute inset-0 z-20 flex flex-col items-center justify-center gap-3",children:[(0,t.jsx)(O.WifiOff,{className:"h-5 w-5 text-muted-foreground"}),(0,t.jsx)("span",{className:"text-sm text-muted-foreground",children:"max-connections"===te?S("disconnectedMaxConnections"):"pty-error"===te?S("disconnectedPtyError"):"session-not-found"===te?C("disconnectedSessionNotFound"):S("cannotConnectServer")}),"session-not-found"===te&&a?(0,t.jsxs)("div",{className:"flex gap-2",children:[(0,t.jsx)(d.Button,{variant:"outline",size:"sm",onClick:async()=>{await u.useLayoutStore.getState().restartTabInPane(e,a)&&tn()},children:S("restart")}),(0,t.jsx)(d.Button,{variant:"ghost",size:"sm",onClick:()=>m(e,a),children:C("closeTabLabel")})]}):"reconnect-exhausted"===te?(0,t.jsx)(d.Button,{variant:"outline",size:"sm",onClick:()=>(0,eO.reloadForReconnectRecovery)("terminal"),children:S("restart")}):(0,t.jsx)(d.Button,{variant:"outline",size:"sm",onClick:tn,children:S("reconnect")})]}),!tS&&!A&&!L&&!(I&&"check"===eC)&&(0,t.jsx)(U.default,{status:e8,retryCount:e9,disconnectReason:te,onReconnect:tn}),D]})};var eV=e.i(875284),eH=e.i(296202);let eU=({open:e,onOpenChange:s,onCreateTab:a})=>{let l=(0,i.useTranslations)("terminal"),r=(0,i.useTranslations)("mobile"),[c,d]=(0,n.useState)(null),u=[{key:"claude",type:"claude-code",icon:(0,t.jsx)(S.default,{className:"h-5 w-5"}),label:l("claudeNewConversation"),startCommand:"claude-new"},{key:"codex",type:"codex-cli",icon:(0,t.jsx)(C.default,{className:"h-5 w-5"}),label:l("codexNewConversation"),startCommand:"codex-new"},{key:"agent-sessions",type:"agent-sessions",icon:(0,t.jsx)(b.History,{className:"h-5 w-5 text-muted-foreground"}),label:l("sessionList")},{key:"terminal",type:"terminal",icon:(0,t.jsx)(eV.Terminal,{className:"h-5 w-5 text-muted-foreground"}),label:"Terminal"}],f=async e=>{d(e.key),await a(e.type),d(null),s(!1)},m=async e=>{d(`${e.key}-new`),await a(e.type,{command:e.startCommand}),d(null),s(!1)},x=async e=>{"startCommand"in e?await m(e):await f(e)};return(0,t.jsx)(eH.Dialog,{open:e,onOpenChange:s,children:(0,t.jsxs)(eH.DialogContent,{className:"w-[calc(100%-2rem)] max-w-xs gap-2 rounded-xl p-4",children:[(0,t.jsx)(eH.DialogHeader,{children:(0,t.jsx)(eH.DialogTitle,{className:"text-sm font-medium",children:r("newTab")})}),(0,t.jsx)("div",{className:"grid grid-cols-2 gap-2",children:u.map(e=>(0,t.jsx)("div",{className:"relative aspect-square rounded-lg border border-border bg-background text-foreground transition-colors",children:(0,t.jsxs)("button",{className:"flex h-full w-full flex-col items-center justify-center gap-2 rounded-lg transition-colors active:bg-accent disabled:pointer-events-none disabled:opacity-50",disabled:null!==c,onClick:()=>x(e),children:[(0,t.jsx)("span",{className:"flex h-5 w-5 items-center justify-center",children:c===`${e.key}-new`?(0,t.jsx)(o.default,{className:"h-4 w-4"}):e.icon}),(0,t.jsx)("span",{className:"line-clamp-2 max-w-full px-1 text-center text-xs leading-tight",children:e.label})]})},e.key))})]})})},eG=({open:e,sessionName:n,onClose:s,onSendToAgent:a,settings:l,onSettingsChange:r})=>e?(0,t.jsx)("div",{className:"fixed inset-0 z-50 flex flex-col bg-card text-foreground",children:(0,t.jsx)("div",{className:"min-h-0 flex-1",children:n?(0,t.jsx)(W.default,{sessionName:n,onSendToAgent:a,onClose:s,settings:l,onSettingsChange:r}):(0,t.jsx)("div",{className:"flex h-full items-center justify-center px-6 text-center text-sm text-muted-foreground",children:"Open a terminal or agent tab first."})})}):null;var eK=e.i(3450),e_=e.i(157016),eq=e.i(566736);e.s(["default",0,()=>{let e=(0,i.useTranslations)("terminal"),p=(0,i.useTranslations)("mobile"),g=(0,i.useTranslations)("common"),{ensureAgentInstalled:h,installDialogs:b}=(0,eE.useAgentInstallCheck)(),y=(0,m.default)(e=>e.isLoading),w=(0,m.default)(e=>e.error),S=(0,m.default)(e=>e.activeWorkspaceId),C=(0,m.default)(e=>e.workspaces).length,v=(0,n.useRef)(null),j=(0,n.useCallback)(()=>{let t=v.current;t&&(m.default.getState().switchWorkspace(t),c.toast.error(e("cannotSwitch")))},[e]),k=(0,u.default)({workspaceId:S,onFetchError:j}),N=(0,n.useMemo)(()=>k.layout?(0,f.collectPanes)(k.layout.root):[],[k.layout]),I=!!(k.layout&&!k.isLoading&&N.every(e=>0===e.tabs.length)),P=k.layout?.updatedAt,R=(0,n.useRef)(null);(0,n.useEffect)(()=>{if(!k.layout||!P||R.current===P)return;R.current=P;let e={};for(let t of(0,f.collectPanes)(k.layout.root))for(let n of t.tabs)"agent-sessions"!==n.panelType&&(n.title||n.cwd)&&(e[n.id]={title:n.title,cwd:n.cwd});x.default.getState().hydrate(e)},[P]),(0,n.useEffect)(()=>{if(!k.layout)return;let e=new Set((0,f.collectPanes)(k.layout.root).flatMap(e=>e.tabs.map(e=>e.id)));x.default.getState().retainOnly(e)},[k.layout]),(0,eq.useAutoDeleteEmptyWorkspace)(I,k.clearLayout);let A=k.layout?.activePaneId??null,L=(A?N.find(e=>e.id===A):null)??N[0]??null,E=L?.id??null,D=L?.activeTabId??null,B=L?.tabs.find(e=>e.id===D)??null,z=B?.panelType??"terminal",O=(0,n.useCallback)(e=>{let{activeWorkspaceId:t}=m.default.getState();e!==t&&(v.current=t,x.default.getState().reset(),k.clearLayout(),m.default.getState().switchWorkspace(e))},[k]);(0,n.useEffect)(()=>(e_.default.getState().register({onSelectWorkspace:O}),()=>e_.default.getState().unregister()),[O]);let[$,W]=(0,n.useState)(!1),[F,V]=(0,n.useState)("inactive"),[H,U]=(0,n.useState)(!1),[G,K]=(0,n.useState)(null),_=(0,n.useCallback)(e=>{V(e)},[]);(0,n.useEffect)(()=>{D&&(0,eK.dismissTab)(D)},[D]),(0,n.useEffect)(()=>{D&&"claude-code"===z&&"inactive"!==F&&"idle"===F&&(0,eK.dismissTab)(D)},[D,F,z]);let q=(0,T.default)(e=>{if(!D)return!1;let t=e.tabs[D];return t?.cliState==="ready-for-review"||t?.cliState==="needs-input"});(0,n.useEffect)(()=>{q&&D&&(0,eK.dismissTab)(D)},[q,D]);let J=(0,x.default)(e=>D?e.metadata[D]:void 0),Q=(0,n.useCallback)(()=>{B?.sessionName&&K({sessionName:B.sessionName,cwdKey:J?.cwd||B.cwd||B.sessionName}),U(!0)},[B,J?.cwd]),X=(0,n.useCallback)((e,t)=>{L?.id&&(U(!1),window.dispatchEvent(new CustomEvent("purplemux-send-to-agent",{detail:{paneId:L.id,text:e,provider:t}})))},[L?.id]),Y=(0,n.useMemo)(()=>{if(!B)return"";if(B.name)return B.name;if("agent-sessions"===B.panelType)return e("sessionList");let t=J?.title||B.title,n=t?(0,eT.formatTabTitle)(t,B.panelType):"";return n||""},[B,J,e]),Z=(0,n.useCallback)(e=>{L&&D&&k.updateTabPanelType(L.id,D,e)},[L,D,k]),ee=(0,n.useCallback)(()=>{W(!0)},[]),et=(0,n.useCallback)(async(t,n)=>{let s;if(!L)return;if(n?.command==="claude-new"){if(!await h("claude"))return;s=(0,eD.buildClaudeLaunchCommand)({workspaceId:S,dangerouslySkipPermissions:eR.default.getState().dangerouslySkipPermissions})}else if(n?.command==="codex-new"){if(!await h("codex"))return;try{s=await (0,eB.fetchCodexLaunchCommand)(S)}catch{c.toast.error(e("codexLaunchFailed"));return}}let a=await k.createTabInPane(L.id,t,s,n?.resumeSessionId);a&&(T.default.getState().initTab(a.id,{panelType:t,workspaceId:S??""}),(s||n?.resumeSessionId)&&T.default.getState().setSessionView(a.id,"check"))},[L,h,k,S,e]),en=(0,n.useCallback)(()=>{L&&D&&k.deleteTabInPane(L.id,D)},[L,D,k]);return y?(0,t.jsxs)("div",{className:"flex flex-1 flex-col items-center justify-center",children:[(0,t.jsx)(o.default,{className:"h-4 w-4 text-muted-foreground"}),(0,t.jsx)("span",{className:"mt-3 text-sm text-muted-foreground",children:e("connecting")})]}):w&&!C?(0,t.jsxs)("div",{className:"flex flex-1 flex-col items-center justify-center gap-3",children:[(0,t.jsx)(s.AlertTriangle,{className:"h-5 w-5 text-ui-amber"}),(0,t.jsx)("span",{className:"text-sm text-muted-foreground",children:w}),(0,t.jsxs)(d.Button,{variant:"outline",size:"sm",className:"gap-1.5",onClick:m.default.getState().fetchWorkspaces,children:[(0,t.jsx)(a.RefreshCw,{className:"h-3.5 w-3.5"}),g("retry")]})]}):S||y||w?!k.layout||k.isLoading?(0,t.jsx)("div",{className:"flex flex-1 flex-col items-center justify-center",children:(0,t.jsx)(o.default,{className:"h-4 w-4 text-muted-foreground"})}):k.error&&!k.isLoading?(0,t.jsxs)("div",{className:"flex flex-1 flex-col items-center justify-center gap-3",children:[(0,t.jsx)(s.AlertTriangle,{className:"h-5 w-5 text-ui-amber"}),(0,t.jsx)("span",{className:"text-sm text-muted-foreground",children:k.error}),(0,t.jsxs)(d.Button,{variant:"outline",size:"sm",className:"gap-1.5",onClick:()=>k.fetchLayout(),children:[(0,t.jsx)(a.RefreshCw,{className:"h-3.5 w-3.5"}),g("retry")]})]}):(0,t.jsxs)(t.Fragment,{children:[L&&D&&(0,t.jsx)(M,{tabId:D,tabName:Y,sessionName:B?.sessionName??null,cwdKey:J?.cwd||B?.cwd||B?.sessionName||null,panelType:z,onSwitchPanelType:Z,onCreateTab:ee,onOpenGit:Q,onClose:en},D),L&&D&&(0,t.jsx)(eF,{paneId:L.id,tabs:L.tabs,activeTabId:D,panelType:z,onCreateTab:k.createTabInPane,onDeleteTab:k.deleteTabInPane,onSwitchTab:k.switchTabInPane,onRemoveTabLocally:k.removeTabLocally,onUpdateTabPanelType:k.updateTabPanelType,onUpdateDiffSettings:k.updateDiffSettings,onCliStateChange:_,onOpenNewTabDialog:ee},`${E}-${D}`),(0,t.jsx)(eU,{open:$,onOpenChange:W,onCreateTab:et}),(0,t.jsx)(eG,{open:H,sessionName:G?.sessionName,onClose:()=>U(!1),onSendToAgent:X,settings:k.layout?.diffSettings,onSettingsChange:k.updateDiffSettings}),b]}):(0,t.jsxs)("div",{className:"flex flex-1 flex-col items-center justify-center gap-3 px-6 text-center",children:[(0,t.jsx)(l.Monitor,{className:"h-8 w-8 text-muted-foreground"}),(0,t.jsx)("span",{className:"text-sm font-medium text-muted-foreground",children:p("noWorkspace")}),(0,t.jsxs)(d.Button,{variant:"outline",size:"sm",className:"gap-1.5",onClick:async()=>{let e=await m.default.getState().createWorkspace("");e&&m.default.getState().switchWorkspace(e.id)},children:[(0,t.jsx)(r.Plus,{className:"h-3.5 w-3.5"}),e("newWorkspace")]})]})}],432270)},938280,e=>{e.n(e.i(432270))}]);
@@ -1 +1 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,399267,e=>{"use strict";var t=e.i(505888);let a={terminalConnected:!1,agentProcess:null,agentProcessCheckedAt:0,agentInstalled:!0,sessionView:"session-list",cliState:"inactive",isTimelineLoading:!0,workspaceId:""},n=(e,t,a)=>{let n=e[t];return n?{...e,[t]:{...n,...a}}:e},s=(e,t)=>null!=t&&"inactive"!==t&&"unknown"!==t&&"cancelled"!==t&&"check"===e?"timeline":e,i=(e,t)=>t.agentProviderId||"terminal"!==e.panelType||!0!==e.agentProcess?{}:{agentProviderId:e.agentProviderId,agentSessionId:e.agentSessionId},r=(0,t.create)(e=>({tabs:{},tabOrders:{},statusWsConnected:!1,initTab:(t,n)=>e(e=>{let s=e.tabs[t],i={...a,...s,...n};return s?.cliState==="ready-for-review"&&"ready-for-review"!==i.cliState&&(i.cliState="ready-for-review",i.readyForReviewAt=s.readyForReviewAt),{tabs:{...e.tabs,[t]:i}}}),removeTab:t=>e(e=>{let{[t]:a,...n}=e.tabs;return{tabs:n}}),setTerminalConnected:(t,a)=>e(e=>{let s=e.tabs[t];return s&&s.terminalConnected!==a?{tabs:n(e.tabs,t,{terminalConnected:a})}:e}),setAgentProcess:(t,a,s)=>e(e=>{let i=e.tabs[t];if(!i||i.agentProcessCheckedAt>s)return e;let r={agentProcess:a,agentProcessCheckedAt:s};return(!0===a&&("check"===i.sessionView||"session-list"===i.sessionView)&&(r.sessionView="timeline"),!1===a&&!0===i.agentProcess&&"timeline"===i.sessionView&&(r.sessionView="session-list"),i.agentProcess===a&&i.agentProcessCheckedAt===s&&void 0===r.sessionView)?e:{tabs:n(e.tabs,t,r)}}),setAgentInstalled:(t,a)=>e(e=>{let s=e.tabs[t];return s&&s.agentInstalled!==a?{tabs:n(e.tabs,t,{agentInstalled:a})}:e}),setSessionView:(t,a)=>e(e=>{let s=e.tabs[t];return s&&s.sessionView!==a?{tabs:n(e.tabs,t,{sessionView:a})}:e}),setTimelineLoading:(t,a)=>e(e=>{let s=e.tabs[t];return s&&s.isTimelineLoading!==a?{tabs:n(e.tabs,t,{isTimelineLoading:a})}:e}),setSessionMetaCache:(t,a)=>e(e=>{let s=e.tabs[t];if(!s)return e;let i=s.sessionMetaCache;return i&&i.sessionId===a.sessionId&&i.jsonlPath===a.jsonlPath&&i.meta===a.meta?e:{tabs:n(e.tabs,t,{sessionMetaCache:a})}}),cancelTab:t=>e(e=>{let a=e.tabs[t];return a&&"cancelled"!==a.cliState?{tabs:n(e.tabs,t,{cliState:"cancelled",localUpdatedAt:Date.now()})}:e}),dismissTab:t=>e(e=>{let a=e.tabs[t];return a&&"ready-for-review"===a.cliState?{tabs:n(e.tabs,t,{cliState:"idle",dismissedAt:Date.now()})}:e}),setWorkspaceId:(t,a)=>e(e=>{let s=e.tabs[t];return s&&s.workspaceId!==a?{tabs:n(e.tabs,t,{workspaceId:a})}:e}),setPanelType:(t,a)=>e(e=>{let s=e.tabs[t];return s&&s.panelType!==a?{tabs:n(e.tabs,t,{panelType:a})}:e}),setCurrentProcess:(t,a)=>e(e=>{let s=e.tabs[t];if(!s)return e;let i=a??void 0;return s.currentProcess===i?e:{tabs:n(e.tabs,t,{currentProcess:i,localUpdatedAt:Date.now()})}}),setDetectedAgent:(t,a)=>e(e=>{let s=e.tabs[t],i=a.checkedAt??Date.now();if(!s||s.agentProcessCheckedAt>i)return e;let r={agentProcess:a.running,agentProcessCheckedAt:i};return a.running?(a.providerId&&(r.agentProviderId=a.providerId),void 0!==a.sessionId&&(r.agentSessionId=a.sessionId),("check"===s.sessionView||"session-list"===s.sessionView)&&(r.sessionView="timeline")):"terminal"===s.panelType?(r.agentProviderId=void 0,r.agentSessionId=null,!0===s.agentProcess&&"timeline"===s.sessionView&&(r.sessionView="session-list")):"timeline"===s.sessionView&&(!0===s.agentProcess||s.agentSessionId&&!s.isTimelineLoading)&&(r.sessionView="session-list"),{tabs:n(e.tabs,t,r)}}),setTabOrder:(t,a)=>e(e=>{let n=e.tabOrders[t];return n&&n.length===a.length&&n.every((e,t)=>e===a[t])?e:{tabOrders:{...e.tabOrders,[t]:a}}}),setStatusWsConnected:t=>e({statusWsConnected:t}),syncAllFromServer:t=>e(e=>{let n=Date.now(),r={};for(let[l,o]of Object.entries(t)){let t=e.tabs[l];if(t?.cliState==="cancelled"){r[l]=t;continue}t?.localUpdatedAt&&n-t.localUpdatedAt<3e4?r[l]={...t,cliState:o.cliState,workspaceId:o.workspaceId,tabName:o.tabName,terminalStatus:o.terminalStatus,listeningPorts:o.listeningPorts,agentProviderId:o.agentProviderId,agentSessionId:o.agentSessionId,...i(t,o),agentSummary:o.agentSummary,lastUserMessage:o.lastUserMessage,lastAssistantMessage:o.lastAssistantMessage,currentAction:o.currentAction,readyForReviewAt:o.readyForReviewAt,busySince:o.busySince,dismissedAt:o.dismissedAt,compactingSince:o.compactingSince,permissionRequest:o.permissionRequest,lastEvent:o.lastEvent,eventSeq:o.eventSeq,sessionView:s(t.sessionView,o.cliState)}:t?r[l]={...t,cliState:o.cliState,workspaceId:o.workspaceId,tabName:o.tabName,panelType:o.panelType??t.panelType,terminalStatus:o.terminalStatus,listeningPorts:o.listeningPorts,currentProcess:o.currentProcess,agentProviderId:o.agentProviderId,agentSessionId:o.agentSessionId,...i(t,o),agentSummary:o.agentSummary,lastUserMessage:o.lastUserMessage,lastAssistantMessage:o.lastAssistantMessage,currentAction:o.currentAction,readyForReviewAt:o.readyForReviewAt,busySince:o.busySince,dismissedAt:o.dismissedAt,compactingSince:o.compactingSince,permissionRequest:o.permissionRequest,lastEvent:o.lastEvent,eventSeq:o.eventSeq,sessionView:s(t.sessionView,o.cliState)}:r[l]={...a,cliState:o.cliState,workspaceId:o.workspaceId,tabName:o.tabName,panelType:o.panelType,terminalStatus:o.terminalStatus,listeningPorts:o.listeningPorts,currentProcess:o.currentProcess,agentProviderId:o.agentProviderId,agentSessionId:o.agentSessionId,agentSummary:o.agentSummary,lastUserMessage:o.lastUserMessage,lastAssistantMessage:o.lastAssistantMessage,currentAction:o.currentAction,readyForReviewAt:o.readyForReviewAt,busySince:o.busySince,dismissedAt:o.dismissedAt,compactingSince:o.compactingSince,permissionRequest:o.permissionRequest,lastEvent:o.lastEvent,eventSeq:o.eventSeq,sessionView:s(a.sessionView,o.cliState)}}for(let[t,a]of Object.entries(e.tabs))r[t]||(r[t]=a);return{tabs:r}}),updateFromServer:(t,r)=>e(e=>{if(null===r.cliState){let{[t]:a,...n}=e.tabs;return{tabs:n}}let l=e.tabs[t];if(l){if("cancelled"===l.cliState)return e;let a=void 0!==r.eventSeq&&void 0!==l.eventSeq&&r.eventSeq<l.eventSeq,o=void 0!==r.eventSeq&&(void 0===l.eventSeq||r.eventSeq>=l.eventSeq)?{lastEvent:r.lastEvent,eventSeq:r.eventSeq}:{},c=a?{cliState:l.cliState,readyForReviewAt:l.readyForReviewAt,busySince:l.busySince,dismissedAt:l.dismissedAt}:{cliState:r.cliState,readyForReviewAt:r.readyForReviewAt,busySince:r.busySince,dismissedAt:r.dismissedAt};return{tabs:n(e.tabs,t,{...c,workspaceId:r.workspaceId,tabName:r.tabName,panelType:r.panelType??l.panelType,terminalStatus:r.terminalStatus,listeningPorts:r.listeningPorts,currentProcess:r.currentProcess,agentProviderId:r.agentProviderId,agentSessionId:r.agentSessionId,...i(l,r),agentSummary:r.agentSummary,lastUserMessage:r.lastUserMessage,lastAssistantMessage:r.lastAssistantMessage,currentAction:r.currentAction,compactingSince:r.compactingSince,permissionRequest:r.permissionRequest,sessionView:s(l.sessionView,r.cliState),...o})}}return{tabs:{...e.tabs,[t]:{...a,cliState:r.cliState,workspaceId:r.workspaceId,tabName:r.tabName,panelType:r.panelType,terminalStatus:r.terminalStatus,listeningPorts:r.listeningPorts,currentProcess:r.currentProcess,agentProviderId:r.agentProviderId,agentSessionId:r.agentSessionId,agentSummary:r.agentSummary,lastUserMessage:r.lastUserMessage,lastAssistantMessage:r.lastAssistantMessage,readyForReviewAt:r.readyForReviewAt,busySince:r.busySince,dismissedAt:r.dismissedAt,compactingSince:r.compactingSince,permissionRequest:r.permissionRequest,lastEvent:r.lastEvent,eventSeq:r.eventSeq,sessionView:s(a.sessionView,r.cliState)}}}}),applyHookEvent:(t,a)=>e(e=>{let s=e.tabs[t];if(!s||void 0!==s.eventSeq&&a.seq<=s.eventSeq)return e;let i=((e,t)=>{if(!e||"cancelled"===t)return t;switch(e.name){case"session-start":case"interrupt":return"idle";case"prompt-submit":return"busy";case"notification":return"needs-input";case"stop":return"ready-for-review"}})(a,s.cliState);return{tabs:n(e.tabs,t,{cliState:i,lastEvent:a,eventSeq:a.seq,readyForReviewAt:"ready-for-review"===i?Date.now():null,busySince:"busy"===i?Date.now():null,dismissedAt:"busy"===i?null:s.dismissedAt,permissionRequest:"needs-input"===s.cliState&&"needs-input"!==i?null:s.permissionRequest})}})}));e.s(["default",0,r,"getInitialTabStateFromLayoutTab",0,e=>{let t={panelType:e.panelType},a=e.agentState?.providerId??("codex-cli"===e.panelType?"codex":"claude-code"===e.panelType?"claude":void 0),n=e.agentState?.sessionId??e.claudeSessionId??null;return a&&(t.agentProviderId=a),n&&(t.agentSessionId=n,t.agentSummary=e.agentState?.summary??e.claudeSummary??null,t.sessionView="timeline"),t},"isCliIdle",0,e=>"idle"===e||"ready-for-review"===e,"selectGlobalStatus",0,e=>{let t=0,a=0;for(let n of Object.values(e))"busy"===n.cliState?t++:("ready-for-review"===n.cliState||"needs-input"===n.cliState)&&a++;return{busyCount:t,attentionCount:a}},"selectSessionView",0,(e,t)=>{let a=e[t];return a?a.sessionView:"session-list"},"selectTabDisplayStatus",0,(e,t)=>{let a=e[t];return a&&"inactive"!==a.cliState?"busy"===a.cliState?"busy":"ready-for-review"===a.cliState?"ready-for-review":"needs-input"===a.cliState?"needs-input":"unknown"===a.cliState?"unknown":"idle":"idle"},"selectWorkspacePortsLabel",0,(e,t)=>{let a=new Set;for(let n of Object.values(e))if(n.workspaceId===t&&n.listeningPorts)for(let e of n.listeningPorts)a.add(e);return 0===a.size?"":":"+[...a].sort((e,t)=>e-t).join(", :")}],399267)},117653,e=>{"use strict";var t=e.i(191788);let a=(e,t)=>{let a=e instanceof Map?e:new Map(e.entries()),n=t instanceof Map?t:new Map(t.entries());if(a.size!==n.size)return!1;for(let[e,t]of a)if(!n.has(e)||!Object.is(t,n.get(e)))return!1;return!0};e.s(["useShallow",0,function(e){let n=t.default.useRef(void 0);return t=>{let s=e(t);return!function(e,t){if(Object.is(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t||Object.getPrototypeOf(e)!==Object.getPrototypeOf(t))return!1;if(Symbol.iterator in e&&Symbol.iterator in t){if("entries"in e&&"entries"in t)return a(e,t);let n=e[Symbol.iterator](),s=t[Symbol.iterator](),i=n.next(),r=s.next();for(;!i.done&&!r.done;){if(!Object.is(i.value,r.value))return!1;i=n.next(),r=s.next()}return!!i.done&&!!r.done}return a({entries:()=>Object.entries(e)},{entries:()=>Object.entries(t)})}(n.current,s)?n.current=s:n.current}}],117653)},358915,e=>{"use strict";var t=e.i(191788),a=e.i(679935),n=e.i(844044),s=e.i(399267);let i=new Set(["/new","/clear"]),r=e=>`pt-input-draft:${e}`,l=e=>{try{localStorage.removeItem(r(e))}catch{}};e.s(["clearInputDraft",0,l,"default",0,(e,o,c,d)=>{let u=d?.tabId,[p,f]=(0,t.useState)(()=>u?(e=>{try{return localStorage.getItem(r(e))??""}catch{return""}})(u):""),b=(0,t.useRef)(null),m=(0,t.useMemo)(()=>(0,s.isCliIdle)(e)||"unknown"===e?"input":"busy"===e||"needs-input"===e?"interrupt":"disabled",[e]),y=d?.onRestartSession,S=d?.onMessageSent,g=d?.submitDelayMs??250,h=(0,t.useRef)(null);(0,t.useEffect)(()=>{if(u)return h.current&&clearTimeout(h.current),h.current=setTimeout(()=>((e,t)=>{try{t?localStorage.setItem(r(e),t):localStorage.removeItem(r(e))}catch{}})(u,p),300),()=>{h.current&&clearTimeout(h.current)}},[u,p]);let v=(0,t.useCallback)(()=>{if("disabled"===m)return void a.toast.error(d?.disabledMessage??(0,n.t)("terminal","inputDisabledPlaceholder"));if(!c)return void a.toast.error((0,n.t)("connection","terminalDisconnected"));if(""!==p.trim()){if(i.has(p.trim().toLowerCase())){y?.(),f(""),u&&l(u);return}p.includes("\n")?o(`\x1b[200~${p}\x1b[201~`):o(p),setTimeout(()=>o("\r"),g),p.trim().startsWith("/")||S?.(p.trim()),f(""),u&&l(u)}},[m,p,o,c,y,S,u,d?.disabledMessage,g]),I=(0,t.useCallback)(()=>{c?o("\x1b\x1b"):a.toast.error((0,n.t)("connection","terminalDisconnected"))},[o,c]),w=(0,t.useCallback)(()=>{let e=b.current;if(!e)return;e.focus();let t=e.value.length;e.setSelectionRange(t,t)},[]),T="disabled"!==m&&c;return{value:p,setValue:f,mode:m,canSend:T,send:v,interrupt:I,textareaRef:b,focusInput:w}}])},898589,e=>{"use strict";let t=e=>"web-browser"===e?"Web Browser":"";e.s(["resolveTabNameForPanelTypeChange",0,(e,a,n)=>{let s=t(a),i="agent-sessions"===a?"Session List":"",r=t(n),l=e.trim();return!l&&r||(""!==s&&l===s||""!==i&&l===i)&&l!==r?r:e}])},806185,e=>{"use strict";let t=e=>"pane"===e.type?[e]:[...t(e.children[0]),...t(e.children[1])],a=(e,t)=>"pane"===e.type?e.id===t?e:null:a(e.children[0],t)||a(e.children[1],t),n=e=>"pane"===e.type?e.id:n(e.children[0]),s=e=>"pane"===e.type?e.id:s(e.children[1]),i=(e,t)=>{if("pane"===e.type)return null;let[a,n]=e.children;if("pane"===a.type&&a.id===t)return n;if("pane"===n.type&&n.id===t)return a;let s=i(a,t);if(s)return{...e,children:[s,n]};let r=i(n,t);return r?{...e,children:[a,r]}:null},r=(e,t)=>{if("pane"===e.type)return null;let[a,i]=e.children;return"pane"===a.type&&a.id===t?n(i):"pane"===i.type&&i.id===t?s(a):r(a,t)||r(i,t)},l=(e,t,a)=>{if("split"!==e.type)return e;if(0===t.length)return{...e,ratio:a};let[n,...s]=t,i=[e.children[0],e.children[1]];return i[n]=l(e.children[n],s,a),{...e,children:i}},o=(e,t)=>"pane"===e.type||e.orientation!==t?1:o(e.children[0],t)+o(e.children[1],t),c=e=>{if("pane"===e.type)return e;let t=o(e.children[0],e.orientation),a=Math.round(t/(t+o(e.children[1],e.orientation))*1e4)/100;return{...e,ratio:a,children:[c(e.children[0]),c(e.children[1])]}},d=(e,t,a)=>{if("pane"===e.type)return e.id===t?a(e):e;let n=d(e.children[0],t,a);if(n!==e.children[0])return{...e,children:[n,e.children[1]]};let s=d(e.children[1],t,a);return s!==e.children[1]?{...e,children:[e.children[0],s]}:e};e.s(["collectAllTabs",0,e=>t(e).flatMap(e=>e.tabs),"collectPanes",0,t,"equalizeNode",0,c,"findAdjacentPaneInDirection",0,(e,t,a)=>{let i=[],r=e=>{if("pane"===e.type)return e.id===t;for(let t=0;t<2;t++){if(i.push({node:e,childIndex:t}),r(e.children[t]))return!0;i.pop()}return!1};if(!r(e))return null;let l="left"===a||"right"===a?"horizontal":"vertical",o=+("left"===a||"up"===a);for(let e=i.length-1;e>=0;e--){let{node:t,childIndex:r}=i[e];if("split"===t.type&&t.orientation===l&&r===o){let e=t.children[1-o];return"left"===a||"up"===a?s(e):n(e)}}return null},"findPane",0,a,"findResizeTarget",0,(e,t,a)=>{let n=[],s=e=>{if("pane"===e.type)return e.id===t;for(let t=0;t<2;t++){if(n.push({node:e,childIndex:t}),s(e.children[t]))return!0;n.pop()}return!1};if(!s(e))return null;let i="left"===a||"right"===a?"horizontal":"vertical",r=+("right"!==a&&"down"!==a),l="right"===a||"down"===a;for(let e=n.length-1;e>=0;e--){let{node:t,childIndex:a}=n[e];if("split"===t.type&&t.orientation===i&&a===r)return{path:n.slice(0,e).map(e=>e.childIndex),currentRatio:t.ratio,increase:l}}return null},"getFirstPaneId",0,n,"removePaneWithFocus",0,(e,a)=>{let n=r(e.root,a),s=i(e.root,a);s&&(e.root=s),e.activePaneId===a&&(e.activePaneId=n??t(e.root)[0]?.id??null)},"updatePaneInTree",0,d,"updateRatioAtPath",0,l])},335288,e=>{"use strict";e.s(["default",()=>L,"navigateToTab",()=>E,"navigateToTabOrCreate",()=>F,"useLayoutStore",()=>O]);var t=e.i(191788),a=e.i(203828),n=e.i(505888),s=e.i(117653),i=e.i(679935),r=e.i(844044),l=e.i(358915),o=e.i(399267),c=e.i(490034),d=e.i(453783),u=e.i(898589),p=e.i(806185);let f="pt-active-pane-",b="pt-active-tab-",m="pt-terminal-ratio-",y="pt-terminal-collapsed-",S=e=>{try{return sessionStorage.getItem(`${b}${e}`)}catch{return null}},g=e=>{try{let t=sessionStorage.getItem(`${m}${e}`);if(null==t)return null;let a=Number(t);return Number.isFinite(a)?a:null}catch{return null}},h=e=>{try{let t=sessionStorage.getItem(`${y}${e}`);if(null==t)return null;return"1"===t}catch{return null}},v=null,I=null,w=null,T=!1,P=new Map,k=(e,t)=>{if(!t)return e;let a=e.includes("?")?"&":"?";return`${e}${a}workspace=${t}`},A=(e,t)=>{let a=e?(0,p.collectPanes)(e.root).length:0;return{paneCount:a,canSplit:a<10&&!t}},C=(e,t,a)=>{e({layout:a,...A(a,t().isSplitting)})},$=(e,t,a)=>{let n=t().layout;if(n){let e=(0,p.collectPanes)(a.root);for(let t of(n.activePaneId&&e.some(e=>e.id===n.activePaneId)&&(a.activePaneId=n.activePaneId),e)){let e=(0,p.findPane)(n.root,t.id);e?.activeTabId&&t.tabs.some(t=>t.id===e.activeTabId)&&(t.activeTabId=e.activeTabId)}}e({layout:a,...A(a,t().isSplitting)})},q=(e,t,a,n)=>{let{layout:s}=t();if(!s)return;let i=(0,p.updatePaneInTree)(s.root,a,n);i!==s.root&&C(e,t,{...s,root:i})},R=async(e,t)=>{try{let a=await fetch(e,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!a.ok)return null;return await a.json()}catch{return null}},O=(0,n.create)((e,t)=>({layout:null,isLoading:!0,error:null,isSplitting:!1,workspaceId:null,retryCount:0,paneCount:0,canSplit:!1,pendingFocusTabId:null,setWorkspaceId:t=>{T=!1,e({workspaceId:t})},setLayout:a=>{C(e,t,a)},fetchLayout:async(a,n)=>{if(T)return;let s=a??t().workspaceId;if(!s)return;v?.abort();let l=new AbortController;v=l,t().layout||e({isLoading:!0,error:null});try{let a=await fetch(k("/api/layout",s),{signal:l.signal});if(!a.ok)throw Error();let i=await a.json();if(l.signal.aborted)return;let r=t().layout;if(!1!==n){let e=(0,p.collectPanes)(i.root);if(r)for(let t of(r.activePaneId&&e.some(e=>e.id===r.activePaneId)&&(i.activePaneId=r.activePaneId),e)){let e=(0,p.findPane)(r.root,t.id);e?.activeTabId&&t.tabs.some(t=>t.id===e.activeTabId)&&(t.activeTabId=e.activeTabId)}else{let t=(e=>{try{return sessionStorage.getItem(`${f}${e}`)}catch{return null}})(s);for(let a of(t&&e.some(e=>e.id===t)&&(i.activePaneId=t),e)){let e=S(a.id);for(let t of(e&&a.tabs.some(t=>t.id===e)&&(a.activeTabId=e),a.tabs)){let e=g(t.id);null!==e&&(t.terminalRatio=e);let a=h(t.id);null!==a&&(t.terminalCollapsed=a)}}}}if(r){let a={root:r.root,activePaneId:r.activePaneId},n={root:i.root,activePaneId:i.activePaneId};if(JSON.stringify(a)===JSON.stringify(n)){let a=t().pendingFocusTabId;a&&(e({pendingFocusTabId:null}),t().focusTab(a));return}}let o=t().pendingFocusTabId,c=null;if(o){for(let t of(e({pendingFocusTabId:null}),(0,p.collectPanes)(i.root)))if(t.tabs.some(e=>e.id===o)){i.activePaneId=t.id,t.activeTabId=o,c=t.id;break}}e({layout:i,retryCount:0,...A(i,t().isSplitting)}),c&&(R(k("/api/layout",s),{activePaneId:c}),R(k(`/api/layout/pane/${c}`,s),{activeTabId:o}))}catch(n){if(n instanceof DOMException&&"AbortError"===n.name)return;let a=t().retryCount+1;if(e({retryCount:a}),a>=3)try{let a=await fetch(k("/api/layout/pane",s),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({})});if(a.ok){let{paneId:n,tab:s}=await a.json(),l={root:{type:"pane",id:n,tabs:[s],activeTabId:s.id},activePaneId:n,updatedAt:new Date().toISOString()};e({layout:l,...A(l,t().isSplitting)}),i.toast.info((0,r.t)("terminal","fallbackLayout")),e({retryCount:0});return}}catch{}e({error:(0,r.t)("terminal","layoutFetchError")}),I?.()}finally{l.signal.aborted||e({isLoading:!1})}},splitPane:async(a,n)=>{let{layout:s,isSplitting:l,workspaceId:o}=t();if(s&&!l&&!((0,p.collectPanes)(s.root).length>=10)){e({isSplitting:!0,canSplit:!1});try{let i,r,l=(0,p.findPane)(s.root,a),c=l?.tabs.find(e=>e.id===l.activeTabId);if(c){r=c.panelType;try{let e=await fetch(k(`/api/layout/cwd?session=${c.sessionName}`,o));e.ok&&(i=(await e.json()).cwd)}catch{}}let d=await fetch(k("/api/layout/pane",o),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sourcePaneId:a,orientation:n,cwd:i,panelType:r})});if(!d.ok)throw Error();let u=await d.json();C(e,t,u)}catch{i.toast.error((0,r.t)("terminal","splitFailed"))}finally{e(e=>({isSplitting:!1,canSplit:e.paneCount<10}))}}},closePane:async a=>{let{layout:n,workspaceId:s}=t();if(n&&!((0,p.collectPanes)(n.root).length<=1))try{let n=await fetch(k(`/api/layout/pane/${a}`,s),{method:"DELETE"});if(!n.ok)throw Error();let i=await n.json();C(e,t,i)}catch{i.toast.error("Pane을 닫을 수 없습니다")}},focusPane:a=>{let{layout:n,workspaceId:s}=t();n&&n.activePaneId!==a&&(e({layout:{...n,activePaneId:a}}),R(k("/api/layout",s),{activePaneId:a}).then(a=>{a&&$(e,t,a)}))},updateRatio:(a,n)=>{let{layout:s,workspaceId:i}=t();s&&(e({layout:{...s,root:(0,p.updateRatioAtPath)(s.root,a,n)}}),w&&clearTimeout(w),w=setTimeout(()=>{w=null,R(k("/api/layout",i),{ratioUpdate:{path:a,ratio:n}}).then(a=>{a&&$(e,t,a)})},300))},moveTab:(a,n,s,i)=>{if(n===s)return;let{layout:r,workspaceId:l}=t();if(!r)return;let o=JSON.parse(JSON.stringify(r)),c=(0,p.findPane)(o.root,n),d=(0,p.findPane)(o.root,s);if(c&&d){let r=c.tabs.findIndex(e=>e.id===a);if(-1!==r){let[l]=c.tabs.splice(r,1);c.activeTabId===a&&(c.activeTabId=c.tabs[0]?.id??null),c.tabs.forEach((e,t)=>{e.order=t}),d.tabs.splice(i,0,l),d.tabs.forEach((e,t)=>{e.order=t}),d.activeTabId=a,0===c.tabs.length&&(0,p.collectPanes)(o.root).length>1&&(0,p.removePaneWithFocus)(o,n),o.activePaneId=s,C(e,t,o)}}fetch(k(`/api/layout/pane/${n}/tabs/${a}/move`,l),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({toPaneId:s,toIndex:i})}).then(async a=>{a.ok?$(e,t,await a.json()):await t().fetchLayout(void 0,!1)}).catch(()=>t().fetchLayout(void 0,!1))},createTabInPane:async(a,n,s,l)=>{let{layout:c,workspaceId:u}=t();try{let i,r=n,f=c?(0,p.findPane)(c.root,a):void 0,b=f?.tabs.find(e=>e.id===f.activeTabId);!r&&b&&(r=b.panelType),"web-browser"!==r&&b&&(i=d.default.getState().metadata[b.id]?.cwd);let m=await fetch(k(`/api/layout/pane/${a}/tabs`,u),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:i,panelType:r,command:s,resumeSessionId:l})});if(!m.ok)throw Error();let y=await m.json();return(s||l)&&o.default.getState().initTab(y.id,{panelType:r,sessionView:"check"}),q(e,t,a,e=>({...e,tabs:[...e.tabs,y],activeTabId:y.id})),t().fetchLayout(),y}catch{return i.toast.error((0,r.t)("terminal","tabCreateFailed")),null}},deleteTabInPane:async(a,n)=>{(0,l.clearInputDraft)(n),o.default.getState().cancelTab(n),q(e,t,a,e=>{let t=[...e.tabs].sort((e,t)=>e.order-t.order),a=t.findIndex(e=>e.id===n),s=t.filter(e=>e.id!==n);s.forEach((e,t)=>{e.order=t});let i=e.activeTabId;if(e.activeTabId===n){let e=t[a+1]||t[a-1];i=e?.id??null}return{...e,tabs:s,activeTabId:i}});let{workspaceId:s}=t();try{let e=await fetch(k(`/api/layout/pane/${a}/tabs/${n}`,s),{method:"DELETE"});e.ok||404===e.status||(i.toast.error((0,r.t)("terminal","tabDeleteError")),await t().fetchLayout())}catch{i.toast.error((0,r.t)("terminal","tabDeleteError")),await t().fetchLayout()}},restartTabInPane:async(e,a,n)=>{let{workspaceId:s}=t();try{return(await fetch(k(`/api/layout/pane/${e}/tabs/${a}`,s),{method:"POST",headers:n?{"Content-Type":"application/json"}:void 0,body:n?JSON.stringify({command:n}):void 0})).ok}catch{return i.toast.error((0,r.t)("terminal","sessionRestartFailed")),!1}},switchTabInPane:(a,n)=>{q(e,t,a,e=>({...e,activeTabId:n}));let{workspaceId:s}=t();R(k(`/api/layout/pane/${a}`,s),{activeTabId:n}).then(a=>{a&&$(e,t,a)})},renameTabInPane:async(a,n,s)=>{q(e,t,a,e=>({...e,tabs:e.tabs.map(e=>e.id===n?{...e,name:s}:e)}));let{workspaceId:l}=t(),o=await R(k(`/api/layout/pane/${a}/tabs/${n}`,l),{name:s});o?$(e,t,o):i.toast.error((0,r.t)("terminal","tabRenameFailed"))},reorderTabsInPane:(a,n)=>{q(e,t,a,e=>{let t=new Map(e.tabs.map(e=>[e.id,e])),a=n.map((e,a)=>{let n=t.get(e);return n?{...n,order:a}:null}).filter(e=>null!==e);return{...e,tabs:a}});let{workspaceId:s}=t();R(k(`/api/layout/pane/${a}/tabs/order`,s),{tabIds:n}).then(a=>{a&&$(e,t,a)})},removeTabLocally:(e,a)=>{(0,l.clearInputDraft)(a);let{workspaceId:n}=t();fetch(k(`/api/layout/pane/${e}/tabs/${a}`,n),{method:"DELETE"}).then(()=>t().fetchLayout()).catch(()=>{console.log("[layout] removeTabLocally failed")})},equalizeRatios:()=>{let{workspaceId:a}=t();R(k("/api/layout",a),{equalize:!0}).then(a=>{a&&$(e,t,a)})},updateDiffSettings:a=>{let{layout:n,workspaceId:s}=t();n&&(C(e,t,{...n,diffSettings:{...n.diffSettings??{},...a}}),R(k("/api/layout",s),{diffSettings:a}).then(a=>{a&&$(e,t,a)}))},updateTabPanelType:(a,n,s)=>{let i;q(e,t,a,e=>({...e,tabs:e.tabs.map(e=>{if(e.id!==n)return e;let t=(0,u.resolveTabNameForPanelTypeChange)(e.name,e.panelType,s),a={...e,panelType:s,name:t};return t!==e.name&&(i=t),"codex-cli"===s&&"claude-code"===e.panelType&&(a.claudeSessionId=null,a.agentState=void 0),a})})),o.default.getState().setPanelType(n,s);let{workspaceId:r}=t();R(k(`/api/layout/pane/${a}/tabs/${n}`,r),{panelType:s,...void 0!==i?{name:i}:{}}).then(a=>{a&&$(e,t,a)})},updateTabTerminalLayout:(a,n,s)=>{q(e,t,a,e=>({...e,tabs:e.tabs.map(e=>e.id===n?{...e,...s}:e)}));try{void 0!==s.terminalRatio&&sessionStorage.setItem(`${m}${n}`,String(s.terminalRatio)),void 0!==s.terminalCollapsed&&sessionStorage.setItem(`${y}${n}`,s.terminalCollapsed?"1":"0")}catch{}let{workspaceId:i}=t(),r=P.get(n);r&&clearTimeout(r),P.set(n,setTimeout(()=>{P.delete(n),R(k(`/api/layout/pane/${a}/tabs/${n}`,i),s)},300))},clearLayout:()=>{T=!0,v?.abort(),e({layout:null,paneCount:0,canSplit:!1})},focusTab:e=>{let{layout:a}=t();if(!a)return!1;for(let n of(0,p.collectPanes)(a.root))if(n.tabs.some(t=>t.id===e))return t().focusPane(n.id),t().switchTabInPane(n.id,e),!0;return!1},focusPrevTab:()=>{let{layout:e}=t();if(!e)return;let a=(0,p.collectPanes)(e.root),n=a.find(t=>t.id===e.activePaneId);if(!n)return;let s=[...n.tabs].sort((e,t)=>e.order-t.order),i=s.findIndex(e=>e.id===n.activeTabId);if(i>0)t().switchTabInPane(n.id,s[i-1].id);else{let e=a.indexOf(n);if(e>0){let n=a[e-1],s=[...n.tabs].sort((e,t)=>e.order-t.order);t().focusPane(n.id),t().switchTabInPane(n.id,s[s.length-1].id)}}},focusNextTab:()=>{let{layout:e}=t();if(!e)return;let a=(0,p.collectPanes)(e.root),n=a.find(t=>t.id===e.activePaneId);if(!n)return;let s=[...n.tabs].sort((e,t)=>e.order-t.order),i=s.findIndex(e=>e.id===n.activeTabId);if(i<s.length-1)t().switchTabInPane(n.id,s[i+1].id);else{let e=a.indexOf(n);if(e<a.length-1){let n=a[e+1],s=[...n.tabs].sort((e,t)=>e.order-t.order);t().focusPane(n.id),t().switchTabInPane(n.id,s[0].id)}}},focusTabByIndex:e=>{let{layout:a}=t();if(!a?.activePaneId)return;let n=(0,p.collectPanes)(a.root).find(e=>e.id===a.activePaneId);if(!n)return;let s=[...n.tabs].sort((e,t)=>e.order-t.order),i=e>=s.length?s[s.length-1]:s[e];i&&i.id!==n.activeTabId&&t().switchTabInPane(n.id,i.id)}}));O.subscribe((e,t)=>{if(e.layout&&e.workspaceId&&e.layout!==t.layout){var a=e.workspaceId,n=e.layout;try{for(let e of(n.activePaneId&&sessionStorage.setItem(`${f}${a}`,n.activePaneId),(0,p.collectPanes)(n.root)))for(let t of(e.activeTabId&&sessionStorage.setItem(`${b}${e.id}`,e.activeTabId),e.tabs))void 0!==t.terminalRatio&&sessionStorage.setItem(`${m}${t.id}`,String(t.terminalRatio)),void 0!==t.terminalCollapsed&&sessionStorage.setItem(`${y}${t.id}`,t.terminalCollapsed?"1":"0")}catch{}}});let E=(e,t)=>{let n=O.getState();if("/"!==a.default.pathname){O.setState({pendingFocusTabId:t}),c.default.getState().switchWorkspace(e),a.default.push("/");return}e===n.workspaceId?n.focusTab(t):(n.clearLayout(),O.setState({pendingFocusTabId:t}),c.default.getState().switchWorkspace(e))},F=async(e,t,a,n,s,i="claude")=>{let r=c.default.getState(),l="codex"===i?"codex-cli":"claude-code",d=e,u=r.workspaces.find(t=>t.id===e);if(!u){if(!s)return;let e=await r.createWorkspace(s,n,a??void 0,l);if(!e)return;d=e.id;let t=await fetch(k("/api/layout",d));if(!t.ok)return;let i=await t.json(),c=(0,p.collectAllTabs)(i.root)[0];if(!c)return;a&&o.default.getState().initTab(c.id,{panelType:l,sessionView:"check"}),E(d,c.id);return}let f=await fetch(k("/api/layout",d));if(!f.ok)return;let b=await f.json();if(a){let e=(0,p.collectAllTabs)(b.root).find(e=>"codex"===i?e.agentState?.providerId==="codex"&&e.agentState.sessionId===a:e.agentState?.providerId==="claude"?e.agentState.sessionId===a:e.claudeSessionId===a);if(e){o.default.getState().setSessionView(e.id,"timeline"),E(d,e.id);return}}else if((0,p.collectAllTabs)(b.root).find(e=>e.id===t))return void E(d,t);let m=b.activePaneId??(0,p.getFirstPaneId)(b.root),y={panelType:l,cwd:u.directories[0]};a&&(y.resumeSessionId=a);let S=await fetch(k(`/api/layout/pane/${m}/tabs`,d),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(y)});if(!S.ok)return;let g=await S.json();a&&o.default.getState().initTab(g.id,{panelType:l,sessionView:"check"}),d===O.getState().workspaceId?(O.setState({pendingFocusTabId:g.id}),O.getState().fetchLayout()):E(d,g.id)},L=({workspaceId:e,onFetchError:a})=>((0,t.useEffect)(()=>{I=a??null},[a]),(0,t.useEffect)(()=>{if(e){let t=O.getState();t.setWorkspaceId(e),t.fetchLayout(e)}},[e]),(0,t.useEffect)(()=>O.subscribe(e=>{let t=e.workspaceId;if(!t||!e.layout?.root)return;let a=(0,p.collectPanes)(e.layout.root).flatMap(e=>e.tabs.map(e=>e.id));o.default.getState().setTabOrder(t,a)}),[]),O((0,s.useShallow)(e=>({layout:e.layout,isLoading:e.isLoading,error:e.error,isSplitting:e.isSplitting,paneCount:e.paneCount,canSplit:e.canSplit,splitPane:e.splitPane,closePane:e.closePane,focusPane:e.focusPane,updateRatio:e.updateRatio,moveTab:e.moveTab,createTabInPane:e.createTabInPane,deleteTabInPane:e.deleteTabInPane,restartTabInPane:e.restartTabInPane,switchTabInPane:e.switchTabInPane,renameTabInPane:e.renameTabInPane,reorderTabsInPane:e.reorderTabsInPane,removeTabLocally:e.removeTabLocally,equalizeRatios:e.equalizeRatios,updateDiffSettings:e.updateDiffSettings,updateTabPanelType:e.updateTabPanelType,clearLayout:e.clearLayout,fetchLayout:e.fetchLayout,focusTab:e.focusTab,focusPrevTab:e.focusPrevTab,focusNextTab:e.focusNextTab,focusTabByIndex:e.focusTabByIndex}))))},453783,e=>{"use strict";e.s(["default",()=>c]);var t=e.i(505888),a=e.i(335288),n=e.i(806185);let s=null,i=new Map,r=new Map,l=()=>{s&&clearTimeout(s),s=setTimeout(()=>{s=null;let{metadata:e}=o.getState(),t=a.useLayoutStore.getState().layout,i=a.useLayoutStore.getState().workspaceId;if(!t||!i)return;let r=`?workspace=${i}`;for(let a of(0,n.collectPanes)(t.root))for(let t of a.tabs){let n=e[t.id];if(!n)continue;let s={};void 0!==n.title&&n.title!==t.title&&(s.title=n.title),void 0!==n.cwd&&n.cwd!==t.cwd&&(s.cwd=n.cwd),void 0!==n.lastCommand&&(n.lastCommand??null)!==(t.lastCommand??null)&&(s.lastCommand=n.lastCommand??null),Object.keys(s).length>0&&fetch(`/api/layout/pane/${a.id}/tabs/${t.id}${r}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(s)}).catch(e=>{console.log(`[tab-metadata] sync failed: ${e instanceof Error?e.message:e}`)})}},100)},o=(0,t.create)(e=>({metadata:{},setTitle:(t,a)=>{e(e=>{let n=e.metadata[t];return n?.title===a?e:(i.set(t,Date.now()),{metadata:{...e.metadata,[t]:{...n,title:a}}})}),l()},setCwd:(t,a)=>{e(e=>{let n=e.metadata[t];return n?.cwd===a?e:(r.set(t,Date.now()),{metadata:{...e.metadata,[t]:{...n,cwd:a}}})}),l()},setLastCommand:(t,a)=>{e(e=>{let n=e.metadata[t];return n?.lastCommand===a?e:{metadata:{...e.metadata,[t]:{...n,lastCommand:a}}}}),l()},removeTab:t=>{e(e=>{let{[t]:a,...n}=e.metadata;return{metadata:n}}),l()},hydrate:t=>{e(e=>{let a={},n=Date.now();for(let[s,l]of Object.entries(t)){let t=e.metadata[s],o=n-(i.get(s)??0)<1e3,c=n-(r.get(s)??0)<1e3;a[s]={...l,...o&&t?.title!==void 0?{title:t.title}:{},...c&&t?.cwd!==void 0?{cwd:t.cwd}:{}}}return{metadata:a}})},retainOnly:t=>{e(e=>{let a={};for(let n of t)e.metadata[n]&&(a[n]=e.metadata[n]);return{metadata:a}})},reset:()=>{s&&clearTimeout(s),s=null,i.clear(),r.clear(),e({metadata:{}})}})),c=o},15623,e=>{"use strict";let t=(0,e.i(505888).create)(e=>({data:null,setData:t=>e({data:t})}));e.s(["default",0,t])},116962,e=>{"use strict";let t=(0,e.i(505888).create)(e=>({entries:[],syncFromServer:t=>e({entries:t}),upsertEntry:t=>e(e=>{let a=e.entries.findIndex(e=>e.id===t.id);if(a>=0){let n=[...e.entries];return n[a]=t,{entries:n}}return{entries:[t,...e.entries]}})}));e.s(["default",0,t])},237022,e=>{"use strict";var t=e.i(505888);let a={phase:"idle",status:null,branch:null,error:null,lastFetchedAt:null},n=e=>e?e.staged+e.modified+e.untracked:0,s=(0,t.create)((e,t)=>({cwdKey:null,tmuxSession:null,...a,requestSeq:0,resetForTarget:({cwdKey:t,tmuxSession:n})=>{e(e=>e.cwdKey===t?e.tmuxSession===n?e:{tmuxSession:n}:{...a,cwdKey:t,tmuxSession:n,requestSeq:e.requestSeq+1})},fetchForTarget:async({cwdKey:a,tmuxSession:n},s)=>{if(!a||!n)return void t().resetForTarget({cwdKey:null,tmuxSession:null});let i=t(),r=i.cwdKey!==a,l=null!==i.lastFetchedAt&&Date.now()-i.lastFetchedAt<15e3;if(!r&&!s?.force&&l&&"error"!==i.phase){i.tmuxSession!==n&&e({tmuxSession:n});return}let o=i.requestSeq+1;e({cwdKey:a,tmuxSession:n,phase:"loading",status:r?null:i.status,branch:r?null:i.branch,error:null,lastFetchedAt:null,requestSeq:o});try{let a=new URLSearchParams({tmuxSession:n});s?.force&&a.set("force","true");let i=await fetch(`/api/git/status?${a.toString()}`,{cache:"no-store"});if(!i.ok)throw Error(`status-${i.status}`);let r=await i.json();if(t().requestSeq!==o)return;if(!r.status)return void e({phase:"not-git",status:null,branch:null,error:null,lastFetchedAt:Date.now()});let l=null;try{let e=new URLSearchParams({tmuxSession:n});s?.force&&e.set("force","true");let t=await fetch(`/api/git/branch?${e.toString()}`,{cache:"no-store"});t.ok&&(l=(await t.json()).branch)}catch{l=null}if(t().requestSeq!==o)return;e({phase:"ready",status:r.status,branch:l,error:null,lastFetchedAt:Date.now()})}catch(a){if(t().requestSeq!==o)return;e({phase:"error",status:null,branch:null,error:a instanceof Error?a.message:String(a),lastFetchedAt:Date.now()})}}}));e.s(["default",0,s,"formatGitStatusSummary",0,(e,t,a,s)=>{if("idle"===e)return s;if("loading"===e)return"Checking Git status...";if("not-git"===e)return"Not a Git repository";if("error"===e)return"Git status unavailable";if(!a)return s;let i=n(a),r=[t??"Git",i>0?`${i} changed`:"clean"];return(a.insertions>0||a.deletions>0)&&r.push(`+${a.insertions} -${a.deletions}`),a.ahead>0&&r.push(`ahead ${a.ahead}`),a.behind>0&&r.push(`behind ${a.behind}`),a.stash>0&&r.push(`${a.stash} stash`),r.join(" · ")},"getGitStatusIndicators",0,e=>{if(!e)return[];let t=n(e),a=[];return t>0&&a.push({key:"changed",label:t>99?"99+":String(t),tone:"dirty"}),e.ahead>0&&a.push({key:"ahead",label:`↑${e.ahead}`,tone:"sync"}),e.behind>0&&a.push({key:"behind",label:`↓${e.behind}`,tone:"sync"}),e.stash>0&&a.push({key:"stash",label:`S${e.stash}`,tone:"stash"}),a}])},3450,251748,e=>{"use strict";var t=e.i(191788),a=e.i(399267),n=e.i(453783),s=e.i(15623),i=e.i(116962),r=e.i(237022),l=e.i(335288);let o=new Set(["zsh","bash","fish","sh","-zsh","-bash","-fish","-sh"]),c=new Set(["codex","Codex","node"]),d=e=>{if("~"===e||"/"===e)return e;let t=e.replace(/\/$/,"").split("/");return t[t.length-1]||e},u=e=>{let t=e.trim();if(!t)return null;let a=t.indexOf("|");return a>0?t.slice(0,a):null},p=(e,t)=>"codex-cli"===t&&c.has(e)?"Codex":e,f=(e,t)=>{let a=e.trim();if(!a)return"";let n=u(e);if(null!==n){let e=a.slice(a.indexOf("|")+1);return o.has(n)?d(e):p(n,t)}let s=a.match(/@[^:]+:\s*(.*)/);if(s)return d(s[1].trim());if(a.startsWith("/")||a.startsWith("~"))return d(a);let i=a.split(/\s+/)[0];return o.has(i)?"":p(i||"",t)};e.s(["formatTabTitle",0,f,"isShellProcess",0,e=>{let t=u(e);return null!==t&&o.has(t)},"parseCurrentCommand",0,u],251748);var b=e.i(806185);let m=null;e.s(["ackNotificationInput",0,(e,t)=>{m?.readyState===WebSocket.OPEN&&m.send(JSON.stringify({type:"status:ack-notification",tabId:e,seq:t}))},"default",0,()=>{let e=(0,t.useRef)(0),o=(0,t.useRef)(null),c=(0,t.useRef)(!0);(0,t.useEffect)(()=>{c.current=!0;let t=()=>{if(!c.current)return;let d="https:"===location.protocol?"wss:":"ws:",u=new WebSocket(`${d}//${location.host}/api/status`);m=u,u.onopen=()=>{c.current&&(e.current=0,a.default.getState().setStatusWsConnected(!0))},u.onmessage=e=>{if(c.current)try{let t=JSON.parse(e.data);switch(t.type){case"status:sync":for(let[e,s]of(a.default.getState().syncAllFromServer(t.tabs),Object.entries(t.tabs)))"agent-sessions"!==s.panelType&&s.paneTitle&&!n.default.getState().metadata[e]?.title&&n.default.getState().setTitle(e,f(s.paneTitle,s.panelType));break;case"status:update":a.default.getState().updateFromServer(t.tabId,{cliState:t.cliState,workspaceId:t.workspaceId,tabName:t.tabName,panelType:t.panelType,terminalStatus:t.terminalStatus,listeningPorts:t.listeningPorts,currentProcess:t.currentProcess,agentProviderId:t.agentProviderId,agentSessionId:t.agentSessionId,agentSummary:t.agentSummary,lastUserMessage:t.lastUserMessage,lastAssistantMessage:t.lastAssistantMessage,currentAction:t.currentAction,readyForReviewAt:t.readyForReviewAt,busySince:t.busySince,dismissedAt:t.dismissedAt,compactingSince:t.compactingSince,permissionRequest:t.permissionRequest,lastEvent:t.lastEvent,eventSeq:t.eventSeq}),t.paneTitle&&"agent-sessions"!==t.panelType&&n.default.getState().setTitle(t.tabId,f(t.paneTitle,t.panelType));break;case"status:hook-event":a.default.getState().applyHookEvent(t.tabId,t.event),((e,t)=>{if("stop"!==t.name)return;let a=r.default.getState();if(!a.cwdKey||!a.tmuxSession)return;let n=l.useLayoutStore.getState().layout;if(!n)return;let s=(0,b.collectAllTabs)(n.root).find(t=>t.id===e);s&&s.sessionName===a.tmuxSession&&a.fetchForTarget({cwdKey:a.cwdKey,tmuxSession:a.tmuxSession},{force:!0})})(t.tabId,t.event);break;case"rate-limits:update":s.default.getState().setData(t.data);break;case"session-history:sync":i.default.getState().syncFromServer(t.entries);break;case"session-history:update":i.default.getState().upsertEntry(t.entry)}}catch{}},u.onclose=()=>{if(!c.current)return;a.default.getState().setStatusWsConnected(!1),m=null;let n=Math.min(1e3*Math.pow(2,e.current),3e4);e.current++,o.current=setTimeout(t,n)},u.onerror=()=>{}};t();let d=()=>{if("visible"!==document.visibilityState)return;let a=m?.readyState;a!==WebSocket.OPEN&&a!==WebSocket.CONNECTING&&(o.current&&(clearTimeout(o.current),o.current=null),e.current=0,t())};return document.addEventListener("visibilitychange",d),()=>{c.current=!1,o.current&&(clearTimeout(o.current),o.current=null),m&&(m.close(),m=null),document.removeEventListener("visibilitychange",d)}},[])},"dismissTab",0,e=>{a.default.getState().dismissTab(e),m?.readyState===WebSocket.OPEN&&m.send(JSON.stringify({type:"status:tab-dismissed",tabId:e}))},"requestSync",0,()=>{m?.readyState===WebSocket.OPEN&&m.send(JSON.stringify({type:"status:request-sync"}))}],3450)},266231,e=>{"use strict";var t=e.i(191788);let a=768;e.s(["default",0,(e=a)=>{let n=`(max-width: ${e-1}px)`,s=(0,t.useCallback)(e=>{let t=window.matchMedia(n);return t.addEventListener("change",e),()=>t.removeEventListener("change",e)},[n]),i=(0,t.useCallback)(()=>window.matchMedia(n).matches,[n]),r=(0,t.useCallback)(()=>!1,[]);return(0,t.useSyncExternalStore)(s,i,r)}])}]);
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,399267,e=>{"use strict";var t=e.i(505888);let a={terminalConnected:!1,agentProcess:null,agentProcessCheckedAt:0,agentInstalled:!0,sessionView:"session-list",cliState:"inactive",isTimelineLoading:!0,workspaceId:""},n=(e,t,a)=>{let n=e[t];return n?{...e,[t]:{...n,...a}}:e},s=(e,t)=>null!=t&&"inactive"!==t&&"unknown"!==t&&"cancelled"!==t&&"check"===e?"timeline":e,i=(e,t)=>t.agentProviderId||"terminal"!==e.panelType||!0!==e.agentProcess?{}:{agentProviderId:e.agentProviderId,agentSessionId:e.agentSessionId},r=(0,t.create)(e=>({tabs:{},tabOrders:{},statusWsConnected:!1,initTab:(t,n)=>e(e=>{let s=e.tabs[t],i={...a,...s,...n};return s?.cliState==="ready-for-review"&&"ready-for-review"!==i.cliState&&(i.cliState="ready-for-review",i.readyForReviewAt=s.readyForReviewAt),{tabs:{...e.tabs,[t]:i}}}),removeTab:t=>e(e=>{let{[t]:a,...n}=e.tabs;return{tabs:n}}),setTerminalConnected:(t,a)=>e(e=>{let s=e.tabs[t];return s&&s.terminalConnected!==a?{tabs:n(e.tabs,t,{terminalConnected:a})}:e}),setAgentProcess:(t,a,s)=>e(e=>{let i=e.tabs[t];if(!i||i.agentProcessCheckedAt>s)return e;let r={agentProcess:a,agentProcessCheckedAt:s};return(!0===a&&("check"===i.sessionView||"session-list"===i.sessionView)&&(r.sessionView="timeline"),!1===a&&!0===i.agentProcess&&"timeline"===i.sessionView&&(r.sessionView="session-list"),i.agentProcess===a&&i.agentProcessCheckedAt===s&&void 0===r.sessionView)?e:{tabs:n(e.tabs,t,r)}}),setAgentInstalled:(t,a)=>e(e=>{let s=e.tabs[t];return s&&s.agentInstalled!==a?{tabs:n(e.tabs,t,{agentInstalled:a})}:e}),setSessionView:(t,a)=>e(e=>{let s=e.tabs[t];return s&&s.sessionView!==a?{tabs:n(e.tabs,t,{sessionView:a})}:e}),setTimelineLoading:(t,a)=>e(e=>{let s=e.tabs[t];return s&&s.isTimelineLoading!==a?{tabs:n(e.tabs,t,{isTimelineLoading:a})}:e}),setSessionMetaCache:(t,a)=>e(e=>{let s=e.tabs[t];if(!s)return e;let i=s.sessionMetaCache;return i&&i.sessionId===a.sessionId&&i.jsonlPath===a.jsonlPath&&i.meta===a.meta?e:{tabs:n(e.tabs,t,{sessionMetaCache:a})}}),cancelTab:t=>e(e=>{let a=e.tabs[t];return a&&"cancelled"!==a.cliState?{tabs:n(e.tabs,t,{cliState:"cancelled",localUpdatedAt:Date.now()})}:e}),dismissTab:t=>e(e=>{let a=e.tabs[t];return a&&"ready-for-review"===a.cliState?{tabs:n(e.tabs,t,{cliState:"idle",dismissedAt:Date.now()})}:e}),setWorkspaceId:(t,a)=>e(e=>{let s=e.tabs[t];return s&&s.workspaceId!==a?{tabs:n(e.tabs,t,{workspaceId:a})}:e}),setPanelType:(t,a)=>e(e=>{let s=e.tabs[t];return s&&s.panelType!==a?{tabs:n(e.tabs,t,{panelType:a})}:e}),setCurrentProcess:(t,a)=>e(e=>{let s=e.tabs[t];if(!s)return e;let i=a??void 0;return s.currentProcess===i?e:{tabs:n(e.tabs,t,{currentProcess:i,localUpdatedAt:Date.now()})}}),setDetectedAgent:(t,a)=>e(e=>{let s=e.tabs[t],i=a.checkedAt??Date.now();if(!s||s.agentProcessCheckedAt>i)return e;let r={agentProcess:a.running,agentProcessCheckedAt:i};return a.running?(a.providerId&&(r.agentProviderId=a.providerId),void 0!==a.sessionId&&(r.agentSessionId=a.sessionId),("check"===s.sessionView||"session-list"===s.sessionView)&&(r.sessionView="timeline")):"terminal"===s.panelType?(r.agentProviderId=void 0,r.agentSessionId=null,!0===s.agentProcess&&"timeline"===s.sessionView&&(r.sessionView="session-list")):"timeline"===s.sessionView&&(!0===s.agentProcess||s.agentSessionId&&!s.isTimelineLoading)&&(r.sessionView="session-list"),{tabs:n(e.tabs,t,r)}}),setTabOrder:(t,a)=>e(e=>{let n=e.tabOrders[t];return n&&n.length===a.length&&n.every((e,t)=>e===a[t])?e:{tabOrders:{...e.tabOrders,[t]:a}}}),setStatusWsConnected:t=>e({statusWsConnected:t}),syncAllFromServer:t=>e(e=>{let n=Date.now(),r={};for(let[l,o]of Object.entries(t)){let t=e.tabs[l];if(t?.cliState==="cancelled"){r[l]=t;continue}t?.localUpdatedAt&&n-t.localUpdatedAt<3e4?r[l]={...t,cliState:o.cliState,workspaceId:o.workspaceId,tabName:o.tabName,terminalStatus:o.terminalStatus,listeningPorts:o.listeningPorts,agentProviderId:o.agentProviderId,agentSessionId:o.agentSessionId,...i(t,o),agentSummary:o.agentSummary,lastUserMessage:o.lastUserMessage,lastAssistantMessage:o.lastAssistantMessage,currentAction:o.currentAction,readyForReviewAt:o.readyForReviewAt,busySince:o.busySince,dismissedAt:o.dismissedAt,compactingSince:o.compactingSince,permissionRequest:o.permissionRequest,lastEvent:o.lastEvent,eventSeq:o.eventSeq,sessionView:s(t.sessionView,o.cliState)}:t?r[l]={...t,cliState:o.cliState,workspaceId:o.workspaceId,tabName:o.tabName,panelType:o.panelType??t.panelType,terminalStatus:o.terminalStatus,listeningPorts:o.listeningPorts,currentProcess:o.currentProcess,agentProviderId:o.agentProviderId,agentSessionId:o.agentSessionId,...i(t,o),agentSummary:o.agentSummary,lastUserMessage:o.lastUserMessage,lastAssistantMessage:o.lastAssistantMessage,currentAction:o.currentAction,readyForReviewAt:o.readyForReviewAt,busySince:o.busySince,dismissedAt:o.dismissedAt,compactingSince:o.compactingSince,permissionRequest:o.permissionRequest,lastEvent:o.lastEvent,eventSeq:o.eventSeq,sessionView:s(t.sessionView,o.cliState)}:r[l]={...a,cliState:o.cliState,workspaceId:o.workspaceId,tabName:o.tabName,panelType:o.panelType,terminalStatus:o.terminalStatus,listeningPorts:o.listeningPorts,currentProcess:o.currentProcess,agentProviderId:o.agentProviderId,agentSessionId:o.agentSessionId,agentSummary:o.agentSummary,lastUserMessage:o.lastUserMessage,lastAssistantMessage:o.lastAssistantMessage,currentAction:o.currentAction,readyForReviewAt:o.readyForReviewAt,busySince:o.busySince,dismissedAt:o.dismissedAt,compactingSince:o.compactingSince,permissionRequest:o.permissionRequest,lastEvent:o.lastEvent,eventSeq:o.eventSeq,sessionView:s(a.sessionView,o.cliState)}}for(let[t,a]of Object.entries(e.tabs))r[t]||(r[t]=a);return{tabs:r}}),updateFromServer:(t,r)=>e(e=>{if(null===r.cliState){let{[t]:a,...n}=e.tabs;return{tabs:n}}let l=e.tabs[t];if(l){if("cancelled"===l.cliState)return e;let a=void 0!==r.eventSeq&&void 0!==l.eventSeq&&r.eventSeq<l.eventSeq,o=void 0!==r.eventSeq&&(void 0===l.eventSeq||r.eventSeq>=l.eventSeq)?{lastEvent:r.lastEvent,eventSeq:r.eventSeq}:{},c=a?{cliState:l.cliState,readyForReviewAt:l.readyForReviewAt,busySince:l.busySince,dismissedAt:l.dismissedAt}:{cliState:r.cliState,readyForReviewAt:r.readyForReviewAt,busySince:r.busySince,dismissedAt:r.dismissedAt};return{tabs:n(e.tabs,t,{...c,workspaceId:r.workspaceId,tabName:r.tabName,panelType:r.panelType??l.panelType,terminalStatus:r.terminalStatus,listeningPorts:r.listeningPorts,currentProcess:r.currentProcess,agentProviderId:r.agentProviderId,agentSessionId:r.agentSessionId,...i(l,r),agentSummary:r.agentSummary,lastUserMessage:r.lastUserMessage,lastAssistantMessage:r.lastAssistantMessage,currentAction:r.currentAction,compactingSince:r.compactingSince,permissionRequest:r.permissionRequest,sessionView:s(l.sessionView,r.cliState),...o})}}return{tabs:{...e.tabs,[t]:{...a,cliState:r.cliState,workspaceId:r.workspaceId,tabName:r.tabName,panelType:r.panelType,terminalStatus:r.terminalStatus,listeningPorts:r.listeningPorts,currentProcess:r.currentProcess,agentProviderId:r.agentProviderId,agentSessionId:r.agentSessionId,agentSummary:r.agentSummary,lastUserMessage:r.lastUserMessage,lastAssistantMessage:r.lastAssistantMessage,readyForReviewAt:r.readyForReviewAt,busySince:r.busySince,dismissedAt:r.dismissedAt,compactingSince:r.compactingSince,permissionRequest:r.permissionRequest,lastEvent:r.lastEvent,eventSeq:r.eventSeq,sessionView:s(a.sessionView,r.cliState)}}}}),applyHookEvent:(t,a)=>e(e=>{let s=e.tabs[t];if(!s||void 0!==s.eventSeq&&a.seq<=s.eventSeq)return e;let i=((e,t)=>{if(!e||"cancelled"===t)return t;switch(e.name){case"session-start":case"interrupt":return"idle";case"prompt-submit":return"busy";case"notification":return"needs-input";case"stop":return"ready-for-review"}})(a,s.cliState);return{tabs:n(e.tabs,t,{cliState:i,lastEvent:a,eventSeq:a.seq,readyForReviewAt:"ready-for-review"===i?Date.now():null,busySince:"busy"===i?Date.now():null,dismissedAt:"busy"===i?null:s.dismissedAt,permissionRequest:"needs-input"===s.cliState&&"needs-input"!==i?null:s.permissionRequest})}})}));e.s(["default",0,r,"getInitialTabStateFromLayoutTab",0,e=>{let t={panelType:e.panelType},a=e.agentState?.providerId??("codex-cli"===e.panelType?"codex":"claude-code"===e.panelType?"claude":void 0),n=e.agentState?.sessionId??e.claudeSessionId??null;return a&&(t.agentProviderId=a),n&&(t.agentSessionId=n,t.agentSummary=e.agentState?.summary??e.claudeSummary??null,t.sessionView="timeline"),t},"isCliIdle",0,e=>"idle"===e||"ready-for-review"===e,"selectGlobalStatus",0,e=>{let t=0,a=0;for(let n of Object.values(e))"busy"===n.cliState?t++:("ready-for-review"===n.cliState||"needs-input"===n.cliState)&&a++;return{busyCount:t,attentionCount:a}},"selectSessionView",0,(e,t)=>{let a=e[t];return a?a.sessionView:"session-list"},"selectTabDisplayStatus",0,(e,t)=>{let a=e[t];return a&&"inactive"!==a.cliState?"busy"===a.cliState?"busy":"ready-for-review"===a.cliState?"ready-for-review":"needs-input"===a.cliState?"needs-input":"unknown"===a.cliState?"unknown":"idle":"idle"},"selectWorkspacePortsLabel",0,(e,t)=>{let a=new Set;for(let n of Object.values(e))if(n.workspaceId===t&&n.listeningPorts)for(let e of n.listeningPorts)a.add(e);return 0===a.size?"":":"+[...a].sort((e,t)=>e-t).join(", :")}],399267)},117653,e=>{"use strict";var t=e.i(191788);let a=(e,t)=>{let a=e instanceof Map?e:new Map(e.entries()),n=t instanceof Map?t:new Map(t.entries());if(a.size!==n.size)return!1;for(let[e,t]of a)if(!n.has(e)||!Object.is(t,n.get(e)))return!1;return!0};e.s(["useShallow",0,function(e){let n=t.default.useRef(void 0);return t=>{let s=e(t);return!function(e,t){if(Object.is(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t||Object.getPrototypeOf(e)!==Object.getPrototypeOf(t))return!1;if(Symbol.iterator in e&&Symbol.iterator in t){if("entries"in e&&"entries"in t)return a(e,t);let n=e[Symbol.iterator](),s=t[Symbol.iterator](),i=n.next(),r=s.next();for(;!i.done&&!r.done;){if(!Object.is(i.value,r.value))return!1;i=n.next(),r=s.next()}return!!i.done&&!!r.done}return a({entries:()=>Object.entries(e)},{entries:()=>Object.entries(t)})}(n.current,s)?n.current=s:n.current}}],117653)},358915,e=>{"use strict";var t=e.i(191788),a=e.i(679935),n=e.i(844044),s=e.i(399267);let i=new Set(["/new","/clear"]),r=e=>`pt-input-draft:${e}`,l=e=>{try{localStorage.removeItem(r(e))}catch{}};e.s(["clearInputDraft",0,l,"default",0,(e,o,c,d)=>{let u=d?.tabId,[p,f]=(0,t.useState)(()=>u?(e=>{try{return localStorage.getItem(r(e))??""}catch{return""}})(u):""),b=(0,t.useRef)(null),m=(0,t.useMemo)(()=>(0,s.isCliIdle)(e)||"unknown"===e?"input":"busy"===e||"needs-input"===e?"interrupt":"disabled",[e]),y=d?.onRestartSession,S=d?.onMessageSent,g=d?.submitDelayMs??250,h=(0,t.useRef)(null);(0,t.useEffect)(()=>{if(u)return h.current&&clearTimeout(h.current),h.current=setTimeout(()=>((e,t)=>{try{t?localStorage.setItem(r(e),t):localStorage.removeItem(r(e))}catch{}})(u,p),300),()=>{h.current&&clearTimeout(h.current)}},[u,p]);let v=(0,t.useCallback)(()=>{if("disabled"===m)return void a.toast.error(d?.disabledMessage??(0,n.t)("terminal","inputDisabledPlaceholder"));if(!c)return void a.toast.error((0,n.t)("connection","terminalDisconnected"));if(""!==p.trim()){if(i.has(p.trim().toLowerCase())){y?.(),f(""),u&&l(u);return}p.includes("\n")?o(`\x1b[200~${p}\x1b[201~`):o(p),setTimeout(()=>o("\r"),g),p.trim().startsWith("/")||S?.(p.trim()),f(""),u&&l(u)}},[m,p,o,c,y,S,u,d?.disabledMessage,g]),I=(0,t.useCallback)(()=>{c?o("\x1b\x1b"):a.toast.error((0,n.t)("connection","terminalDisconnected"))},[o,c]),w=(0,t.useCallback)(()=>{let e=b.current;if(!e)return;e.focus();let t=e.value.length;e.setSelectionRange(t,t)},[]),T="disabled"!==m&&c;return{value:p,setValue:f,mode:m,canSend:T,send:v,interrupt:I,textareaRef:b,focusInput:w}}])},898589,e=>{"use strict";let t=e=>"web-browser"===e?"Web Browser":"";e.s(["resolveTabNameForPanelTypeChange",0,(e,a,n)=>{let s=t(a),i="agent-sessions"===a?"Session List":"",r=t(n),l=e.trim();return!l&&r||(""!==s&&l===s||""!==i&&l===i)&&l!==r?r:e}])},806185,e=>{"use strict";let t=e=>"pane"===e.type?[e]:[...t(e.children[0]),...t(e.children[1])],a=(e,t)=>"pane"===e.type?e.id===t?e:null:a(e.children[0],t)||a(e.children[1],t),n=e=>"pane"===e.type?e.id:n(e.children[0]),s=e=>"pane"===e.type?e.id:s(e.children[1]),i=(e,t)=>{if("pane"===e.type)return null;let[a,n]=e.children;if("pane"===a.type&&a.id===t)return n;if("pane"===n.type&&n.id===t)return a;let s=i(a,t);if(s)return{...e,children:[s,n]};let r=i(n,t);return r?{...e,children:[a,r]}:null},r=(e,t)=>{if("pane"===e.type)return null;let[a,i]=e.children;return"pane"===a.type&&a.id===t?n(i):"pane"===i.type&&i.id===t?s(a):r(a,t)||r(i,t)},l=(e,t,a)=>{if("split"!==e.type)return e;if(0===t.length)return{...e,ratio:a};let[n,...s]=t,i=[e.children[0],e.children[1]];return i[n]=l(e.children[n],s,a),{...e,children:i}},o=(e,t)=>"pane"===e.type||e.orientation!==t?1:o(e.children[0],t)+o(e.children[1],t),c=e=>{if("pane"===e.type)return e;let t=o(e.children[0],e.orientation),a=Math.round(t/(t+o(e.children[1],e.orientation))*1e4)/100;return{...e,ratio:a,children:[c(e.children[0]),c(e.children[1])]}},d=(e,t,a)=>{if("pane"===e.type)return e.id===t?a(e):e;let n=d(e.children[0],t,a);if(n!==e.children[0])return{...e,children:[n,e.children[1]]};let s=d(e.children[1],t,a);return s!==e.children[1]?{...e,children:[e.children[0],s]}:e};e.s(["collectAllTabs",0,e=>t(e).flatMap(e=>e.tabs),"collectPanes",0,t,"equalizeNode",0,c,"findAdjacentPaneInDirection",0,(e,t,a)=>{let i=[],r=e=>{if("pane"===e.type)return e.id===t;for(let t=0;t<2;t++){if(i.push({node:e,childIndex:t}),r(e.children[t]))return!0;i.pop()}return!1};if(!r(e))return null;let l="left"===a||"right"===a?"horizontal":"vertical",o=+("left"===a||"up"===a);for(let e=i.length-1;e>=0;e--){let{node:t,childIndex:r}=i[e];if("split"===t.type&&t.orientation===l&&r===o){let e=t.children[1-o];return"left"===a||"up"===a?s(e):n(e)}}return null},"findPane",0,a,"findResizeTarget",0,(e,t,a)=>{let n=[],s=e=>{if("pane"===e.type)return e.id===t;for(let t=0;t<2;t++){if(n.push({node:e,childIndex:t}),s(e.children[t]))return!0;n.pop()}return!1};if(!s(e))return null;let i="left"===a||"right"===a?"horizontal":"vertical",r=+("right"!==a&&"down"!==a),l="right"===a||"down"===a;for(let e=n.length-1;e>=0;e--){let{node:t,childIndex:a}=n[e];if("split"===t.type&&t.orientation===i&&a===r)return{path:n.slice(0,e).map(e=>e.childIndex),currentRatio:t.ratio,increase:l}}return null},"getFirstPaneId",0,n,"removePaneWithFocus",0,(e,a)=>{let n=r(e.root,a),s=i(e.root,a);s&&(e.root=s),e.activePaneId===a&&(e.activePaneId=n??t(e.root)[0]?.id??null)},"updatePaneInTree",0,d,"updateRatioAtPath",0,l])},335288,e=>{"use strict";e.s(["default",()=>L,"navigateToTab",()=>E,"navigateToTabOrCreate",()=>F,"useLayoutStore",()=>O]);var t=e.i(191788),a=e.i(203828),n=e.i(505888),s=e.i(117653),i=e.i(679935),r=e.i(844044),l=e.i(358915),o=e.i(399267),c=e.i(490034),d=e.i(453783),u=e.i(898589),p=e.i(806185);let f="pt-active-pane-",b="pt-active-tab-",m="pt-terminal-ratio-",y="pt-terminal-collapsed-",S=e=>{try{return sessionStorage.getItem(`${b}${e}`)}catch{return null}},g=e=>{try{let t=sessionStorage.getItem(`${m}${e}`);if(null==t)return null;let a=Number(t);return Number.isFinite(a)?a:null}catch{return null}},h=e=>{try{let t=sessionStorage.getItem(`${y}${e}`);if(null==t)return null;return"1"===t}catch{return null}},v=null,I=null,w=null,T=!1,P=new Map,k=(e,t)=>{if(!t)return e;let a=e.includes("?")?"&":"?";return`${e}${a}workspace=${t}`},A=(e,t)=>{let a=e?(0,p.collectPanes)(e.root).length:0;return{paneCount:a,canSplit:a<10&&!t}},C=(e,t,a)=>{e({layout:a,...A(a,t().isSplitting)})},$=(e,t,a)=>{let n=t().layout;if(n){let e=(0,p.collectPanes)(a.root);for(let t of(n.activePaneId&&e.some(e=>e.id===n.activePaneId)&&(a.activePaneId=n.activePaneId),e)){let e=(0,p.findPane)(n.root,t.id);e?.activeTabId&&t.tabs.some(t=>t.id===e.activeTabId)&&(t.activeTabId=e.activeTabId)}}e({layout:a,...A(a,t().isSplitting)})},q=(e,t,a,n)=>{let{layout:s}=t();if(!s)return;let i=(0,p.updatePaneInTree)(s.root,a,n);i!==s.root&&C(e,t,{...s,root:i})},R=async(e,t)=>{try{let a=await fetch(e,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)});if(!a.ok)return null;return await a.json()}catch{return null}},O=(0,n.create)((e,t)=>({layout:null,isLoading:!0,error:null,isSplitting:!1,workspaceId:null,retryCount:0,paneCount:0,canSplit:!1,pendingFocusTabId:null,setWorkspaceId:t=>{T=!1,e({workspaceId:t})},setLayout:a=>{C(e,t,a)},fetchLayout:async(a,n)=>{if(T)return;let s=a??t().workspaceId;if(!s)return;v?.abort();let l=new AbortController;v=l,t().layout||e({isLoading:!0,error:null});try{let a=await fetch(k("/api/layout",s),{signal:l.signal});if(!a.ok)throw Error();let i=await a.json();if(l.signal.aborted)return;let r=t().layout;if(!1!==n){let e=(0,p.collectPanes)(i.root);if(r)for(let t of(r.activePaneId&&e.some(e=>e.id===r.activePaneId)&&(i.activePaneId=r.activePaneId),e)){let e=(0,p.findPane)(r.root,t.id);e?.activeTabId&&t.tabs.some(t=>t.id===e.activeTabId)&&(t.activeTabId=e.activeTabId)}else{let t=(e=>{try{return sessionStorage.getItem(`${f}${e}`)}catch{return null}})(s);for(let a of(t&&e.some(e=>e.id===t)&&(i.activePaneId=t),e)){let e=S(a.id);for(let t of(e&&a.tabs.some(t=>t.id===e)&&(a.activeTabId=e),a.tabs)){let e=g(t.id);null!==e&&(t.terminalRatio=e);let a=h(t.id);null!==a&&(t.terminalCollapsed=a)}}}}if(r){let a={root:r.root,activePaneId:r.activePaneId},n={root:i.root,activePaneId:i.activePaneId};if(JSON.stringify(a)===JSON.stringify(n)){let a=t().pendingFocusTabId;a&&(e({pendingFocusTabId:null}),t().focusTab(a));return}}let o=t().pendingFocusTabId,c=null;if(o){for(let t of(e({pendingFocusTabId:null}),(0,p.collectPanes)(i.root)))if(t.tabs.some(e=>e.id===o)){i.activePaneId=t.id,t.activeTabId=o,c=t.id;break}}e({layout:i,retryCount:0,...A(i,t().isSplitting)}),c&&(R(k("/api/layout",s),{activePaneId:c}),R(k(`/api/layout/pane/${c}`,s),{activeTabId:o}))}catch(n){if(n instanceof DOMException&&"AbortError"===n.name)return;let a=t().retryCount+1;if(e({retryCount:a}),a>=3)try{let a=await fetch(k("/api/layout/pane",s),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({})});if(a.ok){let{paneId:n,tab:s}=await a.json(),l={root:{type:"pane",id:n,tabs:[s],activeTabId:s.id},activePaneId:n,updatedAt:new Date().toISOString()};e({layout:l,...A(l,t().isSplitting)}),i.toast.info((0,r.t)("terminal","fallbackLayout")),e({retryCount:0});return}}catch{}e({error:(0,r.t)("terminal","layoutFetchError")}),I?.()}finally{l.signal.aborted||e({isLoading:!1})}},splitPane:async(a,n)=>{let{layout:s,isSplitting:l,workspaceId:o}=t();if(s&&!l&&!((0,p.collectPanes)(s.root).length>=10)){e({isSplitting:!0,canSplit:!1});try{let i,r,l=(0,p.findPane)(s.root,a),c=l?.tabs.find(e=>e.id===l.activeTabId);if(c){r=c.panelType;try{let e=await fetch(k(`/api/layout/cwd?session=${c.sessionName}`,o));e.ok&&(i=(await e.json()).cwd)}catch{}}let d=await fetch(k("/api/layout/pane",o),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sourcePaneId:a,orientation:n,cwd:i,panelType:r})});if(!d.ok)throw Error();let u=await d.json();C(e,t,u)}catch{i.toast.error((0,r.t)("terminal","splitFailed"))}finally{e(e=>({isSplitting:!1,canSplit:e.paneCount<10}))}}},closePane:async a=>{let{layout:n,workspaceId:s}=t();if(n&&!((0,p.collectPanes)(n.root).length<=1))try{let n=await fetch(k(`/api/layout/pane/${a}`,s),{method:"DELETE"});if(!n.ok)throw Error();let i=await n.json();C(e,t,i)}catch{i.toast.error("Pane을 닫을 수 없습니다")}},focusPane:a=>{let{layout:n,workspaceId:s}=t();n&&n.activePaneId!==a&&(e({layout:{...n,activePaneId:a}}),R(k("/api/layout",s),{activePaneId:a}).then(a=>{a&&$(e,t,a)}))},updateRatio:(a,n)=>{let{layout:s,workspaceId:i}=t();s&&(e({layout:{...s,root:(0,p.updateRatioAtPath)(s.root,a,n)}}),w&&clearTimeout(w),w=setTimeout(()=>{w=null,R(k("/api/layout",i),{ratioUpdate:{path:a,ratio:n}}).then(a=>{a&&$(e,t,a)})},300))},moveTab:(a,n,s,i)=>{if(n===s)return;let{layout:r,workspaceId:l}=t();if(!r)return;let o=JSON.parse(JSON.stringify(r)),c=(0,p.findPane)(o.root,n),d=(0,p.findPane)(o.root,s);if(c&&d){let r=c.tabs.findIndex(e=>e.id===a);if(-1!==r){let[l]=c.tabs.splice(r,1);c.activeTabId===a&&(c.activeTabId=c.tabs[0]?.id??null),c.tabs.forEach((e,t)=>{e.order=t}),d.tabs.splice(i,0,l),d.tabs.forEach((e,t)=>{e.order=t}),d.activeTabId=a,0===c.tabs.length&&(0,p.collectPanes)(o.root).length>1&&(0,p.removePaneWithFocus)(o,n),o.activePaneId=s,C(e,t,o)}}fetch(k(`/api/layout/pane/${n}/tabs/${a}/move`,l),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({toPaneId:s,toIndex:i})}).then(async a=>{a.ok?$(e,t,await a.json()):await t().fetchLayout(void 0,!1)}).catch(()=>t().fetchLayout(void 0,!1))},createTabInPane:async(a,n,s,l)=>{let{layout:c,workspaceId:u}=t();try{let i,r=n,f=c?(0,p.findPane)(c.root,a):void 0,b=f?.tabs.find(e=>e.id===f.activeTabId);!r&&b&&(r=b.panelType),"web-browser"!==r&&b&&(i=d.default.getState().metadata[b.id]?.cwd);let m=await fetch(k(`/api/layout/pane/${a}/tabs`,u),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:i,panelType:r,command:s,resumeSessionId:l})});if(!m.ok)throw Error();let y=await m.json();return(s||l)&&o.default.getState().initTab(y.id,{panelType:r,sessionView:"check"}),q(e,t,a,e=>({...e,tabs:[...e.tabs,y],activeTabId:y.id})),t().fetchLayout(),y}catch{return i.toast.error((0,r.t)("terminal","tabCreateFailed")),null}},deleteTabInPane:async(a,n)=>{(0,l.clearInputDraft)(n),o.default.getState().cancelTab(n),q(e,t,a,e=>{let t=[...e.tabs].sort((e,t)=>e.order-t.order),a=t.findIndex(e=>e.id===n),s=t.filter(e=>e.id!==n);s.forEach((e,t)=>{e.order=t});let i=e.activeTabId;if(e.activeTabId===n){let e=t[a+1]||t[a-1];i=e?.id??null}return{...e,tabs:s,activeTabId:i}});let{workspaceId:s}=t();try{let e=await fetch(k(`/api/layout/pane/${a}/tabs/${n}`,s),{method:"DELETE"});e.ok||404===e.status||(i.toast.error((0,r.t)("terminal","tabDeleteError")),await t().fetchLayout())}catch{i.toast.error((0,r.t)("terminal","tabDeleteError")),await t().fetchLayout()}},restartTabInPane:async(e,a,n)=>{let{workspaceId:s}=t();try{return(await fetch(k(`/api/layout/pane/${e}/tabs/${a}`,s),{method:"POST",headers:n?{"Content-Type":"application/json"}:void 0,body:n?JSON.stringify({command:n}):void 0})).ok}catch{return i.toast.error((0,r.t)("terminal","sessionRestartFailed")),!1}},switchTabInPane:(a,n)=>{q(e,t,a,e=>({...e,activeTabId:n}));let{workspaceId:s}=t();R(k(`/api/layout/pane/${a}`,s),{activeTabId:n}).then(a=>{a&&$(e,t,a)})},renameTabInPane:async(a,n,s)=>{q(e,t,a,e=>({...e,tabs:e.tabs.map(e=>e.id===n?{...e,name:s}:e)}));let{workspaceId:l}=t(),o=await R(k(`/api/layout/pane/${a}/tabs/${n}`,l),{name:s});o?$(e,t,o):i.toast.error((0,r.t)("terminal","tabRenameFailed"))},reorderTabsInPane:(a,n)=>{q(e,t,a,e=>{let t=new Map(e.tabs.map(e=>[e.id,e])),a=n.map((e,a)=>{let n=t.get(e);return n?{...n,order:a}:null}).filter(e=>null!==e);return{...e,tabs:a}});let{workspaceId:s}=t();R(k(`/api/layout/pane/${a}/tabs/order`,s),{tabIds:n}).then(a=>{a&&$(e,t,a)})},removeTabLocally:(e,a)=>{(0,l.clearInputDraft)(a);let{workspaceId:n}=t();fetch(k(`/api/layout/pane/${e}/tabs/${a}`,n),{method:"DELETE"}).then(()=>t().fetchLayout()).catch(()=>{console.log("[layout] removeTabLocally failed")})},equalizeRatios:()=>{let{workspaceId:a}=t();R(k("/api/layout",a),{equalize:!0}).then(a=>{a&&$(e,t,a)})},updateDiffSettings:a=>{let{layout:n,workspaceId:s}=t();n&&(C(e,t,{...n,diffSettings:{...n.diffSettings??{},...a}}),R(k("/api/layout",s),{diffSettings:a}).then(a=>{a&&$(e,t,a)}))},updateTabPanelType:(a,n,s)=>{let i;q(e,t,a,e=>({...e,tabs:e.tabs.map(e=>{if(e.id!==n)return e;let t=(0,u.resolveTabNameForPanelTypeChange)(e.name,e.panelType,s),a={...e,panelType:s,name:t};return t!==e.name&&(i=t),"codex-cli"===s&&"claude-code"===e.panelType&&(a.claudeSessionId=null,a.agentState=void 0),a})})),o.default.getState().setPanelType(n,s);let{workspaceId:r}=t();R(k(`/api/layout/pane/${a}/tabs/${n}`,r),{panelType:s,...void 0!==i?{name:i}:{}}).then(a=>{a&&$(e,t,a)})},updateTabTerminalLayout:(a,n,s)=>{q(e,t,a,e=>({...e,tabs:e.tabs.map(e=>e.id===n?{...e,...s}:e)}));try{void 0!==s.terminalRatio&&sessionStorage.setItem(`${m}${n}`,String(s.terminalRatio)),void 0!==s.terminalCollapsed&&sessionStorage.setItem(`${y}${n}`,s.terminalCollapsed?"1":"0")}catch{}let{workspaceId:i}=t(),r=P.get(n);r&&clearTimeout(r),P.set(n,setTimeout(()=>{P.delete(n),R(k(`/api/layout/pane/${a}/tabs/${n}`,i),s)},300))},clearLayout:()=>{T=!0,v?.abort(),e({layout:null,paneCount:0,canSplit:!1})},focusTab:e=>{let{layout:a}=t();if(!a)return!1;for(let n of(0,p.collectPanes)(a.root))if(n.tabs.some(t=>t.id===e))return t().focusPane(n.id),t().switchTabInPane(n.id,e),!0;return!1},focusPrevTab:()=>{let{layout:e}=t();if(!e)return;let a=(0,p.collectPanes)(e.root),n=a.findIndex(t=>t.id===e.activePaneId);if(-1===n)return;let s=a[n],i=[...s.tabs].sort((e,t)=>e.order-t.order),r=i.findIndex(e=>e.id===s.activeTabId);if(r>0)return void t().switchTabInPane(s.id,i[r-1].id);let l=a[(n-1+a.length)%a.length],o=[...l.tabs].sort((e,t)=>e.order-t.order);0!==o.length&&(l.id!==s.id&&t().focusPane(l.id),t().switchTabInPane(l.id,o[o.length-1].id))},focusNextTab:()=>{let{layout:e}=t();if(!e)return;let a=(0,p.collectPanes)(e.root),n=a.findIndex(t=>t.id===e.activePaneId);if(-1===n)return;let s=a[n],i=[...s.tabs].sort((e,t)=>e.order-t.order),r=i.findIndex(e=>e.id===s.activeTabId);if(-1!==r&&r<i.length-1)return void t().switchTabInPane(s.id,i[r+1].id);let l=a[(n+1)%a.length],o=[...l.tabs].sort((e,t)=>e.order-t.order);0!==o.length&&(l.id!==s.id&&t().focusPane(l.id),t().switchTabInPane(l.id,o[0].id))},focusTabByIndex:e=>{let{layout:a}=t();if(!a?.activePaneId)return;let n=(0,p.collectPanes)(a.root).find(e=>e.id===a.activePaneId);if(!n)return;let s=[...n.tabs].sort((e,t)=>e.order-t.order),i=e>=s.length?s[s.length-1]:s[e];i&&i.id!==n.activeTabId&&t().switchTabInPane(n.id,i.id)}}));O.subscribe((e,t)=>{if(e.layout&&e.workspaceId&&e.layout!==t.layout){var a=e.workspaceId,n=e.layout;try{for(let e of(n.activePaneId&&sessionStorage.setItem(`${f}${a}`,n.activePaneId),(0,p.collectPanes)(n.root)))for(let t of(e.activeTabId&&sessionStorage.setItem(`${b}${e.id}`,e.activeTabId),e.tabs))void 0!==t.terminalRatio&&sessionStorage.setItem(`${m}${t.id}`,String(t.terminalRatio)),void 0!==t.terminalCollapsed&&sessionStorage.setItem(`${y}${t.id}`,t.terminalCollapsed?"1":"0")}catch{}}});let E=(e,t)=>{let n=O.getState();if("/"!==a.default.pathname){O.setState({pendingFocusTabId:t}),c.default.getState().switchWorkspace(e),a.default.push("/");return}e===n.workspaceId?n.focusTab(t):(n.clearLayout(),O.setState({pendingFocusTabId:t}),c.default.getState().switchWorkspace(e))},F=async(e,t,a,n,s,i="claude")=>{let r=c.default.getState(),l="codex"===i?"codex-cli":"claude-code",d=e,u=r.workspaces.find(t=>t.id===e);if(!u){if(!s)return;let e=await r.createWorkspace(s,n,a??void 0,l);if(!e)return;d=e.id;let t=await fetch(k("/api/layout",d));if(!t.ok)return;let i=await t.json(),c=(0,p.collectAllTabs)(i.root)[0];if(!c)return;a&&o.default.getState().initTab(c.id,{panelType:l,sessionView:"check"}),E(d,c.id);return}let f=await fetch(k("/api/layout",d));if(!f.ok)return;let b=await f.json();if(a){let e=(0,p.collectAllTabs)(b.root).find(e=>"codex"===i?e.agentState?.providerId==="codex"&&e.agentState.sessionId===a:e.agentState?.providerId==="claude"?e.agentState.sessionId===a:e.claudeSessionId===a);if(e){o.default.getState().setSessionView(e.id,"timeline"),E(d,e.id);return}}else if((0,p.collectAllTabs)(b.root).find(e=>e.id===t))return void E(d,t);let m=b.activePaneId??(0,p.getFirstPaneId)(b.root),y={panelType:l,cwd:u.directories[0]};a&&(y.resumeSessionId=a);let S=await fetch(k(`/api/layout/pane/${m}/tabs`,d),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(y)});if(!S.ok)return;let g=await S.json();a&&o.default.getState().initTab(g.id,{panelType:l,sessionView:"check"}),d===O.getState().workspaceId?(O.setState({pendingFocusTabId:g.id}),O.getState().fetchLayout()):E(d,g.id)},L=({workspaceId:e,onFetchError:a})=>((0,t.useEffect)(()=>{I=a??null},[a]),(0,t.useEffect)(()=>{if(e){let t=O.getState();t.setWorkspaceId(e),t.fetchLayout(e)}},[e]),(0,t.useEffect)(()=>O.subscribe(e=>{let t=e.workspaceId;if(!t||!e.layout?.root)return;let a=(0,p.collectPanes)(e.layout.root).flatMap(e=>e.tabs.map(e=>e.id));o.default.getState().setTabOrder(t,a)}),[]),O((0,s.useShallow)(e=>({layout:e.layout,isLoading:e.isLoading,error:e.error,isSplitting:e.isSplitting,paneCount:e.paneCount,canSplit:e.canSplit,splitPane:e.splitPane,closePane:e.closePane,focusPane:e.focusPane,updateRatio:e.updateRatio,moveTab:e.moveTab,createTabInPane:e.createTabInPane,deleteTabInPane:e.deleteTabInPane,restartTabInPane:e.restartTabInPane,switchTabInPane:e.switchTabInPane,renameTabInPane:e.renameTabInPane,reorderTabsInPane:e.reorderTabsInPane,removeTabLocally:e.removeTabLocally,equalizeRatios:e.equalizeRatios,updateDiffSettings:e.updateDiffSettings,updateTabPanelType:e.updateTabPanelType,clearLayout:e.clearLayout,fetchLayout:e.fetchLayout,focusTab:e.focusTab,focusPrevTab:e.focusPrevTab,focusNextTab:e.focusNextTab,focusTabByIndex:e.focusTabByIndex}))))},453783,e=>{"use strict";e.s(["default",()=>c]);var t=e.i(505888),a=e.i(335288),n=e.i(806185);let s=null,i=new Map,r=new Map,l=()=>{s&&clearTimeout(s),s=setTimeout(()=>{s=null;let{metadata:e}=o.getState(),t=a.useLayoutStore.getState().layout,i=a.useLayoutStore.getState().workspaceId;if(!t||!i)return;let r=`?workspace=${i}`;for(let a of(0,n.collectPanes)(t.root))for(let t of a.tabs){let n=e[t.id];if(!n)continue;let s={};void 0!==n.title&&n.title!==t.title&&(s.title=n.title),void 0!==n.cwd&&n.cwd!==t.cwd&&(s.cwd=n.cwd),void 0!==n.lastCommand&&(n.lastCommand??null)!==(t.lastCommand??null)&&(s.lastCommand=n.lastCommand??null),Object.keys(s).length>0&&fetch(`/api/layout/pane/${a.id}/tabs/${t.id}${r}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(s)}).catch(e=>{console.log(`[tab-metadata] sync failed: ${e instanceof Error?e.message:e}`)})}},100)},o=(0,t.create)(e=>({metadata:{},setTitle:(t,a)=>{e(e=>{let n=e.metadata[t];return n?.title===a?e:(i.set(t,Date.now()),{metadata:{...e.metadata,[t]:{...n,title:a}}})}),l()},setCwd:(t,a)=>{e(e=>{let n=e.metadata[t];return n?.cwd===a?e:(r.set(t,Date.now()),{metadata:{...e.metadata,[t]:{...n,cwd:a}}})}),l()},setLastCommand:(t,a)=>{e(e=>{let n=e.metadata[t];return n?.lastCommand===a?e:{metadata:{...e.metadata,[t]:{...n,lastCommand:a}}}}),l()},removeTab:t=>{e(e=>{let{[t]:a,...n}=e.metadata;return{metadata:n}}),l()},hydrate:t=>{e(e=>{let a={},n=Date.now();for(let[s,l]of Object.entries(t)){let t=e.metadata[s],o=n-(i.get(s)??0)<1e3,c=n-(r.get(s)??0)<1e3;a[s]={...l,...o&&t?.title!==void 0?{title:t.title}:{},...c&&t?.cwd!==void 0?{cwd:t.cwd}:{}}}return{metadata:a}})},retainOnly:t=>{e(e=>{let a={};for(let n of t)e.metadata[n]&&(a[n]=e.metadata[n]);return{metadata:a}})},reset:()=>{s&&clearTimeout(s),s=null,i.clear(),r.clear(),e({metadata:{}})}})),c=o},15623,e=>{"use strict";let t=(0,e.i(505888).create)(e=>({data:null,setData:t=>e({data:t})}));e.s(["default",0,t])},116962,e=>{"use strict";let t=(0,e.i(505888).create)(e=>({entries:[],syncFromServer:t=>e({entries:t}),upsertEntry:t=>e(e=>{let a=e.entries.findIndex(e=>e.id===t.id);if(a>=0){let n=[...e.entries];return n[a]=t,{entries:n}}return{entries:[t,...e.entries]}})}));e.s(["default",0,t])},237022,e=>{"use strict";var t=e.i(505888);let a={phase:"idle",status:null,branch:null,error:null,lastFetchedAt:null},n=e=>e?e.staged+e.modified+e.untracked:0,s=(0,t.create)((e,t)=>({cwdKey:null,tmuxSession:null,...a,requestSeq:0,resetForTarget:({cwdKey:t,tmuxSession:n})=>{e(e=>e.cwdKey===t?e.tmuxSession===n?e:{tmuxSession:n}:{...a,cwdKey:t,tmuxSession:n,requestSeq:e.requestSeq+1})},fetchForTarget:async({cwdKey:a,tmuxSession:n},s)=>{if(!a||!n)return void t().resetForTarget({cwdKey:null,tmuxSession:null});let i=t(),r=i.cwdKey!==a,l=null!==i.lastFetchedAt&&Date.now()-i.lastFetchedAt<15e3;if(!r&&!s?.force&&l&&"error"!==i.phase){i.tmuxSession!==n&&e({tmuxSession:n});return}let o=i.requestSeq+1;e({cwdKey:a,tmuxSession:n,phase:"loading",status:r?null:i.status,branch:r?null:i.branch,error:null,lastFetchedAt:null,requestSeq:o});try{let a=new URLSearchParams({tmuxSession:n});s?.force&&a.set("force","true");let i=await fetch(`/api/git/status?${a.toString()}`,{cache:"no-store"});if(!i.ok)throw Error(`status-${i.status}`);let r=await i.json();if(t().requestSeq!==o)return;if(!r.status)return void e({phase:"not-git",status:null,branch:null,error:null,lastFetchedAt:Date.now()});let l=null;try{let e=new URLSearchParams({tmuxSession:n});s?.force&&e.set("force","true");let t=await fetch(`/api/git/branch?${e.toString()}`,{cache:"no-store"});t.ok&&(l=(await t.json()).branch)}catch{l=null}if(t().requestSeq!==o)return;e({phase:"ready",status:r.status,branch:l,error:null,lastFetchedAt:Date.now()})}catch(a){if(t().requestSeq!==o)return;e({phase:"error",status:null,branch:null,error:a instanceof Error?a.message:String(a),lastFetchedAt:Date.now()})}}}));e.s(["default",0,s,"formatGitStatusSummary",0,(e,t,a,s)=>{if("idle"===e)return s;if("loading"===e)return"Checking Git status...";if("not-git"===e)return"Not a Git repository";if("error"===e)return"Git status unavailable";if(!a)return s;let i=n(a),r=[t??"Git",i>0?`${i} changed`:"clean"];return(a.insertions>0||a.deletions>0)&&r.push(`+${a.insertions} -${a.deletions}`),a.ahead>0&&r.push(`ahead ${a.ahead}`),a.behind>0&&r.push(`behind ${a.behind}`),a.stash>0&&r.push(`${a.stash} stash`),r.join(" · ")},"getGitStatusIndicators",0,e=>{if(!e)return[];let t=n(e),a=[];return t>0&&a.push({key:"changed",label:t>99?"99+":String(t),tone:"dirty"}),e.ahead>0&&a.push({key:"ahead",label:`↑${e.ahead}`,tone:"sync"}),e.behind>0&&a.push({key:"behind",label:`↓${e.behind}`,tone:"sync"}),e.stash>0&&a.push({key:"stash",label:`S${e.stash}`,tone:"stash"}),a}])},3450,251748,e=>{"use strict";var t=e.i(191788),a=e.i(399267),n=e.i(453783),s=e.i(15623),i=e.i(116962),r=e.i(237022),l=e.i(335288);let o=new Set(["zsh","bash","fish","sh","-zsh","-bash","-fish","-sh"]),c=new Set(["codex","Codex","node"]),d=e=>{if("~"===e||"/"===e)return e;let t=e.replace(/\/$/,"").split("/");return t[t.length-1]||e},u=e=>{let t=e.trim();if(!t)return null;let a=t.indexOf("|");return a>0?t.slice(0,a):null},p=(e,t)=>"codex-cli"===t&&c.has(e)?"Codex":e,f=(e,t)=>{let a=e.trim();if(!a)return"";let n=u(e);if(null!==n){let e=a.slice(a.indexOf("|")+1);return o.has(n)?d(e):p(n,t)}let s=a.match(/@[^:]+:\s*(.*)/);if(s)return d(s[1].trim());if(a.startsWith("/")||a.startsWith("~"))return d(a);let i=a.split(/\s+/)[0];return o.has(i)?"":p(i||"",t)};e.s(["formatTabTitle",0,f,"isShellProcess",0,e=>{let t=u(e);return null!==t&&o.has(t)},"parseCurrentCommand",0,u],251748);var b=e.i(806185);let m=null;e.s(["ackNotificationInput",0,(e,t)=>{m?.readyState===WebSocket.OPEN&&m.send(JSON.stringify({type:"status:ack-notification",tabId:e,seq:t}))},"default",0,()=>{let e=(0,t.useRef)(0),o=(0,t.useRef)(null),c=(0,t.useRef)(!0);(0,t.useEffect)(()=>{c.current=!0;let t=()=>{if(!c.current)return;let d="https:"===location.protocol?"wss:":"ws:",u=new WebSocket(`${d}//${location.host}/api/status`);m=u,u.onopen=()=>{c.current&&(e.current=0,a.default.getState().setStatusWsConnected(!0))},u.onmessage=e=>{if(c.current)try{let t=JSON.parse(e.data);switch(t.type){case"status:sync":for(let[e,s]of(a.default.getState().syncAllFromServer(t.tabs),Object.entries(t.tabs)))"agent-sessions"!==s.panelType&&s.paneTitle&&!n.default.getState().metadata[e]?.title&&n.default.getState().setTitle(e,f(s.paneTitle,s.panelType));break;case"status:update":a.default.getState().updateFromServer(t.tabId,{cliState:t.cliState,workspaceId:t.workspaceId,tabName:t.tabName,panelType:t.panelType,terminalStatus:t.terminalStatus,listeningPorts:t.listeningPorts,currentProcess:t.currentProcess,agentProviderId:t.agentProviderId,agentSessionId:t.agentSessionId,agentSummary:t.agentSummary,lastUserMessage:t.lastUserMessage,lastAssistantMessage:t.lastAssistantMessage,currentAction:t.currentAction,readyForReviewAt:t.readyForReviewAt,busySince:t.busySince,dismissedAt:t.dismissedAt,compactingSince:t.compactingSince,permissionRequest:t.permissionRequest,lastEvent:t.lastEvent,eventSeq:t.eventSeq}),t.paneTitle&&"agent-sessions"!==t.panelType&&n.default.getState().setTitle(t.tabId,f(t.paneTitle,t.panelType));break;case"status:hook-event":a.default.getState().applyHookEvent(t.tabId,t.event),((e,t)=>{if("stop"!==t.name)return;let a=r.default.getState();if(!a.cwdKey||!a.tmuxSession)return;let n=l.useLayoutStore.getState().layout;if(!n)return;let s=(0,b.collectAllTabs)(n.root).find(t=>t.id===e);s&&s.sessionName===a.tmuxSession&&a.fetchForTarget({cwdKey:a.cwdKey,tmuxSession:a.tmuxSession},{force:!0})})(t.tabId,t.event);break;case"rate-limits:update":s.default.getState().setData(t.data);break;case"session-history:sync":i.default.getState().syncFromServer(t.entries);break;case"session-history:update":i.default.getState().upsertEntry(t.entry)}}catch{}},u.onclose=()=>{if(!c.current)return;a.default.getState().setStatusWsConnected(!1),m=null;let n=Math.min(1e3*Math.pow(2,e.current),3e4);e.current++,o.current=setTimeout(t,n)},u.onerror=()=>{}};t();let d=()=>{if("visible"!==document.visibilityState)return;let a=m?.readyState;a!==WebSocket.OPEN&&a!==WebSocket.CONNECTING&&(o.current&&(clearTimeout(o.current),o.current=null),e.current=0,t())};return document.addEventListener("visibilitychange",d),()=>{c.current=!1,o.current&&(clearTimeout(o.current),o.current=null),m&&(m.close(),m=null),document.removeEventListener("visibilitychange",d)}},[])},"dismissTab",0,e=>{a.default.getState().dismissTab(e),m?.readyState===WebSocket.OPEN&&m.send(JSON.stringify({type:"status:tab-dismissed",tabId:e}))},"requestSync",0,()=>{m?.readyState===WebSocket.OPEN&&m.send(JSON.stringify({type:"status:request-sync"}))}],3450)},266231,e=>{"use strict";var t=e.i(191788);let a=768;e.s(["default",0,(e=a)=>{let n=`(max-width: ${e-1}px)`,s=(0,t.useCallback)(e=>{let t=window.matchMedia(n);return t.addEventListener("change",e),()=>t.removeEventListener("change",e)},[n]),i=(0,t.useCallback)(()=>window.matchMedia(n).matches,[n]),r=(0,t.useCallback)(()=>!1,[]);return(0,t.useSyncExternalStore)(s,i,r)}])}]);
@@ -1,16 +1,16 @@
1
1
  __turbopack_load_page_chunks__("/login", [
2
2
  "static/chunks/0amz67ga8kcr7.js",
3
3
  "static/chunks/0pojknlc_-2a2.js",
4
- "static/chunks/14_wa..vd6~2y.js",
4
+ "static/chunks/0984g4~der6-4.js",
5
5
  "static/chunks/0oh5xnzizgxt1.js",
6
6
  "static/chunks/0xa1.t1vj1mw0.js",
7
7
  "static/chunks/0jml98og5gb-~.js",
8
8
  "static/chunks/038s7u_er9zkt.js",
9
9
  "static/chunks/0f73mm-~6n8dq.js",
10
- "static/chunks/0ea-k_kbq5gi1.js",
10
+ "static/chunks/0n7jmg60eqx1a.js",
11
11
  "static/chunks/15aj3kd.p7zw6.js",
12
12
  "static/chunks/07yop4v9xcwb9.js",
13
- "static/chunks/00yfl7agnve...js",
13
+ "static/chunks/0wu-q.gmu-64d.js",
14
14
  "static/chunks/166~a4sl8v944.js",
15
- "static/chunks/turbopack-04t3309-jsj3y.js"
15
+ "static/chunks/turbopack-0~gn911-6yqk2.js"
16
16
  ])
@@ -4,21 +4,21 @@ __turbopack_load_page_chunks__("/webview", [
4
4
  "static/chunks/0pojknlc_-2a2.js",
5
5
  "static/chunks/0.znxwgo-re2m.js",
6
6
  "static/chunks/0x2nrv0y7ik9o.js",
7
- "static/chunks/00yfl7agnve...js",
8
- "static/chunks/00l132mp04ubq.js",
7
+ "static/chunks/0wu-q.gmu-64d.js",
8
+ "static/chunks/0xfp8sfehtui9.js",
9
9
  "static/chunks/0ddh4qmi2awdq.js",
10
10
  "static/chunks/01fkwofcdqa6f.js",
11
11
  "static/chunks/0lrjdru2bjp.x.js",
12
12
  "static/chunks/0szl_dovu0hgw.js",
13
13
  "static/chunks/0g3stahwz~vh..js",
14
- "static/chunks/0ea-k_kbq5gi1.js",
14
+ "static/chunks/0n7jmg60eqx1a.js",
15
15
  "static/chunks/15aj3kd.p7zw6.js",
16
- "static/chunks/14_wa..vd6~2y.js",
16
+ "static/chunks/0984g4~der6-4.js",
17
17
  "static/chunks/04kxxll_g8~ja.js",
18
18
  "static/chunks/051z~faikiw.t.js",
19
- "static/chunks/107yj1xx63glr.js",
19
+ "static/chunks/14vposxx99rq4.js",
20
20
  "static/chunks/0-wv6sqgkc5wn.js",
21
21
  "static/chunks/0t5w4x7owhfbe.js",
22
22
  "static/chunks/0~-0t4i~p3pcf.js",
23
- "static/chunks/turbopack-0-rpf9ad3km~v.js"
23
+ "static/chunks/turbopack-14fnzd5yh28gy.js"
24
24
  ])
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,207561,(e,o,a)=>{o.exports={editorUrlNotSet:"Editor no configurado. Abre Configuración > Editor.",editorRemoteNotSupported:"No es compatible con directorios remotos",openEditor:"Abrir editor",splitVertical:"Dividir verticalmente",splitVerticalShortcut:"Dividir verticalmente ({shortcut})",splitHorizontal:"Dividir horizontalmente",splitHorizontalShortcut:"Dividir horizontalmente ({shortcut})",equalSplit:"Igualar división",creatingConversation:"Creando nueva sesión...",resumingSession:"Reanudando sesión...",claudeBootMain:"Iniciando Claude...",claudeBootResuming:"Reanudando Claude...",claudeBootAlmostReady:"Casi listo...",claudeBootSubtitle:"Un momento",checkTerminal:"Comprueba el terminal",trustPromptTitle:"¿Confiar en esta carpeta?",trustPromptDescription:"{agentName} necesita tu permiso para leer, editar y ejecutar archivos en esta carpeta.",trustPromptYes:"Sí, confío en esta carpeta",trustPromptNo:"No, salir",resumeBlocked:"Hay otro proceso ejecutándose en el terminal",resumeBlockedProcess:"Proceso en ejecución: {name}",resumeFailed:"No se pudo reanudar la sesión",addFailed:"Error al añadir",removeFailed:"Error al eliminar",openNewTab:"Abrir nueva pestaña",newTabTooltip:"Abrir nueva pestaña ({shortcut})",claudeNewConversation:"Claude",claudeSessionList:"Sesiones de Claude",disconnectedSessionNotFound:"Sesión no encontrada",restartWithCommand:"Iniciar con este comando",or:"o",restartNewTerminal:"Iniciar nuevo terminal",interruptTitle:"Interrumpir",interruptDescription:"¿Interrumpir al agente? La tarea actual será cancelada.",interruptConfirm:"Interrumpir",connecting:"Conectando...",retryAction:"Reintentar",cannotSwitch:"No se puede cambiar",newWorkspace:"Nuevo espacio de trabajo",inputDisabledPlaceholder:"Claude Code no está en ejecución",inputPlaceholder:"Escribe un mensaje...",inputAriaLabel:"Entrada de mensaje de Claude Code",codexInputAriaLabel:"Codex message input",claudeConnecting:"Claude conectando...",interruptAriaLabel:"Interrumpir tarea",sendAriaLabel:"Enviar mensaje",attachAriaLabel:"Adjuntar imagen",attachmentLimitReached:"Máximo {max} adjuntos por mensaje",attachmentNotConfirmed:"No se pudo confirmar el adjunto de imagen",attachingImages:"Adjuntando {count} imagen(es)…",closeAllTabs:"Cerrar todas las pestañas",retryLoad:"Reintentar",sessions:"Sesiones",newConversation:"Nuevo chat",bypassSendFailed:"Error al enviar selección",bypassPermissions:"Omitir verificación de permisos",quickPrompts:"Prompts rápidos",switchToAgentMode:"¿Cambiar al modo {name}?",switchMode:"Cambiar",statusBusy:"Procesando,",statusNeedsInput:"Esperando entrada,",statusNeedsReview:"Necesita revisión,",sessionEnded:"Sesión finalizada.",startNewSession:"Iniciar nueva sesión",rename:"Renombrar",dragDropNotSupported:"Arrastrar y soltar no es compatible en navegadores web",fullPathPlaceholder:"Introduce la ruta completa (ej.: /Users/...)",closeTabLabel:"Cerrar pestaña",newTabLabel:"Nueva pestaña",sessionList:"Lista de sesiones",tabStatus:"Estado de la pestaña",messageHistory:"Historial de mensajes",installRunning:"Ejecutando...",installDone:"Completado",fallbackLayout:"Iniciando con diseño predeterminado",layoutFetchError:"No se pudo cargar el diseño",splitFailed:"No se pudo dividir el panel",tabCreateFailed:"No se pudo crear la pestaña",tabDeleteError:"Error al eliminar la pestaña",sessionRestartFailed:"No se pudo reiniciar la sesión",tabRenameFailed:"Error al renombrar la pestaña",tabReorderFailed:"Error al reordenar las pestañas",dragCopyHint:"Mantén Shift presionado y arrastra para copiar texto",copyPaneLabel:"Copiar salida del terminal",copyPaneDrawerTitle:"Copiar salida del terminal",copyPaneDrawerHint:"Mantén pulsado el texto para seleccionarlo o toca «Copiar todo» abajo.",copyPaneLoading:"Cargando...",copyPaneCaptureFailed:"No se pudo cargar la salida del terminal",copyPaneCopyAll:"Copiar todo",copyPaneSuccess:"Copiado al portapapeles",copyPaneCopyFailed:"Error al copiar",codexNotInstalled:"Install Codex CLI: npm i -g @openai/codex or brew install --cask codex",codexHookInstallFailed:"Codex hook installation failed. State detection may be inaccurate.",codexConfigParseFailed:"Failed to parse ~/.codex/config.toml. Only purplemux hooks applied.",codexLaunchFailed:"Codex launch failed. Check the terminal.",codexResumeFailed:"Codex resume failed.",codexApprovalSendFailed:"Failed to send approval response. Please try again.",codexApprovalNotApplied:"Response did not reach codex. Check your keymap.",codexApprovalGranted:"Permission granted",codexApprovalDenied:"Permission denied",codexPermissionTitle:"Permission requested",codexPermissionExecMessage:"Run the following command?",codexPermissionPatchMessage:"Apply the following file changes?",codexPermissionPermissionsMessage:"The following permissions are required",codexPermissionExecBadge:"Exec",codexPermissionPatchBadge:"Apply Patch",codexPermissionPermissionsBadge:"Permission",codexPermissionShowDetails:"Show details",codexPermissionHideDetails:"Hide details",codexPermissionYes:"Yes",codexPermissionNo:"No",codexPermissionSendingResponse:"Sending response…",codexPermissionFilesMore:"and {count} more",codexPermissionPatchOpModify:"modify",codexPermissionPatchOpCreate:"create",codexPermissionPatchOpDelete:"delete",codexPermissionCwd:"Working directory",codexPermissionEnv:"Environment variables",codexPermissionNoDetails:"Permission requested — no further details",codexCopyCommand:"Copy command",codexCopyConfigPath:"Copy config.toml path",codexCopied:"Copied",codexRetry:"Retry",codexBootMain:"Starting Codex...",codexBootAlmostReady:"Almost ready...",codexBootSubtitle:"Just a moment",codexBootFailed:"Codex failed to start",codexBootFailedHint:"Check the terminal for details",codexBootRestart:"Restart",codexBootShowTerminal:"Show terminal",codexNewConversation:"Codex",codexSessionList:"Codex Sessions",codexSessionsSheetSubtitle:"Codex sessions in this workspace",codexSessionsEmpty:"No Codex sessions in this workspace yet",codexSessionsLoadFailed:"Failed to load Codex sessions",codexSessionsTokens:"tokens",codexSessionsModelLabel:"Model",codexSessionsUnknownModel:"Unknown",codexInactiveMessage:"Codex session is not running",codexStartSession:"Start Codex",codexResumeLastSession:"Resume",codexLastSessionLabel:"Last session:",codexConnecting:"Codex connecting...",codexTimelinePlaceholder:"Timeline integration coming soon",switchAgentBlocked:"{name} is running. Exit with /quit or Ctrl+D in the terminal first",codexUpdateTitle:"Update Codex?",codexUpdateVersion:"{current} -> {latest}",codexUpdateDescription:"Codex needs a quick update before starting this session.",codexUpdateNow:"Update now",codexUpdateSkip:"Skip",codexUpdateSkipVersion:"Skip this version",codexUpdateRunning:"Updating Codex...",codexUpdateRunningHint:"This can take a few seconds. Codex will restart when the update finishes.",codexUpdateSuccess:"Update finished. Restarting Codex...",codexUpdateRestarting:"Restarting Codex"}}]);
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,698162,(e,o,t)=>{o.exports={editorUrlNotSet:"에디터가 설정되지 않았습니다. 설정 > 에디터에서 구성해주세요.",editorRemoteNotSupported:"원격 디렉터리는 지원되지 않습니다",openEditor:"에디터 열기",splitVertical:"수직 분할",splitVerticalShortcut:"수직 분할 ({shortcut})",splitHorizontal:"수평 분할",splitHorizontalShortcut:"수평 분할 ({shortcut})",equalSplit:"균등 분할",creatingConversation:"새 세션 생성 중...",resumingSession:"세션 재개 중...",claudeBootMain:"Claude 시작 중...",claudeBootResuming:"Claude 재개 중...",claudeBootAlmostReady:"거의 다 됐어요...",claudeBootSubtitle:"잠시만 기다려 주세요",checkTerminal:"터미널을 확인하세요",trustPromptTitle:"이 폴더를 신뢰하시겠습니까?",trustPromptDescription:"{agentName}가 이 폴더의 파일을 읽고, 수정하고, 실행하려면 권한이 필요합니다.",trustPromptYes:"예, 이 폴더를 신뢰합니다",trustPromptNo:"아니오, 종료",resumeBlocked:"터미널에서 다른 프로세스가 실행 중입니다",resumeBlockedProcess:"현재 실행 중인 프로세스: {name}",resumeFailed:"세션을 재개할 수 없습니다",addFailed:"추가 실패",removeFailed:"제거 실패",openNewTab:"새 탭 열기",newTabTooltip:"새 탭 열기 ({shortcut})",claudeNewConversation:"Claude",claudeSessionList:"Claude 세션 목록",disconnectedSessionNotFound:"세션을 찾을 수 없습니다",restartWithCommand:"이 커맨드로 시작",or:"또는",restartNewTerminal:"새 터미널로 시작",interruptTitle:"작업 중단",interruptDescription:"에이전트 작업을 중단하시겠습니까? 진행 중인 작업이 취소됩니다.",interruptConfirm:"중단",connecting:"연결 중...",retryAction:"재시도",cannotSwitch:"전환할 수 없습니다",newWorkspace:"새 Workspace 만들기",inputDisabledPlaceholder:"Claude Code가 실행 중이 아닙니다",inputPlaceholder:"메시지를 입력하세요...",inputAriaLabel:"Claude Code 메시지 입력",codexInputAriaLabel:"Codex 메시지 입력",claudeConnecting:"Claude 연결 중...",interruptAriaLabel:"작업 중단",sendAriaLabel:"메시지 전송",attachAriaLabel:"이미지 첨부",attachmentLimitReached:"메시지 당 최대 {max}장까지 첨부할 수 있습니다",attachmentNotConfirmed:"이미지 첨부를 확인하지 못했습니다",attachingImages:"이미지 {count}장 첨부 중…",closeAllTabs:"탭 모두 닫기",retryLoad:"다시 시도",sessions:"세션",newConversation:"새 대화",bypassSendFailed:"선택 전송에 실패했습니다",bypassPermissions:"Bypass Permissions 확인",quickPrompts:"빠른 프롬프트",switchToAgentMode:"{name} 모드로 전환할까요?",switchMode:"전환",statusBusy:"처리 중,",statusNeedsInput:"입력 대기,",statusNeedsReview:"확인 필요,",sessionEnded:"세션이 종료되었습니다.",startNewSession:"새 세션 시작",rename:"이름 변경",dragDropNotSupported:"웹에서는 파일 드래그앤드롭을 지원하지 않습니다",fullPathPlaceholder:"전체 경로를 입력하세요 (예: /Users/...)",closeTabLabel:"탭 닫기",newTabLabel:"새 탭",sessionList:"세션 목록",tabStatus:"탭 상태",messageHistory:"메시지 히스토리",installRunning:"실행 중...",installDone:"완료",fallbackLayout:"기본 레이아웃으로 시작합니다",layoutFetchError:"레이아웃을 불러올 수 없습니다",splitFailed:"분할할 수 없습니다",tabCreateFailed:"탭을 생성할 수 없습니다",tabDeleteError:"탭 삭제 중 오류가 발생했습니다",sessionRestartFailed:"세션을 재시작할 수 없습니다",tabRenameFailed:"탭 이름 변경에 실패했습니다",tabReorderFailed:"탭 순서 변경에 실패했습니다",dragCopyHint:"텍스트를 복사하려면 Shift를 누른 채 드래그하세요",copyPaneLabel:"터미널 내용 복사",copyPaneDrawerTitle:"터미널 내용 복사",copyPaneDrawerHint:"텍스트를 길게 눌러 선택하거나 아래 '전체 복사'를 누르세요.",copyPaneLoading:"불러오는 중...",copyPaneCaptureFailed:"터미널 내용을 불러올 수 없습니다",copyPaneCopyAll:"전체 복사",copyPaneSuccess:"클립보드에 복사되었습니다",copyPaneCopyFailed:"복사에 실패했습니다",codexNotInstalled:"Codex CLI를 설치하려면: npm i -g @openai/codex 또는 brew install --cask codex",codexHookInstallFailed:"Codex hook 설치 실패. codex 상태가 정확하지 않을 수 있습니다.",codexConfigParseFailed:"~/.codex/config.toml 파싱 실패. purplemux hook만 적용됩니다.",codexLaunchFailed:"Codex 실행 실패. 터미널을 확인해 주세요.",codexResumeFailed:"Codex 세션 재개 실패.",codexApprovalSendFailed:"권한 응답 전송 실패. 다시 시도해 주세요.",codexApprovalNotApplied:"응답이 codex에 닿지 않았습니다. keymap을 확인하세요.",codexApprovalGranted:"권한 부여됨",codexApprovalDenied:"권한 거부됨",codexPermissionTitle:"권한 요청",codexPermissionExecMessage:"다음 명령을 실행할까요?",codexPermissionPatchMessage:"다음 파일 변경을 허용할까요?",codexPermissionPermissionsMessage:"다음 권한이 필요합니다",codexPermissionExecBadge:"Exec",codexPermissionPatchBadge:"Apply Patch",codexPermissionPermissionsBadge:"Permission",codexPermissionShowDetails:"자세히 보기",codexPermissionHideDetails:"접기",codexPermissionYes:"Yes",codexPermissionNo:"No",codexPermissionSendingResponse:"응답 전송 중...",codexPermissionFilesMore:"외 {count}개",codexPermissionPatchOpModify:"수정",codexPermissionPatchOpCreate:"생성",codexPermissionPatchOpDelete:"삭제",codexPermissionCwd:"작업 디렉터리",codexPermissionEnv:"환경 변수",codexPermissionNoDetails:"권한 요청 — 자세한 정보 없음",codexCopyCommand:"명령어 복사",codexCopyConfigPath:"config.toml 경로 복사",codexCopied:"복사됨",codexRetry:"재시도",codexBootMain:"Codex 시작 중...",codexBootAlmostReady:"거의 다 됐어요...",codexBootSubtitle:"잠시만 기다려 주세요",codexBootFailed:"Codex 시작에 실패했습니다",codexBootFailedHint:"터미널에서 직접 확인해 보세요",codexBootRestart:"다시 시작",codexBootShowTerminal:"터미널 보기",codexNewConversation:"Codex",codexSessionList:"Codex 세션 목록",codexSessionsSheetSubtitle:"현재 워크스페이스의 Codex 세션",codexSessionsEmpty:"이 워크스페이스에 Codex 세션이 없습니다",codexSessionsLoadFailed:"Codex 세션 목록을 불러오지 못했습니다",codexSessionsTokens:"tokens",codexSessionsModelLabel:"모델",codexSessionsUnknownModel:"알 수 없음",codexInactiveMessage:"Codex 세션이 시작되지 않았습니다",codexStartSession:"Codex 시작",codexResumeLastSession:"이어서 시작",codexLastSessionLabel:"마지막 사용 세션:",codexConnecting:"Codex 연결 중...",codexTimelinePlaceholder:"타임라인 통합 준비 중",switchAgentBlocked:"{name}이(가) 실행 중입니다. 터미널에서 /quit 또는 Ctrl+D로 종료 후 다시 시도하세요",codexUpdateTitle:"Codex를 업데이트할까요?",codexUpdateVersion:"{current} -> {latest}",codexUpdateDescription:"세션을 시작하기 전에 Codex 업데이트가 필요합니다.",codexUpdateNow:"지금 업데이트",codexUpdateSkip:"건너뛰기",codexUpdateSkipVersion:"이 버전 건너뛰기",codexUpdateRunning:"Codex 업데이트 중...",codexUpdateRunningHint:"잠시 걸릴 수 있습니다. 업데이트가 끝나면 Codex를 다시 시작합니다.",codexUpdateSuccess:"업데이트가 완료되었습니다. Codex를 다시 시작합니다...",codexUpdateRestarting:"Codex 다시 시작 중"}}]);
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,423482,(e,o,s)=>{o.exports={editorUrlNotSet:"L'éditeur n'est pas configuré. Ouvrez Paramètres > Éditeur.",editorRemoteNotSupported:"Non pris en charge pour les répertoires distants",openEditor:"Ouvrir l'éditeur",splitVertical:"Diviser verticalement",splitVerticalShortcut:"Diviser verticalement ({shortcut})",splitHorizontal:"Diviser horizontalement",splitHorizontalShortcut:"Diviser horizontalement ({shortcut})",equalSplit:"Égaliser les divisions",creatingConversation:"Création d'une nouvelle session...",resumingSession:"Reprise de la session...",claudeBootMain:"Démarrage de Claude...",claudeBootResuming:"Reprise de Claude...",claudeBootAlmostReady:"Presque prêt...",claudeBootSubtitle:"Un instant",checkTerminal:"Vérifiez le terminal",trustPromptTitle:"Faire confiance à ce dossier ?",trustPromptDescription:"{agentName} a besoin de votre permission pour lire, modifier et exécuter des fichiers dans ce dossier.",trustPromptYes:"Oui, je fais confiance à ce dossier",trustPromptNo:"Non, quitter",resumeBlocked:"Un autre processus est en cours dans le terminal",resumeBlockedProcess:"Processus en cours : {name}",resumeFailed:"Impossible de reprendre la session",addFailed:"Échec de l'ajout",removeFailed:"Échec de la suppression",openNewTab:"Ouvrir un nouvel onglet",newTabTooltip:"Ouvrir un nouvel onglet ({shortcut})",claudeNewConversation:"Claude",claudeSessionList:"Sessions Claude",disconnectedSessionNotFound:"Session introuvable",restartWithCommand:"Démarrer avec cette commande",or:"ou",restartNewTerminal:"Démarrer un nouveau terminal",interruptTitle:"Interrompre",interruptDescription:"Interrompre l'agent ? La tâche en cours sera annulée.",interruptConfirm:"Interrompre",connecting:"Connexion en cours...",retryAction:"Réessayer",cannotSwitch:"Impossible de changer",newWorkspace:"Nouvel espace de travail",inputDisabledPlaceholder:"Claude Code n'est pas en cours d'exécution",inputPlaceholder:"Saisissez un message...",inputAriaLabel:"Champ de saisie Claude Code",codexInputAriaLabel:"Codex message input",claudeConnecting:"Claude se connecte...",interruptAriaLabel:"Interrompre la tâche",sendAriaLabel:"Envoyer le message",attachAriaLabel:"Joindre une image",attachmentLimitReached:"Maximum {max} pièces jointes par message",attachmentNotConfirmed:"Impossible de confirmer la pièce jointe",attachingImages:"Joindre {count} image(s)…",closeAllTabs:"Fermer tous les onglets",retryLoad:"Réessayer",sessions:"Sessions",newConversation:"Nouvelle conversation",bypassSendFailed:"Échec de l'envoi de la sélection",bypassPermissions:"Ignorer la vérification des permissions",quickPrompts:"Prompts rapides",switchToAgentMode:"Passer en mode {name} ?",switchMode:"Changer",statusBusy:"En traitement,",statusNeedsInput:"En attente de saisie,",statusNeedsReview:"À vérifier,",sessionEnded:"Session terminée.",startNewSession:"Démarrer une nouvelle session",rename:"Renommer",dragDropNotSupported:"Le glisser-déposer n'est pas pris en charge dans les navigateurs web",fullPathPlaceholder:"Saisissez le chemin complet (ex. /Users/...)",closeTabLabel:"Fermer l'onglet",newTabLabel:"Nouvel onglet",sessionList:"Liste des sessions",tabStatus:"État de l'onglet",messageHistory:"Historique des messages",installRunning:"Exécution...",installDone:"Terminé",fallbackLayout:"Démarrage avec la disposition par défaut",layoutFetchError:"Impossible de charger la disposition",splitFailed:"Impossible de diviser le panneau",tabCreateFailed:"Impossible de créer l'onglet",tabDeleteError:"Erreur lors de la suppression de l'onglet",sessionRestartFailed:"Impossible de redémarrer la session",tabRenameFailed:"Échec du renommage de l'onglet",tabReorderFailed:"Échec de la réorganisation des onglets",dragCopyHint:"Maintenez Shift et glissez pour copier le texte",copyPaneLabel:"Copier la sortie du terminal",copyPaneDrawerTitle:"Copier la sortie du terminal",copyPaneDrawerHint:"Appuyez longuement sur le texte pour le sélectionner ou touchez « Tout copier » ci-dessous.",copyPaneLoading:"Chargement...",copyPaneCaptureFailed:"Impossible de charger la sortie du terminal",copyPaneCopyAll:"Tout copier",copyPaneSuccess:"Copié dans le presse-papiers",copyPaneCopyFailed:"Échec de la copie",codexNotInstalled:"Install Codex CLI: npm i -g @openai/codex or brew install --cask codex",codexHookInstallFailed:"Codex hook installation failed. State detection may be inaccurate.",codexConfigParseFailed:"Failed to parse ~/.codex/config.toml. Only purplemux hooks applied.",codexLaunchFailed:"Codex launch failed. Check the terminal.",codexResumeFailed:"Codex resume failed.",codexApprovalSendFailed:"Failed to send approval response. Please try again.",codexApprovalNotApplied:"Response did not reach codex. Check your keymap.",codexApprovalGranted:"Permission granted",codexApprovalDenied:"Permission denied",codexPermissionTitle:"Permission requested",codexPermissionExecMessage:"Run the following command?",codexPermissionPatchMessage:"Apply the following file changes?",codexPermissionPermissionsMessage:"The following permissions are required",codexPermissionExecBadge:"Exec",codexPermissionPatchBadge:"Apply Patch",codexPermissionPermissionsBadge:"Permission",codexPermissionShowDetails:"Show details",codexPermissionHideDetails:"Hide details",codexPermissionYes:"Yes",codexPermissionNo:"No",codexPermissionSendingResponse:"Sending response…",codexPermissionFilesMore:"and {count} more",codexPermissionPatchOpModify:"modify",codexPermissionPatchOpCreate:"create",codexPermissionPatchOpDelete:"delete",codexPermissionCwd:"Working directory",codexPermissionEnv:"Environment variables",codexPermissionNoDetails:"Permission requested — no further details",codexCopyCommand:"Copy command",codexCopyConfigPath:"Copy config.toml path",codexCopied:"Copied",codexRetry:"Retry",codexBootMain:"Starting Codex...",codexBootAlmostReady:"Almost ready...",codexBootSubtitle:"Just a moment",codexBootFailed:"Codex failed to start",codexBootFailedHint:"Check the terminal for details",codexBootRestart:"Restart",codexBootShowTerminal:"Show terminal",codexNewConversation:"Codex",codexSessionList:"Codex Sessions",codexSessionsSheetSubtitle:"Codex sessions in this workspace",codexSessionsEmpty:"No Codex sessions in this workspace yet",codexSessionsLoadFailed:"Failed to load Codex sessions",codexSessionsTokens:"tokens",codexSessionsModelLabel:"Model",codexSessionsUnknownModel:"Unknown",codexInactiveMessage:"Codex session is not running",codexStartSession:"Start Codex",codexResumeLastSession:"Resume",codexLastSessionLabel:"Last session:",codexConnecting:"Codex connecting...",codexTimelinePlaceholder:"Timeline integration coming soon",switchAgentBlocked:"{name} is running. Exit with /quit or Ctrl+D in the terminal first",codexUpdateTitle:"Update Codex?",codexUpdateVersion:"{current} -> {latest}",codexUpdateDescription:"Codex needs a quick update before starting this session.",codexUpdateNow:"Update now",codexUpdateSkip:"Skip",codexUpdateSkipVersion:"Skip this version",codexUpdateRunning:"Updating Codex...",codexUpdateRunningHint:"This can take a few seconds. Codex will restart when the update finishes.",codexUpdateSuccess:"Update finished. Restarting Codex...",codexUpdateRestarting:"Restarting Codex"}}]);