purplemux 0.2.4 → 0.2.6
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 -70
- 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 +7 -7
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0-qfa-x._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__00nrs0h._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__03x8rds._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__04cr_m8._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__06j59n1._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__07gfnob._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__07xijrd._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__08tdlcm._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__09_6_.~._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__09gkm_6._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0_uldiw._.js +15 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0a4t.z5._.js +52 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0bo-su1._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0c-bb5d._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0dvelfj._.js +52 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0e.7isl._.js +5 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0gcec.8._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ihlt6s._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0qvunc5._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0r77-u1._.js +52 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0vi8p6v._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0w3m-oz._.js +1 -1
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0zh8xur._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0~iu3jq._.js +3 -0
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__12nr~pb._.js +1 -1
- package/.next/standalone/.next/server/chunks/{_0v81st0._.js → _0.pa6m1._.js} +1 -1
- package/.next/standalone/.next/server/chunks/_05ib7yu._.js +3 -0
- package/.next/standalone/.next/server/chunks/{_0ll-5~7._.js → _09y8.gr._.js} +1 -1
- package/.next/standalone/.next/server/chunks/{_0.5a4bu._.js → _0mwq11h._.js} +1 -1
- package/.next/standalone/.next/server/chunks/_0y4b49w._.js +3 -0
- package/.next/standalone/.next/server/chunks/_0zcb2f0._.js +3 -0
- package/.next/standalone/.next/server/chunks/{node_modules_ws_124xx2_._.js → _106a~ya._.js} +2 -2
- package/.next/standalone/.next/server/chunks/node_modules_next_dist_esm_build_templates_pages-api_00-t8sq.js +1 -1
- package/.next/standalone/.next/server/chunks/src_lib_00fhuqb._.js +3 -0
- package/.next/standalone/.next/server/chunks/src_lib_0dvlmi4._.js +15 -0
- package/.next/standalone/.next/server/chunks/src_lib_0ojl2hg._.js +52 -0
- package/.next/standalone/.next/server/chunks/src_lib_layout-store_ts_0fanx7c._.js +1 -1
- package/.next/standalone/.next/server/chunks/src_lib_status-manager_ts_003hlhy._.js +1 -13
- package/.next/standalone/.next/server/chunks/src_lib_workspace-store_ts_0vqt073._.js +1 -40
- package/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__0t9ru13._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{_0o8h1fd._.js → _0-kyl7i._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_017c8be._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{_0c1yivm._.js → _070zc_o._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_07jud1p._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_0_uqm-4._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{_0ftinmo._.js → _0ed.wmt._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_0lpqhot._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/_0pg-q18._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_0pp3e5j._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_0ttiybw._.js +18 -0
- package/.next/standalone/.next/server/chunks/ssr/_0w.1ts8._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_0w6jc9p._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/_0xp3-y6._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{_11v_6.6._.js → _0y7o.rg._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/_0ytb_c0._.js +3 -0
- package/.next/standalone/.next/server/chunks/ssr/{_02jzd5g._.js → _13gee5r._.js} +2 -2
- package/.next/standalone/.next/server/chunks/ssr/messages_de_terminal_json_[json]_cjs_05jirtw._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_en_terminal_json_[json]_cjs_0~ls3g-._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_es_terminal_json_[json]_cjs_04g2b1_._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_fr_terminal_json_[json]_cjs_0uhakya._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_ja_terminal_json_[json]_cjs_0776z4f._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_ko_terminal_json_[json]_cjs_06611.3._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_pt-BR_terminal_json_[json]_cjs_034yyg9._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_ru_terminal_json_[json]_cjs_0emk8~n._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_tr_terminal_json_[json]_cjs_0xpix8g._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_zh-CN_terminal_json_[json]_cjs_12vwl8a._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/messages_zh-TW_terminal_json_[json]_cjs_0spg5z5._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{src_components_0_aiven._.js → src_components_0_nzv1r._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{src_components_0geizrr._.js → src_components_0bqqfju._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{src_components_11_1i~k._.js → src_components_0rqxlj-._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/{src_components_12mrirb._.js → src_components_0s~.n3e._.js} +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_components_features_mobile_mobile-terminal-page_tsx_02chzch._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_components_features_workspace_terminal-page_tsx_0wuq-jl._.js +1 -1
- package/.next/standalone/.next/server/chunks/ssr/src_lib_workspace-store_ts_00x-rec._.js +10 -0
- package/.next/standalone/.next/server/middleware-build-manifest.js +70 -70
- package/.next/standalone/.next/server/pages/_app/build-manifest.json +3 -3
- package/.next/standalone/.next/server/pages/_app/client-build-manifest.json +1 -1
- package/.next/standalone/.next/server/pages/api/auth/login.js +2 -2
- package/.next/standalone/.next/server/pages/api/auth/login.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/auth/preflight.js +2 -2
- package/.next/standalone/.next/server/pages/api/auth/preflight.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/auth/setup.js +2 -2
- package/.next/standalone/.next/server/pages/api/auth/setup.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/check-claude.js +5 -1
- package/.next/standalone/.next/server/pages/api/check-claude.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/cli/tabs/[tabId]/browser/console.js +2 -2
- package/.next/standalone/.next/server/pages/api/cli/tabs/[tabId]/browser/console.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/cli/tabs/[tabId]/browser/eval.js +2 -2
- package/.next/standalone/.next/server/pages/api/cli/tabs/[tabId]/browser/eval.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/cli/tabs/[tabId]/browser/network.js +2 -2
- package/.next/standalone/.next/server/pages/api/cli/tabs/[tabId]/browser/network.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/cli/tabs/[tabId]/browser/screenshot.js +2 -2
- package/.next/standalone/.next/server/pages/api/cli/tabs/[tabId]/browser/screenshot.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/cli/tabs/[tabId]/browser/url.js +2 -2
- package/.next/standalone/.next/server/pages/api/cli/tabs/[tabId]/browser/url.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/cli/tabs/[tabId]/result.js +2 -2
- package/.next/standalone/.next/server/pages/api/cli/tabs/[tabId]/result.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/cli/tabs/[tabId]/send.js +2 -2
- package/.next/standalone/.next/server/pages/api/cli/tabs/[tabId]/send.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/cli/tabs/[tabId]/status.js +2 -2
- package/.next/standalone/.next/server/pages/api/cli/tabs/[tabId]/status.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/cli/tabs/[tabId].js +2 -2
- package/.next/standalone/.next/server/pages/api/cli/tabs/[tabId].js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/cli/tabs.js +2 -2
- package/.next/standalone/.next/server/pages/api/cli/tabs.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/cli/workspaces.js +2 -2
- package/.next/standalone/.next/server/pages/api/cli/workspaces.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/config.js +2 -2
- package/.next/standalone/.next/server/pages/api/config.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 +2 -2
- package/.next/standalone/.next/server/pages/api/layout/pane/[paneId]/tabs/[tabId]/move.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/layout/pane/[paneId]/tabs/[tabId].js +5 -5
- package/.next/standalone/.next/server/pages/api/layout/pane/[paneId]/tabs/[tabId].js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/layout/pane/[paneId]/tabs/order.js +2 -2
- package/.next/standalone/.next/server/pages/api/layout/pane/[paneId]/tabs/order.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/layout/pane/[paneId]/tabs.js +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 +2 -2
- package/.next/standalone/.next/server/pages/api/layout/pane/[paneId].js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/layout/pane.js +2 -2
- package/.next/standalone/.next/server/pages/api/layout/pane.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/layout.js +2 -2
- package/.next/standalone/.next/server/pages/api/layout.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/message-history.js +2 -2
- package/.next/standalone/.next/server/pages/api/message-history.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/preflight/runtime.js.nft.json +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.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/stats/daily-report/list.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/stats/projects.js.nft.json +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.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/status/hook.js +6 -6
- package/.next/standalone/.next/server/pages/api/status/hook.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/status/statusline.js +6 -6
- package/.next/standalone/.next/server/pages/api/status/statusline.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/timeline/sessions.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/tmux/permission-options.js +3 -2
- 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 +3 -2
- 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/workspace/[workspaceId].js +2 -2
- package/.next/standalone/.next/server/pages/api/workspace/[workspaceId].js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/workspace/active.js +2 -2
- package/.next/standalone/.next/server/pages/api/workspace/active.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/workspace/group/[groupId].js +2 -2
- package/.next/standalone/.next/server/pages/api/workspace/group/[groupId].js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/workspace/group/reorder.js +2 -2
- package/.next/standalone/.next/server/pages/api/workspace/group/reorder.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/workspace/group.js +2 -2
- package/.next/standalone/.next/server/pages/api/workspace/group.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/workspace/reorder.js +2 -2
- package/.next/standalone/.next/server/pages/api/workspace/reorder.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/workspace/validate.js +2 -2
- package/.next/standalone/.next/server/pages/api/workspace/validate.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/api/workspace.js +5 -5
- 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 +15 -15
- package/.next/standalone/.next/server/pages/index/client-build-manifest.json +1 -1
- package/.next/standalone/.next/server/pages/index/react-loadable-manifest.json +6 -6
- package/.next/standalone/.next/server/pages/index.js +8 -8
- package/.next/standalone/.next/server/pages/index.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/ja/404.html +1 -1
- package/.next/standalone/.next/server/pages/ja/500.html +1 -1
- package/.next/standalone/.next/server/pages/ko/404.html +1 -1
- package/.next/standalone/.next/server/pages/ko/500.html +1 -1
- package/.next/standalone/.next/server/pages/login/build-manifest.json +6 -6
- package/.next/standalone/.next/server/pages/login/client-build-manifest.json +1 -1
- package/.next/standalone/.next/server/pages/login.js +4 -4
- package/.next/standalone/.next/server/pages/login.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/pt-BR/404.html +1 -1
- package/.next/standalone/.next/server/pages/pt-BR/500.html +1 -1
- package/.next/standalone/.next/server/pages/reports/build-manifest.json +14 -14
- package/.next/standalone/.next/server/pages/reports/client-build-manifest.json +1 -1
- package/.next/standalone/.next/server/pages/reports.js +9 -9
- package/.next/standalone/.next/server/pages/reports.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/reset.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/ru/404.html +1 -1
- package/.next/standalone/.next/server/pages/ru/500.html +1 -1
- package/.next/standalone/.next/server/pages/stats/build-manifest.json +12 -12
- package/.next/standalone/.next/server/pages/stats/client-build-manifest.json +1 -1
- package/.next/standalone/.next/server/pages/stats.js +9 -9
- package/.next/standalone/.next/server/pages/stats.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/tools-required/build-manifest.json +4 -4
- package/.next/standalone/.next/server/pages/tools-required/client-build-manifest.json +1 -1
- package/.next/standalone/.next/server/pages/tools-required.js +4 -4
- 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 +13 -13
- package/.next/standalone/.next/server/pages/webview/client-build-manifest.json +1 -1
- package/.next/standalone/.next/server/pages/webview.js +6 -6
- package/.next/standalone/.next/server/pages/webview.js.nft.json +1 -1
- package/.next/standalone/.next/server/pages/zh-CN/404.html +1 -1
- package/.next/standalone/.next/server/pages/zh-CN/500.html +1 -1
- package/.next/standalone/.next/server/pages/zh-TW/404.html +1 -1
- package/.next/standalone/.next/server/pages/zh-TW/500.html +1 -1
- package/.next/standalone/.next/static/{CjJlqsAWYyyu76AJtHaqt → X30D5nlXld8jLdlpsowJj}/_buildManifest.js +6 -6
- package/.next/standalone/.next/static/chunks/{11tnyk0iystp1.js → 0--r5y9cw3.0z.js} +1 -1
- package/.next/standalone/.next/static/chunks/{08.6.1cg_x8r-.js → 00gxls80r--_0.js} +6 -6
- package/.next/standalone/.next/static/chunks/{0w0qmu364g~xt.js → 01rmp.m_ls7z_.js} +1 -1
- package/.next/standalone/.next/static/chunks/03y_zdpu9ete~.js +16 -0
- package/.next/standalone/.next/static/chunks/{0zmym5gg0bnkg.js → 06ak74s111wx-.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0g-71jn3elu8f.js → 08d6vee5l~1wn.js} +1 -1
- package/.next/standalone/.next/static/chunks/{16.twr9cx.kle.js → 08gfz_nte45du.js} +1 -1
- package/.next/standalone/.next/static/chunks/{00s78xqkxglkv.js → 0a1xt.enr50l5.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0p~_~afvrxx99.js → 0am7rh7xdv5lw.js} +3 -3
- package/.next/standalone/.next/static/chunks/{0cmg_jvd.7c43.js → 0awrd.oo446gi.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0._2l5v1hwkfn.js → 0cuy2cz7-e4u3.js} +12 -12
- package/.next/standalone/.next/static/chunks/{09lb6md956bhb.js → 0eu25r354hciy.js} +1 -1
- package/.next/standalone/.next/static/chunks/{0thg_6bh34-xa.js → 0f3q6qhpk.i_r.js} +1 -1
- package/.next/standalone/.next/static/chunks/0gfhd.gsbt9qg.js +1 -0
- package/.next/standalone/.next/static/chunks/0ic.mcu6-9din.js +1 -0
- package/.next/standalone/.next/static/chunks/0k4b.~5c4nvtm.js +1 -0
- package/.next/standalone/.next/static/chunks/{0q9y8zysz~put.js → 0ox.7nphcgp6k.js} +15 -15
- package/.next/standalone/.next/static/chunks/{13j5zp717ie6d.js → 0px6~g-besoaa.js} +13 -13
- package/.next/standalone/.next/static/chunks/{0batq-3sj.qi1.js → 0qbonuf--0q6w.js} +14 -14
- package/.next/standalone/.next/static/chunks/0qqsez8ir1.fs.js +1 -0
- package/.next/standalone/.next/static/chunks/{0pxbg4s8a4y54.js → 0rb41e1r1urhx.js} +1 -1
- package/.next/standalone/.next/static/chunks/0uii4rziiew3_.js +1 -0
- package/.next/standalone/.next/static/chunks/0vtkq~yk_1~gv.js +1 -0
- package/.next/standalone/.next/static/chunks/0vx2hhzc46h_7.js +1 -0
- package/.next/standalone/.next/static/chunks/0xpr6vw-p8oxk.js +1 -0
- package/.next/standalone/.next/static/chunks/{0s7sv9xe3e1c9.js → 0zn1jt__-t51p.js} +1 -1
- package/.next/standalone/.next/static/chunks/0zrhxc96zwjuv.js +1 -0
- package/.next/standalone/.next/static/chunks/0z~yy1lqrvp_a.js +1 -0
- package/.next/standalone/.next/static/chunks/0~cgr_3dpx0vl.js +1 -0
- package/.next/standalone/.next/static/chunks/{0b.a4_8picceu.js → 0~g0t2q6o3r-7.js} +4 -4
- package/.next/standalone/.next/static/chunks/0~u-xp3xwzx8m.js +1 -0
- package/.next/standalone/.next/static/chunks/14if5vtky.3sn.js +1 -0
- package/.next/standalone/.next/static/chunks/15i_n03eg5uyp.js +1 -0
- package/.next/standalone/.next/static/chunks/{0r69~xx12-zsq.js → 167xy7alpfxbv.js} +1 -1
- package/.next/standalone/.next/static/chunks/1756nfyulu.9h.css +1 -0
- package/.next/standalone/.next/static/chunks/{turbopack-0vv2_r1br0hyc.js → turbopack-092b2t67-z3ds.js} +1 -1
- package/.next/standalone/.next/static/chunks/{turbopack-06o7eaf8n1nth.js → turbopack-0edd0f8i0vas2.js} +1 -1
- package/.next/standalone/.next/static/chunks/{turbopack-0-ooli-pimh-6.js → turbopack-0ser1ty-sh2jk.js} +1 -1
- package/.next/standalone/.next/static/chunks/{turbopack-0sa282u154fdk.js → turbopack-0thw2b7slv80v.js} +1 -1
- package/.next/standalone/.next/static/chunks/{turbopack-0duv.5cir9jm5.js → turbopack-0zouy.~ram.7g.js} +1 -1
- package/.next/standalone/.next/static/chunks/{turbopack-0f2cool0ub~vp.js → turbopack-10_7kfeyza-k-.js} +1 -1
- package/.next/standalone/.next/static/chunks/{turbopack-0q6z-bk-atg2w.js → turbopack-189zx7uuxfxm6.js} +1 -1
- package/.next/standalone/messages/de/terminal.json +4 -0
- package/.next/standalone/messages/en/terminal.json +4 -0
- package/.next/standalone/messages/es/terminal.json +4 -0
- package/.next/standalone/messages/fr/terminal.json +4 -0
- package/.next/standalone/messages/ja/terminal.json +4 -0
- package/.next/standalone/messages/ko/terminal.json +4 -0
- package/.next/standalone/messages/pt-BR/terminal.json +4 -0
- package/.next/standalone/messages/ru/terminal.json +4 -0
- package/.next/standalone/messages/tr/terminal.json +4 -0
- package/.next/standalone/messages/zh-CN/terminal.json +4 -0
- package/.next/standalone/messages/zh-TW/terminal.json +4 -0
- package/.next/standalone/package.json +1 -1
- package/.next/standalone/server.js +1 -1
- package/.next/standalone/src/config/tmux.conf +17 -7
- package/.next/standalone/src/lib/providers/claude/index.ts +44 -0
- package/.next/standalone/src/pages/api/layout/pane/[paneId]/tabs/index.ts +13 -6
- package/README.de.md +1 -1
- package/README.es.md +1 -1
- package/README.fr.md +1 -1
- package/README.ja.md +1 -1
- package/README.ko.md +1 -1
- package/README.md +1 -1
- package/README.pt-BR.md +1 -1
- package/README.ru.md +1 -1
- package/README.tr.md +1 -1
- package/README.zh-CN.md +1 -1
- package/README.zh-TW.md +1 -1
- package/dist/server.js +970 -851
- package/package.json +1 -1
- package/src/config/tmux.conf +17 -7
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__01.~37j._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__016s4a9._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__03l15.f._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__05ij_ys._.js +0 -42
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__06h3gzy._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0auutl5._.js +0 -5
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0d-inw8._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0i-jyh3._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0l~_wd0._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0ovn6yp._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__0un_g-o._.js +0 -3
- package/.next/standalone/.next/server/chunks/[root-of-the-server]__12ksl6n._.js +0 -42
- package/.next/standalone/.next/server/chunks/_03-duro._.js +0 -3
- package/.next/standalone/.next/server/chunks/_07097f~._.js +0 -3
- package/.next/standalone/.next/server/chunks/_0z7d6.z._.js +0 -3
- package/.next/standalone/.next/server/chunks/src_lib_0p.xsqi._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_016o9_-._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_0a64og5._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_0ccg0_z._.js +0 -18
- package/.next/standalone/.next/server/chunks/ssr/_0fnzfs-._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_0hat6~g._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_0hp8_ck._.js +0 -3
- package/.next/standalone/.next/server/chunks/ssr/_0hq29bt._.js +0 -3
- package/.next/standalone/.next/static/chunks/02ncyh-v8g~cs.css +0 -1
- package/.next/standalone/.next/static/chunks/08d4u-qlylmde.js +0 -1
- package/.next/standalone/.next/static/chunks/08f708~_7uy_i.js +0 -1
- package/.next/standalone/.next/static/chunks/08ojbbzi2ergt.js +0 -16
- package/.next/standalone/.next/static/chunks/0cvx059r5hgj1.js +0 -1
- package/.next/standalone/.next/static/chunks/0gn-f6_m696k0.js +0 -1
- package/.next/standalone/.next/static/chunks/0u.snf3d~5nvq.js +0 -1
- package/.next/standalone/.next/static/chunks/0v.l~.~v98c2c.js +0 -1
- package/.next/standalone/.next/static/chunks/0wu~4k-l8otuy.js +0 -1
- package/.next/standalone/.next/static/chunks/0y441gn709g7u.js +0 -1
- package/.next/standalone/.next/static/chunks/0yb~gw6ukzdmo.js +0 -1
- package/.next/standalone/.next/static/chunks/0yg3hj1g~k1ip.js +0 -1
- package/.next/standalone/.next/static/chunks/0~c6h8j7ut2ca.js +0 -1
- package/.next/standalone/.next/static/chunks/13i76gpwz2k5a.js +0 -1
- package/.next/standalone/.next/static/chunks/15m4y6otktj8z.js +0 -1
- package/.next/standalone/.next/static/chunks/17ebdp-_o5o30.js +0 -1
- /package/.next/standalone/.next/static/{CjJlqsAWYyyu76AJtHaqt → X30D5nlXld8jLdlpsowJj}/_clientMiddlewareManifest.js +0 -0
- /package/.next/standalone/.next/static/{CjJlqsAWYyyu76AJtHaqt → X30D5nlXld8jLdlpsowJj}/_ssgManifest.js +0 -0
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
module.exports=[270406,(e,t,a)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},446786,(e,t,a)=>{t.exports=e.x("os",()=>require("os"))},814747,(e,t,a)=>{t.exports=e.x("path",()=>require("path"))},924868,(e,t,a)=>{t.exports=e.x("fs/promises",()=>require("fs/promises"))},130146,(e,t,a)=>{t.exports=e.x("pino-28069d5257187539",()=>require("pino-28069d5257187539"))},224361,(e,t,a)=>{t.exports=e.x("util",()=>require("util"))},233405,(e,t,a)=>{t.exports=e.x("child_process",()=>require("child_process"))},666680,(e,t,a)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},25146,e=>{"use strict";var t=e.i(130146),a=e.i(814747),r=e.i(446786);let i=a.default.join(r.default.homedir(),".purplemux","logs"),s=process.env.LOG_LEVEL||"info",n=(e=>{if(!e)return{};let t={};for(let a of e.split(",")){let[e,r]=a.split("=").map(e=>e.trim());e&&r&&(t[e]=r)}return t})(process.env.LOG_LEVELS),o=["trace","debug","info","warn","error","fatal"],l=globalThis;if(!l.__ptRootLogger){let e=[s,...Object.values(n)].reduce((e,t)=>o.indexOf(t)<o.indexOf(e)?t:e,"fatal");l.__ptRootLogger=(0,t.default)({level:e,transport:{targets:[{target:"pino-roll",level:e,options:{file:a.default.join(i,"purplemux"),frequency:"daily",dateFormat:"yyyy-MM-dd",limit:{count:7},mkdir:!0}},{target:"pino-pretty",level:e,options:{colorize:!0,ignore:"pid,hostname,module",translateTime:"HH:MM:ss",messageFormat:"[{module}] {msg}"}}]}})}let u=l.__ptRootLogger;e.s(["createLogger",0,e=>{let t=u.child({module:e});return t.level=n[e]??s,t}])},597789,965898,e=>{"use strict";let t=process.env.__PMUX_PRISTINE_ENV,a=Object.freeze(t?JSON.parse(t):{...process.env});t||(process.env.__PMUX_PRISTINE_ENV=JSON.stringify(a)),e.s(["PRISTINE_ENV",0,a],965898);let r=new Set(["HOME","USER","LOGNAME","SHELL","PATH","TERM","COLORTERM","LANG","TMPDIR","SSH_AUTH_SOCK","SSH_CONNECTION","SSH_TTY","DISPLAY","WAYLAND_DISPLAY","XDG_RUNTIME_DIR","TZ"]),i=["LC_"],s=e=>r.has(e)||i.some(t=>e.startsWith(t)),n={TERM:"xterm-256color",COLORTERM:"truecolor"},o=()=>{let e={};for(let[t,r]of Object.entries(a))void 0!==r&&s(t)&&(e[t]=r);return{...e,...n}},l=e=>`'${e.replace(/'/g,"'\\''")}'`,u=()=>a.SHELL||"/bin/bash";e.s(["buildShellEnv",0,()=>o(),"buildShellLaunchCommand",0,()=>{let e=Object.entries(o()).map(([e,t])=>`${e}=${l(t)}`).join(" ");return`env -i TMUX="$TMUX" TMUX_PANE="$TMUX_PANE" ${e} ${l(u())} -l`},"defaultShell",0,u],597789)},44014,e=>{"use strict";let t,a;var r=e.i(666680);e.s(["nanoid",0,function(e=21){var i;i=e|=0,!t||t.length<i?(t=Buffer.allocUnsafe(128*i),r.webcrypto.getRandomValues(t),a=0):a+i>t.length&&(r.webcrypto.getRandomValues(t),a=0),a+=i;let s="";for(let r=a-e;r<a;r++)s+="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"[63&t[r]];return s}],44014)},459015,544538,e=>{"use strict";var t=e.i(233405),a=e.i(924868),r=e.i(224361),i=e.i(814747),s=e.i(44014),n=e.i(965898),o=e.i(597789),l=e.i(25146);process.platform;let u="linux"===process.platform;e.s(["isLinux",0,u],544538);let c=(0,l.createLogger)("terminal"),p=(0,r.promisify)(t.execFile),d="purple",m=i.default.join(process.env.__PMUX_APP_DIR_UNPACKED||process.env.__PMUX_APP_DIR||process.cwd(),"src","config","tmux.conf"),w=async()=>{try{let{stdout:e}=await p("tmux",["-L",d,"ls","-F","#{session_name}"],{timeout:5e3});return e.trim().split("\n").map(e=>e.trim()).filter(e=>e.startsWith("pt-"))}catch{return[]}},f=async(e,t,a,r)=>{let i=(0,o.buildShellLaunchCommand)();await p("tmux",["-u","-L",d,"-f",m,"new-session","-d","-s",e,"-x",String(t),"-y",String(a),i],{timeout:5e3,cwd:r||n.PRISTINE_ENV.HOME||"/"}),await I(),c.debug(`tmux session created: ${e} (cols: ${t}, rows: ${a})`)},y=e=>new Promise(t=>setTimeout(t,e)),h=async e=>{if(!await g(e))return;c.debug(`killSession start: ${e}`);let t=await L(e);if(t)try{c.debug(`SIGTERM → process group ${t}: ${e}`),process.kill(-t,"SIGTERM")}catch{}try{await p("tmux",["-L",d,"kill-session","-t",e],{timeout:5e3})}catch{}for(let t=0;t<5;t++){if(!await g(e))return void c.debug(`killSession done (SIGTERM): ${e}`);await y(200)}if(c.warn(`session survived SIGTERM, escalating to SIGKILL: ${e}`),t)try{c.debug(`SIGKILL → process group ${t}: ${e}`),process.kill(-t,"SIGKILL")}catch{}try{await p("tmux",["-L",d,"kill-session","-t",e],{timeout:5e3})}catch{}for(let t=0;t<3;t++){if(!await g(e))return void c.debug(`killSession done (SIGKILL): ${e}`);await y(200)}c.warn(`tmux session still alive after kill: ${e}`)},g=async e=>{try{return await p("tmux",["-L",d,"has-session","-t",e],{timeout:5e3}),!0}catch{return!1}},k=async()=>{},x=async()=>{await k();let e=await w();e.length>0&&e.forEach(e=>{c.debug(`existing tmux session found: ${e}`)})},b=async e=>{if(u)try{return await a.default.readlink(`/proc/${e}/cwd`)}catch{return null}try{let{stdout:t}=await p("lsof",["-a","-p",String(e),"-d","cwd","-Fn"],{timeout:5e3}),a=t.split("\n").find(e=>e.startsWith("n/"));return a?a.slice(1):null}catch{return null}},S=async e=>{let t=await L(e);if(t){let e=await b(t);if(e)return e}try{let{stdout:t}=await p("tmux",["-L",d,"display-message","-p","-t",e,"#{pane_current_path}"],{timeout:5e3});return t.trim()||null}catch{return null}},L=async e=>{try{let{stdout:t}=await p("tmux",["-L",d,"display-message","-p","-t",e,"#{pane_pid}"],{timeout:5e3}),a=parseInt(t.trim(),10);return Number.isNaN(a)?null:a}catch{return null}},I=async()=>{try{await p("tmux",["-L",d,"source-file",m],{timeout:5e3})}catch{}},_=async e=>{try{let{stdout:t}=await p("tmux",["-L",d,"list-panes","-t",e,"-F","#{pane_current_command}"],{timeout:5e3});return t.trim()||null}catch{return null}},v=async()=>{try{let{stdout:e}=await p("tmux",["-L",d,"list-panes","-a","-F","#{session_name} #{pane_current_command} #{pane_current_path} #{pane_pid} #{window_activity}"],{timeout:5e3}),t=new Map;for(let a of e.trim().split("\n")){if(!a)continue;let[e,r,i,s,n]=a.split(" ");if(e&&r){let a=parseInt(s,10),o=parseInt(n,10);t.set(e,{command:r,path:i||"",pid:Number.isNaN(a)?0:a,windowActivity:Number.isNaN(o)?0:o})}}return t}catch{return new Map}},$=new Set(["bash","zsh","fish","sh","dash"]),N=async e=>{let t=await _(e);return t?{isSafe:$.has(t),processName:t}:{isSafe:!1,processName:"unknown"}},P=async e=>{try{let{stdout:t}=await p("tmux",["-L",d,"display-message","-p","-t",e,"#{pane_title}"],{timeout:5e3});return t.trim()||null}catch{return null}},T=async e=>{await p("tmux",["-L",d,"copy-mode","-q","-t",e],{timeout:5e3}).catch(()=>{})},W=async(e,t)=>{await T(e),await p("tmux",["-L",d,"send-keys","-t",e,t,"Enter"],{timeout:5e3})},E=async(e,t)=>{await T(e),await p("tmux",["-L",d,"send-keys","-t",e,t],{timeout:5e3})},C=async(e,t)=>{await T(e),await p("tmux",["-L",d,"send-keys","-t",e,"-l",`\x1b[200~${t}\x1b[201~`],{timeout:5e3}),await p("tmux",["-L",d,"send-keys","-t",e,"Enter"],{timeout:5e3}),await new Promise(e=>setTimeout(e,600)),await p("tmux",["-L",d,"send-keys","-t",e,"Enter"],{timeout:5e3})},A=async e=>{try{let{stdout:t}=await p("tmux",["-L",d,"display-message","-p","-t",e,"#{pane_current_path} #{pane_current_command} #{pane_pid} #{pane_width} #{pane_height} #{session_created}"],{timeout:5e3}),[a,r,i,s,n,o]=t.trim().split(" ");return{cwd:a||null,command:r||null,pid:i&&parseInt(i,10)||null,width:s&&parseInt(s,10)||null,height:n&&parseInt(n,10)||null,sessionCreated:o&&parseInt(o,10)||null}}catch{return{cwd:null,command:null,pid:null,width:null,height:null,sessionCreated:null}}},O=new Set(["node","python","python3","ruby","perl","deno","bun"]),D=async()=>{try{await p("tmux",["-L",d,"kill-server"],{timeout:5e3}),c.debug("tmux server killed")}catch{}},F=async e=>{try{let{stdout:t}=await p("tmux",["-L",d,"capture-pane","-p","-t",e],{timeout:5e3});return t}catch{return null}},M=async(e,t)=>{try{let{stdout:a}=await p("tmux",["-L",d,"capture-pane","-p","-S",`-${t}`,"-t",e],{timeout:5e3});return a}catch{return null}},j=async e=>{if(u){let t=[];return await Promise.all(e.map(async e=>{try{for(let r of(await a.default.readFile(`/proc/${e}/task/${e}/children`,"utf-8")).trim().split(/\s+/)){let e=parseInt(r,10);Number.isNaN(e)||t.push(e)}}catch{}})),t}try{let{stdout:t}=await p("pgrep",["-P",e.join(",")],{timeout:5e3});return t.trim().split("\n").map(e=>parseInt(e,10)).filter(e=>!Number.isNaN(e))}catch{return[]}},R=async e=>{let t=[],a=[e];for(;a.length>0;){let e=await j(a);if(0===e.length)break;t.push(...e),a=e}return t},G=async e=>{try{let t=new Set(e),{stdout:a}=await p("ss",["-tlnp"],{timeout:5e3}),r=new Set;for(let e of a.split("\n")){let a=e.match(/pid=(\d+)/g);if(!a||!a.some(e=>t.has(parseInt(e.replace("pid=",""),10))))continue;let i=e.match(/:(\d+)\s/);i&&r.add(parseInt(i[1],10))}return[...r].sort((e,t)=>e-t)}catch{return[]}},q=async e=>{let t=await R(e);if(0===t.length)return[];if(u)return G(t);try{let{stdout:e}=await p("lsof",["-a","-p",t.join(","),"-i","-sTCP:LISTEN","-P","-Fn"],{timeout:5e3}),a=new Set;for(let t of e.split("\n"))if(t.startsWith("n")){let e=t.match(/:(\d+)$/);e&&a.add(parseInt(e[1],10))}return[...a].sort((e,t)=>e-t)}catch{return[]}},H=async e=>{let t=await L(e);if(!t)return null;try{let{stdout:e}=await p("pgrep",["-n","-P",String(t)],{timeout:5e3}),a=e.trim();if(!a)return null;let{stdout:r}=await p("ps",["-o","args=","-p",a],{timeout:5e3}),s=r.trim();if(!s)return null;let n=s.split(/\s+/);if(0===n.length)return s;if(n[0]=i.default.basename(n[0]),O.has(n[0])&&n.length>1){let e=i.default.basename(n[1]).replace(/\.(c|m)?js$/,"");n.splice(0,2,e)}return n.join(" ")}catch{return null}};e.s(["SAFE_SHELLS",0,$,"applyConfig",0,I,"capturePaneContent",0,F,"capturePaneContentWithHistory",0,M,"checkTerminalProcess",0,N,"createSession",0,f,"defaultSessionName",0,()=>`pt-${(0,s.nanoid)(6)}-${(0,s.nanoid)(6)}-${(0,s.nanoid)(6)}`,"exitCopyMode",0,T,"getAllPanesInfo",0,v,"getLastCommand",0,H,"getListeningPorts",0,q,"getPaneCurrentCommand",0,_,"getPaneDetailInfo",0,A,"getPaneTitle",0,P,"getSessionCwd",0,S,"getSessionPanePid",0,L,"hasSession",0,g,"killServer",0,D,"killSession",0,h,"listSessions",0,w,"scanSessions",0,x,"sendBracketedPaste",0,C,"sendKeys",0,W,"sendRawKeys",0,E,"workspaceSessionName",0,(e,t,a)=>`pt-${e}-${t}-${a}`],459015)},688947,(e,t,a)=>{t.exports=e.x("stream",()=>require("stream"))},406461,(e,t,a)=>{t.exports=e.x("zlib",()=>require("zlib"))},254799,(e,t,a)=>{t.exports=e.x("crypto",()=>require("crypto"))},524836,(e,t,a)=>{t.exports=e.x("https",()=>require("https"))},921517,(e,t,a)=>{t.exports=e.x("http",()=>require("http"))},504446,(e,t,a)=>{t.exports=e.x("net",()=>require("net"))},755004,(e,t,a)=>{t.exports=e.x("tls",()=>require("tls"))},792509,(e,t,a)=>{t.exports=e.x("url",()=>require("url"))},500874,(e,t,a)=>{t.exports=e.x("buffer",()=>require("buffer"))},427699,(e,t,a)=>{t.exports=e.x("events",()=>require("events"))},666126,e=>{"use strict";e.i(478319);var t=e.i(220951);(0,e.i(25146).createLogger)("sync");let a=globalThis;a.__ptSyncClients||(a.__ptSyncClients=new Set);let r=a.__ptSyncClients;e.s(["broadcastSync",0,e=>{let a=JSON.stringify(e);for(let e of r)e.readyState===t.WebSocket.OPEN&&e.bufferedAmount<1048576&&e.send(a)}])},322429,160874,e=>{"use strict";var t=e.i(924868),a=e.i(814747),r=e.i(446786),i=e.i(44014),s=e.i(459015),n=e.i(25146),o=e.i(666126),l=e.i(825265),u=e.i(804767);(0,n.createLogger)("claude-prompt");let c=e=>a.default.join((0,l.resolveLayoutDir)(e),"claude-prompt.md"),p=async e=>{let r=c(e.id);await t.default.mkdir(a.default.dirname(r),{recursive:!0});let i=`# purplemux context
|
|
2
|
-
|
|
3
|
-
You are running inside a purplemux workspace tab.
|
|
4
|
-
|
|
5
|
-
- **Workspace ID**: \`${e.id}\`
|
|
6
|
-
|
|
7
|
-
Use \`purplemux workspaces\` if you need the workspace name or directories.
|
|
8
|
-
|
|
9
|
-
## purplemux CLI
|
|
10
|
-
|
|
11
|
-
The \`purplemux\` CLI lets you inspect and control other tabs in this workspace.
|
|
12
|
-
It reads port and token from \`~/.purplemux/{port,cli-token}\` automatically,
|
|
13
|
-
so no environment setup is needed.
|
|
14
|
-
|
|
15
|
-
### Commands
|
|
16
|
-
|
|
17
|
-
\`\`\`bash
|
|
18
|
-
purplemux workspaces # list all workspaces
|
|
19
|
-
purplemux tab list -w ${e.id} # list tabs in this workspace
|
|
20
|
-
purplemux tab create -w ${e.id} [-n NAME] [-t TYPE] # create a tab (type: terminal | claude-code | web-browser | diff)
|
|
21
|
-
purplemux tab send -w ${e.id} TAB_ID CONTENT... # send input to a tab
|
|
22
|
-
purplemux tab status -w ${e.id} TAB_ID # tab status
|
|
23
|
-
purplemux tab result -w ${e.id} TAB_ID # capture current pane content
|
|
24
|
-
purplemux tab close -w ${e.id} TAB_ID # close a tab
|
|
25
|
-
\`\`\`
|
|
26
|
-
|
|
27
|
-
For the full HTTP API reference (including endpoint paths and payloads),
|
|
28
|
-
run:
|
|
29
|
-
|
|
30
|
-
\`\`\`bash
|
|
31
|
-
purplemux api-guide
|
|
32
|
-
\`\`\`
|
|
33
|
-
|
|
34
|
-
### When to use
|
|
35
|
-
|
|
36
|
-
- Delegate work to another tab when a task benefits from isolation
|
|
37
|
-
(long-running builds, different project context, parallel exploration).
|
|
38
|
-
- Poll \`status\` and read \`result\` to verify delegated work.
|
|
39
|
-
- Prefer small, scoped tabs over cramming everything into one session.
|
|
40
|
-
`;try{if(await t.default.readFile(r,"utf-8")===i)return r}catch{}return await t.default.writeFile(r,i,"utf-8"),r};e.s(["getClaudePromptPath",0,c,"writeClaudePromptFile",0,p],160874);let d=(0,n.createLogger)("workspace"),m="Workspace ",w=a.default.join(r.default.homedir(),".purplemux"),f=a.default.join(w,"workspaces.json"),y=a.default.join(w,"layout.json"),h=a.default.join(w,"tabs.json"),g=globalThis;g.__purplemuxWorkspaceLock||(g.__purplemuxWorkspaceLock=Promise.resolve());let k=async e=>{let t,a=new Promise(e=>{t=e}),r=g.__purplemuxWorkspaceLock;g.__purplemuxWorkspaceLock=a,await r;try{return await e()}finally{t()}},x=()=>({workspaces:[],groups:[],sidebarCollapsed:!1,sidebarWidth:240,updatedAt:new Date().toISOString()}),b=e=>(e.groups||(e.groups=[]),e.groups),S=async()=>{let e;try{e=await t.default.readFile(f,"utf-8")}catch{return null}try{let t=JSON.parse(e);for(let e of t.workspaces)!e.directories&&e.directory&&(e.directories=[e.directory],delete e.directory),delete e.order;for(let e of(Array.isArray(t.groups)||(t.groups=[]),t.groups))delete e.order;let a=new Set(t.groups.map(e=>e.id));for(let e of t.workspaces)e.groupId&&!a.has(e.groupId)&&(e.groupId=null);return t}catch{d.warn("Failed to parse workspaces.json, starting empty");try{await t.default.copyFile(f,f.replace(/\.json$/,".json.bak"))}catch{}return null}},L=async e=>{let a;a=b(e),e.workspaces=((e,t)=>{let a=new Set(t.map(e=>e.id)),r=new Map,i=[];for(let t of e){let e=t.groupId??null;if(e&&a.has(e)){let a=r.get(e)??[];a.push(t),r.set(e,a)}else i.push(t)}let s=[];for(let e of t){let t=r.get(e.id);t&&s.push(...t)}return s.push(...i),s})(e.workspaces,a);let{workspaces:r,groups:i,activeWorkspaceId:s,sidebarCollapsed:n,sidebarWidth:l}=e,u=JSON.stringify({workspaces:r,groups:i??[],activeWorkspaceId:s,sidebarCollapsed:n,sidebarWidth:l});if(g.__purplemuxWorkspacesContentCache===u)return;e.updatedAt=new Date().toISOString();let c=f+".tmp";try{await t.default.writeFile(c,JSON.stringify(e,null,2),{mode:384}),await t.default.rename(c,f)}catch(e){throw await t.default.unlink(c).catch(()=>{}),e}g.__purplemuxWorkspacesContentCache=u,(0,o.broadcastSync)({type:"workspace"})},I=async()=>{let e=await (0,l.readLayoutFile)(y);if(!e)return null;let a="ws-default";await t.default.mkdir((0,l.resolveLayoutDir)(a),{recursive:!0}),await (0,l.writeLayoutFile)(e,(0,l.resolveLayoutFile)(a));let i={workspaces:[{id:a,name:"default",directories:[r.default.homedir()]}],sidebarCollapsed:!1,sidebarWidth:240,updatedAt:e.updatedAt||new Date().toISOString()};return await L(i),d.info("Phase 4 layout.json → Workspace 'default' migration complete"),i},_=async()=>{try{let e=await t.default.readFile(h,"utf-8"),a=JSON.parse(e);if(!Array.isArray(a.tabs)||0===a.tabs.length)return null;let r=`pane-${(0,i.nanoid)(6)}`,s={root:{type:"pane",id:r,tabs:a.tabs,activeTabId:a.activeTabId??null},activePaneId:r,updatedAt:new Date().toISOString()},n=y+".tmp";try{await t.default.writeFile(n,JSON.stringify(s,null,2),{mode:384}),await t.default.rename(n,y)}catch(e){throw await t.default.unlink(n).catch(()=>{}),e}return d.info("tabs.json → layout.json migration complete"),await I()}catch{return null}},v=async()=>{await t.default.mkdir(a.default.join(w,"workspaces"),{recursive:!0});let e=await S();if(!e&&(await t.default.access(y).then(()=>!0).catch(()=>!1)?e=await I():await t.default.access(h).then(()=>!0).catch(()=>!1)&&(e=await _())),!e){let t=x();await L(t),e=t,d.info("Initial workspaces.json created")}if(0===e.workspaces.length)return;let r=await (0,s.listSessions)();for(let t of e.workspaces){let e=(0,l.resolveLayoutFile)(t.id),a=await (0,l.readLayoutFile)(e);if(!a){d.warn(`Workspace '${t.name}': layout.json corrupted, reset to default pane`),a=await (0,l.createDefaultLayout)(t.id,t.directories[0]),await (0,l.writeLayoutFile)(a,e);continue}let i=(0,u.collectAllTabs)(a.root).map(e=>e.sessionName),s=`pt-${t.id}-`,n=r.filter(e=>i.includes(e)||e.startsWith(s));try{await (0,l.crossCheckLayout)(a,n,t.id,t.directories[0])&&await (0,l.writeLayoutFile)(a,e)}catch(e){d.error(`Workspace '${t.name}': tmux consistency check failed: ${e instanceof Error?e.message:e}`)}}},$=async()=>{let e=await S();return e?{workspaces:e.workspaces,groups:e.groups??[],activeWorkspaceId:e.activeWorkspaceId,sidebarCollapsed:e.sidebarCollapsed,sidebarWidth:e.sidebarWidth}:{workspaces:[],groups:[],sidebarCollapsed:!1,sidebarWidth:220}},N=async()=>{let e=await S();return e?.activeWorkspaceId&&e.workspaces.some(t=>t.id===e.activeWorkspaceId)?e.activeWorkspaceId:e?.workspaces[0]?.id??null},P=async e=>{let t=await S();return t?.workspaces.find(t=>t.id===e)},T=async(e,a,r)=>k(async()=>{let s;try{s=await t.default.stat(e)}catch{throw Error("Directory does not exist")}if(!s.isDirectory())throw Error("Please enter a directory path, not a file");let n=await S()??x(),o=`ws-${(0,i.nanoid)(6)}`,u=a?.trim()||(e=>{let t=0;for(let a of e)if(a.name.startsWith(m)){let e=parseInt(a.name.slice(m.length),10);e>t&&(t=e)}return`${m}${t+1}`})(n.workspaces),c=await (0,l.createDefaultLayout)(o,e,r);await t.default.mkdir((0,l.resolveLayoutDir)(o),{recursive:!0}),await (0,l.writeLayoutFile)(c,(0,l.resolveLayoutFile)(o));let w={id:o,name:u,directories:[e]};return n.workspaces.push(w),await L(n),await p(w),d.debug(`Created: ${o} (${u}, ${e})`),w}),W=async e=>k(async()=>{let t=await S()??x(),a=t.workspaces.findIndex(t=>t.id===e);if(-1===a)return!1;let r=t.workspaces[a],i=await (0,l.readLayoutFile)((0,l.resolveLayoutFile)(e));if(i)for(let e of(0,u.collectAllTabs)(i.root))try{await (0,s.killSession)(e.sessionName)}catch{}try{await (0,l.removeLayoutFile)(e)}catch{}return t.workspaces.splice(a,1),await L(t),d.info(`Deleted: ${e} (${r.name})`),!0}),E=async(e,t)=>k(async()=>{let a=await S();if(!a)return null;let r=a.workspaces.find(t=>t.id===e);return r?(r.name=t,await L(a),await p(r),d.debug(`Renamed: ${e} → "${t}"`),{...r}):null}),C=async e=>k(async()=>{let t=await S()??x();void 0!==e.activeWorkspaceId&&(t.activeWorkspaceId=e.activeWorkspaceId),void 0!==e.sidebarCollapsed&&(t.sidebarCollapsed=e.sidebarCollapsed),void 0!==e.sidebarWidth&&(t.sidebarWidth=e.sidebarWidth),await L(t)}),A=async(e,t)=>k(async()=>{let a=await S();if(!a)return;let r=a.workspaces.find(t=>t.id===e);r&&JSON.stringify(r.directories)!==JSON.stringify(t)&&(r.directories=t,await L(a),await p(r))}),O=async e=>k(async()=>{let t=await S()??x(),a=new Map(t.workspaces.map(e=>[e.id,e])),r=new Set((t.groups??[]).map(e=>e.id)),i=[];for(let t of e){let e=a.get(t.id);if(!e)return!1;void 0!==t.groupId&&(e.groupId=t.groupId&&r.has(t.groupId)?t.groupId:null),i.push(e)}return i.length===t.workspaces.length&&(t.workspaces=i,await L(t),!0)}),D=async e=>k(async()=>{let t=await S()??x(),a=b(t),r=e.trim()||`Group ${a.length+1}`,s={id:`grp-${(0,i.nanoid)(6)}`,name:r,collapsed:!1};return a.push(s),await L(t),d.debug(`Group created: ${s.id} (${s.name})`),s}),F=async(e,t)=>k(async()=>{let a=await S();if(!a)return null;let r=(a.groups??[]).find(t=>t.id===e);if(!r)return null;let i=t.trim();return i?(r.name=i,await L(a),{...r}):r}),M=async(e,t)=>k(async()=>{let a=await S();if(!a)return!1;let r=(a.groups??[]).find(t=>t.id===e);return!!r&&(r.collapsed===t||(r.collapsed=t,await L(a),!0))}),j=async e=>k(async()=>{let t=await S();if(!t)return!1;let a=b(t),r=a.findIndex(t=>t.id===e);if(-1===r)return!1;for(let a of t.workspaces)a.groupId===e&&(a.groupId=null);return a.splice(r,1),await L(t),d.info(`Group ungrouped: ${e}`),!0}),R=async e=>k(async()=>{let t=await S();if(!t)return!1;let a=b(t),r=new Map(a.map(e=>[e.id,e])),i=[];for(let t of e){let e=r.get(t);if(!e)return!1;i.push(e)}return i.length===a.length&&(t.groups=i,await L(t),!0)}),G=async(e,t)=>k(async()=>{let a=await S();if(!a)return!1;let r=a.workspaces.find(t=>t.id===e);if(!r)return!1;let i=new Set((a.groups??[]).map(e=>e.id)),s=t&&i.has(t)?t:null;return(r.groupId??null)===s||(r.groupId=s,await L(a),!0)}),q=async e=>{try{if(!(await t.default.stat(e)).isDirectory())return{valid:!1,error:"Please enter a directory path, not a file"}}catch{return{valid:!1,error:"Directory does not exist"}}return{valid:!0,suggestedName:a.default.basename(e)}};e.s(["createGroup",0,D,"createWorkspace",0,T,"deleteWorkspace",0,W,"getActiveWorkspaceId",0,N,"getWorkspaceById",0,P,"getWorkspaces",0,$,"initWorkspaceStore",0,v,"renameGroup",0,F,"renameWorkspace",0,E,"reorderGroups",0,R,"reorderWorkspaces",0,O,"setGroupCollapsed",0,M,"setWorkspaceGroup",0,G,"ungroupGroup",0,j,"updateActive",0,C,"updateWorkspaceDirectories",0,A,"validateDirectory",0,q],322429)}];
|
|
41
|
-
|
|
42
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__12ksl6n._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[845994,e=>{"use strict";var t=e.i(924868),a=e.i(814747),r=e.i(446786),i=e.i(254799),s=e.i(666126);(0,e.i(25146).createLogger)("config");let n=a.default.join(r.default.homedir(),".purplemux"),o=a.default.join(n,"config.json"),l=globalThis;l.__ptConfigLock||(l.__ptConfigLock=Promise.resolve());let u=async e=>{let t,a=new Promise(e=>{t=e}),r=l.__ptConfigLock;l.__ptConfigLock=a,await r;try{return await e()}finally{t()}},d=()=>({updatedAt:new Date().toISOString()}),p=async()=>{try{let e=await t.default.readFile(o,"utf-8");return JSON.parse(e)}catch{return null}},c=async e=>{let{updatedAt:a,...r}=e,i=JSON.stringify(r);if(l.__ptConfigContentCache===i)return;e.updatedAt=new Date().toISOString();let n=o+".tmp";try{await t.default.writeFile(n,JSON.stringify(e,null,2),{mode:384}),await t.default.rename(n,o)}catch(e){throw await t.default.unlink(n).catch(()=>{}),e}l.__ptConfigContentCache=i,(0,s.broadcastSync)({type:"config"})},f="scrypt:",g=e=>"string"==typeof e&&e.startsWith(f),m=async e=>{let t=i.default.randomBytes(16),a=await new Promise((a,r)=>{i.default.scrypt(e,t,64,(e,t)=>{e?r(e):a(t)})});return`${f}${t.toString("hex")}:${a.toString("hex")}`},h=async(e,t)=>{if(!g(t))return!1;let[,a,r]=t.split(":"),s=Buffer.from(a,"hex"),n=Buffer.from(r,"hex"),o=await new Promise((t,a)=>{i.default.scrypt(e,s,n.length,(e,r)=>{e?a(e):t(r)})});return i.default.timingSafeEqual(o,n)},w=async()=>await p()??d(),y=async e=>u(async()=>{let t=await p()??d();Object.assign(t,e),await c(t)}),v=async()=>{let e=await p();return!g(e?.authPassword)},S=async()=>{let e=await p();return e?.dangerouslySkipPermissions??!1};e.s(["generateSecret",0,()=>i.default.randomBytes(32).toString("hex"),"getConfig",0,w,"getDangerouslySkipPermissions",0,S,"hashPassword",0,m,"needsSetup",0,v,"updateConfig",0,y,"verifyPassword",0,h])},478490,e=>{"use strict";var t=e.i(845994);e.i(924868);var a=e.i(814747),r=e.i(446786),i=e.i(25146);e.i(796902),(0,i.createLogger)("hooks");let s=a.default.join(r.default.homedir(),".purplemux"),n=a.default.join(s,"hooks.json");a.default.join(s,"port"),a.default.join(s,"status-hook.sh");var o=e.i(160874);let l=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,u=e=>"string"==typeof e&&l.test(e),d=async e=>{let a=await (0,t.getDangerouslySkipPermissions)(),r=[`--settings ${n}`];return e&&r.push(`--append-system-prompt-file ${(0,o.getClaudePromptPath)(e)}`),a&&r.push("--dangerously-skip-permissions"),r.join(" ")},p=async(e,t)=>{if(!u(e))throw Error(`Invalid session ID format: ${e}`);let a=await d(t);return`claude --resume ${e} ${a}`};e.s(["buildResumeCommand",0,p,"isValidSessionId",0,u],478490)},997054,e=>{"use strict";var t=e.i(926747),a=e.i(190406),r=e.i(244898),i=e.i(262950),s=e.i(446786),n=e.i(322429),o=e.i(825265),l=e.i(804767),u=e.i(478490),d=e.i(459015),p=e.i(964759);let c=(0,e.i(25146).createLogger)("workspace-api"),f=async(e,t)=>{if("GET"===e.method){let e=await (0,n.getWorkspaces)();return t.status(200).json(e)}if("POST"===e.method){let{directory:a,name:r,resumeSessionId:i}=e.body??{};if(i&&!(0,u.isValidSessionId)(i))return t.status(400).json({error:"Invalid session ID format"});let f=a&&"string"==typeof a?a:s.default.homedir();try{let e=i?{panelType:"claude-code"}:void 0,a=await (0,n.createWorkspace)(f,r,e),s=await (0,o.readLayoutFile)((0,o.resolveLayoutFile)(a.id)),g=s?(0,l.collectAllTabs)(s.root)[0]:null;return g&&"web-browser"!==g.panelType&&(0,p.getStatusManager)().registerTab(g.id,{cliState:"inactive",workspaceId:a.id,tabName:g.name,tmuxSession:g.sessionName,lastEvent:null,eventSeq:0}),i&&g&&setTimeout(async()=>{try{let e=await (0,u.buildResumeCommand)(i,a.id);await (0,d.sendKeys)(g.sessionName,e)}catch(e){c.warn(`resume sendKeys failed: ${e instanceof Error?e.message:e}`)}},500),t.status(200).json(a)}catch(r){let e=r instanceof Error?r.message:"Unknown error",a=["not exist","directory","registered"].some(t=>e.includes(t));return t.status(a?400:500).json({error:e})}}return t.setHeader("Allow","GET, POST"),t.status(405).json({error:"Method not allowed"})};e.s(["default",0,f],401508);var g=e.i(401508),m=e.i(7031),h=e.i(181927),w=e.i(846432);let y=(0,i.hoist)(g,"default"),v=(0,i.hoist)(g,"config"),S=new r.PagesAPIRouteModule({definition:{kind:a.RouteKind.PAGES_API,page:"/api/workspace/index",pathname:"/api/workspace",bundlePath:"",filename:""},userland:g,distDir:".next",relativeProjectDir:""});async function P(e,a,r){r.requestMeta&&(0,w.setRequestMeta)(e,r.requestMeta),S.isDev&&(0,w.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let i="/api/workspace/index";i=i.replace(/\/index$/,"")||"/";let s=await S.prepare(e,a,{srcPage:i});if(!s){a.statusCode=400,a.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve());return}let{query:n,params:o,prerenderManifest:l,routerServerContext:u}=s;try{let t,r=e.method||"GET",s=(0,m.getTracer)(),d=s.getActiveScopeSpan(),p=!!(null==u?void 0:u.isWrappedByNextServer),c=S.instrumentationOnRequestError.bind(S),f=async d=>S.render(e,a,{query:{...n,...o},params:o,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:l.preview,propagateError:!1,dev:S.isDev,page:"/api/workspace/index",internalRevalidate:null==u?void 0:u.revalidate,onError:(...t)=>c(e,...t)}).finally(()=>{if(!d)return;d.setAttributes({"http.status_code":a.statusCode,"next.rsc":!1});let e=s.getRootSpanAttributes();if(!e)return;if(e.get("next.span_type")!==h.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${e.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=e.get("next.route");if(n){let e=`${r} ${n}`;d.setAttributes({"next.route":n,"http.route":n,"next.span_name":e}),d.updateName(e),t&&t!==d&&(t.setAttribute("http.route",n),t.updateName(e))}else d.updateName(`${r} ${i}`)});p&&d?await f(d):(t=s.getActiveScopeSpan(),await s.withPropagatedContext(e.headers,()=>s.trace(h.BaseServerSpan.handleRequest,{spanName:`${r} ${i}`,kind:m.SpanKind.SERVER,attributes:{"http.method":r,"http.target":e.url}},f),void 0,!p))}catch(e){if(S.isDev)throw e;(0,t.sendError)(a,500,"Internal Server Error")}finally{null==r.waitUntil||r.waitUntil.call(r,Promise.resolve())}}e.s(["config",0,v,"default",0,y,"handler",0,P],997054)},981532,e=>{e.v(e=>Promise.resolve().then(()=>e(322429)))},322522,e=>{e.v(e=>Promise.resolve().then(()=>e(459015)))},245061,e=>{e.v(e=>Promise.resolve().then(()=>e(785128)))}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=_03-duro._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[845994,e=>{"use strict";var t=e.i(924868),a=e.i(814747),r=e.i(446786),i=e.i(254799),s=e.i(666126);(0,e.i(25146).createLogger)("config");let n=a.default.join(r.default.homedir(),".purplemux"),o=a.default.join(n,"config.json"),l=globalThis;l.__ptConfigLock||(l.__ptConfigLock=Promise.resolve());let u=async e=>{let t,a=new Promise(e=>{t=e}),r=l.__ptConfigLock;l.__ptConfigLock=a,await r;try{return await e()}finally{t()}},d=()=>({updatedAt:new Date().toISOString()}),p=async()=>{try{let e=await t.default.readFile(o,"utf-8");return JSON.parse(e)}catch{return null}},c=async e=>{let{updatedAt:a,...r}=e,i=JSON.stringify(r);if(l.__ptConfigContentCache===i)return;e.updatedAt=new Date().toISOString();let n=o+".tmp";try{await t.default.writeFile(n,JSON.stringify(e,null,2),{mode:384}),await t.default.rename(n,o)}catch(e){throw await t.default.unlink(n).catch(()=>{}),e}l.__ptConfigContentCache=i,(0,s.broadcastSync)({type:"config"})},f="scrypt:",g=e=>"string"==typeof e&&e.startsWith(f),m=async e=>{let t=i.default.randomBytes(16),a=await new Promise((a,r)=>{i.default.scrypt(e,t,64,(e,t)=>{e?r(e):a(t)})});return`${f}${t.toString("hex")}:${a.toString("hex")}`},y=async(e,t)=>{if(!g(t))return!1;let[,a,r]=t.split(":"),s=Buffer.from(a,"hex"),n=Buffer.from(r,"hex"),o=await new Promise((t,a)=>{i.default.scrypt(e,s,n.length,(e,r)=>{e?a(e):t(r)})});return i.default.timingSafeEqual(o,n)},h=async()=>await p()??d(),w=async e=>u(async()=>{let t=await p()??d();Object.assign(t,e),await c(t)}),v=async()=>{let e=await p();return!g(e?.authPassword)},S=async()=>{let e=await p();return e?.dangerouslySkipPermissions??!1};e.s(["generateSecret",0,()=>i.default.randomBytes(32).toString("hex"),"getConfig",0,h,"getDangerouslySkipPermissions",0,S,"hashPassword",0,m,"needsSetup",0,v,"updateConfig",0,w,"verifyPassword",0,y])},478490,e=>{"use strict";var t=e.i(845994);e.i(924868);var a=e.i(814747),r=e.i(446786),i=e.i(25146);e.i(796902),(0,i.createLogger)("hooks");let s=a.default.join(r.default.homedir(),".purplemux"),n=a.default.join(s,"hooks.json");a.default.join(s,"port"),a.default.join(s,"status-hook.sh");var o=e.i(160874);let l=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,u=e=>"string"==typeof e&&l.test(e),d=async e=>{let a=await (0,t.getDangerouslySkipPermissions)(),r=[`--settings ${n}`];return e&&r.push(`--append-system-prompt-file ${(0,o.getClaudePromptPath)(e)}`),a&&r.push("--dangerously-skip-permissions"),r.join(" ")},p=async(e,t)=>{if(!u(e))throw Error(`Invalid session ID format: ${e}`);let a=await d(t);return`claude --resume ${e} ${a}`};e.s(["buildResumeCommand",0,p,"isValidSessionId",0,u],478490)},667250,e=>{"use strict";var t=e.i(926747),a=e.i(190406),r=e.i(244898),i=e.i(262950),s=e.i(825265),n=e.i(322429),o=e.i(964759),l=e.i(478490),u=e.i(459015);let d=(0,e.i(25146).createLogger)("layout"),p=async(e,t)=>{if("POST"!==e.method)return t.setHeader("Allow","POST"),t.status(405).json({error:"Method not allowed"});let a=e.query.workspace||await (0,n.getActiveWorkspaceId)();if(!a)return t.status(400).json({error:"No workspace found"});let r=e.query.paneId,{name:i,cwd:p,panelType:c,command:f,resumeSessionId:g}=e.body??{};if(g&&!(0,l.isValidSessionId)(g))return t.status(400).json({error:"Invalid session ID format"});try{let e=await (0,s.addTabToPane)(a,r,i,p,c,f);if(!e)return t.status(404).json({error:"Pane not found"});return"web-browser"!==e.panelType&&(0,o.getStatusManager)().registerTab(e.id,{cliState:"inactive",workspaceId:a,tabName:e.name,tmuxSession:e.sessionName,lastEvent:null,eventSeq:0}),g&&!f&&(await (0,s.updateTabClaudeSessionId)(e.sessionName,g),e.claudeSessionId=g,setTimeout(async()=>{try{let t=await (0,l.buildResumeCommand)(g,a);await (0,u.sendKeys)(e.sessionName,t)}catch(e){d.warn(`resume sendKeys failed: ${e instanceof Error?e.message:e}`)}},500)),t.status(200).json(e)}catch(e){return d.error(`tab creation failed: ${e instanceof Error?e.message:e}`),t.status(500).json({error:"Failed to create tab"})}};e.s(["default",0,p],170096);var c=e.i(170096),f=e.i(7031),g=e.i(181927),m=e.i(846432);let y=(0,i.hoist)(c,"default"),h=(0,i.hoist)(c,"config"),w=new r.PagesAPIRouteModule({definition:{kind:a.RouteKind.PAGES_API,page:"/api/layout/pane/[paneId]/tabs/index",pathname:"/api/layout/pane/[paneId]/tabs",bundlePath:"",filename:""},userland:c,distDir:".next",relativeProjectDir:""});async function v(e,a,r){r.requestMeta&&(0,m.setRequestMeta)(e,r.requestMeta),w.isDev&&(0,m.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let i="/api/layout/pane/[paneId]/tabs/index";i=i.replace(/\/index$/,"")||"/";let s=await w.prepare(e,a,{srcPage:i});if(!s){a.statusCode=400,a.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve());return}let{query:n,params:o,prerenderManifest:l,routerServerContext:u}=s;try{let t,r=e.method||"GET",s=(0,f.getTracer)(),d=s.getActiveScopeSpan(),p=!!(null==u?void 0:u.isWrappedByNextServer),c=w.instrumentationOnRequestError.bind(w),m=async d=>w.render(e,a,{query:{...n,...o},params:o,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:l.preview,propagateError:!1,dev:w.isDev,page:"/api/layout/pane/[paneId]/tabs/index",internalRevalidate:null==u?void 0:u.revalidate,onError:(...t)=>c(e,...t)}).finally(()=>{if(!d)return;d.setAttributes({"http.status_code":a.statusCode,"next.rsc":!1});let e=s.getRootSpanAttributes();if(!e)return;if(e.get("next.span_type")!==g.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${e.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=e.get("next.route");if(n){let e=`${r} ${n}`;d.setAttributes({"next.route":n,"http.route":n,"next.span_name":e}),d.updateName(e),t&&t!==d&&(t.setAttribute("http.route",n),t.updateName(e))}else d.updateName(`${r} ${i}`)});p&&d?await m(d):(t=s.getActiveScopeSpan(),await s.withPropagatedContext(e.headers,()=>s.trace(g.BaseServerSpan.handleRequest,{spanName:`${r} ${i}`,kind:f.SpanKind.SERVER,attributes:{"http.method":r,"http.target":e.url}},m),void 0,!p))}catch(e){if(w.isDev)throw e;(0,t.sendError)(a,500,"Internal Server Error")}finally{null==r.waitUntil||r.waitUntil.call(r,Promise.resolve())}}e.s(["config",0,h,"default",0,y,"handler",0,v],667250)},981532,e=>{e.v(e=>Promise.resolve().then(()=>e(322429)))},322522,e=>{e.v(e=>Promise.resolve().then(()=>e(459015)))},245061,e=>{e.v(e=>Promise.resolve().then(()=>e(785128)))}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=_07097f~._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[845994,e=>{"use strict";var t=e.i(924868),a=e.i(814747),r=e.i(446786),s=e.i(254799),i=e.i(666126);(0,e.i(25146).createLogger)("config");let n=a.default.join(r.default.homedir(),".purplemux"),o=a.default.join(n,"config.json"),l=globalThis;l.__ptConfigLock||(l.__ptConfigLock=Promise.resolve());let u=async e=>{let t,a=new Promise(e=>{t=e}),r=l.__ptConfigLock;l.__ptConfigLock=a,await r;try{return await e()}finally{t()}},d=()=>({updatedAt:new Date().toISOString()}),c=async()=>{try{let e=await t.default.readFile(o,"utf-8");return JSON.parse(e)}catch{return null}},p=async e=>{let{updatedAt:a,...r}=e,s=JSON.stringify(r);if(l.__ptConfigContentCache===s)return;e.updatedAt=new Date().toISOString();let n=o+".tmp";try{await t.default.writeFile(n,JSON.stringify(e,null,2),{mode:384}),await t.default.rename(n,o)}catch(e){throw await t.default.unlink(n).catch(()=>{}),e}l.__ptConfigContentCache=s,(0,i.broadcastSync)({type:"config"})},f="scrypt:",m=e=>"string"==typeof e&&e.startsWith(f),g=async e=>{let t=s.default.randomBytes(16),a=await new Promise((a,r)=>{s.default.scrypt(e,t,64,(e,t)=>{e?r(e):a(t)})});return`${f}${t.toString("hex")}:${a.toString("hex")}`},h=async(e,t)=>{if(!m(t))return!1;let[,a,r]=t.split(":"),i=Buffer.from(a,"hex"),n=Buffer.from(r,"hex"),o=await new Promise((t,a)=>{s.default.scrypt(e,i,n.length,(e,r)=>{e?a(e):t(r)})});return s.default.timingSafeEqual(o,n)},w=async()=>await c()??d(),S=async e=>u(async()=>{let t=await c()??d();Object.assign(t,e),await p(t)}),y=async()=>{let e=await c();return!m(e?.authPassword)},v=async()=>{let e=await c();return e?.dangerouslySkipPermissions??!1};e.s(["generateSecret",0,()=>s.default.randomBytes(32).toString("hex"),"getConfig",0,w,"getDangerouslySkipPermissions",0,v,"hashPassword",0,g,"needsSetup",0,y,"updateConfig",0,S,"verifyPassword",0,h])},478490,e=>{"use strict";var t=e.i(845994);e.i(924868);var a=e.i(814747),r=e.i(446786),s=e.i(25146);e.i(796902),(0,s.createLogger)("hooks");let i=a.default.join(r.default.homedir(),".purplemux"),n=a.default.join(i,"hooks.json");a.default.join(i,"port"),a.default.join(i,"status-hook.sh");var o=e.i(160874);let l=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,u=e=>"string"==typeof e&&l.test(e),d=async e=>{let a=await (0,t.getDangerouslySkipPermissions)(),r=[`--settings ${n}`];return e&&r.push(`--append-system-prompt-file ${(0,o.getClaudePromptPath)(e)}`),a&&r.push("--dangerously-skip-permissions"),r.join(" ")},c=async(e,t)=>{if(!u(e))throw Error(`Invalid session ID format: ${e}`);let a=await d(t);return`claude --resume ${e} ${a}`};e.s(["buildResumeCommand",0,c,"isValidSessionId",0,u],478490)},758518,e=>{"use strict";var t=e.i(926747),a=e.i(190406),r=e.i(244898),s=e.i(262950),i=e.i(459015),n=e.i(322429),o=e.i(825265),l=e.i(804767),u=e.i(478490),d=e.i(25146);let c=(0,d.createLogger)("auto-resume"),p=new Set(["bash","zsh","fish","sh","dash"]),f=async()=>{let{workspaces:e}=await (0,n.getWorkspaces)(),t=[];for(let a of e){let e=await (0,o.readLayoutFile)((0,o.resolveLayoutFile)(a.id));if(e)for(let r of(0,l.collectAllTabs)(e.root))"claude-code"===r.panelType&&r.claudeSessionId&&t.push({workspaceId:a.id,tabId:r.id,tmuxSession:r.sessionName,claudeSessionId:r.claudeSessionId})}return t},m=async e=>{try{let t=await (0,i.getPaneCurrentCommand)(e.tmuxSession);if(!t)return c.warn(`Cannot check process: ${e.tmuxSession}`),!1;if(!p.has(t)){if("claude"===t||"node"===t)return c.debug(`Claude already running, skip: ${e.tmuxSession}`),!0;return c.debug(`Non-shell process running (${t}), skip: ${e.tmuxSession}`),!1}let a=await (0,u.buildResumeCommand)(e.claudeSessionId,e.workspaceId);return c.debug(`Sending resume: ${e.tmuxSession} → ${e.claudeSessionId}`),await (0,i.sendKeys)(e.tmuxSession,a),!0}catch(t){return c.error(`Failed: ${e.tmuxSession} — ${t instanceof Error?t.message:t}`),!1}},g=async e=>{let t=!1;for(let a of e)await (0,i.hasSession)(a.tmuxSession)||(c.debug(`No tmux session, creating new: ${a.tmuxSession}`),await (0,i.createSession)(a.tmuxSession,80,24),t=!0);t&&await new Promise(e=>setTimeout(e,500)),await Promise.allSettled(e.map(e=>m(e)))},h=async()=>{let e=await f();0!==e.length&&(c.debug(`${e.length} surface(s) auto-resume started`),g(e).then(()=>{c.debug("Auto-resume complete")}).catch(e=>{c.error(`Auto-resume error: ${e instanceof Error?e.message:e}`)}))};var w=e.i(964759);let S=(0,d.createLogger)("terminal"),y=async(e,t)=>{if("POST"!==e.method)return t.setHeader("Allow","POST"),t.status(405).json({error:"Method not allowed"});try{let e=await (0,i.listSessions)();return S.info(`tmux reset requested — killing ${e.length} session(s)`),await (0,i.killServer)(),await (0,i.scanSessions)(),await (0,i.applyConfig)(),await (0,n.initWorkspaceStore)(),await h(),await (0,w.getStatusManager)().rescan(),S.info("tmux re-initialized after reset"),t.status(200).json({killed:e.length})}catch(e){return S.error(`tmux reset failed: ${e instanceof Error?e.message:e}`),t.status(500).json({error:"tmux reset failed"})}};e.s(["default",0,y],191170);var v=e.i(191170),x=e.i(7031),P=e.i(181927),$=e.i(846432);let k=(0,s.hoist)(v,"default"),b=(0,s.hoist)(v,"config"),C=new r.PagesAPIRouteModule({definition:{kind:a.RouteKind.PAGES_API,page:"/api/tmux/reset",pathname:"/api/tmux/reset",bundlePath:"",filename:""},userland:v,distDir:".next",relativeProjectDir:""});async function I(e,a,r){r.requestMeta&&(0,$.setRequestMeta)(e,r.requestMeta),C.isDev&&(0,$.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let s="/api/tmux/reset";s=s.replace(/\/index$/,"")||"/";let i=await C.prepare(e,a,{srcPage:s});if(!i){a.statusCode=400,a.end("Bad Request"),null==r.waitUntil||r.waitUntil.call(r,Promise.resolve());return}let{query:n,params:o,prerenderManifest:l,routerServerContext:u}=i;try{let t,r=e.method||"GET",i=(0,x.getTracer)(),d=i.getActiveScopeSpan(),c=!!(null==u?void 0:u.isWrappedByNextServer),p=C.instrumentationOnRequestError.bind(C),f=async d=>C.render(e,a,{query:{...n,...o},params:o,allowedRevalidateHeaderKeys:[],multiZoneDraftMode:!1,trustHostHeader:!1,previewProps:l.preview,propagateError:!1,dev:C.isDev,page:"/api/tmux/reset",internalRevalidate:null==u?void 0:u.revalidate,onError:(...t)=>p(e,...t)}).finally(()=>{if(!d)return;d.setAttributes({"http.status_code":a.statusCode,"next.rsc":!1});let e=i.getRootSpanAttributes();if(!e)return;if(e.get("next.span_type")!==P.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${e.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let n=e.get("next.route");if(n){let e=`${r} ${n}`;d.setAttributes({"next.route":n,"http.route":n,"next.span_name":e}),d.updateName(e),t&&t!==d&&(t.setAttribute("http.route",n),t.updateName(e))}else d.updateName(`${r} ${s}`)});c&&d?await f(d):(t=i.getActiveScopeSpan(),await i.withPropagatedContext(e.headers,()=>i.trace(P.BaseServerSpan.handleRequest,{spanName:`${r} ${s}`,kind:x.SpanKind.SERVER,attributes:{"http.method":r,"http.target":e.url}},f),void 0,!c))}catch(e){if(C.isDev)throw e;(0,t.sendError)(a,500,"Internal Server Error")}finally{null==r.waitUntil||r.waitUntil.call(r,Promise.resolve())}}e.s(["config",0,b,"default",0,k,"handler",0,I],758518)},981532,e=>{e.v(e=>Promise.resolve().then(()=>e(322429)))},322522,e=>{e.v(e=>Promise.resolve().then(()=>e(459015)))},245061,e=>{e.v(e=>Promise.resolve().then(()=>e(785128)))}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=_0z7d6.z._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[871911,e=>{"use strict";var t=e.i(254799),r=e.i(522734),i=e.i(814747),a=e.i(446786);let n=i.default.join(a.default.homedir(),".purplemux","cli-token"),s=globalThis;e.s(["verifyCliToken",0,e=>{let a=e.headers["x-pmux-token"];var o="string"==typeof a?a:void 0;if(!o)return!1;let l=(()=>{if(s.__ptCliToken)return s.__ptCliToken;let e=(()=>{try{return r.default.readFileSync(n,"utf-8").trim()||null}catch{return null}})();if(e)return s.__ptCliToken=e,e;let a=(0,t.randomBytes)(32).toString("hex");s.__ptCliToken=a;try{r.default.mkdirSync(i.default.dirname(n),{recursive:!0}),r.default.writeFileSync(n,a,{mode:384})}catch{}return a})();return o.length===l.length&&(0,t.timingSafeEqual)(Buffer.from(o),Buffer.from(l))}])},845994,e=>{"use strict";var t=e.i(924868),r=e.i(814747),i=e.i(446786),a=e.i(254799),n=e.i(666126);(0,e.i(25146).createLogger)("config");let s=r.default.join(i.default.homedir(),".purplemux"),o=r.default.join(s,"config.json"),l=globalThis;l.__ptConfigLock||(l.__ptConfigLock=Promise.resolve());let u=async e=>{let t,r=new Promise(e=>{t=e}),i=l.__ptConfigLock;l.__ptConfigLock=r,await i;try{return await e()}finally{t()}},f=()=>({updatedAt:new Date().toISOString()}),d=async()=>{try{let e=await t.default.readFile(o,"utf-8");return JSON.parse(e)}catch{return null}},c=async e=>{let{updatedAt:r,...i}=e,a=JSON.stringify(i);if(l.__ptConfigContentCache===a)return;e.updatedAt=new Date().toISOString();let s=o+".tmp";try{await t.default.writeFile(s,JSON.stringify(e,null,2),{mode:384}),await t.default.rename(s,o)}catch(e){throw await t.default.unlink(s).catch(()=>{}),e}l.__ptConfigContentCache=a,(0,n.broadcastSync)({type:"config"})},p="scrypt:",g=e=>"string"==typeof e&&e.startsWith(p),m=async e=>{let t=a.default.randomBytes(16),r=await new Promise((r,i)=>{a.default.scrypt(e,t,64,(e,t)=>{e?i(e):r(t)})});return`${p}${t.toString("hex")}:${r.toString("hex")}`},h=async(e,t)=>{if(!g(t))return!1;let[,r,i]=t.split(":"),n=Buffer.from(r,"hex"),s=Buffer.from(i,"hex"),o=await new Promise((t,r)=>{a.default.scrypt(e,n,s.length,(e,i)=>{e?r(e):t(i)})});return a.default.timingSafeEqual(o,s)},y=async()=>await d()??f(),w=async e=>u(async()=>{let t=await d()??f();Object.assign(t,e),await c(t)}),S=async()=>{let e=await d();return!g(e?.authPassword)},k=async()=>{let e=await d();return e?.dangerouslySkipPermissions??!1};e.s(["generateSecret",0,()=>a.default.randomBytes(32).toString("hex"),"getConfig",0,y,"getDangerouslySkipPermissions",0,k,"hashPassword",0,m,"needsSetup",0,S,"updateConfig",0,w,"verifyPassword",0,h])},478490,e=>{"use strict";var t=e.i(845994);e.i(924868);var r=e.i(814747),i=e.i(446786),a=e.i(25146);e.i(796902),(0,a.createLogger)("hooks");let n=r.default.join(i.default.homedir(),".purplemux"),s=r.default.join(n,"hooks.json");r.default.join(n,"port"),r.default.join(n,"status-hook.sh");var o=e.i(160874);let l=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,u=e=>"string"==typeof e&&l.test(e),f=async e=>{let r=await (0,t.getDangerouslySkipPermissions)(),i=[`--settings ${s}`];return e&&i.push(`--append-system-prompt-file ${(0,o.getClaudePromptPath)(e)}`),r&&i.push("--dangerously-skip-permissions"),i.join(" ")},d=async(e,t)=>{if(!u(e))throw Error(`Invalid session ID format: ${e}`);let r=await f(t);return`claude --resume ${e} ${r}`};e.s(["buildResumeCommand",0,d,"isValidSessionId",0,u],478490)},133446,e=>{"use strict";var t=e.i(814747),r=e.i(446786);let i=t.default.join(r.default.homedir(),".claude","projects");e.s(["isAllowedJsonlPath",0,e=>{let r=t.default.resolve(e);return r.startsWith(i+t.default.sep)&&r.endsWith(".jsonl")}])},981532,e=>{e.v(e=>Promise.resolve().then(()=>e(322429)))},322522,e=>{e.v(e=>Promise.resolve().then(()=>e(459015)))},245061,e=>{e.v(e=>Promise.resolve().then(()=>e(785128)))}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=src_lib_0p.xsqi._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[931528,(a,b,c)=>{"use strict";var d=a.r(127669);d.useState,d.useEffect,d.useLayoutEffect,d.useDebugValue,c.useSyncExternalStore=void 0!==d.useSyncExternalStore?d.useSyncExternalStore:function(a,b){return b()}},152119,(a,b,c)=>{"use strict";b.exports=a.r(931528)},534033,(a,b,c)=>{"use strict";var d=a.r(127669),e=a.r(152119),f="function"==typeof Object.is?Object.is:function(a,b){return a===b&&(0!==a||1/a==1/b)||a!=a&&b!=b},g=e.useSyncExternalStore,h=d.useRef,i=d.useEffect,j=d.useMemo,k=d.useDebugValue;c.useSyncExternalStoreWithSelector=function(a,b,c,d,e){var l=h(null);if(null===l.current){var m={hasValue:!1,value:null};l.current=m}else m=l.current;var n=g(a,(l=j(function(){function a(a){if(!i){if(i=!0,g=a,a=d(a),void 0!==e&&m.hasValue){var b=m.value;if(e(b,a))return h=b}return h=a}if(b=h,f(g,a))return b;var c=d(a);return void 0!==e&&e(b,c)?(g=a,b):(g=a,h=c)}var g,h,i=!1,j=void 0===c?null:c;return[function(){return a(b())},null===j?void 0:function(){return a(j())}]},[b,c,d,e]))[0],l[1]);return i(function(){m.hasValue=!0,m.value=n},[n]),k(n),n}},908328,(a,b,c)=>{"use strict";b.exports=a.r(534033)},564375,a=>{"use strict";var b=a.i(127669);let c=(...a)=>a.filter((a,b,c)=>!!a&&""!==a.trim()&&c.indexOf(a)===b).join(" ").trim(),d=a=>{let b=a.replace(/^([A-Z])|[\s-_]+(\w)/g,(a,b,c)=>c?c.toUpperCase():b.toLowerCase());return b.charAt(0).toUpperCase()+b.slice(1)};var e={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let f=(0,b.createContext)({}),g=(0,b.forwardRef)(({color:a,size:d,strokeWidth:g,absoluteStrokeWidth:h,className:i="",children:j,iconNode:k,...l},m)=>{let{size:n=24,strokeWidth:o=2,absoluteStrokeWidth:p=!1,color:q="currentColor",className:r=""}=(0,b.useContext)(f)??{},s=h??p?24*Number(g??o)/Number(d??n):g??o;return(0,b.createElement)("svg",{ref:m,...e,width:d??n??e.width,height:d??n??e.height,stroke:a??q,strokeWidth:s,className:c("lucide",r,i),...!j&&!(a=>{for(let b in a)if(b.startsWith("aria-")||"role"===b||"title"===b)return!0;return!1})(l)&&{"aria-hidden":"true"},...l},[...k.map(([a,c])=>(0,b.createElement)(a,c)),...Array.isArray(j)?j:[j]])});a.s(["default",0,(a,e)=>{let f=(0,b.forwardRef)(({className:f,...h},i)=>(0,b.createElement)(g,{ref:i,iconNode:e,className:c(`lucide-${d(a).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${a}`,f),...h}));return f.displayName=d(a),f}],564375)},597435,177765,a=>{"use strict";let b=(0,a.i(564375).default)("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);a.s(["default",0,b],177765),a.s(["Check",0,b],597435)},975022,a=>{"use strict";let b=(0,a.i(564375).default)("terminal",[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]]);a.s(["Terminal",0,b],975022)},532572,a=>{"use strict";let b=(0,a.i(564375).default)("download",[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]]);a.s(["Download",0,b],532572)},841527,a=>{"use strict";var b=a.i(508171),c=a.i(975022),d=a.i(799856);a.s(["default",0,({shimmer:a=!1,size:e="sm",className:f})=>(0,b.jsxs)("div",{className:(0,d.cn)("flex items-center gap-1.5","xl"===e&&"gap-2.5",f),children:[(0,b.jsx)(c.Terminal,{className:(0,d.cn)("xl"===e?"h-6 w-6":"h-4 w-4","shrink-0 text-brand")}),(0,b.jsxs)("span",{className:(0,d.cn)("xl"===e?"text-xl":"text-sm",a?"animate-shimmer":"text-brand"),children:[(0,b.jsx)("span",{className:"font-bold",children:"purple"}),(0,b.jsx)("span",{className:"font-normal",children:"mux"})]})]})])},428496,a=>{"use strict";a.s(["isRuntimeOk",0,a=>a.tmux.installed&&a.tmux.compatible&&a.git.installed&&a.claude.installed])},737098,849612,a=>{"use strict";let b=(0,a.i(564375).default)("refresh-ccw",[["path",{d:"M21 12a9 9 0 0 0-9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"14sxne"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}],["path",{d:"M3 12a9 9 0 0 0 9 9 9.75 9.75 0 0 0 6.74-2.74L21 16",key:"1hlbsb"}],["path",{d:"M16 16h5v5",key:"ccwih5"}]]);a.s(["RefreshCcw",0,b],737098);var c=a.i(508171),d=a.i(127669),e=a.i(113952),f=a.i(109254),g=a.i(396465),h=a.i(514385),i=a.i(104877);a.s(["default",0,({open:a,onOpenChange:b,command:j,label:k})=>{let l=(0,e.useTranslations)("common"),m=(0,d.useRef)(!1),n=(0,d.useRef)(()=>{}),{connect:o,disconnect:p,sendStdin:q,sendResize:r}=(a=>{let b=(0,d.useRef)(null),[c,e]=(0,d.useState)("idle"),f=(0,d.useRef)(a);(0,d.useEffect)(()=>{f.current=a},[a]);let g=(0,d.useCallback)(()=>{let a=b.current;a&&(a.close(),b.current=null)},[]);(0,d.useEffect)(()=>()=>{b.current?.close()},[]);let h=(0,d.useCallback)((a,c,d)=>{g();let h="https:"===window.location.protocol?"wss:":"ws:",j=new WebSocket(`${h}//${window.location.host}/api/install?command=${encodeURIComponent(a)}&cols=${c}&rows=${d}`);j.binaryType="arraybuffer",b.current=j,j.onopen=()=>e("connected"),j.onmessage=a=>{let b=(0,i.decodeMessage)(a.data);b.type===i.MSG_STDOUT&&f.current(b.payload)},j.onclose=()=>{b.current=null,e("disconnected")},j.onerror=()=>{b.current=null,e("disconnected")}},[g]);return{status:c,connect:h,disconnect:g,sendStdin:(0,d.useCallback)(a=>{b.current?.send((0,i.encodeStdin)(a))},[]),sendResize:(0,d.useCallback)((a,c)=>{b.current?.send((0,i.encodeResize)(a,c))},[])}})(a=>n.current(a)),{terminalRef:s,write:t,fit:u,isReady:v}=(0,h.default)({fontSize:12,onInput:q,onResize:r});(0,d.useEffect)(()=>{n.current=t},[t]),(0,d.useEffect)(()=>{if(a&&v&&!m.current){m.current=!0;let{cols:a,rows:b}=u();o(j,a,b)}},[a,v,j,o,u]);let w=(0,d.useCallback)(()=>{p(),m.current=!1,b(!1),window.location.reload()},[p,b]);return(0,c.jsx)(f.Dialog,{open:a,onOpenChange:a=>{a||w()},children:(0,c.jsxs)(f.DialogContent,{className:"sm:max-w-2xl",showCloseButton:!1,children:[(0,c.jsx)(f.DialogHeader,{children:(0,c.jsx)(f.DialogTitle,{children:k})}),(0,c.jsx)("div",{ref:s,className:"h-[400px] w-full rounded-md bg-black p-2"}),(0,c.jsx)(f.DialogFooter,{children:(0,c.jsx)(g.Button,{variant:"outline",onClick:w,children:l("close")})})]})})}],849612)},191926,a=>{"use strict";var b=a.i(579168),c=a.i(627068),d=a.i(332759),e=a.i(817359),f=a.i(468695),g=a.i(508171),h=a.i(127669),i=a.i(41910),j=a.i(113952),k=a.i(119059),l=a.i(369773),m=a.i(597435),n=a.i(532572),o=a.i(311988),p=a.i(737098),q=a.i(734637),r=a.i(396465),s=a.i(841527),t=a.i(849612),u=a.i(428496);let v=async b=>{let{requireAuth:c}=await a.A(120441),{loadMessagesServer:d}=await a.A(168414);return c(b,async()=>({props:{messages:await d()}}),{skipPreflight:!0})};a.s(["default",0,()=>{let a=(0,j.useTranslations)("toolsRequired"),b=(0,i.useRouter)().query.from||"/",{status:c,checking:d,recheck:e}=(()=>{let[a,b]=(0,h.useState)(null),[c,d]=(0,h.useState)(!0),e=(0,h.useCallback)(async a=>{d(!0);try{let c=await fetch("/api/preflight/runtime",{method:a}),d=await c.json();b(d)}catch{}finally{d(!1)}},[]);return(0,h.useEffect)(()=>{e("GET")},[e]),{status:a,checking:c,recheck:(0,h.useCallback)(()=>e("POST"),[e])}})(),[f,v]=(0,h.useState)(null);(0,h.useEffect)(()=>{c&&(0,u.isRuntimeOk)(c)&&(window.location.href=b)},[c,b]);let w=c?[{name:"tmux",ok:c.tmux.installed&&c.tmux.compatible,version:c.tmux.version},{name:"Git",ok:c.git.installed,version:c.git.version},{name:"Claude CLI",ok:c.claude.installed,version:c.claude.version}]:[],x=c?((a,b)=>{if(!(a.tmux.installed&&a.tmux.compatible)){let c=a.tmux.installed&&!a.tmux.compatible;return{command:c?"tmux-upgrade":"tmux-install",label:b(c?"upgradeTmux":"installTmux")}}return a.git.installed?a.claude.installed?null:{command:"claude",label:b("installClaude")}:{command:"git",label:b("installGit")}})(c,a):null;return(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)(k.default,{children:(0,g.jsx)("title",{children:a("pageTitle")})}),(0,g.jsx)("div",{className:"flex min-h-svh items-center justify-center p-6",children:(0,g.jsxs)("div",{className:"w-full max-w-sm flex flex-col gap-6",children:[(0,g.jsx)(s.default,{shimmer:!0,size:"xl",className:"justify-center"}),d&&!c?(0,g.jsxs)("div",{className:"flex items-center justify-center gap-2 py-8 text-muted-foreground",children:[(0,g.jsx)(o.Loader2,{className:"h-5 w-5 animate-spin"}),(0,g.jsx)("span",{className:"text-sm",children:a("checking")})]}):c&&(0,u.isRuntimeOk)(c)?(0,g.jsxs)("div",{className:"flex items-center justify-center gap-2 py-8 text-positive",children:[(0,g.jsx)(m.Check,{className:"h-5 w-5"}),(0,g.jsx)("span",{className:"text-sm font-medium",children:a("allGood")})]}):(0,g.jsxs)("div",{className:"flex flex-col gap-4",children:[(0,g.jsxs)("div",{className:"flex items-center gap-2 text-ui-amber",children:[(0,g.jsx)(l.AlertTriangle,{className:"h-5 w-5 shrink-0"}),(0,g.jsx)("p",{className:"text-sm font-medium",children:a("title")})]}),(0,g.jsx)("p",{className:"text-sm text-muted-foreground",children:a("description")}),(0,g.jsx)("div",{className:"space-y-1.5",children:w.map(a=>(0,g.jsxs)("div",{className:"flex items-center gap-2 text-sm",children:[a.ok?(0,g.jsx)(m.Check,{className:"h-4 w-4 shrink-0 text-positive"}):(0,g.jsx)(q.X,{className:"h-4 w-4 shrink-0 text-negative"}),(0,g.jsx)("span",{className:a.ok?"text-muted-foreground":"text-foreground font-medium",children:a.name}),a.version&&(0,g.jsxs)("span",{className:"text-xs text-muted-foreground",children:["(",a.version,")"]})]},a.name))}),(0,g.jsxs)("div",{className:"flex flex-col gap-2",children:[x&&(0,g.jsxs)(r.Button,{size:"lg",className:"h-12 w-full",onClick:()=>v(x),children:[(0,g.jsx)(n.Download,{className:"mr-1 h-4 w-4"}),x.label]}),(0,g.jsxs)(r.Button,{variant:"outline",size:"lg",className:"h-12 w-full",disabled:d,onClick:e,children:[(0,g.jsx)(p.RefreshCcw,{className:"mr-1 h-4 w-4"}),a("recheck")]})]})]}),f&&(0,g.jsx)(t.default,{open:!0,onOpenChange:()=>v(null),command:f.command,label:f.label})]})})]})},"getServerSideProps",0,v],295832);var w=a.i(295832),x=a.i(509193);let y=(0,d.hoist)(w,"default"),z=(0,d.hoist)(w,"getStaticProps"),A=(0,d.hoist)(w,"getStaticPaths"),B=(0,d.hoist)(w,"getServerSideProps"),C=(0,d.hoist)(w,"config"),D=(0,d.hoist)(w,"reportWebVitals"),E=(0,d.hoist)(w,"unstable_getStaticProps"),F=(0,d.hoist)(w,"unstable_getStaticPaths"),G=(0,d.hoist)(w,"unstable_getStaticParams"),H=(0,d.hoist)(w,"unstable_getServerProps"),I=(0,d.hoist)(w,"unstable_getServerSideProps"),J=new b.PagesRouteModule({definition:{kind:c.RouteKind.PAGES,page:"/tools-required",pathname:"/tools-required",bundlePath:"",filename:""},distDir:".next",relativeProjectDir:"",components:{App:f.default,Document:e.default},userland:w}),K=(0,x.getHandler)({srcPage:"/tools-required",config:C,userland:w,routeModule:J,getStaticPaths:A,getStaticProps:z,getServerSideProps:B});a.s(["config",0,C,"default",0,y,"getServerSideProps",0,B,"getStaticPaths",0,A,"getStaticProps",0,z,"handler",0,K,"reportWebVitals",0,D,"routeModule",0,J,"unstable_getServerProps",0,H,"unstable_getServerSideProps",0,I,"unstable_getStaticParams",0,G,"unstable_getStaticPaths",0,F,"unstable_getStaticProps",0,E],191926)},120441,a=>{a.v(b=>Promise.all(["server/chunks/ssr/src_lib_require-auth_ts_0lybmh2._.js"].map(b=>a.l(b))).then(()=>b(56975)))},168414,a=>{a.v(b=>Promise.all(["server/chunks/ssr/src_lib_load-messages_ts_11e7h4~._.js"].map(b=>a.l(b))).then(()=>b(387607)))}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=_016o9_-._.js.map
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[931528,(a,b,c)=>{"use strict";var d=a.r(127669);d.useState,d.useEffect,d.useLayoutEffect,d.useDebugValue,c.useSyncExternalStore=void 0!==d.useSyncExternalStore?d.useSyncExternalStore:function(a,b){return b()}},152119,(a,b,c)=>{"use strict";b.exports=a.r(931528)},534033,(a,b,c)=>{"use strict";var d=a.r(127669),e=a.r(152119),f="function"==typeof Object.is?Object.is:function(a,b){return a===b&&(0!==a||1/a==1/b)||a!=a&&b!=b},g=e.useSyncExternalStore,h=d.useRef,i=d.useEffect,j=d.useMemo,k=d.useDebugValue;c.useSyncExternalStoreWithSelector=function(a,b,c,d,e){var l=h(null);if(null===l.current){var m={hasValue:!1,value:null};l.current=m}else m=l.current;var n=g(a,(l=j(function(){function a(a){if(!i){if(i=!0,g=a,a=d(a),void 0!==e&&m.hasValue){var b=m.value;if(e(b,a))return h=b}return h=a}if(b=h,f(g,a))return b;var c=d(a);return void 0!==e&&e(b,c)?(g=a,b):(g=a,h=c)}var g,h,i=!1,j=void 0===c?null:c;return[function(){return a(b())},null===j?void 0:function(){return a(j())}]},[b,c,d,e]))[0],l[1]);return i(function(){m.hasValue=!0,m.value=n},[n]),k(n),n}},908328,(a,b,c)=>{"use strict";b.exports=a.r(534033)},564375,a=>{"use strict";var b=a.i(127669);let c=(...a)=>a.filter((a,b,c)=>!!a&&""!==a.trim()&&c.indexOf(a)===b).join(" ").trim(),d=a=>{let b=a.replace(/^([A-Z])|[\s-_]+(\w)/g,(a,b,c)=>c?c.toUpperCase():b.toLowerCase());return b.charAt(0).toUpperCase()+b.slice(1)};var e={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let f=(0,b.createContext)({}),g=(0,b.forwardRef)(({color:a,size:d,strokeWidth:g,absoluteStrokeWidth:h,className:i="",children:j,iconNode:k,...l},m)=>{let{size:n=24,strokeWidth:o=2,absoluteStrokeWidth:p=!1,color:q="currentColor",className:r=""}=(0,b.useContext)(f)??{},s=h??p?24*Number(g??o)/Number(d??n):g??o;return(0,b.createElement)("svg",{ref:m,...e,width:d??n??e.width,height:d??n??e.height,stroke:a??q,strokeWidth:s,className:c("lucide",r,i),...!j&&!(a=>{for(let b in a)if(b.startsWith("aria-")||"role"===b||"title"===b)return!0;return!1})(l)&&{"aria-hidden":"true"},...l},[...k.map(([a,c])=>(0,b.createElement)(a,c)),...Array.isArray(j)?j:[j]])});a.s(["default",0,(a,e)=>{let f=(0,b.forwardRef)(({className:f,...h},i)=>(0,b.createElement)(g,{ref:i,iconNode:e,className:c(`lucide-${d(a).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${a}`,f),...h}));return f.displayName=d(a),f}],564375)},597435,177765,a=>{"use strict";let b=(0,a.i(564375).default)("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);a.s(["default",0,b],177765),a.s(["Check",0,b],597435)},975022,a=>{"use strict";let b=(0,a.i(564375).default)("terminal",[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]]);a.s(["Terminal",0,b],975022)},132660,a=>{"use strict";let b=(0,a.i(564375).default)("eye",[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);a.s(["Eye",0,b],132660)},524256,a=>{"use strict";let b=(0,a.i(564375).default)("network",[["rect",{x:"16",y:"16",width:"6",height:"6",rx:"1",key:"4q2zg0"}],["rect",{x:"2",y:"16",width:"6",height:"6",rx:"1",key:"8cvhb9"}],["rect",{x:"9",y:"2",width:"6",height:"6",rx:"1",key:"1egb70"}],["path",{d:"M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3",key:"1jsf9p"}],["path",{d:"M12 12V8",key:"2874zd"}]]);a.s(["Network",0,b],524256)},532572,a=>{"use strict";let b=(0,a.i(564375).default)("download",[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]]);a.s(["Download",0,b],532572)},841527,a=>{"use strict";var b=a.i(508171),c=a.i(975022),d=a.i(799856);a.s(["default",0,({shimmer:a=!1,size:e="sm",className:f})=>(0,b.jsxs)("div",{className:(0,d.cn)("flex items-center gap-1.5","xl"===e&&"gap-2.5",f),children:[(0,b.jsx)(c.Terminal,{className:(0,d.cn)("xl"===e?"h-6 w-6":"h-4 w-4","shrink-0 text-brand")}),(0,b.jsxs)("span",{className:(0,d.cn)("xl"===e?"text-xl":"text-sm",a?"animate-shimmer":"text-brand"),children:[(0,b.jsx)("span",{className:"font-bold",children:"purple"}),(0,b.jsx)("span",{className:"font-normal",children:"mux"})]})]})])},2026,55594,a=>{"use strict";var b=a.i(564375);let c=(0,b.default)("arrow-left",[["path",{d:"m12 19-7-7 7-7",key:"1l729n"}],["path",{d:"M19 12H5",key:"x3x0zl"}]]);a.s(["ArrowLeft",0,c],2026);let d=(0,b.default)("arrow-right",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]]);a.s(["ArrowRight",0,d],55594)},929070,a=>{"use strict";let b=(0,a.i(564375).default)("list-checks",[["path",{d:"M13 5h8",key:"a7qcls"}],["path",{d:"M13 12h8",key:"h98zly"}],["path",{d:"M13 19h8",key:"c3s6r1"}],["path",{d:"m3 17 2 2 4-4",key:"1jhpwq"}],["path",{d:"m3 7 2 2 4-4",key:"1obspn"}]]);a.s(["ListChecks",0,b],929070)},387607,711412,a=>{"use strict";var b=a.i(924868),c=a.i(814747),d=a.i(446786);a.i(254799),a.i(945413),(0,a.i(926026).createLogger)("config");let e=c.default.join(d.default.homedir(),".purplemux"),f=c.default.join(e,"config.json"),g=globalThis;g.__ptConfigLock||(g.__ptConfigLock=Promise.resolve());let h=async()=>{try{let a=await b.default.readFile(f,"utf-8");return JSON.parse(a)}catch{return null}},i=async()=>await h()??{updatedAt:new Date().toISOString()};a.s(["getConfig",0,i],711412);var j=a.i(111794);let k=new Set(["en","ko","ja","zh-CN","es","de","fr","pt-BR","zh-TW","ru","tr"]),l=c.default.join(process.cwd(),"messages"),m=async()=>{let a,d=(a=(await i()).locale)&&k.has(a)?a:"en";return Object.fromEntries(await Promise.all(j.MESSAGE_NAMESPACES.map(async a=>{let e=await b.default.readFile(c.default.join(l,d,`${a}.json`),"utf-8");return[a,JSON.parse(e)]})))};a.s(["loadMessagesServer",0,m],387607)},737098,849612,a=>{"use strict";let b=(0,a.i(564375).default)("refresh-ccw",[["path",{d:"M21 12a9 9 0 0 0-9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"14sxne"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}],["path",{d:"M3 12a9 9 0 0 0 9 9 9.75 9.75 0 0 0 6.74-2.74L21 16",key:"1hlbsb"}],["path",{d:"M16 16h5v5",key:"ccwih5"}]]);a.s(["RefreshCcw",0,b],737098);var c=a.i(508171),d=a.i(127669),e=a.i(113952),f=a.i(109254),g=a.i(396465),h=a.i(514385),i=a.i(104877);a.s(["default",0,({open:a,onOpenChange:b,command:j,label:k})=>{let l=(0,e.useTranslations)("common"),m=(0,d.useRef)(!1),n=(0,d.useRef)(()=>{}),{connect:o,disconnect:p,sendStdin:q,sendResize:r}=(a=>{let b=(0,d.useRef)(null),[c,e]=(0,d.useState)("idle"),f=(0,d.useRef)(a);(0,d.useEffect)(()=>{f.current=a},[a]);let g=(0,d.useCallback)(()=>{let a=b.current;a&&(a.close(),b.current=null)},[]);(0,d.useEffect)(()=>()=>{b.current?.close()},[]);let h=(0,d.useCallback)((a,c,d)=>{g();let h="https:"===window.location.protocol?"wss:":"ws:",j=new WebSocket(`${h}//${window.location.host}/api/install?command=${encodeURIComponent(a)}&cols=${c}&rows=${d}`);j.binaryType="arraybuffer",b.current=j,j.onopen=()=>e("connected"),j.onmessage=a=>{let b=(0,i.decodeMessage)(a.data);b.type===i.MSG_STDOUT&&f.current(b.payload)},j.onclose=()=>{b.current=null,e("disconnected")},j.onerror=()=>{b.current=null,e("disconnected")}},[g]);return{status:c,connect:h,disconnect:g,sendStdin:(0,d.useCallback)(a=>{b.current?.send((0,i.encodeStdin)(a))},[]),sendResize:(0,d.useCallback)((a,c)=>{b.current?.send((0,i.encodeResize)(a,c))},[])}})(a=>n.current(a)),{terminalRef:s,write:t,fit:u,isReady:v}=(0,h.default)({fontSize:12,onInput:q,onResize:r});(0,d.useEffect)(()=>{n.current=t},[t]),(0,d.useEffect)(()=>{if(a&&v&&!m.current){m.current=!0;let{cols:a,rows:b}=u();o(j,a,b)}},[a,v,j,o,u]);let w=(0,d.useCallback)(()=>{p(),m.current=!1,b(!1),window.location.reload()},[p,b]);return(0,c.jsx)(f.Dialog,{open:a,onOpenChange:a=>{a||w()},children:(0,c.jsxs)(f.DialogContent,{className:"sm:max-w-2xl",showCloseButton:!1,children:[(0,c.jsx)(f.DialogHeader,{children:(0,c.jsx)(f.DialogTitle,{children:k})}),(0,c.jsx)("div",{ref:s,className:"h-[400px] w-full rounded-md bg-black p-2"}),(0,c.jsx)(f.DialogFooter,{children:(0,c.jsx)(g.Button,{variant:"outline",onClick:w,children:l("close")})})]})})}],849612)}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=_0a64og5._.js.map
|