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
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5788],{2163:(e,t,r)=>{r.d(t,{o:()=>n});function n(e){if(!e)return"";if(e.length<=14)return e;let t=e.substring(0,8),r=e.substring(e.length-6),n="•".repeat(12);return`${t}${n}${r}`}},2805:(e,t,r)=>{r.d(t,{Yr:()=>l,_r:()=>s,gJ:()=>o,rh:()=>c,sP:()=>a});var n=r(90076);let i=/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/;function s(){let e=window.location.hostname;return"localhost"===e||"::1"===e||"[::1]"===e||e.startsWith("127.")||e.endsWith(".localhost")}function a(){return s()||!!window.__TAURI__}function o(){return!!window.__TAURI__||window.location.port===String(n._8)||!0}function l(){if(s())return!0;let e=i.exec(window.location.hostname);if(!e||e.slice(1).some(e=>Number(e)>255))return!1;let t=Number(e[1]),r=Number(e[2]);return 10===t||192===t&&168===r||172===t&&!!(r>=16)&&!!(r<=31)}function c(e){return s()&&window.location.port!==String(n._8)?e?.loopbackOrigin||n.w||n.lE:null}},4018:(e,t,r)=>{r.d(t,{N:()=>i.N0,u:()=>l});var n=r(1521),i=r(86129);let s="9remote_api_keys",a=()=>{window.dispatchEvent(new Event(i.N0))};function o(e){try{return btoa(e)}catch{return e}}function l(){let e=(0,n.useCallback)(()=>{try{let e=localStorage.getItem(s);if(!e)return[];return JSON.parse(e).map(e=>({...e,key:function(e){try{return atob(e)}catch{return e}}(e.key)}))}catch(e){return console.error("Failed to load API keys:",e),[]}},[!0]),t=(0,n.useCallback)((t,r="")=>{if(t&&1)try{let n=e(),i=n.findIndex(e=>e.key===t);if(-1!==i){let e=n.map((e,t)=>({...e,key:o(e.key),lastLoginDate:t===i?new Date().toISOString():e.lastLoginDate}));localStorage.setItem(s,JSON.stringify(e));return}let l={id:Date.now().toString(),key:o(t),label:r||`Key ${n.length+1}`,createdAt:new Date().toISOString(),lastLoginDate:new Date().toISOString()},c=[...n.map(e=>({...e,key:o(e.key)})),l];localStorage.setItem(s,JSON.stringify(c)),a()}catch(e){console.error("Failed to save API key:",e)}},[!0,e]),r=(0,n.useCallback)((t,r)=>{try{let n=e(),i=n.findIndex(e=>e.id===t),l=i+r;if(-1===i||l<0||l>=n.length)return;[n[i],n[l]]=[n[l],n[i]],localStorage.setItem(s,JSON.stringify(n.map(e=>({...e,key:o(e.key)})))),a()}catch(e){console.error("Failed to move API key:",e)}},[!0,e]),i=(0,n.useCallback)(t=>{try{let r=e().filter(e=>e.id!==t).map(e=>({...e,key:o(e.key)}));localStorage.setItem(s,JSON.stringify(r)),a()}catch(e){console.error("Failed to remove API key:",e)}},[!0,e]),l=(0,n.useCallback)(()=>{try{localStorage.removeItem(s)}catch(e){console.error("Failed to clear API keys:",e)}},[!0]),c=(0,n.useCallback)(()=>{try{let e=localStorage.getItem(s);if(!e)return!1;return JSON.parse(e).length>0}catch{return!1}},[!0]),d=(0,n.useCallback)((t,r)=>{try{let n=e().map(e=>({...e,key:o(e.key),label:e.id===t?r:e.label||""}));localStorage.setItem(s,JSON.stringify(n)),a()}catch(e){console.error("Failed to rename API key:",e)}},[!0,e]),u=(0,n.useCallback)(t=>{if(t&&1)try{let r=e().map(e=>({...e,key:o(e.key),lastLoginDate:e.key===t?new Date().toISOString():e.lastLoginDate}));localStorage.setItem(s,JSON.stringify(r))}catch(e){console.error("Failed to update last login date:",e)}},[!0,e]);return{saveKey:t,loadKeys:e,moveKey:r,removeKey:i,renameKey:d,clearKeys:l,hasStoredKeys:c,updateLastLogin:u}}},7938:(e,t,r)=>{r.d(t,{D5:()=>a,FO:()=>c,I9:()=>l,Ic:()=>o,eR:()=>n,ij:()=>s,tC:()=>i});let n={namespace:"/remote",enableWebRTC:!0,enableTurn:!1,debug:{transport:!1,remote:!1,panel:!1,showButton:!1},dcChunkSize:8,dcReliable:!1,dcOrdered:!1,hashRequestInterval:1500,lastDataThreshold:500,restreamDelay:200,mouseThrottle:8,keyThrottle:25,scrollInterval:100,tileLoadTimeout:600,batchSize:16,batchDelay:3,decodeQueueCap:48,resizeDebounceMs:100,resizeStableFrames:3,resizeMaxFrames:30,focusDebounce:50,longPressDelay:1e3,doubleClickDelay:300,moveThreshold:10,edgeScrollThreshold:15,edgeScrollMultiplier:1.5,momentumFriction:.94,momentumMinVelocity:.3,pointerMode:"trackpad",trackpadSensitivity:1.3,trackpadAcceleration:1.5,trackpadTapMaxMove:8,trackpadTapMaxDuration:220,trackpadCursorSize:20,trackpadEdgeMarginRatio:.25,clipboardBadgeTimeout:1e4,gestureLockDelay:80,gestureDistanceThreshold:15,gestureCentroidThreshold:10,gestureDominanceRatio:2,wheelScrollMultiplier:2.5,wheelLineHeight:40,wheelPageHeight:400,wheelZoomStep:.1,wheelBoostInterval:250,mouseButtonMap:{0:"left",1:"middle",2:"right"},pcModeControls:{rectangleSelect:!1,pointerModeToggle:!1,handMode:!1,keyboardToggle:!1,textPanel:!0,modifierRow:!0,help:!0}},i={ctrl:"control",cmd:"command",alt:"alt",shift:"shift"},s=[{id:"ctrl",label:"Ctrl",modifier:"ctrl",type:"modifier"},{id:"alt",label:"Alt",modifier:"alt",type:"modifier"},{id:"shift",label:"Shift",modifier:"shift",type:"modifier"},{id:"cmd",label:"⌘",modifier:"cmd",type:"modifier"},{id:"esc",label:"Esc",key:"escape",type:"key"},{id:"tab",label:"Tab",key:"tab",type:"key"},{id:"enter",label:"↵",key:"enter",type:"key",primary:!0},{id:"backspace",label:"⌫",key:"backspace",type:"key"},{id:"undo",label:"Undo",key:"z",modifiers:["control"],type:"combo",osAdaptive:!0},{id:"redo",label:"Redo",key:"z",modifiers:["control","shift"],type:"combo",osAdaptive:!0},{id:"up",label:"↑",key:"up",type:"arrow"},{id:"down",label:"↓",key:"down",type:"arrow"},{id:"left",label:"←",key:"left",type:"arrow"},{id:"right",label:"→",key:"right",type:"arrow"},{id:"home",label:"Home",key:"home",type:"key"},{id:"end",label:"End",key:"end",type:"key"},{id:"pgup",label:"PgUp",key:"pageup",type:"key"},{id:"pgdn",label:"PgDn",key:"pagedown",type:"key"},{id:"del",label:"Del",key:"delete",type:"key"},{id:"ins",label:"Ins",key:"insert",type:"key"},{id:"f1",label:"F1",key:"f1",type:"key"},{id:"f2",label:"F2",key:"f2",type:"key"},{id:"f3",label:"F3",key:"f3",type:"key"},{id:"f4",label:"F4",key:"f4",type:"key"},{id:"f5",label:"F5",key:"f5",type:"key"},{id:"f6",label:"F6",key:"f6",type:"key"},{id:"f7",label:"F7",key:"f7",type:"key"},{id:"f8",label:"F8",key:"f8",type:"key"},{id:"f9",label:"F9",key:"f9",type:"key"},{id:"f10",label:"F10",key:"f10",type:"key"},{id:"f11",label:"F11",key:"f11",type:"key"},{id:"f12",label:"F12",key:"f12",type:"key"},{id:"ctrlAltDel",label:"Ctl+Alt+Del",key:"delete",modifiers:["control","alt"],type:"combo"},{id:"ctrlShiftEsc",label:"Task Mgr",key:"escape",modifiers:["control","shift"],type:"combo"},{id:"altTab",label:"Alt+Tab",key:"tab",modifiers:["alt"],type:"combo"},{id:"altF4",label:"Alt+F4",key:"f4",modifiers:["alt"],type:"combo"},{id:"winKey",label:"Win",key:"command",type:"key"},{id:"printScreen",label:"PrtSc",key:"printscreen",type:"key"},{id:"paste",label:"Paste",key:"v",modifiers:["control"],type:"combo",osAdaptive:!0},{id:"cut",label:"Cut",key:"x",modifiers:["control"],type:"combo",osAdaptive:!0},{id:"selectAll",label:"All",key:"a",modifiers:["control"],type:"combo",osAdaptive:!0},{id:"desktopPrev",label:"◀ Desk",type:"desktop",direction:"prev"},{id:"desktopNext",label:"Desk ▶",type:"desktop",direction:"next"},{id:"desktopNew",label:"+ Desk",type:"desktop",direction:"new"}],a=["esc","undo","up","down","tab","ctrl","alt","shift","cmd","backspace"],o="enter",l=[["left","right","home","end","pgup","pgdn","del"],["f1","f2","f3","f4","f5","f6","f7","altTab"],["f9","f10","f11","f12","ctrlAltDel",,"desktopPrev","desktopNext","desktopNew"]],c={enter:"enter",return:"enter",space:" ",backspace:"backspace",tab:"tab",escape:"escape",Enter:"enter"," ":"space",Backspace:"backspace",Tab:"tab",Escape:"escape",ArrowUp:"up",ArrowDown:"down",ArrowLeft:"left",ArrowRight:"right",Home:"home",End:"end",PageUp:"pageup",PageDown:"pagedown",Delete:"delete",Insert:"insert",F1:"f1",F2:"f2",F3:"f3",F4:"f4",F5:"f5",F6:"f6",F7:"f7",F8:"f8",F9:"f9",F10:"f10",F11:"f11",F12:"f12",CapsLock:"capslock",NumLock:"numlock",ScrollLock:"scrolllock",PrintScreen:"printscreen",ContextMenu:"menu"}},11155:(e,t,r)=>{function n(e){return"string"==typeof e&&!!e&&/^sk-[a-z0-9]{8}-[a-z0-9]{4}-[0-9a-f]{6}$/.test(e.trim().toLowerCase())}function i(e){if("string"!=typeof e||!/^sk-[a-z0-9]{8}-[a-np-z1-9]{8}-[a-np-z1-9]{8}$/.test(e))return e||null;let t=e.split("-");return`${t[0]}-${t[1]}-${t[2]}`}function s(e){return"string"==typeof e&&/^sk-[a-z0-9]{8}-[a-np-z1-9]{8}-[a-np-z1-9]{8}$/.test(e)?e.split("-")[3]:null}r.d(t,{Cj:()=>s,PF:()=>n,Uo:()=>i})},11865:(e,t,r)=>{r.d(t,{A:()=>l});var n=r(73365),i=r(1521),s=r(64683),a=r(80186),o=r(78762);function l({isOpen:e,onClose:t,onScan:c}){let{t:d}=(0,o.s)(),u=(0,i.useRef)(null),h=(0,i.useRef)(null),p=(0,i.useRef)(null),m=(0,i.useRef)(null),f=(0,i.useRef)(null),[y,g]=(0,i.useState)(""),[_,b]=(0,i.useState)(""),w=(0,i.useCallback)(async e=>{if(h.current)try{await h.current.stop()}catch(e){}b("detected"),await new Promise(e=>setTimeout(e,300)),b("authenticating"),await c(e)||(b(""),f.current?.())},[c]),k=(0,i.useCallback)(async()=>{if(!p.current){let e=await Promise.all([r.e(3446),r.e(6075)]).then(r.bind(r,16075)).catch(()=>null);if(!e)return void g(d("login.qrLibFail"));p.current=e.Html5Qrcode}let e=document.getElementById("qr-reader");if(!e)return void g(d("login.qrInitFail"));try{e.innerHTML="";let t=new p.current("qr-reader");h.current=t,await t.start({facingMode:"environment"},{fps:10,qrbox:{width:250,height:250}},e=>{m.current?.(e)},()=>{})}catch(t){let e=t.toString();e.includes("NotAllowedError")?g(d("login.qrCamDenied")):e.includes("NotFoundError")?g(d("login.qrNoCamera")):e.includes("NotReadableError")?g(d("login.qrCamBusy")):g(d("login.qrCamError"))}},[d]),A=(0,i.useCallback)(async()=>{if(h.current){try{await h.current.stop()}catch(e){}h.current=null}g(""),b(""),t()},[t]);return((0,i.useEffect)(()=>{m.current=w},[w]),(0,i.useEffect)(()=>{if(!e)return;let t=!1;f.current=async()=>{h.current=null,await new Promise(e=>setTimeout(e,400)),t||k()};let r=setTimeout(()=>{t||k()},200);return()=>{if(t=!0,clearTimeout(r),f.current=null,h.current){try{h.current.stop()}catch(e){}h.current=null}}},[e,k]),e)?(0,n.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/80 backdrop-blur-sm",children:(0,n.jsxs)("div",{className:"relative card-elev max-w-md w-full mx-4 overflow-hidden",children:[(0,n.jsxs)("div",{className:"flex items-center justify-between p-4 border-b border-border",children:[(0,n.jsx)("h2",{className:"text-xl font-bold text-text",children:d("login.qrScanTitle")}),(0,n.jsx)("button",{onClick:A,className:"text-text-muted hover:text-text transition-colors p-1",children:(0,n.jsx)(s.X,{size:24})})]}),(0,n.jsx)("div",{className:"relative bg-black",children:(0,n.jsx)("div",{id:"qr-reader",ref:u,className:"w-full",style:{minHeight:"300px"}})}),(0,n.jsxs)("div",{className:"p-4",children:[y?(0,n.jsxs)("div",{className:"flex items-start gap-2 p-3 bg-red-500/10 rounded-brand text-red-400",children:[(0,n.jsx)(s.RI,{size:20,className:"flex-shrink-0 mt-0.5"}),(0,n.jsx)("p",{className:"text-sm",children:y})]}):"detected"===_?(0,n.jsxs)("div",{className:"flex items-center justify-center gap-2 p-3 bg-green-500/10 rounded-brand text-green-400",children:[(0,n.jsx)(s.vW,{size:22}),(0,n.jsx)("p",{className:"text-sm font-medium",children:d("login.qrDetected")})]}):"authenticating"===_?(0,n.jsx)("div",{className:"flex items-center justify-center gap-2 p-3 bg-brand-500/10 rounded-brand text-brand-400",children:(0,n.jsx)("p",{className:"text-sm font-medium",children:d("login.qrAuthenticating")})}):(0,n.jsx)("p",{className:"text-sm text-text-muted text-center",children:d("login.qrHint")}),(0,n.jsx)(a.A,{variant:"secondary",onClick:A,disabled:"authenticating"===_,className:"w-full mt-4",children:"authenticating"===_?d("login.qrPleaseWait"):d("common.cancel")})]})]})}):null}},18057:(e,t,r)=>{r.d(t,{A:()=>c});var n=r(73365),i=r(1521),s=r(64683),a=r(8910),o=r(78762),l=r(52345);function c({isOpen:e,onClose:t}){let{t:r,locale:d,setLocale:u}=(0,o.s)();return((0,i.useEffect)(()=>{if(!e)return;let r=e=>{"Escape"===e.key&&t()};return window.addEventListener("keydown",r),()=>window.removeEventListener("keydown",r)},[e,t]),e)?(0,n.jsxs)("div",{className:"fixed inset-0 z-[60] flex items-center justify-center p-4",children:[(0,n.jsx)("div",{className:"absolute inset-0 bg-black/60 backdrop-blur-[2px] animate-in fade-in duration-200",onClick:t}),(0,n.jsxs)("div",{className:"relative card-elev max-w-lg w-full max-h-[90dvh] flex flex-col animate-in zoom-in-95 duration-200",children:[(0,n.jsxs)("div",{className:"px-5 py-4 flex items-center justify-between flex-shrink-0",children:[(0,n.jsx)("h3",{className:"text-lg font-semibold text-text",children:r("menu.language")}),(0,n.jsx)("button",{onClick:t,className:"p-2 text-text-muted hover:text-text hover:bg-surface-2 rounded-brand transition-all duration-150 ease-out","aria-label":r("common.close"),children:(0,n.jsx)(s.X,{size:20})})]}),(0,n.jsx)("div",{className:"flex-1 overflow-y-auto modal-scrollable p-3",children:(0,n.jsx)("div",{className:"grid grid-cols-2 sm:grid-cols-3 gap-2",children:l.dI.map(e=>{let r=e.code===d;return(0,n.jsxs)("button",{onClick:()=>{var r;return r=e.code,void((0,a.e)(),u(r),t())},className:`px-2 py-2 rounded-brand flex items-center gap-2 transition-all duration-150 ease-out active:scale-[0.97] min-w-0 ${r?"bg-brand-500 text-white":"text-text hover:bg-surface-2"}`,children:[(0,n.jsx)("img",{src:`https://flagcdn.com/w80/${e.country}.png`,alt:e.label,className:"w-5 h-[14px] object-cover rounded-[2px] flex-shrink-0",loading:"lazy"}),(0,n.jsx)("span",{className:"flex-1 text-sm font-medium truncate text-left",children:e.label}),r&&(0,n.jsx)(s.aJ,{size:14,className:"flex-shrink-0"})]},e.code)})})})]})]}):null}},20464:(e,t,r)=>{r.d(t,{As:()=>f,zg:()=>u});var n=r(1521),i=r(29717),s=r(90076),a=r(11155),o=r(90084),l=r(2805),c=r(97711);let d="wrong-key-tail";async function u(e,t,r=s.qn){try{let t=new AbortController,n=setTimeout(()=>t.abort(),r),i=await fetch(`${e}/api/health`,{signal:t.signal});return clearTimeout(n),i.ok}catch{return!1}}async function h(e,{tail:t,tempKey:r},n=s.qn){try{let i=new AbortController,s=setTimeout(()=>i.abort(),n),a=await fetch(`${e}/api/verify-key`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({tail:t||null,tempKey:r||null}),signal:i.signal});if(clearTimeout(s),!a.ok)return null;return(await a.json())?.ok===!0}catch{return null}}async function p(){return(0,l._r)()?(0,l.rh)(await m()):(0,l.Yr)()?window.location.origin:null}async function m(){try{let e=await fetch(s.TR);return e.ok?await e.json():null}catch{return null}}function f(){let[e,t]=(0,n.useState)(!1),[r,l]=(0,n.useState)(""),u=(0,i.useRouter)(),{setAuth:f}=(0,c.Fo)(),y=(0,n.useCallback)(async(e,{persistSession:r=!0}={})=>{t(!0),l("");try{let t,n=await p();if(n){let t=e.tail||(0,a.Cj)(e.apiKey||""),i=e.tempKey||(e.token?.length<=8?e.token:null),s=await m(),c=(0,a.Uo)(s?.permanentKey||""),u=(0,a.Uo)(e.apiKey||e.token||""),p=String(s?.oneTimeKey||"").slice(0,6).toUpperCase(),y=i?!!p&&p===i.toUpperCase():!!c&&!!u&&(0,a.Uo)(c)===u;try{let s=y?await h(n,{tail:t,tempKey:i}):null;if(!0===s){let s=e.apiKey||i||"",l=(0,a.Uo)(s)||"direct";return t&&(0,o.LG)(l,{tail:t}),r&&f({apiKey:l,tunnelUrl:n,mode:"local",tempKey:i?i.toUpperCase():null,localIp:null}),{success:!0,shouldAskToSave:!0,apiKey:l}}if(!1===s)return l(d),{success:!1,wrongTail:!0}}catch{}}let i=new AbortController,c=setTimeout(()=>i.abort(),s.cC);try{t=await fetch(s.Sn.connect,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...e,apiKey:(0,a.Uo)(e.apiKey)}),signal:i.signal})}catch(e){throw Error(e?.name==="AbortError"?"Connection timed out. Please try again.":"Network error. Please try again.")}finally{clearTimeout(c)}if(!t.ok){let e=await t.json().catch(()=>({}));throw Error(e.error||"Authentication failed")}let u=await t.json(),y=(0,a.Uo)(e.apiKey||u.apiKey);u.hostKeys?.x&&(0,o.LG)(y,{hostSealKey:u.hostKeys.x,hostPubKey:u.hostKeys.ed||null});let g=e.tail||(0,a.Cj)(e.apiKey||"");if(u.tunnelUrl&&(g||e.tempKey)){let t=await h(u.tunnelUrl,{tail:g,tempKey:e.tempKey||null});if(!1===t)return l(d),{success:!1,wrongTail:!0}}return r&&f({apiKey:y,tunnelUrl:u.tunnelUrl||null,mode:"remote",tempKey:e.tempKey?e.tempKey.toUpperCase():null,localIp:u.localIp||null}),{success:!0,shouldAskToSave:!0,apiKey:y}}catch(e){return l(e.message),{success:!1,error:e.message}}finally{t(!1)}},[u,f]);return{loading:e,error:r,setError:l,authenticateWithToken:(0,n.useCallback)(async(e,t=!1,r=null,n)=>t?y({token:e,tempKey:e,tail:r},n):y({token:e},n),[y]),authenticateWithApiKey:(0,n.useCallback)((e,t)=>y({apiKey:e},t),[y])}}},27520:(e,t,r)=>{r.d(t,{FQ:()=>l,Lq:()=>m,UX:()=>o,k_:()=>d,yO:()=>c});var n=r(2805);let i=[],s=new Set,a=location.hostname.startsWith("dev.")||"localhost"===location.hostname&&!(0,n.gJ)()||"1"===localStorage.getItem("9remote:termLog");function o(){return a}function l(){return i}function c(e){return s.add(e),()=>s.delete(e)}function d(){for(let e of(i.length=0,s))try{e(null)}catch(e){}}function u(e){if(null==e)return"";if(e instanceof Uint8Array||ArrayBuffer.isView(e)||e instanceof ArrayBuffer)return`<${e.byteLength}b>`;if("string"==typeof e)return e.length>120?`${e.slice(0,60)}…${e.length}b`:e;if("object"==typeof e)try{return JSON.stringify(e)}catch(e){}return String(e)}let h=new Set(["recv"]),p=null;function m(e,...t){if(!a)return;let r=Date.now(),n=t.map(u).join(" ");if(p&&p.category===e&&p.baseMsg===n&&r-p.ts<3e3||h.has(e)&&p&&p.category===e&&r-p.ts<300){p.count=(p.count||1)+1,p.ts=r,p.msg=`${n} \xd7${p.count}`,queueMicrotask(()=>{for(let e of s)try{e(p)}catch(e){}});return}let o={ts:r,category:e,msg:n,baseMsg:n,count:1};p=o,i.push(o),i.length>800&&i.shift(),queueMicrotask(()=>{for(let e of s)try{e(o)}catch(e){}})}},29091:(e,t,r)=>{r.d(t,{B:()=>p});var n=r(2074),i=r(11472),s=r(34277),a=r(61826),o=r(33897);let l=(e,{min:t,max:r})=>Math.max(t,Math.min(r,Math.round(e)));var c=r(79253);let d={name:null,value:null},u=null,h=()=>{if(u&&(clearTimeout(u),u=null),null===d.name)return;let{name:e,value:t}=d;d.name=null,d.value=null;try{localStorage.setItem(e,JSON.stringify(t))}catch{}};window.addEventListener("pagehide",h),document.addEventListener("visibilitychange",()=>{"hidden"===document.visibilityState&&h()});let p=(0,n.v)((0,i.Zr)((e,t,r)=>({...{viewStack:[{type:"list"}],openedSessions:[],activeWorkspaceId:null,setActiveWorkspaceId:t=>e(e=>({activeWorkspaceId:t,fullMode:!!e.fullModes?.[t??o.AD]})),livePanes:[],touchLivePane:t=>e(e=>{let r=Array.isArray(t)?t:[t];return{livePanes:[...e.livePanes.filter(e=>!r.includes(e)),...r].slice(-s.kn)}}),mountedWorkspaces:{},markWorkspaceMounted:t=>e(e=>{let r=t??o.AD;return e.mountedWorkspaces[r]?e:{mountedWorkspaces:{...e.mountedWorkspaces,[r]:!0}}}),isWorkspaceMounted:e=>{let r=e??o.AD;return!!t().mountedWorkspaces[r]},drafts:{},setDraft:(t,r)=>e(e=>({drafts:{...e.drafts,[t]:r}})),collapsedWorkspaces:{},toggleWorkspace:t=>e(e=>({collapsedWorkspaces:{...e.collapsedWorkspaces,[t]:!e.collapsedWorkspaces[t]}})),cwdBySession:{},setCwd:(t,r)=>{if(!t||!r)return;let n=(0,c.kb)(r);e(e=>e.cwdBySession[t]===n?e:{cwdBySession:{...e.cwdBySession,[t]:n}})},pushView:t=>e(e=>{let r=Array.isArray(e.viewStack)?e.viewStack:[],n=a.yP.includes(t?.type),i=n?r:r.filter((e,t)=>!(a.yP.includes(e?.type)&&t===r.length-1));if(n&&i.length&&i[i.length-1]?.type===t?.type){let e=[...i];return e[e.length-1]=t,{viewStack:e}}return{viewStack:[...i,t]}}),popView:()=>e(e=>{let t=Array.isArray(e.viewStack)?e.viewStack:[];return{viewStack:t.length>1?t.slice(0,-1):[{type:"list"}]}}),setViewStack:t=>e({viewStack:t}),addOpenedSession:t=>e(e=>({openedSessions:e.openedSessions.includes(t)?e.openedSessions:[...e.openedSessions,t]})),removeOpenedSession:t=>e(e=>{let{[t]:r,...n}=e.drafts,{[t]:i,...s}=e.pendingStartup,{[t]:a,...o}=e.artifactsBySession;return{artifactsBySession:o,openedSessions:e.openedSessions.filter(e=>e!==t),livePanes:e.livePanes.filter(e=>e!==t),hiddenPaneSessionIds:e.hiddenPaneSessionIds?e.hiddenPaneSessionIds.filter(e=>e!==t):[],drafts:n,pendingStartup:s}}),replaceOpenedSession:(t,r)=>e(e=>{if(!r||t===r)return e;let n=e=>e===t?r:e;return{openedSessions:!t||e.openedSessions.includes(t)?e.openedSessions.map(n):e.openedSessions.includes(r)?e.openedSessions:[...e.openedSessions,r],livePanes:e.livePanes.map(n)}}),clearOpenedSessions:()=>e({openedSessions:[],livePanes:[]}),reorderOpenedSessions:t=>e(e=>{let r=new Set(t),n=t.filter(t=>e.openedSessions.includes(t));if(n.length<2)return{};let i=0;return{openedSessions:e.openedSessions.map(e=>r.has(e)?n[i++]:e)}}),closeSession:t=>e(e=>{let{[t]:r,...n}=e.drafts,{[t]:i,...s}=e.pendingStartup,{[t]:a,...o}=e.agentBySession,l=((e,t)=>{let r={};for(let[n,i]of Object.entries(e))r[n]={at:0,sessions:t?i.sessions.map(t):i.sessions};return r})(e.agentHistory,e=>e.openSessionId===t?{...e,openSessionId:null}:e);return{openedSessions:e.openedSessions.filter(e=>e!==t),livePanes:e.livePanes.filter(e=>e!==t),drafts:n,pendingStartup:s,agentBySession:o,agentHistory:l}}),getCurrentView:()=>{let{viewStack:e}=t();return e[e.length-1]},getSelectedSession:()=>{let{viewStack:e}=t();for(let t=e.length-1;t>=0;t--)if("terminal"===e[t].type)return e[t].sessionId;return null},reset:()=>e({viewStack:[{type:"list"}],openedSessions:[],livePanes:[],activeWorkspaceId:null})},...{sidebarCollapsed:!1,toggleSidebar:()=>e(e=>({sidebarCollapsed:!e.sidebarCollapsed})),setSidebarCollapsed:t=>e({sidebarCollapsed:!!t}),sidebarWidth:s.gH.default,setSidebarWidth:t=>e({sidebarWidth:l(t,s.gH)}),fullModes:{},fullMode:!1,toggleFullMode:t=>e(e=>{let r=t??e.activeWorkspaceId??o.AD,n=!e.fullModes[r];return{fullModes:{...e.fullModes,[r]:n},fullMode:r===(e.activeWorkspaceId??o.AD)?n:e.fullMode}}),setFullMode:(t,r)=>e(e=>{let n="boolean"==typeof t?e.activeWorkspaceId??o.AD:t??e.activeWorkspaceId??o.AD,i="boolean"==typeof t?t:!!r;return{fullModes:{...e.fullModes,[n]:i},fullMode:n===(e.activeWorkspaceId??o.AD)?i:e.fullMode}}),hiddenPaneSessionIds:[],toggleHidePane:t=>e(e=>({hiddenPaneSessionIds:e.hiddenPaneSessionIds.includes(t)?e.hiddenPaneSessionIds.filter(e=>e!==t):[...e.hiddenPaneSessionIds,t]})),unhidePane:t=>e(e=>({hiddenPaneSessionIds:e.hiddenPaneSessionIds.filter(e=>e!==t)})),paneWidths:{},setPaneWidth:(t,r)=>e(e=>({paneWidths:{...e.paneWidths,[t]:null==r?null:l(r,s.k9)}})),rightPanelOpen:window.innerWidth>=s.jK,rightPanelTabs:{},rightPanelWidth:s.Ds.default,toggleRightPanel:()=>e(e=>({rightPanelOpen:!e.rightPanelOpen,rightPanelWasOpen:null})),closeRightPanel:()=>e({rightPanelOpen:!1,rightPanelWasOpen:null}),openRightPanel:()=>e({rightPanelOpen:!0,rightPanelWasOpen:null}),setRightPanelTab:(t,r)=>e(e=>({rightPanelOpen:!0,rightPanelWasOpen:null,...null!=r?{rightPanelTabs:{...e.rightPanelTabs,[r]:t}}:{}})),rightPanelRoots:{},setRightPanelRoot:(t,r)=>e(e=>{if(null==t)return e;let n=e.rightPanelRoots[t],i=r&&r!==t?r:void 0;if(n===i)return e;let s={...e.rightPanelRoots};return i?s[t]=i:delete s[t],{rightPanelRoots:s}}),setRightPanelWidth:t=>e({rightPanelWidth:l(t,s.Ds)}),editorFilePath:null,editorPanelWidth:s.Ao.default,setEditorPanelWidth:t=>e({editorPanelWidth:l(t,s.Ao)}),editorPreviewSeq:0,artifactTitle:null,rightPanelWasOpen:null,artifactSessionId:null,editorJump:null,openEditorFile:(t,r={})=>e(e=>({editorFilePath:t,editorPreviewSeq:r.preview?e.editorPreviewSeq+1:0,artifactTitle:r.artifactTitle||null,artifactSessionId:r.artifactSessionId||null,editorJump:r.line?{line:r.line,column:r.column,seq:(e.editorJump?.seq||0)+1}:null,...r.artifactTitle?{rightPanelWasOpen:e.rightPanelWasOpen??e.rightPanelOpen,rightPanelOpen:!1}:{}})),closeEditorFile:()=>e(e=>({editorFilePath:null,editorPreviewSeq:0,artifactTitle:null,artifactSessionId:null,rightPanelWasOpen:null,...e.rightPanelWasOpen?{rightPanelOpen:!0}:{},...e.artifactSessionId&&e.editorFilePath?{artifactsBySession:((e,t,r)=>{let n=e[t];if(!n)return e;let i=n.filter(e=>e.path!==r);if(i.length===n.length)return e;let{[t]:s,...a}=e;return i.length?{...a,[t]:i}:a})(e.artifactsBySession,e.artifactSessionId,e.editorFilePath)}:{}})),hiddenHeaderButtons:["mobile"],hiddenHeaderButtonsMigrated:!1,toggleHeaderButton:t=>e(e=>({hiddenHeaderButtons:e.hiddenHeaderButtons.includes(t)?e.hiddenHeaderButtons.filter(e=>e!==t):[...e.hiddenHeaderButtons,t]})),mobileLowPower:!1,setMobileLowPower:t=>e({mobileLowPower:!!t}),mobileOpen:!1,mobileMode:"float",mobilePanelWidth:s.b5.default,mobileFloatRect:null,setMobileOpen:t=>e({mobileOpen:!!t}),setMobileMode:t=>e({mobileMode:t,mobileOpen:!0}),setMobilePanelWidth:t=>e({mobilePanelWidth:l(t,s.b5)}),setMobileFloatRect:t=>e({mobileFloatRect:t}),mobileSession:null,setMobileSession:t=>e(e=>({mobileSession:"function"==typeof t?t(e.mobileSession):t}))},...{webglEnabled:!1,setWebglEnabled:t=>e({webglEnabled:!!t}),fontSize:null,setFontSize:t=>e({fontSize:t?Math.max(10,Math.min(18,Math.round(t))):null}),terminalTheme:"default",setTerminalTheme:t=>e({terminalTheme:t||"default"}),terminalBackgrounds:["art8"],setTerminalBackgrounds:t=>e({terminalBackgrounds:Array.isArray(t)?t.filter(Boolean):[]}),terminalBackgroundOpacity:null,setTerminalBackgroundOpacity:t=>e({terminalBackgroundOpacity:null==t?s._z:Number(Math.max(s.DW.min,Math.min(s.DW.max,Math.round(t/s.DW.step)*s.DW.step)).toFixed(2))}),customBackgrounds:[],setCustomBackgrounds:t=>e({customBackgrounds:Array.isArray(t)?t.filter(e=>e?.id&&e?.dataUrl):[]}),backgroundBySession:{},setSessionBackground:(t,r)=>e(e=>{let n={...e.backgroundBySession};return r?n[t]=r:delete n[t],{backgroundBySession:n}}),showFolderButton:!0,showNoteButton:!1,setShowFolderButton:t=>e({showFolderButton:!!t}),setShowNoteButton:t=>e({showNoteButton:!!t}),noteChips:[],addNoteChip:t=>e(e=>({noteChips:[...e.noteChips,t]})),removeNoteChip:t=>e(e=>({noteChips:e.noteChips.filter(e=>e!==t)})),pinnedNotes:{},setNotePinned:(t,r)=>e(e=>{let n={...e.pinnedNotes};return r?n[t]=!0:delete n[t],{pinnedNotes:n}})},...{agentCaps:{},setAgentCaps:t=>e({agentCaps:t||{}}),artifactEnabled:!1,setArtifactEnabled:t=>e({artifactEnabled:!!t}),mcpClients:[],setMcpClients:t=>e({mcpClients:Array.isArray(t)?t:[]}),agentClisBy:{},setAgentClis:(t,r)=>e(e=>({agentClisBy:{...e.agentClisBy,[t]:{list:Array.isArray(r)?r:[],at:Date.now()}}})),agentHistory:{},setAgentHistory:(t,r)=>e(e=>({agentHistory:{...e.agentHistory,[t]:{at:Date.now(),sessions:Array.isArray(r)?r:[]}}})),invalidateAgentHistory:()=>e(e=>({agentHistory:(e=>{let t={};for(let[r,n]of Object.entries(e))t[r]={at:0,sessions:n.sessions};return t})(e.agentHistory)})),agentBySession:{},setSessionAgent:(t,r)=>e(e=>e.agentBySession[t]===r?e:{agentBySession:{...e.agentBySession,[t]:r}}),pendingStartup:{},queueStartup:(t,r)=>e(e=>({pendingStartup:{...e.pendingStartup,[t]:r}})),consumeStartup:r=>{let n=t().pendingStartup[r];return void 0===n?null:(e(e=>{let{[r]:t,...n}=e.pendingStartup;return{pendingStartup:n}}),n)},artifactsBySession:{},pushArtifact:(t,r)=>e(e=>{if(!t||!r?.path)return{};let n=(e.artifactsBySession[t]||[]).filter(e=>e.path!==r.path);return{artifactsBySession:{...e.artifactsBySession,[t]:[r,...n].slice(0,s.zv)}}}),removeArtifact:(t,r)=>e(e=>({artifactsBySession:((e,t,r)=>{let n=e[t];if(!n)return e;let i=n.filter(e=>e.path!==r);if(i.length===n.length)return e;let{[t]:s,...a}=e;return i.length?{...a,[t]:i}:a})(e.artifactsBySession,t,r)}))}}),{name:"terminal-ui-state",partialize:e=>({viewStack:e.viewStack,openedSessions:e.openedSessions,agentBySession:e.agentBySession,activeWorkspaceId:e.activeWorkspaceId,collapsedWorkspaces:e.collapsedWorkspaces,webglEnabled:e.webglEnabled,fontSize:e.fontSize,terminalTheme:e.terminalTheme,terminalBackgrounds:e.terminalBackgrounds,terminalBackgroundOpacity:e.terminalBackgroundOpacity,backgroundBySession:e.backgroundBySession,showFolderButton:e.showFolderButton,showNoteButton:e.showNoteButton,noteChips:e.noteChips,pinnedNotes:e.pinnedNotes,sidebarCollapsed:e.sidebarCollapsed,sidebarWidth:e.sidebarWidth,fullModes:e.fullModes||{},fullMode:e.fullMode,hiddenPaneSessionIds:e.hiddenPaneSessionIds||[],paneWidths:e.paneWidths,rightPanelOpen:e.rightPanelOpen,rightPanelTabs:e.rightPanelTabs,rightPanelWidth:e.rightPanelWidth,editorPanelWidth:e.editorPanelWidth,hiddenHeaderButtons:e.hiddenHeaderButtons,hiddenHeaderButtonsMigrated:e.hiddenHeaderButtonsMigrated,mobileLowPower:e.mobileLowPower,mobileMode:e.mobileMode,mobilePanelWidth:e.mobilePanelWidth,mobileFloatRect:e.mobileFloatRect,artifactsBySession:e.artifactsBySession}),storage:{getItem:e=>{try{let t=localStorage.getItem(e);if(!t)return null;let r=JSON.parse(t);return r&&!Array.isArray(r.viewStack)&&(r.viewStack=[{type:"list"}]),r}catch{return null}},setItem:(e,t)=>{d.name=e,d.value=t,u||(u=setTimeout(h,s.eu))},removeItem:e=>{d.name===e&&(d.name=null,d.value=null),localStorage.removeItem(e)}},onRehydrateStorage:()=>e=>{e&&(Array.isArray(e.viewStack)&&0!==e.viewStack.length||(e.viewStack=[{type:"list"}]),window.location.pathname.replace(/\/+$/,"")===a.U2&&(e.viewStack=[{type:"list"}]),e.viewStack=e.viewStack.filter(e=>e?.type==="browser"||!a.yP.includes(e?.type)&&e?.type!=="site"),0===e.viewStack.length&&(e.viewStack=[{type:"list"}]),Array.isArray(e.terminalBackgrounds)||(e.terminalBackgrounds=[]),e.terminalBackground&&"none"!==e.terminalBackground&&0===e.terminalBackgrounds.length&&(e.terminalBackgrounds=[e.terminalBackground]),e.agentBySession&&"object"==typeof e.agentBySession||(e.agentBySession={}),window.innerWidth<s.jK&&(e.rightPanelOpen=!1),!e.hiddenHeaderButtonsMigrated&&(e.hiddenHeaderButtonsMigrated=!0,Array.isArray(e.hiddenHeaderButtons)?e.hiddenHeaderButtons.includes("mobile")||(e.hiddenHeaderButtons=[...e.hiddenHeaderButtons,"mobile"]):e.hiddenHeaderButtons=["mobile"]))}}))},31408:(e,t,r)=>{function n(e,t){if(e===t)return!0;if(!e||!t||"object"!=typeof e||"object"!=typeof t)return!1;let r=Object.keys(e);if(r.length!==Object.keys(t).length)return!1;for(let n of r)if(!(n in t)||e[n]!==t[n])return!1;return!0}function i(e,t){if(e===t)return!0;if(!Array.isArray(e)||!Array.isArray(t)||e.length!==t.length)return!1;for(let r=0;r<e.length;r++)if(!n(e[r],t[r]))return!1;return!0}function s(e,t){if(e===t)return!0;if(!e||!t)return!1;let r=Object.keys(e);if(r.length!==Object.keys(t).length)return!1;for(let i of r)if(!(i in t)||!n(e[i],t[i]))return!1;return!0}r.d(t,{dI:()=>n,h3:()=>s,nk:()=>i})},31735:(e,t,r)=>{r.d(t,{H$:()=>a,d6:()=>s});var n=r(1521),i=r(29717);let s=(e,t)=>{if(e&&t)try{localStorage.setItem("9remote_nav:"+e,t)}catch{}};function a(e){let t=(0,i.usePathname)(),r=(0,i.useSearchParams)();(0,n.useEffect)(()=>{if(!e||!t?.startsWith("/workspace"))return;let n=function(e,t){if(!e)return"";let r=t?.toString();return r?`${e}?${r}`:e}(t,r);n&&s(e,n)},[e,t,r])}},33897:(e,t,r)=>{r.d(t,{AD:()=>n,Jc:()=>l,Mt:()=>a,g4:()=>o,gk:()=>s,xs:()=>i});let n="__ungrouped__",i=e=>e?.workspaceId??e?.groupId??null;function s({sessions:e,openedSessions:t,livePanes:r,mountedWorkspaces:a,activeWorkspaceId:o,isDesktop:l}){let c=new Set(e.filter(e=>i(e)===(o??null)).map(e=>e.id)),d=t.filter(e=>c.has(e)),u=new Set([...d,...r.filter(e=>t.includes(e))]),h=t.filter(e=>u.has(e)),p=new Map(e.map(e=>[e.id,i(e)])),m=new Set(t.filter(e=>!!c.has(e)||!!l&&!!a[p.get(e)??n])),f=new Map(d.map((e,t)=>[e,t]));return{workspaceSessionIds:c,workspaceOpenedSessions:d,renderedSessions:h,mountedSet:m,workspaceIndex:f}}let a=(e,t,r)=>!t&&r.has(e)?120*r.get(e):0;function o({container:e,pane:t}){if(!e||!t||t.offsetWidth<=0)return null;let r=t.getBoundingClientRect().left-e.getBoundingClientRect().left;return Math.max(0,Math.min(e.scrollLeft+r-(e.clientWidth-t.offsetWidth)/2,e.scrollWidth-e.clientWidth))}function l({rowWidth:e,paneCount:t,sidebarWidth:r,sidePx:n,gapPx:i,paddingPx:s,minWidth:a}){return!(e>0)||t<=0?null:Math.max(a,Math.floor((e-r-s-n-(t-1)*i)/t))}},34277:(e,t,r)=>{r.d(t,{$Z:()=>Y,A_:()=>c,Ao:()=>p,B$:()=>q,BM:()=>ei,DW:()=>K,Ds:()=>h,EE:()=>R,FC:()=>ef,Fz:()=>m,Gp:()=>ee,IJ:()=>X,Il:()=>em,Jv:()=>o,KA:()=>_,KN:()=>I,Lo:()=>Q,M8:()=>et,Mg:()=>ev,Nz:()=>eb,OM:()=>ed,Pj:()=>E,Pz:()=>V,Qe:()=>d,RF:()=>ey,RS:()=>G,TM:()=>$,Tb:()=>k,Tk:()=>b,Uc:()=>es,VE:()=>el,W$:()=>U,YA:()=>ep,YS:()=>T,ZU:()=>O,_C:()=>eS,_O:()=>Z,_z:()=>j,aD:()=>D,am:()=>S,ar:()=>B,b5:()=>f,b9:()=>e_,bl:()=>eg,bs:()=>x,c:()=>F,cK:()=>ek,dU:()=>en,de:()=>eC,dt:()=>n,eE:()=>ec,eu:()=>P,fw:()=>eu,g$:()=>eA,gH:()=>u,hp:()=>C,i5:()=>eh,iW:()=>w,j4:()=>er,jK:()=>i,k9:()=>s,kn:()=>l,ll:()=>v,ok:()=>ex,pS:()=>a,pZ:()=>W,pt:()=>z,qQ:()=>A,qj:()=>y,qw:()=>ea,t:()=>N,vP:()=>M,vk:()=>H,wu:()=>L,y:()=>ew,zm:()=>eo,zv:()=>g});let n=["git status","git add .",'git commit -m ""',"git push","git pull","git fetch","git diff","git log --oneline","git branch","git checkout","git checkout -b","git switch","git stash","git stash pop","git merge","git rebase","git clone","git remote -v","git restore","npm install","npm ci","npm run dev","npm run build","npm run test","npm run lint","npm outdated","pnpm install","pnpm dev","yarn dev","bun install","cd ..","cd ~","cd -","ls -la","ll","mkdir -p","cp -r","find . -name","du -sh","chmod +x","ln -s","grep -rn","grep -i","wc -l","tail -f","ps aux","df -h","free -h","lsof -i","netstat -tlnp","docker ps","docker ps -a","docker images","docker logs -f","docker exec -it","docker compose up -d","docker compose down","docker build -t","code .","claude","claude --continue","claude --resume","claude --dangerously-skip-permissions","claude mcp","codex","codex --full-auto"],i=760,s={min:400,max:1/0},a=2,o=0,l=12,c=250,d=8,u={default:190,min:180,max:1/0},h={default:190,min:190,max:1/0},p={default:420,min:280,max:1/0},m=[{id:"remote",labelKey:"menu.remoteDesktop",descKey:"menu.remoteDesktopHint",group:"header",section:"remote"},{id:"sites",labelKey:"menu.sites",descKey:"menu.sitesHint",group:"header",section:"remote"},{id:"mobile",labelKey:"mobile.androidDevice",descKey:"mobile.androidDeviceHint",group:"header",section:"remote"},{id:"notifications",labelKey:"menu.notificationsButton",descKey:"menu.notificationsButtonHint",group:"header",section:"plugins"},{id:"folder",labelKey:"menu.showFolder",group:"pane",section:"terminal",storeKey:"showFolderButton",setterKey:"setShowFolderButton"},{id:"note",labelKey:"menu.showNote",group:"pane",section:"terminal",storeKey:"showNoteButton",setterKey:"setShowNoteButton"}],f={default:300,min:240,max:1/0},y={width:{default:300,min:240,max:900},height:{default:620,min:320},margin:12,defaultOffset:24},g=20,_=1e4,b={maxDepth:1,deepMaxDepth:3,cacheTtlMs:3e4},w={topThresholdLines:5,guardMs:600,minFetchBytes:256,chainMax:3,chainDebounceMs:300,disabled:!1},k=5242880,A=5,v=3e3,S=150,T=100,x=101,C=200,R={Escape:{data:"\x1b"},c:{ctrl:!0,data:"\x03",requireNoSelection:!0},d:{ctrl:!0,data:"\x04"},z:{ctrl:!0,data:"\x1a"},l:{ctrl:!0,data:"\f"}},P=250,I=999,$=["check again","continue","summarize"],D="terminal:noteSync",M="terminal:openSession",L=5e3,O=250,U=90,E={cursorBlink:!0,fontSize:12,fontSizeMobile:12,fontFamily:'ui-monospace, "SF Mono", "Cascadia Code", "Roboto Mono", "Noto Sans Mono", Menlo, Monaco, "Courier New", monospace',scrollback:15e3,convertEol:!0,allowProposedApi:!0,scrollOnUserInput:!0,fastScrollModifier:"none",smoothScrollDuration:0,rescaleOverlappingGlyphs:!0,minimumContrastRatio:4.5,macOptionIsMeta:!0};function B(e){return null!=e?e:window.innerWidth<768?E.fontSizeMobile:E.fontSize}let j=.8,N=.25,F="16,16,20",W="116,120,136",q=.28,K={min:.3,max:.95,step:.01},H={none:{label:"None"},art1:{label:"Anime 1",src:"/backgrounds/bg9.jpg"},art2:{label:"Anime 2",src:"/backgrounds/bg2.jpg"},art3:{label:"Anime 3",src:"/backgrounds/bg3.jpg"},art4:{label:"Anime 4",src:"/backgrounds/bg4.jpg"},art5:{label:"Anime 5",src:"/backgrounds/bg5.jpg"},art7:{label:"Anime 7",src:"/backgrounds/bg7.jpg"},art8:{label:"Anime 8",src:"/backgrounds/bg8.jpg"},art9:{label:"Anime 9",src:"/backgrounds/bg10.jpg"},art10:{label:"Anime 10",src:"/backgrounds/bg11.jpg"},art11:{label:"Anime 11",src:"/backgrounds/bg12.jpg"},art12:{label:"Anime 12",src:"/backgrounds/bg13.jpg"}};function z(e,t){return e&&t&&"none"!==t&&(H[t]||String(t).startsWith("custom"))?{...e,background:"#10101400"}:e}function J(e){return"custom"===e?"custom":"string"==typeof e&&e.startsWith("custom:")?e.slice(7):null}function G(e,t=[]){let r=J(e);return r?t.find(e=>e?.id===r)?.dataUrl||null:H[e]?.src||null}function V(e){return H[e]?.label||(J(e)?"Custom":H.none.label)}let Z=4e3,Q=2e4;function X(e,t=[]){return Array.isArray(e)?e.filter(e=>{let r=J(e);return r?t.some(e=>e?.id===r):"none"===e||!!H[e]}):[]}function Y(e,t,r=[],n=0){var i;return X([e],r)[0]||(i=X(t,r),Array.isArray(i)&&0!==i.length&&i[n%i.length]||"none")}let ee={gpuAcceleration:"auto",smoothScrollDuration:125},et={clipboard:!0,search:!0,image:!0},er=30,en=2,ei=100,es=600,ea=150,eo=4e3,el=3e3,ec=8e3,ed=6e4,eu=3e4,eh="28%",ep=400,em={lineHeight:18,sensitivity:1,friction:.95,minVelocity:.3,maxVelocity:55,wheelStepLines:1,tuiThrottleMs:50,momentumRenderCadenceMs:33,tuiBackpressureTimeoutMs:120,sgrUp:(e,t)=>`\x1b[<64;${e};${t}M`,sgrDown:(e,t)=>`\x1b[<65;${e};${t}M`},ef={longPressMs:450,moveTolerance:10,wordChars:/[A-Za-z0-9._\-/~:@]/},ey={verbs:["cd","ls","ll","cat","less","more","head","tail","vim","nvim","nano","bat","code","code-insiders","rm","cp","mv","mkdir","touch","chmod","open","grep"],ttlMs:3e5,debounceMs:120,maxDirs:20,maxResults:8},eg={minDistance:60,ratio:1.5,maxDuration:500},e_=e=>!!e&&27!==e.charCodeAt(0),eb=e=>"string"==typeof e&&(/^\x1b\[[?>=][0-9;]*c$/.test(e)||/^\x1b\[[0-9]+;[0-9]+R$/.test(e)||/^\x1b\[0n$/.test(e)||/^\x1b\]\d+;/.test(e)),ew=[{id:"ctrl",label:"Ctrl",key:"Ctrl",type:"modifier"},{id:"opt",label:"Opt",key:"Alt",type:"modifier"},{id:"shift",label:"Shift",key:"Shift",type:"modifier"},{id:"meta",label:"⌘",key:"Meta",type:"modifier"},{id:"esc",label:"Esc",key:"Escape",type:"key"},{id:"tab",label:"Tab",key:"Tab",type:"key"},{id:"enter",label:"↵",key:"Enter",type:"key"},{id:"backspace",label:"⌫",key:"Backspace",type:"key"},{id:"up",label:"↑",key:"ArrowUp",type:"arrow"},{id:"down",label:"↓",key:"ArrowDown",type:"arrow"},{id:"left",label:"←",key:"ArrowLeft",type:"arrow"},{id:"right",label:"→",key:"ArrowRight",type:"arrow"},{id:"home",label:"Home",key:"Home",type:"key"},{id:"end",label:"End",key:"End",type:"key"},{id:"pgup",label:"PgUp",key:"PageUp",type:"key"},{id:"pgdn",label:"PgDn",key:"PageDown",type:"key"},{id:"del",label:"Del",key:"Delete",type:"key"},{id:"ins",label:"Ins",key:"Insert",type:"key"},{id:"ctrlA",label:"^A",key:"a",type:"ctrl"},{id:"ctrlC",label:"^C",key:"c",type:"ctrl"},{id:"ctrlD",label:"^D",key:"d",type:"ctrl"},{id:"ctrlE",label:"^E",key:"e",type:"ctrl"},{id:"ctrlK",label:"^K",key:"k",type:"ctrl"},{id:"ctrlL",label:"^L",key:"l",type:"ctrl"},{id:"ctrlN",label:"^N",key:"n",type:"ctrl"},{id:"ctrlP",label:"^P",key:"p",type:"ctrl"},{id:"ctrlR",label:"^R",key:"r",type:"ctrl"},{id:"ctrlT",label:"^T",key:"t",type:"ctrl"},{id:"ctrlU",label:"^U",key:"u",type:"ctrl"},{id:"ctrlW",label:"^W",key:"w",type:"ctrl"},{id:"ctrlX",label:"^X",key:"x",type:"ctrl"},{id:"ctrlY",label:"^Y",key:"y",type:"ctrl"},{id:"ctrlZ",label:"^Z",key:"z",type:"ctrl"},{id:"f1",label:"F1",key:"F1",type:"key"},{id:"f2",label:"F2",key:"F2",type:"key"},{id:"f3",label:"F3",key:"F3",type:"key"},{id:"f4",label:"F4",key:"F4",type:"key"},{id:"f5",label:"F5",key:"F5",type:"key"},{id:"f6",label:"F6",key:"F6",type:"key"},{id:"f7",label:"F7",key:"F7",type:"key"},{id:"f8",label:"F8",key:"F8",type:"key"},{id:"f9",label:"F9",key:"F9",type:"key"},{id:"f10",label:"F10",key:"F10",type:"key"},{id:"f11",label:"F11",key:"F11",type:"key"},{id:"f12",label:"F12",key:"F12",type:"key"},{id:"pipe",label:"|",key:"|",type:"key"},{id:"tilde",label:"~",key:"~",type:"key"},{id:"slash",label:"/",key:"/",type:"key"},{id:"backslash",label:"\\",key:"\\",type:"key"},{id:"dash",label:"-",key:"-",type:"key"},{id:"underscore",label:"_",key:"_",type:"key"}],ek=["esc","up","down","ctrlC","ctrl","opt","shift","tab","slash"],eA="enter",ev=[["left","right","home","end","pgup","pgdn","del"],["ctrlZ","ctrlR","ctrlL","ctrlA","ctrlE","ctrlW","ctrlD"],["f1","f2","f3","f4","f5","f10","f11"]],eS={base:"flex items-center justify-center rounded-brand font-semibold transition-all duration-150 ease-out active:scale-[0.94]",textNormal:"text-xs",textSmall:"text-[11px]",normal:"bg-surface-2 hover:bg-surface-3 text-text",arrow:"bg-surface-2 hover:bg-surface-3 text-text text-sm",modifierActive:"bg-brand-500 text-white shadow-sm",pinned:"bg-brand-500/15 hover:bg-brand-500/25 text-brand-400",size:{minWidth:"34px",height:"32px",paddingLeft:"6px",paddingRight:"6px"},sizeLarge:{minWidth:"38px",height:"32px",paddingLeft:"8px",paddingRight:"8px"},sizeSmall:{width:"28px",height:"28px"}},eT=["main","master"],ex=e=>eT.includes(e),eC={DELAY_MS:400,GAP_PX:6,EDGE_PX:8,MAX_WIDTH_PX:320,EST_HEIGHT_PX:48,SLACK_PX:.5}},38415:(e,t,r)=>{r.d(t,{Gf:()=>c,Gi:()=>p,Hu:()=>l,Nn:()=>u,O8:()=>s,cu:()=>d,el:()=>a,ij:()=>h,l7:()=>o,no:()=>m,pe:()=>n,rl:()=>i,xO:()=>f});let n="https://api.github.com",i="https://github.com/decolua/9remote",s=`${n}/repos/decolua/9remote`,a=`${s}/releases?per_page=100`,o=!1,l=".devcontainer/devcontainer.json",c="NREMOTE_API_KEY",d={name:"9Remote",image:"mcr.microsoft.com/devcontainers/universal:latest",postCreateCommand:"npm install -g 9remote@latest",postAttachCommand:"nohup 9remote start > /tmp/9remote.log 2>&1 &",forwardPorts:[2208],portsAttributes:{2208:{label:"9Remote Server",onAutoForward:"silent",visibility:"public"}}},u=3e3,h=60,p={available:"Available",starting:"Starting",shutdown:"Shutdown",unknown:"Unknown"},m={user:"/user",codespaces:"/user/codespaces",codespaceByName:e=>`/user/codespaces/${e}`,startCodespace:e=>`/user/codespaces/${e}/start`,userReposList:"/user/repos?per_page=100&sort=updated&affiliation=owner,collaborator",repoContents:(e,t,r)=>`/repos/${e}/${t}/contents/${r}`,createCodespaceForRepo:(e,t)=>`/repos/${e}/${t}/codespaces`,codespaceSecretsPublicKey:"/user/codespaces/secrets/public-key",codespaceSecret:e=>`/user/codespaces/secrets/${e}`,codespaceSecretRepos:(e,t)=>`/user/codespaces/secrets/${e}/repositories/${t}`};function f(e){return`https://${e}-2208.app.github.dev`}},42174:(e,t,r)=>{r.d(t,{A:()=>c});var n=r(73365),i=r(1521),s=r(98196),a=r(8910),o=r(78762),l=r(64683);function c({isOpen:e,onClose:t,onConfirm:r,title:d,message:u,confirmText:h,cancelText:p}){let{t:m}=(0,o.s)(),f=(0,i.useRef)(null),y=(0,i.useRef)(null),g=h??m("common.confirm"),_=p??m("common.cancel");return((0,i.useEffect)(()=>{if(!e)return;let t=requestAnimationFrame(()=>{y.current?.focus()});return()=>cancelAnimationFrame(t)},[e]),(0,i.useEffect)(()=>{if(!e)return;let n=e=>{if("Escape"===e.key)e.preventDefault(),e.stopPropagation(),t();else if("Enter"===e.key){if(f.current&&document.activeElement===f.current){e.preventDefault(),e.stopPropagation(),t();return}e.preventDefault(),e.stopPropagation(),(0,a.e)(),r?.(),t()}};return window.addEventListener("keydown",n,!0),()=>window.removeEventListener("keydown",n,!0)},[e,t,r]),!e||"u"<typeof document)?null:(0,s.createPortal)((0,n.jsxs)("div",{className:"fixed inset-0 z-[100] flex items-center justify-center px-4",style:{paddingTop:"max(1rem, env(safe-area-inset-top))",paddingBottom:"max(1rem, env(safe-area-inset-bottom))"},children:[(0,n.jsx)("div",{className:"absolute inset-0 bg-black/60 backdrop-blur-[2px] animate-in fade-in duration-150",onClick:t}),(0,n.jsxs)("div",{role:"dialog","aria-modal":"true",className:"relative card-elev max-w-md w-full my-auto max-h-[min(85%,calc(var(--app-height,85vh)-2rem))] overflow-y-auto animate-in zoom-in-95 duration-200",onClick:e=>e.stopPropagation(),onKeyDown:e=>e.stopPropagation(),children:[(0,n.jsx)("div",{className:"px-6 py-4",children:(0,n.jsx)("h3",{className:"text-lg font-semibold text-text",children:d})}),(0,n.jsx)("div",{className:"px-6 pb-4",children:(0,n.jsx)("p",{className:"text-text whitespace-pre-line",children:u})}),(0,n.jsxs)("div",{className:"px-6 py-4 flex justify-end gap-3",children:[(0,n.jsxs)("button",{ref:f,onClick:()=>{(0,a.e)(),t()},className:"px-4 py-2 bg-surface-2 hover:bg-surface-3 text-text rounded-brand transition-all duration-150 ease-out active:scale-[0.98] font-medium flex items-center gap-1.5",children:[(0,n.jsx)("span",{children:_}),(0,n.jsx)("kbd",{className:"hidden sm:inline-flex items-center text-[10px] font-mono px-1 py-0.5 rounded bg-surface-3 text-text-muted leading-none",children:"Esc"})]}),(0,n.jsxs)("button",{ref:y,onClick:()=>{(0,a.e)(),r?.(),t()},className:"px-4 py-2 bg-red-600 hover:bg-red-700 text-white rounded-brand transition-all duration-150 ease-out active:scale-[0.98] font-medium flex items-center gap-1.5 focus:outline-none focus:ring-2 focus:ring-red-500/50",children:[(0,n.jsx)("span",{children:g}),(0,n.jsx)("kbd",{className:"hidden sm:inline-flex items-center justify-center w-4 h-4 rounded bg-white/20 text-white",children:(0,n.jsx)(l.Lt,{size:10,strokeWidth:2.5})})]})]})]})]}),document.body)}},45111:(e,t,r)=>{r.d(t,{A:()=>i});var n=r(73365);function i({size:e="md",text:t,className:r=""}){return(0,n.jsxs)("div",{className:`flex flex-col items-center justify-center gap-3 ${r}`,children:[(0,n.jsx)("div",{className:`animate-spin rounded-full border-brand-500 border-t-transparent ${{sm:"h-4 w-4 border-2",md:"h-8 w-8 border-2",lg:"h-12 w-12 border-b-2"}[e]}`}),t&&(0,n.jsx)("p",{className:"text-brand-500 text-sm font-medium",children:t})]})}},51627:(e,t,r)=>{r.d(t,{U:()=>n});function n(e,t){if(!e||!t)return!1;let r=String(e).split(".").map(Number),n=String(t).split(".").map(Number);for(let e=0;e<3;e++){let t=r[e]||0,i=n[e]||0;if(t!==i)return t>i}return!1}},52159:(e,t,r)=>{r.d(t,{c:()=>i});var n=r(7938);function i(e,...t){n.eR.debug?.[e]&&console.log(...t)}},61826:(e,t,r)=>{r.d(t,{O5:()=>c,U2:()=>n,dX:()=>d,mn:()=>l,yP:()=>s});let n="/workspace",i={list:()=>n,terminal:e=>`${n}/terminal/${encodeURIComponent(e.sessionId||"")}`,files:e=>o(`${n}/files`,{ws:e.workspace,p:e.currentPath}),editor:e=>o(`${n}/editor`,{path:e.path,line:e.line,col:e.column}),git:e=>o(`${n}/git`,{ws:e.workspace}),remote:()=>`${n}/remote`,mobile:()=>`${n}/mobile`,workspaces:()=>`${n}/workspaces`,browse:e=>o(`${n}/browse`,{path:e.path}),pair:()=>`${n}/pair`,welcome:()=>`${n}/welcome`},s=["browser"],a={"":"list",terminal:"terminal",files:"files",editor:"editor",git:"git",remote:"remote",mobile:"mobile",workspaces:"workspaces",browse:"browse",pair:"pair",welcome:"welcome"};function o(e,t){let r=Object.entries(t).filter(([,e])=>null!=e&&""!==e).map(([e,t])=>`${e}=${encodeURIComponent(t)}`).join("&");return r?`${e}?${r}`:e}function l(e,t){if(!e?.startsWith(n))return null;let[r,i]=e.slice(n.length).replace(/^\//,"").split("/"),s=a[r||""];if(!s)return null;let o=e=>t?.get(e)||void 0;switch(s){case"terminal":return{type:s,sessionId:i?decodeURIComponent(i):void 0};case"files":return{type:s,workspace:o("ws"),currentPath:o("p")};case"editor":return{type:s,path:o("path"),line:u(o("line")),column:u(o("col"))};case"git":return{type:s,workspace:o("ws")};case"browse":return{type:s,path:o("path")};default:return{type:s}}}function c(e){return(i[e?.type]||i.list)(e)}function d(e,t){let r=c(t),n=e.findIndex(e=>c(e)===r);if(-1!==n)return e.slice(0,n+1);if("terminal"===t.type&&e[e.length-1]?.type==="terminal"){let r=[...e];return r[r.length-1]=t,r}return null}function u(e){let t=Number(e);return Number.isFinite(t)?t:void 0}},63977:(e,t,r)=>{r.d(t,{freshAuth:()=>s});var n=r(90084),i=r(86251);async function s(e={},t){let r={...e,connectionMode:t},a=(0,n.lz)(e.apiKey),o=e.tempKey?(0,n.lz)(e.tempKey):null,l=o?.tail?o:a?.tail?a:a||o,c=l?.tail;if(delete r.keyTail,delete r.keyTailSealed,!c)return r;if(l?.hostSealKey){let e=await (0,i.Y)(c,l.hostSealKey);if(e)return r.keyTailSealed=e,r}return r.keyTail=c,r}},64683:(e,t,r)=>{r.d(t,{$o:()=>eB.A,AX:()=>e_.A,Ay:()=>tl,BK:()=>e8.A,BZ:()=>X.A,Bm:()=>W.A,Cp:()=>z.A,Do:()=>o.A,F1:()=>l.A,FE:()=>e1.A,FW:()=>eU.A,Fc:()=>eO.A,GD:()=>O.A,GO:()=>ef.A,Gr:()=>I.A,Gv:()=>ew.A,Hx:()=>es.A,Ir:()=>d.A,J4:()=>e0.A,JG:()=>y.A,JU:()=>q.A,Jl:()=>m.A,Kq:()=>ta.A,LM:()=>ec.A,Lt:()=>x.A,M6:()=>eY.A,MA:()=>c.A,Mr:()=>eE.A,P6:()=>et.A,QR:()=>T.A,Qp:()=>a.A,RI:()=>i.A,TB:()=>e9.A,Ud:()=>V.A,VA:()=>eg.A,Vn:()=>ez.A,W1:()=>em.A,WE:()=>b.A,We:()=>e5.A,Wn:()=>S.A,X:()=>ts.A,X_:()=>D.A,ZH:()=>L.A,ZU:()=>e6.A,Ze:()=>eM.A,Zr:()=>K.A,_O:()=>te.A,_V:()=>ee.A,a4:()=>eb.A,aJ:()=>p.A,ak:()=>Z.A,bE:()=>e7.A,bd:()=>e3.A,cC:()=>u.A,c_:()=>g.A,dJ:()=>N.A,de:()=>ti.A,dx:()=>H.A,e6:()=>eS.A,e9:()=>eN.A,eM:()=>eq.A,ek:()=>eZ.A,es:()=>ev.A,f2:()=>G.A,f5:()=>P.A,gH:()=>eI.A,h1:()=>eh.A,iU:()=>B.A,jG:()=>eL.A,jj:()=>ey.A,jl:()=>w.A,jz:()=>eC.A,kU:()=>$.A,kV:()=>er.A,kr:()=>el.A,kt:()=>eW.A,lM:()=>e4.A,lP:()=>eA.A,m0:()=>k.A,mN:()=>Q.A,nU:()=>eu.A,qz:()=>J.A,rX:()=>_.A,s3:()=>en.A,sU:()=>eX.A,sv:()=>j.A,ue:()=>eT.A,vR:()=>eP.A,vW:()=>ej.A,vd:()=>F.A,vj:()=>eH.A,vv:()=>ea.A,wB:()=>eG.A,wO:()=>eQ.A,ww:()=>Y.A,xq:()=>ep.A,xv:()=>eR.A,y8:()=>eo.A,yQ:()=>f.A,yU:()=>eD.A,yd:()=>s.A,zP:()=>h.A,zW:()=>tt.A});var n=r(73365),i=r(87821),s=r(21878),a=r(79376),o=r(61659),l=r(6504),c=r(19307),d=r(74739),u=r(29967),h=r(17836),p=r(67494),m=r(66687),f=r(95188),y=r(54453),g=r(34582),_=r(70453),b=r(10949),w=r(64570),k=r(31258),A=r(59907),v=r(13374),S=r(17406),T=r(46431),x=r(29260),C=r(88433),R=r(49553),P=r(20478),I=r(17568),$=r(87831),D=r(1916),M=r(29418),L=r(18272),O=r(10550),U=r(9271),E=r(14251),B=r(50068),j=r(98173),N=r(10194),F=r(70362),W=r(17909),q=r(59437),K=r(33109),H=r(48433),z=r(86877),J=r(34271),G=r(60919),V=r(35723),Z=r(41046),Q=r(64629),X=r(6534),Y=r(5370),ee=r(59711),et=r(39831),er=r(9560),en=r(44159),ei=r(41098),es=r(20021),ea=r(14797),eo=r(15504),el=r(93292),ec=r(92165),ed=r(94304),eu=r(40789),eh=r(64871),ep=r(31805),em=r(19621),ef=r(40081),ey=r(38781),eg=r(88768),e_=r(68395),eb=r(88793),ew=r(25406),ek=r(10998),eA=r(64446),ev=r(12925),eS=r(93354),eT=r(73243),ex=r(89317),eC=r(12283),eR=r(1578),eP=r(90612),eI=r(43959),e$=r(24337),eD=r(76621),eM=r(59833),eL=r(67236),eO=r(37266),eU=r(97038),eE=r(72147),eB=r(68859),ej=r(93285),eN=r(20178),eF=r(65062),eW=r(87030),eq=r(67519),eK=r(457),eH=r(58450),ez=r(48088),eJ=r(56023),eG=r(59311),eV=r(38177),eZ=r(60659),eQ=r(1838),eX=r(34969),eY=r(42685),e0=r(99707),e1=r(6830),e2=r(20248),e3=r(11384),e5=r(50211),e8=r(64342),e9=r(60151),e4=r(81610),e6=r(11990),e7=r(52715),te=r(49387),tt=r(894),tr=r(2031),tn=r(58573),ti=r(51328),ts=r(3382),ta=r(57717);let to={AlertCircle:i.A,ArrowDown:s.A,ArrowRight:a.A,ArrowUp:o.A,ArrowUpRight:l.A,Ban:c.A,Bell:d.A,Bot:u.A,Bug:h.A,Check:p.A,CheckCircle2:m.A,ChevronDown:f.A,ChevronLeft:y.A,ChevronRight:g.A,ChevronUp:_.A,ChevronsDownUp:b.A,Circle:w.A,ClipboardPaste:k.A,Command:A.A,Compass:v.A,Columns2:S.A,Copy:T.A,CornerDownLeft:x.A,Crown:C.A,Delete:R.A,Download:P.A,ExternalLink:I.A,Eye:$.A,EyeOff:D.A,Facebook:M.A,File:L.A,FileCode:O.A,FileJson:U.A,FilePlus:E.A,FileText:B.A,Files:j.A,Filter:N.A,Folder:F.A,FolderOpen:W.A,FolderPlus:q.A,GitBranch:K.A,GitFork:H.A,Github:z.A,Globe:J.A,GripVertical:G.A,Hand:V.A,HardDrive:Z.A,HelpCircle:Q.A,History:X.A,Home:Y.A,Image:ee.A,ImageOff:et.A,KeyRound:er.A,Keyboard:en.A,Laptop:ei.A,LayoutDashboard:es.A,Link2:ea.A,ListChecks:eo.A,Loader2:el.A,Lock:ec.A,LogIn:ed.A,LogOut:eu.A,Maximize2:eh.A,Minimize2:ep.A,Menu:em.A,Mic:ef.A,MicOff:ey.A,Monitor:eg.A,Moon:e_.A,MoreHorizontal:eb.A,MoreVertical:ew.A,MousePointer2:ek.A,Package:eA.A,Palette:ev.A,PanelLeft:eS.A,PanelLeftClose:eT.A,PanelLeftOpen:ex.A,PanelRight:eC.A,Paperclip:eR.A,Pause:eP.A,Pencil:eI.A,Pi:e$.A,Pin:eD.A,PinOff:eM.A,Play:eL.A,Plug:eO.A,Plus:eU.A,Power:eE.A,PowerOff:eB.A,QrCode:ej.A,RefreshCw:eN.A,Replace:eF.A,RotateCw:eW.A,Save:eq.A,Scissors:eK.A,Search:eH.A,Send:ez.A,SendHorizontal:eJ.A,Settings:eG.A,Share:eV.A,Shield:eZ.A,Smartphone:eQ.A,Sparkles:eX.A,Square:eY.A,SquarePen:e0.A,Star:e1.A,StickyNote:e2.A,Sun:e3.A,Target:e5.A,Terminal:e8.A,Trash2:e9.A,Triangle:e4.A,Type:e6.A,Undo2:e7.A,Upload:te.A,Users:tt.A,Volume2:tr.A,VolumeX:tn.A,Wallpaper:ti.A,X:ts.A,Zap:ta.A};function tl({name:e,size:t=20,className:r="",...i}){let s=to[e];return s?(0,n.jsx)(s,{size:t,className:r,strokeWidth:2,...i}):(console.warn(`Icon "${e}" not found in the icon registry`),null)}},73426:(e,t,r)=>{r.d(t,{U:()=>p,x$:()=>h,zm:()=>m});var n=r(90076),i=r(20464),s=r(31735),a=r(97711),o=r(11155),l=r(98988),c=r(90084),d=r(86129);let u=0;async function h(e,{currentKey:t}={}){let r=++u,c=l.rh.getState(),d=t||c.hosts[c.currentKey]?.full||c.currentKey;d&&((0,s.d6)(d,window.location.pathname+window.location.search),l.rh.getState().setAutoConnect((0,o.Uo)(d),!0));let p=await fetch(n.Sn.connect,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:e})});if(!p.ok)throw Error("connect failed");let m=await p.json(),f=!1;for(let t=0;t<n.jP&&!f;t++)(f=await (0,i.zg)(m.tunnelUrl,e))||!(t<n.jP-1)||await new Promise(e=>setTimeout(e,n.dM));if(!f)throw Error("unreachable");r===u&&(0,a.vd)({apiKey:e,tunnelUrl:m.tunnelUrl,mode:"remote",localIp:m.localIp||null})}function p(e){try{e?sessionStorage.setItem(d.aS,"1"):sessionStorage.removeItem(d.aS)}catch{}}function m(e,{remember:t=!0,leavingHead:r=null,navigate:n=!0}={}){e?.tail&&e.tempKey&&(0,c.LG)(e.tempKey,{tail:e.tail}),p(t),r&&((0,s.d6)(r,window.location.pathname+window.location.search),l.rh.getState().setAutoConnect((0,o.Uo)(r),!0)),n&&(window.location.href="/workspace/")}},75687:(e,t,r)=>{r.d(t,{k:()=>n});function n(e){let t=String(e||"").trim(),r=e=>({tempKey:e.slice(0,6).toUpperCase(),tail:e.slice(6,8).toUpperCase()}),n=/#([A-NP-Z1-9]{6}-?[a-np-z1-9]{2})$/i.exec(t);if(n)return r(n[1].replace(/-/g,""));let i=/^([A-NP-Z1-9]{6}-?[a-np-z1-9]{2})$/i.exec(t);if(i)return r(i[1].replace(/-/g,""));let s=/[?&]k=([A-NP-Z1-9]{6})(?:[^A-NP-Z1-9]|$)/i.exec(t);return s?{tempKey:s[1].toUpperCase()}:/^[A-NP-Z1-9]{6}$/i.test(t)?{tempKey:t.toUpperCase()}:null}},79253:(e,t,r)=>{r.d(t,{$b:()=>b,A0:()=>z,AE:()=>y,Ax:()=>$,Dk:()=>P,GW:()=>q,Jl:()=>W,Kr:()=>H,L0:()=>Q,L8:()=>g,LN:()=>B,Qw:()=>L,RV:()=>function e(t){let r;if(!t||"object"!=typeof t)return t;if(Array.isArray(t)){let r=!1,n=t.map(t=>{let n=e(t);return n!==t&&(r=!0),n});return r?n:t}for(let s of Object.keys(t)){let a=t[s];if(i.has(s)&&"string"==typeof a&&a.includes("\\"))(r||={...t})[s]=n(a);else if(a&&"object"==typeof a){let n=e(a);n!==a&&((r||={...t})[s]=n)}}return r||t},W5:()=>X,YO:()=>k,ZH:()=>_,_C:()=>N,bd:()=>Z,cv:()=>F,d5:()=>K,fQ:()=>A,gh:()=>C,hh:()=>O,iB:()=>w,kS:()=>j,kb:()=>n,mv:()=>x,n2:()=>D,pA:()=>I,qu:()=>M,rL:()=>G,so:()=>v,u:()=>f,vd:()=>U,vs:()=>S,xW:()=>T,xl:()=>J,xr:()=>V,zT:()=>E});let n=e=>"string"==typeof e?e.replace(/\\/g,"/"):e,i=new Set(["path","currentPath","parentPath","dirPath","filePath","repoPath","oldPath","newPath","fullPath","relativePath"]),s=[".png",".jpg",".jpeg",".gif",".webp",".ico",".bmp",".svg",".avif",".apng",".tif",".tiff",".heic",".heif"],a=[".mp4",".m4v",".webm",".ogv",".mov",".mkv",".avi",".3gp"],o=[".mp3",".wav",".ogg",".oga",".flac",".m4a",".aac",".opus"],l=[".pdf"],c=[".docx"],d=[".xlsx",".xls",".csv",".tsv"],u=[".html",".htm",".xhtml"],h=[".mmd",".mermaid"],p=[".md",".markdown",".mdx"];function m(e,t){if(!e)return!1;let r=e.toLowerCase();return t.some(e=>r.endsWith(e))}let f=e=>m(e,s),y=e=>m(e,a),g=e=>m(e,o),_=e=>m(e,l),b=e=>m(e,c),w=e=>m(e,d);function k(e){return e?m(e,u)?"html":m(e,p)?"markdown":m(e,h)?"mermaid":null:null}let A="9remote-preview",v={".js":"javascript",".jsx":"javascript",".ts":"javascript",".tsx":"javascript",".mjs":"javascript",".cjs":"javascript",".html":"html",".htm":"html",".xhtml":"html",".css":"css",".scss":"css",".sass":"css",".less":"css",".styl":"css",".json":"json",".json5":"json",".jsonc":"json",".md":"markdown",".markdown":"markdown",".mdx":"markdown",".py":"python",".pyw":"python",".rb":"ruby",".php":"php",".go":"go",".rs":"rust",".java":"java",".kt":"kotlin",".kts":"kotlin",".swift":"swift",".scala":"scala",".clj":"clojure",".cljs":"clojure",".ex":"elixir",".exs":"elixir",".erl":"erlang",".hs":"haskell",".ml":"ocaml",".mli":"ocaml",".jl":"julia",".pl":"perl",".pm":"perl",".tcl":"tcl",".lua":"lua",".r":"r",".dart":"dart",".groovy":"groovy",".gradle":"groovy",".c":"c",".h":"c",".cpp":"cpp",".cc":"cpp",".cxx":"cpp",".hpp":"cpp",".hh":"cpp",".cs":"csharp",".m":"objectivec",".sh":"shell",".bash":"shell",".zsh":"shell",".fish":"shell",".ps1":"powershell",".bat":"batch",".cmd":"batch",".yml":"yaml",".yaml":"yaml",".toml":"toml",".ini":"ini",".cfg":"ini",".conf":"ini",".properties":"ini",".xml":"xml",".sql":"sql",".graphql":"graphql",".gql":"graphql",".proto":"protobuf",".vue":"vue",".svelte":"svelte",".csv":"csv",".tsv":"csv",".log":"log",".diff":"diff",".patch":"diff",".dockerfile":"dockerfile",".makefile":"makefile",".mk":"makefile",".env":"env",".gitignore":"gitignore"},S={M:"text-git-modified",A:"text-git-added",D:"text-git-deleted","?":"text-git-untracked",U:"text-git-modified"},T={normal:{indentBase:12,indentStep:12,icon:16,chevron:14,text:"text-[15px] sm:text-sm",padY:"py-1 sm:py-0.5"},compact:{indentBase:8,indentStep:8,icon:14,chevron:12,text:"text-[13px] sm:text-[12px]",padY:"py-0.5 sm:py-[1px]"}},x=e=>e?"folder-changed"===e?22:32:4,C=768,R="git-diff:",P=(e,t)=>`${R}${e}:${t}`,I=e=>"string"==typeof e&&e.startsWith(R),$=e=>{let t=e.slice(R.length),r=t.indexOf(":");return{status:t.slice(0,r),absPath:t.slice(r+1)}},D=(e,t,r)=>`${R}${e}:${t}\u0000${r}`,M=e=>{let{status:t,absPath:r}=$(e),n=r.indexOf("\0");return -1===n?{status:t,repoPath:null,filePath:r}:{status:t,repoPath:r.slice(0,n),filePath:r.slice(n+1)}},L=18,O=12,U=40,E=48,B=30,j=10,N=70,F=20,W={MAX_DIRS:40,DEBOUNCE_MS:300,PREVIEW_DEBOUNCE_MS:1e3,IDLE_UNWATCH_MS:6e4},q="fileExplorer:gitRefresh",K={sidebarWidth:"fileExplorer.sidebarWidth",sidebarVisible:"fileExplorer.sidebarVisible",bottomPanelVisible:"fileExplorer.bottomPanelVisible",bottomPanelHeight:"fileExplorer.bottomPanelHeight",activityPanel:"fileExplorer.activityPanel",recentFiles:"fileExplorer.recentFiles",openTabs:"fileExplorer.openTabs",editorFontSize:"fileExplorer.editorFontSize",wordWrap:"fileExplorer.wordWrap",expandedFolders:"fileExplorer.expandedFolders",showHidden:"fileExplorer.showHidden"},H={explorer:"explorer",search:"search",scm:"scm",settings:"settings"},z=14,J=4,G=9,V=10,Z=28,Q=5,X=4194304},79453:(e,t,r)=>{r.d(t,{g:()=>J});var n=r(86129);class i{static{this.id="base"}static{this.capabilities={control:!1,binary:!1,signaling:"none"}}static{this.priority={control:0,binary:0}}constructor(){this._listeners=new Map,this._state=n.Of.idle}get state(){return this._state}get ready(){return this._state===n.Of.open}supports(e){return!!this.constructor.capabilities[e]}getPriority(e){return this.constructor.priority[e]??0}on(e,t){this._listeners.has(e)||this._listeners.set(e,new Set),this._listeners.get(e).add(t)}off(e,t){this._listeners.get(e)?.delete(t)}_emit(e,...t){let r=this._listeners.get(e);if(r)for(let e of r)e(...t)}_setState(e){this._state!==e&&(this._state=e,this._emit("stateChange",e))}connect(e){throw Error("Not implemented: connect")}disconnect(){throw Error("Not implemented: disconnect")}send(e,t){throw Error("Not implemented: send")}}var s=r(48193),a=r(63977);let o={transports:["websocket"],reconnection:!1,reconnectionDelay:1e3,reconnectionDelayMax:5e3};class l{constructor({tunnelUrl:e,namespace:t="",socketOptions:r={}}){this._tunnelUrl=e,this._namespace=t,this._socketOptions=r}connect({onSocket:e,onFail:t}){let r=this._namespace?`${this._tunnelUrl}${this._namespace}`:this._tunnelUrl,n=this._tunnelUrl===window.location.origin?"local":"tunnel",i=(0,s.io)(r,{...o,...this._socketOptions,path:"/socket.io",auth:e=>{(0,a.freshAuth)(this._socketOptions.auth,n).then(e)}}),l=!1;i.once("connect",()=>{l||(l=!0,e(i,n))}),i.once("connect_error",()=>{l||(l=!0,t?.())})}}let c={transports:["websocket"],reconnection:!1};class d{constructor({tunnelUrl:e,localIp:t,namespace:r="",socketOptions:n={}}){this._tunnelUrl=e,this._localIp=t,this._namespace=r,this._socketOptions=n}connect({onSocket:e,onFail:t}){let r=!1,n=(t,n)=>{if(r){try{t.disconnect()}catch{}return}r=!0,e(t,n)},i=e=>this._namespace?`${e}${this._namespace}`:e,o=e=>({...c,...this._socketOptions,path:"/socket.io",auth:t=>{(0,a.freshAuth)(this._socketOptions.auth,e).then(t)}}),l=()=>{let e=this._tunnelUrl===window.location.origin?"local":"tunnel",a=(0,s.io)(i(this._tunnelUrl),o(e));a.once("connect",()=>n(a,e)),a.once("connect_error",()=>void(!r&&(r=!0,t?.())))};if(!this._localIp||"https:"===window.location.protocol)return void l();let d=(0,s.io)(i(`http://${this._localIp}`),o("local"));d.once("connect",()=>n(d,"local")),d.once("connect_error",()=>{r||(d.disconnect(),l())})}}var u=r(90076);let h=3;var p=r(52159),m=r(27520);let f=2e3,y=15,g=15,_=15,b=45;class w extends i{static{this.id="ws"}static{this.capabilities={control:!0,binary:!0,file:!0,browser:!0,signaling:"ws"}}static{this.priority={control:100,binary:10,file:10,browser:10}}constructor(){super(),this._socket=null,this._connectionMode="local",this._retryTimer=null,this._retryAttempt=0,this._retryScheduled=!1,this._retryNowTimer=null,this._destroyed=!1,this._blocked=!1,this._updating=!1,this._connecting=!1,this._visibilityHandler=null,this._lastInboundAt=Date.now(),this._lastMsgAt=0,this._zombieWatchdogTimer=null,this._outboundWatchdogTimer=null,this._lastBufferedAmount=0,this._retrySeq=0}get lastInboundAt(){return this._lastInboundAt}get lastMsgAt(){return this._lastMsgAt}get socket(){return this._socket}get connectionMode(){return this._connectionMode}get blocked(){return this._blocked}setUpdating(e){this._updating=e,e&&(this._maxAttempts=b,this._retryAttempt=0,(0,p.c)("transport",`[ws] updating=true maxAttempts=${this._maxAttempts}`))}forceReconnect(){this._destroyed||this._forceReconnect()}retryNow(e="?"){if(this._blocked)return void(0,m.Lq)("switch",`ws retryNow SKIP by=${e} (blocked)`);let t=Date.now(),r=t-(this._lastRetryNowAt||0);if(r<3e3){this._retryNowTimer||(this._retryNowTimer=setTimeout(()=>{this._retryNowTimer=null,this.retryNow(`${e}-deferred`)},3e3-r)),(0,p.c)("transport","[ws] retryNow throttled → deferred"),(0,m.Lq)("switch",`ws retryNow DEFER by=${e} (${3e3-r}ms left)`);return}(0,m.Lq)("switch",`ws retryNow GO by=${e} (drops attempt ${this._retryAttempt})`),this._retrySeq++,this._lastRetryNowAt=t,clearTimeout(this._retryNowTimer),this._retryNowTimer=null,clearTimeout(this._retryTimer),clearTimeout(this._connectingTimer),this._retryTimer=null,this._retryScheduled=!1,this._retryAttempt=0,this._connecting=!1,this._destroyed=!0,this._detachSocketEvents(),this._socket?.disconnect(),this._socket=null,this._destroyed=!1,this._ctx?.onRetryStatus?.({isRetrying:!0,attempt:1,maxAttempts:this._maxAttempts,failed:!1}),this._setState(n.Of.connecting),this._connectInternal()}setBlocked(e){this._blocked=e,(0,p.c)("transport",`[ws] blocked=${e}`),e?(this._cancelRetry(),this._socket?.disconnect()):this._socket?.connected||this._destroyed||this._connectInternal()}connect(e){this._ctx=e,this._auth=e.auth,this._maxAttempts=this._auth.tempKey?y:g,this._reconnectMaxAttempts=_,this._destroyed=!1,this._attachNetworkListeners(),this._setState(n.Of.connecting),this._connectInternal()}disconnect(){this._destroyed=!0,this._retrySeq++,this._cancelRetry(),clearTimeout(this._zombieWatchdogTimer),clearTimeout(this._outboundWatchdogTimer),this._removeNetworkListeners(),this._detachSocketEvents(),this._socket?.disconnect(),this._socket=null,this._setState(n.Of.closed)}send(e,t){if(!this._socket?.connected)return!1;if(e===n.l_.control){let{event:e,args:r=[],cb:n}=t;return n?this._socket.emit(e,...r,n):this._socket.emit(e,...r),!0}return e===n.l_.binary?(this._socket.emit("tiles-bin-v2",t),!0):e===n.l_.browser?(this._socket.emit("browser:tiles-bin",t),!0):e===n.l_.file&&(this._socket.emit("file-bin",t),!0)}_outboundStalled(e){try{let t=e?.io?.engine?.transport?.ws,r="number"==typeof t?.bufferedAmount?t.bufferedAmount:0,n=r>0&&this._lastBufferedAmount>0&&r>=this._lastBufferedAmount;return this._lastBufferedAmount=r,n}catch{return this._lastBufferedAmount=0,!1}}_connectInternal(){if(this._connecting||this._socket?.connected||this._destroyed)return;if(!this._auth.tunnelUrl&&!this._auth.localIp){(0,p.c)("transport","[ws] connect HOLD (no tunnelUrl/localIp yet) → retry"),(0,m.Lq)("switch","ws connect HOLD (no url yet) → fetch on retry"),this._setState(n.Of.degraded),this._scheduleRetry();return}this._connecting=!0,clearTimeout(this._connectingTimer),this._connectingTimer=setTimeout(()=>{this._connecting=!1},f);let e={tunnelUrl:this._auth.tunnelUrl,namespace:this._auth.namespace||"",socketOptions:this._auth.socketOptions||{}};(0,p.c)("transport",`[ws] connect: tunnelUrl=${this._auth.tunnelUrl} localIp=${this._auth.localIp||"none"}`),new l(e).connect({onSocket:(e,t)=>{if(this._connecting=!1,clearTimeout(this._connectingTimer),this._socket?.connected&&this._socket!==e){try{e.disconnect()}catch{}return}this._connectionMode=t,this._socket=e,this._retryAttempt=0,this._updating=!1,this._maxAttempts=this._reconnectMaxAttempts,this._cancelRetry(),this._attachSocketEvents(e),(0,p.c)("transport",`[ws] connect mode=${t}`),(0,m.Lq)("switch",`ws open mode=${t}`),this._setState(n.Of.open)},onFail:()=>{this._connecting=!1,clearTimeout(this._connectingTimer),(0,p.c)("transport","[ws] connect FAIL → schedule retry"),this._scheduleRetry()}})}_attachSocketEvents(e){e.on("disconnect",e=>{(0,p.c)("transport",`[ws] disconnect reason=${e}`),(0,m.Lq)("switch",`ws disconnect reason=${e}`),this._setState(n.Of.degraded),this._destroyed||this._forceReconnect()}),e.on("connect_error",e=>{(0,p.c)("transport",`[ws] connect_error ${e?.message||e}`),this._setState(n.Of.degraded),this._forceReconnect()});let t=()=>{clearTimeout(this._zombieWatchdogTimer),this._zombieWatchdogTimer=setTimeout(()=>{if(!this._destroyed&&this._socket===e){if(Date.now()-this._lastInboundAt<n.Rh)return void t();(0,m.Lq)("switch","ws zombie watchdog → force reconnect"),this.forceReconnect()}},n.Rh)};t(),e.io?.on?.("ping",()=>{this._lastInboundAt=Date.now(),t()}),e.on("connect",()=>{this._lastInboundAt=Date.now(),t()});let r=()=>{clearTimeout(this._outboundWatchdogTimer),this._outboundWatchdogTimer=setTimeout(()=>{if(!this._destroyed&&this._socket===e){if(this._outboundStalled(e)){(0,m.Lq)("switch","ws outbound stall (send buffer frozen) → force reconnect"),this.forceReconnect();return}r()}},n.KP)};r(),e.onAny((e,t)=>{this._lastMsgAt=Date.now(),this._emit("message",{event:e,data:t,source:"ws"})})}_attachNetworkListeners(){this._visibilityHandler||(this._visibilityHandler=()=>{"visible"!==document.visibilityState||this._socket?.connected||this._connecting||this.retryNow("visible")},this._offlineHandler=()=>{(0,m.Lq)("switch","ws offline event → drop socket, degraded"),this._socket?.disconnect(),this._socket=null,this._setState(n.Of.degraded)},this._onlineHandler=()=>{this._socket?.connected||this._connecting?(0,m.Lq)("switch",`ws online event → skip (${this._connecting?"handshaking":"already up"})`):this.retryNow("online")},this._pagehideHandler=()=>{try{this._socket?.disconnect()}catch{}},window.addEventListener("pagehide",this._pagehideHandler),document.addEventListener("visibilitychange",this._visibilityHandler),window.addEventListener("offline",this._offlineHandler),window.addEventListener("online",this._onlineHandler))}_detachSocketEvents(){if(this._socket)try{this._socket.offAny()}catch{}}_removeNetworkListeners(){this._pagehideHandler&&(window.removeEventListener("pagehide",this._pagehideHandler),this._pagehideHandler=null),this._visibilityHandler&&(document.removeEventListener("visibilitychange",this._visibilityHandler),this._visibilityHandler=null),this._offlineHandler&&(window.removeEventListener("offline",this._offlineHandler),this._offlineHandler=null),this._onlineHandler&&(window.removeEventListener("online",this._onlineHandler),this._onlineHandler=null)}_forceReconnect(){if(!this._destroyed&&!this._blocked&&!this._retryScheduled&&!this._connecting){if(this._retrySeq++,this._retryAttempt++,this._retryAttempt>h){this._retryAttempt=0,this._scheduleRetry();return}this._socket?.disconnect(),this._socket=null,this._connectInternal()}}_scheduleRetry(){this._retryScheduled||this._destroyed||this._blocked||(this._retryScheduled=!0,this._retryTimer=setTimeout(()=>this._doRetry(),f))}async _doRetry(){if(this._destroyed)return;if("u">typeof document&&"hidden"===document.visibilityState){(0,m.Lq)("switch",`ws retry HOLD (hidden, still at ${this._retryAttempt}/${this._maxAttempts})`),this._retryScheduled=!1,this._scheduleRetry();return}this._retryAttempt++;let e=this._retryAttempt,t=this._retrySeq;if(e>this._maxAttempts){this._retryScheduled=!1,(0,m.Lq)("switch",`ws GAVE UP after ${this._maxAttempts} attempts → closed`),this._ctx?.onRetryStatus?.({isRetrying:!1,attempt:e,maxAttempts:this._maxAttempts,failed:!0}),this._setState(n.Of.closed);return}(0,p.c)("transport",`[ws] retry attempt=${e}/${this._maxAttempts}`),(0,m.Lq)("switch",`ws retry ${e}/${this._maxAttempts}`),this._ctx?.onRetryStatus?.({isRetrying:!0,attempt:e,maxAttempts:this._maxAttempts,failed:!1});try{let e=await fetch(u.Sn.connect,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:this._auth.apiKey})});if(!e.ok)throw Error("Failed");let{tunnelUrl:r,localIp:n}=await e.json();if(t!==this._retrySeq)return void(0,m.Lq)("switch","ws retry ABORT (superseded mid-fetch)");this._auth.tunnelUrl=r,this._auth.localIp=n||null,this._connectionMode="local",this._ctx?.onUrlUpdate?.({tunnelUrl:r,localIp:n}),this._socket?.disconnect(),this._retryScheduled=!1,this._connectInternal()}catch{if(t!==this._retrySeq)return;this._retryScheduled=!1,this._scheduleRetry()}}_cancelRetry(){clearTimeout(this._retryTimer),this._retryTimer=null,clearTimeout(this._retryNowTimer),this._retryNowTimer=null,this._retrySeq++,this._retryAttempt=0,this._retryScheduled=!1,this._ctx?.onRetryStatus?.({isRetrying:!1,attempt:0,maxAttempts:this._maxAttempts,failed:!1})}}function k(e,t){if(t instanceof Uint8Array){let e="";for(let r=0;r<t.length;r++)e+=String.fromCharCode(t[r]);return{__b:btoa(e)}}return t}function A(e,t){if(t&&"object"==typeof t&&"string"==typeof t.__b){let e=atob(t.__b),r=new Uint8Array(e.length);for(let t=0;t<e.length;t++)r[t]=e.charCodeAt(t);return r}return t}function v(e){return JSON.stringify(e,k)}function S(e,t=null){let r=[],n={event:e.event,args:function e(t,r){if(t instanceof ArrayBuffer)return r.push(new Uint8Array(t)),{__B:r.length-1};if(ArrayBuffer.isView(t))return r.push(new Uint8Array(t.buffer,t.byteOffset,t.byteLength)),{__B:r.length-1};if(Array.isArray(t))return t.map(t=>e(t,r));if(t&&"object"==typeof t){let n={};for(let i of Object.keys(t))n[i]=e(t[i],r);return n}return t}(e.args||[],r),ackId:e.ackId??null,lens:r.map(e=>e.length)};t&&(n.frag=t.id,n.part=t.part,n.parts=t.parts);let i=new TextEncoder().encode(JSON.stringify(n)),s=new Uint8Array(4+i.length+r.reduce((e,t)=>e+t.length,0));new DataView(s.buffer).setUint32(0,i.length,!0),s.set(i,4);let a=4+i.length;for(let e of r)s.set(e,a),a+=e.length;return s}function T(e){let t=e instanceof Uint8Array?e:new Uint8Array(e);if(t.length<4)throw Error("frame too short");let r=4+new DataView(t.buffer,t.byteOffset,t.byteLength).getUint32(0,!0);if(r>t.length)throw Error("frame header truncated");let n=JSON.parse(new TextDecoder().decode(t.subarray(4,r))),i=[],s=r;for(let e of n.lens||[]){if(s+e>t.length)throw Error("frame part truncated");i.push(t.subarray(s,s+e)),s+=e}return{event:n.event,args:function e(t,r){if(Array.isArray(t))return t.map(t=>e(t,r));if(t&&"object"==typeof t){if("number"==typeof t.__B)return r[t.__B]??null;let n={};for(let i of Object.keys(t))n[i]=e(t[i],r);return n}return t}(n.args||[],i),ackId:n.ackId??null,frag:n.frag,part:n.part,parts:n.parts}}function x(){let e=new Map;return{push(t){let{frag:r,part:n,parts:i}=t;if(null==r)return t;if(!Number.isInteger(n)||!Number.isInteger(i)||n<0||i<1||n>=i||i>4096)return null;let s=e.get(r);s||(e.size>=4&&e.delete(e.keys().next().value),s={slices:Array(i),got:0},e.set(r,s));let a=t.args?.[0];if(null==a||(!s.slices[n]&&(s.slices[n]=a,s.got++),s.got<i))return null;e.delete(r);let o=new Uint8Array(s.slices.reduce((e,t)=>e+t.byteLength,0)),l=0;for(let e of s.slices)o.set(e,l),l+=e.byteLength;return T(o)}}}var C=r(90084),R=r(7938);let P=null,I=0,$=new Map,D=0;async function M(e,t){let r=`9remote_turn_cache_${t?.slice(0,12)||"anon"}`;try{let e="u">typeof localStorage?localStorage.getItem(r):null;if(e){let t=JSON.parse(e);if(t?.expiresAt>Date.now()&&Array.isArray(t.iceServers)&&t.iceServers.length)return t.iceServers}}catch{}try{let n=await fetch(e,{headers:{"X-API-Key":t},signal:AbortSignal.timeout(4e3)});if(n.ok){let e=await n.json();if(e?.iceServers?.length){try{"u">typeof localStorage&&localStorage.setItem(r,JSON.stringify({iceServers:e.iceServers,expiresAt:Date.now()+828e5}))}catch{}return e.iceServers}}}catch(e){console.warn("[WebRtcProtocol] TURN fetch failed:",e.message)}return null}class L extends i{static{this.id="rtc"}static{this.capabilities={control:!0,binary:!0,file:!0,browser:!0,signaling:"external"}}static{this.priority={control:50,binary:100,file:100,browser:100}}constructor(){super(),this._pc=null,this._dcControl=null,this._dcBinary=null,this._dcFile=null,this._dcMobile=null,this._typeDetail="dc-stun",this._localCandidateTypes=new Set,this._answerApplied=!1,this._pendingCandidates=[],this._iceReachedChecking=!1,this._everOpened=!1,this._isLoopback=!1,this._pendingEmit=null,this._flushTimer=null,this._latestTileTs=new Map,this._hbTimer=null,this._hbLastPing=0,this._hbFastCadence=!1,this._dcStallCount=0,this._dcStallSince=0,this._dcPrevQueued=0,this._peerEnv2=!1,this._peerFragCtl=!1,this._v2Announced=!1,this._v2RxSeen=!1,this._fragSeq=0,this._reassemble=x(),this._lastInboundAt=0,this._signalingHandlers={},this._signaling=null,this._useTurn=!1}get lastInboundAt(){return this._lastInboundAt}getPriority(e){return"dc-turn"===this._typeDetail?5:150}async connect(e){this._ctx=e,this._cleanupPeer(),this._peerEpoch=(this._peerEpoch??0)+1,this._localCandidateTypes=new Set,this._answerApplied=!1,this._pendingCandidates=[],this._iceReachedChecking=!1,this._everOpened=!1,this._isLoopback=!1,this._hbFastCadence=!1,this._dcStallCount=0,this._dcStallSince=0,this._dcPrevQueued=0,this._typeDetail="dc-stun",this._lastMid=null,this._remoteGatheringDone=!1,this._setState(n.Of.connecting),this.connectingSince=Date.now(),this.connectDeadline=this.connectingSince+n.AC,clearTimeout(this._connectTimer),this._connectTimer=setTimeout(()=>{this._state!==n.Of.open&&((0,p.c)("transport",`[rtc] connect timeout (${n.AC}ms, state=${this._state}) → close + retry`),this._closePeer(`connect-timeout (state=${this._state})`))},n.AC);let t=[{urls:["stun:stun.l.google.com:19302","stun:stun1.l.google.com:19302","stun:stun2.l.google.com:19302","stun:stun3.l.google.com:19302","stun:stun4.l.google.com:19302"]},{urls:"stun:global.stun.twilio.com:3478"},{urls:"stun:stun.cloudflare.com:3478"}];if(this._useTurn=!!(e.useTurn||e.profile?.rtc?.enableTurn),e.iceServers?.length)t=e.iceServers;else if(this._useTurn){let r=await M(u.Sn.turnCredentials,e.auth?.apiKey);r?.length&&(t=r)}let r=new RTCPeerConnection({iceServers:t,iceCandidatePoolSize:4,bundlePolicy:"max-bundle",rtcpMuxPolicy:"require"});this._pc=r;let i=e.profile?.rtc?.dcControl?.ordered??!0,s=r.createDataChannel("control",{ordered:i}),a=r.createDataChannel("binary",{ordered:!1,maxPacketLifeTime:500}),o=r.createDataChannel("file",{ordered:!0}),l=r.createDataChannel("mobile",{ordered:!0}),c=r.createDataChannel("browser",{ordered:!1,maxPacketLifeTime:500});a.binaryType="arraybuffer",s.binaryType="arraybuffer",o.binaryType="arraybuffer",l.binaryType="arraybuffer",c.binaryType="arraybuffer",this._dcControl=s,this._dcBinary=a,this._dcFile=o,this._dcMobile=l,this._dcBrowser=c;let d=async()=>{if("open"!==s.readyState||"open"!==a.readyState)return;let e="";try{let t=await r.getStats();t.forEach(r=>{if("candidate-pair"===r.type&&"succeeded"===r.state){let n=[...t.values()].find(e=>e.id===r.localCandidateId),i=[...t.values()].find(e=>e.id===r.remoteCandidateId);(n?.candidateType==="relay"||i?.candidateType==="relay")&&(this._typeDetail="dc-turn");let s=n?.address||n?.ip||"",a=i?.address||i?.ip||"";("127.0.0.1"===s||"::1"===s||"127.0.0.1"===a||"::1"===a)&&(this._isLoopback=!0),e=`local=${n?.candidateType}/${n?.protocol} remote=${i?.candidateType}/${i?.protocol}`}})}catch{}this.send(n.l_.control,{event:"rtc:linkType",args:[this._typeDetail]}),(0,p.c)("transport",`[rtc] dc OPEN type=${this._typeDetail} ${e}`),(0,m.Lq)("switch",`rtc dc OPEN (${this._typeDetail} ${e})`),clearTimeout(this._connectTimer),this._connectTimer=null,this._everOpened=!0,this._lastInboundAt=Date.now(),this._setState(n.Of.open)};s.onopen=d,a.onopen=d;let h=()=>{let e=!this._dcControl||"closed"===this._dcControl.readyState,t=!this._dcBinary||"closed"===this._dcBinary.readyState;(0,m.Lq)("switch",`rtc dc-close (ctrl=${this._dcControl?.readyState} bin=${this._dcBinary?.readyState})`),e&&t?this._setState(n.Of.closed):this._setState(n.Of.degraded)};s.onclose=h,a.onclose=h,o.onclose=()=>{this._dcFile=null},l.onclose=()=>{this._dcMobile=null},c.onclose=()=>{this._dcBrowser=null},s.onerror=e=>{let t=e.error?.message??"unknown";t.includes("User-Initiated")||console.error("[rtc] dcControl ERROR:",t)},a.onerror=e=>{let t=e.error?.message??"unknown";t.includes("User-Initiated")||console.error("[rtc] dcBinary ERROR:",t)},o.onerror=e=>{let t=e.error?.message??"unknown";t.includes("User-Initiated")||console.error("[rtc] dcFile ERROR:",t)},s.onmessage=({data:e})=>{let t;this._lastInboundAt=Date.now();try{let r;if("string"==typeof e)r=JSON.parse("string"==typeof e?e:new TextDecoder().decode(e),A);else r=T(e),this._v2RxSeen||(this._v2RxSeen=!0,(0,m.Lq)("switch","env2: first v2 binary frame DECODED from agent (mutual upgrade confirmed)"));t=this._reassemble.push(r)}catch(e){console.error("[rtc] control parse error:",e.message);return}if(t){if("__ping"===t.event){this._hbTimer||this._startHeartbeatWatch(),(this._hbLastPing?Date.now()-this._hbLastPing:1/0)<=2*n.KF&&(this._hbFastCadence=!0),this._hbLastPing=Date.now();try{s.send(v({event:"__pong",args:t.args||[]}))}catch{}return}this._emit("message",{event:t.event,data:t,source:"rtc"})}},a.onmessage=({data:e})=>{this._lastInboundAt=Date.now(),e instanceof ArrayBuffer&&this._receiveTile(e,"tiles-data")},c.onmessage=({data:e})=>{this._lastInboundAt=Date.now(),e instanceof ArrayBuffer&&this._receiveTile(e,"browser:tiles-data")},o.onmessage=({data:e})=>{this._lastInboundAt=Date.now(),e instanceof ArrayBuffer&&this._emit("binary",{channel:"file",buffer:e,source:"rtc"})},l.onmessage=({data:e})=>{this._lastInboundAt=Date.now(),e instanceof ArrayBuffer&&this._emit("binary",{channel:"mobile",buffer:e,source:"rtc"})},r.onicecandidate=({candidate:e})=>{var t;if(!e)return void this._sendSignaling({type:"ice",candidate:"",mid:this._lastMid||"0"});this._lastMid=e.sdpMid;let r=/typ (host|srflx|relay|prflx)/.exec(e.candidate||"");r&&this._localCandidateTypes.add(r[1]);let n=(t=e.candidate)&&t.includes("typ srflx")&&t.split(" ")[4]||null;n&&this._emit("netFingerprint",n),this._sendSignaling({type:"ice",candidate:e.candidate,mid:e.sdpMid})},r.oniceconnectionstatechange=()=>{(0,p.c)("transport",`[rtc] iceState=${r.iceConnectionState}`),(0,m.Lq)("switch",`rtc ice=${r.iceConnectionState} types=[${[...this._localCandidateTypes].join(",")}]`),"checking"===r.iceConnectionState&&(this._iceReachedChecking=!0),"disconnected"===r.iceConnectionState?this._setState(n.Of.degraded):"failed"===r.iceConnectionState?this._closePeer("ice-failed"):"connected"===r.iceConnectionState&&this._dcControl?.readyState==="open"&&this._dcBinary?.readyState==="open"&&this._setState(n.Of.open)},this._signaling=e.signaling,this._signaling?.on?.(e=>this._handleSignal(e));try{let e=await r.createOffer();await r.setLocalDescription(e),(0,p.c)("transport","[rtc] offer sent"),(0,m.Lq)("switch","rtc offer sent"),this._sendSignaling({type:"offer",sdp:e.sdp,useTurn:this._useTurn})}catch(e){console.error("[rtc] createOffer error:",e.message),this._closePeer(`create-offer:${e.message}`)}}disconnect(e="?"){this._closePeer(`manual-disconnect by=${e} state=${this._state}`),this._signaling?.off?.(),this._signaling=null}send(e,t){if(e===n.l_.control){if(this._dcControl?.readyState!=="open")return!1;let e={event:t.event,args:t.args||[],ackId:t.ackId||null},r=this._sendControlStallChecked(this._dcControl,e);return r&&this._peerEnv2&&!this._v2Announced&&(this._v2Announced=!0,(0,m.Lq)("switch","env2: client→agent control now SENT as v2 binary frames")),r}if(e===n.l_.binary){if(this._dcBinary?.readyState!=="open")return!1;try{return this._dcBinary.send(t),!0}catch(e){return console.error("[rtc] send binary error:",e.message),!1}}if(e===n.l_.file){if(this._dcFile?.readyState!=="open")return!1;try{if(this._dcFile.bufferedAmount>n.HE.dcBufferThreshold)return!1;return this._dcFile.send(t),!0}catch(e){console.error("[rtc] send file error:",e.message)}}return!1}_sendControlStallChecked(e,t){let r,i=e.bufferedAmount;if(i>0&&i>=this._dcPrevQueued){0===this._dcStallCount&&(this._dcStallSince=Date.now()),this._dcStallCount++;let e=Date.now()-this._dcStallSince;if(this._dcStallCount>=n.fP&&e>=n.b4)return this._closePeer(`dc-drain-stall (${i}B stuck ${e}ms)`),!1}else this._dcStallCount=0;if(this._peerEnv2)r=this._sendFramed(t);else try{e.send(v(t)),r=!0}catch(e){r=!1}return this._dcPrevQueued=e.bufferedAmount,r}get typeDetail(){return this._typeDetail}get isLoopback(){return this._isLoopback}_closePeer(e){(0,m.Lq)("switch",`rtc→closed reason=${e}`),this._cleanupPeer(),this._setState(n.Of.closed)}setPeerCaps(e){this._peerEnv2=!!e?.env2,this._peerFragCtl=!!e?.fragCtl}get maxControlBytes(){return this._pc?.sctp?.maxMessageSize||n.dT}_sendFramed(e){var t;let r,n,i=this._peerFragCtl?this.maxControlBytes:1/0,s=(t=++this._fragSeq,(n=function(e,t){if(e.byteLength<=t)return[e];let r=t-192;if(r<=0)return null;let n=Math.ceil(e.byteLength/r);if(n>4096)return null;let i=[];for(let t=0;t<n;t++)i.push(e.subarray(t*r,Math.min((t+1)*r,e.byteLength)));return i}(r=S(e),i))?1===n.length?[r]:n.map((r,i)=>S({event:e.event,args:[r]},{id:t,part:i,parts:n.length})):null);if(!s)return!1;try{for(let e of s)this._dcControl.send(e);return!0}catch(e){return(0,p.c)("transport",`[rtc] control send refused: ${e.message}`),!1}}_startHeartbeatWatch(){this._hbTimer&&(clearInterval(this._hbTimer),this._hbTimer=null),this._hbLastPing=Date.now(),this._hbTimer=setInterval(()=>{if(this._state!==n.Of.open){clearInterval(this._hbTimer),this._hbTimer=null;return}let e=Date.now()-this._hbLastPing;e>(this._hbFastCadence?n.An:n.mk)&&((0,p.c)("transport",`[rtc] heartbeat: no ping for ${e}ms → closing stalled peer`),this._closePeer(`heartbeat-stale (${e}ms)`))},n.KF)}async _addRemoteCandidate({candidate:e,mid:t}){e||(this._remoteGatheringDone=!0),await this._pc.addIceCandidate(new RTCIceCandidate(e?{candidate:e,sdpMid:t}:{candidate:"",sdpMid:t||"0"})).catch(()=>{})}_startDeadPathWatch(){clearInterval(this._deadPathTimer),this._deadPathTimer=setInterval(async()=>{if(this._state===n.Of.open||!this._pc)return this._stopDeadPathWatch();if(!this._remoteGatheringDone||"complete"!==this._pc.iceGatheringState)return;let e=0,t=0;try{(await this._pc.getStats()).forEach(r=>{"candidate-pair"===r.type&&(e++,"failed"===r.state&&t++)})}catch{return}e&&!(t<e)&&(this._stopDeadPathWatch(),this._closePeer(`dead-path (${t} pair(s) failed)`))},n.QS)}_stopDeadPathWatch(){clearInterval(this._deadPathTimer),this._deadPathTimer=null}_sendSignaling(e){this._signaling?.send?.(e)}async _handleSignal(e){if((0,p.c)("transport",`[rtc] signal: ${e.type}`),(0,m.Lq)("switch",`rtc signal recv=${e.type}`),this._pc)try{if("answer"===e.type){if(this._answerApplied||"stable"===this._pc.signalingState){(0,p.c)("transport","[rtc] duplicate answer ignored"),(0,m.Lq)("switch","rtc duplicate answer ignored");return}if(e.pub&&e.sig){let t=await this._verifyHostAnswer(e);if(t){console.error(`[rtc] host key verification FAILED (${t}) — relayed answer rejected`),this._closePeer(`host-key-rejected:${t}`);return}}await this._pc.setRemoteDescription(new RTCSessionDescription({type:"answer",sdp:e.sdp})),this._answerApplied=!0,(0,p.c)("transport","[rtc] answer set"),(0,m.Lq)("switch","rtc answer applied");let t=this._pendingCandidates;for(let e of(this._pendingCandidates=[],t))await this._addRemoteCandidate(e);clearTimeout(this._connectTimer),this.connectDeadline=Date.now()+n.HJ,this._startDeadPathWatch(),this._connectTimer=setTimeout(async()=>{if(this._state!==n.Of.open){try{let e=await this._pc.getStats();e.forEach(t=>{if("candidate-pair"!==t.type)return;let r=e.get(t.localCandidateId),n=e.get(t.remoteCandidateId),i=(r?.address||r?.ip||"?").split(":")[0].slice(-12),s=n?.address||n?.ip||"?";(0,m.Lq)("switch",`pair ${t.state} ${r?.candidateType}:${i}→${n?.candidateType}:${s}`)})}catch{}this._closePeer(`ice-timeout (state=${this._state})`)}},n.HJ)}else if("ice"===e.type){if(!this._answerApplied)return void this._pendingCandidates.push(e);await this._addRemoteCandidate(e)}else"error"===e.type&&((0,p.c)("transport",`[rtc] server error: ${e.message}`),this._closePeer(`server-error:${e.message}`))}catch(e){console.error("[rtc] signal handle error:",e.message)}}async _verifyHostAnswer(e){let t=this._ctx?.auth?.apiKey;if(!t)return null;let r=(0,C.lz)(t),n=r?.hostPubKey?r:null,i=!!r?.hostSealKey;if((0,p.c)("auth","[seal] verify answer:",{hostSentXpub:!!e.xpub,agentSentXpub:!!e.xpub,pinned:!!n,stalePin:!!(r?.hostPubKey&&!i),pendingFp2:(0,C.e1)()}),n){if(n.hostPubKey!==e.pub){let r=(0,C.e1)();return r&&await (0,C.t8)(e.pub,e.xpub)===r?((0,C.LG)(t,{hostPubKey:e.pub,hostSealKey:e.xpub,fp2:r}),(0,p.c)("transport","[rtc] host key re-pinned via fresh pairing fp2"),null):((0,p.c)("auth","[seal] REJECT answer — pinned pub differs (host key rotated?) and no fresh fp2 to re-pin"),"pinned-pub-mismatch")}let r=await (0,C.D5)(e.pub,e.sdp,e.sig);if(!1===r)return(0,p.c)("auth","[seal] REJECT answer — signature invalid (relay tampering?)"),"sig-invalid";if(null===r){if(!i)return(0,p.c)("auth","[seal] REJECT answer — no Ed25519 in browser and pinned fp2 predates sealing"),"no-ed25519-old-pin";let t=await (0,C.t8)(e.pub,e.xpub)===n.fp2;return t||(0,p.c)("auth","[seal] REJECT answer — fp2 fallback mismatch vs pinned",n.fp2),t?null:"fp2-mismatch"}return null}let s=(0,C.e1)();if(s){let r=await (0,C.t8)(e.pub,e.xpub);if(r!==s)return(0,p.c)("auth","[seal] REJECTED — fp2",r,"!= code",s,e.xpub?"":"(agent sent no sealing key — needs the source build)"),(0,C.HY)(),"pairing-fp2-mismatch";(0,C.LG)(t,{hostPubKey:e.pub,hostSealKey:e.xpub,fp2:r}),(0,p.c)("auth","[seal] pinned via RTC — fp2",r,"sealing key stored"),(0,p.c)("transport","[rtc] host key pinned via pairing fp2")}return null}natVerdict(){let e=this._localCandidateTypes;return this._everOpened||e.has("relay")?"ok":0===e.size||e.has("srflx")&&(!this._answerApplied||this._iceReachedChecking)?"unknown":"hard"}_cleanupPeer(){for(let e of(clearTimeout(this._connectTimer),this._connectTimer=null,this._stopDeadPathWatch(),this._hbTimer&&(clearInterval(this._hbTimer),this._hbTimer=null),[this._dcControl,this._dcBinary,this._dcFile,this._dcMobile]))if(e){e.onopen=null,e.onclose=null,e.onerror=null,e.onmessage=null;try{e.close()}catch{}}if(this._dcControl=null,this._dcBinary=null,this._dcFile=null,this._dcMobile=null,this._dcStallCount=0,this._dcStallSince=0,this._dcPrevQueued=0,this._isLoopback=!1,this._typeDetail="dc-stun",this._pc){this._pc.onicecandidate=null,this._pc.oniceconnectionstatechange=null;try{this._pc.close()}catch{}this._pc=null}this._pendingEmit=null,this._flushTimer&&(clearTimeout(this._flushTimer),this._flushTimer=null),this._latestTileTs.clear(),this._reassemble=x()}_receiveTile(e,t="tiles-data"){let n=++I,i=e.byteLength;new Promise(t=>{let i=setTimeout(()=>{$.has(n)&&($.delete(n),t(null))},8e3),s=R.eR.decodeQueueCap;for(;$.size>=s;){let e=$.keys().next().value,t=$.get(e);if(!t)break;clearTimeout(t.timer),$.delete(e),t.resolve(null)}let a=function(){if(!1===P)return null;if(P)return P;try{P=new Worker(r.tu(new URL(r.p+r.u(3692),r.b)))}catch{return P=!1,null}return P.onmessage=({data:{tiles:e,timestamp:t,id:r,hasBitmap:n,error:i}})=>{D=0;let s=$.get(r);if(!s){if(e)for(let t of e)t.bitmap?.close?.();return}clearTimeout(s.timer),$.delete(r),s.resolve(i?null:{tiles:e,timestamp:t,hasBitmap:n})},P.onerror=e=>{console.error("[Worker] tileDecoder:",e.message),function(){if(P)try{P.terminate()}catch{}for(let{resolve:e}of(P=null,$.values()))try{e(null)}catch{}$.clear()}(),++D>=3&&(P=!1)},P}();if(!a){clearTimeout(i),$.delete(n),t(null);return}$.set(n,{resolve:t,timer:i}),a.postMessage({buffer:e,id:n,v:2},[e])}).then(e=>{if(!e)return;let{tiles:r,timestamp:n,hasBitmap:s}=e;this._pendingEmits??=new Map,this._latestTsMaps??=new Map;let a=this._pendingEmits.get(t);a||(a={tiles:new Map,timestamp:n,hasBitmap:s,bytes:0},this._pendingEmits.set(t,a));let o=this._latestTsMaps.get(t);for(let e of(o||(o=new Map,this._latestTsMaps.set(t,o)),a.bytes+=i,r))n>=(o.get(e.tileIndex)??0)?(o.set(e.tileIndex,n),a.tiles.get(e.tileIndex)?.bitmap?.close?.(),a.tiles.set(e.tileIndex,e),n>a.timestamp&&(a.timestamp=n)):e.bitmap?.close?.();this._flushTimers??=new Map,this._flushTimers.has(t)&&clearTimeout(this._flushTimers.get(t));let l=setTimeout(()=>{this._flushTimers.delete(t);let e=this._pendingEmits.get(t);if(!e)return;this._pendingEmits.delete(t);let r=[...e.tiles.values()];r.length&&this._emit("message",{event:t,data:{tiles:r,timestamp:e.timestamp,hasBitmap:e.hasBitmap,bytes:e.bytes,transport:this._typeDetail},source:"rtc"})},0);this._flushTimers.set(t,l)})}}let O=new Map;function U(e){if(!e?.id)throw Error("Adapter missing static id");O.set(e.id,e)}function E({urls:e,timeoutMs:t,PeerConnection:r}={}){let i=r||("u">typeof RTCPeerConnection?RTCPeerConnection:null);if(!i)return Promise.resolve(null);let s=[{urls:e||n.cx.urls}];return new Promise(e=>{let r,a,o=!1,l=t=>{if(!o){o=!0,clearTimeout(a);try{r.onicecandidate=null,r.close()}catch{}e(t)}};try{r=new i({iceServers:s,iceCandidatePoolSize:0})}catch{return e(null)}a=setTimeout(()=>l(null),t??n.cx.timeoutMs),r.onicecandidate=({candidate:e})=>{var t;if(!e)return l(null);let r=(t=e.candidate)&&t.includes("typ srflx")&&t.split(" ")[4]||null;r&&l(r)};try{r.createDataChannel("probe"),r.createOffer().then(e=>r.setLocalDescription(e)).catch(()=>l(null))}catch{l(null)}})}let B="no-public-ip";function j(e){let t=0,r=!1;for(let n of e.values())"candidate-pair"===n.type&&(n.nominated||n.selected)&&(r=!0,t+=(n.bytesReceived??0)+(n.responsesReceived??0));return r?t:null}function N(e,t="stale"){let r=e._adapters.get("ws"),i=Math.max(r?.lastInboundAt??0,r?.lastMsgAt??0),s=r?.ready&&function({ready:e=!0,lastInboundAt:t=0,now:r}={}){return!!e&&(!t||r-t>=n.Rh)}({ready:!0,lastInboundAt:i,now:Date.now()});if(r){let e=r.lastInboundAt??0,n=r.lastMsgAt??0,i=Date.now();(0,m.Lq)("switch",`zombie check (${t}): verdict=${!!s} ready=${!!r.ready} lastPong=${e?`${i-e}ms`:"never"} lastMsg=${n?`${i-n}ms`:"never"}`)}if(!s)return!1;(0,p.c)("transport",`[pm] ws zombie (${t}) → force reconnect`);try{r.forceReconnect?.()}catch{}return!0}function F(e,t){let r=e._adapters.get("rtc"),i=r?._pc;if(!i||"failed"===i.connectionState)return void e._forceRestartRtc(`${t}-pc-failed`);if(e._probeLive?.rtc===r)return void(0,m.Lq)("switch",`${t} probe shared (already measuring this peer)`);clearTimeout(e._resumeProbeTimer);let s=++e._probeToken;e._probeLive={rtc:r,token:s},(async()=>{let t=j(await i.getStats());return null==t||(await new Promise(t=>{e._resumeProbeTimer=setTimeout(t,n.UT)}),s!==e._probeToken)?null:j(await i.getStats())-t})().then(i=>{if(s!==e._probeToken)return;let a=r?.lastInboundAt&&Date.now()-r.lastInboundAt<n.mk;null!=i&&i>0||a?(0,m.Lq)("switch",`${t} probe alive (Δ=${i}, recent=${!!a})`):((0,m.Lq)("switch",`${t} probe DEAD (Δ=${i}) → forceRestartRtc`),e._forceRestartRtc(`${t}-probe-dead`))}).catch(()=>{s!==e._probeToken||(r?.lastInboundAt&&Date.now()-r.lastInboundAt<n.mk?(0,m.Lq)("switch",`${t} probe error ignored (rtc recently active)`):((0,m.Lq)("switch",`${t} probe error → forceRestartRtc`),e._forceRestartRtc(`${t}-probe-error`)))}).finally(()=>{e._probeLive?.token===s&&(e._probeLive=null)})}function W(e,t){if(t?.type!=="error")return!1;let r=t.message===n.bg.pending?"pending":t.message===n.bg.rejected?"rejected":null;return!!r&&((0,p.c)("transport",`[pm] device ${r} → approval UI`),e._awaitingApproval=!0,e._wsCallbacks.onApproval?.(r),!0)}function q(e){if((0,m.Lq)("switch","signaling ready"),H(e),e._awaitingApproval)return;let t=e._adapters.get("rtc");if(!t){(0,m.Lq)("switch","sig-ready → start rtc (was deferred)"),e._startSecondaryAdapters();return}t.state===n.Of.closed&&((0,m.Lq)("switch","sig-ready → restartRtc (rtc was closed)"),e._restartRtc("sig-ready"))}function K(e,t){!(e._sig?.ready&&e._sig.send(t))&&("offer"===t.type&&(e._sigBuffer=e._sigBuffer.filter(e=>"offer"!==e.type&&"ice"!==e.type)),e._sigBuffer.push(t),e._sigBuffer.length>32&&e._sigBuffer.shift())}function H(e){if(!e._sigBuffer.length)return;let t=e._sigBuffer;for(let r of(e._sigBuffer=[],t))K(e,r)}async function z(e){if(e._auth.tunnelUrl!==window.location.origin)try{(0,p.c)("transport",`[pm] refreshTunnelUrl: fetching from ${u.O}/api/connect`);let t=await fetch(`${u.O}/api/connect`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:e._auth.apiKey})});if(!t.ok)return void(0,p.c)("transport",`[pm] refreshTunnelUrl: HTTP ${t.status}`);let r=await t.json();(0,p.c)("transport",`[pm] refreshTunnelUrl: got ${r.tunnelUrl} (was ${e._auth.tunnelUrl})`),r.tunnelUrl&&r.tunnelUrl!==e._auth.tunnelUrl&&(e._auth.tunnelUrl=r.tunnelUrl)}catch(e){(0,p.c)("transport",`[pm] refreshTunnelUrl: error ${e.message}`)}}U(w),U(L);class J{constructor(e,t){const{profile:r,auth:i,wsCallbacks:s,rtcCallbacks:a,peerId:o}=function(e,t){let r=t?.enableWebRTC?"remoteDesktop":"clientApp",i={...n.j3[r]};t?.enableWebRTC||(i.enabled=["ws"]),t?.enableTurn&&(i.rtc={...i.rtc,enableTurn:!0});let s={tunnelUrl:e.tunnelUrl,localIp:e.localIp,apiKey:e.apiKey,tempKey:e.tempKey,deviceId:e.deviceId,namespace:e.namespace,socketOptions:e.socketOptions},a={onConnect:e.onConnect,onDisconnect:e.onDisconnect,onRetryStatus:e.onRetryStatus,onUrlUpdate:e.onUrlUpdate,onApproval:e.onApproval},o=t?{onUpgrade:t.onUpgrade,onFallback:t.onFallback,onTransportChange:t.onTransportChange}:{},l=`${e.deviceId}:${Math.random().toString(36).slice(2,10)}`;return s.socketOptions?.auth&&(s.socketOptions.auth.peerId=l),{profile:i,auth:s,wsCallbacks:a,rtcCallbacks:o,peerId:l}}(e,t);for(const e of(this._profile=r,this._auth=i,this._wsCallbacks=s,this._rtcCallbacks=a,this._peerId=o,Object.assign(this,{_adapters:new Map,_buffer:[],_pendingAcks:new Map,_ackTimers:new Map,_ackSeq:0,_rtcRestartAttempts:0,_rtcRestartTimer:null,_rtcRestartDueAt:0,_probeAttempts:0,_rtcGivenUp:!1,_giveUpIp:null,_lastStunProbeAt:0,_rejoinDebounceTimer:null,_netFingerprint:null,_awaitingApproval:!1,_ackTimeoutMs:n.QZ.ackTimeoutMs,_hiddenAt:null,_resumeProbeTimer:null,_probeToken:0,_probeLive:null,_connected:!1,_type:"ws",_connectionMode:"tunnel",_lastWsState:null,_rawSocket:null,_onConnectFired:!1,_rtcSignalingHandler:null,_sig:null,_sigDestroyed:!1,_sigBuffer:[],_wsFallbackTimer:null}),this._bus=function(e){let t=new Map,r=(e,r)=>{t.has(e)||t.set(e,[]),t.get(e).push(r)},n=(e,r)=>{let n=t.get(e);if(!n)return;let i=n.findIndex(e=>e===r||e._original===r);-1!==i&&n.splice(i,1)};return{_listeners:t,get connected(){return e._anyAdapterReady()},get id(){return e._rawSocket?.id||null},emit(t,...r){e._sendControl(t,r)},on(e,t){r(e,t)},off(e,t){n(e,t)},once(e,t){let i=(...r)=>{n(e,i),t(...r)};i._original=t,r(e,i)},listeners:e=>[...t.get(e)||[]],dispatch(e,r=[]){let n=t.get(e);if(n?.length){for(let e of[...n])if(n.includes(e))try{e(...r)}catch{}}},clear(){t.clear()},disconnect(){e._rawSocket?.disconnect()},kickWsZombie:t=>e.kickWsZombie(t)}}(this),this.busRef={current:this._bus},C.IU))this._bus.on(e,t=>(0,C.lu)(this,e,t));this._watchers=function(e){let t=()=>{let t;if((0,m.Lq)("switch",`visibility=${document.visibilityState}`),"visible"!==document.visibilityState)return;let r=e._adapters.get("ws"),i=e._adapters.get("rtc");if((0,m.Lq)("switch",`resume check: ws=${r?.ready?"ready":r?.state} rtc=${i?.ready?"ready":i?.state}`),N(e,"resume"),e._awaitingApproval)return;if(e._rtcGivenUp)return void e._maybeRearmRtc();if(t=e._rtcRestartTimer?Math.max(e._rtcRestartDueAt-Date.now(),0):-1,(0,m.Lq)("switch",`RESET attempts (was ${e._rtcRestartAttempts}) reason=resume pendingIn=${t}ms`),e._rtcRestartAttempts=0,e._probeAttempts=0,t<=n.QZ.backoffMs[0]||((0,m.Lq)("switch",`resume: pending rung was ${t}ms out → re-arm fast`),e._disarmRestart(),e._scheduleRtcRestart("resume-rearm")),!e._canSignal())return void e._sig?.retryNow("resume-no-carrier");let s=i?.state;i&&s!==n.Of.closed&&s!==n.Of.degraded?function(e){let t=e._adapters.get("rtc");if(!t?.ready)return e._restartRtc("resume-not-ready");let r=e._hiddenAt?Date.now()-e._hiddenAt:0;if("function"==typeof matchMedia&&matchMedia("(pointer: coarse)").matches&&r>n.Tr){(0,m.Lq)("switch",`resume: hidden ${Math.round(r/1e3)}s on touch → skip probe, force restart`),(0,p.c)("transport",`[pm] resume: hidden ${Math.round(r/1e3)}s → immediate restart`),e._forceRestartRtc("resume-hidden-touch");return}F(e,"resume")}(e):((0,m.Lq)("switch",`visibility → restartRtc (rtc=${s||"absent"})`),e._restartRtc("resume-dead-rtc"))},r=()=>{if("hidden"===document.visibilityState){e._hiddenAt=Date.now();return}clearTimeout(e._resumeCoalesceTimer),e._resumeCoalesceTimer=setTimeout(t,150)};document.addEventListener("visibilitychange",r);let i=!1,s=r=>{let n=!!r.detail?.hidden;if(n!==i){if(i=n,n){e._hiddenAt=Date.now();return}clearTimeout(e._resumeCoalesceTimer),e._resumeCoalesceTimer=setTimeout(t,150)}};document.addEventListener("app-visibility",s);let a=()=>{"visible"===document.visibilityState&&r()},o=()=>{e._hiddenAt=Date.now()};document.addEventListener("resume",a),document.addEventListener("freeze",o);let l=()=>{clearTimeout(e._netDebounceTimer),e._netDebounceTimer=setTimeout(()=>{!1===navigator.onLine?(0,m.Lq)("switch","net-change: still offline → wait"):((0,p.c)("transport","[pm] network change → probe rtc"),(0,m.Lq)("switch",`net-change: online=${navigator.onLine} → kick sig + ws + rtc`),e._sig?.retryNow("net-change"),e.retryNow("net-change"),(0,m.Lq)("switch",`RESET attempts (was ${e._rtcRestartAttempts}) givenUp=${e._rtcGivenUp} reason=net-change`),e._rtcRestartAttempts=0,e._probeAttempts=0,e._rtcGivenUp=!1,e._giveUpIp=null,e._shouldRenegotiate()&&e._restartRtc("net-change"))},n.o_.debounceMs)};return window.addEventListener("online",l),navigator.connection?.addEventListener?.("change",l),{visibilityHandler:r,detach(){document.removeEventListener("visibilitychange",r),document.removeEventListener("app-visibility",s),document.removeEventListener("resume",a),document.removeEventListener("freeze",o),window.removeEventListener("online",l),navigator.connection?.removeEventListener?.("change",l),clearTimeout(e._netDebounceTimer),e._netDebounceTimer=null,clearTimeout(e._resumeCoalesceTimer),e._resumeCoalesceTimer=null}}}(this)}get type(){return this._type}get connected(){return this._connected}get connectionMode(){return this._connectionMode}get wsBlocked(){return this._adapters.get("ws")?.blocked||!1}setWsBlocked(e){this._adapters.get("ws")?.setBlocked(e)}setUpdating(e){this._adapters.get("ws")?.setUpdating(e)}retryNow(e="user"){let t=this._adapters.get("ws");t?t.retryNow?.(e):((0,m.Lq)("switch",`retryNow by=${e}: no ws adapter → full connect()`),this.connect())}kickWsZombie(e="stale"){return N(this,e)}emit(e,...t){this._sendControl(e,t)}sendBinary(e,t){let r=this._pickAdapter(e);return!!r&&r.send(e,t)}connect(){this._sigDestroyed=!1;let e=this._profile.enabled.includes("rtc");e&&this._initSignalingClient(),e&&(this._canSignal()?this._startSecondaryAdapters():((0,m.Lq)("switch","rtc deferred — waiting for signaling relay"),clearTimeout(this._rtcDeferTimer),this._rtcDeferTimer=setTimeout(()=>{this._sigDestroyed||this._adapters.has("rtc")||((0,m.Lq)("switch","rtc defer expired → start anyway"),this._startSecondaryAdapters())},n.BF))),this._startWsFallback(),(0,p.c)("transport","[pm] connect: RTC + WS parallel (RTC preferred, WS warm standby)."),(0,m.Lq)("switch","connect: RTC + WS parallel")}async _startWsFallback(){if(!(this._adapters.has("ws")||this._sigDestroyed||this._adapters.get("rtc")?.isLoopback)){if((0,m.Lq)("switch","ws-fallback: start (refresh url)"),await this._refreshTunnelUrl(),this._adapters.has("ws")||this._sigDestroyed||this._adapters.get("rtc")?.isLoopback)return void(0,m.Lq)("switch","ws-fallback: aborted (destroyed, loopback or already attached)");(0,m.Lq)("switch","ws-fallback: connecting"),this._instantiate("ws"),this._adapters.get("ws")?.connect(this._buildCtx("ws"))}}async _refreshTunnelUrl(){return z(this)}_initSignalingClient(){!function(e){if(!n.gI.enabled||e._sig||e._sigDestroyed||!e._auth.deviceId||!e._auth.apiKey)return;let t=u.O.replace(/^http/,"ws")+"/signaling";r.e(6739).then(r.bind(r,46739)).then(({SignalingClient:r})=>{e._sig||e._sigDestroyed||(e._sig=new r({url:t,role:"client",roomId:e._auth.apiKey,apiKey:e._auth.apiKey,from:e._peerId,onReady:()=>q(e),pingMs:n.gI.pingMs}),e._sig.on(t=>{if("error"===t.type&&"rtc-disabled"===t.message){e._rtcTestDisabled=!0,(0,m.Lq)("switch","rtc-disabled by host → stop RTC retry (use WS)");return}W(e,t)||e._rtcSignalingHandler?.(t)}),e._sig.connect())}).catch(e=>(0,p.c)("transport",`[pm] SignalingClient load failed: ${e?.message||e}`))}(this)}_instantiate(e){if(this._adapters.has(e))return;let t=O.get(e);if(!t)return;let r=new t;r.on("stateChange",t=>this._onAdapterStateChange(e,t)),r.on("message",({event:e,data:t,source:r})=>this._dispatch(e,t,r)),r.on("binary",e=>this._onBinary(e)),"rtc"===e&&(r.on("netFingerprint",e=>this._onNetFingerprint(e)),this._srvCaps&&r.setPeerCaps?.(this._srvCaps)),this._adapters.set(e,r)}_onNetFingerprint(e){if(!e||e===this._netFingerprint)return;let t=this._netFingerprint;this._netFingerprint=e,t&&(0,p.c)("transport",`[pm] net fingerprint ${t}→${e} (same network — no backoff reset)`)}_maybeRearmRtc(){if(!this._rtcGivenUp)return;let e=Date.now();e-this._lastStunProbeAt<n.cx.minIntervalMs||(this._lastStunProbeAt=e,E().then(e=>{var t;if(this._sigDestroyed||!this._rtcGivenUp)return;let r=e||(this._giveUpIp===B?B:null);(t=this._giveUpIp,r&&(!t||r!==t))?((0,m.Lq)("switch",`rearm check: ip ${this._giveUpIp||"unknown"}→${r} changed → re-arm RTC`),(0,p.c)("transport","[pm] public ip changed → re-arm rtc"),this._rtcGivenUp=!1,this._giveUpIp=null,this._probeAttempts=0,this._rtcRestartAttempts=0,this._netFingerprint=e,this._canSignal())?this._shouldRenegotiate()&&this._restartRtc("stun-rearm"):this._sig?.retryNow("stun-rearm"):(0,m.Lq)("switch",`rearm check: ip=${r||"unknown"} same as give-up → stay WS-only`)}).catch(()=>{}))}_startSecondaryAdapters(){for(let e of((0,p.c)("transport",`[pm] startSecondary enabled=${this._profile.enabled}`),(0,p.c)("transport",`[pm] startSecondary rtcTestDisabled=${!!this._rtcTestDisabled}`),this._profile.enabled))"ws"!==e&&("rtc"!==e||!this._rtcTestDisabled)&&(this._adapters.has(e)||((0,p.c)("transport",`[pm] start adapter ${e}`),this._instantiate(e),this._adapters.get(e)?.connect(this._buildCtx(e))))}_handleApprovalSignal(e){return W(this,e)}_onSignalingReady(){q(this)}_canSignal(){return!!this._sig?.ready}_shouldRenegotiate(){return!this._awaitingApproval&&this._canSignal()}_restartRtc(e="?"){(0,m.Lq)("switch",`restartRtc CALLED by=${e} attempts=${this._rtcRestartAttempts}`);let t=this._adapters.get("rtc"),r=function({testDisabled:e,givenUp:t,rtcState:r,hasRtc:i}){return e?"skip-test-disabled":t?"skip-given-up":i&&(r===n.Of.connecting||r===n.Of.open)?"skip-in-flight":i?"restart":"start-fresh"}({testDisabled:!!this._rtcTestDisabled,givenUp:this._rtcGivenUp,rtcState:t?.state,hasRtc:!!t});if("skip-test-disabled"===r)return void(0,m.Lq)("switch","restartRtc skipped (rtcTestDisabled)");if("skip-given-up"===r)return void(0,m.Lq)("switch","restartRtc skipped (hard NAT → WS-only)");if("skip-in-flight"===r)return void(0,m.Lq)("switch",`restartRtc skipped (rtc=${t.state})`);if("start-fresh"===r){(0,m.Lq)("switch","restartRtc: no rtc → startSecondary"),this._startSecondaryAdapters();return}(0,m.Lq)("switch","restartRtc: tear down + renegotiate"),(0,p.c)("transport","[pm] ws reconnected → restart rtc");try{t.disconnect(`restart:${e}`)}catch{}this._adapters.delete("rtc"),this._rtcSignalingHandler=null,this._startSecondaryAdapters()}_forceRestartRtc(e="?"){(0,m.Lq)("switch",`forceRestartRtc CALLED by=${e}`);let t=this._adapters.get("rtc");if(t){try{t.disconnect(`force:${e}`)}catch{}this._adapters.delete("rtc"),this._rtcSignalingHandler=null}this._rtcGivenUp?(0,m.Lq)("switch","forceRestartRtc: torn down, no renegotiate (hard NAT)"):this._startSecondaryAdapters()}disconnect(){this._watchers?.detach(),this._watchers=null,clearTimeout(this._resumeProbeTimer),this._resumeProbeTimer=null,clearTimeout(this._rtcDeferTimer),this._rtcDeferTimer=null,this._probeToken++;try{this._sig?.disconnect()}catch{}for(let e of(this._sig=null,this._sigDestroyed=!0,this._sigBuffer=[],clearTimeout(this._wsFallbackTimer),clearTimeout(this._rejoinDebounceTimer),this._rejoinDebounceTimer=null,this._adapters.values()))try{e.disconnect("pm-disconnect")}catch{}for(let e of(this._adapters.clear(),this._bus.clear(),this._buffer=[],this._connected=!1,this._rawSocket=null,this._disarmRestart(),(0,m.Lq)("switch",`RESET attempts (was ${this._rtcRestartAttempts}) reason=pm-disconnect`),this._rtcRestartAttempts=0,this._probeAttempts=0,this._rtcGivenUp=!1,this._giveUpIp=null,this._lastStunProbeAt=0,this._ackTimers.values()))clearTimeout(e);this._ackTimers.clear()}_buildCtx(e,t){let r={auth:this._auth,profile:this._profile};return"ws"===e&&(r.onRetryStatus=this._wsCallbacks.onRetryStatus,r.onUrlUpdate=e=>{e.tunnelUrl&&(this._auth.tunnelUrl=e.tunnelUrl),void 0!==e.localIp&&(this._auth.localIp=e.localIp),this._wsCallbacks.onUrlUpdate?.(e)}),"rtc"===e&&(r.signaling={send:e=>this._sendSignaling(e),on:e=>{this._rtcSignalingHandler=e},off:()=>{this._rtcSignalingHandler=null}}),r}_onAdapterStateChange(e,t){(0,p.c)("transport",`[pm] ${e} state=${t}`),("rtc"!==e||t!==n.Of.closed)&&(0,m.Lq)("switch",`${e}→${t}`),"ws"===e&&function(e,t){let r=e._adapters.get("ws");if(t===n.Of.open){let t=e._lastWsState===n.Of.degraded;e._connected=!0,e._connectionMode=r?.connectionMode||"tunnel",e._rawSocket=r?.socket||null,t&&e._maybeFireRejoin("ws","ws reconnect while rtc ready"),e._lastWsState!==n.Of.open&&(e._onConnectFired?e._wsCallbacks.onUrlUpdate?.({}):(e._onConnectFired=!0,(0,m.Lq)("switch",`onConnect FIRE (ws, mode=${e._connectionMode})`),e._wsCallbacks.onConnect?.(e._bus,e._connectionMode)))}else e._rawSocket=null,e._lastWsState===n.Of.open&&((0,m.Lq)("switch","ws down"),e._anyAdapterReady()&&(0,m.Lq)("switch","ws down but rtc alive → skip onDisconnect"));e._lastWsState=t}(this,t),"rtc"===e&&function(e,t){if(t===n.Of.open){let t=e._onConnectFired;clearTimeout(e._wsFallbackTimer),e._rtcCallbacks.onUpgrade?.(e._adapters.get("rtc")?.typeDetail||"dc-stun"),e._onConnectFired||(e._onConnectFired=!0,e._connected=!0,e._connectionMode="webrtc",(0,m.Lq)("switch","onConnect FIRE (rtc, mode=webrtc)"),e._wsCallbacks.onConnect?.(e._bus,e._connectionMode)),e._rtcRestartAttempts=0,e._probeAttempts=0,e._rtcGivenUp=!1,e._giveUpIp=null,e._disarmRestart(),clearTimeout(e._rejoinDebounceTimer),e._rejoinDebounceTimer=null;let r=e._adapters.get("rtc");if(r?.isLoopback){(0,m.Lq)("switch","rtc loopback detected (same machine) → drop ws standby");let t=e._adapters.get("ws");if(t){try{t.disconnect()}catch{}e._adapters.delete("ws")}}t&&e._maybeFireRejoin("rtc","rtc reconnect while ws ready")}if(t===n.Of.closed){for(let t of(e._rtcCallbacks.onFallback?.("ws"),(0,m.Lq)("switch","rtc closed → startWsFallback + scheduleRtcRestart"),e._startWsFallback(),clearTimeout(e._wsFallbackTimer),e._pendingAcks.values()))try{t({error:"rtc-closed"})}catch{}for(let t of(e._pendingAcks.clear(),e._ackTimers.values()))clearTimeout(t);e._ackTimers.clear(),e._scheduleRtcRestart("rtc-closed")}}(this,t),"rtc"===e&&t===n.Of.open&&((0,p.c)("auth","[seal] rtc OPEN → sending proof"),(0,C.pV)(this)),this._recomputeType();let r=this._anyAdapterReady();r!==this._connected&&(this._connected=r,r||(this._onConnectFired=!1,(0,m.Lq)("switch",`onDisconnect FIRE (last carrier gone: ${e}→${t})`),this._wsCallbacks.onDisconnect?.(`${e}-${t}`))),this._flushBuffer()}_maybeFireRejoin(e,t){let r="ws"===e?this._adapters.get("rtc"):this._adapters.get("ws");if(r?.ready){(0,p.c)("transport",`[pm] ${t} → skip rejoin (other ready)`),(0,m.Lq)("switch",`${t} → skip rejoin (other ready)`);return}if("ws"===e&&r&&r.state===n.Of.connecting){(0,p.c)("transport",`[pm] ${t} → debounce rejoin (rtc connecting)`),(0,m.Lq)("switch",`${t} → debounce rejoin ${n.ZN}ms (rtc connecting)`),clearTimeout(this._rejoinDebounceTimer),this._rejoinDebounceTimer=setTimeout(()=>{this._rejoinDebounceTimer=null;let e=this._adapters.get("rtc");e?.ready?(0,m.Lq)("switch","debounce: rtc opened → skip rejoin"):((0,m.Lq)("switch",`debounce expired → FIRE rejoin (rtc=${e?.state||"absent"})`),this._bus.dispatch("connect",[]))},n.ZN);return}(0,m.Lq)("switch",`${t} → FIRE rejoin`),this._bus.dispatch("connect",[])}_recomputeType(){let e=this._pickAdapter(n.l_.binary)||this._pickAdapter(n.l_.control),t=e&&"rtc"===e.constructor.id?e.typeDetail||"dc-stun":"ws";t!==this._type&&(this._type=t,this._rtcCallbacks.onTransportChange?.(t))}_anyAdapterReady(){for(let e of this._adapters.values())if(e.ready)return!0;return!1}_pickAdapter(e){return function(e,t,r){let n=t.channels[r];if(!n)return null;let i=[...e.values()].filter(e=>e.supports(r)&&e.ready);return i.length?(i.sort((e,t)=>{let i=t.getPriority?t.getPriority(r):t.constructor.priority[r]??0,s=e.getPriority?e.getPriority(r):e.constructor.priority[r]??0;if(i!==s)return i-s;if(n.prefer){if(t.constructor.id===n.prefer)return 1;if(e.constructor.id===n.prefer)return -1}return 0}),i[0]||null):null}(this._adapters,this._profile,e)}_sendControl(e,t){!function(e,t,r){let i="function"==typeof r[r.length-1]?r.pop():null,s=e._pickAdapter(n.l_.control);if(!s){(0,p.c)("transport",`[pm] buffer event=${t} (no adapter ready)`),(0,m.Lq)("switch",`buffer "${t}" (no adapter)`),e._buffer.push({event:t,args:r,cb:i});return}if((0,p.c)("transport",`[pm] send control event=${t} via=${s.constructor.id}`),"rtc"===s.constructor.id){let a=null;if(i&&(a=`c_${++e._ackSeq}`,e._pendingAcks.set(a,i),e._scheduleAckTimeout(a,{event:t,args:r})),!s.send(n.l_.control,{event:t,args:r,ackId:a})){let o=e._pickAdapter(n.l_.control);if(o&&o!==s&&o.send(n.l_.control,i?{event:t,args:r,ackId:a,cb:i}:{event:t,args:r,ackId:a}))return;(0,p.c)("transport",`[pm] rtc refused event=${t} → buffered`),e._buffer.push({event:t,args:r,cb:i})}}else s.send(n.l_.control,{event:t,args:r,cb:i})}(this,e,t)}_flushBuffer(){!function(e){if(!e._buffer.length)return;let t=e._pickAdapter(n.l_.control);if(!t)return;let r=e._buffer.splice(0);for(let{event:n,args:i,cb:s}of((0,p.c)("transport",`[pm] flush ${r.length} buffered via=${t.constructor.id}`),r))e._sendControl(n,s?[...i,s]:i)}(this)}_dispatch(e,t,r){!function(e,t,r,i){if("srvCaps"===t){let t="rtc"===i?r?.args?.[0]:r;(0,p.c)("transport",`[pm] srvCaps from host via ${i}: ${JSON.stringify(t)}`),e._srvCaps=t||{},e._adapters.get("rtc")?.setPeerCaps?.(e._srvCaps)}if("__ack"===t){let{ackId:t,args:n}=r||{},i=e._pendingAcks.get(t);if(i){e._pendingAcks.delete(t);let r=e._ackTimers.get(t);r&&(clearTimeout(r),e._ackTimers.delete(t)),i(...n||[])}return}if("device:approved"===t){e._awaitingApproval=!1;let t=e._adapters.get("rtc");e._canSignal()&&(!t||t.state===n.Of.closed)&&e._restartRtc("device-approved")}if("rtc:enabled"===t){e._rtcTestDisabled&&(e._rtcTestDisabled=!1,(0,m.Lq)("switch","rtc:enabled by host → clear flag + restart RTC"),e._restartRtc("rtc-enabled"));return}if("tunnel:updated"===t){let t="rtc"===i?r?.args?.[0]:r;if(t){let{tunnelUrl:r,localIp:n,status:i}=t;if(e._auth.tunnelUrl===window.location?.origin)return(0,m.Lq)("switch",`tunnel:updated ignored (carrier is the page origin; got url=${r||"none"})`);if((0,m.Lq)("switch",`tunnel:updated recv (status=${i} url=${r||"none"})`),"ready"===i&&r){let t=e._auth.tunnelUrl!==r;e._auth.tunnelUrl=r,n&&(e._auth.localIp=n),e._wsCallbacks.onUrlUpdate?.({tunnelUrl:r,localIp:n});let i=e._adapters.get("ws");if(i&&(!i.ready||t)){(0,m.Lq)("switch",`tunnel:updated → ${t?"url changed":"ws not ready"} → retry ws with new URL`);try{i.retryNow("tunnel-updated")}catch{}}}else"down"===i&&(e._auth.tunnelUrl="",e._wsCallbacks.onUrlUpdate?.({tunnelUrl:"",localIp:n}))}return}let s="rtc"===i&&Array.isArray(r?.args)?r.args:[r];e._bus?.dispatch(t,s)}(this,e,t,r)}_onBinary(e){e&&("mobile"===e.channel?this._bus?.dispatch("mobile-bin",[e.buffer]):"file"===e.channel&&this._bus?.dispatch("file-bin",[e.buffer]))}_scheduleAckTimeout(e){var t;let r;t=this,r=setTimeout(()=>{t._ackTimers.delete(e),(0,p.c)("transport",`[pm] ack timeout ackId=${e} event=undefined → suspect zombie RTC`);let r=t._pendingAcks.get(e),i=t._adapters.get("rtc");t._adapters.get("ws");let s=Date.now(),a=i?.lastInboundAt||0;i?.ready&&a&&s-a<n.mk?(0,m.Lq)("switch",`ack-timeout ? ignored (rtc active, lastInbound=${s-a}ms ago)`):i?.state===n.Of.open?F(t,"ack-timeout:?"):t._scheduleRtcRestart("ack-timeout")},t._ackTimeoutMs),t._ackTimers.set(e,r)}_armRestart(e,t){clearTimeout(this._rtcRestartTimer),this._rtcRestartDueAt=Date.now()+t,this._rtcRestartTimer=setTimeout(e,t)}_disarmRestart(){let e=this._rtcRestartTimer?Math.max(this._rtcRestartDueAt-Date.now(),0):-1;return clearTimeout(this._rtcRestartTimer),this._rtcRestartTimer=null,this._rtcRestartDueAt=0,e}_scheduleRtcRestart(e="?"){if((0,m.Lq)("switch",`rtcRestart REQ by=${e} attempts=${this._rtcRestartAttempts} probe=${this._probeAttempts} givenUp=${this._rtcGivenUp} pending=${!!this._rtcRestartTimer}`),this._rtcRestartTimer){let t=Math.max(this._rtcRestartDueAt-Date.now(),0);(0,m.Lq)("switch",`rtcRestart SKIP by=${e} (pending rung ${this._rtcRestartAttempts} fires in ${t}ms)`);return}if(this._rtcGivenUp){(0,m.Lq)("switch","scheduleRtcRestart skipped (hard NAT → WS-only)"),(0,p.c)("transport","[pm] rtc probe skipped (given up — hard NAT)");return}let t=function({attempts:e,probeAttempts:t,verdict:r}){let i,s,a=e>=n.QZ.maxAttempts,o=t;if(a){if(i=n.QZ.probeBackoffMs[t]??n.QZ.probeBackoffMs.at(-1),(o=t+1)>=n.QZ.classifyAfterProbes){if("hard"===(s=r?.()??"unknown"))return{giveUp:!0,verdict:s,probeAttempts:o};o=0}}else i=n.QZ.backoffMs[e]??n.QZ.backoffMs.at(-1);return{delay:i,isProbe:a,attempts:e+1,probeAttempts:o,verdict:s}}({attempts:this._rtcRestartAttempts,probeAttempts:this._probeAttempts,verdict:()=>this._adapters.get("rtc")?.natVerdict?.()??"unknown"});if(void 0!==t.verdict&&((0,m.Lq)("switch",`scheduleRtcRestart natVerdict=${t.verdict} probeAttempts=${t.probeAttempts}`),(0,p.c)("transport",`[pm] rtc nat verdict=${t.verdict} after ${t.probeAttempts} probes`)),t.giveUp){this._probeAttempts=t.probeAttempts,this._rtcGivenUp=!0,this._giveUpIp=this._netFingerprint,this._giveUpIp||E().then(e=>{this._rtcGivenUp&&!this._giveUpIp&&(this._giveUpIp=e||B,(0,m.Lq)("switch",`give-up baseline from probe: ip=${this._giveUpIp}`))}).catch(()=>{}),(0,m.Lq)("switch",`RTC give-up: hard NAT → WS-only (ip=${this._giveUpIp||"pending"})`);return}let{delay:r,isProbe:i}=t;this._probeAttempts=t.probeAttempts,this._rtcRestartAttempts=t.attempts,(0,m.Lq)("switch",`rtcRestart ARM by=${e} rung=${this._rtcRestartAttempts} delay=${r}ms probe=${i}`),(0,p.c)("transport",`[pm] schedule rtc ${i?"probe":"restart"} #${this._rtcRestartAttempts} in ${r}ms`);let s=()=>{if(this._disarmRestart(),this._awaitingApproval||!this._sig?.ready)return;let e=this._adapters.get("rtc");if(e){let t=function({state:e,connectingSince:t,connectDeadline:r,now:i,connectTimeoutMs:s}){return e!==n.Of.connecting?"restart":i<function({connectingSince:e,connectDeadline:t,connectTimeoutMs:r}){return t??(e??0)+r}({connectingSince:t,connectDeadline:r,connectTimeoutMs:s})?"wait":"teardown"}({state:e.state,connectingSince:e.connectingSince,connectDeadline:e.connectDeadline,now:Date.now(),connectTimeoutMs:n.AC});if("wait"===t){let t=Math.max(function({connectingSince:e,connectDeadline:t,connectTimeoutMs:r}){return t??(e??0)+r}({connectingSince:e.connectingSince,connectDeadline:e.connectDeadline,connectTimeoutMs:n.AC})-Date.now(),r);(0,m.Lq)("switch",`restart tick: peer still young (rung ${this._rtcRestartAttempts}) → re-arm in ${t}ms, no rung spent`),this._armRestart(s,t);return}if("teardown"===t){try{e.disconnect(`rung-${this._rtcRestartAttempts}-teardown`)}catch{}this._adapters.delete("rtc"),this._rtcSignalingHandler=null}}this._restartRtc(`rung-${this._rtcRestartAttempts}`)};this._armRestart(s,r)}_sendSignaling(e){K(this,e)}_flushSigBuffer(){H(this)}}},80186:(e,t,r)=>{r.d(t,{A:()=>i});var n=r(73365);function i({children:e,variant:t="primary",size:r="md",disabled:s=!1,loading:a=!1,onClick:o,className:l="",...c}){let d=`font-semibold rounded-brand transition-all duration-150 ease-out transform active:scale-[0.97] ${{primary:"bg-brand-500 hover:bg-brand-600 disabled:bg-surface-3 disabled:text-text-muted text-white shadow-sm",secondary:"bg-surface-2 hover:bg-surface-3 disabled:bg-surface disabled:text-text-muted text-text",danger:"bg-red-500 hover:bg-red-600 disabled:bg-surface-3 disabled:text-text-muted text-white",success:"bg-green-600 hover:bg-green-700 disabled:bg-surface-3 disabled:text-text-muted text-white"}[t]} ${{sm:"px-3 py-1.5 text-sm",md:"px-4 py-2 text-base",lg:"px-6 py-3 text-lg"}[r]} ${s||a?"cursor-not-allowed":""} ${l}`;return(0,n.jsx)("button",{onClick:o,disabled:s||a,className:d,...c,children:a?(0,n.jsxs)("span",{className:"flex items-center justify-center gap-2",children:[(0,n.jsx)("span",{className:"animate-spin rounded-full h-4 w-4 border-b-2 border-white"}),e]}):e})}},86129:(e,t,r)=>{r.d(t,{AC:()=>m,An:()=>d,BF:()=>g,El:()=>T,HE:()=>M,HJ:()=>f,Ic:()=>P,J2:()=>v,Jd:()=>R,KF:()=>c,KP:()=>D,ML:()=>A,N0:()=>C,Of:()=>L,QS:()=>y,QZ:()=>s,Rh:()=>$,Tr:()=>b,UT:()=>_,ZN:()=>o,aS:()=>x,b4:()=>p,bg:()=>k,cx:()=>a,dT:()=>i,fP:()=>h,gI:()=>w,j3:()=>O,l_:()=>n,mk:()=>u,o_:()=>I,qM:()=>S,si:()=>l});let n={control:"control",binary:"binary",file:"file",mobile:"mobile",browser:"browser"},i=65536,s={ackTimeoutMs:5e3,maxAttempts:3,backoffMs:[500,1500,3e3],probeBackoffMs:[3e4,6e4,12e4,3e5],classifyAfterProbes:3},a={urls:["stun:stun.l.google.com:19302","stun:stun1.l.google.com:19302"],timeoutMs:2500,minIntervalMs:15e3},o=500,l=3,c=3e3,d=9e3,u=25e3,h=3,p=1e3,m=4e3,f=15e3,y=1e3,g=12e3,_=2e3,b=1e4,w={enabled:!0,pingMs:25e3},k={pending:"pending-approval",rejected:"device-rejected"},A={mismatch:"mismatch",sealUnreadable:"seal-unreadable",timeout:"proof-timeout"},v={pending:"pending",approved:"approved",rejected:"rejected",reconnect:"reconnect"},S=8,T="9remote_pending_save",x="9remote_wants_save",C="9remote:keys-changed",R="9remote_login_error",P="strict",I={debounceMs:500},$=3e4,D=15e3,M={chunkSize:65528,windowSize:64,dcBufferThreshold:8388608,maxUploadSize:0x3200000,maxDownloadSize:0xc800000,maxStreamMediaSize:524288e3},L={idle:"idle",connecting:"connecting",open:"open",degraded:"degraded",closed:"closed"},O={clientApp:{enabled:["ws","rtc"],parallel:!0,channels:{control:{strategy:"priority",prefer:"rtc"},binary:{strategy:"priority",prefer:"rtc"},file:{strategy:"priority",prefer:"rtc"},mobile:{strategy:"priority",prefer:"rtc"},browser:{strategy:"priority",prefer:"rtc"}},rtc:{enableTurn:!0,dcControl:{ordered:!0}}},remoteDesktop:{enabled:["ws","rtc"],parallel:!0,channels:{control:{strategy:"priority",prefer:"rtc"},binary:{strategy:"priority",prefer:"rtc"},file:{strategy:"priority",prefer:"rtc"},mobile:{strategy:"priority",prefer:"rtc"},browser:{strategy:"priority",prefer:"rtc"}},rtc:{enableTurn:!0,dcControl:{ordered:!0}}}}},86251:(e,t,r)=>{r.d(t,{O:()=>u,Y:()=>c});let n=new Uint8Array([48,42,48,5,6,3,43,101,110,3,33,0]);function i(e){let t=atob(e),r=new Uint8Array(t.length);for(let e=0;e<t.length;e++)r[e]=t.charCodeAt(e);return r}function s(e){let t="",r=new Uint8Array(e);for(let e=0;e<r.length;e++)t+=String.fromCharCode(r[e]);return btoa(t)}function a(...e){let t=new Uint8Array(e.reduce((e,t)=>e+t.length,0)),r=0;for(let n of e)t.set(n,r),r+=n.length;return t}async function o(e){let t;try{t=i(String(e))}catch{return null}if(32!==t.length)return null;try{return await crypto.subtle.importKey("spki",a(n,t),{name:"X25519"},!0,[])}catch{return null}}async function l(e,t,r,n){let i=await crypto.subtle.deriveBits({name:"X25519",public:t},e,256),s=await crypto.subtle.importKey("raw",i,"HKDF",!1,["deriveKey"]);return await crypto.subtle.deriveKey({name:"HKDF",hash:"SHA-256",salt:a(r,n),info:new TextEncoder().encode("9remote-tail-seal-v1")},s,{name:"AES-GCM",length:256},!1,["encrypt"])}async function c(e,t){if("string"!=typeof e||!e||"string"!=typeof t||!t)return null;let r=await o(t);if(!r)return null;try{let t=await crypto.subtle.generateKey({name:"X25519"},!0,["deriveBits"]),n=new Uint8Array(await crypto.subtle.exportKey("spki",t.publicKey)).slice(-32),i=new Uint8Array(await crypto.subtle.exportKey("spki",r)).slice(-32),a=await l(t.privateKey,r,n,i),o=crypto.getRandomValues(new Uint8Array(12)),c=await crypto.subtle.encrypt({name:"AES-GCM",iv:o},a,new TextEncoder().encode(e));return{epk:s(n),iv:s(o),ct:s(c)}}catch{return null}}let d="ABCDEFGHJKLMNPQRSTUVWXYZ23456789";async function u(e,t){if("u"<typeof crypto||!crypto.subtle)return null;let r=[e,t].map(e=>{let t;try{t=i(String(e||""))}catch{t=new Uint8Array(0)}let r=new Uint8Array(2);return new DataView(r.buffer).setUint16(0,t.length),a(r,t)}),n=new Uint8Array(await crypto.subtle.digest("SHA-256",a(...r)));return d[n[0]%32]+d[n[1]%32]}},90076:(e,t,r)=>{r.d(t,{O:()=>n,Sn:()=>c,TR:()=>l,_8:()=>s,cC:()=>p,dM:()=>u,fm:()=>i,jP:()=>d,lE:()=>o,qn:()=>h,w:()=>a});let n="https://9remote.cc",i="https://9remote.cc/",s=2208,a=`http://127.0.0.1:${s}`,o=a,l=`${a}/api/ui/state`,c={connect:`${n}/api/connect`,tempKeyCreate:`${n}/api/temp-key/create`,tempKeyVerify:`${n}/api/temp-key/verify`,tempKeyRemove:`${n}/api/temp-key/remove`,turnCredentials:`${n}/api/webrtc/turn-credentials`},d=5,u=2e3,h=5e3,p=1e4},90084:(e,t,r)=>{r.d(t,{$4:()=>d,D5:()=>b,HY:()=>p,I8:()=>y,IU:()=>w,LG:()=>u,cH:()=>g,e1:()=>m,lu:()=>k,lz:()=>c,pV:()=>A,t8:()=>h});var n=r(86129);r(52159);var i=r(86251);let s="9remote_device_trust",a="9remote_pending_fp2";function o(){try{return JSON.parse(localStorage.getItem(s)||"{}")}catch{return{}}}function l(e){localStorage.setItem(s,JSON.stringify(e))}function c(e){return o()[e]||null}function d(e){if(!e)return e;let t=c(e)?.tail;return t?`${e}-${t}`:e}function u(e,t){let r=o();r[e]={...r[e]||{},...t},l(r)}async function h(e,t){return e&&t?await (0,i.O)(e,t):null}function p(){let e=sessionStorage.getItem(a);return sessionStorage.removeItem(a),e?JSON.parse(e).fp2??null:null}function m(){try{let e=sessionStorage.getItem(a);if(!e)return null;let{fp2:t,exp:r}=JSON.parse(e);if(!t||Date.now()>r)return sessionStorage.removeItem(a),null;return t}catch{return null}}let f="9remote_api_keys";function y(){try{let e=sessionStorage.getItem(n.El);if(!e)return;sessionStorage.removeItem(n.El);let t=JSON.parse(localStorage.getItem(f)||"[]");if(t.some(t=>{try{return atob(t.key)===e}catch{return!1}}))return;t.push({id:String(Date.now()),key:btoa(e),label:`Key ${t.length+1}`,createdAt:new Date().toISOString(),lastLoginDate:new Date().toISOString()}),localStorage.setItem(f,JSON.stringify(t));try{window.dispatchEvent(new Event(n.N0))}catch{}}catch{}}function g(e){if(e)try{let t=o();delete t[e],l(t)}catch{}}function _(e){let t=atob(e),r=new Uint8Array(t.length);for(let e=0;e<t.length;e++)r[e]=t.charCodeAt(e);return r}async function b(e,t,r){try{let n=await crypto.subtle.importKey("raw",_(e),{name:"Ed25519"},!1,["verify"]);return await crypto.subtle.verify("Ed25519",n,_(r),new TextEncoder().encode(t))}catch{return null}}let w=["device:keyIssued","device:tailRejected"];function k(e,t,r){let i=e._auth?.apiKey;if(!i)return!1;if("device:keyIssued"===t){e._auth.tempKey=null,e._auth.socketOptions?.auth&&(e._auth.socketOptions.auth.tempKey=null);try{sessionStorage.removeItem("tempKey")}catch{}let t=r?.tail;return!t||(u(i,{tail:t}),e._tailProofSent=e._adapters.get("rtc")?._peerEpoch??0,sessionStorage.getItem(n.aS)&&(sessionStorage.removeItem(n.aS),sessionStorage.setItem(n.El,`${i}-${t}`),y()),!0)}return"device:tailRejected"===t&&(r?.reason===n.ML.sealUnreadable&&u(i,{hostSealKey:null}),!0)}async function A(e){let t=e._auth?.apiKey;if(!t)return;let i=e._adapters.get("rtc");if(!i?.ready)return;let s=i._peerEpoch??0;if(e._tailProofSent===s)return;let{freshAuth:a}=await Promise.resolve().then(r.bind(r,63977)),o=await a({apiKey:t,tempKey:e._auth?.tempKey||null},"rtc");(o.keyTail||o.keyTailSealed)&&i.send(n.l_.control,{event:"device:tailProof",args:[{keyTail:o.keyTail,keyTailSealed:o.keyTailSealed,tempKey:e._auth?.tempKey||null}]})&&(e._tailProofSent=s)}},94858:(e,t,r)=>{r.d(t,{d:()=>s});var n=r(2074),i=r(86129);let s=(0,n.v)(e=>({bus:null,busRef:{current:null},protocolRef:{current:null},connected:!1,everConnected:!1,deliberate:!1,connectionMode:"tunnel",carrier:"ws",approvalStatus:null,admitted:!1,authKey:null,endpoint:null,retryStatus:{isRetrying:!1,attempt:0,maxAttempts:10,failed:!1},setConnection:t=>e(e=>({...e,...t})),setConnected:t=>e({connected:t}),setCarrier:t=>e({carrier:t}),setConnectionMode:t=>e({connectionMode:t}),setRetryStatus:t=>e({retryStatus:t}),setAuthKey:t=>e({authKey:t}),setAdmitted:t=>e({admitted:t}),applyApproval:t=>e(e=>{let r=e.approvalStatus;return t===i.J2.reconnect?r===i.J2.approved?{approvalStatus:null}:{}:r===i.J2.approved&&t===i.J2.pending?{}:{approvalStatus:t}}),reset:()=>e({bus:null,connected:!1,deliberate:!1,everConnected:!1,connectionMode:"tunnel",carrier:"ws",endpoint:null,approvalStatus:null,admitted:!1,retryStatus:{isRetrying:!1,attempt:0,maxAttempts:10,failed:!1}})}))},97711:(e,t,r)=>{r.d(t,{Fo:()=>u,U0:()=>l,vd:()=>d});var n=r(1521),i=r(94858);let s="9remote_auth",a="9remote_auth_state",o=["apiKey","tunnelUrl","mode","localIp"];function l(){try{localStorage.removeItem(a)}catch{}}function c(e){"u">typeof document&&(document.cookie=`${s}=${e}; path=/; max-age=86400; SameSite=Lax`)}function d({apiKey:e,tunnelUrl:t,mode:r="remote",tempKey:n=null,localIp:s=null}){if(!e){try{localStorage.removeItem(a)}catch{}return}try{sessionStorage.setItem("apiKey",e),sessionStorage.setItem("tunnelUrl",t),sessionStorage.setItem("mode",r||"remote"),n?sessionStorage.setItem("tempKey",n):sessionStorage.removeItem("tempKey"),s?sessionStorage.setItem("localIp",s):sessionStorage.removeItem("localIp")}catch{}c(e);try{sessionStorage.removeItem("9remote_manual_disconnect")}catch{}try{!function(){try{return"false"!==localStorage.getItem("9remote_remember_key_preference")}catch{return!1}}()?localStorage.removeItem(a):localStorage.setItem(a,JSON.stringify({apiKey:e,tunnelUrl:t,mode:r,localIp:s}))}catch{}i.d.getState().setAuthKey(e)}function u(){let e=(0,n.useCallback)(()=>{let e,t,r,n,i;try{e=sessionStorage.getItem("apiKey"),t=sessionStorage.getItem("tunnelUrl"),r=sessionStorage.getItem("mode"),n=sessionStorage.getItem("tempKey"),i=sessionStorage.getItem("localIp")}catch{return null}if(!e){let n=function(){try{return JSON.parse(localStorage.getItem(a)||"null")}catch{return null}}();if(!n?.apiKey)return null;try{for(let e of o)n[e]&&sessionStorage.setItem(e,n[e])}catch{}e=n.apiKey,t=n.tunnelUrl??null,r=n.mode??null,i=n.localIp??null}return c(e),{apiKey:e,tunnelUrl:t,mode:r,tempKey:n,localIp:i}},[]);return{getAuth:e,setAuth:(0,n.useCallback)(e=>d(e),[]),clearAuth:(0,n.useCallback)(()=>{try{sessionStorage.clear()}catch{}try{localStorage.removeItem(a)}catch{}"u">typeof document&&(document.cookie=`${s}=; path=/; max-age=0`)},[])}}},98988:(e,t,r)=>{r.d(t,{Nw:()=>x,eJ:()=>S,d:()=>T,rh:()=>v});var n=r(2074),i=r(29091),s=r(94858),a=r(79453),o=r(7938),l=r(11155),c=r(90084);let d="9remote_fleet_connected";function u(){try{return JSON.parse(localStorage.getItem(d)||"[]")}catch{return[]}}class h{constructor({hostOf:e,patch:t,bindBus:r,ready:n,probeTargets:i,servedBy:s=null,servedBus:a=null}){this._hostOf=e,this._patch=t,this._bindBus=r,this._ready=n,this._probeTargets=i,this._servedBy=s||(()=>!1),this._servedBus=a||(()=>null),this.buses=new Map,this._connectTimers=new Map,this.pending=new Map,this._probeTimer=null,this._probeVisible=null}busOf(e){return e&&this.buses.get(e)?.busRef?.current||null}pmOf(e){return this.buses.get(e)||null}has(e){return this.buses.has(e)}whenReady(e,t){let r=this._hostOf(e);if(!e||!r)return;if(this._servedBy(e)){let r=this._servedBus(e);r&&t(r);return}let n=this.busOf(e);if(n&&"online"===r.status)return void t(n);if(!this._canOpen(r,e))return;this.open(e,r);let i=this.pending.get(e)||[];i.push(t),this.pending.set(e,i)}persistIntent(e,t){if(e)try{let r=new Set(u());t?r.add(e):r.delete(e),localStorage.setItem(d,JSON.stringify([...r]))}catch{}}_canOpen(e,t){return!(!e||this._servedBy(t))&&!!e.full}open(e,t){if(this.has(e))return;let r=function(){try{return localStorage.getItem("9remote_deviceId")}catch{return null}}();if(!this._canOpen(t,e)||!r)return;this.persistIntent(e,!0);let n=(0,l.Cj)(t.full);n&&(0,c.LG)(e,{tail:n});let i=t=>this._patch(e,t),s=!1,d=new a.g({tunnelUrl:null,localIp:null,namespace:"",socketOptions:{auth:{apiKey:e,tempKey:null,deviceId:r}},apiKey:e,deviceId:r,tempKey:null,onConnect:t=>{clearTimeout(this._connectTimers.get(e)),this._connectTimers.delete(e),i({status:"online",lastSeenAt:Date.now(),updating:!1,approval:null});let r=this.pending.get(e);if(r)for(let n of(this.pending.delete(e),r))try{n(t)}catch{}s||(s=!0,this._bindBus(t,e)),this._ready(t,e)},onDisconnect:()=>{this.pending.delete(e),i({status:"offline",lastSeenAt:Date.now()})}},{enableWebRTC:o.eR.enableWebRTC,enableTurn:o.eR.enableTurn,apiKey:e,onTransportChange:e=>i({carrier:e||"ws"})});this.buses.set(e,d),i({status:"connecting"}),this._connectTimers.set(e,setTimeout(()=>this._onConnectTimeout(e),15e3)),d.connect()}_onConnectTimeout(e){this._connectTimers.delete(e),this.buses.has(e)&&this._hostOf(e)?.status==="connecting"&&(this._patch(e,{status:"offline"}),this._hostOf(e)?.approval!=="pending"&&this.persistIntent(e,!1))}drop(e){let t=this.buses.get(e);t&&(t.disconnect(),this.buses.delete(e)),clearTimeout(this._connectTimers.get(e)),this._connectTimers.delete(e),this.pending.delete(e)}retry(e){this.drop(e),this.open(e,this._hostOf(e))}closeAll(){for(let e of this.buses.values())e.disconnect();for(let e of(this.buses.clear(),this._connectTimers.values()))clearTimeout(e);this._connectTimers.clear(),this.pending.clear(),this.disarmProbe()}armProbe(){this._probeTimer||(this._probeTimer=setInterval(()=>{document.hidden||this.probeOnce()},6e4),this._probeVisible=()=>{"visible"===document.visibilityState&&this.probeOnce()},document.addEventListener("visibilitychange",this._probeVisible))}disarmProbe(){this._probeTimer&&(clearInterval(this._probeTimer),this._probeTimer=null,document.removeEventListener("visibilitychange",this._probeVisible),this._probeVisible=null)}probeOnce(){let e=this._probeTargets().filter(e=>!this.has(e));e.length&&fetch("/api/host-status",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({heads:e})}).then(e=>e.ok?e.json():null).then(t=>{for(let r of e){if(this.has(r))continue;let e=t?.hosts?.[r];e&&this._patch(r,{status:e.online?"online":"offline"})}}).catch(()=>{})}}var p=r(51627),m=r(31408),f=r(27520);let y="9remote_fleet_cache",g=null;function _(e){clearTimeout(g),g=setTimeout(()=>{g=null;let t={};for(let[r,n]of Object.entries(e().hosts))t[r]={label:n.label,platform:n.platform,version:n.version,sessions:n.sessions,workspaces:n.workspaces,statusMap:n.statusMap,lastSeenAt:n.lastSeenAt};try{localStorage.setItem(y,JSON.stringify(t))}catch{}},1e3)}let b=e=>({key:e,full:null,label:"",status:"offline",carrier:"ws",sessions:[],workspaces:[],statusMap:{},tasksBySession:{},platform:null,version:null,lastSeenAt:null,updateAvailable:null,canSelfUpdate:!1,updating:!1,approval:null,remoteAvailable:!1,mobileAvailable:!1,isCodespaces:!1,mobileDeviceCount:0}),w=(e,t)=>v.getState()._patchHost(e,t),k=(e,t)=>{e?.emit("getSessions",e=>{Array.isArray(e)&&w(t,{sessions:e})}),e?.emit("getWorkspaces",e=>{Array.isArray(e)&&w(t,{workspaces:e})}),e?.emit("getStatusState"),e?.emit("getSessionTasks",e=>v.getState().applySessionTasksState(t,e))},A=null,v=(0,n.v)((e,t)=>({hosts:{},currentKey:null,sync(r,n){let i=n||"",s=new Map;for(let e of r){let t=(0,l.Uo)(e.key);t&&!s.has(t)&&s.set(t,{full:e.key,label:e.label||""})}i&&!s.has(i)&&s.set(i,{full:null,label:""});let a=[...s.keys()].filter(e=>e!==i).slice(0,8),o=new Set(a);for(let e of[...A.buses.keys()])o.has(e)||A.drop(e);let c=function(){try{return JSON.parse(localStorage.getItem(y)||"{}")}catch{return{}}}(),d=new Set(u()),h=!1;try{h="1"===sessionStorage.getItem("9remote_manual_disconnect")}catch{}for(let r of(e(e=>{let t={};for(let[r,n]of s){let s=e.hosts[r]||{...b(r),...c[r]||{}};t[r]={...s,key:r,full:n.full,label:n.label||s.label,status:r===i?h?"offline":"full":o.has(r)&&("online"===s.status||"connecting"===s.status)?s.status:"offline"}}return{hosts:t,currentKey:i}}),a))d.has(r)&&A.open(r,t().hosts[r]);A.probeOnce(),A.armProbe()},_patchHost(r,n){e(e=>{let t=e.hosts[r];return t?{hosts:{...e.hosts,[r]:{...t,...n}}}:e}),_(t)},applyStatusState(r,n){let i=n||{};e(e=>{let t=e.hosts[r];return!t||(0,m.h3)(t.statusMap,i)?e:{hosts:{...e.hosts,[r]:{...t,statusMap:i}}}}),_(t)},applyStatusChange(r,{sessionId:n,state:i,tool:s,since:a,conversationId:o}={}){n&&(e(e=>{let t=e.hosts[r];if(!t)return e;let l=t.statusMap[n],c={state:i,tool:void 0!==s?s:l?.tool,since:a,...o||l?.conversationId?{conversationId:o||l?.conversationId}:{}};return(0,m.dI)(l,c)?e:{hosts:{...e.hosts,[r]:{...t,statusMap:{...t.statusMap,[n]:c}}}}}),_(t))},applyStatusCleared(r,n){n&&(e(e=>{let t=e.hosts[r],i=t?.statusMap?.[n];return i?{hosts:{...e.hosts,[r]:{...t,statusMap:{...t.statusMap,[n]:{...i,state:"idle"}}}}}:e}),_(t))},applySessionTasks(t,{sessionId:r,records:n}={}){r&&e(e=>{let i=e.hosts[t];if(!i)return e;let s={...i.tasksBySession||{}};return Array.isArray(n)&&n.length?s[r]=n:delete s[r],{hosts:{...e.hosts,[t]:{...i,tasksBySession:s}}}})},applySessionTasksState(t,r){e(e=>{let n=e.hosts[t];if(!n)return e;let i={};for(let[e,t]of Object.entries(r||{}))Array.isArray(t)&&t.length&&(i[e]=t);return{hosts:{...e.hosts,[t]:{...n,tasksBySession:i}}}})},_closeHost(e,r={}){A.drop(e),t()._patchHost(e,{status:"offline",lastSeenAt:Date.now(),approval:null,...r})},ensureHost(e){e===t().currentKey||A.has(e)||A.open(e,t().hosts[e])},connectHost(e){t().retryHost(e)},requestHostUpdate(e,r="update"){let n=t().hosts[e];if(!n||n.updating)return;let i={updating:!0,updateAvailable:null};if("full"===n.status){let n=s.d.getState(),a=n.busRef?.current;if(!a?.connected)return void(0,f.Lq)("update",`request ${r} on ACTIVE ${e} dropped: bus not connected`);t()._patchHost(e,i),n.protocolRef?.current?.setUpdating?.(!0),a.emit("restart"===r?"requestRestart":"requestUpdate")}else t()._patchHost(e,i),A.pmOf(e)?.setUpdating?.(!0),A.whenReady(e,t=>{A.pmOf(e)?.setUpdating?.(!0),(0,f.Lq)("update",`request ${r} sent on fleet bus ${e}`),t.emit("restart"===r?"requestRestart":"requestUpdate")});setTimeout(()=>{t().hosts[e]?.updating&&t()._patchHost(e,{updating:!1})},12e4)},setAutoConnect(e,t){A.persistIntent(e,t)},retryHost(e){A.retry(e)},disconnectHost(e){A.persistIntent(e,!1),t()._closeHost(e)},closeAll(){A.closeAll()}}));function S(e){return A?.busOf(e)||null}function T(e){return A?.pmOf(e)||null}function x(e,t){A?.whenReady(e,t)}A=new h({hostOf:e=>v.getState().hosts[e],patch:w,bindBus:(e,t)=>{e.on("connect",()=>{e.emit("device:clientReady"),k(e,t)}),e.on("serverInfo",e=>{let r=!!v.getState().hosts[t]?.updating;w(t,{platform:e?.platform||null,isCodespaces:!!e?.isCodespaces,version:e?.version||null,updateAvailable:!r&&(0,p.U)(e?.updateAvailable?.version,e?.version)?e.updateAvailable:null,canSelfUpdate:!!e?.canSelfUpdate,remoteAvailable:!!e?.remoteAvailable,mobileAvailable:!!e?.mobileAvailable})}),e.on("statusState",e=>v.getState().applyStatusState(t,e)),e.on("statusChange",e=>v.getState().applyStatusChange(t,e)),e.on("statusCleared",e=>v.getState().applyStatusCleared(t,e)),e.on("sessionTasks",e=>v.getState().applySessionTasks(t,e)),e.on("sessionsChanged",()=>k(e,t)),e.on("workspacesChanged",()=>k(e,t)),e.on("session-renamed",()=>k(e,t)),e.on("sessionClosed",r=>{r&&i.B.getState().closeSession(r),k(e,t)}),e.on("device:pendingApproval",()=>w(t,{approval:"pending"})),e.on("device:approved",()=>w(t,{approval:null})),e.on("device:rejected",()=>v.getState()._closeHost(t,{approval:"rejected"})),e.on("device:tailRejected",()=>v.getState()._closeHost(t))},ready:(e,t)=>{e.emit("device:clientReady"),k(e,t)},probeTargets:()=>{let e=v.getState(),t=new Set(u());return Object.values(e.hosts).filter(r=>r.key!==e.currentKey&&t.has(r.key)).map(e=>e.key)},servedBy:e=>!!e&&e===v.getState().currentKey,servedBus:()=>{let e=s.d.getState();return e.connected?e.busRef?.current||e.bus:null}})}}]);
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5804],{25658:(t,e,i)=>{i.d(e,{o:()=>n});var n=(0,i(68567).K)(()=>`
|
|
2
|
-
/* Font Awesome icon styling - consolidated */
|
|
3
|
-
.label-icon {
|
|
4
|
-
display: inline-block;
|
|
5
|
-
height: 1em;
|
|
6
|
-
overflow: visible;
|
|
7
|
-
vertical-align: -0.125em;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
.node .label-icon path {
|
|
11
|
-
fill: currentColor;
|
|
12
|
-
stroke: revert;
|
|
13
|
-
stroke-width: revert;
|
|
14
|
-
}
|
|
15
|
-
`,"getIconStyles")},95804:(t,e,i)=>{i.d(e,{diagram:()=>w});var n=i(58609),s=i(25658),r=i(58109),o=i(11016),a=i(88921);i(34939),i(49877),i(16111),i(12989),i(49519);var l=i(84187),c=i(14561),h=i(68567),u=i(93836),g=i(66591),d=i(95191),p=function(){var t=(0,h.K)(function(t,e,i,n){for(i=i||{},n=t.length;n--;i[t[n]]=e);return i},"o"),e=[1,4],i=[1,13],n=[1,12],s=[1,15],r=[1,16],o=[1,20],a=[1,19],l=[6,7,8],c=[1,26],u=[1,24],g=[1,25],d=[6,7,11],p=[1,31],y=[6,7,11,24],f=[1,6,13,16,17,20,23],m=[1,35],b=[1,36],_=[1,6,7,11,13,16,17,20,23],k=[1,38],E={trace:(0,h.K)(function(){},"trace"),yy:{},symbols_:{error:2,start:3,mindMap:4,spaceLines:5,SPACELINE:6,NL:7,KANBAN:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,node:14,shapeData:15,ICON:16,CLASS:17,nodeWithId:18,nodeWithoutId:19,NODE_DSTART:20,NODE_DESCR:21,NODE_DEND:22,NODE_ID:23,SHAPE_DATA:24,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"KANBAN",11:"EOF",13:"SPACELIST",16:"ICON",17:"CLASS",20:"NODE_DSTART",21:"NODE_DESCR",22:"NODE_DEND",23:"NODE_ID",24:"SHAPE_DATA"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,3],[12,2],[12,2],[12,2],[12,1],[12,2],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[19,3],[18,1],[18,4],[15,2],[15,1]],performAction:(0,h.K)(function(t,e,i,n,s,r,o){var a=r.length-1;switch(s){case 6:case 7:return n;case 8:n.getLogger().trace("Stop NL ");break;case 9:n.getLogger().trace("Stop EOF ");break;case 11:n.getLogger().trace("Stop NL2 ");break;case 12:n.getLogger().trace("Stop EOF2 ");break;case 15:n.getLogger().info("Node: ",r[a-1].id),n.addNode(r[a-2].length,r[a-1].id,r[a-1].descr,r[a-1].type,r[a]);break;case 16:n.getLogger().info("Node: ",r[a].id),n.addNode(r[a-1].length,r[a].id,r[a].descr,r[a].type);break;case 17:n.getLogger().trace("Icon: ",r[a]),n.decorateNode({icon:r[a]});break;case 18:case 23:n.decorateNode({class:r[a]});break;case 19:n.getLogger().trace("SPACELIST");break;case 20:n.getLogger().trace("Node: ",r[a-1].id),n.addNode(0,r[a-1].id,r[a-1].descr,r[a-1].type,r[a]);break;case 21:n.getLogger().trace("Node: ",r[a].id),n.addNode(0,r[a].id,r[a].descr,r[a].type);break;case 22:n.decorateNode({icon:r[a]});break;case 27:n.getLogger().trace("node found ..",r[a-2]),this.$={id:r[a-1],descr:r[a-1],type:n.getType(r[a-2],r[a])};break;case 28:this.$={id:r[a],descr:r[a],type:0};break;case 29:n.getLogger().trace("node found ..",r[a-3]),this.$={id:r[a-3],descr:r[a-1],type:n.getType(r[a-2],r[a])};break;case 30:this.$=r[a-1]+r[a];break;case 31:this.$=r[a]}},"anonymous"),table:[{3:1,4:2,5:3,6:[1,5],8:e},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:e},{6:i,7:[1,10],9:9,12:11,13:n,14:14,16:s,17:r,18:17,19:18,20:o,23:a},t(l,[2,3]),{1:[2,2]},t(l,[2,4]),t(l,[2,5]),{1:[2,6],6:i,12:21,13:n,14:14,16:s,17:r,18:17,19:18,20:o,23:a},{6:i,9:22,12:11,13:n,14:14,16:s,17:r,18:17,19:18,20:o,23:a},{6:c,7:u,10:23,11:g},t(d,[2,24],{18:17,19:18,14:27,16:[1,28],17:[1,29],20:o,23:a}),t(d,[2,19]),t(d,[2,21],{15:30,24:p}),t(d,[2,22]),t(d,[2,23]),t(y,[2,25]),t(y,[2,26]),t(y,[2,28],{20:[1,32]}),{21:[1,33]},{6:c,7:u,10:34,11:g},{1:[2,7],6:i,12:21,13:n,14:14,16:s,17:r,18:17,19:18,20:o,23:a},t(f,[2,14],{7:m,11:b}),t(_,[2,8]),t(_,[2,9]),t(_,[2,10]),t(d,[2,16],{15:37,24:p}),t(d,[2,17]),t(d,[2,18]),t(d,[2,20],{24:k}),t(y,[2,31]),{21:[1,39]},{22:[1,40]},t(f,[2,13],{7:m,11:b}),t(_,[2,11]),t(_,[2,12]),t(d,[2,15],{24:k}),t(y,[2,30]),{22:[1,41]},t(y,[2,27]),t(y,[2,29])],defaultActions:{2:[2,1],6:[2,2]},parseError:(0,h.K)(function(t,e){if(e.recoverable)this.trace(t);else{var i=Error(t);throw i.hash=e,i}},"parseError"),parse:(0,h.K)(function(t){var e=this,i=[0],n=[],s=[null],r=[],o=this.table,a="",l=0,c=0,u=0,g=r.slice.call(arguments,1),d=Object.create(this.lexer),p={};for(var y in this.yy)Object.prototype.hasOwnProperty.call(this.yy,y)&&(p[y]=this.yy[y]);d.setInput(t,p),p.lexer=d,p.parser=this,void 0===d.yylloc&&(d.yylloc={});var f=d.yylloc;r.push(f);var m=d.options&&d.options.ranges;function b(){var t;return"number"!=typeof(t=n.pop()||d.lex()||1)&&(t instanceof Array&&(t=(n=t).pop()),t=e.symbols_[t]||t),t}"function"==typeof p.parseError?this.parseError=p.parseError:this.parseError=Object.getPrototypeOf(this).parseError,(0,h.K)(function(t){i.length=i.length-2*t,s.length=s.length-t,r.length=r.length-t},"popStack"),(0,h.K)(b,"lex");for(var _,k,E,S,N,x,D,L,I,v={};;){if(E=i[i.length-1],this.defaultActions[E]?S=this.defaultActions[E]:(null==_&&(_=b()),S=o[E]&&o[E][_]),void 0===S||!S.length||!S[0]){var C="";for(x in I=[],o[E])this.terminals_[x]&&x>2&&I.push("'"+this.terminals_[x]+"'");C=d.showPosition?"Parse error on line "+(l+1)+":\n"+d.showPosition()+"\nExpecting "+I.join(", ")+", got '"+(this.terminals_[_]||_)+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==_?"end of input":"'"+(this.terminals_[_]||_)+"'"),this.parseError(C,{text:d.match,token:this.terminals_[_]||_,line:d.yylineno,loc:f,expected:I})}if(S[0]instanceof Array&&S.length>1)throw Error("Parse Error: multiple actions possible at state: "+E+", token: "+_);switch(S[0]){case 1:i.push(_),s.push(d.yytext),r.push(d.yylloc),i.push(S[1]),_=null,k?(_=k,k=null):(c=d.yyleng,a=d.yytext,l=d.yylineno,f=d.yylloc,u>0&&u--);break;case 2:if(D=this.productions_[S[1]][1],v.$=s[s.length-D],v._$={first_line:r[r.length-(D||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(D||1)].first_column,last_column:r[r.length-1].last_column},m&&(v._$.range=[r[r.length-(D||1)].range[0],r[r.length-1].range[1]]),void 0!==(N=this.performAction.apply(v,[a,c,l,p,S[1],s,r].concat(g))))return N;D&&(i=i.slice(0,-1*D*2),s=s.slice(0,-1*D),r=r.slice(0,-1*D)),i.push(this.productions_[S[1]][0]),s.push(v.$),r.push(v._$),L=o[i[i.length-2]][i[i.length-1]],i.push(L);break;case 3:return!0}}return!0},"parse")};function S(){this.yy={}}return E.lexer={EOF:1,parseError:(0,h.K)(function(t,e){if(this.yy.parser)this.yy.parser.parseError(t,e);else throw Error(t)},"parseError"),setInput:(0,h.K)(function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},"setInput"),input:(0,h.K)(function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},"input"),unput:(0,h.K)(function(t){var e=t.length,i=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var n=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),i.length-1&&(this.yylineno-=i.length-1);var s=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:i?(i.length===n.length?this.yylloc.first_column:0)+n[n.length-i.length].length-i[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[s[0],s[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},"unput"),more:(0,h.K)(function(){return this._more=!0,this},"more"),reject:(0,h.K)(function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"reject"),less:(0,h.K)(function(t){this.unput(this.match.slice(t))},"less"),pastInput:(0,h.K)(function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},"pastInput"),upcomingInput:(0,h.K)(function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},"upcomingInput"),showPosition:(0,h.K)(function(){var t=this.pastInput(),e=Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},"showPosition"),test_match:(0,h.K)(function(t,e){var i,n,s;if(this.options.backtrack_lexer&&(s={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(s.yylloc.range=this.yylloc.range.slice(0))),(n=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=n.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:n?n[n.length-1].length-n[n.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],i=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),i)return i;if(this._backtrack)for(var r in s)this[r]=s[r];return!1},"test_match"),next:(0,h.K)(function(){if(this.done)return this.EOF;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var t,e,i,n,s=this._currentRules(),r=0;r<s.length;r++)if((i=this._input.match(this.rules[s[r]]))&&(!e||i[0].length>e[0].length)){if(e=i,n=r,this.options.backtrack_lexer){if(!1!==(t=this.test_match(i,s[r])))return t;if(!this._backtrack)return!1;e=!1;continue}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,s[n]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},"next"),lex:(0,h.K)(function(){var t=this.next();return t||this.lex()},"lex"),begin:(0,h.K)(function(t){this.conditionStack.push(t)},"begin"),popState:(0,h.K)(function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},"popState"),_currentRules:(0,h.K)(function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},"_currentRules"),topState:(0,h.K)(function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},"topState"),pushState:(0,h.K)(function(t){this.begin(t)},"pushState"),stateStackSize:(0,h.K)(function(){return this.conditionStack.length},"stateStackSize"),options:{"case-insensitive":!0},performAction:(0,h.K)(function(t,e,i,n){switch(i){case 0:return this.pushState("shapeData"),e.yytext="",24;case 1:return this.pushState("shapeDataStr"),24;case 2:return this.popState(),24;case 3:return e.yytext=e.yytext.replace(/\n\s*/g,"<br/>"),24;case 4:return 24;case 5:case 10:case 29:case 32:this.popState();break;case 6:return t.getLogger().trace("Found comment",e.yytext),6;case 7:return 8;case 8:this.begin("CLASS");break;case 9:return this.popState(),17;case 11:t.getLogger().trace("Begin icon"),this.begin("ICON");break;case 12:return t.getLogger().trace("SPACELINE"),6;case 13:return 7;case 14:return 16;case 15:t.getLogger().trace("end icon"),this.popState();break;case 16:return t.getLogger().trace("Exploding node"),this.begin("NODE"),20;case 17:return t.getLogger().trace("Cloud"),this.begin("NODE"),20;case 18:return t.getLogger().trace("Explosion Bang"),this.begin("NODE"),20;case 19:return t.getLogger().trace("Cloud Bang"),this.begin("NODE"),20;case 20:case 21:case 22:case 23:return this.begin("NODE"),20;case 24:return 13;case 25:return 23;case 26:return 11;case 27:this.begin("NSTR2");break;case 28:return"NODE_DESCR";case 30:t.getLogger().trace("Starting NSTR"),this.begin("NSTR");break;case 31:return t.getLogger().trace("description:",e.yytext),"NODE_DESCR";case 33:return this.popState(),t.getLogger().trace("node end ))"),"NODE_DEND";case 34:return this.popState(),t.getLogger().trace("node end )"),"NODE_DEND";case 35:return this.popState(),t.getLogger().trace("node end ...",e.yytext),"NODE_DEND";case 36:case 39:case 40:return this.popState(),t.getLogger().trace("node end (("),"NODE_DEND";case 37:case 38:return this.popState(),t.getLogger().trace("node end (-"),"NODE_DEND";case 41:case 42:return t.getLogger().trace("Long description:",e.yytext),21}},"anonymous"),rules:[/^(?:@\{)/i,/^(?:["])/i,/^(?:["])/i,/^(?:[^\"]+)/i,/^(?:[^}^"]+)/i,/^(?:\})/i,/^(?:\s*%%.*)/i,/^(?:kanban\b)/i,/^(?::::)/i,/^(?:.+)/i,/^(?:\n)/i,/^(?:::icon\()/i,/^(?:[\s]+[\n])/i,/^(?:[\n]+)/i,/^(?:[^\)]+)/i,/^(?:\))/i,/^(?:-\))/i,/^(?:\(-)/i,/^(?:\)\))/i,/^(?:\))/i,/^(?:\(\()/i,/^(?:\{\{)/i,/^(?:\()/i,/^(?:\[)/i,/^(?:[\s]+)/i,/^(?:[^\(\[\n\)\{\}@]+)/i,/^(?:$)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:[^"]+)/i,/^(?:["])/i,/^(?:[\)]\))/i,/^(?:[\)])/i,/^(?:[\]])/i,/^(?:\}\})/i,/^(?:\(-)/i,/^(?:-\))/i,/^(?:\(\()/i,/^(?:\()/i,/^(?:[^\)\]\(\}]+)/i,/^(?:.+(?!\(\())/i],conditions:{shapeDataEndBracket:{rules:[],inclusive:!1},shapeDataStr:{rules:[2,3],inclusive:!1},shapeData:{rules:[1,4,5],inclusive:!1},CLASS:{rules:[9,10],inclusive:!1},ICON:{rules:[14,15],inclusive:!1},NSTR2:{rules:[28,29],inclusive:!1},NSTR:{rules:[31,32],inclusive:!1},NODE:{rules:[27,30,33,34,35,36,37,38,39,40,41,42],inclusive:!1},INITIAL:{rules:[0,6,7,8,11,12,13,16,17,18,19,20,21,22,23,24,25,26],inclusive:!0}}},(0,h.K)(S,"Parser"),S.prototype=E,E.Parser=S,new S}();p.parser=p;var y=[],f=[],m=0,b={},_=(0,h.K)(()=>{y=[],f=[],m=0,b={}},"clear"),k=(0,h.K)(t=>{if(0===y.length)return null;let e=y[0].level,i=null;for(let t=y.length-1;t>=0;t--)if(y[t].level!==e||i||(i=y[t]),y[t].level<e)throw Error('Items without section detected, found section ("'+y[t].label+'")');return t===i?.level?null:i},"getSection"),E=(0,h.K)(function(){return f},"getSections"),S=(0,h.K)(function(){let t=[],e=E(),i=(0,l.D7)();for(let n of e){let e={id:n.id,label:(0,l.jZ)(n.label??"",i),labelType:"markdown",isGroup:!0,ticket:n.ticket,shape:"kanbanSection",level:n.level,look:i.look};for(let s of(t.push(e),y.filter(t=>t.parentId===n.id))){let e={id:s.id,parentId:n.id,label:(0,l.jZ)(s.label??"",i),labelType:"markdown",isGroup:!1,ticket:s?.ticket,priority:s?.priority,assigned:s?.assigned,icon:s?.icon,shape:"kanbanItem",level:s.level,rx:5,ry:5,cssStyles:["text-align: left"]};t.push(e)}}return{nodes:t,edges:[],other:{},config:(0,l.D7)()}},"getData"),N=(0,h.K)((t,e,i,n,s)=>{let o=(0,l.D7)(),a=o.mindmap?.padding??l.UI.mindmap.padding;switch(n){case x.ROUNDED_RECT:case x.RECT:case x.HEXAGON:a*=2}let c={id:(0,l.jZ)(e,o)||"kbn"+m++,level:t,label:(0,l.jZ)(i,o),width:o.mindmap?.maxNodeWidth??l.UI.mindmap.maxNodeWidth,padding:a,isGroup:!1};if(void 0!==s){let t;t=s.includes("\n")?s+"\n":"{\n"+s+"\n}";let e=(0,r.H)(t,{schema:r.r});if(e.shape&&(e.shape!==e.shape.toLowerCase()||e.shape.includes("_")))throw Error(`No such shape: ${e.shape}. Shape names should be lowercase.`);e?.shape&&"kanbanItem"===e.shape&&(c.shape=e?.shape),e?.label&&(c.label=e?.label),e?.icon&&(c.icon=e?.icon.toString()),e?.assigned&&(c.assigned=e?.assigned.toString()),e?.ticket&&(c.ticket=e?.ticket.toString()),e?.priority&&(c.priority=e?.priority)}let h=k(t);h?c.parentId=h.id||"kbn"+m++:f.push(c),y.push(c)},"addNode"),x={DEFAULT:0,NO_BORDER:0,ROUNDED_RECT:1,RECT:2,CIRCLE:3,CLOUD:4,BANG:5,HEXAGON:6},D=(0,h.K)((t,e)=>{switch(c.R.debug("In get type",t,e),t){case"[":return x.RECT;case"(":return")"===e?x.ROUNDED_RECT:x.CLOUD;case"((":return x.CIRCLE;case")":return x.CLOUD;case"))":return x.BANG;case"{{":return x.HEXAGON;default:return x.DEFAULT}},"getType"),L=(0,h.K)((t,e)=>{b[t]=e},"setElementForId"),I=(0,h.K)(t=>{if(!t)return;let e=(0,l.D7)(),i=y[y.length-1];t.icon&&(i.icon=(0,l.jZ)(t.icon,e)),t.class&&(i.cssClasses=(0,l.jZ)(t.class,e))},"decorateNode"),v=(0,h.K)(t=>{switch(t){case x.DEFAULT:return"no-border";case x.RECT:return"rect";case x.ROUNDED_RECT:return"rounded-rect";case x.CIRCLE:return"circle";case x.CLOUD:return"cloud";case x.BANG:return"bang";case x.HEXAGON:return"hexgon";default:return"no-border"}},"type2Str"),C=(0,h.K)(()=>c.R,"getLogger"),O=(0,h.K)(t=>b[t],"getElementById"),A=(0,h.K)(async(t,e,i,s)=>{c.R.debug("Rendering kanban diagram\n"+t);let r=s.db.getData(),h=(0,l.D7)();h.htmlLabels=!1;let u=(0,n.D)(e);for(let t of r.nodes)t.domId=`${e}-${t.id}`;let g=u.append("g");g.attr("class","sections");let d=u.append("g");d.attr("class","items");let p=r.nodes.filter(t=>t.isGroup),y=0,f=[],m=25;for(let t of p){let e=h?.kanban?.sectionWidth||200;t.x=e*(y+=1)+(y-1)*10/2,t.width=e,t.y=0,t.height=3*e,t.rx=5,t.ry=5,t.cssClasses=t.cssClasses+" section-"+y;let i=await (0,o.U)(g,t);m=Math.max(m,i?.labelBBox?.height),f.push(i)}let b=0;for(let t of p){let e=f[b];b+=1;let i=h?.kanban?.sectionWidth||200,n=-(3*i)/2+m,s=n;for(let e of r.nodes.filter(e=>e.parentId===t.id)){if(e.isGroup)throw Error("Groups within groups are not allowed in Kanban diagrams");e.x=t.x,e.width=i-15;let n=(await (0,a.on)(d,e,{config:h})).node().getBBox();e.y=s+n.height/2,await (0,a.U_)(e),s=e.y+n.height/2+5}let o=e.cluster.select("rect"),l=Math.max(s-n+30,50)+(m-25);o.attr("height",l)}(0,l.ot)(void 0,u,h.mindmap?.padding??l.UI.kanban.padding,h.mindmap?.useMaxWidth??l.UI.kanban.useMaxWidth)},"draw"),K=(0,h.K)(t=>{let e="";for(let e=0;e<t.THEME_COLOR_LIMIT;e++)t["lineColor"+e]=t["lineColor"+e]||t["cScaleInv"+e],(0,u.A)(t["lineColor"+e])?t["lineColor"+e]=(0,g.A)(t["lineColor"+e],20):t["lineColor"+e]=(0,d.A)(t["lineColor"+e],20);let i=(0,h.K)((e,i)=>t.darkMode?(0,d.A)(e,i):(0,g.A)(e,i),"adjuster");for(let n=0;n<t.THEME_COLOR_LIMIT;n++){let s=""+(17-3*n);e+=`
|
|
16
|
-
.section-${n-1} rect, .section-${n-1} path, .section-${n-1} circle, .section-${n-1} polygon, .section-${n-1} path {
|
|
17
|
-
fill: ${i(t["cScale"+n],10)};
|
|
18
|
-
stroke: ${i(t["cScale"+n],10)};
|
|
19
|
-
|
|
20
|
-
}
|
|
21
|
-
.section-${n-1} text {
|
|
22
|
-
fill: ${t["cScaleLabel"+n]};
|
|
23
|
-
}
|
|
24
|
-
.node-icon-${n-1} {
|
|
25
|
-
font-size: 40px;
|
|
26
|
-
color: ${t["cScaleLabel"+n]};
|
|
27
|
-
}
|
|
28
|
-
.section-edge-${n-1}{
|
|
29
|
-
stroke: ${t["cScale"+n]};
|
|
30
|
-
}
|
|
31
|
-
.edge-depth-${n-1}{
|
|
32
|
-
stroke-width: ${s};
|
|
33
|
-
}
|
|
34
|
-
.section-${n-1} line {
|
|
35
|
-
stroke: ${t["cScaleInv"+n]} ;
|
|
36
|
-
stroke-width: 3;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
.disabled, .disabled circle, .disabled text {
|
|
40
|
-
fill: lightgray;
|
|
41
|
-
}
|
|
42
|
-
.disabled text {
|
|
43
|
-
fill: #efefef;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
.node rect,
|
|
47
|
-
.node circle,
|
|
48
|
-
.node ellipse,
|
|
49
|
-
.node polygon,
|
|
50
|
-
.node path {
|
|
51
|
-
fill: ${t.background};
|
|
52
|
-
stroke: ${t.nodeBorder};
|
|
53
|
-
stroke-width: 1px;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
.kanban-ticket-link {
|
|
57
|
-
fill: ${t.background};
|
|
58
|
-
stroke: ${t.nodeBorder};
|
|
59
|
-
text-decoration: underline;
|
|
60
|
-
}
|
|
61
|
-
`}return e},"genSections"),w={db:{clear:_,addNode:N,getSections:E,getData:S,nodeType:x,getType:D,setElementForId:L,decorateNode:I,type2Str:v,getLogger:C,getElementById:O},renderer:{draw:A},parser:p,styles:(0,h.K)(t=>`
|
|
62
|
-
.edge {
|
|
63
|
-
stroke-width: 3;
|
|
64
|
-
}
|
|
65
|
-
${K(t)}
|
|
66
|
-
.section-root rect, .section-root path, .section-root circle, .section-root polygon {
|
|
67
|
-
fill: ${t.git0};
|
|
68
|
-
}
|
|
69
|
-
.section-root text {
|
|
70
|
-
fill: ${t.gitBranchLabel0};
|
|
71
|
-
}
|
|
72
|
-
.icon-container {
|
|
73
|
-
height:100%;
|
|
74
|
-
display: flex;
|
|
75
|
-
justify-content: center;
|
|
76
|
-
align-items: center;
|
|
77
|
-
}
|
|
78
|
-
.edge {
|
|
79
|
-
fill: none;
|
|
80
|
-
}
|
|
81
|
-
.cluster-label, .label {
|
|
82
|
-
color: ${t.textColor};
|
|
83
|
-
fill: ${t.textColor};
|
|
84
|
-
}
|
|
85
|
-
.kanban-label {
|
|
86
|
-
dy: 1em;
|
|
87
|
-
alignment-baseline: middle;
|
|
88
|
-
text-anchor: middle;
|
|
89
|
-
dominant-baseline: middle;
|
|
90
|
-
text-align: center;
|
|
91
|
-
}
|
|
92
|
-
${(0,s.o)()}
|
|
93
|
-
`,"getStyles")}}}]);
|