purplemux 0.1.21 → 0.2.0
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 +77 -77
- 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 +13 -7
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__00glsnv._.js +3 -0
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__05bsxq0._.js → [root-of-the-server]__00yjayf._.js} +2 -2
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__01.~37j._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__03l15.f._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__045vzzi._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__04cr_m8._.js +3 -0
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0ff8o47._.js → [root-of-the-server]__04o.cbq._.js} +2 -2
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__05ij_ys._.js +42 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__07gfnob._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__07xijrd._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__09gkm_6._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0_.po82._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0auutl5._.js +5 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0cjfc~l._.js +3 -0
- 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]__0m4quth._.js → [root-of-the-server]__0n61.a8._.js} +2 -2
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ovn6yp._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0qvunc5._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0t1c-6w._.js +3 -0
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__09w77m2._.js → [root-of-the-server]__0t7wqt6._.js} +2 -2
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0vi8p6v._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0w3m-oz._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__11j9~6h._.js +1 -1
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0xn_0ft._.js → [root-of-the-server]__12ksl6n._.js} +3 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__12nr~pb._.js +3 -0
- package/.next/standalone/.next/server/chunks/_0e8e4zn._.js +1 -1
- package/.next/standalone/.next/server/chunks/_0isokfh._.js +1 -1
- package/.next/standalone/.next/server/chunks/node_modules_next_dist_esm_build_templates_pages-api_00-t8sq.js +3 -0
- package/.next/standalone/.next/server/chunks/src_lib_136edwc._.js +3 -0
- package/.next/standalone/.next/server/chunks/src_lib_layout-store_ts_0fanx7c._.js +1 -1
- package/.next/standalone/.next/server/chunks/src_lib_session-parser_ts_0~rhicw._.js +1 -1
- package/.next/standalone/.next/server/chunks/src_lib_status-manager_ts_003hlhy._.js +13 -1
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0au.ssp._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{_0_mc3i2._.js → _00ehnd~._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{_0qejycp._.js → _00rrt71._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_06yggfn._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{_0kjoxb9._.js → _08h9ynz._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_08ytq3p._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{_0h~fc23._.js → _0_c~3id._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{_0-xx2s1._.js → _0_owbnq._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_0al4.z9._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_0b~zgl1._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{_0quk21n._.js → _0dg4_bi._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{_0qy269j._.js → _0gp1meg._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_0iy5a-w._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_0js4l3t._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{_0fuovbm._.js → _0lnui2f._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_0nkeoiw._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_0qbbxeq._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{_06.nllk._.js → _0rxhzwm._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{_0g258pg._.js → _0sfctwm._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{_0c0hpua._.js → _0ulmx3c._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{_0k9ybcl._.js → _0wlh.pc._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{_11wj.a4._.js → _0y5jzd3._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_0z61aq-._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{_0lhf6qf._.js → _0~.theb._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{_0si9.17._.js → _11rnj4l._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/{messages_127a4ox._.js → messages_046iw4z._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{messages_005j2ko._.js → messages_0zr0cc7._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_de_notification_json_[json]_cjs_02k70lx._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_de_session_json_[json]_cjs_0b-1vpl._.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_en_notification_json_[json]_cjs_0jqq879._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_en_session_json_[json]_cjs_0jaymfk._.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_es_notification_json_[json]_cjs_0q.i2xj._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_es_session_json_[json]_cjs_0jy1144._.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_fr_notification_json_[json]_cjs_0muj65q._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_fr_session_json_[json]_cjs_0rz0g.c._.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_ja_notification_json_[json]_cjs_03v~p7j._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_ja_session_json_[json]_cjs_0cos-uy._.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_ko_notification_json_[json]_cjs_0gx~jkl._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_ko_session_json_[json]_cjs_0x4saic._.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_pt-BR_notification_json_[json]_cjs_02mo05m._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_pt-BR_session_json_[json]_cjs_0-x8ftl._.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_ru_notification_json_[json]_cjs_03crije._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_ru_session_json_[json]_cjs_0~2-kve._.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_tr_notification_json_[json]_cjs_0g.576s._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_tr_session_json_[json]_cjs_0zsvt_4._.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_zh-CN_notification_json_[json]_cjs_07v9on4._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_zh-CN_session_json_[json]_cjs_134xza~._.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-TW_notification_json_[json]_cjs_0.ktzjy._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_zh-TW_session_json_[json]_cjs_0mv_~-8._.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/{node_modules_0cndrls._.js → node_modules_0kc8lix._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/src_05g_qd3._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{src_components_10v_9d0._.js → src_components_0cflin8._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{src_components_04vn0dm._.js → src_components_0g.s~e7._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{src_components_0gsv3ly._.js → src_components_0jrj_vu._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{src_components_0iq~ool._.js → src_components_0rs9yzr._.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_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_message-namespaces_ts_0wjpvu5._.js +3 -0
- package/.next/standalone/.next/server/middleware-build-manifest.js +77 -77
- package/.next/standalone/.next/server/pages/_app/build-manifest.json +7 -7
- package/.next/standalone/.next/server/pages/_app/client-build-manifest.json +1 -1
- package/.next/standalone/.next/server/pages/_app.js +4 -4
- package/.next/standalone/.next/server/pages/_app.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/_error/build-manifest.json +2 -2
- package/.next/standalone/.next/server/pages/_error/client-build-manifest.json +1 -1
- package/.next/standalone/.next/server/pages/_error.js +2 -2
- package/.next/standalone/.next/server/pages/_error.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/check-claude.js +1 -1
- package/.next/standalone/.next/server/pages/api/check-claude.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/cli/tabs/[tabId]/result.js +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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/branch.js +1 -1
- package/.next/standalone/.next/server/pages/api/git/branch.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/git/status.js +1 -1
- package/.next/standalone/.next/server/pages/api/git/status.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/layout/cwd.js +1 -1
- package/.next/standalone/.next/server/pages/api/layout/cwd.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/layout/diff.js +1 -1
- package/.next/standalone/.next/server/pages/api/layout/diff.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/layout/pane/[paneId]/tabs/[tabId]/move.js +1 -1
- 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 +2 -2
- 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 +1 -1
- 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 +4 -4
- 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 +1 -1
- 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 +1 -1
- package/.next/standalone/.next/server/pages/api/layout/pane.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/layout.js +1 -1
- 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 +1 -1
- 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 +1 -1
- package/.next/standalone/.next/server/pages/api/stats/projects.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/stats/sessions.js +1 -1
- package/.next/standalone/.next/server/pages/api/stats/sessions.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/stats/uptime.js +1 -1
- package/.next/standalone/.next/server/pages/api/stats/uptime.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/status/hook.js +4 -4
- package/.next/standalone/.next/server/pages/api/status/hook.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/status/statusline.js +9 -1
- package/.next/standalone/.next/server/pages/api/status/statusline.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/system/tmux-sessions.js +1 -1
- package/.next/standalone/.next/server/pages/api/system/tmux-sessions.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/timeline/entries.js +1 -1
- package/.next/standalone/.next/server/pages/api/timeline/entries.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/timeline/message-counts/pages-manifest.json +3 -0
- package/.next/standalone/.next/server/pages/api/timeline/message-counts.js +5 -0
- package/.next/standalone/.next/server/pages/api/timeline/message-counts.js.map +5 -0
- package/.next/standalone/.next/server/pages/api/timeline/message-counts.js.nft.json +1 -0
- package/.next/standalone/.next/server/pages/api/timeline/sessions.js +1 -1
- package/.next/standalone/.next/server/pages/api/timeline/sessions.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/tmux/capture.js +1 -1
- package/.next/standalone/.next/server/pages/api/tmux/capture.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/tmux/info.js +1 -1
- package/.next/standalone/.next/server/pages/api/tmux/info.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/plan-options.js +1 -1
- package/.next/standalone/.next/server/pages/api/tmux/plan-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/tmux/send-input.js +1 -1
- package/.next/standalone/.next/server/pages/api/tmux/send-input.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/workspace/[workspaceId].js +1 -1
- package/.next/standalone/.next/server/pages/api/workspace/[workspaceId].js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/workspace/active.js +1 -1
- package/.next/standalone/.next/server/pages/api/workspace/active.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/workspace/reorder.js +1 -1
- package/.next/standalone/.next/server/pages/api/workspace/reorder.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/workspace/validate.js +1 -1
- 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 +12 -12
- package/.next/standalone/.next/server/pages/index/client-build-manifest.json +1 -1
- package/.next/standalone/.next/server/pages/index/react-loadable-manifest.json +6 -6
- package/.next/standalone/.next/server/pages/index.js +13 -13
- 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 +10 -10
- package/.next/standalone/.next/server/pages/login/client-build-manifest.json +1 -1
- package/.next/standalone/.next/server/pages/login.js +2 -2
- 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 +16 -16
- package/.next/standalone/.next/server/pages/reports/client-build-manifest.json +1 -1
- package/.next/standalone/.next/server/pages/reports.js +9 -9
- package/.next/standalone/.next/server/pages/reports.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/reset/build-manifest.json +2 -2
- package/.next/standalone/.next/server/pages/reset/client-build-manifest.json +1 -1
- package/.next/standalone/.next/server/pages/reset.js +3 -3
- 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 +13 -13
- package/.next/standalone/.next/server/pages/stats/client-build-manifest.json +1 -1
- package/.next/standalone/.next/server/pages/stats/react-loadable-manifest.json +1 -1
- package/.next/standalone/.next/server/pages/stats.js +6 -6
- package/.next/standalone/.next/server/pages/stats.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/tools-required/build-manifest.json +2 -2
- package/.next/standalone/.next/server/pages/tools-required/client-build-manifest.json +1 -1
- package/.next/standalone/.next/server/pages/tools-required.js +3 -3
- 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 +10 -10
- package/.next/standalone/.next/server/pages/webview/client-build-manifest.json +1 -1
- package/.next/standalone/.next/server/pages/webview.js +10 -10
- 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 +1 -0
- package/.next/standalone/.next/static/{dcByQy16pcz2rzj9snwtK → WXAyTQ0PHZnxXXCwEZpit}/_buildManifest.js +9 -8
- package/.next/standalone/.next/static/chunks/0-97ruc25d2lz.js +1 -0
- package/.next/standalone/.next/static/chunks/{17e9_m-u1zvfx.js → 0-xrsiia9hc.c.js} +1 -1
- package/.next/standalone/.next/static/chunks/{135rnnu.-sh80.js → 0.ecwkadp7-hq.js} +1 -1
- package/.next/standalone/.next/static/chunks/00nx1s6rpu537.js +1 -0
- package/.next/standalone/.next/static/chunks/{0nin7ftvq8x5c.js → 00ziyk306y55s.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0kebzqtn4norb.js → 01-fb9rb-21.a.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0dthloew7zc8k.js → 010m3dplwy4n6.js} +16 -16
- package/.next/standalone/.next/static/chunks/{0_7qn_xpf-6l~.js → 02mfn213kze9c.js} +2 -2
- package/.next/standalone/.next/static/chunks/02r-a1_lz7fuk.js +1 -0
- package/.next/standalone/.next/static/chunks/04bbxzycy0y90.js +1 -0
- package/.next/standalone/.next/static/chunks/{0y--b123-dayk.js → 04cl8pvql07vz.js} +1 -1
- package/.next/standalone/.next/static/chunks/{15wkoi26~8omr.js → 04f25y8yc8j00.js} +1 -1
- package/.next/standalone/.next/static/chunks/{02.xbkqbezb~v.js → 04uzwc8c9u49~.js} +1 -1
- package/.next/standalone/.next/static/chunks/05oh32ya2uzfq.js +1 -0
- package/.next/standalone/.next/static/chunks/06e51nokt~dtt.js +1 -0
- package/.next/standalone/.next/static/chunks/06ypydsl._u~2.js +5 -0
- package/.next/standalone/.next/static/chunks/07-xm--o034du.js +1 -0
- package/.next/standalone/.next/static/chunks/071neb1eikeoh.js +1 -0
- package/.next/standalone/.next/static/chunks/07i6~xrmgspp8.js +1 -0
- package/.next/standalone/.next/static/chunks/{0i7zwsw_~llk0.js → 07v3udp2qhc02.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0kox55ju9c.e4.js → 088o~nd5em_1d.js} +1 -1
- package/.next/standalone/.next/static/chunks/{10_1w.i.mluxp.js → 08xz_z9u4ex9t.js} +1 -1
- package/.next/standalone/.next/static/chunks/{02119z8xemosp.js → 08yjqhf82rx~h.js} +1 -1
- package/.next/standalone/.next/static/chunks/095e2xf3z6x3g.js +23 -0
- package/.next/standalone/.next/static/chunks/{040hwmh16ihpj.js → 09agwg~-xbxbs.js} +1 -1
- package/.next/standalone/.next/static/chunks/09tinkgkd8br_.js +1 -0
- package/.next/standalone/.next/static/chunks/09vjzvj4~rwbf.js +1 -0
- package/.next/standalone/.next/static/chunks/{0puhant9cy0xw.js → 0__ve3txz-02p.js} +1 -1
- package/.next/standalone/.next/static/chunks/0a1hi9y0lwv3j.js +1 -0
- package/.next/standalone/.next/static/chunks/{0fzb0m-2k2x14.js → 0bzbaprexb9od.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0ggsfsmm~hj5t.js → 0cfpdp0_-.4aj.js} +1 -1
- package/.next/standalone/.next/static/chunks/0chjvj73yfmoj.js +1 -0
- package/.next/standalone/.next/static/chunks/{0yi.kp2rt4-nc.js → 0ea-k_kbq5gi1.js} +1 -1
- package/.next/standalone/.next/static/chunks/{082eokcz_e-4q.js → 0f81tdf_8utww.js} +1 -1
- package/.next/standalone/.next/static/chunks/{14ajlpt1s6ueh.js → 0ff6a07hvp4pu.js} +2 -2
- package/.next/standalone/.next/static/chunks/{105.cpxealiud.js → 0fotmrplo6yc7.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0h_vfy~qxk1_6.js → 0h-7ntqpip4oi.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0wvyw8fxpnmre.js → 0h~_fdj60t_~l.js} +1 -1
- package/.next/standalone/.next/static/chunks/{04_s.sj1oagqr.js → 0i2uqmry6cyl_.js} +1 -1
- package/.next/standalone/.next/static/chunks/0if5fmp94~nc2.js +12 -0
- package/.next/standalone/.next/static/chunks/{1235zq5em7nh2.js → 0iw7xjsfo1v-u.js} +10 -10
- package/.next/standalone/.next/static/chunks/0jxk8j~j30thp.js +1 -0
- package/.next/standalone/.next/static/chunks/{0_eof.53ko6d_.js → 0lz-p_awksh5e.js} +1 -1
- package/.next/standalone/.next/static/chunks/0m_amua611xl0.js +5 -0
- package/.next/standalone/.next/static/chunks/0nyar-7g9rya6.js +1 -0
- package/.next/standalone/.next/static/chunks/0o6esya.vhm1..js +1 -0
- package/.next/standalone/.next/static/chunks/0oxlivdn8c89b.js +1 -0
- package/.next/standalone/.next/static/chunks/{0iiahbpxxksju.js → 0p1vmcv-mlsg5.js} +1 -1
- package/.next/standalone/.next/static/chunks/{14067kbmixmm6.js → 0pw-284q1gfk3.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0turlr93lvkg8.js → 0t0-4sn-nqqld.js} +1 -1
- package/.next/standalone/.next/static/chunks/{09jl7_l-yth-3.js → 0t76mt4_ijxw7.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0_nr91n2-npr6.js → 0u-1zto-umjh9.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0x4khblf0c7-p.js → 0u9~wuf2zbs5z.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0krb2wvo2_ipb.js → 0unvbz84l4g9h.js} +1 -1
- package/.next/standalone/.next/static/chunks/{12up4kbv36k4r.js → 0w52yh2srwcs0.js} +2 -2
- package/.next/standalone/.next/static/chunks/{0ml0ppx6kwe2_.js → 0w9~wt6~_cxhf.js} +1 -1
- package/.next/standalone/.next/static/chunks/0wp13r5su.j3e.js +1 -0
- package/.next/standalone/.next/static/chunks/{0e~.6y_x93o06.js → 0y3fmkya..f_6.js} +13 -13
- package/.next/standalone/.next/static/chunks/0~ei.a78nuwqe.js +1 -0
- package/.next/standalone/.next/static/chunks/{0hqhf5soi_25r.js → 0~lnp45fxxtgz.js} +1 -1
- package/.next/standalone/.next/static/chunks/0~nlz9.lltzrz.js +1 -0
- package/.next/standalone/.next/static/chunks/10bvbbw1062os.js +1 -0
- package/.next/standalone/.next/static/chunks/{01sxhicgu6p69.js → 11ess6mn2988z.js} +10 -10
- package/.next/standalone/.next/static/chunks/11gch78bg_qsn.js +1 -0
- package/.next/standalone/.next/static/chunks/{0zzlz_qu90xvc.js → 11nk1lwom62oe.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0sj1hijbxwqzi.js → 131tx--pi8.tm.js} +1 -1
- package/.next/standalone/.next/static/chunks/13zzmkwag6vsm.css +1 -0
- package/.next/standalone/.next/static/chunks/13~7v30_nnqks.js +1 -0
- package/.next/standalone/.next/static/chunks/{0arxgyek93av0.js → 17deooyefr~9o.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0jhs9_arn872p.js → 17e2iymrk7eoa.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0kima6zc7cl2p.js → 17et6y09q052u.js} +1 -1
- package/.next/standalone/.next/static/chunks/17jcucuef_33-.js +1 -0
- package/.next/standalone/.next/static/chunks/{turbopack-11cbtg95iwob2.js → turbopack-0-itu0o9y_vq8.js} +1 -1
- package/.next/standalone/.next/static/chunks/{turbopack-0t_pmdbcbax~k.js → turbopack-0.28.d-q12n3p.js} +1 -1
- package/.next/standalone/.next/static/chunks/{turbopack-0tl7oxj3760qz.js → turbopack-0.4ipr_kch~.s.js} +1 -1
- package/.next/standalone/.next/static/chunks/{turbopack-02re16zyko_-d.js → turbopack-0g80nrinbfgtk.js} +1 -1
- package/.next/standalone/.next/static/chunks/{turbopack-03ch5ephon-wk.js → turbopack-0h0~tr4tgq3aa.js} +1 -1
- package/.next/standalone/.next/static/chunks/{turbopack-0k.5aa0_xv2hq.js → turbopack-0hwi_g-tegs_u.js} +1 -1
- package/.next/standalone/.next/static/chunks/{turbopack-0au9jjcv_8-gl.js → turbopack-0np.oib7-.1fp.js} +1 -1
- package/.next/standalone/.next/static/chunks/{turbopack-02yx2w1m.5ub9.js → turbopack-0qmx66h203l93.js} +1 -1
- package/.next/standalone/.next/static/chunks/{turbopack-0vqdj~g~ggw3x.js → turbopack-11utvoktq4lmr.js} +1 -1
- package/.next/standalone/messages/de/notification.json +3 -1
- package/.next/standalone/messages/de/session.json +5 -2
- package/.next/standalone/messages/de/settings.json +22 -1
- package/.next/standalone/messages/en/notification.json +3 -1
- package/.next/standalone/messages/en/session.json +5 -2
- package/.next/standalone/messages/en/settings.json +20 -1
- package/.next/standalone/messages/es/notification.json +3 -1
- package/.next/standalone/messages/es/session.json +5 -2
- package/.next/standalone/messages/es/settings.json +22 -1
- package/.next/standalone/messages/fr/notification.json +3 -1
- package/.next/standalone/messages/fr/session.json +5 -2
- package/.next/standalone/messages/fr/settings.json +22 -1
- package/.next/standalone/messages/ja/notification.json +3 -1
- package/.next/standalone/messages/ja/session.json +5 -2
- package/.next/standalone/messages/ja/settings.json +22 -1
- package/.next/standalone/messages/ko/notification.json +3 -1
- package/.next/standalone/messages/ko/session.json +5 -2
- package/.next/standalone/messages/ko/settings.json +20 -1
- package/.next/standalone/messages/pt-BR/notification.json +3 -1
- package/.next/standalone/messages/pt-BR/session.json +5 -2
- package/.next/standalone/messages/pt-BR/settings.json +22 -1
- package/.next/standalone/messages/ru/notification.json +3 -1
- package/.next/standalone/messages/ru/session.json +5 -2
- package/.next/standalone/messages/ru/settings.json +22 -1
- package/.next/standalone/messages/tr/notification.json +3 -1
- package/.next/standalone/messages/tr/session.json +5 -2
- package/.next/standalone/messages/tr/settings.json +22 -1
- package/.next/standalone/messages/zh-CN/notification.json +3 -1
- package/.next/standalone/messages/zh-CN/session.json +5 -2
- package/.next/standalone/messages/zh-CN/settings.json +22 -1
- package/.next/standalone/messages/zh-TW/notification.json +3 -1
- package/.next/standalone/messages/zh-TW/session.json +5 -2
- package/.next/standalone/messages/zh-TW/settings.json +22 -1
- package/.next/standalone/package.json +4 -5
- package/.next/standalone/server.js +1 -1
- package/dist/server.js +219 -244
- package/package.json +4 -5
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__019s3sg._.js +0 -15
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__02d5mfa._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__050uepg._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__093j355._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0cy9s8s._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0dn3vc8._.js +0 -5
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0g99747._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ge7g~x._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0iqf2xr._.js +0 -15
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ky2xd.._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0l806ne._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0mm5n3z._.js +0 -15
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0psi612._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0qtw~r6._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ysyw3z._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0~7f-os._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__10b7n-k._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0-e2yqy._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0vwkkwh._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_0mu2snc._.js +0 -3
- package/.next/standalone/.next/static/chunks/0.me5n9dvrgga.js +0 -1
- package/.next/standalone/.next/static/chunks/04u8dbn0ogxqm.js +0 -5
- package/.next/standalone/.next/static/chunks/0617badw.sq7c.js +0 -1
- package/.next/standalone/.next/static/chunks/06ik0y0xz_pxd.js +0 -5
- package/.next/standalone/.next/static/chunks/06~0v3h-9qr-b.js +0 -1
- package/.next/standalone/.next/static/chunks/0_iwf7xd96dhg.js +0 -1
- package/.next/standalone/.next/static/chunks/0b.80wy8lilvw.js +0 -1
- package/.next/standalone/.next/static/chunks/0c9nugbfmzaq4.js +0 -23
- package/.next/standalone/.next/static/chunks/0da0otp~vxk80.js +0 -1
- package/.next/standalone/.next/static/chunks/0diujbo1qkcle.css +0 -1
- package/.next/standalone/.next/static/chunks/0ep6reedai0y6.js +0 -1
- package/.next/standalone/.next/static/chunks/0f6dlhth6ll0c.js +0 -12
- package/.next/standalone/.next/static/chunks/0j.bb896cs98k.js +0 -1
- package/.next/standalone/.next/static/chunks/0j630d8~~4rbz.js +0 -1
- package/.next/standalone/.next/static/chunks/0k7kp5g9etss9.js +0 -1
- package/.next/standalone/.next/static/chunks/0ng68zj-fjm.w.js +0 -1
- package/.next/standalone/.next/static/chunks/0nsq-sayv38ks.js +0 -1
- package/.next/standalone/.next/static/chunks/0nvalz7iwy6qc.js +0 -1
- package/.next/standalone/.next/static/chunks/0rr7vbxqscvhw.js +0 -1
- package/.next/standalone/.next/static/chunks/0s66~z6yys6zz.js +0 -1
- package/.next/standalone/.next/static/chunks/0s8imclb5deef.js +0 -1
- package/.next/standalone/.next/static/chunks/0u7flh--27u75.js +0 -1
- package/.next/standalone/.next/static/chunks/0vrlsk_eqnj7q.js +0 -1
- package/.next/standalone/.next/static/chunks/0vw93vbkgsb1a.js +0 -1
- package/.next/standalone/.next/static/chunks/12i5z~h-3ys7k.js +0 -1
- package/.next/standalone/.next/static/chunks/171khl108g-m8.js +0 -1
- package/.next/standalone/.next/static/chunks/17fzeqm4m_x67.js +0 -1
- /package/.next/standalone/.next/static/{dcByQy16pcz2rzj9snwtK → WXAyTQ0PHZnxXXCwEZpit}/_clientMiddlewareManifest.js +0 -0
- /package/.next/standalone/.next/static/{dcByQy16pcz2rzj9snwtK → WXAyTQ0PHZnxXXCwEZpit}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
module.exports=[270406,(e,t,a)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},446786,(e,t,a)=>{t.exports=e.x("os",()=>require("os"))},814747,(e,t,a)=>{t.exports=e.x("path",()=>require("path"))},924868,(e,t,a)=>{t.exports=e.x("fs/promises",()=>require("fs/promises"))},130146,(e,t,a)=>{t.exports=e.x("pino-28069d5257187539",()=>require("pino-28069d5257187539"))},224361,(e,t,a)=>{t.exports=e.x("util",()=>require("util"))},233405,(e,t,a)=>{t.exports=e.x("child_process",()=>require("child_process"))},666680,(e,t,a)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},25146,e=>{"use strict";var t=e.i(130146),a=e.i(814747),r=e.i(446786);let n=a.default.join(r.default.homedir(),".purplemux","logs"),i=process.env.LOG_LEVEL||"info",s=(e=>{if(!e)return{};let t={};for(let a of e.split(",")){let[e,r]=a.split("=").map(e=>e.trim());e&&r&&(t[e]=r)}return t})(process.env.LOG_LEVELS),l=["trace","debug","info","warn","error","fatal"],u=globalThis;if(!u.__ptRootLogger){let e=[i,...Object.values(s)].reduce((e,t)=>l.indexOf(t)<l.indexOf(e)?t:e,"fatal");u.__ptRootLogger=(0,t.default)({level:e,transport:{targets:[{target:"pino-roll",level:e,options:{file:a.default.join(n,"purplemux"),frequency:"daily",dateFormat:"yyyy-MM-dd",limit:{count:7},mkdir:!0}},{target:"pino-pretty",level:e,options:{colorize:!0,ignore:"pid,hostname,module",translateTime:"HH:MM:ss",messageFormat:"[{module}] {msg}"}}]}})}let o=u.__ptRootLogger;e.s(["createLogger",0,e=>{let t=o.child({module:e});return t.level=s[e]??i,t}])},597789,965898,e=>{"use strict";let t=process.env.__PMUX_PRISTINE_ENV,a=Object.freeze(t?JSON.parse(t):{...process.env});t||(process.env.__PMUX_PRISTINE_ENV=JSON.stringify(a)),e.s(["PRISTINE_ENV",0,a],965898);let r=new Set(["HOME","USER","LOGNAME","SHELL","PATH","TERM","COLORTERM","LANG","TMPDIR","SSH_AUTH_SOCK","SSH_CONNECTION","SSH_TTY","DISPLAY","WAYLAND_DISPLAY","XDG_RUNTIME_DIR","TZ"]),n=["LC_"],i=e=>r.has(e)||n.some(t=>e.startsWith(t)),s={TERM:"xterm-256color",COLORTERM:"truecolor"},l=()=>{let e={};for(let[t,r]of Object.entries(a))void 0!==r&&i(t)&&(e[t]=r);return{...e,...s}},u=e=>`'${e.replace(/'/g,"'\\''")}'`,o=()=>a.SHELL||"/bin/bash";e.s(["buildShellEnv",0,()=>l(),"buildShellLaunchCommand",0,()=>{let e=Object.entries(l()).map(([e,t])=>`${e}=${u(t)}`).join(" ");return`env -i TMUX="$TMUX" TMUX_PANE="$TMUX_PANE" ${e} ${u(o())} -l`},"defaultShell",0,o],597789)},44014,e=>{"use strict";let t,a;var r=e.i(666680);e.s(["nanoid",0,function(e=21){var n;n=e|=0,!t||t.length<n?(t=Buffer.allocUnsafe(128*n),r.webcrypto.getRandomValues(t),a=0):a+n>t.length&&(r.webcrypto.getRandomValues(t),a=0),a+=n;let i="";for(let r=a-e;r<a;r++)i+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[63&t[r]];return i}],44014)},459015,544538,e=>{"use strict";var t=e.i(233405),a=e.i(924868),r=e.i(224361),n=e.i(814747),i=e.i(44014),s=e.i(965898),l=e.i(597789),u=e.i(25146);process.platform;let o="linux"===process.platform;e.s(["isLinux",0,o],544538);let c=(0,u.createLogger)("terminal"),d=(0,r.promisify)(t.execFile),p="purple",m=n.default.join(process.env.__PMUX_APP_DIR_UNPACKED||process.env.__PMUX_APP_DIR||process.cwd(),"src","config","tmux.conf"),f=async()=>{try{let{stdout:e}=await d("tmux",["-L",p,"ls","-F","#{session_name}"],{timeout:5e3});return e.trim().split("\n").map(e=>e.trim()).filter(e=>e.startsWith("pt-"))}catch{return[]}},h=async(e,t,a,r)=>{let n=(0,l.buildShellLaunchCommand)();await d("tmux",["-u","-L",p,"-f",m,"new-session","-d","-s",e,"-x",String(t),"-y",String(a),n],{timeout:5e3,cwd:r||s.PRISTINE_ENV.HOME||"/"}),await _(),c.debug(`tmux session created: ${e} (cols: ${t}, rows: ${a})`)},w=e=>new Promise(t=>setTimeout(t,e)),y=async e=>{if(!await g(e))return;c.debug(`killSession start: ${e}`);let t=await P(e);if(t)try{c.debug(`SIGTERM → process group ${t}: ${e}`),process.kill(-t,"SIGTERM")}catch{}try{await d("tmux",["-L",p,"kill-session","-t",e],{timeout:5e3})}catch{}for(let t=0;t<5;t++){if(!await g(e))return void c.debug(`killSession done (SIGTERM): ${e}`);await w(200)}if(c.warn(`session survived SIGTERM, escalating to SIGKILL: ${e}`),t)try{c.debug(`SIGKILL → process group ${t}: ${e}`),process.kill(-t,"SIGKILL")}catch{}try{await d("tmux",["-L",p,"kill-session","-t",e],{timeout:5e3})}catch{}for(let t=0;t<3;t++){if(!await g(e))return void c.debug(`killSession done (SIGKILL): ${e}`);await w(200)}c.warn(`tmux session still alive after kill: ${e}`)},g=async e=>{try{return await d("tmux",["-L",p,"has-session","-t",e],{timeout:5e3}),!0}catch{return!1}},S=async()=>{},x=async()=>{await S();let e=await f();e.length>0&&e.forEach(e=>{c.debug(`existing tmux session found: ${e}`)})},v=async e=>{if(o)try{return await a.default.readlink(`/proc/${e}/cwd`)}catch{return null}try{let{stdout:t}=await d("lsof",["-a","-p",String(e),"-d","cwd","-Fn"],{timeout:5e3}),a=t.split("\n").find(e=>e.startsWith("n/"));return a?a.slice(1):null}catch{return null}},I=async e=>{let t=await P(e);if(t){let e=await v(t);if(e)return e}try{let{stdout:t}=await d("tmux",["-L",p,"display-message","-p","-t",e,"#{pane_current_path}"],{timeout:5e3});return t.trim()||null}catch{return null}},P=async e=>{try{let{stdout:t}=await d("tmux",["-L",p,"display-message","-p","-t",e,"#{pane_pid}"],{timeout:5e3}),a=parseInt(t.trim(),10);return Number.isNaN(a)?null:a}catch{return null}},_=async()=>{try{await d("tmux",["-L",p,"source-file",m],{timeout:5e3})}catch{}},L=async e=>{try{let{stdout:t}=await d("tmux",["-L",p,"list-panes","-t",e,"-F","#{pane_current_command}"],{timeout:5e3});return t.trim()||null}catch{return null}},E=async()=>{try{let{stdout:e}=await d("tmux",["-L",p,"list-panes","-a","-F","#{session_name} #{pane_current_command} #{pane_current_path} #{pane_pid} #{window_activity}"],{timeout:5e3}),t=new Map;for(let a of e.trim().split("\n")){if(!a)continue;let[e,r,n,i,s]=a.split(" ");if(e&&r){let a=parseInt(i,10),l=parseInt(s,10);t.set(e,{command:r,path:n||"",pid:Number.isNaN(a)?0:a,windowActivity:Number.isNaN(l)?0:l})}}return t}catch{return new Map}},A=new Set(["bash","zsh","fish","sh","dash"]),N=async e=>{let t=await L(e);return t?{isSafe:A.has(t),processName:t}:{isSafe:!1,processName:"unknown"}},T=async e=>{try{let{stdout:t}=await d("tmux",["-L",p,"display-message","-p","-t",e,"#{pane_title}"],{timeout:5e3});return t.trim()||null}catch{return null}},b=async e=>{await d("tmux",["-L",p,"copy-mode","-q","-t",e],{timeout:5e3}).catch(()=>{})},j=async(e,t)=>{await b(e),await d("tmux",["-L",p,"send-keys","-t",e,t,"Enter"],{timeout:5e3})},R=async(e,t)=>{await b(e),await d("tmux",["-L",p,"send-keys","-t",e,t],{timeout:5e3})},M=async(e,t)=>{await b(e),await d("tmux",["-L",p,"send-keys","-t",e,"-l",`\x1b[200~${t}\x1b[201~`],{timeout:5e3}),await d("tmux",["-L",p,"send-keys","-t",e,"Enter"],{timeout:5e3}),await new Promise(e=>setTimeout(e,600)),await d("tmux",["-L",p,"send-keys","-t",e,"Enter"],{timeout:5e3})},$=async e=>{try{let{stdout:t}=await d("tmux",["-L",p,"display-message","-p","-t",e,"#{pane_current_path} #{pane_current_command} #{pane_pid} #{pane_width} #{pane_height} #{session_created}"],{timeout:5e3}),[a,r,n,i,s,l]=t.trim().split(" ");return{cwd:a||null,command:r||null,pid:n&&parseInt(n,10)||null,width:i&&parseInt(i,10)||null,height:s&&parseInt(s,10)||null,sessionCreated:l&&parseInt(l,10)||null}}catch{return{cwd:null,command:null,pid:null,width:null,height:null,sessionCreated:null}}},k=new Set(["node","python","python3","ruby","perl","deno","bun"]),C=async()=>{try{await d("tmux",["-L",p,"kill-server"],{timeout:5e3}),c.debug("tmux server killed")}catch{}},D=async e=>{try{let{stdout:t}=await d("tmux",["-L",p,"capture-pane","-p","-t",e],{timeout:5e3});return t}catch{return null}},O=async(e,t)=>{try{let{stdout:a}=await d("tmux",["-L",p,"capture-pane","-p","-S",`-${t}`,"-t",e],{timeout:5e3});return a}catch{return null}},q=async e=>{if(o){let t=[];return await Promise.all(e.map(async e=>{try{for(let r of(await a.default.readFile(`/proc/${e}/task/${e}/children`,"utf-8")).trim().split(/\s+/)){let e=parseInt(r,10);Number.isNaN(e)||t.push(e)}}catch{}})),t}try{let{stdout:t}=await d("pgrep",["-P",e.join(",")],{timeout:5e3});return t.trim().split("\n").map(e=>parseInt(e,10)).filter(e=>!Number.isNaN(e))}catch{return[]}},H=async e=>{let t=[],a=[e];for(;a.length>0;){let e=await q(a);if(0===e.length)break;t.push(...e),a=e}return t},U=async e=>{try{let t=new Set(e),{stdout:a}=await d("ss",["-tlnp"],{timeout:5e3}),r=new Set;for(let e of a.split("\n")){let a=e.match(/pid=(\d+)/g);if(!a||!a.some(e=>t.has(parseInt(e.replace("pid=",""),10))))continue;let n=e.match(/:(\d+)\s/);n&&r.add(parseInt(n[1],10))}return[...r].sort((e,t)=>e-t)}catch{return[]}},F=async e=>{let t=await H(e);if(0===t.length)return[];if(o)return U(t);try{let{stdout:e}=await d("lsof",["-a","-p",t.join(","),"-i","-sTCP:LISTEN","-P","-Fn"],{timeout:5e3}),a=new Set;for(let t of e.split("\n"))if(t.startsWith("n")){let e=t.match(/:(\d+)$/);e&&a.add(parseInt(e[1],10))}return[...a].sort((e,t)=>e-t)}catch{return[]}},G=async e=>{let t=await P(e);if(!t)return null;try{let{stdout:e}=await d("pgrep",["-n","-P",String(t)],{timeout:5e3}),a=e.trim();if(!a)return null;let{stdout:r}=await d("ps",["-o","args=","-p",a],{timeout:5e3}),i=r.trim();if(!i)return null;let s=i.split(/\s+/);if(0===s.length)return i;if(s[0]=n.default.basename(s[0]),k.has(s[0])&&s.length>1){let e=n.default.basename(s[1]).replace(/\.(c|m)?js$/,"");s.splice(0,2,e)}return s.join(" ")}catch{return null}};e.s(["SAFE_SHELLS",0,A,"applyConfig",0,_,"capturePaneContent",0,D,"capturePaneContentWithHistory",0,O,"checkTerminalProcess",0,N,"createSession",0,h,"defaultSessionName",0,()=>`pt-${(0,i.nanoid)(6)}-${(0,i.nanoid)(6)}-${(0,i.nanoid)(6)}`,"exitCopyMode",0,b,"getAllPanesInfo",0,E,"getLastCommand",0,G,"getListeningPorts",0,F,"getPaneCurrentCommand",0,L,"getPaneDetailInfo",0,$,"getPaneTitle",0,T,"getSessionCwd",0,I,"getSessionPanePid",0,P,"hasSession",0,g,"killServer",0,C,"killSession",0,y,"listSessions",0,f,"scanSessions",0,x,"sendBracketedPaste",0,M,"sendKeys",0,j,"sendRawKeys",0,R,"workspaceSessionName",0,(e,t,a)=>`pt-${e}-${t}-${a}`],459015)},522734,(e,t,a)=>{t.exports=e.x("fs",()=>require("fs"))},319668,(e,t,a)=>{t.exports=e.x("readline",()=>require("readline"))},713915,e=>{"use strict";var t=e.i(233405),a=e.i(924868),r=e.i(446786),n=e.i(814747),i=e.i(224361),s=e.i(597789),l=e.i(965898);let u=(0,i.promisify)(t.execFile),o=null,c=null,d=async()=>{let e=r.default.userInfo().shell||(0,s.defaultShell)();try{let{stdout:t}=await u(e,["-ilc",'echo -n "$PATH"'],{timeout:5e3,env:{...(0,s.buildShellEnv)(),SHELL:e,DISABLE_AUTO_UPDATE:"true",ZSH_TMUX_AUTOSTARTED:"true"}});return t.toString().trim()}catch{return l.PRISTINE_ENV.PATH||""}},p=async()=>o||(c||(c=d().then(e=>(o=e,c=null,e))),c),m=async(e,t,a)=>{try{let r=await p(),{stdout:n}=await u(e,t,{timeout:5e3,env:{...process.env,PATH:r}});return{installed:!0,version:a(n)}}catch{return{installed:!1,version:null}}},f=e=>e.trim().match(/(\d+\.\d+[\d.]*)/)?.[1]??null,h=[n.default.join(r.default.homedir(),".local","bin")],w=async()=>{for(let e of h)try{return await (0,a.access)(n.default.join(e,"claude")),e}catch{}return null},y=e=>e.installed&&null!==e.version&&parseFloat(e.version)>=2.9,g=async()=>{o=await d();let[e,t,i]=await Promise.all([m("tmux",["-V"],f),m("git",["--version"],f),m("claude",["--version"],f)]),s=(y(e)&&t.installed&&i.installed,i.installed?null:await w()),l=!1;if(i.installed||s)try{await (0,a.access)(n.default.join(r.default.homedir(),".claude")),l=!0}catch{}return{tmux:{...e,compatible:y(e)},git:t,claude:{...i,binaryPath:s,loggedIn:l}}},S=null,x=null,v=null,I=null,P=async()=>v&&Date.now()-v.checkedAt<1e3?v.result:I||(I=g().then(e=>(v={result:e,checkedAt:Date.now()},I=null,e)).catch(e=>{throw I=null,e})),_=async()=>{o=await d();let[e,t,a]=await Promise.all([m("tmux",["-V"],f),m("git",["--version"],f),m("claude",["--version"],f)]);return{tmux:{...e,compatible:y(e)},git:t,claude:a}},L=async()=>S&&Date.now()-S.checkedAt<3e4?S.result:x||(x=_().then(e=>(S={result:e,checkedAt:Date.now()},x=null,e)).catch(e=>{throw x=null,e}));e.s(["getCachedPreflightStatus",0,P,"getCachedRuntimePreflight",0,L,"getShellPath",0,p,"invalidateRuntimeCache",0,()=>{S=null,x=null}])},143511,e=>{"use strict";var t=e.i(924868),a=e.i(522734),r=e.i(814747),n=e.i(446786),i=e.i(233405),s=e.i(224361),l=e.i(713915),u=e.i(544538);let o=(0,s.promisify)(i.execFile),c=r.default.join(n.default.homedir(),".claude"),d=r.default.join(c,"sessions"),p=r.default.join(c,"projects"),m=[r.default.join(n.default.homedir(),".local","bin","claude")],f=e=>{let t=e.replace(/[^a-zA-Z0-9]/g,"-");if(t.length<=200)return t;let a=h(e);return`${t.slice(0,200)}-${a}`},h=e=>{let t=0;for(let a=0;a<e.length;a++)t=(t<<5)-t+e.charCodeAt(a)|0;return Math.abs(t).toString(36)},w=async e=>{try{let{stdout:t}=await o("pgrep",["-P",String(e)]);return t.trim().split("\n").map(e=>parseInt(e,10)).filter(e=>!Number.isNaN(e))}catch{return[]}},y=async e=>{if(u.isLinux)try{return await t.default.readlink(`/proc/${e}/cwd`)}catch{return null}try{let{stdout:t}=await o("lsof",["-a","-p",String(e),"-d","cwd","-Fn"]),a=t.split("\n").find(e=>e.startsWith("n/"));return a?a.slice(1):null}catch{return null}},g=async e=>{for(let t of e)try{let{stdout:e}=await o("ps",["-p",String(t),"-o","args="]),a=e.trim().match(/claude\s+--resume\s+([0-9a-f-]{36})/);if(a){let e=await y(t);return{pid:t,sessionId:a[1],cwd:e}}}catch{continue}return null},S=async e=>{try{let a=await t.default.readFile(e,"utf-8"),r=JSON.parse(a);if(!r.pid||!r.sessionId)return null;return r}catch{return null}},x=async(e,a)=>{let n=r.default.join(e,`${a}.jsonl`);try{return await t.default.access(n),n}catch{return null}},v=async()=>{try{return await o("claude",["--version"],{timeout:5e3,env:{...process.env,PATH:await (0,l.getShellPath)()}}),!0}catch{for(let e of m)try{return await t.default.access(e),!0}catch{}return!1}},I=async(e,t)=>{for(let a of t??await w(e))try{let{stdout:e}=await o("ps",["-p",String(a),"-o","args="]);if(e.trim().includes("claude"))return!0}catch{continue}return!1},P=async(e,a)=>{try{await t.default.access(c)}catch{return{status:await v()?"not-initialized":"not-installed",sessionId:null,jsonlPath:null,pid:null,startedAt:null,cwd:null}}let n=a??await w(e);if(0===n.length)return{status:"not-running",sessionId:null,jsonlPath:null,pid:null,startedAt:null,cwd:null};let i=(await Promise.all(n.map(w))).flat(),s=[...n,...i],l=new Set(s);try{for(let e of(await t.default.readdir(d)).filter(e=>e.endsWith(".json"))){let a=await S(r.default.join(d,e));if(!a||!l.has(a.pid))continue;let n="";try{let{stdout:e}=await o("ps",["-p",String(a.pid),"-o","args="]);n=e.trim()}catch{try{await t.default.unlink(r.default.join(d,e))}catch{}continue}if(!n.includes("claude")){try{await t.default.unlink(r.default.join(d,e))}catch{}continue}let i=f(a.cwd),s=r.default.join(p,i),u=await x(s,a.sessionId),c=a.sessionId;if(!u){let e=n.match(/--resume\s+([0-9a-f-]{36})/);if(e){let t=e[1],a=await x(s,t);a&&(u=a,c=t)}}return{status:"running",sessionId:c,jsonlPath:u,pid:a.pid,startedAt:a.startedAt,cwd:a.cwd}}}catch{}let u=await g(s);if(u){let e=u.cwd;if(e){let t=f(e),a=r.default.join(p,t),n=await x(a,u.sessionId);return{status:"running",sessionId:u.sessionId,jsonlPath:n,pid:u.pid,startedAt:null,cwd:e}}}return{status:"not-running",sessionId:null,jsonlPath:null,pid:null,startedAt:null,cwd:null}};e.s(["detectActiveSession",0,P,"getChildPids",0,w,"isClaudeRunning",0,I,"toClaudeProjectName",0,f,"watchSessionsDir",0,(e,r,n)=>{let s=null,l=null,u=null,o=null,c=null,p=!1,m=async()=>{let t;!p&&c&&(await (t=c,new Promise(e=>{(0,i.execFile)("ps",["-p",String(t)],t=>{e(!t)})}))||p||(c=null,r(await P(e))))},f=()=>{p||(u&&clearTimeout(u),u=setTimeout(async()=>{if(p)return;let t=await P(e);t.pid&&(c=t.pid),r(t)},200))},h=()=>{if(!p)try{(s=(0,a.watch)(d,f)).on("error",()=>{}),o&&(clearInterval(o),o=null)}catch{o||(o=setInterval(async()=>{if(!p)try{await t.default.access(d),h();let a=await P(e);a.pid&&(c=a.pid),r(a)}catch{}},6e4))}};return h(),l=setInterval(m,1e4),n?.skipInitial||P(e).then(e=>{p||(e.pid&&(c=e.pid),r(e))}),{stop:()=>{p=!0,s&&s.close(),l&&clearInterval(l),u&&clearTimeout(u),o&&clearInterval(o)}}}])},746514,e=>{"use strict";let t;var a=e.i(924868),r=e.i(522734),n=e.i(814747),i=e.i(319668),s=e.i(143511),l=e.i(459015);let u=(0,e.i(25146).createLogger)("session-list"),o=n.default.join(process.env.HOME||process.env.USERPROFILE||"/",".claude","projects"),c=(t=new Map,{get:e=>{let a=t.get(e);if(a)return Date.now()-a.cachedAt>3e4?void t.delete(e):a.meta},set:(e,a,r)=>{t.set(e,{meta:a,mtime:r,cachedAt:Date.now()})},isStale:(e,a)=>{let r=t.get(e);return!r||(Date.now()-r.cachedAt>3e4?(t.delete(e),!0):r.mtime!==a)},clear:()=>{t.clear()}}),d=e=>{let t=(0,s.toClaudeProjectName)(e);return n.default.join(o,t)},p=async(e,t)=>{let a=Array(e.length),r=0,n=async()=>{for(;r<e.length;){let t=r++;try{let r=await e[t]();a[t]={status:"fulfilled",value:r}}catch(e){a[t]={status:"rejected",reason:e}}}},i=Array.from({length:Math.min(t,e.length)},()=>n());return await Promise.all(i),a},m=e=>e.length<=200?e:e.slice(0,200)+"…",f=async e=>{let t=(0,r.createReadStream)(e,{encoding:"utf-8"}),a=i.default.createInterface({input:t,crlfDelay:1/0}),n=null,s="",l=0,u=!0;try{for await(let e of a){if(u&&(u=!1,e.trim()))try{let t=JSON.parse(e);t.timestamp&&(n=new Date(t.timestamp).toISOString())}catch{}if((e.includes('"type":"human"')||e.includes('"type": "human"')||e.includes('"type":"user"')||e.includes('"type": "user"'))&&!e.includes('"isMeta":true')&&!e.includes('"isMeta": true')&&(l++,!s))try{let t=JSON.parse(e);if(("human"===t.type||"user"===t.type)&&!t.isMeta){let e=t.message;if(e)if("string"==typeof e)s=m(e);else if(Array.isArray(e.content)){let t=e.content.find(e=>"text"===e.type&&e.text);t&&(s=m(t.text))}else"string"==typeof e.content&&(s=m(e.content))}}catch{}}}finally{a.close(),t.destroy()}return{startedAt:n,firstMessage:s,turnCount:l}},h=async e=>{try{let t=await a.default.stat(e),r=n.default.basename(e,".jsonl"),i=c.get(r);if(i&&!c.isStale(r,t.mtimeMs))return i;let{startedAt:s,firstMessage:l,turnCount:u}=await f(e),o=s||t.birthtime.toISOString(),d=t.mtime.toISOString(),p={sessionId:r,startedAt:o,lastActivityAt:d,firstMessage:l,turnCount:u};return c.set(r,p,t.mtimeMs),p}catch(t){return u.warn({err:t},`failed to parse session meta: ${e}`),null}},w=async(e,t)=>{let r,i=t||await (0,l.getSessionCwd)(e);if(!i)throw Error("cwd-lookup-failed");let s=d(i);try{r=(await a.default.readdir(s)).filter(e=>e.endsWith(".jsonl"))}catch{return[]}let u=r.map(e=>()=>h(n.default.join(s,e))),o=await p(u,10),c=[];for(let e of o)"fulfilled"===e.status&&e.value&&c.push(e.value);return c.sort((e,t)=>new Date(t.lastActivityAt).getTime()-new Date(e.lastActivityAt).getTime()),c};e.s(["cwdToProjectPath",0,d,"listSessions",0,w],746514)},220536,e=>{"use strict";var t=e.i(926747),a=e.i(190406),r=e.i(244898),n=e.i(262950),i=e.i(459015),s=e.i(746514);let l=async(e,t)=>{if("GET"!==e.method)return t.setHeader("Allow","GET"),t.status(405).json({error:"Method not allowed"});let a=e.query.tmuxSession;if(!a)return t.status(400).json({error:"missing-param",message:"tmuxSession parameter required"});if(!await (0,i.hasSession)(a))return t.status(404).json({error:"tmux-session-not-found",message:`tmux session '${a}' not found`});let r=Math.max(1,parseInt(e.query.limit,10)||50),n=Math.max(0,parseInt(e.query.offset,10)||0),l=e.query.cwd;try{let e=await (0,s.listSessions)(a,l),i=e.length,u=e.slice(n,n+r),o=n+r<i;return t.status(200).json({sessions:u,total:i,hasMore:o})}catch(a){let e=a instanceof Error?a.message:"unknown error";if("cwd-lookup-failed"===e)return t.status(500).json({error:"cwd-lookup-failed",message:"Failed to get cwd from tmux session"});return t.status(500).json({error:"internal-error",message:e})}};e.s(["default",0,l],96225);var u=e.i(96225),o=e.i(7031),c=e.i(181927),d=e.i(846432);let p=(0,n.hoist)(u,"default"),m=(0,n.hoist)(u,"config"),f=new r.PagesAPIRouteModule({definition:{kind:a.RouteKind.PAGES_API,page:"/api/timeline/sessions",pathname:"/api/timeline/sessions",bundlePath:"",filename:""},userland:u,distDir:".next",relativeProjectDir:""});async function h(e,a,r){r.requestMeta&&(0,d.setRequestMeta)(e,r.requestMeta),f.isDev&&(0,d.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let n="/api/timeline/sessions";n=n.replace(/\/index$/,"")||"/";let i=await f.prepare(e,a,{srcPage:n});if(!i){a.statusCode=400,a.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve());return}let{query:s,params:l,prerenderManifest:u,routerServerContext:p}=i;try{let t,r=e.method||"GET",i=(0,o.getTracer)(),d=i.getActiveScopeSpan(),m=!!(null==p?void 0:p.isWrappedByNextServer),h=f.instrumentationOnRequestError.bind(f),w=async o=>f.render(e,a,{query:{...s,...l},params:l,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:u.preview,propagateError:!1,dev:f.isDev,page:"/api/timeline/sessions",internalRevalidate:null==p?void 0:p.revalidate,onError:(...t)=>h(e,...t)}).finally(()=>{if(!o)return;o.setAttributes({"http.status_code":a.statusCode,"next.rsc":!1});let e=i.getRootSpanAttributes();if(!e)return;if(e.get("next.span_type")!==c.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=`${r} ${s}`;o.setAttributes({"next.route":s,"http.route":s,"next.span_name":e}),o.updateName(e),t&&t!==o&&(t.setAttribute("http.route",s),t.updateName(e))}else o.updateName(`${r} ${n}`)});m&&d?await w(d):(t=i.getActiveScopeSpan(),await i.withPropagatedContext(e.headers,()=>i.trace(c.BaseServerSpan.handleRequest,{spanName:`${r} ${n}`,kind:o.SpanKind.SERVER,attributes:{"http.method":r,"http.target":e.url}},w),void 0,!m))}catch(e){if(f.isDev)throw e;(0,t.sendError)(a,500,"Internal Server Error")}finally{null==r.waitUntil||r.waitUntil.call(r,Promise.resolve())}}e.s(["config",0,m,"default",0,p,"handler",0,h],220536)}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=%5Broot-of-the-server%5D__0qvunc5._.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
module.exports=[688947,(e,t,r)=>{t.exports=e.x("stream",()=>require("stream"))},406461,(e,t,r)=>{t.exports=e.x("zlib",()=>require("zlib"))},254799,(e,t,r)=>{t.exports=e.x("crypto",()=>require("crypto"))},524836,(e,t,r)=>{t.exports=e.x("https",()=>require("https"))},921517,(e,t,r)=>{t.exports=e.x("http",()=>require("http"))},504446,(e,t,r)=>{t.exports=e.x("net",()=>require("net"))},755004,(e,t,r)=>{t.exports=e.x("tls",()=>require("tls"))},792509,(e,t,r)=>{t.exports=e.x("url",()=>require("url"))},500874,(e,t,r)=>{t.exports=e.x("buffer",()=>require("buffer"))},427699,(e,t,r)=>{t.exports=e.x("events",()=>require("events"))},270406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},446786,(e,t,r)=>{t.exports=e.x("os",()=>require("os"))},814747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},924868,(e,t,r)=>{t.exports=e.x("fs/promises",()=>require("fs/promises"))},130146,(e,t,r)=>{t.exports=e.x("pino-28069d5257187539",()=>require("pino-28069d5257187539"))},224361,(e,t,r)=>{t.exports=e.x("util",()=>require("util"))},233405,(e,t,r)=>{t.exports=e.x("child_process",()=>require("child_process"))},666680,(e,t,r)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},25146,e=>{"use strict";var t=e.i(130146),r=e.i(814747),s=e.i(446786);let n=r.default.join(s.default.homedir(),".purplemux","logs"),i=process.env.LOG_LEVEL||"info",a=(e=>{if(!e)return{};let t={};for(let r of e.split(",")){let[e,s]=r.split("=").map(e=>e.trim());e&&s&&(t[e]=s)}return t})(process.env.LOG_LEVELS),o=["trace","debug","info","warn","error","fatal"],l=globalThis;if(!l.__ptRootLogger){let e=[i,...Object.values(a)].reduce((e,t)=>o.indexOf(t)<o.indexOf(e)?t:e,"fatal");l.__ptRootLogger=(0,t.default)({level:e,transport:{targets:[{target:"pino-roll",level:e,options:{file:r.default.join(n,"purplemux"),frequency:"daily",dateFormat:"yyyy-MM-dd",limit:{count:7},mkdir:!0}},{target:"pino-pretty",level:e,options:{colorize:!0,ignore:"pid,hostname,module",translateTime:"HH:MM:ss",messageFormat:"[{module}] {msg}"}}]}})}let u=l.__ptRootLogger;e.s(["createLogger",0,e=>{let t=u.child({module:e});return t.level=a[e]??i,t}])},597789,965898,e=>{"use strict";let t=process.env.__PMUX_PRISTINE_ENV,r=Object.freeze(t?JSON.parse(t):{...process.env});t||(process.env.__PMUX_PRISTINE_ENV=JSON.stringify(r)),e.s(["PRISTINE_ENV",0,r],965898);let s=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"]),n=["LC_"],i=e=>s.has(e)||n.some(t=>e.startsWith(t)),a={TERM:"xterm-256color",COLORTERM:"truecolor"},o=()=>{let e={};for(let[t,s]of Object.entries(r))void 0!==s&&i(t)&&(e[t]=s);return{...e,...a}},l=e=>`'${e.replace(/'/g,"'\\''")}'`,u=()=>r.SHELL||"/bin/bash";e.s(["buildShellEnv",0,()=>o(),"buildShellLaunchCommand",0,()=>{let e=Object.entries(o()).map(([e,t])=>`${e}=${l(t)}`).join(" ");return`env -i TMUX="$TMUX" TMUX_PANE="$TMUX_PANE" ${e} ${l(u())} -l`},"defaultShell",0,u],597789)},44014,e=>{"use strict";let t,r;var s=e.i(666680);e.s(["nanoid",0,function(e=21){var n;n=e|=0,!t||t.length<n?(t=Buffer.allocUnsafe(128*n),s.webcrypto.getRandomValues(t),r=0):r+n>t.length&&(s.webcrypto.getRandomValues(t),r=0),r+=n;let i="";for(let s=r-e;s<r;s++)i+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[63&t[s]];return i}],44014)},459015,544538,e=>{"use strict";var t=e.i(233405),r=e.i(924868),s=e.i(224361),n=e.i(814747),i=e.i(44014),a=e.i(965898),o=e.i(597789),l=e.i(25146);process.platform;let u="linux"===process.platform;e.s(["isLinux",0,u],544538);let p=(0,l.createLogger)("terminal"),c=(0,s.promisify)(t.execFile),m="purple",d=n.default.join(process.env.__PMUX_APP_DIR_UNPACKED||process.env.__PMUX_APP_DIR||process.cwd(),"src","config","tmux.conf"),f=async()=>{try{let{stdout:e}=await c("tmux",["-L",m,"ls","-F","#{session_name}"],{timeout:5e3});return e.trim().split("\n").map(e=>e.trim()).filter(e=>e.startsWith("pt-"))}catch{return[]}},h=async(e,t,r,s)=>{let n=(0,o.buildShellLaunchCommand)();await c("tmux",["-u","-L",m,"-f",d,"new-session","-d","-s",e,"-x",String(t),"-y",String(r),n],{timeout:5e3,cwd:s||a.PRISTINE_ENV.HOME||"/"}),await P(),p.debug(`tmux session created: ${e} (cols: ${t}, rows: ${r})`)},w=e=>new Promise(t=>setTimeout(t,e)),y=async e=>{if(!await g(e))return;p.debug(`killSession start: ${e}`);let t=await L(e);if(t)try{p.debug(`SIGTERM → process group ${t}: ${e}`),process.kill(-t,"SIGTERM")}catch{}try{await c("tmux",["-L",m,"kill-session","-t",e],{timeout:5e3})}catch{}for(let t=0;t<5;t++){if(!await g(e))return void p.debug(`killSession done (SIGTERM): ${e}`);await w(200)}if(p.warn(`session survived SIGTERM, escalating to SIGKILL: ${e}`),t)try{p.debug(`SIGKILL → process group ${t}: ${e}`),process.kill(-t,"SIGKILL")}catch{}try{await c("tmux",["-L",m,"kill-session","-t",e],{timeout:5e3})}catch{}for(let t=0;t<3;t++){if(!await g(e))return void p.debug(`killSession done (SIGKILL): ${e}`);await w(200)}p.warn(`tmux session still alive after kill: ${e}`)},g=async e=>{try{return await c("tmux",["-L",m,"has-session","-t",e],{timeout:5e3}),!0}catch{return!1}},x=async()=>{},S=async()=>{await x();let e=await f();e.length>0&&e.forEach(e=>{p.debug(`existing tmux session found: ${e}`)})},_=async e=>{if(u)try{return await r.default.readlink(`/proc/${e}/cwd`)}catch{return null}try{let{stdout:t}=await c("lsof",["-a","-p",String(e),"-d","cwd","-Fn"],{timeout:5e3}),r=t.split("\n").find(e=>e.startsWith("n/"));return r?r.slice(1):null}catch{return null}},v=async e=>{let t=await L(e);if(t){let e=await _(t);if(e)return e}try{let{stdout:t}=await c("tmux",["-L",m,"display-message","-p","-t",e,"#{pane_current_path}"],{timeout:5e3});return t.trim()||null}catch{return null}},L=async e=>{try{let{stdout:t}=await c("tmux",["-L",m,"display-message","-p","-t",e,"#{pane_pid}"],{timeout:5e3}),r=parseInt(t.trim(),10);return Number.isNaN(r)?null:r}catch{return null}},P=async()=>{try{await c("tmux",["-L",m,"source-file",d],{timeout:5e3})}catch{}},N=async e=>{try{let{stdout:t}=await c("tmux",["-L",m,"list-panes","-t",e,"-F","#{pane_current_command}"],{timeout:5e3});return t.trim()||null}catch{return null}},E=async()=>{try{let{stdout:e}=await c("tmux",["-L",m,"list-panes","-a","-F","#{session_name} #{pane_current_command} #{pane_current_path} #{pane_pid} #{window_activity}"],{timeout:5e3}),t=new Map;for(let r of e.trim().split("\n")){if(!r)continue;let[e,s,n,i,a]=r.split(" ");if(e&&s){let r=parseInt(i,10),o=parseInt(a,10);t.set(e,{command:s,path:n||"",pid:Number.isNaN(r)?0:r,windowActivity:Number.isNaN(o)?0:o})}}return t}catch{return new Map}},b=new Set(["bash","zsh","fish","sh","dash"]),I=async e=>{let t=await N(e);return t?{isSafe:b.has(t),processName:t}:{isSafe:!1,processName:"unknown"}},$=async e=>{try{let{stdout:t}=await c("tmux",["-L",m,"display-message","-p","-t",e,"#{pane_title}"],{timeout:5e3});return t.trim()||null}catch{return null}},R=async e=>{await c("tmux",["-L",m,"copy-mode","-q","-t",e],{timeout:5e3}).catch(()=>{})},T=async(e,t)=>{await R(e),await c("tmux",["-L",m,"send-keys","-t",e,t,"Enter"],{timeout:5e3})},M=async(e,t)=>{await R(e),await c("tmux",["-L",m,"send-keys","-t",e,t],{timeout:5e3})},q=async(e,t)=>{await R(e),await c("tmux",["-L",m,"send-keys","-t",e,"-l",`\x1b[200~${t}\x1b[201~`],{timeout:5e3}),await c("tmux",["-L",m,"send-keys","-t",e,"Enter"],{timeout:5e3}),await new Promise(e=>setTimeout(e,600)),await c("tmux",["-L",m,"send-keys","-t",e,"Enter"],{timeout:5e3})},C=async e=>{try{let{stdout:t}=await c("tmux",["-L",m,"display-message","-p","-t",e,"#{pane_current_path} #{pane_current_command} #{pane_pid} #{pane_width} #{pane_height} #{session_created}"],{timeout:5e3}),[r,s,n,i,a,o]=t.trim().split(" ");return{cwd:r||null,command:s||null,pid:n&&parseInt(n,10)||null,width:i&&parseInt(i,10)||null,height:a&&parseInt(a,10)||null,sessionCreated:o&&parseInt(o,10)||null}}catch{return{cwd:null,command:null,pid:null,width:null,height:null,sessionCreated:null}}},k=new Set(["node","python","python3","ruby","perl","deno","bun"]),A=async()=>{try{await c("tmux",["-L",m,"kill-server"],{timeout:5e3}),p.debug("tmux server killed")}catch{}},O=async e=>{try{let{stdout:t}=await c("tmux",["-L",m,"capture-pane","-p","-t",e],{timeout:5e3});return t}catch{return null}},j=async(e,t)=>{try{let{stdout:r}=await c("tmux",["-L",m,"capture-pane","-p","-S",`-${t}`,"-t",e],{timeout:5e3});return r}catch{return null}},D=async e=>{if(u){let t=[];return await Promise.all(e.map(async e=>{try{for(let s of(await r.default.readFile(`/proc/${e}/task/${e}/children`,"utf-8")).trim().split(/\s+/)){let e=parseInt(s,10);Number.isNaN(e)||t.push(e)}}catch{}})),t}try{let{stdout:t}=await c("pgrep",["-P",e.join(",")],{timeout:5e3});return t.trim().split("\n").map(e=>parseInt(e,10)).filter(e=>!Number.isNaN(e))}catch{return[]}},U=async e=>{let t=[],r=[e];for(;r.length>0;){let e=await D(r);if(0===e.length)break;t.push(...e),r=e}return t},H=async e=>{try{let t=new Set(e),{stdout:r}=await c("ss",["-tlnp"],{timeout:5e3}),s=new Set;for(let e of r.split("\n")){let r=e.match(/pid=(\d+)/g);if(!r||!r.some(e=>t.has(parseInt(e.replace("pid=",""),10))))continue;let n=e.match(/:(\d+)\s/);n&&s.add(parseInt(n[1],10))}return[...s].sort((e,t)=>e-t)}catch{return[]}},G=async e=>{let t=await U(e);if(0===t.length)return[];if(u)return H(t);try{let{stdout:e}=await c("lsof",["-a","-p",t.join(","),"-i","-sTCP:LISTEN","-P","-Fn"],{timeout:5e3}),r=new Set;for(let t of e.split("\n"))if(t.startsWith("n")){let e=t.match(/:(\d+)$/);e&&r.add(parseInt(e[1],10))}return[...r].sort((e,t)=>e-t)}catch{return[]}},W=async e=>{let t=await L(e);if(!t)return null;try{let{stdout:e}=await c("pgrep",["-n","-P",String(t)],{timeout:5e3}),r=e.trim();if(!r)return null;let{stdout:s}=await c("ps",["-o","args=","-p",r],{timeout:5e3}),i=s.trim();if(!i)return null;let a=i.split(/\s+/);if(0===a.length)return i;if(a[0]=n.default.basename(a[0]),k.has(a[0])&&a.length>1){let e=n.default.basename(a[1]).replace(/\.(c|m)?js$/,"");a.splice(0,2,e)}return a.join(" ")}catch{return null}};e.s(["SAFE_SHELLS",0,b,"applyConfig",0,P,"capturePaneContent",0,O,"capturePaneContentWithHistory",0,j,"checkTerminalProcess",0,I,"createSession",0,h,"defaultSessionName",0,()=>`pt-${(0,i.nanoid)(6)}-${(0,i.nanoid)(6)}-${(0,i.nanoid)(6)}`,"exitCopyMode",0,R,"getAllPanesInfo",0,E,"getLastCommand",0,W,"getListeningPorts",0,G,"getPaneCurrentCommand",0,N,"getPaneDetailInfo",0,C,"getPaneTitle",0,$,"getSessionCwd",0,v,"getSessionPanePid",0,L,"hasSession",0,g,"killServer",0,A,"killSession",0,y,"listSessions",0,f,"scanSessions",0,S,"sendBracketedPaste",0,q,"sendKeys",0,T,"sendRawKeys",0,M,"workspaceSessionName",0,(e,t,r)=>`pt-${e}-${t}-${r}`],459015)},175609,(e,t,r)=>{t.exports=e.x("node-pty-592e8dc6192cfd06",()=>require("node-pty-592e8dc6192cfd06"))},971780,e=>{"use strict";var t=e.i(459015);e.i(478319),e.i(220951),e.i(175609),e.i(597789),e.i(965898),new TextEncoder,new TextDecoder,(0,e.i(25146).createLogger)("terminal"),new TextDecoder;let r=globalThis,s=r.__purplemux_terminal_connections??=new Map;r.__purplemux_terminal_output_ts??=new Map;let n=(e,t,r)=>{for(let n of s.values())if(n.sessionName===e&&!n.cleaned)return void n.pty.resize(t,r)},i=e=>new Promise(t=>setTimeout(t,e)),a=async(e,r,a)=>{let o=(e=>{for(let t of s.values())if(t.sessionName===e&&!t.cleaned)return{cols:t.currentCols,rows:t.currentRows};return null})(e);if(o&&o.cols>50)return(0,t.capturePaneContentWithHistory)(e,50);let l=(e=>{for(let t of s.values())if(t.sessionName===e&&!t.cleaned){if(t.capturePaused)return null;return t.capturePaused=!0,{cols:t.currentCols,rows:t.currentRows}}return null})(e);if(!l)return(0,t.capturePaneContent)(e);try{n(e,r,a),await i(300);let s=await (0,t.capturePaneContent)(e);return n(e,l.cols,l.rows),await i(300),s}finally{(e=>{for(let t of s.values())if(t.sessionName===e&&!t.cleaned){if(!t.capturePaused)return;t.capturePaused=!1;return}})(e)}};e.s(["capturePaneAtWidth",0,a],971780)},443571,e=>{"use strict";let t=["Yes","Yes,","No","Accept","Decline","Open System Settings","Try again","Use this","Continue without","Resume from summary","Resume full session","Continue this conversation","Send message as","Don't ask me again"],r=/^\s*(?:[❯›>]\s+)?(.+)$/,s=/^\s*[❯›>]\s+/,n=/^\d+\.\s+/,i=/^\s*([❯›>])?\s*(\d+)\.?\s*(\S.*)$/,a=e=>e.replace(n,""),o=(e,t)=>e.some(e=>a(e).startsWith(t)),l=e=>e.match(/^\s*/)?.[0].length??0,u=/^(Yes,\s*and\s+don[\u2019']?t\s+ask)\s*:\s*(.+)$/,p=e=>!(e.length<2)&&(o(e,"Yes")&&o(e,"No")||o(e,"Accept")&&o(e,"Decline")||o(e,"Open System Settings")||o(e,"Use this")&&o(e,"Continue without")||o(e,"Resume from summary")&&o(e,"Resume full session")||o(e,"Continue this conversation")&&o(e,"Send message as"));e.s(["parsePermissionOptions",0,e=>{let n=e.split("\n"),o=(e=>{let t=[],r=[],s=0,n=1,a=0,o=()=>{r.length>=2&&t.push({rawOptions:r.slice(),focusedIndex:s}),r=[],s=0,n=1,a=0};for(let t of e){if(!t.trim())continue;let e=t.match(i);if(e){let i=e[1],u=Number(e[2]),p=e[3].trim();if(p.length>0){if(1===u){o(),r.push(p),i&&(s=0),a=l(t),n=2;continue}if(u===n){i&&(s=r.length),r.push(p),a=l(t),n+=1;continue}}}if(r.length>0){if(l(t)>a){r[r.length-1]+=t.trimStart();continue}if(/^\s+\S/.test(t))continue;o()}}o();let p=t[t.length-1];return p?{options:p.rawOptions.map((e,t)=>{let r;return`${t+1}. ${(r=e.match(u))?`${r[1]} again for: ${r[2].trim()}`:/^Yes(?![,\s]|$)/.test(e)?"Yes":/^No(?![,\s]|$)/.test(e)?"No":e}`}),focusedIndex:p.focusedIndex}:{options:[],focusedIndex:0}})(n);if(o.options.length>=2&&p(o.options))return o;let c=(e=>{let n=[],i=0,o=!1;for(let l of e){if(!l.trim()){if(o)break;continue}let e=s.test(l),u=/^\s+\S/.test(l);if(!e&&!u){if(o)break;continue}let p=l.match(r);if(!p)continue;let c=p[1].trim(),m=a(c);t.some(e=>m.startsWith(e))&&(e&&(i=n.length),n.push(c),o=!0)}return{options:n,focusedIndex:i}})(n);return p(c.options)?c:{options:[],focusedIndex:0}}])},454549,e=>{"use strict";var t=e.i(926747),r=e.i(190406),s=e.i(244898),n=e.i(262950),i=e.i(459015),a=e.i(971780),o=e.i(25146),l=e.i(443571);let u=(0,o.createLogger)("tmux"),p=async(e,t)=>{if("GET"!==e.method)return t.setHeader("Allow","GET"),t.status(405).json({error:"Method not allowed"});let r=e.query.session;if(!r)return t.status(400).json({error:"session parameter required"});if(!await (0,i.hasSession)(r))return t.status(404).json({error:"Session not found"});try{let e=await (0,a.capturePaneAtWidth)(r,120,50);if(!e)return t.status(200).json({options:[]});let{options:s}=(0,l.parsePermissionOptions)(e),n=e.includes("Bypass Permissions");return t.status(200).json({options:s,...n&&{isBypassPrompt:!0}})}catch(e){return u.error(`permission-options query failed: ${e instanceof Error?e.message:e}`),t.status(500).json({error:"Terminal capture failed"})}};e.s(["default",0,p],96110);var c=e.i(96110),m=e.i(7031),d=e.i(181927),f=e.i(846432);let h=(0,n.hoist)(c,"default"),w=(0,n.hoist)(c,"config"),y=new s.PagesAPIRouteModule({definition:{kind:r.RouteKind.PAGES_API,page:"/api/tmux/permission-options",pathname:"/api/tmux/permission-options",bundlePath:"",filename:""},userland:c,distDir:".next",relativeProjectDir:""});async function g(e,r,s){s.requestMeta&&(0,f.setRequestMeta)(e,s.requestMeta),y.isDev&&(0,f.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let n="/api/tmux/permission-options";n=n.replace(/\/index$/,"")||"/";let i=await y.prepare(e,r,{srcPage:n});if(!i){r.statusCode=400,r.end("Bad Request"),null==s.waitUntil||s.waitUntil.call(s,Promise.resolve());return}let{query:a,params:o,prerenderManifest:l,routerServerContext:u}=i;try{let t,s=e.method||"GET",i=(0,m.getTracer)(),p=i.getActiveScopeSpan(),c=!!(null==u?void 0:u.isWrappedByNextServer),f=y.instrumentationOnRequestError.bind(y),h=async p=>y.render(e,r,{query:{...a,...o},params:o,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:l.preview,propagateError:!1,dev:y.isDev,page:"/api/tmux/permission-options",internalRevalidate:null==u?void 0:u.revalidate,onError:(...t)=>f(e,...t)}).finally(()=>{if(!p)return;p.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 a=e.get("next.route");if(a){let e=`${s} ${a}`;p.setAttributes({"next.route":a,"http.route":a,"next.span_name":e}),p.updateName(e),t&&t!==p&&(t.setAttribute("http.route",a),t.updateName(e))}else p.updateName(`${s} ${n}`)});c&&p?await h(p):(t=i.getActiveScopeSpan(),await i.withPropagatedContext(e.headers,()=>i.trace(d.BaseServerSpan.handleRequest,{spanName:`${s} ${n}`,kind:m.SpanKind.SERVER,attributes:{"http.method":s,"http.target":e.url}},h),void 0,!c))}catch(e){if(y.isDev)throw e;(0,t.sendError)(r,500,"Internal Server Error")}finally{null==s.waitUntil||s.waitUntil.call(s,Promise.resolve())}}e.s(["config",0,w,"default",0,h,"handler",0,g],454549)}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=%5Broot-of-the-server%5D__0t1c-6w._.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
module.exports=[270406,(e,t,a)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},446786,(e,t,a)=>{t.exports=e.x("os",()=>require("os"))},814747,(e,t,a)=>{t.exports=e.x("path",()=>require("path"))},924868,(e,t,a)=>{t.exports=e.x("fs/promises",()=>require("fs/promises"))},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 r=new Set(["HOME","USER","LOGNAME","SHELL","PATH","TERM","COLORTERM","LANG","TMPDIR","SSH_AUTH_SOCK","SSH_CONNECTION","SSH_TTY","DISPLAY","WAYLAND_DISPLAY","XDG_RUNTIME_DIR","TZ"]),i=["LC_"],n=e=>r.has(e)||i.some(t=>e.startsWith(t)),s={TERM:"xterm-256color",COLORTERM:"truecolor"},l=()=>{let e={};for(let[t,r]of Object.entries(a))void 0!==r&&n(t)&&(e[t]=r);return{...e,...s}},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),r=e.i(446786),i=e.i(814747),n=e.i(224361),s=e.i(597789),l=e.i(965898);let o=(0,n.promisify)(t.execFile),u=null,c=null,d=async()=>{let e=r.default.userInfo().shell||(0,s.defaultShell)();try{let{stdout:t}=await o(e,["-ilc",'echo -n "$PATH"'],{timeout:5e3,env:{...(0,s.buildShellEnv)(),SHELL:e,DISABLE_AUTO_UPDATE:"true",ZSH_TMUX_AUTOSTARTED:"true"}});return t.toString().trim()}catch{return l.PRISTINE_ENV.PATH||""}},p=async()=>u||(c||(c=d().then(e=>(u=e,c=null,e))),c),m=async(e,t,a)=>{try{let r=await p(),{stdout:i}=await o(e,t,{timeout:5e3,env:{...process.env,PATH:r}});return{installed:!0,version:a(i)}}catch{return{installed:!1,version:null}}},h=e=>e.trim().match(/(\d+\.\d+[\d.]*)/)?.[1]??null,f=[i.default.join(r.default.homedir(),".local","bin")],g=async()=>{for(let e of f)try{return await (0,a.access)(i.default.join(e,"claude")),e}catch{}return null},y=e=>e.installed&&null!==e.version&&parseFloat(e.version)>=2.9,S=async()=>{u=await d();let[e,t,n]=await Promise.all([m("tmux",["-V"],h),m("git",["--version"],h),m("claude",["--version"],h)]),s=(y(e)&&t.installed&&n.installed,n.installed?null:await g()),l=!1;if(n.installed||s)try{await (0,a.access)(i.default.join(r.default.homedir(),".claude")),l=!0}catch{}return{tmux:{...e,compatible:y(e)},git:t,claude:{...n,binaryPath:s,loggedIn:l}}},w=null,v=null,A=null,x=null,E=async()=>A&&Date.now()-A.checkedAt<1e3?A.result:x||(x=S().then(e=>(A={result:e,checkedAt:Date.now()},x=null,e)).catch(e=>{throw x=null,e})),T=async()=>{u=await d();let[e,t,a]=await Promise.all([m("tmux",["-V"],h),m("git",["--version"],h),m("claude",["--version"],h)]);return{tmux:{...e,compatible:y(e)},git:t,claude:a}},P=async()=>w&&Date.now()-w.checkedAt<3e4?w.result:v||(v=T().then(e=>(w={result:e,checkedAt:Date.now()},v=null,e)).catch(e=>{throw v=null,e}));e.s(["getCachedPreflightStatus",0,E,"getCachedRuntimePreflight",0,P,"getShellPath",0,p,"invalidateRuntimeCache",0,()=>{w=null,v=null}])},
|
|
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 r=new Set(["HOME","USER","LOGNAME","SHELL","PATH","TERM","COLORTERM","LANG","TMPDIR","SSH_AUTH_SOCK","SSH_CONNECTION","SSH_TTY","DISPLAY","WAYLAND_DISPLAY","XDG_RUNTIME_DIR","TZ"]),i=["LC_"],n=e=>r.has(e)||i.some(t=>e.startsWith(t)),s={TERM:"xterm-256color",COLORTERM:"truecolor"},l=()=>{let e={};for(let[t,r]of Object.entries(a))void 0!==r&&n(t)&&(e[t]=r);return{...e,...s}},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),r=e.i(446786),i=e.i(814747),n=e.i(224361),s=e.i(597789),l=e.i(965898);let o=(0,n.promisify)(t.execFile),u=null,c=null,d=async()=>{let e=r.default.userInfo().shell||(0,s.defaultShell)();try{let{stdout:t}=await o(e,["-ilc",'echo -n "$PATH"'],{timeout:5e3,env:{...(0,s.buildShellEnv)(),SHELL:e,DISABLE_AUTO_UPDATE:"true",ZSH_TMUX_AUTOSTARTED:"true"}});return t.toString().trim()}catch{return l.PRISTINE_ENV.PATH||""}},p=async()=>u||(c||(c=d().then(e=>(u=e,c=null,e))),c),m=async(e,t,a)=>{try{let r=await p(),{stdout:i}=await o(e,t,{timeout:5e3,env:{...process.env,PATH:r}});return{installed:!0,version:a(i)}}catch{return{installed:!1,version:null}}},h=e=>e.trim().match(/(\d+\.\d+[\d.]*)/)?.[1]??null,f=[i.default.join(r.default.homedir(),".local","bin")],g=async()=>{for(let e of f)try{return await (0,a.access)(i.default.join(e,"claude")),e}catch{}return null},y=e=>e.installed&&null!==e.version&&parseFloat(e.version)>=2.9,S=async()=>{u=await d();let[e,t,n]=await Promise.all([m("tmux",["-V"],h),m("git",["--version"],h),m("claude",["--version"],h)]),s=(y(e)&&t.installed&&n.installed,n.installed?null:await g()),l=!1;if(n.installed||s)try{await (0,a.access)(i.default.join(r.default.homedir(),".claude")),l=!0}catch{}return{tmux:{...e,compatible:y(e)},git:t,claude:{...n,binaryPath:s,loggedIn:l}}},w=null,v=null,A=null,x=null,E=async()=>A&&Date.now()-A.checkedAt<1e3?A.result:x||(x=S().then(e=>(A={result:e,checkedAt:Date.now()},x=null,e)).catch(e=>{throw x=null,e})),T=async()=>{u=await d();let[e,t,a]=await Promise.all([m("tmux",["-V"],h),m("git",["--version"],h),m("claude",["--version"],h)]);return{tmux:{...e,compatible:y(e)},git:t,claude:a}},P=async()=>w&&Date.now()-w.checkedAt<3e4?w.result:v||(v=T().then(e=>(w={result:e,checkedAt:Date.now()},v=null,e)).catch(e=>{throw v=null,e}));e.s(["getCachedPreflightStatus",0,E,"getCachedRuntimePreflight",0,P,"getShellPath",0,p,"invalidateRuntimeCache",0,()=>{w=null,v=null}])},7991,e=>{"use strict";var t=e.i(924868),a=e.i(814747),r=e.i(446786),i=e.i(522734),n=e.i(319668),s=e.i(233405),l=e.i(713915),o=e.i(177579);let u=a.default.join(r.default.homedir(),".purplemux","stats","daily-reports"),c=async()=>{let e={};try{for(let r of(await t.default.readdir(u)))if(r.endsWith(".json"))try{let i=await t.default.readFile(a.default.join(u,r),"utf-8"),n=JSON.parse(i);n.date&&n.brief&&(e[n.date]=n)}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")},p=e=>{let t=r.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")},m=async e=>{let t=await (0,o.collectJsonlFiles)(),r=[];for(let s of t){let t=[],l=[],o=0,u="";try{let a=(0,i.createReadStream)(s,{encoding:"utf-8"});for await(let r of n.default.createInterface({input:a,crlfDelay:1/0}))if(r.trim())try{let a=JSON.parse(r),i=String(a.timestamp??"");if(!i.startsWith(e))continue;l.push(i);let n=String(a.type??"");if(u||"string"!=typeof a.cwd||(u=a.cwd),"user"===n){let e=a.message;if(!e)continue;let r=e.content,n="";if("string"==typeof r)n=r.slice(0,300);else if(Array.isArray(r)){let e=[];for(let t of r)"object"==typeof t&&null!==t&&"text"===t.type&&e.push(String(t.text??"").slice(0,300));n=e.join(" | ")}if(n.includes("<command-message>")){let e=n.match(/<command-name>\/([^<]+)<\/command-name>/);n=`[Command: ${e?e[1]:"unknown"}]`}if(n.includes("<local-command-caveat>")||n.includes("<task-notification>"))continue;n.trim()&&t.push({time:i.slice(11,16),text:n.slice(0,200)})}if("assistant"===n){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?p(u):a.default.basename(a.default.dirname(s));r.push({project:e,start:Math.min(...l.map(e=>new Date(e).getTime())).toString(),msgCount:t.length,toolCount:o,firstMessage:t[0].text})}}return r.sort((e,t)=>Number(e.start)-Number(t.start)),r},h=async(e,t)=>{let a=await (0,l.getShellPath)();return new Promise((r,i)=>{let n=(0,s.execFile)("claude",["-p"],{timeout:12e4,maxBuffer:1048576,env:{...process.env,PATH:a}},(e,t)=>{e?i(Error(`claude -p failed: ${e.message}`)):r(t.trim())});n.stdin?.write(`${t}
|
|
2
2
|
|
|
3
3
|
${e}`),n.stdin?.end()})},f={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 r,i;let n,s,l;if(!t){let t=await y(e);if(t&&t.locale===a)return t}let o=await m(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:p}=(s=(i=await h(u,(r=e,n=f[a]??f.en,`Summarize the Claude session history for ${r}.
|
|
4
4
|
|
|
@@ -27,4 +27,4 @@ Rules:
|
|
|
27
27
|
|
|
28
28
|
Data:`))).match(/\[BRIEF\]\s*\n([\s\S]*?)(?=\[DETAIL\])/),l=i.match(/\[DETAIL\]\s*\n([\s\S]*?)$/),{brief:s?s[1].replace(/[\s#\-]*$/,"").trim():i.slice(0,500),detail:l?l[1].trim():""}),g={date:e,brief:c,detail:p,generatedAt:new Date().toISOString(),locale:a};return await d(g),g},y=async e=>{try{let r=await t.default.readFile(a.default.join(u,`${e}.json`),"utf-8"),i=JSON.parse(r);return i.date&&i.brief?i:null}catch{return null}};e.s(["generateDailyReport",0,g,"readAllCachedReports",0,c,"shortenCwd",0,p])},843866,e=>{"use strict";var t=e.i(926747),a=e.i(190406),r=e.i(244898),i=e.i(262950),n=e.i(7991);let s=async(e,t)=>{if("POST"!==e.method)return t.setHeader("Allow","POST"),t.status(405).json({error:"method-not-allowed"});let{date:a,force:r,locale:i}=e.body;if(!a||!/^\d{4}-\d{2}-\d{2}$/.test(a))return t.status(400).json({error:"invalid-date",message:"date must be YYYY-MM-DD"});let s="string"==typeof i&&i.trim()?i:"en";try{let e=await (0,n.generateDailyReport)(a,!!r,s);return t.status(200).json(e)}catch(a){let e=a instanceof Error?a.message:"unknown error";return t.status(500).json({error:"generation-failed",message:e})}};e.s(["default",0,s],806436);var l=e.i(806436),o=e.i(7031),u=e.i(181927),c=e.i(846432);let d=(0,i.hoist)(l,"default"),p=(0,i.hoist)(l,"config"),m=new r.PagesAPIRouteModule({definition:{kind:a.RouteKind.PAGES_API,page:"/api/stats/daily-report/generate",pathname:"/api/stats/daily-report/generate",bundlePath:"",filename:""},userland:l,distDir:".next",relativeProjectDir:""});async function h(e,a,r){r.requestMeta&&(0,c.setRequestMeta)(e,r.requestMeta),m.isDev&&(0,c.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let i="/api/stats/daily-report/generate";i=i.replace(/\/index$/,"")||"/";let n=await m.prepare(e,a,{srcPage:i});if(!n){a.statusCode=400,a.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve());return}let{query:s,params:l,prerenderManifest:d,routerServerContext:p}=n;try{let t,r=e.method||"GET",n=(0,o.getTracer)(),c=n.getActiveScopeSpan(),h=!!(null==p?void 0:p.isWrappedByNextServer),f=m.instrumentationOnRequestError.bind(m),g=async o=>m.render(e,a,{query:{...s,...l},params:l,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:d.preview,propagateError:!1,dev:m.isDev,page:"/api/stats/daily-report/generate",internalRevalidate:null==p?void 0:p.revalidate,onError:(...t)=>f(e,...t)}).finally(()=>{if(!o)return;o.setAttributes({"http.status_code":a.statusCode,"next.rsc":!1});let e=n.getRootSpanAttributes();if(!e)return;if(e.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${e.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let s=e.get("next.route");if(s){let e=`${r} ${s}`;o.setAttributes({"next.route":s,"http.route":s,"next.span_name":e}),o.updateName(e),t&&t!==o&&(t.setAttribute("http.route",s),t.updateName(e))}else o.updateName(`${r} ${i}`)});h&&c?await g(c):(t=n.getActiveScopeSpan(),await n.withPropagatedContext(e.headers,()=>n.trace(u.BaseServerSpan.handleRequest,{spanName:`${r} ${i}`,kind:o.SpanKind.SERVER,attributes:{"http.method":r,"http.target":e.url}},g),void 0,!h))}catch(e){if(m.isDev)throw e;(0,t.sendError)(a,500,"Internal Server Error")}finally{null==r.waitUntil||r.waitUntil.call(r,Promise.resolve())}}e.s(["config",0,p,"default",0,d,"handler",0,h],843866)}];
|
|
29
29
|
|
|
30
|
-
//# sourceMappingURL=%5Broot-of-the-server%
|
|
30
|
+
//# sourceMappingURL=%5Broot-of-the-server%5D__0t7wqt6._.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
module.exports=[270406,(e,t,a)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},446786,(e,t,a)=>{t.exports=e.x("os",()=>require("os"))},814747,(e,t,a)=>{t.exports=e.x("path",()=>require("path"))},924868,(e,t,a)=>{t.exports=e.x("fs/promises",()=>require("fs/promises"))},130146,(e,t,a)=>{t.exports=e.x("pino-28069d5257187539",()=>require("pino-28069d5257187539"))},224361,(e,t,a)=>{t.exports=e.x("util",()=>require("util"))},233405,(e,t,a)=>{t.exports=e.x("child_process",()=>require("child_process"))},666680,(e,t,a)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},597789,965898,e=>{"use strict";let t=process.env.__PMUX_PRISTINE_ENV,a=Object.freeze(t?JSON.parse(t):{...process.env});t||(process.env.__PMUX_PRISTINE_ENV=JSON.stringify(a)),e.s(["PRISTINE_ENV",0,a],965898);let r=new Set(["HOME","USER","LOGNAME","SHELL","PATH","TERM","COLORTERM","LANG","TMPDIR","SSH_AUTH_SOCK","SSH_CONNECTION","SSH_TTY","DISPLAY","WAYLAND_DISPLAY","XDG_RUNTIME_DIR","TZ"]),i=["LC_"],s=e=>r.has(e)||i.some(t=>e.startsWith(t)),n={TERM:"xterm-256color",COLORTERM:"truecolor"},l=()=>{let e={};for(let[t,r]of Object.entries(a))void 0!==r&&s(t)&&(e[t]=r);return{...e,...n}},o=e=>`'${e.replace(/'/g,"'\\''")}'`,u=()=>a.SHELL||"/bin/bash";e.s(["buildShellEnv",0,()=>l(),"buildShellLaunchCommand",0,()=>{let e=Object.entries(l()).map(([e,t])=>`${e}=${o(t)}`).join(" ");return`env -i TMUX="$TMUX" TMUX_PANE="$TMUX_PANE" ${e} ${o(u())} -l`},"defaultShell",0,u],597789)},25146,e=>{"use strict";var t=e.i(130146),a=e.i(814747),r=e.i(446786);let i=a.default.join(r.default.homedir(),".purplemux","logs"),s=process.env.LOG_LEVEL||"info",n=(e=>{if(!e)return{};let t={};for(let a of e.split(",")){let[e,r]=a.split("=").map(e=>e.trim());e&&r&&(t[e]=r)}return t})(process.env.LOG_LEVELS),l=["trace","debug","info","warn","error","fatal"],o=globalThis;if(!o.__ptRootLogger){let e=[s,...Object.values(n)].reduce((e,t)=>l.indexOf(t)<l.indexOf(e)?t:e,"fatal");o.__ptRootLogger=(0,t.default)({level:e,transport:{targets:[{target:"pino-roll",level:e,options:{file:a.default.join(i,"purplemux"),frequency:"daily",dateFormat:"yyyy-MM-dd",limit:{count:7},mkdir:!0}},{target:"pino-pretty",level:e,options:{colorize:!0,ignore:"pid,hostname,module",translateTime:"HH:MM:ss",messageFormat:"[{module}] {msg}"}}]}})}let u=o.__ptRootLogger;e.s(["createLogger",0,e=>{let t=u.child({module:e});return t.level=n[e]??s,t}])},44014,e=>{"use strict";let t,a;var r=e.i(666680);e.s(["nanoid",0,function(e=21){var i;i=e|=0,!t||t.length<i?(t=Buffer.allocUnsafe(128*i),r.webcrypto.getRandomValues(t),a=0):a+i>t.length&&(r.webcrypto.getRandomValues(t),a=0),a+=i;let s="";for(let r=a-e;r<a;r++)s+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[63&t[r]];return s}],44014)},459015,544538,e=>{"use strict";var t=e.i(233405),a=e.i(924868),r=e.i(224361),i=e.i(814747),s=e.i(44014),n=e.i(965898),l=e.i(597789),o=e.i(25146);process.platform;let u="linux"===process.platform;e.s(["isLinux",0,u],544538);let p=(0,o.createLogger)("terminal"),c=(0,r.promisify)(t.execFile),d="purple",m=i.default.join(process.env.__PMUX_APP_DIR_UNPACKED||process.env.__PMUX_APP_DIR||process.cwd(),"src","config","tmux.conf"),h=async()=>{try{let{stdout:e}=await c("tmux",["-L",d,"ls","-F","#{session_name}"],{timeout:5e3});return e.trim().split("\n").map(e=>e.trim()).filter(e=>e.startsWith("pt-"))}catch{return[]}},f=async(e,t,a,r)=>{let i=(0,l.buildShellLaunchCommand)();await c("tmux",["-u","-L",d,"-f",m,"new-session","-d","-s",e,"-x",String(t),"-y",String(a),i],{timeout:5e3,cwd:r||n.PRISTINE_ENV.HOME||"/"}),await E(),p.debug(`tmux session created: ${e} (cols: ${t}, rows: ${a})`)},y=e=>new Promise(t=>setTimeout(t,e)),w=async e=>{if(!await g(e))return;p.debug(`killSession start: ${e}`);let t=await v(e);if(t)try{p.debug(`SIGTERM → process group ${t}: ${e}`),process.kill(-t,"SIGTERM")}catch{}try{await c("tmux",["-L",d,"kill-session","-t",e],{timeout:5e3})}catch{}for(let t=0;t<5;t++){if(!await g(e))return void p.debug(`killSession done (SIGTERM): ${e}`);await y(200)}if(p.warn(`session survived SIGTERM, escalating to SIGKILL: ${e}`),t)try{p.debug(`SIGKILL → process group ${t}: ${e}`),process.kill(-t,"SIGKILL")}catch{}try{await c("tmux",["-L",d,"kill-session","-t",e],{timeout:5e3})}catch{}for(let t=0;t<3;t++){if(!await g(e))return void p.debug(`killSession done (SIGKILL): ${e}`);await y(200)}p.warn(`tmux session still alive after kill: ${e}`)},g=async e=>{try{return await c("tmux",["-L",d,"has-session","-t",e],{timeout:5e3}),!0}catch{return!1}},S=async()=>{},x=async()=>{await S();let e=await h();e.length>0&&e.forEach(e=>{p.debug(`existing tmux session found: ${e}`)})},_=async e=>{if(u)try{return await a.default.readlink(`/proc/${e}/cwd`)}catch{return null}try{let{stdout:t}=await c("lsof",["-a","-p",String(e),"-d","cwd","-Fn"],{timeout:5e3}),a=t.split("\n").find(e=>e.startsWith("n/"));return a?a.slice(1):null}catch{return null}},L=async e=>{let t=await v(e);if(t){let e=await _(t);if(e)return e}try{let{stdout:t}=await c("tmux",["-L",d,"display-message","-p","-t",e,"#{pane_current_path}"],{timeout:5e3});return t.trim()||null}catch{return null}},v=async e=>{try{let{stdout:t}=await c("tmux",["-L",d,"display-message","-p","-t",e,"#{pane_pid}"],{timeout:5e3}),a=parseInt(t.trim(),10);return Number.isNaN(a)?null:a}catch{return null}},E=async()=>{try{await c("tmux",["-L",d,"source-file",m],{timeout:5e3})}catch{}},P=async e=>{try{let{stdout:t}=await c("tmux",["-L",d,"list-panes","-t",e,"-F","#{pane_current_command}"],{timeout:5e3});return t.trim()||null}catch{return null}},I=async()=>{try{let{stdout:e}=await c("tmux",["-L",d,"list-panes","-a","-F","#{session_name} #{pane_current_command} #{pane_current_path} #{pane_pid} #{window_activity}"],{timeout:5e3}),t=new Map;for(let a of e.trim().split("\n")){if(!a)continue;let[e,r,i,s,n]=a.split(" ");if(e&&r){let a=parseInt(s,10),l=parseInt(n,10);t.set(e,{command:r,path:i||"",pid:Number.isNaN(a)?0:a,windowActivity:Number.isNaN(l)?0:l})}}return t}catch{return new Map}},N=new Set(["bash","zsh","fish","sh","dash"]),b=async e=>{let t=await P(e);return t?{isSafe:N.has(t),processName:t}:{isSafe:!1,processName:"unknown"}},R=async e=>{try{let{stdout:t}=await c("tmux",["-L",d,"display-message","-p","-t",e,"#{pane_title}"],{timeout:5e3});return t.trim()||null}catch{return null}},$=async e=>{await c("tmux",["-L",d,"copy-mode","-q","-t",e],{timeout:5e3}).catch(()=>{})},T=async(e,t)=>{await $(e),await c("tmux",["-L",d,"send-keys","-t",e,t,"Enter"],{timeout:5e3})},M=async(e,t)=>{await $(e),await c("tmux",["-L",d,"send-keys","-t",e,t],{timeout:5e3})},k=async(e,t)=>{await $(e),await c("tmux",["-L",d,"send-keys","-t",e,"-l",`\x1b[200~${t}\x1b[201~`],{timeout:5e3}),await c("tmux",["-L",d,"send-keys","-t",e,"Enter"],{timeout:5e3}),await new Promise(e=>setTimeout(e,600)),await c("tmux",["-L",d,"send-keys","-t",e,"Enter"],{timeout:5e3})},A=async e=>{try{let{stdout:t}=await c("tmux",["-L",d,"display-message","-p","-t",e,"#{pane_current_path} #{pane_current_command} #{pane_pid} #{pane_width} #{pane_height} #{session_created}"],{timeout:5e3}),[a,r,i,s,n,l]=t.trim().split(" ");return{cwd:a||null,command:r||null,pid:i&&parseInt(i,10)||null,width:s&&parseInt(s,10)||null,height:n&&parseInt(n,10)||null,sessionCreated:l&&parseInt(l,10)||null}}catch{return{cwd:null,command:null,pid:null,width:null,height:null,sessionCreated:null}}},C=new Set(["node","python","python3","ruby","perl","deno","bun"]),O=async()=>{try{await c("tmux",["-L",d,"kill-server"],{timeout:5e3}),p.debug("tmux server killed")}catch{}},q=async e=>{try{let{stdout:t}=await c("tmux",["-L",d,"capture-pane","-p","-t",e],{timeout:5e3});return t}catch{return null}},U=async(e,t)=>{try{let{stdout:a}=await c("tmux",["-L",d,"capture-pane","-p","-S",`-${t}`,"-t",e],{timeout:5e3});return a}catch{return null}},j=async e=>{if(u){let t=[];return await Promise.all(e.map(async e=>{try{for(let r of(await a.default.readFile(`/proc/${e}/task/${e}/children`,"utf-8")).trim().split(/\s+/)){let e=parseInt(r,10);Number.isNaN(e)||t.push(e)}}catch{}})),t}try{let{stdout:t}=await c("pgrep",["-P",e.join(",")],{timeout:5e3});return t.trim().split("\n").map(e=>parseInt(e,10)).filter(e=>!Number.isNaN(e))}catch{return[]}},D=async e=>{let t=[],a=[e];for(;a.length>0;){let e=await j(a);if(0===e.length)break;t.push(...e),a=e}return t},H=async e=>{try{let t=new Set(e),{stdout:a}=await c("ss",["-tlnp"],{timeout:5e3}),r=new Set;for(let e of a.split("\n")){let a=e.match(/pid=(\d+)/g);if(!a||!a.some(e=>t.has(parseInt(e.replace("pid=",""),10))))continue;let i=e.match(/:(\d+)\s/);i&&r.add(parseInt(i[1],10))}return[...r].sort((e,t)=>e-t)}catch{return[]}},G=async e=>{let t=await D(e);if(0===t.length)return[];if(u)return H(t);try{let{stdout:e}=await c("lsof",["-a","-p",t.join(","),"-i","-sTCP:LISTEN","-P","-Fn"],{timeout:5e3}),a=new Set;for(let t of e.split("\n"))if(t.startsWith("n")){let e=t.match(/:(\d+)$/);e&&a.add(parseInt(e[1],10))}return[...a].sort((e,t)=>e-t)}catch{return[]}},K=async e=>{let t=await v(e);if(!t)return null;try{let{stdout:e}=await c("pgrep",["-n","-P",String(t)],{timeout:5e3}),a=e.trim();if(!a)return null;let{stdout:r}=await c("ps",["-o","args=","-p",a],{timeout:5e3}),s=r.trim();if(!s)return null;let n=s.split(/\s+/);if(0===n.length)return s;if(n[0]=i.default.basename(n[0]),C.has(n[0])&&n.length>1){let e=i.default.basename(n[1]).replace(/\.(c|m)?js$/,"");n.splice(0,2,e)}return n.join(" ")}catch{return null}};e.s(["SAFE_SHELLS",0,N,"applyConfig",0,E,"capturePaneContent",0,q,"capturePaneContentWithHistory",0,U,"checkTerminalProcess",0,b,"createSession",0,f,"defaultSessionName",0,()=>`pt-${(0,s.nanoid)(6)}-${(0,s.nanoid)(6)}-${(0,s.nanoid)(6)}`,"exitCopyMode",0,$,"getAllPanesInfo",0,I,"getLastCommand",0,K,"getListeningPorts",0,G,"getPaneCurrentCommand",0,P,"getPaneDetailInfo",0,A,"getPaneTitle",0,R,"getSessionCwd",0,L,"getSessionPanePid",0,v,"hasSession",0,g,"killServer",0,O,"killSession",0,w,"listSessions",0,h,"scanSessions",0,x,"sendBracketedPaste",0,k,"sendKeys",0,T,"sendRawKeys",0,M,"workspaceSessionName",0,(e,t,a)=>`pt-${e}-${t}-${a}`],459015)},668144,e=>{"use strict";var t=e.i(926747),a=e.i(190406),r=e.i(244898),i=e.i(262950),s=e.i(459015);let n=async(e,t)=>{let a=await (0,s.listSessions)();t.status(200).json({count:a.length})};e.s(["default",0,n],877394);var l=e.i(877394),o=e.i(7031),u=e.i(181927),p=e.i(846432);let c=(0,i.hoist)(l,"default"),d=(0,i.hoist)(l,"config"),m=new r.PagesAPIRouteModule({definition:{kind:a.RouteKind.PAGES_API,page:"/api/system/tmux-sessions",pathname:"/api/system/tmux-sessions",bundlePath:"",filename:""},userland:l,distDir:".next",relativeProjectDir:""});async function h(e,a,r){r.requestMeta&&(0,p.setRequestMeta)(e,r.requestMeta),m.isDev&&(0,p.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let i="/api/system/tmux-sessions";i=i.replace(/\/index$/,"")||"/";let s=await m.prepare(e,a,{srcPage:i});if(!s){a.statusCode=400,a.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve());return}let{query:n,params:l,prerenderManifest:c,routerServerContext:d}=s;try{let t,r=e.method||"GET",s=(0,o.getTracer)(),p=s.getActiveScopeSpan(),h=!!(null==d?void 0:d.isWrappedByNextServer),f=m.instrumentationOnRequestError.bind(m),y=async o=>m.render(e,a,{query:{...n,...l},params:l,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:c.preview,propagateError:!1,dev:m.isDev,page:"/api/system/tmux-sessions",internalRevalidate:null==d?void 0:d.revalidate,onError:(...t)=>f(e,...t)}).finally(()=>{if(!o)return;o.setAttributes({"http.status_code":a.statusCode,"next.rsc":!1});let e=s.getRootSpanAttributes();if(!e)return;if(e.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${e.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=e.get("next.route");if(n){let e=`${r} ${n}`;o.setAttributes({"next.route":n,"http.route":n,"next.span_name":e}),o.updateName(e),t&&t!==o&&(t.setAttribute("http.route",n),t.updateName(e))}else o.updateName(`${r} ${i}`)});h&&p?await y(p):(t=s.getActiveScopeSpan(),await s.withPropagatedContext(e.headers,()=>s.trace(u.BaseServerSpan.handleRequest,{spanName:`${r} ${i}`,kind:o.SpanKind.SERVER,attributes:{"http.method":r,"http.target":e.url}},y),void 0,!h))}catch(e){if(m.isDev)throw e;(0,t.sendError)(a,500,"Internal Server Error")}finally{null==r.waitUntil||r.waitUntil.call(r,Promise.resolve())}}e.s(["config",0,d,"default",0,c,"handler",0,h],668144)}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=%5Broot-of-the-server%5D__0vi8p6v._.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
module.exports=[270406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},446786,(e,t,r)=>{t.exports=e.x("os",()=>require("os"))},814747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},924868,(e,t,r)=>{t.exports=e.x("fs/promises",()=>require("fs/promises"))},130146,(e,t,r)=>{t.exports=e.x("pino-28069d5257187539",()=>require("pino-28069d5257187539"))},224361,(e,t,r)=>{t.exports=e.x("util",()=>require("util"))},233405,(e,t,r)=>{t.exports=e.x("child_process",()=>require("child_process"))},666680,(e,t,r)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},597789,965898,e=>{"use strict";let t=process.env.__PMUX_PRISTINE_ENV,r=Object.freeze(t?JSON.parse(t):{...process.env});t||(process.env.__PMUX_PRISTINE_ENV=JSON.stringify(r)),e.s(["PRISTINE_ENV",0,r],965898);let a=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"]),n=["LC_"],i=e=>a.has(e)||n.some(t=>e.startsWith(t)),s={TERM:"xterm-256color",COLORTERM:"truecolor"},l=()=>{let e={};for(let[t,a]of Object.entries(r))void 0!==a&&i(t)&&(e[t]=a);return{...e,...s}},o=e=>`'${e.replace(/'/g,"'\\''")}'`,u=()=>r.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)},25146,e=>{"use strict";var t=e.i(130146),r=e.i(814747),a=e.i(446786);let n=r.default.join(a.default.homedir(),".purplemux","logs"),i=process.env.LOG_LEVEL||"info",s=(e=>{if(!e)return{};let t={};for(let r of e.split(",")){let[e,a]=r.split("=").map(e=>e.trim());e&&a&&(t[e]=a)}return t})(process.env.LOG_LEVELS),l=["trace","debug","info","warn","error","fatal"],o=globalThis;if(!o.__ptRootLogger){let e=[i,...Object.values(s)].reduce((e,t)=>l.indexOf(t)<l.indexOf(e)?t:e,"fatal");o.__ptRootLogger=(0,t.default)({level:e,transport:{targets:[{target:"pino-roll",level:e,options:{file:r.default.join(n,"purplemux"),frequency:"daily",dateFormat:"yyyy-MM-dd",limit:{count:7},mkdir:!0}},{target:"pino-pretty",level:e,options:{colorize:!0,ignore:"pid,hostname,module",translateTime:"HH:MM:ss",messageFormat:"[{module}] {msg}"}}]}})}let u=o.__ptRootLogger;e.s(["createLogger",0,e=>{let t=u.child({module:e});return t.level=s[e]??i,t}])},44014,e=>{"use strict";let t,r;var a=e.i(666680);e.s(["nanoid",0,function(e=21){var n;n=e|=0,!t||t.length<n?(t=Buffer.allocUnsafe(128*n),a.webcrypto.getRandomValues(t),r=0):r+n>t.length&&(a.webcrypto.getRandomValues(t),r=0),r+=n;let i="";for(let a=r-e;a<r;a++)i+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[63&t[a]];return i}],44014)},459015,544538,e=>{"use strict";var t=e.i(233405),r=e.i(924868),a=e.i(224361),n=e.i(814747),i=e.i(44014),s=e.i(965898),l=e.i(597789),o=e.i(25146);process.platform;let u="linux"===process.platform;e.s(["isLinux",0,u],544538);let p=(0,o.createLogger)("terminal"),c=(0,a.promisify)(t.execFile),d="purple",m=n.default.join(process.env.__PMUX_APP_DIR_UNPACKED||process.env.__PMUX_APP_DIR||process.cwd(),"src","config","tmux.conf"),f=async()=>{try{let{stdout:e}=await c("tmux",["-L",d,"ls","-F","#{session_name}"],{timeout:5e3});return e.trim().split("\n").map(e=>e.trim()).filter(e=>e.startsWith("pt-"))}catch{return[]}},h=async(e,t,r,a)=>{let n=(0,l.buildShellLaunchCommand)();await c("tmux",["-u","-L",d,"-f",m,"new-session","-d","-s",e,"-x",String(t),"-y",String(r),n],{timeout:5e3,cwd:a||s.PRISTINE_ENV.HOME||"/"}),await E(),p.debug(`tmux session created: ${e} (cols: ${t}, rows: ${r})`)},y=e=>new Promise(t=>setTimeout(t,e)),w=async e=>{if(!await g(e))return;p.debug(`killSession start: ${e}`);let t=await v(e);if(t)try{p.debug(`SIGTERM → process group ${t}: ${e}`),process.kill(-t,"SIGTERM")}catch{}try{await c("tmux",["-L",d,"kill-session","-t",e],{timeout:5e3})}catch{}for(let t=0;t<5;t++){if(!await g(e))return void p.debug(`killSession done (SIGTERM): ${e}`);await y(200)}if(p.warn(`session survived SIGTERM, escalating to SIGKILL: ${e}`),t)try{p.debug(`SIGKILL → process group ${t}: ${e}`),process.kill(-t,"SIGKILL")}catch{}try{await c("tmux",["-L",d,"kill-session","-t",e],{timeout:5e3})}catch{}for(let t=0;t<3;t++){if(!await g(e))return void p.debug(`killSession done (SIGKILL): ${e}`);await y(200)}p.warn(`tmux session still alive after kill: ${e}`)},g=async e=>{try{return await c("tmux",["-L",d,"has-session","-t",e],{timeout:5e3}),!0}catch{return!1}},x=async()=>{},S=async()=>{await x();let e=await f();e.length>0&&e.forEach(e=>{p.debug(`existing tmux session found: ${e}`)})},_=async e=>{if(u)try{return await r.default.readlink(`/proc/${e}/cwd`)}catch{return null}try{let{stdout:t}=await c("lsof",["-a","-p",String(e),"-d","cwd","-Fn"],{timeout:5e3}),r=t.split("\n").find(e=>e.startsWith("n/"));return r?r.slice(1):null}catch{return null}},L=async e=>{let t=await v(e);if(t){let e=await _(t);if(e)return e}try{let{stdout:t}=await c("tmux",["-L",d,"display-message","-p","-t",e,"#{pane_current_path}"],{timeout:5e3});return t.trim()||null}catch{return null}},v=async e=>{try{let{stdout:t}=await c("tmux",["-L",d,"display-message","-p","-t",e,"#{pane_pid}"],{timeout:5e3}),r=parseInt(t.trim(),10);return Number.isNaN(r)?null:r}catch{return null}},E=async()=>{try{await c("tmux",["-L",d,"source-file",m],{timeout:5e3})}catch{}},P=async e=>{try{let{stdout:t}=await c("tmux",["-L",d,"list-panes","-t",e,"-F","#{pane_current_command}"],{timeout:5e3});return t.trim()||null}catch{return null}},I=async()=>{try{let{stdout:e}=await c("tmux",["-L",d,"list-panes","-a","-F","#{session_name} #{pane_current_command} #{pane_current_path} #{pane_pid} #{window_activity}"],{timeout:5e3}),t=new Map;for(let r of e.trim().split("\n")){if(!r)continue;let[e,a,n,i,s]=r.split(" ");if(e&&a){let r=parseInt(i,10),l=parseInt(s,10);t.set(e,{command:a,path:n||"",pid:Number.isNaN(r)?0:r,windowActivity:Number.isNaN(l)?0:l})}}return t}catch{return new Map}},N=new Set(["bash","zsh","fish","sh","dash"]),b=async e=>{let t=await P(e);return t?{isSafe:N.has(t),processName:t}:{isSafe:!1,processName:"unknown"}},$=async e=>{try{let{stdout:t}=await c("tmux",["-L",d,"display-message","-p","-t",e,"#{pane_title}"],{timeout:5e3});return t.trim()||null}catch{return null}},R=async e=>{await c("tmux",["-L",d,"copy-mode","-q","-t",e],{timeout:5e3}).catch(()=>{})},T=async(e,t)=>{await R(e),await c("tmux",["-L",d,"send-keys","-t",e,t,"Enter"],{timeout:5e3})},M=async(e,t)=>{await R(e),await c("tmux",["-L",d,"send-keys","-t",e,t],{timeout:5e3})},k=async(e,t)=>{await R(e),await c("tmux",["-L",d,"send-keys","-t",e,"-l",`\x1b[200~${t}\x1b[201~`],{timeout:5e3}),await c("tmux",["-L",d,"send-keys","-t",e,"Enter"],{timeout:5e3}),await new Promise(e=>setTimeout(e,600)),await c("tmux",["-L",d,"send-keys","-t",e,"Enter"],{timeout:5e3})},A=async e=>{try{let{stdout:t}=await c("tmux",["-L",d,"display-message","-p","-t",e,"#{pane_current_path} #{pane_current_command} #{pane_pid} #{pane_width} #{pane_height} #{session_created}"],{timeout:5e3}),[r,a,n,i,s,l]=t.trim().split(" ");return{cwd:r||null,command:a||null,pid:n&&parseInt(n,10)||null,width:i&&parseInt(i,10)||null,height:s&&parseInt(s,10)||null,sessionCreated:l&&parseInt(l,10)||null}}catch{return{cwd:null,command:null,pid:null,width:null,height:null,sessionCreated:null}}},C=new Set(["node","python","python3","ruby","perl","deno","bun"]),q=async()=>{try{await c("tmux",["-L",d,"kill-server"],{timeout:5e3}),p.debug("tmux server killed")}catch{}},O=async e=>{try{let{stdout:t}=await c("tmux",["-L",d,"capture-pane","-p","-t",e],{timeout:5e3});return t}catch{return null}},j=async(e,t)=>{try{let{stdout:r}=await c("tmux",["-L",d,"capture-pane","-p","-S",`-${t}`,"-t",e],{timeout:5e3});return r}catch{return null}},U=async e=>{if(u){let t=[];return await Promise.all(e.map(async e=>{try{for(let a of(await r.default.readFile(`/proc/${e}/task/${e}/children`,"utf-8")).trim().split(/\s+/)){let e=parseInt(a,10);Number.isNaN(e)||t.push(e)}}catch{}})),t}try{let{stdout:t}=await c("pgrep",["-P",e.join(",")],{timeout:5e3});return t.trim().split("\n").map(e=>parseInt(e,10)).filter(e=>!Number.isNaN(e))}catch{return[]}},D=async e=>{let t=[],r=[e];for(;r.length>0;){let e=await U(r);if(0===e.length)break;t.push(...e),r=e}return t},G=async e=>{try{let t=new Set(e),{stdout:r}=await c("ss",["-tlnp"],{timeout:5e3}),a=new Set;for(let e of r.split("\n")){let r=e.match(/pid=(\d+)/g);if(!r||!r.some(e=>t.has(parseInt(e.replace("pid=",""),10))))continue;let n=e.match(/:(\d+)\s/);n&&a.add(parseInt(n[1],10))}return[...a].sort((e,t)=>e-t)}catch{return[]}},H=async e=>{let t=await D(e);if(0===t.length)return[];if(u)return G(t);try{let{stdout:e}=await c("lsof",["-a","-p",t.join(","),"-i","-sTCP:LISTEN","-P","-Fn"],{timeout:5e3}),r=new Set;for(let t of e.split("\n"))if(t.startsWith("n")){let e=t.match(/:(\d+)$/);e&&r.add(parseInt(e[1],10))}return[...r].sort((e,t)=>e-t)}catch{return[]}},F=async e=>{let t=await v(e);if(!t)return null;try{let{stdout:e}=await c("pgrep",["-n","-P",String(t)],{timeout:5e3}),r=e.trim();if(!r)return null;let{stdout:a}=await c("ps",["-o","args=","-p",r],{timeout:5e3}),i=a.trim();if(!i)return null;let s=i.split(/\s+/);if(0===s.length)return i;if(s[0]=n.default.basename(s[0]),C.has(s[0])&&s.length>1){let e=n.default.basename(s[1]).replace(/\.(c|m)?js$/,"");s.splice(0,2,e)}return s.join(" ")}catch{return null}};e.s(["SAFE_SHELLS",0,N,"applyConfig",0,E,"capturePaneContent",0,O,"capturePaneContentWithHistory",0,j,"checkTerminalProcess",0,b,"createSession",0,h,"defaultSessionName",0,()=>`pt-${(0,i.nanoid)(6)}-${(0,i.nanoid)(6)}-${(0,i.nanoid)(6)}`,"exitCopyMode",0,R,"getAllPanesInfo",0,I,"getLastCommand",0,F,"getListeningPorts",0,H,"getPaneCurrentCommand",0,P,"getPaneDetailInfo",0,A,"getPaneTitle",0,$,"getSessionCwd",0,L,"getSessionPanePid",0,v,"hasSession",0,g,"killServer",0,q,"killSession",0,w,"listSessions",0,f,"scanSessions",0,S,"sendBracketedPaste",0,k,"sendKeys",0,T,"sendRawKeys",0,M,"workspaceSessionName",0,(e,t,r)=>`pt-${e}-${t}-${r}`],459015)},820158,e=>{"use strict";var t=e.i(926747),r=e.i(190406),a=e.i(244898),n=e.i(262950),i=e.i(459015);let s=(0,e.i(25146).createLogger)("tmux"),l=async(e,t)=>{if("GET"!==e.method)return t.setHeader("Allow","GET"),t.status(405).json({error:"Method not allowed"});let r=e.query.session;if(!r)return t.status(400).json({error:"session parameter required"});if(!await (0,i.hasSession)(r))return t.status(404).json({error:"Session not found"});try{let[e,a]=await Promise.all([(0,i.getPaneDetailInfo)(r),(0,i.getLastCommand)(r)]);return t.status(200).json({...e,lastCommand:a,sessionName:r})}catch(e){return s.error(`info query failed: ${e instanceof Error?e.message:e}`),t.status(500).json({error:"Failed to get tmux info"})}};e.s(["default",0,l],831539);var o=e.i(831539),u=e.i(7031),p=e.i(181927),c=e.i(846432);let d=(0,n.hoist)(o,"default"),m=(0,n.hoist)(o,"config"),f=new a.PagesAPIRouteModule({definition:{kind:r.RouteKind.PAGES_API,page:"/api/tmux/info",pathname:"/api/tmux/info",bundlePath:"",filename:""},userland:o,distDir:".next",relativeProjectDir:""});async function h(e,r,a){a.requestMeta&&(0,c.setRequestMeta)(e,a.requestMeta),f.isDev&&(0,c.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let n="/api/tmux/info";n=n.replace(/\/index$/,"")||"/";let i=await f.prepare(e,r,{srcPage:n});if(!i){r.statusCode=400,r.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve());return}let{query:s,params:l,prerenderManifest:o,routerServerContext:d}=i;try{let t,a=e.method||"GET",i=(0,u.getTracer)(),c=i.getActiveScopeSpan(),m=!!(null==d?void 0:d.isWrappedByNextServer),h=f.instrumentationOnRequestError.bind(f),y=async u=>f.render(e,r,{query:{...s,...l},params:l,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:o.preview,propagateError:!1,dev:f.isDev,page:"/api/tmux/info",internalRevalidate:null==d?void 0:d.revalidate,onError:(...t)=>h(e,...t)}).finally(()=>{if(!u)return;u.setAttributes({"http.status_code":r.statusCode,"next.rsc":!1});let e=i.getRootSpanAttributes();if(!e)return;if(e.get("next.span_type")!==p.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${e.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let s=e.get("next.route");if(s){let e=`${a} ${s}`;u.setAttributes({"next.route":s,"http.route":s,"next.span_name":e}),u.updateName(e),t&&t!==u&&(t.setAttribute("http.route",s),t.updateName(e))}else u.updateName(`${a} ${n}`)});m&&c?await y(c):(t=i.getActiveScopeSpan(),await i.withPropagatedContext(e.headers,()=>i.trace(p.BaseServerSpan.handleRequest,{spanName:`${a} ${n}`,kind:u.SpanKind.SERVER,attributes:{"http.method":a,"http.target":e.url}},y),void 0,!m))}catch(e){if(f.isDev)throw e;(0,t.sendError)(r,500,"Internal Server Error")}finally{null==a.waitUntil||a.waitUntil.call(a,Promise.resolve())}}e.s(["config",0,m,"default",0,d,"handler",0,h],820158)}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=%5Broot-of-the-server%5D__0w3m-oz._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[270406,(e,t,a)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},446786,(e,t,a)=>{t.exports=e.x("os",()=>require("os"))},814747,(e,t,a)=>{t.exports=e.x("path",()=>require("path"))},924868,(e,t,a)=>{t.exports=e.x("fs/promises",()=>require("fs/promises"))},522734,(e,t,a)=>{t.exports=e.x("fs",()=>require("fs"))},319668,(e,t,a)=>{t.exports=e.x("readline",()=>require("readline"))},177579,e=>{"use strict";var t=e.i(924868),a=e.i(522734),n=e.i(814747),r=e.i(446786),s=e.i(319668),i=e.i(990294);let o=n.default.join(r.default.homedir(),".purplemux","stats"),u=n.default.join(o,"cache.json"),c=n.default.join(r.default.homedir(),".claude","projects"),l=()=>({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(c))){let r=n.default.join(c,a),s=await t.default.stat(r).catch(()=>null);if(s?.isDirectory())for(let a of(await t.default.readdir(r).catch(()=>[])))a.endsWith(".jsonl")&&!/^agent-/.test(a)&&e.push(n.default.join(r,a))}}catch{}return e},h=async(e,t)=>{let n=new Map,r=new Map;try{let i=(0,a.createReadStream)(e,{encoding:"utf-8"});for await(let e of s.default.createInterface({input:i,crlfDelay:1/0}))if(e.trim())try{let a=JSON.parse(e),s=String(a.timestamp??"");if(!s)continue;let i=s.slice(0,10);if(!t.has(i))continue;let o=String(a.type??"");if("user"!==o&&"assistant"!==o)continue;let u=String(a.sessionId??""),c=String(new Date(s).getHours()),d=n.get(i);d||(d={messageCount:0,sessionCount:0,toolCallCount:0,hourCounts:{},modelTokens:{},sessions:[]},n.set(i,d),r.set(i,new Map));let h=r.get(i);if("user"===o&&(d.messageCount++,d.hourCounts[c]=(d.hourCounts[c]??0)+1,u)){let e=h.get(u);e?(e.messages++,s>e.end&&(e.end=s),s<e.start&&(e.start=s)):h.set(u,{start:s,end:s,messages:1})}if("assistant"===o){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??""),r=e.usage;if(n&&!n.startsWith("<")&&r){d.modelTokens[n]||(d.modelTokens[n]=l());let e=d.modelTokens[n],t=Number(r.cache_creation_input_tokens??0),a=r.cache_creation,s=Number(a?.ephemeral_1h_input_tokens??0),i=a?.ephemeral_5m_input_tokens!=null?Number(a.ephemeral_5m_input_tokens):Math.max(0,t-s);e.input+=Number(r.input_tokens??0),e.output+=Number(r.output_tokens??0),e.cacheRead+=Number(r.cache_read_input_tokens??0),e.cacheCreation+=t,e.cacheCreation5m+=i,e.cacheCreation1h+=s}if(u){let e=h.get(u);e?(s>e.end&&(e.end=s),s<e.start&&(e.start=s)):h.set(u,{start:s,end:s,messages:0})}}}catch{}}catch{}for(let[e,t]of r){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},p=async(e,t)=>{let a=[],n=0,r=async()=>{for(;n<e.length;){let t=n++;a[t]=await e[t]()}},s=Array.from({length:Math.min(t,e.length)},()=>r());return await Promise.all(s),a},f=(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]=l());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},m=async()=>{try{let e=await t.default.readFile(u,"utf-8"),a=JSON.parse(e);if(2!==a.version)return null;return a}catch{return null}},C=async e=>{await t.default.mkdir(o,{recursive:!0}),await t.default.writeFile(u,JSON.stringify(e),"utf-8")},y=null,g=async e=>{try{let t=(0,a.createReadStream)(e,{encoding:"utf-8"});for await(let e of s.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},v=async()=>{let e=await d();if(0===e.length)return null;let t=e.map(e=>()=>g(e)),a=(await p(t,10)).filter(e=>null!==e);return 0===a.length?null:(a.sort(),a[0])},k=async e=>{if(0===e.size)return new Map;let t=(await d()).map(t=>()=>h(t,e)),a=await p(t,10),n=new Map;for(let e of a)for(let[t,a]of e){let e=n.get(t);e?f(e,a):n.set(t,a)}return n},S=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 m(),n=new Set;if(n.add(t),a){if(a.lastComputedDate<e){let t=(0,i.default)(a.lastComputedDate).add(1,"day"),r=(0,i.default)(e);for(;t.isBefore(r)||t.isSame(r);){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 r=await v();if(!r)return w(a,t);let s=(0,i.default)(r),o=(0,i.default)(e);for(;s.isBefore(o)||s.isSame(o);)n.add(s.format("YYYY-MM-DD")),s=s.add(1,"day")}let r=await k(n);for(let[e,n]of r)e!==t&&(a.days[e]=n);a.lastComputedDate=e,await C(a);let s=r.get(t)??null,o=w(a,t,s);return y={data:o,expiresAt:Date.now()+3e5},o},w=(e,t,a)=>{let n=[],r=[],s={},i={},o={},u=0,c=0,l="",d={sessionId:"",duration:0,messageCount:0,timestamp:""},h=Object.entries(e.days);for(let[e,p]of(a&&h.push([t,a]),h.sort((e,t)=>e[0].localeCompare(t[0])),h)){!l&&p.messageCount>0&&(l=e),n.push({date:e,messageCount:p.messageCount,sessionCount:p.sessionCount,toolCallCount:p.toolCallCount});let t={};for(let[e,a]of Object.entries(p.modelTokens)){t[e]={input:a.input,output:a.output,cacheRead:a.cacheRead,cacheCreation:a.cacheCreation,cacheCreation5m:a.cacheCreation5m,cacheCreation1h:a.cacheCreation1h},s[e]||(s[e]={inputTokens:0,outputTokens:0,cacheReadInputTokens:0,cacheCreationInputTokens:0,cacheCreation5mInputTokens:0,cacheCreation1hInputTokens:0,webSearchRequests:0,costUSD:0,contextWindow:0,maxOutputTokens:0});let n=s[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}r.push({date:e,tokensByModel:t});let a=new Date(e).getDay();for(let[e,t]of Object.entries(p.hourCounts)){i[e]=(i[e]??0)+t;let n=`${a}-${e}`;o[n]=(o[n]??0)+t}for(let e of(u+=p.sessionCount,c+=p.messageCount,p.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:r,modelUsage:s,totalSessions:u,totalMessages:c,longestSession:d,firstSessionDate:l,hourCounts:i,dayHourCounts:o,totalSpeculationTimeSavedMs:0}};e.s(["collectJsonlFiles",0,d,"getStatsCache",0,S])},422392,e=>{"use strict";let t=new Map,a=6e4;e.s(["getCached",0,e=>{let a=t.get(e);return a?Date.now()>a.expiresAt?(t.delete(e),null):a.data:null},"setCached",0,(e,n,r=a)=>{t.set(e,{data:n,expiresAt:Date.now()+r})}])},990294,(e,t,a)=>{e.e,t.exports=function(){"use strict";var e="millisecond",t="second",a="minute",n="hour",r="week",s="month",i="quarter",o="year",u="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",C=function(e){return e instanceof k||!(!e||!e[m])},y=function e(t,a,n){var r;if(!t)return p;if("string"==typeof t){var s=t.toLowerCase();f[s]&&(r=s),a&&(f[s]=a,r=s);var i=t.split("-");if(!r&&i.length>1)return e(i[0])}else{var o=t.name;f[o]=t,r=o}return!n&&r&&(p=r),r||!n&&p},g=function(e,t){if(C(e))return e.clone();var a="object"==typeof t?t:{};return a.date=e,a.args=arguments,new k(a)},v={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,s),i=a-r<0,o=t.clone().add(n+(i?-1:1),s);return+(-(n+(a-r)/(i?r-o:o-r))||0)},a:function(e){return e<0?Math.ceil(e)||0:Math.floor(e)},p:function(c){return({M:s,y:o,w:r,d:"day",D:u,h:n,m:a,s:t,ms:e,Q:i})[c]||String(c||"").toLowerCase().replace(/s$/,"")},u:function(e){return void 0===e}};v.l=y,v.i=C,v.w=function(e,t){return g(e,{locale:t.$L,utc:t.$u,x:t.$x,$offset:t.$offset})};var k=function(){function h(e){this.$L=y(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(v.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,s=(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,s)):new Date(n[1],r,n[3]||1,n[4]||0,n[5]||0,n[6]||0,s)}}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 v},p.isValid=function(){return this.$d.toString()!==c},p.isSame=function(e,t){var a=g(e);return this.startOf(t)<=a&&a<=this.endOf(t)},p.isAfter=function(e,t){return g(e)<this.startOf(t)},p.isBefore=function(e,t){return this.endOf(t)<g(e)},p.$g=function(e,t,a){return v.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,i){var c=this,l=!!v.u(i)||i,d=v.p(e),h=function(e,t){var a=v.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 v.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,C=this.$D,y="set"+(this.$u?"UTC":"");switch(d){case o:return l?h(1,0):h(31,11);case s:return l?h(1,m):h(0,m+1);case r:var g=this.$locale().weekStart||0,k=(f<g?f+7:f)-g;return h(l?C-k:C+(6-k),m);case"day":case u:return p(y+"Hours",0);case n:return p(y+"Minutes",1);case a:return p(y+"Seconds",2);case t:return p(y+"Milliseconds",3);default:return this.clone()}},p.endOf=function(e){return this.startOf(e,!1)},p.$set=function(r,i){var c,l=v.p(r),d="set"+(this.$u?"UTC":""),h=((c={}).day=d+"Date",c[u]=d+"Date",c[s]=d+"Month",c[o]=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+(i-this.$W):i;if(l===s||l===o){var f=this.clone().set(u,1);f.$d[h](p),f.init(),this.$d=f.set(u,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[v.p(e)]()},p.add=function(e,i){var u,c=this;e=Number(e);var l=v.p(i),d=function(t){var a=g(c);return v.w(a.date(a.date()+Math.round(t*e)),c)};if(l===s)return this.set(s,this.$M+e);if(l===o)return this.set(o,this.$y+e);if("day"===l)return d(1);if(l===r)return d(7);var h=((u={})[a]=6e4,u[n]=36e5,u[t]=1e3,u)[l]||1,p=this.$d.getTime()+e*h;return v.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=v.z(this),s=this.$H,i=this.$m,o=this.$M,u=a.weekdays,l=a.months,h=a.meridiem,p=function(e,a,r,s){return e&&(e[a]||e(t,n))||r[a].slice(0,s)},f=function(e){return v.s(s%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 v.s(t.$y,4,"0");case"M":return o+1;case"MM":return v.s(o+1,2,"0");case"MMM":return p(a.monthsShort,o,l,3);case"MMMM":return p(l,o);case"D":return t.$D;case"DD":return v.s(t.$D,2,"0");case"d":return String(t.$W);case"dd":return p(a.weekdaysMin,t.$W,u,2);case"ddd":return p(a.weekdaysShort,t.$W,u,3);case"dddd":return u[t.$W];case"H":return String(s);case"HH":return v.s(s,2,"0");case"h":return f(1);case"hh":return f(2);case"a":return m(s,i,!0);case"A":return m(s,i,!1);case"m":return String(i);case"mm":return v.s(i,2,"0");case"s":return String(t.$s);case"ss":return v.s(t.$s,2,"0");case"SSS":return v.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,u,c){var l,d=this,h=v.p(u),p=g(e),f=(p.utcOffset()-this.utcOffset())*6e4,m=this-p,C=function(){return v.m(d,p)};switch(h){case o:l=C()/12;break;case s:l=C();break;case i:l=C()/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:v.a(l)},p.daysInMonth=function(){return this.endOf(s).$D},p.$locale=function(){return f[this.$L]},p.locale=function(e,t){if(!e)return this.$L;var a=this.clone(),n=y(e,t,!0);return n&&(a.$L=n),a},p.clone=function(){return v.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}(),S=k.prototype;return g.prototype=S,[["$ms",e],["$s",t],["$m",a],["$H",n],["$W","day"],["$M",s],["$y",o],["$D",u]].forEach(function(e){S[e[1]]=function(t){return this.$g(t,e[0],e[1])}}),g.extend=function(e,t){return e.$i||(e(t,k,g),e.$i=!0),g},g.locale=y,g.isDayjs=C,g.unix=function(e){return g(1e3*e)},g.en=f[p],g.Ls=f,g.p={},g}()},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:s}=a(n),i=(0,t.default)(e).toDate();return i>=r&&i<=s},"isWithinPeriod",0,(e,t)=>{if("all"===t)return!0;let{start:n,end:r}=a(t),s=new Date(e);return s>=n&&s<=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),s=e.i(975925);let i={"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}},o={input:30,output:150,cacheWrite5m:37.5,cacheWrite1h:60,cacheRead:3},u=(e,t,a,n,r,s)=>t/1e6*e.input+n/1e6*e.cacheWrite5m+r/1e6*e.cacheWrite1h+s/1e6*e.cacheRead+a/1e6*e.output,c=a.default.join(n.default.homedir(),".claude","stats-cache.json"),l=(e,t,a,n,r,s)=>((e,t,a,n,r,s)=>{let c=((e,t,a,n,r,s,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?o:i[d];return h?u(h,t,a,n,r,s):null})(e,t,a,n,r,s);if(null!==c)return c;let l=e.toLowerCase();return u(l.includes("opus")?i["opus-4-6"]:l.includes("haiku")?i["haiku-4-5"]:i["sonnet-4-6"],t,a,n,r,s)})(e,t,a,r,s,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"),s=JSON.parse(r);return{version:Number(s.version??0),lastComputedDate:String(s.lastComputedDate??""),dailyActivity:(e=s.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=s.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),s=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:s,cacheCreation1hInputTokens:r,webSearchRequests:Number(n.webSearchRequests??0),costUSD:Number(n.costUSD??0),contextWindow:Number(n.contextWindow??0),maxOutputTokens:Number(n.maxOutputTokens??0)}}return t})(s.modelUsage),totalSessions:Number(s.totalSessions??0),totalMessages:Number(s.totalMessages??0),longestSession:(n=s.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(s.firstSessionDate??""),hourCounts:h(s.hourCounts),dayHourCounts:h(s.dayHourCounts),totalSpeculationTimeSavedMs:Number(s.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,i,o,u=e.dailyActivity.filter(e=>(0,s.isDateStringWithinPeriod)(e.date,t)),c=e.dailyModelTokens.filter(e=>(0,s.isDateStringWithinPeriod)(e.date,t)),d="all"===t?e.totalSessions:u.reduce((e,t)=>e+t.sessionCount,0),h="all"===t?e.totalMessages:u.reduce((e,t)=>e+t.messageCount,0),p=u.reduce((e,t)=>e+t.toolCallCount,0),m=(a=e.dailyActivity,n=t,a.filter(e=>f(e.date,n))),C=m.reduce((e,t)=>e+t.sessionCount,0),y=m.reduce((e,t)=>e+t.messageCount,0),g={};if("all"===t)for(let[t,a]of Object.entries(e.modelUsage))g[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))g[t]||(g[t]={input:0,output:0,cacheRead:0,cacheCreation:0,cacheCreation5m:0,cacheCreation1h:0,cost:0}),g[t].input+=a.input,g[t].output+=a.output,g[t].cacheRead+=a.cacheRead,g[t].cacheCreation+=a.cacheCreation,g[t].cacheCreation5m+=a.cacheCreation5m,g[t].cacheCreation1h+=a.cacheCreation1h;for(let[t,a]of Object.entries(g)){let n=e.modelUsage[t];if(!n)continue;let r=n.inputTokens+n.outputTokens+n.cacheReadInputTokens+n.cacheCreationInputTokens,s=a.input+a.output+a.cacheRead+a.cacheCreation;r>0&&(a.cost=s/r*l(t,n.inputTokens,n.outputTokens,n.cacheReadInputTokens,n.cacheCreation5mInputTokens,n.cacheCreation1hInputTokens))}}let v=c.map(e=>{let t=0,a=0,n=0,r=0;for(let s of Object.values(e.tokensByModel))t+=s.input,a+=s.output,n+=s.cacheRead,r+=s.cacheCreation;return{date:e.date,input:t,output:a,cacheRead:n,cacheCreation:r}}),k=(0,r.default)().format("YYYY-MM-DD"),S=(0,r.default)().startOf("month").format("YYYY-MM-DD"),w=e.dailyActivity.find(e=>e.date===k)?.messageCount??0,D=e.dailyActivity.filter(e=>e.date>=S).reduce((e,t)=>e+t.messageCount,0),b=Object.values(g).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 s=n.inputTokens+n.outputTokens+n.cacheReadInputTokens+n.cacheCreationInputTokens,i=r.input+r.output+r.cacheRead+r.cacheCreation;s>0&&(a+=i/s*l(t,n.inputTokens,n.outputTokens,n.cacheReadInputTokens,n.cacheCreation5mInputTokens,n.cacheCreation1hInputTokens))}return a},$=T(e.dailyModelTokens.filter(e=>e.date===k));return{totalSessions:d,totalMessages:h,previousSessions:C,previousMessages:y,totalToolCalls:p,dailyActivity:u,modelTokens:g,dailyTokens:v,todayMessages:w,thisMonthMessages:D,totalCost:b,todayCost:$,thisMonthCost:T(e.dailyModelTokens.filter(e=>e.date>=S)),previousCost:T((i=e.dailyModelTokens,o=t,i.filter(e=>f(e.date,o)))),hourlyDistribution:e.hourCounts,dayHourDistribution:e.dayHourCounts,firstSessionDate:e.firstSessionDate,lastComputedDate:e.lastComputedDate,computedAt:new Date().toISOString()}},"readStatsCache",0,p],180112)},848424,e=>{"use strict";var t=e.i(926747),a=e.i(190406),n=e.i(244898),r=e.i(262950),s=e.i(177579),i=e.i(180112),o=e.i(975925),u=e.i(422392);let c=async(e,t)=>{if("GET"!==e.method)return t.setHeader("Allow","GET"),t.status(405).json({error:"method-not-allowed"});let a=(0,o.parsePeriod)(e.query.period),n=`stats:overview:${a}`,r=(0,u.getCached)(n);if(r)return t.status(200).json(r);let c=await (0,s.getStatsCache)(),l=(0,i.buildOverview)(c,a);return(0,u.setCached)(n,l),t.status(200).json(l)};e.s(["default",0,c],487113);var l=e.i(487113),d=e.i(7031),h=e.i(181927),p=e.i(846432);let f=(0,r.hoist)(l,"default"),m=(0,r.hoist)(l,"config"),C=new n.PagesAPIRouteModule({definition:{kind:a.RouteKind.PAGES_API,page:"/api/stats/overview",pathname:"/api/stats/overview",bundlePath:"",filename:""},userland:l,distDir:".next",relativeProjectDir:""});async function y(e,a,n){n.requestMeta&&(0,p.setRequestMeta)(e,n.requestMeta),C.isDev&&(0,p.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let r="/api/stats/overview";r=r.replace(/\/index$/,"")||"/";let s=await C.prepare(e,a,{srcPage:r});if(!s){a.statusCode=400,a.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve());return}let{query:i,params:o,prerenderManifest:u,routerServerContext:c}=s;try{let t,n=e.method||"GET",s=(0,d.getTracer)(),l=s.getActiveScopeSpan(),p=!!(null==c?void 0:c.isWrappedByNextServer),f=C.instrumentationOnRequestError.bind(C),m=async l=>C.render(e,a,{query:{...i,...o},params:o,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:u.preview,propagateError:!1,dev:C.isDev,page:"/api/stats/overview",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=s.getRootSpanAttributes();if(!e)return;if(e.get("next.span_type")!==h.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${e.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let i=e.get("next.route");if(i){let e=`${n} ${i}`;l.setAttributes({"next.route":i,"http.route":i,"next.span_name":e}),l.updateName(e),t&&t!==l&&(t.setAttribute("http.route",i),t.updateName(e))}else l.updateName(`${n} ${r}`)});p&&l?await m(l):(t=s.getActiveScopeSpan(),await s.withPropagatedContext(e.headers,()=>s.trace(h.BaseServerSpan.handleRequest,{spanName:`${n} ${r}`,kind:d.SpanKind.SERVER,attributes:{"http.method":n,"http.target":e.url}},m),void 0,!p))}catch(e){if(C.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,m,"default",0,f,"handler",0,y],848424)}];
|
|
1
|
+
module.exports=[270406,(e,t,a)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},446786,(e,t,a)=>{t.exports=e.x("os",()=>require("os"))},814747,(e,t,a)=>{t.exports=e.x("path",()=>require("path"))},924868,(e,t,a)=>{t.exports=e.x("fs/promises",()=>require("fs/promises"))},522734,(e,t,a)=>{t.exports=e.x("fs",()=>require("fs"))},319668,(e,t,a)=>{t.exports=e.x("readline",()=>require("readline"))},177579,e=>{"use strict";var t=e.i(924868),a=e.i(522734),n=e.i(814747),r=e.i(446786),s=e.i(319668),i=e.i(990294);let o=n.default.join(r.default.homedir(),".purplemux","stats"),u=n.default.join(o,"cache.json"),c=n.default.join(r.default.homedir(),".claude","projects"),l=()=>({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(c))){let r=n.default.join(c,a),s=await t.default.stat(r).catch(()=>null);if(s?.isDirectory())for(let a of(await t.default.readdir(r).catch(()=>[])))a.endsWith(".jsonl")&&!/^agent-/.test(a)&&e.push(n.default.join(r,a))}}catch{}return e},h=async(e,t)=>{let n=new Map,r=new Map;try{let i=(0,a.createReadStream)(e,{encoding:"utf-8"});for await(let e of s.default.createInterface({input:i,crlfDelay:1/0}))if(e.trim())try{let a=JSON.parse(e),s=String(a.timestamp??"");if(!s)continue;let i=s.slice(0,10);if(!t.has(i))continue;let o=String(a.type??"");if("user"!==o&&"assistant"!==o)continue;let u=String(a.sessionId??""),c=String(new Date(s).getHours()),d=n.get(i);d||(d={messageCount:0,sessionCount:0,toolCallCount:0,hourCounts:{},modelTokens:{},sessions:[]},n.set(i,d),r.set(i,new Map));let h=r.get(i);if("user"===o&&(d.messageCount++,d.hourCounts[c]=(d.hourCounts[c]??0)+1,u)){let e=h.get(u);e?(e.messages++,s>e.end&&(e.end=s),s<e.start&&(e.start=s)):h.set(u,{start:s,end:s,messages:1})}if("assistant"===o){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??""),r=e.usage;if(n&&!n.startsWith("<")&&r){d.modelTokens[n]||(d.modelTokens[n]=l());let e=d.modelTokens[n],t=Number(r.cache_creation_input_tokens??0),a=r.cache_creation,s=Number(a?.ephemeral_1h_input_tokens??0),i=a?.ephemeral_5m_input_tokens!=null?Number(a.ephemeral_5m_input_tokens):Math.max(0,t-s);e.input+=Number(r.input_tokens??0),e.output+=Number(r.output_tokens??0),e.cacheRead+=Number(r.cache_read_input_tokens??0),e.cacheCreation+=t,e.cacheCreation5m+=i,e.cacheCreation1h+=s}if(u){let e=h.get(u);e?(s>e.end&&(e.end=s),s<e.start&&(e.start=s)):h.set(u,{start:s,end:s,messages:0})}}}catch{}}catch{}for(let[e,t]of r){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},p=async(e,t)=>{let a=[],n=0,r=async()=>{for(;n<e.length;){let t=n++;a[t]=await e[t]()}},s=Array.from({length:Math.min(t,e.length)},()=>r());return await Promise.all(s),a},f=(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]=l());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},m=async()=>{try{let e=await t.default.readFile(u,"utf-8"),a=JSON.parse(e);if(2!==a.version)return null;return a}catch{return null}},C=async e=>{await t.default.mkdir(o,{recursive:!0}),await t.default.writeFile(u,JSON.stringify(e),"utf-8")},y=null,g=async e=>{try{let t=(0,a.createReadStream)(e,{encoding:"utf-8"});for await(let e of s.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},v=async()=>{let e=await d();if(0===e.length)return null;let t=e.map(e=>()=>g(e)),a=(await p(t,10)).filter(e=>null!==e);return 0===a.length?null:(a.sort(),a[0])},k=async e=>{if(0===e.size)return new Map;let t=(await d()).map(t=>()=>h(t,e)),a=await p(t,10),n=new Map;for(let e of a)for(let[t,a]of e){let e=n.get(t);e?f(e,a):n.set(t,a)}return n},S=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 m(),n=new Set;if(n.add(t),a){if(a.lastComputedDate<e){let t=(0,i.default)(a.lastComputedDate).add(1,"day"),r=(0,i.default)(e);for(;t.isBefore(r)||t.isSame(r);){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 r=await v();if(!r)return w(a,t);let s=(0,i.default)(r),o=(0,i.default)(e);for(;s.isBefore(o)||s.isSame(o);)n.add(s.format("YYYY-MM-DD")),s=s.add(1,"day")}let r=await k(n);for(let[e,n]of r)e!==t&&(a.days[e]=n);a.lastComputedDate=e,await C(a);let s=r.get(t)??null,o=w(a,t,s);return y={data:o,expiresAt:Date.now()+3e5},o},w=(e,t,a)=>{let n=[],r=[],s={},i={},o={},u=0,c=0,l="",d={sessionId:"",duration:0,messageCount:0,timestamp:""},h=Object.entries(e.days);for(let[e,p]of(a&&h.push([t,a]),h.sort((e,t)=>e[0].localeCompare(t[0])),h)){!l&&p.messageCount>0&&(l=e),n.push({date:e,messageCount:p.messageCount,sessionCount:p.sessionCount,toolCallCount:p.toolCallCount});let t={};for(let[e,a]of Object.entries(p.modelTokens)){t[e]={input:a.input,output:a.output,cacheRead:a.cacheRead,cacheCreation:a.cacheCreation,cacheCreation5m:a.cacheCreation5m,cacheCreation1h:a.cacheCreation1h},s[e]||(s[e]={inputTokens:0,outputTokens:0,cacheReadInputTokens:0,cacheCreationInputTokens:0,cacheCreation5mInputTokens:0,cacheCreation1hInputTokens:0,webSearchRequests:0,costUSD:0,contextWindow:0,maxOutputTokens:0});let n=s[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}r.push({date:e,tokensByModel:t});let a=new Date(e).getDay();for(let[e,t]of Object.entries(p.hourCounts)){i[e]=(i[e]??0)+t;let n=`${a}-${e}`;o[n]=(o[n]??0)+t}for(let e of(u+=p.sessionCount,c+=p.messageCount,p.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:r,modelUsage:s,totalSessions:u,totalMessages:c,longestSession:d,firstSessionDate:l,hourCounts:i,dayHourCounts:o,totalSpeculationTimeSavedMs:0}};e.s(["collectJsonlFiles",0,d,"getStatsCache",0,S])},422392,e=>{"use strict";let t=new Map,a=6e4;e.s(["getCached",0,e=>{let a=t.get(e);return a?Date.now()>a.expiresAt?(t.delete(e),null):a.data:null},"setCached",0,(e,n,r=a)=>{t.set(e,{data:n,expiresAt:Date.now()+r})}])},990294,(e,t,a)=>{e.e,t.exports=function(){"use strict";var e="millisecond",t="second",a="minute",n="hour",r="week",s="month",i="quarter",o="year",u="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",C=function(e){return e instanceof k||!(!e||!e[m])},y=function e(t,a,n){var r;if(!t)return p;if("string"==typeof t){var s=t.toLowerCase();f[s]&&(r=s),a&&(f[s]=a,r=s);var i=t.split("-");if(!r&&i.length>1)return e(i[0])}else{var o=t.name;f[o]=t,r=o}return!n&&r&&(p=r),r||!n&&p},g=function(e,t){if(C(e))return e.clone();var a="object"==typeof t?t:{};return a.date=e,a.args=arguments,new k(a)},v={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,s),i=a-r<0,o=t.clone().add(n+(i?-1:1),s);return+(-(n+(a-r)/(i?r-o:o-r))||0)},a:function(e){return e<0?Math.ceil(e)||0:Math.floor(e)},p:function(c){return({M:s,y:o,w:r,d:"day",D:u,h:n,m:a,s:t,ms:e,Q:i})[c]||String(c||"").toLowerCase().replace(/s$/,"")},u:function(e){return void 0===e}};v.l=y,v.i=C,v.w=function(e,t){return g(e,{locale:t.$L,utc:t.$u,x:t.$x,$offset:t.$offset})};var k=function(){function h(e){this.$L=y(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(v.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,s=(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,s)):new Date(n[1],r,n[3]||1,n[4]||0,n[5]||0,n[6]||0,s)}}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 v},p.isValid=function(){return this.$d.toString()!==c},p.isSame=function(e,t){var a=g(e);return this.startOf(t)<=a&&a<=this.endOf(t)},p.isAfter=function(e,t){return g(e)<this.startOf(t)},p.isBefore=function(e,t){return this.endOf(t)<g(e)},p.$g=function(e,t,a){return v.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,i){var c=this,l=!!v.u(i)||i,d=v.p(e),h=function(e,t){var a=v.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 v.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,C=this.$D,y="set"+(this.$u?"UTC":"");switch(d){case o:return l?h(1,0):h(31,11);case s:return l?h(1,m):h(0,m+1);case r:var g=this.$locale().weekStart||0,k=(f<g?f+7:f)-g;return h(l?C-k:C+(6-k),m);case"day":case u:return p(y+"Hours",0);case n:return p(y+"Minutes",1);case a:return p(y+"Seconds",2);case t:return p(y+"Milliseconds",3);default:return this.clone()}},p.endOf=function(e){return this.startOf(e,!1)},p.$set=function(r,i){var c,l=v.p(r),d="set"+(this.$u?"UTC":""),h=((c={}).day=d+"Date",c[u]=d+"Date",c[s]=d+"Month",c[o]=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+(i-this.$W):i;if(l===s||l===o){var f=this.clone().set(u,1);f.$d[h](p),f.init(),this.$d=f.set(u,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[v.p(e)]()},p.add=function(e,i){var u,c=this;e=Number(e);var l=v.p(i),d=function(t){var a=g(c);return v.w(a.date(a.date()+Math.round(t*e)),c)};if(l===s)return this.set(s,this.$M+e);if(l===o)return this.set(o,this.$y+e);if("day"===l)return d(1);if(l===r)return d(7);var h=((u={})[a]=6e4,u[n]=36e5,u[t]=1e3,u)[l]||1,p=this.$d.getTime()+e*h;return v.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=v.z(this),s=this.$H,i=this.$m,o=this.$M,u=a.weekdays,l=a.months,h=a.meridiem,p=function(e,a,r,s){return e&&(e[a]||e(t,n))||r[a].slice(0,s)},f=function(e){return v.s(s%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 v.s(t.$y,4,"0");case"M":return o+1;case"MM":return v.s(o+1,2,"0");case"MMM":return p(a.monthsShort,o,l,3);case"MMMM":return p(l,o);case"D":return t.$D;case"DD":return v.s(t.$D,2,"0");case"d":return String(t.$W);case"dd":return p(a.weekdaysMin,t.$W,u,2);case"ddd":return p(a.weekdaysShort,t.$W,u,3);case"dddd":return u[t.$W];case"H":return String(s);case"HH":return v.s(s,2,"0");case"h":return f(1);case"hh":return f(2);case"a":return m(s,i,!0);case"A":return m(s,i,!1);case"m":return String(i);case"mm":return v.s(i,2,"0");case"s":return String(t.$s);case"ss":return v.s(t.$s,2,"0");case"SSS":return v.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,u,c){var l,d=this,h=v.p(u),p=g(e),f=(p.utcOffset()-this.utcOffset())*6e4,m=this-p,C=function(){return v.m(d,p)};switch(h){case o:l=C()/12;break;case s:l=C();break;case i:l=C()/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:v.a(l)},p.daysInMonth=function(){return this.endOf(s).$D},p.$locale=function(){return f[this.$L]},p.locale=function(e,t){if(!e)return this.$L;var a=this.clone(),n=y(e,t,!0);return n&&(a.$L=n),a},p.clone=function(){return v.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}(),S=k.prototype;return g.prototype=S,[["$ms",e],["$s",t],["$m",a],["$H",n],["$W","day"],["$M",s],["$y",o],["$D",u]].forEach(function(e){S[e[1]]=function(t){return this.$g(t,e[0],e[1])}}),g.extend=function(e,t){return e.$i||(e(t,k,g),e.$i=!0),g},g.locale=y,g.isDayjs=C,g.unix=function(e){return g(1e3*e)},g.en=f[p],g.Ls=f,g.p={},g}()},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:s}=a(n),i=(0,t.default)(e).toDate();return i>=r&&i<=s},"isWithinPeriod",0,(e,t)=>{if("all"===t)return!0;let{start:n,end:r}=a(t),s=new Date(e);return s>=n&&s<=r},"parsePeriod",0,e=>"today"===e||"7d"===e||"30d"===e||"all"===e?e:"all"])},333493,e=>{"use strict";var t=e.i(924868),a=e.i(814747),n=e.i(446786),r=e.i(990294),s=e.i(975925);let i={"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}},o={input:30,output:150,cacheWrite5m:37.5,cacheWrite1h:60,cacheRead:3},u=(e,t,a,n,r,s)=>t/1e6*e.input+n/1e6*e.cacheWrite5m+r/1e6*e.cacheWrite1h+s/1e6*e.cacheRead+a/1e6*e.output,c=a.default.join(n.default.homedir(),".claude","stats-cache.json"),l=(e,t,a,n,r,s)=>((e,t,a,n,r,s)=>{let c=((e,t,a,n,r,s,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?o:i[d];return h?u(h,t,a,n,r,s):null})(e,t,a,n,r,s);if(null!==c)return c;let l=e.toLowerCase();return u(l.includes("opus")?i["opus-4-6"]:l.includes("haiku")?i["haiku-4-5"]:i["sonnet-4-6"],t,a,n,r,s)})(e,t,a,r,s,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"),s=JSON.parse(r);return{version:Number(s.version??0),lastComputedDate:String(s.lastComputedDate??""),dailyActivity:(e=s.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=s.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),s=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:s,cacheCreation1hInputTokens:r,webSearchRequests:Number(n.webSearchRequests??0),costUSD:Number(n.costUSD??0),contextWindow:Number(n.contextWindow??0),maxOutputTokens:Number(n.maxOutputTokens??0)}}return t})(s.modelUsage),totalSessions:Number(s.totalSessions??0),totalMessages:Number(s.totalMessages??0),longestSession:(n=s.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(s.firstSessionDate??""),hourCounts:h(s.hourCounts),dayHourCounts:h(s.dayHourCounts),totalSpeculationTimeSavedMs:Number(s.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,i,o,u=e.dailyActivity.filter(e=>(0,s.isDateStringWithinPeriod)(e.date,t)),c=e.dailyModelTokens.filter(e=>(0,s.isDateStringWithinPeriod)(e.date,t)),d="all"===t?e.totalSessions:u.reduce((e,t)=>e+t.sessionCount,0),h="all"===t?e.totalMessages:u.reduce((e,t)=>e+t.messageCount,0),p=u.reduce((e,t)=>e+t.toolCallCount,0),m=(a=e.dailyActivity,n=t,a.filter(e=>f(e.date,n))),C=m.reduce((e,t)=>e+t.sessionCount,0),y=m.reduce((e,t)=>e+t.messageCount,0),g={};if("all"===t)for(let[t,a]of Object.entries(e.modelUsage))g[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))g[t]||(g[t]={input:0,output:0,cacheRead:0,cacheCreation:0,cacheCreation5m:0,cacheCreation1h:0,cost:0}),g[t].input+=a.input,g[t].output+=a.output,g[t].cacheRead+=a.cacheRead,g[t].cacheCreation+=a.cacheCreation,g[t].cacheCreation5m+=a.cacheCreation5m,g[t].cacheCreation1h+=a.cacheCreation1h;for(let[t,a]of Object.entries(g)){let n=e.modelUsage[t];if(!n)continue;let r=n.inputTokens+n.outputTokens+n.cacheReadInputTokens+n.cacheCreationInputTokens,s=a.input+a.output+a.cacheRead+a.cacheCreation;r>0&&(a.cost=s/r*l(t,n.inputTokens,n.outputTokens,n.cacheReadInputTokens,n.cacheCreation5mInputTokens,n.cacheCreation1hInputTokens))}}let v=c.map(e=>{let t=0,a=0,n=0,r=0;for(let s of Object.values(e.tokensByModel))t+=s.input,a+=s.output,n+=s.cacheRead,r+=s.cacheCreation;return{date:e.date,input:t,output:a,cacheRead:n,cacheCreation:r}}),k=(0,r.default)().format("YYYY-MM-DD"),S=(0,r.default)().startOf("month").format("YYYY-MM-DD"),w=e.dailyActivity.find(e=>e.date===k)?.messageCount??0,D=e.dailyActivity.filter(e=>e.date>=S).reduce((e,t)=>e+t.messageCount,0),b=Object.values(g).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 s=n.inputTokens+n.outputTokens+n.cacheReadInputTokens+n.cacheCreationInputTokens,i=r.input+r.output+r.cacheRead+r.cacheCreation;s>0&&(a+=i/s*l(t,n.inputTokens,n.outputTokens,n.cacheReadInputTokens,n.cacheCreation5mInputTokens,n.cacheCreation1hInputTokens))}return a},$=T(e.dailyModelTokens.filter(e=>e.date===k));return{totalSessions:d,totalMessages:h,previousSessions:C,previousMessages:y,totalToolCalls:p,dailyActivity:u,modelTokens:g,dailyTokens:v,todayMessages:w,thisMonthMessages:D,totalCost:b,todayCost:$,thisMonthCost:T(e.dailyModelTokens.filter(e=>e.date>=S)),previousCost:T((i=e.dailyModelTokens,o=t,i.filter(e=>f(e.date,o)))),hourlyDistribution:e.hourCounts,dayHourDistribution:e.dayHourCounts,firstSessionDate:e.firstSessionDate,lastComputedDate:e.lastComputedDate,computedAt:new Date().toISOString()}},"readStatsCache",0,p],333493)},848424,e=>{"use strict";var t=e.i(926747),a=e.i(190406),n=e.i(244898),r=e.i(262950),s=e.i(177579),i=e.i(333493),o=e.i(975925),u=e.i(422392);let c=async(e,t)=>{if("GET"!==e.method)return t.setHeader("Allow","GET"),t.status(405).json({error:"method-not-allowed"});let a=(0,o.parsePeriod)(e.query.period),n=`stats:overview:${a}`,r=(0,u.getCached)(n);if(r)return t.status(200).json(r);let c=await (0,s.getStatsCache)(),l=(0,i.buildOverview)(c,a);return(0,u.setCached)(n,l),t.status(200).json(l)};e.s(["default",0,c],487113);var l=e.i(487113),d=e.i(7031),h=e.i(181927),p=e.i(846432);let f=(0,r.hoist)(l,"default"),m=(0,r.hoist)(l,"config"),C=new n.PagesAPIRouteModule({definition:{kind:a.RouteKind.PAGES_API,page:"/api/stats/overview",pathname:"/api/stats/overview",bundlePath:"",filename:""},userland:l,distDir:".next",relativeProjectDir:""});async function y(e,a,n){n.requestMeta&&(0,p.setRequestMeta)(e,n.requestMeta),C.isDev&&(0,p.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let r="/api/stats/overview";r=r.replace(/\/index$/,"")||"/";let s=await C.prepare(e,a,{srcPage:r});if(!s){a.statusCode=400,a.end("Bad Request"),null==n.waitUntil||n.waitUntil.call(n,Promise.resolve());return}let{query:i,params:o,prerenderManifest:u,routerServerContext:c}=s;try{let t,n=e.method||"GET",s=(0,d.getTracer)(),l=s.getActiveScopeSpan(),p=!!(null==c?void 0:c.isWrappedByNextServer),f=C.instrumentationOnRequestError.bind(C),m=async l=>C.render(e,a,{query:{...i,...o},params:o,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:u.preview,propagateError:!1,dev:C.isDev,page:"/api/stats/overview",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=s.getRootSpanAttributes();if(!e)return;if(e.get("next.span_type")!==h.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${e.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let i=e.get("next.route");if(i){let e=`${n} ${i}`;l.setAttributes({"next.route":i,"http.route":i,"next.span_name":e}),l.updateName(e),t&&t!==l&&(t.setAttribute("http.route",i),t.updateName(e))}else l.updateName(`${n} ${r}`)});p&&l?await m(l):(t=s.getActiveScopeSpan(),await s.withPropagatedContext(e.headers,()=>s.trace(h.BaseServerSpan.handleRequest,{spanName:`${n} ${r}`,kind:d.SpanKind.SERVER,attributes:{"http.method":n,"http.target":e.url}},m),void 0,!p))}catch(e){if(C.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,m,"default",0,f,"handler",0,y],848424)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=%5Broot-of-the-server%5D__11j9~6h._.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
module.exports=[270406,(e,t,a)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},446786,(e,t,a)=>{t.exports=e.x("os",()=>require("os"))},814747,(e,t,a)=>{t.exports=e.x("path",()=>require("path"))},924868,(e,t,a)=>{t.exports=e.x("fs/promises",()=>require("fs/promises"))},130146,(e,t,a)=>{t.exports=e.x("pino-28069d5257187539",()=>require("pino-28069d5257187539"))},25146,e=>{"use strict";var t=e.i(130146),a=e.i(814747),r=e.i(446786);let i=a.default.join(r.default.homedir(),".purplemux","logs"),s=process.env.LOG_LEVEL||"info",n=(e=>{if(!e)return{};let t={};for(let a of e.split(",")){let[e,r]=a.split("=").map(e=>e.trim());e&&r&&(t[e]=r)}return t})(process.env.LOG_LEVELS),l=["trace","debug","info","warn","error","fatal"],o=globalThis;if(!o.__ptRootLogger){let e=[s,...Object.values(n)].reduce((e,t)=>l.indexOf(t)<l.indexOf(e)?t:e,"fatal");o.__ptRootLogger=(0,t.default)({level:e,transport:{targets:[{target:"pino-roll",level:e,options:{file:a.default.join(i,"purplemux"),frequency:"daily",dateFormat:"yyyy-MM-dd",limit:{count:7},mkdir:!0}},{target:"pino-pretty",level:e,options:{colorize:!0,ignore:"pid,hostname,module",translateTime:"HH:MM:ss",messageFormat:"[{module}] {msg}"}}]}})}let u=o.__ptRootLogger;e.s(["createLogger",0,e=>{let t=u.child({module:e});return t.level=n[e]??s,t}])},224361,(e,t,a)=>{t.exports=e.x("util",()=>require("util"))},233405,(e,t,a)=>{t.exports=e.x("child_process",()=>require("child_process"))},666680,(e,t,a)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},597789,965898,e=>{"use strict";let t=process.env.__PMUX_PRISTINE_ENV,a=Object.freeze(t?JSON.parse(t):{...process.env});t||(process.env.__PMUX_PRISTINE_ENV=JSON.stringify(a)),e.s(["PRISTINE_ENV",0,a],965898);let r=new Set(["HOME","USER","LOGNAME","SHELL","PATH","TERM","COLORTERM","LANG","TMPDIR","SSH_AUTH_SOCK","SSH_CONNECTION","SSH_TTY","DISPLAY","WAYLAND_DISPLAY","XDG_RUNTIME_DIR","TZ"]),i=["LC_"],s=e=>r.has(e)||i.some(t=>e.startsWith(t)),n={TERM:"xterm-256color",COLORTERM:"truecolor"},l=()=>{let e={};for(let[t,r]of Object.entries(a))void 0!==r&&s(t)&&(e[t]=r);return{...e,...n}},o=e=>`'${e.replace(/'/g,"'\\''")}'`,u=()=>a.SHELL||"/bin/bash";e.s(["buildShellEnv",0,()=>l(),"buildShellLaunchCommand",0,()=>{let e=Object.entries(l()).map(([e,t])=>`${e}=${o(t)}`).join(" ");return`env -i TMUX="$TMUX" TMUX_PANE="$TMUX_PANE" ${e} ${o(u())} -l`},"defaultShell",0,u],597789)},44014,e=>{"use strict";let t,a;var r=e.i(666680);e.s(["nanoid",0,function(e=21){var i;i=e|=0,!t||t.length<i?(t=Buffer.allocUnsafe(128*i),r.webcrypto.getRandomValues(t),a=0):a+i>t.length&&(r.webcrypto.getRandomValues(t),a=0),a+=i;let s="";for(let r=a-e;r<a;r++)s+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[63&t[r]];return s}],44014)},459015,544538,e=>{"use strict";var t=e.i(233405),a=e.i(924868),r=e.i(224361),i=e.i(814747),s=e.i(44014),n=e.i(965898),l=e.i(597789),o=e.i(25146);process.platform;let u="linux"===process.platform;e.s(["isLinux",0,u],544538);let c=(0,o.createLogger)("terminal"),p=(0,r.promisify)(t.execFile),d="purple",m=i.default.join(process.env.__PMUX_APP_DIR_UNPACKED||process.env.__PMUX_APP_DIR||process.cwd(),"src","config","tmux.conf"),w=async()=>{try{let{stdout:e}=await p("tmux",["-L",d,"ls","-F","#{session_name}"],{timeout:5e3});return e.trim().split("\n").map(e=>e.trim()).filter(e=>e.startsWith("pt-"))}catch{return[]}},f=async(e,t,a,r)=>{let i=(0,l.buildShellLaunchCommand)();await p("tmux",["-u","-L",d,"-f",m,"new-session","-d","-s",e,"-x",String(t),"-y",String(a),i],{timeout:5e3,cwd:r||n.PRISTINE_ENV.HOME||"/"}),await _(),c.debug(`tmux session created: ${e} (cols: ${t}, rows: ${a})`)},y=e=>new Promise(t=>setTimeout(t,e)),h=async e=>{if(!await g(e))return;c.debug(`killSession start: ${e}`);let t=await S(e);if(t)try{c.debug(`SIGTERM → process group ${t}: ${e}`),process.kill(-t,"SIGTERM")}catch{}try{await p("tmux",["-L",d,"kill-session","-t",e],{timeout:5e3})}catch{}for(let t=0;t<5;t++){if(!await g(e))return void c.debug(`killSession done (SIGTERM): ${e}`);await y(200)}if(c.warn(`session survived SIGTERM, escalating to SIGKILL: ${e}`),t)try{c.debug(`SIGKILL → process group ${t}: ${e}`),process.kill(-t,"SIGKILL")}catch{}try{await p("tmux",["-L",d,"kill-session","-t",e],{timeout:5e3})}catch{}for(let t=0;t<3;t++){if(!await g(e))return void c.debug(`killSession done (SIGKILL): ${e}`);await y(200)}c.warn(`tmux session still alive after kill: ${e}`)},g=async e=>{try{return await p("tmux",["-L",d,"has-session","-t",e],{timeout:5e3}),!0}catch{return!1}},k=async()=>{},x=async()=>{await k();let e=await w();e.length>0&&e.forEach(e=>{c.debug(`existing tmux session found: ${e}`)})},b=async e=>{if(u)try{return await a.default.readlink(`/proc/${e}/cwd`)}catch{return null}try{let{stdout:t}=await p("lsof",["-a","-p",String(e),"-d","cwd","-Fn"],{timeout:5e3}),a=t.split("\n").find(e=>e.startsWith("n/"));return a?a.slice(1):null}catch{return null}},L=async e=>{let t=await S(e);if(t){let e=await b(t);if(e)return e}try{let{stdout:t}=await p("tmux",["-L",d,"display-message","-p","-t",e,"#{pane_current_path}"],{timeout:5e3});return t.trim()||null}catch{return null}},S=async e=>{try{let{stdout:t}=await p("tmux",["-L",d,"display-message","-p","-t",e,"#{pane_pid}"],{timeout:5e3}),a=parseInt(t.trim(),10);return Number.isNaN(a)?null:a}catch{return null}},_=async()=>{try{await p("tmux",["-L",d,"source-file",m],{timeout:5e3})}catch{}},I=async e=>{try{let{stdout:t}=await p("tmux",["-L",d,"list-panes","-t",e,"-F","#{pane_current_command}"],{timeout:5e3});return t.trim()||null}catch{return null}},v=async()=>{try{let{stdout:e}=await p("tmux",["-L",d,"list-panes","-a","-F","#{session_name} #{pane_current_command} #{pane_current_path} #{pane_pid} #{window_activity}"],{timeout:5e3}),t=new Map;for(let a of e.trim().split("\n")){if(!a)continue;let[e,r,i,s,n]=a.split(" ");if(e&&r){let a=parseInt(s,10),l=parseInt(n,10);t.set(e,{command:r,path:i||"",pid:Number.isNaN(a)?0:a,windowActivity:Number.isNaN(l)?0:l})}}return t}catch{return new Map}},$=new Set(["bash","zsh","fish","sh","dash"]),N=async e=>{try{let{stdout:t}=await p("tmux",["-L",d,"display-message","-p","-t",e,"#{pane_title}"],{timeout:5e3});return t.trim()||null}catch{return null}},P=async e=>{await p("tmux",["-L",d,"copy-mode","-q","-t",e],{timeout:5e3}).catch(()=>{})},E=async(e,t)=>{await P(e),await p("tmux",["-L",d,"send-keys","-t",e,t,"Enter"],{timeout:5e3})},T=async(e,t)=>{await P(e),await p("tmux",["-L",d,"send-keys","-t",e,t],{timeout:5e3})},W=async(e,t)=>{await P(e),await p("tmux",["-L",d,"send-keys","-t",e,"-l",`\x1b[200~${t}\x1b[201~`],{timeout:5e3}),await p("tmux",["-L",d,"send-keys","-t",e,"Enter"],{timeout:5e3}),await new Promise(e=>setTimeout(e,600)),await p("tmux",["-L",d,"send-keys","-t",e,"Enter"],{timeout:5e3})},C=async e=>{try{let{stdout:t}=await p("tmux",["-L",d,"display-message","-p","-t",e,"#{pane_current_path} #{pane_current_command} #{pane_pid} #{pane_width} #{pane_height} #{session_created}"],{timeout:5e3}),[a,r,i,s,n,l]=t.trim().split(" ");return{cwd:a||null,command:r||null,pid:i&&parseInt(i,10)||null,width:s&&parseInt(s,10)||null,height:n&&parseInt(n,10)||null,sessionCreated:l&&parseInt(l,10)||null}}catch{return{cwd:null,command:null,pid:null,width:null,height:null,sessionCreated:null}}},A=new Set(["node","python","python3","ruby","perl","deno","bun"]),O=async()=>{try{await p("tmux",["-L",d,"kill-server"],{timeout:5e3}),c.debug("tmux server killed")}catch{}},D=async e=>{try{let{stdout:t}=await p("tmux",["-L",d,"capture-pane","-p","-t",e],{timeout:5e3});return t}catch{return null}},F=async(e,t)=>{try{let{stdout:a}=await p("tmux",["-L",d,"capture-pane","-p","-S",`-${t}`,"-t",e],{timeout:5e3});return a}catch{return null}},j=async e=>{if(u){let t=[];return await Promise.all(e.map(async e=>{try{for(let r of(await a.default.readFile(`/proc/${e}/task/${e}/children`,"utf-8")).trim().split(/\s+/)){let e=parseInt(r,10);Number.isNaN(e)||t.push(e)}}catch{}})),t}try{let{stdout:t}=await p("pgrep",["-P",e.join(",")],{timeout:5e3});return t.trim().split("\n").map(e=>parseInt(e,10)).filter(e=>!Number.isNaN(e))}catch{return[]}},M=async e=>{let t=[],a=[e];for(;a.length>0;){let e=await j(a);if(0===e.length)break;t.push(...e),a=e}return t},R=async e=>{try{let t=new Set(e),{stdout:a}=await p("ss",["-tlnp"],{timeout:5e3}),r=new Set;for(let e of a.split("\n")){let a=e.match(/pid=(\d+)/g);if(!a||!a.some(e=>t.has(parseInt(e.replace("pid=",""),10))))continue;let i=e.match(/:(\d+)\s/);i&&r.add(parseInt(i[1],10))}return[...r].sort((e,t)=>e-t)}catch{return[]}},q=async e=>{let t=await M(e);if(0===t.length)return[];if(u)return R(t);try{let{stdout:e}=await p("lsof",["-a","-p",t.join(","),"-i","-sTCP:LISTEN","-P","-Fn"],{timeout:5e3}),a=new Set;for(let t of e.split("\n"))if(t.startsWith("n")){let e=t.match(/:(\d+)$/);e&&a.add(parseInt(e[1],10))}return[...a].sort((e,t)=>e-t)}catch{return[]}},H=async e=>{let t=await S(e);if(!t)return null;try{let{stdout:e}=await p("pgrep",["-n","-P",String(t)],{timeout:5e3}),a=e.trim();if(!a)return null;let{stdout:r}=await p("ps",["-o","args=","-p",a],{timeout:5e3}),s=r.trim();if(!s)return null;let n=s.split(/\s+/);if(0===n.length)return s;if(n[0]=i.default.basename(n[0]),A.has(n[0])&&n.length>1){let e=i.default.basename(n[1]).replace(/\.(c|m)?js$/,"");n.splice(0,2,e)}return n.join(" ")}catch{return null}};e.s(["SAFE_SHELLS",0,$,"applyConfig",0,_,"capturePaneContent",0,D,"capturePaneContentWithHistory",0,F,"createSession",0,f,"defaultSessionName",0,()=>`pt-${(0,s.nanoid)(6)}-${(0,s.nanoid)(6)}-${(0,s.nanoid)(6)}`,"exitCopyMode",0,P,"getAllPanesInfo",0,v,"getLastCommand",0,H,"getListeningPorts",0,q,"getPaneCurrentCommand",0,I,"getPaneDetailInfo",0,C,"getPaneTitle",0,N,"getSessionCwd",0,L,"getSessionPanePid",0,S,"hasSession",0,g,"killServer",0,O,"killSession",0,h,"listSessions",0,w,"scanSessions",0,x,"sendBracketedPaste",0,W,"sendKeys",0,E,"sendRawKeys",0,T,"workspaceSessionName",0,(e,t,a)=>`pt-${e}-${t}-${a}`],459015)},688947,(e,t,a)=>{t.exports=e.x("stream",()=>require("stream"))},406461,(e,t,a)=>{t.exports=e.x("zlib",()=>require("zlib"))},254799,(e,t,a)=>{t.exports=e.x("crypto",()=>require("crypto"))},524836,(e,t,a)=>{t.exports=e.x("https",()=>require("https"))},921517,(e,t,a)=>{t.exports=e.x("http",()=>require("http"))},504446,(e,t,a)=>{t.exports=e.x("net",()=>require("net"))},755004,(e,t,a)=>{t.exports=e.x("tls",()=>require("tls"))},792509,(e,t,a)=>{t.exports=e.x("url",()=>require("url"))},500874,(e,t,a)=>{t.exports=e.x("buffer",()=>require("buffer"))},427699,(e,t,a)=>{t.exports=e.x("events",()=>require("events"))},666126,e=>{"use strict";e.i(478319);var t=e.i(220951);(0,e.i(25146).createLogger)("sync");let a=globalThis;a.__ptSyncClients||(a.__ptSyncClients=new Set);let r=a.__ptSyncClients;e.s(["broadcastSync",0,e=>{let a=JSON.stringify(e);for(let e of r)e.readyState===t.WebSocket.OPEN&&e.bufferedAmount<1048576&&e.send(a)}])},322429,160874,e=>{"use strict";var t=e.i(924868),a=e.i(814747),r=e.i(446786),i=e.i(44014),s=e.i(459015),n=e.i(25146),l=e.i(666126),o=e.i(825265),u=e.i(804767);(0,n.createLogger)("claude-prompt");let c=e=>a.default.join((0,o.resolveLayoutDir)(e),"claude-prompt.md"),p=async e=>{let r=c(e.id);await t.default.mkdir(a.default.dirname(r),{recursive:!0});let i=`# purplemux context
|
|
1
|
+
module.exports=[270406,(e,t,a)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},446786,(e,t,a)=>{t.exports=e.x("os",()=>require("os"))},814747,(e,t,a)=>{t.exports=e.x("path",()=>require("path"))},924868,(e,t,a)=>{t.exports=e.x("fs/promises",()=>require("fs/promises"))},130146,(e,t,a)=>{t.exports=e.x("pino-28069d5257187539",()=>require("pino-28069d5257187539"))},224361,(e,t,a)=>{t.exports=e.x("util",()=>require("util"))},233405,(e,t,a)=>{t.exports=e.x("child_process",()=>require("child_process"))},666680,(e,t,a)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},25146,e=>{"use strict";var t=e.i(130146),a=e.i(814747),r=e.i(446786);let i=a.default.join(r.default.homedir(),".purplemux","logs"),s=process.env.LOG_LEVEL||"info",n=(e=>{if(!e)return{};let t={};for(let a of e.split(",")){let[e,r]=a.split("=").map(e=>e.trim());e&&r&&(t[e]=r)}return t})(process.env.LOG_LEVELS),l=["trace","debug","info","warn","error","fatal"],o=globalThis;if(!o.__ptRootLogger){let e=[s,...Object.values(n)].reduce((e,t)=>l.indexOf(t)<l.indexOf(e)?t:e,"fatal");o.__ptRootLogger=(0,t.default)({level:e,transport:{targets:[{target:"pino-roll",level:e,options:{file:a.default.join(i,"purplemux"),frequency:"daily",dateFormat:"yyyy-MM-dd",limit:{count:7},mkdir:!0}},{target:"pino-pretty",level:e,options:{colorize:!0,ignore:"pid,hostname,module",translateTime:"HH:MM:ss",messageFormat:"[{module}] {msg}"}}]}})}let u=o.__ptRootLogger;e.s(["createLogger",0,e=>{let t=u.child({module:e});return t.level=n[e]??s,t}])},597789,965898,e=>{"use strict";let t=process.env.__PMUX_PRISTINE_ENV,a=Object.freeze(t?JSON.parse(t):{...process.env});t||(process.env.__PMUX_PRISTINE_ENV=JSON.stringify(a)),e.s(["PRISTINE_ENV",0,a],965898);let r=new Set(["HOME","USER","LOGNAME","SHELL","PATH","TERM","COLORTERM","LANG","TMPDIR","SSH_AUTH_SOCK","SSH_CONNECTION","SSH_TTY","DISPLAY","WAYLAND_DISPLAY","XDG_RUNTIME_DIR","TZ"]),i=["LC_"],s=e=>r.has(e)||i.some(t=>e.startsWith(t)),n={TERM:"xterm-256color",COLORTERM:"truecolor"},l=()=>{let e={};for(let[t,r]of Object.entries(a))void 0!==r&&s(t)&&(e[t]=r);return{...e,...n}},o=e=>`'${e.replace(/'/g,"'\\''")}'`,u=()=>a.SHELL||"/bin/bash";e.s(["buildShellEnv",0,()=>l(),"buildShellLaunchCommand",0,()=>{let e=Object.entries(l()).map(([e,t])=>`${e}=${o(t)}`).join(" ");return`env -i TMUX="$TMUX" TMUX_PANE="$TMUX_PANE" ${e} ${o(u())} -l`},"defaultShell",0,u],597789)},44014,e=>{"use strict";let t,a;var r=e.i(666680);e.s(["nanoid",0,function(e=21){var i;i=e|=0,!t||t.length<i?(t=Buffer.allocUnsafe(128*i),r.webcrypto.getRandomValues(t),a=0):a+i>t.length&&(r.webcrypto.getRandomValues(t),a=0),a+=i;let s="";for(let r=a-e;r<a;r++)s+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[63&t[r]];return s}],44014)},459015,544538,e=>{"use strict";var t=e.i(233405),a=e.i(924868),r=e.i(224361),i=e.i(814747),s=e.i(44014),n=e.i(965898),l=e.i(597789),o=e.i(25146);process.platform;let u="linux"===process.platform;e.s(["isLinux",0,u],544538);let c=(0,o.createLogger)("terminal"),p=(0,r.promisify)(t.execFile),d="purple",m=i.default.join(process.env.__PMUX_APP_DIR_UNPACKED||process.env.__PMUX_APP_DIR||process.cwd(),"src","config","tmux.conf"),w=async()=>{try{let{stdout:e}=await p("tmux",["-L",d,"ls","-F","#{session_name}"],{timeout:5e3});return e.trim().split("\n").map(e=>e.trim()).filter(e=>e.startsWith("pt-"))}catch{return[]}},f=async(e,t,a,r)=>{let i=(0,l.buildShellLaunchCommand)();await p("tmux",["-u","-L",d,"-f",m,"new-session","-d","-s",e,"-x",String(t),"-y",String(a),i],{timeout:5e3,cwd:r||n.PRISTINE_ENV.HOME||"/"}),await _(),c.debug(`tmux session created: ${e} (cols: ${t}, rows: ${a})`)},y=e=>new Promise(t=>setTimeout(t,e)),h=async e=>{if(!await g(e))return;c.debug(`killSession start: ${e}`);let t=await L(e);if(t)try{c.debug(`SIGTERM → process group ${t}: ${e}`),process.kill(-t,"SIGTERM")}catch{}try{await p("tmux",["-L",d,"kill-session","-t",e],{timeout:5e3})}catch{}for(let t=0;t<5;t++){if(!await g(e))return void c.debug(`killSession done (SIGTERM): ${e}`);await y(200)}if(c.warn(`session survived SIGTERM, escalating to SIGKILL: ${e}`),t)try{c.debug(`SIGKILL → process group ${t}: ${e}`),process.kill(-t,"SIGKILL")}catch{}try{await p("tmux",["-L",d,"kill-session","-t",e],{timeout:5e3})}catch{}for(let t=0;t<3;t++){if(!await g(e))return void c.debug(`killSession done (SIGKILL): ${e}`);await y(200)}c.warn(`tmux session still alive after kill: ${e}`)},g=async e=>{try{return await p("tmux",["-L",d,"has-session","-t",e],{timeout:5e3}),!0}catch{return!1}},k=async()=>{},x=async()=>{await k();let e=await w();e.length>0&&e.forEach(e=>{c.debug(`existing tmux session found: ${e}`)})},b=async e=>{if(u)try{return await a.default.readlink(`/proc/${e}/cwd`)}catch{return null}try{let{stdout:t}=await p("lsof",["-a","-p",String(e),"-d","cwd","-Fn"],{timeout:5e3}),a=t.split("\n").find(e=>e.startsWith("n/"));return a?a.slice(1):null}catch{return null}},S=async e=>{let t=await L(e);if(t){let e=await b(t);if(e)return e}try{let{stdout:t}=await p("tmux",["-L",d,"display-message","-p","-t",e,"#{pane_current_path}"],{timeout:5e3});return t.trim()||null}catch{return null}},L=async e=>{try{let{stdout:t}=await p("tmux",["-L",d,"display-message","-p","-t",e,"#{pane_pid}"],{timeout:5e3}),a=parseInt(t.trim(),10);return Number.isNaN(a)?null:a}catch{return null}},_=async()=>{try{await p("tmux",["-L",d,"source-file",m],{timeout:5e3})}catch{}},I=async e=>{try{let{stdout:t}=await p("tmux",["-L",d,"list-panes","-t",e,"-F","#{pane_current_command}"],{timeout:5e3});return t.trim()||null}catch{return null}},v=async()=>{try{let{stdout:e}=await p("tmux",["-L",d,"list-panes","-a","-F","#{session_name} #{pane_current_command} #{pane_current_path} #{pane_pid} #{window_activity}"],{timeout:5e3}),t=new Map;for(let a of e.trim().split("\n")){if(!a)continue;let[e,r,i,s,n]=a.split(" ");if(e&&r){let a=parseInt(s,10),l=parseInt(n,10);t.set(e,{command:r,path:i||"",pid:Number.isNaN(a)?0:a,windowActivity:Number.isNaN(l)?0:l})}}return t}catch{return new Map}},N=new Set(["bash","zsh","fish","sh","dash"]),$=async e=>{let t=await I(e);return t?{isSafe:N.has(t),processName:t}:{isSafe:!1,processName:"unknown"}},P=async e=>{try{let{stdout:t}=await p("tmux",["-L",d,"display-message","-p","-t",e,"#{pane_title}"],{timeout:5e3});return t.trim()||null}catch{return null}},E=async e=>{await p("tmux",["-L",d,"copy-mode","-q","-t",e],{timeout:5e3}).catch(()=>{})},T=async(e,t)=>{await E(e),await p("tmux",["-L",d,"send-keys","-t",e,t,"Enter"],{timeout:5e3})},W=async(e,t)=>{await E(e),await p("tmux",["-L",d,"send-keys","-t",e,t],{timeout:5e3})},C=async(e,t)=>{await E(e),await p("tmux",["-L",d,"send-keys","-t",e,"-l",`\x1b[200~${t}\x1b[201~`],{timeout:5e3}),await p("tmux",["-L",d,"send-keys","-t",e,"Enter"],{timeout:5e3}),await new Promise(e=>setTimeout(e,600)),await p("tmux",["-L",d,"send-keys","-t",e,"Enter"],{timeout:5e3})},A=async e=>{try{let{stdout:t}=await p("tmux",["-L",d,"display-message","-p","-t",e,"#{pane_current_path} #{pane_current_command} #{pane_pid} #{pane_width} #{pane_height} #{session_created}"],{timeout:5e3}),[a,r,i,s,n,l]=t.trim().split(" ");return{cwd:a||null,command:r||null,pid:i&&parseInt(i,10)||null,width:s&&parseInt(s,10)||null,height:n&&parseInt(n,10)||null,sessionCreated:l&&parseInt(l,10)||null}}catch{return{cwd:null,command:null,pid:null,width:null,height:null,sessionCreated:null}}},O=new Set(["node","python","python3","ruby","perl","deno","bun"]),D=async()=>{try{await p("tmux",["-L",d,"kill-server"],{timeout:5e3}),c.debug("tmux server killed")}catch{}},F=async e=>{try{let{stdout:t}=await p("tmux",["-L",d,"capture-pane","-p","-t",e],{timeout:5e3});return t}catch{return null}},j=async(e,t)=>{try{let{stdout:a}=await p("tmux",["-L",d,"capture-pane","-p","-S",`-${t}`,"-t",e],{timeout:5e3});return a}catch{return null}},M=async e=>{if(u){let t=[];return await Promise.all(e.map(async e=>{try{for(let r of(await a.default.readFile(`/proc/${e}/task/${e}/children`,"utf-8")).trim().split(/\s+/)){let e=parseInt(r,10);Number.isNaN(e)||t.push(e)}}catch{}})),t}try{let{stdout:t}=await p("pgrep",["-P",e.join(",")],{timeout:5e3});return t.trim().split("\n").map(e=>parseInt(e,10)).filter(e=>!Number.isNaN(e))}catch{return[]}},R=async e=>{let t=[],a=[e];for(;a.length>0;){let e=await M(a);if(0===e.length)break;t.push(...e),a=e}return t},q=async e=>{try{let t=new Set(e),{stdout:a}=await p("ss",["-tlnp"],{timeout:5e3}),r=new Set;for(let e of a.split("\n")){let a=e.match(/pid=(\d+)/g);if(!a||!a.some(e=>t.has(parseInt(e.replace("pid=",""),10))))continue;let i=e.match(/:(\d+)\s/);i&&r.add(parseInt(i[1],10))}return[...r].sort((e,t)=>e-t)}catch{return[]}},H=async e=>{let t=await R(e);if(0===t.length)return[];if(u)return q(t);try{let{stdout:e}=await p("lsof",["-a","-p",t.join(","),"-i","-sTCP:LISTEN","-P","-Fn"],{timeout:5e3}),a=new Set;for(let t of e.split("\n"))if(t.startsWith("n")){let e=t.match(/:(\d+)$/);e&&a.add(parseInt(e[1],10))}return[...a].sort((e,t)=>e-t)}catch{return[]}},U=async e=>{let t=await L(e);if(!t)return null;try{let{stdout:e}=await p("pgrep",["-n","-P",String(t)],{timeout:5e3}),a=e.trim();if(!a)return null;let{stdout:r}=await p("ps",["-o","args=","-p",a],{timeout:5e3}),s=r.trim();if(!s)return null;let n=s.split(/\s+/);if(0===n.length)return s;if(n[0]=i.default.basename(n[0]),O.has(n[0])&&n.length>1){let e=i.default.basename(n[1]).replace(/\.(c|m)?js$/,"");n.splice(0,2,e)}return n.join(" ")}catch{return null}};e.s(["SAFE_SHELLS",0,N,"applyConfig",0,_,"capturePaneContent",0,F,"capturePaneContentWithHistory",0,j,"checkTerminalProcess",0,$,"createSession",0,f,"defaultSessionName",0,()=>`pt-${(0,s.nanoid)(6)}-${(0,s.nanoid)(6)}-${(0,s.nanoid)(6)}`,"exitCopyMode",0,E,"getAllPanesInfo",0,v,"getLastCommand",0,U,"getListeningPorts",0,H,"getPaneCurrentCommand",0,I,"getPaneDetailInfo",0,A,"getPaneTitle",0,P,"getSessionCwd",0,S,"getSessionPanePid",0,L,"hasSession",0,g,"killServer",0,D,"killSession",0,h,"listSessions",0,w,"scanSessions",0,x,"sendBracketedPaste",0,C,"sendKeys",0,T,"sendRawKeys",0,W,"workspaceSessionName",0,(e,t,a)=>`pt-${e}-${t}-${a}`],459015)},688947,(e,t,a)=>{t.exports=e.x("stream",()=>require("stream"))},406461,(e,t,a)=>{t.exports=e.x("zlib",()=>require("zlib"))},254799,(e,t,a)=>{t.exports=e.x("crypto",()=>require("crypto"))},524836,(e,t,a)=>{t.exports=e.x("https",()=>require("https"))},921517,(e,t,a)=>{t.exports=e.x("http",()=>require("http"))},504446,(e,t,a)=>{t.exports=e.x("net",()=>require("net"))},755004,(e,t,a)=>{t.exports=e.x("tls",()=>require("tls"))},792509,(e,t,a)=>{t.exports=e.x("url",()=>require("url"))},500874,(e,t,a)=>{t.exports=e.x("buffer",()=>require("buffer"))},427699,(e,t,a)=>{t.exports=e.x("events",()=>require("events"))},666126,e=>{"use strict";e.i(478319);var t=e.i(220951);(0,e.i(25146).createLogger)("sync");let a=globalThis;a.__ptSyncClients||(a.__ptSyncClients=new Set);let r=a.__ptSyncClients;e.s(["broadcastSync",0,e=>{let a=JSON.stringify(e);for(let e of r)e.readyState===t.WebSocket.OPEN&&e.bufferedAmount<1048576&&e.send(a)}])},322429,160874,e=>{"use strict";var t=e.i(924868),a=e.i(814747),r=e.i(446786),i=e.i(44014),s=e.i(459015),n=e.i(25146),l=e.i(666126),o=e.i(825265),u=e.i(804767);(0,n.createLogger)("claude-prompt");let c=e=>a.default.join((0,o.resolveLayoutDir)(e),"claude-prompt.md"),p=async e=>{let r=c(e.id);await t.default.mkdir(a.default.dirname(r),{recursive:!0});let i=`# purplemux context
|
|
2
2
|
|
|
3
3
|
You are running inside a purplemux workspace tab.
|
|
4
4
|
|
|
@@ -37,6 +37,6 @@ purplemux api-guide
|
|
|
37
37
|
(long-running builds, different project context, parallel exploration).
|
|
38
38
|
- Poll \`status\` and read \`result\` to verify delegated work.
|
|
39
39
|
- Prefer small, scoped tabs over cramming everything into one session.
|
|
40
|
-
`;try{if(await t.default.readFile(r,"utf-8")===i)return r}catch{}return await t.default.writeFile(r,i,"utf-8"),r};e.s(["getClaudePromptPath",0,c,"writeClaudePromptFile",0,p],160874);let d=(0,n.createLogger)("workspace"),m="Workspace ",w=a.default.join(r.default.homedir(),".purplemux"),f=a.default.join(w,"workspaces.json"),y=a.default.join(w,"layout.json"),h=a.default.join(w,"tabs.json"),g=globalThis;g.__purplemuxWorkspaceLock||(g.__purplemuxWorkspaceLock=Promise.resolve());let k=async e=>{let t,a=new Promise(e=>{t=e}),r=g.__purplemuxWorkspaceLock;g.__purplemuxWorkspaceLock=a,await r;try{return await e()}finally{t()}},x=()=>({workspaces:[],sidebarCollapsed:!1,sidebarWidth:240,updatedAt:new Date().toISOString()}),b=async()=>{let e;try{e=await t.default.readFile(f,"utf-8")}catch{return null}try{let t=JSON.parse(e);for(let e of t.workspaces)!e.directories&&e.directory&&(e.directories=[e.directory],delete e.directory);return t}catch{d.warn("Failed to parse workspaces.json, starting empty");try{await t.default.copyFile(f,f.replace(/\.json$/,".json.bak"))}catch{}return null}},
|
|
40
|
+
`;try{if(await t.default.readFile(r,"utf-8")===i)return r}catch{}return await t.default.writeFile(r,i,"utf-8"),r};e.s(["getClaudePromptPath",0,c,"writeClaudePromptFile",0,p],160874);let d=(0,n.createLogger)("workspace"),m="Workspace ",w=a.default.join(r.default.homedir(),".purplemux"),f=a.default.join(w,"workspaces.json"),y=a.default.join(w,"layout.json"),h=a.default.join(w,"tabs.json"),g=globalThis;g.__purplemuxWorkspaceLock||(g.__purplemuxWorkspaceLock=Promise.resolve());let k=async e=>{let t,a=new Promise(e=>{t=e}),r=g.__purplemuxWorkspaceLock;g.__purplemuxWorkspaceLock=a,await r;try{return await e()}finally{t()}},x=()=>({workspaces:[],sidebarCollapsed:!1,sidebarWidth:240,updatedAt:new Date().toISOString()}),b=async()=>{let e;try{e=await t.default.readFile(f,"utf-8")}catch{return null}try{let t=JSON.parse(e);for(let e of t.workspaces)!e.directories&&e.directory&&(e.directories=[e.directory],delete e.directory);return t}catch{d.warn("Failed to parse workspaces.json, starting empty");try{await t.default.copyFile(f,f.replace(/\.json$/,".json.bak"))}catch{}return null}},S=async e=>{let{workspaces:a,activeWorkspaceId:r,sidebarCollapsed:i,sidebarWidth:s}=e,n=JSON.stringify({workspaces:a,activeWorkspaceId:r,sidebarCollapsed:i,sidebarWidth:s});if(g.__purplemuxWorkspacesContentCache===n)return;e.updatedAt=new Date().toISOString();let o=f+".tmp";try{await t.default.writeFile(o,JSON.stringify(e,null,2),{mode:384}),await t.default.rename(o,f)}catch(e){throw await t.default.unlink(o).catch(()=>{}),e}g.__purplemuxWorkspacesContentCache=n,(0,l.broadcastSync)({type:"workspace"})},L=async()=>{let e=await (0,o.readLayoutFile)(y);if(!e)return null;let a="ws-default";await t.default.mkdir((0,o.resolveLayoutDir)(a),{recursive:!0}),await (0,o.writeLayoutFile)(e,(0,o.resolveLayoutFile)(a));let i={workspaces:[{id:a,name:"default",directories:[r.default.homedir()],order:0}],sidebarCollapsed:!1,sidebarWidth:240,updatedAt:e.updatedAt||new Date().toISOString()};return await S(i),d.info("Phase 4 layout.json → Workspace 'default' migration complete"),i},_=async()=>{try{let e=await t.default.readFile(h,"utf-8"),a=JSON.parse(e);if(!Array.isArray(a.tabs)||0===a.tabs.length)return null;let r=`pane-${(0,i.nanoid)(6)}`,s={root:{type:"pane",id:r,tabs:a.tabs,activeTabId:a.activeTabId??null},activePaneId:r,updatedAt:new Date().toISOString()},n=y+".tmp";try{await t.default.writeFile(n,JSON.stringify(s,null,2),{mode:384}),await t.default.rename(n,y)}catch(e){throw await t.default.unlink(n).catch(()=>{}),e}return d.info("tabs.json → layout.json migration complete"),await L()}catch{return null}},I=async()=>{await t.default.mkdir(a.default.join(w,"workspaces"),{recursive:!0});let e=await b();if(!e&&(await t.default.access(y).then(()=>!0).catch(()=>!1)?e=await L():await t.default.access(h).then(()=>!0).catch(()=>!1)&&(e=await _())),!e){let t=x();await S(t),e=t,d.info("Initial workspaces.json created")}if(0===e.workspaces.length)return;let r=await (0,s.listSessions)();for(let t of e.workspaces){let e=(0,o.resolveLayoutFile)(t.id),a=await (0,o.readLayoutFile)(e);if(!a){d.warn(`Workspace '${t.name}': layout.json corrupted, reset to default pane`),a=await (0,o.createDefaultLayout)(t.id,t.directories[0]),await (0,o.writeLayoutFile)(a,e);continue}let i=(0,u.collectAllTabs)(a.root).map(e=>e.sessionName),s=`pt-${t.id}-`,n=r.filter(e=>i.includes(e)||e.startsWith(s));try{await (0,o.crossCheckLayout)(a,n,t.id,t.directories[0])&&await (0,o.writeLayoutFile)(a,e)}catch(e){d.error(`Workspace '${t.name}': tmux consistency check failed: ${e instanceof Error?e.message:e}`)}}},v=async()=>{let e=await b();return e?{workspaces:e.workspaces,activeWorkspaceId:e.activeWorkspaceId,sidebarCollapsed:e.sidebarCollapsed,sidebarWidth:e.sidebarWidth}:{workspaces:[],sidebarCollapsed:!1,sidebarWidth:220}},N=async()=>{let e=await b();return e?.activeWorkspaceId&&e.workspaces.some(t=>t.id===e.activeWorkspaceId)?e.activeWorkspaceId:e?.workspaces[0]?.id??null},$=async e=>{let t=await b();return t?.workspaces.find(t=>t.id===e)},P=async(e,a,r)=>k(async()=>{let s;try{s=await t.default.stat(e)}catch{throw Error("Directory does not exist")}if(!s.isDirectory())throw Error("Please enter a directory path, not a file");let n=await b()??x(),l=`ws-${(0,i.nanoid)(6)}`,u=a?.trim()||(e=>{let t=0;for(let a of e)if(a.name.startsWith(m)){let e=parseInt(a.name.slice(m.length),10);e>t&&(t=e)}return`${m}${t+1}`})(n.workspaces),c=n.workspaces.length,w=await (0,o.createDefaultLayout)(l,e,r);await t.default.mkdir((0,o.resolveLayoutDir)(l),{recursive:!0}),await (0,o.writeLayoutFile)(w,(0,o.resolveLayoutFile)(l));let f={id:l,name:u,directories:[e],order:c};return n.workspaces.push(f),await S(n),await p(f),d.debug(`Created: ${l} (${u}, ${e})`),f}),E=async e=>k(async()=>{let t=await b()??x(),a=t.workspaces.findIndex(t=>t.id===e);if(-1===a)return!1;let r=t.workspaces[a],i=await (0,o.readLayoutFile)((0,o.resolveLayoutFile)(e));if(i)for(let e of(0,u.collectAllTabs)(i.root))try{await (0,s.killSession)(e.sessionName)}catch{}try{await (0,o.removeLayoutFile)(e)}catch{}return t.workspaces.splice(a,1),t.workspaces.forEach((e,t)=>{e.order=t}),await S(t),d.info(`Deleted: ${e} (${r.name})`),!0}),T=async(e,t)=>k(async()=>{let a=await b();if(!a)return null;let r=a.workspaces.find(t=>t.id===e);return r?(r.name=t,await S(a),await p(r),d.debug(`Renamed: ${e} → "${t}"`),{...r}):null}),W=async e=>k(async()=>{let t=await b()??x();void 0!==e.activeWorkspaceId&&(t.activeWorkspaceId=e.activeWorkspaceId),void 0!==e.sidebarCollapsed&&(t.sidebarCollapsed=e.sidebarCollapsed),void 0!==e.sidebarWidth&&(t.sidebarWidth=e.sidebarWidth),await S(t)}),C=async(e,t)=>k(async()=>{let a=await b();if(!a)return;let r=a.workspaces.find(t=>t.id===e);r&&JSON.stringify(r.directories)!==JSON.stringify(t)&&(r.directories=t,await S(a),await p(r))}),A=async e=>k(async()=>{let t=await b()??x(),a=new Map(t.workspaces.map(e=>[e.id,e])),r=[];for(let t of e){let e=a.get(t);if(!e)return!1;r.push(e)}return r.length===t.workspaces.length&&(r.forEach((e,t)=>{e.order=t}),t.workspaces=r,await S(t),!0)}),O=async e=>{try{if(!(await t.default.stat(e)).isDirectory())return{valid:!1,error:"Please enter a directory path, not a file"}}catch{return{valid:!1,error:"Directory does not exist"}}return{valid:!0,suggestedName:a.default.basename(e)}};e.s(["createWorkspace",0,P,"deleteWorkspace",0,E,"getActiveWorkspaceId",0,N,"getWorkspaceById",0,$,"getWorkspaces",0,v,"initWorkspaceStore",0,I,"renameWorkspace",0,T,"reorderWorkspaces",0,A,"updateActive",0,W,"updateWorkspaceDirectories",0,C,"validateDirectory",0,O],322429)}];
|
|
41
41
|
|
|
42
|
-
//# sourceMappingURL=%5Broot-of-the-server%
|
|
42
|
+
//# sourceMappingURL=%5Broot-of-the-server%5D__12ksl6n._.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
module.exports=[270406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},446786,(e,t,r)=>{t.exports=e.x("os",()=>require("os"))},814747,(e,t,r)=>{t.exports=e.x("path",()=>require("path"))},924868,(e,t,r)=>{t.exports=e.x("fs/promises",()=>require("fs/promises"))},130146,(e,t,r)=>{t.exports=e.x("pino-28069d5257187539",()=>require("pino-28069d5257187539"))},224361,(e,t,r)=>{t.exports=e.x("util",()=>require("util"))},233405,(e,t,r)=>{t.exports=e.x("child_process",()=>require("child_process"))},666680,(e,t,r)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},597789,965898,e=>{"use strict";let t=process.env.__PMUX_PRISTINE_ENV,r=Object.freeze(t?JSON.parse(t):{...process.env});t||(process.env.__PMUX_PRISTINE_ENV=JSON.stringify(r)),e.s(["PRISTINE_ENV",0,r],965898);let a=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"]),n=["LC_"],i=e=>a.has(e)||n.some(t=>e.startsWith(t)),s={TERM:"xterm-256color",COLORTERM:"truecolor"},l=()=>{let e={};for(let[t,a]of Object.entries(r))void 0!==a&&i(t)&&(e[t]=a);return{...e,...s}},o=e=>`'${e.replace(/'/g,"'\\''")}'`,u=()=>r.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)},25146,e=>{"use strict";var t=e.i(130146),r=e.i(814747),a=e.i(446786);let n=r.default.join(a.default.homedir(),".purplemux","logs"),i=process.env.LOG_LEVEL||"info",s=(e=>{if(!e)return{};let t={};for(let r of e.split(",")){let[e,a]=r.split("=").map(e=>e.trim());e&&a&&(t[e]=a)}return t})(process.env.LOG_LEVELS),l=["trace","debug","info","warn","error","fatal"],o=globalThis;if(!o.__ptRootLogger){let e=[i,...Object.values(s)].reduce((e,t)=>l.indexOf(t)<l.indexOf(e)?t:e,"fatal");o.__ptRootLogger=(0,t.default)({level:e,transport:{targets:[{target:"pino-roll",level:e,options:{file:r.default.join(n,"purplemux"),frequency:"daily",dateFormat:"yyyy-MM-dd",limit:{count:7},mkdir:!0}},{target:"pino-pretty",level:e,options:{colorize:!0,ignore:"pid,hostname,module",translateTime:"HH:MM:ss",messageFormat:"[{module}] {msg}"}}]}})}let u=o.__ptRootLogger;e.s(["createLogger",0,e=>{let t=u.child({module:e});return t.level=s[e]??i,t}])},44014,e=>{"use strict";let t,r;var a=e.i(666680);e.s(["nanoid",0,function(e=21){var n;n=e|=0,!t||t.length<n?(t=Buffer.allocUnsafe(128*n),a.webcrypto.getRandomValues(t),r=0):r+n>t.length&&(a.webcrypto.getRandomValues(t),r=0),r+=n;let i="";for(let a=r-e;a<r;a++)i+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[63&t[a]];return i}],44014)},459015,544538,e=>{"use strict";var t=e.i(233405),r=e.i(924868),a=e.i(224361),n=e.i(814747),i=e.i(44014),s=e.i(965898),l=e.i(597789),o=e.i(25146);process.platform;let u="linux"===process.platform;e.s(["isLinux",0,u],544538);let c=(0,o.createLogger)("terminal"),p=(0,a.promisify)(t.execFile),d="purple",m=n.default.join(process.env.__PMUX_APP_DIR_UNPACKED||process.env.__PMUX_APP_DIR||process.cwd(),"src","config","tmux.conf"),h=async()=>{try{let{stdout:e}=await p("tmux",["-L",d,"ls","-F","#{session_name}"],{timeout:5e3});return e.trim().split("\n").map(e=>e.trim()).filter(e=>e.startsWith("pt-"))}catch{return[]}},f=async(e,t,r,a)=>{let n=(0,l.buildShellLaunchCommand)();await p("tmux",["-u","-L",d,"-f",m,"new-session","-d","-s",e,"-x",String(t),"-y",String(r),n],{timeout:5e3,cwd:a||s.PRISTINE_ENV.HOME||"/"}),await E(),c.debug(`tmux session created: ${e} (cols: ${t}, rows: ${r})`)},w=e=>new Promise(t=>setTimeout(t,e)),g=async e=>{if(!await y(e))return;c.debug(`killSession start: ${e}`);let t=await v(e);if(t)try{c.debug(`SIGTERM → process group ${t}: ${e}`),process.kill(-t,"SIGTERM")}catch{}try{await p("tmux",["-L",d,"kill-session","-t",e],{timeout:5e3})}catch{}for(let t=0;t<5;t++){if(!await y(e))return void c.debug(`killSession done (SIGTERM): ${e}`);await w(200)}if(c.warn(`session survived SIGTERM, escalating to SIGKILL: ${e}`),t)try{c.debug(`SIGKILL → process group ${t}: ${e}`),process.kill(-t,"SIGKILL")}catch{}try{await p("tmux",["-L",d,"kill-session","-t",e],{timeout:5e3})}catch{}for(let t=0;t<3;t++){if(!await y(e))return void c.debug(`killSession done (SIGKILL): ${e}`);await w(200)}c.warn(`tmux session still alive after kill: ${e}`)},y=async e=>{try{return await p("tmux",["-L",d,"has-session","-t",e],{timeout:5e3}),!0}catch{return!1}},x=async()=>{},S=async()=>{await x();let e=await h();e.length>0&&e.forEach(e=>{c.debug(`existing tmux session found: ${e}`)})},_=async e=>{if(u)try{return await r.default.readlink(`/proc/${e}/cwd`)}catch{return null}try{let{stdout:t}=await p("lsof",["-a","-p",String(e),"-d","cwd","-Fn"],{timeout:5e3}),r=t.split("\n").find(e=>e.startsWith("n/"));return r?r.slice(1):null}catch{return null}},L=async e=>{let t=await v(e);if(t){let e=await _(t);if(e)return e}try{let{stdout:t}=await p("tmux",["-L",d,"display-message","-p","-t",e,"#{pane_current_path}"],{timeout:5e3});return t.trim()||null}catch{return null}},v=async e=>{try{let{stdout:t}=await p("tmux",["-L",d,"display-message","-p","-t",e,"#{pane_pid}"],{timeout:5e3}),r=parseInt(t.trim(),10);return Number.isNaN(r)?null:r}catch{return null}},E=async()=>{try{await p("tmux",["-L",d,"source-file",m],{timeout:5e3})}catch{}},b=async e=>{try{let{stdout:t}=await p("tmux",["-L",d,"list-panes","-t",e,"-F","#{pane_current_command}"],{timeout:5e3});return t.trim()||null}catch{return null}},P=async()=>{try{let{stdout:e}=await p("tmux",["-L",d,"list-panes","-a","-F","#{session_name} #{pane_current_command} #{pane_current_path} #{pane_pid} #{window_activity}"],{timeout:5e3}),t=new Map;for(let r of e.trim().split("\n")){if(!r)continue;let[e,a,n,i,s]=r.split(" ");if(e&&a){let r=parseInt(i,10),l=parseInt(s,10);t.set(e,{command:a,path:n||"",pid:Number.isNaN(r)?0:r,windowActivity:Number.isNaN(l)?0:l})}}return t}catch{return new Map}},I=new Set(["bash","zsh","fish","sh","dash"]),N=async e=>{let t=await b(e);return t?{isSafe:I.has(t),processName:t}:{isSafe:!1,processName:"unknown"}},$=async e=>{try{let{stdout:t}=await p("tmux",["-L",d,"display-message","-p","-t",e,"#{pane_title}"],{timeout:5e3});return t.trim()||null}catch{return null}},R=async e=>{await p("tmux",["-L",d,"copy-mode","-q","-t",e],{timeout:5e3}).catch(()=>{})},T=async(e,t)=>{await R(e),await p("tmux",["-L",d,"send-keys","-t",e,t,"Enter"],{timeout:5e3})},M=async(e,t)=>{await R(e),await p("tmux",["-L",d,"send-keys","-t",e,t],{timeout:5e3})},C=async(e,t)=>{await R(e),await p("tmux",["-L",d,"send-keys","-t",e,"-l",`\x1b[200~${t}\x1b[201~`],{timeout:5e3}),await p("tmux",["-L",d,"send-keys","-t",e,"Enter"],{timeout:5e3}),await new Promise(e=>setTimeout(e,600)),await p("tmux",["-L",d,"send-keys","-t",e,"Enter"],{timeout:5e3})},A=async e=>{try{let{stdout:t}=await p("tmux",["-L",d,"display-message","-p","-t",e,"#{pane_current_path} #{pane_current_command} #{pane_pid} #{pane_width} #{pane_height} #{session_created}"],{timeout:5e3}),[r,a,n,i,s,l]=t.trim().split(" ");return{cwd:r||null,command:a||null,pid:n&&parseInt(n,10)||null,width:i&&parseInt(i,10)||null,height:s&&parseInt(s,10)||null,sessionCreated:l&&parseInt(l,10)||null}}catch{return{cwd:null,command:null,pid:null,width:null,height:null,sessionCreated:null}}},k=new Set(["node","python","python3","ruby","perl","deno","bun"]),q=async()=>{try{await p("tmux",["-L",d,"kill-server"],{timeout:5e3}),c.debug("tmux server killed")}catch{}},O=async e=>{try{let{stdout:t}=await p("tmux",["-L",d,"capture-pane","-p","-t",e],{timeout:5e3});return t}catch{return null}},j=async(e,t)=>{try{let{stdout:r}=await p("tmux",["-L",d,"capture-pane","-p","-S",`-${t}`,"-t",e],{timeout:5e3});return r}catch{return null}},D=async e=>{if(u){let t=[];return await Promise.all(e.map(async e=>{try{for(let a of(await r.default.readFile(`/proc/${e}/task/${e}/children`,"utf-8")).trim().split(/\s+/)){let e=parseInt(a,10);Number.isNaN(e)||t.push(e)}}catch{}})),t}try{let{stdout:t}=await p("pgrep",["-P",e.join(",")],{timeout:5e3});return t.trim().split("\n").map(e=>parseInt(e,10)).filter(e=>!Number.isNaN(e))}catch{return[]}},H=async e=>{let t=[],r=[e];for(;r.length>0;){let e=await D(r);if(0===e.length)break;t.push(...e),r=e}return t},U=async e=>{try{let t=new Set(e),{stdout:r}=await p("ss",["-tlnp"],{timeout:5e3}),a=new Set;for(let e of r.split("\n")){let r=e.match(/pid=(\d+)/g);if(!r||!r.some(e=>t.has(parseInt(e.replace("pid=",""),10))))continue;let n=e.match(/:(\d+)\s/);n&&a.add(parseInt(n[1],10))}return[...a].sort((e,t)=>e-t)}catch{return[]}},G=async e=>{let t=await H(e);if(0===t.length)return[];if(u)return U(t);try{let{stdout:e}=await p("lsof",["-a","-p",t.join(","),"-i","-sTCP:LISTEN","-P","-Fn"],{timeout:5e3}),r=new Set;for(let t of e.split("\n"))if(t.startsWith("n")){let e=t.match(/:(\d+)$/);e&&r.add(parseInt(e[1],10))}return[...r].sort((e,t)=>e-t)}catch{return[]}},F=async e=>{let t=await v(e);if(!t)return null;try{let{stdout:e}=await p("pgrep",["-n","-P",String(t)],{timeout:5e3}),r=e.trim();if(!r)return null;let{stdout:a}=await p("ps",["-o","args=","-p",r],{timeout:5e3}),i=a.trim();if(!i)return null;let s=i.split(/\s+/);if(0===s.length)return i;if(s[0]=n.default.basename(s[0]),k.has(s[0])&&s.length>1){let e=n.default.basename(s[1]).replace(/\.(c|m)?js$/,"");s.splice(0,2,e)}return s.join(" ")}catch{return null}};e.s(["SAFE_SHELLS",0,I,"applyConfig",0,E,"capturePaneContent",0,O,"capturePaneContentWithHistory",0,j,"checkTerminalProcess",0,N,"createSession",0,f,"defaultSessionName",0,()=>`pt-${(0,i.nanoid)(6)}-${(0,i.nanoid)(6)}-${(0,i.nanoid)(6)}`,"exitCopyMode",0,R,"getAllPanesInfo",0,P,"getLastCommand",0,F,"getListeningPorts",0,G,"getPaneCurrentCommand",0,b,"getPaneDetailInfo",0,A,"getPaneTitle",0,$,"getSessionCwd",0,L,"getSessionPanePid",0,v,"hasSession",0,y,"killServer",0,q,"killSession",0,g,"listSessions",0,h,"scanSessions",0,S,"sendBracketedPaste",0,C,"sendKeys",0,T,"sendRawKeys",0,M,"workspaceSessionName",0,(e,t,r)=>`pt-${e}-${t}-${r}`],459015)},422392,e=>{"use strict";let t=new Map,r=6e4;e.s(["getCached",0,e=>{let r=t.get(e);return r?Date.now()>r.expiresAt?(t.delete(e),null):r.data:null},"setCached",0,(e,a,n=r)=>{t.set(e,{data:a,expiresAt:Date.now()+n})}])},740670,e=>{"use strict";var t=e.i(926747),r=e.i(190406),a=e.i(244898),n=e.i(262950),i=e.i(233405),s=e.i(224361),l=e.i(459015),o=e.i(422392);let u=(0,s.promisify)(i.execFile),c=async e=>{let t=await (0,l.getSessionCwd)(e);if(!t)throw Error("tmux-session-not-found");let r=`git-branch:${t}`,a=(0,o.getCached)(r);if(null!==a)return a;try{let{stdout:e}=await u("git",["-C",t,"rev-parse","--abbrev-ref","HEAD"],{timeout:5e3}),a=e.trim()||null;return(0,o.setCached)(r,a,15e3),a}catch(e){if(128===e.code)return(0,o.setCached)(r,null,15e3),null;throw e}},p=(0,e.i(25146).createLogger)("git"),d=async(e,t)=>{if("GET"!==e.method)return t.setHeader("Allow","GET"),t.status(405).json({error:"Method not allowed"});let r=e.query.tmuxSession;if(!r)return t.status(400).json({error:"missing-param",message:"tmuxSession parameter required"});try{let e=await c(r);return t.status(200).json({branch:e})}catch(r){let e=r instanceof Error?r.message:String(r);if("tmux-session-not-found"===e)return t.status(404).json({error:"tmux-session-not-found"});return p.error(`branch query failed: ${e}`),t.status(500).json({error:"git-error"})}};e.s(["default",0,d],612542);var m=e.i(612542),h=e.i(7031),f=e.i(181927),w=e.i(846432);let g=(0,n.hoist)(m,"default"),y=(0,n.hoist)(m,"config"),x=new a.PagesAPIRouteModule({definition:{kind:r.RouteKind.PAGES_API,page:"/api/git/branch",pathname:"/api/git/branch",bundlePath:"",filename:""},userland:m,distDir:".next",relativeProjectDir:""});async function S(e,r,a){a.requestMeta&&(0,w.setRequestMeta)(e,a.requestMeta),x.isDev&&(0,w.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let n="/api/git/branch";n=n.replace(/\/index$/,"")||"/";let i=await x.prepare(e,r,{srcPage:n});if(!i){r.statusCode=400,r.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve());return}let{query:s,params:l,prerenderManifest:o,routerServerContext:u}=i;try{let t,a=e.method||"GET",i=(0,h.getTracer)(),c=i.getActiveScopeSpan(),p=!!(null==u?void 0:u.isWrappedByNextServer),d=x.instrumentationOnRequestError.bind(x),m=async c=>x.render(e,r,{query:{...s,...l},params:l,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:o.preview,propagateError:!1,dev:x.isDev,page:"/api/git/branch",internalRevalidate:null==u?void 0:u.revalidate,onError:(...t)=>d(e,...t)}).finally(()=>{if(!c)return;c.setAttributes({"http.status_code":r.statusCode,"next.rsc":!1});let e=i.getRootSpanAttributes();if(!e)return;if(e.get("next.span_type")!==f.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${e.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let s=e.get("next.route");if(s){let e=`${a} ${s}`;c.setAttributes({"next.route":s,"http.route":s,"next.span_name":e}),c.updateName(e),t&&t!==c&&(t.setAttribute("http.route",s),t.updateName(e))}else c.updateName(`${a} ${n}`)});p&&c?await m(c):(t=i.getActiveScopeSpan(),await i.withPropagatedContext(e.headers,()=>i.trace(f.BaseServerSpan.handleRequest,{spanName:`${a} ${n}`,kind:h.SpanKind.SERVER,attributes:{"http.method":a,"http.target":e.url}},m),void 0,!p))}catch(e){if(x.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,y,"default",0,g,"handler",0,S],740670)}];
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=%5Broot-of-the-server%5D__12nr~pb._.js.map
|