purplemux 0.2.1 → 0.2.3

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 (569) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/build-manifest.json +90 -90
  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 +51 -7
  6. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0t1c-6w._.js → [root-of-the-server]__016s4a9._.js} +2 -2
  7. package/.next/standalone/.next/server/chunks/[root-of-the-server]__05ij_ys._.js +2 -2
  8. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0cjfc~l._.js → [root-of-the-server]__06h3gzy._.js} +2 -2
  9. package/.next/standalone/.next/server/chunks/[root-of-the-server]__08tdlcm._.js +3 -0
  10. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0qda0wx._.js → [root-of-the-server]__0_fu3k.._.js} +1 -1
  11. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0pv48rv._.js → [root-of-the-server]__0_imm_0._.js} +1 -1
  12. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0ef59mr._.js → [root-of-the-server]__0abp0lo._.js} +1 -1
  13. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0auutl5._.js +2 -2
  14. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0bo-su1._.js +3 -0
  15. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0bocpgx._.js +30 -0
  16. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0c-bb5d._.js +3 -0
  17. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0dt2efu._.js +3 -0
  18. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0zjping._.js → [root-of-the-server]__0g8mjyh._.js} +1 -1
  19. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ihlt6s._.js +3 -0
  20. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__045g9-a._.js → [root-of-the-server]__0lk7ru8._.js} +1 -1
  21. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0l~_wd0._.js +1 -1
  22. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__04o.cbq._.js → [root-of-the-server]__0m99ffd._.js} +2 -2
  23. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0hzysmw._.js → [root-of-the-server]__0q8lffz._.js} +1 -1
  24. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0vjtjtc._.js +3 -0
  25. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0x_e0yw._.js +3 -0
  26. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0t7wqt6._.js → [root-of-the-server]__10h2vlr._.js} +2 -2
  27. package/.next/standalone/.next/server/chunks/[root-of-the-server]__11iyaqz._.js +3 -0
  28. package/.next/standalone/.next/server/chunks/[root-of-the-server]__11j9~6h._.js +1 -1
  29. package/.next/standalone/.next/server/chunks/{[root-of-the-server]__00yjayf._.js → [root-of-the-server]__121-6-e._.js} +2 -2
  30. package/.next/standalone/.next/server/chunks/[root-of-the-server]__12ksl6n._.js +2 -2
  31. package/.next/standalone/.next/server/chunks/{_0out7wm._.js → _0-mgr1c._.js} +1 -1
  32. package/.next/standalone/.next/server/chunks/_0.5a4bu._.js +3 -0
  33. package/.next/standalone/.next/server/chunks/{_06vitke._.js → _03-duro._.js} +1 -1
  34. package/.next/standalone/.next/server/chunks/_05-8rnc._.js +3 -0
  35. package/.next/standalone/.next/server/chunks/{_0d415er._.js → _07097f~._.js} +1 -1
  36. package/.next/standalone/.next/server/chunks/{_0st-_d~._.js → _0jzxge9._.js} +1 -1
  37. package/.next/standalone/.next/server/chunks/{_0xmsr59._.js → _0ll-5~7._.js} +1 -1
  38. package/.next/standalone/.next/server/chunks/_0mhomq~._.js +3 -0
  39. package/.next/standalone/.next/server/chunks/{_0.hbe-v._.js → _0pk0hms._.js} +1 -1
  40. package/.next/standalone/.next/server/chunks/_0qm27ix._.js +3 -0
  41. package/.next/standalone/.next/server/chunks/{_0_1vqqb._.js → _0v81st0._.js} +1 -1
  42. package/.next/standalone/.next/server/chunks/_0vgpyhz._.js +3 -0
  43. package/.next/standalone/.next/server/chunks/{_1368r9s._.js → _0w0qjyh._.js} +1 -1
  44. package/.next/standalone/.next/server/chunks/_0wok5xu._.js +3 -0
  45. package/.next/standalone/.next/server/chunks/{_0tumyht._.js → _0wu6uxd._.js} +1 -1
  46. package/.next/standalone/.next/server/chunks/{_05otee~._.js → _0z7d6.z._.js} +1 -1
  47. package/.next/standalone/.next/server/chunks/{_0c63jma._.js → _0zf5mig._.js} +1 -1
  48. package/.next/standalone/.next/server/chunks/{_0mnwbyo._.js → _0~~9-pj._.js} +1 -1
  49. package/.next/standalone/.next/server/chunks/{src_lib_136edwc._.js → src_lib_0p.xsqi._.js} +1 -1
  50. package/.next/standalone/.next/server/chunks/src_lib_layout-store_ts_0fanx7c._.js +1 -1
  51. package/.next/standalone/.next/server/chunks/src_lib_session-parser_ts_0~rhicw._.js +3 -3
  52. package/.next/standalone/.next/server/chunks/src_lib_workspace-store_ts_0vqt073._.js +2 -2
  53. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0da5cj~._.js +3 -0
  54. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0glt298._.js +3 -0
  55. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0hwcydd._.js → [root-of-the-server]__0grkevn._.js} +1 -1
  56. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0t9ru13._.js +3 -0
  57. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__12b2-y_._.js +3 -0
  58. package/.next/standalone/.next/server/chunks/ssr/_0-ug5tr._.js +3 -0
  59. package/.next/standalone/.next/server/chunks/ssr/{_00rrt71._.js → _016o9_-._.js} +1 -1
  60. package/.next/standalone/.next/server/chunks/ssr/{_0y5jzd3._.js → _020f2r.._.js} +1 -1
  61. package/.next/standalone/.next/server/chunks/ssr/{_0_c~3id._.js → _02jzd5g._.js} +2 -2
  62. package/.next/standalone/.next/server/chunks/ssr/_04iqb-o._.js +3 -0
  63. package/.next/standalone/.next/server/chunks/ssr/{_0sfctwm._.js → _04q3_kj._.js} +2 -2
  64. package/.next/standalone/.next/server/chunks/ssr/{_08h9ynz._.js → _058y~nz._.js} +2 -2
  65. package/.next/standalone/.next/server/chunks/ssr/{_0_soefg._.js → _0a_u5qm._.js} +2 -2
  66. package/.next/standalone/.next/server/chunks/ssr/{_00ehnd~._.js → _0c1yivm._.js} +2 -2
  67. package/.next/standalone/.next/server/chunks/ssr/{_0kno-5w._.js → _0d58w1~._.js} +2 -2
  68. package/.next/standalone/.next/server/chunks/ssr/{_0rxhzwm._.js → _0ftinmo._.js} +2 -2
  69. package/.next/standalone/.next/server/chunks/ssr/_0h4kenr._.js +3 -0
  70. package/.next/standalone/.next/server/chunks/ssr/{_0z61aq-._.js → _0ihbr8k._.js} +2 -2
  71. package/.next/standalone/.next/server/chunks/ssr/_0js4l3t._.js +1 -1
  72. package/.next/standalone/.next/server/chunks/ssr/_0nib_x8._.js +3 -0
  73. package/.next/standalone/.next/server/chunks/ssr/_0nuztht._.js +18 -0
  74. package/.next/standalone/.next/server/chunks/ssr/_0nvs1~o._.js +3 -0
  75. package/.next/standalone/.next/server/chunks/ssr/_0oca87b._.js +3 -0
  76. package/.next/standalone/.next/server/chunks/ssr/_0ovjjn5._.js +3 -0
  77. package/.next/standalone/.next/server/chunks/ssr/{_0lnui2f._.js → _0ozy~xe._.js} +2 -2
  78. package/.next/standalone/.next/server/chunks/ssr/_0pg-q18._.js +3 -0
  79. package/.next/standalone/.next/server/chunks/ssr/{_0svke5s._.js → _0pk4~_0._.js} +2 -2
  80. package/.next/standalone/.next/server/chunks/ssr/_0qt-m3l._.js +3 -0
  81. package/.next/standalone/.next/server/chunks/ssr/_0w.1ts8._.js +3 -0
  82. package/.next/standalone/.next/server/chunks/ssr/_0w1phzp._.js +3 -0
  83. package/.next/standalone/.next/server/chunks/ssr/_0w6jc9p._.js +3 -0
  84. package/.next/standalone/.next/server/chunks/ssr/_101yu0w._.js +18 -0
  85. package/.next/standalone/.next/server/chunks/ssr/_13c-b~p._.js +3 -0
  86. package/.next/standalone/.next/server/chunks/ssr/_13lrp9_._.js +3 -0
  87. package/.next/standalone/.next/server/chunks/ssr/{messages_046iw4z._.js → messages_02eoowy._.js} +1 -1
  88. package/.next/standalone/.next/server/chunks/ssr/{messages_0zr0cc7._.js → messages_0hmq5dp._.js} +1 -1
  89. package/.next/standalone/.next/server/chunks/ssr/messages_de_diff_json_[json]_cjs_0w6blyy._.js +1 -1
  90. package/.next/standalone/.next/server/chunks/ssr/messages_de_settings_json_[json]_cjs_0ksu4_w._.js +1 -1
  91. package/.next/standalone/.next/server/chunks/ssr/messages_de_sidebar_json_[json]_cjs_0loc-1-._.js +1 -1
  92. package/.next/standalone/.next/server/chunks/ssr/messages_de_workspace_json_[json]_cjs_0g7nkdq._.js +1 -1
  93. package/.next/standalone/.next/server/chunks/ssr/messages_en_diff_json_[json]_cjs_0z34_dc._.js +1 -1
  94. package/.next/standalone/.next/server/chunks/ssr/messages_en_settings_json_[json]_cjs_0qwl-zt._.js +1 -1
  95. package/.next/standalone/.next/server/chunks/ssr/messages_en_sidebar_json_[json]_cjs_0un0e3f._.js +1 -1
  96. package/.next/standalone/.next/server/chunks/ssr/messages_en_workspace_json_[json]_cjs_0m9rzyy._.js +1 -1
  97. package/.next/standalone/.next/server/chunks/ssr/messages_es_diff_json_[json]_cjs_0kheix4._.js +1 -1
  98. package/.next/standalone/.next/server/chunks/ssr/messages_es_settings_json_[json]_cjs_0ce_kv6._.js +1 -1
  99. package/.next/standalone/.next/server/chunks/ssr/messages_es_sidebar_json_[json]_cjs_080u46~._.js +1 -1
  100. package/.next/standalone/.next/server/chunks/ssr/messages_es_workspace_json_[json]_cjs_0xf0_50._.js +1 -1
  101. package/.next/standalone/.next/server/chunks/ssr/messages_fr_diff_json_[json]_cjs_11vxoy5._.js +1 -1
  102. package/.next/standalone/.next/server/chunks/ssr/messages_fr_settings_json_[json]_cjs_0h_6lba._.js +1 -1
  103. package/.next/standalone/.next/server/chunks/ssr/messages_fr_sidebar_json_[json]_cjs_05y8v8h._.js +1 -1
  104. package/.next/standalone/.next/server/chunks/ssr/messages_fr_workspace_json_[json]_cjs_0h88f-g._.js +1 -1
  105. package/.next/standalone/.next/server/chunks/ssr/messages_ja_diff_json_[json]_cjs_0t~9dro._.js +1 -1
  106. package/.next/standalone/.next/server/chunks/ssr/messages_ja_settings_json_[json]_cjs_0pg~fls._.js +1 -1
  107. package/.next/standalone/.next/server/chunks/ssr/messages_ja_sidebar_json_[json]_cjs_0i0x8w9._.js +1 -1
  108. package/.next/standalone/.next/server/chunks/ssr/messages_ja_workspace_json_[json]_cjs_03dlzmi._.js +1 -1
  109. package/.next/standalone/.next/server/chunks/ssr/messages_ko_diff_json_[json]_cjs_0cw7xj1._.js +1 -1
  110. package/.next/standalone/.next/server/chunks/ssr/messages_ko_settings_json_[json]_cjs_07xpfc8._.js +1 -1
  111. package/.next/standalone/.next/server/chunks/ssr/messages_ko_sidebar_json_[json]_cjs_0mql5dv._.js +1 -1
  112. package/.next/standalone/.next/server/chunks/ssr/messages_ko_workspace_json_[json]_cjs_0frxg.r._.js +1 -1
  113. package/.next/standalone/.next/server/chunks/ssr/messages_pt-BR_diff_json_[json]_cjs_0vc-p7n._.js +1 -1
  114. package/.next/standalone/.next/server/chunks/ssr/messages_pt-BR_settings_json_[json]_cjs_0frspzp._.js +1 -1
  115. package/.next/standalone/.next/server/chunks/ssr/messages_pt-BR_sidebar_json_[json]_cjs_07h4b1q._.js +1 -1
  116. package/.next/standalone/.next/server/chunks/ssr/messages_pt-BR_workspace_json_[json]_cjs_0lahru2._.js +1 -1
  117. package/.next/standalone/.next/server/chunks/ssr/messages_ru_diff_json_[json]_cjs_07na~n8._.js +1 -1
  118. package/.next/standalone/.next/server/chunks/ssr/messages_ru_settings_json_[json]_cjs_08ex00.._.js +1 -1
  119. package/.next/standalone/.next/server/chunks/ssr/messages_ru_sidebar_json_[json]_cjs_0aksrjo._.js +1 -1
  120. package/.next/standalone/.next/server/chunks/ssr/messages_ru_workspace_json_[json]_cjs_0wm5nhc._.js +1 -1
  121. package/.next/standalone/.next/server/chunks/ssr/messages_tr_diff_json_[json]_cjs_0a00gr_._.js +1 -1
  122. package/.next/standalone/.next/server/chunks/ssr/messages_tr_settings_json_[json]_cjs_0piu0da._.js +1 -1
  123. package/.next/standalone/.next/server/chunks/ssr/messages_tr_sidebar_json_[json]_cjs_0yj47nu._.js +1 -1
  124. package/.next/standalone/.next/server/chunks/ssr/messages_tr_workspace_json_[json]_cjs_0wygfyf._.js +1 -1
  125. package/.next/standalone/.next/server/chunks/ssr/messages_zh-CN_diff_json_[json]_cjs_0b01x_1._.js +1 -1
  126. package/.next/standalone/.next/server/chunks/ssr/messages_zh-CN_settings_json_[json]_cjs_0uazwgy._.js +1 -1
  127. package/.next/standalone/.next/server/chunks/ssr/messages_zh-CN_sidebar_json_[json]_cjs_0yzmolg._.js +1 -1
  128. package/.next/standalone/.next/server/chunks/ssr/messages_zh-CN_workspace_json_[json]_cjs_0h3v0-e._.js +1 -1
  129. package/.next/standalone/.next/server/chunks/ssr/messages_zh-TW_diff_json_[json]_cjs_088r89k._.js +1 -1
  130. package/.next/standalone/.next/server/chunks/ssr/messages_zh-TW_settings_json_[json]_cjs_09u0c5l._.js +1 -1
  131. package/.next/standalone/.next/server/chunks/ssr/messages_zh-TW_sidebar_json_[json]_cjs_0pnu~0h._.js +1 -1
  132. package/.next/standalone/.next/server/chunks/ssr/messages_zh-TW_workspace_json_[json]_cjs_0ymw5wz._.js +1 -1
  133. package/.next/standalone/.next/server/chunks/ssr/node_modules_02oar3h._.js +3 -0
  134. package/.next/standalone/.next/server/chunks/ssr/node_modules_0_2gaq0._.js +1 -1
  135. package/.next/standalone/.next/server/chunks/ssr/node_modules_0bbmd88._.js +3 -0
  136. package/.next/standalone/.next/server/chunks/ssr/node_modules_0ydhwnx._.js +1 -1
  137. package/.next/standalone/.next/server/chunks/ssr/node_modules_1294wzs._.js +1 -1
  138. package/.next/standalone/.next/server/chunks/ssr/{src_components_0rs9yzr._.js → src_components_0_aiven._.js} +1 -1
  139. package/.next/standalone/.next/server/chunks/ssr/{src_components_0cflin8._.js → src_components_0geizrr._.js} +1 -1
  140. package/.next/standalone/.next/server/chunks/ssr/{src_components_0g.s~e7._.js → src_components_11_1i~k._.js} +1 -1
  141. package/.next/standalone/.next/server/chunks/ssr/{src_components_0jrj_vu._.js → src_components_12mrirb._.js} +1 -1
  142. package/.next/standalone/.next/server/chunks/ssr/src_components_features_mobile_mobile-terminal-page_tsx_02chzch._.js +1 -1
  143. package/.next/standalone/.next/server/chunks/ssr/src_components_features_workspace_terminal-page_tsx_0wuq-jl._.js +1 -1
  144. package/.next/standalone/.next/server/chunks/ssr/src_components_ui_input_tsx_0pgha5u._.js +3 -0
  145. package/.next/standalone/.next/server/chunks/ssr/src_hooks_use-browser-title_ts_0bw6.cb._.js +1 -1
  146. package/.next/standalone/.next/server/chunks/ssr/src_hooks_use-workspace-store_ts_0h40e5c._.js +1 -1
  147. package/.next/standalone/.next/server/chunks/ssr/src_lib_workspace-store_ts_00x-rec._.js +1 -1
  148. package/.next/standalone/.next/server/middleware-build-manifest.js +90 -90
  149. package/.next/standalone/.next/server/pages/_app/build-manifest.json +9 -8
  150. package/.next/standalone/.next/server/pages/_app/client-build-manifest.json +1 -1
  151. package/.next/standalone/.next/server/pages/_app.js +6 -6
  152. package/.next/standalone/.next/server/pages/_app.js.nft.json +1 -1
  153. package/.next/standalone/.next/server/pages/_document.js +3 -3
  154. package/.next/standalone/.next/server/pages/_document.js.nft.json +1 -1
  155. package/.next/standalone/.next/server/pages/_error.js +6 -6
  156. package/.next/standalone/.next/server/pages/_error.js.nft.json +1 -1
  157. package/.next/standalone/.next/server/pages/api/cli/tabs/[tabId]/result.js +2 -2
  158. package/.next/standalone/.next/server/pages/api/cli/tabs/[tabId]/result.js.nft.json +1 -1
  159. package/.next/standalone/.next/server/pages/api/cli/tabs/[tabId]/send.js +2 -2
  160. package/.next/standalone/.next/server/pages/api/cli/tabs/[tabId]/send.js.nft.json +1 -1
  161. package/.next/standalone/.next/server/pages/api/cli/tabs/[tabId]/status.js +2 -2
  162. package/.next/standalone/.next/server/pages/api/cli/tabs/[tabId]/status.js.nft.json +1 -1
  163. package/.next/standalone/.next/server/pages/api/cli/tabs/[tabId].js +2 -2
  164. package/.next/standalone/.next/server/pages/api/cli/tabs/[tabId].js.nft.json +1 -1
  165. package/.next/standalone/.next/server/pages/api/cli/tabs.js +2 -2
  166. package/.next/standalone/.next/server/pages/api/cli/tabs.js.nft.json +1 -1
  167. package/.next/standalone/.next/server/pages/api/cli/workspaces.js +1 -1
  168. package/.next/standalone/.next/server/pages/api/cli/workspaces.js.nft.json +1 -1
  169. package/.next/standalone/.next/server/pages/api/git/sync/pages-manifest.json +3 -0
  170. package/.next/standalone/.next/server/pages/api/git/sync.js +5 -0
  171. package/.next/standalone/.next/server/pages/api/git/sync.js.map +5 -0
  172. package/.next/standalone/.next/server/pages/api/git/sync.js.nft.json +1 -0
  173. package/.next/standalone/.next/server/pages/api/layout/commit-diff/pages-manifest.json +3 -0
  174. package/.next/standalone/.next/server/pages/api/layout/commit-diff.js +5 -0
  175. package/.next/standalone/.next/server/pages/api/layout/commit-diff.js.map +5 -0
  176. package/.next/standalone/.next/server/pages/api/layout/commit-diff.js.nft.json +1 -0
  177. package/.next/standalone/.next/server/pages/api/layout/file-content/pages-manifest.json +3 -0
  178. package/.next/standalone/.next/server/pages/api/layout/file-content.js +5 -0
  179. package/.next/standalone/.next/server/pages/api/layout/file-content.js.map +5 -0
  180. package/.next/standalone/.next/server/pages/api/layout/file-content.js.nft.json +1 -0
  181. package/.next/standalone/.next/server/pages/api/layout/git-log/pages-manifest.json +3 -0
  182. package/.next/standalone/.next/server/pages/api/layout/git-log.js +5 -0
  183. package/.next/standalone/.next/server/pages/api/layout/git-log.js.map +5 -0
  184. package/.next/standalone/.next/server/pages/api/layout/git-log.js.nft.json +1 -0
  185. package/.next/standalone/.next/server/pages/api/layout/pane/[paneId]/tabs/[tabId]/move.js +2 -2
  186. package/.next/standalone/.next/server/pages/api/layout/pane/[paneId]/tabs/[tabId]/move.js.nft.json +1 -1
  187. package/.next/standalone/.next/server/pages/api/layout/pane/[paneId]/tabs/[tabId].js +3 -3
  188. package/.next/standalone/.next/server/pages/api/layout/pane/[paneId]/tabs/[tabId].js.nft.json +1 -1
  189. package/.next/standalone/.next/server/pages/api/layout/pane/[paneId]/tabs/order.js +2 -2
  190. package/.next/standalone/.next/server/pages/api/layout/pane/[paneId]/tabs/order.js.nft.json +1 -1
  191. package/.next/standalone/.next/server/pages/api/layout/pane/[paneId]/tabs.js +3 -3
  192. package/.next/standalone/.next/server/pages/api/layout/pane/[paneId]/tabs.js.nft.json +1 -1
  193. package/.next/standalone/.next/server/pages/api/layout/pane/[paneId].js +2 -2
  194. package/.next/standalone/.next/server/pages/api/layout/pane/[paneId].js.nft.json +1 -1
  195. package/.next/standalone/.next/server/pages/api/layout/pane.js +2 -2
  196. package/.next/standalone/.next/server/pages/api/layout/pane.js.nft.json +1 -1
  197. package/.next/standalone/.next/server/pages/api/layout.js +2 -2
  198. package/.next/standalone/.next/server/pages/api/layout.js.nft.json +1 -1
  199. package/.next/standalone/.next/server/pages/api/message-history.js +1 -1
  200. package/.next/standalone/.next/server/pages/api/message-history.js.nft.json +1 -1
  201. package/.next/standalone/.next/server/pages/api/push/vapid-key.js +1 -1
  202. package/.next/standalone/.next/server/pages/api/push/vapid-key.js.nft.json +1 -1
  203. package/.next/standalone/.next/server/pages/api/stats/daily-report/cache.js +1 -1
  204. package/.next/standalone/.next/server/pages/api/stats/daily-report/cache.js.nft.json +1 -1
  205. package/.next/standalone/.next/server/pages/api/stats/daily-report/generate.js +1 -1
  206. package/.next/standalone/.next/server/pages/api/stats/daily-report/generate.js.nft.json +1 -1
  207. package/.next/standalone/.next/server/pages/api/stats/daily-report/list.js +2 -2
  208. package/.next/standalone/.next/server/pages/api/stats/daily-report/list.js.nft.json +1 -1
  209. package/.next/standalone/.next/server/pages/api/stats/projects.js +2 -2
  210. package/.next/standalone/.next/server/pages/api/stats/projects.js.nft.json +1 -1
  211. package/.next/standalone/.next/server/pages/api/stats/sessions.js +2 -2
  212. package/.next/standalone/.next/server/pages/api/stats/sessions.js.nft.json +1 -1
  213. package/.next/standalone/.next/server/pages/api/stats/uptime.js +2 -2
  214. package/.next/standalone/.next/server/pages/api/stats/uptime.js.nft.json +1 -1
  215. package/.next/standalone/.next/server/pages/api/status/hook.js +3 -3
  216. package/.next/standalone/.next/server/pages/api/status/hook.js.nft.json +1 -1
  217. package/.next/standalone/.next/server/pages/api/status/statusline.js +5 -5
  218. package/.next/standalone/.next/server/pages/api/status/statusline.js.nft.json +1 -1
  219. package/.next/standalone/.next/server/pages/api/tmux/permission-options.js +1 -1
  220. package/.next/standalone/.next/server/pages/api/tmux/permission-options.js.nft.json +1 -1
  221. package/.next/standalone/.next/server/pages/api/tmux/recover-unknown.js +5 -5
  222. package/.next/standalone/.next/server/pages/api/tmux/recover-unknown.js.nft.json +1 -1
  223. package/.next/standalone/.next/server/pages/api/tmux/reset.js +3 -3
  224. package/.next/standalone/.next/server/pages/api/tmux/reset.js.nft.json +1 -1
  225. package/.next/standalone/.next/server/pages/api/workspace/[workspaceId].js +2 -2
  226. package/.next/standalone/.next/server/pages/api/workspace/[workspaceId].js.nft.json +1 -1
  227. package/.next/standalone/.next/server/pages/api/workspace/active.js +2 -2
  228. package/.next/standalone/.next/server/pages/api/workspace/active.js.nft.json +1 -1
  229. package/.next/standalone/.next/server/pages/api/workspace/group/[groupId]/pages-manifest.json +3 -0
  230. package/.next/standalone/.next/server/pages/api/workspace/group/[groupId].js +8 -0
  231. package/.next/standalone/.next/server/pages/api/workspace/group/[groupId].js.map +5 -0
  232. package/.next/standalone/.next/server/pages/api/workspace/group/[groupId].js.nft.json +1 -0
  233. package/.next/standalone/.next/server/pages/api/workspace/group/pages-manifest.json +3 -0
  234. package/.next/standalone/.next/server/pages/api/workspace/group/reorder/pages-manifest.json +3 -0
  235. package/.next/standalone/.next/server/pages/api/workspace/group/reorder.js +8 -0
  236. package/.next/standalone/.next/server/pages/api/workspace/group/reorder.js.map +5 -0
  237. package/.next/standalone/.next/server/pages/api/workspace/group/reorder.js.nft.json +1 -0
  238. package/.next/standalone/.next/server/pages/api/workspace/group.js +8 -0
  239. package/.next/standalone/.next/server/pages/api/workspace/group.js.map +5 -0
  240. package/.next/standalone/.next/server/pages/api/workspace/group.js.nft.json +1 -0
  241. package/.next/standalone/.next/server/pages/api/workspace/reorder.js +2 -2
  242. package/.next/standalone/.next/server/pages/api/workspace/reorder.js.nft.json +1 -1
  243. package/.next/standalone/.next/server/pages/api/workspace/validate.js +2 -2
  244. package/.next/standalone/.next/server/pages/api/workspace/validate.js.nft.json +1 -1
  245. package/.next/standalone/.next/server/pages/api/workspace.js +4 -4
  246. package/.next/standalone/.next/server/pages/api/workspace.js.nft.json +1 -1
  247. package/.next/standalone/.next/server/pages/de/404.html +1 -1
  248. package/.next/standalone/.next/server/pages/de/500.html +1 -1
  249. package/.next/standalone/.next/server/pages/en/404.html +1 -1
  250. package/.next/standalone/.next/server/pages/en/500.html +1 -1
  251. package/.next/standalone/.next/server/pages/es/404.html +1 -1
  252. package/.next/standalone/.next/server/pages/es/500.html +1 -1
  253. package/.next/standalone/.next/server/pages/fr/404.html +1 -1
  254. package/.next/standalone/.next/server/pages/fr/500.html +1 -1
  255. package/.next/standalone/.next/server/pages/index/build-manifest.json +17 -17
  256. package/.next/standalone/.next/server/pages/index/client-build-manifest.json +1 -1
  257. package/.next/standalone/.next/server/pages/index/react-loadable-manifest.json +8 -10
  258. package/.next/standalone/.next/server/pages/index.js +18 -18
  259. package/.next/standalone/.next/server/pages/index.js.nft.json +1 -1
  260. package/.next/standalone/.next/server/pages/ja/404.html +1 -1
  261. package/.next/standalone/.next/server/pages/ja/500.html +1 -1
  262. package/.next/standalone/.next/server/pages/ko/404.html +1 -1
  263. package/.next/standalone/.next/server/pages/ko/500.html +1 -1
  264. package/.next/standalone/.next/server/pages/login/build-manifest.json +9 -10
  265. package/.next/standalone/.next/server/pages/login/client-build-manifest.json +1 -1
  266. package/.next/standalone/.next/server/pages/login.js +12 -12
  267. package/.next/standalone/.next/server/pages/login.js.nft.json +1 -1
  268. package/.next/standalone/.next/server/pages/pt-BR/404.html +1 -1
  269. package/.next/standalone/.next/server/pages/pt-BR/500.html +1 -1
  270. package/.next/standalone/.next/server/pages/reports/build-manifest.json +17 -17
  271. package/.next/standalone/.next/server/pages/reports/client-build-manifest.json +1 -1
  272. package/.next/standalone/.next/server/pages/reports.js +18 -18
  273. package/.next/standalone/.next/server/pages/reports.js.nft.json +1 -1
  274. package/.next/standalone/.next/server/pages/reset.js +7 -7
  275. package/.next/standalone/.next/server/pages/reset.js.nft.json +1 -1
  276. package/.next/standalone/.next/server/pages/ru/404.html +1 -1
  277. package/.next/standalone/.next/server/pages/ru/500.html +1 -1
  278. package/.next/standalone/.next/server/pages/stats/build-manifest.json +16 -16
  279. package/.next/standalone/.next/server/pages/stats/client-build-manifest.json +1 -1
  280. package/.next/standalone/.next/server/pages/stats.js +19 -19
  281. package/.next/standalone/.next/server/pages/stats.js.nft.json +1 -1
  282. package/.next/standalone/.next/server/pages/tools-required/build-manifest.json +3 -3
  283. package/.next/standalone/.next/server/pages/tools-required/client-build-manifest.json +1 -1
  284. package/.next/standalone/.next/server/pages/tools-required.js +8 -8
  285. package/.next/standalone/.next/server/pages/tools-required.js.nft.json +1 -1
  286. package/.next/standalone/.next/server/pages/tr/404.html +1 -1
  287. package/.next/standalone/.next/server/pages/tr/500.html +1 -1
  288. package/.next/standalone/.next/server/pages/webview/build-manifest.json +16 -16
  289. package/.next/standalone/.next/server/pages/webview/client-build-manifest.json +1 -1
  290. package/.next/standalone/.next/server/pages/webview.js +20 -20
  291. package/.next/standalone/.next/server/pages/webview.js.nft.json +1 -1
  292. package/.next/standalone/.next/server/pages/zh-CN/404.html +1 -1
  293. package/.next/standalone/.next/server/pages/zh-CN/500.html +1 -1
  294. package/.next/standalone/.next/server/pages/zh-TW/404.html +1 -1
  295. package/.next/standalone/.next/server/pages/zh-TW/500.html +1 -1
  296. package/.next/standalone/.next/server/pages-manifest.json +7 -0
  297. package/.next/standalone/.next/static/{gVdGG0_U0ysjrgmO5yh0M → X7BRO7ORR4bKFt1LXzGU8}/_buildManifest.js +13 -6
  298. package/.next/standalone/.next/static/chunks/0-7en.d6a3jki.js +1 -0
  299. package/.next/standalone/.next/static/chunks/0-p.9vdmq-_co.js +13 -0
  300. package/.next/standalone/.next/static/chunks/0-pm5wxsyxs3e.js +1 -0
  301. package/.next/standalone/.next/static/chunks/00ljvc.i_9p~6.js +1 -0
  302. package/.next/standalone/.next/static/chunks/01raz3nv-e~~d.js +1 -0
  303. package/.next/standalone/.next/static/chunks/01ul8lmr04ls3.js +1 -0
  304. package/.next/standalone/.next/static/chunks/024gkwka6p59k.js +1 -0
  305. package/.next/standalone/.next/static/chunks/{0.ecwkadp7-hq.js → 034_utxy1sujb.js} +1 -1
  306. package/.next/standalone/.next/static/chunks/038h8wl_~fi3u.js +1 -0
  307. package/.next/standalone/.next/static/chunks/038s7u_er9zkt.js +1 -0
  308. package/.next/standalone/.next/static/chunks/03ljx9csfmrpn.js +1 -0
  309. package/.next/standalone/.next/static/chunks/03sj62c3p8g11.js +1 -0
  310. package/.next/standalone/.next/static/chunks/{17l496oycdhjx.js → 03vck__37a5cl.js} +1 -1
  311. package/.next/standalone/.next/static/chunks/05b7zy0n0vhms.js +1 -0
  312. package/.next/standalone/.next/static/chunks/05kshd9vdrl4o.js +1 -0
  313. package/.next/standalone/.next/static/chunks/{0w_03xk_xkc5a.js → 05kyduw8swd_h.js} +1 -1
  314. package/.next/standalone/.next/static/chunks/05w~qu2zpvh2f.js +1 -0
  315. package/.next/standalone/.next/static/chunks/05zne4hn1v65k.js +24 -0
  316. package/.next/standalone/.next/static/chunks/06vobum5720oa.js +1 -0
  317. package/.next/standalone/.next/static/chunks/06vxx-4w.uvj0.js +23 -0
  318. package/.next/standalone/.next/static/chunks/06zq-2isv5vn6.js +1 -0
  319. package/.next/standalone/.next/static/chunks/{0fotmrplo6yc7.js → 07.5h~7~q9~1e.js} +1 -1
  320. package/.next/standalone/.next/static/chunks/071hdd91oy~.7.js +1 -0
  321. package/.next/standalone/.next/static/chunks/08e5.t4gotxaw.js +1 -0
  322. package/.next/standalone/.next/static/chunks/{0v6__.cfcitpl.js → 08qhrobub25u0.js} +1 -1
  323. package/.next/standalone/.next/static/chunks/08ttt2~ok56v6.js +1 -0
  324. package/.next/standalone/.next/static/chunks/{11wdicoufd516.js → 094_-.5.ue3p4.js} +1 -1
  325. package/.next/standalone/.next/static/chunks/09qd4fo1rz3it.js +1 -0
  326. package/.next/standalone/.next/static/chunks/09sf~1tyznv2b.js +1 -0
  327. package/.next/standalone/.next/static/chunks/09x4be2pfe6z0.js +1 -0
  328. package/.next/standalone/.next/static/chunks/0a7eicps6hbl6.js +1 -0
  329. package/.next/standalone/.next/static/chunks/{0i2uqmry6cyl_.js → 0c2_tqkbyti3h.js} +1 -1
  330. package/.next/standalone/.next/static/chunks/0di4o-khzv2gt.js +1 -0
  331. package/.next/standalone/.next/static/chunks/0e20ujygcf3hc.js +1 -0
  332. package/.next/standalone/.next/static/chunks/0e5t3kx~_brfk.js +1 -0
  333. package/.next/standalone/.next/static/chunks/0ebjicjua7yl-.js +1 -0
  334. package/.next/standalone/.next/static/chunks/0evu-825nnqef.js +1 -0
  335. package/.next/standalone/.next/static/chunks/0f.5lthmbt~yc.js +1 -0
  336. package/.next/standalone/.next/static/chunks/0gr4lznv-6qml.js +1 -0
  337. package/.next/standalone/.next/static/chunks/0hl3ccityypgx.js +1 -0
  338. package/.next/standalone/.next/static/chunks/0hzis~e79cnwi.js +1 -0
  339. package/.next/standalone/.next/static/chunks/0j.sfmmqj2xel.js +23 -0
  340. package/.next/standalone/.next/static/chunks/0jkvb4hgqlgxk.js +1 -0
  341. package/.next/standalone/.next/static/chunks/0k2_zze3o98ow.js +1 -0
  342. package/.next/standalone/.next/static/chunks/0kaufevqdhsld.js +1 -0
  343. package/.next/standalone/.next/static/chunks/0mvvym~9uf429.js +1 -0
  344. package/.next/standalone/.next/static/chunks/0n2k1al4sr_qq.css +1 -0
  345. package/.next/standalone/.next/static/chunks/0n4fv8.loh_0x.js +1 -0
  346. package/.next/standalone/.next/static/chunks/0nn618je7_7ec.js +16 -0
  347. package/.next/standalone/.next/static/chunks/{0pb15t~lqcp4y.js → 0oh5xnzizgxt1.js} +1 -1
  348. package/.next/standalone/.next/static/chunks/0po8l-8pns0vb.js +1 -0
  349. package/.next/standalone/.next/static/chunks/0pv9~yath4mjh.js +1 -0
  350. package/.next/standalone/.next/static/chunks/0q0yh17_ncipj.js +1 -0
  351. package/.next/standalone/.next/static/chunks/0q9nn4yuva4jl.js +1 -0
  352. package/.next/standalone/.next/static/chunks/0qkrdmhiv-0d3.js +1 -0
  353. package/.next/standalone/.next/static/chunks/{14xlpbx6dj_4i.js → 0r9z55-r31en8.js} +1 -1
  354. package/.next/standalone/.next/static/chunks/{0efkrks2gm27v.js → 0ra09kjja5rf..js} +1 -1
  355. package/.next/standalone/.next/static/chunks/0reai1zdu.khx.js +1 -0
  356. package/.next/standalone/.next/static/chunks/0sc7tkg1gojr..js +1 -0
  357. package/.next/standalone/.next/static/chunks/0szl_dovu0hgw.js +1 -0
  358. package/.next/standalone/.next/static/chunks/{0axhnd2vw3m5e.js → 0t-o-jwf0~-b5.js} +1 -1
  359. package/.next/standalone/.next/static/chunks/{0ml5~2ty-rbv_.js → 0t5w4x7owhfbe.js} +1 -1
  360. package/.next/standalone/.next/static/chunks/{02mfn213kze9c.js → 0te1jnz5.rt.r.js} +3 -3
  361. package/.next/standalone/.next/static/chunks/{0jxk8j~j30thp.js → 0u9yrtrs1bktp.js} +1 -1
  362. package/.next/standalone/.next/static/chunks/0uhkmh73bi.8w.js +1 -0
  363. package/.next/standalone/.next/static/chunks/0v6zafwjb5kk6.js +1 -0
  364. package/.next/standalone/.next/static/chunks/0vvqh.pfm9jum.js +1 -0
  365. package/.next/standalone/.next/static/chunks/0w6_q_4rzxy6l.js +1 -0
  366. package/.next/standalone/.next/static/chunks/0wjrfyntnywn5.js +1 -0
  367. package/.next/standalone/.next/static/chunks/0wvu-lowt9uem.js +1 -0
  368. package/.next/standalone/.next/static/chunks/0x.dxrfqc.ix9.js +16 -0
  369. package/.next/standalone/.next/static/chunks/0xvbx6ob2wnco.js +1 -0
  370. package/.next/standalone/.next/static/chunks/0yd3l8p2m9-c_.js +1 -0
  371. package/.next/standalone/.next/static/chunks/0ynitrrzdxcnh.js +15 -0
  372. package/.next/standalone/.next/static/chunks/0z_~g~mb.kjs1.js +1 -0
  373. package/.next/standalone/.next/static/chunks/0~nexgc77r_hk.js +23 -0
  374. package/.next/standalone/.next/static/chunks/{0afll97o4hu39.js → 0~ts_4hi7.u_0.js} +1 -1
  375. package/.next/standalone/.next/static/chunks/105sb_yg7fcpu.js +1 -0
  376. package/.next/standalone/.next/static/chunks/107edt81z_gzy.css +3 -0
  377. package/.next/standalone/.next/static/chunks/{0a0wcelktujjt.js → 119t_hwpxj_ko.js} +1 -1
  378. package/.next/standalone/.next/static/chunks/{128d.rbx4e4rt.js → 121i8u8byuotx.js} +1 -1
  379. package/.next/standalone/.next/static/chunks/13_l03e3sab-g.js +1 -0
  380. package/.next/standalone/.next/static/chunks/13~.y-z7wud.h.js +1 -0
  381. package/.next/standalone/.next/static/chunks/140j4evqxtxmn.js +1 -0
  382. package/.next/standalone/.next/static/chunks/142km8a40ar5o.js +1 -0
  383. package/.next/standalone/.next/static/chunks/149sb_-h03mxq.js +1 -0
  384. package/.next/standalone/.next/static/chunks/156~ejmpjxu8e.js +1 -0
  385. package/.next/standalone/.next/static/chunks/169ui~u~dpalg.js +1 -0
  386. package/.next/standalone/.next/static/chunks/16bag6z7n~ffw.js +1 -0
  387. package/.next/standalone/.next/static/chunks/171_ek.xwzobw.js +1 -0
  388. package/.next/standalone/.next/static/chunks/179zldqdb4pm2.js +1 -0
  389. package/.next/standalone/.next/static/chunks/{turbopack-0hwi_g-tegs_u.js → turbopack-0d-xk62f1t05v.js} +1 -1
  390. package/.next/standalone/.next/static/chunks/{turbopack-0yi-pm9y8p4fu.js → turbopack-0nn9kx.dkgwqs.js} +1 -1
  391. package/.next/standalone/.next/static/chunks/turbopack-0rb3q18bhb2hu.js +1 -0
  392. package/.next/standalone/.next/static/chunks/turbopack-0zcblahe.hdqd.js +1 -0
  393. package/.next/standalone/.next/static/chunks/{turbopack-06kgnfn.-xny..js → turbopack-0~wmco6ifn20m.js} +1 -1
  394. package/.next/standalone/.next/static/chunks/{turbopack-104j33xbofdmk.js → turbopack-1469mxaruw82d.js} +1 -1
  395. package/.next/standalone/.next/static/chunks/{turbopack-08ayk-1mt1q-w.js → turbopack-15bv~a4hbvh29.js} +1 -1
  396. package/.next/standalone/messages/de/diff.json +26 -1
  397. package/.next/standalone/messages/de/settings.json +3 -1
  398. package/.next/standalone/messages/de/sidebar.json +10 -1
  399. package/.next/standalone/messages/de/workspace.json +2 -0
  400. package/.next/standalone/messages/en/diff.json +26 -1
  401. package/.next/standalone/messages/en/settings.json +3 -1
  402. package/.next/standalone/messages/en/sidebar.json +10 -1
  403. package/.next/standalone/messages/en/workspace.json +2 -0
  404. package/.next/standalone/messages/es/diff.json +26 -1
  405. package/.next/standalone/messages/es/settings.json +3 -1
  406. package/.next/standalone/messages/es/sidebar.json +10 -1
  407. package/.next/standalone/messages/es/workspace.json +2 -0
  408. package/.next/standalone/messages/fr/diff.json +26 -1
  409. package/.next/standalone/messages/fr/settings.json +3 -1
  410. package/.next/standalone/messages/fr/sidebar.json +10 -1
  411. package/.next/standalone/messages/fr/workspace.json +2 -0
  412. package/.next/standalone/messages/ja/diff.json +26 -1
  413. package/.next/standalone/messages/ja/settings.json +3 -1
  414. package/.next/standalone/messages/ja/sidebar.json +10 -1
  415. package/.next/standalone/messages/ja/workspace.json +2 -0
  416. package/.next/standalone/messages/ko/diff.json +26 -1
  417. package/.next/standalone/messages/ko/settings.json +3 -1
  418. package/.next/standalone/messages/ko/sidebar.json +10 -1
  419. package/.next/standalone/messages/ko/workspace.json +2 -0
  420. package/.next/standalone/messages/pt-BR/diff.json +26 -1
  421. package/.next/standalone/messages/pt-BR/settings.json +3 -1
  422. package/.next/standalone/messages/pt-BR/sidebar.json +10 -1
  423. package/.next/standalone/messages/pt-BR/workspace.json +2 -0
  424. package/.next/standalone/messages/ru/diff.json +26 -1
  425. package/.next/standalone/messages/ru/settings.json +3 -1
  426. package/.next/standalone/messages/ru/sidebar.json +10 -1
  427. package/.next/standalone/messages/ru/workspace.json +2 -0
  428. package/.next/standalone/messages/tr/diff.json +26 -1
  429. package/.next/standalone/messages/tr/settings.json +3 -1
  430. package/.next/standalone/messages/tr/sidebar.json +10 -1
  431. package/.next/standalone/messages/tr/workspace.json +2 -0
  432. package/.next/standalone/messages/zh-CN/diff.json +26 -1
  433. package/.next/standalone/messages/zh-CN/settings.json +3 -1
  434. package/.next/standalone/messages/zh-CN/sidebar.json +10 -1
  435. package/.next/standalone/messages/zh-CN/workspace.json +2 -0
  436. package/.next/standalone/messages/zh-TW/diff.json +26 -1
  437. package/.next/standalone/messages/zh-TW/settings.json +3 -1
  438. package/.next/standalone/messages/zh-TW/sidebar.json +10 -1
  439. package/.next/standalone/messages/zh-TW/workspace.json +2 -0
  440. package/.next/standalone/package.json +4 -3
  441. package/.next/standalone/server.js +1 -1
  442. package/.next/standalone/src/pages/api/layout/commit-diff.ts +94 -0
  443. package/.next/standalone/src/pages/api/layout/cwd.ts +38 -0
  444. package/.next/standalone/src/pages/api/layout/diff.ts +196 -0
  445. package/.next/standalone/src/pages/api/layout/file-content.ts +130 -0
  446. package/.next/standalone/src/pages/api/layout/git-log.ts +55 -0
  447. package/.next/standalone/src/pages/api/layout/index.ts +38 -0
  448. package/.next/standalone/src/pages/api/layout/pane/[paneId]/index.ts +38 -0
  449. package/.next/standalone/src/pages/api/layout/pane/[paneId]/tabs/[tabId]/index.ts +94 -0
  450. package/.next/standalone/src/pages/api/layout/pane/[paneId]/tabs/[tabId]/move.ts +31 -0
  451. package/.next/standalone/src/pages/api/layout/pane/[paneId]/tabs/index.ts +66 -0
  452. package/.next/standalone/src/pages/api/layout/pane/[paneId]/tabs/order.ts +30 -0
  453. package/.next/standalone/src/pages/api/layout/pane/index.ts +38 -0
  454. package/dist/server.js +326 -12
  455. package/package.json +4 -3
  456. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0n61.a8._.js +0 -30
  457. package/.next/standalone/.next/server/chunks/_04pfden._.js +0 -3
  458. package/.next/standalone/.next/server/chunks/_0e8e4zn._.js +0 -3
  459. package/.next/standalone/.next/server/chunks/_0isokfh._.js +0 -3
  460. package/.next/standalone/.next/server/chunks/_0j2u-od._.js +0 -3
  461. package/.next/standalone/.next/server/chunks/_0t8j4qd._.js +0 -3
  462. package/.next/standalone/.next/server/chunks/_0uxocm.._.js +0 -3
  463. package/.next/standalone/.next/server/chunks/_0xd1ivw._.js +0 -3
  464. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__07i-oza._.js +0 -3
  465. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0au.ssp._.js +0 -3
  466. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0c0bz7t._.js +0 -3
  467. package/.next/standalone/.next/server/chunks/ssr/_0-67bvb._.js +0 -3
  468. package/.next/standalone/.next/server/chunks/ssr/_02nf4d7._.js +0 -3
  469. package/.next/standalone/.next/server/chunks/ssr/_05dcjwi._.js +0 -3
  470. package/.next/standalone/.next/server/chunks/ssr/_06yggfn._.js +0 -3
  471. package/.next/standalone/.next/server/chunks/ssr/_0_owbnq._.js +0 -3
  472. package/.next/standalone/.next/server/chunks/ssr/_0al4.z9._.js +0 -3
  473. package/.next/standalone/.next/server/chunks/ssr/_0dg4_bi._.js +0 -3
  474. package/.next/standalone/.next/server/chunks/ssr/_0gp1meg._.js +0 -3
  475. package/.next/standalone/.next/server/chunks/ssr/_0hqzsa8._.js +0 -3
  476. package/.next/standalone/.next/server/chunks/ssr/_0iy5a-w._.js +0 -7
  477. package/.next/standalone/.next/server/chunks/ssr/_0nkeoiw._.js +0 -3
  478. package/.next/standalone/.next/server/chunks/ssr/_0ob2rr-._.js +0 -3
  479. package/.next/standalone/.next/server/chunks/ssr/_0qbbxeq._.js +0 -7
  480. package/.next/standalone/.next/server/chunks/ssr/_0ulmx3c._.js +0 -3
  481. package/.next/standalone/.next/server/chunks/ssr/_0wlh.pc._.js +0 -3
  482. package/.next/standalone/.next/server/chunks/ssr/_0~.theb._.js +0 -3
  483. package/.next/standalone/.next/server/chunks/ssr/_11rnj4l._.js +0 -3
  484. package/.next/standalone/.next/server/chunks/ssr/_124p60s._.js +0 -3
  485. package/.next/standalone/.next/server/chunks/ssr/node_modules_0kc8lix._.js +0 -3
  486. package/.next/standalone/.next/server/chunks/ssr/node_modules_@base-ui_react_esm_03v8q-a._.js +0 -3
  487. package/.next/standalone/.next/server/chunks/ssr/node_modules_@base-ui_react_esm_0wddb~n._.js +0 -3
  488. package/.next/standalone/.next/server/chunks/ssr/node_modules_highlight_js_lib_core_0h1yngz.js +0 -3
  489. package/.next/standalone/.next/server/chunks/ssr/src_lib_message-namespaces_ts_0wjpvu5._.js +0 -3
  490. package/.next/standalone/.next/static/chunks/0-8-cf3vuob~..js +0 -1
  491. package/.next/standalone/.next/static/chunks/0-97ruc25d2lz.js +0 -1
  492. package/.next/standalone/.next/static/chunks/0-xrsiia9hc.c.js +0 -1
  493. package/.next/standalone/.next/static/chunks/00g7isu_5s43..js +0 -1
  494. package/.next/standalone/.next/static/chunks/00nx1s6rpu537.js +0 -1
  495. package/.next/standalone/.next/static/chunks/00s-0sui~_24w.js +0 -1
  496. package/.next/standalone/.next/static/chunks/01-fb9rb-21.a.js +0 -1
  497. package/.next/standalone/.next/static/chunks/02dumv8n.ewiw.js +0 -1
  498. package/.next/standalone/.next/static/chunks/02r-a1_lz7fuk.js +0 -1
  499. package/.next/standalone/.next/static/chunks/03eaekq6omt65.js +0 -1
  500. package/.next/standalone/.next/static/chunks/04~p~.qz9diil.js +0 -1
  501. package/.next/standalone/.next/static/chunks/05_e09pgcymkh.js +0 -1
  502. package/.next/standalone/.next/static/chunks/05i5jeaz~7tg6.js +0 -1
  503. package/.next/standalone/.next/static/chunks/05y90.zbqijkv.js +0 -1
  504. package/.next/standalone/.next/static/chunks/06e51nokt~dtt.js +0 -1
  505. package/.next/standalone/.next/static/chunks/07-xm--o034du.js +0 -1
  506. package/.next/standalone/.next/static/chunks/072ccw0gkueqq.js +0 -1
  507. package/.next/standalone/.next/static/chunks/07i6~xrmgspp8.js +0 -1
  508. package/.next/standalone/.next/static/chunks/07rq~qv9ldwo~.js +0 -1
  509. package/.next/standalone/.next/static/chunks/08ip~fc41h84_.js +0 -24
  510. package/.next/standalone/.next/static/chunks/08vvx8xtxwt5o.js +0 -1
  511. package/.next/standalone/.next/static/chunks/09agwg~-xbxbs.js +0 -1
  512. package/.next/standalone/.next/static/chunks/0a1hi9y0lwv3j.js +0 -1
  513. package/.next/standalone/.next/static/chunks/0aizxgkga9-f..js +0 -5
  514. package/.next/standalone/.next/static/chunks/0ajkjqq1xc_.a.js +0 -1
  515. package/.next/standalone/.next/static/chunks/0chjvj73yfmoj.js +0 -1
  516. package/.next/standalone/.next/static/chunks/0d4vi6-ju6lha.js +0 -1
  517. package/.next/standalone/.next/static/chunks/0daflfjkvkh-d.js +0 -1
  518. package/.next/standalone/.next/static/chunks/0dl23f6c62aoa.js +0 -23
  519. package/.next/standalone/.next/static/chunks/0dqb3atw-kpb2.js +0 -1
  520. package/.next/standalone/.next/static/chunks/0fuay9akccsr9.js +0 -1
  521. package/.next/standalone/.next/static/chunks/0fwnzw~qq_abm.js +0 -1
  522. package/.next/standalone/.next/static/chunks/0h-7ntqpip4oi.js +0 -1
  523. package/.next/standalone/.next/static/chunks/0idah_uu8ylro.js +0 -1
  524. package/.next/standalone/.next/static/chunks/0ilhql60o6txw.js +0 -23
  525. package/.next/standalone/.next/static/chunks/0iw7xjsfo1v-u.js +0 -16
  526. package/.next/standalone/.next/static/chunks/0jj7ska-q4zmb.js +0 -1
  527. package/.next/standalone/.next/static/chunks/0k50-hp08.xtp.js +0 -1
  528. package/.next/standalone/.next/static/chunks/0n1xl_9xb64~a.js +0 -1
  529. package/.next/standalone/.next/static/chunks/0nh~2y4pr-6b-.js +0 -1
  530. package/.next/standalone/.next/static/chunks/0nyar-7g9rya6.js +0 -1
  531. package/.next/standalone/.next/static/chunks/0o_yi7-4-ckig.js +0 -1
  532. package/.next/standalone/.next/static/chunks/0otoymu09sgml.js +0 -1
  533. package/.next/standalone/.next/static/chunks/0oxlivdn8c89b.js +0 -1
  534. package/.next/standalone/.next/static/chunks/0plurywt71.qj.js +0 -1
  535. package/.next/standalone/.next/static/chunks/0r7uk81oh650e.js +0 -1
  536. package/.next/standalone/.next/static/chunks/0ro78lxc~ndn_.js +0 -1
  537. package/.next/standalone/.next/static/chunks/0t_38o03_pjwq.js +0 -1
  538. package/.next/standalone/.next/static/chunks/0tq53zgriddtp.js +0 -1
  539. package/.next/standalone/.next/static/chunks/0u9~wuf2zbs5z.js +0 -1
  540. package/.next/standalone/.next/static/chunks/0vmc7tq7ze-wk.js +0 -1
  541. package/.next/standalone/.next/static/chunks/0wlz6--vu7adu.js +0 -1
  542. package/.next/standalone/.next/static/chunks/0wp13r5su.j3e.js +0 -1
  543. package/.next/standalone/.next/static/chunks/0wx.aq674yk~q.js +0 -1
  544. package/.next/standalone/.next/static/chunks/0xas4ca5n6mzi.js +0 -1
  545. package/.next/standalone/.next/static/chunks/0xmalbon9eqvg.js +0 -1
  546. package/.next/standalone/.next/static/chunks/0y1_gk64rkp0g.js +0 -1
  547. package/.next/standalone/.next/static/chunks/0z3gpm0o.mwwy.css +0 -3
  548. package/.next/standalone/.next/static/chunks/0zz.9uk42mbks.js +0 -1
  549. package/.next/standalone/.next/static/chunks/0~ku-hjx17-lg.js +0 -5
  550. package/.next/standalone/.next/static/chunks/0~nlz9.lltzrz.js +0 -1
  551. package/.next/standalone/.next/static/chunks/10bvbbw1062os.js +0 -1
  552. package/.next/standalone/.next/static/chunks/10r8rypk5fanv.js +0 -1
  553. package/.next/standalone/.next/static/chunks/10wa7lt~l.b6d.js +0 -1
  554. package/.next/standalone/.next/static/chunks/11gch78bg_qsn.js +0 -1
  555. package/.next/standalone/.next/static/chunks/11nk1lwom62oe.js +0 -1
  556. package/.next/standalone/.next/static/chunks/131tx--pi8.tm.js +0 -1
  557. package/.next/standalone/.next/static/chunks/13nitezuv6q6x.js +0 -1
  558. package/.next/standalone/.next/static/chunks/13zzmkwag6vsm.css +0 -1
  559. package/.next/standalone/.next/static/chunks/13~7v30_nnqks.js +0 -1
  560. package/.next/standalone/.next/static/chunks/14bh~6-ggh.16.js +0 -23
  561. package/.next/standalone/.next/static/chunks/15hinpm-o8x5a.js +0 -12
  562. package/.next/standalone/.next/static/chunks/16dbi-ty-ptnr.js +0 -1
  563. package/.next/standalone/.next/static/chunks/17jcucuef_33-.js +0 -1
  564. package/.next/standalone/.next/static/chunks/186b1th1fl440.js +0 -1
  565. package/.next/standalone/.next/static/chunks/18d9u7jni2vco.js +0 -1
  566. package/.next/standalone/.next/static/chunks/turbopack-0950wwl2vzfu8.js +0 -1
  567. package/.next/standalone/.next/static/chunks/turbopack-0np.oib7-.1fp.js +0 -1
  568. /package/.next/standalone/.next/static/{gVdGG0_U0ysjrgmO5yh0M → X7BRO7ORR4bKFt1LXzGU8}/_clientMiddlewareManifest.js +0 -0
  569. /package/.next/standalone/.next/static/{gVdGG0_U0ysjrgmO5yh0M → X7BRO7ORR4bKFt1LXzGU8}/_ssgManifest.js +0 -0
@@ -1,4 +1,4 @@
1
- module.exports=[270406,(e,t,a)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},446786,(e,t,a)=>{t.exports=e.x("os",()=>require("os"))},814747,(e,t,a)=>{t.exports=e.x("path",()=>require("path"))},924868,(e,t,a)=>{t.exports=e.x("fs/promises",()=>require("fs/promises"))},130146,(e,t,a)=>{t.exports=e.x("pino-28069d5257187539",()=>require("pino-28069d5257187539"))},224361,(e,t,a)=>{t.exports=e.x("util",()=>require("util"))},233405,(e,t,a)=>{t.exports=e.x("child_process",()=>require("child_process"))},666680,(e,t,a)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},25146,e=>{"use strict";var t=e.i(130146),a=e.i(814747),r=e.i(446786);let i=a.default.join(r.default.homedir(),".purplemux","logs"),s=process.env.LOG_LEVEL||"info",n=(e=>{if(!e)return{};let t={};for(let a of e.split(",")){let[e,r]=a.split("=").map(e=>e.trim());e&&r&&(t[e]=r)}return t})(process.env.LOG_LEVELS),l=["trace","debug","info","warn","error","fatal"],o=globalThis;if(!o.__ptRootLogger){let e=[s,...Object.values(n)].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:a.default.join(i,"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=n[e]??s,t}])},597789,965898,e=>{"use strict";let t=process.env.__PMUX_PRISTINE_ENV,a=Object.freeze(t?JSON.parse(t):{...process.env});t||(process.env.__PMUX_PRISTINE_ENV=JSON.stringify(a)),e.s(["PRISTINE_ENV",0,a],965898);let r=new Set(["HOME","USER","LOGNAME","SHELL","PATH","TERM","COLORTERM","LANG","TMPDIR","SSH_AUTH_SOCK","SSH_CONNECTION","SSH_TTY","DISPLAY","WAYLAND_DISPLAY","XDG_RUNTIME_DIR","TZ"]),i=["LC_"],s=e=>r.has(e)||i.some(t=>e.startsWith(t)),n={TERM:"xterm-256color",COLORTERM:"truecolor"},l=()=>{let e={};for(let[t,r]of Object.entries(a))void 0!==r&&s(t)&&(e[t]=r);return{...e,...n}},o=e=>`'${e.replace(/'/g,"'\\''")}'`,u=()=>a.SHELL||"/bin/bash";e.s(["buildShellEnv",0,()=>l(),"buildShellLaunchCommand",0,()=>{let e=Object.entries(l()).map(([e,t])=>`${e}=${o(t)}`).join(" ");return`env -i TMUX="$TMUX" TMUX_PANE="$TMUX_PANE" ${e} ${o(u())} -l`},"defaultShell",0,u],597789)},44014,e=>{"use strict";let t,a;var r=e.i(666680);e.s(["nanoid",0,function(e=21){var i;i=e|=0,!t||t.length<i?(t=Buffer.allocUnsafe(128*i),r.webcrypto.getRandomValues(t),a=0):a+i>t.length&&(r.webcrypto.getRandomValues(t),a=0),a+=i;let s="";for(let r=a-e;r<a;r++)s+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[63&t[r]];return s}],44014)},459015,544538,e=>{"use strict";var t=e.i(233405),a=e.i(924868),r=e.i(224361),i=e.i(814747),s=e.i(44014),n=e.i(965898),l=e.i(597789),o=e.i(25146);process.platform;let u="linux"===process.platform;e.s(["isLinux",0,u],544538);let c=(0,o.createLogger)("terminal"),p=(0,r.promisify)(t.execFile),d="purple",m=i.default.join(process.env.__PMUX_APP_DIR_UNPACKED||process.env.__PMUX_APP_DIR||process.cwd(),"src","config","tmux.conf"),w=async()=>{try{let{stdout:e}=await p("tmux",["-L",d,"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,a,r)=>{let i=(0,l.buildShellLaunchCommand)();await p("tmux",["-u","-L",d,"-f",m,"new-session","-d","-s",e,"-x",String(t),"-y",String(a),i],{timeout:5e3,cwd:r||n.PRISTINE_ENV.HOME||"/"}),await _(),c.debug(`tmux session created: ${e} (cols: ${t}, rows: ${a})`)},y=e=>new Promise(t=>setTimeout(t,e)),h=async e=>{if(!await g(e))return;c.debug(`killSession start: ${e}`);let t=await L(e);if(t)try{c.debug(`SIGTERM → process group ${t}: ${e}`),process.kill(-t,"SIGTERM")}catch{}try{await p("tmux",["-L",d,"kill-session","-t",e],{timeout:5e3})}catch{}for(let t=0;t<5;t++){if(!await g(e))return void c.debug(`killSession done (SIGTERM): ${e}`);await y(200)}if(c.warn(`session survived SIGTERM, escalating to SIGKILL: ${e}`),t)try{c.debug(`SIGKILL → process group ${t}: ${e}`),process.kill(-t,"SIGKILL")}catch{}try{await p("tmux",["-L",d,"kill-session","-t",e],{timeout:5e3})}catch{}for(let t=0;t<3;t++){if(!await g(e))return void c.debug(`killSession done (SIGKILL): ${e}`);await y(200)}c.warn(`tmux session still alive after kill: ${e}`)},g=async e=>{try{return await p("tmux",["-L",d,"has-session","-t",e],{timeout:5e3}),!0}catch{return!1}},k=async()=>{},x=async()=>{await k();let e=await w();e.length>0&&e.forEach(e=>{c.debug(`existing tmux session found: ${e}`)})},b=async e=>{if(u)try{return await a.default.readlink(`/proc/${e}/cwd`)}catch{return null}try{let{stdout:t}=await p("lsof",["-a","-p",String(e),"-d","cwd","-Fn"],{timeout:5e3}),a=t.split("\n").find(e=>e.startsWith("n/"));return a?a.slice(1):null}catch{return null}},S=async e=>{let t=await L(e);if(t){let e=await b(t);if(e)return e}try{let{stdout:t}=await p("tmux",["-L",d,"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 p("tmux",["-L",d,"display-message","-p","-t",e,"#{pane_pid}"],{timeout:5e3}),a=parseInt(t.trim(),10);return Number.isNaN(a)?null:a}catch{return null}},_=async()=>{try{await p("tmux",["-L",d,"source-file",m],{timeout:5e3})}catch{}},I=async e=>{try{let{stdout:t}=await p("tmux",["-L",d,"list-panes","-t",e,"-F","#{pane_current_command}"],{timeout:5e3});return t.trim()||null}catch{return null}},v=async()=>{try{let{stdout:e}=await p("tmux",["-L",d,"list-panes","-a","-F","#{session_name} #{pane_current_command} #{pane_current_path} #{pane_pid} #{window_activity}"],{timeout:5e3}),t=new Map;for(let a of e.trim().split("\n")){if(!a)continue;let[e,r,i,s,n]=a.split(" ");if(e&&r){let a=parseInt(s,10),l=parseInt(n,10);t.set(e,{command:r,path:i||"",pid:Number.isNaN(a)?0:a,windowActivity:Number.isNaN(l)?0:l})}}return t}catch{return new Map}},N=new Set(["bash","zsh","fish","sh","dash"]),$=async e=>{let t=await I(e);return t?{isSafe:N.has(t),processName:t}:{isSafe:!1,processName:"unknown"}},P=async e=>{try{let{stdout:t}=await p("tmux",["-L",d,"display-message","-p","-t",e,"#{pane_title}"],{timeout:5e3});return t.trim()||null}catch{return null}},E=async e=>{await p("tmux",["-L",d,"copy-mode","-q","-t",e],{timeout:5e3}).catch(()=>{})},T=async(e,t)=>{await E(e),await p("tmux",["-L",d,"send-keys","-t",e,t,"Enter"],{timeout:5e3})},W=async(e,t)=>{await E(e),await p("tmux",["-L",d,"send-keys","-t",e,t],{timeout:5e3})},C=async(e,t)=>{await E(e),await p("tmux",["-L",d,"send-keys","-t",e,"-l",`\x1b[200~${t}\x1b[201~`],{timeout:5e3}),await p("tmux",["-L",d,"send-keys","-t",e,"Enter"],{timeout:5e3}),await new Promise(e=>setTimeout(e,600)),await p("tmux",["-L",d,"send-keys","-t",e,"Enter"],{timeout:5e3})},A=async e=>{try{let{stdout:t}=await p("tmux",["-L",d,"display-message","-p","-t",e,"#{pane_current_path} #{pane_current_command} #{pane_pid} #{pane_width} #{pane_height} #{session_created}"],{timeout:5e3}),[a,r,i,s,n,l]=t.trim().split(" ");return{cwd:a||null,command:r||null,pid:i&&parseInt(i,10)||null,width:s&&parseInt(s,10)||null,height:n&&parseInt(n,10)||null,sessionCreated:l&&parseInt(l,10)||null}}catch{return{cwd:null,command:null,pid:null,width:null,height:null,sessionCreated:null}}},O=new Set(["node","python","python3","ruby","perl","deno","bun"]),D=async()=>{try{await p("tmux",["-L",d,"kill-server"],{timeout:5e3}),c.debug("tmux server killed")}catch{}},F=async e=>{try{let{stdout:t}=await p("tmux",["-L",d,"capture-pane","-p","-t",e],{timeout:5e3});return t}catch{return null}},j=async(e,t)=>{try{let{stdout:a}=await p("tmux",["-L",d,"capture-pane","-p","-S",`-${t}`,"-t",e],{timeout:5e3});return a}catch{return null}},M=async e=>{if(u){let t=[];return await Promise.all(e.map(async e=>{try{for(let r of(await a.default.readFile(`/proc/${e}/task/${e}/children`,"utf-8")).trim().split(/\s+/)){let e=parseInt(r,10);Number.isNaN(e)||t.push(e)}}catch{}})),t}try{let{stdout:t}=await p("pgrep",["-P",e.join(",")],{timeout:5e3});return t.trim().split("\n").map(e=>parseInt(e,10)).filter(e=>!Number.isNaN(e))}catch{return[]}},R=async e=>{let t=[],a=[e];for(;a.length>0;){let e=await M(a);if(0===e.length)break;t.push(...e),a=e}return t},q=async e=>{try{let t=new Set(e),{stdout:a}=await p("ss",["-tlnp"],{timeout:5e3}),r=new Set;for(let e of a.split("\n")){let a=e.match(/pid=(\d+)/g);if(!a||!a.some(e=>t.has(parseInt(e.replace("pid=",""),10))))continue;let i=e.match(/:(\d+)\s/);i&&r.add(parseInt(i[1],10))}return[...r].sort((e,t)=>e-t)}catch{return[]}},H=async e=>{let t=await R(e);if(0===t.length)return[];if(u)return q(t);try{let{stdout:e}=await p("lsof",["-a","-p",t.join(","),"-i","-sTCP:LISTEN","-P","-Fn"],{timeout:5e3}),a=new Set;for(let t of e.split("\n"))if(t.startsWith("n")){let e=t.match(/:(\d+)$/);e&&a.add(parseInt(e[1],10))}return[...a].sort((e,t)=>e-t)}catch{return[]}},U=async e=>{let t=await L(e);if(!t)return null;try{let{stdout:e}=await p("pgrep",["-n","-P",String(t)],{timeout:5e3}),a=e.trim();if(!a)return null;let{stdout:r}=await p("ps",["-o","args=","-p",a],{timeout:5e3}),s=r.trim();if(!s)return null;let n=s.split(/\s+/);if(0===n.length)return s;if(n[0]=i.default.basename(n[0]),O.has(n[0])&&n.length>1){let e=i.default.basename(n[1]).replace(/\.(c|m)?js$/,"");n.splice(0,2,e)}return n.join(" ")}catch{return null}};e.s(["SAFE_SHELLS",0,N,"applyConfig",0,_,"capturePaneContent",0,F,"capturePaneContentWithHistory",0,j,"checkTerminalProcess",0,$,"createSession",0,f,"defaultSessionName",0,()=>`pt-${(0,s.nanoid)(6)}-${(0,s.nanoid)(6)}-${(0,s.nanoid)(6)}`,"exitCopyMode",0,E,"getAllPanesInfo",0,v,"getLastCommand",0,U,"getListeningPorts",0,H,"getPaneCurrentCommand",0,I,"getPaneDetailInfo",0,A,"getPaneTitle",0,P,"getSessionCwd",0,S,"getSessionPanePid",0,L,"hasSession",0,g,"killServer",0,D,"killSession",0,h,"listSessions",0,w,"scanSessions",0,x,"sendBracketedPaste",0,C,"sendKeys",0,T,"sendRawKeys",0,W,"workspaceSessionName",0,(e,t,a)=>`pt-${e}-${t}-${a}`],459015)},688947,(e,t,a)=>{t.exports=e.x("stream",()=>require("stream"))},406461,(e,t,a)=>{t.exports=e.x("zlib",()=>require("zlib"))},254799,(e,t,a)=>{t.exports=e.x("crypto",()=>require("crypto"))},524836,(e,t,a)=>{t.exports=e.x("https",()=>require("https"))},921517,(e,t,a)=>{t.exports=e.x("http",()=>require("http"))},504446,(e,t,a)=>{t.exports=e.x("net",()=>require("net"))},755004,(e,t,a)=>{t.exports=e.x("tls",()=>require("tls"))},792509,(e,t,a)=>{t.exports=e.x("url",()=>require("url"))},500874,(e,t,a)=>{t.exports=e.x("buffer",()=>require("buffer"))},427699,(e,t,a)=>{t.exports=e.x("events",()=>require("events"))},666126,e=>{"use strict";e.i(478319);var t=e.i(220951);(0,e.i(25146).createLogger)("sync");let a=globalThis;a.__ptSyncClients||(a.__ptSyncClients=new Set);let r=a.__ptSyncClients;e.s(["broadcastSync",0,e=>{let a=JSON.stringify(e);for(let e of r)e.readyState===t.WebSocket.OPEN&&e.bufferedAmount<1048576&&e.send(a)}])},322429,160874,e=>{"use strict";var t=e.i(924868),a=e.i(814747),r=e.i(446786),i=e.i(44014),s=e.i(459015),n=e.i(25146),l=e.i(666126),o=e.i(825265),u=e.i(804767);(0,n.createLogger)("claude-prompt");let c=e=>a.default.join((0,o.resolveLayoutDir)(e),"claude-prompt.md"),p=async e=>{let r=c(e.id);await t.default.mkdir(a.default.dirname(r),{recursive:!0});let i=`# purplemux context
1
+ module.exports=[270406,(e,t,a)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},446786,(e,t,a)=>{t.exports=e.x("os",()=>require("os"))},814747,(e,t,a)=>{t.exports=e.x("path",()=>require("path"))},924868,(e,t,a)=>{t.exports=e.x("fs/promises",()=>require("fs/promises"))},130146,(e,t,a)=>{t.exports=e.x("pino-28069d5257187539",()=>require("pino-28069d5257187539"))},224361,(e,t,a)=>{t.exports=e.x("util",()=>require("util"))},233405,(e,t,a)=>{t.exports=e.x("child_process",()=>require("child_process"))},666680,(e,t,a)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},25146,e=>{"use strict";var t=e.i(130146),a=e.i(814747),r=e.i(446786);let i=a.default.join(r.default.homedir(),".purplemux","logs"),s=process.env.LOG_LEVEL||"info",n=(e=>{if(!e)return{};let t={};for(let a of e.split(",")){let[e,r]=a.split("=").map(e=>e.trim());e&&r&&(t[e]=r)}return t})(process.env.LOG_LEVELS),o=["trace","debug","info","warn","error","fatal"],l=globalThis;if(!l.__ptRootLogger){let e=[s,...Object.values(n)].reduce((e,t)=>o.indexOf(t)<o.indexOf(e)?t:e,"fatal");l.__ptRootLogger=(0,t.default)({level:e,transport:{targets:[{target:"pino-roll",level:e,options:{file:a.default.join(i,"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=l.__ptRootLogger;e.s(["createLogger",0,e=>{let t=u.child({module:e});return t.level=n[e]??s,t}])},597789,965898,e=>{"use strict";let t=process.env.__PMUX_PRISTINE_ENV,a=Object.freeze(t?JSON.parse(t):{...process.env});t||(process.env.__PMUX_PRISTINE_ENV=JSON.stringify(a)),e.s(["PRISTINE_ENV",0,a],965898);let r=new Set(["HOME","USER","LOGNAME","SHELL","PATH","TERM","COLORTERM","LANG","TMPDIR","SSH_AUTH_SOCK","SSH_CONNECTION","SSH_TTY","DISPLAY","WAYLAND_DISPLAY","XDG_RUNTIME_DIR","TZ"]),i=["LC_"],s=e=>r.has(e)||i.some(t=>e.startsWith(t)),n={TERM:"xterm-256color",COLORTERM:"truecolor"},o=()=>{let e={};for(let[t,r]of Object.entries(a))void 0!==r&&s(t)&&(e[t]=r);return{...e,...n}},l=e=>`'${e.replace(/'/g,"'\\''")}'`,u=()=>a.SHELL||"/bin/bash";e.s(["buildShellEnv",0,()=>o(),"buildShellLaunchCommand",0,()=>{let e=Object.entries(o()).map(([e,t])=>`${e}=${l(t)}`).join(" ");return`env -i TMUX="$TMUX" TMUX_PANE="$TMUX_PANE" ${e} ${l(u())} -l`},"defaultShell",0,u],597789)},44014,e=>{"use strict";let t,a;var r=e.i(666680);e.s(["nanoid",0,function(e=21){var i;i=e|=0,!t||t.length<i?(t=Buffer.allocUnsafe(128*i),r.webcrypto.getRandomValues(t),a=0):a+i>t.length&&(r.webcrypto.getRandomValues(t),a=0),a+=i;let s="";for(let r=a-e;r<a;r++)s+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[63&t[r]];return s}],44014)},459015,544538,e=>{"use strict";var t=e.i(233405),a=e.i(924868),r=e.i(224361),i=e.i(814747),s=e.i(44014),n=e.i(965898),o=e.i(597789),l=e.i(25146);process.platform;let u="linux"===process.platform;e.s(["isLinux",0,u],544538);let c=(0,l.createLogger)("terminal"),p=(0,r.promisify)(t.execFile),d="purple",m=i.default.join(process.env.__PMUX_APP_DIR_UNPACKED||process.env.__PMUX_APP_DIR||process.cwd(),"src","config","tmux.conf"),w=async()=>{try{let{stdout:e}=await p("tmux",["-L",d,"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,a,r)=>{let i=(0,o.buildShellLaunchCommand)();await p("tmux",["-u","-L",d,"-f",m,"new-session","-d","-s",e,"-x",String(t),"-y",String(a),i],{timeout:5e3,cwd:r||n.PRISTINE_ENV.HOME||"/"}),await I(),c.debug(`tmux session created: ${e} (cols: ${t}, rows: ${a})`)},y=e=>new Promise(t=>setTimeout(t,e)),h=async e=>{if(!await g(e))return;c.debug(`killSession start: ${e}`);let t=await L(e);if(t)try{c.debug(`SIGTERM → process group ${t}: ${e}`),process.kill(-t,"SIGTERM")}catch{}try{await p("tmux",["-L",d,"kill-session","-t",e],{timeout:5e3})}catch{}for(let t=0;t<5;t++){if(!await g(e))return void c.debug(`killSession done (SIGTERM): ${e}`);await y(200)}if(c.warn(`session survived SIGTERM, escalating to SIGKILL: ${e}`),t)try{c.debug(`SIGKILL → process group ${t}: ${e}`),process.kill(-t,"SIGKILL")}catch{}try{await p("tmux",["-L",d,"kill-session","-t",e],{timeout:5e3})}catch{}for(let t=0;t<3;t++){if(!await g(e))return void c.debug(`killSession done (SIGKILL): ${e}`);await y(200)}c.warn(`tmux session still alive after kill: ${e}`)},g=async e=>{try{return await p("tmux",["-L",d,"has-session","-t",e],{timeout:5e3}),!0}catch{return!1}},k=async()=>{},x=async()=>{await k();let e=await w();e.length>0&&e.forEach(e=>{c.debug(`existing tmux session found: ${e}`)})},b=async e=>{if(u)try{return await a.default.readlink(`/proc/${e}/cwd`)}catch{return null}try{let{stdout:t}=await p("lsof",["-a","-p",String(e),"-d","cwd","-Fn"],{timeout:5e3}),a=t.split("\n").find(e=>e.startsWith("n/"));return a?a.slice(1):null}catch{return null}},S=async e=>{let t=await L(e);if(t){let e=await b(t);if(e)return e}try{let{stdout:t}=await p("tmux",["-L",d,"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 p("tmux",["-L",d,"display-message","-p","-t",e,"#{pane_pid}"],{timeout:5e3}),a=parseInt(t.trim(),10);return Number.isNaN(a)?null:a}catch{return null}},I=async()=>{try{await p("tmux",["-L",d,"source-file",m],{timeout:5e3})}catch{}},_=async e=>{try{let{stdout:t}=await p("tmux",["-L",d,"list-panes","-t",e,"-F","#{pane_current_command}"],{timeout:5e3});return t.trim()||null}catch{return null}},v=async()=>{try{let{stdout:e}=await p("tmux",["-L",d,"list-panes","-a","-F","#{session_name} #{pane_current_command} #{pane_current_path} #{pane_pid} #{window_activity}"],{timeout:5e3}),t=new Map;for(let a of e.trim().split("\n")){if(!a)continue;let[e,r,i,s,n]=a.split(" ");if(e&&r){let a=parseInt(s,10),o=parseInt(n,10);t.set(e,{command:r,path:i||"",pid:Number.isNaN(a)?0:a,windowActivity:Number.isNaN(o)?0:o})}}return t}catch{return new Map}},$=new Set(["bash","zsh","fish","sh","dash"]),N=async e=>{let t=await _(e);return t?{isSafe:$.has(t),processName:t}:{isSafe:!1,processName:"unknown"}},P=async e=>{try{let{stdout:t}=await p("tmux",["-L",d,"display-message","-p","-t",e,"#{pane_title}"],{timeout:5e3});return t.trim()||null}catch{return null}},T=async e=>{await p("tmux",["-L",d,"copy-mode","-q","-t",e],{timeout:5e3}).catch(()=>{})},W=async(e,t)=>{await T(e),await p("tmux",["-L",d,"send-keys","-t",e,t,"Enter"],{timeout:5e3})},E=async(e,t)=>{await T(e),await p("tmux",["-L",d,"send-keys","-t",e,t],{timeout:5e3})},C=async(e,t)=>{await T(e),await p("tmux",["-L",d,"send-keys","-t",e,"-l",`\x1b[200~${t}\x1b[201~`],{timeout:5e3}),await p("tmux",["-L",d,"send-keys","-t",e,"Enter"],{timeout:5e3}),await new Promise(e=>setTimeout(e,600)),await p("tmux",["-L",d,"send-keys","-t",e,"Enter"],{timeout:5e3})},A=async e=>{try{let{stdout:t}=await p("tmux",["-L",d,"display-message","-p","-t",e,"#{pane_current_path} #{pane_current_command} #{pane_pid} #{pane_width} #{pane_height} #{session_created}"],{timeout:5e3}),[a,r,i,s,n,o]=t.trim().split(" ");return{cwd:a||null,command:r||null,pid:i&&parseInt(i,10)||null,width:s&&parseInt(s,10)||null,height:n&&parseInt(n,10)||null,sessionCreated:o&&parseInt(o,10)||null}}catch{return{cwd:null,command:null,pid:null,width:null,height:null,sessionCreated:null}}},O=new Set(["node","python","python3","ruby","perl","deno","bun"]),D=async()=>{try{await p("tmux",["-L",d,"kill-server"],{timeout:5e3}),c.debug("tmux server killed")}catch{}},F=async e=>{try{let{stdout:t}=await p("tmux",["-L",d,"capture-pane","-p","-t",e],{timeout:5e3});return t}catch{return null}},M=async(e,t)=>{try{let{stdout:a}=await p("tmux",["-L",d,"capture-pane","-p","-S",`-${t}`,"-t",e],{timeout:5e3});return a}catch{return null}},j=async e=>{if(u){let t=[];return await Promise.all(e.map(async e=>{try{for(let r of(await a.default.readFile(`/proc/${e}/task/${e}/children`,"utf-8")).trim().split(/\s+/)){let e=parseInt(r,10);Number.isNaN(e)||t.push(e)}}catch{}})),t}try{let{stdout:t}=await p("pgrep",["-P",e.join(",")],{timeout:5e3});return t.trim().split("\n").map(e=>parseInt(e,10)).filter(e=>!Number.isNaN(e))}catch{return[]}},R=async e=>{let t=[],a=[e];for(;a.length>0;){let e=await j(a);if(0===e.length)break;t.push(...e),a=e}return t},G=async e=>{try{let t=new Set(e),{stdout:a}=await p("ss",["-tlnp"],{timeout:5e3}),r=new Set;for(let e of a.split("\n")){let a=e.match(/pid=(\d+)/g);if(!a||!a.some(e=>t.has(parseInt(e.replace("pid=",""),10))))continue;let i=e.match(/:(\d+)\s/);i&&r.add(parseInt(i[1],10))}return[...r].sort((e,t)=>e-t)}catch{return[]}},q=async e=>{let t=await R(e);if(0===t.length)return[];if(u)return G(t);try{let{stdout:e}=await p("lsof",["-a","-p",t.join(","),"-i","-sTCP:LISTEN","-P","-Fn"],{timeout:5e3}),a=new Set;for(let t of e.split("\n"))if(t.startsWith("n")){let e=t.match(/:(\d+)$/);e&&a.add(parseInt(e[1],10))}return[...a].sort((e,t)=>e-t)}catch{return[]}},H=async e=>{let t=await L(e);if(!t)return null;try{let{stdout:e}=await p("pgrep",["-n","-P",String(t)],{timeout:5e3}),a=e.trim();if(!a)return null;let{stdout:r}=await p("ps",["-o","args=","-p",a],{timeout:5e3}),s=r.trim();if(!s)return null;let n=s.split(/\s+/);if(0===n.length)return s;if(n[0]=i.default.basename(n[0]),O.has(n[0])&&n.length>1){let e=i.default.basename(n[1]).replace(/\.(c|m)?js$/,"");n.splice(0,2,e)}return n.join(" ")}catch{return null}};e.s(["SAFE_SHELLS",0,$,"applyConfig",0,I,"capturePaneContent",0,F,"capturePaneContentWithHistory",0,M,"checkTerminalProcess",0,N,"createSession",0,f,"defaultSessionName",0,()=>`pt-${(0,s.nanoid)(6)}-${(0,s.nanoid)(6)}-${(0,s.nanoid)(6)}`,"exitCopyMode",0,T,"getAllPanesInfo",0,v,"getLastCommand",0,H,"getListeningPorts",0,q,"getPaneCurrentCommand",0,_,"getPaneDetailInfo",0,A,"getPaneTitle",0,P,"getSessionCwd",0,S,"getSessionPanePid",0,L,"hasSession",0,g,"killServer",0,D,"killSession",0,h,"listSessions",0,w,"scanSessions",0,x,"sendBracketedPaste",0,C,"sendKeys",0,W,"sendRawKeys",0,E,"workspaceSessionName",0,(e,t,a)=>`pt-${e}-${t}-${a}`],459015)},688947,(e,t,a)=>{t.exports=e.x("stream",()=>require("stream"))},406461,(e,t,a)=>{t.exports=e.x("zlib",()=>require("zlib"))},254799,(e,t,a)=>{t.exports=e.x("crypto",()=>require("crypto"))},524836,(e,t,a)=>{t.exports=e.x("https",()=>require("https"))},921517,(e,t,a)=>{t.exports=e.x("http",()=>require("http"))},504446,(e,t,a)=>{t.exports=e.x("net",()=>require("net"))},755004,(e,t,a)=>{t.exports=e.x("tls",()=>require("tls"))},792509,(e,t,a)=>{t.exports=e.x("url",()=>require("url"))},500874,(e,t,a)=>{t.exports=e.x("buffer",()=>require("buffer"))},427699,(e,t,a)=>{t.exports=e.x("events",()=>require("events"))},666126,e=>{"use strict";e.i(478319);var t=e.i(220951);(0,e.i(25146).createLogger)("sync");let a=globalThis;a.__ptSyncClients||(a.__ptSyncClients=new Set);let r=a.__ptSyncClients;e.s(["broadcastSync",0,e=>{let a=JSON.stringify(e);for(let e of r)e.readyState===t.WebSocket.OPEN&&e.bufferedAmount<1048576&&e.send(a)}])},322429,160874,e=>{"use strict";var t=e.i(924868),a=e.i(814747),r=e.i(446786),i=e.i(44014),s=e.i(459015),n=e.i(25146),o=e.i(666126),l=e.i(825265),u=e.i(804767);(0,n.createLogger)("claude-prompt");let c=e=>a.default.join((0,l.resolveLayoutDir)(e),"claude-prompt.md"),p=async e=>{let r=c(e.id);await t.default.mkdir(a.default.dirname(r),{recursive:!0});let i=`# purplemux context
2
2
 
3
3
  You are running inside a purplemux workspace tab.
4
4
 
@@ -37,6 +37,6 @@ purplemux api-guide
37
37
  (long-running builds, different project context, parallel exploration).
38
38
  - Poll \`status\` and read \`result\` to verify delegated work.
39
39
  - Prefer small, scoped tabs over cramming everything into one session.
40
- `;try{if(await t.default.readFile(r,"utf-8")===i)return r}catch{}return await t.default.writeFile(r,i,"utf-8"),r};e.s(["getClaudePromptPath",0,c,"writeClaudePromptFile",0,p],160874);let d=(0,n.createLogger)("workspace"),m="Workspace ",w=a.default.join(r.default.homedir(),".purplemux"),f=a.default.join(w,"workspaces.json"),y=a.default.join(w,"layout.json"),h=a.default.join(w,"tabs.json"),g=globalThis;g.__purplemuxWorkspaceLock||(g.__purplemuxWorkspaceLock=Promise.resolve());let k=async e=>{let t,a=new Promise(e=>{t=e}),r=g.__purplemuxWorkspaceLock;g.__purplemuxWorkspaceLock=a,await r;try{return await e()}finally{t()}},x=()=>({workspaces:[],sidebarCollapsed:!1,sidebarWidth:240,updatedAt:new Date().toISOString()}),b=async()=>{let e;try{e=await t.default.readFile(f,"utf-8")}catch{return null}try{let t=JSON.parse(e);for(let e of t.workspaces)!e.directories&&e.directory&&(e.directories=[e.directory],delete e.directory);return t}catch{d.warn("Failed to parse workspaces.json, starting empty");try{await t.default.copyFile(f,f.replace(/\.json$/,".json.bak"))}catch{}return null}},S=async e=>{let{workspaces:a,activeWorkspaceId:r,sidebarCollapsed:i,sidebarWidth:s}=e,n=JSON.stringify({workspaces:a,activeWorkspaceId:r,sidebarCollapsed:i,sidebarWidth:s});if(g.__purplemuxWorkspacesContentCache===n)return;e.updatedAt=new Date().toISOString();let o=f+".tmp";try{await t.default.writeFile(o,JSON.stringify(e,null,2),{mode:384}),await t.default.rename(o,f)}catch(e){throw await t.default.unlink(o).catch(()=>{}),e}g.__purplemuxWorkspacesContentCache=n,(0,l.broadcastSync)({type:"workspace"})},L=async()=>{let e=await (0,o.readLayoutFile)(y);if(!e)return null;let a="ws-default";await t.default.mkdir((0,o.resolveLayoutDir)(a),{recursive:!0}),await (0,o.writeLayoutFile)(e,(0,o.resolveLayoutFile)(a));let i={workspaces:[{id:a,name:"default",directories:[r.default.homedir()],order:0}],sidebarCollapsed:!1,sidebarWidth:240,updatedAt:e.updatedAt||new Date().toISOString()};return await S(i),d.info("Phase 4 layout.json → Workspace 'default' migration complete"),i},_=async()=>{try{let e=await t.default.readFile(h,"utf-8"),a=JSON.parse(e);if(!Array.isArray(a.tabs)||0===a.tabs.length)return null;let r=`pane-${(0,i.nanoid)(6)}`,s={root:{type:"pane",id:r,tabs:a.tabs,activeTabId:a.activeTabId??null},activePaneId:r,updatedAt:new Date().toISOString()},n=y+".tmp";try{await t.default.writeFile(n,JSON.stringify(s,null,2),{mode:384}),await t.default.rename(n,y)}catch(e){throw await t.default.unlink(n).catch(()=>{}),e}return d.info("tabs.json → layout.json migration complete"),await L()}catch{return null}},I=async()=>{await t.default.mkdir(a.default.join(w,"workspaces"),{recursive:!0});let e=await b();if(!e&&(await t.default.access(y).then(()=>!0).catch(()=>!1)?e=await L():await t.default.access(h).then(()=>!0).catch(()=>!1)&&(e=await _())),!e){let t=x();await S(t),e=t,d.info("Initial workspaces.json created")}if(0===e.workspaces.length)return;let r=await (0,s.listSessions)();for(let t of e.workspaces){let e=(0,o.resolveLayoutFile)(t.id),a=await (0,o.readLayoutFile)(e);if(!a){d.warn(`Workspace '${t.name}': layout.json corrupted, reset to default pane`),a=await (0,o.createDefaultLayout)(t.id,t.directories[0]),await (0,o.writeLayoutFile)(a,e);continue}let i=(0,u.collectAllTabs)(a.root).map(e=>e.sessionName),s=`pt-${t.id}-`,n=r.filter(e=>i.includes(e)||e.startsWith(s));try{await (0,o.crossCheckLayout)(a,n,t.id,t.directories[0])&&await (0,o.writeLayoutFile)(a,e)}catch(e){d.error(`Workspace '${t.name}': tmux consistency check failed: ${e instanceof Error?e.message:e}`)}}},v=async()=>{let e=await b();return e?{workspaces:e.workspaces,activeWorkspaceId:e.activeWorkspaceId,sidebarCollapsed:e.sidebarCollapsed,sidebarWidth:e.sidebarWidth}:{workspaces:[],sidebarCollapsed:!1,sidebarWidth:220}},N=async()=>{let e=await b();return e?.activeWorkspaceId&&e.workspaces.some(t=>t.id===e.activeWorkspaceId)?e.activeWorkspaceId:e?.workspaces[0]?.id??null},$=async e=>{let t=await b();return t?.workspaces.find(t=>t.id===e)},P=async(e,a,r)=>k(async()=>{let s;try{s=await t.default.stat(e)}catch{throw Error("Directory does not exist")}if(!s.isDirectory())throw Error("Please enter a directory path, not a file");let n=await b()??x(),l=`ws-${(0,i.nanoid)(6)}`,u=a?.trim()||(e=>{let t=0;for(let a of e)if(a.name.startsWith(m)){let e=parseInt(a.name.slice(m.length),10);e>t&&(t=e)}return`${m}${t+1}`})(n.workspaces),c=n.workspaces.length,w=await (0,o.createDefaultLayout)(l,e,r);await t.default.mkdir((0,o.resolveLayoutDir)(l),{recursive:!0}),await (0,o.writeLayoutFile)(w,(0,o.resolveLayoutFile)(l));let f={id:l,name:u,directories:[e],order:c};return n.workspaces.push(f),await S(n),await p(f),d.debug(`Created: ${l} (${u}, ${e})`),f}),E=async e=>k(async()=>{let t=await b()??x(),a=t.workspaces.findIndex(t=>t.id===e);if(-1===a)return!1;let r=t.workspaces[a],i=await (0,o.readLayoutFile)((0,o.resolveLayoutFile)(e));if(i)for(let e of(0,u.collectAllTabs)(i.root))try{await (0,s.killSession)(e.sessionName)}catch{}try{await (0,o.removeLayoutFile)(e)}catch{}return t.workspaces.splice(a,1),t.workspaces.forEach((e,t)=>{e.order=t}),await S(t),d.info(`Deleted: ${e} (${r.name})`),!0}),T=async(e,t)=>k(async()=>{let a=await b();if(!a)return null;let r=a.workspaces.find(t=>t.id===e);return r?(r.name=t,await S(a),await p(r),d.debug(`Renamed: ${e} → "${t}"`),{...r}):null}),W=async e=>k(async()=>{let t=await b()??x();void 0!==e.activeWorkspaceId&&(t.activeWorkspaceId=e.activeWorkspaceId),void 0!==e.sidebarCollapsed&&(t.sidebarCollapsed=e.sidebarCollapsed),void 0!==e.sidebarWidth&&(t.sidebarWidth=e.sidebarWidth),await S(t)}),C=async(e,t)=>k(async()=>{let a=await b();if(!a)return;let r=a.workspaces.find(t=>t.id===e);r&&JSON.stringify(r.directories)!==JSON.stringify(t)&&(r.directories=t,await S(a),await p(r))}),A=async e=>k(async()=>{let t=await b()??x(),a=new Map(t.workspaces.map(e=>[e.id,e])),r=[];for(let t of e){let e=a.get(t);if(!e)return!1;r.push(e)}return r.length===t.workspaces.length&&(r.forEach((e,t)=>{e.order=t}),t.workspaces=r,await S(t),!0)}),O=async e=>{try{if(!(await t.default.stat(e)).isDirectory())return{valid:!1,error:"Please enter a directory path, not a file"}}catch{return{valid:!1,error:"Directory does not exist"}}return{valid:!0,suggestedName:a.default.basename(e)}};e.s(["createWorkspace",0,P,"deleteWorkspace",0,E,"getActiveWorkspaceId",0,N,"getWorkspaceById",0,$,"getWorkspaces",0,v,"initWorkspaceStore",0,I,"renameWorkspace",0,T,"reorderWorkspaces",0,A,"updateActive",0,W,"updateWorkspaceDirectories",0,C,"validateDirectory",0,O],322429)}];
40
+ `;try{if(await t.default.readFile(r,"utf-8")===i)return r}catch{}return await t.default.writeFile(r,i,"utf-8"),r};e.s(["getClaudePromptPath",0,c,"writeClaudePromptFile",0,p],160874);let d=(0,n.createLogger)("workspace"),m="Workspace ",w=a.default.join(r.default.homedir(),".purplemux"),f=a.default.join(w,"workspaces.json"),y=a.default.join(w,"layout.json"),h=a.default.join(w,"tabs.json"),g=globalThis;g.__purplemuxWorkspaceLock||(g.__purplemuxWorkspaceLock=Promise.resolve());let k=async e=>{let t,a=new Promise(e=>{t=e}),r=g.__purplemuxWorkspaceLock;g.__purplemuxWorkspaceLock=a,await r;try{return await e()}finally{t()}},x=()=>({workspaces:[],groups:[],sidebarCollapsed:!1,sidebarWidth:240,updatedAt:new Date().toISOString()}),b=e=>(e.groups||(e.groups=[]),e.groups),S=async()=>{let e;try{e=await t.default.readFile(f,"utf-8")}catch{return null}try{let t=JSON.parse(e);for(let e of t.workspaces)!e.directories&&e.directory&&(e.directories=[e.directory],delete e.directory),delete e.order;for(let e of(Array.isArray(t.groups)||(t.groups=[]),t.groups))delete e.order;let a=new Set(t.groups.map(e=>e.id));for(let e of t.workspaces)e.groupId&&!a.has(e.groupId)&&(e.groupId=null);return t}catch{d.warn("Failed to parse workspaces.json, starting empty");try{await t.default.copyFile(f,f.replace(/\.json$/,".json.bak"))}catch{}return null}},L=async e=>{let a;a=b(e),e.workspaces=((e,t)=>{let a=new Set(t.map(e=>e.id)),r=new Map,i=[];for(let t of e){let e=t.groupId??null;if(e&&a.has(e)){let a=r.get(e)??[];a.push(t),r.set(e,a)}else i.push(t)}let s=[];for(let e of t){let t=r.get(e.id);t&&s.push(...t)}return s.push(...i),s})(e.workspaces,a);let{workspaces:r,groups:i,activeWorkspaceId:s,sidebarCollapsed:n,sidebarWidth:l}=e,u=JSON.stringify({workspaces:r,groups:i??[],activeWorkspaceId:s,sidebarCollapsed:n,sidebarWidth:l});if(g.__purplemuxWorkspacesContentCache===u)return;e.updatedAt=new Date().toISOString();let c=f+".tmp";try{await t.default.writeFile(c,JSON.stringify(e,null,2),{mode:384}),await t.default.rename(c,f)}catch(e){throw await t.default.unlink(c).catch(()=>{}),e}g.__purplemuxWorkspacesContentCache=u,(0,o.broadcastSync)({type:"workspace"})},I=async()=>{let e=await (0,l.readLayoutFile)(y);if(!e)return null;let a="ws-default";await t.default.mkdir((0,l.resolveLayoutDir)(a),{recursive:!0}),await (0,l.writeLayoutFile)(e,(0,l.resolveLayoutFile)(a));let i={workspaces:[{id:a,name:"default",directories:[r.default.homedir()]}],sidebarCollapsed:!1,sidebarWidth:240,updatedAt:e.updatedAt||new Date().toISOString()};return await L(i),d.info("Phase 4 layout.json → Workspace 'default' migration complete"),i},_=async()=>{try{let e=await t.default.readFile(h,"utf-8"),a=JSON.parse(e);if(!Array.isArray(a.tabs)||0===a.tabs.length)return null;let r=`pane-${(0,i.nanoid)(6)}`,s={root:{type:"pane",id:r,tabs:a.tabs,activeTabId:a.activeTabId??null},activePaneId:r,updatedAt:new Date().toISOString()},n=y+".tmp";try{await t.default.writeFile(n,JSON.stringify(s,null,2),{mode:384}),await t.default.rename(n,y)}catch(e){throw await t.default.unlink(n).catch(()=>{}),e}return d.info("tabs.json → layout.json migration complete"),await I()}catch{return null}},v=async()=>{await t.default.mkdir(a.default.join(w,"workspaces"),{recursive:!0});let e=await S();if(!e&&(await t.default.access(y).then(()=>!0).catch(()=>!1)?e=await I():await t.default.access(h).then(()=>!0).catch(()=>!1)&&(e=await _())),!e){let t=x();await L(t),e=t,d.info("Initial workspaces.json created")}if(0===e.workspaces.length)return;let r=await (0,s.listSessions)();for(let t of e.workspaces){let e=(0,l.resolveLayoutFile)(t.id),a=await (0,l.readLayoutFile)(e);if(!a){d.warn(`Workspace '${t.name}': layout.json corrupted, reset to default pane`),a=await (0,l.createDefaultLayout)(t.id,t.directories[0]),await (0,l.writeLayoutFile)(a,e);continue}let i=(0,u.collectAllTabs)(a.root).map(e=>e.sessionName),s=`pt-${t.id}-`,n=r.filter(e=>i.includes(e)||e.startsWith(s));try{await (0,l.crossCheckLayout)(a,n,t.id,t.directories[0])&&await (0,l.writeLayoutFile)(a,e)}catch(e){d.error(`Workspace '${t.name}': tmux consistency check failed: ${e instanceof Error?e.message:e}`)}}},$=async()=>{let e=await S();return e?{workspaces:e.workspaces,groups:e.groups??[],activeWorkspaceId:e.activeWorkspaceId,sidebarCollapsed:e.sidebarCollapsed,sidebarWidth:e.sidebarWidth}:{workspaces:[],groups:[],sidebarCollapsed:!1,sidebarWidth:220}},N=async()=>{let e=await S();return e?.activeWorkspaceId&&e.workspaces.some(t=>t.id===e.activeWorkspaceId)?e.activeWorkspaceId:e?.workspaces[0]?.id??null},P=async e=>{let t=await S();return t?.workspaces.find(t=>t.id===e)},T=async(e,a,r)=>k(async()=>{let s;try{s=await t.default.stat(e)}catch{throw Error("Directory does not exist")}if(!s.isDirectory())throw Error("Please enter a directory path, not a file");let n=await S()??x(),o=`ws-${(0,i.nanoid)(6)}`,u=a?.trim()||(e=>{let t=0;for(let a of e)if(a.name.startsWith(m)){let e=parseInt(a.name.slice(m.length),10);e>t&&(t=e)}return`${m}${t+1}`})(n.workspaces),c=await (0,l.createDefaultLayout)(o,e,r);await t.default.mkdir((0,l.resolveLayoutDir)(o),{recursive:!0}),await (0,l.writeLayoutFile)(c,(0,l.resolveLayoutFile)(o));let w={id:o,name:u,directories:[e]};return n.workspaces.push(w),await L(n),await p(w),d.debug(`Created: ${o} (${u}, ${e})`),w}),W=async e=>k(async()=>{let t=await S()??x(),a=t.workspaces.findIndex(t=>t.id===e);if(-1===a)return!1;let r=t.workspaces[a],i=await (0,l.readLayoutFile)((0,l.resolveLayoutFile)(e));if(i)for(let e of(0,u.collectAllTabs)(i.root))try{await (0,s.killSession)(e.sessionName)}catch{}try{await (0,l.removeLayoutFile)(e)}catch{}return t.workspaces.splice(a,1),await L(t),d.info(`Deleted: ${e} (${r.name})`),!0}),E=async(e,t)=>k(async()=>{let a=await S();if(!a)return null;let r=a.workspaces.find(t=>t.id===e);return r?(r.name=t,await L(a),await p(r),d.debug(`Renamed: ${e} → "${t}"`),{...r}):null}),C=async e=>k(async()=>{let t=await S()??x();void 0!==e.activeWorkspaceId&&(t.activeWorkspaceId=e.activeWorkspaceId),void 0!==e.sidebarCollapsed&&(t.sidebarCollapsed=e.sidebarCollapsed),void 0!==e.sidebarWidth&&(t.sidebarWidth=e.sidebarWidth),await L(t)}),A=async(e,t)=>k(async()=>{let a=await S();if(!a)return;let r=a.workspaces.find(t=>t.id===e);r&&JSON.stringify(r.directories)!==JSON.stringify(t)&&(r.directories=t,await L(a),await p(r))}),O=async e=>k(async()=>{let t=await S()??x(),a=new Map(t.workspaces.map(e=>[e.id,e])),r=new Set((t.groups??[]).map(e=>e.id)),i=[];for(let t of e){let e=a.get(t.id);if(!e)return!1;void 0!==t.groupId&&(e.groupId=t.groupId&&r.has(t.groupId)?t.groupId:null),i.push(e)}return i.length===t.workspaces.length&&(t.workspaces=i,await L(t),!0)}),D=async e=>k(async()=>{let t=await S()??x(),a=b(t),r=e.trim()||`Group ${a.length+1}`,s={id:`grp-${(0,i.nanoid)(6)}`,name:r,collapsed:!1};return a.push(s),await L(t),d.debug(`Group created: ${s.id} (${s.name})`),s}),F=async(e,t)=>k(async()=>{let a=await S();if(!a)return null;let r=(a.groups??[]).find(t=>t.id===e);if(!r)return null;let i=t.trim();return i?(r.name=i,await L(a),{...r}):r}),M=async(e,t)=>k(async()=>{let a=await S();if(!a)return!1;let r=(a.groups??[]).find(t=>t.id===e);return!!r&&(r.collapsed===t||(r.collapsed=t,await L(a),!0))}),j=async e=>k(async()=>{let t=await S();if(!t)return!1;let a=b(t),r=a.findIndex(t=>t.id===e);if(-1===r)return!1;for(let a of t.workspaces)a.groupId===e&&(a.groupId=null);return a.splice(r,1),await L(t),d.info(`Group ungrouped: ${e}`),!0}),R=async e=>k(async()=>{let t=await S();if(!t)return!1;let a=b(t),r=new Map(a.map(e=>[e.id,e])),i=[];for(let t of e){let e=r.get(t);if(!e)return!1;i.push(e)}return i.length===a.length&&(t.groups=i,await L(t),!0)}),G=async(e,t)=>k(async()=>{let a=await S();if(!a)return!1;let r=a.workspaces.find(t=>t.id===e);if(!r)return!1;let i=new Set((a.groups??[]).map(e=>e.id)),s=t&&i.has(t)?t:null;return(r.groupId??null)===s||(r.groupId=s,await L(a),!0)}),q=async e=>{try{if(!(await t.default.stat(e)).isDirectory())return{valid:!1,error:"Please enter a directory path, not a file"}}catch{return{valid:!1,error:"Directory does not exist"}}return{valid:!0,suggestedName:a.default.basename(e)}};e.s(["createGroup",0,D,"createWorkspace",0,T,"deleteWorkspace",0,W,"getActiveWorkspaceId",0,N,"getWorkspaceById",0,P,"getWorkspaces",0,$,"initWorkspaceStore",0,v,"renameGroup",0,F,"renameWorkspace",0,E,"reorderGroups",0,R,"reorderWorkspaces",0,O,"setGroupCollapsed",0,M,"setWorkspaceGroup",0,G,"ungroupGroup",0,j,"updateActive",0,C,"updateWorkspaceDirectories",0,A,"validateDirectory",0,q],322429)}];
41
41
 
42
42
  //# sourceMappingURL=%5Broot-of-the-server%5D__12ksl6n._.js.map
@@ -1,3 +1,3 @@
1
1
  module.exports=[113214,e=>{"use strict";var t=e.i(926747),r=e.i(190406),a=e.i(244898),n=e.i(262950),i=e.i(825265),s=e.i(322429);let o=(0,e.i(25146).createLogger)("layout"),l=async(e,t)=>{if("POST"!==e.method)return t.setHeader("Allow","POST"),t.status(405).json({error:"Method not allowed"});let r=e.query.workspace||await (0,s.getActiveWorkspaceId)();if(!r)return t.status(400).json({error:"No workspace found"});try{let{sourcePaneId:a,orientation:n,cwd:s,panelType:o}=e.body??{};if(a&&n){let e=await (0,i.splitPaneInLayout)(r,a,n,s,o);if(!e)return t.status(404).json({error:"Target pane not found"});return t.status(200).json(e)}let l=await (0,i.createPane)(r,s);return t.status(200).json(l)}catch(e){return o.error(`pane creation failed: ${e instanceof Error?e.message:e}`),t.status(500).json({error:"Failed to create pane"})}};e.s(["default",0,l],846086);var u=e.i(846086),d=e.i(7031),p=e.i(181927),c=e.i(846432);let v=(0,n.hoist)(u,"default"),h=(0,n.hoist)(u,"config"),f=new a.PagesAPIRouteModule({definition:{kind:r.RouteKind.PAGES_API,page:"/api/layout/pane/index",pathname:"/api/layout/pane",bundlePath:"",filename:""},userland:u,distDir:".next",relativeProjectDir:""});async function g(e,r,a){a.requestMeta&&(0,c.setRequestMeta)(e,a.requestMeta),f.isDev&&(0,c.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let n="/api/layout/pane/index";n=n.replace(/\/index$/,"")||"/";let i=await f.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:o,prerenderManifest:l,routerServerContext:u}=i;try{let t,a=e.method||"GET",i=(0,d.getTracer)(),c=i.getActiveScopeSpan(),v=!!(null==u?void 0:u.isWrappedByNextServer),h=f.instrumentationOnRequestError.bind(f),g=async d=>f.render(e,r,{query:{...s,...o},params:o,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:l.preview,propagateError:!1,dev:f.isDev,page:"/api/layout/pane/index",internalRevalidate:null==u?void 0:u.revalidate,onError:(...t)=>h(e,...t)}).finally(()=>{if(!d)return;d.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}`;d.setAttributes({"next.route":s,"http.route":s,"next.span_name":e}),d.updateName(e),t&&t!==d&&(t.setAttribute("http.route",s),t.updateName(e))}else d.updateName(`${a} ${n}`)});v&&c?await g(c):(t=i.getActiveScopeSpan(),await i.withPropagatedContext(e.headers,()=>i.trace(p.BaseServerSpan.handleRequest,{spanName:`${a} ${n}`,kind:d.SpanKind.SERVER,attributes:{"http.method":a,"http.target":e.url}},g),void 0,!v))}catch(e){if(f.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,h,"default",0,v,"handler",0,g],113214)},981532,e=>{e.v(e=>Promise.resolve().then(()=>e(322429)))},322522,e=>{e.v(e=>Promise.resolve().then(()=>e(459015)))},245061,e=>{e.v(t=>Promise.all(["server/chunks/src_lib_tab-title_ts_0onatvs._.js"].map(t=>e.l(t))).then(()=>t(785128)))}];
2
2
 
3
- //# sourceMappingURL=_0out7wm._.js.map
3
+ //# sourceMappingURL=_0-mgr1c._.js.map
@@ -0,0 +1,3 @@
1
+ module.exports=[848738,e=>{"use strict";var t=e.i(926747),r=e.i(190406),a=e.i(244898),o=e.i(262950),i=e.i(825265),n=e.i(322429),s=e.i(964759);let d=(0,e.i(25146).createLogger)("layout"),u=async(e,t)=>{let r=e.query.workspace||await (0,n.getActiveWorkspaceId)();if(!r)return t.status(400).json({error:"No workspace found"});let a=e.query.paneId,o=e.query.tabId;if("DELETE"===e.method)return await (0,i.removeTabFromPane)(r,a,o)?((0,s.getStatusManager)().removeTab(o),t.status(204).end()):t.status(404).json({error:"Tab not found"});if("POST"===e.method)try{let{command:n}=e.body??{};if(!await (0,i.restartTabSession)(r,a,o,n))return t.status(404).json({error:"Tab not found"});return t.status(200).json({ok:!0})}catch(e){return d.error(`tab restart failed: ${e instanceof Error?e.message:e}`),t.status(500).json({error:"Failed to restart session"})}if("PATCH"===e.method){let{name:n,panelType:s,title:d,cwd:u,lastCommand:l,webUrl:p,terminalRatio:v,terminalCollapsed:m}=e.body??{};if(void 0!==n||void 0!==s||void 0!==d||void 0!==u||void 0!==l||void 0!==p||void 0!==v||void 0!==m){let e={};if(void 0!==n){if("string"!=typeof n)return t.status(400).json({error:"name must be a string"});e.name=n.trim()}if(void 0!==s&&(e.panelType=s),void 0!==d&&(e.title=d),void 0!==u&&(e.cwd=u),void 0!==l&&(e.lastCommand=l),void 0!==p&&(e.webUrl=p),void 0!==v){if("number"!=typeof v||!Number.isFinite(v))return t.status(400).json({error:"terminalRatio must be a number"});e.terminalRatio=Math.max(0,Math.min(100,v))}if(void 0!==m){if("boolean"!=typeof m)return t.status(400).json({error:"terminalCollapsed must be a boolean"});e.terminalCollapsed=m}let f=await (0,i.patchTab)(r,a,o,e);return f?t.status(200).json(f):t.status(404).json({error:"Tab not found"})}return t.status(400).json({error:"No fields to update"})}return t.setHeader("Allow","POST, DELETE, PATCH"),t.status(405).json({error:"Method not allowed"})};e.s(["default",0,u],360163);var l=e.i(360163),p=e.i(7031),v=e.i(181927),m=e.i(846432);let f=(0,o.hoist)(l,"default"),b=(0,o.hoist)(l,"config"),c=new a.PagesAPIRouteModule({definition:{kind:r.RouteKind.PAGES_API,page:"/api/layout/pane/[paneId]/tabs/[tabId]/index",pathname:"/api/layout/pane/[paneId]/tabs/[tabId]",bundlePath:"",filename:""},userland:l,distDir:".next",relativeProjectDir:""});async function h(e,r,a){a.requestMeta&&(0,m.setRequestMeta)(e,a.requestMeta),c.isDev&&(0,m.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let o="/api/layout/pane/[paneId]/tabs/[tabId]/index";o=o.replace(/\/index$/,"")||"/";let i=await c.prepare(e,r,{srcPage:o});if(!i){r.statusCode=400,r.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve());return}let{query:n,params:s,prerenderManifest:d,routerServerContext:u}=i;try{let t,a=e.method||"GET",i=(0,p.getTracer)(),l=i.getActiveScopeSpan(),m=!!(null==u?void 0:u.isWrappedByNextServer),f=c.instrumentationOnRequestError.bind(c),b=async l=>c.render(e,r,{query:{...n,...s},params:s,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:d.preview,propagateError:!1,dev:c.isDev,page:"/api/layout/pane/[paneId]/tabs/[tabId]/index",internalRevalidate:null==u?void 0:u.revalidate,onError:(...t)=>f(e,...t)}).finally(()=>{if(!l)return;l.setAttributes({"http.status_code":r.statusCode,"next.rsc":!1});let e=i.getRootSpanAttributes();if(!e)return;if(e.get("next.span_type")!==v.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 n=e.get("next.route");if(n){let e=`${a} ${n}`;l.setAttributes({"next.route":n,"http.route":n,"next.span_name":e}),l.updateName(e),t&&t!==l&&(t.setAttribute("http.route",n),t.updateName(e))}else l.updateName(`${a} ${o}`)});m&&l?await b(l):(t=i.getActiveScopeSpan(),await i.withPropagatedContext(e.headers,()=>i.trace(v.BaseServerSpan.handleRequest,{spanName:`${a} ${o}`,kind:p.SpanKind.SERVER,attributes:{"http.method":a,"http.target":e.url}},b),void 0,!m))}catch(e){if(c.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,b,"default",0,f,"handler",0,h],848738)},981532,e=>{e.v(e=>Promise.resolve().then(()=>e(322429)))},322522,e=>{e.v(e=>Promise.resolve().then(()=>e(459015)))},245061,e=>{e.v(e=>Promise.resolve().then(()=>e(785128)))}];
2
+
3
+ //# sourceMappingURL=_0.5a4bu._.js.map
@@ -1,3 +1,3 @@
1
1
  module.exports=[845994,e=>{"use strict";var t=e.i(924868),a=e.i(814747),r=e.i(446786),i=e.i(254799),s=e.i(666126);(0,e.i(25146).createLogger)("config");let n=a.default.join(r.default.homedir(),".purplemux"),o=a.default.join(n,"config.json"),l=globalThis;l.__ptConfigLock||(l.__ptConfigLock=Promise.resolve());let u=async e=>{let t,a=new Promise(e=>{t=e}),r=l.__ptConfigLock;l.__ptConfigLock=a,await r;try{return await e()}finally{t()}},d=()=>({updatedAt:new Date().toISOString()}),p=async()=>{try{let e=await t.default.readFile(o,"utf-8");return JSON.parse(e)}catch{return null}},c=async e=>{let{updatedAt:a,...r}=e,i=JSON.stringify(r);if(l.__ptConfigContentCache===i)return;e.updatedAt=new Date().toISOString();let n=o+".tmp";try{await t.default.writeFile(n,JSON.stringify(e,null,2),{mode:384}),await t.default.rename(n,o)}catch(e){throw await t.default.unlink(n).catch(()=>{}),e}l.__ptConfigContentCache=i,(0,s.broadcastSync)({type:"config"})},f="scrypt:",g=e=>"string"==typeof e&&e.startsWith(f),m=async e=>{let t=i.default.randomBytes(16),a=await new Promise((a,r)=>{i.default.scrypt(e,t,64,(e,t)=>{e?r(e):a(t)})});return`${f}${t.toString("hex")}:${a.toString("hex")}`},h=async(e,t)=>{if(!g(t))return!1;let[,a,r]=t.split(":"),s=Buffer.from(a,"hex"),n=Buffer.from(r,"hex"),o=await new Promise((t,a)=>{i.default.scrypt(e,s,n.length,(e,r)=>{e?a(e):t(r)})});return i.default.timingSafeEqual(o,n)},w=async()=>await p()??d(),y=async e=>u(async()=>{let t=await p()??d();Object.assign(t,e),await c(t)}),v=async()=>{let e=await p();return!g(e?.authPassword)},S=async()=>{let e=await p();return e?.dangerouslySkipPermissions??!1};e.s(["generateSecret",0,()=>i.default.randomBytes(32).toString("hex"),"getConfig",0,w,"getDangerouslySkipPermissions",0,S,"hashPassword",0,m,"needsSetup",0,v,"updateConfig",0,y,"verifyPassword",0,h])},478490,e=>{"use strict";var t=e.i(845994);e.i(924868);var a=e.i(814747),r=e.i(446786),i=e.i(25146);e.i(796902),(0,i.createLogger)("hooks");let s=a.default.join(r.default.homedir(),".purplemux"),n=a.default.join(s,"hooks.json");a.default.join(s,"port"),a.default.join(s,"status-hook.sh");var o=e.i(160874);let l=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,u=e=>"string"==typeof e&&l.test(e),d=async e=>{let a=await (0,t.getDangerouslySkipPermissions)(),r=[`--settings ${n}`];return e&&r.push(`--append-system-prompt-file ${(0,o.getClaudePromptPath)(e)}`),a&&r.push("--dangerously-skip-permissions"),r.join(" ")},p=async(e,t)=>{if(!u(e))throw Error(`Invalid session ID format: ${e}`);let a=await d(t);return`claude --resume ${e} ${a}`};e.s(["buildResumeCommand",0,p,"isValidSessionId",0,u],478490)},997054,e=>{"use strict";var t=e.i(926747),a=e.i(190406),r=e.i(244898),i=e.i(262950),s=e.i(446786),n=e.i(322429),o=e.i(825265),l=e.i(804767),u=e.i(478490),d=e.i(459015),p=e.i(964759);let c=(0,e.i(25146).createLogger)("workspace-api"),f=async(e,t)=>{if("GET"===e.method){let e=await (0,n.getWorkspaces)();return t.status(200).json(e)}if("POST"===e.method){let{directory:a,name:r,resumeSessionId:i}=e.body??{};if(i&&!(0,u.isValidSessionId)(i))return t.status(400).json({error:"Invalid session ID format"});let f=a&&"string"==typeof a?a:s.default.homedir();try{let e=i?{panelType:"claude-code"}:void 0,a=await (0,n.createWorkspace)(f,r,e),s=await (0,o.readLayoutFile)((0,o.resolveLayoutFile)(a.id)),g=s?(0,l.collectAllTabs)(s.root)[0]:null;return g&&"web-browser"!==g.panelType&&(0,p.getStatusManager)().registerTab(g.id,{cliState:"inactive",workspaceId:a.id,tabName:g.name,tmuxSession:g.sessionName,lastEvent:null,eventSeq:0}),i&&g&&setTimeout(async()=>{try{let e=await (0,u.buildResumeCommand)(i,a.id);await (0,d.sendKeys)(g.sessionName,e)}catch(e){c.warn(`resume sendKeys failed: ${e instanceof Error?e.message:e}`)}},500),t.status(200).json(a)}catch(r){let e=r instanceof Error?r.message:"Unknown error",a=["not exist","directory","registered"].some(t=>e.includes(t));return t.status(a?400:500).json({error:e})}}return t.setHeader("Allow","GET, POST"),t.status(405).json({error:"Method not allowed"})};e.s(["default",0,f],401508);var g=e.i(401508),m=e.i(7031),h=e.i(181927),w=e.i(846432);let y=(0,i.hoist)(g,"default"),v=(0,i.hoist)(g,"config"),S=new r.PagesAPIRouteModule({definition:{kind:a.RouteKind.PAGES_API,page:"/api/workspace/index",pathname:"/api/workspace",bundlePath:"",filename:""},userland:g,distDir:".next",relativeProjectDir:""});async function P(e,a,r){r.requestMeta&&(0,w.setRequestMeta)(e,r.requestMeta),S.isDev&&(0,w.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let i="/api/workspace/index";i=i.replace(/\/index$/,"")||"/";let s=await S.prepare(e,a,{srcPage:i});if(!s){a.statusCode=400,a.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve());return}let{query:n,params:o,prerenderManifest:l,routerServerContext:u}=s;try{let t,r=e.method||"GET",s=(0,m.getTracer)(),d=s.getActiveScopeSpan(),p=!!(null==u?void 0:u.isWrappedByNextServer),c=S.instrumentationOnRequestError.bind(S),f=async d=>S.render(e,a,{query:{...n,...o},params:o,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:l.preview,propagateError:!1,dev:S.isDev,page:"/api/workspace/index",internalRevalidate:null==u?void 0:u.revalidate,onError:(...t)=>c(e,...t)}).finally(()=>{if(!d)return;d.setAttributes({"http.status_code":a.statusCode,"next.rsc":!1});let e=s.getRootSpanAttributes();if(!e)return;if(e.get("next.span_type")!==h.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 n=e.get("next.route");if(n){let e=`${r} ${n}`;d.setAttributes({"next.route":n,"http.route":n,"next.span_name":e}),d.updateName(e),t&&t!==d&&(t.setAttribute("http.route",n),t.updateName(e))}else d.updateName(`${r} ${i}`)});p&&d?await f(d):(t=s.getActiveScopeSpan(),await s.withPropagatedContext(e.headers,()=>s.trace(h.BaseServerSpan.handleRequest,{spanName:`${r} ${i}`,kind:m.SpanKind.SERVER,attributes:{"http.method":r,"http.target":e.url}},f),void 0,!p))}catch(e){if(S.isDev)throw e;(0,t.sendError)(a,500,"Internal Server Error")}finally{null==r.waitUntil||r.waitUntil.call(r,Promise.resolve())}}e.s(["config",0,v,"default",0,y,"handler",0,P],997054)},981532,e=>{e.v(e=>Promise.resolve().then(()=>e(322429)))},322522,e=>{e.v(e=>Promise.resolve().then(()=>e(459015)))},245061,e=>{e.v(e=>Promise.resolve().then(()=>e(785128)))}];
2
2
 
3
- //# sourceMappingURL=_06vitke._.js.map
3
+ //# sourceMappingURL=_03-duro._.js.map
@@ -0,0 +1,3 @@
1
+ module.exports=[697275,e=>{"use strict";var t=e.i(926747),r=e.i(190406),a=e.i(244898),s=e.i(262950),i=e.i(322429);let n=async(e,t)=>{if("PATCH"!==e.method)return t.setHeader("Allow","PATCH"),t.status(405).json({error:"Method not allowed"});let r=e.body??{},a=null;return(Array.isArray(r.items)&&r.items.length>0?a=r.items.map(e=>({id:String(e.id),groupId:null===e.groupId?null:"string"==typeof e.groupId?e.groupId:void 0})):Array.isArray(r.workspaceIds)&&r.workspaceIds.length>0&&(a=r.workspaceIds.map(e=>({id:String(e)}))),a)?await (0,i.reorderWorkspaces)(a)?t.status(200).json({ok:!0}):t.status(400).json({error:"Invalid order"}):t.status(400).json({error:"items array required"})};e.s(["default",0,n],658981);var o=e.i(658981),l=e.i(7031),d=e.i(181927),u=e.i(846432);let p=(0,s.hoist)(o,"default"),c=(0,s.hoist)(o,"config"),v=new a.PagesAPIRouteModule({definition:{kind:r.RouteKind.PAGES_API,page:"/api/workspace/reorder",pathname:"/api/workspace/reorder",bundlePath:"",filename:""},userland:o,distDir:".next",relativeProjectDir:""});async function h(e,r,a){a.requestMeta&&(0,u.setRequestMeta)(e,a.requestMeta),v.isDev&&(0,u.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let s="/api/workspace/reorder";s=s.replace(/\/index$/,"")||"/";let i=await v.prepare(e,r,{srcPage:s});if(!i){r.statusCode=400,r.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve());return}let{query:n,params:o,prerenderManifest:p,routerServerContext:c}=i;try{let t,a=e.method||"GET",i=(0,l.getTracer)(),u=i.getActiveScopeSpan(),h=!!(null==c?void 0:c.isWrappedByNextServer),m=v.instrumentationOnRequestError.bind(v),g=async l=>v.render(e,r,{query:{...n,...o},params:o,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:p.preview,propagateError:!1,dev:v.isDev,page:"/api/workspace/reorder",internalRevalidate:null==c?void 0:c.revalidate,onError:(...t)=>m(e,...t)}).finally(()=>{if(!l)return;l.setAttributes({"http.status_code":r.statusCode,"next.rsc":!1});let e=i.getRootSpanAttributes();if(!e)return;if(e.get("next.span_type")!==d.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 n=e.get("next.route");if(n){let e=`${a} ${n}`;l.setAttributes({"next.route":n,"http.route":n,"next.span_name":e}),l.updateName(e),t&&t!==l&&(t.setAttribute("http.route",n),t.updateName(e))}else l.updateName(`${a} ${s}`)});h&&u?await g(u):(t=i.getActiveScopeSpan(),await i.withPropagatedContext(e.headers,()=>i.trace(d.BaseServerSpan.handleRequest,{spanName:`${a} ${s}`,kind:l.SpanKind.SERVER,attributes:{"http.method":a,"http.target":e.url}},g),void 0,!h))}catch(e){if(v.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,c,"default",0,p,"handler",0,h],697275)},981532,e=>{e.v(e=>Promise.resolve().then(()=>e(322429)))},322522,e=>{e.v(e=>Promise.resolve().then(()=>e(459015)))},245061,e=>{e.v(t=>Promise.all(["server/chunks/src_lib_tab-title_ts_0onatvs._.js"].map(t=>e.l(t))).then(()=>t(785128)))}];
2
+
3
+ //# sourceMappingURL=_05-8rnc._.js.map
@@ -1,3 +1,3 @@
1
1
  module.exports=[845994,e=>{"use strict";var t=e.i(924868),a=e.i(814747),r=e.i(446786),i=e.i(254799),s=e.i(666126);(0,e.i(25146).createLogger)("config");let n=a.default.join(r.default.homedir(),".purplemux"),o=a.default.join(n,"config.json"),l=globalThis;l.__ptConfigLock||(l.__ptConfigLock=Promise.resolve());let u=async e=>{let t,a=new Promise(e=>{t=e}),r=l.__ptConfigLock;l.__ptConfigLock=a,await r;try{return await e()}finally{t()}},d=()=>({updatedAt:new Date().toISOString()}),p=async()=>{try{let e=await t.default.readFile(o,"utf-8");return JSON.parse(e)}catch{return null}},c=async e=>{let{updatedAt:a,...r}=e,i=JSON.stringify(r);if(l.__ptConfigContentCache===i)return;e.updatedAt=new Date().toISOString();let n=o+".tmp";try{await t.default.writeFile(n,JSON.stringify(e,null,2),{mode:384}),await t.default.rename(n,o)}catch(e){throw await t.default.unlink(n).catch(()=>{}),e}l.__ptConfigContentCache=i,(0,s.broadcastSync)({type:"config"})},f="scrypt:",g=e=>"string"==typeof e&&e.startsWith(f),m=async e=>{let t=i.default.randomBytes(16),a=await new Promise((a,r)=>{i.default.scrypt(e,t,64,(e,t)=>{e?r(e):a(t)})});return`${f}${t.toString("hex")}:${a.toString("hex")}`},y=async(e,t)=>{if(!g(t))return!1;let[,a,r]=t.split(":"),s=Buffer.from(a,"hex"),n=Buffer.from(r,"hex"),o=await new Promise((t,a)=>{i.default.scrypt(e,s,n.length,(e,r)=>{e?a(e):t(r)})});return i.default.timingSafeEqual(o,n)},h=async()=>await p()??d(),w=async e=>u(async()=>{let t=await p()??d();Object.assign(t,e),await c(t)}),v=async()=>{let e=await p();return!g(e?.authPassword)},S=async()=>{let e=await p();return e?.dangerouslySkipPermissions??!1};e.s(["generateSecret",0,()=>i.default.randomBytes(32).toString("hex"),"getConfig",0,h,"getDangerouslySkipPermissions",0,S,"hashPassword",0,m,"needsSetup",0,v,"updateConfig",0,w,"verifyPassword",0,y])},478490,e=>{"use strict";var t=e.i(845994);e.i(924868);var a=e.i(814747),r=e.i(446786),i=e.i(25146);e.i(796902),(0,i.createLogger)("hooks");let s=a.default.join(r.default.homedir(),".purplemux"),n=a.default.join(s,"hooks.json");a.default.join(s,"port"),a.default.join(s,"status-hook.sh");var o=e.i(160874);let l=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,u=e=>"string"==typeof e&&l.test(e),d=async e=>{let a=await (0,t.getDangerouslySkipPermissions)(),r=[`--settings ${n}`];return e&&r.push(`--append-system-prompt-file ${(0,o.getClaudePromptPath)(e)}`),a&&r.push("--dangerously-skip-permissions"),r.join(" ")},p=async(e,t)=>{if(!u(e))throw Error(`Invalid session ID format: ${e}`);let a=await d(t);return`claude --resume ${e} ${a}`};e.s(["buildResumeCommand",0,p,"isValidSessionId",0,u],478490)},667250,e=>{"use strict";var t=e.i(926747),a=e.i(190406),r=e.i(244898),i=e.i(262950),s=e.i(825265),n=e.i(322429),o=e.i(964759),l=e.i(478490),u=e.i(459015);let d=(0,e.i(25146).createLogger)("layout"),p=async(e,t)=>{if("POST"!==e.method)return t.setHeader("Allow","POST"),t.status(405).json({error:"Method not allowed"});let a=e.query.workspace||await (0,n.getActiveWorkspaceId)();if(!a)return t.status(400).json({error:"No workspace found"});let r=e.query.paneId,{name:i,cwd:p,panelType:c,command:f,resumeSessionId:g}=e.body??{};if(g&&!(0,l.isValidSessionId)(g))return t.status(400).json({error:"Invalid session ID format"});try{let e=await (0,s.addTabToPane)(a,r,i,p,c,f);if(!e)return t.status(404).json({error:"Pane not found"});return"web-browser"!==e.panelType&&(0,o.getStatusManager)().registerTab(e.id,{cliState:"inactive",workspaceId:a,tabName:e.name,tmuxSession:e.sessionName,lastEvent:null,eventSeq:0}),g&&!f&&(await (0,s.updateTabClaudeSessionId)(e.sessionName,g),e.claudeSessionId=g,setTimeout(async()=>{try{let t=await (0,l.buildResumeCommand)(g,a);await (0,u.sendKeys)(e.sessionName,t)}catch(e){d.warn(`resume sendKeys failed: ${e instanceof Error?e.message:e}`)}},500)),t.status(200).json(e)}catch(e){return d.error(`tab creation failed: ${e instanceof Error?e.message:e}`),t.status(500).json({error:"Failed to create tab"})}};e.s(["default",0,p],170096);var c=e.i(170096),f=e.i(7031),g=e.i(181927),m=e.i(846432);let y=(0,i.hoist)(c,"default"),h=(0,i.hoist)(c,"config"),w=new r.PagesAPIRouteModule({definition:{kind:a.RouteKind.PAGES_API,page:"/api/layout/pane/[paneId]/tabs/index",pathname:"/api/layout/pane/[paneId]/tabs",bundlePath:"",filename:""},userland:c,distDir:".next",relativeProjectDir:""});async function v(e,a,r){r.requestMeta&&(0,m.setRequestMeta)(e,r.requestMeta),w.isDev&&(0,m.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let i="/api/layout/pane/[paneId]/tabs/index";i=i.replace(/\/index$/,"")||"/";let s=await w.prepare(e,a,{srcPage:i});if(!s){a.statusCode=400,a.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve());return}let{query:n,params:o,prerenderManifest:l,routerServerContext:u}=s;try{let t,r=e.method||"GET",s=(0,f.getTracer)(),d=s.getActiveScopeSpan(),p=!!(null==u?void 0:u.isWrappedByNextServer),c=w.instrumentationOnRequestError.bind(w),m=async d=>w.render(e,a,{query:{...n,...o},params:o,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:l.preview,propagateError:!1,dev:w.isDev,page:"/api/layout/pane/[paneId]/tabs/index",internalRevalidate:null==u?void 0:u.revalidate,onError:(...t)=>c(e,...t)}).finally(()=>{if(!d)return;d.setAttributes({"http.status_code":a.statusCode,"next.rsc":!1});let e=s.getRootSpanAttributes();if(!e)return;if(e.get("next.span_type")!==g.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 n=e.get("next.route");if(n){let e=`${r} ${n}`;d.setAttributes({"next.route":n,"http.route":n,"next.span_name":e}),d.updateName(e),t&&t!==d&&(t.setAttribute("http.route",n),t.updateName(e))}else d.updateName(`${r} ${i}`)});p&&d?await m(d):(t=s.getActiveScopeSpan(),await s.withPropagatedContext(e.headers,()=>s.trace(g.BaseServerSpan.handleRequest,{spanName:`${r} ${i}`,kind:f.SpanKind.SERVER,attributes:{"http.method":r,"http.target":e.url}},m),void 0,!p))}catch(e){if(w.isDev)throw e;(0,t.sendError)(a,500,"Internal Server Error")}finally{null==r.waitUntil||r.waitUntil.call(r,Promise.resolve())}}e.s(["config",0,h,"default",0,y,"handler",0,v],667250)},981532,e=>{e.v(e=>Promise.resolve().then(()=>e(322429)))},322522,e=>{e.v(e=>Promise.resolve().then(()=>e(459015)))},245061,e=>{e.v(e=>Promise.resolve().then(()=>e(785128)))}];
2
2
 
3
- //# sourceMappingURL=_0d415er._.js.map
3
+ //# sourceMappingURL=_07097f~._.js.map
@@ -1,3 +1,3 @@
1
1
  module.exports=[950322,e=>{"use strict";var t=e.i(926747),r=e.i(190406),a=e.i(244898),i=e.i(262950),s=e.i(322429);let n=async(e,t)=>{if("GET"!==e.method)return t.setHeader("Allow","GET"),t.status(405).json({error:"Method not allowed"});let r=e.query.directory;if(!r)return t.status(400).json({error:"directory parameter required"});let a=await (0,s.validateDirectory)(r);return t.status(200).json(a)};e.s(["default",0,n],471501);var o=e.i(471501),l=e.i(7031),d=e.i(181927),u=e.i(846432);let p=(0,i.hoist)(o,"default"),v=(0,i.hoist)(o,"config"),c=new a.PagesAPIRouteModule({definition:{kind:r.RouteKind.PAGES_API,page:"/api/workspace/validate",pathname:"/api/workspace/validate",bundlePath:"",filename:""},userland:o,distDir:".next",relativeProjectDir:""});async function h(e,r,a){a.requestMeta&&(0,u.setRequestMeta)(e,a.requestMeta),c.isDev&&(0,u.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let i="/api/workspace/validate";i=i.replace(/\/index$/,"")||"/";let s=await c.prepare(e,r,{srcPage:i});if(!s){r.statusCode=400,r.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve());return}let{query:n,params:o,prerenderManifest:p,routerServerContext:v}=s;try{let t,a=e.method||"GET",s=(0,l.getTracer)(),u=s.getActiveScopeSpan(),h=!!(null==v?void 0:v.isWrappedByNextServer),m=c.instrumentationOnRequestError.bind(c),w=async l=>c.render(e,r,{query:{...n,...o},params:o,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:p.preview,propagateError:!1,dev:c.isDev,page:"/api/workspace/validate",internalRevalidate:null==v?void 0:v.revalidate,onError:(...t)=>m(e,...t)}).finally(()=>{if(!l)return;l.setAttributes({"http.status_code":r.statusCode,"next.rsc":!1});let e=s.getRootSpanAttributes();if(!e)return;if(e.get("next.span_type")!==d.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 n=e.get("next.route");if(n){let e=`${a} ${n}`;l.setAttributes({"next.route":n,"http.route":n,"next.span_name":e}),l.updateName(e),t&&t!==l&&(t.setAttribute("http.route",n),t.updateName(e))}else l.updateName(`${a} ${i}`)});h&&u?await w(u):(t=s.getActiveScopeSpan(),await s.withPropagatedContext(e.headers,()=>s.trace(d.BaseServerSpan.handleRequest,{spanName:`${a} ${i}`,kind:l.SpanKind.SERVER,attributes:{"http.method":a,"http.target":e.url}},w),void 0,!h))}catch(e){if(c.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,v,"default",0,p,"handler",0,h],950322)},981532,e=>{e.v(e=>Promise.resolve().then(()=>e(322429)))},322522,e=>{e.v(e=>Promise.resolve().then(()=>e(459015)))},245061,e=>{e.v(t=>Promise.all(["server/chunks/src_lib_tab-title_ts_0onatvs._.js"].map(t=>e.l(t))).then(()=>t(785128)))}];
2
2
 
3
- //# sourceMappingURL=_0st-_d~._.js.map
3
+ //# sourceMappingURL=_0jzxge9._.js.map
@@ -1,3 +1,3 @@
1
1
  module.exports=[871911,e=>{"use strict";var t=e.i(254799),r=e.i(522734),i=e.i(814747),a=e.i(446786);let n=i.default.join(a.default.homedir(),".purplemux","cli-token"),o=globalThis;e.s(["verifyCliToken",0,e=>{let a=e.headers["x-pmux-token"];var s="string"==typeof a?a:void 0;if(!s)return!1;let l=(()=>{if(o.__ptCliToken)return o.__ptCliToken;let e=(()=>{try{return r.default.readFileSync(n,"utf-8").trim()||null}catch{return null}})();if(e)return o.__ptCliToken=e,e;let a=(0,t.randomBytes)(32).toString("hex");o.__ptCliToken=a;try{r.default.mkdirSync(i.default.dirname(n),{recursive:!0}),r.default.writeFileSync(n,a,{mode:384})}catch{}return a})();return s.length===l.length&&(0,t.timingSafeEqual)(Buffer.from(s),Buffer.from(l))}])},34717,e=>{"use strict";var t=e.i(926747),r=e.i(190406),i=e.i(244898),a=e.i(262950),n=e.i(871911),o=e.i(964759);let s=(0,e.i(25146).createLogger)("hooks"),l=async(e,t)=>{if("POST"!==e.method)return t.setHeader("Allow","POST"),t.status(405).json({error:"Method not allowed"});if(!(0,n.verifyCliToken)(e))return t.status(403).json({error:"Forbidden"});let{event:r,session:i,notificationType:a}=e.body??{};if("string"==typeof r&&"poll"!==r&&"string"==typeof i&&i){let e="string"==typeof a&&a?a:void 0;s.debug({event:r,session:i,notificationType:e},`received ${r}${e?`(${e})`:""}`),(0,o.getStatusManager)().updateTabFromHook(i,r,e)}else s.debug({body:e.body},"poll trigger"),(0,o.getStatusManager)().poll().catch(e=>{s.error({err:e},"Poll trigger failed")});return t.status(204).end()};e.s(["default",0,l],860464);var u=e.i(860464),d=e.i(7031),p=e.i(181927),f=e.i(846432);let c=(0,a.hoist)(u,"default"),h=(0,a.hoist)(u,"config"),v=new i.PagesAPIRouteModule({definition:{kind:r.RouteKind.PAGES_API,page:"/api/status/hook",pathname:"/api/status/hook",bundlePath:"",filename:""},userland:u,distDir:".next",relativeProjectDir:""});async function g(e,r,i){i.requestMeta&&(0,f.setRequestMeta)(e,i.requestMeta),v.isDev&&(0,f.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let a="/api/status/hook";a=a.replace(/\/index$/,"")||"/";let n=await v.prepare(e,r,{srcPage:a});if(!n){r.statusCode=400,r.end("Bad Request"),null==i.waitUntil||i.waitUntil.call(i,Promise.resolve());return}let{query:o,params:s,prerenderManifest:l,routerServerContext:u}=n;try{let t,i=e.method||"GET",n=(0,d.getTracer)(),f=n.getActiveScopeSpan(),c=!!(null==u?void 0:u.isWrappedByNextServer),h=v.instrumentationOnRequestError.bind(v),g=async d=>v.render(e,r,{query:{...o,...s},params:s,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:l.preview,propagateError:!1,dev:v.isDev,page:"/api/status/hook",internalRevalidate:null==u?void 0:u.revalidate,onError:(...t)=>h(e,...t)}).finally(()=>{if(!d)return;d.setAttributes({"http.status_code":r.statusCode,"next.rsc":!1});let e=n.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 o=e.get("next.route");if(o){let e=`${i} ${o}`;d.setAttributes({"next.route":o,"http.route":o,"next.span_name":e}),d.updateName(e),t&&t!==d&&(t.setAttribute("http.route",o),t.updateName(e))}else d.updateName(`${i} ${a}`)});c&&f?await g(f):(t=n.getActiveScopeSpan(),await n.withPropagatedContext(e.headers,()=>n.trace(p.BaseServerSpan.handleRequest,{spanName:`${i} ${a}`,kind:d.SpanKind.SERVER,attributes:{"http.method":i,"http.target":e.url}},g),void 0,!c))}catch(e){if(v.isDev)throw e;(0,t.sendError)(r,500,"Internal Server Error")}finally{null==i.waitUntil||i.waitUntil.call(i,Promise.resolve())}}e.s(["config",0,h,"default",0,c,"handler",0,g],34717)},981532,e=>{e.v(e=>Promise.resolve().then(()=>e(322429)))},322522,e=>{e.v(e=>Promise.resolve().then(()=>e(459015)))},245061,e=>{e.v(e=>Promise.resolve().then(()=>e(785128)))}];
2
2
 
3
- //# sourceMappingURL=_0xmsr59._.js.map
3
+ //# sourceMappingURL=_0ll-5~7._.js.map
@@ -0,0 +1,3 @@
1
+ module.exports=[912974,e=>{"use strict";var t=e.i(926747),r=e.i(190406),a=e.i(244898),s=e.i(262950),o=e.i(322429);let n=async(e,t)=>{let r=e.query.workspaceId;if("DELETE"===e.method)return await (0,o.deleteWorkspace)(r)?t.status(204).end():t.status(404).json({error:"Workspace not found"});if("PATCH"===e.method){let{name:a,groupId:s}=e.body??{};if(void 0!==s){let e=null===s?null:"string"==typeof s?s:void 0;if(void 0===e)return t.status(400).json({error:"Invalid groupId"});if(!await (0,o.setWorkspaceGroup)(r,e))return t.status(404).json({error:"Workspace not found"});if(void 0===a)return t.status(200).json({ok:!0})}if(void 0!==a){if("string"!=typeof a||!a.trim())return t.status(400).json({error:"name field required"});let e=await (0,o.renameWorkspace)(r,a.trim());return e?t.status(200).json(e):t.status(404).json({error:"Workspace not found"})}return t.status(400).json({error:"name or groupId required"})}return t.setHeader("Allow","DELETE, PATCH"),t.status(405).json({error:"Method not allowed"})};e.s(["default",0,n],258447);var i=e.i(258447),l=e.i(7031),u=e.i(181927),d=e.i(846432);let p=(0,s.hoist)(i,"default"),c=(0,s.hoist)(i,"config"),v=new a.PagesAPIRouteModule({definition:{kind:r.RouteKind.PAGES_API,page:"/api/workspace/[workspaceId]",pathname:"/api/workspace/[workspaceId]",bundlePath:"",filename:""},userland:i,distDir:".next",relativeProjectDir:""});async function f(e,r,a){a.requestMeta&&(0,d.setRequestMeta)(e,a.requestMeta),v.isDev&&(0,d.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let s="/api/workspace/[workspaceId]";s=s.replace(/\/index$/,"")||"/";let o=await v.prepare(e,r,{srcPage:s});if(!o){r.statusCode=400,r.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve());return}let{query:n,params:i,prerenderManifest:p,routerServerContext:c}=o;try{let t,a=e.method||"GET",o=(0,l.getTracer)(),d=o.getActiveScopeSpan(),f=!!(null==c?void 0:c.isWrappedByNextServer),h=v.instrumentationOnRequestError.bind(v),m=async l=>v.render(e,r,{query:{...n,...i},params:i,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:p.preview,propagateError:!1,dev:v.isDev,page:"/api/workspace/[workspaceId]",internalRevalidate:null==c?void 0:c.revalidate,onError:(...t)=>h(e,...t)}).finally(()=>{if(!l)return;l.setAttributes({"http.status_code":r.statusCode,"next.rsc":!1});let e=o.getRootSpanAttributes();if(!e)return;if(e.get("next.span_type")!==u.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 n=e.get("next.route");if(n){let e=`${a} ${n}`;l.setAttributes({"next.route":n,"http.route":n,"next.span_name":e}),l.updateName(e),t&&t!==l&&(t.setAttribute("http.route",n),t.updateName(e))}else l.updateName(`${a} ${s}`)});f&&d?await m(d):(t=o.getActiveScopeSpan(),await o.withPropagatedContext(e.headers,()=>o.trace(u.BaseServerSpan.handleRequest,{spanName:`${a} ${s}`,kind:l.SpanKind.SERVER,attributes:{"http.method":a,"http.target":e.url}},m),void 0,!f))}catch(e){if(v.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,c,"default",0,p,"handler",0,f],912974)},981532,e=>{e.v(e=>Promise.resolve().then(()=>e(322429)))},322522,e=>{e.v(e=>Promise.resolve().then(()=>e(459015)))},245061,e=>{e.v(t=>Promise.all(["server/chunks/src_lib_tab-title_ts_0onatvs._.js"].map(t=>e.l(t))).then(()=>t(785128)))}];
2
+
3
+ //# sourceMappingURL=_0mhomq~._.js.map
@@ -1,3 +1,3 @@
1
1
  module.exports=[175662,e=>{"use strict";var t=e.i(926747),a=e.i(190406),r=e.i(244898),n=e.i(262950),s=e.i(825265),i=e.i(322429);let o=async(e,t)=>{let a=e.query.workspace||await (0,i.getActiveWorkspaceId)(),r=e.query.paneId;if("DELETE"===e.method){if(!a){let a=e.body?.sessions??[];return await (0,s.deletePane)(r,a),t.status(204).end()}let n=await (0,s.closePaneInLayout)(a,r);return n?t.status(200).json(n):t.status(404).json({error:"Pane not found"})}if("PATCH"===e.method){if(!a)return t.status(400).json({error:"No workspace found"});let{activeTabId:n}=e.body??{},i=await (0,s.patchPane)(a,r,{activeTabId:n});return i?t.status(200).json(i):t.status(404).json({error:"Target not found"})}return t.setHeader("Allow","DELETE, PATCH"),t.status(405).json({error:"Method not allowed"})};e.s(["default",0,o],578980);var l=e.i(578980),u=e.i(7031),d=e.i(181927),p=e.i(846432);let c=(0,n.hoist)(l,"default"),v=(0,n.hoist)(l,"config"),h=new r.PagesAPIRouteModule({definition:{kind:a.RouteKind.PAGES_API,page:"/api/layout/pane/[paneId]/index",pathname:"/api/layout/pane/[paneId]",bundlePath:"",filename:""},userland:l,distDir:".next",relativeProjectDir:""});async function f(e,a,r){r.requestMeta&&(0,p.setRequestMeta)(e,r.requestMeta),h.isDev&&(0,p.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let n="/api/layout/pane/[paneId]/index";n=n.replace(/\/index$/,"")||"/";let s=await h.prepare(e,a,{srcPage:n});if(!s){a.statusCode=400,a.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve());return}let{query:i,params:o,prerenderManifest:l,routerServerContext:c}=s;try{let t,r=e.method||"GET",s=(0,u.getTracer)(),p=s.getActiveScopeSpan(),v=!!(null==c?void 0:c.isWrappedByNextServer),f=h.instrumentationOnRequestError.bind(h),m=async u=>h.render(e,a,{query:{...i,...o},params:o,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:l.preview,propagateError:!1,dev:h.isDev,page:"/api/layout/pane/[paneId]/index",internalRevalidate:null==c?void 0:c.revalidate,onError:(...t)=>f(e,...t)}).finally(()=>{if(!u)return;u.setAttributes({"http.status_code":a.statusCode,"next.rsc":!1});let e=s.getRootSpanAttributes();if(!e)return;if(e.get("next.span_type")!==d.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 i=e.get("next.route");if(i){let e=`${r} ${i}`;u.setAttributes({"next.route":i,"http.route":i,"next.span_name":e}),u.updateName(e),t&&t!==u&&(t.setAttribute("http.route",i),t.updateName(e))}else u.updateName(`${r} ${n}`)});v&&p?await m(p):(t=s.getActiveScopeSpan(),await s.withPropagatedContext(e.headers,()=>s.trace(d.BaseServerSpan.handleRequest,{spanName:`${r} ${n}`,kind:u.SpanKind.SERVER,attributes:{"http.method":r,"http.target":e.url}},m),void 0,!v))}catch(e){if(h.isDev)throw e;(0,t.sendError)(a,500,"Internal Server Error")}finally{null==r.waitUntil||r.waitUntil.call(r,Promise.resolve())}}e.s(["config",0,v,"default",0,c,"handler",0,f],175662)},981532,e=>{e.v(e=>Promise.resolve().then(()=>e(322429)))},322522,e=>{e.v(e=>Promise.resolve().then(()=>e(459015)))},245061,e=>{e.v(t=>Promise.all(["server/chunks/src_lib_tab-title_ts_0onatvs._.js"].map(t=>e.l(t))).then(()=>t(785128)))}];
2
2
 
3
- //# sourceMappingURL=_0.hbe-v._.js.map
3
+ //# sourceMappingURL=_0pk0hms._.js.map
@@ -0,0 +1,3 @@
1
+ module.exports=[80304,e=>{"use strict";var t=e.i(926747),r=e.i(190406),a=e.i(244898),s=e.i(262950),i=e.i(322429);let n=async(e,t)=>{if("PATCH"!==e.method)return t.setHeader("Allow","PATCH"),t.status(405).json({error:"Method not allowed"});let{groupIds:r}=e.body??{};return Array.isArray(r)?await (0,i.reorderGroups)(r.map(String))?t.status(200).json({ok:!0}):t.status(400).json({error:"Invalid order"}):t.status(400).json({error:"groupIds array required"})};e.s(["default",0,n],539589);var o=e.i(539589),l=e.i(7031),d=e.i(181927),u=e.i(846432);let p=(0,s.hoist)(o,"default"),v=(0,s.hoist)(o,"config"),c=new a.PagesAPIRouteModule({definition:{kind:r.RouteKind.PAGES_API,page:"/api/workspace/group/reorder",pathname:"/api/workspace/group/reorder",bundlePath:"",filename:""},userland:o,distDir:".next",relativeProjectDir:""});async function h(e,r,a){a.requestMeta&&(0,u.setRequestMeta)(e,a.requestMeta),c.isDev&&(0,u.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let s="/api/workspace/group/reorder";s=s.replace(/\/index$/,"")||"/";let i=await c.prepare(e,r,{srcPage:s});if(!i){r.statusCode=400,r.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve());return}let{query:n,params:o,prerenderManifest:p,routerServerContext:v}=i;try{let t,a=e.method||"GET",i=(0,l.getTracer)(),u=i.getActiveScopeSpan(),h=!!(null==v?void 0:v.isWrappedByNextServer),g=c.instrumentationOnRequestError.bind(c),m=async l=>c.render(e,r,{query:{...n,...o},params:o,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:p.preview,propagateError:!1,dev:c.isDev,page:"/api/workspace/group/reorder",internalRevalidate:null==v?void 0:v.revalidate,onError:(...t)=>g(e,...t)}).finally(()=>{if(!l)return;l.setAttributes({"http.status_code":r.statusCode,"next.rsc":!1});let e=i.getRootSpanAttributes();if(!e)return;if(e.get("next.span_type")!==d.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 n=e.get("next.route");if(n){let e=`${a} ${n}`;l.setAttributes({"next.route":n,"http.route":n,"next.span_name":e}),l.updateName(e),t&&t!==l&&(t.setAttribute("http.route",n),t.updateName(e))}else l.updateName(`${a} ${s}`)});h&&u?await m(u):(t=i.getActiveScopeSpan(),await i.withPropagatedContext(e.headers,()=>i.trace(d.BaseServerSpan.handleRequest,{spanName:`${a} ${s}`,kind:l.SpanKind.SERVER,attributes:{"http.method":a,"http.target":e.url}},m),void 0,!h))}catch(e){if(c.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,v,"default",0,p,"handler",0,h],80304)},981532,e=>{e.v(e=>Promise.resolve().then(()=>e(322429)))},322522,e=>{e.v(e=>Promise.resolve().then(()=>e(459015)))},245061,e=>{e.v(t=>Promise.all(["server/chunks/src_lib_tab-title_ts_0onatvs._.js"].map(t=>e.l(t))).then(()=>t(785128)))}];
2
+
3
+ //# sourceMappingURL=_0qm27ix._.js.map
@@ -1,3 +1,3 @@
1
1
  module.exports=[561089,e=>{"use strict";var t=e.i(926747),r=e.i(190406),n=e.i(244898),a=e.i(262950),i=e.i(964759);let o=(0,e.i(25146).createLogger)("tmux"),s=async(e,t)=>{if("POST"!==e.method)return t.setHeader("Allow","POST"),t.status(405).json({error:"Method not allowed"});let r="string"==typeof e.body?.tabId?e.body.tabId:void 0;if(!r)return t.status(400).json({error:"tabId required"});try{let e=await (0,i.getStatusManager)().recoverUnknownIfPending(r);return t.status(200).json(e)}catch(e){return o.error(`recover-unknown failed: ${e instanceof Error?e.message:e}`),t.status(500).json({error:"recover-unknown failed"})}};e.s(["default",0,s],353162);var u=e.i(353162),l=e.i(7031),d=e.i(181927),p=e.i(846432);let v=(0,a.hoist)(u,"default"),c=(0,a.hoist)(u,"config"),h=new n.PagesAPIRouteModule({definition:{kind:r.RouteKind.PAGES_API,page:"/api/tmux/recover-unknown",pathname:"/api/tmux/recover-unknown",bundlePath:"",filename:""},userland:u,distDir:".next",relativeProjectDir:""});async function m(e,r,n){n.requestMeta&&(0,p.setRequestMeta)(e,n.requestMeta),h.isDev&&(0,p.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let a="/api/tmux/recover-unknown";a=a.replace(/\/index$/,"")||"/";let i=await h.prepare(e,r,{srcPage:a});if(!i){r.statusCode=400,r.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve());return}let{query:o,params:s,prerenderManifest:u,routerServerContext:v}=i;try{let t,n=e.method||"GET",i=(0,l.getTracer)(),p=i.getActiveScopeSpan(),c=!!(null==v?void 0:v.isWrappedByNextServer),m=h.instrumentationOnRequestError.bind(h),g=async l=>h.render(e,r,{query:{...o,...s},params:s,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:u.preview,propagateError:!1,dev:h.isDev,page:"/api/tmux/recover-unknown",internalRevalidate:null==v?void 0:v.revalidate,onError:(...t)=>m(e,...t)}).finally(()=>{if(!l)return;l.setAttributes({"http.status_code":r.statusCode,"next.rsc":!1});let e=i.getRootSpanAttributes();if(!e)return;if(e.get("next.span_type")!==d.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 o=e.get("next.route");if(o){let e=`${n} ${o}`;l.setAttributes({"next.route":o,"http.route":o,"next.span_name":e}),l.updateName(e),t&&t!==l&&(t.setAttribute("http.route",o),t.updateName(e))}else l.updateName(`${n} ${a}`)});c&&p?await g(p):(t=i.getActiveScopeSpan(),await i.withPropagatedContext(e.headers,()=>i.trace(d.BaseServerSpan.handleRequest,{spanName:`${n} ${a}`,kind:l.SpanKind.SERVER,attributes:{"http.method":n,"http.target":e.url}},g),void 0,!c))}catch(e){if(h.isDev)throw e;(0,t.sendError)(r,500,"Internal Server Error")}finally{null==n.waitUntil||n.waitUntil.call(n,Promise.resolve())}}e.s(["config",0,c,"default",0,v,"handler",0,m],561089)},981532,e=>{e.v(e=>Promise.resolve().then(()=>e(322429)))},322522,e=>{e.v(e=>Promise.resolve().then(()=>e(459015)))},245061,e=>{e.v(e=>Promise.resolve().then(()=>e(785128)))}];
2
2
 
3
- //# sourceMappingURL=_0_1vqqb._.js.map
3
+ //# sourceMappingURL=_0v81st0._.js.map
@@ -0,0 +1,3 @@
1
+ module.exports=[621034,e=>{"use strict";var t=e.i(926747),r=e.i(190406),a=e.i(244898),o=e.i(262950),s=e.i(322429);let n=async(e,t)=>{let r=e.query.groupId;if("DELETE"===e.method)return await (0,s.ungroupGroup)(r)?t.status(204).end():t.status(404).json({error:"Group not found"});if("PATCH"===e.method){let{name:a,collapsed:o}=e.body??{};if(void 0!==o){if("boolean"!=typeof o)return t.status(400).json({error:"collapsed must be boolean"});if(!await (0,s.setGroupCollapsed)(r,o))return t.status(404).json({error:"Group not found"});if(void 0===a)return t.status(200).json({ok:!0})}if(void 0!==a){if("string"!=typeof a||!a.trim())return t.status(400).json({error:"name required"});let e=await (0,s.renameGroup)(r,a.trim());return e?t.status(200).json(e):t.status(404).json({error:"Group not found"})}return t.status(400).json({error:"name or collapsed required"})}return t.setHeader("Allow","DELETE, PATCH"),t.status(405).json({error:"Method not allowed"})};e.s(["default",0,n],869181);var i=e.i(869181),u=e.i(7031),l=e.i(181927),d=e.i(846432);let p=(0,o.hoist)(i,"default"),v=(0,o.hoist)(i,"config"),c=new a.PagesAPIRouteModule({definition:{kind:r.RouteKind.PAGES_API,page:"/api/workspace/group/[groupId]",pathname:"/api/workspace/group/[groupId]",bundlePath:"",filename:""},userland:i,distDir:".next",relativeProjectDir:""});async function f(e,r,a){a.requestMeta&&(0,d.setRequestMeta)(e,a.requestMeta),c.isDev&&(0,d.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let o="/api/workspace/group/[groupId]";o=o.replace(/\/index$/,"")||"/";let s=await c.prepare(e,r,{srcPage:o});if(!s){r.statusCode=400,r.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve());return}let{query:n,params:i,prerenderManifest:p,routerServerContext:v}=s;try{let t,a=e.method||"GET",s=(0,u.getTracer)(),d=s.getActiveScopeSpan(),f=!!(null==v?void 0:v.isWrappedByNextServer),g=c.instrumentationOnRequestError.bind(c),h=async u=>c.render(e,r,{query:{...n,...i},params:i,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:p.preview,propagateError:!1,dev:c.isDev,page:"/api/workspace/group/[groupId]",internalRevalidate:null==v?void 0:v.revalidate,onError:(...t)=>g(e,...t)}).finally(()=>{if(!u)return;u.setAttributes({"http.status_code":r.statusCode,"next.rsc":!1});let e=s.getRootSpanAttributes();if(!e)return;if(e.get("next.span_type")!==l.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 n=e.get("next.route");if(n){let e=`${a} ${n}`;u.setAttributes({"next.route":n,"http.route":n,"next.span_name":e}),u.updateName(e),t&&t!==u&&(t.setAttribute("http.route",n),t.updateName(e))}else u.updateName(`${a} ${o}`)});f&&d?await h(d):(t=s.getActiveScopeSpan(),await s.withPropagatedContext(e.headers,()=>s.trace(l.BaseServerSpan.handleRequest,{spanName:`${a} ${o}`,kind:u.SpanKind.SERVER,attributes:{"http.method":a,"http.target":e.url}},h),void 0,!f))}catch(e){if(c.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,v,"default",0,p,"handler",0,f],621034)},981532,e=>{e.v(e=>Promise.resolve().then(()=>e(322429)))},322522,e=>{e.v(e=>Promise.resolve().then(()=>e(459015)))},245061,e=>{e.v(t=>Promise.all(["server/chunks/src_lib_tab-title_ts_0onatvs._.js"].map(t=>e.l(t))).then(()=>t(785128)))}];
2
+
3
+ //# sourceMappingURL=_0vgpyhz._.js.map
@@ -1,3 +1,3 @@
1
1
  module.exports=[954429,e=>{"use strict";var t=e.i(926747),a=e.i(190406),r=e.i(244898),n=e.i(262950),s=e.i(825265),i=e.i(322429);let o=async(e,t)=>{if("POST"!==e.method)return t.setHeader("Allow","POST"),t.status(405).json({error:"Method not allowed"});let a=e.query.workspace||await (0,i.getActiveWorkspaceId)();if(!a)return t.status(400).json({error:"No workspace found"});let r=e.query.tabId,n=e.query.paneId,{toPaneId:o,toIndex:l}=e.body??{};if(!o||void 0===l)return t.status(400).json({error:"toPaneId and toIndex required"});let d=await (0,s.moveTabBetweenPanes)(a,r,n,o,l);return d?t.status(200).json(d):t.status(404).json({error:"Target not found"})};e.s(["default",0,o],545174);var l=e.i(545174),d=e.i(7031),u=e.i(181927),p=e.i(846432);let v=(0,n.hoist)(l,"default"),c=(0,n.hoist)(l,"config"),h=new r.PagesAPIRouteModule({definition:{kind:a.RouteKind.PAGES_API,page:"/api/layout/pane/[paneId]/tabs/[tabId]/move",pathname:"/api/layout/pane/[paneId]/tabs/[tabId]/move",bundlePath:"",filename:""},userland:l,distDir:".next",relativeProjectDir:""});async function m(e,a,r){r.requestMeta&&(0,p.setRequestMeta)(e,r.requestMeta),h.isDev&&(0,p.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let n="/api/layout/pane/[paneId]/tabs/[tabId]/move";n=n.replace(/\/index$/,"")||"/";let s=await h.prepare(e,a,{srcPage:n});if(!s){a.statusCode=400,a.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve());return}let{query:i,params:o,prerenderManifest:l,routerServerContext:v}=s;try{let t,r=e.method||"GET",s=(0,d.getTracer)(),p=s.getActiveScopeSpan(),c=!!(null==v?void 0:v.isWrappedByNextServer),m=h.instrumentationOnRequestError.bind(h),b=async d=>h.render(e,a,{query:{...i,...o},params:o,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:l.preview,propagateError:!1,dev:h.isDev,page:"/api/layout/pane/[paneId]/tabs/[tabId]/move",internalRevalidate:null==v?void 0:v.revalidate,onError:(...t)=>m(e,...t)}).finally(()=>{if(!d)return;d.setAttributes({"http.status_code":a.statusCode,"next.rsc":!1});let e=s.getRootSpanAttributes();if(!e)return;if(e.get("next.span_type")!==u.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 i=e.get("next.route");if(i){let e=`${r} ${i}`;d.setAttributes({"next.route":i,"http.route":i,"next.span_name":e}),d.updateName(e),t&&t!==d&&(t.setAttribute("http.route",i),t.updateName(e))}else d.updateName(`${r} ${n}`)});c&&p?await b(p):(t=s.getActiveScopeSpan(),await s.withPropagatedContext(e.headers,()=>s.trace(u.BaseServerSpan.handleRequest,{spanName:`${r} ${n}`,kind:d.SpanKind.SERVER,attributes:{"http.method":r,"http.target":e.url}},b),void 0,!c))}catch(e){if(h.isDev)throw e;(0,t.sendError)(a,500,"Internal Server Error")}finally{null==r.waitUntil||r.waitUntil.call(r,Promise.resolve())}}e.s(["config",0,c,"default",0,v,"handler",0,m],954429)},981532,e=>{e.v(e=>Promise.resolve().then(()=>e(322429)))},322522,e=>{e.v(e=>Promise.resolve().then(()=>e(459015)))},245061,e=>{e.v(t=>Promise.all(["server/chunks/src_lib_tab-title_ts_0onatvs._.js"].map(t=>e.l(t))).then(()=>t(785128)))}];
2
2
 
3
- //# sourceMappingURL=_1368r9s._.js.map
3
+ //# sourceMappingURL=_0w0qjyh._.js.map
@@ -0,0 +1,3 @@
1
+ module.exports=[376912,e=>{"use strict";var t=e.i(926747),r=e.i(190406),a=e.i(244898),i=e.i(262950),s=e.i(322429);let n=async(e,t)=>{if("POST"!==e.method)return t.setHeader("Allow","POST"),t.status(405).json({error:"Method not allowed"});let{name:r}=e.body??{},a=await (0,s.createGroup)("string"==typeof r?r:"");return t.status(200).json(a)};e.s(["default",0,n],132864);var o=e.i(132864),l=e.i(7031),u=e.i(181927),d=e.i(846432);let p=(0,i.hoist)(o,"default"),c=(0,i.hoist)(o,"config"),v=new a.PagesAPIRouteModule({definition:{kind:r.RouteKind.PAGES_API,page:"/api/workspace/group/index",pathname:"/api/workspace/group",bundlePath:"",filename:""},userland:o,distDir:".next",relativeProjectDir:""});async function h(e,r,a){a.requestMeta&&(0,d.setRequestMeta)(e,a.requestMeta),v.isDev&&(0,d.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let i="/api/workspace/group/index";i=i.replace(/\/index$/,"")||"/";let s=await v.prepare(e,r,{srcPage:i});if(!s){r.statusCode=400,r.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve());return}let{query:n,params:o,prerenderManifest:p,routerServerContext:c}=s;try{let t,a=e.method||"GET",s=(0,l.getTracer)(),d=s.getActiveScopeSpan(),h=!!(null==c?void 0:c.isWrappedByNextServer),g=v.instrumentationOnRequestError.bind(v),m=async l=>v.render(e,r,{query:{...n,...o},params:o,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:p.preview,propagateError:!1,dev:v.isDev,page:"/api/workspace/group/index",internalRevalidate:null==c?void 0:c.revalidate,onError:(...t)=>g(e,...t)}).finally(()=>{if(!l)return;l.setAttributes({"http.status_code":r.statusCode,"next.rsc":!1});let e=s.getRootSpanAttributes();if(!e)return;if(e.get("next.span_type")!==u.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 n=e.get("next.route");if(n){let e=`${a} ${n}`;l.setAttributes({"next.route":n,"http.route":n,"next.span_name":e}),l.updateName(e),t&&t!==l&&(t.setAttribute("http.route",n),t.updateName(e))}else l.updateName(`${a} ${i}`)});h&&d?await m(d):(t=s.getActiveScopeSpan(),await s.withPropagatedContext(e.headers,()=>s.trace(u.BaseServerSpan.handleRequest,{spanName:`${a} ${i}`,kind:l.SpanKind.SERVER,attributes:{"http.method":a,"http.target":e.url}},m),void 0,!h))}catch(e){if(v.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,c,"default",0,p,"handler",0,h],376912)},981532,e=>{e.v(e=>Promise.resolve().then(()=>e(322429)))},322522,e=>{e.v(e=>Promise.resolve().then(()=>e(459015)))},245061,e=>{e.v(t=>Promise.all(["server/chunks/src_lib_tab-title_ts_0onatvs._.js"].map(t=>e.l(t))).then(()=>t(785128)))}];
2
+
3
+ //# sourceMappingURL=_0wok5xu._.js.map
@@ -1,3 +1,3 @@
1
1
  module.exports=[779844,e=>{"use strict";var t=e.i(926747),r=e.i(190406),a=e.i(244898),n=e.i(262950),s=e.i(825265),i=e.i(322429);let o=async(e,t)=>{if("PATCH"!==e.method)return t.setHeader("Allow","PATCH"),t.status(405).json({error:"Method not allowed"});let r=e.query.workspace||await (0,i.getActiveWorkspaceId)();if(!r)return t.status(400).json({error:"No workspace found"});let a=e.query.paneId,{tabIds:n}=e.body??{};if(!Array.isArray(n)||0===n.length)return t.status(400).json({error:"tabIds array required"});let o=await (0,s.reorderTabsInPane)(r,a,n);return o?t.status(200).json(o):t.status(404).json({error:"Target not found"})};e.s(["default",0,o],970421);var l=e.i(970421),d=e.i(7031),u=e.i(181927),p=e.i(846432);let v=(0,n.hoist)(l,"default"),c=(0,n.hoist)(l,"config"),h=new a.PagesAPIRouteModule({definition:{kind:r.RouteKind.PAGES_API,page:"/api/layout/pane/[paneId]/tabs/order",pathname:"/api/layout/pane/[paneId]/tabs/order",bundlePath:"",filename:""},userland:l,distDir:".next",relativeProjectDir:""});async function f(e,r,a){a.requestMeta&&(0,p.setRequestMeta)(e,a.requestMeta),h.isDev&&(0,p.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let n="/api/layout/pane/[paneId]/tabs/order";n=n.replace(/\/index$/,"")||"/";let s=await h.prepare(e,r,{srcPage:n});if(!s){r.statusCode=400,r.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve());return}let{query:i,params:o,prerenderManifest:l,routerServerContext:v}=s;try{let t,a=e.method||"GET",s=(0,d.getTracer)(),p=s.getActiveScopeSpan(),c=!!(null==v?void 0:v.isWrappedByNextServer),f=h.instrumentationOnRequestError.bind(h),m=async d=>h.render(e,r,{query:{...i,...o},params:o,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:l.preview,propagateError:!1,dev:h.isDev,page:"/api/layout/pane/[paneId]/tabs/order",internalRevalidate:null==v?void 0:v.revalidate,onError:(...t)=>f(e,...t)}).finally(()=>{if(!d)return;d.setAttributes({"http.status_code":r.statusCode,"next.rsc":!1});let e=s.getRootSpanAttributes();if(!e)return;if(e.get("next.span_type")!==u.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 i=e.get("next.route");if(i){let e=`${a} ${i}`;d.setAttributes({"next.route":i,"http.route":i,"next.span_name":e}),d.updateName(e),t&&t!==d&&(t.setAttribute("http.route",i),t.updateName(e))}else d.updateName(`${a} ${n}`)});c&&p?await m(p):(t=s.getActiveScopeSpan(),await s.withPropagatedContext(e.headers,()=>s.trace(u.BaseServerSpan.handleRequest,{spanName:`${a} ${n}`,kind:d.SpanKind.SERVER,attributes:{"http.method":a,"http.target":e.url}},m),void 0,!c))}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,c,"default",0,v,"handler",0,f],779844)},981532,e=>{e.v(e=>Promise.resolve().then(()=>e(322429)))},322522,e=>{e.v(e=>Promise.resolve().then(()=>e(459015)))},245061,e=>{e.v(t=>Promise.all(["server/chunks/src_lib_tab-title_ts_0onatvs._.js"].map(t=>e.l(t))).then(()=>t(785128)))}];
2
2
 
3
- //# sourceMappingURL=_0tumyht._.js.map
3
+ //# sourceMappingURL=_0wu6uxd._.js.map
@@ -1,3 +1,3 @@
1
1
  module.exports=[845994,e=>{"use strict";var t=e.i(924868),a=e.i(814747),r=e.i(446786),s=e.i(254799),i=e.i(666126);(0,e.i(25146).createLogger)("config");let n=a.default.join(r.default.homedir(),".purplemux"),o=a.default.join(n,"config.json"),l=globalThis;l.__ptConfigLock||(l.__ptConfigLock=Promise.resolve());let u=async e=>{let t,a=new Promise(e=>{t=e}),r=l.__ptConfigLock;l.__ptConfigLock=a,await r;try{return await e()}finally{t()}},d=()=>({updatedAt:new Date().toISOString()}),c=async()=>{try{let e=await t.default.readFile(o,"utf-8");return JSON.parse(e)}catch{return null}},p=async e=>{let{updatedAt:a,...r}=e,s=JSON.stringify(r);if(l.__ptConfigContentCache===s)return;e.updatedAt=new Date().toISOString();let n=o+".tmp";try{await t.default.writeFile(n,JSON.stringify(e,null,2),{mode:384}),await t.default.rename(n,o)}catch(e){throw await t.default.unlink(n).catch(()=>{}),e}l.__ptConfigContentCache=s,(0,i.broadcastSync)({type:"config"})},f="scrypt:",m=e=>"string"==typeof e&&e.startsWith(f),g=async e=>{let t=s.default.randomBytes(16),a=await new Promise((a,r)=>{s.default.scrypt(e,t,64,(e,t)=>{e?r(e):a(t)})});return`${f}${t.toString("hex")}:${a.toString("hex")}`},h=async(e,t)=>{if(!m(t))return!1;let[,a,r]=t.split(":"),i=Buffer.from(a,"hex"),n=Buffer.from(r,"hex"),o=await new Promise((t,a)=>{s.default.scrypt(e,i,n.length,(e,r)=>{e?a(e):t(r)})});return s.default.timingSafeEqual(o,n)},w=async()=>await c()??d(),S=async e=>u(async()=>{let t=await c()??d();Object.assign(t,e),await p(t)}),y=async()=>{let e=await c();return!m(e?.authPassword)},v=async()=>{let e=await c();return e?.dangerouslySkipPermissions??!1};e.s(["generateSecret",0,()=>s.default.randomBytes(32).toString("hex"),"getConfig",0,w,"getDangerouslySkipPermissions",0,v,"hashPassword",0,g,"needsSetup",0,y,"updateConfig",0,S,"verifyPassword",0,h])},478490,e=>{"use strict";var t=e.i(845994);e.i(924868);var a=e.i(814747),r=e.i(446786),s=e.i(25146);e.i(796902),(0,s.createLogger)("hooks");let i=a.default.join(r.default.homedir(),".purplemux"),n=a.default.join(i,"hooks.json");a.default.join(i,"port"),a.default.join(i,"status-hook.sh");var o=e.i(160874);let l=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,u=e=>"string"==typeof e&&l.test(e),d=async e=>{let a=await (0,t.getDangerouslySkipPermissions)(),r=[`--settings ${n}`];return e&&r.push(`--append-system-prompt-file ${(0,o.getClaudePromptPath)(e)}`),a&&r.push("--dangerously-skip-permissions"),r.join(" ")},c=async(e,t)=>{if(!u(e))throw Error(`Invalid session ID format: ${e}`);let a=await d(t);return`claude --resume ${e} ${a}`};e.s(["buildResumeCommand",0,c,"isValidSessionId",0,u],478490)},758518,e=>{"use strict";var t=e.i(926747),a=e.i(190406),r=e.i(244898),s=e.i(262950),i=e.i(459015),n=e.i(322429),o=e.i(825265),l=e.i(804767),u=e.i(478490),d=e.i(25146);let c=(0,d.createLogger)("auto-resume"),p=new Set(["bash","zsh","fish","sh","dash"]),f=async()=>{let{workspaces:e}=await (0,n.getWorkspaces)(),t=[];for(let a of e){let e=await (0,o.readLayoutFile)((0,o.resolveLayoutFile)(a.id));if(e)for(let r of(0,l.collectAllTabs)(e.root))"claude-code"===r.panelType&&r.claudeSessionId&&t.push({workspaceId:a.id,tabId:r.id,tmuxSession:r.sessionName,claudeSessionId:r.claudeSessionId})}return t},m=async e=>{try{let t=await (0,i.getPaneCurrentCommand)(e.tmuxSession);if(!t)return c.warn(`Cannot check process: ${e.tmuxSession}`),!1;if(!p.has(t)){if("claude"===t||"node"===t)return c.debug(`Claude already running, skip: ${e.tmuxSession}`),!0;return c.debug(`Non-shell process running (${t}), skip: ${e.tmuxSession}`),!1}let a=await (0,u.buildResumeCommand)(e.claudeSessionId,e.workspaceId);return c.debug(`Sending resume: ${e.tmuxSession} → ${e.claudeSessionId}`),await (0,i.sendKeys)(e.tmuxSession,a),!0}catch(t){return c.error(`Failed: ${e.tmuxSession} — ${t instanceof Error?t.message:t}`),!1}},g=async e=>{let t=!1;for(let a of e)await (0,i.hasSession)(a.tmuxSession)||(c.debug(`No tmux session, creating new: ${a.tmuxSession}`),await (0,i.createSession)(a.tmuxSession,80,24),t=!0);t&&await new Promise(e=>setTimeout(e,500)),await Promise.allSettled(e.map(e=>m(e)))},h=async()=>{let e=await f();0!==e.length&&(c.debug(`${e.length} surface(s) auto-resume started`),g(e).then(()=>{c.debug("Auto-resume complete")}).catch(e=>{c.error(`Auto-resume error: ${e instanceof Error?e.message:e}`)}))};var w=e.i(964759);let S=(0,d.createLogger)("terminal"),y=async(e,t)=>{if("POST"!==e.method)return t.setHeader("Allow","POST"),t.status(405).json({error:"Method not allowed"});try{let e=await (0,i.listSessions)();return S.info(`tmux reset requested — killing ${e.length} session(s)`),await (0,i.killServer)(),await (0,i.scanSessions)(),await (0,i.applyConfig)(),await (0,n.initWorkspaceStore)(),await h(),await (0,w.getStatusManager)().rescan(),S.info("tmux re-initialized after reset"),t.status(200).json({killed:e.length})}catch(e){return S.error(`tmux reset failed: ${e instanceof Error?e.message:e}`),t.status(500).json({error:"tmux reset failed"})}};e.s(["default",0,y],191170);var v=e.i(191170),x=e.i(7031),P=e.i(181927),$=e.i(846432);let k=(0,s.hoist)(v,"default"),b=(0,s.hoist)(v,"config"),C=new r.PagesAPIRouteModule({definition:{kind:a.RouteKind.PAGES_API,page:"/api/tmux/reset",pathname:"/api/tmux/reset",bundlePath:"",filename:""},userland:v,distDir:".next",relativeProjectDir:""});async function I(e,a,r){r.requestMeta&&(0,$.setRequestMeta)(e,r.requestMeta),C.isDev&&(0,$.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let s="/api/tmux/reset";s=s.replace(/\/index$/,"")||"/";let i=await C.prepare(e,a,{srcPage:s});if(!i){a.statusCode=400,a.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve());return}let{query:n,params:o,prerenderManifest:l,routerServerContext:u}=i;try{let t,r=e.method||"GET",i=(0,x.getTracer)(),d=i.getActiveScopeSpan(),c=!!(null==u?void 0:u.isWrappedByNextServer),p=C.instrumentationOnRequestError.bind(C),f=async d=>C.render(e,a,{query:{...n,...o},params:o,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:l.preview,propagateError:!1,dev:C.isDev,page:"/api/tmux/reset",internalRevalidate:null==u?void 0:u.revalidate,onError:(...t)=>p(e,...t)}).finally(()=>{if(!d)return;d.setAttributes({"http.status_code":a.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 n=e.get("next.route");if(n){let e=`${r} ${n}`;d.setAttributes({"next.route":n,"http.route":n,"next.span_name":e}),d.updateName(e),t&&t!==d&&(t.setAttribute("http.route",n),t.updateName(e))}else d.updateName(`${r} ${s}`)});c&&d?await f(d):(t=i.getActiveScopeSpan(),await i.withPropagatedContext(e.headers,()=>i.trace(P.BaseServerSpan.handleRequest,{spanName:`${r} ${s}`,kind:x.SpanKind.SERVER,attributes:{"http.method":r,"http.target":e.url}},f),void 0,!c))}catch(e){if(C.isDev)throw e;(0,t.sendError)(a,500,"Internal Server Error")}finally{null==r.waitUntil||r.waitUntil.call(r,Promise.resolve())}}e.s(["config",0,b,"default",0,k,"handler",0,I],758518)},981532,e=>{e.v(e=>Promise.resolve().then(()=>e(322429)))},322522,e=>{e.v(e=>Promise.resolve().then(()=>e(459015)))},245061,e=>{e.v(e=>Promise.resolve().then(()=>e(785128)))}];
2
2
 
3
- //# sourceMappingURL=_05otee~._.js.map
3
+ //# sourceMappingURL=_0z7d6.z._.js.map
@@ -1,3 +1,3 @@
1
1
  module.exports=[791169,e=>{"use strict";var t=e.i(926747),r=e.i(190406),a=e.i(244898),i=e.i(262950),s=e.i(825265),n=e.i(322429);let o=(0,e.i(25146).createLogger)("layout"),l=async(e,t)=>{let r=e.query.workspace||await (0,n.getActiveWorkspaceId)();if(!r)return t.status(400).json({error:"No workspace found"});if("GET"===e.method)try{let e=await (0,n.getWorkspaceById)(r),a=await (0,s.getLayout)(r,e?.directories[0]);return t.status(200).json(a)}catch(e){return o.error(`GET failed: ${e instanceof Error?e.message:e}`),t.status(500).json({error:"Failed to load layout"})}if("PATCH"===e.method){let{activePaneId:a,ratioUpdate:i,equalize:n}=e.body??{},o=await (0,s.patchLayout)(r,{activePaneId:a,ratioUpdate:i,equalize:n});return o?t.status(200).json(o):t.status(404).json({error:"Target not found"})}return t.setHeader("Allow","GET, PATCH"),t.status(405).json({error:"Method not allowed"})};e.s(["default",0,l],522999);var u=e.i(522999),d=e.i(7031),p=e.i(181927),c=e.i(846432);let v=(0,i.hoist)(u,"default"),h=(0,i.hoist)(u,"config"),g=new a.PagesAPIRouteModule({definition:{kind:r.RouteKind.PAGES_API,page:"/api/layout/index",pathname:"/api/layout",bundlePath:"",filename:""},userland:u,distDir:".next",relativeProjectDir:""});async function f(e,r,a){a.requestMeta&&(0,c.setRequestMeta)(e,a.requestMeta),g.isDev&&(0,c.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let i="/api/layout/index";i=i.replace(/\/index$/,"")||"/";let s=await g.prepare(e,r,{srcPage:i});if(!s){r.statusCode=400,r.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve());return}let{query:n,params:o,prerenderManifest:l,routerServerContext:u}=s;try{let t,a=e.method||"GET",s=(0,d.getTracer)(),c=s.getActiveScopeSpan(),v=!!(null==u?void 0:u.isWrappedByNextServer),h=g.instrumentationOnRequestError.bind(g),f=async d=>g.render(e,r,{query:{...n,...o},params:o,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:l.preview,propagateError:!1,dev:g.isDev,page:"/api/layout/index",internalRevalidate:null==u?void 0:u.revalidate,onError:(...t)=>h(e,...t)}).finally(()=>{if(!d)return;d.setAttributes({"http.status_code":r.statusCode,"next.rsc":!1});let e=s.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 n=e.get("next.route");if(n){let e=`${a} ${n}`;d.setAttributes({"next.route":n,"http.route":n,"next.span_name":e}),d.updateName(e),t&&t!==d&&(t.setAttribute("http.route",n),t.updateName(e))}else d.updateName(`${a} ${i}`)});v&&c?await f(c):(t=s.getActiveScopeSpan(),await s.withPropagatedContext(e.headers,()=>s.trace(p.BaseServerSpan.handleRequest,{spanName:`${a} ${i}`,kind:d.SpanKind.SERVER,attributes:{"http.method":a,"http.target":e.url}},f),void 0,!v))}catch(e){if(g.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,h,"default",0,v,"handler",0,f],791169)},981532,e=>{e.v(e=>Promise.resolve().then(()=>e(322429)))},322522,e=>{e.v(e=>Promise.resolve().then(()=>e(459015)))},245061,e=>{e.v(t=>Promise.all(["server/chunks/src_lib_tab-title_ts_0onatvs._.js"].map(t=>e.l(t))).then(()=>t(785128)))}];
2
2
 
3
- //# sourceMappingURL=_0c63jma._.js.map
3
+ //# sourceMappingURL=_0zf5mig._.js.map
@@ -1,3 +1,3 @@
1
1
  module.exports=[155100,e=>{"use strict";var t=e.i(926747),a=e.i(190406),r=e.i(244898),i=e.i(262950),s=e.i(322429);let n=async(e,t)=>{if("PATCH"!==e.method)return t.setHeader("Allow","PATCH"),t.status(405).json({error:"Method not allowed"});let{activeWorkspaceId:a,sidebarCollapsed:r,sidebarWidth:i}=e.body??{};return await (0,s.updateActive)({activeWorkspaceId:a,sidebarCollapsed:r,sidebarWidth:i}),t.status(200).json({ok:!0})};e.s(["default",0,n],594369);var o=e.i(594369),l=e.i(7031),d=e.i(181927),u=e.i(846432);let p=(0,i.hoist)(o,"default"),v=(0,i.hoist)(o,"config"),c=new r.PagesAPIRouteModule({definition:{kind:a.RouteKind.PAGES_API,page:"/api/workspace/active",pathname:"/api/workspace/active",bundlePath:"",filename:""},userland:o,distDir:".next",relativeProjectDir:""});async function h(e,a,r){r.requestMeta&&(0,u.setRequestMeta)(e,r.requestMeta),c.isDev&&(0,u.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let i="/api/workspace/active";i=i.replace(/\/index$/,"")||"/";let s=await c.prepare(e,a,{srcPage:i});if(!s){a.statusCode=400,a.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve());return}let{query:n,params:o,prerenderManifest:p,routerServerContext:v}=s;try{let t,r=e.method||"GET",s=(0,l.getTracer)(),u=s.getActiveScopeSpan(),h=!!(null==v?void 0:v.isWrappedByNextServer),m=c.instrumentationOnRequestError.bind(c),w=async l=>c.render(e,a,{query:{...n,...o},params:o,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:p.preview,propagateError:!1,dev:c.isDev,page:"/api/workspace/active",internalRevalidate:null==v?void 0:v.revalidate,onError:(...t)=>m(e,...t)}).finally(()=>{if(!l)return;l.setAttributes({"http.status_code":a.statusCode,"next.rsc":!1});let e=s.getRootSpanAttributes();if(!e)return;if(e.get("next.span_type")!==d.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 n=e.get("next.route");if(n){let e=`${r} ${n}`;l.setAttributes({"next.route":n,"http.route":n,"next.span_name":e}),l.updateName(e),t&&t!==l&&(t.setAttribute("http.route",n),t.updateName(e))}else l.updateName(`${r} ${i}`)});h&&u?await w(u):(t=s.getActiveScopeSpan(),await s.withPropagatedContext(e.headers,()=>s.trace(d.BaseServerSpan.handleRequest,{spanName:`${r} ${i}`,kind:l.SpanKind.SERVER,attributes:{"http.method":r,"http.target":e.url}},w),void 0,!h))}catch(e){if(c.isDev)throw e;(0,t.sendError)(a,500,"Internal Server Error")}finally{null==r.waitUntil||r.waitUntil.call(r,Promise.resolve())}}e.s(["config",0,v,"default",0,p,"handler",0,h],155100)},981532,e=>{e.v(e=>Promise.resolve().then(()=>e(322429)))},322522,e=>{e.v(e=>Promise.resolve().then(()=>e(459015)))},245061,e=>{e.v(t=>Promise.all(["server/chunks/src_lib_tab-title_ts_0onatvs._.js"].map(t=>e.l(t))).then(()=>t(785128)))}];
2
2
 
3
- //# sourceMappingURL=_0mnwbyo._.js.map
3
+ //# sourceMappingURL=_0~~9-pj._.js.map
@@ -1,3 +1,3 @@
1
1
  module.exports=[871911,e=>{"use strict";var t=e.i(254799),r=e.i(522734),i=e.i(814747),a=e.i(446786);let n=i.default.join(a.default.homedir(),".purplemux","cli-token"),s=globalThis;e.s(["verifyCliToken",0,e=>{let a=e.headers["x-pmux-token"];var o="string"==typeof a?a:void 0;if(!o)return!1;let l=(()=>{if(s.__ptCliToken)return s.__ptCliToken;let e=(()=>{try{return r.default.readFileSync(n,"utf-8").trim()||null}catch{return null}})();if(e)return s.__ptCliToken=e,e;let a=(0,t.randomBytes)(32).toString("hex");s.__ptCliToken=a;try{r.default.mkdirSync(i.default.dirname(n),{recursive:!0}),r.default.writeFileSync(n,a,{mode:384})}catch{}return a})();return o.length===l.length&&(0,t.timingSafeEqual)(Buffer.from(o),Buffer.from(l))}])},845994,e=>{"use strict";var t=e.i(924868),r=e.i(814747),i=e.i(446786),a=e.i(254799),n=e.i(666126);(0,e.i(25146).createLogger)("config");let s=r.default.join(i.default.homedir(),".purplemux"),o=r.default.join(s,"config.json"),l=globalThis;l.__ptConfigLock||(l.__ptConfigLock=Promise.resolve());let u=async e=>{let t,r=new Promise(e=>{t=e}),i=l.__ptConfigLock;l.__ptConfigLock=r,await i;try{return await e()}finally{t()}},f=()=>({updatedAt:new Date().toISOString()}),d=async()=>{try{let e=await t.default.readFile(o,"utf-8");return JSON.parse(e)}catch{return null}},c=async e=>{let{updatedAt:r,...i}=e,a=JSON.stringify(i);if(l.__ptConfigContentCache===a)return;e.updatedAt=new Date().toISOString();let s=o+".tmp";try{await t.default.writeFile(s,JSON.stringify(e,null,2),{mode:384}),await t.default.rename(s,o)}catch(e){throw await t.default.unlink(s).catch(()=>{}),e}l.__ptConfigContentCache=a,(0,n.broadcastSync)({type:"config"})},p="scrypt:",g=e=>"string"==typeof e&&e.startsWith(p),m=async e=>{let t=a.default.randomBytes(16),r=await new Promise((r,i)=>{a.default.scrypt(e,t,64,(e,t)=>{e?i(e):r(t)})});return`${p}${t.toString("hex")}:${r.toString("hex")}`},h=async(e,t)=>{if(!g(t))return!1;let[,r,i]=t.split(":"),n=Buffer.from(r,"hex"),s=Buffer.from(i,"hex"),o=await new Promise((t,r)=>{a.default.scrypt(e,n,s.length,(e,i)=>{e?r(e):t(i)})});return a.default.timingSafeEqual(o,s)},y=async()=>await d()??f(),w=async e=>u(async()=>{let t=await d()??f();Object.assign(t,e),await c(t)}),S=async()=>{let e=await d();return!g(e?.authPassword)},k=async()=>{let e=await d();return e?.dangerouslySkipPermissions??!1};e.s(["generateSecret",0,()=>a.default.randomBytes(32).toString("hex"),"getConfig",0,y,"getDangerouslySkipPermissions",0,k,"hashPassword",0,m,"needsSetup",0,S,"updateConfig",0,w,"verifyPassword",0,h])},478490,e=>{"use strict";var t=e.i(845994);e.i(924868);var r=e.i(814747),i=e.i(446786),a=e.i(25146);e.i(796902),(0,a.createLogger)("hooks");let n=r.default.join(i.default.homedir(),".purplemux"),s=r.default.join(n,"hooks.json");r.default.join(n,"port"),r.default.join(n,"status-hook.sh");var o=e.i(160874);let l=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,u=e=>"string"==typeof e&&l.test(e),f=async e=>{let r=await (0,t.getDangerouslySkipPermissions)(),i=[`--settings ${s}`];return e&&i.push(`--append-system-prompt-file ${(0,o.getClaudePromptPath)(e)}`),r&&i.push("--dangerously-skip-permissions"),i.join(" ")},d=async(e,t)=>{if(!u(e))throw Error(`Invalid session ID format: ${e}`);let r=await f(t);return`claude --resume ${e} ${r}`};e.s(["buildResumeCommand",0,d,"isValidSessionId",0,u],478490)},133446,e=>{"use strict";var t=e.i(814747),r=e.i(446786);let i=t.default.join(r.default.homedir(),".claude","projects");e.s(["isAllowedJsonlPath",0,e=>{let r=t.default.resolve(e);return r.startsWith(i+t.default.sep)&&r.endsWith(".jsonl")}])},981532,e=>{e.v(e=>Promise.resolve().then(()=>e(322429)))},322522,e=>{e.v(e=>Promise.resolve().then(()=>e(459015)))},245061,e=>{e.v(e=>Promise.resolve().then(()=>e(785128)))}];
2
2
 
3
- //# sourceMappingURL=src_lib_136edwc._.js.map
3
+ //# sourceMappingURL=src_lib_0p.xsqi._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[825265,804767,e=>{"use strict";var t=e.i(924868),a=e.i(814747),n=e.i(446786),r=e.i(44014),i=e.i(459015),l=e.i(666126),o=e.i(25146);let s=e=>"pane"===e.type?[e]:[...s(e.children[0]),...s(e.children[1])],d=e=>s(e).flatMap(e=>e.tabs),c=(e,t)=>"pane"===e.type?e.id===t?e:null:c(e.children[0],t)||c(e.children[1],t),u=e=>"pane"===e.type?e.id:u(e.children[0]),p=e=>"pane"===e.type?e.id:p(e.children[1]),w=(e,t,a)=>"pane"===e.type?e.id===t?a:e:{...e,children:[w(e.children[0],t,a),w(e.children[1],t,a)]},y=(e,t)=>{if("pane"===e.type)return null;let[a,n]=e.children;if("pane"===a.type&&a.id===t)return n;if("pane"===n.type&&n.id===t)return a;let r=y(a,t);if(r)return{...e,children:[r,n]};let i=y(n,t);return i?{...e,children:[a,i]}:null},f=(e,t)=>{if("pane"===e.type)return null;let[a,n]=e.children;return"pane"===a.type&&a.id===t?u(n):"pane"===n.type&&n.id===t?p(a):f(a,t)||f(n,t)},b=(e,t)=>{let a=f(e.root,t),n=y(e.root,t);n&&(e.root=n),e.activePaneId===t&&(e.activePaneId=a??s(e.root)[0]?.id??null)},h=(e,t,a)=>{if("split"!==e.type)return e;if(0===t.length)return{...e,ratio:a};let[n,...r]=t,i=[e.children[0],e.children[1]];return i[n]=h(e.children[n],r,a),{...e,children:i}},m=(e,t)=>"pane"===e.type||e.orientation!==t?1:m(e.children[0],t)+m(e.children[1],t),v=e=>{if("pane"===e.type)return!0;let t=m(e.children[0],e.orientation),a=m(e.children[1],e.orientation);return!(Math.abs(e.ratio-t/(t+a)*100)>1)&&v(e.children[0])&&v(e.children[1])},I=e=>{if("pane"===e.type)return e;let t=m(e.children[0],e.orientation),a=Math.round(t/(t+m(e.children[1],e.orientation))*1e4)/100;return{...e,ratio:a,children:[I(e.children[0]),I(e.children[1])]}};e.s(["collectAllTabs",0,d,"collectPanes",0,s,"equalizeNode",0,I,"findPane",0,c,"getFirstPaneId",0,u,"isEqualized",0,v,"removePaneWithFocus",0,b,"replacePane",0,w,"updateRatioAtPath",0,h],804767);let S=(0,o.createLogger)("layout"),T=a.default.join(n.default.homedir(),".purplemux"),g=globalThis;g.__ptLayoutLock||(g.__ptLayoutLock=Promise.resolve()),g.__ptLayoutContentCache||(g.__ptLayoutContentCache=new Map),void 0===g.__ptLayoutReconciler&&(g.__ptLayoutReconciler=null);let P=async e=>{let t,a=new Promise(e=>{t=e}),n=g.__ptLayoutLock;g.__ptLayoutLock=a,await n;try{return await e()}finally{t()}},L=()=>`pane-${(0,r.nanoid)(6)}`,N=()=>`tab-${(0,r.nanoid)(6)}`,_=e=>a.default.join(T,"workspaces",e),k=e=>a.default.join(_(e),"layout.json"),A=(e,t)=>{let a=L(),n=((e,t,a=0,n)=>{let r=N(),l={id:r,sessionName:(0,i.workspaceSessionName)(e,t,r),name:"",order:a};return n&&(l.cwd=n),l})(e,a,0,t);return{pane:{type:"pane",id:a,tabs:[n],activeTabId:n.id},tab:n}},C=async e=>{let a;try{a=await t.default.readFile(e,"utf-8")}catch{return null}try{return JSON.parse(a)}catch{S.warn(`${e} parse failed`);try{await t.default.copyFile(e,e.replace(/\.json$/,".json.bak"))}catch{}return null}},O=async(e,n)=>{let r,i=JSON.stringify({root:e.root,activePaneId:e.activePaneId}),o=g.__ptLayoutContentCache;if(o.get(n)===i)return;await t.default.mkdir(a.default.dirname(n),{recursive:!0});let s=n+".tmp";try{await t.default.writeFile(s,JSON.stringify(e,null,2),{mode:384}),await t.default.rename(s,n)}catch(e){throw await t.default.unlink(s).catch(()=>{}),e}o.set(n,i);let c=(r=n.match(/workspaces\/(ws-[^/]+)\//),r?.[1]??null);if(c){let t=g.__ptLayoutReconciler;if(t){let a=d(e.root).map(e=>e.id);t.reconcileWorkspaceTabs(c,a)}(0,l.broadcastSync)({type:"layout",workspaceId:c})}},D=async e=>{await t.default.rm(_(e),{recursive:!0,force:!0}),F(e);let a=g.__ptLayoutReconciler;a&&a.removeWorkspaceTabs(e),(0,l.broadcastSync)({type:"layout",workspaceId:e})},F=e=>{let t=k(e);g.__ptLayoutContentCache.delete(t)},M=(t,a)=>{let n=[...new Set(d(a).map(e=>e.cwd).filter(e=>!!e))];n.length>0&&e.A(981532).then(({updateWorkspaceDirectories:e})=>{e(t,n).catch(()=>{})}).catch(()=>{})},U=async(e,t,a,n)=>{let r=!1,l=new Set(t),o=s(e.root),d=new Set;for(let e of o)for(let t of e.tabs)if("web-browser"!==t.panelType&&(d.add(t.sessionName),!l.has(t.sessionName)&&"claude-code"===t.panelType)){let e=t.cwd||n;S.debug(`crossCheck: Claude tab session recreated: ${t.sessionName} (cwd: ${e})`),await (0,i.createSession)(t.sessionName,80,24,e),r=!0}let c=t.filter(e=>!d.has(e));if(c.length>0){r=!0;let e=o[0];if(e){let t=e.tabs.length>0?Math.max(...e.tabs.map(e=>e.order)):-1;for(let a of c)t++,e.tabs.push({id:N(),sessionName:a,name:"",order:t});!e.activeTabId&&e.tabs.length>0&&(e.activeTabId=e.tabs[0].id)}}if(r){e.updatedAt=new Date().toISOString();let t=s(e.root);e.activePaneId&&!t.some(t=>t.id===e.activePaneId)&&(e.activePaneId=t[0]?.id??null)}return r},$=async(e,t,a)=>{let{pane:n,tab:r}=A(e,t);return a?.panelType&&(r.panelType=a.panelType),await (0,i.createSession)(r.sessionName,80,24,t),{root:n,activePaneId:n.id,updatedAt:new Date().toISOString()}},R=async(e,t)=>P(async()=>{let a=k(e),n=await C(a);if(n)return n;let{pane:r,tab:l}=A(e,t);await (0,i.createSession)(l.sessionName,80,24,t);let o={root:r,activePaneId:r.id,updatedAt:new Date().toISOString()};return await O(o,a),o}),j=async(e,t)=>{let a=L(),n=N(),r=(0,i.workspaceSessionName)(e,a,n);return await (0,i.createSession)(r,80,24,t),{paneId:a,tab:{id:n,sessionName:r,name:"",order:0,...t?{cwd:t}:{}}}},x=async(e,t=[])=>{for(let e of t)try{await (0,i.killSession)(e)}catch{}},W=async(e,t,a,n,r,l)=>P(async()=>{let o=k(e),d=await C(o);if(!d)return null;let c=s(d.root).find(e=>e.id===t);if(!c)return null;let u="web-browser"===r,p=N(),w=(0,i.workspaceSessionName)(e,t,p);!u&&(await (0,i.createSession)(w,80,24,n),l&&await (0,i.sendKeys)(w,l));let y=c.tabs.length>0?Math.max(...c.tabs.map(e=>e.order))+1:0,f={id:p,sessionName:w,name:a?.trim()||(u?"Web Browser":""),order:y,...n?{cwd:n}:{},...r?{panelType:r}:{}};return c.tabs.push(f),c.activeTabId=p,d.updatedAt=new Date().toISOString(),await O(d,o),M(e,d.root),f}),E=async(e,t,a)=>{let n=await P(async()=>{let n=k(e),r=await C(n);if(!r)return null;let i=s(r.root).find(e=>e.id===t);if(!i)return null;let l=i.tabs.find(e=>e.id===a);return l?{sessionName:l.sessionName,panelType:l.panelType}:null});return!!n&&("web-browser"!==n.panelType&&await (0,i.killSession)(n.sessionName),P(async()=>{let n=k(e),r=await C(n);if(!r)return!1;let i=s(r.root).find(e=>e.id===t);if(!i)return!1;let l=i.tabs.findIndex(e=>e.id===a);return -1!==l&&(i.tabs.splice(l,1),i.activeTabId===a&&(i.activeTabId=i.tabs[0]?.id??null),0===i.tabs.length&&s(r.root).length>1&&b(r,t),i.tabs.forEach((e,t)=>{e.order=t}),r.updatedAt=new Date().toISOString(),await O(r,n),M(e,r.root),!0)}))},q=async(e,t,a,n)=>P(async()=>{let r=k(e),l=await C(r);if(!l)return!1;let o=s(l.root).find(e=>e.id===t);if(!o)return!1;let d=o.tabs.find(e=>e.id===a);return!!d&&(!!await (0,i.hasSession)(d.sessionName)||(await (0,i.createSession)(d.sessionName,80,24,d.cwd),n&&await (0,i.sendKeys)(d.sessionName,n),!0))}),z=e=>{let t=e.match(/^pt-(ws-.*?)-(pane-.*?)-(tab-.+)$/);return t?{wsId:t[1],paneId:t[2],tabId:t[3]}:null},B=async(e,t)=>{let a=z(e);a&&await P(async()=>{let n=k(a.wsId),r=await C(n);if(!r)return;let i=d(r.root).find(t=>t.sessionName===e);i&&(i.claudeSessionId=t,r.updatedAt=new Date().toISOString(),await O(r,n))})},J=async(e,t)=>{let a=z(e);a&&await P(async()=>{let n=k(a.wsId),r=await C(n);if(!r)return;let i=d(r.root).find(t=>t.sessionName===e);i&&i.claudeSummary!==t&&(i.claudeSummary=t,r.updatedAt=new Date().toISOString(),await O(r,n))})},K=async(e,t)=>{let a=z(e);a&&await P(async()=>{let n=k(a.wsId),r=await C(n);if(!r)return;let i=d(r.root).find(t=>t.sessionName===e);i&&i.lastUserMessage!==t&&(i.lastUserMessage=t,r.updatedAt=new Date().toISOString(),await O(r,n))})},G=async(e,t,a)=>{let n=z(e);n&&await P(async()=>{let r=k(n.wsId),i=await C(r);if(!i)return;let l=d(i.root).find(t=>t.sessionName===e);l&&(l.cliState!==t||l.dismissedAt!==a)&&(l.cliState=t,l.dismissedAt=a,i.updatedAt=new Date().toISOString(),await O(i,r))})},H=async(e,t)=>P(async()=>{let a=k(e),n=await C(a);if(!n)return null;let r=t(n);return r?(r.updatedAt=new Date().toISOString(),await O(r,a),M(e,r.root),r):null}),Q=async(e,t)=>H(e,e=>{if(void 0!==t.activePaneId){if(!c(e.root,t.activePaneId))return null;e.activePaneId=t.activePaneId}return t.ratioUpdate&&(e.root=h(e.root,t.ratioUpdate.path,t.ratioUpdate.ratio)),t.equalize&&(e.root=I(e.root)),e}),V=async(e,t,a)=>H(e,e=>{let n=c(e.root,t);if(!n)return null;if(void 0!==a.activeTabId){if(!n.tabs.some(e=>e.id===a.activeTabId))return null;n.activeTabId=a.activeTabId}return e}),X=async(e,t,a,n,r)=>{let l="web-browser"===r,o=L(),s=N(),d=(0,i.workspaceSessionName)(e,o,s);l||await (0,i.createSession)(d,80,24,n);let u={id:s,sessionName:d,name:l?"Web Browser":"",order:0,...n?{cwd:n}:{}};r&&(u.panelType=r);let p={type:"pane",id:o,tabs:[u],activeTabId:s},y=await H(e,e=>{let r=c(e.root,t);if(!r)return null;let i=v(e.root);if(n){let e=r.tabs.find(e=>e.id===r.activeTabId);e&&(e.cwd=n)}let l={type:"split",orientation:a,ratio:50,children:[{...r},p]};return e.root=w(e.root,t,l),i&&(e.root=I(e.root)),e.activePaneId=o,e});return y||l||await (0,i.killSession)(d).catch(()=>{}),y},Y=async(e,t)=>{let a=[],n=await P(async()=>{let n=k(e),r=await C(n);if(!r)return null;let i=c(r.root,t);if(!i||s(r.root).length<=1)return null;a=i.tabs.filter(e=>"web-browser"!==e.panelType).map(e=>e.sessionName);let l=v(r.root);return b(r,t),l&&(r.root=I(r.root)),r.updatedAt=new Date().toISOString(),await O(r,n),M(e,r.root),r});return await Promise.all(a.map(e=>(0,i.killSession)(e).catch(()=>{}))),n},Z=async(e,t,a)=>H(e,e=>{let n=c(e.root,t);if(!n)return null;let r=new Map(n.tabs.map(e=>[e.id,e])),i=a.map((e,t)=>{let a=r.get(e);return a?{...a,order:t}:null}).filter(e=>null!==e);return i.length!==n.tabs.length?null:(n.tabs=i,e)}),ee=async(e,t,a,n,r)=>H(e,e=>{let i=c(e.root,a),l=c(e.root,n);if(!i||!l)return null;let o=i.tabs.findIndex(e=>e.id===t);if(-1===o)return null;let[d]=i.tabs.splice(o,1);return i.activeTabId===t&&(i.activeTabId=i.tabs[0]?.id??null),i.tabs.forEach((e,t)=>{e.order=t}),l.tabs.splice(r,0,d),l.tabs.forEach((e,t)=>{e.order=t}),l.activeTabId=t,0===i.tabs.length&&s(e.root).length>1&&b(e,a),e.activePaneId=n,e}),et=async(t,a,n,r)=>{let i,l;if(void 0!==r.cwd||void 0!==r.title){let o=await (async()=>{let e=k(t),r=await C(e);return r?c(r.root,a)?.tabs.find(e=>e.id===n)?.sessionName??null:null})();if(o){let{getSessionCwd:t,getPaneCurrentCommand:a}=await e.A(322522),{formatTabTitle:n}=await e.A(245061);if(void 0!==r.cwd&&(i=await t(o)),void 0!==r.title){let[e,r]=await Promise.all([a(o),void 0!==i?Promise.resolve(i):t(o)]);e&&r&&(l=n(`${e}|${r}`))}}}return H(t,e=>{let t=c(e.root,a);if(!t)return null;let o=t.tabs.find(e=>e.id===n);if(!o)return null;let s=void 0!==r.title?l??r.title:void 0;return void 0!==r.name&&(o.name=r.name),void 0!==r.panelType&&(o.panelType=r.panelType),void 0!==s&&(o.title=s),void 0!==r.cwd&&(o.cwd=i??r.cwd),void 0!==r.lastCommand&&(o.lastCommand=r.lastCommand),void 0!==r.webUrl&&(o.webUrl=r.webUrl),e})};e.s(["addTabToPane",0,W,"closePaneInLayout",0,Y,"createDefaultLayout",0,$,"createPane",0,j,"crossCheckLayout",0,U,"deletePane",0,x,"getLayout",0,R,"moveTabBetweenPanes",0,ee,"parseSessionName",0,z,"patchLayout",0,Q,"patchPane",0,V,"patchTab",0,et,"readLayoutFile",0,C,"removeLayoutFile",0,D,"removeTabFromPane",0,E,"reorderTabsInPane",0,Z,"resolveLayoutDir",0,_,"resolveLayoutFile",0,k,"restartTabSession",0,q,"setLayoutReconciler",0,e=>{g.__ptLayoutReconciler=e},"splitPaneInLayout",0,X,"updateTabClaudeSessionId",0,B,"updateTabClaudeSummary",0,J,"updateTabCliStatus",0,G,"updateTabLastUserMessage",0,K,"writeLayoutFile",0,O],825265)}];
1
+ module.exports=[825265,804767,e=>{"use strict";var t=e.i(924868),a=e.i(814747),n=e.i(446786),i=e.i(44014),r=e.i(459015),l=e.i(666126),o=e.i(25146);let s=e=>"pane"===e.type?[e]:[...s(e.children[0]),...s(e.children[1])],d=e=>s(e).flatMap(e=>e.tabs),c=(e,t)=>"pane"===e.type?e.id===t?e:null:c(e.children[0],t)||c(e.children[1],t),u=e=>"pane"===e.type?e.id:u(e.children[0]),p=e=>"pane"===e.type?e.id:p(e.children[1]),w=(e,t,a)=>"pane"===e.type?e.id===t?a:e:{...e,children:[w(e.children[0],t,a),w(e.children[1],t,a)]},y=(e,t)=>{if("pane"===e.type)return null;let[a,n]=e.children;if("pane"===a.type&&a.id===t)return n;if("pane"===n.type&&n.id===t)return a;let i=y(a,t);if(i)return{...e,children:[i,n]};let r=y(n,t);return r?{...e,children:[a,r]}:null},f=(e,t)=>{if("pane"===e.type)return null;let[a,n]=e.children;return"pane"===a.type&&a.id===t?u(n):"pane"===n.type&&n.id===t?p(a):f(a,t)||f(n,t)},b=(e,t)=>{let a=f(e.root,t),n=y(e.root,t);n&&(e.root=n),e.activePaneId===t&&(e.activePaneId=a??s(e.root)[0]?.id??null)},m=(e,t,a)=>{if("split"!==e.type)return e;if(0===t.length)return{...e,ratio:a};let[n,...i]=t,r=[e.children[0],e.children[1]];return r[n]=m(e.children[n],i,a),{...e,children:r}},h=(e,t)=>"pane"===e.type||e.orientation!==t?1:h(e.children[0],t)+h(e.children[1],t),v=e=>{if("pane"===e.type)return!0;let t=h(e.children[0],e.orientation),a=h(e.children[1],e.orientation);return!(Math.abs(e.ratio-t/(t+a)*100)>1)&&v(e.children[0])&&v(e.children[1])},I=e=>{if("pane"===e.type)return e;let t=h(e.children[0],e.orientation),a=Math.round(t/(t+h(e.children[1],e.orientation))*1e4)/100;return{...e,ratio:a,children:[I(e.children[0]),I(e.children[1])]}};e.s(["collectAllTabs",0,d,"collectPanes",0,s,"equalizeNode",0,I,"findPane",0,c,"getFirstPaneId",0,u,"isEqualized",0,v,"removePaneWithFocus",0,b,"replacePane",0,w,"updateRatioAtPath",0,m],804767);let S=(0,o.createLogger)("layout"),T=a.default.join(n.default.homedir(),".purplemux"),g=globalThis;g.__ptLayoutLock||(g.__ptLayoutLock=Promise.resolve()),g.__ptLayoutContentCache||(g.__ptLayoutContentCache=new Map),void 0===g.__ptLayoutReconciler&&(g.__ptLayoutReconciler=null);let P=async e=>{let t,a=new Promise(e=>{t=e}),n=g.__ptLayoutLock;g.__ptLayoutLock=a,await n;try{return await e()}finally{t()}},L=()=>`pane-${(0,i.nanoid)(6)}`,N=()=>`tab-${(0,i.nanoid)(6)}`,_=e=>a.default.join(T,"workspaces",e),k=e=>a.default.join(_(e),"layout.json"),C=(e,t)=>{let a=L(),n=((e,t,a=0,n)=>{let i=N(),l={id:i,sessionName:(0,r.workspaceSessionName)(e,t,i),name:"",order:a};return n&&(l.cwd=n),l})(e,a,0,t);return{pane:{type:"pane",id:a,tabs:[n],activeTabId:n.id},tab:n}},A=async e=>{let a;try{a=await t.default.readFile(e,"utf-8")}catch{return null}try{return JSON.parse(a)}catch{S.warn(`${e} parse failed`);try{await t.default.copyFile(e,e.replace(/\.json$/,".json.bak"))}catch{}return null}},O=async(e,n)=>{let i,r=JSON.stringify({root:e.root,activePaneId:e.activePaneId}),o=g.__ptLayoutContentCache;if(o.get(n)===r)return;await t.default.mkdir(a.default.dirname(n),{recursive:!0});let s=n+".tmp";try{await t.default.writeFile(s,JSON.stringify(e,null,2),{mode:384}),await t.default.rename(s,n)}catch(e){throw await t.default.unlink(s).catch(()=>{}),e}o.set(n,r);let c=(i=n.match(/workspaces\/(ws-[^/]+)\//),i?.[1]??null);if(c){let t=g.__ptLayoutReconciler;if(t){let a=d(e.root).map(e=>e.id);t.reconcileWorkspaceTabs(c,a)}(0,l.broadcastSync)({type:"layout",workspaceId:c})}},D=async e=>{await t.default.rm(_(e),{recursive:!0,force:!0}),F(e);let a=g.__ptLayoutReconciler;a&&a.removeWorkspaceTabs(e),(0,l.broadcastSync)({type:"layout",workspaceId:e})},F=e=>{let t=k(e);g.__ptLayoutContentCache.delete(t)},M=(t,a)=>{let n=[...new Set(d(a).map(e=>e.cwd).filter(e=>!!e))];n.length>0&&e.A(981532).then(({updateWorkspaceDirectories:e})=>{e(t,n).catch(()=>{})}).catch(()=>{})},R=async(e,t,a,n)=>{let i=!1,l=new Set(t),o=s(e.root),d=new Set;for(let e of o)for(let t of e.tabs)if("web-browser"!==t.panelType&&(d.add(t.sessionName),!l.has(t.sessionName)&&"claude-code"===t.panelType)){let e=t.cwd||n;S.debug(`crossCheck: Claude tab session recreated: ${t.sessionName} (cwd: ${e})`),await (0,r.createSession)(t.sessionName,80,24,e),i=!0}let c=t.filter(e=>!d.has(e));if(c.length>0){i=!0;let e=o[0];if(e){let t=e.tabs.length>0?Math.max(...e.tabs.map(e=>e.order)):-1;for(let a of c)t++,e.tabs.push({id:N(),sessionName:a,name:"",order:t});!e.activeTabId&&e.tabs.length>0&&(e.activeTabId=e.tabs[0].id)}}if(i){e.updatedAt=new Date().toISOString();let t=s(e.root);e.activePaneId&&!t.some(t=>t.id===e.activePaneId)&&(e.activePaneId=t[0]?.id??null)}return i},U=async(e,t,a)=>{let{pane:n,tab:i}=C(e,t);return a?.panelType&&(i.panelType=a.panelType),await (0,r.createSession)(i.sessionName,80,24,t),{root:n,activePaneId:n.id,updatedAt:new Date().toISOString()}},$=async(e,t)=>P(async()=>{let a=k(e),n=await A(a);if(n)return n;let{pane:i,tab:l}=C(e,t);await (0,r.createSession)(l.sessionName,80,24,t);let o={root:i,activePaneId:i.id,updatedAt:new Date().toISOString()};return await O(o,a),o}),j=async(e,t)=>{let a=L(),n=N(),i=(0,r.workspaceSessionName)(e,a,n);return await (0,r.createSession)(i,80,24,t),{paneId:a,tab:{id:n,sessionName:i,name:"",order:0,...t?{cwd:t}:{}}}},x=async(e,t=[])=>{for(let e of t)try{await (0,r.killSession)(e)}catch{}},W=async(e,t,a,n,i,l)=>P(async()=>{let o=k(e),d=await A(o);if(!d)return null;let c=s(d.root).find(e=>e.id===t);if(!c)return null;let u="web-browser"===i,p=N(),w=(0,r.workspaceSessionName)(e,t,p);!u&&(await (0,r.createSession)(w,80,24,n),l&&await (0,r.sendKeys)(w,l));let y=c.tabs.length>0?Math.max(...c.tabs.map(e=>e.order))+1:0,f={id:p,sessionName:w,name:a?.trim()||(u?"Web Browser":""),order:y,...n?{cwd:n}:{},...i?{panelType:i}:{}};return c.tabs.push(f),c.activeTabId=p,d.updatedAt=new Date().toISOString(),await O(d,o),M(e,d.root),f}),E=async(e,t,a)=>{let n=await P(async()=>{let n=k(e),i=await A(n);if(!i)return null;let r=s(i.root).find(e=>e.id===t);if(!r)return null;let l=r.tabs.find(e=>e.id===a);return l?{sessionName:l.sessionName,panelType:l.panelType}:null});return!!n&&("web-browser"!==n.panelType&&await (0,r.killSession)(n.sessionName),P(async()=>{let n=k(e),i=await A(n);if(!i)return!1;let r=s(i.root).find(e=>e.id===t);if(!r)return!1;let l=r.tabs.findIndex(e=>e.id===a);return -1!==l&&(r.tabs.splice(l,1),r.activeTabId===a&&(r.activeTabId=r.tabs[0]?.id??null),0===r.tabs.length&&s(i.root).length>1&&b(i,t),r.tabs.forEach((e,t)=>{e.order=t}),i.updatedAt=new Date().toISOString(),await O(i,n),M(e,i.root),!0)}))},q=async(e,t,a,n)=>P(async()=>{let i=k(e),l=await A(i);if(!l)return!1;let o=s(l.root).find(e=>e.id===t);if(!o)return!1;let d=o.tabs.find(e=>e.id===a);return!!d&&(!!await (0,r.hasSession)(d.sessionName)||(await (0,r.createSession)(d.sessionName,80,24,d.cwd),n&&await (0,r.sendKeys)(d.sessionName,n),!0))}),z=e=>{let t=e.match(/^pt-(ws-.*?)-(pane-.*?)-(tab-.+)$/);return t?{wsId:t[1],paneId:t[2],tabId:t[3]}:null},B=async(e,t)=>{let a=z(e);a&&await P(async()=>{let n=k(a.wsId),i=await A(n);if(!i)return;let r=d(i.root).find(t=>t.sessionName===e);r&&(r.claudeSessionId=t,i.updatedAt=new Date().toISOString(),await O(i,n))})},J=async(e,t)=>{let a=z(e);a&&await P(async()=>{let n=k(a.wsId),i=await A(n);if(!i)return;let r=d(i.root).find(t=>t.sessionName===e);r&&r.claudeSummary!==t&&(r.claudeSummary=t,i.updatedAt=new Date().toISOString(),await O(i,n))})},K=async(e,t)=>{let a=z(e);a&&await P(async()=>{let n=k(a.wsId),i=await A(n);if(!i)return;let r=d(i.root).find(t=>t.sessionName===e);r&&r.lastUserMessage!==t&&(r.lastUserMessage=t,i.updatedAt=new Date().toISOString(),await O(i,n))})},G=async(e,t,a)=>{let n=z(e);n&&await P(async()=>{let i=k(n.wsId),r=await A(i);if(!r)return;let l=d(r.root).find(t=>t.sessionName===e);l&&(l.cliState!==t||l.dismissedAt!==a)&&(l.cliState=t,l.dismissedAt=a,r.updatedAt=new Date().toISOString(),await O(r,i))})},H=async(e,t)=>P(async()=>{let a=k(e),n=await A(a);if(!n)return null;let i=t(n);return i?(i.updatedAt=new Date().toISOString(),await O(i,a),M(e,i.root),i):null}),Q=async(e,t)=>H(e,e=>{if(void 0!==t.activePaneId){if(!c(e.root,t.activePaneId))return null;e.activePaneId=t.activePaneId}return t.ratioUpdate&&(e.root=m(e.root,t.ratioUpdate.path,t.ratioUpdate.ratio)),t.equalize&&(e.root=I(e.root)),e}),V=async(e,t,a)=>H(e,e=>{let n=c(e.root,t);if(!n)return null;if(void 0!==a.activeTabId){if(!n.tabs.some(e=>e.id===a.activeTabId))return null;n.activeTabId=a.activeTabId}return e}),X=async(e,t,a,n,i)=>{let l="web-browser"===i,o=L(),s=N(),d=(0,r.workspaceSessionName)(e,o,s);l||await (0,r.createSession)(d,80,24,n);let u={id:s,sessionName:d,name:l?"Web Browser":"",order:0,...n?{cwd:n}:{}};i&&(u.panelType=i);let p={type:"pane",id:o,tabs:[u],activeTabId:s},y=await H(e,e=>{let i=c(e.root,t);if(!i)return null;let r=v(e.root);if(n){let e=i.tabs.find(e=>e.id===i.activeTabId);e&&(e.cwd=n)}let l={type:"split",orientation:a,ratio:50,children:[{...i},p]};return e.root=w(e.root,t,l),r&&(e.root=I(e.root)),e.activePaneId=o,e});return y||l||await (0,r.killSession)(d).catch(()=>{}),y},Y=async(e,t)=>{let a=[],n=await P(async()=>{let n=k(e),i=await A(n);if(!i)return null;let r=c(i.root,t);if(!r||s(i.root).length<=1)return null;a=r.tabs.filter(e=>"web-browser"!==e.panelType).map(e=>e.sessionName);let l=v(i.root);return b(i,t),l&&(i.root=I(i.root)),i.updatedAt=new Date().toISOString(),await O(i,n),M(e,i.root),i});return await Promise.all(a.map(e=>(0,r.killSession)(e).catch(()=>{}))),n},Z=async(e,t,a)=>H(e,e=>{let n=c(e.root,t);if(!n)return null;let i=new Map(n.tabs.map(e=>[e.id,e])),r=a.map((e,t)=>{let a=i.get(e);return a?{...a,order:t}:null}).filter(e=>null!==e);return r.length!==n.tabs.length?null:(n.tabs=r,e)}),ee=async(e,t,a,n,i)=>H(e,e=>{let r=c(e.root,a),l=c(e.root,n);if(!r||!l)return null;let o=r.tabs.findIndex(e=>e.id===t);if(-1===o)return null;let[d]=r.tabs.splice(o,1);return r.activeTabId===t&&(r.activeTabId=r.tabs[0]?.id??null),r.tabs.forEach((e,t)=>{e.order=t}),l.tabs.splice(i,0,d),l.tabs.forEach((e,t)=>{e.order=t}),l.activeTabId=t,0===r.tabs.length&&s(e.root).length>1&&b(e,a),e.activePaneId=n,e}),et=async(t,a,n,i)=>{let r,l;if(void 0!==i.cwd||void 0!==i.title){let o=await (async()=>{let e=k(t),i=await A(e);return i?c(i.root,a)?.tabs.find(e=>e.id===n)?.sessionName??null:null})();if(o){let{getSessionCwd:t,getPaneCurrentCommand:a}=await e.A(322522),{formatTabTitle:n}=await e.A(245061);if(void 0!==i.cwd&&(r=await t(o)),void 0!==i.title){let[e,i]=await Promise.all([a(o),void 0!==r?Promise.resolve(r):t(o)]);e&&i&&(l=n(`${e}|${i}`))}}}return H(t,e=>{let t=c(e.root,a);if(!t)return null;let o=t.tabs.find(e=>e.id===n);if(!o)return null;let s=void 0!==i.title?l??i.title:void 0;return void 0!==i.name&&(o.name=i.name),void 0!==i.panelType&&(o.panelType=i.panelType),void 0!==s&&(o.title=s),void 0!==i.cwd&&(o.cwd=r??i.cwd),void 0!==i.lastCommand&&(o.lastCommand=i.lastCommand),void 0!==i.webUrl&&(o.webUrl=i.webUrl),void 0!==i.terminalRatio&&(o.terminalRatio=i.terminalRatio),void 0!==i.terminalCollapsed&&(o.terminalCollapsed=i.terminalCollapsed),e})};e.s(["addTabToPane",0,W,"closePaneInLayout",0,Y,"createDefaultLayout",0,U,"createPane",0,j,"crossCheckLayout",0,R,"deletePane",0,x,"getLayout",0,$,"moveTabBetweenPanes",0,ee,"parseSessionName",0,z,"patchLayout",0,Q,"patchPane",0,V,"patchTab",0,et,"readLayoutFile",0,A,"removeLayoutFile",0,D,"removeTabFromPane",0,E,"reorderTabsInPane",0,Z,"resolveLayoutDir",0,_,"resolveLayoutFile",0,k,"restartTabSession",0,q,"setLayoutReconciler",0,e=>{g.__ptLayoutReconciler=e},"splitPaneInLayout",0,X,"updateTabClaudeSessionId",0,B,"updateTabClaudeSummary",0,J,"updateTabCliStatus",0,G,"updateTabLastUserMessage",0,K,"writeLayoutFile",0,O],825265)}];
2
2
 
3
3
  //# sourceMappingURL=src_lib_layout-store_ts_0fanx7c._.js.map