purplemux 0.1.17 → 0.1.19
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 +70 -72
- 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]__0fi~pyu._.js → [root-of-the-server]__0-ptdqu._.js} +2 -2
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0der504._.js → [root-of-the-server]__0.784vy._.js} +2 -2
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0.ci6xk._.js → [root-of-the-server]__0.lni9v._.js} +2 -2
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0001gmm._.js +15 -0
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0wvse.i._.js → [root-of-the-server]__004og4w._.js} +2 -2
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0q8vz0w._.js → [root-of-the-server]__0bhgbyi._.js} +2 -2
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0eqgg0e._.js → [root-of-the-server]__0iqf2xr._.js} +14 -2
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__00.o36.._.js → [root-of-the-server]__0kszkmt._.js} +2 -2
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0mm5n3z._.js +15 -0
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0rn27mp._.js → [root-of-the-server]__0n.b1bb._.js} +2 -2
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__047h5zj._.js → [root-of-the-server]__0n26.bn._.js} +2 -2
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0f4eb0-._.js → [root-of-the-server]__0n43wjx._.js} +2 -2
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__12vs-9c._.js → [root-of-the-server]__0o3y7mk._.js} +2 -2
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0o4dvc-._.js +1 -1
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0hr115i._.js → [root-of-the-server]__0~hbxss._.js} +2 -2
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0ccgn_3._.js → [root-of-the-server]__11b3od9._.js} +2 -2
- package/.next/standalone/.next/server/chunks/{[root-of-the-server]__0aboezg._.js → [root-of-the-server]__11mo3f-._.js} +2 -2
- package/.next/standalone/.next/server/chunks/src_lib_status-manager_ts_003hlhy._.js +3 -0
- package/.next/standalone/.next/server/chunks/src_lib_workspace-store_ts_0vqt073._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_03axaof._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_07jud1p._.js +14 -14
- package/.next/standalone/.next/server/chunks/ssr/_0camkxl._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{_0_a1yaa._.js → _0g5g~zy._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_0i209pm._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_0pp3e5j._.js +14 -14
- package/.next/standalone/.next/server/chunks/ssr/_0sfa_96._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_0x2-u_i._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_components_features_terminal_terminal-page_tsx_0o~2bsa._.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_lib_workspace-store_ts_00x-rec._.js +1 -1
- package/.next/standalone/.next/server/middleware-build-manifest.js +70 -72
- package/.next/standalone/.next/server/pages/_app/build-manifest.json +5 -5
- package/.next/standalone/.next/server/pages/_app/client-build-manifest.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 +3 -3
- package/.next/standalone/.next/server/pages/api/layout/pane/[paneId]/tabs/[tabId].js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/layout/pane/[paneId]/tabs/order.js +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 +5 -5
- 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/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 +5 -5
- package/.next/standalone/.next/server/pages/api/status/hook.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/status/statusline/pages-manifest.json +3 -0
- package/.next/standalone/.next/server/pages/api/status/statusline.js +5 -0
- package/.next/standalone/.next/server/pages/api/status/statusline.js.map +5 -0
- package/.next/standalone/.next/server/pages/api/status/statusline.js.nft.json +1 -0
- 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/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 +5 -5
- 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 -13
- package/.next/standalone/.next/server/pages/index/client-build-manifest.json +1 -1
- package/.next/standalone/.next/server/pages/index/react-loadable-manifest.json +9 -9
- 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 +8 -7
- package/.next/standalone/.next/server/pages/login/client-build-manifest.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 +11 -12
- package/.next/standalone/.next/server/pages/reports/client-build-manifest.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 +12 -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 +12 -12
- package/.next/standalone/.next/server/pages/tools-required/build-manifest.json +8 -7
- package/.next/standalone/.next/server/pages/tools-required/client-build-manifest.json +1 -1
- package/.next/standalone/.next/server/pages/tools-required.js +1 -1
- 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 +11 -12
- package/.next/standalone/.next/server/pages/webview/client-build-manifest.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/{9sQS-T1N6dQRRCfQ5dv7l → 3yk6mm84D5JkrtWQ0xjJ2}/_buildManifest.js +7 -6
- package/.next/standalone/.next/static/chunks/0-ojk2dwp0dzz.js +1 -0
- package/.next/standalone/.next/static/chunks/{1622t59.xl3hg.js → 00panvl0t30r0.js} +1 -1
- package/.next/standalone/.next/static/chunks/015f_8grkcroo.js +1 -0
- package/.next/standalone/.next/static/chunks/{0qtk3r.4beszd.js → 015y_xb2zavzm.js} +11 -12
- package/.next/standalone/.next/static/chunks/01ywqysr6im5~.js +5 -0
- package/.next/standalone/.next/static/chunks/0331gs5dsjhca.js +1 -0
- package/.next/standalone/.next/static/chunks/046epgod.488_.js +1 -0
- package/.next/standalone/.next/static/chunks/{04_gnka.lemzz.js → 04rq_eu94784o.js} +12 -13
- package/.next/standalone/.next/static/chunks/06q1kndoffvtq.js +1 -0
- package/.next/standalone/.next/static/chunks/06~iddszzgciv.js +1 -0
- package/.next/standalone/.next/static/chunks/{0oziwy-vdu0f~.js → 08qv53x06b2y2.js} +5 -5
- package/.next/standalone/.next/static/chunks/09ntfl7b8vh1y.js +1 -0
- package/.next/standalone/.next/static/chunks/0celh22a.~-u6.js +1 -0
- package/.next/standalone/.next/static/chunks/0d581v~-s40ha.js +1 -0
- package/.next/standalone/.next/static/chunks/0dp178b-0_ltl.js +1 -0
- package/.next/standalone/.next/static/chunks/0etr6ttkoztjx.js +1 -0
- package/.next/standalone/.next/static/chunks/0eu3vjne9jz_~.js +1 -0
- package/.next/standalone/.next/static/chunks/0f4xf8w_wwlb5.js +5 -0
- package/.next/standalone/.next/static/chunks/0g4bo9.cx7l5~.js +5 -0
- package/.next/standalone/.next/static/chunks/0ld-oc3qt3ev4.js +5 -0
- package/.next/standalone/.next/static/chunks/0oj36.r5qgu_7.js +1 -0
- package/.next/standalone/.next/static/chunks/{12p86cqbuh4nj.js → 0pxbg4s8a4y54.js} +14 -14
- package/.next/standalone/.next/static/chunks/0tn20mwenf_vn.js +5 -0
- package/.next/standalone/.next/static/chunks/0tvgob4j4rtyi.js +1 -0
- package/.next/standalone/.next/static/chunks/0uxdoj623xeor.js +1 -0
- package/.next/standalone/.next/static/chunks/0vmo-vqynf6yq.js +1 -0
- package/.next/standalone/.next/static/chunks/{0minecbyq81wq.js → 0xrco.m14b0i2.js} +12 -13
- package/.next/standalone/.next/static/chunks/{0w8wkbxa.u_pi.js → 0z2vh1ou5phyj.js} +11 -12
- package/.next/standalone/.next/static/chunks/10j-5roe910.7.js +1 -0
- package/.next/standalone/.next/static/chunks/11o~gvctqri3d.js +1 -0
- package/.next/standalone/.next/static/chunks/{01ko1azbrv5kj.js → 11tnyk0iystp1.js} +14 -14
- package/.next/standalone/.next/static/chunks/12hw3dko5qg-s.js +1 -0
- package/.next/standalone/.next/static/chunks/{0c9gde-yuo26q.js → 132czbqvfpa6r.js} +8 -7
- package/.next/standalone/.next/static/chunks/13xp_-k99aus8.js +1 -0
- package/.next/standalone/.next/static/chunks/{0k_nltnm_hxkh.js → 15f5v7xutrt_..js} +8 -7
- package/.next/standalone/.next/static/chunks/16azvxd~nqzvy.js +1 -0
- package/.next/standalone/.next/static/chunks/17-42wnt48g_o.js +1 -0
- package/.next/standalone/.next/static/chunks/17bn35muvbncj.css +1 -0
- package/.next/standalone/.next/static/chunks/turbopack-00me.vr_ar1a..js +1 -0
- package/.next/standalone/.next/static/chunks/{turbopack-0-bxg2d3m993v.js → turbopack-0e9wk1g9pwl.7.js} +1 -1
- package/.next/standalone/.next/static/chunks/turbopack-0ofhc3rzeoq~w.js +1 -0
- package/.next/standalone/.next/static/chunks/turbopack-0sn9clhdrtc32.js +1 -0
- package/.next/standalone/.next/static/chunks/turbopack-0y3_6.0pvb5m2.js +1 -0
- package/.next/standalone/.next/static/chunks/{turbopack-0fxquogjhy86o.js → turbopack-105ghhkm8b7vw.js} +1 -1
- package/.next/standalone/.next/static/chunks/turbopack-14kc8b12b.kz-.js +1 -0
- package/.next/standalone/package.json +2 -1
- package/.next/standalone/server.js +1 -1
- package/.next/standalone/src/config/tmux.conf +22 -0
- package/dist/server.js +78 -119
- package/package.json +2 -1
- package/src/config/tmux.conf +22 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0oroz_c._.js +0 -30
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0sus.46._.js +0 -42
- package/.next/standalone/.next/server/chunks/src_lib_0dloxl0._.js +0 -61
- package/.next/standalone/.next/server/chunks/src_lib_0k3pcvq._.js +0 -61
- package/.next/standalone/.next/static/chunks/0-.bjg02rlusb.js +0 -1
- package/.next/standalone/.next/static/chunks/0.65n77uprskt.js +0 -1
- package/.next/standalone/.next/static/chunks/0.wij9w6vcwhg.js +0 -1
- package/.next/standalone/.next/static/chunks/00x-ygjkfbgnz.js +0 -1
- package/.next/standalone/.next/static/chunks/03pj5vbx8tt6r.js +0 -1
- package/.next/standalone/.next/static/chunks/068ekp47esvhq.js +0 -5
- package/.next/standalone/.next/static/chunks/06wc2umsaus4g.js +0 -1
- package/.next/standalone/.next/static/chunks/07_03q7-x8r9_.js +0 -1
- package/.next/standalone/.next/static/chunks/08gm7yw4lvhcp.js +0 -5
- package/.next/standalone/.next/static/chunks/08x8a4eswq64z.css +0 -1
- package/.next/standalone/.next/static/chunks/0ay.h74rl2t2c.js +0 -1
- package/.next/standalone/.next/static/chunks/0cw4g.u_994_o.js +0 -1
- package/.next/standalone/.next/static/chunks/0d7et_73ufx.t.js +0 -1
- package/.next/standalone/.next/static/chunks/0ds79k_04k7_v.js +0 -1
- package/.next/standalone/.next/static/chunks/0ipghjeq.1yru.js +0 -1
- package/.next/standalone/.next/static/chunks/0kf8xkvr3218u.js +0 -1
- package/.next/standalone/.next/static/chunks/0kv4vcveacgn2.js +0 -1
- package/.next/standalone/.next/static/chunks/0n8c-7mx87.qs.js +0 -5
- package/.next/standalone/.next/static/chunks/0o7vp7rng47dj.js +0 -1
- package/.next/standalone/.next/static/chunks/0pl9csop3j.pi.js +0 -1
- package/.next/standalone/.next/static/chunks/0q_k2q4jnitzb.js +0 -1
- package/.next/standalone/.next/static/chunks/0vqgpok3.-wjn.js +0 -1
- package/.next/standalone/.next/static/chunks/0x-x4o1fkpw-g.js +0 -5
- package/.next/standalone/.next/static/chunks/0xh6vx3lhw1an.js +0 -5
- package/.next/standalone/.next/static/chunks/0xlk42gw40hbr.js +0 -1
- package/.next/standalone/.next/static/chunks/111wo.gkd383u.js +0 -1
- package/.next/standalone/.next/static/chunks/12b241h6qp3ve.js +0 -1
- package/.next/standalone/.next/static/chunks/12jwdr.-.hy1i.js +0 -1
- package/.next/standalone/.next/static/chunks/15d5efa-41siq.js +0 -1
- package/.next/standalone/.next/static/chunks/turbopack-0.dkht~dwfayp.js +0 -1
- package/.next/standalone/.next/static/chunks/turbopack-04h~wvgsyz27p.js +0 -1
- package/.next/standalone/.next/static/chunks/turbopack-0lzon3xbib3ww.js +0 -1
- package/.next/standalone/.next/static/chunks/turbopack-0q6~qdu7y-idl.js +0 -1
- package/.next/standalone/.next/static/chunks/turbopack-13xx2s-bjf8-7.js +0 -1
- /package/.next/standalone/.next/static/{9sQS-T1N6dQRRCfQ5dv7l → 3yk6mm84D5JkrtWQ0xjJ2}/_clientMiddlewareManifest.js +0 -0
- /package/.next/standalone/.next/static/{9sQS-T1N6dQRRCfQ5dv7l → 3yk6mm84D5JkrtWQ0xjJ2}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
3yk6mm84D5JkrtWQ0xjJ2
|
|
@@ -1,37 +1,36 @@
|
|
|
1
1
|
{
|
|
2
2
|
"pages": {
|
|
3
3
|
"/": [
|
|
4
|
-
"static/chunks/
|
|
4
|
+
"static/chunks/0d581v~-s40ha.js",
|
|
5
5
|
"static/chunks/0y1iobvr7xv~m.js",
|
|
6
|
-
"static/chunks/
|
|
7
|
-
"static/chunks/
|
|
8
|
-
"static/chunks/
|
|
9
|
-
"static/chunks/
|
|
6
|
+
"static/chunks/17-42wnt48g_o.js",
|
|
7
|
+
"static/chunks/12hw3dko5qg-s.js",
|
|
8
|
+
"static/chunks/0bw-pbfc7gjj-.js",
|
|
9
|
+
"static/chunks/0ml5~2ty-rbv_.js",
|
|
10
10
|
"static/chunks/0-sxrfxgcu1ce.js",
|
|
11
11
|
"static/chunks/15aj3kd.p7zw6.js",
|
|
12
|
-
"static/chunks/
|
|
13
|
-
"static/chunks/03pj5vbx8tt6r.js",
|
|
14
|
-
"static/chunks/0ml5~2ty-rbv_.js",
|
|
15
|
-
"static/chunks/111wo.gkd383u.js",
|
|
16
|
-
"static/chunks/0hrc-naqx2l7..js",
|
|
12
|
+
"static/chunks/06~iddszzgciv.js",
|
|
17
13
|
"static/chunks/00yfl7agnve...js",
|
|
14
|
+
"static/chunks/0yi.kp2rt4-nc.js",
|
|
15
|
+
"static/chunks/13xp_-k99aus8.js",
|
|
16
|
+
"static/chunks/0hrc-naqx2l7..js",
|
|
18
17
|
"static/chunks/0c3gfuc02qr00.js",
|
|
18
|
+
"static/chunks/0abvchxh9j._1.js",
|
|
19
19
|
"static/chunks/0wlz6--vu7adu.js",
|
|
20
|
-
"static/chunks/
|
|
21
|
-
"static/chunks/
|
|
22
|
-
"static/chunks/turbopack-0q6~qdu7y-idl.js"
|
|
20
|
+
"static/chunks/14_wa..vd6~2y.js",
|
|
21
|
+
"static/chunks/turbopack-0y3_6.0pvb5m2.js"
|
|
23
22
|
],
|
|
24
23
|
"/_app": [
|
|
25
24
|
"static/chunks/0uxhf0if8bv~8.js",
|
|
26
25
|
"static/chunks/159m0lekrl6ka.js",
|
|
27
|
-
"static/chunks/
|
|
26
|
+
"static/chunks/17-42wnt48g_o.js",
|
|
28
27
|
"static/chunks/00yfl7agnve...js",
|
|
29
|
-
"static/chunks/0yi.kp2rt4-nc.js",
|
|
30
|
-
"static/chunks/0ds79k_04k7_v.js",
|
|
31
28
|
"static/chunks/14_wa..vd6~2y.js",
|
|
32
|
-
"static/chunks/
|
|
29
|
+
"static/chunks/0yi.kp2rt4-nc.js",
|
|
30
|
+
"static/chunks/10j-5roe910.7.js",
|
|
31
|
+
"static/chunks/17bn35muvbncj.css",
|
|
33
32
|
"static/chunks/0z3gpm0o.mwwy.css",
|
|
34
|
-
"static/chunks/turbopack-
|
|
33
|
+
"static/chunks/turbopack-105ghhkm8b7vw.js"
|
|
35
34
|
],
|
|
36
35
|
"/_error": [
|
|
37
36
|
"static/chunks/0~o730huopa91.js",
|
|
@@ -40,40 +39,40 @@
|
|
|
40
39
|
"static/chunks/turbopack-0vqdj~g~ggw3x.js"
|
|
41
40
|
],
|
|
42
41
|
"/login": [
|
|
42
|
+
"static/chunks/17-42wnt48g_o.js",
|
|
43
43
|
"static/chunks/15aj3kd.p7zw6.js",
|
|
44
|
-
"static/chunks/
|
|
44
|
+
"static/chunks/0w6vr6.gl_5lb.js",
|
|
45
45
|
"static/chunks/0spethd2aw0eb.js",
|
|
46
|
-
"static/chunks/
|
|
47
|
-
"static/chunks/
|
|
48
|
-
"static/chunks/12p86cqbuh4nj.js",
|
|
46
|
+
"static/chunks/14_wa..vd6~2y.js",
|
|
47
|
+
"static/chunks/0uxdoj623xeor.js",
|
|
49
48
|
"static/chunks/0zupfedd~y64z.js",
|
|
50
|
-
"static/chunks/
|
|
49
|
+
"static/chunks/0pxbg4s8a4y54.js",
|
|
51
50
|
"static/chunks/0yi.kp2rt4-nc.js",
|
|
51
|
+
"static/chunks/00yfl7agnve...js",
|
|
52
52
|
"static/chunks/0xas4ca5n6mzi.js",
|
|
53
|
-
"static/chunks/
|
|
54
|
-
"static/chunks/turbopack-
|
|
53
|
+
"static/chunks/0pb15t~lqcp4y.js",
|
|
54
|
+
"static/chunks/turbopack-0sn9clhdrtc32.js"
|
|
55
55
|
],
|
|
56
56
|
"/reports": [
|
|
57
|
-
"static/chunks/0-.bjg02rlusb.js",
|
|
58
57
|
"static/chunks/0b64-twwftp.b.js",
|
|
59
|
-
"static/chunks/
|
|
60
|
-
"static/chunks/
|
|
58
|
+
"static/chunks/16azvxd~nqzvy.js",
|
|
59
|
+
"static/chunks/015f_8grkcroo.js",
|
|
60
|
+
"static/chunks/14_wa..vd6~2y.js",
|
|
61
61
|
"static/chunks/0c3gfuc02qr00.js",
|
|
62
62
|
"static/chunks/0abvchxh9j._1.js",
|
|
63
63
|
"static/chunks/0bw-pbfc7gjj-.js",
|
|
64
|
-
"static/chunks/
|
|
65
|
-
"static/chunks/
|
|
66
|
-
"static/chunks/
|
|
64
|
+
"static/chunks/15aj3kd.p7zw6.js",
|
|
65
|
+
"static/chunks/0tvgob4j4rtyi.js",
|
|
66
|
+
"static/chunks/13xp_-k99aus8.js",
|
|
67
67
|
"static/chunks/00yfl7agnve...js",
|
|
68
68
|
"static/chunks/0wlz6--vu7adu.js",
|
|
69
|
-
"static/chunks/0yi.kp2rt4-nc.js",
|
|
70
|
-
"static/chunks/031unywm42_xs.js",
|
|
71
69
|
"static/chunks/0hrc-naqx2l7..js",
|
|
72
|
-
"static/chunks/
|
|
73
|
-
"static/chunks/0-sxrfxgcu1ce.js",
|
|
70
|
+
"static/chunks/0yi.kp2rt4-nc.js",
|
|
74
71
|
"static/chunks/0ml5~2ty-rbv_.js",
|
|
75
|
-
"static/chunks/
|
|
76
|
-
"static/chunks/
|
|
72
|
+
"static/chunks/046epgod.488_.js",
|
|
73
|
+
"static/chunks/0-sxrfxgcu1ce.js",
|
|
74
|
+
"static/chunks/031unywm42_xs.js",
|
|
75
|
+
"static/chunks/turbopack-0e9wk1g9pwl.7.js"
|
|
77
76
|
],
|
|
78
77
|
"/reset": [
|
|
79
78
|
"static/chunks/0_sdw~kzk-at0.js",
|
|
@@ -84,65 +83,64 @@
|
|
|
84
83
|
"static/chunks/turbopack-0tl7oxj3760qz.js"
|
|
85
84
|
],
|
|
86
85
|
"/stats": [
|
|
87
|
-
"static/chunks/0cw4g.u_994_o.js",
|
|
88
86
|
"static/chunks/0gx~s_r.d1ncl.js",
|
|
87
|
+
"static/chunks/16azvxd~nqzvy.js",
|
|
88
|
+
"static/chunks/015f_8grkcroo.js",
|
|
89
|
+
"static/chunks/14_wa..vd6~2y.js",
|
|
90
|
+
"static/chunks/0bw-pbfc7gjj-.js",
|
|
91
|
+
"static/chunks/0c3gfuc02qr00.js",
|
|
89
92
|
"static/chunks/0-sxrfxgcu1ce.js",
|
|
90
|
-
"static/chunks/0ay.h74rl2t2c.js",
|
|
91
93
|
"static/chunks/15aj3kd.p7zw6.js",
|
|
94
|
+
"static/chunks/0wlz6--vu7adu.js",
|
|
95
|
+
"static/chunks/0ml5~2ty-rbv_.js",
|
|
92
96
|
"static/chunks/00yfl7agnve...js",
|
|
93
|
-
"static/chunks/0abvchxh9j._1.js",
|
|
94
|
-
"static/chunks/0kv4vcveacgn2.js",
|
|
95
|
-
"static/chunks/0o7vp7rng47dj.js",
|
|
96
|
-
"static/chunks/0c3gfuc02qr00.js",
|
|
97
|
-
"static/chunks/111wo.gkd383u.js",
|
|
98
97
|
"static/chunks/0hrc-naqx2l7..js",
|
|
98
|
+
"static/chunks/13xp_-k99aus8.js",
|
|
99
|
+
"static/chunks/0etr6ttkoztjx.js",
|
|
100
|
+
"static/chunks/0abvchxh9j._1.js",
|
|
99
101
|
"static/chunks/0yi.kp2rt4-nc.js",
|
|
100
|
-
"static/chunks/
|
|
101
|
-
"static/chunks/
|
|
102
|
-
"static/chunks/0wlz6--vu7adu.js",
|
|
103
|
-
"static/chunks/14_wa..vd6~2y.js",
|
|
104
|
-
"static/chunks/0bw-pbfc7gjj-.js",
|
|
105
|
-
"static/chunks/turbopack-0-bxg2d3m993v.js"
|
|
102
|
+
"static/chunks/0vmo-vqynf6yq.js",
|
|
103
|
+
"static/chunks/turbopack-14kc8b12b.kz-.js"
|
|
106
104
|
],
|
|
107
105
|
"/tools-required": [
|
|
108
|
-
"static/chunks/
|
|
109
|
-
"static/chunks/15aj3kd.p7zw6.js",
|
|
110
|
-
"static/chunks/0_pxg-qxp1ay6.js",
|
|
106
|
+
"static/chunks/0dp178b-0_ltl.js",
|
|
111
107
|
"static/chunks/14_wa..vd6~2y.js",
|
|
112
|
-
"static/chunks/
|
|
113
|
-
"static/chunks/
|
|
114
|
-
"static/chunks/11wdicoufd516.js",
|
|
108
|
+
"static/chunks/0_pxg-qxp1ay6.js",
|
|
109
|
+
"static/chunks/15aj3kd.p7zw6.js",
|
|
115
110
|
"static/chunks/00yfl7agnve...js",
|
|
116
|
-
"static/chunks/
|
|
111
|
+
"static/chunks/11wdicoufd516.js",
|
|
112
|
+
"static/chunks/0yi.kp2rt4-nc.js",
|
|
113
|
+
"static/chunks/0pxbg4s8a4y54.js",
|
|
114
|
+
"static/chunks/0eu3vjne9jz_~.js",
|
|
115
|
+
"static/chunks/turbopack-00me.vr_ar1a..js"
|
|
117
116
|
],
|
|
118
117
|
"/webview": [
|
|
119
|
-
"static/chunks/
|
|
118
|
+
"static/chunks/06q1kndoffvtq.js",
|
|
120
119
|
"static/chunks/0fungak7h7t_u.js",
|
|
121
|
-
"static/chunks/
|
|
122
|
-
"static/chunks/
|
|
123
|
-
"static/chunks/
|
|
124
|
-
"static/chunks/
|
|
120
|
+
"static/chunks/015f_8grkcroo.js",
|
|
121
|
+
"static/chunks/16azvxd~nqzvy.js",
|
|
122
|
+
"static/chunks/0wlz6--vu7adu.js",
|
|
123
|
+
"static/chunks/0ml5~2ty-rbv_.js",
|
|
125
124
|
"static/chunks/0-sxrfxgcu1ce.js",
|
|
126
125
|
"static/chunks/14_wa..vd6~2y.js",
|
|
127
|
-
"static/chunks/
|
|
128
|
-
"static/chunks/0wlz6--vu7adu.js",
|
|
126
|
+
"static/chunks/0bw-pbfc7gjj-.js",
|
|
129
127
|
"static/chunks/00yfl7agnve...js",
|
|
130
|
-
"static/chunks/0yi.kp2rt4-nc.js",
|
|
131
|
-
"static/chunks/111wo.gkd383u.js",
|
|
132
128
|
"static/chunks/0hrc-naqx2l7..js",
|
|
129
|
+
"static/chunks/0yi.kp2rt4-nc.js",
|
|
130
|
+
"static/chunks/06~iddszzgciv.js",
|
|
131
|
+
"static/chunks/13xp_-k99aus8.js",
|
|
132
|
+
"static/chunks/0c3gfuc02qr00.js",
|
|
133
133
|
"static/chunks/0abvchxh9j._1.js",
|
|
134
|
-
"static/chunks/0ml5~2ty-rbv_.js",
|
|
135
134
|
"static/chunks/15aj3kd.p7zw6.js",
|
|
136
|
-
"static/chunks/
|
|
137
|
-
"static/chunks/turbopack-13xx2s-bjf8-7.js"
|
|
135
|
+
"static/chunks/turbopack-0ofhc3rzeoq~w.js"
|
|
138
136
|
]
|
|
139
137
|
},
|
|
140
138
|
"devFiles": [],
|
|
141
139
|
"polyfillFiles": [],
|
|
142
140
|
"lowPriorityFiles": [
|
|
143
|
-
"static/
|
|
144
|
-
"static/
|
|
145
|
-
"static/
|
|
141
|
+
"static/3yk6mm84D5JkrtWQ0xjJ2/_buildManifest.js",
|
|
142
|
+
"static/3yk6mm84D5JkrtWQ0xjJ2/_ssgManifest.js",
|
|
143
|
+
"static/3yk6mm84D5JkrtWQ0xjJ2/_clientMiddlewareManifest.js"
|
|
146
144
|
],
|
|
147
145
|
"rootMainFiles": []
|
|
148
146
|
}
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
"routes": {},
|
|
4
4
|
"dynamicRoutes": {},
|
|
5
5
|
"preview": {
|
|
6
|
-
"previewModeId": "
|
|
7
|
-
"previewModeSigningKey": "
|
|
8
|
-
"previewModeEncryptionKey": "
|
|
6
|
+
"previewModeId": "f1a8c11221071db64ae733d3d31bbe8f",
|
|
7
|
+
"previewModeSigningKey": "053b91bc5309f6f61e9b5a43150f69e129d79fe3469fd0d6c421d81c9cf6593c",
|
|
8
|
+
"previewModeEncryptionKey": "3c9ffdb99738e0d1c88e4e46c04b1bbc1a1626dac71ae20a10a1b3542477db14"
|
|
9
9
|
},
|
|
10
10
|
"notFoundRoutes": []
|
|
11
11
|
}
|
|
@@ -340,6 +340,12 @@
|
|
|
340
340
|
"routeKeys": {},
|
|
341
341
|
"namedRegex": "^/api/status/hook(?:/)?$"
|
|
342
342
|
},
|
|
343
|
+
{
|
|
344
|
+
"page": "/api/status/statusline",
|
|
345
|
+
"regex": "^/api/status/statusline(?:/)?$",
|
|
346
|
+
"routeKeys": {},
|
|
347
|
+
"namedRegex": "^/api/status/statusline(?:/)?$"
|
|
348
|
+
},
|
|
343
349
|
{
|
|
344
350
|
"page": "/api/system/tmux-sessions",
|
|
345
351
|
"regex": "^/api/system/tmux\\-sessions(?:/)?$",
|
|
@@ -476,31 +482,31 @@
|
|
|
476
482
|
"dataRoutes": [
|
|
477
483
|
{
|
|
478
484
|
"page": "/",
|
|
479
|
-
"dataRouteRegex": "^/_next/data/
|
|
485
|
+
"dataRouteRegex": "^/_next/data/3yk6mm84D5JkrtWQ0xjJ2/index\\.json$"
|
|
480
486
|
},
|
|
481
487
|
{
|
|
482
488
|
"page": "/login",
|
|
483
|
-
"dataRouteRegex": "^/_next/data/
|
|
489
|
+
"dataRouteRegex": "^/_next/data/3yk6mm84D5JkrtWQ0xjJ2/login\\.json$"
|
|
484
490
|
},
|
|
485
491
|
{
|
|
486
492
|
"page": "/reports",
|
|
487
|
-
"dataRouteRegex": "^/_next/data/
|
|
493
|
+
"dataRouteRegex": "^/_next/data/3yk6mm84D5JkrtWQ0xjJ2/reports\\.json$"
|
|
488
494
|
},
|
|
489
495
|
{
|
|
490
496
|
"page": "/reset",
|
|
491
|
-
"dataRouteRegex": "^/_next/data/
|
|
497
|
+
"dataRouteRegex": "^/_next/data/3yk6mm84D5JkrtWQ0xjJ2/reset\\.json$"
|
|
492
498
|
},
|
|
493
499
|
{
|
|
494
500
|
"page": "/stats",
|
|
495
|
-
"dataRouteRegex": "^/_next/data/
|
|
501
|
+
"dataRouteRegex": "^/_next/data/3yk6mm84D5JkrtWQ0xjJ2/stats\\.json$"
|
|
496
502
|
},
|
|
497
503
|
{
|
|
498
504
|
"page": "/tools-required",
|
|
499
|
-
"dataRouteRegex": "^/_next/data/
|
|
505
|
+
"dataRouteRegex": "^/_next/data/3yk6mm84D5JkrtWQ0xjJ2/tools-required\\.json$"
|
|
500
506
|
},
|
|
501
507
|
{
|
|
502
508
|
"page": "/webview",
|
|
503
|
-
"dataRouteRegex": "^/_next/data/
|
|
509
|
+
"dataRouteRegex": "^/_next/data/3yk6mm84D5JkrtWQ0xjJ2/webview\\.json$"
|
|
504
510
|
}
|
|
505
511
|
],
|
|
506
512
|
"i18n": {
|
|
@@ -1,3 +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"))},666680,(e,t,r)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},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"))},25146,e=>{"use strict";var t=e.i(130146),r=e.i(814747),a=e.i(446786);let s=r.default.join(a.default.homedir(),".purplemux","logs"),n=process.env.LOG_LEVEL||"info",i=(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=[n,...Object.values(i)].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(s,"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=i[e]??n,t}])},44014,e=>{"use strict";let t,r;var a=e.i(666680);e.s(["nanoid",0,function(e=21){var s;s=e|=0,!t||t.length<s?(t=Buffer.allocUnsafe(128*s),a.webcrypto.getRandomValues(t),r=0):r+s>t.length&&(a.webcrypto.getRandomValues(t),r=0),r+=s;let n="";for(let a=r-e;a<r;a++)n+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[63&t[a]];return n}],44014)},459015,544538,e=>{"use strict";var t=e.i(233405),r=e.i(924868),a=e.i(224361),s=e.i(814747),n=e.i(44014),i=e.i(25146);process.platform;let l="linux"===process.platform;e.s(["isLinux",0,l],544538);let o=(0,i.createLogger)("terminal"),u=(0,a.promisify)(t.execFile),p="purple",c=s.default.join(process.env.__PMUX_APP_DIR_UNPACKED||process.env.__PMUX_APP_DIR||process.cwd(),"src","config","tmux.conf"),d={...process.env},m=new Set(["AUTH_PASSWORD","NEXTAUTH_SECRET","PORT"]),f=()=>Object.fromEntries(Object.entries(d).filter(([e])=>!e.startsWith("npm_")&&!e.startsWith("NODE_")&&!m.has(e))),h=async()=>{try{let{stdout:e}=await u("tmux",["-L",p,"ls","-F","#{session_name}"],{timeout:5e3});return e.trim().split("\n").map(e=>e.trim()).filter(e=>e.startsWith("pt-"))}catch{return[]}},w=async(e,t,r,a)=>{let s=process.env.SHELL||"/bin/zsh";await u("tmux",["-u","-L",p,"-f",c,"new-session","-d","-s",e,"-x",String(t),"-y",String(r)],{timeout:5e3,env:{...f(),SHELL:s,TERM:"xterm-256color",COLORTERM:"truecolor"},cwd:a||process.env.HOME||"/"}),await b(),o.debug(`tmux session created: ${e} (cols: ${t}, rows: ${r})`)},y=e=>new Promise(t=>setTimeout(t,e)),x=async e=>{if(!await g(e))return;o.debug(`killSession start: ${e}`);let t=await P(e);if(t)try{o.debug(`SIGTERM → process group ${t}: ${e}`),process.kill(-t,"SIGTERM")}catch{}try{await u("tmux",["-L",p,"kill-session","-t",e],{timeout:5e3})}catch{}for(let t=0;t<5;t++){if(!await g(e))return void o.debug(`killSession done (SIGTERM): ${e}`);await y(200)}if(o.warn(`session survived SIGTERM, escalating to SIGKILL: ${e}`),t)try{o.debug(`SIGKILL → process group ${t}: ${e}`),process.kill(-t,"SIGKILL")}catch{}try{await u("tmux",["-L",p,"kill-session","-t",e],{timeout:5e3})}catch{}for(let t=0;t<3;t++){if(!await g(e))return void o.debug(`killSession done (SIGKILL): ${e}`);await y(200)}o.warn(`tmux session still alive after kill: ${e}`)},g=async e=>{try{return await u("tmux",["-L",p,"has-session","-t",e],{timeout:5e3}),!0}catch{return!1}},v=async()=>{},_=async()=>{await v();let e=await h();e.length>0&&e.forEach(e=>{o.debug(`existing tmux session found: ${e}`)})},S=async e=>{if(l)try{return await r.default.readlink(`/proc/${e}/cwd`)}catch{return null}try{let{stdout:t}=await u("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 P(e);if(t){let e=await S(t);if(e)return e}try{let{stdout:t}=await u("tmux",["-L",p,"display-message","-p","-t",e,"#{pane_current_path}"],{timeout:5e3});return t.trim()||null}catch{return null}},P=async e=>{try{let{stdout:t}=await u("tmux",["-L",p,"display-message","-p","-t",e,"#{pane_pid}"],{timeout:5e3}),r=parseInt(t.trim(),10);return Number.isNaN(r)?null:r}catch{return null}},b=async()=>{try{await u("tmux",["-L",p,"source-file",c],{timeout:5e3})}catch{}},E=async e=>{try{let{stdout:t}=await u("tmux",["-L",p,"list-panes","-t",e,"-F","#{pane_current_command}"],{timeout:5e3});return t.trim()||null}catch{return null}},$=async()=>{try{let{stdout:e}=await u("tmux",["-L",p,"list-panes","-a","-F","#{session_name} #{pane_current_command} #{pane_current_path} #{pane_pid} #{window_activity}"],{timeout:5e3}),t=new Map;for(let r of e.trim().split("\n")){if(!r)continue;let[e,a,s,n,i]=r.split(" ");if(e&&a){let r=parseInt(n,10),l=parseInt(i,10);t.set(e,{command:a,path:s||"",pid:Number.isNaN(r)?0:r,windowActivity:Number.isNaN(l)?0:l})}}return t}catch{return new Map}},q=new Set(["bash","zsh","fish","sh","dash"]),R=async e=>{try{let{stdout:t}=await u("tmux",["-L",p,"display-message","-p","-t",e,"#{pane_title}"],{timeout:5e3});return t.trim()||null}catch{return null}},I=async e=>{await u("tmux",["-L",p,"copy-mode","-q","-t",e],{timeout:5e3}).catch(()=>{})},N=async(e,t)=>{await I(e),await u("tmux",["-L",p,"send-keys","-t",e,t,"Enter"],{timeout:5e3})},T=async(e,t)=>{await I(e),await u("tmux",["-L",p,"send-keys","-t",e,t],{timeout:5e3})},k=async(e,t)=>{await I(e),await u("tmux",["-L",p,"send-keys","-t",e,"-l",`\x1b[200~${t}\x1b[201~`],{timeout:5e3}),await u("tmux",["-L",p,"send-keys","-t",e,"Enter"],{timeout:5e3}),await new Promise(e=>setTimeout(e,600)),await u("tmux",["-L",p,"send-keys","-t",e,"Enter"],{timeout:5e3})},M=async e=>{try{let{stdout:t}=await u("tmux",["-L",p,"display-message","-p","-t",e,"#{pane_current_path} #{pane_current_command} #{pane_pid} #{pane_width} #{pane_height} #{session_created}"],{timeout:5e3}),[r,a,s,n,i,l]=t.trim().split(" ");return{cwd:r||null,command:a||null,pid:s&&parseInt(s,10)||null,width:n&&parseInt(n,10)||null,height:i&&parseInt(i,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"]),A=async()=>{try{await u("tmux",["-L",p,"kill-server"],{timeout:5e3}),o.debug("tmux server killed")}catch{}},j=async e=>{try{let{stdout:t}=await u("tmux",["-L",p,"capture-pane","-p","-t",e],{timeout:5e3});return t}catch{return null}},D=async(e,t)=>{try{let{stdout:r}=await u("tmux",["-L",p,"capture-pane","-p","-S",`-${t}`,"-t",e],{timeout:5e3});return r}catch{return null}},G=async e=>{if(l){let t=[];return await Promise.all(e.map(async e=>{try{for(let a of(await r.default.readFile(`/proc/${e}/task/${e}/children`,"utf-8")).trim().split(/\s+/)){let e=parseInt(a,10);Number.isNaN(e)||t.push(e)}}catch{}})),t}try{let{stdout:t}=await u("pgrep",["-P",e.join(",")],{timeout:5e3});return t.trim().split("\n").map(e=>parseInt(e,10)).filter(e=>!Number.isNaN(e))}catch{return[]}},H=async e=>{let t=[],r=[e];for(;r.length>0;){let e=await G(r);if(0===e.length)break;t.push(...e),r=e}return t},O=async e=>{try{let t=new Set(e),{stdout:r}=await u("ss",["-tlnp"],{timeout:5e3}),a=new Set;for(let e of r.split("\n")){let r=e.match(/pid=(\d+)/g);if(!r||!r.some(e=>t.has(parseInt(e.replace("pid=",""),10))))continue;let s=e.match(/:(\d+)\s/);s&&a.add(parseInt(s[1],10))}return[...a].sort((e,t)=>e-t)}catch{return[]}},W=async e=>{let t=await H(e);if(0===t.length)return[];if(l)return O(t);try{let{stdout:e}=await u("lsof",["-a","-p",t.join(","),"-i","-sTCP:LISTEN","-P","-Fn"],{timeout:5e3}),r=new Set;for(let t of e.split("\n"))if(t.startsWith("n")){let e=t.match(/:(\d+)$/);e&&r.add(parseInt(e[1],10))}return[...r].sort((e,t)=>e-t)}catch{return[]}},U=async e=>{let t=await P(e);if(!t)return null;try{let{stdout:e}=await u("pgrep",["-n","-P",String(t)],{timeout:5e3}),r=e.trim();if(!r)return null;let{stdout:a}=await u("ps",["-o","args=","-p",r],{timeout:5e3}),n=a.trim();if(!n)return null;let i=n.split(/\s+/);if(0===i.length)return n;if(i[0]=s.default.basename(i[0]),C.has(i[0])&&i.length>1){let e=s.default.basename(i[1]).replace(/\.(c|m)?js$/,"");i.splice(0,2,e)}return i.join(" ")}catch{return null}};e.s(["SAFE_SHELLS",0,q,"applyConfig",0,b,"capturePaneContent",0,j,"capturePaneContentWithHistory",0,D,"createSession",0,w,"defaultSessionName",0,()=>`pt-${(0,n.nanoid)(6)}-${(0,n.nanoid)(6)}-${(0,n.nanoid)(6)}`,"exitCopyMode",0,I,"getAllPanesInfo",0,$,"getLastCommand",0,U,"getListeningPorts",0,W,"getPaneCurrentCommand",0,E,"getPaneDetailInfo",0,M,"getPaneTitle",0,R,"getSessionCwd",0,L,"getSessionPanePid",0,P,"hasSession",0,g,"killServer",0,A,"killSession",0,x,"listSessions",0,h,"sanitizedEnv",0,f,"scanSessions",0,_,"sendBracketedPaste",0,k,"sendKeys",0,N,"sendRawKeys",0,T,"workspaceSessionName",0,(e,t,r)=>`pt-${e}-${t}-${r}`],459015)},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"))},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),new TextEncoder,new TextDecoder,(0,e.i(25146).createLogger)("terminal"),new TextDecoder;let r=globalThis,a=r.__purplemux_terminal_connections??=new Map;r.__purplemux_terminal_output_ts??=new Map;let s=(e,t,r)=>{for(let s of a.values())if(s.sessionName===e&&!s.cleaned)return void s.pty.resize(t,r)},n=e=>new Promise(t=>setTimeout(t,e)),i=async(e,r,i)=>{let l=(e=>{for(let t of a.values())if(t.sessionName===e&&!t.cleaned)return{cols:t.currentCols,rows:t.currentRows};return null})(e);if(l&&l.cols>50)return(0,t.capturePaneContentWithHistory)(e,50);let o=(e=>{for(let t of a.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(!o)return(0,t.capturePaneContent)(e);try{s(e,r,i),await n(300);let a=await (0,t.capturePaneContent)(e);return s(e,o.cols,o.rows),await n(300),a}finally{(e=>{for(let t of a.values())if(t.sessionName===e&&!t.cleaned){if(!t.capturePaused)return;t.capturePaused=!1;return}})(e)}};e.s(["capturePaneAtWidth",0,i],971780)},8372,e=>{"use strict";var t=e.i(926747),r=e.i(190406),a=e.i(244898),s=e.i(262950),n=e.i(459015),i=e.i(971780);let l=(0,e.i(25146).createLogger)("tmux"),o=/^\s*(?:[❯›>]\s+)?(?:\d+\.\s+)?(.+)$/,u=["Yes,","Yes ","No,","No ","Tell Claude"],p=e=>/^\s+\S/.test(e)||/^\s*[❯›>]/.test(e),c=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,n.hasSession)(r))return t.status(404).json({error:"Session not found"});try{let e=await (0,i.capturePaneAtWidth)(r,120,50);if(!e)return t.status(200).json({options:[]});let a=(e=>{let t=e.split("\n"),r=[],a=!1;for(let e of t){if(!e.trim()||!p(e)){if(a)break;continue}let t=e.match(o);if(!t)continue;let s=t[1].trim();if(a)if(u.some(e=>s.startsWith(e)))r.push(s);else break;else u.some(e=>s.startsWith(e))&&(r.push(s),a=!0)}return r})(e);return t.status(200).json({options:a})}catch(e){return l.error(`plan-options query failed: ${e instanceof Error?e.message:e}`),t.status(500).json({error:"Terminal capture failed"})}};e.s(["default",0,c],875757);var d=e.i(875757),m=e.i(7031),f=e.i(181927),h=e.i(846432);let w=(0,s.hoist)(d,"default"),y=(0,s.hoist)(d,"config"),x=new a.PagesAPIRouteModule({definition:{kind:r.RouteKind.PAGES_API,page:"/api/tmux/plan-options",pathname:"/api/tmux/plan-options",bundlePath:"",filename:""},userland:d,distDir:".next",relativeProjectDir:""});async function g(e,r,a){a.requestMeta&&(0,h.setRequestMeta)(e,a.requestMeta),x.isDev&&(0,h.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let s="/api/tmux/plan-options";s=s.replace(/\/index$/,"")||"/";let n=await x.prepare(e,r,{srcPage:s});if(!n){r.statusCode=400,r.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve());return}let{query:i,params:l,prerenderManifest:o,routerServerContext:u}=n;try{let t,a=e.method||"GET",n=(0,m.getTracer)(),p=n.getActiveScopeSpan(),c=!!(null==u?void 0:u.isWrappedByNextServer),d=x.instrumentationOnRequestError.bind(x),h=async p=>x.render(e,r,{query:{...i,...l},params:l,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:o.preview,propagateError:!1,dev:x.isDev,page:"/api/tmux/plan-options",internalRevalidate:null==u?void 0:u.revalidate,onError:(...t)=>d(e,...t)}).finally(()=>{if(!p)return;p.setAttributes({"http.status_code":r.statusCode,"next.rsc":!1});let e=n.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 i=e.get("next.route");if(i){let e=`${a} ${i}`;p.setAttributes({"next.route":i,"http.route":i,"next.span_name":e}),p.updateName(e),t&&t!==p&&(t.setAttribute("http.route",i),t.updateName(e))}else p.updateName(`${a} ${s}`)});c&&p?await h(p):(t=n.getActiveScopeSpan(),await n.withPropagatedContext(e.headers,()=>n.trace(f.BaseServerSpan.handleRequest,{spanName:`${a} ${s}`,kind:m.SpanKind.SERVER,attributes:{"http.method":a,"http.target":e.url}},h),void 0,!c))}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,w,"handler",0,g],8372)}];
|
|
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"))},666680,(e,t,r)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},224361,(e,t,r)=>{t.exports=e.x("util",()=>require("util"))},233405,(e,t,r)=>{t.exports=e.x("child_process",()=>require("child_process"))},25146,e=>{"use strict";var t=e.i(130146),r=e.i(814747),a=e.i(446786);let s=r.default.join(a.default.homedir(),".purplemux","logs"),n=process.env.LOG_LEVEL||"info",i=(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=[n,...Object.values(i)].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(s,"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=i[e]??n,t}])},44014,e=>{"use strict";let t,r;var a=e.i(666680);e.s(["nanoid",0,function(e=21){var s;s=e|=0,!t||t.length<s?(t=Buffer.allocUnsafe(128*s),a.webcrypto.getRandomValues(t),r=0):r+s>t.length&&(a.webcrypto.getRandomValues(t),r=0),r+=s;let n="";for(let a=r-e;a<r;a++)n+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[63&t[a]];return n}],44014)},459015,544538,e=>{"use strict";var t=e.i(233405),r=e.i(924868),a=e.i(224361),s=e.i(814747),n=e.i(44014),i=e.i(25146);process.platform;let l="linux"===process.platform;e.s(["isLinux",0,l],544538);let o=(0,i.createLogger)("terminal"),u=(0,a.promisify)(t.execFile),p="purple",c=s.default.join(process.env.__PMUX_APP_DIR_UNPACKED||process.env.__PMUX_APP_DIR||process.cwd(),"src","config","tmux.conf"),d={...process.env},m=new Set(["AUTH_PASSWORD","NEXTAUTH_SECRET","PORT"]),f=()=>Object.fromEntries(Object.entries(d).filter(([e])=>!e.startsWith("npm_")&&!e.startsWith("NODE_")&&!m.has(e))),h=async()=>{try{let{stdout:e}=await u("tmux",["-L",p,"ls","-F","#{session_name}"],{timeout:5e3});return e.trim().split("\n").map(e=>e.trim()).filter(e=>e.startsWith("pt-"))}catch{return[]}},w=async(e,t,r,a)=>{let s=process.env.SHELL||"/bin/zsh";await u("tmux",["-u","-L",p,"-f",c,"new-session","-d","-s",e,"-x",String(t),"-y",String(r)],{timeout:5e3,env:{...f(),SHELL:s,TERM:"xterm-256color",COLORTERM:"truecolor"},cwd:a||process.env.HOME||"/"}),await b(),o.debug(`tmux session created: ${e} (cols: ${t}, rows: ${r})`)},y=e=>new Promise(t=>setTimeout(t,e)),x=async e=>{if(!await g(e))return;o.debug(`killSession start: ${e}`);let t=await P(e);if(t)try{o.debug(`SIGTERM → process group ${t}: ${e}`),process.kill(-t,"SIGTERM")}catch{}try{await u("tmux",["-L",p,"kill-session","-t",e],{timeout:5e3})}catch{}for(let t=0;t<5;t++){if(!await g(e))return void o.debug(`killSession done (SIGTERM): ${e}`);await y(200)}if(o.warn(`session survived SIGTERM, escalating to SIGKILL: ${e}`),t)try{o.debug(`SIGKILL → process group ${t}: ${e}`),process.kill(-t,"SIGKILL")}catch{}try{await u("tmux",["-L",p,"kill-session","-t",e],{timeout:5e3})}catch{}for(let t=0;t<3;t++){if(!await g(e))return void o.debug(`killSession done (SIGKILL): ${e}`);await y(200)}o.warn(`tmux session still alive after kill: ${e}`)},g=async e=>{try{return await u("tmux",["-L",p,"has-session","-t",e],{timeout:5e3}),!0}catch{return!1}},v=async()=>{},_=async()=>{await v();let e=await h();e.length>0&&e.forEach(e=>{o.debug(`existing tmux session found: ${e}`)})},S=async e=>{if(l)try{return await r.default.readlink(`/proc/${e}/cwd`)}catch{return null}try{let{stdout:t}=await u("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 P(e);if(t){let e=await S(t);if(e)return e}try{let{stdout:t}=await u("tmux",["-L",p,"display-message","-p","-t",e,"#{pane_current_path}"],{timeout:5e3});return t.trim()||null}catch{return null}},P=async e=>{try{let{stdout:t}=await u("tmux",["-L",p,"display-message","-p","-t",e,"#{pane_pid}"],{timeout:5e3}),r=parseInt(t.trim(),10);return Number.isNaN(r)?null:r}catch{return null}},b=async()=>{try{await u("tmux",["-L",p,"source-file",c],{timeout:5e3})}catch{}},E=async e=>{try{let{stdout:t}=await u("tmux",["-L",p,"list-panes","-t",e,"-F","#{pane_current_command}"],{timeout:5e3});return t.trim()||null}catch{return null}},$=async()=>{try{let{stdout:e}=await u("tmux",["-L",p,"list-panes","-a","-F","#{session_name} #{pane_current_command} #{pane_current_path} #{pane_pid} #{window_activity}"],{timeout:5e3}),t=new Map;for(let r of e.trim().split("\n")){if(!r)continue;let[e,a,s,n,i]=r.split(" ");if(e&&a){let r=parseInt(n,10),l=parseInt(i,10);t.set(e,{command:a,path:s||"",pid:Number.isNaN(r)?0:r,windowActivity:Number.isNaN(l)?0:l})}}return t}catch{return new Map}},q=new Set(["bash","zsh","fish","sh","dash"]),R=async e=>{try{let{stdout:t}=await u("tmux",["-L",p,"display-message","-p","-t",e,"#{pane_title}"],{timeout:5e3});return t.trim()||null}catch{return null}},I=async e=>{await u("tmux",["-L",p,"copy-mode","-q","-t",e],{timeout:5e3}).catch(()=>{})},N=async(e,t)=>{await I(e),await u("tmux",["-L",p,"send-keys","-t",e,t,"Enter"],{timeout:5e3})},T=async(e,t)=>{await I(e),await u("tmux",["-L",p,"send-keys","-t",e,t],{timeout:5e3})},k=async(e,t)=>{await I(e),await u("tmux",["-L",p,"send-keys","-t",e,"-l",`\x1b[200~${t}\x1b[201~`],{timeout:5e3}),await u("tmux",["-L",p,"send-keys","-t",e,"Enter"],{timeout:5e3}),await new Promise(e=>setTimeout(e,600)),await u("tmux",["-L",p,"send-keys","-t",e,"Enter"],{timeout:5e3})},M=async e=>{try{let{stdout:t}=await u("tmux",["-L",p,"display-message","-p","-t",e,"#{pane_current_path} #{pane_current_command} #{pane_pid} #{pane_width} #{pane_height} #{session_created}"],{timeout:5e3}),[r,a,s,n,i,l]=t.trim().split(" ");return{cwd:r||null,command:a||null,pid:s&&parseInt(s,10)||null,width:n&&parseInt(n,10)||null,height:i&&parseInt(i,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"]),A=async()=>{try{await u("tmux",["-L",p,"kill-server"],{timeout:5e3}),o.debug("tmux server killed")}catch{}},j=async e=>{try{let{stdout:t}=await u("tmux",["-L",p,"capture-pane","-p","-t",e],{timeout:5e3});return t}catch{return null}},D=async(e,t)=>{try{let{stdout:r}=await u("tmux",["-L",p,"capture-pane","-p","-S",`-${t}`,"-t",e],{timeout:5e3});return r}catch{return null}},G=async e=>{if(l){let t=[];return await Promise.all(e.map(async e=>{try{for(let a of(await r.default.readFile(`/proc/${e}/task/${e}/children`,"utf-8")).trim().split(/\s+/)){let e=parseInt(a,10);Number.isNaN(e)||t.push(e)}}catch{}})),t}try{let{stdout:t}=await u("pgrep",["-P",e.join(",")],{timeout:5e3});return t.trim().split("\n").map(e=>parseInt(e,10)).filter(e=>!Number.isNaN(e))}catch{return[]}},H=async e=>{let t=[],r=[e];for(;r.length>0;){let e=await G(r);if(0===e.length)break;t.push(...e),r=e}return t},O=async e=>{try{let t=new Set(e),{stdout:r}=await u("ss",["-tlnp"],{timeout:5e3}),a=new Set;for(let e of r.split("\n")){let r=e.match(/pid=(\d+)/g);if(!r||!r.some(e=>t.has(parseInt(e.replace("pid=",""),10))))continue;let s=e.match(/:(\d+)\s/);s&&a.add(parseInt(s[1],10))}return[...a].sort((e,t)=>e-t)}catch{return[]}},W=async e=>{let t=await H(e);if(0===t.length)return[];if(l)return O(t);try{let{stdout:e}=await u("lsof",["-a","-p",t.join(","),"-i","-sTCP:LISTEN","-P","-Fn"],{timeout:5e3}),r=new Set;for(let t of e.split("\n"))if(t.startsWith("n")){let e=t.match(/:(\d+)$/);e&&r.add(parseInt(e[1],10))}return[...r].sort((e,t)=>e-t)}catch{return[]}},U=async e=>{let t=await P(e);if(!t)return null;try{let{stdout:e}=await u("pgrep",["-n","-P",String(t)],{timeout:5e3}),r=e.trim();if(!r)return null;let{stdout:a}=await u("ps",["-o","args=","-p",r],{timeout:5e3}),n=a.trim();if(!n)return null;let i=n.split(/\s+/);if(0===i.length)return n;if(i[0]=s.default.basename(i[0]),C.has(i[0])&&i.length>1){let e=s.default.basename(i[1]).replace(/\.(c|m)?js$/,"");i.splice(0,2,e)}return i.join(" ")}catch{return null}};e.s(["SAFE_SHELLS",0,q,"applyConfig",0,b,"capturePaneContent",0,j,"capturePaneContentWithHistory",0,D,"createSession",0,w,"defaultSessionName",0,()=>`pt-${(0,n.nanoid)(6)}-${(0,n.nanoid)(6)}-${(0,n.nanoid)(6)}`,"exitCopyMode",0,I,"getAllPanesInfo",0,$,"getLastCommand",0,U,"getListeningPorts",0,W,"getPaneCurrentCommand",0,E,"getPaneDetailInfo",0,M,"getPaneTitle",0,R,"getSessionCwd",0,L,"getSessionPanePid",0,P,"hasSession",0,g,"killServer",0,A,"killSession",0,x,"listSessions",0,h,"sanitizedEnv",0,f,"scanSessions",0,_,"sendBracketedPaste",0,k,"sendKeys",0,N,"sendRawKeys",0,T,"workspaceSessionName",0,(e,t,r)=>`pt-${e}-${t}-${r}`],459015)},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"))},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),new TextEncoder,new TextDecoder,(0,e.i(25146).createLogger)("terminal"),new TextDecoder;let r=globalThis,a=r.__purplemux_terminal_connections??=new Map;r.__purplemux_terminal_output_ts??=new Map;let s=(e,t,r)=>{for(let s of a.values())if(s.sessionName===e&&!s.cleaned)return void s.pty.resize(t,r)},n=e=>new Promise(t=>setTimeout(t,e)),i=async(e,r,i)=>{let l=(e=>{for(let t of a.values())if(t.sessionName===e&&!t.cleaned)return{cols:t.currentCols,rows:t.currentRows};return null})(e);if(l&&l.cols>50)return(0,t.capturePaneContentWithHistory)(e,50);let o=(e=>{for(let t of a.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(!o)return(0,t.capturePaneContent)(e);try{s(e,r,i),await n(300);let a=await (0,t.capturePaneContent)(e);return s(e,o.cols,o.rows),await n(300),a}finally{(e=>{for(let t of a.values())if(t.sessionName===e&&!t.cleaned){if(!t.capturePaused)return;t.capturePaused=!1;return}})(e)}};e.s(["capturePaneAtWidth",0,i],971780)},8372,e=>{"use strict";var t=e.i(926747),r=e.i(190406),a=e.i(244898),s=e.i(262950),n=e.i(459015),i=e.i(971780);let l=(0,e.i(25146).createLogger)("tmux"),o=/^\s*(?:[❯›>]\s+)?(?:\d+\.\s+)?(.+)$/,u=["Yes,","Yes ","No,","No ","Tell Claude"],p=e=>/^\s+\S/.test(e)||/^\s*[❯›>]/.test(e),c=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,n.hasSession)(r))return t.status(404).json({error:"Session not found"});try{let e=await (0,i.capturePaneAtWidth)(r,120,50);if(!e)return t.status(200).json({options:[]});let a=(e=>{let t=e.split("\n"),r=[],a=!1;for(let e of t){if(!e.trim()||!p(e)){if(a)break;continue}let t=e.match(o);if(!t)continue;let s=t[1].trim();if(a)if(u.some(e=>s.startsWith(e)))r.push(s);else break;else u.some(e=>s.startsWith(e))&&(r.push(s),a=!0)}return r})(e);return t.status(200).json({options:a})}catch(e){return l.error(`plan-options query failed: ${e instanceof Error?e.message:e}`),t.status(500).json({error:"Terminal capture failed"})}};e.s(["default",0,c],875757);var d=e.i(875757),m=e.i(7031),f=e.i(181927),h=e.i(846432);let w=(0,s.hoist)(d,"default"),y=(0,s.hoist)(d,"config"),x=new a.PagesAPIRouteModule({definition:{kind:r.RouteKind.PAGES_API,page:"/api/tmux/plan-options",pathname:"/api/tmux/plan-options",bundlePath:"",filename:""},userland:d,distDir:".next",relativeProjectDir:""});async function g(e,r,a){a.requestMeta&&(0,h.setRequestMeta)(e,a.requestMeta),x.isDev&&(0,h.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let s="/api/tmux/plan-options";s=s.replace(/\/index$/,"")||"/";let n=await x.prepare(e,r,{srcPage:s});if(!n){r.statusCode=400,r.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve());return}let{query:i,params:l,prerenderManifest:o,routerServerContext:u}=n;try{let t,a=e.method||"GET",n=(0,m.getTracer)(),p=n.getActiveScopeSpan(),c=!!(null==u?void 0:u.isWrappedByNextServer),d=x.instrumentationOnRequestError.bind(x),h=async p=>x.render(e,r,{query:{...i,...l},params:l,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:o.preview,propagateError:!1,dev:x.isDev,page:"/api/tmux/plan-options",internalRevalidate:null==u?void 0:u.revalidate,onError:(...t)=>d(e,...t)}).finally(()=>{if(!p)return;p.setAttributes({"http.status_code":r.statusCode,"next.rsc":!1});let e=n.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 i=e.get("next.route");if(i){let e=`${a} ${i}`;p.setAttributes({"next.route":i,"http.route":i,"next.span_name":e}),p.updateName(e),t&&t!==p&&(t.setAttribute("http.route",i),t.updateName(e))}else p.updateName(`${a} ${s}`)});c&&p?await h(p):(t=n.getActiveScopeSpan(),await n.withPropagatedContext(e.headers,()=>n.trace(f.BaseServerSpan.handleRequest,{spanName:`${a} ${s}`,kind:m.SpanKind.SERVER,attributes:{"http.method":a,"http.target":e.url}},h),void 0,!c))}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,w,"handler",0,g],8372)}];
|
|
2
2
|
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%
|
|
3
|
+
//# sourceMappingURL=%5Broot-of-the-server%5D__0-ptdqu._.js.map
|
|
@@ -1,3 +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"))},25146,e=>{"use strict";var t=e.i(130146),r=e.i(814747),i=e.i(446786);let a=r.default.join(i.default.homedir(),".purplemux","logs"),s=process.env.LOG_LEVEL||"info",o=(e=>{if(!e)return{};let t={};for(let r of e.split(",")){let[e,i]=r.split("=").map(e=>e.trim());e&&i&&(t[e]=i)}return t})(process.env.LOG_LEVELS),l=["trace","debug","info","warn","error","fatal"],n=globalThis;if(!n.__ptRootLogger){let e=[s,...Object.values(o)].reduce((e,t)=>l.indexOf(t)<l.indexOf(e)?t:e,"fatal");n.__ptRootLogger=(0,t.default)({level:e,transport:{targets:[{target:"pino-roll",level:e,options:{file:r.default.join(a,"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 p=n.__ptRootLogger;e.s(["createLogger",0,e=>{let t=p.child({module:e});return t.level=o[e]??s,t}])},
|
|
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"))},25146,e=>{"use strict";var t=e.i(130146),r=e.i(814747),i=e.i(446786);let a=r.default.join(i.default.homedir(),".purplemux","logs"),s=process.env.LOG_LEVEL||"info",o=(e=>{if(!e)return{};let t={};for(let r of e.split(",")){let[e,i]=r.split("=").map(e=>e.trim());e&&i&&(t[e]=i)}return t})(process.env.LOG_LEVELS),l=["trace","debug","info","warn","error","fatal"],n=globalThis;if(!n.__ptRootLogger){let e=[s,...Object.values(o)].reduce((e,t)=>l.indexOf(t)<l.indexOf(e)?t:e,"fatal");n.__ptRootLogger=(0,t.default)({level:e,transport:{targets:[{target:"pino-roll",level:e,options:{file:r.default.join(a,"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 p=n.__ptRootLogger;e.s(["createLogger",0,e=>{let t=p.child({module:e});return t.level=o[e]??s,t}])},254799,(e,t,r)=>{t.exports=e.x("crypto",()=>require("crypto"))},688947,(e,t,r)=>{t.exports=e.x("stream",()=>require("stream"))},500874,(e,t,r)=>{t.exports=e.x("buffer",()=>require("buffer"))},792509,(e,t,r)=>{t.exports=e.x("url",()=>require("url"))},504446,(e,t,r)=>{t.exports=e.x("net",()=>require("net"))},755004,(e,t,r)=>{t.exports=e.x("tls",()=>require("tls"))},921517,(e,t,r)=>{t.exports=e.x("http",()=>require("http"))},524836,(e,t,r)=>{t.exports=e.x("https",()=>require("https"))},206892,e=>{"use strict";var t=e.i(926747),r=e.i(190406),i=e.i(244898),a=e.i(262950),s=e.i(228448);let o=async(e,t)=>{if("GET"!==e.method)return t.setHeader("Allow","GET"),t.status(405).json({error:"Method not allowed"});let r=await (0,s.getVAPIDKeys)();return t.status(200).json({publicKey:r.publicKey})};e.s(["default",0,o],24648);var l=e.i(24648),n=e.i(7031),p=e.i(181927),u=e.i(846432);let d=(0,a.hoist)(l,"default"),x=(0,a.hoist)(l,"config"),c=new i.PagesAPIRouteModule({definition:{kind:r.RouteKind.PAGES_API,page:"/api/push/vapid-key",pathname:"/api/push/vapid-key",bundlePath:"",filename:""},userland:l,distDir:".next",relativeProjectDir:""});async function m(e,r,i){i.requestMeta&&(0,u.setRequestMeta)(e,i.requestMeta),c.isDev&&(0,u.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let a="/api/push/vapid-key";a=a.replace(/\/index$/,"")||"/";let s=await c.prepare(e,r,{srcPage:a});if(!s){r.statusCode=400,r.end("Bad Request"),null==i.waitUntil||i.waitUntil.call(i,Promise.resolve());return}let{query:o,params:l,prerenderManifest:d,routerServerContext:x}=s;try{let t,i=e.method||"GET",s=(0,n.getTracer)(),u=s.getActiveScopeSpan(),m=!!(null==x?void 0:x.isWrappedByNextServer),f=c.instrumentationOnRequestError.bind(c),h=async n=>c.render(e,r,{query:{...o,...l},params:l,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:d.preview,propagateError:!1,dev:c.isDev,page:"/api/push/vapid-key",internalRevalidate:null==x?void 0:x.revalidate,onError:(...t)=>f(e,...t)}).finally(()=>{if(!n)return;n.setAttributes({"http.status_code":r.statusCode,"next.rsc":!1});let e=s.getRootSpanAttributes();if(!e)return;if(e.get("next.span_type")!==p.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${e.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let o=e.get("next.route");if(o){let e=`${i} ${o}`;n.setAttributes({"next.route":o,"http.route":o,"next.span_name":e}),n.updateName(e),t&&t!==n&&(t.setAttribute("http.route",o),t.updateName(e))}else n.updateName(`${i} ${a}`)});m&&u?await h(u):(t=s.getActiveScopeSpan(),await s.withPropagatedContext(e.headers,()=>s.trace(p.BaseServerSpan.handleRequest,{spanName:`${i} ${a}`,kind:n.SpanKind.SERVER,attributes:{"http.method":i,"http.target":e.url}},h),void 0,!m))}catch(e){if(c.isDev)throw e;(0,t.sendError)(r,500,"Internal Server Error")}finally{null==i.waitUntil||i.waitUntil.call(i,Promise.resolve())}}e.s(["config",0,x,"default",0,d,"handler",0,m],206892)}];
|
|
2
2
|
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%
|
|
3
|
+
//# sourceMappingURL=%5Broot-of-the-server%5D__0.784vy._.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
module.exports=[270406,(e,t,n)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},446786,(e,t,n)=>{t.exports=e.x("os",()=>require("os"))},814747,(e,t,n)=>{t.exports=e.x("path",()=>require("path"))},924868,(e,t,n)=>{t.exports=e.x("fs/promises",()=>require("fs/promises"))},666680,(e,t,n)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},130146,(e,t,n)=>{t.exports=e.x("pino-28069d5257187539",()=>require("pino-28069d5257187539"))},224361,(e,t,n)=>{t.exports=e.x("util",()=>require("util"))},233405,(e,t,n)=>{t.exports=e.x("child_process",()=>require("child_process"))},25146,e=>{"use strict";var t=e.i(130146),n=e.i(814747),a=e.i(446786);let r=n.default.join(a.default.homedir(),".purplemux","logs"),s=process.env.LOG_LEVEL||"info",i=(e=>{if(!e)return{};let t={};for(let n of e.split(",")){let[e,a]=n.split("=").map(e=>e.trim());e&&a&&(t[e]=a)}return t})(process.env.LOG_LEVELS),o=["trace","debug","info","warn","error","fatal"],u=globalThis;if(!u.__ptRootLogger){let e=[s,...Object.values(i)].reduce((e,t)=>o.indexOf(t)<o.indexOf(e)?t:e,"fatal");u.__ptRootLogger=(0,t.default)({level:e,transport:{targets:[{target:"pino-roll",level:e,options:{file:n.default.join(r,"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 l=u.__ptRootLogger;e.s(["createLogger",0,e=>{let t=l.child({module:e});return t.level=i[e]??s,t}])},44014,e=>{"use strict";let t,n;var a=e.i(666680);e.s(["nanoid",0,function(e=21){var r;r=e|=0,!t||t.length<r?(t=Buffer.allocUnsafe(128*r),a.webcrypto.getRandomValues(t),n=0):n+r>t.length&&(a.webcrypto.getRandomValues(t),n=0),n+=r;let s="";for(let a=n-e;a<n;a++)s+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[63&t[a]];return s}],44014)},459015,544538,e=>{"use strict";var t=e.i(233405),n=e.i(924868),a=e.i(224361),r=e.i(814747),s=e.i(44014),i=e.i(25146);process.platform;let o="linux"===process.platform;e.s(["isLinux",0,o],544538);let u=(0,i.createLogger)("terminal"),l=(0,a.promisify)(t.execFile),c="purple",d=r.default.join(process.env.__PMUX_APP_DIR_UNPACKED||process.env.__PMUX_APP_DIR||process.cwd(),"src","config","tmux.conf"),f={...process.env},m=new Set(["AUTH_PASSWORD","NEXTAUTH_SECRET","PORT"]),h=()=>Object.fromEntries(Object.entries(f).filter(([e])=>!e.startsWith("npm_")&&!e.startsWith("NODE_")&&!m.has(e))),p=async()=>{try{let{stdout:e}=await l("tmux",["-L",c,"ls","-F","#{session_name}"],{timeout:5e3});return e.trim().split("\n").map(e=>e.trim()).filter(e=>e.startsWith("pt-"))}catch{return[]}},y=async(e,t,n,a)=>{let r=process.env.SHELL||"/bin/zsh";await l("tmux",["-u","-L",c,"-f",d,"new-session","-d","-s",e,"-x",String(t),"-y",String(n)],{timeout:5e3,env:{...h(),SHELL:r,TERM:"xterm-256color",COLORTERM:"truecolor"},cwd:a||process.env.HOME||"/"}),await b(),u.debug(`tmux session created: ${e} (cols: ${t}, rows: ${n})`)},g=e=>new Promise(t=>setTimeout(t,e)),w=async e=>{if(!await S(e))return;u.debug(`killSession start: ${e}`);let t=await C(e);if(t)try{u.debug(`SIGTERM → process group ${t}: ${e}`),process.kill(-t,"SIGTERM")}catch{}try{await l("tmux",["-L",c,"kill-session","-t",e],{timeout:5e3})}catch{}for(let t=0;t<5;t++){if(!await S(e))return void u.debug(`killSession done (SIGTERM): ${e}`);await g(200)}if(u.warn(`session survived SIGTERM, escalating to SIGKILL: ${e}`),t)try{u.debug(`SIGKILL → process group ${t}: ${e}`),process.kill(-t,"SIGKILL")}catch{}try{await l("tmux",["-L",c,"kill-session","-t",e],{timeout:5e3})}catch{}for(let t=0;t<3;t++){if(!await S(e))return void u.debug(`killSession done (SIGKILL): ${e}`);await g(200)}u.warn(`tmux session still alive after kill: ${e}`)},S=async e=>{try{return await l("tmux",["-L",c,"has-session","-t",e],{timeout:5e3}),!0}catch{return!1}},$=async()=>{},v=async()=>{await $();let e=await p();e.length>0&&e.forEach(e=>{u.debug(`existing tmux session found: ${e}`)})},x=async e=>{if(o)try{return await n.default.readlink(`/proc/${e}/cwd`)}catch{return null}try{let{stdout:t}=await l("lsof",["-a","-p",String(e),"-d","cwd","-Fn"],{timeout:5e3}),n=t.split("\n").find(e=>e.startsWith("n/"));return n?n.slice(1):null}catch{return null}},D=async e=>{let t=await C(e);if(t){let e=await x(t);if(e)return e}try{let{stdout:t}=await l("tmux",["-L",c,"display-message","-p","-t",e,"#{pane_current_path}"],{timeout:5e3});return t.trim()||null}catch{return null}},C=async e=>{try{let{stdout:t}=await l("tmux",["-L",c,"display-message","-p","-t",e,"#{pane_pid}"],{timeout:5e3}),n=parseInt(t.trim(),10);return Number.isNaN(n)?null:n}catch{return null}},b=async()=>{try{await l("tmux",["-L",c,"source-file",d],{timeout:5e3})}catch{}},M=async e=>{try{let{stdout:t}=await l("tmux",["-L",c,"list-panes","-t",e,"-F","#{pane_current_command}"],{timeout:5e3});return t.trim()||null}catch{return null}},k=async()=>{try{let{stdout:e}=await l("tmux",["-L",c,"list-panes","-a","-F","#{session_name} #{pane_current_command} #{pane_current_path} #{pane_pid} #{window_activity}"],{timeout:5e3}),t=new Map;for(let n of e.trim().split("\n")){if(!n)continue;let[e,a,r,s,i]=n.split(" ");if(e&&a){let n=parseInt(s,10),o=parseInt(i,10);t.set(e,{command:a,path:r||"",pid:Number.isNaN(n)?0:n,windowActivity:Number.isNaN(o)?0:o})}}return t}catch{return new Map}},_=new Set(["bash","zsh","fish","sh","dash"]),T=async e=>{try{let{stdout:t}=await l("tmux",["-L",c,"display-message","-p","-t",e,"#{pane_title}"],{timeout:5e3});return t.trim()||null}catch{return null}},L=async e=>{await l("tmux",["-L",c,"copy-mode","-q","-t",e],{timeout:5e3}).catch(()=>{})},O=async(e,t)=>{await L(e),await l("tmux",["-L",c,"send-keys","-t",e,t,"Enter"],{timeout:5e3})},I=async(e,t)=>{await L(e),await l("tmux",["-L",c,"send-keys","-t",e,t],{timeout:5e3})},A=async(e,t)=>{await L(e),await l("tmux",["-L",c,"send-keys","-t",e,"-l",`\x1b[200~${t}\x1b[201~`],{timeout:5e3}),await l("tmux",["-L",c,"send-keys","-t",e,"Enter"],{timeout:5e3}),await new Promise(e=>setTimeout(e,600)),await l("tmux",["-L",c,"send-keys","-t",e,"Enter"],{timeout:5e3})},E=async e=>{try{let{stdout:t}=await l("tmux",["-L",c,"display-message","-p","-t",e,"#{pane_current_path} #{pane_current_command} #{pane_pid} #{pane_width} #{pane_height} #{session_created}"],{timeout:5e3}),[n,a,r,s,i,o]=t.trim().split(" ");return{cwd:n||null,command:a||null,pid:r&&parseInt(r,10)||null,width:s&&parseInt(s,10)||null,height:i&&parseInt(i,10)||null,sessionCreated:o&&parseInt(o,10)||null}}catch{return{cwd:null,command:null,pid:null,width:null,height:null,sessionCreated:null}}},j=new Set(["node","python","python3","ruby","perl","deno","bun"]),R=async()=>{try{await l("tmux",["-L",c,"kill-server"],{timeout:5e3}),u.debug("tmux server killed")}catch{}},N=async e=>{try{let{stdout:t}=await l("tmux",["-L",c,"capture-pane","-p","-t",e],{timeout:5e3});return t}catch{return null}},P=async(e,t)=>{try{let{stdout:n}=await l("tmux",["-L",c,"capture-pane","-p","-S",`-${t}`,"-t",e],{timeout:5e3});return n}catch{return null}},F=async e=>{if(o){let t=[];return await Promise.all(e.map(async e=>{try{for(let a of(await n.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 l("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=[],n=[e];for(;n.length>0;){let e=await F(n);if(0===e.length)break;t.push(...e),n=e}return t},Y=async e=>{try{let t=new Set(e),{stdout:n}=await l("ss",["-tlnp"],{timeout:5e3}),a=new Set;for(let e of n.split("\n")){let n=e.match(/pid=(\d+)/g);if(!n||!n.some(e=>t.has(parseInt(e.replace("pid=",""),10))))continue;let r=e.match(/:(\d+)\s/);r&&a.add(parseInt(r[1],10))}return[...a].sort((e,t)=>e-t)}catch{return[]}},W=async e=>{let t=await H(e);if(0===t.length)return[];if(o)return Y(t);try{let{stdout:e}=await l("lsof",["-a","-p",t.join(","),"-i","-sTCP:LISTEN","-P","-Fn"],{timeout:5e3}),n=new Set;for(let t of e.split("\n"))if(t.startsWith("n")){let e=t.match(/:(\d+)$/);e&&n.add(parseInt(e[1],10))}return[...n].sort((e,t)=>e-t)}catch{return[]}},U=async e=>{let t=await C(e);if(!t)return null;try{let{stdout:e}=await l("pgrep",["-n","-P",String(t)],{timeout:5e3}),n=e.trim();if(!n)return null;let{stdout:a}=await l("ps",["-o","args=","-p",n],{timeout:5e3}),s=a.trim();if(!s)return null;let i=s.split(/\s+/);if(0===i.length)return s;if(i[0]=r.default.basename(i[0]),j.has(i[0])&&i.length>1){let e=r.default.basename(i[1]).replace(/\.(c|m)?js$/,"");i.splice(0,2,e)}return i.join(" ")}catch{return null}};e.s(["SAFE_SHELLS",0,_,"applyConfig",0,b,"capturePaneContent",0,N,"capturePaneContentWithHistory",0,P,"createSession",0,y,"defaultSessionName",0,()=>`pt-${(0,s.nanoid)(6)}-${(0,s.nanoid)(6)}-${(0,s.nanoid)(6)}`,"exitCopyMode",0,L,"getAllPanesInfo",0,k,"getLastCommand",0,U,"getListeningPorts",0,W,"getPaneCurrentCommand",0,M,"getPaneDetailInfo",0,E,"getPaneTitle",0,T,"getSessionCwd",0,D,"getSessionPanePid",0,C,"hasSession",0,S,"killServer",0,R,"killSession",0,w,"listSessions",0,p,"sanitizedEnv",0,h,"scanSessions",0,v,"sendBracketedPaste",0,A,"sendKeys",0,O,"sendRawKeys",0,I,"workspaceSessionName",0,(e,t,n)=>`pt-${e}-${t}-${n}`],459015)},713915,e=>{"use strict";var t=e.i(233405),n=e.i(924868),a=e.i(446786),r=e.i(814747),s=e.i(224361),i=e.i(459015);let o=(0,s.promisify)(t.execFile),u=null,l=null,c=async()=>{let e=a.default.userInfo().shell||process.env.SHELL||"/bin/bash";try{let{stdout:t}=await o(e,["-ilc",'echo -n "$PATH"'],{timeout:5e3,env:{...(0,i.sanitizedEnv)(),SHELL:e,DISABLE_AUTO_UPDATE:"true",ZSH_TMUX_AUTOSTARTED:"true",TERM:"xterm-256color",COLORTERM:"truecolor"}});return t.toString().trim()}catch{return process.env.PATH||""}},d=async()=>u||(l||(l=c().then(e=>(u=e,l=null,e))),l),f=async(e,t,n)=>{try{let a=await d(),{stdout:r}=await o(e,t,{timeout:5e3,env:{...process.env,PATH:a}});return{installed:!0,version:n(r)}}catch{return{installed:!1,version:null}}},m=e=>e.trim().match(/(\d+\.\d+[\d.]*)/)?.[1]??null,h=[r.default.join(a.default.homedir(),".local","bin")],p=async()=>{for(let e of h)try{return await (0,n.access)(r.default.join(e,"claude")),e}catch{}return null},y=e=>e.installed&&null!==e.version&&parseFloat(e.version)>=2.9,g=async()=>{u=await c();let[e,t,s]=await Promise.all([f("tmux",["-V"],m),f("git",["--version"],m),f("claude",["--version"],m)]),i=(y(e)&&t.installed&&s.installed,s.installed?null:await p()),o=!1;if(s.installed||i)try{await (0,n.access)(r.default.join(a.default.homedir(),".claude")),o=!0}catch{}return{tmux:{...e,compatible:y(e)},git:t,claude:{...s,binaryPath:i,loggedIn:o}}},w=null,S=null,$=null,v=null,x=async()=>$&&Date.now()-$.checkedAt<1e3?$.result:v||(v=g().then(e=>($={result:e,checkedAt:Date.now()},v=null,e)).catch(e=>{throw v=null,e})),D=async()=>{u=await c();let[e,t,n]=await Promise.all([f("tmux",["-V"],m),f("git",["--version"],m),f("claude",["--version"],m)]);return{tmux:{...e,compatible:y(e)},git:t,claude:n}},C=async()=>w&&Date.now()-w.checkedAt<3e4?w.result:S||(S=D().then(e=>(w={result:e,checkedAt:Date.now()},S=null,e)).catch(e=>{throw S=null,e}));e.s(["getCachedPreflightStatus",0,x,"getCachedRuntimePreflight",0,C,"getShellPath",0,d,"invalidateRuntimeCache",0,()=>{w=null,S=null}])},522734,(e,t,n)=>{t.exports=e.x("fs",()=>require("fs"))},319668,(e,t,n)=>{t.exports=e.x("readline",()=>require("readline"))},990294,(e,t,n)=>{e.e,t.exports=function(){"use strict";var e="millisecond",t="second",n="minute",a="hour",r="week",s="month",i="quarter",o="year",u="date",l="Invalid Date",c=/^(\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,f=function(e,t,n){var a=String(e);return!a||a.length>=t?e:""+Array(t+1-a.length).join(n)+e},m="en",h={};h[m]={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"],n=e%100;return"["+e+(t[(n-20)%10]||t[n]||t[0])+"]"}};var p="$isDayjsObject",y=function(e){return e instanceof $||!(!e||!e[p])},g=function e(t,n,a){var r;if(!t)return m;if("string"==typeof t){var s=t.toLowerCase();h[s]&&(r=s),n&&(h[s]=n,r=s);var i=t.split("-");if(!r&&i.length>1)return e(i[0])}else{var o=t.name;h[o]=t,r=o}return!a&&r&&(m=r),r||!a&&m},w=function(e,t){if(y(e))return e.clone();var n="object"==typeof t?t:{};return n.date=e,n.args=arguments,new $(n)},S={s:f,z:function(e){var t=-e.utcOffset(),n=Math.abs(t);return(t<=0?"+":"-")+f(Math.floor(n/60),2,"0")+":"+f(n%60,2,"0")},m:function e(t,n){if(t.date()<n.date())return-e(n,t);var a=12*(n.year()-t.year())+(n.month()-t.month()),r=t.clone().add(a,s),i=n-r<0,o=t.clone().add(a+(i?-1:1),s);return+(-(a+(n-r)/(i?r-o:o-r))||0)},a:function(e){return e<0?Math.ceil(e)||0:Math.floor(e)},p:function(l){return({M:s,y:o,w:r,d:"day",D:u,h:a,m:n,s:t,ms:e,Q:i})[l]||String(l||"").toLowerCase().replace(/s$/,"")},u:function(e){return void 0===e}};S.l=g,S.i=y,S.w=function(e,t){return w(e,{locale:t.$L,utc:t.$u,x:t.$x,$offset:t.$offset})};var $=function(){function f(e){this.$L=g(e.locale,null,!0),this.parse(e),this.$x=this.$x||e.x||{},this[p]=!0}var m=f.prototype;return m.parse=function(e){this.$d=function(e){var t=e.date,n=e.utc;if(null===t)return new Date(NaN);if(S.u(t))return new Date;if(t instanceof Date)return new Date(t);if("string"==typeof t&&!/Z$/i.test(t)){var a=t.match(c);if(a){var r=a[2]-1||0,s=(a[7]||"0").substring(0,3);return n?new Date(Date.UTC(a[1],r,a[3]||1,a[4]||0,a[5]||0,a[6]||0,s)):new Date(a[1],r,a[3]||1,a[4]||0,a[5]||0,a[6]||0,s)}}return new Date(t)}(e),this.init()},m.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()},m.$utils=function(){return S},m.isValid=function(){return this.$d.toString()!==l},m.isSame=function(e,t){var n=w(e);return this.startOf(t)<=n&&n<=this.endOf(t)},m.isAfter=function(e,t){return w(e)<this.startOf(t)},m.isBefore=function(e,t){return this.endOf(t)<w(e)},m.$g=function(e,t,n){return S.u(e)?this[t]:this.set(n,e)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(e,i){var l=this,c=!!S.u(i)||i,d=S.p(e),f=function(e,t){var n=S.w(l.$u?Date.UTC(l.$y,t,e):new Date(l.$y,t,e),l);return c?n:n.endOf("day")},m=function(e,t){return S.w(l.toDate()[e].apply(l.toDate("s"),(c?[0,0,0,0]:[23,59,59,999]).slice(t)),l)},h=this.$W,p=this.$M,y=this.$D,g="set"+(this.$u?"UTC":"");switch(d){case o:return c?f(1,0):f(31,11);case s:return c?f(1,p):f(0,p+1);case r:var w=this.$locale().weekStart||0,$=(h<w?h+7:h)-w;return f(c?y-$:y+(6-$),p);case"day":case u:return m(g+"Hours",0);case a:return m(g+"Minutes",1);case n:return m(g+"Seconds",2);case t:return m(g+"Milliseconds",3);default:return this.clone()}},m.endOf=function(e){return this.startOf(e,!1)},m.$set=function(r,i){var l,c=S.p(r),d="set"+(this.$u?"UTC":""),f=((l={}).day=d+"Date",l[u]=d+"Date",l[s]=d+"Month",l[o]=d+"FullYear",l[a]=d+"Hours",l[n]=d+"Minutes",l[t]=d+"Seconds",l[e]=d+"Milliseconds",l)[c],m="day"===c?this.$D+(i-this.$W):i;if(c===s||c===o){var h=this.clone().set(u,1);h.$d[f](m),h.init(),this.$d=h.set(u,Math.min(this.$D,h.daysInMonth())).$d}else f&&this.$d[f](m);return this.init(),this},m.set=function(e,t){return this.clone().$set(e,t)},m.get=function(e){return this[S.p(e)]()},m.add=function(e,i){var u,l=this;e=Number(e);var c=S.p(i),d=function(t){var n=w(l);return S.w(n.date(n.date()+Math.round(t*e)),l)};if(c===s)return this.set(s,this.$M+e);if(c===o)return this.set(o,this.$y+e);if("day"===c)return d(1);if(c===r)return d(7);var f=((u={})[n]=6e4,u[a]=36e5,u[t]=1e3,u)[c]||1,m=this.$d.getTime()+e*f;return S.w(m,this)},m.subtract=function(e,t){return this.add(-1*e,t)},m.format=function(e){var t=this,n=this.$locale();if(!this.isValid())return n.invalidDate||l;var a=e||"YYYY-MM-DDTHH:mm:ssZ",r=S.z(this),s=this.$H,i=this.$m,o=this.$M,u=n.weekdays,c=n.months,f=n.meridiem,m=function(e,n,r,s){return e&&(e[n]||e(t,a))||r[n].slice(0,s)},h=function(e){return S.s(s%12||12,e,"0")},p=f||function(e,t,n){var a=e<12?"AM":"PM";return n?a.toLowerCase():a};return a.replace(d,function(e,a){return a||function(e){switch(e){case"YY":return String(t.$y).slice(-2);case"YYYY":return S.s(t.$y,4,"0");case"M":return o+1;case"MM":return S.s(o+1,2,"0");case"MMM":return m(n.monthsShort,o,c,3);case"MMMM":return m(c,o);case"D":return t.$D;case"DD":return S.s(t.$D,2,"0");case"d":return String(t.$W);case"dd":return m(n.weekdaysMin,t.$W,u,2);case"ddd":return m(n.weekdaysShort,t.$W,u,3);case"dddd":return u[t.$W];case"H":return String(s);case"HH":return S.s(s,2,"0");case"h":return h(1);case"hh":return h(2);case"a":return p(s,i,!0);case"A":return p(s,i,!1);case"m":return String(i);case"mm":return S.s(i,2,"0");case"s":return String(t.$s);case"ss":return S.s(t.$s,2,"0");case"SSS":return S.s(t.$ms,3,"0");case"Z":return r}return null}(e)||r.replace(":","")})},m.utcOffset=function(){return-(15*Math.round(this.$d.getTimezoneOffset()/15))},m.diff=function(e,u,l){var c,d=this,f=S.p(u),m=w(e),h=(m.utcOffset()-this.utcOffset())*6e4,p=this-m,y=function(){return S.m(d,m)};switch(f){case o:c=y()/12;break;case s:c=y();break;case i:c=y()/3;break;case r:c=(p-h)/6048e5;break;case"day":c=(p-h)/864e5;break;case a:c=p/36e5;break;case n:c=p/6e4;break;case t:c=p/1e3;break;default:c=p}return l?c:S.a(c)},m.daysInMonth=function(){return this.endOf(s).$D},m.$locale=function(){return h[this.$L]},m.locale=function(e,t){if(!e)return this.$L;var n=this.clone(),a=g(e,t,!0);return a&&(n.$L=a),n},m.clone=function(){return S.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},f}(),v=$.prototype;return w.prototype=v,[["$ms",e],["$s",t],["$m",n],["$H",a],["$W","day"],["$M",s],["$y",o],["$D",u]].forEach(function(e){v[e[1]]=function(t){return this.$g(t,e[0],e[1])}}),w.extend=function(e,t){return e.$i||(e(t,$,w),e.$i=!0),w},w.locale=g,w.isDayjs=y,w.unix=function(e){return w(1e3*e)},w.en=h[m],w.Ls=h,w.p={},w}()},177579,e=>{"use strict";var t=e.i(924868),n=e.i(522734),a=e.i(814747),r=e.i(446786),s=e.i(319668),i=e.i(990294);let o=a.default.join(r.default.homedir(),".purplemux","stats"),u=a.default.join(o,"cache.json"),l=a.default.join(r.default.homedir(),".claude","projects"),c=async()=>{let e=[];try{for(let n of(await t.default.readdir(l))){let r=a.default.join(l,n),s=await t.default.stat(r).catch(()=>null);if(s?.isDirectory())for(let n of(await t.default.readdir(r).catch(()=>[])))n.endsWith(".jsonl")&&!/^agent-/.test(n)&&e.push(a.default.join(r,n))}}catch{}return e},d=async(e,t)=>{let a=new Map,r=new Map;try{let i=(0,n.createReadStream)(e,{encoding:"utf-8"});for await(let e of s.default.createInterface({input:i,crlfDelay:1/0}))if(e.trim())try{let n=JSON.parse(e),s=String(n.timestamp??"");if(!s)continue;let i=s.slice(0,10);if(!t.has(i))continue;let o=String(n.type??"");if("user"!==o&&"assistant"!==o)continue;let u=String(n.sessionId??""),l=String(new Date(s).getHours()),c=a.get(i);c||(c={messageCount:0,sessionCount:0,toolCallCount:0,hourCounts:{},modelTokens:{},sessions:[]},a.set(i,c),r.set(i,new Map));let d=r.get(i);if("user"===o&&(c.messageCount++,c.hourCounts[l]=(c.hourCounts[l]??0)+1,u)){let e=d.get(u);e?(e.messages++,s>e.end&&(e.end=s),s<e.start&&(e.start=s)):d.set(u,{start:s,end:s,messages:1})}if("assistant"===o){let e=n.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;c.toolCallCount+=e}let a=String(e.model??""),r=e.usage;if(a&&!a.startsWith("<")&&r){c.modelTokens[a]||(c.modelTokens[a]={input:0,output:0,cacheRead:0,cacheCreation:0});let e=c.modelTokens[a];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+=Number(r.cache_creation_input_tokens??0)}if(u){let e=d.get(u);e?(s>e.end&&(e.end=s),s<e.start&&(e.start=s)):d.set(u,{start:s,end:s,messages:0})}}}catch{}}catch{}for(let[e,t]of r){let n=a.get(e);n&&(n.sessionCount=t.size,n.sessions=Array.from(t.entries()).map(([e,t])=>({id:e,start:t.start,end:t.end,messages:t.messages})))}return a},f=async(e,t)=>{let n=[],a=0,r=async()=>{for(;a<e.length;){let t=a++;n[t]=await e[t]()}},s=Array.from({length:Math.min(t,e.length)},()=>r());return await Promise.all(s),n},m=(e,t)=>{for(let[n,a]of(e.messageCount+=t.messageCount,e.toolCallCount+=t.toolCallCount,Object.entries(t.hourCounts)))e.hourCounts[n]=(e.hourCounts[n]??0)+a;for(let[n,a]of Object.entries(t.modelTokens)){e.modelTokens[n]||(e.modelTokens[n]={input:0,output:0,cacheRead:0,cacheCreation:0});let t=e.modelTokens[n];t.input+=a.input,t.output+=a.output,t.cacheRead+=a.cacheRead,t.cacheCreation+=a.cacheCreation}let n=new Set(e.sessions.map(e=>e.id));for(let a of t.sessions)if(n.has(a.id)){let t=e.sessions.find(e=>e.id===a.id);t.messages+=a.messages,a.start<t.start&&(t.start=a.start),a.end>t.end&&(t.end=a.end)}else e.sessions.push(a);e.sessionCount=e.sessions.length},h=async()=>{try{let e=await t.default.readFile(u,"utf-8"),n=JSON.parse(e);if(1!==n.version)return null;return n}catch{return null}},p=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,n.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),n=String(t.timestamp??"");if(n)return n.slice(0,10)}catch{}}catch{}return null},w=async()=>{let e=await c();if(0===e.length)return null;let t=e.map(e=>()=>g(e)),n=(await f(t,10)).filter(e=>null!==e);return 0===n.length?null:(n.sort(),n[0])},S=async e=>{if(0===e.size)return new Map;let t=(await c()).map(t=>()=>d(t,e)),n=await f(t,10),a=new Map;for(let e of n)for(let[t,n]of e){let e=a.get(t);e?m(e,n):a.set(t,n)}return a},$=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"),n=await h(),a=new Set;if(a.add(t),n){if(n.lastComputedDate<e){let t=(0,i.default)(n.lastComputedDate).add(1,"day"),r=(0,i.default)(e);for(;t.isBefore(r)||t.isSame(r);){let e=t.format("YYYY-MM-DD");n.days[e]||a.add(e),t=t.add(1,"day")}}}else{n={version:1,lastComputedDate:"",days:{}};let r=await w();if(!r)return v(n,t);let s=(0,i.default)(r),o=(0,i.default)(e);for(;s.isBefore(o)||s.isSame(o);)a.add(s.format("YYYY-MM-DD")),s=s.add(1,"day")}let r=await S(a);for(let[e,a]of r)e!==t&&(n.days[e]=a);n.lastComputedDate=e,await p(n);let s=r.get(t)??null,o=v(n,t,s);return y={data:o,expiresAt:Date.now()+3e5},o},v=(e,t,n)=>{let a=[],r=[],s={},i={},o={},u=0,l=0,c="",d={sessionId:"",duration:0,messageCount:0,timestamp:""},f=Object.entries(e.days);for(let[e,m]of(n&&f.push([t,n]),f.sort((e,t)=>e[0].localeCompare(t[0])),f)){!c&&m.messageCount>0&&(c=e),a.push({date:e,messageCount:m.messageCount,sessionCount:m.sessionCount,toolCallCount:m.toolCallCount});let t={};for(let[e,n]of Object.entries(m.modelTokens)){t[e]={input:n.input,output:n.output,cacheRead:n.cacheRead,cacheCreation:n.cacheCreation},s[e]||(s[e]={inputTokens:0,outputTokens:0,cacheReadInputTokens:0,cacheCreationInputTokens:0,webSearchRequests:0,costUSD:0,contextWindow:0,maxOutputTokens:0});let a=s[e];a.inputTokens+=n.input,a.outputTokens+=n.output,a.cacheReadInputTokens+=n.cacheRead,a.cacheCreationInputTokens+=n.cacheCreation}r.push({date:e,tokensByModel:t});let n=new Date(e).getDay();for(let[e,t]of Object.entries(m.hourCounts)){i[e]=(i[e]??0)+t;let a=`${n}-${e}`;o[a]=(o[a]??0)+t}for(let e of(u+=m.sessionCount,l+=m.messageCount,m.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:1,lastComputedDate:t,dailyActivity:a,dailyModelTokens:r,modelUsage:s,totalSessions:u,totalMessages:l,longestSession:d,firstSessionDate:c,hourCounts:i,dayHourCounts:o,totalSpeculationTimeSavedMs:0}};e.s(["collectJsonlFiles",0,c,"getStatsCache",0,$])},7991,e=>{"use strict";var t=e.i(924868),n=e.i(814747),a=e.i(446786),r=e.i(522734),s=e.i(319668),i=e.i(233405),o=e.i(713915),u=e.i(177579);let l=n.default.join(a.default.homedir(),".purplemux","stats","daily-reports"),c=async()=>{let e={};try{for(let a of(await t.default.readdir(l)))if(a.endsWith(".json"))try{let r=await t.default.readFile(n.default.join(l,a),"utf-8"),s=JSON.parse(r);s.date&&s.brief&&(e[s.date]=s)}catch{}}catch{}return e},d=async e=>{await t.default.mkdir(l,{recursive:!0}),await t.default.writeFile(n.default.join(l,`${e.date}.json`),JSON.stringify(e,null,2),"utf-8")},f=e=>{let t=a.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,u.collectJsonlFiles)(),a=[];for(let i of t){let t=[],o=[],u=0,l="";try{let n=(0,r.createReadStream)(i,{encoding:"utf-8"});for await(let a of s.default.createInterface({input:n,crlfDelay:1/0}))if(a.trim())try{let n=JSON.parse(a),r=String(n.timestamp??"");if(!r.startsWith(e))continue;o.push(r);let s=String(n.type??"");if(l||"string"!=typeof n.cwd||(l=n.cwd),"user"===s){let e=n.message;if(!e)continue;let a=e.content,s="";if("string"==typeof a)s=a.slice(0,300);else if(Array.isArray(a)){let e=[];for(let t of a)"object"==typeof t&&null!==t&&"text"===t.type&&e.push(String(t.text??"").slice(0,300));s=e.join(" | ")}if(s.includes("<command-message>")){let e=s.match(/<command-name>\/([^<]+)<\/command-name>/);s=`[Command: ${e?e[1]:"unknown"}]`}if(s.includes("<local-command-caveat>")||s.includes("<task-notification>"))continue;s.trim()&&t.push({time:r.slice(11,16),text:s.slice(0,200)})}if("assistant"===s){let e=n.message;if(!e)continue;let t=e.content;Array.isArray(t)&&(u+=t.filter(e=>"object"==typeof e&&null!==e&&"tool_use"===e.type).length)}}catch{}}catch{}if(o.length>0&&t.length>0){let e=l?f(l):n.default.basename(n.default.dirname(i));a.push({project:e,start:Math.min(...o.map(e=>new Date(e).getTime())).toString(),msgCount:t.length,toolCount:u,firstMessage:t[0].text})}}return a.sort((e,t)=>Number(e.start)-Number(t.start)),a},h=async(e,t)=>{let n=await (0,o.getShellPath)();return new Promise((a,r)=>{let s=(0,i.execFile)("claude",["-p"],{timeout:12e4,maxBuffer:1048576,env:{...process.env,PATH:n}},(e,t)=>{e?r(Error(`claude -p failed: ${e.message}`)):a(t.trim())});s.stdin?.write(`${t}
|
|
1
|
+
module.exports=[270406,(e,t,n)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},446786,(e,t,n)=>{t.exports=e.x("os",()=>require("os"))},814747,(e,t,n)=>{t.exports=e.x("path",()=>require("path"))},924868,(e,t,n)=>{t.exports=e.x("fs/promises",()=>require("fs/promises"))},130146,(e,t,n)=>{t.exports=e.x("pino-28069d5257187539",()=>require("pino-28069d5257187539"))},666680,(e,t,n)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},224361,(e,t,n)=>{t.exports=e.x("util",()=>require("util"))},233405,(e,t,n)=>{t.exports=e.x("child_process",()=>require("child_process"))},25146,e=>{"use strict";var t=e.i(130146),n=e.i(814747),a=e.i(446786);let r=n.default.join(a.default.homedir(),".purplemux","logs"),s=process.env.LOG_LEVEL||"info",i=(e=>{if(!e)return{};let t={};for(let n of e.split(",")){let[e,a]=n.split("=").map(e=>e.trim());e&&a&&(t[e]=a)}return t})(process.env.LOG_LEVELS),o=["trace","debug","info","warn","error","fatal"],u=globalThis;if(!u.__ptRootLogger){let e=[s,...Object.values(i)].reduce((e,t)=>o.indexOf(t)<o.indexOf(e)?t:e,"fatal");u.__ptRootLogger=(0,t.default)({level:e,transport:{targets:[{target:"pino-roll",level:e,options:{file:n.default.join(r,"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 l=u.__ptRootLogger;e.s(["createLogger",0,e=>{let t=l.child({module:e});return t.level=i[e]??s,t}])},44014,e=>{"use strict";let t,n;var a=e.i(666680);e.s(["nanoid",0,function(e=21){var r;r=e|=0,!t||t.length<r?(t=Buffer.allocUnsafe(128*r),a.webcrypto.getRandomValues(t),n=0):n+r>t.length&&(a.webcrypto.getRandomValues(t),n=0),n+=r;let s="";for(let a=n-e;a<n;a++)s+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[63&t[a]];return s}],44014)},459015,544538,e=>{"use strict";var t=e.i(233405),n=e.i(924868),a=e.i(224361),r=e.i(814747),s=e.i(44014),i=e.i(25146);process.platform;let o="linux"===process.platform;e.s(["isLinux",0,o],544538);let u=(0,i.createLogger)("terminal"),l=(0,a.promisify)(t.execFile),c="purple",d=r.default.join(process.env.__PMUX_APP_DIR_UNPACKED||process.env.__PMUX_APP_DIR||process.cwd(),"src","config","tmux.conf"),f={...process.env},m=new Set(["AUTH_PASSWORD","NEXTAUTH_SECRET","PORT"]),h=()=>Object.fromEntries(Object.entries(f).filter(([e])=>!e.startsWith("npm_")&&!e.startsWith("NODE_")&&!m.has(e))),p=async()=>{try{let{stdout:e}=await l("tmux",["-L",c,"ls","-F","#{session_name}"],{timeout:5e3});return e.trim().split("\n").map(e=>e.trim()).filter(e=>e.startsWith("pt-"))}catch{return[]}},y=async(e,t,n,a)=>{let r=process.env.SHELL||"/bin/zsh";await l("tmux",["-u","-L",c,"-f",d,"new-session","-d","-s",e,"-x",String(t),"-y",String(n)],{timeout:5e3,env:{...h(),SHELL:r,TERM:"xterm-256color",COLORTERM:"truecolor"},cwd:a||process.env.HOME||"/"}),await b(),u.debug(`tmux session created: ${e} (cols: ${t}, rows: ${n})`)},g=e=>new Promise(t=>setTimeout(t,e)),w=async e=>{if(!await S(e))return;u.debug(`killSession start: ${e}`);let t=await C(e);if(t)try{u.debug(`SIGTERM → process group ${t}: ${e}`),process.kill(-t,"SIGTERM")}catch{}try{await l("tmux",["-L",c,"kill-session","-t",e],{timeout:5e3})}catch{}for(let t=0;t<5;t++){if(!await S(e))return void u.debug(`killSession done (SIGTERM): ${e}`);await g(200)}if(u.warn(`session survived SIGTERM, escalating to SIGKILL: ${e}`),t)try{u.debug(`SIGKILL → process group ${t}: ${e}`),process.kill(-t,"SIGKILL")}catch{}try{await l("tmux",["-L",c,"kill-session","-t",e],{timeout:5e3})}catch{}for(let t=0;t<3;t++){if(!await S(e))return void u.debug(`killSession done (SIGKILL): ${e}`);await g(200)}u.warn(`tmux session still alive after kill: ${e}`)},S=async e=>{try{return await l("tmux",["-L",c,"has-session","-t",e],{timeout:5e3}),!0}catch{return!1}},$=async()=>{},v=async()=>{await $();let e=await p();e.length>0&&e.forEach(e=>{u.debug(`existing tmux session found: ${e}`)})},x=async e=>{if(o)try{return await n.default.readlink(`/proc/${e}/cwd`)}catch{return null}try{let{stdout:t}=await l("lsof",["-a","-p",String(e),"-d","cwd","-Fn"],{timeout:5e3}),n=t.split("\n").find(e=>e.startsWith("n/"));return n?n.slice(1):null}catch{return null}},D=async e=>{let t=await C(e);if(t){let e=await x(t);if(e)return e}try{let{stdout:t}=await l("tmux",["-L",c,"display-message","-p","-t",e,"#{pane_current_path}"],{timeout:5e3});return t.trim()||null}catch{return null}},C=async e=>{try{let{stdout:t}=await l("tmux",["-L",c,"display-message","-p","-t",e,"#{pane_pid}"],{timeout:5e3}),n=parseInt(t.trim(),10);return Number.isNaN(n)?null:n}catch{return null}},b=async()=>{try{await l("tmux",["-L",c,"source-file",d],{timeout:5e3})}catch{}},M=async e=>{try{let{stdout:t}=await l("tmux",["-L",c,"list-panes","-t",e,"-F","#{pane_current_command}"],{timeout:5e3});return t.trim()||null}catch{return null}},k=async()=>{try{let{stdout:e}=await l("tmux",["-L",c,"list-panes","-a","-F","#{session_name} #{pane_current_command} #{pane_current_path} #{pane_pid} #{window_activity}"],{timeout:5e3}),t=new Map;for(let n of e.trim().split("\n")){if(!n)continue;let[e,a,r,s,i]=n.split(" ");if(e&&a){let n=parseInt(s,10),o=parseInt(i,10);t.set(e,{command:a,path:r||"",pid:Number.isNaN(n)?0:n,windowActivity:Number.isNaN(o)?0:o})}}return t}catch{return new Map}},_=new Set(["bash","zsh","fish","sh","dash"]),T=async e=>{try{let{stdout:t}=await l("tmux",["-L",c,"display-message","-p","-t",e,"#{pane_title}"],{timeout:5e3});return t.trim()||null}catch{return null}},L=async e=>{await l("tmux",["-L",c,"copy-mode","-q","-t",e],{timeout:5e3}).catch(()=>{})},O=async(e,t)=>{await L(e),await l("tmux",["-L",c,"send-keys","-t",e,t,"Enter"],{timeout:5e3})},I=async(e,t)=>{await L(e),await l("tmux",["-L",c,"send-keys","-t",e,t],{timeout:5e3})},A=async(e,t)=>{await L(e),await l("tmux",["-L",c,"send-keys","-t",e,"-l",`\x1b[200~${t}\x1b[201~`],{timeout:5e3}),await l("tmux",["-L",c,"send-keys","-t",e,"Enter"],{timeout:5e3}),await new Promise(e=>setTimeout(e,600)),await l("tmux",["-L",c,"send-keys","-t",e,"Enter"],{timeout:5e3})},E=async e=>{try{let{stdout:t}=await l("tmux",["-L",c,"display-message","-p","-t",e,"#{pane_current_path} #{pane_current_command} #{pane_pid} #{pane_width} #{pane_height} #{session_created}"],{timeout:5e3}),[n,a,r,s,i,o]=t.trim().split(" ");return{cwd:n||null,command:a||null,pid:r&&parseInt(r,10)||null,width:s&&parseInt(s,10)||null,height:i&&parseInt(i,10)||null,sessionCreated:o&&parseInt(o,10)||null}}catch{return{cwd:null,command:null,pid:null,width:null,height:null,sessionCreated:null}}},j=new Set(["node","python","python3","ruby","perl","deno","bun"]),R=async()=>{try{await l("tmux",["-L",c,"kill-server"],{timeout:5e3}),u.debug("tmux server killed")}catch{}},N=async e=>{try{let{stdout:t}=await l("tmux",["-L",c,"capture-pane","-p","-t",e],{timeout:5e3});return t}catch{return null}},P=async(e,t)=>{try{let{stdout:n}=await l("tmux",["-L",c,"capture-pane","-p","-S",`-${t}`,"-t",e],{timeout:5e3});return n}catch{return null}},F=async e=>{if(o){let t=[];return await Promise.all(e.map(async e=>{try{for(let a of(await n.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 l("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=[],n=[e];for(;n.length>0;){let e=await F(n);if(0===e.length)break;t.push(...e),n=e}return t},Y=async e=>{try{let t=new Set(e),{stdout:n}=await l("ss",["-tlnp"],{timeout:5e3}),a=new Set;for(let e of n.split("\n")){let n=e.match(/pid=(\d+)/g);if(!n||!n.some(e=>t.has(parseInt(e.replace("pid=",""),10))))continue;let r=e.match(/:(\d+)\s/);r&&a.add(parseInt(r[1],10))}return[...a].sort((e,t)=>e-t)}catch{return[]}},W=async e=>{let t=await H(e);if(0===t.length)return[];if(o)return Y(t);try{let{stdout:e}=await l("lsof",["-a","-p",t.join(","),"-i","-sTCP:LISTEN","-P","-Fn"],{timeout:5e3}),n=new Set;for(let t of e.split("\n"))if(t.startsWith("n")){let e=t.match(/:(\d+)$/);e&&n.add(parseInt(e[1],10))}return[...n].sort((e,t)=>e-t)}catch{return[]}},U=async e=>{let t=await C(e);if(!t)return null;try{let{stdout:e}=await l("pgrep",["-n","-P",String(t)],{timeout:5e3}),n=e.trim();if(!n)return null;let{stdout:a}=await l("ps",["-o","args=","-p",n],{timeout:5e3}),s=a.trim();if(!s)return null;let i=s.split(/\s+/);if(0===i.length)return s;if(i[0]=r.default.basename(i[0]),j.has(i[0])&&i.length>1){let e=r.default.basename(i[1]).replace(/\.(c|m)?js$/,"");i.splice(0,2,e)}return i.join(" ")}catch{return null}};e.s(["SAFE_SHELLS",0,_,"applyConfig",0,b,"capturePaneContent",0,N,"capturePaneContentWithHistory",0,P,"createSession",0,y,"defaultSessionName",0,()=>`pt-${(0,s.nanoid)(6)}-${(0,s.nanoid)(6)}-${(0,s.nanoid)(6)}`,"exitCopyMode",0,L,"getAllPanesInfo",0,k,"getLastCommand",0,U,"getListeningPorts",0,W,"getPaneCurrentCommand",0,M,"getPaneDetailInfo",0,E,"getPaneTitle",0,T,"getSessionCwd",0,D,"getSessionPanePid",0,C,"hasSession",0,S,"killServer",0,R,"killSession",0,w,"listSessions",0,p,"sanitizedEnv",0,h,"scanSessions",0,v,"sendBracketedPaste",0,A,"sendKeys",0,O,"sendRawKeys",0,I,"workspaceSessionName",0,(e,t,n)=>`pt-${e}-${t}-${n}`],459015)},713915,e=>{"use strict";var t=e.i(233405),n=e.i(924868),a=e.i(446786),r=e.i(814747),s=e.i(224361),i=e.i(459015);let o=(0,s.promisify)(t.execFile),u=null,l=null,c=async()=>{let e=a.default.userInfo().shell||process.env.SHELL||"/bin/bash";try{let{stdout:t}=await o(e,["-ilc",'echo -n "$PATH"'],{timeout:5e3,env:{...(0,i.sanitizedEnv)(),SHELL:e,DISABLE_AUTO_UPDATE:"true",ZSH_TMUX_AUTOSTARTED:"true",TERM:"xterm-256color",COLORTERM:"truecolor"}});return t.toString().trim()}catch{return process.env.PATH||""}},d=async()=>u||(l||(l=c().then(e=>(u=e,l=null,e))),l),f=async(e,t,n)=>{try{let a=await d(),{stdout:r}=await o(e,t,{timeout:5e3,env:{...process.env,PATH:a}});return{installed:!0,version:n(r)}}catch{return{installed:!1,version:null}}},m=e=>e.trim().match(/(\d+\.\d+[\d.]*)/)?.[1]??null,h=[r.default.join(a.default.homedir(),".local","bin")],p=async()=>{for(let e of h)try{return await (0,n.access)(r.default.join(e,"claude")),e}catch{}return null},y=e=>e.installed&&null!==e.version&&parseFloat(e.version)>=2.9,g=async()=>{u=await c();let[e,t,s]=await Promise.all([f("tmux",["-V"],m),f("git",["--version"],m),f("claude",["--version"],m)]),i=(y(e)&&t.installed&&s.installed,s.installed?null:await p()),o=!1;if(s.installed||i)try{await (0,n.access)(r.default.join(a.default.homedir(),".claude")),o=!0}catch{}return{tmux:{...e,compatible:y(e)},git:t,claude:{...s,binaryPath:i,loggedIn:o}}},w=null,S=null,$=null,v=null,x=async()=>$&&Date.now()-$.checkedAt<1e3?$.result:v||(v=g().then(e=>($={result:e,checkedAt:Date.now()},v=null,e)).catch(e=>{throw v=null,e})),D=async()=>{u=await c();let[e,t,n]=await Promise.all([f("tmux",["-V"],m),f("git",["--version"],m),f("claude",["--version"],m)]);return{tmux:{...e,compatible:y(e)},git:t,claude:n}},C=async()=>w&&Date.now()-w.checkedAt<3e4?w.result:S||(S=D().then(e=>(w={result:e,checkedAt:Date.now()},S=null,e)).catch(e=>{throw S=null,e}));e.s(["getCachedPreflightStatus",0,x,"getCachedRuntimePreflight",0,C,"getShellPath",0,d,"invalidateRuntimeCache",0,()=>{w=null,S=null}])},522734,(e,t,n)=>{t.exports=e.x("fs",()=>require("fs"))},319668,(e,t,n)=>{t.exports=e.x("readline",()=>require("readline"))},990294,(e,t,n)=>{e.e,t.exports=function(){"use strict";var e="millisecond",t="second",n="minute",a="hour",r="week",s="month",i="quarter",o="year",u="date",l="Invalid Date",c=/^(\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,f=function(e,t,n){var a=String(e);return!a||a.length>=t?e:""+Array(t+1-a.length).join(n)+e},m="en",h={};h[m]={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"],n=e%100;return"["+e+(t[(n-20)%10]||t[n]||t[0])+"]"}};var p="$isDayjsObject",y=function(e){return e instanceof $||!(!e||!e[p])},g=function e(t,n,a){var r;if(!t)return m;if("string"==typeof t){var s=t.toLowerCase();h[s]&&(r=s),n&&(h[s]=n,r=s);var i=t.split("-");if(!r&&i.length>1)return e(i[0])}else{var o=t.name;h[o]=t,r=o}return!a&&r&&(m=r),r||!a&&m},w=function(e,t){if(y(e))return e.clone();var n="object"==typeof t?t:{};return n.date=e,n.args=arguments,new $(n)},S={s:f,z:function(e){var t=-e.utcOffset(),n=Math.abs(t);return(t<=0?"+":"-")+f(Math.floor(n/60),2,"0")+":"+f(n%60,2,"0")},m:function e(t,n){if(t.date()<n.date())return-e(n,t);var a=12*(n.year()-t.year())+(n.month()-t.month()),r=t.clone().add(a,s),i=n-r<0,o=t.clone().add(a+(i?-1:1),s);return+(-(a+(n-r)/(i?r-o:o-r))||0)},a:function(e){return e<0?Math.ceil(e)||0:Math.floor(e)},p:function(l){return({M:s,y:o,w:r,d:"day",D:u,h:a,m:n,s:t,ms:e,Q:i})[l]||String(l||"").toLowerCase().replace(/s$/,"")},u:function(e){return void 0===e}};S.l=g,S.i=y,S.w=function(e,t){return w(e,{locale:t.$L,utc:t.$u,x:t.$x,$offset:t.$offset})};var $=function(){function f(e){this.$L=g(e.locale,null,!0),this.parse(e),this.$x=this.$x||e.x||{},this[p]=!0}var m=f.prototype;return m.parse=function(e){this.$d=function(e){var t=e.date,n=e.utc;if(null===t)return new Date(NaN);if(S.u(t))return new Date;if(t instanceof Date)return new Date(t);if("string"==typeof t&&!/Z$/i.test(t)){var a=t.match(c);if(a){var r=a[2]-1||0,s=(a[7]||"0").substring(0,3);return n?new Date(Date.UTC(a[1],r,a[3]||1,a[4]||0,a[5]||0,a[6]||0,s)):new Date(a[1],r,a[3]||1,a[4]||0,a[5]||0,a[6]||0,s)}}return new Date(t)}(e),this.init()},m.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()},m.$utils=function(){return S},m.isValid=function(){return this.$d.toString()!==l},m.isSame=function(e,t){var n=w(e);return this.startOf(t)<=n&&n<=this.endOf(t)},m.isAfter=function(e,t){return w(e)<this.startOf(t)},m.isBefore=function(e,t){return this.endOf(t)<w(e)},m.$g=function(e,t,n){return S.u(e)?this[t]:this.set(n,e)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(e,i){var l=this,c=!!S.u(i)||i,d=S.p(e),f=function(e,t){var n=S.w(l.$u?Date.UTC(l.$y,t,e):new Date(l.$y,t,e),l);return c?n:n.endOf("day")},m=function(e,t){return S.w(l.toDate()[e].apply(l.toDate("s"),(c?[0,0,0,0]:[23,59,59,999]).slice(t)),l)},h=this.$W,p=this.$M,y=this.$D,g="set"+(this.$u?"UTC":"");switch(d){case o:return c?f(1,0):f(31,11);case s:return c?f(1,p):f(0,p+1);case r:var w=this.$locale().weekStart||0,$=(h<w?h+7:h)-w;return f(c?y-$:y+(6-$),p);case"day":case u:return m(g+"Hours",0);case a:return m(g+"Minutes",1);case n:return m(g+"Seconds",2);case t:return m(g+"Milliseconds",3);default:return this.clone()}},m.endOf=function(e){return this.startOf(e,!1)},m.$set=function(r,i){var l,c=S.p(r),d="set"+(this.$u?"UTC":""),f=((l={}).day=d+"Date",l[u]=d+"Date",l[s]=d+"Month",l[o]=d+"FullYear",l[a]=d+"Hours",l[n]=d+"Minutes",l[t]=d+"Seconds",l[e]=d+"Milliseconds",l)[c],m="day"===c?this.$D+(i-this.$W):i;if(c===s||c===o){var h=this.clone().set(u,1);h.$d[f](m),h.init(),this.$d=h.set(u,Math.min(this.$D,h.daysInMonth())).$d}else f&&this.$d[f](m);return this.init(),this},m.set=function(e,t){return this.clone().$set(e,t)},m.get=function(e){return this[S.p(e)]()},m.add=function(e,i){var u,l=this;e=Number(e);var c=S.p(i),d=function(t){var n=w(l);return S.w(n.date(n.date()+Math.round(t*e)),l)};if(c===s)return this.set(s,this.$M+e);if(c===o)return this.set(o,this.$y+e);if("day"===c)return d(1);if(c===r)return d(7);var f=((u={})[n]=6e4,u[a]=36e5,u[t]=1e3,u)[c]||1,m=this.$d.getTime()+e*f;return S.w(m,this)},m.subtract=function(e,t){return this.add(-1*e,t)},m.format=function(e){var t=this,n=this.$locale();if(!this.isValid())return n.invalidDate||l;var a=e||"YYYY-MM-DDTHH:mm:ssZ",r=S.z(this),s=this.$H,i=this.$m,o=this.$M,u=n.weekdays,c=n.months,f=n.meridiem,m=function(e,n,r,s){return e&&(e[n]||e(t,a))||r[n].slice(0,s)},h=function(e){return S.s(s%12||12,e,"0")},p=f||function(e,t,n){var a=e<12?"AM":"PM";return n?a.toLowerCase():a};return a.replace(d,function(e,a){return a||function(e){switch(e){case"YY":return String(t.$y).slice(-2);case"YYYY":return S.s(t.$y,4,"0");case"M":return o+1;case"MM":return S.s(o+1,2,"0");case"MMM":return m(n.monthsShort,o,c,3);case"MMMM":return m(c,o);case"D":return t.$D;case"DD":return S.s(t.$D,2,"0");case"d":return String(t.$W);case"dd":return m(n.weekdaysMin,t.$W,u,2);case"ddd":return m(n.weekdaysShort,t.$W,u,3);case"dddd":return u[t.$W];case"H":return String(s);case"HH":return S.s(s,2,"0");case"h":return h(1);case"hh":return h(2);case"a":return p(s,i,!0);case"A":return p(s,i,!1);case"m":return String(i);case"mm":return S.s(i,2,"0");case"s":return String(t.$s);case"ss":return S.s(t.$s,2,"0");case"SSS":return S.s(t.$ms,3,"0");case"Z":return r}return null}(e)||r.replace(":","")})},m.utcOffset=function(){return-(15*Math.round(this.$d.getTimezoneOffset()/15))},m.diff=function(e,u,l){var c,d=this,f=S.p(u),m=w(e),h=(m.utcOffset()-this.utcOffset())*6e4,p=this-m,y=function(){return S.m(d,m)};switch(f){case o:c=y()/12;break;case s:c=y();break;case i:c=y()/3;break;case r:c=(p-h)/6048e5;break;case"day":c=(p-h)/864e5;break;case a:c=p/36e5;break;case n:c=p/6e4;break;case t:c=p/1e3;break;default:c=p}return l?c:S.a(c)},m.daysInMonth=function(){return this.endOf(s).$D},m.$locale=function(){return h[this.$L]},m.locale=function(e,t){if(!e)return this.$L;var n=this.clone(),a=g(e,t,!0);return a&&(n.$L=a),n},m.clone=function(){return S.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},f}(),v=$.prototype;return w.prototype=v,[["$ms",e],["$s",t],["$m",n],["$H",a],["$W","day"],["$M",s],["$y",o],["$D",u]].forEach(function(e){v[e[1]]=function(t){return this.$g(t,e[0],e[1])}}),w.extend=function(e,t){return e.$i||(e(t,$,w),e.$i=!0),w},w.locale=g,w.isDayjs=y,w.unix=function(e){return w(1e3*e)},w.en=h[m],w.Ls=h,w.p={},w}()},177579,e=>{"use strict";var t=e.i(924868),n=e.i(522734),a=e.i(814747),r=e.i(446786),s=e.i(319668),i=e.i(990294);let o=a.default.join(r.default.homedir(),".purplemux","stats"),u=a.default.join(o,"cache.json"),l=a.default.join(r.default.homedir(),".claude","projects"),c=async()=>{let e=[];try{for(let n of(await t.default.readdir(l))){let r=a.default.join(l,n),s=await t.default.stat(r).catch(()=>null);if(s?.isDirectory())for(let n of(await t.default.readdir(r).catch(()=>[])))n.endsWith(".jsonl")&&!/^agent-/.test(n)&&e.push(a.default.join(r,n))}}catch{}return e},d=async(e,t)=>{let a=new Map,r=new Map;try{let i=(0,n.createReadStream)(e,{encoding:"utf-8"});for await(let e of s.default.createInterface({input:i,crlfDelay:1/0}))if(e.trim())try{let n=JSON.parse(e),s=String(n.timestamp??"");if(!s)continue;let i=s.slice(0,10);if(!t.has(i))continue;let o=String(n.type??"");if("user"!==o&&"assistant"!==o)continue;let u=String(n.sessionId??""),l=String(new Date(s).getHours()),c=a.get(i);c||(c={messageCount:0,sessionCount:0,toolCallCount:0,hourCounts:{},modelTokens:{},sessions:[]},a.set(i,c),r.set(i,new Map));let d=r.get(i);if("user"===o&&(c.messageCount++,c.hourCounts[l]=(c.hourCounts[l]??0)+1,u)){let e=d.get(u);e?(e.messages++,s>e.end&&(e.end=s),s<e.start&&(e.start=s)):d.set(u,{start:s,end:s,messages:1})}if("assistant"===o){let e=n.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;c.toolCallCount+=e}let a=String(e.model??""),r=e.usage;if(a&&!a.startsWith("<")&&r){c.modelTokens[a]||(c.modelTokens[a]={input:0,output:0,cacheRead:0,cacheCreation:0});let e=c.modelTokens[a];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+=Number(r.cache_creation_input_tokens??0)}if(u){let e=d.get(u);e?(s>e.end&&(e.end=s),s<e.start&&(e.start=s)):d.set(u,{start:s,end:s,messages:0})}}}catch{}}catch{}for(let[e,t]of r){let n=a.get(e);n&&(n.sessionCount=t.size,n.sessions=Array.from(t.entries()).map(([e,t])=>({id:e,start:t.start,end:t.end,messages:t.messages})))}return a},f=async(e,t)=>{let n=[],a=0,r=async()=>{for(;a<e.length;){let t=a++;n[t]=await e[t]()}},s=Array.from({length:Math.min(t,e.length)},()=>r());return await Promise.all(s),n},m=(e,t)=>{for(let[n,a]of(e.messageCount+=t.messageCount,e.toolCallCount+=t.toolCallCount,Object.entries(t.hourCounts)))e.hourCounts[n]=(e.hourCounts[n]??0)+a;for(let[n,a]of Object.entries(t.modelTokens)){e.modelTokens[n]||(e.modelTokens[n]={input:0,output:0,cacheRead:0,cacheCreation:0});let t=e.modelTokens[n];t.input+=a.input,t.output+=a.output,t.cacheRead+=a.cacheRead,t.cacheCreation+=a.cacheCreation}let n=new Set(e.sessions.map(e=>e.id));for(let a of t.sessions)if(n.has(a.id)){let t=e.sessions.find(e=>e.id===a.id);t.messages+=a.messages,a.start<t.start&&(t.start=a.start),a.end>t.end&&(t.end=a.end)}else e.sessions.push(a);e.sessionCount=e.sessions.length},h=async()=>{try{let e=await t.default.readFile(u,"utf-8"),n=JSON.parse(e);if(1!==n.version)return null;return n}catch{return null}},p=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,n.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),n=String(t.timestamp??"");if(n)return n.slice(0,10)}catch{}}catch{}return null},w=async()=>{let e=await c();if(0===e.length)return null;let t=e.map(e=>()=>g(e)),n=(await f(t,10)).filter(e=>null!==e);return 0===n.length?null:(n.sort(),n[0])},S=async e=>{if(0===e.size)return new Map;let t=(await c()).map(t=>()=>d(t,e)),n=await f(t,10),a=new Map;for(let e of n)for(let[t,n]of e){let e=a.get(t);e?m(e,n):a.set(t,n)}return a},$=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"),n=await h(),a=new Set;if(a.add(t),n){if(n.lastComputedDate<e){let t=(0,i.default)(n.lastComputedDate).add(1,"day"),r=(0,i.default)(e);for(;t.isBefore(r)||t.isSame(r);){let e=t.format("YYYY-MM-DD");n.days[e]||a.add(e),t=t.add(1,"day")}}}else{n={version:1,lastComputedDate:"",days:{}};let r=await w();if(!r)return v(n,t);let s=(0,i.default)(r),o=(0,i.default)(e);for(;s.isBefore(o)||s.isSame(o);)a.add(s.format("YYYY-MM-DD")),s=s.add(1,"day")}let r=await S(a);for(let[e,a]of r)e!==t&&(n.days[e]=a);n.lastComputedDate=e,await p(n);let s=r.get(t)??null,o=v(n,t,s);return y={data:o,expiresAt:Date.now()+3e5},o},v=(e,t,n)=>{let a=[],r=[],s={},i={},o={},u=0,l=0,c="",d={sessionId:"",duration:0,messageCount:0,timestamp:""},f=Object.entries(e.days);for(let[e,m]of(n&&f.push([t,n]),f.sort((e,t)=>e[0].localeCompare(t[0])),f)){!c&&m.messageCount>0&&(c=e),a.push({date:e,messageCount:m.messageCount,sessionCount:m.sessionCount,toolCallCount:m.toolCallCount});let t={};for(let[e,n]of Object.entries(m.modelTokens)){t[e]={input:n.input,output:n.output,cacheRead:n.cacheRead,cacheCreation:n.cacheCreation},s[e]||(s[e]={inputTokens:0,outputTokens:0,cacheReadInputTokens:0,cacheCreationInputTokens:0,webSearchRequests:0,costUSD:0,contextWindow:0,maxOutputTokens:0});let a=s[e];a.inputTokens+=n.input,a.outputTokens+=n.output,a.cacheReadInputTokens+=n.cacheRead,a.cacheCreationInputTokens+=n.cacheCreation}r.push({date:e,tokensByModel:t});let n=new Date(e).getDay();for(let[e,t]of Object.entries(m.hourCounts)){i[e]=(i[e]??0)+t;let a=`${n}-${e}`;o[a]=(o[a]??0)+t}for(let e of(u+=m.sessionCount,l+=m.messageCount,m.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:1,lastComputedDate:t,dailyActivity:a,dailyModelTokens:r,modelUsage:s,totalSessions:u,totalMessages:l,longestSession:d,firstSessionDate:c,hourCounts:i,dayHourCounts:o,totalSpeculationTimeSavedMs:0}};e.s(["collectJsonlFiles",0,c,"getStatsCache",0,$])},7991,e=>{"use strict";var t=e.i(924868),n=e.i(814747),a=e.i(446786),r=e.i(522734),s=e.i(319668),i=e.i(233405),o=e.i(713915),u=e.i(177579);let l=n.default.join(a.default.homedir(),".purplemux","stats","daily-reports"),c=async()=>{let e={};try{for(let a of(await t.default.readdir(l)))if(a.endsWith(".json"))try{let r=await t.default.readFile(n.default.join(l,a),"utf-8"),s=JSON.parse(r);s.date&&s.brief&&(e[s.date]=s)}catch{}}catch{}return e},d=async e=>{await t.default.mkdir(l,{recursive:!0}),await t.default.writeFile(n.default.join(l,`${e.date}.json`),JSON.stringify(e,null,2),"utf-8")},f=e=>{let t=a.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,u.collectJsonlFiles)(),a=[];for(let i of t){let t=[],o=[],u=0,l="";try{let n=(0,r.createReadStream)(i,{encoding:"utf-8"});for await(let a of s.default.createInterface({input:n,crlfDelay:1/0}))if(a.trim())try{let n=JSON.parse(a),r=String(n.timestamp??"");if(!r.startsWith(e))continue;o.push(r);let s=String(n.type??"");if(l||"string"!=typeof n.cwd||(l=n.cwd),"user"===s){let e=n.message;if(!e)continue;let a=e.content,s="";if("string"==typeof a)s=a.slice(0,300);else if(Array.isArray(a)){let e=[];for(let t of a)"object"==typeof t&&null!==t&&"text"===t.type&&e.push(String(t.text??"").slice(0,300));s=e.join(" | ")}if(s.includes("<command-message>")){let e=s.match(/<command-name>\/([^<]+)<\/command-name>/);s=`[Command: ${e?e[1]:"unknown"}]`}if(s.includes("<local-command-caveat>")||s.includes("<task-notification>"))continue;s.trim()&&t.push({time:r.slice(11,16),text:s.slice(0,200)})}if("assistant"===s){let e=n.message;if(!e)continue;let t=e.content;Array.isArray(t)&&(u+=t.filter(e=>"object"==typeof e&&null!==e&&"tool_use"===e.type).length)}}catch{}}catch{}if(o.length>0&&t.length>0){let e=l?f(l):n.default.basename(n.default.dirname(i));a.push({project:e,start:Math.min(...o.map(e=>new Date(e).getTime())).toString(),msgCount:t.length,toolCount:u,firstMessage:t[0].text})}}return a.sort((e,t)=>Number(e.start)-Number(t.start)),a},h=async(e,t)=>{let n=await (0,o.getShellPath)();return new Promise((a,r)=>{let s=(0,i.execFile)("claude",["-p"],{timeout:12e4,maxBuffer:1048576,env:{...process.env,PATH:n}},(e,t)=>{e?r(Error(`claude -p failed: ${e.message}`)):a(t.trim())});s.stdin?.write(`${t}
|
|
2
2
|
|
|
3
3
|
${e}`),s.stdin?.end()})},p={en:"English",ko:"Korean (한국어)",ja:"Japanese (日本語)","zh-CN":"Simplified Chinese (简体中文)","zh-TW":"Traditional Chinese (繁體中文)",de:"German (Deutsch)",es:"Spanish (Español)",fr:"French (Français)","pt-BR":"Brazilian Portuguese (Português do Brasil)",ru:"Russian (Русский)",tr:"Turkish (Türkçe)"},y=async(e,t=!1,n="en")=>{var a,r;let s,i,o;if(!t){let t=await g(e);if(t&&t.locale===n)return t}let u=await m(e);if(0===u.length){let t={date:e,brief:"No activity recorded.",detail:"",generatedAt:new Date().toISOString(),locale:n};return await d(t),t}let l=u.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:f}=(i=(r=await h(l,(a=e,s=p[n]??p.en,`Summarize the Claude session history for ${a}.
|
|
4
4
|
|
|
@@ -27,4 +27,4 @@ Rules:
|
|
|
27
27
|
|
|
28
28
|
Data:`))).match(/\[BRIEF\]\s*\n([\s\S]*?)(?=\[DETAIL\])/),o=r.match(/\[DETAIL\]\s*\n([\s\S]*?)$/),{brief:i?i[1].replace(/[\s#\-]*$/,"").trim():r.slice(0,500),detail:o?o[1].trim():""}),y={date:e,brief:c,detail:f,generatedAt:new Date().toISOString(),locale:n};return await d(y),y},g=async e=>{try{let a=await t.default.readFile(n.default.join(l,`${e}.json`),"utf-8"),r=JSON.parse(a);return r.date&&r.brief?r:null}catch{return null}};e.s(["generateDailyReport",0,y,"readAllCachedReports",0,c,"shortenCwd",0,f])}];
|
|
29
29
|
|
|
30
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__0.
|
|
30
|
+
//# sourceMappingURL=%5Broot-of-the-server%5D__0.lni9v._.js.map
|