purplemux 0.1.14 → 0.1.15

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 (157) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/build-manifest.json +32 -32
  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 +20 -14
  6. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0x_8._i._.js +3 -0
  7. package/.next/standalone/.next/server/chunks/ssr/_0-xx2s1._.js +1 -1
  8. package/.next/standalone/.next/server/chunks/ssr/_066q1le._.js +7 -0
  9. package/.next/standalone/.next/server/chunks/ssr/_0camkxl._.js +1 -1
  10. package/.next/standalone/.next/server/chunks/ssr/_0d3u7pr._.js +3 -0
  11. package/.next/standalone/.next/server/chunks/ssr/_0i209pm._.js +1 -1
  12. package/.next/standalone/.next/server/chunks/ssr/_0o1taa_._.js +7 -0
  13. package/.next/standalone/.next/server/chunks/ssr/_0sfa_96._.js +1 -1
  14. package/.next/standalone/.next/server/chunks/ssr/_12uekiq._.js +1 -1
  15. package/.next/standalone/.next/server/chunks/ssr/messages_de_terminal_json_[json]_cjs_05jirtw._.js +1 -1
  16. package/.next/standalone/.next/server/chunks/ssr/messages_en_terminal_json_[json]_cjs_0~ls3g-._.js +1 -1
  17. package/.next/standalone/.next/server/chunks/ssr/messages_es_terminal_json_[json]_cjs_04g2b1_._.js +1 -1
  18. package/.next/standalone/.next/server/chunks/ssr/messages_fr_terminal_json_[json]_cjs_0uhakya._.js +1 -1
  19. package/.next/standalone/.next/server/chunks/ssr/messages_ja_terminal_json_[json]_cjs_0776z4f._.js +1 -1
  20. package/.next/standalone/.next/server/chunks/ssr/messages_ko_terminal_json_[json]_cjs_06611.3._.js +1 -1
  21. package/.next/standalone/.next/server/chunks/ssr/messages_pt-BR_terminal_json_[json]_cjs_034yyg9._.js +1 -1
  22. package/.next/standalone/.next/server/chunks/ssr/messages_ru_terminal_json_[json]_cjs_0emk8~n._.js +1 -1
  23. package/.next/standalone/.next/server/chunks/ssr/messages_tr_terminal_json_[json]_cjs_0xpix8g._.js +1 -1
  24. package/.next/standalone/.next/server/chunks/ssr/messages_zh-CN_terminal_json_[json]_cjs_12vwl8a._.js +1 -1
  25. package/.next/standalone/.next/server/chunks/ssr/messages_zh-TW_terminal_json_[json]_cjs_0spg5z5._.js +1 -1
  26. package/.next/standalone/.next/server/chunks/ssr/src_components_features_mobile_mobile-terminal-page_tsx_02chzch._.js +1 -1
  27. package/.next/standalone/.next/server/middleware-build-manifest.js +32 -32
  28. package/.next/standalone/.next/server/pages/_app/build-manifest.json +4 -4
  29. package/.next/standalone/.next/server/pages/_app/client-build-manifest.json +1 -1
  30. package/.next/standalone/.next/server/pages/agents/[agentId]/chat/build-manifest.json +3 -3
  31. package/.next/standalone/.next/server/pages/agents/[agentId]/chat/client-build-manifest.json +1 -1
  32. package/.next/standalone/.next/server/pages/agents/[agentId]/memory/build-manifest.json +3 -3
  33. package/.next/standalone/.next/server/pages/agents/[agentId]/memory/client-build-manifest.json +1 -1
  34. package/.next/standalone/.next/server/pages/agents/[agentId]/workspace/build-manifest.json +3 -3
  35. package/.next/standalone/.next/server/pages/agents/[agentId]/workspace/client-build-manifest.json +1 -1
  36. package/.next/standalone/.next/server/pages/agents/build-manifest.json +3 -3
  37. package/.next/standalone/.next/server/pages/agents/client-build-manifest.json +1 -1
  38. package/.next/standalone/.next/server/pages/api/tmux/capture/pages-manifest.json +3 -0
  39. package/.next/standalone/.next/server/pages/api/tmux/capture.js +5 -0
  40. package/.next/standalone/.next/server/pages/api/tmux/capture.js.map +5 -0
  41. package/.next/standalone/.next/server/pages/api/tmux/capture.js.nft.json +1 -0
  42. package/.next/standalone/.next/server/pages/de/404.html +1 -1
  43. package/.next/standalone/.next/server/pages/de/500.html +1 -1
  44. package/.next/standalone/.next/server/pages/en/404.html +1 -1
  45. package/.next/standalone/.next/server/pages/en/500.html +1 -1
  46. package/.next/standalone/.next/server/pages/es/404.html +1 -1
  47. package/.next/standalone/.next/server/pages/es/500.html +1 -1
  48. package/.next/standalone/.next/server/pages/fr/404.html +1 -1
  49. package/.next/standalone/.next/server/pages/fr/500.html +1 -1
  50. package/.next/standalone/.next/server/pages/index/build-manifest.json +4 -4
  51. package/.next/standalone/.next/server/pages/index/client-build-manifest.json +1 -1
  52. package/.next/standalone/.next/server/pages/index/react-loadable-manifest.json +4 -4
  53. package/.next/standalone/.next/server/pages/index.js.nft.json +1 -1
  54. package/.next/standalone/.next/server/pages/ja/404.html +1 -1
  55. package/.next/standalone/.next/server/pages/ja/500.html +1 -1
  56. package/.next/standalone/.next/server/pages/ko/404.html +1 -1
  57. package/.next/standalone/.next/server/pages/ko/500.html +1 -1
  58. package/.next/standalone/.next/server/pages/pt-BR/404.html +1 -1
  59. package/.next/standalone/.next/server/pages/pt-BR/500.html +1 -1
  60. package/.next/standalone/.next/server/pages/reports/build-manifest.json +3 -3
  61. package/.next/standalone/.next/server/pages/reports/client-build-manifest.json +1 -1
  62. package/.next/standalone/.next/server/pages/ru/404.html +1 -1
  63. package/.next/standalone/.next/server/pages/ru/500.html +1 -1
  64. package/.next/standalone/.next/server/pages/stats/build-manifest.json +3 -3
  65. package/.next/standalone/.next/server/pages/stats/client-build-manifest.json +1 -1
  66. package/.next/standalone/.next/server/pages/tr/404.html +1 -1
  67. package/.next/standalone/.next/server/pages/tr/500.html +1 -1
  68. package/.next/standalone/.next/server/pages/webview/build-manifest.json +3 -3
  69. package/.next/standalone/.next/server/pages/webview/client-build-manifest.json +1 -1
  70. package/.next/standalone/.next/server/pages/zh-CN/404.html +1 -1
  71. package/.next/standalone/.next/server/pages/zh-CN/500.html +1 -1
  72. package/.next/standalone/.next/server/pages/zh-TW/404.html +1 -1
  73. package/.next/standalone/.next/server/pages/zh-TW/500.html +1 -1
  74. package/.next/standalone/.next/server/pages-manifest.json +1 -0
  75. package/.next/standalone/.next/static/chunks/{0zbiq5qe~ekdz.js → 0.4ewrx8k_5gf.js} +1 -1
  76. package/.next/standalone/.next/static/chunks/02ircyk~cxhbg.css +1 -0
  77. package/.next/standalone/.next/static/chunks/{02hya8y6ngh8h.js → 02q9pu6q7.l~3.js} +1 -1
  78. package/.next/standalone/.next/static/chunks/033x_thm.-e7u.js +1 -0
  79. package/.next/standalone/.next/static/chunks/0401hdgf~vj4v.js +1 -0
  80. package/.next/standalone/.next/static/chunks/{0zwzi3f2rc3z4.js → 0494~hfmvcw6x.js} +3 -3
  81. package/.next/standalone/.next/static/chunks/04_yg9ypn8qiz.js +1 -0
  82. package/.next/standalone/.next/static/chunks/{00ll0wq7g5_ab.js → 06knp51736qfi.js} +4 -4
  83. package/.next/standalone/.next/static/chunks/06mr49_fnc8az.js +5 -0
  84. package/.next/standalone/.next/static/chunks/{01u8i_srzu1bi.js → 09-ehcnnfxygo.js} +1 -1
  85. package/.next/standalone/.next/static/chunks/0acaolvighqxm.js +1 -0
  86. package/.next/standalone/.next/static/chunks/{072lr.h0_1017.js → 0fzmaz0.l4qxg.js} +4 -4
  87. package/.next/standalone/.next/static/chunks/{0cc9wtn2ws_hj.js → 0g8xn.nirfxg4.js} +1 -1
  88. package/.next/standalone/.next/static/chunks/{09v9onq32.q9o.js → 0h3dvtmd39eh~.js} +3 -3
  89. package/.next/standalone/.next/static/chunks/0iz3ffk6bm~6z.js +1 -0
  90. package/.next/standalone/.next/static/chunks/0jkyto637lhqd.js +1 -0
  91. package/.next/standalone/.next/static/chunks/0jpvbtekyubts.js +1 -0
  92. package/.next/standalone/.next/static/chunks/0ki_toswb6bjm.js +1 -0
  93. package/.next/standalone/.next/static/chunks/{09auw~hymill5.js → 0m.akrpaw1ti..js} +3 -3
  94. package/.next/standalone/.next/static/chunks/{10q_80uhujl-n.js → 0olgy7u1zmj3g.js} +3 -3
  95. package/.next/standalone/.next/static/chunks/0so.kz5bwwczu.js +5 -0
  96. package/.next/standalone/.next/static/chunks/0so7joqaux87c.js +1 -0
  97. package/.next/standalone/.next/static/chunks/0tn0snc61desh.js +1 -0
  98. package/.next/standalone/.next/static/chunks/{14rag.6lha5-y.js → 0ui.jv~7_ujbr.js} +3 -3
  99. package/.next/standalone/.next/static/chunks/10pjtfb1e4_fn.js +1 -0
  100. package/.next/standalone/.next/static/chunks/11267j.1xw4gl.js +1 -0
  101. package/.next/standalone/.next/static/chunks/12.uhnc724hct.js +1 -0
  102. package/.next/standalone/.next/static/chunks/{0epyfzijr8853.js → 1549e5e_l87_1.js} +1 -1
  103. package/.next/standalone/.next/static/chunks/{0y.2idt4jy0v8.js → 16eopcvsxx.by.js} +3 -3
  104. package/.next/standalone/.next/static/chunks/16gj3fltlcl9b.js +1 -0
  105. package/.next/standalone/.next/static/chunks/{019qnp3cdlqll.js → 16gzm3gt9by~l.js} +3 -3
  106. package/.next/standalone/.next/static/chunks/16l~ncr0z2zwu.js +1 -0
  107. package/.next/standalone/.next/static/chunks/17tl405a7vewu.js +1 -0
  108. package/.next/standalone/.next/static/chunks/{turbopack-0sqhowkqu.h25.js → turbopack-01kk_951fss42.js} +1 -1
  109. package/.next/standalone/.next/static/chunks/{turbopack-11briqm29_e1a.js → turbopack-0c6yh4-uhi.7m.js} +1 -1
  110. package/.next/standalone/.next/static/chunks/{turbopack-0um3302fiwl.8.js → turbopack-0e6yrf8bpjzaf.js} +1 -1
  111. package/.next/standalone/.next/static/chunks/turbopack-0n1zyq2ca.uwm.js +1 -0
  112. package/.next/standalone/.next/static/chunks/{turbopack-0v.9~z92dgw~6.js → turbopack-0okc-y2oz7i70.js} +1 -1
  113. package/.next/standalone/.next/static/chunks/{turbopack-0l-gurbj0.orc.js → turbopack-0vqv5ngoud_07.js} +1 -1
  114. package/.next/standalone/.next/static/chunks/{turbopack-14zdukk1meg5n.js → turbopack-11-ah8-rp_2~x.js} +1 -1
  115. package/.next/standalone/.next/static/chunks/{turbopack-03wgtzkruqo9d.js → turbopack-135~24zf~d~qo.js} +1 -1
  116. package/.next/standalone/.next/static/chunks/{turbopack-0wzedz_6usy8n.js → turbopack-13l.u~rnqg8t-.js} +1 -1
  117. package/.next/standalone/.next/static/{mG4eqGEgMBuU5tAi2sxtl → n6W5_byTPdXhdLI4PJaMr}/_buildManifest.js +9 -8
  118. package/.next/standalone/messages/de/terminal.json +10 -1
  119. package/.next/standalone/messages/en/terminal.json +10 -1
  120. package/.next/standalone/messages/es/terminal.json +10 -1
  121. package/.next/standalone/messages/fr/terminal.json +10 -1
  122. package/.next/standalone/messages/ja/terminal.json +10 -1
  123. package/.next/standalone/messages/ko/terminal.json +10 -1
  124. package/.next/standalone/messages/pt-BR/terminal.json +10 -1
  125. package/.next/standalone/messages/ru/terminal.json +10 -1
  126. package/.next/standalone/messages/tr/terminal.json +10 -1
  127. package/.next/standalone/messages/zh-CN/terminal.json +10 -1
  128. package/.next/standalone/messages/zh-TW/terminal.json +10 -1
  129. package/.next/standalone/package.json +2 -2
  130. package/.next/standalone/server.js +1 -1
  131. package/dist/server.js +2 -2
  132. package/package.json +2 -2
  133. package/.next/standalone/.next/server/chunks/ssr/_02xys-k._.js +0 -7
  134. package/.next/standalone/.next/server/chunks/ssr/_0r8i4sz._.js +0 -3
  135. package/.next/standalone/.next/server/chunks/ssr/_12sjhza._.js +0 -7
  136. package/.next/standalone/.next/static/chunks/0-sg4kua_koj3.js +0 -1
  137. package/.next/standalone/.next/static/chunks/01_k6x8wlb8-9.js +0 -1
  138. package/.next/standalone/.next/static/chunks/02qyd-w_8qzow.js +0 -1
  139. package/.next/standalone/.next/static/chunks/05r1jaq5c83x4.js +0 -1
  140. package/.next/standalone/.next/static/chunks/0_vi4_~nojpg6.js +0 -1
  141. package/.next/standalone/.next/static/chunks/0c6dh~_8nm8rw.js +0 -1
  142. package/.next/standalone/.next/static/chunks/0dz5dqn26cusn.js +0 -1
  143. package/.next/standalone/.next/static/chunks/0g7dnwyslqeva.css +0 -1
  144. package/.next/standalone/.next/static/chunks/0igc5x66mp3y1.js +0 -1
  145. package/.next/standalone/.next/static/chunks/0rm79dcgdvabz.js +0 -1
  146. package/.next/standalone/.next/static/chunks/0uc3c0x4yp~g_.js +0 -1
  147. package/.next/standalone/.next/static/chunks/0vjl9v9ti52-t.js +0 -1
  148. package/.next/standalone/.next/static/chunks/0ygr.-bo5mo3a.js +0 -1
  149. package/.next/standalone/.next/static/chunks/0yoqx-p57vv4h.js +0 -1
  150. package/.next/standalone/.next/static/chunks/0zd2r1o1p44g-.js +0 -1
  151. package/.next/standalone/.next/static/chunks/0z~upx8kxb56s.js +0 -1
  152. package/.next/standalone/.next/static/chunks/11bhs_nxim363.js +0 -5
  153. package/.next/standalone/.next/static/chunks/12r4bxpyxo0h-.js +0 -5
  154. package/.next/standalone/.next/static/chunks/140fifc12jmjv.js +0 -1
  155. package/.next/standalone/.next/static/chunks/turbopack-091shq5m7aijg.js +0 -1
  156. /package/.next/standalone/.next/static/{mG4eqGEgMBuU5tAi2sxtl → n6W5_byTPdXhdLI4PJaMr}/_clientMiddlewareManifest.js +0 -0
  157. /package/.next/standalone/.next/static/{mG4eqGEgMBuU5tAi2sxtl → n6W5_byTPdXhdLI4PJaMr}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- mG4eqGEgMBuU5tAi2sxtl
1
+ n6W5_byTPdXhdLI4PJaMr
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "pages": {
3
3
  "/": [
4
- "static/chunks/0epyfzijr8853.js",
4
+ "static/chunks/1549e5e_l87_1.js",
5
5
  "static/chunks/0y1iobvr7xv~m.js",
6
6
  "static/chunks/06wc2umsaus4g.js",
7
- "static/chunks/01u8i_srzu1bi.js",
7
+ "static/chunks/09-ehcnnfxygo.js",
8
8
  "static/chunks/0qe146f.3s0ud.js",
9
9
  "static/chunks/12t3ws50siqw1.js",
10
10
  "static/chunks/0-sxrfxgcu1ce.js",
@@ -18,20 +18,20 @@
18
18
  "static/chunks/02lycfk~b_9ps.js",
19
19
  "static/chunks/0ti3g2b7fhm5v.js",
20
20
  "static/chunks/05-mpg38w0a82.js",
21
- "static/chunks/0dz5dqn26cusn.js",
22
- "static/chunks/turbopack-091shq5m7aijg.js"
21
+ "static/chunks/033x_thm.-e7u.js",
22
+ "static/chunks/turbopack-0vqv5ngoud_07.js"
23
23
  ],
24
24
  "/_app": [
25
- "static/chunks/02hya8y6ngh8h.js",
25
+ "static/chunks/02q9pu6q7.l~3.js",
26
26
  "static/chunks/08h59hstdxbn0.js",
27
27
  "static/chunks/00x-ygjkfbgnz.js",
28
28
  "static/chunks/00yfl7agnve...js",
29
29
  "static/chunks/0yi.kp2rt4-nc.js",
30
- "static/chunks/0cc9wtn2ws_hj.js",
30
+ "static/chunks/0g8xn.nirfxg4.js",
31
31
  "static/chunks/05-mpg38w0a82.js",
32
- "static/chunks/0g7dnwyslqeva.css",
32
+ "static/chunks/02ircyk~cxhbg.css",
33
33
  "static/chunks/0z3gpm0o.mwwy.css",
34
- "static/chunks/turbopack-0wzedz_6usy8n.js"
34
+ "static/chunks/turbopack-13l.u~rnqg8t-.js"
35
35
  ],
36
36
  "/_error": [
37
37
  "static/chunks/0~o730huopa91.js",
@@ -48,21 +48,21 @@
48
48
  "static/chunks/0ti3g2b7fhm5v.js",
49
49
  "static/chunks/0-sxrfxgcu1ce.js",
50
50
  "static/chunks/06fd4gm.ayhf7.js",
51
- "static/chunks/0zbiq5qe~ekdz.js",
51
+ "static/chunks/0.4ewrx8k_5gf.js",
52
52
  "static/chunks/02lycfk~b_9ps.js",
53
53
  "static/chunks/0yi.kp2rt4-nc.js",
54
54
  "static/chunks/00yfl7agnve...js",
55
- "static/chunks/0dz5dqn26cusn.js",
55
+ "static/chunks/033x_thm.-e7u.js",
56
56
  "static/chunks/09wg815lxyi._.js",
57
57
  "static/chunks/0wlz6--vu7adu.js",
58
58
  "static/chunks/0ml5~2ty-rbv_.js",
59
59
  "static/chunks/12t3ws50siqw1.js",
60
60
  "static/chunks/15aj3kd.p7zw6.js",
61
- "static/chunks/turbopack-11briqm29_e1a.js"
61
+ "static/chunks/turbopack-0c6yh4-uhi.7m.js"
62
62
  ],
63
63
  "/agents/[agentId]/chat": [
64
64
  "static/chunks/0fungak7h7t_u.js",
65
- "static/chunks/0zbiq5qe~ekdz.js",
65
+ "static/chunks/0.4ewrx8k_5gf.js",
66
66
  "static/chunks/0ay.h74rl2t2c.js",
67
67
  "static/chunks/12t3ws50siqw1.js",
68
68
  "static/chunks/06fd4gm.ayhf7.js",
@@ -80,16 +80,16 @@
80
80
  "static/chunks/02lycfk~b_9ps.js",
81
81
  "static/chunks/0py3p~barq9qm.js",
82
82
  "static/chunks/0-sxrfxgcu1ce.js",
83
- "static/chunks/0dz5dqn26cusn.js",
83
+ "static/chunks/033x_thm.-e7u.js",
84
84
  "static/chunks/0ml5~2ty-rbv_.js",
85
- "static/chunks/turbopack-0um3302fiwl.8.js"
85
+ "static/chunks/turbopack-0e6yrf8bpjzaf.js"
86
86
  ],
87
87
  "/agents/[agentId]/memory": [
88
88
  "static/chunks/0mi.f1.iffvs7.js",
89
89
  "static/chunks/0b64-twwftp.b.js",
90
90
  "static/chunks/0ay.h74rl2t2c.js",
91
91
  "static/chunks/05-mpg38w0a82.js",
92
- "static/chunks/01u8i_srzu1bi.js",
92
+ "static/chunks/09-ehcnnfxygo.js",
93
93
  "static/chunks/12t3ws50siqw1.js",
94
94
  "static/chunks/10r8rypk5fanv.js",
95
95
  "static/chunks/0py3p~barq9qm.js",
@@ -98,7 +98,7 @@
98
98
  "static/chunks/02lycfk~b_9ps.js",
99
99
  "static/chunks/0wlz6--vu7adu.js",
100
100
  "static/chunks/0ti3g2b7fhm5v.js",
101
- "static/chunks/0dz5dqn26cusn.js",
101
+ "static/chunks/033x_thm.-e7u.js",
102
102
  "static/chunks/00yfl7agnve...js",
103
103
  "static/chunks/0p15~kn-ue177.js",
104
104
  "static/chunks/0yi.kp2rt4-nc.js",
@@ -106,13 +106,13 @@
106
106
  "static/chunks/0qe146f.3s0ud.js",
107
107
  "static/chunks/09wg815lxyi._.js",
108
108
  "static/chunks/15aj3kd.p7zw6.js",
109
- "static/chunks/turbopack-0v.9~z92dgw~6.js"
109
+ "static/chunks/turbopack-0okc-y2oz7i70.js"
110
110
  ],
111
111
  "/agents/[agentId]/workspace": [
112
112
  "static/chunks/0kmwqchx6vxwc.js",
113
113
  "static/chunks/0fungak7h7t_u.js",
114
114
  "static/chunks/0ay.h74rl2t2c.js",
115
- "static/chunks/01u8i_srzu1bi.js",
115
+ "static/chunks/09-ehcnnfxygo.js",
116
116
  "static/chunks/05-mpg38w0a82.js",
117
117
  "static/chunks/00yfl7agnve...js",
118
118
  "static/chunks/15aj3kd.p7zw6.js",
@@ -124,10 +124,10 @@
124
124
  "static/chunks/09wg815lxyi._.js",
125
125
  "static/chunks/0wlz6--vu7adu.js",
126
126
  "static/chunks/0-sxrfxgcu1ce.js",
127
- "static/chunks/0dz5dqn26cusn.js",
127
+ "static/chunks/033x_thm.-e7u.js",
128
128
  "static/chunks/0qe146f.3s0ud.js",
129
129
  "static/chunks/02lycfk~b_9ps.js",
130
- "static/chunks/turbopack-14zdukk1meg5n.js"
130
+ "static/chunks/turbopack-11-ah8-rp_2~x.js"
131
131
  ],
132
132
  "/login": [
133
133
  "static/chunks/14rkjvhij9msz.js",
@@ -153,18 +153,18 @@
153
153
  "static/chunks/0ti3g2b7fhm5v.js",
154
154
  "static/chunks/0qe146f.3s0ud.js",
155
155
  "static/chunks/05-mpg38w0a82.js",
156
- "static/chunks/01u8i_srzu1bi.js",
156
+ "static/chunks/09-ehcnnfxygo.js",
157
157
  "static/chunks/0py3p~barq9qm.js",
158
158
  "static/chunks/0ml5~2ty-rbv_.js",
159
159
  "static/chunks/0wlz6--vu7adu.js",
160
160
  "static/chunks/09wg815lxyi._.js",
161
- "static/chunks/0rm79dcgdvabz.js",
161
+ "static/chunks/10pjtfb1e4_fn.js",
162
162
  "static/chunks/0yi.kp2rt4-nc.js",
163
163
  "static/chunks/00yfl7agnve...js",
164
164
  "static/chunks/0-sxrfxgcu1ce.js",
165
165
  "static/chunks/02lycfk~b_9ps.js",
166
166
  "static/chunks/06fd4gm.ayhf7.js",
167
- "static/chunks/turbopack-03wgtzkruqo9d.js"
167
+ "static/chunks/turbopack-135~24zf~d~qo.js"
168
168
  ],
169
169
  "/reset": [
170
170
  "static/chunks/0_sdw~kzk-at0.js",
@@ -183,17 +183,17 @@
183
183
  "static/chunks/0qe146f.3s0ud.js",
184
184
  "static/chunks/0-sxrfxgcu1ce.js",
185
185
  "static/chunks/06fd4gm.ayhf7.js",
186
- "static/chunks/01u8i_srzu1bi.js",
186
+ "static/chunks/09-ehcnnfxygo.js",
187
187
  "static/chunks/0ti3g2b7fhm5v.js",
188
188
  "static/chunks/00yfl7agnve...js",
189
189
  "static/chunks/0wlz6--vu7adu.js",
190
190
  "static/chunks/09wg815lxyi._.js",
191
191
  "static/chunks/02lycfk~b_9ps.js",
192
192
  "static/chunks/0ml5~2ty-rbv_.js",
193
- "static/chunks/05r1jaq5c83x4.js",
193
+ "static/chunks/16gj3fltlcl9b.js",
194
194
  "static/chunks/15aj3kd.p7zw6.js",
195
195
  "static/chunks/0yi.kp2rt4-nc.js",
196
- "static/chunks/turbopack-0sqhowkqu.h25.js"
196
+ "static/chunks/turbopack-0n1zyq2ca.uwm.js"
197
197
  ],
198
198
  "/tools-required": [
199
199
  "static/chunks/0kf8xkvr3218u.js",
@@ -210,7 +210,7 @@
210
210
  "static/chunks/0c8._01-id.jr.js",
211
211
  "static/chunks/0fungak7h7t_u.js",
212
212
  "static/chunks/0ay.h74rl2t2c.js",
213
- "static/chunks/01u8i_srzu1bi.js",
213
+ "static/chunks/09-ehcnnfxygo.js",
214
214
  "static/chunks/05-mpg38w0a82.js",
215
215
  "static/chunks/0ti3g2b7fhm5v.js",
216
216
  "static/chunks/0-sxrfxgcu1ce.js",
@@ -218,22 +218,22 @@
218
218
  "static/chunks/06fd4gm.ayhf7.js",
219
219
  "static/chunks/15aj3kd.p7zw6.js",
220
220
  "static/chunks/00yfl7agnve...js",
221
- "static/chunks/0dz5dqn26cusn.js",
221
+ "static/chunks/033x_thm.-e7u.js",
222
222
  "static/chunks/0ml5~2ty-rbv_.js",
223
223
  "static/chunks/09wg815lxyi._.js",
224
224
  "static/chunks/0wlz6--vu7adu.js",
225
225
  "static/chunks/02lycfk~b_9ps.js",
226
226
  "static/chunks/0qe146f.3s0ud.js",
227
227
  "static/chunks/0yi.kp2rt4-nc.js",
228
- "static/chunks/turbopack-0l-gurbj0.orc.js"
228
+ "static/chunks/turbopack-01kk_951fss42.js"
229
229
  ]
230
230
  },
231
231
  "devFiles": [],
232
232
  "polyfillFiles": [],
233
233
  "lowPriorityFiles": [
234
- "static/mG4eqGEgMBuU5tAi2sxtl/_buildManifest.js",
235
- "static/mG4eqGEgMBuU5tAi2sxtl/_ssgManifest.js",
236
- "static/mG4eqGEgMBuU5tAi2sxtl/_clientMiddlewareManifest.js"
234
+ "static/n6W5_byTPdXhdLI4PJaMr/_buildManifest.js",
235
+ "static/n6W5_byTPdXhdLI4PJaMr/_ssgManifest.js",
236
+ "static/n6W5_byTPdXhdLI4PJaMr/_clientMiddlewareManifest.js"
237
237
  ],
238
238
  "rootMainFiles": []
239
239
  }
@@ -3,9 +3,9 @@
3
3
  "routes": {},
4
4
  "dynamicRoutes": {},
5
5
  "preview": {
6
- "previewModeId": "9dce7d6cdff8027b974bebef336b85d5",
7
- "previewModeSigningKey": "116ab281fb98416b6604d6b37e0dbfc861f058945dfb661ecb2e74f2c228557d",
8
- "previewModeEncryptionKey": "955a68a9ed6e2aa48f57b7f8e8db2b2482a6afa6dbc726e904cdc53affa03614"
6
+ "previewModeId": "0f669c8b405c58272659309a1eb20b29",
7
+ "previewModeSigningKey": "626c9c437b39befb0312bf6f53817abe4b4f82bae308b5e59db4712c38916b41",
8
+ "previewModeEncryptionKey": "4841e3620b8b613bf6c68c2f5a11837ce37f002b220b669103a79f07d0bca94f"
9
9
  },
10
10
  "notFoundRoutes": []
11
11
  }
@@ -2,7 +2,7 @@
2
2
  "version": 1,
3
3
  "config": {
4
4
  "env": {
5
- "NEXT_PUBLIC_COMMIT_HASH": "f675f5c"
5
+ "NEXT_PUBLIC_COMMIT_HASH": "ec282bd"
6
6
  },
7
7
  "webpack": null,
8
8
  "typescript": {
@@ -514,6 +514,12 @@
514
514
  "routeKeys": {},
515
515
  "namedRegex": "^/api/timeline/sessions(?:/)?$"
516
516
  },
517
+ {
518
+ "page": "/api/tmux/capture",
519
+ "regex": "^/api/tmux/capture(?:/)?$",
520
+ "routeKeys": {},
521
+ "namedRegex": "^/api/tmux/capture(?:/)?$"
522
+ },
517
523
  {
518
524
  "page": "/api/tmux/info",
519
525
  "regex": "^/api/tmux/info(?:/)?$",
@@ -614,59 +620,59 @@
614
620
  "dataRoutes": [
615
621
  {
616
622
  "page": "/",
617
- "dataRouteRegex": "^/_next/data/mG4eqGEgMBuU5tAi2sxtl/index\\.json$"
623
+ "dataRouteRegex": "^/_next/data/n6W5_byTPdXhdLI4PJaMr/index\\.json$"
618
624
  },
619
625
  {
620
626
  "page": "/agents",
621
- "dataRouteRegex": "^/_next/data/mG4eqGEgMBuU5tAi2sxtl/agents\\.json$"
627
+ "dataRouteRegex": "^/_next/data/n6W5_byTPdXhdLI4PJaMr/agents\\.json$"
622
628
  },
623
629
  {
624
630
  "page": "/agents/[agentId]/chat",
625
631
  "routeKeys": {
626
632
  "nxtPagentId": "nxtPagentId"
627
633
  },
628
- "dataRouteRegex": "^/_next/data/mG4eqGEgMBuU5tAi2sxtl/agents/([^/]+?)/chat\\.json$",
629
- "namedDataRouteRegex": "^/_next/data/mG4eqGEgMBuU5tAi2sxtl/agents/(?<nxtPagentId>[^/]+?)/chat\\.json$"
634
+ "dataRouteRegex": "^/_next/data/n6W5_byTPdXhdLI4PJaMr/agents/([^/]+?)/chat\\.json$",
635
+ "namedDataRouteRegex": "^/_next/data/n6W5_byTPdXhdLI4PJaMr/agents/(?<nxtPagentId>[^/]+?)/chat\\.json$"
630
636
  },
631
637
  {
632
638
  "page": "/agents/[agentId]/memory",
633
639
  "routeKeys": {
634
640
  "nxtPagentId": "nxtPagentId"
635
641
  },
636
- "dataRouteRegex": "^/_next/data/mG4eqGEgMBuU5tAi2sxtl/agents/([^/]+?)/memory\\.json$",
637
- "namedDataRouteRegex": "^/_next/data/mG4eqGEgMBuU5tAi2sxtl/agents/(?<nxtPagentId>[^/]+?)/memory\\.json$"
642
+ "dataRouteRegex": "^/_next/data/n6W5_byTPdXhdLI4PJaMr/agents/([^/]+?)/memory\\.json$",
643
+ "namedDataRouteRegex": "^/_next/data/n6W5_byTPdXhdLI4PJaMr/agents/(?<nxtPagentId>[^/]+?)/memory\\.json$"
638
644
  },
639
645
  {
640
646
  "page": "/agents/[agentId]/workspace",
641
647
  "routeKeys": {
642
648
  "nxtPagentId": "nxtPagentId"
643
649
  },
644
- "dataRouteRegex": "^/_next/data/mG4eqGEgMBuU5tAi2sxtl/agents/([^/]+?)/workspace\\.json$",
645
- "namedDataRouteRegex": "^/_next/data/mG4eqGEgMBuU5tAi2sxtl/agents/(?<nxtPagentId>[^/]+?)/workspace\\.json$"
650
+ "dataRouteRegex": "^/_next/data/n6W5_byTPdXhdLI4PJaMr/agents/([^/]+?)/workspace\\.json$",
651
+ "namedDataRouteRegex": "^/_next/data/n6W5_byTPdXhdLI4PJaMr/agents/(?<nxtPagentId>[^/]+?)/workspace\\.json$"
646
652
  },
647
653
  {
648
654
  "page": "/login",
649
- "dataRouteRegex": "^/_next/data/mG4eqGEgMBuU5tAi2sxtl/login\\.json$"
655
+ "dataRouteRegex": "^/_next/data/n6W5_byTPdXhdLI4PJaMr/login\\.json$"
650
656
  },
651
657
  {
652
658
  "page": "/reports",
653
- "dataRouteRegex": "^/_next/data/mG4eqGEgMBuU5tAi2sxtl/reports\\.json$"
659
+ "dataRouteRegex": "^/_next/data/n6W5_byTPdXhdLI4PJaMr/reports\\.json$"
654
660
  },
655
661
  {
656
662
  "page": "/reset",
657
- "dataRouteRegex": "^/_next/data/mG4eqGEgMBuU5tAi2sxtl/reset\\.json$"
663
+ "dataRouteRegex": "^/_next/data/n6W5_byTPdXhdLI4PJaMr/reset\\.json$"
658
664
  },
659
665
  {
660
666
  "page": "/stats",
661
- "dataRouteRegex": "^/_next/data/mG4eqGEgMBuU5tAi2sxtl/stats\\.json$"
667
+ "dataRouteRegex": "^/_next/data/n6W5_byTPdXhdLI4PJaMr/stats\\.json$"
662
668
  },
663
669
  {
664
670
  "page": "/tools-required",
665
- "dataRouteRegex": "^/_next/data/mG4eqGEgMBuU5tAi2sxtl/tools-required\\.json$"
671
+ "dataRouteRegex": "^/_next/data/n6W5_byTPdXhdLI4PJaMr/tools-required\\.json$"
666
672
  },
667
673
  {
668
674
  "page": "/webview",
669
- "dataRouteRegex": "^/_next/data/mG4eqGEgMBuU5tAi2sxtl/webview\\.json$"
675
+ "dataRouteRegex": "^/_next/data/n6W5_byTPdXhdLI4PJaMr/webview\\.json$"
670
676
  }
671
677
  ],
672
678
  "i18n": {
@@ -0,0 +1,3 @@
1
+ module.exports=[270406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},814747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},446786,(e,t,r)=>{t.exports=e.x("os",()=>require("os"))},924868,(e,t,r)=>{t.exports=e.x("fs/promises",()=>require("fs/promises"))},130146,(e,t,r)=>{t.exports=e.x("pino-28069d5257187539",()=>require("pino-28069d5257187539"))},666680,(e,t,r)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},224361,(e,t,r)=>{t.exports=e.x("util",()=>require("util"))},233405,(e,t,r)=>{t.exports=e.x("child_process",()=>require("child_process"))},25146,e=>{"use strict";var t=e.i(130146),r=e.i(814747),a=e.i(446786);let n=r.default.join(a.default.homedir(),".purplemux","logs"),i=process.env.LOG_LEVEL||"info",s=(e=>{if(!e)return{};let t={};for(let r of e.split(",")){let[e,a]=r.split("=").map(e=>e.trim());e&&a&&(t[e]=a)}return t})(process.env.LOG_LEVELS),l=["trace","debug","info","warn","error","fatal"],o=globalThis;if(!o.__ptRootLogger){let e=[i,...Object.values(s)].reduce((e,t)=>l.indexOf(t)<l.indexOf(e)?t:e,"fatal");o.__ptRootLogger=(0,t.default)({level:e,transport:{targets:[{target:"pino-roll",level:e,options:{file:r.default.join(n,"purplemux"),frequency:"daily",dateFormat:"yyyy-MM-dd",limit:{count:7},mkdir:!0}},{target:"pino-pretty",level:e,options:{colorize:!0,ignore:"pid,hostname,module",translateTime:"HH:MM:ss",messageFormat:"[{module}] {msg}"}}]}})}let u=o.__ptRootLogger;e.s(["createLogger",0,e=>{let t=u.child({module:e});return t.level=s[e]??i,t}])},44014,e=>{"use strict";let t,r;var a=e.i(666680);e.s(["nanoid",0,function(e=21){var n;n=e|=0,!t||t.length<n?(t=Buffer.allocUnsafe(128*n),a.webcrypto.getRandomValues(t),r=0):r+n>t.length&&(a.webcrypto.getRandomValues(t),r=0),r+=n;let i="";for(let a=r-e;a<r;a++)i+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[63&t[a]];return i}],44014)},459015,544538,e=>{"use strict";var t=e.i(233405),r=e.i(924868),a=e.i(224361),n=e.i(814747),i=e.i(44014),s=e.i(25146);process.platform;let l="linux"===process.platform;e.s(["isLinux",0,l],544538);let o=(0,s.createLogger)("terminal"),u=(0,a.promisify)(t.execFile),p="purple",c=n.default.join(process.env.__PMUX_APP_DIR_UNPACKED||process.env.__PMUX_APP_DIR||process.cwd(),"src","config","tmux.conf"),d=new Set(["AUTH_PASSWORD","NEXTAUTH_SECRET"]),m=()=>Object.fromEntries(Object.entries(process.env).filter(([e])=>!e.startsWith("npm_")&&!e.startsWith("NODE_")&&!d.has(e))),h=async()=>{try{let{stdout:e}=await u("tmux",["-L",p,"ls","-F","#{session_name}"],{timeout:5e3});return e.trim().split("\n").map(e=>e.trim()).filter(e=>e.startsWith("pt-"))}catch{return[]}},f=async(e,t,r,a)=>{let n=process.env.SHELL||"/bin/zsh";await u("tmux",["-u","-L",p,"-f",c,"new-session","-d","-s",e,"-x",String(t),"-y",String(r)],{timeout:5e3,env:{...m(),SHELL:n,TERM:"xterm-256color",COLORTERM:"truecolor"},cwd:a||process.env.HOME||"/"}),await _(),o.debug(`tmux session created: ${e} (cols: ${t}, rows: ${r})`)},y=e=>new Promise(t=>setTimeout(t,e)),w=async e=>{if(!await g(e))return;o.debug(`killSession start: ${e}`);let t=await L(e);if(t)try{o.debug(`SIGTERM → process group ${t}: ${e}`),process.kill(-t,"SIGTERM")}catch{}try{await u("tmux",["-L",p,"kill-session","-t",e],{timeout:5e3})}catch{}for(let t=0;t<5;t++){if(!await g(e))return void o.debug(`killSession done (SIGTERM): ${e}`);await y(200)}if(o.warn(`session survived SIGTERM, escalating to SIGKILL: ${e}`),t)try{o.debug(`SIGKILL → process group ${t}: ${e}`),process.kill(-t,"SIGKILL")}catch{}try{await u("tmux",["-L",p,"kill-session","-t",e],{timeout:5e3})}catch{}for(let t=0;t<3;t++){if(!await g(e))return void o.debug(`killSession done (SIGKILL): ${e}`);await y(200)}o.warn(`tmux session still alive after kill: ${e}`)},g=async e=>{try{return await u("tmux",["-L",p,"has-session","-t",e],{timeout:5e3}),!0}catch{return!1}},x=async()=>{},S=async()=>{await x();let e=await h();e.length>0&&e.forEach(e=>{o.debug(`existing tmux session found: ${e}`)})},v=async e=>{try{let{stdout:t}=await u("tmux",["-L",p,"display-message","-p","-t",e,"#{pane_current_path}"],{timeout:5e3});return t.trim()||null}catch{return null}},L=async e=>{try{let{stdout:t}=await u("tmux",["-L",p,"display-message","-p","-t",e,"#{pane_pid}"],{timeout:5e3}),r=parseInt(t.trim(),10);return Number.isNaN(r)?null:r}catch{return null}},_=async()=>{try{await u("tmux",["-L",p,"source-file",c],{timeout:5e3})}catch{}},E=async e=>{try{let{stdout:t}=await u("tmux",["-L",p,"list-panes","-t",e,"-F","#{pane_current_command}"],{timeout:5e3});return t.trim()||null}catch{return null}},b=async()=>{try{let{stdout:e}=await u("tmux",["-L",p,"list-panes","-a","-F","#{session_name} #{pane_current_command} #{pane_current_path} #{pane_pid} #{window_activity}"],{timeout:5e3}),t=new Map;for(let r of e.trim().split("\n")){if(!r)continue;let[e,a,n,i,s]=r.split(" ");if(e&&a){let r=parseInt(i,10),l=parseInt(s,10);t.set(e,{command:a,path:n||"",pid:Number.isNaN(r)?0:r,windowActivity:Number.isNaN(l)?0:l})}}return t}catch{return new Map}},P=new Set(["bash","zsh","fish","sh","dash"]),I=async e=>{try{let{stdout:t}=await u("tmux",["-L",p,"display-message","-p","-t",e,"#{pane_title}"],{timeout:5e3});return t.trim()||null}catch{return null}},$=async e=>{await u("tmux",["-L",p,"copy-mode","-q","-t",e],{timeout:5e3}).catch(()=>{})},R=async(e,t)=>{await $(e),await u("tmux",["-L",p,"send-keys","-t",e,t,"Enter"],{timeout:5e3})},N=async(e,t)=>{await $(e),await u("tmux",["-L",p,"send-keys","-t",e,t],{timeout:5e3})},k=async(e,t)=>{await $(e),await u("tmux",["-L",p,"send-keys","-t",e,"-l",`\x1b[200~${t}\x1b[201~`],{timeout:5e3}),await u("tmux",["-L",p,"send-keys","-t",e,"Enter"],{timeout:5e3}),await new Promise(e=>setTimeout(e,600)),await u("tmux",["-L",p,"send-keys","-t",e,"Enter"],{timeout:5e3})},M=async e=>{try{let{stdout:t}=await u("tmux",["-L",p,"display-message","-p","-t",e,"#{pane_current_path} #{pane_current_command} #{pane_pid} #{pane_width} #{pane_height} #{session_created}"],{timeout:5e3}),[r,a,n,i,s,l]=t.trim().split(" ");return{cwd:r||null,command:a||null,pid:n&&parseInt(n,10)||null,width:i&&parseInt(i,10)||null,height:s&&parseInt(s,10)||null,sessionCreated:l&&parseInt(l,10)||null}}catch{return{cwd:null,command:null,pid:null,width:null,height:null,sessionCreated:null}}},q=new Set(["node","python","python3","ruby","perl","deno","bun"]),T=async()=>{try{await u("tmux",["-L",p,"kill-server"],{timeout:5e3}),o.debug("tmux server killed")}catch{}},A=async e=>{try{let{stdout:t}=await u("tmux",["-L",p,"capture-pane","-p","-t",e],{timeout:5e3});return t}catch{return null}},j=async(e,t)=>{try{let{stdout:r}=await u("tmux",["-L",p,"capture-pane","-p","-S",`-${t}`,"-t",e],{timeout:5e3});return r}catch{return null}},C=async e=>{if(l){let t=[];return await Promise.all(e.map(async e=>{try{for(let a of(await r.default.readFile(`/proc/${e}/task/${e}/children`,"utf-8")).trim().split(/\s+/)){let e=parseInt(a,10);Number.isNaN(e)||t.push(e)}}catch{}})),t}try{let{stdout:t}=await u("pgrep",["-P",e.join(",")],{timeout:5e3});return t.trim().split("\n").map(e=>parseInt(e,10)).filter(e=>!Number.isNaN(e))}catch{return[]}},G=async e=>{let t=[],r=[e];for(;r.length>0;){let e=await C(r);if(0===e.length)break;t.push(...e),r=e}return t},H=async e=>{try{let t=new Set(e),{stdout:r}=await u("ss",["-tlnp"],{timeout:5e3}),a=new Set;for(let e of r.split("\n")){let r=e.match(/pid=(\d+)/g);if(!r||!r.some(e=>t.has(parseInt(e.replace("pid=",""),10))))continue;let n=e.match(/:(\d+)\s/);n&&a.add(parseInt(n[1],10))}return[...a].sort((e,t)=>e-t)}catch{return[]}},O=async e=>{let t=await G(e);if(0===t.length)return[];if(l)return H(t);try{let{stdout:e}=await u("lsof",["-a","-p",t.join(","),"-i","-sTCP:LISTEN","-P","-Fn"],{timeout:5e3}),r=new Set;for(let t of e.split("\n"))if(t.startsWith("n")){let e=t.match(/:(\d+)$/);e&&r.add(parseInt(e[1],10))}return[...r].sort((e,t)=>e-t)}catch{return[]}},D=async e=>{let t=await L(e);if(!t)return null;try{let{stdout:e}=await u("pgrep",["-n","-P",String(t)],{timeout:5e3}),r=e.trim();if(!r)return null;let{stdout:a}=await u("ps",["-o","args=","-p",r],{timeout:5e3}),i=a.trim();if(!i)return null;let s=i.split(/\s+/);if(0===s.length)return i;if(s[0]=n.default.basename(s[0]),q.has(s[0])&&s.length>1){let e=n.default.basename(s[1]).replace(/\.(c|m)?js$/,"");s.splice(0,2,e)}return s.join(" ")}catch{return null}};e.s(["SAFE_SHELLS",0,P,"applyConfig",0,_,"capturePaneContent",0,A,"capturePaneContentWithHistory",0,j,"createSession",0,f,"defaultSessionName",0,()=>`pt-${(0,i.nanoid)(6)}-${(0,i.nanoid)(6)}-${(0,i.nanoid)(6)}`,"exitCopyMode",0,$,"getAllPanesInfo",0,b,"getLastCommand",0,D,"getListeningPorts",0,O,"getPaneCurrentCommand",0,E,"getPaneDetailInfo",0,M,"getPaneTitle",0,I,"getSessionCwd",0,v,"getSessionPanePid",0,L,"hasSession",0,g,"killServer",0,T,"killSession",0,w,"listSessions",0,h,"sanitizedEnv",0,m,"scanSessions",0,S,"sendBracketedPaste",0,k,"sendKeys",0,R,"sendRawKeys",0,N,"workspaceSessionName",0,(e,t,r)=>`pt-${e}-${t}-${r}`],459015)},295055,e=>{"use strict";var t=e.i(926747),r=e.i(190406),a=e.i(244898),n=e.i(262950),i=e.i(459015);let s=(0,e.i(25146).createLogger)("tmux"),l=async(e,t)=>{if("GET"!==e.method)return t.setHeader("Allow","GET"),t.status(405).json({error:"Method not allowed"});let r=e.query.session;if(!r)return t.status(400).json({error:"session parameter required"});if(!await (0,i.hasSession)(r))return t.status(404).json({error:"Session not found"});try{let e=await (0,i.capturePaneContent)(r);return t.status(200).json({content:e??""})}catch(e){return s.error(`capture failed: ${e instanceof Error?e.message:e}`),t.status(500).json({error:"Failed to capture pane"})}};e.s(["default",0,l],798167);var o=e.i(798167),u=e.i(7031),p=e.i(181927),c=e.i(846432);let d=(0,n.hoist)(o,"default"),m=(0,n.hoist)(o,"config"),h=new a.PagesAPIRouteModule({definition:{kind:r.RouteKind.PAGES_API,page:"/api/tmux/capture",pathname:"/api/tmux/capture",bundlePath:"",filename:""},userland:o,distDir:".next",relativeProjectDir:""});async function f(e,r,a){a.requestMeta&&(0,c.setRequestMeta)(e,a.requestMeta),h.isDev&&(0,c.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let n="/api/tmux/capture";n=n.replace(/\/index$/,"")||"/";let i=await h.prepare(e,r,{srcPage:n});if(!i){r.statusCode=400,r.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve());return}let{query:s,params:l,prerenderManifest:o,routerServerContext:d}=i;try{let t,a=e.method||"GET",i=(0,u.getTracer)(),c=i.getActiveScopeSpan(),m=!!(null==d?void 0:d.isWrappedByNextServer),f=h.instrumentationOnRequestError.bind(h),y=async u=>h.render(e,r,{query:{...s,...l},params:l,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:o.preview,propagateError:!1,dev:h.isDev,page:"/api/tmux/capture",internalRevalidate:null==d?void 0:d.revalidate,onError:(...t)=>f(e,...t)}).finally(()=>{if(!u)return;u.setAttributes({"http.status_code":r.statusCode,"next.rsc":!1});let e=i.getRootSpanAttributes();if(!e)return;if(e.get("next.span_type")!==p.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${e.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let s=e.get("next.route");if(s){let e=`${a} ${s}`;u.setAttributes({"next.route":s,"http.route":s,"next.span_name":e}),u.updateName(e),t&&t!==u&&(t.setAttribute("http.route",s),t.updateName(e))}else u.updateName(`${a} ${n}`)});m&&c?await y(c):(t=i.getActiveScopeSpan(),await i.withPropagatedContext(e.headers,()=>i.trace(p.BaseServerSpan.handleRequest,{spanName:`${a} ${n}`,kind:u.SpanKind.SERVER,attributes:{"http.method":a,"http.target":e.url}},y),void 0,!m))}catch(e){if(h.isDev)throw e;(0,t.sendError)(r,500,"Internal Server Error")}finally{null==a.waitUntil||a.waitUntil.call(a,Promise.resolve())}}e.s(["config",0,m,"default",0,d,"handler",0,f],295055)}];
2
+
3
+ //# sourceMappingURL=%5Broot-of-the-server%5D__0x_8._i._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[760644,a=>{"use strict";var b=a.i(4873);let c={terminalConnected:!1,claudeProcess:null,claudeProcessCheckedAt:0,claudeInstalled:!0,sessionView:"session-list",cliState:"inactive",isTimelineLoading:!0,workspaceId:""},d=(a,b,c)=>{let d=a[b];return d?{...a,[b]:{...d,...c}}:a},e=(0,b.create)(a=>({tabs:{},tabOrders:{},statusWsConnected:!1,initTab:(b,d)=>a(a=>{let e=a.tabs[b],f={...c,...e,...d};return e?.cliState==="ready-for-review"&&"ready-for-review"!==f.cliState&&(f.cliState="ready-for-review",f.readyForReviewAt=e.readyForReviewAt),{tabs:{...a.tabs,[b]:f}}}),removeTab:b=>a(a=>{let{[b]:c,...d}=a.tabs;return{tabs:d}}),setTerminalConnected:(b,c)=>a(a=>{let e=a.tabs[b];return e&&e.terminalConnected!==c?{tabs:d(a.tabs,b,{terminalConnected:c})}:a}),setClaudeProcess:(b,c,e)=>a(a=>{let f=a.tabs[b];if(!f||f.claudeProcessCheckedAt>e||f.claudeProcess===c)return a;let g={claudeProcess:c,claudeProcessCheckedAt:e};return!0===c&&("check"===f.sessionView||"session-list"===f.sessionView)&&(g.sessionView="timeline"),!1===c&&!0===f.claudeProcess&&"timeline"===f.sessionView&&(g.sessionView="session-list"),{tabs:d(a.tabs,b,g)}}),setClaudeInstalled:(b,c)=>a(a=>{let e=a.tabs[b];return e&&e.claudeInstalled!==c?{tabs:d(a.tabs,b,{claudeInstalled:c})}:a}),setSessionView:(b,c)=>a(a=>{let e=a.tabs[b];return e&&e.sessionView!==c?{tabs:d(a.tabs,b,{sessionView:c})}:a}),setTimelineLoading:(b,c)=>a(a=>{let e=a.tabs[b];return e&&e.isTimelineLoading!==c?{tabs:d(a.tabs,b,{isTimelineLoading:c})}:a}),cancelTab:b=>a(a=>{let c=a.tabs[b];return c&&"cancelled"!==c.cliState?{tabs:d(a.tabs,b,{cliState:"cancelled",localUpdatedAt:Date.now()})}:a}),dismissTab:b=>a(a=>{let c=a.tabs[b];return c&&"ready-for-review"===c.cliState?{tabs:d(a.tabs,b,{cliState:"idle",dismissedAt:Date.now()})}:a}),setWorkspaceId:(b,c)=>a(a=>{let e=a.tabs[b];return e&&e.workspaceId!==c?{tabs:d(a.tabs,b,{workspaceId:c})}:a}),setPanelType:(b,c)=>a(a=>{let e=a.tabs[b];return e&&e.panelType!==c?{tabs:d(a.tabs,b,{panelType:c})}:a}),setCurrentProcess:(b,c)=>a(a=>{let e=a.tabs[b];if(!e)return a;let f=c??void 0;return e.currentProcess===f?a:{tabs:d(a.tabs,b,{currentProcess:f,localUpdatedAt:Date.now()})}}),setTabOrder:(b,c)=>a(a=>{let d=a.tabOrders[b];return d&&d.length===c.length&&d.every((a,b)=>a===c[b])?a:{tabOrders:{...a.tabOrders,[b]:c}}}),setStatusWsConnected:b=>a({statusWsConnected:b}),syncAllFromServer:b=>a(a=>{let d=Date.now(),e={};for(let[f,g]of Object.entries(b)){let b=a.tabs[f];if(b?.cliState==="cancelled"){e[f]=b;continue}b?.localUpdatedAt&&d-b.localUpdatedAt<3e4?e[f]={...b,cliState:g.cliState,workspaceId:g.workspaceId,tabName:g.tabName,terminalStatus:g.terminalStatus,listeningPorts:g.listeningPorts,claudeSummary:g.claudeSummary,lastUserMessage:g.lastUserMessage,lastAssistantMessage:g.lastAssistantMessage,currentAction:g.currentAction,readyForReviewAt:g.readyForReviewAt,busySince:g.busySince,dismissedAt:g.dismissedAt,claudeSessionId:g.claudeSessionId,compactingSince:g.compactingSince,lastEvent:g.lastEvent,eventSeq:g.eventSeq}:b?e[f]={...b,cliState:g.cliState,workspaceId:g.workspaceId,tabName:g.tabName,panelType:g.panelType??b.panelType,terminalStatus:g.terminalStatus,listeningPorts:g.listeningPorts,currentProcess:g.currentProcess,claudeSummary:g.claudeSummary,lastUserMessage:g.lastUserMessage,lastAssistantMessage:g.lastAssistantMessage,currentAction:g.currentAction,readyForReviewAt:g.readyForReviewAt,busySince:g.busySince,dismissedAt:g.dismissedAt,claudeSessionId:g.claudeSessionId,compactingSince:g.compactingSince,lastEvent:g.lastEvent,eventSeq:g.eventSeq}:e[f]={...c,cliState:g.cliState,workspaceId:g.workspaceId,tabName:g.tabName,panelType:g.panelType,terminalStatus:g.terminalStatus,listeningPorts:g.listeningPorts,currentProcess:g.currentProcess,claudeSummary:g.claudeSummary,lastUserMessage:g.lastUserMessage,lastAssistantMessage:g.lastAssistantMessage,currentAction:g.currentAction,readyForReviewAt:g.readyForReviewAt,busySince:g.busySince,dismissedAt:g.dismissedAt,claudeSessionId:g.claudeSessionId,compactingSince:g.compactingSince,lastEvent:g.lastEvent,eventSeq:g.eventSeq,...g.claudeSessionId?{sessionView:"timeline"}:{}}}for(let[b,c]of Object.entries(a.tabs))e[b]||(e[b]=c);return{tabs:e}}),updateFromServer:(b,e)=>a(a=>{if(null===e.cliState){let{[b]:c,...d}=a.tabs;return{tabs:d}}let f=a.tabs[b];if(f){if("cancelled"===f.cliState)return a;let c=void 0!==e.eventSeq&&void 0!==f.eventSeq&&e.eventSeq<f.eventSeq,g=void 0!==e.eventSeq&&(void 0===f.eventSeq||e.eventSeq>=f.eventSeq)?{lastEvent:e.lastEvent,eventSeq:e.eventSeq}:{},h=c?{cliState:f.cliState,readyForReviewAt:f.readyForReviewAt,busySince:f.busySince,dismissedAt:f.dismissedAt}:{cliState:e.cliState,readyForReviewAt:e.readyForReviewAt,busySince:e.busySince,dismissedAt:e.dismissedAt};return{tabs:d(a.tabs,b,{...h,workspaceId:e.workspaceId,tabName:e.tabName,panelType:e.panelType??f.panelType,terminalStatus:e.terminalStatus,listeningPorts:e.listeningPorts,currentProcess:e.currentProcess,claudeSummary:e.claudeSummary,lastUserMessage:e.lastUserMessage,lastAssistantMessage:e.lastAssistantMessage,currentAction:e.currentAction,claudeSessionId:e.claudeSessionId,compactingSince:e.compactingSince,...g})}}return{tabs:{...a.tabs,[b]:{...c,cliState:e.cliState,workspaceId:e.workspaceId,tabName:e.tabName,panelType:e.panelType,terminalStatus:e.terminalStatus,listeningPorts:e.listeningPorts,currentProcess:e.currentProcess,claudeSummary:e.claudeSummary,lastUserMessage:e.lastUserMessage,lastAssistantMessage:e.lastAssistantMessage,readyForReviewAt:e.readyForReviewAt,busySince:e.busySince,dismissedAt:e.dismissedAt,claudeSessionId:e.claudeSessionId,compactingSince:e.compactingSince,lastEvent:e.lastEvent,eventSeq:e.eventSeq,...e.claudeSessionId?{sessionView:"timeline"}:{}}}}}),applyHookEvent:(b,c)=>a(a=>{let e=a.tabs[b];return!e||void 0!==e.eventSeq&&c.seq<=e.eventSeq?a:{tabs:d(a.tabs,b,{lastEvent:c,eventSeq:c.seq})}})}));a.s(["default",0,e,"isCliIdle",0,a=>"idle"===a||"ready-for-review"===a,"selectGlobalStatus",0,a=>{let b=0,c=0;for(let d of Object.values(a))"busy"===d.cliState?b++:("ready-for-review"===d.cliState||"needs-input"===d.cliState)&&c++;return{busyCount:b,attentionCount:c}},"selectSessionView",0,(a,b)=>{let c=a[b];return c?c.sessionView:"session-list"},"selectTabDisplayStatus",0,(a,b)=>{let c=a[b];return c&&"inactive"!==c.cliState?"busy"===c.cliState?"busy":"ready-for-review"===c.cliState?"ready-for-review":"needs-input"===c.cliState?"needs-input":"unknown"===c.cliState?"unknown":"idle":"idle"},"selectWorkspacePortsLabel",0,(a,b)=>{let c=new Set;for(let d of Object.values(a))if(d.workspaceId===b&&d.listeningPorts)for(let a of d.listeningPorts)c.add(a);return 0===c.size?"":":"+[...c].sort((a,b)=>a-b).join(", :")}])},484682,a=>{"use strict";var b=a.i(127669);let c=(a,b)=>{let c=a instanceof Map?a:new Map(a.entries()),d=b instanceof Map?b:new Map(b.entries());if(c.size!==d.size)return!1;for(let[a,b]of c)if(!d.has(a)||!Object.is(b,d.get(a)))return!1;return!0};a.s(["useShallow",0,function(a){let d=b.default.useRef(void 0);return b=>{let e=a(b);return!function(a,b){if(Object.is(a,b))return!0;if("object"!=typeof a||null===a||"object"!=typeof b||null===b||Object.getPrototypeOf(a)!==Object.getPrototypeOf(b))return!1;if(Symbol.iterator in a&&Symbol.iterator in b){if("entries"in a&&"entries"in b)return c(a,b);let d=a[Symbol.iterator](),e=b[Symbol.iterator](),f=d.next(),g=e.next();for(;!f.done&&!g.done;){if(!Object.is(f.value,g.value))return!1;f=d.next(),g=e.next()}return!!f.done&&!!g.done}return c({entries:()=>Object.entries(a)},{entries:()=>Object.entries(b)})}(d.current,e)?d.current=e:d.current}}],484682)},959709,912251,a=>{"use strict";var b=a.i(127669),c=a.i(510414),d=a.i(892209),e=a.i(760644);let f=new Set(["/new","/clear"]),g=a=>`pt-input-draft:${a}`,h=a=>{try{localStorage.removeItem(g(a))}catch{}};a.s(["clearInputDraft",0,h,"default",0,(a,i,j,k)=>{let l=k?.tabId,[m,n]=(0,b.useState)(()=>l?(a=>{try{return localStorage.getItem(g(a))??""}catch{return""}})(l):""),o=(0,b.useRef)(null),p=(0,b.useMemo)(()=>(0,e.isCliIdle)(a)||"unknown"===a?"input":"busy"===a||"needs-input"===a?"interrupt":"disabled",[a]),q=k?.onRestartSession,r=k?.onMessageSent,s=(0,b.useRef)(null);(0,b.useEffect)(()=>{if(l)return s.current&&clearTimeout(s.current),s.current=setTimeout(()=>((a,b)=>{try{b?localStorage.setItem(g(a),b):localStorage.removeItem(g(a))}catch{}})(l,m),300),()=>{s.current&&clearTimeout(s.current)}},[l,m]);let t=(0,b.useCallback)(()=>{if("disabled"===p)return void c.toast.error("Claude Code가 실행 중이 아닙니다");if(!j)return void c.toast.error((0,d.t)("connection","terminalDisconnected"));if(""!==m.trim()){if(f.has(m.trim().toLowerCase())){q?.(),n(""),l&&h(l);return}m.includes("\n")?(i(`\x1b[200~${m}\x1b[201~\r`),setTimeout(()=>i("\r"),500)):(i(m),setTimeout(()=>i("\r"),50)),m.trim().startsWith("/")||r?.(m.trim()),n(""),l&&h(l)}},[p,m,i,j,q,r,l]),u=(0,b.useCallback)(()=>{j?i("\x1b\x1b"):c.toast.error((0,d.t)("connection","terminalDisconnected"))},[i,j]),v=(0,b.useCallback)(()=>{let a=o.current;if(!a)return;a.focus();let b=a.value.length;a.setSelectionRange(b,b)},[]),[w,x]=(0,b.useState)(p);w!==p&&(x(p),"disabled"===p&&n(""));let y="disabled"!==p&&j;return{value:m,setValue:n,mode:p,canSend:y,send:t,interrupt:u,textareaRef:o,focusInput:v}}],959709);var i=a.i(4873);let j=[],k=!0,l=a=>{},m=a=>{fetch("/api/workspace/active",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({activeWorkspaceId:a})}).catch(()=>{})},n=(a,b)=>b&&a.some(a=>a.id===b)?b:a[0]?.id??null,o=a=>{fetch("/api/workspace/active",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)}).catch(a=>{console.log(`[workspace-store] active update failed: ${a instanceof Error?a.message:a}`)})},p=(0,i.create)((a,b)=>({workspaces:j,activeWorkspaceId:j.length>0?n(j):null,sidebarCollapsed:!1,sidebarWidth:240,sidebarTab:"workspace",isLoading:k,error:null,hydrate:b=>{let c=n(b.workspaces,b.activeWorkspaceId);l(c),c&&m(c),a({workspaces:b.workspaces,activeWorkspaceId:c,sidebarCollapsed:b.sidebarCollapsed,sidebarWidth:b.sidebarWidth,isLoading:!1,error:null})},fetchWorkspaces:async()=>{a({isLoading:!0,error:null});try{let b=await fetch("/api/workspace");if(!b.ok)throw Error();let c=await b.json(),d=n(c.workspaces,c.activeWorkspaceId);l(d),a({workspaces:c.workspaces,activeWorkspaceId:d,sidebarCollapsed:c.sidebarCollapsed??!1,sidebarWidth:c.sidebarWidth??240,isLoading:!1})}catch{a({error:(0,d.t)("workspace","fetchError"),isLoading:!1})}},syncWorkspaces:async()=>{try{let c=await fetch("/api/workspace");if(!c.ok)return;let d=await c.json(),e=b().workspaces;if(JSON.stringify(e)===JSON.stringify(d.workspaces))return;a({workspaces:d.workspaces})}catch(a){console.log(`[workspace-store] sync error: ${a instanceof Error?a.message:a}`)}},createWorkspace:async(b,e,f)=>{try{let c=await fetch("/api/workspace",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({directory:b,name:e,resumeSessionId:f})});if(!c.ok){let a=await c.json();throw Error(a.error||(0,d.t)("workspace","createFailed"))}let g=await c.json();return a(a=>({workspaces:[...a.workspaces,g]})),g}catch(b){let a=b instanceof Error?b.message:(0,d.t)("workspace","createFailed");return c.toast.error(a),null}},deleteWorkspace:async a=>{try{let b=await fetch(`/api/workspace/${a}`,{method:"DELETE"});if(!b.ok&&204!==b.status&&404!==b.status)throw Error();return!0}catch{return c.toast.error((0,d.t)("workspace","deleteFailed")),!1}},removeWorkspace:b=>{a(a=>{let c=a.workspaces.filter(a=>a.id!==b),d=a.activeWorkspaceId===b,e=d?c[0]?.id??null:a.activeWorkspaceId;return d&&(l(e),e&&m(e)),{workspaces:c,activeWorkspaceId:e}})},switchWorkspace:b=>{a({activeWorkspaceId:b}),l(b),m(b)},renameWorkspace:async(e,f)=>{let g=b().workspaces.find(a=>a.id===e),h=g?.name??"";a(a=>({workspaces:a.workspaces.map(a=>a.id===e?{...a,name:f}:a)}));try{if(!(await fetch(`/api/workspace/${e}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:f})})).ok)throw Error();return!0}catch{return a(a=>({workspaces:a.workspaces.map(a=>a.id===e?{...a,name:h}:a)})),c.toast.error((0,d.t)("workspace","renameFailed")),!1}},reorderWorkspaces:(e,f)=>{let g=[...b().workspaces],[h]=g.splice(e,1);g.splice(f,0,h),a({workspaces:g}),fetch("/api/workspace/reorder",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({workspaceIds:g.map(a=>a.id)})}).catch(()=>{c.toast.error((0,d.t)("workspace","reorderFailed")),b().fetchWorkspaces()})},updateDirectories:(b,c)=>{a(a=>({workspaces:a.workspaces.map(a=>a.id===b?{...a,directories:c}:a)}))},toggleSidebar:()=>{a(a=>{let b=!a.sidebarCollapsed;return o({sidebarCollapsed:b}),{sidebarCollapsed:b}})},setSidebarWidth:b=>{a({sidebarWidth:b})},saveSidebarWidth:a=>{o({sidebarWidth:a})},setSidebarTab:b=>{a({sidebarTab:b});try{localStorage.setItem("sidebar-tab",b)}catch{}},validateDirectory:async a=>{try{let b=await fetch(`/api/workspace/validate?directory=${encodeURIComponent(a)}`);if(!b.ok)throw Error();return await b.json()}catch{return{valid:!1,error:(0,d.t)("workspace","validateFailed")}}}}));a.s(["default",0,p],912251)},626605,a=>{"use strict";a.s(["default",()=>C,"navigateToTab",()=>A,"navigateToTabOrCreate",()=>B,"useLayoutStore",()=>z]);var b=a.i(127669),c=a.i(41910),d=a.i(4873),e=a.i(484682),f=a.i(510414),g=a.i(892209),h=a.i(959709),i=a.i(760644),j=a.i(912251),k=a.i(199462),l=a.i(144784);let m="pt-active-pane-",n="pt-active-tab-",o=a=>{try{return sessionStorage.getItem(`${n}${a}`)}catch{return null}},p=null,q=null,r=null,s=!1,t=(a,b)=>{if(!b)return a;let c=a.includes("?")?"&":"?";return`${a}${c}workspace=${b}`},u=(a,b)=>{let c=a?(0,l.collectPanes)(a.root).length:0;return{paneCount:c,canSplit:c<10&&!b}},v=(a,b,c)=>{a({layout:c,...u(c,b().isSplitting)})},w=(a,b,c)=>{let d=b().layout;if(d){let a=(0,l.collectPanes)(c.root);for(let b of(d.activePaneId&&a.some(a=>a.id===d.activePaneId)&&(c.activePaneId=d.activePaneId),a)){let a=(0,l.findPane)(d.root,b.id);a?.activeTabId&&b.tabs.some(b=>b.id===a.activeTabId)&&(b.activeTabId=a.activeTabId)}}a({layout:c,...u(c,b().isSplitting)})},x=(a,b,c,d)=>{let{layout:e}=b();if(!e)return;let f=(0,l.updatePaneInTree)(e.root,c,d);f!==e.root&&v(a,b,{...e,root:f})},y=async(a,b)=>{try{let c=await fetch(a,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(b)});if(!c.ok)return null;return await c.json()}catch{return null}},z=(0,d.create)((a,b)=>({layout:null,isLoading:!0,error:null,isSplitting:!1,workspaceId:null,retryCount:0,paneCount:0,canSplit:!1,pendingFocusTabId:null,setWorkspaceId:b=>{s=!1,a({workspaceId:b})},setLayout:c=>{v(a,b,c)},fetchLayout:async(c,d)=>{if(s)return;let e=c??b().workspaceId;if(!e)return;p?.abort();let h=new AbortController;p=h,b().layout||a({isLoading:!0,error:null});try{let c=await fetch(t("/api/layout",e),{signal:h.signal});if(!c.ok)throw Error();let f=await c.json();if(h.signal.aborted)return;let g=b().layout;if(!1!==d){let a=(0,l.collectPanes)(f.root);if(g)for(let b of(g.activePaneId&&a.some(a=>a.id===g.activePaneId)&&(f.activePaneId=g.activePaneId),a)){let a=(0,l.findPane)(g.root,b.id);a?.activeTabId&&b.tabs.some(b=>b.id===a.activeTabId)&&(b.activeTabId=a.activeTabId)}else{let b=(a=>{try{return sessionStorage.getItem(`${m}${a}`)}catch{return null}})(e);for(let c of(b&&a.some(a=>a.id===b)&&(f.activePaneId=b),a)){let a=o(c.id);a&&c.tabs.some(b=>b.id===a)&&(c.activeTabId=a)}}}if(g){let c={root:g.root,activePaneId:g.activePaneId},d={root:f.root,activePaneId:f.activePaneId};if(JSON.stringify(c)===JSON.stringify(d)){let c=b().pendingFocusTabId;c&&(a({pendingFocusTabId:null}),b().focusTab(c));return}}let i=b().pendingFocusTabId,j=null;if(i){for(let b of(a({pendingFocusTabId:null}),(0,l.collectPanes)(f.root)))if(b.tabs.some(a=>a.id===i)){f.activePaneId=b.id,b.activeTabId=i,j=b.id;break}}a({layout:f,retryCount:0,...u(f,b().isSplitting)}),j&&(y(t("/api/layout",e),{activePaneId:j}),y(t(`/api/layout/pane/${j}`,e),{activeTabId:i}))}catch(d){if(d instanceof DOMException&&"AbortError"===d.name)return;let c=b().retryCount+1;if(a({retryCount:c}),c>=3)try{let c=await fetch(t("/api/layout/pane",e),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({})});if(c.ok){let{paneId:d,tab:e}=await c.json(),h={root:{type:"pane",id:d,tabs:[e],activeTabId:e.id},activePaneId:d,updatedAt:new Date().toISOString()};a({layout:h,...u(h,b().isSplitting)}),f.toast.info((0,g.t)("terminal","fallbackLayout")),a({retryCount:0});return}}catch{}a({error:(0,g.t)("terminal","layoutFetchError")}),q?.()}finally{h.signal.aborted||a({isLoading:!1})}},splitPane:async(c,d)=>{let{layout:e,isSplitting:h,workspaceId:i}=b();if(e&&!h&&!((0,l.collectPanes)(e.root).length>=10)){a({isSplitting:!0,canSplit:!1});try{let f,g,h=(0,l.findPane)(e.root,c),j=h?.tabs.find(a=>a.id===h.activeTabId);if(j){g=j.panelType;try{let a=await fetch(t(`/api/layout/cwd?session=${j.sessionName}`,i));a.ok&&(f=(await a.json()).cwd)}catch{}}let k=await fetch(t("/api/layout/pane",i),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sourcePaneId:c,orientation:d,cwd:f,panelType:g})});if(!k.ok)throw Error();let m=await k.json();v(a,b,m)}catch{f.toast.error((0,g.t)("terminal","splitFailed"))}finally{a(a=>({isSplitting:!1,canSplit:a.paneCount<10}))}}},closePane:async c=>{let{layout:d,workspaceId:e}=b();if(d&&!((0,l.collectPanes)(d.root).length<=1))try{let d=await fetch(t(`/api/layout/pane/${c}`,e),{method:"DELETE"});if(!d.ok)throw Error();let f=await d.json();v(a,b,f)}catch{f.toast.error("Pane을 닫을 수 없습니다")}},focusPane:c=>{let{layout:d,workspaceId:e}=b();d&&d.activePaneId!==c&&(a({layout:{...d,activePaneId:c}}),y(t("/api/layout",e),{activePaneId:c}).then(c=>{c&&w(a,b,c)}))},updateRatio:(c,d)=>{let{layout:e,workspaceId:f}=b();e&&(a({layout:{...e,root:(0,l.updateRatioAtPath)(e.root,c,d)}}),r&&clearTimeout(r),r=setTimeout(()=>{r=null,y(t("/api/layout",f),{ratioUpdate:{path:c,ratio:d}}).then(c=>{c&&w(a,b,c)})},300))},moveTab:(c,d,e,f)=>{if(d===e)return;let{layout:g,workspaceId:h}=b();if(!g)return;let i=JSON.parse(JSON.stringify(g)),j=(0,l.findPane)(i.root,d),k=(0,l.findPane)(i.root,e);if(j&&k){let g=j.tabs.findIndex(a=>a.id===c);if(-1!==g){let[h]=j.tabs.splice(g,1);j.activeTabId===c&&(j.activeTabId=j.tabs[0]?.id??null),j.tabs.forEach((a,b)=>{a.order=b}),k.tabs.splice(f,0,h),k.tabs.forEach((a,b)=>{a.order=b}),k.activeTabId=c,0===j.tabs.length&&(0,l.collectPanes)(i.root).length>1&&(0,l.removePaneWithFocus)(i,d),i.activePaneId=e,v(a,b,i)}}fetch(t(`/api/layout/pane/${d}/tabs/${c}/move`,h),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({toPaneId:e,toIndex:f})}).then(async c=>{c.ok?w(a,b,await c.json()):await b().fetchLayout(void 0,!1)}).catch(()=>b().fetchLayout(void 0,!1))},createTabInPane:async(c,d,e)=>{let{layout:h,workspaceId:j}=b();try{let f,g=d,m=h?(0,l.findPane)(h.root,c):void 0,n=m?.tabs.find(a=>a.id===m.activeTabId);!g&&n&&(g=n.panelType),"web-browser"!==g&&n&&(f=k.default.getState().metadata[n.id]?.cwd);let o=await fetch(t(`/api/layout/pane/${c}/tabs`,j),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:f,panelType:g,command:e})});if(!o.ok)throw Error();let p=await o.json();return e&&i.default.getState().initTab(p.id,{panelType:g,sessionView:"check"}),x(a,b,c,a=>({...a,tabs:[...a.tabs,p],activeTabId:p.id})),b().fetchLayout(),p}catch{return f.toast.error((0,g.t)("terminal","tabCreateFailed")),null}},deleteTabInPane:async(c,d)=>{(0,h.clearInputDraft)(d),i.default.getState().cancelTab(d),x(a,b,c,a=>{let b=[...a.tabs].sort((a,b)=>a.order-b.order),c=b.findIndex(a=>a.id===d),e=b.filter(a=>a.id!==d);e.forEach((a,b)=>{a.order=b});let f=a.activeTabId;if(a.activeTabId===d){let a=b[c+1]||b[c-1];f=a?.id??null}return{...a,tabs:e,activeTabId:f}});let{workspaceId:e}=b();try{let a=await fetch(t(`/api/layout/pane/${c}/tabs/${d}`,e),{method:"DELETE"});a.ok||404===a.status||(f.toast.error((0,g.t)("terminal","tabDeleteError")),await b().fetchLayout())}catch{f.toast.error((0,g.t)("terminal","tabDeleteError")),await b().fetchLayout()}},restartTabInPane:async(a,c,d)=>{let{workspaceId:e}=b();try{return(await fetch(t(`/api/layout/pane/${a}/tabs/${c}`,e),{method:"POST",headers:d?{"Content-Type":"application/json"}:void 0,body:d?JSON.stringify({command:d}):void 0})).ok}catch{return f.toast.error((0,g.t)("terminal","sessionRestartFailed")),!1}},switchTabInPane:(c,d)=>{x(a,b,c,a=>({...a,activeTabId:d}));let{workspaceId:e}=b();y(t(`/api/layout/pane/${c}`,e),{activeTabId:d}).then(c=>{c&&w(a,b,c)})},renameTabInPane:async(c,d,e)=>{x(a,b,c,a=>({...a,tabs:a.tabs.map(a=>a.id===d?{...a,name:e}:a)}));let{workspaceId:h}=b(),i=await y(t(`/api/layout/pane/${c}/tabs/${d}`,h),{name:e});i?w(a,b,i):f.toast.error((0,g.t)("terminal","tabRenameFailed"))},reorderTabsInPane:(c,d)=>{x(a,b,c,a=>{let b=new Map(a.tabs.map(a=>[a.id,a])),c=d.map((a,c)=>{let d=b.get(a);return d?{...d,order:c}:null}).filter(a=>null!==a);return{...a,tabs:c}});let{workspaceId:e}=b();y(t(`/api/layout/pane/${c}/tabs/order`,e),{tabIds:d}).then(c=>{c&&w(a,b,c)})},removeTabLocally:(a,c)=>{(0,h.clearInputDraft)(c);let{workspaceId:d}=b();fetch(t(`/api/layout/pane/${a}/tabs/${c}`,d),{method:"DELETE"}).then(()=>b().fetchLayout()).catch(()=>{console.log("[layout] removeTabLocally failed")})},equalizeRatios:()=>{let{workspaceId:c}=b();y(t("/api/layout",c),{equalize:!0}).then(c=>{c&&w(a,b,c)})},updateTabPanelType:(c,d,e)=>{x(a,b,c,a=>({...a,tabs:a.tabs.map(a=>{if(a.id!==d)return a;let b={...a,panelType:e};return"terminal"===e&&(b.claudeSessionId=null),b})})),i.default.getState().setPanelType(d,e);let{workspaceId:f}=b();y(t(`/api/layout/pane/${c}/tabs/${d}`,f),{panelType:e}).then(c=>{c&&w(a,b,c)})},clearLayout:()=>{s=!0,p?.abort(),a({layout:null,paneCount:0,canSplit:!1})},focusTab:a=>{let{layout:c}=b();if(!c)return!1;for(let d of(0,l.collectPanes)(c.root))if(d.tabs.some(b=>b.id===a))return b().focusPane(d.id),b().switchTabInPane(d.id,a),!0;return!1},focusPrevTab:()=>{let{layout:a}=b();if(!a)return;let c=(0,l.collectPanes)(a.root),d=c.find(b=>b.id===a.activePaneId);if(!d)return;let e=[...d.tabs].sort((a,b)=>a.order-b.order),f=e.findIndex(a=>a.id===d.activeTabId);if(f>0)b().switchTabInPane(d.id,e[f-1].id);else{let a=c.indexOf(d);if(a>0){let d=c[a-1],e=[...d.tabs].sort((a,b)=>a.order-b.order);b().focusPane(d.id),b().switchTabInPane(d.id,e[e.length-1].id)}}},focusNextTab:()=>{let{layout:a}=b();if(!a)return;let c=(0,l.collectPanes)(a.root),d=c.find(b=>b.id===a.activePaneId);if(!d)return;let e=[...d.tabs].sort((a,b)=>a.order-b.order),f=e.findIndex(a=>a.id===d.activeTabId);if(f<e.length-1)b().switchTabInPane(d.id,e[f+1].id);else{let a=c.indexOf(d);if(a<c.length-1){let d=c[a+1],e=[...d.tabs].sort((a,b)=>a.order-b.order);b().focusPane(d.id),b().switchTabInPane(d.id,e[0].id)}}},focusTabByIndex:a=>{let{layout:c}=b();if(!c?.activePaneId)return;let d=(0,l.collectPanes)(c.root).find(a=>a.id===c.activePaneId);if(!d)return;let e=[...d.tabs].sort((a,b)=>a.order-b.order),f=a>=e.length?e[e.length-1]:e[a];f&&f.id!==d.activeTabId&&b().switchTabInPane(d.id,f.id)}}));z.subscribe((a,b)=>{if(a.layout&&a.workspaceId&&a.layout!==b.layout){var c=a.workspaceId,d=a.layout;try{for(let a of(d.activePaneId&&sessionStorage.setItem(`${m}${c}`,d.activePaneId),(0,l.collectPanes)(d.root)))a.activeTabId&&sessionStorage.setItem(`${n}${a.id}`,a.activeTabId)}catch{}}});let A=(a,b)=>{let d=z.getState();if("/"!==c.default.pathname){z.setState({pendingFocusTabId:b}),j.default.getState().switchWorkspace(a),c.default.push("/");return}a===d.workspaceId?d.focusTab(b):(d.clearLayout(),z.setState({pendingFocusTabId:b}),j.default.getState().switchWorkspace(a))},B=async(a,b,c,d,e)=>{let f=j.default.getState(),g=a,h=f.workspaces.find(b=>b.id===a);if(!h){if(!e)return;let a=await f.createWorkspace(e,d,c??void 0);if(!a)return;g=a.id;let b=await fetch(t("/api/layout",g));if(!b.ok)return;let h=await b.json(),j=(0,l.collectAllTabs)(h.root)[0];if(!j)return;c&&i.default.getState().initTab(j.id,{panelType:"claude-code",sessionView:"check"}),A(g,j.id);return}let k=await fetch(t("/api/layout",g));if(!k.ok)return;let m=await k.json();if(c){let a=(0,l.collectAllTabs)(m.root).find(a=>a.claudeSessionId===c);if(a){i.default.getState().setSessionView(a.id,"timeline"),A(g,a.id);return}}else if((0,l.collectAllTabs)(m.root).find(a=>a.id===b))return void A(g,b);let n=m.activePaneId??(0,l.getFirstPaneId)(m.root),o={panelType:"claude-code",cwd:h.directories[0]};c&&(o.resumeSessionId=c);let p=await fetch(t(`/api/layout/pane/${n}/tabs`,g),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)});if(!p.ok)return;let q=await p.json();c&&i.default.getState().initTab(q.id,{panelType:"claude-code",sessionView:"check"}),g===z.getState().workspaceId?(z.setState({pendingFocusTabId:q.id}),z.getState().fetchLayout()):A(g,q.id)},C=({workspaceId:a,onFetchError:c})=>((0,b.useEffect)(()=>{q=c??null},[c]),(0,b.useEffect)(()=>{if(a){let b=z.getState();b.setWorkspaceId(a),b.fetchLayout(a)}},[a]),(0,b.useEffect)(()=>z.subscribe(a=>{let b=a.workspaceId;if(!b||!a.layout?.root)return;let c=(0,l.collectPanes)(a.layout.root).flatMap(a=>a.tabs.map(a=>a.id));i.default.getState().setTabOrder(b,c)}),[]),z((0,e.useShallow)(a=>({layout:a.layout,isLoading:a.isLoading,error:a.error,isSplitting:a.isSplitting,paneCount:a.paneCount,canSplit:a.canSplit,splitPane:a.splitPane,closePane:a.closePane,focusPane:a.focusPane,updateRatio:a.updateRatio,moveTab:a.moveTab,createTabInPane:a.createTabInPane,deleteTabInPane:a.deleteTabInPane,restartTabInPane:a.restartTabInPane,switchTabInPane:a.switchTabInPane,renameTabInPane:a.renameTabInPane,reorderTabsInPane:a.reorderTabsInPane,removeTabLocally:a.removeTabLocally,equalizeRatios:a.equalizeRatios,updateTabPanelType:a.updateTabPanelType,clearLayout:a.clearLayout,fetchLayout:a.fetchLayout,focusTab:a.focusTab,focusPrevTab:a.focusPrevTab,focusNextTab:a.focusNextTab,focusTabByIndex:a.focusTabByIndex}))))},199462,a=>{"use strict";a.s(["default",()=>j]);var b=a.i(4873),c=a.i(626605),d=a.i(144784),e=a.i(912251);let f=null,g="",h=()=>{f&&clearTimeout(f),f=setTimeout(()=>{f=null;let{metadata:a}=i.getState(),b=c.useLayoutStore.getState().layout,h=c.useLayoutStore.getState().workspaceId;if(!b||!h)return;let j=`?workspace=${h}`;for(let c of(0,d.collectPanes)(b.root))for(let b of c.tabs){let d=a[b.id];if(!d)continue;let e={};void 0!==d.title&&d.title!==b.title&&(e.title=d.title),void 0!==d.cwd&&d.cwd!==b.cwd&&(e.cwd=d.cwd),void 0!==d.lastCommand&&(d.lastCommand??null)!==(b.lastCommand??null)&&(e.lastCommand=d.lastCommand??null),Object.keys(e).length>0&&fetch(`/api/layout/pane/${c.id}/tabs/${b.id}${j}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}).catch(a=>{console.log(`[tab-metadata] sync failed: ${a instanceof Error?a.message:a}`)})}let k=[...new Set(Object.values(a).map(a=>a.cwd).filter(a=>!!a))],l=k.join("\0");if(l!==g){g=l;let{activeWorkspaceId:a,updateDirectories:b}=e.default.getState();a&&k.length>0&&b(a,k)}},100)},i=(0,b.create)(a=>({metadata:{},setTitle:(b,c)=>{a(a=>{let d=a.metadata[b];return d?.title===c?a:{metadata:{...a.metadata,[b]:{...d,title:c}}}}),h()},setCwd:(b,c)=>{a(a=>{let d=a.metadata[b];return d?.cwd===c?a:{metadata:{...a.metadata,[b]:{...d,cwd:c}}}}),h()},setLastCommand:(b,c)=>{a(a=>{let d=a.metadata[b];return d?.lastCommand===c?a:{metadata:{...a.metadata,[b]:{...d,lastCommand:c}}}}),h()},removeTab:b=>{a(a=>{let{[b]:c,...d}=a.metadata;return{metadata:d}}),h()},hydrate:b=>{a(a=>{let c={};for(let[d,e]of Object.entries(b)){let b=a.metadata[d];b?c[d]={...e,...b.title?{title:b.title}:{},...b.cwd?{cwd:b.cwd}:{}}:c[d]=e}return{metadata:c}}),g=""},retainOnly:b=>{a(a=>{let c={};for(let d of b)a.metadata[d]&&(c[d]=a.metadata[d]);return{metadata:c}})},reset:()=>{f&&clearTimeout(f),f=null,g="",a({metadata:{}})}})),j=i},266254,168711,175679,206456,409679,a=>{"use strict";var b=a.i(127669),c=a.i(760644),d=a.i(199462),e=a.i(4873);let f=(0,e.create)(a=>({data:null,setData:b=>a({data:b})}));a.s(["default",0,f],168711);let g=(0,e.create)(a=>({entries:[],syncFromServer:b=>a({entries:b}),upsertEntry:b=>a(a=>{let c=a.entries.findIndex(a=>a.id===b.id);if(c>=0){let d=[...a.entries];return d[c]=b,{entries:d}}return{entries:[b,...a.entries]}})}));a.s(["default",0,g],175679);let h=new Set(["zsh","bash","fish","sh","-zsh","-bash","-fish","-sh"]),i=a=>{if("~"===a||"/"===a)return a;let b=a.replace(/\/$/,"").split("/");return b[b.length-1]||a},j=a=>{let b=a.trim();if(!b)return null;let c=b.indexOf("|");return c>0?b.slice(0,c):null},k=a=>{let b=a.trim();if(!b)return"";let c=j(a);if(null!==c){let a=b.slice(b.indexOf("|")+1);return h.has(c)?i(a):c}let d=b.match(/@[^:]+:\s*(.*)/);if(d)return i(d[1].trim());if(b.startsWith("/")||b.startsWith("~"))return i(b);let e=b.split(/\s+/)[0];return h.has(e)?"":e||""};a.s(["formatTabTitle",0,k,"isShellProcess",0,a=>{let b=j(a);return null!==b&&h.has(b)},"parseCurrentCommand",0,j],206456);let l=null;a.s(["ackNotificationInput",0,(a,b)=>{l?.readyState===WebSocket.OPEN&&l.send(JSON.stringify({type:"status:ack-notification",tabId:a,seq:b}))},"default",0,()=>{let a=(0,b.useRef)(0),e=(0,b.useRef)(null),h=(0,b.useRef)(!0);(0,b.useEffect)(()=>{h.current=!0;let b=()=>{if(!h.current)return;let i="https:"===location.protocol?"wss:":"ws:",j=new WebSocket(`${i}//${location.host}/api/status`);l=j,j.onopen=()=>{h.current&&(a.current=0,c.default.getState().setStatusWsConnected(!0))},j.onmessage=a=>{if(h.current)try{let b=JSON.parse(a.data);switch(b.type){case"status:sync":for(let[a,e]of(c.default.getState().syncAllFromServer(b.tabs),Object.entries(b.tabs)))e.paneTitle&&!d.default.getState().metadata[a]?.title&&d.default.getState().setTitle(a,k(e.paneTitle));break;case"status:update":c.default.getState().updateFromServer(b.tabId,{cliState:b.cliState,workspaceId:b.workspaceId,tabName:b.tabName,panelType:b.panelType,terminalStatus:b.terminalStatus,listeningPorts:b.listeningPorts,currentProcess:b.currentProcess,claudeSummary:b.claudeSummary,lastUserMessage:b.lastUserMessage,lastAssistantMessage:b.lastAssistantMessage,currentAction:b.currentAction,readyForReviewAt:b.readyForReviewAt,busySince:b.busySince,dismissedAt:b.dismissedAt,claudeSessionId:b.claudeSessionId,compactingSince:b.compactingSince,lastEvent:b.lastEvent,eventSeq:b.eventSeq}),b.paneTitle&&d.default.getState().setTitle(b.tabId,k(b.paneTitle));break;case"status:hook-event":c.default.getState().applyHookEvent(b.tabId,b.event);break;case"rate-limits:update":f.getState().setData(b.data);break;case"session-history:sync":g.getState().syncFromServer(b.entries);break;case"session-history:update":g.getState().upsertEntry(b.entry)}}catch{}},j.onclose=()=>{if(!h.current)return;c.default.getState().setStatusWsConnected(!1),l=null;let d=Math.min(1e3*Math.pow(2,a.current),3e4);a.current++,e.current=setTimeout(b,d)},j.onerror=()=>{}};b();let i=()=>{if("visible"!==document.visibilityState)return;let c=l?.readyState;c!==WebSocket.OPEN&&c!==WebSocket.CONNECTING&&(e.current&&(clearTimeout(e.current),e.current=null),a.current=0,b())};return document.addEventListener("visibilitychange",i),()=>{h.current=!1,e.current&&(clearTimeout(e.current),e.current=null),l&&(l.close(),l=null),document.removeEventListener("visibilitychange",i)}},[])},"dismissTab",0,a=>{c.default.getState().dismissTab(a),l?.readyState===WebSocket.OPEN&&l.send(JSON.stringify({type:"status:tab-dismissed",tabId:a}))},"requestSync",0,()=>{l?.readyState===WebSocket.OPEN&&l.send(JSON.stringify({type:"status:request-sync"}))}],266254),a.i(986013),a.i(678240),a.i(626605);var m=a.i(721043);let n=async()=>{try{let a=await navigator.serviceWorker.ready,b=await a.pushManager.getSubscription();return b?.endpoint??null}catch{return null}},o=async a=>{fetch("/api/push/register-session",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({endpoint:await n(),sessionId:a}),keepalive:!0}).catch(()=>{})};a.s(["default",0,()=>{(0,b.useRef)(!1),(0,b.useEffect)(()=>{m.default},[]),(0,b.useEffect)(()=>{},[])},"registerPushTarget",0,o],409679)}];
1
+ module.exports=[760644,a=>{"use strict";var b=a.i(4873);let c={terminalConnected:!1,claudeProcess:null,claudeProcessCheckedAt:0,claudeInstalled:!0,sessionView:"session-list",cliState:"inactive",isTimelineLoading:!0,workspaceId:""},d=(a,b,c)=>{let d=a[b];return d?{...a,[b]:{...d,...c}}:a},e=(0,b.create)(a=>({tabs:{},tabOrders:{},statusWsConnected:!1,initTab:(b,d)=>a(a=>{let e=a.tabs[b],f={...c,...e,...d};return e?.cliState==="ready-for-review"&&"ready-for-review"!==f.cliState&&(f.cliState="ready-for-review",f.readyForReviewAt=e.readyForReviewAt),{tabs:{...a.tabs,[b]:f}}}),removeTab:b=>a(a=>{let{[b]:c,...d}=a.tabs;return{tabs:d}}),setTerminalConnected:(b,c)=>a(a=>{let e=a.tabs[b];return e&&e.terminalConnected!==c?{tabs:d(a.tabs,b,{terminalConnected:c})}:a}),setClaudeProcess:(b,c,e)=>a(a=>{let f=a.tabs[b];if(!f||f.claudeProcessCheckedAt>e||f.claudeProcess===c)return a;let g={claudeProcess:c,claudeProcessCheckedAt:e};return!0===c&&("check"===f.sessionView||"session-list"===f.sessionView)&&(g.sessionView="timeline"),!1===c&&!0===f.claudeProcess&&"timeline"===f.sessionView&&(g.sessionView="session-list"),{tabs:d(a.tabs,b,g)}}),setClaudeInstalled:(b,c)=>a(a=>{let e=a.tabs[b];return e&&e.claudeInstalled!==c?{tabs:d(a.tabs,b,{claudeInstalled:c})}:a}),setSessionView:(b,c)=>a(a=>{let e=a.tabs[b];return e&&e.sessionView!==c?{tabs:d(a.tabs,b,{sessionView:c})}:a}),setTimelineLoading:(b,c)=>a(a=>{let e=a.tabs[b];return e&&e.isTimelineLoading!==c?{tabs:d(a.tabs,b,{isTimelineLoading:c})}:a}),cancelTab:b=>a(a=>{let c=a.tabs[b];return c&&"cancelled"!==c.cliState?{tabs:d(a.tabs,b,{cliState:"cancelled",localUpdatedAt:Date.now()})}:a}),dismissTab:b=>a(a=>{let c=a.tabs[b];return c&&"ready-for-review"===c.cliState?{tabs:d(a.tabs,b,{cliState:"idle",dismissedAt:Date.now()})}:a}),setWorkspaceId:(b,c)=>a(a=>{let e=a.tabs[b];return e&&e.workspaceId!==c?{tabs:d(a.tabs,b,{workspaceId:c})}:a}),setPanelType:(b,c)=>a(a=>{let e=a.tabs[b];return e&&e.panelType!==c?{tabs:d(a.tabs,b,{panelType:c})}:a}),setCurrentProcess:(b,c)=>a(a=>{let e=a.tabs[b];if(!e)return a;let f=c??void 0;return e.currentProcess===f?a:{tabs:d(a.tabs,b,{currentProcess:f,localUpdatedAt:Date.now()})}}),setTabOrder:(b,c)=>a(a=>{let d=a.tabOrders[b];return d&&d.length===c.length&&d.every((a,b)=>a===c[b])?a:{tabOrders:{...a.tabOrders,[b]:c}}}),setStatusWsConnected:b=>a({statusWsConnected:b}),syncAllFromServer:b=>a(a=>{let d=Date.now(),e={};for(let[f,g]of Object.entries(b)){let b=a.tabs[f];if(b?.cliState==="cancelled"){e[f]=b;continue}b?.localUpdatedAt&&d-b.localUpdatedAt<3e4?e[f]={...b,cliState:g.cliState,workspaceId:g.workspaceId,tabName:g.tabName,terminalStatus:g.terminalStatus,listeningPorts:g.listeningPorts,claudeSummary:g.claudeSummary,lastUserMessage:g.lastUserMessage,lastAssistantMessage:g.lastAssistantMessage,currentAction:g.currentAction,readyForReviewAt:g.readyForReviewAt,busySince:g.busySince,dismissedAt:g.dismissedAt,claudeSessionId:g.claudeSessionId,compactingSince:g.compactingSince,lastEvent:g.lastEvent,eventSeq:g.eventSeq}:b?e[f]={...b,cliState:g.cliState,workspaceId:g.workspaceId,tabName:g.tabName,panelType:g.panelType??b.panelType,terminalStatus:g.terminalStatus,listeningPorts:g.listeningPorts,currentProcess:g.currentProcess,claudeSummary:g.claudeSummary,lastUserMessage:g.lastUserMessage,lastAssistantMessage:g.lastAssistantMessage,currentAction:g.currentAction,readyForReviewAt:g.readyForReviewAt,busySince:g.busySince,dismissedAt:g.dismissedAt,claudeSessionId:g.claudeSessionId,compactingSince:g.compactingSince,lastEvent:g.lastEvent,eventSeq:g.eventSeq}:e[f]={...c,cliState:g.cliState,workspaceId:g.workspaceId,tabName:g.tabName,panelType:g.panelType,terminalStatus:g.terminalStatus,listeningPorts:g.listeningPorts,currentProcess:g.currentProcess,claudeSummary:g.claudeSummary,lastUserMessage:g.lastUserMessage,lastAssistantMessage:g.lastAssistantMessage,currentAction:g.currentAction,readyForReviewAt:g.readyForReviewAt,busySince:g.busySince,dismissedAt:g.dismissedAt,claudeSessionId:g.claudeSessionId,compactingSince:g.compactingSince,lastEvent:g.lastEvent,eventSeq:g.eventSeq,...g.claudeSessionId?{sessionView:"timeline"}:{}}}for(let[b,c]of Object.entries(a.tabs))e[b]||(e[b]=c);return{tabs:e}}),updateFromServer:(b,e)=>a(a=>{if(null===e.cliState){let{[b]:c,...d}=a.tabs;return{tabs:d}}let f=a.tabs[b];if(f){if("cancelled"===f.cliState)return a;let c=void 0!==e.eventSeq&&void 0!==f.eventSeq&&e.eventSeq<f.eventSeq,g=void 0!==e.eventSeq&&(void 0===f.eventSeq||e.eventSeq>=f.eventSeq)?{lastEvent:e.lastEvent,eventSeq:e.eventSeq}:{},h=c?{cliState:f.cliState,readyForReviewAt:f.readyForReviewAt,busySince:f.busySince,dismissedAt:f.dismissedAt}:{cliState:e.cliState,readyForReviewAt:e.readyForReviewAt,busySince:e.busySince,dismissedAt:e.dismissedAt};return{tabs:d(a.tabs,b,{...h,workspaceId:e.workspaceId,tabName:e.tabName,panelType:e.panelType??f.panelType,terminalStatus:e.terminalStatus,listeningPorts:e.listeningPorts,currentProcess:e.currentProcess,claudeSummary:e.claudeSummary,lastUserMessage:e.lastUserMessage,lastAssistantMessage:e.lastAssistantMessage,currentAction:e.currentAction,claudeSessionId:e.claudeSessionId,compactingSince:e.compactingSince,...g})}}return{tabs:{...a.tabs,[b]:{...c,cliState:e.cliState,workspaceId:e.workspaceId,tabName:e.tabName,panelType:e.panelType,terminalStatus:e.terminalStatus,listeningPorts:e.listeningPorts,currentProcess:e.currentProcess,claudeSummary:e.claudeSummary,lastUserMessage:e.lastUserMessage,lastAssistantMessage:e.lastAssistantMessage,readyForReviewAt:e.readyForReviewAt,busySince:e.busySince,dismissedAt:e.dismissedAt,claudeSessionId:e.claudeSessionId,compactingSince:e.compactingSince,lastEvent:e.lastEvent,eventSeq:e.eventSeq,...e.claudeSessionId?{sessionView:"timeline"}:{}}}}}),applyHookEvent:(b,c)=>a(a=>{let e=a.tabs[b];return!e||void 0!==e.eventSeq&&c.seq<=e.eventSeq?a:{tabs:d(a.tabs,b,{lastEvent:c,eventSeq:c.seq})}})}));a.s(["default",0,e,"isCliIdle",0,a=>"idle"===a||"ready-for-review"===a,"selectGlobalStatus",0,a=>{let b=0,c=0;for(let d of Object.values(a))"busy"===d.cliState?b++:("ready-for-review"===d.cliState||"needs-input"===d.cliState)&&c++;return{busyCount:b,attentionCount:c}},"selectSessionView",0,(a,b)=>{let c=a[b];return c?c.sessionView:"session-list"},"selectTabDisplayStatus",0,(a,b)=>{let c=a[b];return c&&"inactive"!==c.cliState?"busy"===c.cliState?"busy":"ready-for-review"===c.cliState?"ready-for-review":"needs-input"===c.cliState?"needs-input":"unknown"===c.cliState?"unknown":"idle":"idle"},"selectWorkspacePortsLabel",0,(a,b)=>{let c=new Set;for(let d of Object.values(a))if(d.workspaceId===b&&d.listeningPorts)for(let a of d.listeningPorts)c.add(a);return 0===c.size?"":":"+[...c].sort((a,b)=>a-b).join(", :")}])},484682,a=>{"use strict";var b=a.i(127669);let c=(a,b)=>{let c=a instanceof Map?a:new Map(a.entries()),d=b instanceof Map?b:new Map(b.entries());if(c.size!==d.size)return!1;for(let[a,b]of c)if(!d.has(a)||!Object.is(b,d.get(a)))return!1;return!0};a.s(["useShallow",0,function(a){let d=b.default.useRef(void 0);return b=>{let e=a(b);return!function(a,b){if(Object.is(a,b))return!0;if("object"!=typeof a||null===a||"object"!=typeof b||null===b||Object.getPrototypeOf(a)!==Object.getPrototypeOf(b))return!1;if(Symbol.iterator in a&&Symbol.iterator in b){if("entries"in a&&"entries"in b)return c(a,b);let d=a[Symbol.iterator](),e=b[Symbol.iterator](),f=d.next(),g=e.next();for(;!f.done&&!g.done;){if(!Object.is(f.value,g.value))return!1;f=d.next(),g=e.next()}return!!f.done&&!!g.done}return c({entries:()=>Object.entries(a)},{entries:()=>Object.entries(b)})}(d.current,e)?d.current=e:d.current}}],484682)},959709,912251,a=>{"use strict";var b=a.i(127669),c=a.i(510414),d=a.i(892209),e=a.i(760644);let f=new Set(["/new","/clear"]),g=a=>`pt-input-draft:${a}`,h=a=>{try{localStorage.removeItem(g(a))}catch{}};a.s(["clearInputDraft",0,h,"default",0,(a,i,j,k)=>{let l=k?.tabId,[m,n]=(0,b.useState)(()=>l?(a=>{try{return localStorage.getItem(g(a))??""}catch{return""}})(l):""),o=(0,b.useRef)(null),p=(0,b.useMemo)(()=>(0,e.isCliIdle)(a)||"unknown"===a?"input":"busy"===a||"needs-input"===a?"interrupt":"disabled",[a]),q=k?.onRestartSession,r=k?.onMessageSent,s=(0,b.useRef)(null);(0,b.useEffect)(()=>{if(l)return s.current&&clearTimeout(s.current),s.current=setTimeout(()=>((a,b)=>{try{b?localStorage.setItem(g(a),b):localStorage.removeItem(g(a))}catch{}})(l,m),300),()=>{s.current&&clearTimeout(s.current)}},[l,m]);let t=(0,b.useCallback)(()=>{if("disabled"===p)return void c.toast.error("Claude Code가 실행 중이 아닙니다");if(!j)return void c.toast.error((0,d.t)("connection","terminalDisconnected"));if(""!==m.trim()){if(f.has(m.trim().toLowerCase())){q?.(),n(""),l&&h(l);return}m.includes("\n")?(i(`\x1b[200~${m}\x1b[201~\r`),setTimeout(()=>i("\r"),500)):(i(m),setTimeout(()=>i("\r"),50)),m.trim().startsWith("/")||r?.(m.trim()),n(""),l&&h(l)}},[p,m,i,j,q,r,l]),u=(0,b.useCallback)(()=>{j?i("\x1b\x1b"):c.toast.error((0,d.t)("connection","terminalDisconnected"))},[i,j]),v=(0,b.useCallback)(()=>{let a=o.current;if(!a)return;a.focus();let b=a.value.length;a.setSelectionRange(b,b)},[]),w="disabled"!==p&&j;return{value:m,setValue:n,mode:p,canSend:w,send:t,interrupt:u,textareaRef:o,focusInput:v}}],959709);var i=a.i(4873);let j=[],k=!0,l=a=>{},m=a=>{fetch("/api/workspace/active",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({activeWorkspaceId:a})}).catch(()=>{})},n=(a,b)=>b&&a.some(a=>a.id===b)?b:a[0]?.id??null,o=a=>{fetch("/api/workspace/active",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)}).catch(a=>{console.log(`[workspace-store] active update failed: ${a instanceof Error?a.message:a}`)})},p=(0,i.create)((a,b)=>({workspaces:j,activeWorkspaceId:j.length>0?n(j):null,sidebarCollapsed:!1,sidebarWidth:240,sidebarTab:"workspace",isLoading:k,error:null,hydrate:b=>{let c=n(b.workspaces,b.activeWorkspaceId);l(c),c&&m(c),a({workspaces:b.workspaces,activeWorkspaceId:c,sidebarCollapsed:b.sidebarCollapsed,sidebarWidth:b.sidebarWidth,isLoading:!1,error:null})},fetchWorkspaces:async()=>{a({isLoading:!0,error:null});try{let b=await fetch("/api/workspace");if(!b.ok)throw Error();let c=await b.json(),d=n(c.workspaces,c.activeWorkspaceId);l(d),a({workspaces:c.workspaces,activeWorkspaceId:d,sidebarCollapsed:c.sidebarCollapsed??!1,sidebarWidth:c.sidebarWidth??240,isLoading:!1})}catch{a({error:(0,d.t)("workspace","fetchError"),isLoading:!1})}},syncWorkspaces:async()=>{try{let c=await fetch("/api/workspace");if(!c.ok)return;let d=await c.json(),e=b().workspaces;if(JSON.stringify(e)===JSON.stringify(d.workspaces))return;a({workspaces:d.workspaces})}catch(a){console.log(`[workspace-store] sync error: ${a instanceof Error?a.message:a}`)}},createWorkspace:async(b,e,f)=>{try{let c=await fetch("/api/workspace",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({directory:b,name:e,resumeSessionId:f})});if(!c.ok){let a=await c.json();throw Error(a.error||(0,d.t)("workspace","createFailed"))}let g=await c.json();return a(a=>({workspaces:[...a.workspaces,g]})),g}catch(b){let a=b instanceof Error?b.message:(0,d.t)("workspace","createFailed");return c.toast.error(a),null}},deleteWorkspace:async a=>{try{let b=await fetch(`/api/workspace/${a}`,{method:"DELETE"});if(!b.ok&&204!==b.status&&404!==b.status)throw Error();return!0}catch{return c.toast.error((0,d.t)("workspace","deleteFailed")),!1}},removeWorkspace:b=>{a(a=>{let c=a.workspaces.filter(a=>a.id!==b),d=a.activeWorkspaceId===b,e=d?c[0]?.id??null:a.activeWorkspaceId;return d&&(l(e),e&&m(e)),{workspaces:c,activeWorkspaceId:e}})},switchWorkspace:b=>{a({activeWorkspaceId:b}),l(b),m(b)},renameWorkspace:async(e,f)=>{let g=b().workspaces.find(a=>a.id===e),h=g?.name??"";a(a=>({workspaces:a.workspaces.map(a=>a.id===e?{...a,name:f}:a)}));try{if(!(await fetch(`/api/workspace/${e}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:f})})).ok)throw Error();return!0}catch{return a(a=>({workspaces:a.workspaces.map(a=>a.id===e?{...a,name:h}:a)})),c.toast.error((0,d.t)("workspace","renameFailed")),!1}},reorderWorkspaces:(e,f)=>{let g=[...b().workspaces],[h]=g.splice(e,1);g.splice(f,0,h),a({workspaces:g}),fetch("/api/workspace/reorder",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({workspaceIds:g.map(a=>a.id)})}).catch(()=>{c.toast.error((0,d.t)("workspace","reorderFailed")),b().fetchWorkspaces()})},updateDirectories:(b,c)=>{a(a=>({workspaces:a.workspaces.map(a=>a.id===b?{...a,directories:c}:a)}))},toggleSidebar:()=>{a(a=>{let b=!a.sidebarCollapsed;return o({sidebarCollapsed:b}),{sidebarCollapsed:b}})},setSidebarWidth:b=>{a({sidebarWidth:b})},saveSidebarWidth:a=>{o({sidebarWidth:a})},setSidebarTab:b=>{a({sidebarTab:b});try{localStorage.setItem("sidebar-tab",b)}catch{}},validateDirectory:async a=>{try{let b=await fetch(`/api/workspace/validate?directory=${encodeURIComponent(a)}`);if(!b.ok)throw Error();return await b.json()}catch{return{valid:!1,error:(0,d.t)("workspace","validateFailed")}}}}));a.s(["default",0,p],912251)},626605,a=>{"use strict";a.s(["default",()=>C,"navigateToTab",()=>A,"navigateToTabOrCreate",()=>B,"useLayoutStore",()=>z]);var b=a.i(127669),c=a.i(41910),d=a.i(4873),e=a.i(484682),f=a.i(510414),g=a.i(892209),h=a.i(959709),i=a.i(760644),j=a.i(912251),k=a.i(199462),l=a.i(144784);let m="pt-active-pane-",n="pt-active-tab-",o=a=>{try{return sessionStorage.getItem(`${n}${a}`)}catch{return null}},p=null,q=null,r=null,s=!1,t=(a,b)=>{if(!b)return a;let c=a.includes("?")?"&":"?";return`${a}${c}workspace=${b}`},u=(a,b)=>{let c=a?(0,l.collectPanes)(a.root).length:0;return{paneCount:c,canSplit:c<10&&!b}},v=(a,b,c)=>{a({layout:c,...u(c,b().isSplitting)})},w=(a,b,c)=>{let d=b().layout;if(d){let a=(0,l.collectPanes)(c.root);for(let b of(d.activePaneId&&a.some(a=>a.id===d.activePaneId)&&(c.activePaneId=d.activePaneId),a)){let a=(0,l.findPane)(d.root,b.id);a?.activeTabId&&b.tabs.some(b=>b.id===a.activeTabId)&&(b.activeTabId=a.activeTabId)}}a({layout:c,...u(c,b().isSplitting)})},x=(a,b,c,d)=>{let{layout:e}=b();if(!e)return;let f=(0,l.updatePaneInTree)(e.root,c,d);f!==e.root&&v(a,b,{...e,root:f})},y=async(a,b)=>{try{let c=await fetch(a,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(b)});if(!c.ok)return null;return await c.json()}catch{return null}},z=(0,d.create)((a,b)=>({layout:null,isLoading:!0,error:null,isSplitting:!1,workspaceId:null,retryCount:0,paneCount:0,canSplit:!1,pendingFocusTabId:null,setWorkspaceId:b=>{s=!1,a({workspaceId:b})},setLayout:c=>{v(a,b,c)},fetchLayout:async(c,d)=>{if(s)return;let e=c??b().workspaceId;if(!e)return;p?.abort();let h=new AbortController;p=h,b().layout||a({isLoading:!0,error:null});try{let c=await fetch(t("/api/layout",e),{signal:h.signal});if(!c.ok)throw Error();let f=await c.json();if(h.signal.aborted)return;let g=b().layout;if(!1!==d){let a=(0,l.collectPanes)(f.root);if(g)for(let b of(g.activePaneId&&a.some(a=>a.id===g.activePaneId)&&(f.activePaneId=g.activePaneId),a)){let a=(0,l.findPane)(g.root,b.id);a?.activeTabId&&b.tabs.some(b=>b.id===a.activeTabId)&&(b.activeTabId=a.activeTabId)}else{let b=(a=>{try{return sessionStorage.getItem(`${m}${a}`)}catch{return null}})(e);for(let c of(b&&a.some(a=>a.id===b)&&(f.activePaneId=b),a)){let a=o(c.id);a&&c.tabs.some(b=>b.id===a)&&(c.activeTabId=a)}}}if(g){let c={root:g.root,activePaneId:g.activePaneId},d={root:f.root,activePaneId:f.activePaneId};if(JSON.stringify(c)===JSON.stringify(d)){let c=b().pendingFocusTabId;c&&(a({pendingFocusTabId:null}),b().focusTab(c));return}}let i=b().pendingFocusTabId,j=null;if(i){for(let b of(a({pendingFocusTabId:null}),(0,l.collectPanes)(f.root)))if(b.tabs.some(a=>a.id===i)){f.activePaneId=b.id,b.activeTabId=i,j=b.id;break}}a({layout:f,retryCount:0,...u(f,b().isSplitting)}),j&&(y(t("/api/layout",e),{activePaneId:j}),y(t(`/api/layout/pane/${j}`,e),{activeTabId:i}))}catch(d){if(d instanceof DOMException&&"AbortError"===d.name)return;let c=b().retryCount+1;if(a({retryCount:c}),c>=3)try{let c=await fetch(t("/api/layout/pane",e),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({})});if(c.ok){let{paneId:d,tab:e}=await c.json(),h={root:{type:"pane",id:d,tabs:[e],activeTabId:e.id},activePaneId:d,updatedAt:new Date().toISOString()};a({layout:h,...u(h,b().isSplitting)}),f.toast.info((0,g.t)("terminal","fallbackLayout")),a({retryCount:0});return}}catch{}a({error:(0,g.t)("terminal","layoutFetchError")}),q?.()}finally{h.signal.aborted||a({isLoading:!1})}},splitPane:async(c,d)=>{let{layout:e,isSplitting:h,workspaceId:i}=b();if(e&&!h&&!((0,l.collectPanes)(e.root).length>=10)){a({isSplitting:!0,canSplit:!1});try{let f,g,h=(0,l.findPane)(e.root,c),j=h?.tabs.find(a=>a.id===h.activeTabId);if(j){g=j.panelType;try{let a=await fetch(t(`/api/layout/cwd?session=${j.sessionName}`,i));a.ok&&(f=(await a.json()).cwd)}catch{}}let k=await fetch(t("/api/layout/pane",i),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sourcePaneId:c,orientation:d,cwd:f,panelType:g})});if(!k.ok)throw Error();let m=await k.json();v(a,b,m)}catch{f.toast.error((0,g.t)("terminal","splitFailed"))}finally{a(a=>({isSplitting:!1,canSplit:a.paneCount<10}))}}},closePane:async c=>{let{layout:d,workspaceId:e}=b();if(d&&!((0,l.collectPanes)(d.root).length<=1))try{let d=await fetch(t(`/api/layout/pane/${c}`,e),{method:"DELETE"});if(!d.ok)throw Error();let f=await d.json();v(a,b,f)}catch{f.toast.error("Pane을 닫을 수 없습니다")}},focusPane:c=>{let{layout:d,workspaceId:e}=b();d&&d.activePaneId!==c&&(a({layout:{...d,activePaneId:c}}),y(t("/api/layout",e),{activePaneId:c}).then(c=>{c&&w(a,b,c)}))},updateRatio:(c,d)=>{let{layout:e,workspaceId:f}=b();e&&(a({layout:{...e,root:(0,l.updateRatioAtPath)(e.root,c,d)}}),r&&clearTimeout(r),r=setTimeout(()=>{r=null,y(t("/api/layout",f),{ratioUpdate:{path:c,ratio:d}}).then(c=>{c&&w(a,b,c)})},300))},moveTab:(c,d,e,f)=>{if(d===e)return;let{layout:g,workspaceId:h}=b();if(!g)return;let i=JSON.parse(JSON.stringify(g)),j=(0,l.findPane)(i.root,d),k=(0,l.findPane)(i.root,e);if(j&&k){let g=j.tabs.findIndex(a=>a.id===c);if(-1!==g){let[h]=j.tabs.splice(g,1);j.activeTabId===c&&(j.activeTabId=j.tabs[0]?.id??null),j.tabs.forEach((a,b)=>{a.order=b}),k.tabs.splice(f,0,h),k.tabs.forEach((a,b)=>{a.order=b}),k.activeTabId=c,0===j.tabs.length&&(0,l.collectPanes)(i.root).length>1&&(0,l.removePaneWithFocus)(i,d),i.activePaneId=e,v(a,b,i)}}fetch(t(`/api/layout/pane/${d}/tabs/${c}/move`,h),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({toPaneId:e,toIndex:f})}).then(async c=>{c.ok?w(a,b,await c.json()):await b().fetchLayout(void 0,!1)}).catch(()=>b().fetchLayout(void 0,!1))},createTabInPane:async(c,d,e)=>{let{layout:h,workspaceId:j}=b();try{let f,g=d,m=h?(0,l.findPane)(h.root,c):void 0,n=m?.tabs.find(a=>a.id===m.activeTabId);!g&&n&&(g=n.panelType),"web-browser"!==g&&n&&(f=k.default.getState().metadata[n.id]?.cwd);let o=await fetch(t(`/api/layout/pane/${c}/tabs`,j),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cwd:f,panelType:g,command:e})});if(!o.ok)throw Error();let p=await o.json();return e&&i.default.getState().initTab(p.id,{panelType:g,sessionView:"check"}),x(a,b,c,a=>({...a,tabs:[...a.tabs,p],activeTabId:p.id})),b().fetchLayout(),p}catch{return f.toast.error((0,g.t)("terminal","tabCreateFailed")),null}},deleteTabInPane:async(c,d)=>{(0,h.clearInputDraft)(d),i.default.getState().cancelTab(d),x(a,b,c,a=>{let b=[...a.tabs].sort((a,b)=>a.order-b.order),c=b.findIndex(a=>a.id===d),e=b.filter(a=>a.id!==d);e.forEach((a,b)=>{a.order=b});let f=a.activeTabId;if(a.activeTabId===d){let a=b[c+1]||b[c-1];f=a?.id??null}return{...a,tabs:e,activeTabId:f}});let{workspaceId:e}=b();try{let a=await fetch(t(`/api/layout/pane/${c}/tabs/${d}`,e),{method:"DELETE"});a.ok||404===a.status||(f.toast.error((0,g.t)("terminal","tabDeleteError")),await b().fetchLayout())}catch{f.toast.error((0,g.t)("terminal","tabDeleteError")),await b().fetchLayout()}},restartTabInPane:async(a,c,d)=>{let{workspaceId:e}=b();try{return(await fetch(t(`/api/layout/pane/${a}/tabs/${c}`,e),{method:"POST",headers:d?{"Content-Type":"application/json"}:void 0,body:d?JSON.stringify({command:d}):void 0})).ok}catch{return f.toast.error((0,g.t)("terminal","sessionRestartFailed")),!1}},switchTabInPane:(c,d)=>{x(a,b,c,a=>({...a,activeTabId:d}));let{workspaceId:e}=b();y(t(`/api/layout/pane/${c}`,e),{activeTabId:d}).then(c=>{c&&w(a,b,c)})},renameTabInPane:async(c,d,e)=>{x(a,b,c,a=>({...a,tabs:a.tabs.map(a=>a.id===d?{...a,name:e}:a)}));let{workspaceId:h}=b(),i=await y(t(`/api/layout/pane/${c}/tabs/${d}`,h),{name:e});i?w(a,b,i):f.toast.error((0,g.t)("terminal","tabRenameFailed"))},reorderTabsInPane:(c,d)=>{x(a,b,c,a=>{let b=new Map(a.tabs.map(a=>[a.id,a])),c=d.map((a,c)=>{let d=b.get(a);return d?{...d,order:c}:null}).filter(a=>null!==a);return{...a,tabs:c}});let{workspaceId:e}=b();y(t(`/api/layout/pane/${c}/tabs/order`,e),{tabIds:d}).then(c=>{c&&w(a,b,c)})},removeTabLocally:(a,c)=>{(0,h.clearInputDraft)(c);let{workspaceId:d}=b();fetch(t(`/api/layout/pane/${a}/tabs/${c}`,d),{method:"DELETE"}).then(()=>b().fetchLayout()).catch(()=>{console.log("[layout] removeTabLocally failed")})},equalizeRatios:()=>{let{workspaceId:c}=b();y(t("/api/layout",c),{equalize:!0}).then(c=>{c&&w(a,b,c)})},updateTabPanelType:(c,d,e)=>{x(a,b,c,a=>({...a,tabs:a.tabs.map(a=>{if(a.id!==d)return a;let b={...a,panelType:e};return"terminal"===e&&(b.claudeSessionId=null),b})})),i.default.getState().setPanelType(d,e);let{workspaceId:f}=b();y(t(`/api/layout/pane/${c}/tabs/${d}`,f),{panelType:e}).then(c=>{c&&w(a,b,c)})},clearLayout:()=>{s=!0,p?.abort(),a({layout:null,paneCount:0,canSplit:!1})},focusTab:a=>{let{layout:c}=b();if(!c)return!1;for(let d of(0,l.collectPanes)(c.root))if(d.tabs.some(b=>b.id===a))return b().focusPane(d.id),b().switchTabInPane(d.id,a),!0;return!1},focusPrevTab:()=>{let{layout:a}=b();if(!a)return;let c=(0,l.collectPanes)(a.root),d=c.find(b=>b.id===a.activePaneId);if(!d)return;let e=[...d.tabs].sort((a,b)=>a.order-b.order),f=e.findIndex(a=>a.id===d.activeTabId);if(f>0)b().switchTabInPane(d.id,e[f-1].id);else{let a=c.indexOf(d);if(a>0){let d=c[a-1],e=[...d.tabs].sort((a,b)=>a.order-b.order);b().focusPane(d.id),b().switchTabInPane(d.id,e[e.length-1].id)}}},focusNextTab:()=>{let{layout:a}=b();if(!a)return;let c=(0,l.collectPanes)(a.root),d=c.find(b=>b.id===a.activePaneId);if(!d)return;let e=[...d.tabs].sort((a,b)=>a.order-b.order),f=e.findIndex(a=>a.id===d.activeTabId);if(f<e.length-1)b().switchTabInPane(d.id,e[f+1].id);else{let a=c.indexOf(d);if(a<c.length-1){let d=c[a+1],e=[...d.tabs].sort((a,b)=>a.order-b.order);b().focusPane(d.id),b().switchTabInPane(d.id,e[0].id)}}},focusTabByIndex:a=>{let{layout:c}=b();if(!c?.activePaneId)return;let d=(0,l.collectPanes)(c.root).find(a=>a.id===c.activePaneId);if(!d)return;let e=[...d.tabs].sort((a,b)=>a.order-b.order),f=a>=e.length?e[e.length-1]:e[a];f&&f.id!==d.activeTabId&&b().switchTabInPane(d.id,f.id)}}));z.subscribe((a,b)=>{if(a.layout&&a.workspaceId&&a.layout!==b.layout){var c=a.workspaceId,d=a.layout;try{for(let a of(d.activePaneId&&sessionStorage.setItem(`${m}${c}`,d.activePaneId),(0,l.collectPanes)(d.root)))a.activeTabId&&sessionStorage.setItem(`${n}${a.id}`,a.activeTabId)}catch{}}});let A=(a,b)=>{let d=z.getState();if("/"!==c.default.pathname){z.setState({pendingFocusTabId:b}),j.default.getState().switchWorkspace(a),c.default.push("/");return}a===d.workspaceId?d.focusTab(b):(d.clearLayout(),z.setState({pendingFocusTabId:b}),j.default.getState().switchWorkspace(a))},B=async(a,b,c,d,e)=>{let f=j.default.getState(),g=a,h=f.workspaces.find(b=>b.id===a);if(!h){if(!e)return;let a=await f.createWorkspace(e,d,c??void 0);if(!a)return;g=a.id;let b=await fetch(t("/api/layout",g));if(!b.ok)return;let h=await b.json(),j=(0,l.collectAllTabs)(h.root)[0];if(!j)return;c&&i.default.getState().initTab(j.id,{panelType:"claude-code",sessionView:"check"}),A(g,j.id);return}let k=await fetch(t("/api/layout",g));if(!k.ok)return;let m=await k.json();if(c){let a=(0,l.collectAllTabs)(m.root).find(a=>a.claudeSessionId===c);if(a){i.default.getState().setSessionView(a.id,"timeline"),A(g,a.id);return}}else if((0,l.collectAllTabs)(m.root).find(a=>a.id===b))return void A(g,b);let n=m.activePaneId??(0,l.getFirstPaneId)(m.root),o={panelType:"claude-code",cwd:h.directories[0]};c&&(o.resumeSessionId=c);let p=await fetch(t(`/api/layout/pane/${n}/tabs`,g),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)});if(!p.ok)return;let q=await p.json();c&&i.default.getState().initTab(q.id,{panelType:"claude-code",sessionView:"check"}),g===z.getState().workspaceId?(z.setState({pendingFocusTabId:q.id}),z.getState().fetchLayout()):A(g,q.id)},C=({workspaceId:a,onFetchError:c})=>((0,b.useEffect)(()=>{q=c??null},[c]),(0,b.useEffect)(()=>{if(a){let b=z.getState();b.setWorkspaceId(a),b.fetchLayout(a)}},[a]),(0,b.useEffect)(()=>z.subscribe(a=>{let b=a.workspaceId;if(!b||!a.layout?.root)return;let c=(0,l.collectPanes)(a.layout.root).flatMap(a=>a.tabs.map(a=>a.id));i.default.getState().setTabOrder(b,c)}),[]),z((0,e.useShallow)(a=>({layout:a.layout,isLoading:a.isLoading,error:a.error,isSplitting:a.isSplitting,paneCount:a.paneCount,canSplit:a.canSplit,splitPane:a.splitPane,closePane:a.closePane,focusPane:a.focusPane,updateRatio:a.updateRatio,moveTab:a.moveTab,createTabInPane:a.createTabInPane,deleteTabInPane:a.deleteTabInPane,restartTabInPane:a.restartTabInPane,switchTabInPane:a.switchTabInPane,renameTabInPane:a.renameTabInPane,reorderTabsInPane:a.reorderTabsInPane,removeTabLocally:a.removeTabLocally,equalizeRatios:a.equalizeRatios,updateTabPanelType:a.updateTabPanelType,clearLayout:a.clearLayout,fetchLayout:a.fetchLayout,focusTab:a.focusTab,focusPrevTab:a.focusPrevTab,focusNextTab:a.focusNextTab,focusTabByIndex:a.focusTabByIndex}))))},199462,a=>{"use strict";a.s(["default",()=>j]);var b=a.i(4873),c=a.i(626605),d=a.i(144784),e=a.i(912251);let f=null,g="",h=()=>{f&&clearTimeout(f),f=setTimeout(()=>{f=null;let{metadata:a}=i.getState(),b=c.useLayoutStore.getState().layout,h=c.useLayoutStore.getState().workspaceId;if(!b||!h)return;let j=`?workspace=${h}`;for(let c of(0,d.collectPanes)(b.root))for(let b of c.tabs){let d=a[b.id];if(!d)continue;let e={};void 0!==d.title&&d.title!==b.title&&(e.title=d.title),void 0!==d.cwd&&d.cwd!==b.cwd&&(e.cwd=d.cwd),void 0!==d.lastCommand&&(d.lastCommand??null)!==(b.lastCommand??null)&&(e.lastCommand=d.lastCommand??null),Object.keys(e).length>0&&fetch(`/api/layout/pane/${c.id}/tabs/${b.id}${j}`,{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}).catch(a=>{console.log(`[tab-metadata] sync failed: ${a instanceof Error?a.message:a}`)})}let k=[...new Set(Object.values(a).map(a=>a.cwd).filter(a=>!!a))],l=k.join("\0");if(l!==g){g=l;let{activeWorkspaceId:a,updateDirectories:b}=e.default.getState();a&&k.length>0&&b(a,k)}},100)},i=(0,b.create)(a=>({metadata:{},setTitle:(b,c)=>{a(a=>{let d=a.metadata[b];return d?.title===c?a:{metadata:{...a.metadata,[b]:{...d,title:c}}}}),h()},setCwd:(b,c)=>{a(a=>{let d=a.metadata[b];return d?.cwd===c?a:{metadata:{...a.metadata,[b]:{...d,cwd:c}}}}),h()},setLastCommand:(b,c)=>{a(a=>{let d=a.metadata[b];return d?.lastCommand===c?a:{metadata:{...a.metadata,[b]:{...d,lastCommand:c}}}}),h()},removeTab:b=>{a(a=>{let{[b]:c,...d}=a.metadata;return{metadata:d}}),h()},hydrate:b=>{a(a=>{let c={};for(let[d,e]of Object.entries(b)){let b=a.metadata[d];b?c[d]={...e,...b.title?{title:b.title}:{},...b.cwd?{cwd:b.cwd}:{}}:c[d]=e}return{metadata:c}}),g=""},retainOnly:b=>{a(a=>{let c={};for(let d of b)a.metadata[d]&&(c[d]=a.metadata[d]);return{metadata:c}})},reset:()=>{f&&clearTimeout(f),f=null,g="",a({metadata:{}})}})),j=i},266254,168711,175679,206456,409679,a=>{"use strict";var b=a.i(127669),c=a.i(760644),d=a.i(199462),e=a.i(4873);let f=(0,e.create)(a=>({data:null,setData:b=>a({data:b})}));a.s(["default",0,f],168711);let g=(0,e.create)(a=>({entries:[],syncFromServer:b=>a({entries:b}),upsertEntry:b=>a(a=>{let c=a.entries.findIndex(a=>a.id===b.id);if(c>=0){let d=[...a.entries];return d[c]=b,{entries:d}}return{entries:[b,...a.entries]}})}));a.s(["default",0,g],175679);let h=new Set(["zsh","bash","fish","sh","-zsh","-bash","-fish","-sh"]),i=a=>{if("~"===a||"/"===a)return a;let b=a.replace(/\/$/,"").split("/");return b[b.length-1]||a},j=a=>{let b=a.trim();if(!b)return null;let c=b.indexOf("|");return c>0?b.slice(0,c):null},k=a=>{let b=a.trim();if(!b)return"";let c=j(a);if(null!==c){let a=b.slice(b.indexOf("|")+1);return h.has(c)?i(a):c}let d=b.match(/@[^:]+:\s*(.*)/);if(d)return i(d[1].trim());if(b.startsWith("/")||b.startsWith("~"))return i(b);let e=b.split(/\s+/)[0];return h.has(e)?"":e||""};a.s(["formatTabTitle",0,k,"isShellProcess",0,a=>{let b=j(a);return null!==b&&h.has(b)},"parseCurrentCommand",0,j],206456);let l=null;a.s(["ackNotificationInput",0,(a,b)=>{l?.readyState===WebSocket.OPEN&&l.send(JSON.stringify({type:"status:ack-notification",tabId:a,seq:b}))},"default",0,()=>{let a=(0,b.useRef)(0),e=(0,b.useRef)(null),h=(0,b.useRef)(!0);(0,b.useEffect)(()=>{h.current=!0;let b=()=>{if(!h.current)return;let i="https:"===location.protocol?"wss:":"ws:",j=new WebSocket(`${i}//${location.host}/api/status`);l=j,j.onopen=()=>{h.current&&(a.current=0,c.default.getState().setStatusWsConnected(!0))},j.onmessage=a=>{if(h.current)try{let b=JSON.parse(a.data);switch(b.type){case"status:sync":for(let[a,e]of(c.default.getState().syncAllFromServer(b.tabs),Object.entries(b.tabs)))e.paneTitle&&!d.default.getState().metadata[a]?.title&&d.default.getState().setTitle(a,k(e.paneTitle));break;case"status:update":c.default.getState().updateFromServer(b.tabId,{cliState:b.cliState,workspaceId:b.workspaceId,tabName:b.tabName,panelType:b.panelType,terminalStatus:b.terminalStatus,listeningPorts:b.listeningPorts,currentProcess:b.currentProcess,claudeSummary:b.claudeSummary,lastUserMessage:b.lastUserMessage,lastAssistantMessage:b.lastAssistantMessage,currentAction:b.currentAction,readyForReviewAt:b.readyForReviewAt,busySince:b.busySince,dismissedAt:b.dismissedAt,claudeSessionId:b.claudeSessionId,compactingSince:b.compactingSince,lastEvent:b.lastEvent,eventSeq:b.eventSeq}),b.paneTitle&&d.default.getState().setTitle(b.tabId,k(b.paneTitle));break;case"status:hook-event":c.default.getState().applyHookEvent(b.tabId,b.event);break;case"rate-limits:update":f.getState().setData(b.data);break;case"session-history:sync":g.getState().syncFromServer(b.entries);break;case"session-history:update":g.getState().upsertEntry(b.entry)}}catch{}},j.onclose=()=>{if(!h.current)return;c.default.getState().setStatusWsConnected(!1),l=null;let d=Math.min(1e3*Math.pow(2,a.current),3e4);a.current++,e.current=setTimeout(b,d)},j.onerror=()=>{}};b();let i=()=>{if("visible"!==document.visibilityState)return;let c=l?.readyState;c!==WebSocket.OPEN&&c!==WebSocket.CONNECTING&&(e.current&&(clearTimeout(e.current),e.current=null),a.current=0,b())};return document.addEventListener("visibilitychange",i),()=>{h.current=!1,e.current&&(clearTimeout(e.current),e.current=null),l&&(l.close(),l=null),document.removeEventListener("visibilitychange",i)}},[])},"dismissTab",0,a=>{c.default.getState().dismissTab(a),l?.readyState===WebSocket.OPEN&&l.send(JSON.stringify({type:"status:tab-dismissed",tabId:a}))},"requestSync",0,()=>{l?.readyState===WebSocket.OPEN&&l.send(JSON.stringify({type:"status:request-sync"}))}],266254),a.i(986013),a.i(678240),a.i(626605);var m=a.i(721043);let n=async()=>{try{let a=await navigator.serviceWorker.ready,b=await a.pushManager.getSubscription();return b?.endpoint??null}catch{return null}},o=async a=>{fetch("/api/push/register-session",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({endpoint:await n(),sessionId:a}),keepalive:!0}).catch(()=>{})};a.s(["default",0,()=>{(0,b.useRef)(!1),(0,b.useEffect)(()=>{m.default},[]),(0,b.useEffect)(()=>{},[])},"registerPushTarget",0,o],409679)}];
2
2
 
3
3
  //# sourceMappingURL=_0-xx2s1._.js.map