@dev-anywhere/relay 0.7.0 → 0.8.1
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/assets/fonts/sarasa-fixed-sc/00c59ca448ea49756112128d6a43b127.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/011decfe3e67ab099af86e86a15e4f12.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/0133a2c4604dd809764dc749af72dc79.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/02928e8a3c2bf5ae6677bdf552664108.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/02eb3185bd0fd343bb2ae5a13260e805.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/04248a8ea5cd1204f875bc7661f1096c.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/059276218fbb9297f1668b1e37611796.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/05c6ae1e7580a1eff4be47341a155474.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/0681e7debe2dd44962f142b5c454676e.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/06ec078ae766d56e900c2837556eaa21.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/0765562d298aed694539cfcc4e26537c.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/090128a865f81baab82dfa2776ef9d39.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/098ff8830b5d779d8656e7ca93253c12.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/09b4eba4363eb15092534724123a78f2.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/0a32f2f6ed1a99ffa5e833e6891d1f82.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/0c1c080e1ac07d6a49dca531de9725a4.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/0d022c7c63996b8e5dc70b7fd7b0689d.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/0e7c7848d16895e68f79a55fd7b8c29d.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/1021bfe59ce4f905808dd5c3ea3fecc4.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/103c3dd7a5ee0d3be6cab3d04bd40c96.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/104a138cdd04cdbf3f786d2abeeed70a.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/105c39ea073d59b2e2f5e16ca68b2d71.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/1113c82b3ef6588e32cf20d7bd723355.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/1284d569e10290971bf3200bf4ddf94f.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/13401a392cffb9f2f7254e91bf44a106.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/1364ce313965ebf440ff2f0311cd4c83.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/1641d3bae07fd8d369349f78dd6c9c40.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/187edd679db5112bd2699bf1adad4a32.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/1918eaee7987c39db5198d637623a538.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/1aa2711726a364e3ea6fb7ca8a95d950.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/1ab01fa7bd43e3242f3c9d5b6f73dc90.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/1ae20f7adc1aa93e95c1842ce3b0c329.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/1c16e221d67a71a270f700e31e406230.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/1c40fcc59ed13b4b861844a8feb8205b.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/1d0e76f87701ab6daecb38b5aff5e35c.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/1d18a292fa9adaae7261de62ab3d5b83.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/1f99a7c91c71e6303282aa66c99c6670.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/20e0dab161488105b7fa7852470503b1.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/210b0efe54084a98b88028a6f3f35b0d.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/2116632ed1a3bdf3bf0106e1703c0781.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/22b3a91f654e334e2e7fbe3780f67764.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/24c5d226f02d96f03a7d050b0fdfd1d1.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/254d3a725f55d7111abbafa05858f2d6.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/26506a3ce2dbbfbfde40d11d65230272.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/268f0d094899c94260e840ac55320e20.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/277fc44cecacaf16cefce4681495bdce.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/27b773ac20ca5fa1bdd09d2109dfd5dc.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/2803a14ad17e6753704504009dad3333.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/2a0d78f9037bc2b5846bb4bcb42bfedc.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/2ac0bf1c4f9ad6e69bc01259f6e17058.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/2b01deb59e13f60e307d370b674b7b3b.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/2b74162a48979b6282e4893199f1346d.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/2d11bafb03690fc87494426325d90414.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/2dbf9030d7fa41019c78d5a717726261.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/30ce0c911f54ecd538247018d5289bb6.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/31bc5b0f3eb1e0f0845f37ae39f1a43e.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/31cdb9be17f46537a2958ba142c9765f.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/31d182ea6704bc50689becec8f417674.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/31f6abd51bf73062085ad82253fc302d.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/32d1abf03444175b162eadfef3a8e937.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/3397f69dc93262cf856a7c836fb33cb1.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/349035f271962ecacc5fa5cd56930c44.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/3525d0f8fb4e24d09024d35992e9095d.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/393876ac692b10f5ab7190590b062745.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/3bf37030a116e7377dcaf47356f08ef1.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/3c953d2e03b93436ee5c522ce3a27e1a.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/3fe795fd56b36a734a31613b1fed5441.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/401e69f55dc74b2e6fb774dcbba811da.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/404518f4b01a2fe38462bd04bfd76d35.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/404fe750213a60cbd07016ab43aacb71.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/41491053defe7688d8d53bfc313c6974.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/420121d03c1887873aa0eaa37a534e0c.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/42dffba83a406a85b208fba09e465c4d.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/44b74f10fbe44658d1acb6627b3a8b94.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/450be7e82a27dca52c8c1c582fcf182d.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/454ab2db1835c113f7b99f366a627247.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/45ec91cf9684c378adb99130acd6477e.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/4610b2980f41ab106bfe74b6951b34bb.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/46cad9f32908fa67609b51b74bc5693b.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/4a51964240b7e2c93d276dfef3794b5b.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/4b800716e356efb3e4b429085bcdb61a.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/4d8dad1e6c57ca3629d21230981cbb0e.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/4e625675fc1cb257e07a9ff2e331a9fe.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/4f2207b0342d6e2dd4290614e53cf0c5.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/50b0854263c0cf842979ce447020051a.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/552fe6d8e7144695a8fb38b8760295df.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/56175fa000590397d0ec4074c1f1e9f2.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/570f8c343327a818e4f0b0c4962ba4a1.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/579fbe9abeb15d0e96ee4770e6719719.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/57c37c54a9699166f03c0e6f871e6735.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/58e7c2324d8d292d58534d9f236f1552.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/59584acacc4c1852a6814f7e389ea191.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/598705446ef817283f04a709e974d473.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/59e93050018a5206bebf980e0f52fa78.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/5c129ed60734fd511937f3e72a07f936.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/5c40c780ef301baacb66efb9750e258b.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/5d1a982cb896e55ee96ada379c4a1d0c.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/5eba8579b88524026f6f6ec30cb81baa.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/601ad6234d43753b4e3efe8486b315c1.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/603b9e361dc9dd05250221356255a176.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/6133adaaf70a9467188b7e9e34039480.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/6158d9e8e90c6a553485c49e8adc991c.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/63c707f20b4af887788bfe53c6eee3ec.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/63c8475e9aa8acc0033fde9f792b8acf.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/64466c4274848cdee185275fb52660df.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/652d2da7b3c1dc0a70efdbb85e820055.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/6653b549c4d40a370724f6f32223e8a7.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/6734957b7e0bdd9f9e66cf24be7dc058.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/689a7d17cf5f82d7f148d660a21df759.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/6a864ec605e3b28cfdebf1d8fab2451e.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/6b4101e34138d999fd3ba9d2684ddebf.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/6b70494a68af284b2f21967109bf0311.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/6dde2f1140ce0a20159b7c1625bc3b45.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/6faa59cc7dff0a7751347b5baa8a5015.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/70364e9456886f13e2d5c9674ffb08f4.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/736f91321c58d7a9316ea9cddf4d83a7.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/7458762c6210651559b6019d5508ae2c.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/7460d9b012420e17a4bbfd2cb6796468.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/75a0c446c8bf8e4051d7cd65ed17e114.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/77ee59e7be1d66b59e87880e9c283491.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/782cda0bc3f24b5553f93c3d5b6fe581.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/78e84df88175c20e7f2562e4cdaad257.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/79e46c399f5e7383f853281b499269ee.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/7acff1baf69f6628c6372be0554191f1.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/7c5323aa737b291adacceecedac3e56a.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/7c9c9097a200464fd8ccec8eafc80178.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/7f77666d943dd01e947a2e35ffed945f.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/7f7e1463e29e6528378ed51589c4ebc0.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/80d4285084348d043a775221eb1c93b1.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/81258e5d1abdeafe44be69ad32f74c19.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/83a8da8e1de25f9eb39fe9d980e04a5d.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/83be0efd62f30539368d37cf7529f95c.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/84266b5a67707c745ce2c7101c559735.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/84905ac6e9d149bcacc34e2a71b82a67.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/852ae9183bf83dc2a2414290d3aa0236.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/85f5aa76f5f1e09b6852af36ec781960.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/860a1c6d20d4e631bd8e80735f5f3581.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/8afa5d1ab930027046ad09ec6349ab31.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/8b81739358772947619c9a58575c863a.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/8b9212f06a935902e9a4d8ad435c6a6e.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/8cc210fa91949bb44ea2bf607991b7bf.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/8f0b853b5728d58ac137870b3fd7ab02.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/8f0cdbad1758d5f68a48effbca6f74f8.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/8f5261cd877891595879479ee2440ae4.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/910a758ea12189f5a6a1e025fca33c5a.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/911993a058e817f1a231fbac27b3781c.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/91daedcfd8d0745222bf82c1fd310a33.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/943d6560828548692eeb4a533aa89494.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/945d0c206221572e76cc03fdd474685a.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/946411ab6f4f655273da613188359c06.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/9514ffa1f75fb1ad995392125c963b1b.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/971106de1248ba224fbfe50cf5c8a3dc.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/9714a586ded7b76747709b1fbe32c344.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/98b75b8dba788b62ef809337088ef030.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/98b7b436090e7874e2affbfd4ad28fd9.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/9a952ea6da219d92841b5503d43c746e.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/a0eabe8e58be580b4a5b0db87e3d282b.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/a11e9313ebf3147b1622c47e8cb1bacd.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/a2030c8eca8b7b75cf8d6fbbf29940cb.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/a2e0e75587d53e7e6c50da180ad76815.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/a3e96d6e1a2bdfe27d35140d1cb84600.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/a645858417844eaeb35eec60463a8758.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/a691a029b0ffe2f516dc0ba2680a7b24.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/a8731b06984003e15944af2045bac0ba.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/a8b5a37da8e22efc24e1d51e3dd133f2.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/aa4030d4e6a032ebd37ab080a87f0b15.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/ab0f237ab351bf258b3579011285bdb2.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/ac3a84416815f292543ac24c909b8f53.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/ac4188ae92c726da6cce789716706455.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/ac9e1d7b7d0e738c0965e0c37a171594.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/ad0efa49e97c104bb4f7d2a5d15eabef.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/ad3ac003a089fb00191c1e00aa56061e.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/ae481a90ce6dc650ffb8e777ab9fc089.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/aef606698752748d6b411ab230cd1760.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/aefc6f1da14ea5d5daf751fbf71b29a2.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/afe37b0740a4f9cc8f6a8aa5515a7826.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/b1a36f37842e3cd3981ee51b5d9b3edc.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/b3791b3fb0de0352fb1265cb02a021fb.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/b37e11130ac85f74432248a20b134622.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/b39422dfd00810613d15bd6572b05aa3.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/b3e514ad857c99211370e0bc572f776f.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/b4bd13b2c8086a5320644893d557b747.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/b6b23d001929bf0450f2ee16e9236f1f.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/b78cefc4f6a28eb5b5dd551dd873bcbd.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/b7e35bfc1e67312ea4f7399d87101681.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/b8493cdc783af55e9c50fc16c9b55bc3.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/b8e187dc66c9864eb348ee91951eacdf.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/bbf72353d229f1e5d6ccea65888451fe.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/bc6f1bd38107e5c152f4d568e75b3cf0.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/bc884e50f2cf284e61c6cc8274bb3cc5.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/bd0f4de744997828af2f5be5ec11428f.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/bf85faaa5f8efc2e1023f5e9504c0d4e.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/c509336eb0f6e35088064f15ddddc844.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/c5dd4097aac455d055badef188473371.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/c66f535c634eadaf34e0fe041672ae4b.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/c693a3ac340ea557c7ee39ddef0451a2.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/c8e0baa6e08346d410255ea827a8be27.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/ca8a49ee7846219a65d63ee1ec51c194.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/cd52152b8b48869f0fb1175983d9a505.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/cea8a7b71e661b383a7dc2f15cc2f47a.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/d2e284352932a735dda55727c0879153.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/d2fd9591ebfd0e779de7682d2745dbbb.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/d4a14f2651525d4affbbb753b6dbdf07.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/d5caf76d2720e294f4d0b1625f01ec9c.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/d5d463ae4788148f67a28de9ec4c1dca.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/d6e2c1e4c4b88bc14079e9c4a7549497.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/d70ea44ff65a30a175801cb104f83448.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/d750b314131793e148b4ebf50ffb91af.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/d7ae616c789f29be08782214e0288a0d.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/d8ae70630c929796cb0364e5202037e4.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/da5bdab3ae018a4c1207bd67ab854bc2.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/dab7b758f386eaae246f675ec7e23f0f.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/db1cc9bd868a6ff45d7bbe5b28d4b8d7.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/dc34cae5db8221efc393ea494597b1ec.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/dd32cf24e261a9aa261b7e196da33f2d.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/dda618cc791e2c20645ca5b7843c50dc.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/df9de632322bb3378c647420760aab61.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/e00c9c693f510281ead88131d09c18d2.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/e02d34cae25f04c920a31db2c80d1d8f.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/e22efb34fb5fe61f5b45504d76d20781.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/e25f5e7e1d5b88a59d981b5f6f669283.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/e3bb4be954796cb47ac6851ab724ecaf.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/e3bdeda10d9131256fad8417fd1da09f.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/e73e3950ff542ab97969b032c1f7241f.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/e78879cfa489561d3ec6eef16a4a0a4d.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/e811136959f0512a25a18acc520970b5.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/e9a7cf7d3d15fb2e50730469b07f2e39.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/eb514af63c1e9b14ccec7dee432b8edc.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/ed0b4344be5485ee0b0c207f28762fb8.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/edf89add9339773b26c1c2dd2244a179.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/ef8de64aca34834c6f110f4adc7515bd.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/f0438b1823af0a0de674c239fa03eaba.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/f0604027051cb387c2f85940dfff3755.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/f065b514c78eb2344c42e496865369a9.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/f0d97a6f8e1880316015bc2283d0f156.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/f1834c69e3074e71093d17a68b9d4d7d.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/f29b465128cba69d5e68235945cd3edd.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/f330fd41c2fbf0ae89bb98047c08d516.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/f383e78159d65c11032dc8b8d9c360f3.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/f647c059126fa5bf24355dcbfed09c4f.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/f6af810265a209ab307886171ded4113.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/f74844d2228da8984fe156b5b9c28acc.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/f7f2840050c367f26cfbc2b81c3a5fad.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/f85435b23bb50124e045f50cfe54dd3e.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/f865cd6ba4d22d8d61fce2a2d63be7dc.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/f8a66c1ab7db90820de697f664ea136d.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/fa6cf45901b333e63b3eabc045783c69.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/fa827d13030f9366a57edbfc22ce4336.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/fb6ac0e1252b3d366009d4f4ffeab4fc.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/fbb64faabca9f28743b2d0d5dc448e5f.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/fd299dbef627ab6738d61d4e4bac56e2.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/fd8cd455b632147c1758bfb9bd0ba42e.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/ff8cf784cc8ef060bf9d2dc7e698b451.woff2 +0 -0
- package/assets/fonts/sarasa-fixed-sc/result.css +20 -0
- package/assets/web/assets/{fvad-DQYOSZdE.js → fvad-RpevwfGI.js} +1 -1
- package/assets/web/assets/index-08tfJppO.css +41 -0
- package/assets/web/assets/{index-WMCumAhu.js → index-D5QXto0Q.js} +187 -187
- package/assets/web/index.html +2 -2
- package/assets/web/sw.js +1 -1
- package/dist/{chunk-6RWN2VEX.js → chunk-XPCFNRZO.js} +214 -14
- package/dist/chunk-XPCFNRZO.js.map +1 -0
- package/dist/handlers/client.d.ts.map +1 -1
- package/dist/index.js +16 -1
- package/dist/index.js.map +1 -1
- package/dist/registry.d.ts +2 -0
- package/dist/registry.d.ts.map +1 -1
- package/dist/remote-file-bridge.d.ts +1 -0
- package/dist/remote-file-bridge.d.ts.map +1 -1
- package/dist/server.js +1 -1
- package/package.json +2 -2
- package/assets/web/assets/index-DaV7Gwjf.css +0 -41
- package/dist/chunk-6RWN2VEX.js.map +0 -1
package/assets/web/index.html
CHANGED
|
@@ -44,8 +44,8 @@
|
|
|
44
44
|
<link rel="icon" type="image/svg+xml" href="/brand-icon.svg" />
|
|
45
45
|
<link rel="icon" type="image/png" sizes="64x64" href="/pwa-64x64.png" />
|
|
46
46
|
<link rel="apple-touch-icon" href="/apple-touch-icon-180x180.png" />
|
|
47
|
-
<script type="module" crossorigin src="/assets/index-
|
|
48
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
47
|
+
<script type="module" crossorigin src="/assets/index-D5QXto0Q.js"></script>
|
|
48
|
+
<link rel="stylesheet" crossorigin href="/assets/index-08tfJppO.css">
|
|
49
49
|
<link rel="manifest" href="/manifest.webmanifest"><script id="vite-plugin-pwa:register-sw" src="/registerSW.js"></script></head>
|
|
50
50
|
<body class="bg-background text-foreground">
|
|
51
51
|
<div id="root"></div>
|
package/assets/web/sw.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
if(!self.define){let e,s={};const i=(i,n)=>(i=new URL(i+".js",n).href,s[i]||new Promise(s=>{if("document"in self){const e=document.createElement("script");e.src=i,e.onload=s,document.head.appendChild(e)}else e=i,importScripts(i),s()}).then(()=>{let e=s[i];if(!e)throw new Error(`Module ${i} didn’t register its module`);return e}));self.define=(n,r)=>{const t=e||("document"in self?document.currentScript.src:"")||location.href;if(s[t])return;let o={};const f=e=>i(e,t),c={module:{uri:t},exports:o,require:f};s[t]=Promise.all(n.map(e=>c[e]||f(e))).then(e=>(r(...e),o))}}define(["./workbox-10a3128e"],function(e){"use strict";importScripts("notification-sw.js"),self.skipWaiting(),e.clientsClaim(),e.precacheAndRoute([{url:"registerSW.js",revision:"1872c500de691dce40960bb85481de07"},{url:"notification-sw.js",revision:"ee0be62f4c1f36625b92680b3060becb"},{url:"index.html",revision:"
|
|
1
|
+
if(!self.define){let e,s={};const i=(i,n)=>(i=new URL(i+".js",n).href,s[i]||new Promise(s=>{if("document"in self){const e=document.createElement("script");e.src=i,e.onload=s,document.head.appendChild(e)}else e=i,importScripts(i),s()}).then(()=>{let e=s[i];if(!e)throw new Error(`Module ${i} didn’t register its module`);return e}));self.define=(n,r)=>{const t=e||("document"in self?document.currentScript.src:"")||location.href;if(s[t])return;let o={};const f=e=>i(e,t),c={module:{uri:t},exports:o,require:f};s[t]=Promise.all(n.map(e=>c[e]||f(e))).then(e=>(r(...e),o))}}define(["./workbox-10a3128e"],function(e){"use strict";importScripts("notification-sw.js"),self.skipWaiting(),e.clientsClaim(),e.precacheAndRoute([{url:"registerSW.js",revision:"1872c500de691dce40960bb85481de07"},{url:"notification-sw.js",revision:"ee0be62f4c1f36625b92680b3060becb"},{url:"index.html",revision:"2ed5abcf0df2cd67a24c5defcd6116e5"},{url:"assets/index-D5QXto0Q.js",revision:null},{url:"assets/index-08tfJppO.css",revision:null},{url:"assets/fvad-RpevwfGI.js",revision:null},{url:"assets/fvad-DYxbW2my.wasm",revision:null},{url:"assets/__vite-browser-external-BIHI7g3E.js",revision:null},{url:"brand-icon.svg",revision:"efe8505a7b7ef12cbb3a4bcd286254bd"},{url:"maskable-icon-512x512.png",revision:"e762ff07cdedcd78f8650f59c6881727"},{url:"pwa-192x192.png",revision:"4e4603ce0f22528eded553ba7f2ffbc5"},{url:"pwa-512x512.png",revision:"e762ff07cdedcd78f8650f59c6881727"},{url:"pwa-64x64.png",revision:"d322160ad1dc08ba9e133cb3d296ae63"},{url:"manifest.webmanifest",revision:"4daa295c44052f4ce59a1fcfd6f06ab8"}],{}),e.cleanupOutdatedCaches(),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("/index.html"),{denylist:[/^\/proxy(\/|$|\?)/,/^\/client(\/|$|\?)/,/^\/voice(\/|$|\?)/,/^\/fonts\//,/^\/health/,/^\/status/,/^\/api\//]})),e.registerRoute(/^\/fonts\/.*\.(woff2|woff|ttf|otf|css)$/,new e.CacheFirst({cacheName:"dev-anywhere-fonts",plugins:[new e.ExpirationPlugin({maxEntries:40,maxAgeSeconds:15552e3})]}),"GET")});
|
|
@@ -38,18 +38,32 @@ var ThinkingPayloadSchema = z2.object({
|
|
|
38
38
|
|
|
39
39
|
// ../../packages/shared/dist/schemas/tool.js
|
|
40
40
|
import { z as z3 } from "zod";
|
|
41
|
+
var ApprovalOptionKindSchema = z3.enum([
|
|
42
|
+
"allow_once",
|
|
43
|
+
"allow_always",
|
|
44
|
+
"reject_once",
|
|
45
|
+
"reject_always"
|
|
46
|
+
]);
|
|
47
|
+
var ApprovalOptionSchema = z3.object({
|
|
48
|
+
optionId: IdSchema,
|
|
49
|
+
name: z3.string().min(1),
|
|
50
|
+
kind: ApprovalOptionKindSchema
|
|
51
|
+
});
|
|
41
52
|
var ToolUseRequestPayloadSchema = z3.object({
|
|
42
53
|
toolName: z3.string(),
|
|
43
54
|
toolId: IdSchema,
|
|
44
|
-
parameters: z3.record(z3.string(), z3.unknown())
|
|
55
|
+
parameters: z3.record(z3.string(), z3.unknown()),
|
|
56
|
+
options: z3.array(ApprovalOptionSchema).optional()
|
|
45
57
|
});
|
|
46
58
|
var ToolApprovePayloadSchema = z3.object({
|
|
47
59
|
toolId: IdSchema,
|
|
48
|
-
whitelistTool: z3.boolean().optional()
|
|
60
|
+
whitelistTool: z3.boolean().optional(),
|
|
61
|
+
optionId: IdSchema.optional()
|
|
49
62
|
});
|
|
50
63
|
var ToolDenyPayloadSchema = z3.object({
|
|
51
64
|
toolId: IdSchema,
|
|
52
|
-
reason: z3.string().optional()
|
|
65
|
+
reason: z3.string().optional(),
|
|
66
|
+
optionId: IdSchema.optional()
|
|
53
67
|
});
|
|
54
68
|
var ToolResultPayloadSchema = z3.object({
|
|
55
69
|
toolId: IdSchema,
|
|
@@ -61,7 +75,7 @@ var ToolResultPayloadSchema = z3.object({
|
|
|
61
75
|
import { z as z4 } from "zod";
|
|
62
76
|
|
|
63
77
|
// ../../packages/shared/dist/constants/enums.js
|
|
64
|
-
var providerValues = ["claude", "codex"];
|
|
78
|
+
var providerValues = ["claude", "codex", "kimi"];
|
|
65
79
|
var ptyOwnerValues = ["local-terminal", "proxy-hosted"];
|
|
66
80
|
var sessionModeValues = ["pty", "json"];
|
|
67
81
|
var sessionKindValues = ["agent", "terminal"];
|
|
@@ -541,6 +555,8 @@ var ControlErrorCode = {
|
|
|
541
555
|
PATH_NOT_DIRECTORY: "PATH_NOT_DIRECTORY",
|
|
542
556
|
PATH_ACCESS_DENIED: "PATH_ACCESS_DENIED",
|
|
543
557
|
PROXY_OFFLINE: "PROXY_OFFLINE",
|
|
558
|
+
PROXY_NOT_FOUND: "PROXY_NOT_FOUND",
|
|
559
|
+
PROXY_ONLINE: "PROXY_ONLINE",
|
|
544
560
|
SESSION_NOT_FOUND: "SESSION_NOT_FOUND",
|
|
545
561
|
SESSION_ALREADY_ACTIVE: "SESSION_ALREADY_ACTIVE",
|
|
546
562
|
PROVIDER_UNSUPPORTED: "PROVIDER_UNSUPPORTED",
|
|
@@ -579,7 +595,9 @@ var AgentCliAvailabilitySchema = z9.object({
|
|
|
579
595
|
});
|
|
580
596
|
var AgentCliStatusSchema = z9.object({
|
|
581
597
|
claude: AgentCliAvailabilitySchema,
|
|
582
|
-
codex: AgentCliAvailabilitySchema
|
|
598
|
+
codex: AgentCliAvailabilitySchema,
|
|
599
|
+
// 滚动升级兼容:旧 Proxy 不会上报 Kimi,新 Proxy 的探测结果始终包含它。
|
|
600
|
+
kimi: AgentCliAvailabilitySchema.optional()
|
|
583
601
|
});
|
|
584
602
|
var DirEntrySchema = z9.object({ name: z9.string(), isDir: z9.boolean() });
|
|
585
603
|
var FileTreeGroupSchema = z9.object({
|
|
@@ -655,6 +673,16 @@ var relayControlDefinitions = [
|
|
|
655
673
|
...RequestIdShape,
|
|
656
674
|
proxies: z9.array(ProxyInfoSchema)
|
|
657
675
|
}),
|
|
676
|
+
control("proxy_remove", {
|
|
677
|
+
...RequiredRequestIdShape,
|
|
678
|
+
proxyId: IdSchema
|
|
679
|
+
}),
|
|
680
|
+
control("proxy_remove_response", {
|
|
681
|
+
...RequiredRequestIdShape,
|
|
682
|
+
proxyId: IdSchema,
|
|
683
|
+
success: z9.boolean(),
|
|
684
|
+
...RequestErrorShape
|
|
685
|
+
}),
|
|
658
686
|
control("relay_client_list_request", RequestIdShape),
|
|
659
687
|
control("relay_client_list_response", {
|
|
660
688
|
...RequestIdShape,
|
|
@@ -856,6 +884,10 @@ var relayControlDefinitions = [
|
|
|
856
884
|
control("proxy_offline", {
|
|
857
885
|
proxyId: IdSchema
|
|
858
886
|
}),
|
|
887
|
+
// 用户明确删除了离线 Proxy。与列表暂时缺项分开建模,客户端据此永久清理选择态。
|
|
888
|
+
control("proxy_removed", {
|
|
889
|
+
proxyId: IdSchema
|
|
890
|
+
}),
|
|
859
891
|
// Proxy 主动断开,relay 立即清理资源
|
|
860
892
|
control("proxy_disconnect", {
|
|
861
893
|
proxyId: IdSchema
|
|
@@ -880,7 +912,12 @@ var relayControlDefinitions = [
|
|
|
880
912
|
success: z9.boolean()
|
|
881
913
|
}, "proxy_to_client"),
|
|
882
914
|
// 命令列表推送,proxy 将可用命令列表推给 client
|
|
883
|
-
control("command_list_push", {
|
|
915
|
+
control("command_list_push", {
|
|
916
|
+
// New proxies scope command snapshots to their owning session. Keep this optional so
|
|
917
|
+
// rolling upgrades can still consume the legacy, proxy-wide snapshot.
|
|
918
|
+
sessionId: IdSchema.optional(),
|
|
919
|
+
commands: z9.array(CommandEntrySchema)
|
|
920
|
+
}, "proxy_to_client"),
|
|
884
921
|
// 文件树推送: 按目录分组, 首组 path 即为 session cwd
|
|
885
922
|
// 前端直接把每组写入 tree[path], 与 dir_list_response 共享 cache slot
|
|
886
923
|
control("file_tree_push", {
|
|
@@ -1023,7 +1060,8 @@ var relayControlDefinitions = [
|
|
|
1023
1060
|
approvals: z9.array(z9.object({
|
|
1024
1061
|
requestId: IdSchema,
|
|
1025
1062
|
toolName: z9.string(),
|
|
1026
|
-
input: z9.record(z9.string(), z9.unknown())
|
|
1063
|
+
input: z9.record(z9.string(), z9.unknown()),
|
|
1064
|
+
options: z9.array(ApprovalOptionSchema).optional()
|
|
1027
1065
|
}))
|
|
1028
1066
|
}, "proxy_to_client"),
|
|
1029
1067
|
// Voice Pilot speech summaries are produced by proxy-side Claude Code so it can read project context.
|
|
@@ -1261,11 +1299,26 @@ var RelayRegistry = class {
|
|
|
1261
1299
|
this.clientBindings.delete(clientId);
|
|
1262
1300
|
}
|
|
1263
1301
|
}
|
|
1302
|
+
for (const ws of this.connectedClients.keys()) {
|
|
1303
|
+
const clientWs = ws;
|
|
1304
|
+
if (clientWs.boundProxyId === proxyId) {
|
|
1305
|
+
delete clientWs.boundProxyId;
|
|
1306
|
+
}
|
|
1307
|
+
}
|
|
1264
1308
|
this.proxyStates.delete(proxyId);
|
|
1265
1309
|
}
|
|
1266
1310
|
unregisterProxy(proxyId) {
|
|
1267
1311
|
this.cleanupProxy(proxyId);
|
|
1268
1312
|
}
|
|
1313
|
+
// 检查状态与删除必须保持在同一个同步操作内,避免调用方先检查、稍后删除时误删
|
|
1314
|
+
// 已经重连上线的开发机。只有显式进入 offline 状态的记录才允许被用户移除。
|
|
1315
|
+
removeOfflineProxy(proxyId) {
|
|
1316
|
+
const state = this.proxyStates.get(proxyId);
|
|
1317
|
+
if (!state) return "not_found";
|
|
1318
|
+
if (state.connectionState !== "offline") return "online";
|
|
1319
|
+
this.cleanupProxy(proxyId);
|
|
1320
|
+
return "removed";
|
|
1321
|
+
}
|
|
1269
1322
|
getProxy(proxyId) {
|
|
1270
1323
|
const state = this.proxyStates.get(proxyId);
|
|
1271
1324
|
return state?.ws ?? void 0;
|
|
@@ -2856,6 +2909,92 @@ function handleRelayClientListRequest(clientWs, registry, requestId) {
|
|
|
2856
2909
|
})
|
|
2857
2910
|
);
|
|
2858
2911
|
}
|
|
2912
|
+
function proxyListResponse(registry) {
|
|
2913
|
+
const proxies = registry.listProxiesWithName().map((proxy) => ({
|
|
2914
|
+
...proxy,
|
|
2915
|
+
sessions: registry.getSessionsForProxy(proxy.proxyId)
|
|
2916
|
+
}));
|
|
2917
|
+
return serializeControl({ type: "proxy_list_response", proxies });
|
|
2918
|
+
}
|
|
2919
|
+
function broadcastProxyList2(registry, chaos) {
|
|
2920
|
+
const response = proxyListResponse(registry);
|
|
2921
|
+
for (const target of registry.getAllClientWs()) {
|
|
2922
|
+
if (chaos) {
|
|
2923
|
+
chaos.send(target, response, {
|
|
2924
|
+
direction: "proxy_to_client",
|
|
2925
|
+
type: "proxy_list_response"
|
|
2926
|
+
});
|
|
2927
|
+
} else {
|
|
2928
|
+
target.send(response);
|
|
2929
|
+
}
|
|
2930
|
+
}
|
|
2931
|
+
}
|
|
2932
|
+
function broadcastProxyRemoved(proxyId, registry, chaos) {
|
|
2933
|
+
const notification = serializeControl({ type: "proxy_removed", proxyId });
|
|
2934
|
+
for (const target of registry.getAllClientWs()) {
|
|
2935
|
+
if (chaos) {
|
|
2936
|
+
chaos.send(target, notification, {
|
|
2937
|
+
direction: "proxy_to_client",
|
|
2938
|
+
type: "proxy_removed"
|
|
2939
|
+
});
|
|
2940
|
+
} else {
|
|
2941
|
+
target.send(notification);
|
|
2942
|
+
}
|
|
2943
|
+
}
|
|
2944
|
+
}
|
|
2945
|
+
function sendProxyRemoveResponse(clientWs, response, chaos) {
|
|
2946
|
+
const raw = serializeControl({ type: "proxy_remove_response", ...response });
|
|
2947
|
+
if (chaos) {
|
|
2948
|
+
chaos.send(clientWs, raw, {
|
|
2949
|
+
direction: "proxy_to_client",
|
|
2950
|
+
type: "proxy_remove_response"
|
|
2951
|
+
});
|
|
2952
|
+
} else {
|
|
2953
|
+
clientWs.send(raw);
|
|
2954
|
+
}
|
|
2955
|
+
}
|
|
2956
|
+
function handleProxyRemove(clientWs, registry, logger, ptySnapshotRoutes, sessionHistoryRoutes, remoteFileBridge, requestId, proxyId, chaos) {
|
|
2957
|
+
const result = registry.removeOfflineProxy(proxyId);
|
|
2958
|
+
if (result === "not_found") {
|
|
2959
|
+
sendProxyRemoveResponse(
|
|
2960
|
+
clientWs,
|
|
2961
|
+
{
|
|
2962
|
+
requestId,
|
|
2963
|
+
proxyId,
|
|
2964
|
+
success: false,
|
|
2965
|
+
errorCode: ControlErrorCode.PROXY_NOT_FOUND,
|
|
2966
|
+
error: `\u5F00\u53D1\u673A ${proxyId} \u4E0D\u5B58\u5728`
|
|
2967
|
+
},
|
|
2968
|
+
chaos
|
|
2969
|
+
);
|
|
2970
|
+
return;
|
|
2971
|
+
}
|
|
2972
|
+
if (result === "online") {
|
|
2973
|
+
sendProxyRemoveResponse(
|
|
2974
|
+
clientWs,
|
|
2975
|
+
{
|
|
2976
|
+
requestId,
|
|
2977
|
+
proxyId,
|
|
2978
|
+
success: false,
|
|
2979
|
+
errorCode: ControlErrorCode.PROXY_ONLINE,
|
|
2980
|
+
error: `\u5F00\u53D1\u673A ${proxyId} \u4ECD\u5728\u7EBF\uFF0C\u65E0\u6CD5\u5220\u9664`
|
|
2981
|
+
},
|
|
2982
|
+
chaos
|
|
2983
|
+
);
|
|
2984
|
+
return;
|
|
2985
|
+
}
|
|
2986
|
+
ptySnapshotRoutes.clearProxy(proxyId);
|
|
2987
|
+
sessionHistoryRoutes.clearProxy(proxyId);
|
|
2988
|
+
try {
|
|
2989
|
+
remoteFileBridge?.revokeProxy(proxyId);
|
|
2990
|
+
} catch (err) {
|
|
2991
|
+
logger.error({ err, proxyId }, "Failed to finish remote file cleanup for removed proxy");
|
|
2992
|
+
}
|
|
2993
|
+
sendProxyRemoveResponse(clientWs, { requestId, proxyId, success: true }, chaos);
|
|
2994
|
+
broadcastProxyRemoved(proxyId, registry, chaos);
|
|
2995
|
+
broadcastProxyList2(registry, chaos);
|
|
2996
|
+
logger.info({ proxyId, clientId: clientWs.clientId }, "Offline proxy removed by client");
|
|
2997
|
+
}
|
|
2859
2998
|
function handleRelayClientKick(clientWs, registry, logger, requestId, targetClientId) {
|
|
2860
2999
|
if (targetClientId === clientWs.clientId) {
|
|
2861
3000
|
clientWs.send(
|
|
@@ -2928,7 +3067,7 @@ function rejectNotRegistered2(ws, requestId) {
|
|
|
2928
3067
|
type: "relay_error",
|
|
2929
3068
|
requestId,
|
|
2930
3069
|
code: RelayErrorCode.NOT_REGISTERED,
|
|
2931
|
-
message: "Client must register
|
|
3070
|
+
message: "Client must register first"
|
|
2932
3071
|
})
|
|
2933
3072
|
);
|
|
2934
3073
|
}
|
|
@@ -3024,6 +3163,25 @@ function handleClientConnection(ws, registry, logger, ptySnapshotRoutes, session
|
|
|
3024
3163
|
handleRelayClientKick(clientWs, registry, logger, msg.requestId, msg.clientId);
|
|
3025
3164
|
return;
|
|
3026
3165
|
}
|
|
3166
|
+
if (msg.type === "proxy_remove") {
|
|
3167
|
+
if (!clientWs.clientId) {
|
|
3168
|
+
rejectNotRegistered2(clientWs, msg.requestId);
|
|
3169
|
+
closeRejectedClientProtocol(clientWs);
|
|
3170
|
+
return;
|
|
3171
|
+
}
|
|
3172
|
+
handleProxyRemove(
|
|
3173
|
+
clientWs,
|
|
3174
|
+
registry,
|
|
3175
|
+
logger,
|
|
3176
|
+
ptySnapshotRoutes,
|
|
3177
|
+
sessionHistoryRoutes,
|
|
3178
|
+
remoteFileBridge,
|
|
3179
|
+
msg.requestId,
|
|
3180
|
+
msg.proxyId,
|
|
3181
|
+
chaos
|
|
3182
|
+
);
|
|
3183
|
+
return;
|
|
3184
|
+
}
|
|
3027
3185
|
if (msg.type === "remote_file_url_request") {
|
|
3028
3186
|
if (!remoteFileBridge) {
|
|
3029
3187
|
sendRemoteFileUrlFailure(clientWs, msg.requestId, msg.sessionId, "\u6587\u4EF6\u6D41\u670D\u52A1\u4E0D\u53EF\u7528");
|
|
@@ -3154,13 +3312,13 @@ function handleClientConnection(ws, registry, logger, ptySnapshotRoutes, session
|
|
|
3154
3312
|
return;
|
|
3155
3313
|
}
|
|
3156
3314
|
if (msg.type === "proxy_list_request") {
|
|
3157
|
-
const proxies = registry.listProxiesWithName().map((
|
|
3158
|
-
...
|
|
3159
|
-
sessions: registry.getSessionsForProxy(
|
|
3315
|
+
const proxies = registry.listProxiesWithName().map((proxy) => ({
|
|
3316
|
+
...proxy,
|
|
3317
|
+
sessions: registry.getSessionsForProxy(proxy.proxyId)
|
|
3160
3318
|
}));
|
|
3161
|
-
const response =
|
|
3319
|
+
const response = serializeControl({
|
|
3162
3320
|
type: "proxy_list_response",
|
|
3163
|
-
requestId: msg.requestId,
|
|
3321
|
+
...msg.requestId !== void 0 ? { requestId: msg.requestId } : {},
|
|
3164
3322
|
proxies
|
|
3165
3323
|
});
|
|
3166
3324
|
if (chaos) {
|
|
@@ -4155,6 +4313,48 @@ var RemoteFileBridge = class {
|
|
|
4155
4313
|
pendingUrlMetadata = /* @__PURE__ */ new Map();
|
|
4156
4314
|
pendingStreams = /* @__PURE__ */ new Map();
|
|
4157
4315
|
pendingUploads = /* @__PURE__ */ new Map();
|
|
4316
|
+
revokeProxy(proxyId) {
|
|
4317
|
+
let revokedTokens = 0;
|
|
4318
|
+
let rejectedMetadata = 0;
|
|
4319
|
+
let failedStreams = 0;
|
|
4320
|
+
let failedUploads = 0;
|
|
4321
|
+
for (const [token, metadata] of this.tokens) {
|
|
4322
|
+
if (metadata.proxyId !== proxyId) continue;
|
|
4323
|
+
this.tokens.delete(token);
|
|
4324
|
+
revokedTokens += 1;
|
|
4325
|
+
}
|
|
4326
|
+
for (const [token, metadata] of this.uploadTokens) {
|
|
4327
|
+
if (metadata.proxyId !== proxyId) continue;
|
|
4328
|
+
this.uploadTokens.delete(token);
|
|
4329
|
+
revokedTokens += 1;
|
|
4330
|
+
}
|
|
4331
|
+
for (const [requestId, pending] of this.pendingUrlMetadata) {
|
|
4332
|
+
if (pending.proxyId !== proxyId) continue;
|
|
4333
|
+
this.pendingUrlMetadata.delete(requestId);
|
|
4334
|
+
clearTimeout(pending.timer);
|
|
4335
|
+
pending.resolve({
|
|
4336
|
+
success: false,
|
|
4337
|
+
path: pending.path,
|
|
4338
|
+
error: "\u5F00\u53D1\u673A\u5DF2\u5220\u9664",
|
|
4339
|
+
errorCode: ControlErrorCode.PROXY_NOT_FOUND
|
|
4340
|
+
});
|
|
4341
|
+
rejectedMetadata += 1;
|
|
4342
|
+
}
|
|
4343
|
+
for (const [streamId, pending] of this.pendingStreams) {
|
|
4344
|
+
if (pending.token.proxyId !== proxyId) continue;
|
|
4345
|
+
this.failStream(streamId, 410, "\u5F00\u53D1\u673A\u5DF2\u5220\u9664", ControlErrorCode.PROXY_NOT_FOUND);
|
|
4346
|
+
failedStreams += 1;
|
|
4347
|
+
}
|
|
4348
|
+
for (const [uploadId, pending] of this.pendingUploads) {
|
|
4349
|
+
if (pending.token.proxyId !== proxyId) continue;
|
|
4350
|
+
this.failUpload(uploadId, 410, "\u5F00\u53D1\u673A\u5DF2\u5220\u9664", ControlErrorCode.PROXY_NOT_FOUND);
|
|
4351
|
+
failedUploads += 1;
|
|
4352
|
+
}
|
|
4353
|
+
this.deps.logger.info(
|
|
4354
|
+
{ proxyId, revokedTokens, rejectedMetadata, failedStreams, failedUploads },
|
|
4355
|
+
"Remote file access revoked for removed proxy"
|
|
4356
|
+
);
|
|
4357
|
+
}
|
|
4158
4358
|
createUrl(input) {
|
|
4159
4359
|
this.cleanupExpiredTokens();
|
|
4160
4360
|
const proxyWs = this.deps.registry.getProxy(input.proxyId);
|
|
@@ -5251,4 +5451,4 @@ export {
|
|
|
5251
5451
|
parseRelayChaosFromEnv,
|
|
5252
5452
|
createRelayServer
|
|
5253
5453
|
};
|
|
5254
|
-
//# sourceMappingURL=chunk-
|
|
5454
|
+
//# sourceMappingURL=chunk-XPCFNRZO.js.map
|