purplemux 0.2.2 → 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 (551) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/build-manifest.json +88 -88
  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]__00yjayf._.js → [root-of-the-server]__121-6-e._.js} +2 -2
  29. package/.next/standalone/.next/server/chunks/[root-of-the-server]__12ksl6n._.js +2 -2
  30. package/.next/standalone/.next/server/chunks/{_0out7wm._.js → _0-mgr1c._.js} +1 -1
  31. package/.next/standalone/.next/server/chunks/_0.5a4bu._.js +3 -0
  32. package/.next/standalone/.next/server/chunks/{_134uyu_._.js → _03-duro._.js} +1 -1
  33. package/.next/standalone/.next/server/chunks/_05-8rnc._.js +3 -0
  34. package/.next/standalone/.next/server/chunks/{_0ap4fy.._.js → _07097f~._.js} +1 -1
  35. package/.next/standalone/.next/server/chunks/{_0st-_d~._.js → _0jzxge9._.js} +1 -1
  36. package/.next/standalone/.next/server/chunks/{_0uo_gs5._.js → _0ll-5~7._.js} +1 -1
  37. package/.next/standalone/.next/server/chunks/_0mhomq~._.js +3 -0
  38. package/.next/standalone/.next/server/chunks/{_0.hbe-v._.js → _0pk0hms._.js} +1 -1
  39. package/.next/standalone/.next/server/chunks/_0qm27ix._.js +3 -0
  40. package/.next/standalone/.next/server/chunks/{_0su2osz._.js → _0v81st0._.js} +1 -1
  41. package/.next/standalone/.next/server/chunks/_0vgpyhz._.js +3 -0
  42. package/.next/standalone/.next/server/chunks/{_1368r9s._.js → _0w0qjyh._.js} +1 -1
  43. package/.next/standalone/.next/server/chunks/_0wok5xu._.js +3 -0
  44. package/.next/standalone/.next/server/chunks/{_0tumyht._.js → _0wu6uxd._.js} +1 -1
  45. package/.next/standalone/.next/server/chunks/{_04dq3gt._.js → _0z7d6.z._.js} +1 -1
  46. package/.next/standalone/.next/server/chunks/{_0c63jma._.js → _0zf5mig._.js} +1 -1
  47. package/.next/standalone/.next/server/chunks/{_0mnwbyo._.js → _0~~9-pj._.js} +1 -1
  48. package/.next/standalone/.next/server/chunks/{src_lib_0vs5asg._.js → src_lib_0p.xsqi._.js} +1 -1
  49. package/.next/standalone/.next/server/chunks/src_lib_layout-store_ts_0fanx7c._.js +1 -1
  50. package/.next/standalone/.next/server/chunks/src_lib_workspace-store_ts_0vqt073._.js +2 -2
  51. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0da5cj~._.js +3 -0
  52. package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0hwcydd._.js → [root-of-the-server]__0grkevn._.js} +1 -1
  53. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0t9ru13._.js +3 -0
  54. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__12b2-y_._.js +3 -0
  55. package/.next/standalone/.next/server/chunks/ssr/_0-ug5tr._.js +3 -0
  56. package/.next/standalone/.next/server/chunks/ssr/{_00rrt71._.js → _016o9_-._.js} +1 -1
  57. package/.next/standalone/.next/server/chunks/ssr/{_0y5jzd3._.js → _020f2r.._.js} +1 -1
  58. package/.next/standalone/.next/server/chunks/ssr/{_0_c~3id._.js → _02jzd5g._.js} +2 -2
  59. package/.next/standalone/.next/server/chunks/ssr/_04iqb-o._.js +3 -0
  60. package/.next/standalone/.next/server/chunks/ssr/{_0sfctwm._.js → _04q3_kj._.js} +2 -2
  61. package/.next/standalone/.next/server/chunks/ssr/{_08h9ynz._.js → _058y~nz._.js} +2 -2
  62. package/.next/standalone/.next/server/chunks/ssr/{_0_soefg._.js → _0a_u5qm._.js} +2 -2
  63. package/.next/standalone/.next/server/chunks/ssr/{_00ehnd~._.js → _0c1yivm._.js} +2 -2
  64. package/.next/standalone/.next/server/chunks/ssr/{_0kno-5w._.js → _0d58w1~._.js} +2 -2
  65. package/.next/standalone/.next/server/chunks/ssr/{_0rxhzwm._.js → _0ftinmo._.js} +2 -2
  66. package/.next/standalone/.next/server/chunks/ssr/_0h4kenr._.js +1 -1
  67. package/.next/standalone/.next/server/chunks/ssr/_0nib_x8._.js +3 -0
  68. package/.next/standalone/.next/server/chunks/ssr/_0nuztht._.js +18 -0
  69. package/.next/standalone/.next/server/chunks/ssr/_0nvs1~o._.js +3 -0
  70. package/.next/standalone/.next/server/chunks/ssr/_0oca87b._.js +3 -0
  71. package/.next/standalone/.next/server/chunks/ssr/_0ovjjn5._.js +3 -0
  72. package/.next/standalone/.next/server/chunks/ssr/{_0lnui2f._.js → _0ozy~xe._.js} +2 -2
  73. package/.next/standalone/.next/server/chunks/ssr/_0pg-q18._.js +3 -0
  74. package/.next/standalone/.next/server/chunks/ssr/{_0svke5s._.js → _0pk4~_0._.js} +2 -2
  75. package/.next/standalone/.next/server/chunks/ssr/_0qt-m3l._.js +3 -0
  76. package/.next/standalone/.next/server/chunks/ssr/_0w.1ts8._.js +3 -0
  77. package/.next/standalone/.next/server/chunks/ssr/_0w1phzp._.js +3 -0
  78. package/.next/standalone/.next/server/chunks/ssr/_0w6jc9p._.js +3 -0
  79. package/.next/standalone/.next/server/chunks/ssr/_101yu0w._.js +18 -0
  80. package/.next/standalone/.next/server/chunks/ssr/_13c-b~p._.js +3 -0
  81. package/.next/standalone/.next/server/chunks/ssr/_13lrp9_._.js +3 -0
  82. package/.next/standalone/.next/server/chunks/ssr/{messages_046iw4z._.js → messages_02eoowy._.js} +1 -1
  83. package/.next/standalone/.next/server/chunks/ssr/{messages_0zr0cc7._.js → messages_0hmq5dp._.js} +1 -1
  84. package/.next/standalone/.next/server/chunks/ssr/messages_de_diff_json_[json]_cjs_0w6blyy._.js +1 -1
  85. package/.next/standalone/.next/server/chunks/ssr/messages_de_settings_json_[json]_cjs_0ksu4_w._.js +1 -1
  86. package/.next/standalone/.next/server/chunks/ssr/messages_de_sidebar_json_[json]_cjs_0loc-1-._.js +1 -1
  87. package/.next/standalone/.next/server/chunks/ssr/messages_de_workspace_json_[json]_cjs_0g7nkdq._.js +1 -1
  88. package/.next/standalone/.next/server/chunks/ssr/messages_en_diff_json_[json]_cjs_0z34_dc._.js +1 -1
  89. package/.next/standalone/.next/server/chunks/ssr/messages_en_settings_json_[json]_cjs_0qwl-zt._.js +1 -1
  90. package/.next/standalone/.next/server/chunks/ssr/messages_en_sidebar_json_[json]_cjs_0un0e3f._.js +1 -1
  91. package/.next/standalone/.next/server/chunks/ssr/messages_en_workspace_json_[json]_cjs_0m9rzyy._.js +1 -1
  92. package/.next/standalone/.next/server/chunks/ssr/messages_es_diff_json_[json]_cjs_0kheix4._.js +1 -1
  93. package/.next/standalone/.next/server/chunks/ssr/messages_es_settings_json_[json]_cjs_0ce_kv6._.js +1 -1
  94. package/.next/standalone/.next/server/chunks/ssr/messages_es_sidebar_json_[json]_cjs_080u46~._.js +1 -1
  95. package/.next/standalone/.next/server/chunks/ssr/messages_es_workspace_json_[json]_cjs_0xf0_50._.js +1 -1
  96. package/.next/standalone/.next/server/chunks/ssr/messages_fr_diff_json_[json]_cjs_11vxoy5._.js +1 -1
  97. package/.next/standalone/.next/server/chunks/ssr/messages_fr_settings_json_[json]_cjs_0h_6lba._.js +1 -1
  98. package/.next/standalone/.next/server/chunks/ssr/messages_fr_sidebar_json_[json]_cjs_05y8v8h._.js +1 -1
  99. package/.next/standalone/.next/server/chunks/ssr/messages_fr_workspace_json_[json]_cjs_0h88f-g._.js +1 -1
  100. package/.next/standalone/.next/server/chunks/ssr/messages_ja_diff_json_[json]_cjs_0t~9dro._.js +1 -1
  101. package/.next/standalone/.next/server/chunks/ssr/messages_ja_settings_json_[json]_cjs_0pg~fls._.js +1 -1
  102. package/.next/standalone/.next/server/chunks/ssr/messages_ja_sidebar_json_[json]_cjs_0i0x8w9._.js +1 -1
  103. package/.next/standalone/.next/server/chunks/ssr/messages_ja_workspace_json_[json]_cjs_03dlzmi._.js +1 -1
  104. package/.next/standalone/.next/server/chunks/ssr/messages_ko_diff_json_[json]_cjs_0cw7xj1._.js +1 -1
  105. package/.next/standalone/.next/server/chunks/ssr/messages_ko_settings_json_[json]_cjs_07xpfc8._.js +1 -1
  106. package/.next/standalone/.next/server/chunks/ssr/messages_ko_sidebar_json_[json]_cjs_0mql5dv._.js +1 -1
  107. package/.next/standalone/.next/server/chunks/ssr/messages_ko_workspace_json_[json]_cjs_0frxg.r._.js +1 -1
  108. package/.next/standalone/.next/server/chunks/ssr/messages_pt-BR_diff_json_[json]_cjs_0vc-p7n._.js +1 -1
  109. package/.next/standalone/.next/server/chunks/ssr/messages_pt-BR_settings_json_[json]_cjs_0frspzp._.js +1 -1
  110. package/.next/standalone/.next/server/chunks/ssr/messages_pt-BR_sidebar_json_[json]_cjs_07h4b1q._.js +1 -1
  111. package/.next/standalone/.next/server/chunks/ssr/messages_pt-BR_workspace_json_[json]_cjs_0lahru2._.js +1 -1
  112. package/.next/standalone/.next/server/chunks/ssr/messages_ru_diff_json_[json]_cjs_07na~n8._.js +1 -1
  113. package/.next/standalone/.next/server/chunks/ssr/messages_ru_settings_json_[json]_cjs_08ex00.._.js +1 -1
  114. package/.next/standalone/.next/server/chunks/ssr/messages_ru_sidebar_json_[json]_cjs_0aksrjo._.js +1 -1
  115. package/.next/standalone/.next/server/chunks/ssr/messages_ru_workspace_json_[json]_cjs_0wm5nhc._.js +1 -1
  116. package/.next/standalone/.next/server/chunks/ssr/messages_tr_diff_json_[json]_cjs_0a00gr_._.js +1 -1
  117. package/.next/standalone/.next/server/chunks/ssr/messages_tr_settings_json_[json]_cjs_0piu0da._.js +1 -1
  118. package/.next/standalone/.next/server/chunks/ssr/messages_tr_sidebar_json_[json]_cjs_0yj47nu._.js +1 -1
  119. package/.next/standalone/.next/server/chunks/ssr/messages_tr_workspace_json_[json]_cjs_0wygfyf._.js +1 -1
  120. package/.next/standalone/.next/server/chunks/ssr/messages_zh-CN_diff_json_[json]_cjs_0b01x_1._.js +1 -1
  121. package/.next/standalone/.next/server/chunks/ssr/messages_zh-CN_settings_json_[json]_cjs_0uazwgy._.js +1 -1
  122. package/.next/standalone/.next/server/chunks/ssr/messages_zh-CN_sidebar_json_[json]_cjs_0yzmolg._.js +1 -1
  123. package/.next/standalone/.next/server/chunks/ssr/messages_zh-CN_workspace_json_[json]_cjs_0h3v0-e._.js +1 -1
  124. package/.next/standalone/.next/server/chunks/ssr/messages_zh-TW_diff_json_[json]_cjs_088r89k._.js +1 -1
  125. package/.next/standalone/.next/server/chunks/ssr/messages_zh-TW_settings_json_[json]_cjs_09u0c5l._.js +1 -1
  126. package/.next/standalone/.next/server/chunks/ssr/messages_zh-TW_sidebar_json_[json]_cjs_0pnu~0h._.js +1 -1
  127. package/.next/standalone/.next/server/chunks/ssr/messages_zh-TW_workspace_json_[json]_cjs_0ymw5wz._.js +1 -1
  128. package/.next/standalone/.next/server/chunks/ssr/node_modules_02oar3h._.js +3 -0
  129. package/.next/standalone/.next/server/chunks/ssr/node_modules_0_2gaq0._.js +1 -1
  130. package/.next/standalone/.next/server/chunks/ssr/node_modules_0bbmd88._.js +3 -0
  131. package/.next/standalone/.next/server/chunks/ssr/node_modules_0ydhwnx._.js +1 -1
  132. package/.next/standalone/.next/server/chunks/ssr/node_modules_1294wzs._.js +1 -1
  133. package/.next/standalone/.next/server/chunks/ssr/{src_components_0rs9yzr._.js → src_components_0_aiven._.js} +1 -1
  134. package/.next/standalone/.next/server/chunks/ssr/{src_components_0cflin8._.js → src_components_0geizrr._.js} +1 -1
  135. package/.next/standalone/.next/server/chunks/ssr/{src_components_0g.s~e7._.js → src_components_11_1i~k._.js} +1 -1
  136. package/.next/standalone/.next/server/chunks/ssr/{src_components_0jrj_vu._.js → src_components_12mrirb._.js} +1 -1
  137. package/.next/standalone/.next/server/chunks/ssr/src_components_features_mobile_mobile-terminal-page_tsx_02chzch._.js +1 -1
  138. package/.next/standalone/.next/server/chunks/ssr/src_components_features_workspace_terminal-page_tsx_0wuq-jl._.js +1 -1
  139. package/.next/standalone/.next/server/chunks/ssr/src_components_ui_input_tsx_0pgha5u._.js +3 -0
  140. package/.next/standalone/.next/server/chunks/ssr/src_hooks_use-browser-title_ts_0bw6.cb._.js +1 -1
  141. package/.next/standalone/.next/server/chunks/ssr/src_hooks_use-workspace-store_ts_0h40e5c._.js +1 -1
  142. package/.next/standalone/.next/server/chunks/ssr/src_lib_workspace-store_ts_00x-rec._.js +1 -1
  143. package/.next/standalone/.next/server/middleware-build-manifest.js +88 -88
  144. package/.next/standalone/.next/server/pages/_app/build-manifest.json +7 -6
  145. package/.next/standalone/.next/server/pages/_app/client-build-manifest.json +1 -1
  146. package/.next/standalone/.next/server/pages/_app.js +5 -5
  147. package/.next/standalone/.next/server/pages/_app.js.nft.json +1 -1
  148. package/.next/standalone/.next/server/pages/_document.js +3 -3
  149. package/.next/standalone/.next/server/pages/_document.js.nft.json +1 -1
  150. package/.next/standalone/.next/server/pages/_error.js +4 -4
  151. package/.next/standalone/.next/server/pages/_error.js.nft.json +1 -1
  152. package/.next/standalone/.next/server/pages/api/cli/tabs/[tabId]/result.js +2 -2
  153. package/.next/standalone/.next/server/pages/api/cli/tabs/[tabId]/result.js.nft.json +1 -1
  154. package/.next/standalone/.next/server/pages/api/cli/tabs/[tabId]/send.js +2 -2
  155. package/.next/standalone/.next/server/pages/api/cli/tabs/[tabId]/send.js.nft.json +1 -1
  156. package/.next/standalone/.next/server/pages/api/cli/tabs/[tabId]/status.js +2 -2
  157. package/.next/standalone/.next/server/pages/api/cli/tabs/[tabId]/status.js.nft.json +1 -1
  158. package/.next/standalone/.next/server/pages/api/cli/tabs/[tabId].js +2 -2
  159. package/.next/standalone/.next/server/pages/api/cli/tabs/[tabId].js.nft.json +1 -1
  160. package/.next/standalone/.next/server/pages/api/cli/tabs.js +2 -2
  161. package/.next/standalone/.next/server/pages/api/cli/tabs.js.nft.json +1 -1
  162. package/.next/standalone/.next/server/pages/api/cli/workspaces.js +1 -1
  163. package/.next/standalone/.next/server/pages/api/cli/workspaces.js.nft.json +1 -1
  164. package/.next/standalone/.next/server/pages/api/git/sync/pages-manifest.json +3 -0
  165. package/.next/standalone/.next/server/pages/api/git/sync.js +5 -0
  166. package/.next/standalone/.next/server/pages/api/git/sync.js.map +5 -0
  167. package/.next/standalone/.next/server/pages/api/git/sync.js.nft.json +1 -0
  168. package/.next/standalone/.next/server/pages/api/layout/commit-diff/pages-manifest.json +3 -0
  169. package/.next/standalone/.next/server/pages/api/layout/commit-diff.js +5 -0
  170. package/.next/standalone/.next/server/pages/api/layout/commit-diff.js.map +5 -0
  171. package/.next/standalone/.next/server/pages/api/layout/commit-diff.js.nft.json +1 -0
  172. package/.next/standalone/.next/server/pages/api/layout/file-content/pages-manifest.json +3 -0
  173. package/.next/standalone/.next/server/pages/api/layout/file-content.js +5 -0
  174. package/.next/standalone/.next/server/pages/api/layout/file-content.js.map +5 -0
  175. package/.next/standalone/.next/server/pages/api/layout/file-content.js.nft.json +1 -0
  176. package/.next/standalone/.next/server/pages/api/layout/git-log/pages-manifest.json +3 -0
  177. package/.next/standalone/.next/server/pages/api/layout/git-log.js +5 -0
  178. package/.next/standalone/.next/server/pages/api/layout/git-log.js.map +5 -0
  179. package/.next/standalone/.next/server/pages/api/layout/git-log.js.nft.json +1 -0
  180. package/.next/standalone/.next/server/pages/api/layout/pane/[paneId]/tabs/[tabId]/move.js +2 -2
  181. package/.next/standalone/.next/server/pages/api/layout/pane/[paneId]/tabs/[tabId]/move.js.nft.json +1 -1
  182. package/.next/standalone/.next/server/pages/api/layout/pane/[paneId]/tabs/[tabId].js +3 -3
  183. package/.next/standalone/.next/server/pages/api/layout/pane/[paneId]/tabs/[tabId].js.nft.json +1 -1
  184. package/.next/standalone/.next/server/pages/api/layout/pane/[paneId]/tabs/order.js +2 -2
  185. package/.next/standalone/.next/server/pages/api/layout/pane/[paneId]/tabs/order.js.nft.json +1 -1
  186. package/.next/standalone/.next/server/pages/api/layout/pane/[paneId]/tabs.js +3 -3
  187. package/.next/standalone/.next/server/pages/api/layout/pane/[paneId]/tabs.js.nft.json +1 -1
  188. package/.next/standalone/.next/server/pages/api/layout/pane/[paneId].js +2 -2
  189. package/.next/standalone/.next/server/pages/api/layout/pane/[paneId].js.nft.json +1 -1
  190. package/.next/standalone/.next/server/pages/api/layout/pane.js +2 -2
  191. package/.next/standalone/.next/server/pages/api/layout/pane.js.nft.json +1 -1
  192. package/.next/standalone/.next/server/pages/api/layout.js +2 -2
  193. package/.next/standalone/.next/server/pages/api/layout.js.nft.json +1 -1
  194. package/.next/standalone/.next/server/pages/api/message-history.js +1 -1
  195. package/.next/standalone/.next/server/pages/api/message-history.js.nft.json +1 -1
  196. package/.next/standalone/.next/server/pages/api/push/vapid-key.js +1 -1
  197. package/.next/standalone/.next/server/pages/api/push/vapid-key.js.nft.json +1 -1
  198. package/.next/standalone/.next/server/pages/api/stats/daily-report/cache.js +1 -1
  199. package/.next/standalone/.next/server/pages/api/stats/daily-report/cache.js.nft.json +1 -1
  200. package/.next/standalone/.next/server/pages/api/stats/daily-report/generate.js +1 -1
  201. package/.next/standalone/.next/server/pages/api/stats/daily-report/generate.js.nft.json +1 -1
  202. package/.next/standalone/.next/server/pages/api/stats/daily-report/list.js +2 -2
  203. package/.next/standalone/.next/server/pages/api/stats/daily-report/list.js.nft.json +1 -1
  204. package/.next/standalone/.next/server/pages/api/stats/projects.js +2 -2
  205. package/.next/standalone/.next/server/pages/api/stats/projects.js.nft.json +1 -1
  206. package/.next/standalone/.next/server/pages/api/stats/sessions.js +2 -2
  207. package/.next/standalone/.next/server/pages/api/stats/sessions.js.nft.json +1 -1
  208. package/.next/standalone/.next/server/pages/api/stats/uptime.js +2 -2
  209. package/.next/standalone/.next/server/pages/api/stats/uptime.js.nft.json +1 -1
  210. package/.next/standalone/.next/server/pages/api/status/hook.js +3 -3
  211. package/.next/standalone/.next/server/pages/api/status/hook.js.nft.json +1 -1
  212. package/.next/standalone/.next/server/pages/api/status/statusline.js +5 -5
  213. package/.next/standalone/.next/server/pages/api/status/statusline.js.nft.json +1 -1
  214. package/.next/standalone/.next/server/pages/api/tmux/permission-options.js +1 -1
  215. package/.next/standalone/.next/server/pages/api/tmux/permission-options.js.nft.json +1 -1
  216. package/.next/standalone/.next/server/pages/api/tmux/recover-unknown.js +5 -5
  217. package/.next/standalone/.next/server/pages/api/tmux/recover-unknown.js.nft.json +1 -1
  218. package/.next/standalone/.next/server/pages/api/tmux/reset.js +3 -3
  219. package/.next/standalone/.next/server/pages/api/tmux/reset.js.nft.json +1 -1
  220. package/.next/standalone/.next/server/pages/api/workspace/[workspaceId].js +2 -2
  221. package/.next/standalone/.next/server/pages/api/workspace/[workspaceId].js.nft.json +1 -1
  222. package/.next/standalone/.next/server/pages/api/workspace/active.js +2 -2
  223. package/.next/standalone/.next/server/pages/api/workspace/active.js.nft.json +1 -1
  224. package/.next/standalone/.next/server/pages/api/workspace/group/[groupId]/pages-manifest.json +3 -0
  225. package/.next/standalone/.next/server/pages/api/workspace/group/[groupId].js +8 -0
  226. package/.next/standalone/.next/server/pages/api/workspace/group/[groupId].js.map +5 -0
  227. package/.next/standalone/.next/server/pages/api/workspace/group/[groupId].js.nft.json +1 -0
  228. package/.next/standalone/.next/server/pages/api/workspace/group/pages-manifest.json +3 -0
  229. package/.next/standalone/.next/server/pages/api/workspace/group/reorder/pages-manifest.json +3 -0
  230. package/.next/standalone/.next/server/pages/api/workspace/group/reorder.js +8 -0
  231. package/.next/standalone/.next/server/pages/api/workspace/group/reorder.js.map +5 -0
  232. package/.next/standalone/.next/server/pages/api/workspace/group/reorder.js.nft.json +1 -0
  233. package/.next/standalone/.next/server/pages/api/workspace/group.js +8 -0
  234. package/.next/standalone/.next/server/pages/api/workspace/group.js.map +5 -0
  235. package/.next/standalone/.next/server/pages/api/workspace/group.js.nft.json +1 -0
  236. package/.next/standalone/.next/server/pages/api/workspace/reorder.js +2 -2
  237. package/.next/standalone/.next/server/pages/api/workspace/reorder.js.nft.json +1 -1
  238. package/.next/standalone/.next/server/pages/api/workspace/validate.js +2 -2
  239. package/.next/standalone/.next/server/pages/api/workspace/validate.js.nft.json +1 -1
  240. package/.next/standalone/.next/server/pages/api/workspace.js +4 -4
  241. package/.next/standalone/.next/server/pages/api/workspace.js.nft.json +1 -1
  242. package/.next/standalone/.next/server/pages/de/404.html +1 -1
  243. package/.next/standalone/.next/server/pages/de/500.html +1 -1
  244. package/.next/standalone/.next/server/pages/en/404.html +1 -1
  245. package/.next/standalone/.next/server/pages/en/500.html +1 -1
  246. package/.next/standalone/.next/server/pages/es/404.html +1 -1
  247. package/.next/standalone/.next/server/pages/es/500.html +1 -1
  248. package/.next/standalone/.next/server/pages/fr/404.html +1 -1
  249. package/.next/standalone/.next/server/pages/fr/500.html +1 -1
  250. package/.next/standalone/.next/server/pages/index/build-manifest.json +17 -17
  251. package/.next/standalone/.next/server/pages/index/client-build-manifest.json +1 -1
  252. package/.next/standalone/.next/server/pages/index/react-loadable-manifest.json +4 -4
  253. package/.next/standalone/.next/server/pages/index.js +16 -16
  254. package/.next/standalone/.next/server/pages/index.js.nft.json +1 -1
  255. package/.next/standalone/.next/server/pages/ja/404.html +1 -1
  256. package/.next/standalone/.next/server/pages/ja/500.html +1 -1
  257. package/.next/standalone/.next/server/pages/ko/404.html +1 -1
  258. package/.next/standalone/.next/server/pages/ko/500.html +1 -1
  259. package/.next/standalone/.next/server/pages/login/build-manifest.json +9 -10
  260. package/.next/standalone/.next/server/pages/login/client-build-manifest.json +1 -1
  261. package/.next/standalone/.next/server/pages/login.js +10 -10
  262. package/.next/standalone/.next/server/pages/login.js.nft.json +1 -1
  263. package/.next/standalone/.next/server/pages/pt-BR/404.html +1 -1
  264. package/.next/standalone/.next/server/pages/pt-BR/500.html +1 -1
  265. package/.next/standalone/.next/server/pages/reports/build-manifest.json +17 -17
  266. package/.next/standalone/.next/server/pages/reports/client-build-manifest.json +1 -1
  267. package/.next/standalone/.next/server/pages/reports.js +16 -16
  268. package/.next/standalone/.next/server/pages/reports.js.nft.json +1 -1
  269. package/.next/standalone/.next/server/pages/reset.js +5 -5
  270. package/.next/standalone/.next/server/pages/reset.js.nft.json +1 -1
  271. package/.next/standalone/.next/server/pages/ru/404.html +1 -1
  272. package/.next/standalone/.next/server/pages/ru/500.html +1 -1
  273. package/.next/standalone/.next/server/pages/stats/build-manifest.json +16 -16
  274. package/.next/standalone/.next/server/pages/stats/client-build-manifest.json +1 -1
  275. package/.next/standalone/.next/server/pages/stats.js +17 -17
  276. package/.next/standalone/.next/server/pages/stats.js.nft.json +1 -1
  277. package/.next/standalone/.next/server/pages/tools-required/build-manifest.json +3 -3
  278. package/.next/standalone/.next/server/pages/tools-required/client-build-manifest.json +1 -1
  279. package/.next/standalone/.next/server/pages/tools-required.js +6 -6
  280. package/.next/standalone/.next/server/pages/tools-required.js.nft.json +1 -1
  281. package/.next/standalone/.next/server/pages/tr/404.html +1 -1
  282. package/.next/standalone/.next/server/pages/tr/500.html +1 -1
  283. package/.next/standalone/.next/server/pages/webview/build-manifest.json +16 -16
  284. package/.next/standalone/.next/server/pages/webview/client-build-manifest.json +1 -1
  285. package/.next/standalone/.next/server/pages/webview.js +18 -18
  286. package/.next/standalone/.next/server/pages/webview.js.nft.json +1 -1
  287. package/.next/standalone/.next/server/pages/zh-CN/404.html +1 -1
  288. package/.next/standalone/.next/server/pages/zh-CN/500.html +1 -1
  289. package/.next/standalone/.next/server/pages/zh-TW/404.html +1 -1
  290. package/.next/standalone/.next/server/pages/zh-TW/500.html +1 -1
  291. package/.next/standalone/.next/server/pages-manifest.json +7 -0
  292. package/.next/standalone/.next/static/{5mb_D_gy6E3wsT_BhuXDS → X7BRO7ORR4bKFt1LXzGU8}/_buildManifest.js +13 -6
  293. package/.next/standalone/.next/static/chunks/0-7en.d6a3jki.js +1 -0
  294. package/.next/standalone/.next/static/chunks/{0qr~rkd5sq-yp.js → 0-p.9vdmq-_co.js} +7 -6
  295. package/.next/standalone/.next/static/chunks/0-pm5wxsyxs3e.js +1 -0
  296. package/.next/standalone/.next/static/chunks/00ljvc.i_9p~6.js +1 -0
  297. package/.next/standalone/.next/static/chunks/01raz3nv-e~~d.js +1 -0
  298. package/.next/standalone/.next/static/chunks/01ul8lmr04ls3.js +1 -0
  299. package/.next/standalone/.next/static/chunks/024gkwka6p59k.js +1 -0
  300. package/.next/standalone/.next/static/chunks/{0.ecwkadp7-hq.js → 034_utxy1sujb.js} +1 -1
  301. package/.next/standalone/.next/static/chunks/038h8wl_~fi3u.js +1 -0
  302. package/.next/standalone/.next/static/chunks/038s7u_er9zkt.js +1 -0
  303. package/.next/standalone/.next/static/chunks/03ljx9csfmrpn.js +1 -0
  304. package/.next/standalone/.next/static/chunks/03sj62c3p8g11.js +1 -0
  305. package/.next/standalone/.next/static/chunks/{17l496oycdhjx.js → 03vck__37a5cl.js} +1 -1
  306. package/.next/standalone/.next/static/chunks/05b7zy0n0vhms.js +1 -0
  307. package/.next/standalone/.next/static/chunks/05kshd9vdrl4o.js +1 -0
  308. package/.next/standalone/.next/static/chunks/{0w_03xk_xkc5a.js → 05kyduw8swd_h.js} +1 -1
  309. package/.next/standalone/.next/static/chunks/05w~qu2zpvh2f.js +1 -0
  310. package/.next/standalone/.next/static/chunks/05zne4hn1v65k.js +24 -0
  311. package/.next/standalone/.next/static/chunks/06vobum5720oa.js +1 -0
  312. package/.next/standalone/.next/static/chunks/06vxx-4w.uvj0.js +23 -0
  313. package/.next/standalone/.next/static/chunks/{0fotmrplo6yc7.js → 07.5h~7~q9~1e.js} +1 -1
  314. package/.next/standalone/.next/static/chunks/071hdd91oy~.7.js +1 -0
  315. package/.next/standalone/.next/static/chunks/08e5.t4gotxaw.js +1 -0
  316. package/.next/standalone/.next/static/chunks/{0v6__.cfcitpl.js → 08qhrobub25u0.js} +1 -1
  317. package/.next/standalone/.next/static/chunks/08ttt2~ok56v6.js +1 -0
  318. package/.next/standalone/.next/static/chunks/{11wdicoufd516.js → 094_-.5.ue3p4.js} +1 -1
  319. package/.next/standalone/.next/static/chunks/09qd4fo1rz3it.js +1 -0
  320. package/.next/standalone/.next/static/chunks/09sf~1tyznv2b.js +1 -0
  321. package/.next/standalone/.next/static/chunks/09x4be2pfe6z0.js +1 -0
  322. package/.next/standalone/.next/static/chunks/0a7eicps6hbl6.js +1 -0
  323. package/.next/standalone/.next/static/chunks/{0i2uqmry6cyl_.js → 0c2_tqkbyti3h.js} +1 -1
  324. package/.next/standalone/.next/static/chunks/0di4o-khzv2gt.js +1 -0
  325. package/.next/standalone/.next/static/chunks/0e20ujygcf3hc.js +1 -0
  326. package/.next/standalone/.next/static/chunks/0e5t3kx~_brfk.js +1 -0
  327. package/.next/standalone/.next/static/chunks/0ebjicjua7yl-.js +1 -0
  328. package/.next/standalone/.next/static/chunks/0evu-825nnqef.js +1 -0
  329. package/.next/standalone/.next/static/chunks/0f.5lthmbt~yc.js +1 -0
  330. package/.next/standalone/.next/static/chunks/0gr4lznv-6qml.js +1 -0
  331. package/.next/standalone/.next/static/chunks/0hl3ccityypgx.js +1 -0
  332. package/.next/standalone/.next/static/chunks/0hzis~e79cnwi.js +1 -0
  333. package/.next/standalone/.next/static/chunks/0j.sfmmqj2xel.js +23 -0
  334. package/.next/standalone/.next/static/chunks/0jkvb4hgqlgxk.js +1 -0
  335. package/.next/standalone/.next/static/chunks/0k2_zze3o98ow.js +1 -0
  336. package/.next/standalone/.next/static/chunks/0kaufevqdhsld.js +1 -0
  337. package/.next/standalone/.next/static/chunks/0mvvym~9uf429.js +1 -0
  338. package/.next/standalone/.next/static/chunks/0n2k1al4sr_qq.css +1 -0
  339. package/.next/standalone/.next/static/chunks/0n4fv8.loh_0x.js +1 -0
  340. package/.next/standalone/.next/static/chunks/0nn618je7_7ec.js +16 -0
  341. package/.next/standalone/.next/static/chunks/{0pb15t~lqcp4y.js → 0oh5xnzizgxt1.js} +1 -1
  342. package/.next/standalone/.next/static/chunks/0po8l-8pns0vb.js +1 -0
  343. package/.next/standalone/.next/static/chunks/0pv9~yath4mjh.js +1 -0
  344. package/.next/standalone/.next/static/chunks/0q0yh17_ncipj.js +1 -0
  345. package/.next/standalone/.next/static/chunks/0q9nn4yuva4jl.js +1 -0
  346. package/.next/standalone/.next/static/chunks/0qkrdmhiv-0d3.js +1 -0
  347. package/.next/standalone/.next/static/chunks/{14xlpbx6dj_4i.js → 0r9z55-r31en8.js} +1 -1
  348. package/.next/standalone/.next/static/chunks/{0efkrks2gm27v.js → 0ra09kjja5rf..js} +1 -1
  349. package/.next/standalone/.next/static/chunks/0reai1zdu.khx.js +1 -0
  350. package/.next/standalone/.next/static/chunks/0sc7tkg1gojr..js +1 -0
  351. package/.next/standalone/.next/static/chunks/0szl_dovu0hgw.js +1 -0
  352. package/.next/standalone/.next/static/chunks/{0axhnd2vw3m5e.js → 0t-o-jwf0~-b5.js} +1 -1
  353. package/.next/standalone/.next/static/chunks/{0ml5~2ty-rbv_.js → 0t5w4x7owhfbe.js} +1 -1
  354. package/.next/standalone/.next/static/chunks/{02mfn213kze9c.js → 0te1jnz5.rt.r.js} +3 -3
  355. package/.next/standalone/.next/static/chunks/0uhkmh73bi.8w.js +1 -0
  356. package/.next/standalone/.next/static/chunks/0v6zafwjb5kk6.js +1 -0
  357. package/.next/standalone/.next/static/chunks/0vvqh.pfm9jum.js +1 -0
  358. package/.next/standalone/.next/static/chunks/0w6_q_4rzxy6l.js +1 -0
  359. package/.next/standalone/.next/static/chunks/0wjrfyntnywn5.js +1 -0
  360. package/.next/standalone/.next/static/chunks/0wvu-lowt9uem.js +1 -0
  361. package/.next/standalone/.next/static/chunks/0x.dxrfqc.ix9.js +16 -0
  362. package/.next/standalone/.next/static/chunks/0xvbx6ob2wnco.js +1 -0
  363. package/.next/standalone/.next/static/chunks/0yd3l8p2m9-c_.js +1 -0
  364. package/.next/standalone/.next/static/chunks/0ynitrrzdxcnh.js +15 -0
  365. package/.next/standalone/.next/static/chunks/{0se1ra8f1bor~.js → 0z_~g~mb.kjs1.js} +1 -1
  366. package/.next/standalone/.next/static/chunks/0~nexgc77r_hk.js +23 -0
  367. package/.next/standalone/.next/static/chunks/{0afll97o4hu39.js → 0~ts_4hi7.u_0.js} +1 -1
  368. package/.next/standalone/.next/static/chunks/105sb_yg7fcpu.js +1 -0
  369. package/.next/standalone/.next/static/chunks/{0a0wcelktujjt.js → 119t_hwpxj_ko.js} +1 -1
  370. package/.next/standalone/.next/static/chunks/{128d.rbx4e4rt.js → 121i8u8byuotx.js} +1 -1
  371. package/.next/standalone/.next/static/chunks/13_l03e3sab-g.js +1 -0
  372. package/.next/standalone/.next/static/chunks/13~.y-z7wud.h.js +1 -0
  373. package/.next/standalone/.next/static/chunks/140j4evqxtxmn.js +1 -0
  374. package/.next/standalone/.next/static/chunks/142km8a40ar5o.js +1 -0
  375. package/.next/standalone/.next/static/chunks/149sb_-h03mxq.js +1 -0
  376. package/.next/standalone/.next/static/chunks/156~ejmpjxu8e.js +1 -0
  377. package/.next/standalone/.next/static/chunks/169ui~u~dpalg.js +1 -0
  378. package/.next/standalone/.next/static/chunks/16bag6z7n~ffw.js +1 -0
  379. package/.next/standalone/.next/static/chunks/171_ek.xwzobw.js +1 -0
  380. package/.next/standalone/.next/static/chunks/179zldqdb4pm2.js +1 -0
  381. package/.next/standalone/.next/static/chunks/{turbopack-0hwi_g-tegs_u.js → turbopack-0d-xk62f1t05v.js} +1 -1
  382. package/.next/standalone/.next/static/chunks/{turbopack-11tk4snp~dxd4.js → turbopack-0nn9kx.dkgwqs.js} +1 -1
  383. package/.next/standalone/.next/static/chunks/turbopack-0rb3q18bhb2hu.js +1 -0
  384. package/.next/standalone/.next/static/chunks/turbopack-0zcblahe.hdqd.js +1 -0
  385. package/.next/standalone/.next/static/chunks/{turbopack-17.piokhhz77b.js → turbopack-0~wmco6ifn20m.js} +1 -1
  386. package/.next/standalone/.next/static/chunks/{turbopack-0sisjg~-koq5w.js → turbopack-1469mxaruw82d.js} +1 -1
  387. package/.next/standalone/.next/static/chunks/{turbopack-066o21-32lo7n.js → turbopack-15bv~a4hbvh29.js} +1 -1
  388. package/.next/standalone/messages/de/diff.json +26 -1
  389. package/.next/standalone/messages/de/settings.json +3 -1
  390. package/.next/standalone/messages/de/sidebar.json +10 -1
  391. package/.next/standalone/messages/de/workspace.json +2 -0
  392. package/.next/standalone/messages/en/diff.json +26 -1
  393. package/.next/standalone/messages/en/settings.json +3 -1
  394. package/.next/standalone/messages/en/sidebar.json +10 -1
  395. package/.next/standalone/messages/en/workspace.json +2 -0
  396. package/.next/standalone/messages/es/diff.json +26 -1
  397. package/.next/standalone/messages/es/settings.json +3 -1
  398. package/.next/standalone/messages/es/sidebar.json +10 -1
  399. package/.next/standalone/messages/es/workspace.json +2 -0
  400. package/.next/standalone/messages/fr/diff.json +26 -1
  401. package/.next/standalone/messages/fr/settings.json +3 -1
  402. package/.next/standalone/messages/fr/sidebar.json +10 -1
  403. package/.next/standalone/messages/fr/workspace.json +2 -0
  404. package/.next/standalone/messages/ja/diff.json +26 -1
  405. package/.next/standalone/messages/ja/settings.json +3 -1
  406. package/.next/standalone/messages/ja/sidebar.json +10 -1
  407. package/.next/standalone/messages/ja/workspace.json +2 -0
  408. package/.next/standalone/messages/ko/diff.json +26 -1
  409. package/.next/standalone/messages/ko/settings.json +3 -1
  410. package/.next/standalone/messages/ko/sidebar.json +10 -1
  411. package/.next/standalone/messages/ko/workspace.json +2 -0
  412. package/.next/standalone/messages/pt-BR/diff.json +26 -1
  413. package/.next/standalone/messages/pt-BR/settings.json +3 -1
  414. package/.next/standalone/messages/pt-BR/sidebar.json +10 -1
  415. package/.next/standalone/messages/pt-BR/workspace.json +2 -0
  416. package/.next/standalone/messages/ru/diff.json +26 -1
  417. package/.next/standalone/messages/ru/settings.json +3 -1
  418. package/.next/standalone/messages/ru/sidebar.json +10 -1
  419. package/.next/standalone/messages/ru/workspace.json +2 -0
  420. package/.next/standalone/messages/tr/diff.json +26 -1
  421. package/.next/standalone/messages/tr/settings.json +3 -1
  422. package/.next/standalone/messages/tr/sidebar.json +10 -1
  423. package/.next/standalone/messages/tr/workspace.json +2 -0
  424. package/.next/standalone/messages/zh-CN/diff.json +26 -1
  425. package/.next/standalone/messages/zh-CN/settings.json +3 -1
  426. package/.next/standalone/messages/zh-CN/sidebar.json +10 -1
  427. package/.next/standalone/messages/zh-CN/workspace.json +2 -0
  428. package/.next/standalone/messages/zh-TW/diff.json +26 -1
  429. package/.next/standalone/messages/zh-TW/settings.json +3 -1
  430. package/.next/standalone/messages/zh-TW/sidebar.json +10 -1
  431. package/.next/standalone/messages/zh-TW/workspace.json +2 -0
  432. package/.next/standalone/package.json +1 -1
  433. package/.next/standalone/server.js +1 -1
  434. package/.next/standalone/src/pages/api/layout/commit-diff.ts +94 -0
  435. package/.next/standalone/src/pages/api/layout/cwd.ts +38 -0
  436. package/.next/standalone/src/pages/api/layout/diff.ts +196 -0
  437. package/.next/standalone/src/pages/api/layout/file-content.ts +130 -0
  438. package/.next/standalone/src/pages/api/layout/git-log.ts +55 -0
  439. package/.next/standalone/src/pages/api/layout/index.ts +38 -0
  440. package/.next/standalone/src/pages/api/layout/pane/[paneId]/index.ts +38 -0
  441. package/.next/standalone/src/pages/api/layout/pane/[paneId]/tabs/[tabId]/index.ts +94 -0
  442. package/.next/standalone/src/pages/api/layout/pane/[paneId]/tabs/[tabId]/move.ts +31 -0
  443. package/.next/standalone/src/pages/api/layout/pane/[paneId]/tabs/index.ts +66 -0
  444. package/.next/standalone/src/pages/api/layout/pane/[paneId]/tabs/order.ts +30 -0
  445. package/.next/standalone/src/pages/api/layout/pane/index.ts +38 -0
  446. package/dist/server.js +59 -7
  447. package/package.json +1 -1
  448. package/.next/standalone/.next/server/chunks/[root-of-the-server]__0n61.a8._.js +0 -30
  449. package/.next/standalone/.next/server/chunks/_04pfden._.js +0 -3
  450. package/.next/standalone/.next/server/chunks/_09vws3v._.js +0 -3
  451. package/.next/standalone/.next/server/chunks/_0e8e4zn._.js +0 -3
  452. package/.next/standalone/.next/server/chunks/_0isokfh._.js +0 -3
  453. package/.next/standalone/.next/server/chunks/_0j2u-od._.js +0 -3
  454. package/.next/standalone/.next/server/chunks/_0t8j4qd._.js +0 -3
  455. package/.next/standalone/.next/server/chunks/_0xd1ivw._.js +0 -3
  456. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0c0bz7t._.js +0 -3
  457. package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0nkl4wz._.js +0 -3
  458. package/.next/standalone/.next/server/chunks/ssr/_0-67bvb._.js +0 -3
  459. package/.next/standalone/.next/server/chunks/ssr/_02nf4d7._.js +0 -3
  460. package/.next/standalone/.next/server/chunks/ssr/_05dcjwi._.js +0 -3
  461. package/.next/standalone/.next/server/chunks/ssr/_06yggfn._.js +0 -3
  462. package/.next/standalone/.next/server/chunks/ssr/_0al4.z9._.js +0 -3
  463. package/.next/standalone/.next/server/chunks/ssr/_0dg4_bi._.js +0 -3
  464. package/.next/standalone/.next/server/chunks/ssr/_0f8k39w._.js +0 -14
  465. package/.next/standalone/.next/server/chunks/ssr/_0gp1meg._.js +0 -3
  466. package/.next/standalone/.next/server/chunks/ssr/_0hqzsa8._.js +0 -3
  467. package/.next/standalone/.next/server/chunks/ssr/_0nkeoiw._.js +0 -3
  468. package/.next/standalone/.next/server/chunks/ssr/_0ob2rr-._.js +0 -3
  469. package/.next/standalone/.next/server/chunks/ssr/_0ulmx3c._.js +0 -3
  470. package/.next/standalone/.next/server/chunks/ssr/_0wlh.pc._.js +0 -3
  471. package/.next/standalone/.next/server/chunks/ssr/_0y31tie._.js +0 -14
  472. package/.next/standalone/.next/server/chunks/ssr/_0~.theb._.js +0 -3
  473. package/.next/standalone/.next/server/chunks/ssr/_11rnj4l._.js +0 -3
  474. package/.next/standalone/.next/server/chunks/ssr/_124p60s._.js +0 -3
  475. package/.next/standalone/.next/server/chunks/ssr/node_modules_@base-ui_react_esm_03v8q-a._.js +0 -3
  476. package/.next/standalone/.next/server/chunks/ssr/node_modules_@base-ui_react_esm_0wddb~n._.js +0 -3
  477. package/.next/standalone/.next/server/chunks/ssr/src_lib_message-namespaces_ts_0wjpvu5._.js +0 -3
  478. package/.next/standalone/.next/static/chunks/0-8-cf3vuob~..js +0 -1
  479. package/.next/standalone/.next/static/chunks/0-97ruc25d2lz.js +0 -1
  480. package/.next/standalone/.next/static/chunks/0-ku865ak6iur.js +0 -1
  481. package/.next/standalone/.next/static/chunks/00g7isu_5s43..js +0 -1
  482. package/.next/standalone/.next/static/chunks/00nx1s6rpu537.js +0 -1
  483. package/.next/standalone/.next/static/chunks/00s-0sui~_24w.js +0 -1
  484. package/.next/standalone/.next/static/chunks/01-fb9rb-21.a.js +0 -1
  485. package/.next/standalone/.next/static/chunks/02dumv8n.ewiw.js +0 -1
  486. package/.next/standalone/.next/static/chunks/02r-a1_lz7fuk.js +0 -1
  487. package/.next/standalone/.next/static/chunks/03eaekq6omt65.js +0 -1
  488. package/.next/standalone/.next/static/chunks/04~p~.qz9diil.js +0 -1
  489. package/.next/standalone/.next/static/chunks/05_e09pgcymkh.js +0 -1
  490. package/.next/standalone/.next/static/chunks/05y90.zbqijkv.js +0 -1
  491. package/.next/standalone/.next/static/chunks/07-xm--o034du.js +0 -1
  492. package/.next/standalone/.next/static/chunks/072ccw0gkueqq.js +0 -1
  493. package/.next/standalone/.next/static/chunks/07i6~xrmgspp8.js +0 -1
  494. package/.next/standalone/.next/static/chunks/07rq~qv9ldwo~.js +0 -1
  495. package/.next/standalone/.next/static/chunks/08vvx8xtxwt5o.js +0 -1
  496. package/.next/standalone/.next/static/chunks/08zfbuugw_i52.js +0 -23
  497. package/.next/standalone/.next/static/chunks/09agwg~-xbxbs.js +0 -1
  498. package/.next/standalone/.next/static/chunks/0a1hi9y0lwv3j.js +0 -1
  499. package/.next/standalone/.next/static/chunks/0ajkjqq1xc_.a.js +0 -1
  500. package/.next/standalone/.next/static/chunks/0chjvj73yfmoj.js +0 -1
  501. package/.next/standalone/.next/static/chunks/0d4vi6-ju6lha.js +0 -1
  502. package/.next/standalone/.next/static/chunks/0daflfjkvkh-d.js +0 -1
  503. package/.next/standalone/.next/static/chunks/0dh2cf_c4gz65.js +0 -1
  504. package/.next/standalone/.next/static/chunks/0dqb3atw-kpb2.js +0 -1
  505. package/.next/standalone/.next/static/chunks/0fuay9akccsr9.js +0 -1
  506. package/.next/standalone/.next/static/chunks/0fwnzw~qq_abm.js +0 -1
  507. package/.next/standalone/.next/static/chunks/0gjtphww9wtey.js +0 -12
  508. package/.next/standalone/.next/static/chunks/0h-7ntqpip4oi.js +0 -1
  509. package/.next/standalone/.next/static/chunks/0idah_uu8ylro.js +0 -1
  510. package/.next/standalone/.next/static/chunks/0iw7xjsfo1v-u.js +0 -16
  511. package/.next/standalone/.next/static/chunks/0jj7ska-q4zmb.js +0 -1
  512. package/.next/standalone/.next/static/chunks/0k50-hp08.xtp.js +0 -1
  513. package/.next/standalone/.next/static/chunks/0n1xl_9xb64~a.js +0 -1
  514. package/.next/standalone/.next/static/chunks/0nh~2y4pr-6b-.js +0 -1
  515. package/.next/standalone/.next/static/chunks/0nyar-7g9rya6.js +0 -1
  516. package/.next/standalone/.next/static/chunks/0o_yi7-4-ckig.js +0 -1
  517. package/.next/standalone/.next/static/chunks/0om8~g_7-c-x5.js +0 -12
  518. package/.next/standalone/.next/static/chunks/0otoymu09sgml.js +0 -1
  519. package/.next/standalone/.next/static/chunks/0oxlivdn8c89b.js +0 -1
  520. package/.next/standalone/.next/static/chunks/0qwvk-uq944-d.js +0 -23
  521. package/.next/standalone/.next/static/chunks/0r7uk81oh650e.js +0 -1
  522. package/.next/standalone/.next/static/chunks/0r_ynb..7ongv.js +0 -23
  523. package/.next/standalone/.next/static/chunks/0ro78lxc~ndn_.js +0 -1
  524. package/.next/standalone/.next/static/chunks/0ryghnq7iy47v.js +0 -24
  525. package/.next/standalone/.next/static/chunks/0t_38o03_pjwq.js +0 -1
  526. package/.next/standalone/.next/static/chunks/0u9~wuf2zbs5z.js +0 -1
  527. package/.next/standalone/.next/static/chunks/0vmc7tq7ze-wk.js +0 -1
  528. package/.next/standalone/.next/static/chunks/0wlz6--vu7adu.js +0 -1
  529. package/.next/standalone/.next/static/chunks/0wp13r5su.j3e.js +0 -1
  530. package/.next/standalone/.next/static/chunks/0wx.aq674yk~q.js +0 -1
  531. package/.next/standalone/.next/static/chunks/0xas4ca5n6mzi.js +0 -1
  532. package/.next/standalone/.next/static/chunks/0xmalbon9eqvg.js +0 -1
  533. package/.next/standalone/.next/static/chunks/0y1_gk64rkp0g.js +0 -1
  534. package/.next/standalone/.next/static/chunks/0zz.9uk42mbks.js +0 -1
  535. package/.next/standalone/.next/static/chunks/0~nlz9.lltzrz.js +0 -1
  536. package/.next/standalone/.next/static/chunks/10bvbbw1062os.js +0 -1
  537. package/.next/standalone/.next/static/chunks/11gch78bg_qsn.js +0 -1
  538. package/.next/standalone/.next/static/chunks/11nk1lwom62oe.js +0 -1
  539. package/.next/standalone/.next/static/chunks/131tx--pi8.tm.js +0 -1
  540. package/.next/standalone/.next/static/chunks/132lgf3mld2ax.js +0 -1
  541. package/.next/standalone/.next/static/chunks/13nitezuv6q6x.js +0 -1
  542. package/.next/standalone/.next/static/chunks/13~7v30_nnqks.js +0 -1
  543. package/.next/standalone/.next/static/chunks/16dbi-ty-ptnr.js +0 -1
  544. package/.next/standalone/.next/static/chunks/17jcucuef_33-.js +0 -1
  545. package/.next/standalone/.next/static/chunks/184~yri~m3wao.css +0 -1
  546. package/.next/standalone/.next/static/chunks/186b1th1fl440.js +0 -1
  547. package/.next/standalone/.next/static/chunks/18d9u7jni2vco.js +0 -1
  548. package/.next/standalone/.next/static/chunks/turbopack-0abq2d._xmt7y.js +0 -1
  549. package/.next/standalone/.next/static/chunks/turbopack-0np.oib7-.1fp.js +0 -1
  550. /package/.next/standalone/.next/static/{5mb_D_gy6E3wsT_BhuXDS → X7BRO7ORR4bKFt1LXzGU8}/_clientMiddlewareManifest.js +0 -0
  551. /package/.next/standalone/.next/static/{5mb_D_gy6E3wsT_BhuXDS → X7BRO7ORR4bKFt1LXzGU8}/_ssgManifest.js +0 -0
@@ -0,0 +1,38 @@
1
+ import type { NextApiRequest, NextApiResponse } from 'next';
2
+ import { getLayout, patchLayout } from '@/lib/layout-store';
3
+ import { getActiveWorkspaceId, getWorkspaceById } from '@/lib/workspace-store';
4
+ import { createLogger } from '@/lib/logger';
5
+
6
+ const log = createLogger('layout');
7
+
8
+ const handler = async (req: NextApiRequest, res: NextApiResponse) => {
9
+ const wsId = (req.query.workspace as string) || await getActiveWorkspaceId();
10
+ if (!wsId) {
11
+ return res.status(400).json({ error: 'No workspace found' });
12
+ }
13
+
14
+ if (req.method === 'GET') {
15
+ try {
16
+ const ws = await getWorkspaceById(wsId);
17
+ const layout = await getLayout(wsId, ws?.directories[0]);
18
+ return res.status(200).json(layout);
19
+ } catch (err) {
20
+ log.error(`GET failed: ${err instanceof Error ? err.message : err}`);
21
+ return res.status(500).json({ error: 'Failed to load layout' });
22
+ }
23
+ }
24
+
25
+ if (req.method === 'PATCH') {
26
+ const { activePaneId, ratioUpdate, equalize } = req.body ?? {};
27
+ const result = await patchLayout(wsId, { activePaneId, ratioUpdate, equalize });
28
+ if (!result) {
29
+ return res.status(404).json({ error: 'Target not found' });
30
+ }
31
+ return res.status(200).json(result);
32
+ }
33
+
34
+ res.setHeader('Allow', 'GET, PATCH');
35
+ return res.status(405).json({ error: 'Method not allowed' });
36
+ };
37
+
38
+ export default handler;
@@ -0,0 +1,38 @@
1
+ import type { NextApiRequest, NextApiResponse } from 'next';
2
+ import { deletePane, patchPane, closePaneInLayout } from '@/lib/layout-store';
3
+ import { getActiveWorkspaceId } from '@/lib/workspace-store';
4
+
5
+ const handler = async (req: NextApiRequest, res: NextApiResponse) => {
6
+ const wsId = (req.query.workspace as string) || await getActiveWorkspaceId();
7
+ const paneId = req.query.paneId as string;
8
+
9
+ if (req.method === 'DELETE') {
10
+ if (!wsId) {
11
+ const sessions: string[] = req.body?.sessions ?? [];
12
+ await deletePane(paneId, sessions);
13
+ return res.status(204).end();
14
+ }
15
+ const result = await closePaneInLayout(wsId, paneId);
16
+ if (!result) {
17
+ return res.status(404).json({ error: 'Pane not found' });
18
+ }
19
+ return res.status(200).json(result);
20
+ }
21
+
22
+ if (req.method === 'PATCH') {
23
+ if (!wsId) {
24
+ return res.status(400).json({ error: 'No workspace found' });
25
+ }
26
+ const { activeTabId } = req.body ?? {};
27
+ const result = await patchPane(wsId, paneId, { activeTabId });
28
+ if (!result) {
29
+ return res.status(404).json({ error: 'Target not found' });
30
+ }
31
+ return res.status(200).json(result);
32
+ }
33
+
34
+ res.setHeader('Allow', 'DELETE, PATCH');
35
+ return res.status(405).json({ error: 'Method not allowed' });
36
+ };
37
+
38
+ export default handler;
@@ -0,0 +1,94 @@
1
+ import type { NextApiRequest, NextApiResponse } from 'next';
2
+ import { removeTabFromPane, restartTabSession, patchTab } from '@/lib/layout-store';
3
+ import { getActiveWorkspaceId } from '@/lib/workspace-store';
4
+ import { getStatusManager } from '@/lib/status-manager';
5
+ import { createLogger } from '@/lib/logger';
6
+ import type { ITab } from '@/types/terminal';
7
+
8
+ const log = createLogger('layout');
9
+
10
+ const handler = async (req: NextApiRequest, res: NextApiResponse) => {
11
+ const wsId = (req.query.workspace as string) || await getActiveWorkspaceId();
12
+ if (!wsId) {
13
+ return res.status(400).json({ error: 'No workspace found' });
14
+ }
15
+
16
+ const paneId = req.query.paneId as string;
17
+ const tabId = req.query.tabId as string;
18
+
19
+ if (req.method === 'DELETE') {
20
+ const found = await removeTabFromPane(wsId, paneId, tabId);
21
+ if (!found) {
22
+ return res.status(404).json({ error: 'Tab not found' });
23
+ }
24
+ getStatusManager().removeTab(tabId);
25
+ return res.status(204).end();
26
+ }
27
+
28
+ if (req.method === 'POST') {
29
+ try {
30
+ const { command } = req.body ?? {};
31
+ const ok = await restartTabSession(wsId, paneId, tabId, command);
32
+ if (!ok) {
33
+ return res.status(404).json({ error: 'Tab not found' });
34
+ }
35
+ return res.status(200).json({ ok: true });
36
+ } catch (err) {
37
+ log.error(`tab restart failed: ${err instanceof Error ? err.message : err}`);
38
+ return res.status(500).json({ error: 'Failed to restart session' });
39
+ }
40
+ }
41
+
42
+ if (req.method === 'PATCH') {
43
+ const { name, panelType, title, cwd, lastCommand, webUrl, terminalRatio, terminalCollapsed } = req.body ?? {};
44
+
45
+ if (
46
+ name !== undefined ||
47
+ panelType !== undefined ||
48
+ title !== undefined ||
49
+ cwd !== undefined ||
50
+ lastCommand !== undefined ||
51
+ webUrl !== undefined ||
52
+ terminalRatio !== undefined ||
53
+ terminalCollapsed !== undefined
54
+ ) {
55
+ const patch: Partial<Pick<ITab, 'name' | 'panelType' | 'title' | 'cwd' | 'lastCommand' | 'webUrl' | 'terminalRatio' | 'terminalCollapsed'>> = {};
56
+ if (name !== undefined) {
57
+ if (typeof name !== 'string') {
58
+ return res.status(400).json({ error: 'name must be a string' });
59
+ }
60
+ patch.name = name.trim();
61
+ }
62
+ if (panelType !== undefined) patch.panelType = panelType;
63
+ if (title !== undefined) patch.title = title;
64
+ if (cwd !== undefined) patch.cwd = cwd;
65
+ if (lastCommand !== undefined) patch.lastCommand = lastCommand;
66
+ if (webUrl !== undefined) patch.webUrl = webUrl;
67
+ if (terminalRatio !== undefined) {
68
+ if (typeof terminalRatio !== 'number' || !Number.isFinite(terminalRatio)) {
69
+ return res.status(400).json({ error: 'terminalRatio must be a number' });
70
+ }
71
+ patch.terminalRatio = Math.max(0, Math.min(100, terminalRatio));
72
+ }
73
+ if (terminalCollapsed !== undefined) {
74
+ if (typeof terminalCollapsed !== 'boolean') {
75
+ return res.status(400).json({ error: 'terminalCollapsed must be a boolean' });
76
+ }
77
+ patch.terminalCollapsed = terminalCollapsed;
78
+ }
79
+
80
+ const result = await patchTab(wsId, paneId, tabId, patch);
81
+ if (!result) {
82
+ return res.status(404).json({ error: 'Tab not found' });
83
+ }
84
+ return res.status(200).json(result);
85
+ }
86
+
87
+ return res.status(400).json({ error: 'No fields to update' });
88
+ }
89
+
90
+ res.setHeader('Allow', 'POST, DELETE, PATCH');
91
+ return res.status(405).json({ error: 'Method not allowed' });
92
+ };
93
+
94
+ export default handler;
@@ -0,0 +1,31 @@
1
+ import type { NextApiRequest, NextApiResponse } from 'next';
2
+ import { moveTabBetweenPanes } from '@/lib/layout-store';
3
+ import { getActiveWorkspaceId } from '@/lib/workspace-store';
4
+
5
+ const handler = async (req: NextApiRequest, res: NextApiResponse) => {
6
+ if (req.method !== 'POST') {
7
+ res.setHeader('Allow', 'POST');
8
+ return res.status(405).json({ error: 'Method not allowed' });
9
+ }
10
+
11
+ const wsId = (req.query.workspace as string) || await getActiveWorkspaceId();
12
+ if (!wsId) {
13
+ return res.status(400).json({ error: 'No workspace found' });
14
+ }
15
+
16
+ const tabId = req.query.tabId as string;
17
+ const fromPaneId = req.query.paneId as string;
18
+ const { toPaneId, toIndex } = req.body ?? {};
19
+
20
+ if (!toPaneId || toIndex === undefined) {
21
+ return res.status(400).json({ error: 'toPaneId and toIndex required' });
22
+ }
23
+
24
+ const result = await moveTabBetweenPanes(wsId, tabId, fromPaneId, toPaneId, toIndex);
25
+ if (!result) {
26
+ return res.status(404).json({ error: 'Target not found' });
27
+ }
28
+ return res.status(200).json(result);
29
+ };
30
+
31
+ export default handler;
@@ -0,0 +1,66 @@
1
+ import type { NextApiRequest, NextApiResponse } from 'next';
2
+ import { addTabToPane, updateTabClaudeSessionId } from '@/lib/layout-store';
3
+ import { getActiveWorkspaceId } from '@/lib/workspace-store';
4
+ import { getStatusManager } from '@/lib/status-manager';
5
+ import { buildResumeCommand, isValidSessionId } from '@/lib/claude-command';
6
+ import { sendKeys } from '@/lib/tmux';
7
+ import { createLogger } from '@/lib/logger';
8
+
9
+ const log = createLogger('layout');
10
+
11
+ const SHELL_READY_DELAY_MS = 500;
12
+
13
+ const handler = async (req: NextApiRequest, res: NextApiResponse) => {
14
+ if (req.method !== 'POST') {
15
+ res.setHeader('Allow', 'POST');
16
+ return res.status(405).json({ error: 'Method not allowed' });
17
+ }
18
+
19
+ const wsId = (req.query.workspace as string) || await getActiveWorkspaceId();
20
+ if (!wsId) {
21
+ return res.status(400).json({ error: 'No workspace found' });
22
+ }
23
+
24
+ const paneId = req.query.paneId as string;
25
+ const { name, cwd, panelType, command, resumeSessionId } = req.body ?? {};
26
+ if (resumeSessionId && !isValidSessionId(resumeSessionId)) {
27
+ return res.status(400).json({ error: 'Invalid session ID format' });
28
+ }
29
+
30
+ try {
31
+ const tab = await addTabToPane(wsId, paneId, name, cwd, panelType, command);
32
+ if (!tab) {
33
+ return res.status(404).json({ error: 'Pane not found' });
34
+ }
35
+ if (tab.panelType !== 'web-browser') {
36
+ getStatusManager().registerTab(tab.id, {
37
+ cliState: 'inactive',
38
+ workspaceId: wsId,
39
+ tabName: tab.name,
40
+ tmuxSession: tab.sessionName,
41
+ lastEvent: null,
42
+ eventSeq: 0,
43
+ });
44
+ }
45
+
46
+ if (resumeSessionId && !command) {
47
+ await updateTabClaudeSessionId(tab.sessionName, resumeSessionId);
48
+ tab.claudeSessionId = resumeSessionId;
49
+ setTimeout(async () => {
50
+ try {
51
+ const resumeCmd = await buildResumeCommand(resumeSessionId, wsId);
52
+ await sendKeys(tab.sessionName, resumeCmd);
53
+ } catch (err) {
54
+ log.warn(`resume sendKeys failed: ${err instanceof Error ? err.message : err}`);
55
+ }
56
+ }, SHELL_READY_DELAY_MS);
57
+ }
58
+
59
+ return res.status(200).json(tab);
60
+ } catch (err) {
61
+ log.error(`tab creation failed: ${err instanceof Error ? err.message : err}`);
62
+ return res.status(500).json({ error: 'Failed to create tab' });
63
+ }
64
+ };
65
+
66
+ export default handler;
@@ -0,0 +1,30 @@
1
+ import type { NextApiRequest, NextApiResponse } from 'next';
2
+ import { reorderTabsInPane } from '@/lib/layout-store';
3
+ import { getActiveWorkspaceId } from '@/lib/workspace-store';
4
+
5
+ const handler = async (req: NextApiRequest, res: NextApiResponse) => {
6
+ if (req.method !== 'PATCH') {
7
+ res.setHeader('Allow', 'PATCH');
8
+ return res.status(405).json({ error: 'Method not allowed' });
9
+ }
10
+
11
+ const wsId = (req.query.workspace as string) || await getActiveWorkspaceId();
12
+ if (!wsId) {
13
+ return res.status(400).json({ error: 'No workspace found' });
14
+ }
15
+
16
+ const paneId = req.query.paneId as string;
17
+ const { tabIds } = req.body ?? {};
18
+
19
+ if (!Array.isArray(tabIds) || tabIds.length === 0) {
20
+ return res.status(400).json({ error: 'tabIds array required' });
21
+ }
22
+
23
+ const result = await reorderTabsInPane(wsId, paneId, tabIds);
24
+ if (!result) {
25
+ return res.status(404).json({ error: 'Target not found' });
26
+ }
27
+ return res.status(200).json(result);
28
+ };
29
+
30
+ export default handler;
@@ -0,0 +1,38 @@
1
+ import type { NextApiRequest, NextApiResponse } from 'next';
2
+ import { createPane, splitPaneInLayout } from '@/lib/layout-store';
3
+ import { getActiveWorkspaceId } from '@/lib/workspace-store';
4
+ import { createLogger } from '@/lib/logger';
5
+
6
+ const log = createLogger('layout');
7
+
8
+ const handler = async (req: NextApiRequest, res: NextApiResponse) => {
9
+ if (req.method !== 'POST') {
10
+ res.setHeader('Allow', 'POST');
11
+ return res.status(405).json({ error: 'Method not allowed' });
12
+ }
13
+
14
+ const wsId = (req.query.workspace as string) || await getActiveWorkspaceId();
15
+ if (!wsId) {
16
+ return res.status(400).json({ error: 'No workspace found' });
17
+ }
18
+
19
+ try {
20
+ const { sourcePaneId, orientation, cwd, panelType } = req.body ?? {};
21
+
22
+ if (sourcePaneId && orientation) {
23
+ const result = await splitPaneInLayout(wsId, sourcePaneId, orientation, cwd, panelType);
24
+ if (!result) {
25
+ return res.status(404).json({ error: 'Target pane not found' });
26
+ }
27
+ return res.status(200).json(result);
28
+ }
29
+
30
+ const result = await createPane(wsId, cwd);
31
+ return res.status(200).json(result);
32
+ } catch (err) {
33
+ log.error(`pane creation failed: ${err instanceof Error ? err.message : err}`);
34
+ return res.status(500).json({ error: 'Failed to create pane' });
35
+ }
36
+ };
37
+
38
+ export default handler;
package/dist/server.js CHANGED
@@ -4577,8 +4577,38 @@ purplemux api-guide
4577
4577
  }
4578
4578
  });
4579
4579
 
4580
+ // src/lib/workspace-order.ts
4581
+ var getVisuallyOrderedWorkspaces;
4582
+ var init_workspace_order = __esm({
4583
+ "src/lib/workspace-order.ts"() {
4584
+ "use strict";
4585
+ getVisuallyOrderedWorkspaces = (workspaces, groups) => {
4586
+ const validGroupIds = new Set(groups.map((g10) => g10.id));
4587
+ const byGroup = /* @__PURE__ */ new Map();
4588
+ const ungrouped = [];
4589
+ for (const ws of workspaces) {
4590
+ const gid = ws.groupId ?? null;
4591
+ if (gid && validGroupIds.has(gid)) {
4592
+ const list = byGroup.get(gid) ?? [];
4593
+ list.push(ws);
4594
+ byGroup.set(gid, list);
4595
+ } else {
4596
+ ungrouped.push(ws);
4597
+ }
4598
+ }
4599
+ const ordered = [];
4600
+ for (const g10 of groups) {
4601
+ const list = byGroup.get(g10.id);
4602
+ if (list) ordered.push(...list);
4603
+ }
4604
+ ordered.push(...ungrouped);
4605
+ return ordered;
4606
+ };
4607
+ }
4608
+ });
4609
+
4580
4610
  // src/lib/workspace-store.ts
4581
- var import_promises7, import_path9, import_os7, log9, BASE_DIR3, WORKSPACES_FILE, LEGACY_LAYOUT_FILE, LEGACY_TABS_FILE, g5, emptyState, readWorkspacesFile, writeWorkspacesFile, migrateFromPhase4, migrateFromTabs, initWorkspaceStore, getWorkspaces;
4611
+ var import_promises7, import_path9, import_os7, log9, BASE_DIR3, WORKSPACES_FILE, LEGACY_LAYOUT_FILE, LEGACY_TABS_FILE, g5, emptyState, ensureGroups, normalizeWorkspaceOrder, readWorkspacesFile, writeWorkspacesFile, migrateFromPhase4, migrateFromTabs, initWorkspaceStore, getWorkspaces;
4582
4612
  var init_workspace_store = __esm({
4583
4613
  "src/lib/workspace-store.ts"() {
4584
4614
  "use strict";
@@ -4591,6 +4621,7 @@ var init_workspace_store = __esm({
4591
4621
  init_sync_server();
4592
4622
  init_layout_store();
4593
4623
  init_claude_prompt();
4624
+ init_workspace_order();
4594
4625
  log9 = createLogger("workspace");
4595
4626
  BASE_DIR3 = import_path9.default.join(import_os7.default.homedir(), ".purplemux");
4596
4627
  WORKSPACES_FILE = import_path9.default.join(BASE_DIR3, "workspaces.json");
@@ -4600,10 +4631,19 @@ var init_workspace_store = __esm({
4600
4631
  if (!g5.__purplemuxWorkspaceLock) g5.__purplemuxWorkspaceLock = Promise.resolve();
4601
4632
  emptyState = () => ({
4602
4633
  workspaces: [],
4634
+ groups: [],
4603
4635
  sidebarCollapsed: false,
4604
4636
  sidebarWidth: 240,
4605
4637
  updatedAt: (/* @__PURE__ */ new Date()).toISOString()
4606
4638
  });
4639
+ ensureGroups = (data) => {
4640
+ if (!data.groups) data.groups = [];
4641
+ return data.groups;
4642
+ };
4643
+ normalizeWorkspaceOrder = (data) => {
4644
+ const groups = ensureGroups(data);
4645
+ data.workspaces = getVisuallyOrderedWorkspaces(data.workspaces, groups);
4646
+ };
4607
4647
  readWorkspacesFile = async () => {
4608
4648
  let raw;
4609
4649
  try {
@@ -4619,6 +4659,17 @@ var init_workspace_store = __esm({
4619
4659
  ws.directories = [legacy.directory];
4620
4660
  delete legacy.directory;
4621
4661
  }
4662
+ delete legacy.order;
4663
+ }
4664
+ if (!Array.isArray(data.groups)) data.groups = [];
4665
+ for (const g10 of data.groups) {
4666
+ delete g10.order;
4667
+ }
4668
+ const validGroupIds = new Set(data.groups.map((g10) => g10.id));
4669
+ for (const ws of data.workspaces) {
4670
+ if (ws.groupId && !validGroupIds.has(ws.groupId)) {
4671
+ ws.groupId = null;
4672
+ }
4622
4673
  }
4623
4674
  return data;
4624
4675
  } catch {
@@ -4631,8 +4682,9 @@ var init_workspace_store = __esm({
4631
4682
  }
4632
4683
  };
4633
4684
  writeWorkspacesFile = async (data) => {
4634
- const { workspaces, activeWorkspaceId, sidebarCollapsed, sidebarWidth } = data;
4635
- const contentKey = JSON.stringify({ workspaces, activeWorkspaceId, sidebarCollapsed, sidebarWidth });
4685
+ normalizeWorkspaceOrder(data);
4686
+ const { workspaces, groups, activeWorkspaceId, sidebarCollapsed, sidebarWidth } = data;
4687
+ const contentKey = JSON.stringify({ workspaces, groups: groups ?? [], activeWorkspaceId, sidebarCollapsed, sidebarWidth });
4636
4688
  if (g5.__purplemuxWorkspacesContentCache === contentKey) return;
4637
4689
  data.updatedAt = (/* @__PURE__ */ new Date()).toISOString();
4638
4690
  const tmpFile = WORKSPACES_FILE + ".tmp";
@@ -4657,8 +4709,7 @@ var init_workspace_store = __esm({
4657
4709
  workspaces: [{
4658
4710
  id: wsId,
4659
4711
  name: "default",
4660
- directories: [import_os7.default.homedir()],
4661
- order: 0
4712
+ directories: [import_os7.default.homedir()]
4662
4713
  }],
4663
4714
  sidebarCollapsed: false,
4664
4715
  sidebarWidth: 240,
@@ -4750,9 +4801,10 @@ var init_workspace_store = __esm({
4750
4801
  };
4751
4802
  getWorkspaces = async () => {
4752
4803
  const data = await readWorkspacesFile();
4753
- if (!data) return { workspaces: [], sidebarCollapsed: false, sidebarWidth: 220 };
4804
+ if (!data) return { workspaces: [], groups: [], sidebarCollapsed: false, sidebarWidth: 220 };
4754
4805
  return {
4755
4806
  workspaces: data.workspaces,
4807
+ groups: data.groups ?? [],
4756
4808
  activeWorkspaceId: data.activeWorkspaceId,
4757
4809
  sidebarCollapsed: data.sidebarCollapsed,
4758
4810
  sidebarWidth: data.sidebarWidth
@@ -32328,7 +32380,7 @@ init_logger();
32328
32380
  // package.json
32329
32381
  var package_default = {
32330
32382
  name: "purplemux",
32331
- version: "0.2.2",
32383
+ version: "0.2.3",
32332
32384
  description: "Manage multiple Claude Code sessions from your browser",
32333
32385
  license: "MIT",
32334
32386
  author: "subicura",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "purplemux",
3
- "version": "0.2.2",
3
+ "version": "0.2.3",
4
4
  "description": "Manage multiple Claude Code sessions from your browser",
5
5
  "license": "MIT",
6
6
  "author": "subicura",
@@ -1,30 +0,0 @@
1
- module.exports=[522734,(e,t,a)=>{t.exports=e.x("fs",()=>require("fs"))},319668,(e,t,a)=>{t.exports=e.x("readline",()=>require("readline"))},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"))},224361,(e,t,a)=>{t.exports=e.x("util",()=>require("util"))},233405,(e,t,a)=>{t.exports=e.x("child_process",()=>require("child_process"))},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 n=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"]),s=["LC_"],r=e=>n.has(e)||s.some(t=>e.startsWith(t)),i={TERM:"xterm-256color",COLORTERM:"truecolor"},l=()=>{let e={};for(let[t,n]of Object.entries(a))void 0!==n&&r(t)&&(e[t]=n);return{...e,...i}},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)},713915,e=>{"use strict";var t=e.i(233405),a=e.i(924868),n=e.i(446786),s=e.i(814747),r=e.i(224361),i=e.i(597789),l=e.i(965898);let o=(0,r.promisify)(t.execFile),u=null,c=null,d=async()=>{let e=n.default.userInfo().shell||(0,i.defaultShell)();try{let{stdout:t}=await o(e,["-ilc",'echo -n "$PATH"'],{timeout:5e3,env:{...(0,i.buildShellEnv)(),SHELL:e,DISABLE_AUTO_UPDATE:"true",ZSH_TMUX_AUTOSTARTED:"true"}});return t.toString().trim()}catch{return l.PRISTINE_ENV.PATH||""}},m=async()=>u||(c||(c=d().then(e=>(u=e,c=null,e))),c),f=async(e,t,a)=>{try{let n=await m(),{stdout:s}=await o(e,t,{timeout:5e3,env:{...process.env,PATH:n}});return{installed:!0,version:a(s)}}catch{return{installed:!1,version:null}}},h=e=>e.trim().match(/(\d+\.\d+[\d.]*)/)?.[1]??null,p=[s.default.join(n.default.homedir(),".local","bin")],g=async()=>{for(let e of p)try{return await (0,a.access)(s.default.join(e,"claude")),e}catch{}return null},y=e=>e.installed&&null!==e.version&&parseFloat(e.version)>=2.9,C=async()=>{u=await d();let[e,t,r]=await Promise.all([f("tmux",["-V"],h),f("git",["--version"],h),f("claude",["--version"],h)]),i=(y(e)&&t.installed&&r.installed,r.installed?null:await g()),l=!1;if(r.installed||i)try{await (0,a.access)(s.default.join(n.default.homedir(),".claude")),l=!0}catch{}return{tmux:{...e,compatible:y(e)},git:t,claude:{...r,binaryPath:i,loggedIn:l}}},w=null,S=null,T=null,D=null,A=async()=>T&&Date.now()-T.checkedAt<1e3?T.result:D||(D=C().then(e=>(T={result:e,checkedAt:Date.now()},D=null,e)).catch(e=>{throw D=null,e})),k=async()=>{u=await d();let[e,t,a]=await Promise.all([f("tmux",["-V"],h),f("git",["--version"],h),f("claude",["--version"],h)]);return{tmux:{...e,compatible:y(e)},git:t,claude:a}},_=async()=>w&&Date.now()-w.checkedAt<3e4?w.result:S||(S=k().then(e=>(w={result:e,checkedAt:Date.now()},S=null,e)).catch(e=>{throw S=null,e}));e.s(["getCachedPreflightStatus",0,A,"getCachedRuntimePreflight",0,_,"getShellPath",0,m,"invalidateRuntimeCache",0,()=>{w=null,S=null}])},177579,e=>{"use strict";var t=e.i(924868),a=e.i(522734),n=e.i(814747),s=e.i(446786),r=e.i(319668),i=e.i(990294);let l=n.default.join(s.default.homedir(),".purplemux","stats"),o=n.default.join(l,"cache.json"),u=n.default.join(s.default.homedir(),".claude","projects"),c=()=>({input:0,output:0,cacheRead:0,cacheCreation:0,cacheCreation5m:0,cacheCreation1h:0}),d=async()=>{let e=[];try{for(let a of(await t.default.readdir(u))){let s=n.default.join(u,a),r=await t.default.stat(s).catch(()=>null);if(r?.isDirectory())for(let a of(await t.default.readdir(s).catch(()=>[])))a.endsWith(".jsonl")&&!/^agent-/.test(a)&&e.push(n.default.join(s,a))}}catch{}return e},m=async(e,t)=>{let n=new Map,s=new Map;try{let i=(0,a.createReadStream)(e,{encoding:"utf-8"});for await(let e of r.default.createInterface({input:i,crlfDelay:1/0}))if(e.trim())try{let a=JSON.parse(e),r=String(a.timestamp??"");if(!r)continue;let i=r.slice(0,10);if(!t.has(i))continue;let l=String(a.type??"");if("user"!==l&&"assistant"!==l)continue;let o=String(a.sessionId??""),u=String(new Date(r).getHours()),d=n.get(i);d||(d={messageCount:0,sessionCount:0,toolCallCount:0,hourCounts:{},modelTokens:{},sessions:[]},n.set(i,d),s.set(i,new Map));let m=s.get(i);if("user"===l&&(d.messageCount++,d.hourCounts[u]=(d.hourCounts[u]??0)+1,o)){let e=m.get(o);e?(e.messages++,r>e.end&&(e.end=r),r<e.start&&(e.start=r)):m.set(o,{start:r,end:r,messages:1})}if("assistant"===l){let e=a.message;if(!e)continue;let t=e.content;if(Array.isArray(t)){let e=t.filter(e=>"object"==typeof e&&null!==e&&"tool_use"===e.type).length;d.toolCallCount+=e}let n=String(e.model??""),s=e.usage;if(n&&!n.startsWith("<")&&s){d.modelTokens[n]||(d.modelTokens[n]=c());let e=d.modelTokens[n],t=Number(s.cache_creation_input_tokens??0),a=s.cache_creation,r=Number(a?.ephemeral_1h_input_tokens??0),i=a?.ephemeral_5m_input_tokens!=null?Number(a.ephemeral_5m_input_tokens):Math.max(0,t-r);e.input+=Number(s.input_tokens??0),e.output+=Number(s.output_tokens??0),e.cacheRead+=Number(s.cache_read_input_tokens??0),e.cacheCreation+=t,e.cacheCreation5m+=i,e.cacheCreation1h+=r}if(o){let e=m.get(o);e?(r>e.end&&(e.end=r),r<e.start&&(e.start=r)):m.set(o,{start:r,end:r,messages:0})}}}catch{}}catch{}for(let[e,t]of s){let a=n.get(e);a&&(a.sessionCount=t.size,a.sessions=Array.from(t.entries()).map(([e,t])=>({id:e,start:t.start,end:t.end,messages:t.messages})))}return n},f=async(e,t)=>{let a=[],n=0,s=async()=>{for(;n<e.length;){let t=n++;a[t]=await e[t]()}},r=Array.from({length:Math.min(t,e.length)},()=>s());return await Promise.all(r),a},h=(e,t)=>{for(let[a,n]of(e.messageCount+=t.messageCount,e.toolCallCount+=t.toolCallCount,Object.entries(t.hourCounts)))e.hourCounts[a]=(e.hourCounts[a]??0)+n;for(let[a,n]of Object.entries(t.modelTokens)){e.modelTokens[a]||(e.modelTokens[a]=c());let t=e.modelTokens[a];t.input+=n.input,t.output+=n.output,t.cacheRead+=n.cacheRead,t.cacheCreation+=n.cacheCreation,t.cacheCreation5m+=n.cacheCreation5m,t.cacheCreation1h+=n.cacheCreation1h}let a=new Set(e.sessions.map(e=>e.id));for(let n of t.sessions)if(a.has(n.id)){let t=e.sessions.find(e=>e.id===n.id);t.messages+=n.messages,n.start<t.start&&(t.start=n.start),n.end>t.end&&(t.end=n.end)}else e.sessions.push(n);e.sessionCount=e.sessions.length},p=async()=>{try{let e=await t.default.readFile(o,"utf-8"),a=JSON.parse(e);if(2!==a.version)return null;return a}catch{return null}},g=async e=>{await t.default.mkdir(l,{recursive:!0}),await t.default.writeFile(o,JSON.stringify(e),"utf-8")},y=null,C=async e=>{try{let t=(0,a.createReadStream)(e,{encoding:"utf-8"});for await(let e of r.default.createInterface({input:t,crlfDelay:1/0}))if(e.trim())try{let t=JSON.parse(e),a=String(t.timestamp??"");if(a)return a.slice(0,10)}catch{}}catch{}return null},w=async()=>{let e=await d();if(0===e.length)return null;let t=e.map(e=>()=>C(e)),a=(await f(t,10)).filter(e=>null!==e);return 0===a.length?null:(a.sort(),a[0])},S=async e=>{if(0===e.size)return new Map;let t=(await d()).map(t=>()=>m(t,e)),a=await f(t,10),n=new Map;for(let e of a)for(let[t,a]of e){let e=n.get(t);e?h(e,a):n.set(t,a)}return n},T=async()=>{if(y&&Date.now()<y.expiresAt)return y.data;let e=(0,i.default)().subtract(1,"day").format("YYYY-MM-DD"),t=(0,i.default)().format("YYYY-MM-DD"),a=await p(),n=new Set;if(n.add(t),a){if(a.lastComputedDate<e){let t=(0,i.default)(a.lastComputedDate).add(1,"day"),s=(0,i.default)(e);for(;t.isBefore(s)||t.isSame(s);){let e=t.format("YYYY-MM-DD");a.days[e]||n.add(e),t=t.add(1,"day")}}}else{a={version:2,lastComputedDate:"",days:{}};let s=await w();if(!s)return D(a,t);let r=(0,i.default)(s),l=(0,i.default)(e);for(;r.isBefore(l)||r.isSame(l);)n.add(r.format("YYYY-MM-DD")),r=r.add(1,"day")}let s=await S(n);for(let[e,n]of s)e!==t&&(a.days[e]=n);a.lastComputedDate=e,await g(a);let r=s.get(t)??null,l=D(a,t,r);return y={data:l,expiresAt:Date.now()+3e5},l},D=(e,t,a)=>{let n=[],s=[],r={},i={},l={},o=0,u=0,c="",d={sessionId:"",duration:0,messageCount:0,timestamp:""},m=Object.entries(e.days);for(let[e,f]of(a&&m.push([t,a]),m.sort((e,t)=>e[0].localeCompare(t[0])),m)){!c&&f.messageCount>0&&(c=e),n.push({date:e,messageCount:f.messageCount,sessionCount:f.sessionCount,toolCallCount:f.toolCallCount});let t={};for(let[e,a]of Object.entries(f.modelTokens)){t[e]={input:a.input,output:a.output,cacheRead:a.cacheRead,cacheCreation:a.cacheCreation,cacheCreation5m:a.cacheCreation5m,cacheCreation1h:a.cacheCreation1h},r[e]||(r[e]={inputTokens:0,outputTokens:0,cacheReadInputTokens:0,cacheCreationInputTokens:0,cacheCreation5mInputTokens:0,cacheCreation1hInputTokens:0,webSearchRequests:0,costUSD:0,contextWindow:0,maxOutputTokens:0});let n=r[e];n.inputTokens+=a.input,n.outputTokens+=a.output,n.cacheReadInputTokens+=a.cacheRead,n.cacheCreationInputTokens+=a.cacheCreation,n.cacheCreation5mInputTokens+=a.cacheCreation5m,n.cacheCreation1hInputTokens+=a.cacheCreation1h}s.push({date:e,tokensByModel:t});let a=new Date(e).getDay();for(let[e,t]of Object.entries(f.hourCounts)){i[e]=(i[e]??0)+t;let n=`${a}-${e}`;l[n]=(l[n]??0)+t}for(let e of(o+=f.sessionCount,u+=f.messageCount,f.sessions)){let t=new Date(e.end).getTime()-new Date(e.start).getTime();t>d.duration&&(d={sessionId:e.id,duration:t,messageCount:e.messages,timestamp:e.start})}}return{version:2,lastComputedDate:t,dailyActivity:n,dailyModelTokens:s,modelUsage:r,totalSessions:o,totalMessages:u,longestSession:d,firstSessionDate:c,hourCounts:i,dayHourCounts:l,totalSpeculationTimeSavedMs:0}};e.s(["collectJsonlFiles",0,d,"getStatsCache",0,T])},7991,e=>{"use strict";var t=e.i(924868),a=e.i(814747),n=e.i(446786),s=e.i(522734),r=e.i(319668),i=e.i(233405),l=e.i(713915),o=e.i(177579);let u=a.default.join(n.default.homedir(),".purplemux","stats","daily-reports"),c=async()=>{let e={};try{for(let n of(await t.default.readdir(u)))if(n.endsWith(".json"))try{let s=await t.default.readFile(a.default.join(u,n),"utf-8"),r=JSON.parse(s);r.date&&r.brief&&(e[r.date]=r)}catch{}}catch{}return e},d=async e=>{await t.default.mkdir(u,{recursive:!0}),await t.default.writeFile(a.default.join(u,`${e.date}.json`),JSON.stringify(e,null,2),"utf-8")},m=e=>{let t=n.default.homedir();return(e.startsWith(t)?e.slice(t.length+1):e).replace(/^Workspace\/github\.com\//g,"").replace(/^Workspace\/gitlab\.kolonfnc\.com\//g,"gitlab/").replace(/^Documents\//g,"docs/").replace(/^Downloads/g,"Downloads")},f=async e=>{let t=await (0,o.collectJsonlFiles)(),n=[];for(let i of t){let t=[],l=[],o=0,u="";try{let a=(0,s.createReadStream)(i,{encoding:"utf-8"});for await(let n of r.default.createInterface({input:a,crlfDelay:1/0}))if(n.trim())try{let a=JSON.parse(n),s=String(a.timestamp??"");if(!s.startsWith(e))continue;l.push(s);let r=String(a.type??"");if(u||"string"!=typeof a.cwd||(u=a.cwd),"user"===r){let e=a.message;if(!e)continue;let n=e.content,r="";if("string"==typeof n)r=n.slice(0,300);else if(Array.isArray(n)){let e=[];for(let t of n)"object"==typeof t&&null!==t&&"text"===t.type&&e.push(String(t.text??"").slice(0,300));r=e.join(" | ")}if(r.includes("<command-message>")){let e=r.match(/<command-name>\/([^<]+)<\/command-name>/);r=`[Command: ${e?e[1]:"unknown"}]`}if(r.includes("<local-command-caveat>")||r.includes("<task-notification>"))continue;r.trim()&&t.push({time:s.slice(11,16),text:r.slice(0,200)})}if("assistant"===r){let e=a.message;if(!e)continue;let t=e.content;Array.isArray(t)&&(o+=t.filter(e=>"object"==typeof e&&null!==e&&"tool_use"===e.type).length)}}catch{}}catch{}if(l.length>0&&t.length>0){let e=u?m(u):a.default.basename(a.default.dirname(i));n.push({project:e,start:Math.min(...l.map(e=>new Date(e).getTime())).toString(),msgCount:t.length,toolCount:o,firstMessage:t[0].text})}}return n.sort((e,t)=>Number(e.start)-Number(t.start)),n},h=async(e,t)=>{let a=await (0,l.getShellPath)();return new Promise((n,s)=>{let r=(0,i.execFile)("claude",["-p"],{timeout:12e4,maxBuffer:1048576,env:{...process.env,PATH:a}},(e,t)=>{e?s(Error(`claude -p failed: ${e.message}`)):n(t.trim())});r.stdin?.write(`${t}
2
-
3
- ${e}`),r.stdin?.end()})},p={en:"English",ko:"Korean (한국어)",ja:"Japanese (日本語)","zh-CN":"Simplified Chinese (简体中文)","zh-TW":"Traditional Chinese (繁體中文)",de:"German (Deutsch)",es:"Spanish (Español)",fr:"French (Français)","pt-BR":"Brazilian Portuguese (Português do Brasil)",ru:"Russian (Русский)",tr:"Turkish (Türkçe)"},g=async(e,t=!1,a="en")=>{var n,s;let r,i,l;if(!t){let t=await y(e);if(t&&t.locale===a)return t}let o=await f(e);if(0===o.length){let t={date:e,brief:"No activity recorded.",detail:"",generatedAt:new Date().toISOString(),locale:a};return await d(t),t}let u=o.map(e=>{let t=new Date(Number(e.start)).toTimeString().slice(0,5);return`[${t}] [${e.project}] msgs=${e.msgCount}, tools=${e.toolCount} | ${e.firstMessage}`}).join("\n"),{brief:c,detail:m}=(i=(s=await h(u,(n=e,r=p[a]??p.en,`Summarize the Claude session history for ${n}.
4
-
5
- Output format (use exactly this structure):
6
-
7
- [BRIEF]
8
- A 2-3 line summary of the entire day. Use terse noun-form phrases. Plain text only. No markdown headings (#) or separators (---).
9
-
10
- [DETAIL]
11
- ## Project Name
12
- ### Major Feature / Area
13
- - One-line task summary
14
- - One-line task summary
15
- ### Another Feature / Area
16
- - One-line task summary
17
-
18
- Rules:
19
- - The [BRIEF] and [DETAIL] tags must each appear exactly once, at the start of a line.
20
- - Do not insert meta text outside the tags (separators, numbering, explanations).
21
- - Always include the "## Project Name" heading, even when there is only one project.
22
- - Each item is a single line — no filenames, no code snippets.
23
- - Use terse noun-form phrases (e.g. "Fix login logic", "Improve mobile layout"). Avoid finished-sentence / past-tense forms.
24
- - Focus on WHAT, not HOW.
25
- - Skip trivial chatter (greetings, one-off questions, commit commands).
26
- - IMPORTANT: Write ALL brief and detail content in ${r}. Keep the [BRIEF] / [DETAIL] tags and markdown syntax (##, ###, -) as-is in English.
27
-
28
- Data:`))).match(/\[BRIEF\]\s*\n([\s\S]*?)(?=\[DETAIL\])/),l=s.match(/\[DETAIL\]\s*\n([\s\S]*?)$/),{brief:i?i[1].replace(/[\s#\-]*$/,"").trim():s.slice(0,500),detail:l?l[1].trim():""}),g={date:e,brief:c,detail:m,generatedAt:new Date().toISOString(),locale:a};return await d(g),g},y=async e=>{try{let n=await t.default.readFile(a.default.join(u,`${e}.json`),"utf-8"),s=JSON.parse(n);return s.date&&s.brief?s:null}catch{return null}};e.s(["generateDailyReport",0,g,"readAllCachedReports",0,c,"shortenCwd",0,m])}];
29
-
30
- //# sourceMappingURL=%5Broot-of-the-server%5D__0n61.a8._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[912974,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)=>{let r=e.query.workspaceId;if("DELETE"===e.method)return await (0,i.deleteWorkspace)(r)?t.status(204).end():t.status(404).json({error:"Workspace not found"});if("PATCH"===e.method){let{name:a}=e.body??{};if(!a||"string"!=typeof a||!a.trim())return t.status(400).json({error:"name field required"});let s=await (0,i.renameWorkspace)(r,a.trim());return s?t.status(200).json(s):t.status(404).json({error:"Workspace not found"})}return t.setHeader("Allow","DELETE, PATCH"),t.status(405).json({error:"Method not allowed"})};e.s(["default",0,n],258447);var o=e.i(258447),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/[workspaceId]",pathname:"/api/workspace/[workspaceId]",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/[workspaceId]";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),w=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/[workspaceId]",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 w(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}},w),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],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=_04pfden._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[848738,e=>{"use strict";var t=e.i(926747),r=e.i(190406),a=e.i(244898),n=e.i(262950),s=e.i(825265),o=e.i(322429),i=e.i(964759);let d=(0,e.i(25146).createLogger)("layout"),u=async(e,t)=>{let r=e.query.workspace||await (0,o.getActiveWorkspaceId)();if(!r)return t.status(400).json({error:"No workspace found"});let a=e.query.paneId,n=e.query.tabId;if("DELETE"===e.method)return await (0,s.removeTabFromPane)(r,a,n)?((0,i.getStatusManager)().removeTab(n),t.status(204).end()):t.status(404).json({error:"Tab not found"});if("POST"===e.method)try{let{command:o}=e.body??{};if(!await (0,s.restartTabSession)(r,a,n,o))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:o,panelType:i,title:d,cwd:u,lastCommand:l,webUrl:p}=e.body??{};if(void 0!==o||void 0!==i||void 0!==d||void 0!==u||void 0!==l||void 0!==p){let e={};if(void 0!==o){if("string"!=typeof o)return t.status(400).json({error:"name must be a string"});e.name=o.trim()}void 0!==i&&(e.panelType=i),void 0!==d&&(e.title=d),void 0!==u&&(e.cwd=u),void 0!==l&&(e.lastCommand=l),void 0!==p&&(e.webUrl=p);let v=await (0,s.patchTab)(r,a,n,e);return v?t.status(200).json(v):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),c=e.i(846432);let f=(0,n.hoist)(l,"default"),m=(0,n.hoist)(l,"config"),h=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 b(e,r,a){a.requestMeta&&(0,c.setRequestMeta)(e,a.requestMeta),h.isDev&&(0,c.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let n="/api/layout/pane/[paneId]/tabs/[tabId]/index";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:o,params:i,prerenderManifest:d,routerServerContext:u}=s;try{let t,a=e.method||"GET",s=(0,p.getTracer)(),l=s.getActiveScopeSpan(),c=!!(null==u?void 0:u.isWrappedByNextServer),f=h.instrumentationOnRequestError.bind(h),m=async l=>h.render(e,r,{query:{...o,...i},params:i,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:d.preview,propagateError:!1,dev:h.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=s.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 o=e.get("next.route");if(o){let e=`${a} ${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(`${a} ${n}`)});c&&l?await m(l):(t=s.getActiveScopeSpan(),await s.withPropagatedContext(e.headers,()=>s.trace(v.BaseServerSpan.handleRequest,{spanName:`${a} ${n}`,kind:p.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,m,"default",0,f,"handler",0,b],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=_09vws3v._.js.map
@@ -1,3 +0,0 @@
1
- module.exports=[990294,(e,t,a)=>{e.e,t.exports=function(){"use strict";var e="millisecond",t="second",a="minute",n="hour",r="week",i="month",s="quarter",u="year",o="date",c="Invalid Date",l=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,d=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,h=function(e,t,a){var n=String(e);return!n||n.length>=t?e:""+Array(t+1-n.length).join(a)+e},p="en",f={};f[p]={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(e){var t=["th","st","nd","rd"],a=e%100;return"["+e+(t[(a-20)%10]||t[a]||t[0])+"]"}};var m="$isDayjsObject",y=function(e){return e instanceof g||!(!e||!e[m])},C=function e(t,a,n){var r;if(!t)return p;if("string"==typeof t){var i=t.toLowerCase();f[i]&&(r=i),a&&(f[i]=a,r=i);var s=t.split("-");if(!r&&s.length>1)return e(s[0])}else{var u=t.name;f[u]=t,r=u}return!n&&r&&(p=r),r||!n&&p},v=function(e,t){if(y(e))return e.clone();var a="object"==typeof t?t:{};return a.date=e,a.args=arguments,new g(a)},$={s:h,z:function(e){var t=-e.utcOffset(),a=Math.abs(t);return(t<=0?"+":"-")+h(Math.floor(a/60),2,"0")+":"+h(a%60,2,"0")},m:function e(t,a){if(t.date()<a.date())return-e(a,t);var n=12*(a.year()-t.year())+(a.month()-t.month()),r=t.clone().add(n,i),s=a-r<0,u=t.clone().add(n+(s?-1:1),i);return+(-(n+(a-r)/(s?r-u:u-r))||0)},a:function(e){return e<0?Math.ceil(e)||0:Math.floor(e)},p:function(c){return({M:i,y:u,w:r,d:"day",D:o,h:n,m:a,s:t,ms:e,Q:s})[c]||String(c||"").toLowerCase().replace(/s$/,"")},u:function(e){return void 0===e}};$.l=C,$.i=y,$.w=function(e,t){return v(e,{locale:t.$L,utc:t.$u,x:t.$x,$offset:t.$offset})};var g=function(){function h(e){this.$L=C(e.locale,null,!0),this.parse(e),this.$x=this.$x||e.x||{},this[m]=!0}var p=h.prototype;return p.parse=function(e){this.$d=function(e){var t=e.date,a=e.utc;if(null===t)return new Date(NaN);if($.u(t))return new Date;if(t instanceof Date)return new Date(t);if("string"==typeof t&&!/Z$/i.test(t)){var n=t.match(l);if(n){var r=n[2]-1||0,i=(n[7]||"0").substring(0,3);return a?new Date(Date.UTC(n[1],r,n[3]||1,n[4]||0,n[5]||0,n[6]||0,i)):new Date(n[1],r,n[3]||1,n[4]||0,n[5]||0,n[6]||0,i)}}return new Date(t)}(e),this.init()},p.init=function(){var e=this.$d;this.$y=e.getFullYear(),this.$M=e.getMonth(),this.$D=e.getDate(),this.$W=e.getDay(),this.$H=e.getHours(),this.$m=e.getMinutes(),this.$s=e.getSeconds(),this.$ms=e.getMilliseconds()},p.$utils=function(){return $},p.isValid=function(){return this.$d.toString()!==c},p.isSame=function(e,t){var a=v(e);return this.startOf(t)<=a&&a<=this.endOf(t)},p.isAfter=function(e,t){return v(e)<this.startOf(t)},p.isBefore=function(e,t){return this.endOf(t)<v(e)},p.$g=function(e,t,a){return $.u(e)?this[t]:this.set(a,e)},p.unix=function(){return Math.floor(this.valueOf()/1e3)},p.valueOf=function(){return this.$d.getTime()},p.startOf=function(e,s){var c=this,l=!!$.u(s)||s,d=$.p(e),h=function(e,t){var a=$.w(c.$u?Date.UTC(c.$y,t,e):new Date(c.$y,t,e),c);return l?a:a.endOf("day")},p=function(e,t){return $.w(c.toDate()[e].apply(c.toDate("s"),(l?[0,0,0,0]:[23,59,59,999]).slice(t)),c)},f=this.$W,m=this.$M,y=this.$D,C="set"+(this.$u?"UTC":"");switch(d){case u:return l?h(1,0):h(31,11);case i:return l?h(1,m):h(0,m+1);case r:var v=this.$locale().weekStart||0,g=(f<v?f+7:f)-v;return h(l?y-g:y+(6-g),m);case"day":case o:return p(C+"Hours",0);case n:return p(C+"Minutes",1);case a:return p(C+"Seconds",2);case t:return p(C+"Milliseconds",3);default:return this.clone()}},p.endOf=function(e){return this.startOf(e,!1)},p.$set=function(r,s){var c,l=$.p(r),d="set"+(this.$u?"UTC":""),h=((c={}).day=d+"Date",c[o]=d+"Date",c[i]=d+"Month",c[u]=d+"FullYear",c[n]=d+"Hours",c[a]=d+"Minutes",c[t]=d+"Seconds",c[e]=d+"Milliseconds",c)[l],p="day"===l?this.$D+(s-this.$W):s;if(l===i||l===u){var f=this.clone().set(o,1);f.$d[h](p),f.init(),this.$d=f.set(o,Math.min(this.$D,f.daysInMonth())).$d}else h&&this.$d[h](p);return this.init(),this},p.set=function(e,t){return this.clone().$set(e,t)},p.get=function(e){return this[$.p(e)]()},p.add=function(e,s){var o,c=this;e=Number(e);var l=$.p(s),d=function(t){var a=v(c);return $.w(a.date(a.date()+Math.round(t*e)),c)};if(l===i)return this.set(i,this.$M+e);if(l===u)return this.set(u,this.$y+e);if("day"===l)return d(1);if(l===r)return d(7);var h=((o={})[a]=6e4,o[n]=36e5,o[t]=1e3,o)[l]||1,p=this.$d.getTime()+e*h;return $.w(p,this)},p.subtract=function(e,t){return this.add(-1*e,t)},p.format=function(e){var t=this,a=this.$locale();if(!this.isValid())return a.invalidDate||c;var n=e||"YYYY-MM-DDTHH:mm:ssZ",r=$.z(this),i=this.$H,s=this.$m,u=this.$M,o=a.weekdays,l=a.months,h=a.meridiem,p=function(e,a,r,i){return e&&(e[a]||e(t,n))||r[a].slice(0,i)},f=function(e){return $.s(i%12||12,e,"0")},m=h||function(e,t,a){var n=e<12?"AM":"PM";return a?n.toLowerCase():n};return n.replace(d,function(e,n){return n||function(e){switch(e){case"YY":return String(t.$y).slice(-2);case"YYYY":return $.s(t.$y,4,"0");case"M":return u+1;case"MM":return $.s(u+1,2,"0");case"MMM":return p(a.monthsShort,u,l,3);case"MMMM":return p(l,u);case"D":return t.$D;case"DD":return $.s(t.$D,2,"0");case"d":return String(t.$W);case"dd":return p(a.weekdaysMin,t.$W,o,2);case"ddd":return p(a.weekdaysShort,t.$W,o,3);case"dddd":return o[t.$W];case"H":return String(i);case"HH":return $.s(i,2,"0");case"h":return f(1);case"hh":return f(2);case"a":return m(i,s,!0);case"A":return m(i,s,!1);case"m":return String(s);case"mm":return $.s(s,2,"0");case"s":return String(t.$s);case"ss":return $.s(t.$s,2,"0");case"SSS":return $.s(t.$ms,3,"0");case"Z":return r}return null}(e)||r.replace(":","")})},p.utcOffset=function(){return-(15*Math.round(this.$d.getTimezoneOffset()/15))},p.diff=function(e,o,c){var l,d=this,h=$.p(o),p=v(e),f=(p.utcOffset()-this.utcOffset())*6e4,m=this-p,y=function(){return $.m(d,p)};switch(h){case u:l=y()/12;break;case i:l=y();break;case s:l=y()/3;break;case r:l=(m-f)/6048e5;break;case"day":l=(m-f)/864e5;break;case n:l=m/36e5;break;case a:l=m/6e4;break;case t:l=m/1e3;break;default:l=m}return c?l:$.a(l)},p.daysInMonth=function(){return this.endOf(i).$D},p.$locale=function(){return f[this.$L]},p.locale=function(e,t){if(!e)return this.$L;var a=this.clone(),n=C(e,t,!0);return n&&(a.$L=n),a},p.clone=function(){return $.w(this.$d,this)},p.toDate=function(){return new Date(this.valueOf())},p.toJSON=function(){return this.isValid()?this.toISOString():null},p.toISOString=function(){return this.$d.toISOString()},p.toString=function(){return this.$d.toUTCString()},h}(),b=g.prototype;return v.prototype=b,[["$ms",e],["$s",t],["$m",a],["$H",n],["$W","day"],["$M",i],["$y",u],["$D",o]].forEach(function(e){b[e[1]]=function(t){return this.$g(t,e[0],e[1])}}),v.extend=function(e,t){return e.$i||(e(t,g,v),e.$i=!0),v},v.locale=C,v.isDayjs=y,v.unix=function(e){return v(1e3*e)},v.en=f[p],v.Ls=f,v.p={},v}()},975925,e=>{"use strict";var t=e.i(990294);let a=e=>{let a=new Date;switch(e){case"today":return{start:(0,t.default)().startOf("day").toDate(),end:a};case"7d":return{start:(0,t.default)().subtract(7,"day").startOf("day").toDate(),end:a};case"30d":return{start:(0,t.default)().subtract(30,"day").startOf("day").toDate(),end:a};case"all":return{start:new Date(0),end:a}}};e.s(["isDateStringWithinPeriod",0,(e,n)=>{if("all"===n)return!0;let{start:r,end:i}=a(n),s=(0,t.default)(e).toDate();return s>=r&&s<=i},"isWithinPeriod",0,(e,t)=>{if("all"===t)return!0;let{start:n,end:r}=a(t),i=new Date(e);return i>=n&&i<=r},"parsePeriod",0,e=>"today"===e||"7d"===e||"30d"===e||"all"===e?e:"all"])},180112,e=>{"use strict";var t=e.i(924868),a=e.i(814747),n=e.i(446786),r=e.i(990294),i=e.i(975925);let s={"opus-4-7":{input:5,output:25,cacheWrite5m:6.25,cacheWrite1h:10,cacheRead:.5},"opus-4-6":{input:5,output:25,cacheWrite5m:6.25,cacheWrite1h:10,cacheRead:.5},"opus-4-5":{input:5,output:25,cacheWrite5m:6.25,cacheWrite1h:10,cacheRead:.5},"opus-4-1":{input:15,output:75,cacheWrite5m:18.75,cacheWrite1h:30,cacheRead:1.5},"opus-4":{input:15,output:75,cacheWrite5m:18.75,cacheWrite1h:30,cacheRead:1.5},"sonnet-4-6":{input:3,output:15,cacheWrite5m:3.75,cacheWrite1h:6,cacheRead:.3},"sonnet-4-5":{input:3,output:15,cacheWrite5m:3.75,cacheWrite1h:6,cacheRead:.3},"sonnet-4":{input:3,output:15,cacheWrite5m:3.75,cacheWrite1h:6,cacheRead:.3},"sonnet-3-7":{input:3,output:15,cacheWrite5m:3.75,cacheWrite1h:6,cacheRead:.3},"sonnet-3-5":{input:3,output:15,cacheWrite5m:3.75,cacheWrite1h:6,cacheRead:.3},"haiku-4-5":{input:1,output:5,cacheWrite5m:1.25,cacheWrite1h:2,cacheRead:.1},"haiku-3-5":{input:.8,output:4,cacheWrite5m:1,cacheWrite1h:1.6,cacheRead:.08},"haiku-3":{input:.25,output:1.25,cacheWrite5m:.3,cacheWrite1h:.5,cacheRead:.03},"opus-3":{input:15,output:75,cacheWrite5m:18.75,cacheWrite1h:30,cacheRead:1.5}},u={input:30,output:150,cacheWrite5m:37.5,cacheWrite1h:60,cacheRead:3},o=(e,t,a,n,r,i)=>t/1e6*e.input+n/1e6*e.cacheWrite5m+r/1e6*e.cacheWrite1h+i/1e6*e.cacheRead+a/1e6*e.output,c=a.default.join(n.default.homedir(),".claude","stats-cache.json"),l=(e,t,a,n,r,i)=>((e,t,a,n,r,i)=>{let c=((e,t,a,n,r,i,c=!1)=>{let l,d=(l=e.replace(/\[.*?\]$/,"").match(/claude-(\w+-[\d]+(?:-[\d]+)*)(?:-\d{8}|-v\d)?(?:\:\d)?$/))?l[1]:null;if(!d)return null;let h=c&&"opus-4-6"===d?u:s[d];return h?o(h,t,a,n,r,i):null})(e,t,a,n,r,i);if(null!==c)return c;let l=e.toLowerCase();return o(l.includes("opus")?s["opus-4-6"]:l.includes("haiku")?s["haiku-4-5"]:s["sonnet-4-6"],t,a,n,r,i)})(e,t,a,r,i,n),d={version:0,lastComputedDate:"",dailyActivity:[],dailyModelTokens:[],modelUsage:{},totalSessions:0,totalMessages:0,longestSession:{sessionId:"",duration:0,messageCount:0,timestamp:""},firstSessionDate:"",hourCounts:{},dayHourCounts:{},totalSpeculationTimeSavedMs:0},h=e=>"object"!=typeof e||null===e?{}:Object.fromEntries(Object.entries(e).map(([e,t])=>[e,Number(t??0)])),p=async()=>{try{var e,a,n;let r=await t.default.readFile(c,"utf-8"),i=JSON.parse(r);return{version:Number(i.version??0),lastComputedDate:String(i.lastComputedDate??""),dailyActivity:(e=i.dailyActivity,Array.isArray(e)?e.filter(e=>"object"==typeof e&&null!==e).map(e=>({date:String(e.date??""),messageCount:Number(e.messageCount??0),sessionCount:Number(e.sessionCount??0),toolCallCount:Number(e.toolCallCount??0)})):[]),dailyModelTokens:(a=i.dailyModelTokens,Array.isArray(a)?a.filter(e=>"object"==typeof e&&null!==e).map(e=>({date:String(e.date??""),tokensByModel:"object"==typeof e.tokensByModel&&null!==e.tokensByModel?Object.fromEntries(Object.entries(e.tokensByModel).map(([e,t])=>[e,(e=>{if("number"==typeof e)return{input:e,output:0,cacheRead:0,cacheCreation:0,cacheCreation5m:0,cacheCreation1h:0};if("object"==typeof e&&null!==e){let t=Number(e.cacheCreation??0),a=Number(e.cacheCreation1h??0),n=null!=e.cacheCreation5m?Number(e.cacheCreation5m):Math.max(0,t-a);return{input:Number(e.input??0),output:Number(e.output??0),cacheRead:Number(e.cacheRead??0),cacheCreation:t,cacheCreation5m:n,cacheCreation1h:a}}return{input:0,output:0,cacheRead:0,cacheCreation:0,cacheCreation5m:0,cacheCreation1h:0}})(t)])):{}})):[]),modelUsage:(e=>{if("object"!=typeof e||null===e)return{};let t={};for(let[a,n]of Object.entries(e)){if("object"!=typeof n||null===n)continue;let e=Number(n.cacheCreationInputTokens??0),r=Number(n.cacheCreation1hInputTokens??0),i=null!=n.cacheCreation5mInputTokens?Number(n.cacheCreation5mInputTokens):Math.max(0,e-r);t[a]={inputTokens:Number(n.inputTokens??0),outputTokens:Number(n.outputTokens??0),cacheReadInputTokens:Number(n.cacheReadInputTokens??0),cacheCreationInputTokens:e,cacheCreation5mInputTokens:i,cacheCreation1hInputTokens:r,webSearchRequests:Number(n.webSearchRequests??0),costUSD:Number(n.costUSD??0),contextWindow:Number(n.contextWindow??0),maxOutputTokens:Number(n.maxOutputTokens??0)}}return t})(i.modelUsage),totalSessions:Number(i.totalSessions??0),totalMessages:Number(i.totalMessages??0),longestSession:(n=i.longestSession,"object"!=typeof n||null===n?{sessionId:"",duration:0,messageCount:0,timestamp:""}:{sessionId:String(n.sessionId??""),duration:Number(n.duration??0),messageCount:Number(n.messageCount??0),timestamp:String(n.timestamp??"")}),firstSessionDate:String(i.firstSessionDate??""),hourCounts:h(i.hourCounts),dayHourCounts:h(i.dayHourCounts),totalSpeculationTimeSavedMs:Number(i.totalSpeculationTimeSavedMs??0)}}catch{return d}},f=(e,t)=>{let a=(e=>{if("all"===e||"today"===e)return null;let t="7d"===e?7:30;return{prevStart:(0,r.default)().subtract(2*t,"day").startOf("day"),prevEnd:(0,r.default)().subtract(t,"day").startOf("day")}})(t);if(!a)return!1;let n=(0,r.default)(e);return(n.isAfter(a.prevStart)||n.isSame(a.prevStart))&&n.isBefore(a.prevEnd)};e.s(["buildOverview",0,(e,t)=>{let a,n,s,u,o=e.dailyActivity.filter(e=>(0,i.isDateStringWithinPeriod)(e.date,t)),c=e.dailyModelTokens.filter(e=>(0,i.isDateStringWithinPeriod)(e.date,t)),d="all"===t?e.totalSessions:o.reduce((e,t)=>e+t.sessionCount,0),h="all"===t?e.totalMessages:o.reduce((e,t)=>e+t.messageCount,0),p=o.reduce((e,t)=>e+t.toolCallCount,0),m=(a=e.dailyActivity,n=t,a.filter(e=>f(e.date,n))),y=m.reduce((e,t)=>e+t.sessionCount,0),C=m.reduce((e,t)=>e+t.messageCount,0),v={};if("all"===t)for(let[t,a]of Object.entries(e.modelUsage))v[t]={input:a.inputTokens,output:a.outputTokens,cacheRead:a.cacheReadInputTokens,cacheCreation:a.cacheCreationInputTokens,cacheCreation5m:a.cacheCreation5mInputTokens,cacheCreation1h:a.cacheCreation1hInputTokens,cost:l(t,a.inputTokens,a.outputTokens,a.cacheReadInputTokens,a.cacheCreation5mInputTokens,a.cacheCreation1hInputTokens)};else{for(let e of c)for(let[t,a]of Object.entries(e.tokensByModel))v[t]||(v[t]={input:0,output:0,cacheRead:0,cacheCreation:0,cacheCreation5m:0,cacheCreation1h:0,cost:0}),v[t].input+=a.input,v[t].output+=a.output,v[t].cacheRead+=a.cacheRead,v[t].cacheCreation+=a.cacheCreation,v[t].cacheCreation5m+=a.cacheCreation5m,v[t].cacheCreation1h+=a.cacheCreation1h;for(let[t,a]of Object.entries(v)){let n=e.modelUsage[t];if(!n)continue;let r=n.inputTokens+n.outputTokens+n.cacheReadInputTokens+n.cacheCreationInputTokens,i=a.input+a.output+a.cacheRead+a.cacheCreation;r>0&&(a.cost=i/r*l(t,n.inputTokens,n.outputTokens,n.cacheReadInputTokens,n.cacheCreation5mInputTokens,n.cacheCreation1hInputTokens))}}let $=c.map(e=>{let t=0,a=0,n=0,r=0;for(let i of Object.values(e.tokensByModel))t+=i.input,a+=i.output,n+=i.cacheRead,r+=i.cacheCreation;return{date:e.date,input:t,output:a,cacheRead:n,cacheCreation:r}}),g=(0,r.default)().format("YYYY-MM-DD"),b=(0,r.default)().startOf("month").format("YYYY-MM-DD"),S=e.dailyActivity.find(e=>e.date===g)?.messageCount??0,k=e.dailyActivity.filter(e=>e.date>=b).reduce((e,t)=>e+t.messageCount,0),M=Object.values(v).reduce((e,t)=>e+t.cost,0),T=t=>{let a=0;for(let n of t)for(let[t,r]of Object.entries(n.tokensByModel)){let n=e.modelUsage[t];if(!n)continue;let i=n.inputTokens+n.outputTokens+n.cacheReadInputTokens+n.cacheCreationInputTokens,s=r.input+r.output+r.cacheRead+r.cacheCreation;i>0&&(a+=s/i*l(t,n.inputTokens,n.outputTokens,n.cacheReadInputTokens,n.cacheCreation5mInputTokens,n.cacheCreation1hInputTokens))}return a},D=T(e.dailyModelTokens.filter(e=>e.date===g));return{totalSessions:d,totalMessages:h,previousSessions:y,previousMessages:C,totalToolCalls:p,dailyActivity:o,modelTokens:v,dailyTokens:$,todayMessages:S,thisMonthMessages:k,totalCost:M,todayCost:D,thisMonthCost:T(e.dailyModelTokens.filter(e=>e.date>=b)),previousCost:T((s=e.dailyModelTokens,u=t,s.filter(e=>f(e.date,u)))),hourlyDistribution:e.hourCounts,dayHourDistribution:e.dayHourCounts,firstSessionDate:e.firstSessionDate,lastComputedDate:e.lastComputedDate,computedAt:new Date().toISOString()}},"readStatsCache",0,p],180112)},219839,e=>{"use strict";var t=e.i(926747),a=e.i(190406),n=e.i(244898),r=e.i(262950),i=e.i(177579),s=e.i(180112),u=e.i(7991);let o=async(e,t)=>{if("GET"!==e.method)return t.setHeader("Allow","GET"),t.status(405).json({error:"method-not-allowed"});let a=Math.max(0,Number(e.query.offset)||0),n=Math.min(50,Math.max(1,Number(e.query.limit)||10)),[r,o]=await Promise.all([(0,i.getStatsCache)(),(0,u.readAllCachedReports)()]),c=(0,s.buildOverview)(r,"all"),l=c.dailyTokens.reduce((e,t)=>e+t.input+t.output+t.cacheRead+t.cacheCreation,0),d=Object.values(c.modelTokens).reduce((e,t)=>e+t.cost,0),h=c.dailyActivity.filter(e=>e.sessionCount>0).map(e=>{let t=c.dailyTokens.find(t=>t.date===e.date),a=t?t.input+t.output+t.cacheRead+t.cacheCreation:0;return{date:e.date,sessionCount:e.sessionCount,cost:l>0?a/l*d:0,report:o[e.date]??null}}).sort((e,t)=>t.date.localeCompare(e.date)),p={days:h.slice(a,a+n),total:h.length,offset:a,limit:n};return t.status(200).json(p)};e.s(["default",0,o],730099);var c=e.i(730099),l=e.i(7031),d=e.i(181927),h=e.i(846432);let p=(0,r.hoist)(c,"default"),f=(0,r.hoist)(c,"config"),m=new n.PagesAPIRouteModule({definition:{kind:a.RouteKind.PAGES_API,page:"/api/stats/daily-report/list",pathname:"/api/stats/daily-report/list",bundlePath:"",filename:""},userland:c,distDir:".next",relativeProjectDir:""});async function y(e,a,n){n.requestMeta&&(0,h.setRequestMeta)(e,n.requestMeta),m.isDev&&(0,h.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let r="/api/stats/daily-report/list";r=r.replace(/\/index$/,"")||"/";let i=await m.prepare(e,a,{srcPage:r});if(!i){a.statusCode=400,a.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve());return}let{query:s,params:u,prerenderManifest:o,routerServerContext:c}=i;try{let t,n=e.method||"GET",i=(0,l.getTracer)(),h=i.getActiveScopeSpan(),p=!!(null==c?void 0:c.isWrappedByNextServer),f=m.instrumentationOnRequestError.bind(m),y=async l=>m.render(e,a,{query:{...s,...u},params:u,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:o.preview,propagateError:!1,dev:m.isDev,page:"/api/stats/daily-report/list",internalRevalidate:null==c?void 0:c.revalidate,onError:(...t)=>f(e,...t)}).finally(()=>{if(!l)return;l.setAttributes({"http.status_code":a.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 s=e.get("next.route");if(s){let e=`${n} ${s}`;l.setAttributes({"next.route":s,"http.route":s,"next.span_name":e}),l.updateName(e),t&&t!==l&&(t.setAttribute("http.route",s),t.updateName(e))}else l.updateName(`${n} ${r}`)});p&&h?await y(h):(t=i.getActiveScopeSpan(),await i.withPropagatedContext(e.headers,()=>i.trace(d.BaseServerSpan.handleRequest,{spanName:`${n} ${r}`,kind:l.SpanKind.SERVER,attributes:{"http.method":n,"http.target":e.url}},y),void 0,!p))}catch(e){if(m.isDev)throw e;(0,t.sendError)(a,500,"Internal Server Error")}finally{null==n.waitUntil||n.waitUntil.call(n,Promise.resolve())}}e.s(["config",0,f,"default",0,p,"handler",0,y],219839)}];
2
-
3
- //# sourceMappingURL=_0e8e4zn._.js.map