9remote 3.0.39 → 3.0.40
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/dist/cli.cjs +86 -86
- package/dist/extension/background.js +136 -123
- package/dist/extension/manifest.json +6 -5
- package/dist/extension/runner.js +606 -0
- package/dist/server.cjs +239 -243
- package/dist/ui/assets/index-D_C1NTm1.js +8 -0
- package/dist/ui/index.html +1 -1
- package/dist/web/404.html +1 -1
- package/dist/web/__next.__PAGE__.txt +4 -4
- package/dist/web/__next._full.txt +17 -17
- package/dist/web/__next._head.txt +4 -4
- package/dist/web/__next._index.txt +10 -10
- package/dist/web/__next._tree.txt +3 -3
- package/dist/web/_next/static/chunks/{0fb7b532.2e7a08a3edb2d789.js → 025762a4.c49f8207624e1667.js} +1 -1
- package/dist/web/_next/static/chunks/101.bfb3898573e4245d.js +1 -0
- package/dist/web/_next/static/chunks/1342.3d5707800ea67dcb.js +1 -0
- package/dist/web/_next/static/chunks/153.d7a869e0874f32e0.js +1 -0
- package/dist/web/_next/static/chunks/1561.8d395206716b3967.js +1 -0
- package/dist/web/_next/static/chunks/{4314.6bbd89507909cad1.js → 1599.ed9aa4b461112c1a.js} +1 -1
- package/dist/web/_next/static/chunks/1694.7c4e72f21d4ce34c.js +1 -0
- package/dist/web/_next/static/chunks/1772-ef73c166e83f5eff.js +1 -0
- package/dist/web/_next/static/chunks/1878.724a4af779f951aa.js +138 -0
- package/dist/web/_next/static/chunks/1879.0252e2bd9153348f.js +1 -0
- package/dist/web/_next/static/chunks/1920-5ead25286846df83.js +1 -0
- package/dist/web/_next/static/chunks/1968-4d2969f0b7112e0b.js +32 -0
- package/dist/web/_next/static/chunks/2004.f975891d8a569296.js +24 -0
- package/dist/web/_next/static/chunks/2094.05efbc3414828946.js +1 -0
- package/dist/web/_next/static/chunks/2209.2ee6023fed2ac7a5.js +1 -0
- package/dist/web/_next/static/chunks/236.88ef102773dd3a91.js +1 -0
- package/dist/web/_next/static/chunks/2369.22023f63f0eaf8db.js +1 -0
- package/dist/web/_next/static/chunks/{6420.bfa7bc86d03dcefc.js → 2401.73a0315a75c7b051.js} +1 -1
- package/dist/web/_next/static/chunks/2427.3a468cdfabd25124.js +1 -0
- package/dist/web/_next/static/chunks/2436.da0ef064f744b8af.js +115 -0
- package/dist/web/_next/static/chunks/{1222.16edfbb0beb9081f.js → 2488.87361126358794fd.js} +1 -1
- package/dist/web/_next/static/chunks/2561.6c8eb8cf71429d5d.js +36 -0
- package/dist/web/_next/static/chunks/2581.d09a7f19c64e4b97.js +1 -0
- package/dist/web/_next/static/chunks/{8044.5f87392585c9f3e4.js → 2615.86c58079ec7c597c.js} +1 -1
- package/dist/web/_next/static/chunks/2934.0caeb8b2d8b67139.js +1 -0
- package/dist/web/_next/static/chunks/{6274.a3795ca6dacb3d62.js → 3011.fc80a2aad3ef8778.js} +2 -2
- package/dist/web/_next/static/chunks/3255.3c96f02d5eb06783.js +23 -0
- package/dist/web/_next/static/chunks/3284.e56b0102fb9a3920.js +62 -0
- package/dist/web/_next/static/chunks/329-15d3e36af1b2827f.js +1 -0
- package/dist/web/_next/static/chunks/3301.1f7e2bd5ccb55064.js +1 -0
- package/dist/web/_next/static/chunks/3314.b5b5b3cca99d832e.js +1 -0
- package/dist/web/_next/static/chunks/{20154aaa.868648f838e03bf1.js → 33d0405b.71576a1f83124ecd.js} +1 -1
- package/dist/web/_next/static/chunks/3428.8818e0ef88c0e743.js +1 -0
- package/dist/web/_next/static/chunks/{3429.e69c6bd48e1207a9.js → 3443.8d771dadb470603c.js} +1 -1
- package/dist/web/_next/static/chunks/{6742.88fddf128fbeb43d.js → 3704.bf80aa0d55f950d0.js} +1 -1
- package/dist/web/_next/static/chunks/3916.141fb720bd1eee40.js +148 -0
- package/dist/web/_next/static/chunks/3973.e5c2013e2abeefd3.js +93 -0
- package/dist/web/_next/static/chunks/4065.7616cbd8f37a68e6.js +1 -0
- package/dist/web/_next/static/chunks/{9299.e37149b455be7e9d.js → 4129.a93c19870036f647.js} +1 -1
- package/dist/web/_next/static/chunks/{6730.88fc6f2ccc49496c.js → 4171.b0e5c6dc86bc8a5f.js} +1 -1
- package/dist/web/_next/static/chunks/4330.a8740b63075e6886.js +1 -0
- package/dist/web/_next/static/chunks/4378.a0629cfcbc20c406.js +1 -0
- package/dist/web/_next/static/chunks/4553.cad71717d538a2e5.js +1 -0
- package/dist/web/_next/static/chunks/4589.9bd287581ccd378b.js +1 -0
- package/dist/web/_next/static/chunks/4594.53636acacf285911.js +34 -0
- package/dist/web/_next/static/chunks/466.908e4592c2b93997.js +77 -0
- package/dist/web/_next/static/chunks/468.2e48222bf3517040.js +1 -0
- package/dist/web/_next/static/chunks/4712.b7062faa67f544b5.js +1 -0
- package/dist/web/_next/static/chunks/{9675.be4a175f92aa2f26.js → 4724.e0dffedb6972b738.js} +1 -1
- package/dist/web/_next/static/chunks/482.a0b5af31d7354a82.js +1 -0
- package/dist/web/_next/static/chunks/4929.fce0c23972476c66.js +1 -0
- package/dist/web/_next/static/chunks/4964.5a41b2d776aee556.js +1 -0
- package/dist/web/_next/static/chunks/499.cf81a39b9e6ce4a4.js +94 -0
- package/dist/web/_next/static/chunks/{0a7753a9.4cb02a98e2e453b9.js → 4ff7191e.d68cdd8504937de5.js} +1 -1
- package/dist/web/_next/static/chunks/5035.f7175d1037807b62.js +90 -0
- package/dist/web/_next/static/chunks/5198.b8e3a08cb60bc349.js +1 -0
- package/dist/web/_next/static/chunks/5421.430fa3a5488e15a9.js +21 -0
- package/dist/web/_next/static/chunks/{9871-c277aedb0437cb82.js → 556-a8f04c41c5663ee8.js} +1 -1
- package/dist/web/_next/static/chunks/5587-fc5af8c76df14222.js +1 -0
- package/dist/web/_next/static/chunks/5710.b055a101d6b51ff3.js +27 -0
- package/dist/web/_next/static/chunks/{2180.edcf5dc3d77ceee8.js → 5714.122f8cb7296bc9e1.js} +1 -1
- package/dist/web/_next/static/chunks/{1243.3f23d89283c156ea.js → 5757.2c157c0924cea1c2.js} +1 -1
- package/dist/web/_next/static/chunks/{3346-23aafd4add63869a.js → 5957-3d5d92b58dcc7d4e.js} +1 -1
- package/dist/web/_next/static/chunks/{565f33a6-fd3410bd29f39fdf.js → 5b8e7b36-a2678128cd5bdf5e.js} +1 -1
- package/dist/web/_next/static/chunks/6141-132d206408947c60.js +1 -0
- package/dist/web/_next/static/chunks/{7424.c8c9f85c8ea65885.js → 6181.6bdde6f59e3f2cea.js} +1 -1
- package/dist/web/_next/static/chunks/6221-cf883148bf8a4c1e.js +11 -0
- package/dist/web/_next/static/chunks/{3552.8dd9a3d2c3bcef65.js → 6372.51e578b15d566c0e.js} +2 -2
- package/dist/web/_next/static/chunks/6405.39e8b42a56b88bb5.js +1 -0
- package/dist/web/_next/static/chunks/641.7b1b12ccc56b3b3c.js +1 -0
- package/dist/web/_next/static/chunks/{6647.740ec32a32201eab.js → 6418.a86ca6012f0867ff.js} +1 -1
- package/dist/web/_next/static/chunks/{4924.3f5c77a103ac69a9.js → 6435.6aef0f9f1cc65be6.js} +1 -1
- package/dist/web/_next/static/chunks/6439.f02105d3687113e7.js +1 -0
- package/dist/web/_next/static/chunks/647.527b9a09373aab91.js +1 -0
- package/dist/web/_next/static/chunks/{8115.68d46fb961c724e0.js → 6470.7057ef6894a7f625.js} +16 -16
- package/dist/web/_next/static/chunks/{7507.77d9ac9eb03518f7.js → 6485.6ae2f3966cc25c9e.js} +1 -1
- package/dist/web/_next/static/chunks/{6987.743a63813c6288ce.js → 6512.cc81f46437639a0e.js} +2 -2
- package/dist/web/_next/static/chunks/6520.73f10855f9d4b5a8.js +1 -0
- package/dist/web/_next/static/chunks/668.1ddcf2e38071ae57.js +24 -0
- package/dist/web/_next/static/chunks/6815.8126ae5481c3bfd8.js +1 -0
- package/dist/web/_next/static/chunks/6925-af784cffb03dd330.js +1 -0
- package/dist/web/_next/static/chunks/6e6d0562.6ebb8f7db67bd943.js +122 -0
- package/dist/web/_next/static/chunks/7058.affbacca3457f5a7.js +41 -0
- package/dist/web/_next/static/chunks/7207.72d8a01e77112af2.js +1 -0
- package/dist/web/_next/static/chunks/{4090.441fa61655da9b38.js → 7359.b09680f38f75e105.js} +1 -1
- package/dist/web/_next/static/chunks/7369.a824cc623274cf63.js +1 -0
- package/dist/web/_next/static/chunks/7489.24938d89538cd03e.js +1 -0
- package/dist/web/_next/static/chunks/{9641.f6f2982fc4b4735f.js → 7576.273c3d0faf5c3d02.js} +1 -1
- package/dist/web/_next/static/chunks/7620.5c5935fd937c0e84.js +1 -0
- package/dist/web/_next/static/chunks/{1228.c4aa83586b3730b6.js → 7646.1c26e96ee36bc317.js} +1 -1
- package/dist/web/_next/static/chunks/7712.cd8c3dc2d794d714.js +1 -0
- package/dist/web/_next/static/chunks/{2038.b77e2c3d38385a76.js → 7812.aabc856212c93434.js} +1 -1
- package/dist/web/_next/static/chunks/804.38f05d79313a8dcc.js +104 -0
- package/dist/web/_next/static/chunks/8126-0279fc9e17c08aff.js +1 -0
- package/dist/web/_next/static/chunks/820-99036fb63c5462c8.js +1 -0
- package/dist/web/_next/static/chunks/8304.936a74abe6f0a288.js +1 -0
- package/dist/web/_next/static/chunks/8314.7ff9d72cd8613f75.js +226 -0
- package/dist/web/_next/static/chunks/8390.5eda620e73ea6c5c.js +74 -0
- package/dist/web/_next/static/chunks/860.f7885efc630bcfd7.js +1 -0
- package/dist/web/_next/static/chunks/87c73c54-e11922cda838f8cc.js +1 -0
- package/dist/web/_next/static/chunks/887.15090f9a6a142a10.js +1 -0
- package/dist/web/_next/static/chunks/8977.1ab6ed8e2c098cf0.js +1 -0
- package/dist/web/_next/static/chunks/9121-3d281debd0f3e659.js +1 -0
- package/dist/web/_next/static/chunks/9491-6dc334192080d071.js +86 -0
- package/dist/web/_next/static/chunks/951ed0e8.98070dce91103a63.js +1 -0
- package/dist/web/_next/static/chunks/9651.d199fbbbc3de43b8.js +215 -0
- package/dist/web/_next/static/chunks/9692.dd07a90166f5e6ff.js +1 -0
- package/dist/web/_next/static/chunks/{6075.a6b8434732056526.js → 9700.c47024f592537718.js} +1 -1
- package/dist/web/_next/static/chunks/9711.cf7aaa7fa6ec7dd7.js +287 -0
- package/dist/web/_next/static/chunks/9736.63b4a559c8a23186.js +1 -0
- package/dist/web/_next/static/chunks/{bbfbfb6c.069db3c4cc981ed3.js → 98f82933.0c4f9e5e83926351.js} +1 -1
- package/dist/web/_next/static/chunks/{da9a53d6.df25e193f1f5bcae.js → a36ae3fc.d666935373d1f579.js} +4 -4
- package/dist/web/_next/static/chunks/{adcd17ec-9a2791632136b67b.js → ab6c8a12-9dac45de556d8a8d.js} +1 -1
- package/dist/web/_next/static/chunks/app/_global-error/page-2ece09c883187d82.js +1 -0
- package/dist/web/_next/static/chunks/app/_not-found/page-9f829d2c4beb1840.js +1 -0
- package/dist/web/_next/static/chunks/app/admin/access/page-45f45ad529e5b691.js +5 -0
- package/dist/web/_next/static/chunks/app/admin/login/page-382072b5b43d3c29.js +1 -0
- package/dist/web/_next/static/chunks/app/admin/ota/page-293c0743bd60f454.js +5 -0
- package/dist/web/_next/static/chunks/app/admin/page-fc676dae451dd646.js +5 -0
- package/dist/web/_next/static/chunks/app/admin/turn/page-2ab33033fc7f0919.js +5 -0
- package/dist/web/_next/static/chunks/app/dev/question/page-bafce0c9fd4e8488.js +1 -0
- package/dist/web/_next/static/chunks/app/download/{page-2811ea822a1e586a.js → page-a65d1c7fcf6397af.js} +1 -1
- package/dist/web/_next/static/chunks/app/layout-f1429d22e935695f.js +1 -0
- package/dist/web/_next/static/chunks/app/login/page-a5dd37d1cbbb394e.js +1 -0
- package/dist/web/_next/static/chunks/app/{page-8387dba850541259.js → page-1e67d8a5f3775276.js} +3 -3
- package/dist/web/_next/static/chunks/app/workspace/browse/page-2ece09c883187d82.js +1 -0
- package/dist/web/_next/static/chunks/app/workspace/editor/page-2ece09c883187d82.js +1 -0
- package/dist/web/_next/static/chunks/app/workspace/files/page-2ece09c883187d82.js +1 -0
- package/dist/web/_next/static/chunks/app/workspace/git/page-2ece09c883187d82.js +1 -0
- package/dist/web/_next/static/chunks/app/workspace/layout-d8bb677fa1caa5a7.js +20 -0
- package/dist/web/_next/static/chunks/app/workspace/mobile/page-2ece09c883187d82.js +1 -0
- package/dist/web/_next/static/chunks/app/workspace/page-2ece09c883187d82.js +1 -0
- package/dist/web/_next/static/chunks/app/workspace/pair/page-2ece09c883187d82.js +1 -0
- package/dist/web/_next/static/chunks/app/workspace/remote/page-2ece09c883187d82.js +1 -0
- package/dist/web/_next/static/chunks/app/workspace/terminal/[sessionId]/page-2ece09c883187d82.js +1 -0
- package/dist/web/_next/static/chunks/app/workspace/welcome/page-2ece09c883187d82.js +1 -0
- package/dist/web/_next/static/chunks/app/workspace/workspaces/page-2ece09c883187d82.js +1 -0
- package/dist/web/_next/static/chunks/b2b4fb58.d2a067fe7df4a0d0.js +1 -0
- package/dist/web/_next/static/chunks/baeaa4ff-8eac34d2e07d1bb3.js +1 -0
- package/dist/web/_next/static/chunks/{7c89255b.f727562586fa21cc.js → c2d9a0c9.b4e0bb73c2ed317c.js} +1 -1
- package/dist/web/_next/static/chunks/{a012e9f0.7dbb2fe05ec0b816.js → ccfb6294.add4177b76c37868.js} +11 -11
- package/dist/web/_next/static/chunks/{c7ea4e13.6153499d4c2fb1f2.js → db261188.134a04dd616706a4.js} +1 -1
- package/dist/web/_next/static/chunks/framework-59d2d1720fc2b396.js +1 -0
- package/dist/web/_next/static/chunks/main-app-72391b47e9393c1b.js +1 -0
- package/dist/web/_next/static/chunks/main-e10b0dbebb4de0a8.js +5 -0
- package/dist/web/_next/static/chunks/next/dist/client/components/builtin/app-error-2ece09c883187d82.js +1 -0
- package/dist/web/_next/static/chunks/next/dist/client/components/builtin/forbidden-2ece09c883187d82.js +1 -0
- package/dist/web/_next/static/chunks/next/dist/client/components/builtin/global-error-48f06b4c48a1eef3.js +1 -0
- package/dist/web/_next/static/chunks/next/dist/client/components/builtin/not-found-2ece09c883187d82.js +1 -0
- package/dist/web/_next/static/chunks/next/dist/client/components/builtin/unauthorized-2ece09c883187d82.js +1 -0
- package/dist/web/_next/static/chunks/webpack-dd1f7a5ae02e5d84.js +1 -0
- package/dist/web/_next/static/css/{b496025c9cd768cc.css → 15730e9f7c5c55ef.css} +1 -1
- package/dist/web/_next/static/css/1c2cca827fa36d54.css +1 -0
- package/dist/web/_not-found/__next._full.txt +15 -15
- package/dist/web/_not-found/__next._head.txt +4 -4
- package/dist/web/_not-found/__next._index.txt +10 -10
- package/dist/web/_not-found/__next._not-found.__PAGE__.txt +2 -2
- package/dist/web/_not-found/__next._not-found.txt +3 -3
- package/dist/web/_not-found/__next._tree.txt +3 -3
- package/dist/web/_not-found.html +1 -1
- package/dist/web/_not-found.txt +15 -15
- package/dist/web/admin/__next._full.txt +17 -17
- package/dist/web/admin/__next._head.txt +4 -4
- package/dist/web/admin/__next._index.txt +10 -10
- package/dist/web/admin/__next._tree.txt +3 -3
- package/dist/web/admin/__next.admin.__PAGE__.txt +4 -4
- package/dist/web/admin/__next.admin.txt +3 -3
- package/dist/web/admin/access/__next._full.txt +17 -17
- package/dist/web/admin/access/__next._head.txt +4 -4
- package/dist/web/admin/access/__next._index.txt +10 -10
- package/dist/web/admin/access/__next._tree.txt +3 -3
- package/dist/web/admin/access/__next.admin.access.__PAGE__.txt +4 -4
- package/dist/web/admin/access/__next.admin.access.txt +3 -3
- package/dist/web/admin/access/__next.admin.txt +3 -3
- package/dist/web/admin/access.html +1 -1
- package/dist/web/admin/access.txt +17 -17
- package/dist/web/admin/login/__next._full.txt +17 -17
- package/dist/web/admin/login/__next._head.txt +4 -4
- package/dist/web/admin/login/__next._index.txt +10 -10
- package/dist/web/admin/login/__next._tree.txt +3 -3
- package/dist/web/admin/login/__next.admin.login.__PAGE__.txt +4 -4
- package/dist/web/admin/login/__next.admin.login.txt +3 -3
- package/dist/web/admin/login/__next.admin.txt +3 -3
- package/dist/web/admin/login.html +1 -1
- package/dist/web/admin/login.txt +17 -17
- package/dist/web/admin/ota/__next._full.txt +17 -17
- package/dist/web/admin/ota/__next._head.txt +4 -4
- package/dist/web/admin/ota/__next._index.txt +10 -10
- package/dist/web/admin/ota/__next._tree.txt +3 -3
- package/dist/web/admin/ota/__next.admin.ota.__PAGE__.txt +4 -4
- package/dist/web/admin/ota/__next.admin.ota.txt +3 -3
- package/dist/web/admin/ota/__next.admin.txt +3 -3
- package/dist/web/admin/ota.html +1 -1
- package/dist/web/admin/ota.txt +17 -17
- package/dist/web/admin/turn/__next._full.txt +17 -17
- package/dist/web/admin/turn/__next._head.txt +4 -4
- package/dist/web/admin/turn/__next._index.txt +10 -10
- package/dist/web/admin/turn/__next._tree.txt +3 -3
- package/dist/web/admin/turn/__next.admin.turn.__PAGE__.txt +4 -4
- package/dist/web/admin/turn/__next.admin.turn.txt +3 -3
- package/dist/web/admin/turn/__next.admin.txt +3 -3
- package/dist/web/admin/turn.html +1 -1
- package/dist/web/admin/turn.txt +17 -17
- package/dist/web/admin.html +1 -1
- package/dist/web/admin.txt +17 -17
- package/dist/web/dev/question/__next._full.txt +17 -17
- package/dist/web/dev/question/__next._head.txt +4 -4
- package/dist/web/dev/question/__next._index.txt +10 -10
- package/dist/web/dev/question/__next._tree.txt +3 -3
- package/dist/web/dev/question/__next.dev.question.__PAGE__.txt +4 -4
- package/dist/web/dev/question/__next.dev.question.txt +3 -3
- package/dist/web/dev/question/__next.dev.txt +3 -3
- package/dist/web/dev/question.html +1 -1
- package/dist/web/dev/question.txt +17 -17
- package/dist/web/download/__next._full.txt +16 -16
- package/dist/web/download/__next._head.txt +4 -4
- package/dist/web/download/__next._index.txt +10 -10
- package/dist/web/download/__next._tree.txt +3 -3
- package/dist/web/download/__next.download.__PAGE__.txt +3 -3
- package/dist/web/download/__next.download.txt +3 -3
- package/dist/web/download.html +1 -1
- package/dist/web/download.txt +16 -16
- package/dist/web/index.html +1 -1
- package/dist/web/index.txt +17 -17
- package/dist/web/login/__next._full.txt +17 -17
- package/dist/web/login/__next._head.txt +4 -4
- package/dist/web/login/__next._index.txt +10 -10
- package/dist/web/login/__next._tree.txt +3 -3
- package/dist/web/login/__next.login.__PAGE__.txt +4 -4
- package/dist/web/login/__next.login.txt +3 -3
- package/dist/web/login.html +1 -1
- package/dist/web/login.txt +17 -17
- package/dist/web/workspace/__next._full.txt +17 -17
- package/dist/web/workspace/__next._head.txt +4 -4
- package/dist/web/workspace/__next._index.txt +10 -10
- package/dist/web/workspace/__next._tree.txt +3 -3
- package/dist/web/workspace/__next.workspace.__PAGE__.txt +2 -2
- package/dist/web/workspace/__next.workspace.txt +5 -5
- package/dist/web/workspace/browse/__next._full.txt +17 -17
- package/dist/web/workspace/browse/__next._head.txt +4 -4
- package/dist/web/workspace/browse/__next._index.txt +10 -10
- package/dist/web/workspace/browse/__next._tree.txt +3 -3
- package/dist/web/workspace/browse/__next.workspace.browse.__PAGE__.txt +2 -2
- package/dist/web/workspace/browse/__next.workspace.browse.txt +3 -3
- package/dist/web/workspace/browse/__next.workspace.txt +5 -5
- package/dist/web/workspace/browse.html +1 -1
- package/dist/web/workspace/browse.txt +17 -17
- package/dist/web/workspace/editor/__next._full.txt +17 -17
- package/dist/web/workspace/editor/__next._head.txt +4 -4
- package/dist/web/workspace/editor/__next._index.txt +10 -10
- package/dist/web/workspace/editor/__next._tree.txt +3 -3
- package/dist/web/workspace/editor/__next.workspace.editor.__PAGE__.txt +2 -2
- package/dist/web/workspace/editor/__next.workspace.editor.txt +3 -3
- package/dist/web/workspace/editor/__next.workspace.txt +5 -5
- package/dist/web/workspace/editor.html +1 -1
- package/dist/web/workspace/editor.txt +17 -17
- package/dist/web/workspace/files/__next._full.txt +17 -17
- package/dist/web/workspace/files/__next._head.txt +4 -4
- package/dist/web/workspace/files/__next._index.txt +10 -10
- package/dist/web/workspace/files/__next._tree.txt +3 -3
- package/dist/web/workspace/files/__next.workspace.files.__PAGE__.txt +2 -2
- package/dist/web/workspace/files/__next.workspace.files.txt +3 -3
- package/dist/web/workspace/files/__next.workspace.txt +5 -5
- package/dist/web/workspace/files.html +1 -1
- package/dist/web/workspace/files.txt +17 -17
- package/dist/web/workspace/git/__next._full.txt +17 -17
- package/dist/web/workspace/git/__next._head.txt +4 -4
- package/dist/web/workspace/git/__next._index.txt +10 -10
- package/dist/web/workspace/git/__next._tree.txt +3 -3
- package/dist/web/workspace/git/__next.workspace.git.__PAGE__.txt +2 -2
- package/dist/web/workspace/git/__next.workspace.git.txt +3 -3
- package/dist/web/workspace/git/__next.workspace.txt +5 -5
- package/dist/web/workspace/git.html +1 -1
- package/dist/web/workspace/git.txt +17 -17
- package/dist/web/workspace/mobile/__next._full.txt +17 -17
- package/dist/web/workspace/mobile/__next._head.txt +4 -4
- package/dist/web/workspace/mobile/__next._index.txt +10 -10
- package/dist/web/workspace/mobile/__next._tree.txt +3 -3
- package/dist/web/workspace/mobile/__next.workspace.mobile.__PAGE__.txt +2 -2
- package/dist/web/workspace/mobile/__next.workspace.mobile.txt +3 -3
- package/dist/web/workspace/mobile/__next.workspace.txt +5 -5
- package/dist/web/workspace/mobile.html +1 -1
- package/dist/web/workspace/mobile.txt +17 -17
- package/dist/web/workspace/pair/__next._full.txt +17 -17
- package/dist/web/workspace/pair/__next._head.txt +4 -4
- package/dist/web/workspace/pair/__next._index.txt +10 -10
- package/dist/web/workspace/pair/__next._tree.txt +3 -3
- package/dist/web/workspace/pair/__next.workspace.pair.__PAGE__.txt +2 -2
- package/dist/web/workspace/pair/__next.workspace.pair.txt +3 -3
- package/dist/web/workspace/pair/__next.workspace.txt +5 -5
- package/dist/web/workspace/pair.html +1 -1
- package/dist/web/workspace/pair.txt +17 -17
- package/dist/web/workspace/remote/__next._full.txt +17 -17
- package/dist/web/workspace/remote/__next._head.txt +4 -4
- package/dist/web/workspace/remote/__next._index.txt +10 -10
- package/dist/web/workspace/remote/__next._tree.txt +3 -3
- package/dist/web/workspace/remote/__next.workspace.remote.__PAGE__.txt +2 -2
- package/dist/web/workspace/remote/__next.workspace.remote.txt +3 -3
- package/dist/web/workspace/remote/__next.workspace.txt +5 -5
- package/dist/web/workspace/remote.html +1 -1
- package/dist/web/workspace/remote.txt +17 -17
- package/dist/web/workspace/terminal/default/__next._full.txt +17 -17
- package/dist/web/workspace/terminal/default/__next._head.txt +4 -4
- package/dist/web/workspace/terminal/default/__next._index.txt +10 -10
- package/dist/web/workspace/terminal/default/__next._tree.txt +3 -3
- package/dist/web/workspace/terminal/default/__next.workspace.terminal.$d$sessionId.__PAGE__.txt +2 -2
- package/dist/web/workspace/terminal/default/__next.workspace.terminal.$d$sessionId.txt +3 -3
- package/dist/web/workspace/terminal/default/__next.workspace.terminal.txt +3 -3
- package/dist/web/workspace/terminal/default/__next.workspace.txt +5 -5
- package/dist/web/workspace/terminal/default.html +1 -1
- package/dist/web/workspace/terminal/default.txt +17 -17
- package/dist/web/workspace/welcome/__next._full.txt +17 -17
- package/dist/web/workspace/welcome/__next._head.txt +4 -4
- package/dist/web/workspace/welcome/__next._index.txt +10 -10
- package/dist/web/workspace/welcome/__next._tree.txt +3 -3
- package/dist/web/workspace/welcome/__next.workspace.txt +5 -5
- package/dist/web/workspace/welcome/__next.workspace.welcome.__PAGE__.txt +2 -2
- package/dist/web/workspace/welcome/__next.workspace.welcome.txt +3 -3
- package/dist/web/workspace/welcome.html +1 -1
- package/dist/web/workspace/welcome.txt +17 -17
- package/dist/web/workspace/workspaces/__next._full.txt +17 -17
- package/dist/web/workspace/workspaces/__next._head.txt +4 -4
- package/dist/web/workspace/workspaces/__next._index.txt +10 -10
- package/dist/web/workspace/workspaces/__next._tree.txt +3 -3
- package/dist/web/workspace/workspaces/__next.workspace.txt +5 -5
- package/dist/web/workspace/workspaces/__next.workspace.workspaces.__PAGE__.txt +2 -2
- package/dist/web/workspace/workspaces/__next.workspace.workspaces.txt +3 -3
- package/dist/web/workspace/workspaces.html +1 -1
- package/dist/web/workspace/workspaces.txt +17 -17
- package/dist/web/workspace.html +1 -1
- package/dist/web/workspace.txt +17 -17
- package/package.json +1 -1
- package/dist/ui/assets/index-BKC13tXO.js +0 -8
- package/dist/web/_next/static/chunks/1050-b9af41e8856b58c0.js +0 -1
- package/dist/web/_next/static/chunks/132.71f657e5a607b7d3.js +0 -1
- package/dist/web/_next/static/chunks/133.1106654a28b5afda.js +0 -1
- package/dist/web/_next/static/chunks/1385.086b560acb0d7a68.js +0 -115
- package/dist/web/_next/static/chunks/1642.cac26d30ac331cb4.js +0 -1
- package/dist/web/_next/static/chunks/1733.f06c240b3ef8a428.js +0 -77
- package/dist/web/_next/static/chunks/1750.ea89a41e86ac2790.js +0 -1
- package/dist/web/_next/static/chunks/1763.28beedca593b5e19.js +0 -138
- package/dist/web/_next/static/chunks/179.b9e8f385bd414d1c.js +0 -62
- package/dist/web/_next/static/chunks/1838.7c8990f903e3524a.js +0 -215
- package/dist/web/_next/static/chunks/2112.d72eefbdf81659b3.js +0 -23
- package/dist/web/_next/static/chunks/2125.61c6e4a3541e30ad.js +0 -1
- package/dist/web/_next/static/chunks/2129.61afb2f4ff59e46a.js +0 -24
- package/dist/web/_next/static/chunks/213.ae43f03862ad9cc1.js +0 -1
- package/dist/web/_next/static/chunks/2179.3f55be0b79e3cca7.js +0 -1
- package/dist/web/_next/static/chunks/2264.0fc1474d26067a01.js +0 -1
- package/dist/web/_next/static/chunks/2376.ed6302a91a9de1ae.js +0 -36
- package/dist/web/_next/static/chunks/2545.3ff192a933baf11e.js +0 -1
- package/dist/web/_next/static/chunks/2620.d17f4fac0eec88a5.js +0 -1
- package/dist/web/_next/static/chunks/2847.d3124853ca727b78.js +0 -1
- package/dist/web/_next/static/chunks/2849.d810c3fdb2054b14.js +0 -1
- package/dist/web/_next/static/chunks/3189.64c6546d621eec0b.js +0 -1
- package/dist/web/_next/static/chunks/3348-9ef29f9cedf6c0df.js +0 -1
- package/dist/web/_next/static/chunks/3514.20bd03c8194dec25.js +0 -1
- package/dist/web/_next/static/chunks/3606.b59e695fd05b4eb3.js +0 -74
- package/dist/web/_next/static/chunks/3736.4a5662ceeecc6acb.js +0 -94
- package/dist/web/_next/static/chunks/392.842b338137824bb8.js +0 -1
- package/dist/web/_next/static/chunks/4136-d7c1ff2da0833b42.js +0 -86
- package/dist/web/_next/static/chunks/4300-a66b52c9e1a27db3.js +0 -1
- package/dist/web/_next/static/chunks/4303.54c4aa0b89834fc6.js +0 -1
- package/dist/web/_next/static/chunks/4551.d0d6723cacfb90b9.js +0 -226
- package/dist/web/_next/static/chunks/4566.d8e009823b8647d1.js +0 -90
- package/dist/web/_next/static/chunks/4643.1e356e007756e19d.js +0 -1
- package/dist/web/_next/static/chunks/4930.42e564644c94a93b.js +0 -1
- package/dist/web/_next/static/chunks/5155.d7e8db52ab4c95e0.js +0 -27
- package/dist/web/_next/static/chunks/5158-267908d069475cdc.js +0 -32
- package/dist/web/_next/static/chunks/543.5636e97aa68eb9c8.js +0 -41
- package/dist/web/_next/static/chunks/5506.98304a1821200439.js +0 -1
- package/dist/web/_next/static/chunks/5622.5ead5e748ecedbd1.js +0 -1
- package/dist/web/_next/static/chunks/5708.22b4531ceebf3eca.js +0 -1
- package/dist/web/_next/static/chunks/5788-f0c87f9c14fa0ff9.js +0 -1
- package/dist/web/_next/static/chunks/5804.ff72a927135eb74c.js +0 -93
- package/dist/web/_next/static/chunks/588.78e2528ff24df85c.js +0 -287
- package/dist/web/_next/static/chunks/6001.e5bcb28bb9ce6571.js +0 -1
- package/dist/web/_next/static/chunks/6180.82fa683aa16f21df.js +0 -1
- package/dist/web/_next/static/chunks/6276.aa48f74970f7ef3d.js +0 -1
- package/dist/web/_next/static/chunks/6419.34fdd4aa97c5cc5d.js +0 -1
- package/dist/web/_next/static/chunks/6552-cebe84e4399a184f.js +0 -1
- package/dist/web/_next/static/chunks/6739.22a05398bfd34922.js +0 -1
- package/dist/web/_next/static/chunks/674.b2f5d5fc3fb84c4a.js +0 -1
- package/dist/web/_next/static/chunks/7202.dad90ce4a1d78f67.js +0 -1
- package/dist/web/_next/static/chunks/7233.0f252f6c1cce8058.js +0 -1
- package/dist/web/_next/static/chunks/7248.d89bf328a0dc1b4c.js +0 -1
- package/dist/web/_next/static/chunks/7263.6f224c3924155294.js +0 -1
- package/dist/web/_next/static/chunks/7341.6958eac888a96823.js +0 -34
- package/dist/web/_next/static/chunks/7811.19082afa63eb73ba.js +0 -1
- package/dist/web/_next/static/chunks/7853.d01982fa0afc1ee2.js +0 -24
- package/dist/web/_next/static/chunks/7908.432ab9feeb9ae756.js +0 -1
- package/dist/web/_next/static/chunks/7960.2754ce9111bef59e.js +0 -1
- package/dist/web/_next/static/chunks/7967.6c62be01fad1603c.js +0 -1
- package/dist/web/_next/static/chunks/8054.feeb01b8acdb31d4.js +0 -1
- package/dist/web/_next/static/chunks/817.cd0f4d221eca4c8b.js +0 -104
- package/dist/web/_next/static/chunks/8207-45554e2570bc59e6.js +0 -1
- package/dist/web/_next/static/chunks/8467.c2c0273ac5e97e34.js +0 -1
- package/dist/web/_next/static/chunks/8495.d6cea1be03635fa8.js +0 -148
- package/dist/web/_next/static/chunks/8638.f44546e4532d76e8.js +0 -1
- package/dist/web/_next/static/chunks/8669-8d1fb8dce08c886d.js +0 -11
- package/dist/web/_next/static/chunks/8716.1ad6febb58e8560e.js +0 -1
- package/dist/web/_next/static/chunks/8762-e88a7f91d20d82bd.js +0 -1
- package/dist/web/_next/static/chunks/8839.1ad64faf06fb4a33.js +0 -1
- package/dist/web/_next/static/chunks/8922-4c589850b01d2e12.js +0 -1
- package/dist/web/_next/static/chunks/910.43be9c3be85c7fa0.js +0 -21
- package/dist/web/_next/static/chunks/925.7cfb725e605559a0.js +0 -1
- package/dist/web/_next/static/chunks/9259.97e2f3306fc149c7.js +0 -1
- package/dist/web/_next/static/chunks/9387.96263a2d1602a078.js +0 -1
- package/dist/web/_next/static/chunks/9568-0bfadca4fcb105aa.js +0 -1
- package/dist/web/_next/static/chunks/9860.05fa134ae44699e0.js +0 -1
- package/dist/web/_next/static/chunks/9b87412a.d2cfae4121762dec.js +0 -122
- package/dist/web/_next/static/chunks/a096f98a-5a93977f5f5de413.js +0 -1
- package/dist/web/_next/static/chunks/ab1da478.d051e56375dab6d8.js +0 -1
- package/dist/web/_next/static/chunks/app/_global-error/page-e656bb9bc0f3fd3d.js +0 -1
- package/dist/web/_next/static/chunks/app/_not-found/page-877523282abd5a7c.js +0 -1
- package/dist/web/_next/static/chunks/app/admin/access/page-65febd13b3d1fc91.js +0 -5
- package/dist/web/_next/static/chunks/app/admin/login/page-8ff8150184b7ccaa.js +0 -1
- package/dist/web/_next/static/chunks/app/admin/ota/page-d8766baa3680522d.js +0 -5
- package/dist/web/_next/static/chunks/app/admin/page-6237b1487c05f33e.js +0 -5
- package/dist/web/_next/static/chunks/app/admin/turn/page-6a6b695b67d59451.js +0 -5
- package/dist/web/_next/static/chunks/app/dev/question/page-c7128ddf798789f1.js +0 -1
- package/dist/web/_next/static/chunks/app/layout-a0e78c8427f97e4f.js +0 -1
- package/dist/web/_next/static/chunks/app/login/page-2a046d10af50c87a.js +0 -1
- package/dist/web/_next/static/chunks/app/workspace/browse/page-e656bb9bc0f3fd3d.js +0 -1
- package/dist/web/_next/static/chunks/app/workspace/editor/page-e656bb9bc0f3fd3d.js +0 -1
- package/dist/web/_next/static/chunks/app/workspace/files/page-e656bb9bc0f3fd3d.js +0 -1
- package/dist/web/_next/static/chunks/app/workspace/git/page-e656bb9bc0f3fd3d.js +0 -1
- package/dist/web/_next/static/chunks/app/workspace/layout-9b28454945238595.js +0 -20
- package/dist/web/_next/static/chunks/app/workspace/mobile/page-e656bb9bc0f3fd3d.js +0 -1
- package/dist/web/_next/static/chunks/app/workspace/page-e656bb9bc0f3fd3d.js +0 -1
- package/dist/web/_next/static/chunks/app/workspace/pair/page-e656bb9bc0f3fd3d.js +0 -1
- package/dist/web/_next/static/chunks/app/workspace/remote/page-e656bb9bc0f3fd3d.js +0 -1
- package/dist/web/_next/static/chunks/app/workspace/terminal/[sessionId]/page-e656bb9bc0f3fd3d.js +0 -1
- package/dist/web/_next/static/chunks/app/workspace/welcome/page-e656bb9bc0f3fd3d.js +0 -1
- package/dist/web/_next/static/chunks/app/workspace/workspaces/page-e656bb9bc0f3fd3d.js +0 -1
- package/dist/web/_next/static/chunks/c7879cf7-0d16fce1674078f9.js +0 -1
- package/dist/web/_next/static/chunks/cdcce140.7a440644c3dd52b8.js +0 -1
- package/dist/web/_next/static/chunks/framework-42053c69543a55f9.js +0 -1
- package/dist/web/_next/static/chunks/main-255c95c36766ce86.js +0 -5
- package/dist/web/_next/static/chunks/main-app-1831d4f902c3fcb9.js +0 -1
- package/dist/web/_next/static/chunks/next/dist/client/components/builtin/app-error-e656bb9bc0f3fd3d.js +0 -1
- package/dist/web/_next/static/chunks/next/dist/client/components/builtin/forbidden-e656bb9bc0f3fd3d.js +0 -1
- package/dist/web/_next/static/chunks/next/dist/client/components/builtin/global-error-76800531999827bd.js +0 -1
- package/dist/web/_next/static/chunks/next/dist/client/components/builtin/not-found-e656bb9bc0f3fd3d.js +0 -1
- package/dist/web/_next/static/chunks/next/dist/client/components/builtin/unauthorized-e656bb9bc0f3fd3d.js +0 -1
- package/dist/web/_next/static/chunks/webpack-beef15eb580fc66b.js +0 -1
- package/dist/web/_next/static/css/c48f9629be2a67b4.css +0 -1
- /package/dist/web/_next/static/{hFRLMLaLieW6POo9cLvLQ → 55Oo1FQxj9HIxB7QE1XWG}/_buildManifest.js +0 -0
- /package/dist/web/_next/static/{hFRLMLaLieW6POo9cLvLQ → 55Oo1FQxj9HIxB7QE1XWG}/_ssgManifest.js +0 -0
- /package/dist/web/_next/static/chunks/{1311.8c6b8930e22ceea0.js → 6153.8c6b8930e22ceea0.js} +0 -0
- /package/dist/web/_next/static/chunks/{3692.8c6b8930e22ceea0.js → 8534.8c6b8930e22ceea0.js} +0 -0
package/dist/cli.cjs
CHANGED
|
@@ -1,57 +1,57 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
const __importMetaUrl = require('url').pathToFileURL(__filename).href;
|
|
3
|
-
var yc=Object.create;var Zr=Object.defineProperty;var wc=Object.getOwnPropertyDescriptor;var vc=Object.getOwnPropertyNames;var bc=Object.getPrototypeOf,Ec=Object.prototype.hasOwnProperty;var Sc=(e,
|
|
4
|
-
`)[0].replace(/\=|\s+|\"/gi,"").toLowerCase();case"win32":return x.toString().split("REG_SZ")[1].replace(/\r+|\n+|\s+/gi,"").toLowerCase();case"linux":return x.toString().replace(/\r+|\n+|\s+/gi,"").toLowerCase();case"freebsd":return x.toString().replace(/\r+|\n+|\s+/gi,"").toLowerCase();default:throw new Error("Unsupported platform: "+process.platform)}}function l(x){var R=c((0,d.execSync)(E[v]).toString());return x?R:a(R)}function f(x){return new p.default(function(R,N){return(0,d.exec)(E[v],{},function(g,T,_){if(g)return N(new Error("Error while obtaining machine id: "+g.stack));var D=c(T.toString());return R(x?D:a(D))})})}Object.defineProperty(o,"__esModule",{value:!0});var u=t(35),p=i(u);o.machineIdSync=l,o.machineId=f;var d=t(70),m=t(71),w=process,v=w.platform,P={native:"%windir%\\System32",mixed:"%windir%\\sysnative\\cmd.exe /c %windir%\\System32"},E={darwin:"ioreg -rd1 -c IOPlatformExpertDevice",win32:P[s()]+"\\REG.exe QUERY HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Cryptography /v MachineGuid",linux:"( cat /var/lib/dbus/machine-id /etc/machine-id 2> /dev/null || hostname ) | head -n 1 || :",freebsd:"kenv -q smbios.system.uuid || sysctl -n kern.hostuuid"}},function(n,o,t){n.exports={default:t(36),__esModule:!0}},function(n,o,t){t(66),t(68),t(69),t(67),n.exports=t(6).Promise},function(n,o){n.exports=function(){}},function(n,o){n.exports=function(t,i,s,a){if(!(t instanceof i)||a!==void 0&&a in t)throw TypeError(s+": incorrect invocation!");return t}},function(n,o,t){var i=t(13),s=t(31),a=t(62);n.exports=function(c){return function(l,f,u){var p,d=i(l),m=s(d.length),w=a(u,m);if(c&&f!=f){for(;m>w;)if(p=d[w++],p!=p)return!0}else for(;m>w;w++)if((c||w in d)&&d[w]===f)return c||w||0;return!c&&-1}}},function(n,d,t){var i=t(7),s=t(44),a=t(43),c=t(3),l=t(31),f=t(64),u={},p={},d=n.exports=function(m,w,v,P,E){var x,R,N,g,T=E?function(){return m}:f(m),_=i(v,P,w?2:1),D=0;if(typeof T!="function")throw TypeError(m+" is not iterable!");if(a(T)){for(x=l(m.length);x>D;D++)if(g=w?_(c(R=m[D])[0],R[1]):_(m[D]),g===u||g===p)return g}else for(N=T.call(m);!(R=N.next()).done;)if(g=s(N,_,R.value,w),g===u||g===p)return g};d.BREAK=u,d.RETURN=p},function(n,o){n.exports=function(t,i,s){var a=s===void 0;switch(i.length){case 0:return a?t():t.call(s);case 1:return a?t(i[0]):t.call(s,i[0]);case 2:return a?t(i[0],i[1]):t.call(s,i[0],i[1]);case 3:return a?t(i[0],i[1],i[2]):t.call(s,i[0],i[1],i[2]);case 4:return a?t(i[0],i[1],i[2],i[3]):t.call(s,i[0],i[1],i[2],i[3])}return t.apply(s,i)}},function(n,o,t){var i=t(11);n.exports=Object("z").propertyIsEnumerable(0)?Object:function(s){return i(s)=="String"?s.split(""):Object(s)}},function(n,o,t){var i=t(10),s=t(1)("iterator"),a=Array.prototype;n.exports=function(c){return c!==void 0&&(i.Array===c||a[s]===c)}},function(n,o,t){var i=t(3);n.exports=function(s,a,c,l){try{return l?a(i(c)[0],c[1]):a(c)}catch(u){var f=s.return;throw f!==void 0&&i(f.call(s)),u}}},function(n,o,t){"use strict";var i=t(49),s=t(17),a=t(18),c={};t(5)(c,t(1)("iterator"),function(){return this}),n.exports=function(l,f,u){l.prototype=i(c,{next:s(1,u)}),a(l,f+" Iterator")}},function(n,o,t){var i=t(1)("iterator"),s=!1;try{var a=[7][i]();a.return=function(){s=!0},Array.from(a,function(){throw 2})}catch{}n.exports=function(c,l){if(!l&&!s)return!1;var f=!1;try{var u=[7],p=u[i]();p.next=function(){return{done:f=!0}},u[i]=function(){return p},c(u)}catch{}return f}},function(n,o){n.exports=function(t,i){return{value:i,done:!!t}}},function(n,o,t){var i=t(2),s=t(30).set,a=i.MutationObserver||i.WebKitMutationObserver,c=i.process,l=i.Promise,f=t(11)(c)=="process";n.exports=function(){var u,p,d,m=function(){var E,x;for(f&&(E=c.domain)&&E.exit();u;){x=u.fn,u=u.next;try{x()}catch(R){throw u?d():p=void 0,R}}p=void 0,E&&E.enter()};if(f)d=function(){c.nextTick(m)};else if(a){var w=!0,v=document.createTextNode("");new a(m).observe(v,{characterData:!0}),d=function(){v.data=w=!w}}else if(l&&l.resolve){var P=l.resolve();d=function(){P.then(m)}}else d=function(){s.call(i,m)};return function(E){var x={fn:E,next:void 0};p&&(p.next=x),u||(u=x,d()),p=x}}},function(n,o,t){var i=t(3),s=t(50),a=t(22),c=t(19)("IE_PROTO"),l=function(){},f="prototype",u=function(){var p,d=t(16)("iframe"),m=a.length,w=">";for(d.style.display="none",t(25).appendChild(d),d.src="javascript:",p=d.contentWindow.document,p.open(),p.write("<script>document.F=Object</script"+w),p.close(),u=p.F;m--;)delete u[f][a[m]];return u()};n.exports=Object.create||function(p,d){var m;return p!==null?(l[f]=i(p),m=new l,l[f]=null,m[c]=p):m=u(),d===void 0?m:s(m,d)}},function(n,o,t){var i=t(12),s=t(3),a=t(54);n.exports=t(4)?Object.defineProperties:function(c,l){s(c);for(var f,u=a(l),p=u.length,d=0;p>d;)i.f(c,f=u[d++],l[f]);return c}},function(n,o,t){var i=t(55),s=t(17),a=t(13),c=t(32),l=t(8),f=t(26),u=Object.getOwnPropertyDescriptor;o.f=t(4)?u:function(p,d){if(p=a(p),d=c(d,!0),f)try{return u(p,d)}catch{}if(l(p,d))return s(!i.f.call(p,d),p[d])}},function(n,o,t){var i=t(8),s=t(63),a=t(19)("IE_PROTO"),c=Object.prototype;n.exports=Object.getPrototypeOf||function(l){return l=s(l),i(l,a)?l[a]:typeof l.constructor=="function"&&l instanceof l.constructor?l.constructor.prototype:l instanceof Object?c:null}},function(n,o,t){var i=t(8),s=t(13),a=t(39)(!1),c=t(19)("IE_PROTO");n.exports=function(l,f){var u,p=s(l),d=0,m=[];for(u in p)u!=c&&i(p,u)&&m.push(u);for(;f.length>d;)i(p,u=f[d++])&&(~a(m,u)||m.push(u));return m}},function(n,o,t){var i=t(53),s=t(22);n.exports=Object.keys||function(a){return i(a,s)}},function(n,o){o.f={}.propertyIsEnumerable},function(n,o,t){var i=t(5);n.exports=function(s,a,c){for(var l in a)c&&s[l]?s[l]=a[l]:i(s,l,a[l]);return s}},function(n,o,t){n.exports=t(5)},function(n,o,t){var i=t(9),s=t(3),a=function(c,l){if(s(c),!i(l)&&l!==null)throw TypeError(l+": can't set as prototype!")};n.exports={set:Object.setPrototypeOf||("__proto__"in{}?(function(c,l,f){try{f=t(7)(Function.call,t(51).f(Object.prototype,"__proto__").set,2),f(c,[]),l=!(c instanceof Array)}catch{l=!0}return function(u,p){return a(u,p),l?u.__proto__=p:f(u,p),u}})({},!1):void 0),check:a}},function(n,o,t){"use strict";var i=t(2),s=t(6),a=t(12),c=t(4),l=t(1)("species");n.exports=function(f){var u=typeof s[f]=="function"?s[f]:i[f];c&&u&&!u[l]&&a.f(u,l,{configurable:!0,get:function(){return this}})}},function(n,o,t){var i=t(3),s=t(14),a=t(1)("species");n.exports=function(c,l){var f,u=i(c).constructor;return u===void 0||(f=i(u)[a])==null?l:s(f)}},function(n,o,t){var i=t(20),s=t(15);n.exports=function(a){return function(c,l){var f,u,p=String(s(c)),d=i(l),m=p.length;return d<0||d>=m?a?"":void 0:(f=p.charCodeAt(d),f<55296||f>56319||d+1===m||(u=p.charCodeAt(d+1))<56320||u>57343?a?p.charAt(d):f:a?p.slice(d,d+2):(f-55296<<10)+(u-56320)+65536)}}},function(n,o,t){var i=t(20),s=Math.max,a=Math.min;n.exports=function(c,l){return c=i(c),c<0?s(c+l,0):a(c,l)}},function(n,o,t){var i=t(15);n.exports=function(s){return Object(i(s))}},function(n,o,t){var i=t(21),s=t(1)("iterator"),a=t(10);n.exports=t(6).getIteratorMethod=function(c){if(c!=null)return c[s]||c["@@iterator"]||a[i(c)]}},function(n,o,t){"use strict";var i=t(37),s=t(47),a=t(10),c=t(13);n.exports=t(27)(Array,"Array",function(l,f){this._t=c(l),this._i=0,this._k=f},function(){var l=this._t,f=this._k,u=this._i++;return!l||u>=l.length?(this._t=void 0,s(1)):f=="keys"?s(0,u):f=="values"?s(0,l[u]):s(0,[u,l[u]])},"values"),a.Arguments=a.Array,i("keys"),i("values"),i("entries")},function(n,o){},function(n,o,t){"use strict";var i,s,a,c=t(28),l=t(2),f=t(7),u=t(21),p=t(23),d=t(9),m=(t(3),t(14)),w=t(38),v=t(40),P=(t(58).set,t(60)),E=t(30).set,x=t(48)(),R="Promise",N=l.TypeError,T=l.process,g=l[R],T=l.process,_=u(T)=="process",D=function(){},Z=!!(function(){try{var y=g.resolve(1),b=(y.constructor={})[t(1)("species")]=function(k){k(D,D)};return(_||typeof PromiseRejectionEvent=="function")&&y.then(D)instanceof b}catch{}})(),ue=function(y,b){return y===b||y===g&&b===a},xe=function(y){var b;return!(!d(y)||typeof(b=y.then)!="function")&&b},fe=function(y){return ue(g,y)?new He(y):new s(y)},He=s=function(y){var b,k;this.promise=new y(function(U,oe){if(b!==void 0||k!==void 0)throw N("Bad Promise constructor");b=U,k=oe}),this.resolve=m(b),this.reject=m(k)},Vt=function(y){try{y()}catch(b){return{error:b}}},xt=function(y,b){if(!y._n){y._n=!0;var k=y._c;x(function(){for(var U=y._v,oe=y._s==1,At=0,Yt=function(at){var _e,hr,_n=oe?at.ok:at.fail,Ln=at.resolve,qt=at.reject,gr=at.domain;try{_n?(oe||(y._h==2&&st(y),y._h=1),_n===!0?_e=U:(gr&&gr.enter(),_e=_n(U),gr&&gr.exit()),_e===at.promise?qt(N("Promise-chain cycle")):(hr=xe(_e))?hr.call(_e,Ln,qt):Ln(_e)):qt(U)}catch(gc){qt(gc)}};k.length>At;)Yt(k[At++]);y._c=[],y._n=!1,b&&!y._h&&On(y)})}},On=function(y){E.call(l,function(){var b,k,U,oe=y._v;if(pe(y)&&(b=Vt(function(){_?T.emit("unhandledRejection",oe,y):(k=l.onunhandledrejection)?k({promise:y,reason:oe}):(U=l.console)&&U.error&&U.error("Unhandled promise rejection",oe)}),y._h=_||pe(y)?2:1),y._a=void 0,b)throw b.error})},pe=function(y){if(y._h==1)return!1;for(var b,k=y._a||y._c,U=0;k.length>U;)if(b=k[U++],b.fail||!pe(b.promise))return!1;return!0},st=function(y){E.call(l,function(){var b;_?T.emit("rejectionHandled",y):(b=l.onrejectionhandled)&&b({promise:y,reason:y._v})})},he=function(y){var b=this;b._d||(b._d=!0,b=b._w||b,b._v=y,b._s=2,b._a||(b._a=b._c.slice()),xt(b,!0))},In=function(y){var b,k=this;if(!k._d){k._d=!0,k=k._w||k;try{if(k===y)throw N("Promise can't be resolved itself");(b=xe(y))?x(function(){var U={_w:k,_d:!1};try{b.call(y,f(In,U,1),f(he,U,1))}catch(oe){he.call(U,oe)}}):(k._v=y,k._s=1,xt(k,!1))}catch(U){he.call({_w:k,_d:!1},U)}}};Z||(g=function(y){w(this,g,R,"_h"),m(y),i.call(this);try{y(f(In,this,1),f(he,this,1))}catch(b){he.call(this,b)}},i=function(y){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1},i.prototype=t(56)(g.prototype,{then:function(y,b){var k=fe(P(this,g));return k.ok=typeof y!="function"||y,k.fail=typeof b=="function"&&b,k.domain=_?T.domain:void 0,this._c.push(k),this._a&&this._a.push(k),this._s&&xt(this,!1),k.promise},catch:function(y){return this.then(void 0,y)}}),He=function(){var y=new i;this.promise=y,this.resolve=f(In,y,1),this.reject=f(he,y,1)}),p(p.G+p.W+p.F*!Z,{Promise:g}),t(18)(g,R),t(59)(R),a=t(6)[R],p(p.S+p.F*!Z,R,{reject:function(y){var b=fe(this),k=b.reject;return k(y),b.promise}}),p(p.S+p.F*(c||!Z),R,{resolve:function(y){if(y instanceof g&&ue(y.constructor,this))return y;var b=fe(this),k=b.resolve;return k(y),b.promise}}),p(p.S+p.F*!(Z&&t(46)(function(y){g.all(y).catch(D)})),R,{all:function(y){var b=this,k=fe(b),U=k.resolve,oe=k.reject,At=Vt(function(){var Yt=[],at=0,_e=1;v(y,!1,function(hr){var _n=at++,Ln=!1;Yt.push(void 0),_e++,b.resolve(hr).then(function(qt){Ln||(Ln=!0,Yt[_n]=qt,--_e||U(Yt))},oe)}),--_e||U(Yt)});return At&&oe(At.error),k.promise},race:function(y){var b=this,k=fe(b),U=k.reject,oe=Vt(function(){v(y,!1,function(At){b.resolve(At).then(k.resolve,U)})});return oe&&U(oe.error),k.promise}})},function(n,o,t){"use strict";var i=t(61)(!0);t(27)(String,"String",function(s){this._t=String(s),this._i=0},function(){var s,a=this._t,c=this._i;return c>=a.length?{value:void 0,done:!0}:(s=i(a,c),this._i+=s.length,{value:s,done:!1})})},function(n,o,t){t(65);for(var i=t(2),s=t(5),a=t(10),c=t(1)("toStringTag"),l=["NodeList","DOMTokenList","MediaList","StyleSheetList","CSSRuleList"],f=0;f<5;f++){var u=l[f],p=i[u],d=p&&p.prototype;d&&!d[c]&&s(d,c,u),a[u]=a.Array}},function(n,o){n.exports=require("child_process")},function(n,o){n.exports=require("crypto")}])})});var va={};Tc(va,{initTray:()=>lr,killTray:()=>Bt,openBrowser:()=>Ut,showTrayNotification:()=>jo,updateTrayTooltip:()=>xn});function fa(e){for(let r of e)try{if(Sn.default.existsSync(r))return r}catch{}return null}function lu(){if(process.platform==="win32"){for(let e of ga)try{if(Sn.default.existsSync(e))return Sn.default.readFileSync(e).toString("base64")}catch{}return ua}return ua}function uu(){if(process.env.NREMOTE_DESKTOP)return!1;let e=process.platform;return!(!["darwin","win32","linux"].includes(e)||e==="linux"&&!process.env.DISPLAY)}function ya(){let{port:e,tunnelUrl:r,running:n}=Tn,o=n?r?"Tunnel ON":"Local only":"Idle",t=`http://localhost:${e}`;return`9Remote \u2022 ${o}
|
|
3
|
+
var yc=Object.create;var Zr=Object.defineProperty;var wc=Object.getOwnPropertyDescriptor;var vc=Object.getOwnPropertyNames;var bc=Object.getPrototypeOf,Ec=Object.prototype.hasOwnProperty;var Sc=(e,n)=>()=>(e&&(n=e(e=0)),n);var ve=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports),Tc=(e,n)=>{for(var r in n)Zr(e,r,{get:n[r],enumerable:!0})},xc=(e,n,r,o)=>{if(n&&typeof n=="object"||typeof n=="function")for(let t of vc(n))!Ec.call(e,t)&&t!==r&&Zr(e,t,{get:()=>n[t],enumerable:!(o=wc(n,t))||o.enumerable});return e};var A=(e,n,r)=>(r=e!=null?yc(bc(e)):{},xc(n||!e||!e.__esModule?Zr(r,"default",{value:e,enumerable:!0}):r,e));var bi=ve((Dn,no)=>{(function(e,n){typeof Dn=="object"&&typeof no=="object"?no.exports=n(require("child_process"),require("crypto")):typeof define=="function"&&define.amd?define(["child_process","crypto"],n):typeof Dn=="object"?Dn["electron-machine-id"]=n(require("child_process"),require("crypto")):e["electron-machine-id"]=n(e.child_process,e.crypto)})(Dn,function(e,n){return(function(r){function o(i){if(t[i])return t[i].exports;var s=t[i]={exports:{},id:i,loaded:!1};return r[i].call(s.exports,s,s.exports,o),s.loaded=!0,s.exports}var t={};return o.m=r,o.c=t,o.p="",o(0)})([function(r,o,t){r.exports=t(34)},function(r,o,t){var i=t(29)("wks"),s=t(33),a=t(2).Symbol,c=typeof a=="function",l=r.exports=function(f){return i[f]||(i[f]=c&&a[f]||(c?a:s)("Symbol."+f))};l.store=i},function(r,o){var t=r.exports=typeof window<"u"&&window.Math==Math?window:typeof self<"u"&&self.Math==Math?self:Function("return this")();typeof __g=="number"&&(__g=t)},function(r,o,t){var i=t(9);r.exports=function(s){if(!i(s))throw TypeError(s+" is not an object!");return s}},function(r,o,t){r.exports=!t(24)(function(){return Object.defineProperty({},"a",{get:function(){return 7}}).a!=7})},function(r,o,t){var i=t(12),s=t(17);r.exports=t(4)?function(a,c,l){return i.f(a,c,s(1,l))}:function(a,c,l){return a[c]=l,a}},function(r,o){var t=r.exports={version:"2.4.0"};typeof __e=="number"&&(__e=t)},function(r,o,t){var i=t(14);r.exports=function(s,a,c){if(i(s),a===void 0)return s;switch(c){case 1:return function(l){return s.call(a,l)};case 2:return function(l,f){return s.call(a,l,f)};case 3:return function(l,f,u){return s.call(a,l,f,u)}}return function(){return s.apply(a,arguments)}}},function(r,o){var t={}.hasOwnProperty;r.exports=function(i,s){return t.call(i,s)}},function(r,o){r.exports=function(t){return typeof t=="object"?t!==null:typeof t=="function"}},function(r,o){r.exports={}},function(r,o){var t={}.toString;r.exports=function(i){return t.call(i).slice(8,-1)}},function(r,o,t){var i=t(3),s=t(26),a=t(32),c=Object.defineProperty;o.f=t(4)?Object.defineProperty:function(l,f,u){if(i(l),f=a(f,!0),i(u),s)try{return c(l,f,u)}catch{}if("get"in u||"set"in u)throw TypeError("Accessors not supported!");return"value"in u&&(l[f]=u.value),l}},function(r,o,t){var i=t(42),s=t(15);r.exports=function(a){return i(s(a))}},function(r,o){r.exports=function(t){if(typeof t!="function")throw TypeError(t+" is not a function!");return t}},function(r,o){r.exports=function(t){if(t==null)throw TypeError("Can't call method on "+t);return t}},function(r,o,t){var i=t(9),s=t(2).document,a=i(s)&&i(s.createElement);r.exports=function(c){return a?s.createElement(c):{}}},function(r,o){r.exports=function(t,i){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:i}}},function(r,o,t){var i=t(12).f,s=t(8),a=t(1)("toStringTag");r.exports=function(c,l,f){c&&!s(c=f?c:c.prototype,a)&&i(c,a,{configurable:!0,value:l})}},function(r,o,t){var i=t(29)("keys"),s=t(33);r.exports=function(a){return i[a]||(i[a]=s(a))}},function(r,o){var t=Math.ceil,i=Math.floor;r.exports=function(s){return isNaN(s=+s)?0:(s>0?i:t)(s)}},function(r,o,t){var i=t(11),s=t(1)("toStringTag"),a=i((function(){return arguments})())=="Arguments",c=function(l,f){try{return l[f]}catch{}};r.exports=function(l){var f,u,p;return l===void 0?"Undefined":l===null?"Null":typeof(u=c(f=Object(l),s))=="string"?u:a?i(f):(p=i(f))=="Object"&&typeof f.callee=="function"?"Arguments":p}},function(r,o){r.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(r,o,t){var i=t(2),s=t(6),a=t(7),c=t(5),l="prototype",f=function(u,p,d){var m,w,v,P=u&f.F,E=u&f.G,x=u&f.S,R=u&f.P,N=u&f.B,g=u&f.W,T=E?s:s[p]||(s[p]={}),_=T[l],D=E?i:x?i[p]:(i[p]||{})[l];E&&(d=p);for(m in d)w=!P&&D&&D[m]!==void 0,w&&m in T||(v=w?D[m]:d[m],T[m]=E&&typeof D[m]!="function"?d[m]:N&&w?a(v,i):g&&D[m]==v?(function(Z){var ue=function(xe,fe,He){if(this instanceof Z){switch(arguments.length){case 0:return new Z;case 1:return new Z(xe);case 2:return new Z(xe,fe)}return new Z(xe,fe,He)}return Z.apply(this,arguments)};return ue[l]=Z[l],ue})(v):R&&typeof v=="function"?a(Function.call,v):v,R&&((T.virtual||(T.virtual={}))[m]=v,u&f.R&&_&&!_[m]&&c(_,m,v)))};f.F=1,f.G=2,f.S=4,f.P=8,f.B=16,f.W=32,f.U=64,f.R=128,r.exports=f},function(r,o){r.exports=function(t){try{return!!t()}catch{return!0}}},function(r,o,t){r.exports=t(2).document&&document.documentElement},function(r,o,t){r.exports=!t(4)&&!t(24)(function(){return Object.defineProperty(t(16)("div"),"a",{get:function(){return 7}}).a!=7})},function(r,o,t){"use strict";var i=t(28),s=t(23),a=t(57),c=t(5),l=t(8),f=t(10),u=t(45),p=t(18),d=t(52),m=t(1)("iterator"),w=!([].keys&&"next"in[].keys()),v="@@iterator",P="keys",E="values",x=function(){return this};r.exports=function(R,N,g,T,_,D,Z){u(g,N,T);var ue,xe,fe,He=function(b){if(!w&&b in pe)return pe[b];switch(b){case P:return function(){return new g(this,b)};case E:return function(){return new g(this,b)}}return function(){return new g(this,b)}},Vt=N+" Iterator",xt=_==E,On=!1,pe=R.prototype,st=pe[m]||pe[v]||_&&pe[_],he=st||He(_),In=_?xt?He("entries"):he:void 0,y=N=="Array"&&pe.entries||st;if(y&&(fe=d(y.call(new R)),fe!==Object.prototype&&(p(fe,Vt,!0),i||l(fe,m)||c(fe,m,x))),xt&&st&&st.name!==E&&(On=!0,he=function(){return st.call(this)}),i&&!Z||!w&&!On&&pe[m]||c(pe,m,he),f[N]=he,f[Vt]=x,_)if(ue={values:xt?he:He(E),keys:D?he:He(P),entries:In},Z)for(xe in ue)xe in pe||a(pe,xe,ue[xe]);else s(s.P+s.F*(w||On),N,ue);return ue}},function(r,o){r.exports=!0},function(r,o,t){var i=t(2),s="__core-js_shared__",a=i[s]||(i[s]={});r.exports=function(c){return a[c]||(a[c]={})}},function(r,o,t){var i,s,a,c=t(7),l=t(41),f=t(25),u=t(16),p=t(2),d=p.process,m=p.setImmediate,w=p.clearImmediate,v=p.MessageChannel,P=0,E={},x="onreadystatechange",R=function(){var g=+this;if(E.hasOwnProperty(g)){var T=E[g];delete E[g],T()}},N=function(g){R.call(g.data)};m&&w||(m=function(g){for(var T=[],_=1;arguments.length>_;)T.push(arguments[_++]);return E[++P]=function(){l(typeof g=="function"?g:Function(g),T)},i(P),P},w=function(g){delete E[g]},t(11)(d)=="process"?i=function(g){d.nextTick(c(R,g,1))}:v?(s=new v,a=s.port2,s.port1.onmessage=N,i=c(a.postMessage,a,1)):p.addEventListener&&typeof postMessage=="function"&&!p.importScripts?(i=function(g){p.postMessage(g+"","*")},p.addEventListener("message",N,!1)):i=x in u("script")?function(g){f.appendChild(u("script"))[x]=function(){f.removeChild(this),R.call(g)}}:function(g){setTimeout(c(R,g,1),0)}),r.exports={set:m,clear:w}},function(r,o,t){var i=t(20),s=Math.min;r.exports=function(a){return a>0?s(i(a),9007199254740991):0}},function(r,o,t){var i=t(9);r.exports=function(s,a){if(!i(s))return s;var c,l;if(a&&typeof(c=s.toString)=="function"&&!i(l=c.call(s))||typeof(c=s.valueOf)=="function"&&!i(l=c.call(s))||!a&&typeof(c=s.toString)=="function"&&!i(l=c.call(s)))return l;throw TypeError("Can't convert object to primitive value")}},function(r,o){var t=0,i=Math.random();r.exports=function(s){return"Symbol(".concat(s===void 0?"":s,")_",(++t+i).toString(36))}},function(r,o,t){"use strict";function i(x){return x&&x.__esModule?x:{default:x}}function s(){return process.platform!=="win32"?"":process.arch==="ia32"&&process.env.hasOwnProperty("PROCESSOR_ARCHITEW6432")?"mixed":"native"}function a(x){return(0,m.createHash)("sha256").update(x).digest("hex")}function c(x){switch(v){case"darwin":return x.split("IOPlatformUUID")[1].split(`
|
|
4
|
+
`)[0].replace(/\=|\s+|\"/gi,"").toLowerCase();case"win32":return x.toString().split("REG_SZ")[1].replace(/\r+|\n+|\s+/gi,"").toLowerCase();case"linux":return x.toString().replace(/\r+|\n+|\s+/gi,"").toLowerCase();case"freebsd":return x.toString().replace(/\r+|\n+|\s+/gi,"").toLowerCase();default:throw new Error("Unsupported platform: "+process.platform)}}function l(x){var R=c((0,d.execSync)(E[v]).toString());return x?R:a(R)}function f(x){return new p.default(function(R,N){return(0,d.exec)(E[v],{},function(g,T,_){if(g)return N(new Error("Error while obtaining machine id: "+g.stack));var D=c(T.toString());return R(x?D:a(D))})})}Object.defineProperty(o,"__esModule",{value:!0});var u=t(35),p=i(u);o.machineIdSync=l,o.machineId=f;var d=t(70),m=t(71),w=process,v=w.platform,P={native:"%windir%\\System32",mixed:"%windir%\\sysnative\\cmd.exe /c %windir%\\System32"},E={darwin:"ioreg -rd1 -c IOPlatformExpertDevice",win32:P[s()]+"\\REG.exe QUERY HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Cryptography /v MachineGuid",linux:"( cat /var/lib/dbus/machine-id /etc/machine-id 2> /dev/null || hostname ) | head -n 1 || :",freebsd:"kenv -q smbios.system.uuid || sysctl -n kern.hostuuid"}},function(r,o,t){r.exports={default:t(36),__esModule:!0}},function(r,o,t){t(66),t(68),t(69),t(67),r.exports=t(6).Promise},function(r,o){r.exports=function(){}},function(r,o){r.exports=function(t,i,s,a){if(!(t instanceof i)||a!==void 0&&a in t)throw TypeError(s+": incorrect invocation!");return t}},function(r,o,t){var i=t(13),s=t(31),a=t(62);r.exports=function(c){return function(l,f,u){var p,d=i(l),m=s(d.length),w=a(u,m);if(c&&f!=f){for(;m>w;)if(p=d[w++],p!=p)return!0}else for(;m>w;w++)if((c||w in d)&&d[w]===f)return c||w||0;return!c&&-1}}},function(r,d,t){var i=t(7),s=t(44),a=t(43),c=t(3),l=t(31),f=t(64),u={},p={},d=r.exports=function(m,w,v,P,E){var x,R,N,g,T=E?function(){return m}:f(m),_=i(v,P,w?2:1),D=0;if(typeof T!="function")throw TypeError(m+" is not iterable!");if(a(T)){for(x=l(m.length);x>D;D++)if(g=w?_(c(R=m[D])[0],R[1]):_(m[D]),g===u||g===p)return g}else for(N=T.call(m);!(R=N.next()).done;)if(g=s(N,_,R.value,w),g===u||g===p)return g};d.BREAK=u,d.RETURN=p},function(r,o){r.exports=function(t,i,s){var a=s===void 0;switch(i.length){case 0:return a?t():t.call(s);case 1:return a?t(i[0]):t.call(s,i[0]);case 2:return a?t(i[0],i[1]):t.call(s,i[0],i[1]);case 3:return a?t(i[0],i[1],i[2]):t.call(s,i[0],i[1],i[2]);case 4:return a?t(i[0],i[1],i[2],i[3]):t.call(s,i[0],i[1],i[2],i[3])}return t.apply(s,i)}},function(r,o,t){var i=t(11);r.exports=Object("z").propertyIsEnumerable(0)?Object:function(s){return i(s)=="String"?s.split(""):Object(s)}},function(r,o,t){var i=t(10),s=t(1)("iterator"),a=Array.prototype;r.exports=function(c){return c!==void 0&&(i.Array===c||a[s]===c)}},function(r,o,t){var i=t(3);r.exports=function(s,a,c,l){try{return l?a(i(c)[0],c[1]):a(c)}catch(u){var f=s.return;throw f!==void 0&&i(f.call(s)),u}}},function(r,o,t){"use strict";var i=t(49),s=t(17),a=t(18),c={};t(5)(c,t(1)("iterator"),function(){return this}),r.exports=function(l,f,u){l.prototype=i(c,{next:s(1,u)}),a(l,f+" Iterator")}},function(r,o,t){var i=t(1)("iterator"),s=!1;try{var a=[7][i]();a.return=function(){s=!0},Array.from(a,function(){throw 2})}catch{}r.exports=function(c,l){if(!l&&!s)return!1;var f=!1;try{var u=[7],p=u[i]();p.next=function(){return{done:f=!0}},u[i]=function(){return p},c(u)}catch{}return f}},function(r,o){r.exports=function(t,i){return{value:i,done:!!t}}},function(r,o,t){var i=t(2),s=t(30).set,a=i.MutationObserver||i.WebKitMutationObserver,c=i.process,l=i.Promise,f=t(11)(c)=="process";r.exports=function(){var u,p,d,m=function(){var E,x;for(f&&(E=c.domain)&&E.exit();u;){x=u.fn,u=u.next;try{x()}catch(R){throw u?d():p=void 0,R}}p=void 0,E&&E.enter()};if(f)d=function(){c.nextTick(m)};else if(a){var w=!0,v=document.createTextNode("");new a(m).observe(v,{characterData:!0}),d=function(){v.data=w=!w}}else if(l&&l.resolve){var P=l.resolve();d=function(){P.then(m)}}else d=function(){s.call(i,m)};return function(E){var x={fn:E,next:void 0};p&&(p.next=x),u||(u=x,d()),p=x}}},function(r,o,t){var i=t(3),s=t(50),a=t(22),c=t(19)("IE_PROTO"),l=function(){},f="prototype",u=function(){var p,d=t(16)("iframe"),m=a.length,w=">";for(d.style.display="none",t(25).appendChild(d),d.src="javascript:",p=d.contentWindow.document,p.open(),p.write("<script>document.F=Object</script"+w),p.close(),u=p.F;m--;)delete u[f][a[m]];return u()};r.exports=Object.create||function(p,d){var m;return p!==null?(l[f]=i(p),m=new l,l[f]=null,m[c]=p):m=u(),d===void 0?m:s(m,d)}},function(r,o,t){var i=t(12),s=t(3),a=t(54);r.exports=t(4)?Object.defineProperties:function(c,l){s(c);for(var f,u=a(l),p=u.length,d=0;p>d;)i.f(c,f=u[d++],l[f]);return c}},function(r,o,t){var i=t(55),s=t(17),a=t(13),c=t(32),l=t(8),f=t(26),u=Object.getOwnPropertyDescriptor;o.f=t(4)?u:function(p,d){if(p=a(p),d=c(d,!0),f)try{return u(p,d)}catch{}if(l(p,d))return s(!i.f.call(p,d),p[d])}},function(r,o,t){var i=t(8),s=t(63),a=t(19)("IE_PROTO"),c=Object.prototype;r.exports=Object.getPrototypeOf||function(l){return l=s(l),i(l,a)?l[a]:typeof l.constructor=="function"&&l instanceof l.constructor?l.constructor.prototype:l instanceof Object?c:null}},function(r,o,t){var i=t(8),s=t(13),a=t(39)(!1),c=t(19)("IE_PROTO");r.exports=function(l,f){var u,p=s(l),d=0,m=[];for(u in p)u!=c&&i(p,u)&&m.push(u);for(;f.length>d;)i(p,u=f[d++])&&(~a(m,u)||m.push(u));return m}},function(r,o,t){var i=t(53),s=t(22);r.exports=Object.keys||function(a){return i(a,s)}},function(r,o){o.f={}.propertyIsEnumerable},function(r,o,t){var i=t(5);r.exports=function(s,a,c){for(var l in a)c&&s[l]?s[l]=a[l]:i(s,l,a[l]);return s}},function(r,o,t){r.exports=t(5)},function(r,o,t){var i=t(9),s=t(3),a=function(c,l){if(s(c),!i(l)&&l!==null)throw TypeError(l+": can't set as prototype!")};r.exports={set:Object.setPrototypeOf||("__proto__"in{}?(function(c,l,f){try{f=t(7)(Function.call,t(51).f(Object.prototype,"__proto__").set,2),f(c,[]),l=!(c instanceof Array)}catch{l=!0}return function(u,p){return a(u,p),l?u.__proto__=p:f(u,p),u}})({},!1):void 0),check:a}},function(r,o,t){"use strict";var i=t(2),s=t(6),a=t(12),c=t(4),l=t(1)("species");r.exports=function(f){var u=typeof s[f]=="function"?s[f]:i[f];c&&u&&!u[l]&&a.f(u,l,{configurable:!0,get:function(){return this}})}},function(r,o,t){var i=t(3),s=t(14),a=t(1)("species");r.exports=function(c,l){var f,u=i(c).constructor;return u===void 0||(f=i(u)[a])==null?l:s(f)}},function(r,o,t){var i=t(20),s=t(15);r.exports=function(a){return function(c,l){var f,u,p=String(s(c)),d=i(l),m=p.length;return d<0||d>=m?a?"":void 0:(f=p.charCodeAt(d),f<55296||f>56319||d+1===m||(u=p.charCodeAt(d+1))<56320||u>57343?a?p.charAt(d):f:a?p.slice(d,d+2):(f-55296<<10)+(u-56320)+65536)}}},function(r,o,t){var i=t(20),s=Math.max,a=Math.min;r.exports=function(c,l){return c=i(c),c<0?s(c+l,0):a(c,l)}},function(r,o,t){var i=t(15);r.exports=function(s){return Object(i(s))}},function(r,o,t){var i=t(21),s=t(1)("iterator"),a=t(10);r.exports=t(6).getIteratorMethod=function(c){if(c!=null)return c[s]||c["@@iterator"]||a[i(c)]}},function(r,o,t){"use strict";var i=t(37),s=t(47),a=t(10),c=t(13);r.exports=t(27)(Array,"Array",function(l,f){this._t=c(l),this._i=0,this._k=f},function(){var l=this._t,f=this._k,u=this._i++;return!l||u>=l.length?(this._t=void 0,s(1)):f=="keys"?s(0,u):f=="values"?s(0,l[u]):s(0,[u,l[u]])},"values"),a.Arguments=a.Array,i("keys"),i("values"),i("entries")},function(r,o){},function(r,o,t){"use strict";var i,s,a,c=t(28),l=t(2),f=t(7),u=t(21),p=t(23),d=t(9),m=(t(3),t(14)),w=t(38),v=t(40),P=(t(58).set,t(60)),E=t(30).set,x=t(48)(),R="Promise",N=l.TypeError,T=l.process,g=l[R],T=l.process,_=u(T)=="process",D=function(){},Z=!!(function(){try{var y=g.resolve(1),b=(y.constructor={})[t(1)("species")]=function(k){k(D,D)};return(_||typeof PromiseRejectionEvent=="function")&&y.then(D)instanceof b}catch{}})(),ue=function(y,b){return y===b||y===g&&b===a},xe=function(y){var b;return!(!d(y)||typeof(b=y.then)!="function")&&b},fe=function(y){return ue(g,y)?new He(y):new s(y)},He=s=function(y){var b,k;this.promise=new y(function(U,oe){if(b!==void 0||k!==void 0)throw N("Bad Promise constructor");b=U,k=oe}),this.resolve=m(b),this.reject=m(k)},Vt=function(y){try{y()}catch(b){return{error:b}}},xt=function(y,b){if(!y._n){y._n=!0;var k=y._c;x(function(){for(var U=y._v,oe=y._s==1,At=0,Yt=function(at){var _e,mr,_n=oe?at.ok:at.fail,Ln=at.resolve,qt=at.reject,hr=at.domain;try{_n?(oe||(y._h==2&&st(y),y._h=1),_n===!0?_e=U:(hr&&hr.enter(),_e=_n(U),hr&&hr.exit()),_e===at.promise?qt(N("Promise-chain cycle")):(mr=xe(_e))?mr.call(_e,Ln,qt):Ln(_e)):qt(U)}catch(gc){qt(gc)}};k.length>At;)Yt(k[At++]);y._c=[],y._n=!1,b&&!y._h&&On(y)})}},On=function(y){E.call(l,function(){var b,k,U,oe=y._v;if(pe(y)&&(b=Vt(function(){_?T.emit("unhandledRejection",oe,y):(k=l.onunhandledrejection)?k({promise:y,reason:oe}):(U=l.console)&&U.error&&U.error("Unhandled promise rejection",oe)}),y._h=_||pe(y)?2:1),y._a=void 0,b)throw b.error})},pe=function(y){if(y._h==1)return!1;for(var b,k=y._a||y._c,U=0;k.length>U;)if(b=k[U++],b.fail||!pe(b.promise))return!1;return!0},st=function(y){E.call(l,function(){var b;_?T.emit("rejectionHandled",y):(b=l.onrejectionhandled)&&b({promise:y,reason:y._v})})},he=function(y){var b=this;b._d||(b._d=!0,b=b._w||b,b._v=y,b._s=2,b._a||(b._a=b._c.slice()),xt(b,!0))},In=function(y){var b,k=this;if(!k._d){k._d=!0,k=k._w||k;try{if(k===y)throw N("Promise can't be resolved itself");(b=xe(y))?x(function(){var U={_w:k,_d:!1};try{b.call(y,f(In,U,1),f(he,U,1))}catch(oe){he.call(U,oe)}}):(k._v=y,k._s=1,xt(k,!1))}catch(U){he.call({_w:k,_d:!1},U)}}};Z||(g=function(y){w(this,g,R,"_h"),m(y),i.call(this);try{y(f(In,this,1),f(he,this,1))}catch(b){he.call(this,b)}},i=function(y){this._c=[],this._a=void 0,this._s=0,this._d=!1,this._v=void 0,this._h=0,this._n=!1},i.prototype=t(56)(g.prototype,{then:function(y,b){var k=fe(P(this,g));return k.ok=typeof y!="function"||y,k.fail=typeof b=="function"&&b,k.domain=_?T.domain:void 0,this._c.push(k),this._a&&this._a.push(k),this._s&&xt(this,!1),k.promise},catch:function(y){return this.then(void 0,y)}}),He=function(){var y=new i;this.promise=y,this.resolve=f(In,y,1),this.reject=f(he,y,1)}),p(p.G+p.W+p.F*!Z,{Promise:g}),t(18)(g,R),t(59)(R),a=t(6)[R],p(p.S+p.F*!Z,R,{reject:function(y){var b=fe(this),k=b.reject;return k(y),b.promise}}),p(p.S+p.F*(c||!Z),R,{resolve:function(y){if(y instanceof g&&ue(y.constructor,this))return y;var b=fe(this),k=b.resolve;return k(y),b.promise}}),p(p.S+p.F*!(Z&&t(46)(function(y){g.all(y).catch(D)})),R,{all:function(y){var b=this,k=fe(b),U=k.resolve,oe=k.reject,At=Vt(function(){var Yt=[],at=0,_e=1;v(y,!1,function(mr){var _n=at++,Ln=!1;Yt.push(void 0),_e++,b.resolve(mr).then(function(qt){Ln||(Ln=!0,Yt[_n]=qt,--_e||U(Yt))},oe)}),--_e||U(Yt)});return At&&oe(At.error),k.promise},race:function(y){var b=this,k=fe(b),U=k.reject,oe=Vt(function(){v(y,!1,function(At){b.resolve(At).then(k.resolve,U)})});return oe&&U(oe.error),k.promise}})},function(r,o,t){"use strict";var i=t(61)(!0);t(27)(String,"String",function(s){this._t=String(s),this._i=0},function(){var s,a=this._t,c=this._i;return c>=a.length?{value:void 0,done:!0}:(s=i(a,c),this._i+=s.length,{value:s,done:!1})})},function(r,o,t){t(65);for(var i=t(2),s=t(5),a=t(10),c=t(1)("toStringTag"),l=["NodeList","DOMTokenList","MediaList","StyleSheetList","CSSRuleList"],f=0;f<5;f++){var u=l[f],p=i[u],d=p&&p.prototype;d&&!d[c]&&s(d,c,u),a[u]=a.Array}},function(r,o){r.exports=require("child_process")},function(r,o){r.exports=require("crypto")}])})});var va={};Tc(va,{initTray:()=>lr,killTray:()=>Bt,openBrowser:()=>Ut,showTrayNotification:()=>jo,updateTrayTooltip:()=>xn});function fa(e){for(let n of e)try{if(Sn.default.existsSync(n))return n}catch{}return null}function lu(){if(process.platform==="win32"){for(let e of ga)try{if(Sn.default.existsSync(e))return Sn.default.readFileSync(e).toString("base64")}catch{}return ua}return ua}function uu(){if(process.env.NREMOTE_DESKTOP)return!1;let e=process.platform;return!(!["darwin","win32","linux"].includes(e)||e==="linux"&&!process.env.DISPLAY)}function ya(){let{port:e,tunnelUrl:n,running:r}=Tn,o=r?n?"Tunnel ON":"Local only":"Idle",t=`http://localhost:${e}`;return`9Remote \u2022 ${o}
|
|
5
5
|
Local: ${t}
|
|
6
|
-
Right-click to open / quit`}function wa(){let{port:e,tunnelUrl:
|
|
7
|
-
`,"utf8")}catch{}};return pa.default.createInterface({input:i.stdout}).on("line",c=>{try{let l=JSON.parse(c);if(l.type!=="click")return;l.index===0?n?.():l.index===1&&(r?.(),Bt(),setTimeout(()=>process.exit(0),500))}catch{}}),i.on("error",()=>{}),i.stderr.on("data",()=>{}),["Open Web UI","Shutdown"].forEach((c,l)=>s({action:"add-item",index:l,title:c,enabled:!0})),{_isWin:!0,_setTooltip(c){s({action:"set-tooltip",text:c})},sendAction(){},kill(){try{s({action:"kill"})}catch{}setTimeout(()=>{try{i&&!i.killed&&i.kill()}catch{}},300)}}}async function lr({port:e,onQuit:r,onOpenUI:n}){if(!uu())return null;if(process.platform==="win32")return Tn={port:e,tunnelUrl:"",running:!0},ae=pu({port:e,onQuit:r,onOpenUI:n}),ae;try{let o=fu();if(!o)return null;let i={darwin:"tray_darwin_release",win32:"tray_windows_release.exe",linux:"tray_linux_release"}[process.platform];if(!i)return null;let s=Ue.default.join(ha,"systray2","traybin",i);if(!Sn.default.existsSync(s))return null;if(process.platform!=="win32")try{Sn.default.chmodSync(s,493)}catch{}if(Tn={port:e,tunnelUrl:"",running:!0},ae=new o({menu:wa(),debug:!1,copyDir:!0}),ae.onClick(a=>{let c=a.item?.title||a.item;c==="Open Web UI"?n?.():c==="Shutdown"&&(r?.(),Bt(),setTimeout(()=>process.exit(0),500))}),typeof ae.ready=="function")try{await ae.ready()}catch{return ae=null,null}else ae.onReady(()=>{}),ae.onError(()=>{});return ae}catch{return null}}function xn({tunnelUrl:e,running:r}={}){if(e!==void 0&&(Tn.tunnelUrl=e),r!==void 0&&(Tn.running=r),!!ae){if(ae._isWin){ae._setTooltip?.(ya());return}try{ae.sendAction({type:"update-menu",menu:wa(),seq_id:-1})?.catch?.(()=>{})}catch{}}}function Bt(){let e=ae;if(ae=null,e)try{e.kill(!0)}catch{}}function jo({title:e="9Remote",message:r}){let n=process.platform;if(r){if(n==="win32"){let o=c=>String(c).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/'/g,"'").replace(/"/g,"""),t=c=>String(c).replace(/'/g,"''"),i="9Remote",s=`<toast><visual><binding template="ToastText02"><text id="1">${o(e)}</text><text id="2">${o(r)}</text></binding></visual></toast>`,a=["try {","[Windows.UI.Notifications.ToastNotificationManager, Windows.UI.Notifications, ContentType=WindowsRuntime] > $null;","[Windows.Data.Xml.Dom.XmlDocument, Windows.Data.Xml.Dom.XmlDocument, ContentType=WindowsRuntime] > $null;","$xml = New-Object Windows.Data.Xml.Dom.XmlDocument;",`$xml.LoadXml('${t(s)}');`,"$toast = [Windows.UI.Notifications.ToastNotification]::new($xml);",`[Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier('${t(i)}').Show($toast);`,"} catch {","Add-Type -AssemblyName System.Windows.Forms;","$n = New-Object System.Windows.Forms.NotifyIcon;","$n.Icon = [System.Drawing.SystemIcons]::Information;",`$n.BalloonTipTitle = '${t(e)}';`,`$n.BalloonTipText = '${t(r)}';`,"$n.Visible = $true;","$n.ShowBalloonTip(5000);","Start-Sleep -Seconds 6;","$n.Dispose();","}"].join(" ");try{(0,et.spawn)("powershell.exe",["-NoProfile","-WindowStyle","Hidden","-Command",a],{detached:!0,stdio:"ignore",windowsHide:!0}).unref()}catch{}return}if(n==="darwin"){try{let o=s=>String(s).replace(/"/g,'\\"'),t=`display notification "${o(r)}" with title "${o(e)}"`;(0,et.spawn)("osascript",["-e",t],{detached:!0,stdio:"ignore"}).unref()}catch{}return}try{(0,et.spawn)("notify-send",[e,r],{detached:!0,stdio:"ignore"}).unref()}catch{}}}function Ut(e){let r=process.platform;if(r==="win32"){try{(0,et.spawn)("rundll32.exe",["url.dll,FileProtocolHandler",e],{detached:!0,stdio:"ignore",windowsHide:!0}).unref();return}catch{}try{(0,et.spawn)("cmd.exe",["/d","/s","/c","start","",e],{detached:!0,stdio:"ignore",windowsHide:!0}).unref()}catch{}return}if(r==="darwin"){try{(0,et.spawn)("open",[e],{detached:!0,stdio:"ignore"}).unref()}catch{}return}let n=[["setsid",["--fork","xdg-open",e]],["setsid",["xdg-open",e]],["xdg-open",[e]],["gio",["open",e]],["sensible-browser",[e]],["x-www-browser",[e]]];for(let[o,t]of n)try{(0,et.spawn)(o,t,{detached:!0,stdio:"ignore",env:{...process.env}}).unref();return}catch{}}var et,pa,Sn,Ue,da,ma,ha,ae,Tn,Hr,ua,ga,cu,Ft=Sc(()=>{et=require("child_process"),pa=A(require("readline"),1),Sn=A(require("fs"),1),Ue=A(require("path"),1),da=A(require("os"),1),ma=require("url"),ha=(0,Ue.join)(da.default.homedir(),".9remote","runtime","node_modules"),ae=null,Tn={port:0,tunnelUrl:"",running:!1},Hr=Ue.default.dirname((0,ma.fileURLToPath)(__importMetaUrl)),ua="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",ga=[Ue.default.join(Hr,"assets","trayIcon.ico"),Ue.default.join(Hr,"..","assets","trayIcon.ico")],cu=[Ue.default.join(Hr,"assets","tray.ps1"),Ue.default.join(Hr,"..","assets","tray.ps1")]});var Jo=ve((md,Ra)=>{Ra.exports={MODE_NUMBER:1,MODE_ALPHA_NUM:2,MODE_8BIT_BYTE:4,MODE_KANJI:8}});var Oa=ve((hd,$a)=>{var gu=Jo();function Pa(e){this.mode=gu.MODE_8BIT_BYTE,this.data=e}Pa.prototype={getLength:function(){return this.data.length},write:function(e){for(var r=0;r<this.data.length;r++)e.put(this.data.charCodeAt(r),8)}};$a.exports=Pa});var Qo=ve((gd,Ia)=>{var Ie={glog:function(e){if(e<1)throw new Error("glog("+e+")");return Ie.LOG_TABLE[e]},gexp:function(e){for(;e<0;)e+=255;for(;e>=256;)e-=255;return Ie.EXP_TABLE[e]},EXP_TABLE:new Array(256),LOG_TABLE:new Array(256)};for(X=0;X<8;X++)Ie.EXP_TABLE[X]=1<<X;var X;for(X=8;X<256;X++)Ie.EXP_TABLE[X]=Ie.EXP_TABLE[X-4]^Ie.EXP_TABLE[X-5]^Ie.EXP_TABLE[X-6]^Ie.EXP_TABLE[X-8];var X;for(X=0;X<255;X++)Ie.LOG_TABLE[Ie.EXP_TABLE[X]]=X;var X;Ia.exports=Ie});var zo=ve((yd,_a)=>{var Wt=Qo();function Vr(e,r){if(e.length===void 0)throw new Error(e.length+"/"+r);for(var n=0;n<e.length&&e[n]===0;)n++;this.num=new Array(e.length-n+r);for(var o=0;o<e.length-n;o++)this.num[o]=e[o+n]}Vr.prototype={get:function(e){return this.num[e]},getLength:function(){return this.num.length},multiply:function(e){for(var r=new Array(this.getLength()+e.getLength()-1),n=0;n<this.getLength();n++)for(var o=0;o<e.getLength();o++)r[n+o]^=Wt.gexp(Wt.glog(this.get(n))+Wt.glog(e.get(o)));return new Vr(r,0)},mod:function(e){if(this.getLength()-e.getLength()<0)return this;for(var r=Wt.glog(this.get(0))-Wt.glog(e.get(0)),n=new Array(this.getLength()),o=0;o<this.getLength();o++)n[o]=this.get(o);for(var t=0;t<e.getLength();t++)n[t]^=Wt.gexp(Wt.glog(e.get(t))+r);return new Vr(n,0).mod(e)}};_a.exports=Vr});var Ma=ve((wd,La)=>{La.exports={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7}});var Da=ve((vd,Na)=>{var Te=Jo(),Ca=zo(),yu=Qo(),Et=Ma(),re={PATTERN_POSITION_TABLE:[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],G15:1335,G18:7973,G15_MASK:21522,getBCHTypeInfo:function(e){for(var r=e<<10;re.getBCHDigit(r)-re.getBCHDigit(re.G15)>=0;)r^=re.G15<<re.getBCHDigit(r)-re.getBCHDigit(re.G15);return(e<<10|r)^re.G15_MASK},getBCHTypeNumber:function(e){for(var r=e<<12;re.getBCHDigit(r)-re.getBCHDigit(re.G18)>=0;)r^=re.G18<<re.getBCHDigit(r)-re.getBCHDigit(re.G18);return e<<12|r},getBCHDigit:function(e){for(var r=0;e!==0;)r++,e>>>=1;return r},getPatternPosition:function(e){return re.PATTERN_POSITION_TABLE[e-1]},getMask:function(e,r,n){switch(e){case Et.PATTERN000:return(r+n)%2===0;case Et.PATTERN001:return r%2===0;case Et.PATTERN010:return n%3===0;case Et.PATTERN011:return(r+n)%3===0;case Et.PATTERN100:return(Math.floor(r/2)+Math.floor(n/3))%2===0;case Et.PATTERN101:return r*n%2+r*n%3===0;case Et.PATTERN110:return(r*n%2+r*n%3)%2===0;case Et.PATTERN111:return(r*n%3+(r+n)%2)%2===0;default:throw new Error("bad maskPattern:"+e)}},getErrorCorrectPolynomial:function(e){for(var r=new Ca([1],0),n=0;n<e;n++)r=r.multiply(new Ca([1,yu.gexp(n)],0));return r},getLengthInBits:function(e,r){if(1<=r&&r<10)switch(e){case Te.MODE_NUMBER:return 10;case Te.MODE_ALPHA_NUM:return 9;case Te.MODE_8BIT_BYTE:return 8;case Te.MODE_KANJI:return 8;default:throw new Error("mode:"+e)}else if(r<27)switch(e){case Te.MODE_NUMBER:return 12;case Te.MODE_ALPHA_NUM:return 11;case Te.MODE_8BIT_BYTE:return 16;case Te.MODE_KANJI:return 10;default:throw new Error("mode:"+e)}else if(r<41)switch(e){case Te.MODE_NUMBER:return 14;case Te.MODE_ALPHA_NUM:return 13;case Te.MODE_8BIT_BYTE:return 16;case Te.MODE_KANJI:return 12;default:throw new Error("mode:"+e)}else throw new Error("type:"+r)},getLostPoint:function(e){var r=e.getModuleCount(),n=0,o=0,t=0;for(o=0;o<r;o++)for(t=0;t<r;t++){for(var i=0,s=e.isDark(o,t),a=-1;a<=1;a++)if(!(o+a<0||r<=o+a))for(var c=-1;c<=1;c++)t+c<0||r<=t+c||a===0&&c===0||s===e.isDark(o+a,t+c)&&i++;i>5&&(n+=3+i-5)}for(o=0;o<r-1;o++)for(t=0;t<r-1;t++){var l=0;e.isDark(o,t)&&l++,e.isDark(o+1,t)&&l++,e.isDark(o,t+1)&&l++,e.isDark(o+1,t+1)&&l++,(l===0||l===4)&&(n+=3)}for(o=0;o<r;o++)for(t=0;t<r-6;t++)e.isDark(o,t)&&!e.isDark(o,t+1)&&e.isDark(o,t+2)&&e.isDark(o,t+3)&&e.isDark(o,t+4)&&!e.isDark(o,t+5)&&e.isDark(o,t+6)&&(n+=40);for(t=0;t<r;t++)for(o=0;o<r-6;o++)e.isDark(o,t)&&!e.isDark(o+1,t)&&e.isDark(o+2,t)&&e.isDark(o+3,t)&&e.isDark(o+4,t)&&!e.isDark(o+5,t)&&e.isDark(o+6,t)&&(n+=40);var f=0;for(t=0;t<r;t++)for(o=0;o<r;o++)e.isDark(o,t)&&f++;var u=Math.abs(100*f/r/r-50)/5;return n+=u*10,n}};Na.exports=re});var Zo=ve((bd,Ba)=>{Ba.exports={L:1,M:0,Q:3,H:2}});var Fa=ve((Ed,Ua)=>{var Yr=Zo();function Fe(e,r){this.totalCount=e,this.dataCount=r}Fe.RS_BLOCK_TABLE=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]];Fe.getRSBlocks=function(e,r){var n=Fe.getRsBlockTable(e,r);if(n===void 0)throw new Error("bad rs block @ typeNumber:"+e+"/errorCorrectLevel:"+r);for(var o=n.length/3,t=[],i=0;i<o;i++)for(var s=n[i*3+0],a=n[i*3+1],c=n[i*3+2],l=0;l<s;l++)t.push(new Fe(a,c));return t};Fe.getRsBlockTable=function(e,r){switch(r){case Yr.L:return Fe.RS_BLOCK_TABLE[(e-1)*4+0];case Yr.M:return Fe.RS_BLOCK_TABLE[(e-1)*4+1];case Yr.Q:return Fe.RS_BLOCK_TABLE[(e-1)*4+2];case Yr.H:return Fe.RS_BLOCK_TABLE[(e-1)*4+3];default:return}};Ua.exports=Fe});var ja=ve((Sd,Ha)=>{function Ka(){this.buffer=[],this.length=0}Ka.prototype={get:function(e){var r=Math.floor(e/8);return(this.buffer[r]>>>7-e%8&1)==1},put:function(e,r){for(var n=0;n<r;n++)this.putBit((e>>>r-n-1&1)==1)},getLengthInBits:function(){return this.length},putBit:function(e){var r=Math.floor(this.length/8);this.buffer.length<=r&&this.buffer.push(0),e&&(this.buffer[r]|=128>>>this.length%8),this.length++}};Ha.exports=Ka});var Ya=ve((Td,Va)=>{var wu=Oa(),St=Da(),vu=zo(),Wa=Fa(),Ga=ja();function Ke(e,r){this.typeNumber=e,this.errorCorrectLevel=r,this.modules=null,this.moduleCount=0,this.dataCache=null,this.dataList=[]}Ke.prototype={addData:function(e){var r=new wu(e);this.dataList.push(r),this.dataCache=null},isDark:function(e,r){if(e<0||this.moduleCount<=e||r<0||this.moduleCount<=r)throw new Error(e+","+r);return this.modules[e][r]},getModuleCount:function(){return this.moduleCount},make:function(){if(this.typeNumber<1){var e=1;for(e=1;e<40;e++){for(var r=Wa.getRSBlocks(e,this.errorCorrectLevel),n=new Ga,o=0,t=0;t<r.length;t++)o+=r[t].dataCount;for(var i=0;i<this.dataList.length;i++){var s=this.dataList[i];n.put(s.mode,4),n.put(s.getLength(),St.getLengthInBits(s.mode,e)),s.write(n)}if(n.getLengthInBits()<=o*8)break}this.typeNumber=e}this.makeImpl(!1,this.getBestMaskPattern())},makeImpl:function(e,r){this.moduleCount=this.typeNumber*4+17,this.modules=new Array(this.moduleCount);for(var n=0;n<this.moduleCount;n++){this.modules[n]=new Array(this.moduleCount);for(var o=0;o<this.moduleCount;o++)this.modules[n][o]=null}this.setupPositionProbePattern(0,0),this.setupPositionProbePattern(this.moduleCount-7,0),this.setupPositionProbePattern(0,this.moduleCount-7),this.setupPositionAdjustPattern(),this.setupTimingPattern(),this.setupTypeInfo(e,r),this.typeNumber>=7&&this.setupTypeNumber(e),this.dataCache===null&&(this.dataCache=Ke.createData(this.typeNumber,this.errorCorrectLevel,this.dataList)),this.mapData(this.dataCache,r)},setupPositionProbePattern:function(e,r){for(var n=-1;n<=7;n++)if(!(e+n<=-1||this.moduleCount<=e+n))for(var o=-1;o<=7;o++)r+o<=-1||this.moduleCount<=r+o||(0<=n&&n<=6&&(o===0||o===6)||0<=o&&o<=6&&(n===0||n===6)||2<=n&&n<=4&&2<=o&&o<=4?this.modules[e+n][r+o]=!0:this.modules[e+n][r+o]=!1)},getBestMaskPattern:function(){for(var e=0,r=0,n=0;n<8;n++){this.makeImpl(!0,n);var o=St.getLostPoint(this);(n===0||e>o)&&(e=o,r=n)}return r},createMovieClip:function(e,r,n){var o=e.createEmptyMovieClip(r,n),t=1;this.make();for(var i=0;i<this.modules.length;i++)for(var s=i*t,a=0;a<this.modules[i].length;a++){var c=a*t,l=this.modules[i][a];l&&(o.beginFill(0,100),o.moveTo(c,s),o.lineTo(c+t,s),o.lineTo(c+t,s+t),o.lineTo(c,s+t),o.endFill())}return o},setupTimingPattern:function(){for(var e=8;e<this.moduleCount-8;e++)this.modules[e][6]===null&&(this.modules[e][6]=e%2===0);for(var r=8;r<this.moduleCount-8;r++)this.modules[6][r]===null&&(this.modules[6][r]=r%2===0)},setupPositionAdjustPattern:function(){for(var e=St.getPatternPosition(this.typeNumber),r=0;r<e.length;r++)for(var n=0;n<e.length;n++){var o=e[r],t=e[n];if(this.modules[o][t]===null)for(var i=-2;i<=2;i++)for(var s=-2;s<=2;s++)Math.abs(i)===2||Math.abs(s)===2||i===0&&s===0?this.modules[o+i][t+s]=!0:this.modules[o+i][t+s]=!1}},setupTypeNumber:function(e){for(var r=St.getBCHTypeNumber(this.typeNumber),n,o=0;o<18;o++)n=!e&&(r>>o&1)===1,this.modules[Math.floor(o/3)][o%3+this.moduleCount-8-3]=n;for(var t=0;t<18;t++)n=!e&&(r>>t&1)===1,this.modules[t%3+this.moduleCount-8-3][Math.floor(t/3)]=n},setupTypeInfo:function(e,r){for(var n=this.errorCorrectLevel<<3|r,o=St.getBCHTypeInfo(n),t,i=0;i<15;i++)t=!e&&(o>>i&1)===1,i<6?this.modules[i][8]=t:i<8?this.modules[i+1][8]=t:this.modules[this.moduleCount-15+i][8]=t;for(var s=0;s<15;s++)t=!e&&(o>>s&1)===1,s<8?this.modules[8][this.moduleCount-s-1]=t:s<9?this.modules[8][15-s-1+1]=t:this.modules[8][15-s-1]=t;this.modules[this.moduleCount-8][8]=!e},mapData:function(e,r){for(var n=-1,o=this.moduleCount-1,t=7,i=0,s=this.moduleCount-1;s>0;s-=2)for(s===6&&s--;;){for(var a=0;a<2;a++)if(this.modules[o][s-a]===null){var c=!1;i<e.length&&(c=(e[i]>>>t&1)===1);var l=St.getMask(r,o,s-a);l&&(c=!c),this.modules[o][s-a]=c,t--,t===-1&&(i++,t=7)}if(o+=n,o<0||this.moduleCount<=o){o-=n,n=-n;break}}}};Ke.PAD0=236;Ke.PAD1=17;Ke.createData=function(e,r,n){for(var o=Wa.getRSBlocks(e,r),t=new Ga,i=0;i<n.length;i++){var s=n[i];t.put(s.mode,4),t.put(s.getLength(),St.getLengthInBits(s.mode,e)),s.write(t)}for(var a=0,c=0;c<o.length;c++)a+=o[c].dataCount;if(t.getLengthInBits()>a*8)throw new Error("code length overflow. ("+t.getLengthInBits()+">"+a*8+")");for(t.getLengthInBits()+4<=a*8&&t.put(0,4);t.getLengthInBits()%8!==0;)t.putBit(!1);for(;!(t.getLengthInBits()>=a*8||(t.put(Ke.PAD0,8),t.getLengthInBits()>=a*8));)t.put(Ke.PAD1,8);return Ke.createBytes(t,o)};Ke.createBytes=function(e,r){for(var n=0,o=0,t=0,i=new Array(r.length),s=new Array(r.length),a=0;a<r.length;a++){var c=r[a].dataCount,l=r[a].totalCount-c;o=Math.max(o,c),t=Math.max(t,l),i[a]=new Array(c);for(var f=0;f<i[a].length;f++)i[a][f]=255&e.buffer[f+n];n+=c;var u=St.getErrorCorrectPolynomial(l),p=new vu(i[a],u.getLength()-1),d=p.mod(u);s[a]=new Array(u.getLength()-1);for(var m=0;m<s[a].length;m++){var w=m+d.getLength()-s[a].length;s[a][m]=w>=0?d.get(w):0}}for(var v=0,P=0;P<r.length;P++)v+=r[P].totalCount;for(var E=new Array(v),x=0,R=0;R<o;R++)for(var N=0;N<r.length;N++)R<i[N].length&&(E[x++]=i[N][R]);for(var g=0;g<t;g++)for(var T=0;T<r.length;T++)g<s[T].length&&(E[x++]=s[T][g]);return E};Va.exports=Ke});var Ja=ve((xd,Xa)=>{var bu=Ya(),qa=Zo(),Eu="\x1B[40m \x1B[0m",qr="\x1B[47m \x1B[0m",Su=function(e){return e?Eu:qr},ei=function(e){return{times:function(r){return new Array(r).join(e)}}},Tu=function(e,r){for(var n=new Array(e),o=0;o<e;o++)n[o]=r;return n};Xa.exports={error:qa.L,generate:function(e,r,n){typeof r=="function"&&(n=r,r={});var o=new bu(-1,this.error);o.addData(e),o.make();var t="";if(r&&r.small){var i=!0,s=!1,a=o.getModuleCount(),c=o.modules.slice(),l=a%2===1;l&&c.push(Tu(a,s));var f={WHITE_ALL:"\u2588",WHITE_BLACK:"\u2580",BLACK_WHITE:"\u2584",BLACK_ALL:" "},u=ei(f.BLACK_WHITE).times(a+3),p=ei(f.WHITE_BLACK).times(a+3);t+=u+`
|
|
6
|
+
Right-click to open / quit`}function wa(){let{port:e,tunnelUrl:n}=Tn,r=process.platform==="win32",o=n?`9Remote (Port ${e}) \u2022 Tunnel ON`:`9Remote (Port ${e}) \u2022 Local only`;return{icon:lu(),title:r?`9Remote - Port ${e}`:"",tooltip:ya(),items:[{title:o,tooltip:n||`http://localhost:${e}`,checked:!1,enabled:!1},{title:"Open Web UI",tooltip:`Open http://localhost:${e} in your browser`,checked:!1,enabled:!0},{title:"Shutdown",tooltip:"Stop 9Remote server, tunnel and quit",checked:!1,enabled:!0}]}}function fu(){try{let e=require(Ue.default.join(ha,"systray2"));return e.default?.default||e.default||e}catch{return null}}function pu({port:e,onQuit:n,onOpenUI:r}){let o=fa(ga),t=fa(cu);if(!o||!t)return null;let i;try{i=(0,et.spawn)("powershell.exe",["-NoProfile","-ExecutionPolicy","Bypass","-WindowStyle","Hidden","-InputFormat","Text","-OutputFormat","Text","-File",t,"-IconPath",o,"-Tooltip",`9Remote - Port ${e}`],{windowsHide:!0,stdio:["pipe","pipe","pipe"]})}catch{return null}i.stdin.on("error",()=>{});let s=c=>{try{i.stdin.writable&&i.stdin.write(`${JSON.stringify(c)}
|
|
7
|
+
`,"utf8")}catch{}};return pa.default.createInterface({input:i.stdout}).on("line",c=>{try{let l=JSON.parse(c);if(l.type!=="click")return;l.index===0?r?.():l.index===1&&(n?.(),Bt(),setTimeout(()=>process.exit(0),500))}catch{}}),i.on("error",()=>{}),i.stderr.on("data",()=>{}),["Open Web UI","Shutdown"].forEach((c,l)=>s({action:"add-item",index:l,title:c,enabled:!0})),{_isWin:!0,_setTooltip(c){s({action:"set-tooltip",text:c})},sendAction(){},kill(){try{s({action:"kill"})}catch{}setTimeout(()=>{try{i&&!i.killed&&i.kill()}catch{}},300)}}}async function lr({port:e,onQuit:n,onOpenUI:r}){if(!uu())return null;if(process.platform==="win32")return Tn={port:e,tunnelUrl:"",running:!0},ae=pu({port:e,onQuit:n,onOpenUI:r}),ae;try{let o=fu();if(!o)return null;let i={darwin:"tray_darwin_release",win32:"tray_windows_release.exe",linux:"tray_linux_release"}[process.platform];if(!i)return null;let s=Ue.default.join(ha,"systray2","traybin",i);if(!Sn.default.existsSync(s))return null;if(process.platform!=="win32")try{Sn.default.chmodSync(s,493)}catch{}if(Tn={port:e,tunnelUrl:"",running:!0},ae=new o({menu:wa(),debug:!1,copyDir:!0}),ae.onClick(a=>{let c=a.item?.title||a.item;c==="Open Web UI"?r?.():c==="Shutdown"&&(n?.(),Bt(),setTimeout(()=>process.exit(0),500))}),typeof ae.ready=="function")try{await ae.ready()}catch{return ae=null,null}else ae.onReady(()=>{}),ae.onError(()=>{});return ae}catch{return null}}function xn({tunnelUrl:e,running:n}={}){if(e!==void 0&&(Tn.tunnelUrl=e),n!==void 0&&(Tn.running=n),!!ae){if(ae._isWin){ae._setTooltip?.(ya());return}try{ae.sendAction({type:"update-menu",menu:wa(),seq_id:-1})?.catch?.(()=>{})}catch{}}}function Bt(){let e=ae;if(ae=null,e)try{e.kill(!0)}catch{}}function jo({title:e="9Remote",message:n}){let r=process.platform;if(n){if(r==="win32"){let o=c=>String(c).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/'/g,"'").replace(/"/g,"""),t=c=>String(c).replace(/'/g,"''"),i="9Remote",s=`<toast><visual><binding template="ToastText02"><text id="1">${o(e)}</text><text id="2">${o(n)}</text></binding></visual></toast>`,a=["try {","[Windows.UI.Notifications.ToastNotificationManager, Windows.UI.Notifications, ContentType=WindowsRuntime] > $null;","[Windows.Data.Xml.Dom.XmlDocument, Windows.Data.Xml.Dom.XmlDocument, ContentType=WindowsRuntime] > $null;","$xml = New-Object Windows.Data.Xml.Dom.XmlDocument;",`$xml.LoadXml('${t(s)}');`,"$toast = [Windows.UI.Notifications.ToastNotification]::new($xml);",`[Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier('${t(i)}').Show($toast);`,"} catch {","Add-Type -AssemblyName System.Windows.Forms;","$n = New-Object System.Windows.Forms.NotifyIcon;","$n.Icon = [System.Drawing.SystemIcons]::Information;",`$n.BalloonTipTitle = '${t(e)}';`,`$n.BalloonTipText = '${t(n)}';`,"$n.Visible = $true;","$n.ShowBalloonTip(5000);","Start-Sleep -Seconds 6;","$n.Dispose();","}"].join(" ");try{(0,et.spawn)("powershell.exe",["-NoProfile","-WindowStyle","Hidden","-Command",a],{detached:!0,stdio:"ignore",windowsHide:!0}).unref()}catch{}return}if(r==="darwin"){try{let o=s=>String(s).replace(/"/g,'\\"'),t=`display notification "${o(n)}" with title "${o(e)}"`;(0,et.spawn)("osascript",["-e",t],{detached:!0,stdio:"ignore"}).unref()}catch{}return}try{(0,et.spawn)("notify-send",[e,n],{detached:!0,stdio:"ignore"}).unref()}catch{}}}function Ut(e){let n=process.platform;if(n==="win32"){try{(0,et.spawn)("rundll32.exe",["url.dll,FileProtocolHandler",e],{detached:!0,stdio:"ignore",windowsHide:!0}).unref();return}catch{}try{(0,et.spawn)("cmd.exe",["/d","/s","/c","start","",e],{detached:!0,stdio:"ignore",windowsHide:!0}).unref()}catch{}return}if(n==="darwin"){try{(0,et.spawn)("open",[e],{detached:!0,stdio:"ignore"}).unref()}catch{}return}let r=[["setsid",["--fork","xdg-open",e]],["setsid",["xdg-open",e]],["xdg-open",[e]],["gio",["open",e]],["sensible-browser",[e]],["x-www-browser",[e]]];for(let[o,t]of r)try{(0,et.spawn)(o,t,{detached:!0,stdio:"ignore",env:{...process.env}}).unref();return}catch{}}var et,pa,Sn,Ue,da,ma,ha,ae,Tn,Kr,ua,ga,cu,Ft=Sc(()=>{et=require("child_process"),pa=A(require("readline"),1),Sn=A(require("fs"),1),Ue=A(require("path"),1),da=A(require("os"),1),ma=require("url"),ha=(0,Ue.join)(da.default.homedir(),".9remote","runtime","node_modules"),ae=null,Tn={port:0,tunnelUrl:"",running:!1},Kr=Ue.default.dirname((0,ma.fileURLToPath)(__importMetaUrl)),ua="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",ga=[Ue.default.join(Kr,"assets","trayIcon.ico"),Ue.default.join(Kr,"..","assets","trayIcon.ico")],cu=[Ue.default.join(Kr,"assets","tray.ps1"),Ue.default.join(Kr,"..","assets","tray.ps1")]});var Jo=ve((md,Ra)=>{Ra.exports={MODE_NUMBER:1,MODE_ALPHA_NUM:2,MODE_8BIT_BYTE:4,MODE_KANJI:8}});var Oa=ve((hd,$a)=>{var gu=Jo();function Pa(e){this.mode=gu.MODE_8BIT_BYTE,this.data=e}Pa.prototype={getLength:function(){return this.data.length},write:function(e){for(var n=0;n<this.data.length;n++)e.put(this.data.charCodeAt(n),8)}};$a.exports=Pa});var Qo=ve((gd,Ia)=>{var Ie={glog:function(e){if(e<1)throw new Error("glog("+e+")");return Ie.LOG_TABLE[e]},gexp:function(e){for(;e<0;)e+=255;for(;e>=256;)e-=255;return Ie.EXP_TABLE[e]},EXP_TABLE:new Array(256),LOG_TABLE:new Array(256)};for(J=0;J<8;J++)Ie.EXP_TABLE[J]=1<<J;var J;for(J=8;J<256;J++)Ie.EXP_TABLE[J]=Ie.EXP_TABLE[J-4]^Ie.EXP_TABLE[J-5]^Ie.EXP_TABLE[J-6]^Ie.EXP_TABLE[J-8];var J;for(J=0;J<255;J++)Ie.LOG_TABLE[Ie.EXP_TABLE[J]]=J;var J;Ia.exports=Ie});var zo=ve((yd,_a)=>{var Wt=Qo();function Vr(e,n){if(e.length===void 0)throw new Error(e.length+"/"+n);for(var r=0;r<e.length&&e[r]===0;)r++;this.num=new Array(e.length-r+n);for(var o=0;o<e.length-r;o++)this.num[o]=e[o+r]}Vr.prototype={get:function(e){return this.num[e]},getLength:function(){return this.num.length},multiply:function(e){for(var n=new Array(this.getLength()+e.getLength()-1),r=0;r<this.getLength();r++)for(var o=0;o<e.getLength();o++)n[r+o]^=Wt.gexp(Wt.glog(this.get(r))+Wt.glog(e.get(o)));return new Vr(n,0)},mod:function(e){if(this.getLength()-e.getLength()<0)return this;for(var n=Wt.glog(this.get(0))-Wt.glog(e.get(0)),r=new Array(this.getLength()),o=0;o<this.getLength();o++)r[o]=this.get(o);for(var t=0;t<e.getLength();t++)r[t]^=Wt.gexp(Wt.glog(e.get(t))+n);return new Vr(r,0).mod(e)}};_a.exports=Vr});var Ma=ve((wd,La)=>{La.exports={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7}});var Da=ve((vd,Na)=>{var Te=Jo(),Ca=zo(),yu=Qo(),Et=Ma(),re={PATTERN_POSITION_TABLE:[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],G15:1335,G18:7973,G15_MASK:21522,getBCHTypeInfo:function(e){for(var n=e<<10;re.getBCHDigit(n)-re.getBCHDigit(re.G15)>=0;)n^=re.G15<<re.getBCHDigit(n)-re.getBCHDigit(re.G15);return(e<<10|n)^re.G15_MASK},getBCHTypeNumber:function(e){for(var n=e<<12;re.getBCHDigit(n)-re.getBCHDigit(re.G18)>=0;)n^=re.G18<<re.getBCHDigit(n)-re.getBCHDigit(re.G18);return e<<12|n},getBCHDigit:function(e){for(var n=0;e!==0;)n++,e>>>=1;return n},getPatternPosition:function(e){return re.PATTERN_POSITION_TABLE[e-1]},getMask:function(e,n,r){switch(e){case Et.PATTERN000:return(n+r)%2===0;case Et.PATTERN001:return n%2===0;case Et.PATTERN010:return r%3===0;case Et.PATTERN011:return(n+r)%3===0;case Et.PATTERN100:return(Math.floor(n/2)+Math.floor(r/3))%2===0;case Et.PATTERN101:return n*r%2+n*r%3===0;case Et.PATTERN110:return(n*r%2+n*r%3)%2===0;case Et.PATTERN111:return(n*r%3+(n+r)%2)%2===0;default:throw new Error("bad maskPattern:"+e)}},getErrorCorrectPolynomial:function(e){for(var n=new Ca([1],0),r=0;r<e;r++)n=n.multiply(new Ca([1,yu.gexp(r)],0));return n},getLengthInBits:function(e,n){if(1<=n&&n<10)switch(e){case Te.MODE_NUMBER:return 10;case Te.MODE_ALPHA_NUM:return 9;case Te.MODE_8BIT_BYTE:return 8;case Te.MODE_KANJI:return 8;default:throw new Error("mode:"+e)}else if(n<27)switch(e){case Te.MODE_NUMBER:return 12;case Te.MODE_ALPHA_NUM:return 11;case Te.MODE_8BIT_BYTE:return 16;case Te.MODE_KANJI:return 10;default:throw new Error("mode:"+e)}else if(n<41)switch(e){case Te.MODE_NUMBER:return 14;case Te.MODE_ALPHA_NUM:return 13;case Te.MODE_8BIT_BYTE:return 16;case Te.MODE_KANJI:return 12;default:throw new Error("mode:"+e)}else throw new Error("type:"+n)},getLostPoint:function(e){var n=e.getModuleCount(),r=0,o=0,t=0;for(o=0;o<n;o++)for(t=0;t<n;t++){for(var i=0,s=e.isDark(o,t),a=-1;a<=1;a++)if(!(o+a<0||n<=o+a))for(var c=-1;c<=1;c++)t+c<0||n<=t+c||a===0&&c===0||s===e.isDark(o+a,t+c)&&i++;i>5&&(r+=3+i-5)}for(o=0;o<n-1;o++)for(t=0;t<n-1;t++){var l=0;e.isDark(o,t)&&l++,e.isDark(o+1,t)&&l++,e.isDark(o,t+1)&&l++,e.isDark(o+1,t+1)&&l++,(l===0||l===4)&&(r+=3)}for(o=0;o<n;o++)for(t=0;t<n-6;t++)e.isDark(o,t)&&!e.isDark(o,t+1)&&e.isDark(o,t+2)&&e.isDark(o,t+3)&&e.isDark(o,t+4)&&!e.isDark(o,t+5)&&e.isDark(o,t+6)&&(r+=40);for(t=0;t<n;t++)for(o=0;o<n-6;o++)e.isDark(o,t)&&!e.isDark(o+1,t)&&e.isDark(o+2,t)&&e.isDark(o+3,t)&&e.isDark(o+4,t)&&!e.isDark(o+5,t)&&e.isDark(o+6,t)&&(r+=40);var f=0;for(t=0;t<n;t++)for(o=0;o<n;o++)e.isDark(o,t)&&f++;var u=Math.abs(100*f/n/n-50)/5;return r+=u*10,r}};Na.exports=re});var Zo=ve((bd,Ba)=>{Ba.exports={L:1,M:0,Q:3,H:2}});var Fa=ve((Ed,Ua)=>{var Yr=Zo();function Fe(e,n){this.totalCount=e,this.dataCount=n}Fe.RS_BLOCK_TABLE=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]];Fe.getRSBlocks=function(e,n){var r=Fe.getRsBlockTable(e,n);if(r===void 0)throw new Error("bad rs block @ typeNumber:"+e+"/errorCorrectLevel:"+n);for(var o=r.length/3,t=[],i=0;i<o;i++)for(var s=r[i*3+0],a=r[i*3+1],c=r[i*3+2],l=0;l<s;l++)t.push(new Fe(a,c));return t};Fe.getRsBlockTable=function(e,n){switch(n){case Yr.L:return Fe.RS_BLOCK_TABLE[(e-1)*4+0];case Yr.M:return Fe.RS_BLOCK_TABLE[(e-1)*4+1];case Yr.Q:return Fe.RS_BLOCK_TABLE[(e-1)*4+2];case Yr.H:return Fe.RS_BLOCK_TABLE[(e-1)*4+3];default:return}};Ua.exports=Fe});var ja=ve((Sd,Ha)=>{function Ka(){this.buffer=[],this.length=0}Ka.prototype={get:function(e){var n=Math.floor(e/8);return(this.buffer[n]>>>7-e%8&1)==1},put:function(e,n){for(var r=0;r<n;r++)this.putBit((e>>>n-r-1&1)==1)},getLengthInBits:function(){return this.length},putBit:function(e){var n=Math.floor(this.length/8);this.buffer.length<=n&&this.buffer.push(0),e&&(this.buffer[n]|=128>>>this.length%8),this.length++}};Ha.exports=Ka});var Ya=ve((Td,Va)=>{var wu=Oa(),St=Da(),vu=zo(),Wa=Fa(),Ga=ja();function Ke(e,n){this.typeNumber=e,this.errorCorrectLevel=n,this.modules=null,this.moduleCount=0,this.dataCache=null,this.dataList=[]}Ke.prototype={addData:function(e){var n=new wu(e);this.dataList.push(n),this.dataCache=null},isDark:function(e,n){if(e<0||this.moduleCount<=e||n<0||this.moduleCount<=n)throw new Error(e+","+n);return this.modules[e][n]},getModuleCount:function(){return this.moduleCount},make:function(){if(this.typeNumber<1){var e=1;for(e=1;e<40;e++){for(var n=Wa.getRSBlocks(e,this.errorCorrectLevel),r=new Ga,o=0,t=0;t<n.length;t++)o+=n[t].dataCount;for(var i=0;i<this.dataList.length;i++){var s=this.dataList[i];r.put(s.mode,4),r.put(s.getLength(),St.getLengthInBits(s.mode,e)),s.write(r)}if(r.getLengthInBits()<=o*8)break}this.typeNumber=e}this.makeImpl(!1,this.getBestMaskPattern())},makeImpl:function(e,n){this.moduleCount=this.typeNumber*4+17,this.modules=new Array(this.moduleCount);for(var r=0;r<this.moduleCount;r++){this.modules[r]=new Array(this.moduleCount);for(var o=0;o<this.moduleCount;o++)this.modules[r][o]=null}this.setupPositionProbePattern(0,0),this.setupPositionProbePattern(this.moduleCount-7,0),this.setupPositionProbePattern(0,this.moduleCount-7),this.setupPositionAdjustPattern(),this.setupTimingPattern(),this.setupTypeInfo(e,n),this.typeNumber>=7&&this.setupTypeNumber(e),this.dataCache===null&&(this.dataCache=Ke.createData(this.typeNumber,this.errorCorrectLevel,this.dataList)),this.mapData(this.dataCache,n)},setupPositionProbePattern:function(e,n){for(var r=-1;r<=7;r++)if(!(e+r<=-1||this.moduleCount<=e+r))for(var o=-1;o<=7;o++)n+o<=-1||this.moduleCount<=n+o||(0<=r&&r<=6&&(o===0||o===6)||0<=o&&o<=6&&(r===0||r===6)||2<=r&&r<=4&&2<=o&&o<=4?this.modules[e+r][n+o]=!0:this.modules[e+r][n+o]=!1)},getBestMaskPattern:function(){for(var e=0,n=0,r=0;r<8;r++){this.makeImpl(!0,r);var o=St.getLostPoint(this);(r===0||e>o)&&(e=o,n=r)}return n},createMovieClip:function(e,n,r){var o=e.createEmptyMovieClip(n,r),t=1;this.make();for(var i=0;i<this.modules.length;i++)for(var s=i*t,a=0;a<this.modules[i].length;a++){var c=a*t,l=this.modules[i][a];l&&(o.beginFill(0,100),o.moveTo(c,s),o.lineTo(c+t,s),o.lineTo(c+t,s+t),o.lineTo(c,s+t),o.endFill())}return o},setupTimingPattern:function(){for(var e=8;e<this.moduleCount-8;e++)this.modules[e][6]===null&&(this.modules[e][6]=e%2===0);for(var n=8;n<this.moduleCount-8;n++)this.modules[6][n]===null&&(this.modules[6][n]=n%2===0)},setupPositionAdjustPattern:function(){for(var e=St.getPatternPosition(this.typeNumber),n=0;n<e.length;n++)for(var r=0;r<e.length;r++){var o=e[n],t=e[r];if(this.modules[o][t]===null)for(var i=-2;i<=2;i++)for(var s=-2;s<=2;s++)Math.abs(i)===2||Math.abs(s)===2||i===0&&s===0?this.modules[o+i][t+s]=!0:this.modules[o+i][t+s]=!1}},setupTypeNumber:function(e){for(var n=St.getBCHTypeNumber(this.typeNumber),r,o=0;o<18;o++)r=!e&&(n>>o&1)===1,this.modules[Math.floor(o/3)][o%3+this.moduleCount-8-3]=r;for(var t=0;t<18;t++)r=!e&&(n>>t&1)===1,this.modules[t%3+this.moduleCount-8-3][Math.floor(t/3)]=r},setupTypeInfo:function(e,n){for(var r=this.errorCorrectLevel<<3|n,o=St.getBCHTypeInfo(r),t,i=0;i<15;i++)t=!e&&(o>>i&1)===1,i<6?this.modules[i][8]=t:i<8?this.modules[i+1][8]=t:this.modules[this.moduleCount-15+i][8]=t;for(var s=0;s<15;s++)t=!e&&(o>>s&1)===1,s<8?this.modules[8][this.moduleCount-s-1]=t:s<9?this.modules[8][15-s-1+1]=t:this.modules[8][15-s-1]=t;this.modules[this.moduleCount-8][8]=!e},mapData:function(e,n){for(var r=-1,o=this.moduleCount-1,t=7,i=0,s=this.moduleCount-1;s>0;s-=2)for(s===6&&s--;;){for(var a=0;a<2;a++)if(this.modules[o][s-a]===null){var c=!1;i<e.length&&(c=(e[i]>>>t&1)===1);var l=St.getMask(n,o,s-a);l&&(c=!c),this.modules[o][s-a]=c,t--,t===-1&&(i++,t=7)}if(o+=r,o<0||this.moduleCount<=o){o-=r,r=-r;break}}}};Ke.PAD0=236;Ke.PAD1=17;Ke.createData=function(e,n,r){for(var o=Wa.getRSBlocks(e,n),t=new Ga,i=0;i<r.length;i++){var s=r[i];t.put(s.mode,4),t.put(s.getLength(),St.getLengthInBits(s.mode,e)),s.write(t)}for(var a=0,c=0;c<o.length;c++)a+=o[c].dataCount;if(t.getLengthInBits()>a*8)throw new Error("code length overflow. ("+t.getLengthInBits()+">"+a*8+")");for(t.getLengthInBits()+4<=a*8&&t.put(0,4);t.getLengthInBits()%8!==0;)t.putBit(!1);for(;!(t.getLengthInBits()>=a*8||(t.put(Ke.PAD0,8),t.getLengthInBits()>=a*8));)t.put(Ke.PAD1,8);return Ke.createBytes(t,o)};Ke.createBytes=function(e,n){for(var r=0,o=0,t=0,i=new Array(n.length),s=new Array(n.length),a=0;a<n.length;a++){var c=n[a].dataCount,l=n[a].totalCount-c;o=Math.max(o,c),t=Math.max(t,l),i[a]=new Array(c);for(var f=0;f<i[a].length;f++)i[a][f]=255&e.buffer[f+r];r+=c;var u=St.getErrorCorrectPolynomial(l),p=new vu(i[a],u.getLength()-1),d=p.mod(u);s[a]=new Array(u.getLength()-1);for(var m=0;m<s[a].length;m++){var w=m+d.getLength()-s[a].length;s[a][m]=w>=0?d.get(w):0}}for(var v=0,P=0;P<n.length;P++)v+=n[P].totalCount;for(var E=new Array(v),x=0,R=0;R<o;R++)for(var N=0;N<n.length;N++)R<i[N].length&&(E[x++]=i[N][R]);for(var g=0;g<t;g++)for(var T=0;T<n.length;T++)g<s[T].length&&(E[x++]=s[T][g]);return E};Va.exports=Ke});var Ja=ve((xd,Xa)=>{var bu=Ya(),qa=Zo(),Eu="\x1B[40m \x1B[0m",qr="\x1B[47m \x1B[0m",Su=function(e){return e?Eu:qr},ei=function(e){return{times:function(n){return new Array(n).join(e)}}},Tu=function(e,n){for(var r=new Array(e),o=0;o<e;o++)r[o]=n;return r};Xa.exports={error:qa.L,generate:function(e,n,r){typeof n=="function"&&(r=n,n={});var o=new bu(-1,this.error);o.addData(e),o.make();var t="";if(n&&n.small){var i=!0,s=!1,a=o.getModuleCount(),c=o.modules.slice(),l=a%2===1;l&&c.push(Tu(a,s));var f={WHITE_ALL:"\u2588",WHITE_BLACK:"\u2580",BLACK_WHITE:"\u2584",BLACK_ALL:" "},u=ei(f.BLACK_WHITE).times(a+3),p=ei(f.WHITE_BLACK).times(a+3);t+=u+`
|
|
8
8
|
`;for(var d=0;d<a;d+=2){t+=f.WHITE_ALL;for(var m=0;m<a;m++)c[d][m]===s&&c[d+1][m]===s?t+=f.WHITE_ALL:c[d][m]===s&&c[d+1][m]===i?t+=f.WHITE_BLACK:c[d][m]===i&&c[d+1][m]===s?t+=f.BLACK_WHITE:t+=f.BLACK_ALL;t+=f.WHITE_ALL+`
|
|
9
9
|
`}l||(t+=p)}else{var w=ei(qr).times(o.getModuleCount()+3);t+=w+`
|
|
10
10
|
`,o.modules.forEach(function(v){t+=qr,t+=v.map(Su).join(""),t+=qr+`
|
|
11
|
-
`}),t+=w}
|
|
12
|
-
`)){let n
|
|
13
|
-
`)}catch{}}function
|
|
11
|
+
`}),t+=w}r?r(t):console.log(t)},setErrorLevel:function(e){this.error=qa[e]||this.error}}});for(let e of[process.stdout,process.stderr])e?.on?.("error",n=>{if(n?.code!=="EPIPE")throw n});var yr=require("fs"),Nn=require("path"),wi=require("url"),vi=A(require("os"),1);var gr=A(require("dns"),1),Ae=A(require("path"),1),fi=A(require("os"),1),ee="9remote",to=process.env.NREMOTE_REGISTRY||`https://registry.npmjs.org/${ee}/latest`,ke=`${ee}@latest`,Le=process.env.NREMOTE_HOME||Ae.default.join(fi.default.homedir(),".9remote"),V={ROOT:Le,LOGS:Ae.default.join(Le,"logs"),STATE:Ae.default.join(Le,"state"),CONFIG:Ae.default.join(Le,"config"),BIN:Ae.default.join(Le,"bin"),PIDS:Ae.default.join(Le,"pids"),BUFFERS:Ae.default.join(Le,"buffers"),DAEMON:Ae.default.join(Le,"daemon"),AI_SESSIONS:Ae.default.join(Le,"ai-sessions"),BACKGROUNDS:Ae.default.join(Le,"backgrounds")},Mn=new gr.default.promises.Resolver;Mn.setServers(["1.1.1.1","1.0.0.1","8.8.8.8"]);var eo=gr.default.lookup,Ac=/^(\d{1,3}\.){3}\d{1,3}$|^::1$|^[0-9a-f:]+$/i;gr.default.lookup=(e,n,r)=>{if(typeof n=="function"&&(r=n,n={}),e==="localhost"||Ac.test(e))return eo(e,n,r);(async()=>{if(n.family===6)return{addrs:await Mn.resolve6(e),family:6};if(n.family===4)return{addrs:await Mn.resolve4(e),family:4};let[t,i]=await Promise.allSettled([Mn.resolve4(e),Mn.resolve6(e)]);return t.status==="fulfilled"&&t.value?.length?{addrs:t.value,family:4}:i.status==="fulfilled"&&i.value?.length?{addrs:i.value,family:6}:null})().then(t=>{if(!t?.addrs?.length)return eo(e,n,r);n.all?r(null,t.addrs.map(i=>({address:i,family:t.family}))):r(null,t.addrs[0],t.family)}).catch(()=>eo(e,n,r))};var $=2208,pi=process.execPath,di=(e=process.env)=>process.versions.electron?{...e,ELECTRON_RUN_AS_NODE:"1"}:{...e};var li=5173,ui=3e3;var tf=[`http://localhost:${$}`,`http://127.0.0.1:${$}`,`http://localhost:${li}`,`http://127.0.0.1:${li}`,`http://localhost:${ui}`,`http://127.0.0.1:${ui}`],Cn={fileName:"agent.log",rotatedName:"agent.log.1",maxBytes:2*1024*1024,cleanupAfterDays:7},mi=60,O={STOPPED:0,PREPARING:1,CONNECTING:2,TUNNELING:3,VERIFYING:4,READY:5},hi={showTunnelUrlInMenu:!1};var gi={CLAUDE_CODE_DISABLE_ALTERNATE_SCREEN:"1"};var yi={checkIntervalMs:3e4,requestTimeoutMs:5e3},ge={server:{strategy:"exp",baseMs:1e3,maxMs:6e4},tunnelRestart:{strategy:"exp",baseMs:2e3,maxMs:3e5},tunnelSpawn:{strategy:"linear",baseMs:5e3,maxMs:6e4},tunnelRateLimit:{strategy:"exp",baseMs:6e4,maxMs:9e5},internet:{strategy:"linear",baseMs:3e3,maxMs:6e4},sse:{strategy:"linear",baseMs:2e3,maxMs:2e3},urlSync:{strategy:"linear",baseMs:5e3,maxMs:6e4}},kc={Accept:"application/json, text/plain, */*","Accept-Language":"en-US,en;q=0.9","Cache-Control":"no-cache",Pragma:"no-cache","User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36"};function W(e,n={}){return fetch(e,{...n,headers:{...kc,...n.headers}})}var Rc=(0,Nn.dirname)((0,wi.fileURLToPath)(__importMetaUrl)),Pc=[(0,Nn.join)(vi.default.homedir(),".9remote",".env"),(0,Nn.join)(Rc,"..",".env")];function $c(e){for(let n of e.split(`
|
|
12
|
+
`)){let r=n.trim();if(!r||r.startsWith("#"))continue;let o=r.match(/^([A-Z_][A-Z0-9_]*)\s*=\s*"?(.*?)"?$/);o&&!process.env[o[1]]&&(process.env[o[1]]=o[2])}}for(let e of Pc)if((0,yr.existsSync)(e))try{$c((0,yr.readFileSync)(e,"utf8"))}catch{}for(let[e,n]of Object.entries(gi))process.env[e]||(process.env[e]=n);var xo=A(require("path"),1),Ts=A(require("fs"),1),xs=require("url");var Ei=A(bi(),1),ro=A(require("crypto"),1),{machineIdSync:Oc}=Ei.default;async function Xt(e=null){let n=e||process.env.MACHINE_ID_SALT||"9remote-salt";try{let r=Oc();return ro.default.createHash("sha256").update(r+n).digest("hex").substring(0,16)}catch(r){return console.error("Error getting machine ID:",r),ro.default.randomUUID().replace(/-/g,"").substring(0,16)}}var xi=A(require("crypto"),1),Si="abcdefghijklmnpqrstuvwxyz123456789",Ic=8;function Ti(){let e="";for(let n=0;n<Ic;n++)e+=Si[xi.default.randomInt(Si.length)];return e}function kt(e){return`sk-${(e||"").slice(0,8).toLowerCase()}-${Ti()}-${Ti()}`}function oo(e){return/^sk-[a-z0-9]{8}-[a-np-z1-9]{8}-[a-np-z1-9]{8}$/.test(e||"")}function Q(e){if(!oo(e))return e||null;let n=e.split("-");return`${n[0]}-${n[1]}-${n[2]}`}function Ai(e){return typeof e!="string"||!e?!1:/^sk-[a-z0-9]{8}-[a-z0-9]{4}-[0-9a-f]{6}$/.test(e.trim().toLowerCase())}function wr(e){return!e||e.length<8?"sk-***":`${e.slice(0,3)}***${e.slice(-4)}`}var de=A(require("fs"),1),Un=A(require("path"),1);var ye=require("fs"),ki=require("path"),_c=0;function je(e,n,r={}){let{mode:o=384,spaces:t=2}=r;(0,ye.mkdirSync)((0,ki.dirname)(e),{recursive:!0});let i=`${e}.${process.pid}.${++_c}.tmp`;try{(0,ye.writeFileSync)(i,JSON.stringify(n,null,t),{mode:o}),(0,ye.renameSync)(i,e)}catch(s){try{(0,ye.existsSync)(i)&&(0,ye.unlinkSync)(i)}catch{}throw s}}function Ri(e,n=null){try{return(0,ye.existsSync)(e)?JSON.parse((0,ye.readFileSync)(e,"utf8")):n}catch{return n}}var uf=V.STATE,Bn=Un.default.join(V.STATE,"state.json"),io=Un.default.join(V.ROOT,"keys.json"),vr=Un.default.join(V.STATE,"cmd.json"),Pi=Un.default.join(V.STATE,"settings.json");function Jt(){for(let e of[V.ROOT,V.STATE])de.default.existsSync(e)||de.default.mkdirSync(e,{recursive:!0})}function $i(){try{return Jt(),de.default.existsSync(Bn)?JSON.parse(de.default.readFileSync(Bn,"utf8")):null}catch{return null}}function Fn(e){try{Jt(),je(Bn,e)}catch(n){console.error("Error saving state:",n)}}function Oi(){try{de.default.existsSync(Bn)&&de.default.unlinkSync(Bn)}catch{}}function Y(){try{return Jt(),de.default.existsSync(Pi)?JSON.parse(de.default.readFileSync(Pi,"utf8"))||{}:{}}catch{return{}}}function Kn(){try{return Jt(),de.default.existsSync(io)?JSON.parse(de.default.readFileSync(io,"utf8")):{machineId:null,key:null,name:"Default",createdAt:null}}catch{return{machineId:null,key:null,name:"Default",createdAt:null}}}function Qt(e){try{Jt(),je(vr,{cmd:e,ts:Date.now()},{spaces:0})}catch{}}function Ii(){try{if(!de.default.existsSync(vr))return null;let e=JSON.parse(de.default.readFileSync(vr,"utf8"));return de.default.unlinkSync(vr),e.cmd}catch{return null}}function We(e,n,r="Default"){try{Jt();let o={machineId:e,key:n,name:r,createdAt:new Date().toISOString()};return je(io,o),o}catch(o){return console.error("Error saving key:",o),null}}var Me=A(require("fs"),1),so=A(require("path"),1);var Er=V.LOGS,Hn=so.default.join(Er,Cn.fileName),Sr=so.default.join(Er,Cn.rotatedName),_i=!1,Li=null;function Lc(){Me.default.existsSync(Er)||Me.default.mkdirSync(Er,{recursive:!0})}function Mc(){try{if(Me.default.statSync(Hn).size<Cn.maxBytes)return;try{Me.default.rmSync(Sr,{force:!0})}catch{}Me.default.renameSync(Hn,Sr)}catch{}}function Cc(){try{let e=Me.default.statSync(Sr);Date.now()-e.mtimeMs>Cn.cleanupAfterDays*864e5&&Me.default.rmSync(Sr,{force:!0})}catch{}}function ao(e){try{Mc(),Me.default.appendFileSync(Hn,e+`
|
|
13
|
+
`)}catch{}}function br(e){return e.map(n=>{if(n instanceof Error)return n.stack||n.message;if(typeof n=="object")try{return JSON.stringify(n)}catch{return String(n)}return String(n)}).join(" ")}var Nc=/\x1b\[[0-9;]*m/g,Dc=/https?:\/\/[^\s]+/g;function Bc(e){return String(e).replace(Nc,"").replace(Dc,"").replace(/\s+$/g,"")}function zt(e,n,r){let o=Bc(r);if(!o)return;let t=`${new Date().toISOString()} ${n.toUpperCase()} [${e}] ${o}`;if(ao(t),Li)try{Li(t)}catch{}}function Uc(){process.on("uncaughtException",e=>zt("crash","error",`uncaughtException: ${e?.stack||e?.message||e}`)),process.on("unhandledRejection",e=>{let n=e instanceof Error?e.stack||e.message:String(e);zt("crash","error",`unhandledRejection: ${n}`)}),process.on("exit",e=>ao(`${new Date().toISOString()} INFO [exit] code=${e} pid=${process.pid}`))}function Mi(){_i||(_i=!0,Lc(),Cc(),ao(`
|
|
14
14
|
=== SESSION ${new Date().toISOString()} pid=${process.pid} argv=${process.argv.slice(2).join(" ")} ===`),Uc())}function Ci(e=60){try{return Me.default.readFileSync(Hn,"utf8").split(`
|
|
15
|
-
`).filter(Boolean).slice(-e)}catch{return[]}}var Fc=process.env.NODE_ENV==="development"||process.env.AGENT_DEBUG==="1";function F(e){return{debug:(...
|
|
16
|
-
`)}function rn(e,
|
|
15
|
+
`).filter(Boolean).slice(-e)}catch{return[]}}var Fc=process.env.NODE_ENV==="development"||process.env.AGENT_DEBUG==="1";function F(e){return{debug:(...n)=>{Fc&&zt(e,"debug",br(n))},info:(...n)=>zt(e,"info",br(n)),warn:(...n)=>zt(e,"warn",br(n)),error:(...n)=>zt(e,"error",br(n))}}var jn=Hn;var ct=A(require("crypto"),1),en=require("fs");var Ni=require("path");var mf=Buffer.from("302a300506032b656e","hex");var Tr=(0,Ni.join)(V.CONFIG,"hostKey.json"),bf=Buffer.from("302a300506032b6570032100","hex"),Zt=null;function co(){if(Zt)return Zt;try{if((0,en.existsSync)(Tr)){let s=JSON.parse((0,en.readFileSync)(Tr,"utf8")),a=Buffer.from(s.publicKey,"base64");if(!s.x25519PrivateKey){let l=ct.default.generateKeyPairSync("x25519");s.x25519PrivateKey=l.privateKey.export({type:"pkcs8",format:"der"}).toString("base64"),s.x25519PublicKey=l.publicKey.export({type:"spki",format:"der"}).toString("base64"),je(Tr,s)}let c=Buffer.from(s.x25519PublicKey,"base64");return Zt={privateKey:ct.default.createPrivateKey({key:Buffer.from(s.privateKey,"base64"),format:"der",type:"pkcs8"}),publicKey:ct.default.createPublicKey({key:a,format:"der",type:"spki"}),publicKeyB64:a.subarray(-32).toString("base64"),x25519PrivateKey:ct.default.createPrivateKey({key:Buffer.from(s.x25519PrivateKey,"base64"),format:"der",type:"pkcs8"}),x25519PublicKeyB64:c.subarray(-32).toString("base64")},Zt}}catch{}(0,en.mkdirSync)(V.CONFIG,{recursive:!0});let{privateKey:e,publicKey:n}=ct.default.generateKeyPairSync("ed25519"),r=n.export({type:"spki",format:"der"}).toString("base64"),o=e.export({type:"pkcs8",format:"der"}).toString("base64"),t=ct.default.generateKeyPairSync("x25519"),i=t.publicKey.export({type:"spki",format:"der"}).toString("base64");return je(Tr,{privateKey:o,publicKey:r,x25519PrivateKey:t.privateKey.export({type:"pkcs8",format:"der"}).toString("base64"),x25519PublicKey:i}),Zt={privateKey:e,publicKey:n,publicKeyB64:Buffer.from(r,"base64").subarray(-32).toString("base64"),x25519PrivateKey:t.privateKey,x25519PublicKeyB64:Buffer.from(i,"base64").subarray(-32).toString("base64")},Zt}function lt(){return co().publicKeyB64}function ut(){return co().x25519PublicKeyB64}var Kc="9remote-session-v1";function Hc({apiKey:e,tunnelUrl:n,localIp:r,expiryMinutes:o,ts:t}){let i=a=>{let c=a==null?"":String(a);return`${c.length}:${c}`},s=`${Kc}|${i(e)}${i(n)}${i(r)}${i(o)}${i(t)}`;return ct.default.sign(null,Buffer.from(s,"utf8"),co().privateKey).toString("base64")}function Rt(e){let n=Date.now();return{ts:n,sig:Hc({...e,ts:n})}}var Bi=A(require("crypto"),1),Ui=require("path");var jc=F("pairing"),Fi=(0,Ui.join)(V.STATE,"pairing.json"),Di="ABCDEFGHIJKLMNPQRSTUVWXYZ123456789",Wc=2;function Ki(){let e="";for(let n=0;n<Wc;n++)e+=Di[Bi.default.randomInt(Di.length)];return e}function Gc(){let e=Ri(Fi,null);return!e||Date.now()>e.expiresAt?null:e}function Vc(e){try{je(Fi,e)}catch(n){jc.error(`persist pairing state: ${n.message}`)}}function Hi(e,n,r,o=null){Vc({tempKey:e,tail:n,expiresAt:r,workerUrl:o})}function ji(){let e=Gc();return e?{tempKey:e.tempKey,tail:e.tail,expiresAt:e.expiresAt}:null}var lo=F("session"),Yc=10;async function Wn(e,n){let r=async()=>{let o=await W(`${n}/api/temp-key/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify((()=>{let t={apiKey:Q(e),expiryMinutes:Yc};return{...t,...Rt(t)}})())});if(!o.ok){let t=await o.json().catch(()=>null);throw new Error(t?.error||`HTTP ${o.status}`)}return o.json()};try{let o;try{o=await r()}catch(i){if(lo.warn(`Temp key creation failed (${i.message}) \u2014 re-registering session`),!await Pt(e,n))throw i;o=await r()}let t=Ki();return Hi(o.tempKey,t,o.expiresAt,n),{...o,oneTimeKey:`${o.tempKey}${t}`}}catch(o){return lo.error(`Temp key creation failed: ${o?.message||o}`),null}}function Gn(e,n){return n?.tempKey?`${e}/login?k=${n.tempKey}#${n.oneTimeKey}`:`${e}/login`}async function Pt(e,n,r,o){try{let t=await W(`${n}/api/session/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:Q(e),hostPublicKey:lt(),hostX25519Key:ut(),tempKey:ji()?.tempKey||void 0})});if(!t.ok)throw new Error(`HTTP ${t.status}`);return r&&await W(`${n}/api/session/update`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:Q(e),tunnelUrl:r,...Rt({apiKey:Q(e),tunnelUrl:r})})}).catch(()=>{}),o&&Q(o)!==Q(e)&&await W(`${n}/api/session/delete`,{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:Q(o),...Rt({apiKey:Q(o)})})}).catch(()=>{}),!0}catch(t){return lo.error(`Session registration failed: ${t?.message||t}`),!1}}var ns=A(require("os"),1);var Rr=A(require("readline"),1),Gi=A(require("http"),1);var uo=require("child_process"),qc={screenRecording:"x-apple.systempreferences:com.apple.preference.security?Privacy_ScreenCapture",accessibility:"x-apple.systempreferences:com.apple.preference.security?Privacy_Accessibility"};function xr(e){let n=qc[e];n&&process.platform==="darwin"&&(0,uo.exec)(`open "${n}"`,()=>{})}function Re({strategy:e,baseMs:n,maxMs:r},o){let t=Math.max(1,o),i=e==="exp"?n*Math.pow(2,t-1):n*t;return Math.min(i,r)}async function Ar({config:e,task:n,label:r="task",log:o=()=>{},ctx:t={}}){let i=0;for(;!t.cancelled;){i++;try{if(await n(i))return!0}catch(a){o(`\u274C ${r} attempt ${i} error: ${a?.message||a}`)}if(t.cancelled)return!1;let s=Re(e,i);o(`\u{1F504} ${r} retry in ${s}ms (attempt ${i})`),await new Promise(a=>setTimeout(a,s))}return!1}var S={reset:"\x1B[0m",bold:"\x1B[1m",dim:"\x1B[2m",orange:"\x1B[38;2;230;138;110m",green:"\x1B[32m",red:"\x1B[31m",yellow:"\x1B[33m",cyan:"\x1B[36m",white:"\x1B[37m"},Vi=()=>Math.min(44,process.stdout.columns||44);function po(e,n=null){let o=Vi()-2,t=(a="")=>{let c=a.replace(/\x1b\[[0-9;]*m/g,""),l=Math.max(0,o-c.length);return S.orange+"\u2551"+S.reset+a+" ".repeat(l)+S.orange+"\u2551"+S.reset},i=(a,c=l=>l)=>{let l=a.replace(/\x1b\[[0-9;]*m/g,""),f=Math.floor((o-l.length)/2),u=o-l.length-f;return S.orange+"\u2551"+S.reset+" ".repeat(f)+c(a)+" ".repeat(u)+S.orange+"\u2551"+S.reset},s=["",S.orange+"\u2554"+"\u2550".repeat(o)+"\u2557"+S.reset,t(),i(`\u{1F680} 9Remote v${e}`,a=>S.bold+S.orange+a+S.reset),i("Remote terminal access from anywhere",a=>S.dim+a+S.reset),t()];return n&&(s.push(i(`\u2B06 New version v${n} available!`,a=>S.yellow+S.bold+a+S.reset)),s.push(i(`Run: npm i -g ${ke}`,a=>S.dim+a+S.reset)),s.push(t())),s.push(S.orange+"\u255A"+"\u2550".repeat(o)+"\u255D"+S.reset),s.push(""),s.join(`
|
|
16
|
+
`)}function rn(e,n=null){console.log(po(e,n))}var Wi=["\u28FE","\u28FD","\u28FB","\u28BF","\u287F","\u28DF","\u28EF","\u28F7"],fo=[{label:"Preparing",desc:"Checking dependencies"},{label:"Connecting",desc:"Creating session"},{label:"Starting tunnel",desc:"Spawning tunnel"},{label:"Verifying tunnel",desc:"Health check"},{label:"Ready",desc:"Tunnel is live"}],Xc=process.platform==="win32",Jc=Xc?120:80;process.on("exit",()=>{nn&&process.stdout.isTTY&&process.stdout.write("\x1B[?25h")});var Yi=(e,n)=>{nn&&process.stdout.isTTY&&process.stdout.write("\x1B[?25h"),process.listenerCount(e)<=1&&process.exit(n)};process.on("SIGINT",()=>Yi("SIGINT",130));process.on("SIGTERM",()=>Yi("SIGTERM",143));var Ge=0,$t=null,kr=0,Ce=-1,Vn=null,tn=null,nn=!1;function qi(){let e=[],n=Ce===fo.length-1;return fo.forEach((r,o)=>{let t=o===Ce&&Vn?Vn:r.desc;if(o<Ce||n&&o===Ce)e.push(` ${S.green}\u2713${S.reset} ${S.dim}${r.label}${S.reset}`),tn&&o===tn.afterIdx&&e.push(` ${S.green}\u2713${S.reset} ${S.cyan}${tn.text}${S.reset}`);else if(o===Ce){let i=Wi[kr%Wi.length];e.push(` ${S.orange}${i}${S.reset} ${S.bold}${r.label}${S.reset} ${S.dim}${t}${S.reset}`)}else e.push(` ${S.dim}\u25CB ${r.label}${S.reset}`)}),e}function Xi(){let e=qi();Ge>0&&process.stdout.write(`\x1B[${Ge}A\x1B[0J`),process.stdout.write(e.join(`
|
|
17
17
|
`)+`
|
|
18
|
-
`),Ge=e.length}function Ji(){if(Ge===0||Ce<0)return;let e=qi();if(e.length!==Ge){Xi();return}let
|
|
18
|
+
`),Ge=e.length}function Ji(){if(Ge===0||Ce<0)return;let e=qi();if(e.length!==Ge){Xi();return}let n=Ce+(tn&&tn.afterIdx<Ce?1:0),r=Ge-n;process.stdout.write(`\x1B[${r}A\r\x1B[2K${e[n]}\x1B[${r}B\r`)}function Qc(){nn||(process.stdout.write("\x1B[?25l"),nn=!0)}function Qi(){nn&&(process.stdout.write("\x1B[?25h"),nn=!1)}function zi(e,n=!1,r=null){$t&&(clearInterval($t),$t=null),Ce=e,Vn=r,kr=0,n||(Ge=0),Xi(),e>=0&&e<fo.length-1?(Qc(),$t=setInterval(()=>{kr++,Ji()},Jc)):Qi()}function on(e){Vn=e,Ge>0&&Ji()}function Zi(){$t&&(clearInterval($t),$t=null),Qi(),Ge=0,Ce=-1,Vn=null,tn=null,kr=0}function Ne(e,n,r=0,o="",t=null,i=null){return new Promise(s=>{let a=r,c=!0,l=!0,f=process.platform==="win32",u=()=>{if(!c)return;process.stdout.write(l?"\x1B[2J\x1B[H":"\x1B[H"),l=!1;let w=typeof o=="function"?o():o;if(w)for(let v of w.split(`
|
|
19
19
|
`))process.stdout.write(v+`\x1B[K
|
|
20
20
|
`);e&&process.stdout.write(`${S.dim}${e}${S.reset}\x1B[K
|
|
21
21
|
\x1B[K
|
|
22
|
-
`),
|
|
23
|
-
`)}),process.stdout.write("\x1B[J")},p=()=>{if(c){if(c=!1,process.stdin.isTTY)try{process.stdin.setRawMode(!1)}catch{}process.stdin.removeListener("keypress",d),process.stdin.pause()}},d=(w,v)=>{!c||!v||(v.name==="up"?(a=(a-1+
|
|
22
|
+
`),n.forEach((v,P)=>{let E=P===a?f?">":"\u2605":f?" ":"\u2606",x=P===a?` \x1B[7m${S.bold}${E} ${v.label}${S.reset}`:` ${E} ${v.label}`;process.stdout.write(x+`\x1B[K
|
|
23
|
+
`)}),process.stdout.write("\x1B[J")},p=()=>{if(c){if(c=!1,process.stdin.isTTY)try{process.stdin.setRawMode(!1)}catch{}process.stdin.removeListener("keypress",d),process.stdin.pause()}},d=(w,v)=>{!c||!v||(v.name==="up"?(a=(a-1+n.length)%n.length,u()):v.name==="down"?(a=(a+1)%n.length,u()):v.name==="return"?(p(),s(a)):v.name==="escape"?(p(),s(-1)):v.ctrl&&v.name==="c"&&(p(),i&&i(),process.exit(0)))};if(process.stdin.removeAllListeners("keypress"),Rr.default.emitKeypressEvents(process.stdin),process.stdin.isTTY)try{process.stdin.setRawMode(!0)}catch{s(-1);return}process.stdin.on("keypress",d),process.stdin.resume(),u(),t&&t(u,()=>{c&&(p(),s(-2))})})}function mo(e){return new Promise(n=>{if(process.stdin.removeAllListeners("keypress"),process.stdin.isTTY)try{process.stdin.setRawMode(!1)}catch{}if(process.stdin.pause(),process.stdout.write(`${e} (y/N): `),Rr.default.emitKeypressEvents(process.stdin),process.stdin.isTTY)try{process.stdin.setRawMode(!0)}catch{}process.stdin.resume();let r=(o,t)=>{if(!t)return;if(process.stdin.removeListener("keypress",r),process.stdin.isTTY)try{process.stdin.setRawMode(!1)}catch{}process.stdin.pause(),t.ctrl&&t.name==="c"&&(process.stdout.write(`
|
|
24
24
|
`),process.exit(0));let i=(t.name||"").toLowerCase()==="y";process.stdout.write((i?"y":"n")+`
|
|
25
|
-
`),
|
|
25
|
+
`),n(i)};process.stdin.on("keypress",r)})}function es(e,n){return new Promise(r=>{let o=e?e.slice(0,8):"unknown",t=Vi(),i=process.stdin.listeners("keypress").slice();if(process.stdin.removeAllListeners("keypress"),process.stdin.isTTY)try{process.stdin.setRawMode(!1)}catch{}process.stdin.pause();let s=`${S.orange}${"\u2550".repeat(t)}${S.reset}`;if(process.stdout.write(`\x1B[2J\x1B[H
|
|
26
26
|
${s}
|
|
27
27
|
${S.orange}${S.bold} \u{1F514} New Device Connection${S.reset}
|
|
28
28
|
${s}
|
|
29
29
|
Device: ${S.cyan}${o}...${S.reset}
|
|
30
|
-
IP: ${S.cyan}${
|
|
30
|
+
IP: ${S.cyan}${n}${S.reset}
|
|
31
31
|
${s}
|
|
32
32
|
|
|
33
|
-
Allow this device? ${S.dim}(y/n)${S.reset} `),
|
|
33
|
+
Allow this device? ${S.dim}(y/n)${S.reset} `),Rr.default.emitKeypressEvents(process.stdin),process.stdin.isTTY)try{process.stdin.setRawMode(!0)}catch{}process.stdin.resume();let a=()=>{for(let l of i)process.stdin.on("keypress",l);if(i.length>0){if(process.stdin.isTTY)try{process.stdin.setRawMode(!0)}catch{}process.stdin.resume()}},c=(l,f)=>{if(!f)return;let u=(f.name||"").toLowerCase(),p=u==="y"||f.name==="return",d=u==="n"||f.name==="escape",m=f.ctrl&&f.name==="c";if(!p&&!d&&!m)return;try{if(process.stdin.removeListener("keypress",c),process.stdin.isTTY)try{process.stdin.setRawMode(!1)}catch{}process.stdin.pause()}catch{}m&&process.exit(0);let w=p,v=w?`${S.green}y${S.reset}
|
|
34
34
|
|
|
35
35
|
${S.green}\u2713 Device approved${S.reset}
|
|
36
36
|
`:`${S.red}n${S.reset}
|
|
37
37
|
|
|
38
38
|
${S.red}\u2717 Device rejected${S.reset}
|
|
39
|
-
`;process.stdout.write(v),setTimeout(()=>{try{a()}catch{}
|
|
40
|
-
`);f=p.pop();let d="";for(let m of p)if(m.startsWith("data: "))d=m.slice(6);else if(m===""&&d){try{let w=JSON.parse(d);Promise.resolve(
|
|
39
|
+
`;process.stdout.write(v),setTimeout(()=>{try{a()}catch{}r(w)},500)};process.stdin.on("keypress",c)})}function ts(e,n){let r=null,o=!1,t=null,i=45e3,s=()=>{t&&clearTimeout(t),t=setTimeout(()=>{try{r?.destroy()}catch{}},i)},a=async()=>{if(o)return;let c=await sn();r=Gi.default.get(`http://${c}:${e}/api/ui/events`,l=>{let f="";s(),l.on("data",u=>{s(),f+=u.toString();let p=f.split(`
|
|
40
|
+
`);f=p.pop();let d="";for(let m of p)if(m.startsWith("data: "))d=m.slice(6);else if(m===""&&d){try{let w=JSON.parse(d);Promise.resolve(n(w.type,w)).catch(()=>{})}catch{}d=""}}),l.on("end",()=>{t&&clearTimeout(t),o||setTimeout(a,Re(ge.sse,1))})}),r.on("error",()=>{t&&clearTimeout(t),o||setTimeout(a,Re(ge.sse,1))})};return a(),()=>{o=!0,t&&clearTimeout(t),r?.destroy()}}var ho=Number(process.env.NREMOTE_LOCAL_API_PORT)||$,go=!1;function rs(e){go=e}var Yn=null;async function sn(){if(Yn)return Yn;let e=o=>fetch(`http://${o}:${ho}/api/health`,{signal:AbortSignal.timeout(2e3)}).then(t=>t.ok?o:Promise.reject()),r=(await Promise.allSettled(["localhost","127.0.0.1"].map(e))).map((o,t)=>o.status==="fulfilled"?["localhost","127.0.0.1"][t]:null);return Yn=r.find(o=>o==="localhost")||r.find(Boolean)||null,Yn||"127.0.0.1"}function os(){Yn=null}async function q(e,n){let r=await sn();try{return await fetch(`http://${r}:${ho}${e}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(n)})}catch{return os(),null}}async function te(e){let n=await sn();try{let r=await fetch(`http://${n}:${ho}${e}`);return r.ok?await r.json():null}catch{return os(),null}}async function j(e){await q("/api/ui/state",e)}async function L(e,n={}){go&&zi(e-1,e>O.PREPARING),await j({step:e,stepDesc:"",...n})}function Pr({phase:e,percent:n}){let r=e==="download"?`Downloading tunnel binary ${n??0}%`:"Extracting tunnel binary";go&&on(r),j({stepDesc:r})}async function X(){return!!await te("/api/health")}async function yo(){let[e,n,r,o]=await Promise.all([te("/api/ui/state"),te("/api/device/auto-approve"),te("/api/autostart"),te("/api/sleep-inhibit")]);return{desktopEnabled:!!e?.desktopEnabled,remoteAvailable:!!e?.remoteAvailable,autoApprove:!!n?.enabled,autoStart:!!r?.enabled,sleepInhibitMode:o?.mode||"never",sleepInhibitActive:!!o?.active,sleepInhibitPresets:Array.isArray(o?.presets)?o.presets:[]}}function is(){let e=ns.default.networkInterfaces();for(let n of Object.values(e))for(let r of n)if(r.family==="IPv4"&&!r.internal)return r.address;return null}var ss=(e=0)=>n=>`\x1B[${n+e}m`,as=(e=0)=>n=>`\x1B[${38+e};5;${n}m`,cs=(e=0)=>(n,r,o)=>`\x1B[${38+e};2;${n};${r};${o}m`,K={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}},jf=Object.keys(K.modifier),zc=Object.keys(K.color),Zc=Object.keys(K.bgColor),Wf=[...zc,...Zc];function el(){let e=new Map;for(let[n,r]of Object.entries(K)){for(let[o,t]of Object.entries(r))K[o]={open:`\x1B[${t[0]}m`,close:`\x1B[${t[1]}m`},r[o]=K[o],e.set(t[0],t[1]);Object.defineProperty(K,n,{value:r,enumerable:!1})}return Object.defineProperty(K,"codes",{value:e,enumerable:!1}),K.color.close="\x1B[39m",K.bgColor.close="\x1B[49m",K.color.ansi=ss(),K.color.ansi256=as(),K.color.ansi16m=cs(),K.bgColor.ansi=ss(10),K.bgColor.ansi256=as(10),K.bgColor.ansi16m=cs(10),Object.defineProperties(K,{rgbToAnsi256:{value(n,r,o){return n===r&&r===o?n<8?16:n>248?231:Math.round((n-8)/247*24)+232:16+36*Math.round(n/255*5)+6*Math.round(r/255*5)+Math.round(o/255*5)},enumerable:!1},hexToRgb:{value(n){let r=/[a-f\d]{6}|[a-f\d]{3}/i.exec(n.toString(16));if(!r)return[0,0,0];let[o]=r;o.length===3&&(o=[...o].map(i=>i+i).join(""));let t=Number.parseInt(o,16);return[t>>16&255,t>>8&255,t&255]},enumerable:!1},hexToAnsi256:{value:n=>K.rgbToAnsi256(...K.hexToRgb(n)),enumerable:!1},ansi256ToAnsi:{value(n){if(n<8)return 30+n;if(n<16)return 90+(n-8);let r,o,t;if(n>=232)r=((n-232)*10+8)/255,o=r,t=r;else{n-=16;let a=n%36;r=Math.floor(n/36)/5,o=Math.floor(a/6)/5,t=a%6/5}let i=Math.max(r,o,t)*2;if(i===0)return 30;let s=30+(Math.round(t)<<2|Math.round(o)<<1|Math.round(r));return i===2&&(s+=60),s},enumerable:!1},rgbToAnsi:{value:(n,r,o)=>K.ansi256ToAnsi(K.rgbToAnsi256(n,r,o)),enumerable:!1},hexToAnsi:{value:n=>K.ansi256ToAnsi(K.hexToAnsi256(n)),enumerable:!1}}),K}var tl=el(),Pe=tl;var Or=A(require("node:process"),1),us=A(require("node:os"),1),wo=A(require("node:tty"),1);function be(e,n=globalThis.Deno?globalThis.Deno.args:Or.default.argv){let r=e.startsWith("-")?"":e.length===1?"-":"--",o=n.indexOf(r+e),t=n.indexOf("--");return o!==-1&&(t===-1||o<t)}var{env:H}=Or.default,$r;be("no-color")||be("no-colors")||be("color=false")||be("color=never")?$r=0:(be("color")||be("colors")||be("color=true")||be("color=always"))&&($r=1);function nl(){if("FORCE_COLOR"in H)return H.FORCE_COLOR==="true"?1:H.FORCE_COLOR==="false"?0:H.FORCE_COLOR.length===0?1:Math.min(Number.parseInt(H.FORCE_COLOR,10),3)}function rl(e){return e===0?!1:{level:e,hasBasic:!0,has256:e>=2,has16m:e>=3}}function ol(e,{streamIsTTY:n,sniffFlags:r=!0}={}){let o=nl();o!==void 0&&($r=o);let t=r?$r:o;if(t===0)return 0;if(r){if(be("color=16m")||be("color=full")||be("color=truecolor"))return 3;if(be("color=256"))return 2}if("TF_BUILD"in H&&"AGENT_NAME"in H)return 1;if(e&&!n&&t===void 0)return 0;let i=t||0;if(H.TERM==="dumb")return i;if(Or.default.platform==="win32"){let s=us.default.release().split(".");return Number(s[0])>=10&&Number(s[2])>=10586?Number(s[2])>=14931?3:2:1}if("CI"in H)return["GITHUB_ACTIONS","GITEA_ACTIONS","CIRCLECI"].some(s=>s in H)?3:["TRAVIS","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some(s=>s in H)||H.CI_NAME==="codeship"?1:i;if("TEAMCITY_VERSION"in H)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(H.TEAMCITY_VERSION)?1:0;if(H.COLORTERM==="truecolor"||H.TERM==="xterm-kitty"||H.TERM==="xterm-ghostty"||H.TERM==="wezterm")return 3;if("TERM_PROGRAM"in H){let s=Number.parseInt((H.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(H.TERM_PROGRAM){case"iTerm.app":return s>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(H.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(H.TERM)||"COLORTERM"in H?1:i}function ls(e,n={}){let r=ol(e,{streamIsTTY:e&&e.isTTY,...n});return rl(r)}var il={stdout:ls({isTTY:wo.default.isatty(1)}),stderr:ls({isTTY:wo.default.isatty(2)})},fs=il;function ps(e,n,r){let o=e.indexOf(n);if(o===-1)return e;let t=n.length,i=0,s="";do s+=e.slice(i,o)+n+r,i=o+t,o=e.indexOf(n,i);while(o!==-1);return s+=e.slice(i),s}function ds(e,n,r,o){let t=0,i="";do{let s=e[o-1]==="\r";i+=e.slice(t,s?o-1:o)+n+(s?`\r
|
|
41
41
|
`:`
|
|
42
|
-
`)+
|
|
43
|
-
`,t)}while(o!==-1);return i+=e.slice(t),i}var{stdout:ms,stderr:hs}=fs,vo=Symbol("GENERATOR"),an=Symbol("STYLER"),qn=Symbol("IS_EMPTY"),gs=["ansi","ansi","ansi256","ansi16m"],cn=Object.create(null),sl=(e,
|
|
44
|
-
`);return i!==-1&&(
|
|
45
|
-
`),(0,_t.execFile)("wscript.exe",[i],{windowsHide:!0}).unref?.(),null}let o=(0,_t.spawn)(
|
|
42
|
+
`)+r,t=o+1,o=e.indexOf(`
|
|
43
|
+
`,t)}while(o!==-1);return i+=e.slice(t),i}var{stdout:ms,stderr:hs}=fs,vo=Symbol("GENERATOR"),an=Symbol("STYLER"),qn=Symbol("IS_EMPTY"),gs=["ansi","ansi","ansi256","ansi16m"],cn=Object.create(null),sl=(e,n={})=>{if(n.level&&!(Number.isInteger(n.level)&&n.level>=0&&n.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let r=ms?ms.level:0;e.level=n.level===void 0?r:n.level};var al=e=>{let n=(...r)=>r.join(" ");return sl(n,e),Object.setPrototypeOf(n,Xn.prototype),n};function Xn(e){return al(e)}Object.setPrototypeOf(Xn.prototype,Function.prototype);for(let[e,n]of Object.entries(Pe))cn[e]={get(){let r=Ir(this,Eo(n.open,n.close,this[an]),this[qn]);return Object.defineProperty(this,e,{value:r}),r}};cn.visible={get(){let e=Ir(this,this[an],!0);return Object.defineProperty(this,"visible",{value:e}),e}};var bo=(e,n,r,...o)=>e==="rgb"?n==="ansi16m"?Pe[r].ansi16m(...o):n==="ansi256"?Pe[r].ansi256(Pe.rgbToAnsi256(...o)):Pe[r].ansi(Pe.rgbToAnsi(...o)):e==="hex"?bo("rgb",n,r,...Pe.hexToRgb(...o)):Pe[r][e](...o),cl=["rgb","hex","ansi256"];for(let e of cl){cn[e]={get(){let{level:r}=this;return function(...o){let t=Eo(bo(e,gs[r],"color",...o),Pe.color.close,this[an]);return Ir(this,t,this[qn])}}};let n="bg"+e[0].toUpperCase()+e.slice(1);cn[n]={get(){let{level:r}=this;return function(...o){let t=Eo(bo(e,gs[r],"bgColor",...o),Pe.bgColor.close,this[an]);return Ir(this,t,this[qn])}}}}var ll=Object.defineProperties(()=>{},{...cn,level:{enumerable:!0,get(){return this[vo].level},set(e){this[vo].level=e}}}),Eo=(e,n,r)=>{let o,t;return r===void 0?(o=e,t=n):(o=r.openAll+e,t=n+r.closeAll),{open:e,close:n,openAll:o,closeAll:t,parent:r}},Ir=(e,n,r)=>{let o=(...t)=>ul(o,t.length===1?""+t[0]:t.join(" "));return Object.setPrototypeOf(o,ll),o[vo]=e,o[an]=n,o[qn]=r,o},ul=(e,n)=>{if(e.level<=0||!n)return e[qn]?"":n;let r=e[an];if(r===void 0)return n;let{openAll:o,closeAll:t}=r;if(n.includes("\x1B"))for(;r!==void 0;)n=ps(n,r.close,r.open),r=r.parent;let i=n.indexOf(`
|
|
44
|
+
`);return i!==-1&&(n=ds(n,t,o,i)),o+n+t};Object.defineProperties(Xn.prototype,cn);var fl=Xn(),Qf=Xn({level:hs?hs.level:0});var h=fl;var ep=process.env.NODE_ENV==="development";var I=process.env.NREMOTE_WORKER_URL||"https://9remote.cc",ys=3e4,ws=500,So=300,$e={cmdMs:1e3,pendingApprovalMs:3e3,statsMs:5e3,serverReadyIntervalMs:200,serverReadyTimeoutMs:5e3,bgServerReadyTimeoutMs:15e3,bgServerReadyIntervalMs:300},ft={intervalMs:2e3,timeoutMs:12e4,fetchTimeoutMs:5e3,dnsTimeoutMs:2e3,maxLogEntries:80,postReadyHoldMs:2e3},ie={killCloudflaredMs:500,killCloudflaredTuiMs:300,serverBootMs:2e3,guestRecheckMs:3e3,trayReadyMs:1e3,postReadyHoldMs:2e3,bgSpawnFlushMs:400};var Ve={maxLogLines:200,headerWidth:44},Ye={checkIntervalMs:36e5,connectCheckDebounceMs:9e5,maxRetry:3,retryDelayMs:3e3,verifyTimeoutMs:15e3,lockTtlMs:3e5,lockFile:"update.lock",gateTimeoutMs:6e4},vs=5e3,To=12e4;var _r=1500,bs=2,Es=3e4,me={orange:h.rgb(230,138,110),orangeDim:h.rgb(200,120,95)};function Ss(){return process.env.CODESPACES==="true"}var pl=xo.default.dirname((0,xs.fileURLToPath)(__importMetaUrl));async function pt(){let e=await Xt();if(Ss()&&process.env.NREMOTE_API_KEY)return We(e,process.env.NREMOTE_API_KEY,"Codespace");let n=Kn();if(n.key)Ai(n.key)&&(n=await dl(e,n));else{let r=kt(e);n=We(e,r,"Default")}return n}async function dl(e,n){if(await X())return n;let r=kt(e);if(Y().remoteEnabled===!1)return We(e,r,n.name||"Default");await Pt(r,I,null,n.key);let o=Kn();return oo(o.key)?o:We(e,r,n.name||"Default")}function De(){return"3.0.40"}var z=require("fs"),Cs=require("url"),un=require("child_process"),Ee=A(require("path"),1),dt=A(require("os"),1);var ln=A(require("fs"),1),Ao=A(require("path"),1),As=A(require("os"),1),ks=require("child_process"),Lr=Ao.default.join(As.default.homedir(),".9remote","pids");function ml(){try{ln.default.existsSync(Lr)||ln.default.mkdirSync(Lr,{recursive:!0})}catch{}}function ko(e){return Ao.default.join(Lr,`${e}.pid`)}function Be(e,n){if(n)try{ml(),ln.default.writeFileSync(ko(e),String(n))}catch{}}function Jn(e){try{let n=ln.default.readFileSync(ko(e),"utf8").trim(),r=parseInt(n,10);return Number.isFinite(r)&&r>0?r:null}catch{return null}}function qe(e){try{ln.default.unlinkSync(ko(e))}catch{}}function Ro(e){if(!e)return!1;try{return process.kill(e,0),!0}catch{return!1}}function hl(e){let n=Jn(e);if(qe(e),!n)return!1;try{process.platform==="win32"?(0,ks.execSync)(`taskkill /F /T /PID ${n}`,{stdio:"ignore",windowsHide:!0}):process.kill(n,"SIGKILL")}catch{}return!0}var gl=["cloudflared","agent"];function Rs(){for(let e of gl)hl(e)}function Ps(){return Lr}var _t=require("child_process"),B=require("fs"),Ot=require("path"),$o=A(require("os"),1),It=A(require("path"),1),Os=require("url");var Cr=(0,Ot.join)(V.LOGS,"autostart.log"),Mr="cc.9remote.agent",Nr="9Remote",Dr=["--tray","--skip-update","--start"],Qn=$o.default.homedir(),$s=It.default.dirname((0,Os.fileURLToPath)(__importMetaUrl)),se={darwin:(0,Ot.join)(Qn,"Library","LaunchAgents",`${Mr}.plist`),linux:(0,Ot.join)(Qn,".config","autostart",`${Mr}.desktop`),linuxSystemd:(0,Ot.join)(Qn,".config","systemd","user",`${Mr}.service`),win:(0,Ot.join)(process.env.APPDATA||"","Microsoft","Windows","Start Menu","Programs","Startup",`${Nr}.vbs`)};function Xe(){for(let e=$s,n=null;e!==n;n=e,e=It.default.dirname(e)){let r=It.default.join(e,"package.json");if((0,B.existsSync)(r)){try{let o=JSON.parse((0,B.readFileSync)(r,"utf8"));if(o.name!==ee)continue;let t=typeof o.bin=="string"?o.bin:o.bin?.[ee];if(t){let i=It.default.resolve(e,t);if((0,B.existsSync)(i))return i}}catch{}break}}return process.argv[1]||It.default.resolve($s,"..","index.js")}function Oe(){return process.execPath}function Oo(){return process.versions.electron?"env ELECTRON_RUN_AS_NODE=1 ":""}function Is(e){let n=Oe(),r=Xe();if(process.platform==="win32"){let t=e.join(" "),i=(0,Ot.join)($o.default.tmpdir(),`${ee}-launch.vbs`);return(0,B.writeFileSync)(i,`CreateObject("WScript.Shell").Run """${n}"" ""${r}"" ${t}", 0, False
|
|
45
|
+
`),(0,_t.execFile)("wscript.exe",[i],{windowsHide:!0}).unref?.(),null}let o=(0,_t.spawn)(n,[r,...e],{detached:!0,stdio:"ignore"});return o.unref(),o.pid||null}function _s(){let e=It.default.dirname(Oe()),n=["/usr/local/bin","/usr/bin","/bin","/usr/sbin","/sbin","/opt/homebrew/bin"];return n.includes(e)||n.unshift(e),n.join(":")}function Po(e){return String(e).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}function yl(e,n){let r=[e,n,...Dr].map(o=>` <string>${Po(o)}</string>`).join(`
|
|
46
46
|
`);return`<?xml version="1.0" encoding="UTF-8"?>
|
|
47
47
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
48
48
|
<plist version="1.0">
|
|
49
49
|
<dict>
|
|
50
50
|
<key>Label</key>
|
|
51
|
-
<string>${
|
|
51
|
+
<string>${Mr}</string>
|
|
52
52
|
<key>ProgramArguments</key>
|
|
53
53
|
<array>
|
|
54
|
-
${
|
|
54
|
+
${r}
|
|
55
55
|
</array>
|
|
56
56
|
<key>RunAtLoad</key>
|
|
57
57
|
<true/>
|
|
@@ -65,22 +65,22 @@ ${n}
|
|
|
65
65
|
<string>${Po(Qn)}</string>
|
|
66
66
|
</dict>
|
|
67
67
|
<key>StandardOutPath</key>
|
|
68
|
-
<string>${
|
|
68
|
+
<string>${Cr}</string>
|
|
69
69
|
<key>StandardErrorPath</key>
|
|
70
|
-
<string>${
|
|
70
|
+
<string>${Cr}</string>
|
|
71
71
|
</dict>
|
|
72
72
|
</plist>
|
|
73
|
-
`}function wl(){return(0,B.existsSync)(se.darwin)}function vl(){let e=
|
|
73
|
+
`}function wl(){return(0,B.existsSync)(se.darwin)}function vl(){let e=Dr.join(" ");return`Set WshShell = CreateObject("WScript.Shell")
|
|
74
74
|
WshShell.Run """${Oe()}"" ""${Xe()}"" ${e}", 0, False
|
|
75
|
-
`}function bl(){try{(0,_t.execFileSync)("reg",["DELETE","HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run","/V",
|
|
75
|
+
`}function bl(){try{(0,_t.execFileSync)("reg",["DELETE","HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run","/V",Nr,"/F"],{windowsHide:!0,stdio:"ignore"})}catch{}}function El(){return(0,B.existsSync)(se.win)}function Sl(){let e=`${Oe()} ${Xe()} ${Dr.join(" ")}`;return`[Desktop Entry]
|
|
76
76
|
Type=Application
|
|
77
|
-
Name=${
|
|
77
|
+
Name=${Nr}
|
|
78
78
|
Exec=${e}
|
|
79
79
|
X-GNOME-Autostart-enabled=true
|
|
80
80
|
NoDisplay=false
|
|
81
81
|
Terminal=false
|
|
82
|
-
`}function Tl(){let e=
|
|
83
|
-
Description=${
|
|
82
|
+
`}function Tl(){let e=Dr.map(n=>`'${n}'`).join(" ");return`[Unit]
|
|
83
|
+
Description=${Nr} Host
|
|
84
84
|
After=network-online.target
|
|
85
85
|
Wants=network-online.target
|
|
86
86
|
|
|
@@ -91,14 +91,14 @@ Restart=always
|
|
|
91
91
|
RestartSec=10
|
|
92
92
|
Environment=PATH=${_s()}
|
|
93
93
|
Environment=HOME=${Qn}
|
|
94
|
-
StandardOutput=append:${
|
|
95
|
-
StandardError=append:${
|
|
94
|
+
StandardOutput=append:${Cr}
|
|
95
|
+
StandardError=append:${Cr}
|
|
96
96
|
|
|
97
97
|
[Install]
|
|
98
98
|
WantedBy=default.target
|
|
99
|
-
`}function xl(e){try{return(0,_t.execFileSync)("systemctl",["--user",...e],{stdio:"ignore"}),!0}catch{return!1}}function Al(){return(0,B.existsSync)(se.linux)||(0,B.existsSync)(se.linuxSystemd)}async function kl(){try{if(process.platform==="darwin")return wl();if(process.platform==="win32")return await El();if(process.platform==="linux")return Al()}catch{}return!1}async function Ls(){try{if(process.platform==="win32"&&bl(),!await kl())return!1;if(process.platform==="darwin"){let e=yl(Oe(),Xe());return((0,B.existsSync)(se.darwin)?(0,B.readFileSync)(se.darwin,"utf8"):"")===e?!1:((0,B.writeFileSync)(se.darwin,e),!0)}if(process.platform==="win32"){let e=vl();return((0,B.existsSync)(se.win)?(0,B.readFileSync)(se.win,"utf8"):"")===e?!1:((0,B.writeFileSync)(se.win,e),!0)}if(process.platform==="linux"){if((0,B.existsSync)(se.linuxSystemd)){let e=Tl();return(0,B.readFileSync)(se.linuxSystemd,"utf8")===e?!1:((0,B.writeFileSync)(se.linuxSystemd,e),xl(["daemon-reload"]),!0)}if((0,B.existsSync)(se.linux)){let e=Sl();return(0,B.readFileSync)(se.linux,"utf8")===e?!1:((0,B.writeFileSync)(se.linux,e),!0)}}}catch{}return!1}var Mt=F("update"),Rl=Ee.default.dirname((0,Cs.fileURLToPath)(__importMetaUrl)),Ns=(0,z.existsSync)("/.dockerenv"),Ds=8e3;var Lt=2208,Io=Ee.default.join(dt.default.homedir(),".9remote","cloudflared.pid");function Pl(){try{Rs()}catch{}try{if((0,z.existsSync)(Io)){let e=parseInt((0,z.readFileSync)(Io,"utf8"));if(Number.isFinite(e))try{process.kill(e)}catch{}try{(0,z.unlinkSync)(Io)}catch{}}}catch{}try{process.platform==="win32"?(0,un.execSync)(`for /f "tokens=5" %a in ('netstat -aon ^| findstr :${Lt}') do taskkill /F /PID %a`,{stdio:"ignore",windowsHide:!0}):(0,un.execSync)(`lsof -ti:${Lt} | xargs kill -9 2>/dev/null || true`,{stdio:"ignore"})}catch{}if(process.platform==="win32"){let e=Date.now()+1500;for(;Date.now()<e;);}}function Bs(){return"3.0.
|
|
99
|
+
`}function xl(e){try{return(0,_t.execFileSync)("systemctl",["--user",...e],{stdio:"ignore"}),!0}catch{return!1}}function Al(){return(0,B.existsSync)(se.linux)||(0,B.existsSync)(se.linuxSystemd)}async function kl(){try{if(process.platform==="darwin")return wl();if(process.platform==="win32")return await El();if(process.platform==="linux")return Al()}catch{}return!1}async function Ls(){try{if(process.platform==="win32"&&bl(),!await kl())return!1;if(process.platform==="darwin"){let e=yl(Oe(),Xe());return((0,B.existsSync)(se.darwin)?(0,B.readFileSync)(se.darwin,"utf8"):"")===e?!1:((0,B.writeFileSync)(se.darwin,e),!0)}if(process.platform==="win32"){let e=vl();return((0,B.existsSync)(se.win)?(0,B.readFileSync)(se.win,"utf8"):"")===e?!1:((0,B.writeFileSync)(se.win,e),!0)}if(process.platform==="linux"){if((0,B.existsSync)(se.linuxSystemd)){let e=Tl();return(0,B.readFileSync)(se.linuxSystemd,"utf8")===e?!1:((0,B.writeFileSync)(se.linuxSystemd,e),xl(["daemon-reload"]),!0)}if((0,B.existsSync)(se.linux)){let e=Sl();return(0,B.readFileSync)(se.linux,"utf8")===e?!1:((0,B.writeFileSync)(se.linux,e),!0)}}}catch{}return!1}var Mt=F("update"),Rl=Ee.default.dirname((0,Cs.fileURLToPath)(__importMetaUrl)),Ns=(0,z.existsSync)("/.dockerenv"),Ds=8e3;var Lt=2208,Io=Ee.default.join(dt.default.homedir(),".9remote","cloudflared.pid");function Pl(){try{Rs()}catch{}try{if((0,z.existsSync)(Io)){let e=parseInt((0,z.readFileSync)(Io,"utf8"));if(Number.isFinite(e))try{process.kill(e)}catch{}try{(0,z.unlinkSync)(Io)}catch{}}}catch{}try{process.platform==="win32"?(0,un.execSync)(`for /f "tokens=5" %a in ('netstat -aon ^| findstr :${Lt}') do taskkill /F /PID %a`,{stdio:"ignore",windowsHide:!0}):(0,un.execSync)(`lsof -ti:${Lt} | xargs kill -9 2>/dev/null || true`,{stdio:"ignore"})}catch{}if(process.platform==="win32"){let e=Date.now()+1500;for(;Date.now()<e;);}}function Bs(){return"3.0.40"}function Us(e,n){let r=e.split(".").map(Number),o=n.split(".").map(Number);for(let t=0;t<3;t++){if(o[t]>r[t])return!0;if(o[t]<r[t])return!1}return!1}function $l(){return process.env.CODESPACES==="true"||process.env.GITHUB_CODESPACES_PORT_FORWARDING_DOMAIN?"GitHub Codespaces":Ns?"Docker":null}function Br(){Pl()}async function Fs(){try{let e=Bs();if(!e)return null;let n=await W(to,{signal:AbortSignal.timeout(Ds)});if(!n.ok)return null;let{version:r}=await n.json();return r&&Us(e,r)?{current:e,latest:r}:null}catch{return null}}var Ct=Ee.default.join(V.STATE,Ye.lockFile);function Ol(){try{if((0,z.existsSync)(Ct)){let{pid:e,ts:n}=JSON.parse((0,z.readFileSync)(Ct,"utf8")),r=Date.now()-n<Ye.lockTtlMs,o=!1;try{process.kill(e,0),o=!0}catch{}if(r&&o)return!1}}catch{}try{(0,z.writeFileSync)(Ct,JSON.stringify({pid:process.pid,ts:Date.now()}))}catch{}return!0}async function Il(){try{let e=await W(to,{signal:AbortSignal.timeout(Ds)});if(!e.ok)return null;let{version:n}=await e.json();return n||null}catch{return null}}function Ks(){try{if(process.env.NREMOTE_REGISTRY)return`--registry ${new URL(process.env.NREMOTE_REGISTRY).origin}`}catch{}return""}function Hs(){let e=Xe(),n=Ee.default.sep,r=`${n}lib${n}node_modules${n}`,o=e.indexOf(r);return o>0?{global:"-g",prefix:`--prefix "${e.slice(0,o)}"`}:(o=e.indexOf(`${n}node_modules${n}`),o>0?{global:"",prefix:`--prefix "${e.slice(0,o)}"`}:{global:"-g",prefix:""})}function Ms(){let e=process.argv.slice(2).filter(t=>t!=="--skip-update"),r=e.includes("ui")||e.includes("start")||e.some(t=>["--tray","--auto","--start"].includes(t))?e.join(" "):"--tray";return`${r.includes("--start")||r.includes("start")?r:`${r} --start`} --skip-update`}function js(){let e=process.env.NREMOTE_NPM_CLI;return e&&(0,z.existsSync)(e)?process.platform==="win32"?`"${Oe()}" "${e}"`:`env ELECTRON_RUN_AS_NODE=1 "${Oe()}" "${e}"`:"npm"}function _l(e,n){let r=Ee.default.join(dt.default.tmpdir(),`${ee}-gate.cjs`),o=`const http = require("http");
|
|
100
100
|
const PORT = ${e};
|
|
101
|
-
const EXIT_MS = ${
|
|
101
|
+
const EXIT_MS = ${n};
|
|
102
102
|
const HTML = '<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>9Remote</title><style>body{margin:0;height:100vh;display:flex;align-items:center;justify-content:center;background:#101218;color:#c9ced6;font-family:system-ui,-apple-system,sans-serif}.spin{width:26px;height:26px;border:3px solid #2a2f3a;border-top-color:#e68a6e;border-radius:50%;animation:r 1s linear infinite;margin:0 auto 14px}@keyframes r{to{transform:rotate(360deg)}}</style></head><body><div><div class="spin"></div><div>9Remote is updating\u2026</div></div><script>setInterval(function(){fetch("/api/health",{cache:"no-store"}).then(function(r){if(r.ok)location.reload()}).catch(function(){})},1500)</script></body></html>';
|
|
103
103
|
function handler(req, res) {
|
|
104
104
|
if (req.url.startsWith("/api/health")) { res.writeHead(503, { "Content-Type": "text/plain" }); return res.end("updating"); }
|
|
@@ -115,14 +115,14 @@ function bind(host, attempt) {
|
|
|
115
115
|
bind("127.0.0.1", 0);
|
|
116
116
|
bind("::1", 0);
|
|
117
117
|
setTimeout(() => process.exit(0), EXIT_MS);
|
|
118
|
-
`;return(0,z.writeFileSync)(
|
|
118
|
+
`;return(0,z.writeFileSync)(r,o),r}function Ll({currentVersion:e,latest:n,agentPid:r}){let o=Ps(),t=Ks(),i=Oe(),s=_l(Lt,Ye.gateTimeoutMs),a=Oo(),c=Xe(),l=Ct,{global:f,prefix:u}=Hs(),p=`${f} --prefer-online --no-audit --no-fund ${t} ${u}`.trim(),d=js();if(process.platform==="win32"){let v=Ee.default.join(dt.default.tmpdir(),`${ee}-restart.vbs`),P=`@echo off
|
|
119
119
|
setlocal EnableDelayedExpansion
|
|
120
120
|
set "NODE=${i}"
|
|
121
121
|
set "CLI=${c}"
|
|
122
122
|
${process.env.NREMOTE_NPM_CLI?'set "ELECTRON_RUN_AS_NODE=1"':""}
|
|
123
123
|
|
|
124
124
|
:waitloop
|
|
125
|
-
tasklist /FI "PID eq ${
|
|
125
|
+
tasklist /FI "PID eq ${r}" 2>nul | find "${r}" >nul
|
|
126
126
|
if not errorlevel 1 (
|
|
127
127
|
timeout /t 1 /nobreak >nul
|
|
128
128
|
goto waitloop
|
|
@@ -164,7 +164,7 @@ for /f "usebackq tokens=* delims= " %%V in ("%VERFILE%") do (
|
|
|
164
164
|
:gotver
|
|
165
165
|
del /f /q "%VERFILE%" >nul 2>&1
|
|
166
166
|
if defined NEWVER set "NEWVER=!NEWVER: =!"
|
|
167
|
-
if not "!NEWVER!"=="${
|
|
167
|
+
if not "!NEWVER!"=="${n}" (
|
|
168
168
|
call ${d} install ${ee}@${e} ${p} >nul 2>&1
|
|
169
169
|
)
|
|
170
170
|
del /f /q "${l}" >nul 2>&1
|
|
@@ -179,7 +179,7 @@ exit /b 0
|
|
|
179
179
|
`);let x=Ee.default.join(dt.default.tmpdir(),`${ee}-update.vbs`);return(0,z.writeFileSync)(x,`CreateObject("WScript.Shell").Run "cmd /c ""${E}""", 0, False
|
|
180
180
|
`),{shellCmd:["wscript.exe",[x]],windowsVerbatim:!1}}let m=`#!/bin/bash
|
|
181
181
|
# Wait for agent to exit so it releases the cli.cjs file lock
|
|
182
|
-
while kill -0 ${
|
|
182
|
+
while kill -0 ${r} 2>/dev/null; do sleep 1; done
|
|
183
183
|
|
|
184
184
|
# Kill tracked PIDs only (never ptyDaemon \u2192 sessions survive)
|
|
185
185
|
for name in cloudflared agent; do
|
|
@@ -210,8 +210,8 @@ done
|
|
|
210
210
|
# Verify version == latest; roll back if the new binary is broken/wrong (R2)
|
|
211
211
|
# Take first line + strip ANSI escapes so trailing cursor codes don't corrupt compare
|
|
212
212
|
NEWVER=$(${a}"${i}" "${c}" --version 2>/dev/null | head -1 | sed 's/\x1B[[0-9;?]*[a-zA-Z]//g' | tr -d '[:space:]')
|
|
213
|
-
if [ "$NEWVER" != "${
|
|
214
|
-
echo "Verify failed (got $NEWVER, want ${
|
|
213
|
+
if [ "$NEWVER" != "${n}" ]; then
|
|
214
|
+
echo "Verify failed (got $NEWVER, want ${n}), rolling back to ${e}..."
|
|
215
215
|
${d} install ${ee}@${e} ${p} || true
|
|
216
216
|
fi
|
|
217
217
|
|
|
@@ -222,10 +222,10 @@ sleep 1
|
|
|
222
222
|
rm -f "${l}"
|
|
223
223
|
${process.env.NREMOTE_REGISTRY?`export NREMOTE_REGISTRY="${process.env.NREMOTE_REGISTRY}"
|
|
224
224
|
`:""}${a}"${i}" "${c}" ${Ms()}
|
|
225
|
-
`,w=Ee.default.join(dt.default.tmpdir(),`${ee}-update.sh`);return(0,z.writeFileSync)(w,m,{mode:493}),{shellCmd:["sh",[w]],windowsVerbatim:!1}}async function Ws(e){let
|
|
225
|
+
`,w=Ee.default.join(dt.default.tmpdir(),`${ee}-update.sh`);return(0,z.writeFileSync)(w,m,{mode:493}),{shellCmd:["sh",[w]],windowsVerbatim:!1}}async function Ws(e){let n=await Il();return n?Us(e,n)?Ol()?n:(Mt.warn("update skipped: lock held by another run"),null):(Mt.info(`update skipped: ${e} >= registry ${n}`),null):(Mt.warn("update skipped: registry unreachable"),null)}function Ml({currentVersion:e,latest:n,agentPid:r}){let{global:o,prefix:t}=Hs(),i=`${o} --prefer-online --no-audit --no-fund ${Ks()} ${t}`.trim(),s=js(),a=Oe(),c=Oo(),l=Xe(),f=`#!/bin/bash
|
|
226
226
|
LOG_DIR="$(dirname "${Ct}")"; mkdir -p "$LOG_DIR"
|
|
227
227
|
exec >>"$LOG_DIR/update-script.log" 2>&1
|
|
228
|
-
echo "=== $(date -u +%FT%TZ) docker update ${e} -> ${
|
|
228
|
+
echo "=== $(date -u +%FT%TZ) docker update ${e} -> ${n} ==="
|
|
229
229
|
|
|
230
230
|
attempt=0
|
|
231
231
|
while [ $attempt -lt ${Ye.maxRetry} ]; do
|
|
@@ -238,54 +238,54 @@ while [ $attempt -lt ${Ye.maxRetry} ]; do
|
|
|
238
238
|
done
|
|
239
239
|
|
|
240
240
|
NEWVER=$(${c}"${a}" "${l}" --version 2>/dev/null | head -1 | sed 's/\x1B[[0-9;?]*[a-zA-Z]//g' | tr -d '[:space:]')
|
|
241
|
-
if [ "$NEWVER" != "${
|
|
242
|
-
echo "Verify failed (got $NEWVER, want ${
|
|
241
|
+
if [ "$NEWVER" != "${n}" ]; then
|
|
242
|
+
echo "Verify failed (got $NEWVER, want ${n}), rolling back to ${e}..."
|
|
243
243
|
${s} install ${ee}@${e} ${i} || true
|
|
244
244
|
rm -f "${Ct}"
|
|
245
245
|
exit 0
|
|
246
246
|
fi
|
|
247
247
|
|
|
248
248
|
rm -f "${Ct}"
|
|
249
|
-
kill -9 ${
|
|
250
|
-
`,u=Ee.default.join(dt.default.tmpdir(),`${ee}-update-docker.sh`);return(0,z.writeFileSync)(u,f,{mode:493}),u}async function Cl(e){let
|
|
251
|
-
`).find(c=>c.includes(
|
|
252
|
-
`,"utf8");let s=!1,a=()=>{if(!s){s=!0;try{G.default.rmSync(t,{recursive:!0,force:!0})}catch{}}},c=(0,ze.spawn)(o,["tunnel","--url",`http://localhost:${e}`,"--config",i,"--no-autoupdate","--protocol","http2"],{detached:!1,windowsHide:!0,stdio:["ignore","pipe","pipe"]});return Be("cloudflared",c.pid),gn=c.pid,or=!1,new Promise((l,f)=>{let u=!1,p=null,d="",m=setTimeout(()=>{if(!u){u=!0,a(),gn===c.pid&&(gn=null);try{c.kill("SIGKILL")}catch{}qe("cloudflared"),f(new Error("Quick tunnel timed out after 90s"))}},9e4),w=v=>{let P=v.toString();d+=P,d.length>4096&&(d=d.slice(-4096));let E=Zl(P);if(E){if(!u){u=!0,p=E,Se=E,bn=Date.now(),Qe=0,ar=0,yn=null,clearTimeout(m),a(),su(),ne.info(`tunnel ready: ${E}`),l({child:c,tunnelUrl:E});return}E!==p&&(ne.info(`URL rotated: ${E}`),p=E,Se=E,bn=Date.now(),Qe=0,ar=0,
|
|
253
|
-
`).slice(-5).join(" | ");gn=null,f(new Error(`cloudflared exited (code=${v}, signal=${P}) output: ${R||"(empty)"}`));return}x||ir(e,`quick tunnel exit code ${v}`)})})}function
|
|
254
|
-
`).flatMap(
|
|
255
|
-
`).map(o=>+o.trim()).filter(Boolean);for(let n of new Set(r))Kr(n)}catch{}}function le(){if(!Uo){Uo=!0;try{try{if(G.default.existsSync(Fo)){let r=parseInt(G.default.readFileSync(Fo,"utf8"));Number.isFinite(r)&&(or=!0,Kr(r)),G.default.unlinkSync(Fo)}}catch{}let e=Jn("cloudflared");or=!0,gn=null,e&&(Kr(e),qe("cloudflared")),ou($)}finally{setTimeout(()=>{Uo=!1},2e3)}}}function ca(){if(!Se)return!1;let e=Jn("cloudflared");return!!e&&Ro(e)}function la(){tr=0,vn=!1,sr=null,wn=null,Se=null,Qe=0,ar=0,yn=null,au()}var iu=/^(utun|awdl|llw|anpi|bridge|gif|stf|ipsec|ap|tun|tap|vmnet|veth|docker)/i;function na(){let e=gt.default.networkInterfaces(),r=[];for(let[n,o]of Object.entries(e))if(o&&!iu.test(n))for(let t of o)!t.internal&&t.family==="IPv4"&&r.push(`${n}:${t.address}`);return r.sort().join("|")}function su(){rr||(Fr=na(),Do=Date.now(),rr=setInterval(async()=>{try{let e=Date.now(),r=e-Do;if(Do=e,Ko||vn||!sr||wn==null)return;if(r>Wl){if(ne.info(`Sleep/wake detected (gap=${r}ms)`),Se){let s=!1;for(let a=0;a<3;a++){if((await pn(Se)).ok){s=!0;break}a<2&&await new Promise(l=>setTimeout(l,3e3))}if(s)return;ne.info("tunnel unresponsive after sleep \u2192 restarting")}Dt("unreachable"),le(),ir(wn,"woke from sleep");return}let n=na(),o=n!==Fr;Fr=n;let t=Jn("cloudflared"),i=!t||!Ro(t);if(!o&&!i){if(Se&&bn&&Date.now()-bn>ea&&e-ar>=Je.edgeProbeIntervalMs){ar=e;let s=await pn(Se);if(s.ok)Qe=0;else if(++Qe>=Je.edgeProbeFailureThreshold){let a=await Hl(Je.readyTimeoutMs);if(a>0){ne.info(`edge probe failing but cloudflared holds ${a} connection(s) \u2014 not restarting`),Qe=0;return}ne.warn(`tunnel unreachable but cloudflared alive \u2014 edge lost after ${Qe} probes (ready=${a??"unknown"}), restarting`),Qe=0,Dt("unreachable"),le(),ir(wn,"tunnel unreachable (edge lost)")}else ne.debug(`edge probe failed (${Qe}/${Je.edgeProbeFailureThreshold}) \u2014 ${s.dnsCode??s.httpStatus??"no response"}`)}return}if(o&&!i&&bn&&Date.now()-bn<ea||(o&&ne.info("Network change detected"),i&&ne.warn("cloudflared not alive \u2014 watchdog"),Dt("unreachable"),await new Promise(s=>setTimeout(s,Je.networkRestoreDelayMs)),!await ia()))return;if(o&&!i&&Se){let s=!1;for(let a=0;a<2;a++){if((await pn(Se)).ok){s=!0;break}a===0&&await new Promise(l=>setTimeout(l,2e3))}if(s){ne.info("Tunnel survived network change, skip restart");return}}o&&!i&&le(),ir(wn,o?"network change":"liveness watchdog")}catch(e){ne.error(`network monitor tick failed: ${e?.message||e}`)}},Je.networkCheckIntervalMs))}function au(){rr&&(clearInterval(rr),rr=null),Fr=null}Ft();async function yt(e,r={}){let n=r.intervalMs??ft.intervalMs,o=r.timeoutMs??ft.timeoutMs,t=`${e}/api/health`,i=(()=>{try{return new URL(e).hostname}catch{return null}})(),s=Date.now(),a=0,c=[];await j({healthCheck:{running:!0,timeoutMs:o,startedAt:s,logs:[]}});let l=f=>{c.push(f);let u=c.length>ft.maxLogEntries?c.slice(-ft.maxLogEntries):c;j({healthCheck:{running:!0,timeoutMs:o,startedAt:s,logs:u}})};for(;Date.now()-s<o;){if(a++,fn(),i){let u=await Lo(i,ft.dnsTimeoutMs);if(!u.ok){let p=u.code==="ENOTFOUND"||u.code==="ETIMEOUT"||u.code==="ESERVFAIL",d=p?"connecting...":u.code;on(`#${a} \u2192 ${d}`),l({attempt:a,status:d,elapsedMs:u.elapsedMs,ok:!1,waiting:p,time:Date.now()}),await new Promise(m=>setTimeout(m,n));continue}}let f=Date.now();try{let u=await W(t,{signal:AbortSignal.timeout(ft.fetchTimeoutMs)}),p=Date.now()-f;if(on(`#${a} \u2192 ${u.status}`),l({attempt:a,status:String(u.status),elapsedMs:p,ok:u.ok,time:Date.now()}),u.ok)return await j({healthCheck:{running:!1,timeoutMs:0,startedAt:null,logs:[]}}),await new Promise(d=>setTimeout(d,ft.postReadyHoldMs)),!0}catch(u){let p=Date.now()-f,d=u.cause?.code||u.code||u.message,m=d==="ENOTFOUND",w=m?"connecting...":d;on(`#${a} \u2192 ${w}`),l({attempt:a,status:w,elapsedMs:p,ok:!1,waiting:m,time:Date.now()})}await new Promise(u=>setTimeout(u,n))}return await j({healthCheck:{running:!1,timeoutMs:o,startedAt:s,logs:c}}),!1}var tt=F("tunnel"),Wo=null,ba=null,Ea=0;async function Kt(e,r){if(tt.debug(`updateTunnelUrl: key=${e?.slice(0,8)} url=${r}`),V().remoteEnabled===!1)return;if(Ht(e),r&&r===ba&&Date.now()-Ea<vs){tt.debug("updateTunnelUrl: skipped (debounce, same URL)");return}Wo&&(Wo.cancelled=!0);let n={cancelled:!1};Wo=n;let o=is();kr({config:ge.urlSync,label:`urlSync ${r}`,log:t=>tt.warn(t),ctx:n,task:async()=>{let t=await W(`${I}/api/session/update`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify((()=>{let s={apiKey:Q(e),tunnelUrl:r,localIp:o?`${o}:${$}`:null};return{...s,...Rt(s)}})())});if(n.cancelled)return!0;if(t.ok)return ba=r,Ea=Date.now(),tt.debug(`urlSync OK: pushed ${r} to server`),du(r),!0;let i=await t.text().catch(()=>"");return tt.warn(`urlSync HTTP ${t.status}: ${i.slice(0,200)}`),!1}}),r&&Js(r)}var An=null,kn=null,Go=!1,Yo=0;async function qo(e,r){let n={apiKey:e,online:r},o=await W(`${I}/api/session/heartbeat`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...n,...Rt(n)})});return o.ok||tt.warn(`heartbeat online=${r} HTTP ${o.status}`),o.ok}async function Vo(){if(!(Go||!kn)){Go=!0;try{await qo(kn,!0),Yo=Date.now()}catch(e){tt.debug(`heartbeat failed: ${e?.message||e}`)}finally{Go=!1}}}function Ht(e){let r=Q(e);if(r&&V().remoteEnabled!==!1){if(An&&kn===r){Date.now()-Yo>=To&&Vo();return}jr(),kn=r,Vo(),An=setInterval(Vo,To),An.unref?.()}}function jr({offline:e=!1}={}){An&&(clearInterval(An),An=null);let r=kn;return kn=null,Yo=0,!e||!r?null:qo(r,!1).catch(n=>tt.debug(`goodbye failed: ${n?.message||n}`))}function wt(e){let r=Q(e);if(!r)return Promise.resolve(!1);jr();let n=qo(r,!1).catch(o=>(tt.debug(`offline mark failed: ${o?.message||o}`),!1));return Promise.race([n,new Promise(o=>setTimeout(()=>o(!1),Lr))])}var ur=null;async function du(e){if(ur?.url===e)return;let r={url:e};ur=r,Qs();try{let n=await yt(e,{timeoutMs:Es});if(ur!==r)return;n&&Dt("healthy")}catch{}finally{ur===r&&(ur=null),zs()}}var nt=F("server"),Aa=pr.default.dirname((0,xa.fileURLToPath)(__importMetaUrl)),mu=pr.default.resolve(Aa,"./server.cjs"),Sa=pr.default.resolve(Aa,"../../index.js");function Wr(e){try{process.platform==="win32"?(0,fr.execSync)(`for /f "tokens=5" %a in ('netstat -aon ^| findstr :${e}') do taskkill /F /PID %a`,{stdio:"ignore",windowsHide:!0}):(0,fr.execSync)(`lsof -ti:${e} | xargs kill -9 2>/dev/null || true`,{stdio:"ignore"})}catch{}}function vt(e,r,n){let o=null,t=!1,i=!1,s=!0,a=0,c=null,l=()=>{s&&(Wr($),s=!1);let f=process.env.NODE_ENV==="development"&&Xo.default.existsSync(Sa),u=f?Sa:mu;Xo.default.existsSync(u)||(nt.error(`Server not found: ${u}`),process.exit(1));let p={...process.env,PORT:String($)};f||delete p.NODE_ENV,o=(0,fr.spawn)(pi,[u],{cwd:pr.default.dirname(u),stdio:["ignore","inherit","inherit"],detached:!1,windowsHide:!0,env:di(p)}),c&&clearTimeout(c),c=setTimeout(()=>{a=0},ys),o.on("exit",(d,m)=>{if(c&&(clearTimeout(c),c=null),t)return;if(i){i=!1,nt.info("Restarting server (requested)..."),setTimeout(()=>{l(),n?.()},500);return}nt.error(`Server exited unexpectedly (code: ${d}, signal: ${m})`),a++;let w=Re(ge.server,a);nt.warn(`Restarting server in ${w}ms (fail#${a})`),r&&r(),setTimeout(()=>{l(),n?.()},w)}),o.on("error",d=>{nt.error(`Server error: ${d.message}`)}),e?.(o)};return l(),{getProcess:()=>o,shutdown:()=>{if(t=!0,!!o){try{o.kill("SIGTERM")}catch{}setTimeout(()=>{try{o&&o.kill("SIGKILL")}catch{}},2e3)}},restart:()=>{if(!o)return!1;i=!0;try{o.kill("SIGTERM")}catch{}return setTimeout(()=>{try{o&&i&&o.kill("SIGKILL")}catch{}},2e3),!0}}}function ka(e){return e?.restart?e.restart():!1}function rt({serverManager:e,tunnelProcess:r,exit:n=!0,code:o=0}={}){try{er()}catch{}try{e?.shutdown?.()}catch{}try{r?.kill?.()}catch{}try{le()}catch{}try{Bt()}catch{}try{Wr($)}catch{}try{la()}catch{}try{Oi()}catch{}try{qe("agent")}catch{}try{qe("cloudflared")}catch{}let t=jr({offline:!0});if(n){let i=new Promise(a=>setTimeout(a,ws)),s=t?Promise.race([t,new Promise(a=>setTimeout(a,Lr))]):null;Promise.all([i,s]).finally(()=>process.exit(o))}}var Ta=!1;function bt(e,r){if(Ta)return;Ta=!0;let n=!1,o=t=>{n||(n=!0,nt.info(`Stopping 9Remote (${t})...`),rt({serverManager:e,tunnelProcess:r}),nt.info("Server stopped"))};if(process.on("SIGINT",()=>o("SIGINT")),process.on("SIGTERM",()=>o("SIGTERM")),process.on("SIGHUP",()=>o("SIGHUP")),process.platform==="win32"){process.on("SIGBREAK",()=>o("SIGBREAK"));try{import("readline").then(({createInterface:t})=>{t({input:process.stdin,output:process.stdout}).on("SIGINT",()=>o("SIGINT")),process.stdin.isTTY&&process.stdin.unref?.()}).catch(()=>{})}catch{}}process.on("uncaughtException",t=>{nt.error(`Uncaught exception: ${t?.stack||t?.message||t}`),o("uncaughtException"),setTimeout(()=>process.exit(1),So)}),process.on("unhandledRejection",t=>{nt.error(`Unhandled rejection: ${t?.stack||t?.message||t}`),o("unhandledRejection"),setTimeout(()=>process.exit(1),So)})}Ft();var jt=F("tunnel");async function hu(e,r,n,o){let t=0;for(;;){t++;try{return await Ze(e,r,n)}catch(i){let s=Re(ge.tunnelSpawn,t);jt.warn(`spawn attempt ${t} failed: ${i?.message||i} \u2014 retry in ${s}ms`),o?.({attempt:t,delay:s}),await new Promise(a=>setTimeout(a,s))}}}function ot({onUrlUpdate:e,setTunnel:r,onRetry:n}){return async o=>{try{let t=await hu(o,e,null,n);it(),r(t.child),await e(t.tunnelUrl),jt.info(`Tunnel restarted: ${t.tunnelUrl}`)}catch(t){jt.error(`Tunnel restart failed: ${t?.message||t}`)}}}var Gr=null;function it(){Gr&&(Gr.cancelled=!0,Gr=null)}function Rn(e,{onUrlUpdate:r,onRestart:n,setActiveTunnel:o,onReady:t}){it();let i={cancelled:!1};return Gr=i,kr({config:ge.tunnelRateLimit,task:async()=>{if(i.cancelled)return!0;if(ca())return jt.info("bg-tunnel: a tunnel is already live \u2014 standing down"),!0;let s=await Ze(e,r,n);if(i.cancelled){try{le()}catch{}return!0}try{o?.(s.child),await r?.(s.tunnelUrl),await t?.(s),jt.info(`bg tunnel up: ${s.tunnelUrl}`)}catch(a){jt.error(`bg tunnel post-spawn failed: ${a?.message||a}`)}return!0},label:"bg-tunnel",log:s=>jt.info(s),ctx:i}),i}var ti=A(Ja(),1);var xu=F("session");function Au(e,r="\u{1F4F1} Scan QR to connect:"){console.log(me.orange(`
|
|
256
|
-
${
|
|
257
|
-
`+
|
|
258
|
-
\u274C Failed to create one-time key \u2014 generate a new one from the menu`)),console.log(me.orange("\u2550".repeat(o))),console.log(h.white("App URL".padEnd(14))+h.gray(`${I}/login`)),console.log(h.white("Key".padEnd(14))+h.gray(e)),console.log(me.orange("\u2550".repeat(o)));return}let t=Gn(I,
|
|
249
|
+
kill -9 ${r} 2>/dev/null
|
|
250
|
+
`,u=Ee.default.join(dt.default.tmpdir(),`${ee}-update-docker.sh`);return(0,z.writeFileSync)(u,f,{mode:493}),u}async function Cl(e){let n=await Ws(e);if(!n)return!1;Mt.info(`update go (docker): ${e} -> ${n}`);let r=Ml({currentVersion:e,latest:n,agentPid:process.pid});return(0,un.spawn)("sh",[r],{detached:!0,stdio:"ignore"}).unref(),!0}async function Gs(){let e=Bs();if(!e)return Mt.warn("update skipped: no version (source run?)"),!1;if(Ns)return Cl(e);let n=$l();if(n)return Mt.warn(`update skipped: restricted env (${n})`),!1;let r=await Ws(e);if(!r)return!1;Mt.info(`update go: ${e} -> ${r}`);let{shellCmd:o,windowsVerbatim:t}=Ll({currentVersion:e,latest:r,agentPid:process.pid});return(0,un.spawn)(o[0],o[1],{detached:!0,stdio:"ignore",windowsHide:!0,windowsVerbatimArguments:t}).unref(),setTimeout(()=>process.exit(0),500),!0}var fr=require("child_process"),jr=A(require("path"),1),Xo=A(require("fs"),1),xa=require("url");var G=A(require("fs"),1),ht=A(require("path"),1),Ho=A(require("https"),1),gt=A(require("os"),1),ra=A(require("net"),1),ze=require("child_process");var Vs=A(require("dns"),1),Ys=require("child_process");var Nl=2e3,Dl=5e3,_o=new Vs.default.promises.Resolver;_o.setServers(["1.1.1.1","1.0.0.1","8.8.8.8"]);function fn(){process.platform==="win32"&&(0,Ys.execFile)("ipconfig",["/flushdns"],{windowsHide:!0},()=>{})}async function Lo(e,n=Nl){let r=Date.now();try{let o=async()=>{let[i,s]=await Promise.allSettled([_o.resolve4(e),_o.resolve6(e)]);if(i.status==="fulfilled"&&i.value?.length)return i.value;if(s.status==="fulfilled"&&s.value?.length)return s.value;throw i.reason||s.reason||Object.assign(new Error("DNS query failed"),{code:"ENOTFOUND"})};return{ok:!0,addrs:await Promise.race([o(),new Promise((i,s)=>setTimeout(()=>s(Object.assign(new Error("DNS timeout"),{code:"ETIMEOUT"})),n))]),elapsedMs:Date.now()-r}}catch(o){return{ok:!1,code:o.code||o.message,elapsedMs:Date.now()-r}}}async function pn(e,{flushDns:n=!1}={}){let r=Date.now(),o=null;try{o=new URL(e).hostname}catch{}if(n&&fn(),o){let t=await Lo(o);if(!t.ok)return fn(),{ok:!1,dnsCode:t.code,elapsedMs:Date.now()-r}}try{let t=await W(`${e}/api/health`,{signal:AbortSignal.timeout(Dl)});return{ok:t.ok,httpStatus:t.status,elapsedMs:Date.now()-r}}catch(t){return{ok:!1,dnsCode:t.cause?.code||t.code||t.message,elapsedMs:Date.now()-r}}}var Bl=F("tunnel"),zn=null,Zn=null,dn=null,Nt=null,mt=0,Co=!1;async function No(e){try{let n=await sn();await fetch(`http://${n}:${$}/api/ui/state`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)})}catch{}}var Mo=!1;async function qs(){if(!(!Zn||Co||Mo)){Mo=!0;try{await Ul()}finally{Mo=!1}}}async function Ul(){let e=await pn(Zn),n=e.ok?"healthy":"unreachable";if(n===dn){Nt=null,mt=0;return}if(n!==Nt){Nt=n,mt=1;return}mt++,!(mt<bs)&&(Bl.info(`${dn??"init"} \u2192 ${n}${e.ok?"":` (http=${e.httpStatus??"-"} dns=${e.dnsCode??"-"})`}`),dn=n,Nt=null,mt=0,await No({tunnelHealth:{status:n,checkedAt:Date.now()}}))}function Xs(e){if(!e)return er();e!==Zn&&(Zn=e,dn=null,Nt=null,mt=0,fn(),zn||(zn=setInterval(qs,yi.checkIntervalMs)),qs())}var Js=Xs,mn=Xs;function Qs(){Co=!0}function zs(){Co=!1}function Dt(e){dn=e,Nt=null,mt=0,No({tunnelHealth:{status:e,checkedAt:Date.now()}})}function er(){zn&&(clearInterval(zn),zn=null),Zn=null,dn=null,Nt=null,mt=0,No({tunnelHealth:{status:"unknown",checkedAt:null}})}var ne=F("tunnel"),Je={networkCheckIntervalMs:5e3,networkRestoreDelayMs:2500,internetCheckTimeoutMs:3e3,internetCheckHost:"1.1.1.1",internetCheckPort:443,edgeProbeIntervalMs:15e3,edgeProbeFailureThreshold:3,readyTimeoutMs:1500},Fl=[20241,20242,20243,20244,20245],yn=null;async function Kl(e,n){try{let o=await(await fetch(`http://localhost:${e}/ready`,{signal:AbortSignal.timeout(n)})).json();return typeof o?.readyConnections=="number"?o:null}catch{return null}}async function Zs(e,n){let r=await Kl(e,n);if(!r)return null;let o=await jl(e,n);return o&&Se&&!Se.includes(o)?null:r.readyConnections}async function Hl(e){if(yn!==null){let o=await Zs(yn,e);if(o!==null)return o;yn=null}let r=(await Promise.all(Fl.map(async o=>({port:o,conns:await Zs(o,e)})))).find(o=>o.conns!==null);return r?(yn=r.port,r.conns):null}async function jl(e,n){try{return(await(await fetch(`http://localhost:${e}/quicktunnel`,{signal:AbortSignal.timeout(n)})).json())?.hostname||null}catch{return null}}var Wl=3e4,Do=0,rr=null,Ur=null,wn=null,sr=null,vn=!1,tr=0,Ko=!1,Se=null,bn=0,Bo=0,Uo=!1,ar=0,Qe=0,ea=3e4,Gl=5e3,nr=ht.default.join(gt.default.homedir(),".9remote","bin"),ta="cloudflared",En=gt.default.platform()==="win32",Vl=En?`${ta}.exe`:ta,hn=ht.default.join(nr,Vl),Fo=ht.default.join(gt.default.homedir(),".9remote","cloudflared.pid"),or=!1,gn=null,Yl="2026.6.1",oa=`https://github.com/cloudflare/cloudflared/releases/download/${Yl}`;function ia(){return new Promise(e=>{let n=new ra.default.Socket,r=!1,o=t=>{if(!r){r=!0;try{n.destroy()}catch{}e(t)}};n.setTimeout(Je.internetCheckTimeoutMs),n.once("connect",()=>o(!0)),n.once("timeout",()=>o(!1)),n.once("error",()=>o(!1));try{n.connect(Je.internetCheckPort,Je.internetCheckHost)}catch{o(!1)}})}async function ql(){Ko=!0;try{let e=0;for(;;){if(e++,await ia())return;await new Promise(n=>setTimeout(n,Re(ge.internet,e)))}}finally{Ko=!1}}async function ir(e,n){if(!sr){ne.warn("No restartCallback registered \u2014 skip");return}if(!vn&&!(Date.now()-Bo<Gl)){Bo=Date.now(),vn=!0;try{await ql();let r=Re(ge.tunnelRestart,tr+1);await new Promise(o=>setTimeout(o,r)),await sr(e),tr=0,Bo=0}catch(r){tr++,ne.error(`restart failed (#${tr}): ${r?.message||r}`),setImmediate(()=>{vn=!1,ir(e,"retry after fail")});return}finally{vn=!1}}}var Xl={darwin:{x64:"cloudflared-darwin-amd64.tgz",arm64:"cloudflared-darwin-arm64.tgz"},win32:{x64:"cloudflared-windows-amd64.exe"},linux:{x64:"cloudflared-linux-amd64",arm64:"cloudflared-linux-arm64"}};function Jl(){let e=gt.default.platform(),n=gt.default.arch(),r=Xl[e];if(!r)throw new Error(`Unsupported platform: ${e}`);let o=r[n];if(!o)throw new Error(`Unsupported architecture: ${n} for platform ${e}`);return`${oa}/${o}`}var Ql=150;async function sa(e,n,r){return new Promise((o,t)=>{let i=G.default.createWriteStream(n);Ho.default.get(e,s=>{if([301,302].includes(s.statusCode)){i.close(),G.default.unlinkSync(n),sa(s.headers.location,n,r).then(o).catch(t);return}if(s.statusCode!==200){i.close(),G.default.unlinkSync(n),t(new Error(`Download failed with status ${s.statusCode}`));return}let a=parseInt(s.headers["content-length"]||"0",10),c=0,l=0,f=-1;s.on("data",u=>{if(c+=u.length,!r||!a)return;let p=Date.now(),d=Math.min(100,Math.floor(c/a*100));d!==f&&p-l>=Ql&&(l=p,f=d,r(d))}),s.pipe(i),i.on("finish",()=>{r&&a&&r(100),i.close(()=>o(n))}),i.on("error",u=>{i.close(),G.default.unlinkSync(n),t(u)})}).on("error",s=>{i.close(),G.default.existsSync(n)&&G.default.unlinkSync(n),t(s)})})}async function cr(e){if(G.default.existsSync(nr)||G.default.mkdirSync(nr,{recursive:!0}),G.default.existsSync(hn))return En||G.default.chmodSync(hn,"755"),hn;let n=Jl(),r=n.endsWith(".tgz"),o=r?ht.default.join(nr,"cloudflared.tgz"):hn;try{return e?.({phase:"download",percent:0}),await sa(n,o,t=>{e?.({phase:"download",percent:t})}),await zl(n,o),r&&(e?.({phase:"extract"}),(0,ze.execSync)(`tar -xzf "${o}" -C "${nr}"`,{stdio:"pipe",windowsHide:!0}),G.default.unlinkSync(o)),En||G.default.chmodSync(hn,"755"),hn}catch(t){try{G.default.existsSync(o)&&G.default.unlinkSync(o)}catch{}throw console.error("Failed to download cloudflared:",t.message),t}}function aa(e){return new Promise((n,r)=>{Ho.default.get(e,o=>{if([301,302].includes(o.statusCode))return aa(o.headers.location).then(n).catch(r);if(o.statusCode!==200)return r(new Error(`HTTP ${o.statusCode}`));let t="";o.on("data",i=>t+=i),o.on("end",()=>n(t))}).on("error",r)})}async function zl(e,n){let r=ht.default.basename(e),o;try{o=await aa(`${oa}/sha256sum.txt`)}catch(c){ne.warn(`sha256 manifest unavailable (${c.message}), skipping verify`);return}let t=o.split(`
|
|
251
|
+
`).find(c=>c.includes(r));if(!t){ne.warn(`No sha256 entry for ${r}, skipping verify`);return}let i=t.trim().split(/\s+/)[0],{createHash:s}=await import("crypto"),a=s("sha256").update(G.default.readFileSync(n)).digest("hex");if(a!==i)throw new Error(`Integrity check failed: SHA256 mismatch (expected ${i}, got ${a})`)}function Zl(e){let n=/https:\/\/([a-z0-9-]+)\.trycloudflare\.com/gi,r=[];for(let o of e.matchAll(n))o[1]!=="api"&&r.push(`https://${o[1]}.trycloudflare.com`);return r.length?r[r.length-1]:null}async function Ze(e,n=null,r=null){let o=await cr();ru(o),r&&(sr=r),wn=e;let t=G.default.mkdtempSync(ht.default.join(gt.default.tmpdir(),"9remote-quick-")),i=ht.default.join(t,"config.yml");G.default.writeFileSync(i,`# quick-tunnel
|
|
252
|
+
`,"utf8");let s=!1,a=()=>{if(!s){s=!0;try{G.default.rmSync(t,{recursive:!0,force:!0})}catch{}}},c=(0,ze.spawn)(o,["tunnel","--url",`http://localhost:${e}`,"--config",i,"--no-autoupdate","--protocol","http2"],{detached:!1,windowsHide:!0,stdio:["ignore","pipe","pipe"]});return Be("cloudflared",c.pid),gn=c.pid,or=!1,new Promise((l,f)=>{let u=!1,p=null,d="",m=setTimeout(()=>{if(!u){u=!0,a(),gn===c.pid&&(gn=null);try{c.kill("SIGKILL")}catch{}qe("cloudflared"),f(new Error("Quick tunnel timed out after 90s"))}},9e4),w=v=>{let P=v.toString();d+=P,d.length>4096&&(d=d.slice(-4096));let E=Zl(P);if(E){if(!u){u=!0,p=E,Se=E,bn=Date.now(),Qe=0,ar=0,yn=null,clearTimeout(m),a(),su(),ne.info(`tunnel ready: ${E}`),l({child:c,tunnelUrl:E});return}E!==p&&(ne.info(`URL rotated: ${E}`),p=E,Se=E,bn=Date.now(),Qe=0,ar=0,n?.(E))}};c.stdout.on("data",w),c.stderr.on("data",w),c.on("error",v=>{u||(u=!0,clearTimeout(m),a(),f(v))}),c.on("exit",(v,P)=>{a();let E=gn!==c.pid,x=or||E;if(ne.info(`cloudflared exited (intentional=${or} superseded=${E})`),x||Dt("unreachable"),!u){u=!0,clearTimeout(m);let R=d.trim().split(`
|
|
253
|
+
`).slice(-5).join(" | ");gn=null,f(new Error(`cloudflared exited (code=${v}, signal=${P}) output: ${R||"(empty)"}`));return}x||ir(e,`quick tunnel exit code ${v}`)})})}function Fr(e){if(En)try{(0,ze.execSync)(`taskkill /PID ${e} /T /F`,{windowsHide:!0,stdio:"ignore"})}catch{}else try{process.kill(e,"SIGKILL")}catch{}}function eu(e){return e?e.split(`
|
|
254
|
+
`).flatMap(n=>{let r=n.match(/^\s*(\d+)\s+(.+)$/);return r?[{pid:Number(r[1]),args:r[2].trim()}]:[]}):[]}function tu(e,n){return Array.isArray(e)?e.filter(r=>{if(!r?.args||typeof r.pid!="number")return!1;let o=r.args.split(/\s+/);return o.includes(n)&&o.includes("tunnel")}).map(r=>r.pid):[]}function nu(e){try{let n=En?(0,ze.execSync)(`powershell -NoProfile -Command "Get-CimInstance Win32_Process -Filter 'Name=\\'cloudflared.exe\\'' | ForEach-Object { \\"$($_.ProcessId) $($_.CommandLine)\\"" }"`,{encoding:"utf8",windowsHide:!0,stdio:["ignore","pipe","ignore"]}):(0,ze.execSync)("ps -eo pid=,args=",{encoding:"utf8",stdio:["ignore","pipe","ignore"]});return tu(eu(n),e)}catch{return[]}}function ru(e){let n=nu(e);for(let r of n)r!==process.pid&&(ne.info(`killing leftover cloudflared pid=${r}`),Fr(r));return n}function ou(e){try{let n=[];if(En){let r=`Get-NetTCPConnection -LocalPort ${e} -State Established -ErrorAction SilentlyContinue | Where-Object { (Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue).Name -eq 'cloudflared' } | Select-Object -ExpandProperty OwningProcess -Unique`;n=(0,ze.execSync)(`powershell -NoProfile -Command "${r}"`,{encoding:"utf8",windowsHide:!0,stdio:["ignore","pipe","ignore"]}).split(/\r?\n/).map(t=>+t.trim()).filter(Boolean)}else n=(0,ze.execSync)(`lsof -nP -iTCP:${e} -sTCP:ESTABLISHED 2>/dev/null | awk '/cloudflar/ {print $2}' | sort -u`,{encoding:"utf8",stdio:["ignore","pipe","ignore"]}).split(`
|
|
255
|
+
`).map(o=>+o.trim()).filter(Boolean);for(let r of new Set(n))Fr(r)}catch{}}function ce(){if(!Uo){Uo=!0;try{try{if(G.default.existsSync(Fo)){let n=parseInt(G.default.readFileSync(Fo,"utf8"));Number.isFinite(n)&&(or=!0,Fr(n)),G.default.unlinkSync(Fo)}}catch{}let e=Jn("cloudflared");or=!0,gn=null,e&&(Fr(e),qe("cloudflared")),ou($)}finally{setTimeout(()=>{Uo=!1},2e3)}}}function ca(){if(!Se)return!1;let e=Jn("cloudflared");return!!e&&Ro(e)}function la(){tr=0,vn=!1,sr=null,wn=null,Se=null,Qe=0,ar=0,yn=null,au()}var iu=/^(utun|awdl|llw|anpi|bridge|gif|stf|ipsec|ap|tun|tap|vmnet|veth|docker)/i;function na(){let e=gt.default.networkInterfaces(),n=[];for(let[r,o]of Object.entries(e))if(o&&!iu.test(r))for(let t of o)!t.internal&&t.family==="IPv4"&&n.push(`${r}:${t.address}`);return n.sort().join("|")}function su(){rr||(Ur=na(),Do=Date.now(),rr=setInterval(async()=>{try{let e=Date.now(),n=e-Do;if(Do=e,Ko||vn||!sr||wn==null)return;if(n>Wl){if(ne.info(`Sleep/wake detected (gap=${n}ms)`),Se){let s=!1;for(let a=0;a<3;a++){if((await pn(Se)).ok){s=!0;break}a<2&&await new Promise(l=>setTimeout(l,3e3))}if(s)return;ne.info("tunnel unresponsive after sleep \u2192 restarting")}Dt("unreachable"),ce(),ir(wn,"woke from sleep");return}let r=na(),o=r!==Ur;Ur=r;let t=Jn("cloudflared"),i=!t||!Ro(t);if(!o&&!i){if(Se&&bn&&Date.now()-bn>ea&&e-ar>=Je.edgeProbeIntervalMs){ar=e;let s=await pn(Se);if(s.ok)Qe=0;else if(++Qe>=Je.edgeProbeFailureThreshold){let a=await Hl(Je.readyTimeoutMs);if(a>0){ne.info(`edge probe failing but cloudflared holds ${a} connection(s) \u2014 not restarting`),Qe=0;return}ne.warn(`tunnel unreachable but cloudflared alive \u2014 edge lost after ${Qe} probes (ready=${a??"unknown"}), restarting`),Qe=0,Dt("unreachable"),ce(),ir(wn,"tunnel unreachable (edge lost)")}else ne.debug(`edge probe failed (${Qe}/${Je.edgeProbeFailureThreshold}) \u2014 ${s.dnsCode??s.httpStatus??"no response"}`)}return}if(o&&!i&&bn&&Date.now()-bn<ea||(o&&ne.info("Network change detected"),i&&ne.warn("cloudflared not alive \u2014 watchdog"),Dt("unreachable"),await new Promise(s=>setTimeout(s,Je.networkRestoreDelayMs)),!await ia()))return;if(o&&!i&&Se){let s=!1;for(let a=0;a<2;a++){if((await pn(Se)).ok){s=!0;break}a===0&&await new Promise(l=>setTimeout(l,2e3))}if(s){ne.info("Tunnel survived network change, skip restart");return}}o&&!i&&ce(),ir(wn,o?"network change":"liveness watchdog")}catch(e){ne.error(`network monitor tick failed: ${e?.message||e}`)}},Je.networkCheckIntervalMs))}function au(){rr&&(clearInterval(rr),rr=null),Ur=null}Ft();async function yt(e,n={}){let r=n.intervalMs??ft.intervalMs,o=n.timeoutMs??ft.timeoutMs,t=`${e}/api/health`,i=(()=>{try{return new URL(e).hostname}catch{return null}})(),s=Date.now(),a=0,c=[];await j({healthCheck:{running:!0,timeoutMs:o,startedAt:s,logs:[]}});let l=f=>{c.push(f);let u=c.length>ft.maxLogEntries?c.slice(-ft.maxLogEntries):c;j({healthCheck:{running:!0,timeoutMs:o,startedAt:s,logs:u}})};for(;Date.now()-s<o;){if(a++,fn(),i){let u=await Lo(i,ft.dnsTimeoutMs);if(!u.ok){let p=u.code==="ENOTFOUND"||u.code==="ETIMEOUT"||u.code==="ESERVFAIL",d=p?"connecting...":u.code;on(`#${a} \u2192 ${d}`),l({attempt:a,status:d,elapsedMs:u.elapsedMs,ok:!1,waiting:p,time:Date.now()}),await new Promise(m=>setTimeout(m,r));continue}}let f=Date.now();try{let u=await W(t,{signal:AbortSignal.timeout(ft.fetchTimeoutMs)}),p=Date.now()-f;if(on(`#${a} \u2192 ${u.status}`),l({attempt:a,status:String(u.status),elapsedMs:p,ok:u.ok,time:Date.now()}),u.ok)return await j({healthCheck:{running:!1,timeoutMs:0,startedAt:null,logs:[]}}),await new Promise(d=>setTimeout(d,ft.postReadyHoldMs)),!0}catch(u){let p=Date.now()-f,d=u.cause?.code||u.code||u.message,m=d==="ENOTFOUND",w=m?"connecting...":d;on(`#${a} \u2192 ${w}`),l({attempt:a,status:w,elapsedMs:p,ok:!1,waiting:m,time:Date.now()})}await new Promise(u=>setTimeout(u,r))}return await j({healthCheck:{running:!1,timeoutMs:o,startedAt:s,logs:c}}),!1}var tt=F("tunnel"),Wo=null,ba=null,Ea=0;async function Kt(e,n){if(tt.debug(`updateTunnelUrl: key=${e?.slice(0,8)} url=${n}`),Y().remoteEnabled===!1)return;if(Ht(e),n&&n===ba&&Date.now()-Ea<vs){tt.debug("updateTunnelUrl: skipped (debounce, same URL)");return}Wo&&(Wo.cancelled=!0);let r={cancelled:!1};Wo=r;let o=is();Ar({config:ge.urlSync,label:`urlSync ${n}`,log:t=>tt.warn(t),ctx:r,task:async()=>{let t=await W(`${I}/api/session/update`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify((()=>{let s={apiKey:Q(e),tunnelUrl:n,localIp:o?`${o}:${$}`:null};return{...s,...Rt(s)}})())});if(r.cancelled)return!0;if(t.ok)return ba=n,Ea=Date.now(),tt.debug(`urlSync OK: pushed ${n} to server`),du(n),!0;let i=await t.text().catch(()=>"");return tt.warn(`urlSync HTTP ${t.status}: ${i.slice(0,200)}`),!1}}),n&&Js(n)}var An=null,kn=null,Go=!1,Yo=0;async function qo(e,n){let r={apiKey:e,online:n},o=await W(`${I}/api/session/heartbeat`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...r,...Rt(r)})});return o.ok||tt.warn(`heartbeat online=${n} HTTP ${o.status}`),o.ok}async function Vo(){if(!(Go||!kn)){Go=!0;try{await qo(kn,!0),Yo=Date.now()}catch(e){tt.debug(`heartbeat failed: ${e?.message||e}`)}finally{Go=!1}}}function Ht(e){let n=Q(e);if(n&&Y().remoteEnabled!==!1){if(An&&kn===n){Date.now()-Yo>=To&&Vo();return}Hr(),kn=n,Vo(),An=setInterval(Vo,To),An.unref?.()}}function Hr({offline:e=!1}={}){An&&(clearInterval(An),An=null);let n=kn;return kn=null,Yo=0,!e||!n?null:qo(n,!1).catch(r=>tt.debug(`goodbye failed: ${r?.message||r}`))}function wt(e){let n=Q(e);if(!n)return Promise.resolve(!1);Hr();let r=qo(n,!1).catch(o=>(tt.debug(`offline mark failed: ${o?.message||o}`),!1));return Promise.race([r,new Promise(o=>setTimeout(()=>o(!1),_r))])}var ur=null;async function du(e){if(ur?.url===e)return;let n={url:e};ur=n,Qs();try{let r=await yt(e,{timeoutMs:Es});if(ur!==n)return;r&&Dt("healthy")}catch{}finally{ur===n&&(ur=null),zs()}}var nt=F("server"),Aa=jr.default.dirname((0,xa.fileURLToPath)(__importMetaUrl)),mu=jr.default.resolve(Aa,"./server.cjs"),Sa=jr.default.resolve(Aa,"../../index.js");function Wr(e){try{process.platform==="win32"?(0,fr.execSync)(`for /f "tokens=5" %a in ('netstat -aon ^| findstr :${e}') do taskkill /F /PID %a`,{stdio:"ignore",windowsHide:!0}):(0,fr.execSync)(`lsof -ti:${e} | xargs kill -9 2>/dev/null || true`,{stdio:"ignore"})}catch{}}function vt(e,n,r){let o=null,t=!1,i=!1,s=!0,a=0,c=null,l=()=>{s&&(Wr($),s=!1);let f=process.env.NODE_ENV==="development"&&Xo.default.existsSync(Sa),u=f?Sa:mu;Xo.default.existsSync(u)||(nt.error(`Server not found: ${u}`),process.exit(1));let p={...process.env,PORT:String($)};f||delete p.NODE_ENV,o=(0,fr.spawn)(pi,[u],{cwd:V.ROOT,stdio:["ignore","inherit","inherit"],detached:!1,windowsHide:!0,env:di(p)}),c&&clearTimeout(c),c=setTimeout(()=>{a=0},ys),o.on("exit",(d,m)=>{if(c&&(clearTimeout(c),c=null),t)return;if(i){i=!1,nt.info("Restarting server (requested)..."),setTimeout(()=>{l(),r?.()},500);return}nt.error(`Server exited unexpectedly (code: ${d}, signal: ${m})`),a++;let w=Re(ge.server,a);nt.warn(`Restarting server in ${w}ms (fail#${a})`),n&&n(),setTimeout(()=>{l(),r?.()},w)}),o.on("error",d=>{nt.error(`Server error: ${d.message}`)}),e?.(o)};return l(),{getProcess:()=>o,shutdown:()=>{if(t=!0,!!o){try{o.kill("SIGTERM")}catch{}setTimeout(()=>{try{o&&o.kill("SIGKILL")}catch{}},2e3)}},restart:()=>{if(!o)return!1;i=!0;try{o.kill("SIGTERM")}catch{}return setTimeout(()=>{try{o&&i&&o.kill("SIGKILL")}catch{}},2e3),!0}}}function ka(e){return e?.restart?e.restart():!1}function rt({serverManager:e,tunnelProcess:n,exit:r=!0,code:o=0}={}){try{er()}catch{}try{e?.shutdown?.()}catch{}try{n?.kill?.()}catch{}try{ce()}catch{}try{Bt()}catch{}try{Wr($)}catch{}try{la()}catch{}try{Oi()}catch{}try{qe("agent")}catch{}try{qe("cloudflared")}catch{}let t=Hr({offline:!0});if(r){let i=new Promise(a=>setTimeout(a,ws)),s=t?Promise.race([t,new Promise(a=>setTimeout(a,_r))]):null;Promise.all([i,s]).finally(()=>process.exit(o))}}var Ta=!1;function bt(e,n){if(Ta)return;Ta=!0;let r=!1,o=t=>{r||(r=!0,nt.info(`Stopping 9Remote (${t})...`),rt({serverManager:e,tunnelProcess:n}),nt.info("Server stopped"))};if(process.on("SIGINT",()=>o("SIGINT")),process.on("SIGTERM",()=>o("SIGTERM")),process.on("SIGHUP",()=>o("SIGHUP")),process.platform==="win32"){process.on("SIGBREAK",()=>o("SIGBREAK"));try{import("readline").then(({createInterface:t})=>{t({input:process.stdin,output:process.stdout}).on("SIGINT",()=>o("SIGINT")),process.stdin.isTTY&&process.stdin.unref?.()}).catch(()=>{})}catch{}}process.on("uncaughtException",t=>{nt.error(`Uncaught exception: ${t?.stack||t?.message||t}`),o("uncaughtException"),setTimeout(()=>process.exit(1),So)}),process.on("unhandledRejection",t=>{nt.error(`Unhandled rejection: ${t?.stack||t?.message||t}`),o("unhandledRejection"),setTimeout(()=>process.exit(1),So)})}Ft();var jt=F("tunnel");async function hu(e,n,r,o){let t=0;for(;;){t++;try{return await Ze(e,n,r)}catch(i){let s=Re(ge.tunnelSpawn,t);jt.warn(`spawn attempt ${t} failed: ${i?.message||i} \u2014 retry in ${s}ms`),o?.({attempt:t,delay:s}),await new Promise(a=>setTimeout(a,s))}}}function ot({onUrlUpdate:e,setTunnel:n,onRetry:r}){return async o=>{try{let t=await hu(o,e,null,r);it(),n(t.child),await e(t.tunnelUrl),jt.info(`Tunnel restarted: ${t.tunnelUrl}`)}catch(t){jt.error(`Tunnel restart failed: ${t?.message||t}`)}}}var Gr=null;function it(){Gr&&(Gr.cancelled=!0,Gr=null)}function Rn(e,{onUrlUpdate:n,onRestart:r,setActiveTunnel:o,onReady:t}){it();let i={cancelled:!1};return Gr=i,Ar({config:ge.tunnelRateLimit,task:async()=>{if(i.cancelled)return!0;if(ca())return jt.info("bg-tunnel: a tunnel is already live \u2014 standing down"),!0;let s=await Ze(e,n,r);if(i.cancelled){try{ce()}catch{}return!0}try{o?.(s.child),await n?.(s.tunnelUrl),await t?.(s),jt.info(`bg tunnel up: ${s.tunnelUrl}`)}catch(a){jt.error(`bg tunnel post-spawn failed: ${a?.message||a}`)}return!0},label:"bg-tunnel",log:s=>jt.info(s),ctx:i}),i}var ti=A(Ja(),1);var xu=F("session");function Au(e,n="\u{1F4F1} Scan QR to connect:"){console.log(me.orange(`
|
|
256
|
+
${n}`)),ti.default.generate(e,{small:!0,type:"terminal",margin:0},r=>{console.log(r.trim())})}function ku(e){return new Promise(n=>{ti.default.generate(e,{small:!0,type:"terminal",margin:0},r=>{n(me.orangeDim("\u{1F4F1} Scan QR to connect:")+`
|
|
257
|
+
`+r.trim())})})}async function Xr(e,n){let r=await Wn(e,I),o=Math.min(Ve.headerWidth,process.stdout.columns||55);if(!r){xu.warn("Temp key creation failed \u2014 showing UI without a QR"),await L(O.READY,{tunnelUrl:n,permanentKey:e,workerUrl:I}),console.log(h.red(`
|
|
258
|
+
\u274C Failed to create one-time key \u2014 generate a new one from the menu`)),console.log(me.orange("\u2550".repeat(o))),console.log(h.white("App URL".padEnd(14))+h.gray(`${I}/login`)),console.log(h.white("Key".padEnd(14))+h.gray(e)),console.log(me.orange("\u2550".repeat(o)));return}let t=Gn(I,r);await L(O.READY,{tunnelUrl:n,oneTimeKey:r.oneTimeKey,oneTimeKeyExpiresAt:r.expiresAt,permanentKey:e,qrUrl:t,workerUrl:I}),Au(t),console.log(h.gray(`
|
|
259
259
|
QR will expire in 10 minutes (one-time use)
|
|
260
|
-
`)),console.log(me.orange("\u2550".repeat(o))),console.log(h.white("App URL".padEnd(14))+h.gray(`${I}/login`)),console.log(h.white("One-Time Key".padEnd(14))+me.orange.bold(
|
|
260
|
+
`)),console.log(me.orange("\u2550".repeat(o))),console.log(h.white("App URL".padEnd(14))+h.gray(`${I}/login`)),console.log(h.white("One-Time Key".padEnd(14))+me.orange.bold(r.oneTimeKey)),console.log(h.white("Key".padEnd(14))+h.gray(e)),console.log(me.orange("\u2550".repeat(o)))}async function Pn(e,n,r,o=""){let t=Math.min(Ve.headerWidth,process.stdout.columns||Ve.headerWidth),i=[];return e&&r?(i.push(await ku(r)),i.push(h.gray(`
|
|
261
261
|
QR expires in 30 minutes (one-time use)
|
|
262
262
|
`))):i.push(h.gray(`
|
|
263
263
|
(One-time key used \u2014 generate a new one from menu)
|
|
264
|
-
`)),i.push(me.orange("\u2550".repeat(t)),h.white("App URL".padEnd(14))+h.gray(`${I}/login`)),hi.showTunnelUrlInMenu&&i.push(h.white("Tunnel".padEnd(14))+(o?h.cyan(o):h.gray("\u2014"))),i.push(h.white("One-Time Key".padEnd(14))+(e?me.orange.bold(e)+h.dim(" (expires in 30m)"):h.gray("\u2014")),h.white("Key".padEnd(14))+h.dim(
|
|
265
|
-
`)}var we=F("cmd");function Tt(e,r,
|
|
266
|
-
\u{1F310} UI already served at http://localhost:${$}`));return}Be("agent",process.pid),rn(De());let e=await pt(),
|
|
267
|
-
\u{1F310} UI ready at ${t}`));let i=null;
|
|
268
|
-
\u{1F310} 9Remote already running at http://localhost:${$}`);return}Be("agent",process.pid),Ls().catch(()=>{});let e=await pt(),
|
|
269
|
-
\u274C Failed to launch background: ${c.message}`)),process.exit(1)}let i=Date.now()+$e.bgServerReadyTimeoutMs,s=!1;for(;Date.now()<i;){if(await
|
|
264
|
+
`)),i.push(me.orange("\u2550".repeat(t)),h.white("App URL".padEnd(14))+h.gray(`${I}/login`)),hi.showTunnelUrlInMenu&&i.push(h.white("Tunnel".padEnd(14))+(o?h.cyan(o):h.gray("\u2014"))),i.push(h.white("One-Time Key".padEnd(14))+(e?me.orange.bold(e)+h.dim(" (expires in 30m)"):h.gray("\u2014")),h.white("Key".padEnd(14))+h.dim(n),me.orange("\u2550".repeat(t))),i.join(`
|
|
265
|
+
`)}var we=F("cmd");function Tt(e,n,r,o){let t=!1;setInterval(async()=>{if(t)return;let i=Ii();if(i){t=!0;try{if(i==="stop-tunnel")await Qa(e,n,r);else if(i==="restart-tunnel")await Qa(e,n,r),await za(e,n,r);else if(i==="start-tunnel"){if(await za(e,n,r)==="alreadyRunning"){t=!1;return}}else if(i==="regenerate-key")await Ru();else if(i==="shutdown")Pu(e,n);else if(i==="update"){let s=await Gs();we.info(`cmd update -> ${s?"started":"SKIPPED (see reasons above)"}`)}else i==="restart"&&ka(o?.())}catch(s){we.error(`cmd "${i}" failed: ${s?.message||s}`)}finally{t=!1}}},$e.cmdMs)}async function Qa(e,n,r){it(),er();let o=e();o&&(o.kill(),n(null),we.info("Tunnel stopped")),r&&await wt(r),await L(O.STOPPED,{tunnelUrl:"",oneTimeKey:"",oneTimeKeyExpiresAt:null,qrUrl:""}),xn({tunnelUrl:"",running:!0})}async function za(e,n,r){if(Y().remoteEnabled===!1){we.info("Start skipped \u2014 remote is disabled");return}let o=e();if(o)if(o.killed||o.exitCode!=null)n(null);else{let t=await te("/api/ui/state");return await L(O.READY,{tunnelUrl:t?.tunnelUrl||""}),"alreadyRunning"}it(),we.info("Starting...");try{await L(O.PREPARING),await cr(Pr),await L(O.CONNECTING);let t=await W(`${I}/api/session/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:Q(r),hostPublicKey:lt(),hostX25519Key:ut()})});if(!t.ok)throw new Error(`Session create failed: ${t.status}`);await q("/api/signaling/retry",{}),Ht(r),await L(O.TUNNELING);let i=async l=>{await Kt(r,l),await j({tunnelUrl:l}),mn(l),xn({tunnelUrl:l,running:!0})},s=({attempt:l,delay:f})=>{j({tunnelRetry:{attempt:l,delay:f,at:Date.now()}})},a=null;try{a=await Ze($,i,ot({onUrlUpdate:i,setTunnel:l=>n(l),onRetry:s}))}catch(l){we.error(`Tunnel spawn failed: ${l?.message||l} \u2014 QR RTC-only, bg retry`)}j({tunnelRetry:null});let c="";a&&(n(a.child),c=a.tunnelUrl,await L(O.VERIFYING),await yt(c)||(we.warn("Tunnel health check timed out \u2014 bg reconnect"),c="",n(null),a=null)),await Xr(r,c),await L(O.READY,{tunnelUrl:c}),a||Rn($,{onUrlUpdate:i,onRestart:ot({onUrlUpdate:i,setTunnel:l=>n(l),onRetry:s}),setActiveTunnel:n,onReady:async l=>{await L(O.READY,{tunnelUrl:l.tunnelUrl})}})}catch(t){we.error(`Failed to start: ${t.message}`),await L(O.STOPPED)}}async function Ru(){if(Y().remoteEnabled===!1){we.info("Key regeneration skipped \u2014 remote is disabled");return}let e=await Xt(),n=kt(e),r=Kn();if(!await Pt(n,I,$i()?.tunnelUrl,r?.key)){we.error("Key regeneration aborted \u2014 could not register the new key");return}We(e,n,r?.name||"Default"),await j({permanentKey:n,oneTimeKey:"",oneTimeKeyExpiresAt:null,qrUrl:"",pairingUsed:!0}),we.info(`Key regenerated: ${wr(n)}`)}function Pu(e,n){it(),we.info("Shutting down 9Remote completely...");let r=e();n(null),rt({tunnelProcess:r}),we.info("9Remote stopped")}Ft();async function Za(){if(await X()&&(await new Promise(a=>setTimeout(a,ie.guestRecheckMs)),await X())){console.log(h.green(`
|
|
266
|
+
\u{1F310} UI already served at http://localhost:${$}`));return}Be("agent",process.pid),rn(De());let e=await pt(),n=process.argv.find(a=>a.startsWith("--theme=")),r=n?n.split("=")[1]:null;try{ce(),await new Promise(a=>setTimeout(a,ie.killCloudflaredMs))}catch{}let o=vt(null,null);await new Promise(a=>setTimeout(a,ie.serverBootMs));let t=`http://localhost:${$}`;console.log(h.green(`
|
|
267
|
+
\u{1F310} UI ready at ${t}`));let i=null;Y().remoteEnabled===!1&&await wt(e.key),await j({permanentKey:e.key,step:O.STOPPED,theme:r}),bt(o,null),Tt(()=>i,a=>{i=a},e.key,()=>o),await lr({port:$,onQuit:()=>{let a=i;i=null,rt({serverManager:o,tunnelProcess:a,exit:!1}),Bt(),setTimeout(()=>process.exit(0),500)},onOpenUI:()=>Ut(t)}),xn({tunnelUrl:"",running:!0}),(process.argv.includes("--start")||process.argv.includes("--skip-update"))&&Y().remoteEnabled!==!1&&Qt("start-tunnel"),await new Promise(()=>{})}Ft();async function ec(){if(await X()&&(await new Promise(l=>setTimeout(l,ie.guestRecheckMs)),await X())){console.log(`
|
|
268
|
+
\u{1F310} 9Remote already running at http://localhost:${$}`);return}Be("agent",process.pid),Ls().catch(()=>{});let e=await pt(),n=process.argv.find(l=>l.startsWith("--theme=")),r=n?n.split("=")[1]:null;try{ce(),await new Promise(l=>setTimeout(l,ie.killCloudflaredMs))}catch{}let o=vt(null,null);await new Promise(l=>setTimeout(l,ie.serverBootMs));let t=`http://localhost:${$}`,i=null;await j({permanentKey:e.key,step:O.STOPPED,theme:r});let s=()=>{let l=i;i=null,rt({serverManager:o,tunnelProcess:l,exit:!1})};bt(o,null),Tt(()=>i,l=>{i=l},e.key,()=>o);try{qe("cloudflared")}catch{}(process.argv.includes("--start")||process.argv.includes("--skip-update"))&&Y().remoteEnabled!==!1&&Qt("start-tunnel"),await lr({port:$,onQuit:s,onOpenUI:()=>Ut(t)})&&jo({title:"9Remote is running",message:`Open ${t} or use the tray icon to manage.`}),await new Promise(()=>{})}var Gt=F("mode");async function $u(e){Gt.info("Starting server..."),await L(O.PREPARING);try{ce(),await new Promise(l=>setTimeout(l,ie.killCloudflaredMs))}catch{}let n=Y().remoteEnabled===!1,r=!n;if(n&&await wt(e),r)try{let l=await W(`${I}/api/session/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:Q(e),hostPublicKey:lt(),hostX25519Key:ut()})});if(!l.ok)throw new Error(`Session create failed: ${l.status}`);Ht(e)}catch(l){Gt.error(`Session create failed: ${l.message} \u2014 local-only, retry from Web UI`),r=!1}let o=await X(),t=o?{getProcess:()=>null,shutdown:()=>{}}:vt(null,null);o||await new Promise(l=>setTimeout(l,ie.serverBootMs)),Gt.info("Starting tunnel..."),await L(O.CONNECTING);let i={current:null},s="",a=async l=>{Gt.info(`Tunnel URL rotated: ${l}`),await Kt(e,l),j({tunnelUrl:l}),mn(l)},c=null;if(r)try{c=await Ze($,a,ot({onUrlUpdate:a,setTunnel:l=>{i.current=l}}))}catch(l){Gt.error(`Tunnel spawn failed: ${l.message} \u2014 RTC-only, bg retry`)}return c&&(i.current=c.child,s=c.tunnelUrl,await yt(s)||(Gt.warn("Tunnel health check timed out \u2014 bg reconnect"),i.current=null,s="",c=null)),!c&&r&&Rn($,{onUrlUpdate:a,onRestart:ot({onUrlUpdate:a,setTunnel:l=>{i.current=l}}),setActiveTunnel:l=>{i.current=l},onReady:async l=>{await L(O.READY,{tunnelUrl:l.tunnelUrl})}}),s&&await Kt(e,s),r?await L(O.READY,{tunnelUrl:s}):await L(O.STOPPED,{tunnelUrl:""}),Fn({apiKey:e,tunnelUrl:s,serverPid:t.getProcess()?.pid,tunnelPid:i.current?.pid}),{serverManager:t,tunnelRef:i,tunnelUrl:s,remoteOnline:r}}async function tc(){rn(De());let e=await pt();Gt.info(`Using key: ${wr(e.key)} (${e.name})`);let{serverManager:n,tunnelRef:r,tunnelUrl:o,remoteOnline:t}=await $u(e.key);t?await Xr(e.key,o):console.log(`\u26A0 ${Y().remoteEnabled===!1?"Remote is disabled \u2014 enable it in Web UI settings":'Remote not connected \u2014 tap "remote \xB7 offline" in the Web UI to retry'}. Local mode.`),bt(n,r.current),Tt(()=>r.current,s=>{r.current=s},e.key);let i=Date.now();setInterval(()=>{let s=Math.floor((Date.now()-i)/1e3),a=Math.floor(s/3600),c=Math.floor(s%3600/60),l=s%60;j({uptime:`${a}:${String(c).padStart(2,"0")}:${String(l).padStart(2,"0")}`})},$e.statsMs),await new Promise(()=>{})}var nc=A(require("path"),1),rc=A(require("fs"),1);Ft();async function oc(){let e=`http://localhost:${$}`;await X()&&(Wr($),await new Promise(c=>setTimeout(c,500)));let n=["--tray"],r=process.argv.find(c=>c.startsWith("--theme="));r&&n.push(r);let o=jn;try{rc.default.mkdirSync(nc.default.dirname(o),{recursive:!0})}catch{}let t=null;try{t=Is(n),t&&Be("agent",t)}catch(c){console.log(h.red(`
|
|
269
|
+
\u274C Failed to launch background: ${c.message}`)),process.exit(1)}let i=Date.now()+$e.bgServerReadyTimeoutMs,s=!1;for(;Date.now()<i;){if(await X()){s=!0;break}await new Promise(c=>setTimeout(c,$e.bgServerReadyIntervalMs))}s||(console.log(h.red(`
|
|
270
270
|
\u274C Background server failed to start.`)),console.log(h.gray(` Check log: ${o}
|
|
271
271
|
`)),process.exit(1)),Qt("start-tunnel"),Ut(e);let a=t?` (PID: ${t})`:"";console.log(h.green(`
|
|
272
272
|
\u{1F310} 9Remote running at ${e}${a}`)),console.log(h.gray(`\u{1F4A1} Log: ${o}
|
|
273
|
-
`)),await new Promise(c=>setTimeout(c,ie.bgSpawnFlushMs)),process.exit(0)}var ic=A(require("readline"),1);var Jr=F("mode"),$n=null;async function Qr(){Be("agent",process.pid),console.clear(),Zi(),rs(!0),await
|
|
273
|
+
`)),await new Promise(c=>setTimeout(c,ie.bgSpawnFlushMs)),process.exit(0)}var ic=A(require("readline"),1);var Jr=F("mode"),$n=null;async function Qr(){Be("agent",process.pid),console.clear(),Zi(),rs(!0),await L(O.PREPARING);let e=await pt(),n=null,r={getProcess:()=>null,shutdown:()=>{}};if(!await X()){r=vt(null,null,()=>{if(process.stdin.isTTY){try{process.stdin.setRawMode(!1)}catch{}try{process.stdin.setRawMode(!0),process.stdin.resume()}catch{}}try{ic.default.emitKeypressEvents(process.stdin)}catch{}n?.()});let g=Date.now()+$e.serverReadyTimeoutMs;for(;Date.now()<g&&!await X();)await new Promise(T=>setTimeout(T,$e.serverReadyIntervalMs))}try{ce(),await new Promise(g=>setTimeout(g,ie.killCloudflaredTuiMs))}catch{}try{await cr(Pr)}catch(g){Jr.error(`cloudflared setup failed: ${g?.message||g} \u2014 retry from Web UI`)}await L(O.CONNECTING);let t=Y().remoteEnabled===!1,i=!t;if(t&&await wt(e.key),i)try{let g=await W(`${I}/api/session/create`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:Q(e.key),hostPublicKey:lt(),hostX25519Key:ut()})});if(!g.ok)throw new Error(`Session create failed: ${g.status}`);await q("/api/signaling/retry",{}),Ht(e.key)}catch(g){Jr.error(`Failed to connect: ${g.message}`),i=!1}await L(O.TUNNELING);let s=i?await Wn(e.key,I):null,a=Gn(I,s),c=s?.oneTimeKey||"",l=a,f="",u=null,p={current:null},d=async g=>{f=g,await Kt(e.key,g),await j({tunnelUrl:g}),mn(g),u!==null&&(u=await Pn(c,e.key,l,f),n?.())},m=null;if(i)try{m=await Ze($,d,ot({onUrlUpdate:d,setTunnel:g=>{p.current=g}}))}catch(g){Jr.error(`Tunnel spawn failed: ${g?.message||g} \u2014 QR RTC-only, bg retry`)}m&&(p.current=m.child,f=m.tunnelUrl,Fn({apiKey:e.key,tunnelUrl:m.tunnelUrl,tunnelPid:m.child?.pid}),await L(O.VERIFYING),await yt(m.tunnelUrl)?await d(m.tunnelUrl):(Jr.warn("Tunnel health check timed out \u2014 bg reconnect"),p.current=null,f="",m=null)),!m&&i&&Rn($,{onUrlUpdate:d,onRestart:ot({onUrlUpdate:d,setTunnel:g=>{p.current=g}}),setActiveTunnel:g=>{p.current=g},onReady:async g=>{Fn({apiKey:e.key,tunnelUrl:g.tunnelUrl,tunnelPid:g.child?.pid}),await L(O.READY,{tunnelUrl:g.tunnelUrl})}}),i?await L(O.READY,{tunnelUrl:f,oneTimeKey:s?.oneTimeKey||"",oneTimeKeyExpiresAt:s?.expiresAt||null,permanentKey:e.key,qrUrl:a,workerUrl:I}):(await L(O.STOPPED,{tunnelUrl:"",oneTimeKey:"",oneTimeKeyExpiresAt:null,permanentKey:e.key,qrUrl:"",workerUrl:I}),console.log(h.red(`
|
|
274
274
|
\u26A0 ${t?"Remote is disabled \u2014 enable it in Web UI settings":'Remote not connected \u2014 tap "remote \xB7 offline" in the Web UI to retry'}. Local mode.
|
|
275
|
-
`))),await new Promise(g=>setTimeout(g,ie.trayReadyMs)),u=await Pn(c,e.key,l,f);let w=[],v=!1,P=()=>{v||
|
|
275
|
+
`))),await new Promise(g=>setTimeout(g,ie.trayReadyMs)),u=await Pn(c,e.key,l,f);let w=[],v=!1,P=()=>{v||n?.()},E=async(g,T,_)=>{if(!v){v=!0;try{let D=await es(T,_);await q(`/api/device/${D?"approve":"reject"}`,{socketId:g})}catch{}finally{v=!1,n?.()}}},x=ts($,async(g,T)=>{if(g==="log"&&T.message)w.push(T.message),w.length>Ve.maxLogLines&&w.shift();else if(g==="state"){let _=T.permanentKey||e.key,D=T.oneTimeKey!==void 0?T.oneTimeKey:c,Z=T.qrUrl!==void 0?T.qrUrl:l,ue=T.tunnelUrl!==void 0?T.tunnelUrl:f;(D!==c||_!==e.key||ue!==f)&&(c=D,l=Z,f=ue,T.permanentKey&&(e={...e,key:T.permanentKey}),u=await Pn(c,e.key,l,f),P())}else g==="permissions"?(v||Promise.resolve($n?.()).catch(()=>{}),P()):g==="autostart"||g==="sleepInhibit"?(v||Promise.resolve($n?.()).catch(()=>{}),P()):g==="deviceApproval"&&T.action==="pending"&&await E(T.socketId,T.deviceId,T.ip)}),R=setInterval(async()=>{if(!v)try{let T=(await te("/api/device/pending"))?.pending?.[0];T&&await E(T.socketId,T.deviceId,T.ip)}catch{}},$e.pendingApprovalMs);bt({getProcess:r.getProcess,shutdown:()=>{it(),r.shutdown();try{p.current?.kill()}catch{}x(),clearInterval(R)}}),Tt(()=>p.current,g=>{p.current=g},e.key,()=>r),await Ou(e,f,()=>u,g=>{u=g},g=>{n=g},()=>{it();try{x()}catch{}try{clearInterval(R)}catch{}rt({serverManager:r,tunnelProcess:p.current,exit:!1})},w)}async function Ou(e,n,r,o,t,i,s){for(;;){let{desktopEnabled:a,remoteAvailable:c,autoApprove:l}=await yo(),f=[{label:"Open Web UI",action:"webui"}];Y().remoteEnabled!==!1&&f.push({label:"Keys \u25B6",action:"keys"}),c&&f.push({label:`Remote Desktop: ${a?h.green("ON"):h.gray("OFF")} \u25B6`,action:"desktop"}),f.push({label:`Manage Devices \u25B6 ${h.dim("(Auto-approve:")} ${l?h.green("ON"):h.gray("OFF")}${h.dim(")")}`,action:"devices"},{label:"Settings \u25B6",action:"settings"},{label:"View Logs",action:"logs"},{label:h.gray("Exit"),action:"exit"});let u=null;t(()=>u?.());let p=await Ne("",f,0,r,m=>{u=m},i),d=p>=0?f[p].action:"exit";if(d==="webui"){let m=`http://localhost:${$}`,{openBrowser:w}=await Promise.resolve().then(()=>(Ft(),va));w(m),console.log(h.green(`
|
|
276
276
|
\u{1F310} Opening ${m}
|
|
277
|
-
`))}else if(d==="keys")await Iu(e,
|
|
277
|
+
`))}else if(d==="keys")await Iu(e,n,o,r);else if(d==="desktop")await Mu();else if(d==="devices")await Cu();else if(d==="settings")await Lu();else if(d==="logs")await Nu();else{try{i?.()}catch{}console.log(h.gray(`
|
|
278
278
|
Goodbye!
|
|
279
|
-
`)),process.exit(0)}}}async function Iu(e,r,
|
|
280
|
-
`):h.gray(" No logs yet"),
|
|
279
|
+
`)),process.exit(0)}}}async function Iu(e,n,r,o){let t=Y().remoteEnabled===!1?[{label:h.gray("Remote access is off \u2014 enable it in the Web UI"),action:"back"}]:[{label:"New One-Time Key",action:"otk"},{label:"Regenerate Permanent Key",action:"regen"},{label:h.gray("\u2190 Back"),action:"back"}],i=await Ne("Keys",t,0,o),s=i>=0?t[i].action:"back";if(s==="otk"){let a=await Wn(e.key,I);if(a){let c=Gn(I,a);r(await Pn(a.oneTimeKey,e.key,c,n)),await j({oneTimeKey:a.oneTimeKey,oneTimeKeyExpiresAt:a.expiresAt,qrUrl:c})}}else if(s==="regen"&&await mo(h.yellow("Replace current key and disconnect all sessions? Continue?"))){let c=await Xt(),l=kt(c);if(!await Pt(l,I,n,e.key)){r(h.red("Key regeneration failed \u2014 could not reach the server"));return}let f=We(c,l,e.name||"Default");Object.assign(e,f),r(await Pn("",e.key,"",n)),await j({permanentKey:e.key,oneTimeKey:"",oneTimeKeyExpiresAt:null,qrUrl:"",pairingUsed:!0})}}var ni={none:"Off","30m":"Off after 30 min idle","1h":"Off after 1 hour idle","2h":"Off after 2 hours idle","4h":"Off after 4 hours idle","24h":"Off after 24 hours idle",never:"Never off"};async function _u(e,n){let r=n.map(s=>({label:ni[s]||s,action:s}));r.push({label:h.gray("\u2190 Back"),action:"back"});let o=Math.max(0,n.indexOf(e)),t=await Ne("Prevent sleep",r,o),i=t>=0?r[t].action:"back";i!=="back"&&await q("/api/sleep-inhibit",{mode:i})}async function Lu(){for(;;){let e=!1,n="never",r=[],o=()=>[{label:`Launch on system startup: ${e?h.green("ON"):h.gray("OFF")}`,action:"autostart"},{label:`Prevent sleep: ${n==="none"?h.gray(ni.none):h.green(ni[n]||n)} \u25B6`,action:"sleep"},{label:h.gray("\u2190 Back"),action:"back"}],t=o(),i=null,s=async()=>{let l=await yo();e=!!l.autoStart,n=l.sleepInhibitMode||"never",r=l.sleepInhibitPresets||[],t=o(),i?.()};await s(),$n=s;let a=await Ne("Settings",t,0,"",l=>{i=l});$n=null;let c=a>=0?t[a].action:"back";if(c==="autostart")await q("/api/autostart",{enabled:!e});else if(c==="sleep")await _u(n,r);else return}}async function Mu(){for(;;){let e=!1,n={screenRecording:!1,accessibility:!1},r=()=>({toggle:`Toggle: ${e?h.green("ON \u2192 turn OFF"):h.gray("OFF \u2192 turn ON")}`,sr:`Screen Recording ${n.screenRecording?h.green("\u2713"):h.red("\u2717 (click to grant)")}`,ax:`Mouse & Keyboard control ${n.accessibility?h.green("\u2713"):h.red("\u2717 (click to grant)")}`}),o=[{label:""},{label:""},{label:""},{label:h.gray("\u2190 Back")}],t=null,i=async()=>{let a=await te("/api/ui/state")||{};e=!!a.desktopEnabled,n={screenRecording:!!a.screenRecording,accessibility:!!a.accessibility};let c=r();o[0].label=c.toggle,o[1].label=c.sr,o[2].label=c.ax,t?.()};await i(),$n=i;let s=await Ne("Remote Desktop",o,0,"",a=>{t=a});if($n=null,s===0)await q("/api/desktop/toggle",{enabled:!e});else if(s===1&&!n.screenRecording)await q("/api/permissions/request",{type:"screenRecording"})||xr("screenRecording");else if(s===2&&!n.accessibility)await q("/api/permissions/request",{type:"accessibility"})||xr("accessibility");else if(s===3||s===-1)return}}async function Cu(){for(;;){let[e,n]=await Promise.all([te("/api/device/approved"),te("/api/device/auto-approve")]),r=e?.devices||[],o=!!n?.enabled,t=[{label:`Auto-approve new devices: ${o?h.green("ON"):h.gray("OFF")}`,action:"toggle"},...r.map(a=>{let c=a.deviceId.slice(0,8),l=a.approvedAt?new Date(a.approvedAt).toLocaleString():"unknown";return{label:`${c}... ${h.dim(l)}`,action:"remove",deviceId:a.deviceId}}),{label:h.gray("\u2190 Back"),action:"back"}],i=await Ne(`Approved Devices (${r.length})`,t,0);if(i===-1)return;let s=t[i];if(s.action==="back")return;if(s.action==="toggle"){await q("/api/device/auto-approve",{enabled:!o});continue}s.action==="remove"&&await mo(h.yellow(`Remove device ${s.deviceId.slice(0,8)}...?`))&&await q("/api/device/remove",{deviceId:s.deviceId})}}async function Nu(){let e=Ci(mi),n=e.length?e.join(`
|
|
280
|
+
`):h.gray(" No logs yet"),r=`
|
|
281
281
|
${h.dim("Log file:")} ${h.cyan(jn)}
|
|
282
|
-
${h.dim(`Tail: tail -f ${jn}`)}`;await Ne("Logs",[{label:h.gray("\u2190 Back")}],0,r
|
|
282
|
+
${h.dim(`Tail: tail -f ${jn}`)}`;await Ne("Logs",[{label:h.gray("\u2190 Back")}],0,n+r)}async function sc(){let e=De(),n=await Fs(),r=po(e,n?.latest??null),o=[];n?.latest&&o.push({label:h.yellow(`Update to v${n.latest}`),action:"update"}),o.push({label:"Open Web UI (background)",action:"ui"},{label:"Terminal UI",action:"tui"},{label:h.gray("Exit"),action:"exit"});let t=await Ne("",o,0,r),i=t>=0?o[t].action:"exit";if(i==="update"){let s=Math.min(Ve.headerWidth,process.stdout.columns||Ve.headerWidth);Br(),console.log(me.orange(`
|
|
283
283
|
`+"\u2550".repeat(s))),console.log(h.gray(` \u2713 Stopped running instances
|
|
284
284
|
`)),console.log(h.yellow(` \u2B06 Run this command to update:
|
|
285
285
|
`)),console.log(h.white.bold(` npm i -g ${ke}
|
|
286
286
|
`)),console.log(me.orange("\u2550".repeat(s))+`
|
|
287
|
-
`),process.exit(0)}else i==="ui"?await oc():i==="tui"?await Qr():process.exit(0)}var ii=A(require("node:fs"),1);function Du(e){let
|
|
288
|
-
`)}function Ku(e){let
|
|
287
|
+
`),process.exit(0)}else i==="ui"?await oc():i==="tui"?await Qr():process.exit(0)}var ii=A(require("node:fs"),1);function Du(e){let n=new Set;return e.map(r=>{if(!n.has(r))return n.add(r),r;let o=2;for(;n.has(`${r} (${o})`);)o++;let t=`${r} (${o})`;return n.add(t),t})}function Bu(e,n){let r=new Map;for(let o of e){let t=n(o)||"Page";r.has(t)||r.set(t,[]),r.get(t).push(o)}return[...r].map(([o,t])=>({path:o,items:t}))}var ri=e=>`${e.role}|${e.kind}`;var lc=e=>String(e??"").replace(/\s+/g," ").trim(),pr=(e,n=80)=>{let r=lc(e);return r.length>n?r.slice(0,n-1)+"\u2026":r},ac=(e,n,r=!1)=>{let o=e.value?` =${lc(e.value).slice(0,30)}`:"",t=e.checked?` [${e.checked}]`:"",i=e.href?` -> ${pr(e.href,70)}`:"",s=r&&e.rect?` [${Math.round(e.rect.x+(e.rect.w?e.rect.w/2:0))},${Math.round(e.rect.y+(e.rect.h?e.rect.h/2:0))}]`:"";return`${e.id} ${e.role||e.kind} "${pr(n)}"${t}${o}${i}${s}`};function Uu(e,n,r){let{period:o,cycles:t,constant:i}=n;if(o===1&&i[0])return[`${e[0].role} "${pr(e[0].label)}" \xD7${t}: `+e.map(c=>c.id).join(" ")];let s=Array.from({length:o},(c,l)=>i[l]?`${e[l].role} "${pr(e[l].label)}"`:e[l].role),a=[];for(let c=0;c<t;c++)a.push(Array.from({length:o},(l,f)=>{let u=e[c*o+f];return i[f]?u.id:`${u.id} ${pr(r.get(u.id))}`}).join(" \xB7 "));return[`row \xD7${t} [${s.join(", ")}]`,...a]}function Fu(e,n,r){let o=0;for(;n+(o+1)*r<=e.length&&e.slice(n+o*r,n+(o+1)*r).every((t,i)=>ri(t)===ri(e[n+i]));)o++;return o}function uc(e,n,r=!1){let o=null,t=(c,l,f)=>!o||c>o.density+1e-9||Math.abs(c-o.density)<1e-9&&(l>o.len||l===o.len&&f<o.cycle.period);for(let c=0;c+6<=e.length;c++){let l=Math.min(50,Math.floor((e.length-c)/3));for(let f=1;f<=l;f++){let u=Fu(e,c,f);if(u<3||f===1&&new Set(e.slice(c,c+u).map(w=>w.label)).size>1)continue;let p=Array.from({length:f},(w,v)=>{let P=e[c+v].label;for(let E=1;E<u;E++)if(e[c+E*f+v].label!==P)return!1;return!0}),d=p.filter(Boolean).length;if(d===0&&new Set(e.slice(c,c+f).map(ri)).size<2)continue;let m=u*f;t(d/f,m,f)&&(o={start:c,len:m,cycle:{period:f,cycles:u,constant:p},density:d/f})}}if(!o)return e.map(c=>ac(c,n.get(c.id),r));let i=e.slice(0,o.start).map(c=>ac(c,n.get(c.id),r)),s=Uu(e.slice(o.start,o.start+o.len),o.cycle,n),a=uc(e.slice(o.start+o.len),n,r);return[...i,...s,...a]}var cc=e=>" ".repeat(e);function oi(e,{coords:n=!1}={}){let r=Du(e.map(s=>s.label)),o=new Map(e.map((s,a)=>[s.id,r[a]])),t=[],i=(s,a)=>{for(let{path:c,items:l}of Bu(s,f=>f.path?.[0])){t.push(`${cc(a)}${c}:`);let f=l.filter(p=>(p.path?.length??1)>1).map(p=>({...p,path:p.path.slice(1)})),u=l.filter(p=>(p.path?.length??1)<=1);for(let p of uc(u,o,n))t.push(`${cc(a+1)}${p}`);f.length&&i(f,a+1)}};return i(e,0),t.join(`
|
|
288
|
+
`)}function Ku(e){let n=[],r={};for(let o=0;o<e.length;o++){let t=e[o];if(t==="--url"){r.url=e[++o];continue}if(t==="--max-steps"){r.maxSteps=Number(e[++o]);continue}if(t==="--attach")throw new Error("--attach is temporarily disabled \u2014 own-profile Chrome only");if(t==="--extension"){r.mode="extension";continue}if(t==="--no-headless"){r.headless=!1;continue}if(t==="--enter"){r.enter=!0;continue}if(t==="--only"){r.only=e[++o];continue}if(t==="--parent"){r.parent=e[++o];continue}if(t==="--from"){r.from=Number(e[++o]);continue}if(t==="--len"){r.len=Number(e[++o]);continue}if(t==="--head"){r.head=Number(e[++o]);continue}if(t==="--tail"){r.tail=/^\d+$/.test(e[o+1]??"")?Number(e[++o]):!0;continue}if(t==="-C"){r.context=Number(e[++o]);continue}if(t==="-B"){r.before=Number(e[++o]);continue}if(t==="-A"){r.after=Number(e[++o]);continue}if(t==="-n"){r.lineNumbers=!0;continue}if(t==="-v"){r.invert=!0;continue}if(t==="-m"){r.max=Number(e[++o]);continue}if(t==="-q"){r.quiet=!0;continue}if(t==="--links"||t==="-l"){r.links=!0;continue}if(t==="--light"){r.light=!0;continue}if(t==="--nowait"){r.nowait=!0;continue}if(t==="--fields"){r.fields=pc(e[++o]);continue}if(t==="--expect-text"){(r.expectText||=[]).push(e[++o]);continue}if(t==="--expect-url"){r.expectUrl=e[++o];continue}if(t==="--expect-title"){r.expectTitle=e[++o];continue}if(t==="--prompt"){r.promptText=e[++o];continue}if(t==="--wait"){r.wait=e[++o];continue}if(t==="--no-coords"){r.noCoords=!0;continue}if(t==="--new"||t==="--new-tab"){r.newTab=!0;continue}if(t==="--timeout-ms"){r.timeoutMs=Number(e[++o]);continue}if(t==="--steps"){r.stepsJson=e[++o];continue}if(t==="--goal"){r.goal=e[++o];continue}n.push(t)}return{positional:n,opts:r}}function pc(e){let n={};for(let r of String(e||"").split(";")){let o=r.indexOf("=");o>0&&(n[r.slice(0,o).trim()]=r.slice(o+1))}return Object.keys(n).length?n:void 0}async function M(e,n){await X()||(console.error("9remote server is not running \u2014 start it first (9remote ui / start)"),process.exit(1));let r=process.env.NINE_REMOTE_SESSION_ID;/^[a-z0-9][a-z0-9_-]{0,40}$/i.test(r??"")&&(n.tabKey=r.toLowerCase());let o=await q("/api/browser-use",{action:e,payload:n});return o||(console.error("Local API unreachable"),process.exit(1)),o.json()}function C(e){if(!e?.ok)throw new Error(e?.error||"Request failed");return e}var si={};function le(e){console.log(`${e.url}`),console.log(`${e.title||""} \xB7 ${e.actions?.length??0} elements \xB7 ${e.w}x${e.h}`);let n=e.actions?.filter(r=>typeof r.node=="number").length??0;if(e.element_from!=null&&e.total_elements>n&&console.log(`[elements ${e.element_from+1}-${e.element_from+n} of ${e.total_elements}]`),!si.light){if(!e.element_from){let r=String(e.text||"").replace(/\s+/g," ").trim();r&&console.log(`text: ${r.slice(0,800)}${r.length>800?" \u2026":""}`)}console.log(oi(e.actions||[],{coords:!si.noCoords})),e.omitted_actions&&console.log(`\u2026 ${e.omitted_actions} more elements cut by the cap`)}}function Hu(e){let n=[],r="",o=null;for(let t of e){if(o){r+=t,t===o&&(o=null);continue}if(t==='"'||t==="'"){o=t,r+=t;continue}if(t===";"){n.push(r.trim()),r="";continue}r+=t}return r.trim()&&n.push(r.trim()),n.filter(Boolean)}function ju(e){let n=e.match(/^(go|click|select|type|enter|scroll|wait|run|read|search|find|hover|upload|shot)\b\s*(.*)$/);if(!n)throw new Error(`Cannot parse step: ${e}`);let[,r,o]=n,t=o.match(/"[^"]*"|'[^']*'|\S+/g)||[],i=c=>String(c).replace(/^["']|["']$/g,""),s=c=>{let l=t.indexOf(c);return l>=0?i(t[l+1]):void 0},a=c=>{let l=t.indexOf(c);return l>=0?Number(i(t[l+1])):void 0};switch(r){case"click":case"select":case"hover":return{op:r,id:i(t[0]),label:t[1]?i(t[1]):void 0};case"type":{let c=t.includes("--enter"),l=t.indexOf("--label"),f=l>=0?i(t[l+1]):void 0,u=new Set(["--enter"]);l>=0&&(u.add(l),u.add(l+1));let p=t.filter((d,m)=>!u.has(m));return{op:r,id:i(p[0]),label:f,text:i(p.slice(1).join(" ")),enter:c}}case"go":{let c=i(t[0]);if(!c)throw new Error(`go step needs a url or tab selector: ${e}`);return c==="tab"?{op:r,tab:i(t[1])}:/^#?\d+$/.test(c)?{op:r,tab:c}:{op:r,url:c,newTab:t.includes("--new")}}case"read":return{op:"read",parent:s("--parent"),head:a("--head"),tail:a("--tail"),from:a("--from"),len:a("--len")};case"search":return{op:"search",pattern:i(t[0]??""),context:a("-C"),before:a("-B"),after:a("-A"),lineNumbers:!t.includes("--no-numbers"),invert:t.includes("-v"),max:a("-m"),quiet:t.includes("-q"),links:t.includes("--links"),head:a("--head"),tail:a("--tail"),parent:s("--parent"),for:a("--for")};case"find":return{op:"find",pattern:i(t.join(" "))||void 0,from:a("--from"),tail:a("--tail"),parent:s("--parent")};case"upload":return{op:"upload",label:i(t[0]),file:i(t[1])};case"shot":return{op:r};case"enter":return{op:r};case"scroll":{let c=i(t[0]);return c==="to"?{op:r,to:i(t[1])}:c==="y"?{op:r,y:Number(i(t[1]))}:{op:r,direction:c||"down"}}case"wait":{let c=t[0];if(c&&/^["']/.test(c)){let l=Number(i(t[1]));return Number.isFinite(l)&&l>0?{op:r,text:i(c),ms:l}:{op:r,text:i(c)}}return{op:r,ms:Number(c)||300}}default:{let c=["--only","--parent","--expect-url","--expect-text","--fields","--max-steps","--prompt"],l=new Set;for(let d=0;d<t.length;d++)c.includes(t[d])&&(l.add(d),d+1<t.length&&l.add(d+1));let f=i(t.filter((d,m)=>!l.has(m)).join(" "));if(!f)throw new Error(`run step needs a goal (flags alone are not one): ${e}`);let u=t.indexOf("--expect-text"),p=u>=0?[i(t[u+1])]:void 0;return{op:"run",goal:f,only:s("--only"),parent:s("--parent"),fields:s("--fields")?pc(s("--fields")):void 0,maxSteps:s("--max-steps")?Number(s("--max-steps")):void 0,expectUrl:s("--expect-url"),expectText:p}}}}function Wu(e){for(let n of e.steps||[]){let r=[`#${n.seq}`,n.operation,n.targetIndex?`[${n.targetIndex}]`:"",n.label||""].filter(Boolean).join(" ");console.log(` ${r} \xB7 ${n.result}`)}console.log(`outcome: ${e.outcome}${e.reason?` \u2014 ${e.reason}`:""}`),console.log(`metrics: ${e.metrics?.steps??0} steps \xB7 ${e.metrics?.modelCalls??0} jev calls \xB7 ${Math.round((e.metrics?.elapsedMs??0)/100)/10}s`),console.log(`url: ${e.url||""}`),dc(e.console),e.outcome==="needs_verification"&&console.log("element table below \u2014 verify before claiming success (shot for visual).")}function dc(e){if(e?.length){console.log("console (tail):");for(let n of e)console.log(` ${n.level.padEnd(7)} ${n.text}`)}}var fc=`9remote browser \u2014 one-shot journeys: chain | batch | run
|
|
289
289
|
|
|
290
290
|
EVERY browser task is ONE call. Never poke one verb at a time.
|
|
291
291
|
|
|
@@ -319,40 +319,40 @@ ${h.dim(`Tail: tail -f ${jn}`)}`;await Ne("Logs",[{label:h.gray("\u2190 Back")}]
|
|
|
319
319
|
|
|
320
320
|
WHEN A CHAIN BREAKS: the response names the failing step, returns the live
|
|
321
321
|
state/console AND \`pending\` (the steps not yet run). Issue ONE new chain
|
|
322
|
-
with the pending steps adjusted \u2014 never fall back to single verbs.`,Gu=new Set(["chain","batch","sh","run","help","--help","-h",void 0]);function Vu(e,{fromBatch:
|
|
322
|
+
with the pending steps adjusted \u2014 never fall back to single verbs.`,Gu=new Set(["chain","batch","sh","run","help","--help","-h",void 0]);function Vu(e,{fromBatch:n=!1}={}){if(n||Gu.has(e))return null;let r={cat:"read",grep:"search",text:"search",elements:"find",ls:"find",jev:"run",delegate:"run"}[e]||e;return new Error(`single "${e}" is agent-disabled \u2014 pack it into a chain: 9remote browser chain --steps '[{"op":"${r}","label":"\u2026"}]' (or: 9remote browser batch < script)`)}var Yu=(e,n)=>{if(!e[0])throw new Error(`Missing ${n}`);return e[0]};async function ai(e,{fromBatch:n=!1}={}){let{positional:r,opts:o}=Ku(e);si=o;let[t,...i]=r,s=f=>String(f).replace(/^["']|["']$/g,""),a=i.map(s),c=o.mode==="attach";o.mode==="extension"&&(o.profile="__extension__");let l=(f={})=>({profile:c?"__attach__":void 0,...o,...f});try{let f=Vu(t,{fromBatch:n});if(f)throw f;switch(t){case void 0:case"help":case"--help":case"-h":console.log(fc);return;case"tabs":{let u=C(await M("tabs",l()));for(let p of u.tabs||[]){let d=p.active?"* ":" ",m=p.index?`#${p.index} `:"";console.log(`${d}${m}[${p.id}] ${p.title||"(untitled)"} \u2014 ${p.url}`)}return}case"go":{let u=a[0],p=u==="tab"||/^#?\d+$/.test(u||""),d=p?{tab:u==="tab"?a[1]:u}:{url:Yu(a,"url"),newTab:!!o.newTab},m=C(await M("go",l({...d,wait:o.wait,timeoutMs:o.timeoutMs}))),w=c?"real browser (debug)":o.mode==="extension"?"real browser (extension)":"isolated Chrome";console.log(p?`switched: #${m.index||""} ${m.title||""} \u2014 ${m.url||""}`:`went to ${a[0]} (${w})`),m.state&&le(m.state);return}case"ls":{let u=C(await M("ls",l()));le(u);return}case"clear":{let u=C(await M("clear",l()));console.log(`cleared site data: ${u.cleared}`);break}case"console":{let p=C(await M("console",l())).lines||[];p.length||console.log("(console empty)");for(let d of p)console.log(`${d.level.padEnd(7)} ${d.text}`);return}case"read":{let u=C(await M("read",l())),p=u.text||"",d=u.from||0;(d>0||(u.total||0)>d+p.length)&&console.log(`[chunk ${d}-${d+p.length} of ${u.total??"?"} chars]`),console.log(p),p.trim()||console.log("(no readable text \u2014 wrong section name? ls shows sections in the tree)");return}case"search":{let u=C(await M("search",l({pattern:a.join(" ")})));u.text&&console.log(u.text),console.log(`(${u.matched??0} matches)`),!u.quiet&&!(u.matched>0)&&(process.exitCode=1);return}case"find":{let u=C(await M("find",l({pattern:a.join(" ")})));console.log(`${u.matched??0}/${u.total??"?"} elements:`),console.log(oi(u.actions||[],{coords:!0}));return}case"sh":case"batch":{let u="";try{u=ii.default.readFileSync(0,"utf8")}catch{console.error("batch reads commands from stdin: 9remote browser batch < script.txt"),process.exitCode=1;return}let p=u.split(`
|
|
323
323
|
`).map(d=>d.trim()).filter(d=>d&&!d.startsWith("#"));for(let d of p){let m=/\s*&\s*$/.test(d),w=d.replace(/\s*&\s*$/,""),v=w.match(/"[^"]*"|'[^']*'|\S+/g)||[];m&&v.push("--light"),console.log(`
|
|
324
|
-
$ ${w}`);try{await ai(v,{fromBatch:!0})}catch(P){console.error(` \u2717 ${P.message}`)}}return}case"run":{let u=
|
|
325
|
-
`))console.log(` ${w}`);p.failedStep&&
|
|
324
|
+
$ ${w}`);try{await ai(v,{fromBatch:!0})}catch(P){console.error(` \u2717 ${P.message}`)}}return}case"run":{let u=C(await M("run",l({goal:a.join(" ")})));if(Wu(u),u.verification){console.log(`verification: ${u.verification.passed?"PASSED \u2014 independently verified, safe to report success":"FAILED"}`);for(let[p,d]of Object.entries(u.verification.checks))d||console.log(` not met: ${p}`)}u.frame&&console.log(`frame: ${u.frame}`),u.state&&le(u.state);return}case"click":{let u=C(await M("click",l({id:a[0],wait:o.wait,timeoutMs:o.timeoutMs})));console.log(`clicked ${a[0]}`),u.state&&le(u.state);return}case"clickxy":{let u=C(await M("clickxy",l({x:Number(a[0]),y:Number(a[1])})));console.log(`clicked x=${a[0]} y=${a[1]}`),u.state&&le(u.state);return}case"scroll":{let u=String(a[0]||"").toLowerCase(),p;["top","bottom"].includes(u)?p={edge:u}:["down","up"].includes(u)?p={direction:u}:u==="to"?p={to:String(a[1]||"")}:u==="y"?p={y:Number(a[1])}:p={px:Number(u)||void 0,direction:"down"};let d=C(await M("scroll",l(p)));d.state&&le(d.state);return}case"back":case"forward":{let u=C(await M(t,l()));u.state&&le(u.state);return}case"reload":{let u=C(await M("reload",l()));u.state&&le(u.state);return}case"key":{let u=C(await M("key",l({name:a[0]})));u.state&&le(u.state);return}case"hover":{let u=C(await M("hover",l({id:a[0]})));console.log(`hovered ${a[0]}`),u.state&&le(u.state);return}case"wait":{let u=/^\d+$/.test(i.at(-1)??"")?Number(i.at(-1)):null,d=(u!=null?a.slice(0,-1):a).join(" "),m=C(await M("wait",l({text:d,timeoutMs:u??void 0})));console.log(`wait "${d}": ${m.found?"FOUND":"TIMEOUT"}`),m.state&&le(m.state);return}case"tabclose":{let u=a[0]??null,p=C(await M("tabclose",l(u!=null?{target:u}:{})));console.log(`closed: ${p.closed}`);return}case"type":{let u=C(await M("type",l({id:a[0],text:a.slice(1).join(" "),enter:!!o.enter,wait:o.wait,timeoutMs:o.timeoutMs})));console.log(`typed into ${a[0]}${o.enter?" + enter":""}`),u.state&&le(u.state);return}case"upload":{let u=C(await M("upload",l({id:a[0],file:a[1]})));console.log(`uploaded ${u.uploaded} into ${a[0]}`),u.state&&le(u.state);return}case"download":{let u=C(await M("download",l({timeout:o.timeout})));console.log(`downloaded: ${u.download.path}`);return}case"drag":{let u=C(await M("drag",l({from:a[0],to:a[1]})));console.log(`dragged ${a[0]} onto ${a[1]}`);return}case"enter":{let u=C(await M("enter",l()));console.log("enter pressed"),u.state&&le(u.state);return}case"shot":{let u=C(await M("shot",l())),p=`/tmp/9remote-shot-${Date.now()}.jpg`;ii.default.writeFileSync(p,Buffer.from(u.image,"base64")),console.log(p);return}case"chain":{let u;if(o.stepsJson){try{u=JSON.parse(o.stepsJson)}catch{throw new Error("--steps is not valid JSON")}if(!Array.isArray(u)||!u.length)throw new Error("--steps needs a non-empty JSON array")}else u=Hu(a.join(" ")).map(ju);let p=await M("chain",l({steps:u}));if(!p?.results){C(p);return}for(let m of p.results)if(console.log(` ${m.ok?m.skipped?"skip":"ok":"FAIL"} #${m.step} ${m.summary||m.op}${m.error?` \u2014 ${m.error}`:""}`),["read","search","find"].includes(m.op)&&m.text)for(let w of m.text.split(`
|
|
325
|
+
`))console.log(` ${w}`);p.failedStep&&console.log(`chain stopped at step ${p.failedStep}`),p.goal&&console.log(`goal "${p.goal}" \u2014 reached ${p.progress}`),p.pending?.length&&console.log(`pending: ${JSON.stringify(p.pending)}`),p.note&&console.log(p.note),dc(p.console);let d=p.results?.some(m=>m.text?.trim());p.state&&(p.failedStep||!d)?le(p.state):p.state&&console.log(`${p.state.url} \xB7 ${p.state.title||""} \xB7 ${p.state.actions?.length??0} elements`);return}case"close":C(await M("close",l())),console.log("closed");return;case"attach":throw new Error("attach is temporarily disabled \u2014 own-profile Chrome only");case"status":{let u=C(await M("status",{}));console.log(JSON.stringify(u,null,2));return}default:throw new Error(`Unknown browser subcommand: ${t}
|
|
326
326
|
${fc}`)}}catch(f){console.error(f.message),process.exitCode=1}}var mc=[["9remote","Interactive menu (TUI). Falls back to help with no TTY."],["9remote start","Run server + tunnel in foreground (headless)."],["9remote key","Show permanent key + connect URL."],["9remote key --new","Regenerate the permanent key."],["9remote otk","Create a fresh one-time connect key + URL."],["9remote devices","List approved devices."],["9remote auto-approve <on|off>","Toggle device auto-approve."],["9remote approve <socketId>","Approve a pending device."],["9remote help","Show this help."]];function zr(){rn(De()),console.log(h.white.bold(`
|
|
327
327
|
Usage:
|
|
328
|
-
`));let e=Math.max(...mc.map(([
|
|
328
|
+
`));let e=Math.max(...mc.map(([n])=>n.length))+2;for(let[n,r]of mc)console.log(" "+h.cyan(n.padEnd(e))+h.gray(r));console.log()}async function dr(){return await X()?!0:(console.log(h.red(`
|
|
329
329
|
\u2717 Server not running. Start it first: `)+h.cyan("9remote start")+`
|
|
330
|
-
`),!1)}async function qu(e){if(!await
|
|
330
|
+
`),!1)}async function qu(e){if(!await dr())return;if(e){let r=await q("/api/key/regenerate"),o=r&&r.ok?await r.json():null;if(!o?.permanentKey){console.log(h.red(`
|
|
331
331
|
\u2717 Regenerate failed
|
|
332
332
|
`));return}console.log(h.green(`
|
|
333
333
|
\u2713 New key: `)+h.white.bold(o.permanentKey)+`
|
|
334
|
-
`);return}let
|
|
334
|
+
`);return}let n=await te("/api/ui/state")||{};if(!n.permanentKey){console.log(h.red(`
|
|
335
335
|
\u2717 No key yet. Run: `)+h.cyan("9remote start")+`
|
|
336
336
|
`);return}console.log(h.white(`
|
|
337
|
-
Key`.padEnd(14))+h.white.bold(
|
|
338
|
-
`)}async function Xu(){if(!await
|
|
337
|
+
Key`.padEnd(14))+h.white.bold(n.permanentKey)),n.qrUrl&&console.log(h.white("Connect URL".padEnd(14))+h.cyan(n.qrUrl)),console.log(h.white("App URL".padEnd(14))+h.gray(`${I}/login`)+`
|
|
338
|
+
`)}async function Xu(){if(!await dr())return;let e=await q("/api/key/one-time"),n=e&&e.ok?await e.json():null;if(!n?.qrUrl){console.log(h.red(`
|
|
339
339
|
\u2717 Failed to create one-time key
|
|
340
340
|
`));return}console.log(h.green(`
|
|
341
|
-
\u2713 One-time key (30 min): `)+h.white.bold(
|
|
342
|
-
`)}async function Ju(){if(!await
|
|
343
|
-
Auto-approve: `)+(
|
|
344
|
-
`));return}console.log(h.white(`Approved devices (${
|
|
341
|
+
\u2713 One-time key (30 min): `)+h.white.bold(n.oneTimeKey)),console.log(h.white("Connect URL ")+h.cyan(n.qrUrl)+`
|
|
342
|
+
`)}async function Ju(){if(!await dr())return;let n=(await te("/api/device/approved")||{}).devices||[],r=await te("/api/device/auto-approve")||{};if(console.log(h.white(`
|
|
343
|
+
Auto-approve: `)+(r.enabled?h.green("ON"):h.gray("OFF"))),!n.length){console.log(h.gray(`No approved devices
|
|
344
|
+
`));return}console.log(h.white(`Approved devices (${n.length}):`));for(let o of n)console.log(" "+h.cyan(o.deviceId));console.log()}async function Qu(e){if(!await dr())return;let n=e==="on";if(e!=="on"&&e!=="off"){console.log(h.red(`
|
|
345
345
|
\u2717 Usage: 9remote auto-approve <on|off>
|
|
346
|
-
`));return}let
|
|
346
|
+
`));return}let r=await q("/api/device/auto-approve",{enabled:n}),o=r&&r.ok?await r.json():null;console.log(h.green(`
|
|
347
347
|
\u2713 Auto-approve: `)+(o?.enabled?h.green("ON"):h.gray("OFF"))+`
|
|
348
|
-
`)}async function zu(e){if(!await
|
|
348
|
+
`)}async function zu(e){if(!await dr())return;if(!e){let t=(await te("/api/device/pending")||{}).pending||[];if(!t.length){console.log(h.gray(`
|
|
349
349
|
No pending devices
|
|
350
350
|
`));return}console.log(h.white(`
|
|
351
351
|
Pending devices (${t.length}):`));for(let i of t)console.log(" "+h.cyan(i.socketId)+h.gray(` ${i.deviceId?.slice(0,8)||""} ${i.ip||""}`));console.log(h.gray(`
|
|
352
352
|
Approve with: `)+h.cyan("9remote approve <socketId>")+`
|
|
353
|
-
`);return}let
|
|
353
|
+
`);return}let n=await q("/api/device/approve",{socketId:e}),r=n&&n.ok?await n.json():null;console.log(r?.ok?h.green(`
|
|
354
354
|
\u2713 Approved
|
|
355
355
|
`):h.red(`
|
|
356
356
|
\u2717 Approve failed (invalid socketId?)
|
|
357
|
-
`))}async function hc(e){let
|
|
358
|
-
`),process.exit(0));Mi();async function Zu(){let e=process.argv[2];if(await hc(process.argv))return;let
|
|
357
|
+
`))}async function hc(e){let n=e[2],r=e.slice(3);switch(n){case"help":case"-h":case"--help":return zr(),!0;case"key":return await qu(r.includes("--new")),!0;case"otk":return await Xu(),!0;case"devices":return await Ju(),!0;case"browser":return await ai(r),!0;case"auto-approve":return await Qu(r[0]),!0;case"approve":return await zu(r[0]),!0;default:return!1}}var ci=process.argv[2];(ci==="version"||ci==="--version"||ci==="-v")&&(process.stdout.write(De()+`
|
|
358
|
+
`),process.exit(0));Mi();async function Zu(){let e=process.argv[2];if(await hc(process.argv))return;let n=process.argv.includes("--tray")||process.argv.includes("--auto")||process.argv.includes("--start"),r=["ui","tui","start","help","-h","--help"].includes(e);if(e&&!e.startsWith("--")&&!r&&!n){zr();return}n||Br(),e==="ui"?await Za():e==="tui"?await Qr():e==="start"||process.argv.includes("--auto")?await tc():process.argv.includes("--tray")||process.argv.includes("--start")?await ec():process.stdin.isTTY?await sc():zr()}Zu().catch(console.error);
|