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.
- package/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/build-manifest.json +88 -88
- package/.next/standalone/.next/prerender-manifest.json +3 -3
- package/.next/standalone/.next/required-server-files.json +1 -1
- package/.next/standalone/.next/routes-manifest.json +51 -7
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0t1c-6w._.js → [root-of-the-server]__016s4a9._.js} +2 -2
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__05ij_ys._.js +2 -2
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0cjfc~l._.js → [root-of-the-server]__06h3gzy._.js} +2 -2
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__08tdlcm._.js +3 -0
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0qda0wx._.js → [root-of-the-server]__0_fu3k.._.js} +1 -1
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0pv48rv._.js → [root-of-the-server]__0_imm_0._.js} +1 -1
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0ef59mr._.js → [root-of-the-server]__0abp0lo._.js} +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0auutl5._.js +2 -2
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0bo-su1._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0bocpgx._.js +30 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0c-bb5d._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0dt2efu._.js +3 -0
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0zjping._.js → [root-of-the-server]__0g8mjyh._.js} +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ihlt6s._.js +3 -0
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__045g9-a._.js → [root-of-the-server]__0lk7ru8._.js} +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0l~_wd0._.js +1 -1
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__04o.cbq._.js → [root-of-the-server]__0m99ffd._.js} +2 -2
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0hzysmw._.js → [root-of-the-server]__0q8lffz._.js} +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0vjtjtc._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0x_e0yw._.js +3 -0
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0t7wqt6._.js → [root-of-the-server]__10h2vlr._.js} +2 -2
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__11iyaqz._.js +3 -0
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__00yjayf._.js → [root-of-the-server]__121-6-e._.js} +2 -2
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__12ksl6n._.js +2 -2
- package/.next/standalone/.next/server/chunks/{_0out7wm._.js → _0-mgr1c._.js} +1 -1
- package/.next/standalone/.next/server/chunks/_0.5a4bu._.js +3 -0
- package/.next/standalone/.next/server/chunks/{_134uyu_._.js → _03-duro._.js} +1 -1
- package/.next/standalone/.next/server/chunks/_05-8rnc._.js +3 -0
- package/.next/standalone/.next/server/chunks/{_0ap4fy.._.js → _07097f~._.js} +1 -1
- package/.next/standalone/.next/server/chunks/{_0st-_d~._.js → _0jzxge9._.js} +1 -1
- package/.next/standalone/.next/server/chunks/{_0uo_gs5._.js → _0ll-5~7._.js} +1 -1
- package/.next/standalone/.next/server/chunks/_0mhomq~._.js +3 -0
- package/.next/standalone/.next/server/chunks/{_0.hbe-v._.js → _0pk0hms._.js} +1 -1
- package/.next/standalone/.next/server/chunks/_0qm27ix._.js +3 -0
- package/.next/standalone/.next/server/chunks/{_0su2osz._.js → _0v81st0._.js} +1 -1
- package/.next/standalone/.next/server/chunks/_0vgpyhz._.js +3 -0
- package/.next/standalone/.next/server/chunks/{_1368r9s._.js → _0w0qjyh._.js} +1 -1
- package/.next/standalone/.next/server/chunks/_0wok5xu._.js +3 -0
- package/.next/standalone/.next/server/chunks/{_0tumyht._.js → _0wu6uxd._.js} +1 -1
- package/.next/standalone/.next/server/chunks/{_04dq3gt._.js → _0z7d6.z._.js} +1 -1
- package/.next/standalone/.next/server/chunks/{_0c63jma._.js → _0zf5mig._.js} +1 -1
- package/.next/standalone/.next/server/chunks/{_0mnwbyo._.js → _0~~9-pj._.js} +1 -1
- package/.next/standalone/.next/server/chunks/{src_lib_0vs5asg._.js → src_lib_0p.xsqi._.js} +1 -1
- package/.next/standalone/.next/server/chunks/src_lib_layout-store_ts_0fanx7c._.js +1 -1
- package/.next/standalone/.next/server/chunks/src_lib_workspace-store_ts_0vqt073._.js +2 -2
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0da5cj~._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{[root-of-the-server]__0hwcydd._.js → [root-of-the-server]__0grkevn._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0t9ru13._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__12b2-y_._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_0-ug5tr._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{_00rrt71._.js → _016o9_-._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{_0y5jzd3._.js → _020f2r.._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{_0_c~3id._.js → _02jzd5g._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_04iqb-o._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{_0sfctwm._.js → _04q3_kj._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{_08h9ynz._.js → _058y~nz._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{_0_soefg._.js → _0a_u5qm._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{_00ehnd~._.js → _0c1yivm._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{_0kno-5w._.js → _0d58w1~._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{_0rxhzwm._.js → _0ftinmo._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_0h4kenr._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_0nib_x8._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_0nuztht._.js +18 -0
- package/.next/standalone/.next/server/chunks/ssr/_0nvs1~o._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_0oca87b._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_0ovjjn5._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{_0lnui2f._.js → _0ozy~xe._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_0pg-q18._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{_0svke5s._.js → _0pk4~_0._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_0qt-m3l._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_0w.1ts8._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_0w1phzp._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_0w6jc9p._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_101yu0w._.js +18 -0
- package/.next/standalone/.next/server/chunks/ssr/_13c-b~p._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_13lrp9_._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{messages_046iw4z._.js → messages_02eoowy._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{messages_0zr0cc7._.js → messages_0hmq5dp._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_de_diff_json_[json]_cjs_0w6blyy._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_de_settings_json_[json]_cjs_0ksu4_w._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_de_sidebar_json_[json]_cjs_0loc-1-._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_de_workspace_json_[json]_cjs_0g7nkdq._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_en_diff_json_[json]_cjs_0z34_dc._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_en_settings_json_[json]_cjs_0qwl-zt._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_en_sidebar_json_[json]_cjs_0un0e3f._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_en_workspace_json_[json]_cjs_0m9rzyy._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_es_diff_json_[json]_cjs_0kheix4._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_es_settings_json_[json]_cjs_0ce_kv6._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_es_sidebar_json_[json]_cjs_080u46~._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_es_workspace_json_[json]_cjs_0xf0_50._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_fr_diff_json_[json]_cjs_11vxoy5._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_fr_settings_json_[json]_cjs_0h_6lba._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_fr_sidebar_json_[json]_cjs_05y8v8h._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_fr_workspace_json_[json]_cjs_0h88f-g._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_ja_diff_json_[json]_cjs_0t~9dro._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_ja_settings_json_[json]_cjs_0pg~fls._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_ja_sidebar_json_[json]_cjs_0i0x8w9._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_ja_workspace_json_[json]_cjs_03dlzmi._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_ko_diff_json_[json]_cjs_0cw7xj1._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_ko_settings_json_[json]_cjs_07xpfc8._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_ko_sidebar_json_[json]_cjs_0mql5dv._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_ko_workspace_json_[json]_cjs_0frxg.r._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_pt-BR_diff_json_[json]_cjs_0vc-p7n._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_pt-BR_settings_json_[json]_cjs_0frspzp._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_pt-BR_sidebar_json_[json]_cjs_07h4b1q._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_pt-BR_workspace_json_[json]_cjs_0lahru2._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_ru_diff_json_[json]_cjs_07na~n8._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_ru_settings_json_[json]_cjs_08ex00.._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_ru_sidebar_json_[json]_cjs_0aksrjo._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_ru_workspace_json_[json]_cjs_0wm5nhc._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_tr_diff_json_[json]_cjs_0a00gr_._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_tr_settings_json_[json]_cjs_0piu0da._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_tr_sidebar_json_[json]_cjs_0yj47nu._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_tr_workspace_json_[json]_cjs_0wygfyf._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_zh-CN_diff_json_[json]_cjs_0b01x_1._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_zh-CN_settings_json_[json]_cjs_0uazwgy._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_zh-CN_sidebar_json_[json]_cjs_0yzmolg._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_zh-CN_workspace_json_[json]_cjs_0h3v0-e._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_zh-TW_diff_json_[json]_cjs_088r89k._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_zh-TW_settings_json_[json]_cjs_09u0c5l._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_zh-TW_sidebar_json_[json]_cjs_0pnu~0h._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_zh-TW_workspace_json_[json]_cjs_0ymw5wz._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/node_modules_02oar3h._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_0_2gaq0._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/node_modules_0bbmd88._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/node_modules_0ydhwnx._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/node_modules_1294wzs._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{src_components_0rs9yzr._.js → src_components_0_aiven._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{src_components_0cflin8._.js → src_components_0geizrr._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{src_components_0g.s~e7._.js → src_components_11_1i~k._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{src_components_0jrj_vu._.js → src_components_12mrirb._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_components_features_mobile_mobile-terminal-page_tsx_02chzch._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_components_features_workspace_terminal-page_tsx_0wuq-jl._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_components_ui_input_tsx_0pgha5u._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/src_hooks_use-browser-title_ts_0bw6.cb._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_hooks_use-workspace-store_ts_0h40e5c._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_lib_workspace-store_ts_00x-rec._.js +1 -1
- package/.next/standalone/.next/server/middleware-build-manifest.js +88 -88
- package/.next/standalone/.next/server/pages/_app/build-manifest.json +7 -6
- package/.next/standalone/.next/server/pages/_app/client-build-manifest.json +1 -1
- package/.next/standalone/.next/server/pages/_app.js +5 -5
- package/.next/standalone/.next/server/pages/_app.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/_document.js +3 -3
- package/.next/standalone/.next/server/pages/_document.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/_error.js +4 -4
- package/.next/standalone/.next/server/pages/_error.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/cli/tabs/[tabId]/result.js +2 -2
- package/.next/standalone/.next/server/pages/api/cli/tabs/[tabId]/result.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/cli/tabs/[tabId]/send.js +2 -2
- package/.next/standalone/.next/server/pages/api/cli/tabs/[tabId]/send.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/cli/tabs/[tabId]/status.js +2 -2
- package/.next/standalone/.next/server/pages/api/cli/tabs/[tabId]/status.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/cli/tabs/[tabId].js +2 -2
- package/.next/standalone/.next/server/pages/api/cli/tabs/[tabId].js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/cli/tabs.js +2 -2
- package/.next/standalone/.next/server/pages/api/cli/tabs.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/cli/workspaces.js +1 -1
- package/.next/standalone/.next/server/pages/api/cli/workspaces.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/git/sync/pages-manifest.json +3 -0
- package/.next/standalone/.next/server/pages/api/git/sync.js +5 -0
- package/.next/standalone/.next/server/pages/api/git/sync.js.map +5 -0
- package/.next/standalone/.next/server/pages/api/git/sync.js.nft.json +1 -0
- package/.next/standalone/.next/server/pages/api/layout/commit-diff/pages-manifest.json +3 -0
- package/.next/standalone/.next/server/pages/api/layout/commit-diff.js +5 -0
- package/.next/standalone/.next/server/pages/api/layout/commit-diff.js.map +5 -0
- package/.next/standalone/.next/server/pages/api/layout/commit-diff.js.nft.json +1 -0
- package/.next/standalone/.next/server/pages/api/layout/file-content/pages-manifest.json +3 -0
- package/.next/standalone/.next/server/pages/api/layout/file-content.js +5 -0
- package/.next/standalone/.next/server/pages/api/layout/file-content.js.map +5 -0
- package/.next/standalone/.next/server/pages/api/layout/file-content.js.nft.json +1 -0
- package/.next/standalone/.next/server/pages/api/layout/git-log/pages-manifest.json +3 -0
- package/.next/standalone/.next/server/pages/api/layout/git-log.js +5 -0
- package/.next/standalone/.next/server/pages/api/layout/git-log.js.map +5 -0
- package/.next/standalone/.next/server/pages/api/layout/git-log.js.nft.json +1 -0
- package/.next/standalone/.next/server/pages/api/layout/pane/[paneId]/tabs/[tabId]/move.js +2 -2
- package/.next/standalone/.next/server/pages/api/layout/pane/[paneId]/tabs/[tabId]/move.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/layout/pane/[paneId]/tabs/[tabId].js +3 -3
- package/.next/standalone/.next/server/pages/api/layout/pane/[paneId]/tabs/[tabId].js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/layout/pane/[paneId]/tabs/order.js +2 -2
- package/.next/standalone/.next/server/pages/api/layout/pane/[paneId]/tabs/order.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/layout/pane/[paneId]/tabs.js +3 -3
- package/.next/standalone/.next/server/pages/api/layout/pane/[paneId]/tabs.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/layout/pane/[paneId].js +2 -2
- package/.next/standalone/.next/server/pages/api/layout/pane/[paneId].js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/layout/pane.js +2 -2
- package/.next/standalone/.next/server/pages/api/layout/pane.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/layout.js +2 -2
- package/.next/standalone/.next/server/pages/api/layout.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/message-history.js +1 -1
- package/.next/standalone/.next/server/pages/api/message-history.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/push/vapid-key.js +1 -1
- package/.next/standalone/.next/server/pages/api/push/vapid-key.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/stats/daily-report/cache.js +1 -1
- package/.next/standalone/.next/server/pages/api/stats/daily-report/cache.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/stats/daily-report/generate.js +1 -1
- package/.next/standalone/.next/server/pages/api/stats/daily-report/generate.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/stats/daily-report/list.js +2 -2
- package/.next/standalone/.next/server/pages/api/stats/daily-report/list.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/stats/projects.js +2 -2
- package/.next/standalone/.next/server/pages/api/stats/projects.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/stats/sessions.js +2 -2
- package/.next/standalone/.next/server/pages/api/stats/sessions.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/stats/uptime.js +2 -2
- package/.next/standalone/.next/server/pages/api/stats/uptime.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/status/hook.js +3 -3
- package/.next/standalone/.next/server/pages/api/status/hook.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/status/statusline.js +5 -5
- package/.next/standalone/.next/server/pages/api/status/statusline.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/tmux/permission-options.js +1 -1
- package/.next/standalone/.next/server/pages/api/tmux/permission-options.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/tmux/recover-unknown.js +5 -5
- package/.next/standalone/.next/server/pages/api/tmux/recover-unknown.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/tmux/reset.js +3 -3
- package/.next/standalone/.next/server/pages/api/tmux/reset.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/workspace/[workspaceId].js +2 -2
- package/.next/standalone/.next/server/pages/api/workspace/[workspaceId].js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/workspace/active.js +2 -2
- package/.next/standalone/.next/server/pages/api/workspace/active.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/workspace/group/[groupId]/pages-manifest.json +3 -0
- package/.next/standalone/.next/server/pages/api/workspace/group/[groupId].js +8 -0
- package/.next/standalone/.next/server/pages/api/workspace/group/[groupId].js.map +5 -0
- package/.next/standalone/.next/server/pages/api/workspace/group/[groupId].js.nft.json +1 -0
- package/.next/standalone/.next/server/pages/api/workspace/group/pages-manifest.json +3 -0
- package/.next/standalone/.next/server/pages/api/workspace/group/reorder/pages-manifest.json +3 -0
- package/.next/standalone/.next/server/pages/api/workspace/group/reorder.js +8 -0
- package/.next/standalone/.next/server/pages/api/workspace/group/reorder.js.map +5 -0
- package/.next/standalone/.next/server/pages/api/workspace/group/reorder.js.nft.json +1 -0
- package/.next/standalone/.next/server/pages/api/workspace/group.js +8 -0
- package/.next/standalone/.next/server/pages/api/workspace/group.js.map +5 -0
- package/.next/standalone/.next/server/pages/api/workspace/group.js.nft.json +1 -0
- package/.next/standalone/.next/server/pages/api/workspace/reorder.js +2 -2
- package/.next/standalone/.next/server/pages/api/workspace/reorder.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/workspace/validate.js +2 -2
- package/.next/standalone/.next/server/pages/api/workspace/validate.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/workspace.js +4 -4
- package/.next/standalone/.next/server/pages/api/workspace.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/de/404.html +1 -1
- package/.next/standalone/.next/server/pages/de/500.html +1 -1
- package/.next/standalone/.next/server/pages/en/404.html +1 -1
- package/.next/standalone/.next/server/pages/en/500.html +1 -1
- package/.next/standalone/.next/server/pages/es/404.html +1 -1
- package/.next/standalone/.next/server/pages/es/500.html +1 -1
- package/.next/standalone/.next/server/pages/fr/404.html +1 -1
- package/.next/standalone/.next/server/pages/fr/500.html +1 -1
- package/.next/standalone/.next/server/pages/index/build-manifest.json +17 -17
- package/.next/standalone/.next/server/pages/index/client-build-manifest.json +1 -1
- package/.next/standalone/.next/server/pages/index/react-loadable-manifest.json +4 -4
- package/.next/standalone/.next/server/pages/index.js +16 -16
- package/.next/standalone/.next/server/pages/index.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/ja/404.html +1 -1
- package/.next/standalone/.next/server/pages/ja/500.html +1 -1
- package/.next/standalone/.next/server/pages/ko/404.html +1 -1
- package/.next/standalone/.next/server/pages/ko/500.html +1 -1
- package/.next/standalone/.next/server/pages/login/build-manifest.json +9 -10
- package/.next/standalone/.next/server/pages/login/client-build-manifest.json +1 -1
- package/.next/standalone/.next/server/pages/login.js +10 -10
- package/.next/standalone/.next/server/pages/login.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/pt-BR/404.html +1 -1
- package/.next/standalone/.next/server/pages/pt-BR/500.html +1 -1
- package/.next/standalone/.next/server/pages/reports/build-manifest.json +17 -17
- package/.next/standalone/.next/server/pages/reports/client-build-manifest.json +1 -1
- package/.next/standalone/.next/server/pages/reports.js +16 -16
- package/.next/standalone/.next/server/pages/reports.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/reset.js +5 -5
- package/.next/standalone/.next/server/pages/reset.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/ru/404.html +1 -1
- package/.next/standalone/.next/server/pages/ru/500.html +1 -1
- package/.next/standalone/.next/server/pages/stats/build-manifest.json +16 -16
- package/.next/standalone/.next/server/pages/stats/client-build-manifest.json +1 -1
- package/.next/standalone/.next/server/pages/stats.js +17 -17
- package/.next/standalone/.next/server/pages/stats.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/tools-required/build-manifest.json +3 -3
- package/.next/standalone/.next/server/pages/tools-required/client-build-manifest.json +1 -1
- package/.next/standalone/.next/server/pages/tools-required.js +6 -6
- package/.next/standalone/.next/server/pages/tools-required.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/tr/404.html +1 -1
- package/.next/standalone/.next/server/pages/tr/500.html +1 -1
- package/.next/standalone/.next/server/pages/webview/build-manifest.json +16 -16
- package/.next/standalone/.next/server/pages/webview/client-build-manifest.json +1 -1
- package/.next/standalone/.next/server/pages/webview.js +18 -18
- package/.next/standalone/.next/server/pages/webview.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/zh-CN/404.html +1 -1
- package/.next/standalone/.next/server/pages/zh-CN/500.html +1 -1
- package/.next/standalone/.next/server/pages/zh-TW/404.html +1 -1
- package/.next/standalone/.next/server/pages/zh-TW/500.html +1 -1
- package/.next/standalone/.next/server/pages-manifest.json +7 -0
- package/.next/standalone/.next/static/{5mb_D_gy6E3wsT_BhuXDS → X7BRO7ORR4bKFt1LXzGU8}/_buildManifest.js +13 -6
- package/.next/standalone/.next/static/chunks/0-7en.d6a3jki.js +1 -0
- package/.next/standalone/.next/static/chunks/{0qr~rkd5sq-yp.js → 0-p.9vdmq-_co.js} +7 -6
- package/.next/standalone/.next/static/chunks/0-pm5wxsyxs3e.js +1 -0
- package/.next/standalone/.next/static/chunks/00ljvc.i_9p~6.js +1 -0
- package/.next/standalone/.next/static/chunks/01raz3nv-e~~d.js +1 -0
- package/.next/standalone/.next/static/chunks/01ul8lmr04ls3.js +1 -0
- package/.next/standalone/.next/static/chunks/024gkwka6p59k.js +1 -0
- package/.next/standalone/.next/static/chunks/{0.ecwkadp7-hq.js → 034_utxy1sujb.js} +1 -1
- package/.next/standalone/.next/static/chunks/038h8wl_~fi3u.js +1 -0
- package/.next/standalone/.next/static/chunks/038s7u_er9zkt.js +1 -0
- package/.next/standalone/.next/static/chunks/03ljx9csfmrpn.js +1 -0
- package/.next/standalone/.next/static/chunks/03sj62c3p8g11.js +1 -0
- package/.next/standalone/.next/static/chunks/{17l496oycdhjx.js → 03vck__37a5cl.js} +1 -1
- package/.next/standalone/.next/static/chunks/05b7zy0n0vhms.js +1 -0
- package/.next/standalone/.next/static/chunks/05kshd9vdrl4o.js +1 -0
- package/.next/standalone/.next/static/chunks/{0w_03xk_xkc5a.js → 05kyduw8swd_h.js} +1 -1
- package/.next/standalone/.next/static/chunks/05w~qu2zpvh2f.js +1 -0
- package/.next/standalone/.next/static/chunks/05zne4hn1v65k.js +24 -0
- package/.next/standalone/.next/static/chunks/06vobum5720oa.js +1 -0
- package/.next/standalone/.next/static/chunks/06vxx-4w.uvj0.js +23 -0
- package/.next/standalone/.next/static/chunks/{0fotmrplo6yc7.js → 07.5h~7~q9~1e.js} +1 -1
- package/.next/standalone/.next/static/chunks/071hdd91oy~.7.js +1 -0
- package/.next/standalone/.next/static/chunks/08e5.t4gotxaw.js +1 -0
- package/.next/standalone/.next/static/chunks/{0v6__.cfcitpl.js → 08qhrobub25u0.js} +1 -1
- package/.next/standalone/.next/static/chunks/08ttt2~ok56v6.js +1 -0
- package/.next/standalone/.next/static/chunks/{11wdicoufd516.js → 094_-.5.ue3p4.js} +1 -1
- package/.next/standalone/.next/static/chunks/09qd4fo1rz3it.js +1 -0
- package/.next/standalone/.next/static/chunks/09sf~1tyznv2b.js +1 -0
- package/.next/standalone/.next/static/chunks/09x4be2pfe6z0.js +1 -0
- package/.next/standalone/.next/static/chunks/0a7eicps6hbl6.js +1 -0
- package/.next/standalone/.next/static/chunks/{0i2uqmry6cyl_.js → 0c2_tqkbyti3h.js} +1 -1
- package/.next/standalone/.next/static/chunks/0di4o-khzv2gt.js +1 -0
- package/.next/standalone/.next/static/chunks/0e20ujygcf3hc.js +1 -0
- package/.next/standalone/.next/static/chunks/0e5t3kx~_brfk.js +1 -0
- package/.next/standalone/.next/static/chunks/0ebjicjua7yl-.js +1 -0
- package/.next/standalone/.next/static/chunks/0evu-825nnqef.js +1 -0
- package/.next/standalone/.next/static/chunks/0f.5lthmbt~yc.js +1 -0
- package/.next/standalone/.next/static/chunks/0gr4lznv-6qml.js +1 -0
- package/.next/standalone/.next/static/chunks/0hl3ccityypgx.js +1 -0
- package/.next/standalone/.next/static/chunks/0hzis~e79cnwi.js +1 -0
- package/.next/standalone/.next/static/chunks/0j.sfmmqj2xel.js +23 -0
- package/.next/standalone/.next/static/chunks/0jkvb4hgqlgxk.js +1 -0
- package/.next/standalone/.next/static/chunks/0k2_zze3o98ow.js +1 -0
- package/.next/standalone/.next/static/chunks/0kaufevqdhsld.js +1 -0
- package/.next/standalone/.next/static/chunks/0mvvym~9uf429.js +1 -0
- package/.next/standalone/.next/static/chunks/0n2k1al4sr_qq.css +1 -0
- package/.next/standalone/.next/static/chunks/0n4fv8.loh_0x.js +1 -0
- package/.next/standalone/.next/static/chunks/0nn618je7_7ec.js +16 -0
- package/.next/standalone/.next/static/chunks/{0pb15t~lqcp4y.js → 0oh5xnzizgxt1.js} +1 -1
- package/.next/standalone/.next/static/chunks/0po8l-8pns0vb.js +1 -0
- package/.next/standalone/.next/static/chunks/0pv9~yath4mjh.js +1 -0
- package/.next/standalone/.next/static/chunks/0q0yh17_ncipj.js +1 -0
- package/.next/standalone/.next/static/chunks/0q9nn4yuva4jl.js +1 -0
- package/.next/standalone/.next/static/chunks/0qkrdmhiv-0d3.js +1 -0
- package/.next/standalone/.next/static/chunks/{14xlpbx6dj_4i.js → 0r9z55-r31en8.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0efkrks2gm27v.js → 0ra09kjja5rf..js} +1 -1
- package/.next/standalone/.next/static/chunks/0reai1zdu.khx.js +1 -0
- package/.next/standalone/.next/static/chunks/0sc7tkg1gojr..js +1 -0
- package/.next/standalone/.next/static/chunks/0szl_dovu0hgw.js +1 -0
- package/.next/standalone/.next/static/chunks/{0axhnd2vw3m5e.js → 0t-o-jwf0~-b5.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0ml5~2ty-rbv_.js → 0t5w4x7owhfbe.js} +1 -1
- package/.next/standalone/.next/static/chunks/{02mfn213kze9c.js → 0te1jnz5.rt.r.js} +3 -3
- package/.next/standalone/.next/static/chunks/0uhkmh73bi.8w.js +1 -0
- package/.next/standalone/.next/static/chunks/0v6zafwjb5kk6.js +1 -0
- package/.next/standalone/.next/static/chunks/0vvqh.pfm9jum.js +1 -0
- package/.next/standalone/.next/static/chunks/0w6_q_4rzxy6l.js +1 -0
- package/.next/standalone/.next/static/chunks/0wjrfyntnywn5.js +1 -0
- package/.next/standalone/.next/static/chunks/0wvu-lowt9uem.js +1 -0
- package/.next/standalone/.next/static/chunks/0x.dxrfqc.ix9.js +16 -0
- package/.next/standalone/.next/static/chunks/0xvbx6ob2wnco.js +1 -0
- package/.next/standalone/.next/static/chunks/0yd3l8p2m9-c_.js +1 -0
- package/.next/standalone/.next/static/chunks/0ynitrrzdxcnh.js +15 -0
- package/.next/standalone/.next/static/chunks/{0se1ra8f1bor~.js → 0z_~g~mb.kjs1.js} +1 -1
- package/.next/standalone/.next/static/chunks/0~nexgc77r_hk.js +23 -0
- package/.next/standalone/.next/static/chunks/{0afll97o4hu39.js → 0~ts_4hi7.u_0.js} +1 -1
- package/.next/standalone/.next/static/chunks/105sb_yg7fcpu.js +1 -0
- package/.next/standalone/.next/static/chunks/{0a0wcelktujjt.js → 119t_hwpxj_ko.js} +1 -1
- package/.next/standalone/.next/static/chunks/{128d.rbx4e4rt.js → 121i8u8byuotx.js} +1 -1
- package/.next/standalone/.next/static/chunks/13_l03e3sab-g.js +1 -0
- package/.next/standalone/.next/static/chunks/13~.y-z7wud.h.js +1 -0
- package/.next/standalone/.next/static/chunks/140j4evqxtxmn.js +1 -0
- package/.next/standalone/.next/static/chunks/142km8a40ar5o.js +1 -0
- package/.next/standalone/.next/static/chunks/149sb_-h03mxq.js +1 -0
- package/.next/standalone/.next/static/chunks/156~ejmpjxu8e.js +1 -0
- package/.next/standalone/.next/static/chunks/169ui~u~dpalg.js +1 -0
- package/.next/standalone/.next/static/chunks/16bag6z7n~ffw.js +1 -0
- package/.next/standalone/.next/static/chunks/171_ek.xwzobw.js +1 -0
- package/.next/standalone/.next/static/chunks/179zldqdb4pm2.js +1 -0
- package/.next/standalone/.next/static/chunks/{turbopack-0hwi_g-tegs_u.js → turbopack-0d-xk62f1t05v.js} +1 -1
- package/.next/standalone/.next/static/chunks/{turbopack-11tk4snp~dxd4.js → turbopack-0nn9kx.dkgwqs.js} +1 -1
- package/.next/standalone/.next/static/chunks/turbopack-0rb3q18bhb2hu.js +1 -0
- package/.next/standalone/.next/static/chunks/turbopack-0zcblahe.hdqd.js +1 -0
- package/.next/standalone/.next/static/chunks/{turbopack-17.piokhhz77b.js → turbopack-0~wmco6ifn20m.js} +1 -1
- package/.next/standalone/.next/static/chunks/{turbopack-0sisjg~-koq5w.js → turbopack-1469mxaruw82d.js} +1 -1
- package/.next/standalone/.next/static/chunks/{turbopack-066o21-32lo7n.js → turbopack-15bv~a4hbvh29.js} +1 -1
- package/.next/standalone/messages/de/diff.json +26 -1
- package/.next/standalone/messages/de/settings.json +3 -1
- package/.next/standalone/messages/de/sidebar.json +10 -1
- package/.next/standalone/messages/de/workspace.json +2 -0
- package/.next/standalone/messages/en/diff.json +26 -1
- package/.next/standalone/messages/en/settings.json +3 -1
- package/.next/standalone/messages/en/sidebar.json +10 -1
- package/.next/standalone/messages/en/workspace.json +2 -0
- package/.next/standalone/messages/es/diff.json +26 -1
- package/.next/standalone/messages/es/settings.json +3 -1
- package/.next/standalone/messages/es/sidebar.json +10 -1
- package/.next/standalone/messages/es/workspace.json +2 -0
- package/.next/standalone/messages/fr/diff.json +26 -1
- package/.next/standalone/messages/fr/settings.json +3 -1
- package/.next/standalone/messages/fr/sidebar.json +10 -1
- package/.next/standalone/messages/fr/workspace.json +2 -0
- package/.next/standalone/messages/ja/diff.json +26 -1
- package/.next/standalone/messages/ja/settings.json +3 -1
- package/.next/standalone/messages/ja/sidebar.json +10 -1
- package/.next/standalone/messages/ja/workspace.json +2 -0
- package/.next/standalone/messages/ko/diff.json +26 -1
- package/.next/standalone/messages/ko/settings.json +3 -1
- package/.next/standalone/messages/ko/sidebar.json +10 -1
- package/.next/standalone/messages/ko/workspace.json +2 -0
- package/.next/standalone/messages/pt-BR/diff.json +26 -1
- package/.next/standalone/messages/pt-BR/settings.json +3 -1
- package/.next/standalone/messages/pt-BR/sidebar.json +10 -1
- package/.next/standalone/messages/pt-BR/workspace.json +2 -0
- package/.next/standalone/messages/ru/diff.json +26 -1
- package/.next/standalone/messages/ru/settings.json +3 -1
- package/.next/standalone/messages/ru/sidebar.json +10 -1
- package/.next/standalone/messages/ru/workspace.json +2 -0
- package/.next/standalone/messages/tr/diff.json +26 -1
- package/.next/standalone/messages/tr/settings.json +3 -1
- package/.next/standalone/messages/tr/sidebar.json +10 -1
- package/.next/standalone/messages/tr/workspace.json +2 -0
- package/.next/standalone/messages/zh-CN/diff.json +26 -1
- package/.next/standalone/messages/zh-CN/settings.json +3 -1
- package/.next/standalone/messages/zh-CN/sidebar.json +10 -1
- package/.next/standalone/messages/zh-CN/workspace.json +2 -0
- package/.next/standalone/messages/zh-TW/diff.json +26 -1
- package/.next/standalone/messages/zh-TW/settings.json +3 -1
- package/.next/standalone/messages/zh-TW/sidebar.json +10 -1
- package/.next/standalone/messages/zh-TW/workspace.json +2 -0
- package/.next/standalone/package.json +1 -1
- package/.next/standalone/server.js +1 -1
- package/.next/standalone/src/pages/api/layout/commit-diff.ts +94 -0
- package/.next/standalone/src/pages/api/layout/cwd.ts +38 -0
- package/.next/standalone/src/pages/api/layout/diff.ts +196 -0
- package/.next/standalone/src/pages/api/layout/file-content.ts +130 -0
- package/.next/standalone/src/pages/api/layout/git-log.ts +55 -0
- package/.next/standalone/src/pages/api/layout/index.ts +38 -0
- package/.next/standalone/src/pages/api/layout/pane/[paneId]/index.ts +38 -0
- package/.next/standalone/src/pages/api/layout/pane/[paneId]/tabs/[tabId]/index.ts +94 -0
- package/.next/standalone/src/pages/api/layout/pane/[paneId]/tabs/[tabId]/move.ts +31 -0
- package/.next/standalone/src/pages/api/layout/pane/[paneId]/tabs/index.ts +66 -0
- package/.next/standalone/src/pages/api/layout/pane/[paneId]/tabs/order.ts +30 -0
- package/.next/standalone/src/pages/api/layout/pane/index.ts +38 -0
- package/dist/server.js +59 -7
- package/package.json +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0n61.a8._.js +0 -30
- package/.next/standalone/.next/server/chunks/_04pfden._.js +0 -3
- package/.next/standalone/.next/server/chunks/_09vws3v._.js +0 -3
- package/.next/standalone/.next/server/chunks/_0e8e4zn._.js +0 -3
- package/.next/standalone/.next/server/chunks/_0isokfh._.js +0 -3
- package/.next/standalone/.next/server/chunks/_0j2u-od._.js +0 -3
- package/.next/standalone/.next/server/chunks/_0t8j4qd._.js +0 -3
- package/.next/standalone/.next/server/chunks/_0xd1ivw._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0c0bz7t._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0nkl4wz._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_0-67bvb._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_02nf4d7._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_05dcjwi._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_06yggfn._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_0al4.z9._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_0dg4_bi._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_0f8k39w._.js +0 -14
- package/.next/standalone/.next/server/chunks/ssr/_0gp1meg._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_0hqzsa8._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_0nkeoiw._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_0ob2rr-._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_0ulmx3c._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_0wlh.pc._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_0y31tie._.js +0 -14
- package/.next/standalone/.next/server/chunks/ssr/_0~.theb._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_11rnj4l._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_124p60s._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/node_modules_@base-ui_react_esm_03v8q-a._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/node_modules_@base-ui_react_esm_0wddb~n._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/src_lib_message-namespaces_ts_0wjpvu5._.js +0 -3
- package/.next/standalone/.next/static/chunks/0-8-cf3vuob~..js +0 -1
- package/.next/standalone/.next/static/chunks/0-97ruc25d2lz.js +0 -1
- package/.next/standalone/.next/static/chunks/0-ku865ak6iur.js +0 -1
- package/.next/standalone/.next/static/chunks/00g7isu_5s43..js +0 -1
- package/.next/standalone/.next/static/chunks/00nx1s6rpu537.js +0 -1
- package/.next/standalone/.next/static/chunks/00s-0sui~_24w.js +0 -1
- package/.next/standalone/.next/static/chunks/01-fb9rb-21.a.js +0 -1
- package/.next/standalone/.next/static/chunks/02dumv8n.ewiw.js +0 -1
- package/.next/standalone/.next/static/chunks/02r-a1_lz7fuk.js +0 -1
- package/.next/standalone/.next/static/chunks/03eaekq6omt65.js +0 -1
- package/.next/standalone/.next/static/chunks/04~p~.qz9diil.js +0 -1
- package/.next/standalone/.next/static/chunks/05_e09pgcymkh.js +0 -1
- package/.next/standalone/.next/static/chunks/05y90.zbqijkv.js +0 -1
- package/.next/standalone/.next/static/chunks/07-xm--o034du.js +0 -1
- package/.next/standalone/.next/static/chunks/072ccw0gkueqq.js +0 -1
- package/.next/standalone/.next/static/chunks/07i6~xrmgspp8.js +0 -1
- package/.next/standalone/.next/static/chunks/07rq~qv9ldwo~.js +0 -1
- package/.next/standalone/.next/static/chunks/08vvx8xtxwt5o.js +0 -1
- package/.next/standalone/.next/static/chunks/08zfbuugw_i52.js +0 -23
- package/.next/standalone/.next/static/chunks/09agwg~-xbxbs.js +0 -1
- package/.next/standalone/.next/static/chunks/0a1hi9y0lwv3j.js +0 -1
- package/.next/standalone/.next/static/chunks/0ajkjqq1xc_.a.js +0 -1
- package/.next/standalone/.next/static/chunks/0chjvj73yfmoj.js +0 -1
- package/.next/standalone/.next/static/chunks/0d4vi6-ju6lha.js +0 -1
- package/.next/standalone/.next/static/chunks/0daflfjkvkh-d.js +0 -1
- package/.next/standalone/.next/static/chunks/0dh2cf_c4gz65.js +0 -1
- package/.next/standalone/.next/static/chunks/0dqb3atw-kpb2.js +0 -1
- package/.next/standalone/.next/static/chunks/0fuay9akccsr9.js +0 -1
- package/.next/standalone/.next/static/chunks/0fwnzw~qq_abm.js +0 -1
- package/.next/standalone/.next/static/chunks/0gjtphww9wtey.js +0 -12
- package/.next/standalone/.next/static/chunks/0h-7ntqpip4oi.js +0 -1
- package/.next/standalone/.next/static/chunks/0idah_uu8ylro.js +0 -1
- package/.next/standalone/.next/static/chunks/0iw7xjsfo1v-u.js +0 -16
- package/.next/standalone/.next/static/chunks/0jj7ska-q4zmb.js +0 -1
- package/.next/standalone/.next/static/chunks/0k50-hp08.xtp.js +0 -1
- package/.next/standalone/.next/static/chunks/0n1xl_9xb64~a.js +0 -1
- package/.next/standalone/.next/static/chunks/0nh~2y4pr-6b-.js +0 -1
- package/.next/standalone/.next/static/chunks/0nyar-7g9rya6.js +0 -1
- package/.next/standalone/.next/static/chunks/0o_yi7-4-ckig.js +0 -1
- package/.next/standalone/.next/static/chunks/0om8~g_7-c-x5.js +0 -12
- package/.next/standalone/.next/static/chunks/0otoymu09sgml.js +0 -1
- package/.next/standalone/.next/static/chunks/0oxlivdn8c89b.js +0 -1
- package/.next/standalone/.next/static/chunks/0qwvk-uq944-d.js +0 -23
- package/.next/standalone/.next/static/chunks/0r7uk81oh650e.js +0 -1
- package/.next/standalone/.next/static/chunks/0r_ynb..7ongv.js +0 -23
- package/.next/standalone/.next/static/chunks/0ro78lxc~ndn_.js +0 -1
- package/.next/standalone/.next/static/chunks/0ryghnq7iy47v.js +0 -24
- package/.next/standalone/.next/static/chunks/0t_38o03_pjwq.js +0 -1
- package/.next/standalone/.next/static/chunks/0u9~wuf2zbs5z.js +0 -1
- package/.next/standalone/.next/static/chunks/0vmc7tq7ze-wk.js +0 -1
- package/.next/standalone/.next/static/chunks/0wlz6--vu7adu.js +0 -1
- package/.next/standalone/.next/static/chunks/0wp13r5su.j3e.js +0 -1
- package/.next/standalone/.next/static/chunks/0wx.aq674yk~q.js +0 -1
- package/.next/standalone/.next/static/chunks/0xas4ca5n6mzi.js +0 -1
- package/.next/standalone/.next/static/chunks/0xmalbon9eqvg.js +0 -1
- package/.next/standalone/.next/static/chunks/0y1_gk64rkp0g.js +0 -1
- package/.next/standalone/.next/static/chunks/0zz.9uk42mbks.js +0 -1
- package/.next/standalone/.next/static/chunks/0~nlz9.lltzrz.js +0 -1
- package/.next/standalone/.next/static/chunks/10bvbbw1062os.js +0 -1
- package/.next/standalone/.next/static/chunks/11gch78bg_qsn.js +0 -1
- package/.next/standalone/.next/static/chunks/11nk1lwom62oe.js +0 -1
- package/.next/standalone/.next/static/chunks/131tx--pi8.tm.js +0 -1
- package/.next/standalone/.next/static/chunks/132lgf3mld2ax.js +0 -1
- package/.next/standalone/.next/static/chunks/13nitezuv6q6x.js +0 -1
- package/.next/standalone/.next/static/chunks/13~7v30_nnqks.js +0 -1
- package/.next/standalone/.next/static/chunks/16dbi-ty-ptnr.js +0 -1
- package/.next/standalone/.next/static/chunks/17jcucuef_33-.js +0 -1
- package/.next/standalone/.next/static/chunks/184~yri~m3wao.css +0 -1
- package/.next/standalone/.next/static/chunks/186b1th1fl440.js +0 -1
- package/.next/standalone/.next/static/chunks/18d9u7jni2vco.js +0 -1
- package/.next/standalone/.next/static/chunks/turbopack-0abq2d._xmt7y.js +0 -1
- package/.next/standalone/.next/static/chunks/turbopack-0np.oib7-.1fp.js +0 -1
- /package/.next/standalone/.next/static/{5mb_D_gy6E3wsT_BhuXDS → X7BRO7ORR4bKFt1LXzGU8}/_clientMiddlewareManifest.js +0 -0
- /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
|
-
|
|
4635
|
-
const
|
|
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.
|
|
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,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
|