@dev-anywhere/relay 0.6.3 → 0.7.0

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.
@@ -44,7 +44,7 @@
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-BwXMl6yi.js"></script>
47
+ <script type="module" crossorigin src="/assets/index-WMCumAhu.js"></script>
48
48
  <link rel="stylesheet" crossorigin href="/assets/index-DaV7Gwjf.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">
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),l={module:{uri:t},exports:o,require:f};s[t]=Promise.all(n.map(e=>l[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:"18bc98b5e0ee053b75bd46f8233b4f36"},{url:"assets/index-DaV7Gwjf.css",revision:null},{url:"assets/index-BwXMl6yi.js",revision:null},{url:"assets/fvad-DYxbW2my.wasm",revision:null},{url:"assets/fvad-BQ0eMlem.js",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")});
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:"c69237d03fdd299e6a438e0514e41e60"},{url:"assets/index-WMCumAhu.js",revision:null},{url:"assets/index-DaV7Gwjf.css",revision:null},{url:"assets/fvad-DYxbW2my.wasm",revision:null},{url:"assets/fvad-DQYOSZdE.js",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")});
@@ -554,6 +554,7 @@ var ControlErrorCode = {
554
554
  var ProxyInfoSchema = z9.object({
555
555
  proxyId: IdSchema,
556
556
  name: z9.string().optional(),
557
+ version: z9.string().optional(),
557
558
  online: z9.boolean(),
558
559
  sessions: z9.array(z9.string()).optional()
559
560
  });
@@ -641,10 +642,13 @@ function control(type, shape, directions) {
641
642
  var relayControlDefinitions = [
642
643
  control("proxy_register", {
643
644
  proxyId: IdSchema,
644
- name: z9.string().optional()
645
+ name: z9.string().optional(),
646
+ proxyVersion: z9.string().min(1).max(64).optional()
645
647
  }),
646
648
  control("proxy_register_response", {
647
- status: z9.enum(["new", "reconnected"])
649
+ status: z9.enum(["new", "reconnected"]),
650
+ // optional 只用于滚动升级:新 Proxy 连接旧 Relay 时继续工作,但不会自动更新。
651
+ relayVersion: z9.string().min(1).max(64).optional()
648
652
  }),
649
653
  control("proxy_list_request", RequestIdShape),
650
654
  control("proxy_list_response", {
@@ -1199,7 +1203,7 @@ var RelayRegistry = class {
1199
1203
  proxyStates = /* @__PURE__ */ new Map();
1200
1204
  clientBindings = /* @__PURE__ */ new Map();
1201
1205
  connectedClients = /* @__PURE__ */ new Map();
1202
- registerProxy(proxyId, ws, name) {
1206
+ registerProxy(proxyId, ws, name, version) {
1203
1207
  const existing = this.proxyStates.get(proxyId);
1204
1208
  if (existing) {
1205
1209
  if (existing.ws && existing.ws.readyState === WebSocket.OPEN) {
@@ -1209,6 +1213,7 @@ var RelayRegistry = class {
1209
1213
  existing.connectionState = "online";
1210
1214
  existing.disconnectedAt = null;
1211
1215
  if (name !== void 0) existing.name = name;
1216
+ existing.version = version;
1212
1217
  return "reconnected";
1213
1218
  }
1214
1219
  this.proxyStates.set(proxyId, {
@@ -1216,7 +1221,8 @@ var RelayRegistry = class {
1216
1221
  connectionState: "online",
1217
1222
  sessions: /* @__PURE__ */ new Set(),
1218
1223
  disconnectedAt: null,
1219
- name
1224
+ name,
1225
+ version
1220
1226
  });
1221
1227
  return "new";
1222
1228
  }
@@ -1282,6 +1288,7 @@ var RelayRegistry = class {
1282
1288
  return Array.from(this.proxyStates.entries()).map(([proxyId, state]) => ({
1283
1289
  proxyId,
1284
1290
  ...state.name !== void 0 ? { name: state.name } : {},
1291
+ ...state.version !== void 0 ? { version: state.version } : {},
1285
1292
  online: state.connectionState === "online"
1286
1293
  }));
1287
1294
  }
@@ -1839,18 +1846,19 @@ function handleProxyConnection(ws, registry, logger, ptySnapshotRoutes, sessionH
1839
1846
  const raw = data.toString();
1840
1847
  const result = parseMessage(raw);
1841
1848
  if (result.kind === "control" && result.message.type === "proxy_register") {
1842
- const { proxyId, name } = result.message;
1843
- const status = registry.registerProxy(proxyId, proxyWs, name);
1849
+ const { proxyId, name, proxyVersion } = result.message;
1850
+ const status = registry.registerProxy(proxyId, proxyWs, name, proxyVersion);
1844
1851
  proxyWs.proxyId = proxyId;
1845
1852
  if (status === "reconnected") {
1846
1853
  ptySnapshotRoutes.clearProxy(proxyId);
1847
1854
  sessionHistoryRoutes.clearProxy(proxyId);
1848
1855
  }
1849
- logger.info({ proxyId, status }, "Proxy registered");
1856
+ logger.info({ proxyId, proxyVersion, status }, "Proxy registered");
1850
1857
  proxyWs.send(
1851
1858
  serializeControl({
1852
1859
  type: "proxy_register_response",
1853
- status
1860
+ status,
1861
+ relayVersion: RELAY_VERSION
1854
1862
  })
1855
1863
  );
1856
1864
  if (status === "reconnected") {
@@ -5243,4 +5251,4 @@ export {
5243
5251
  parseRelayChaosFromEnv,
5244
5252
  createRelayServer
5245
5253
  };
5246
- //# sourceMappingURL=chunk-SDL4V2RE.js.map
5254
+ //# sourceMappingURL=chunk-6RWN2VEX.js.map