@dev-anywhere/relay 0.8.1 → 0.9.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.
Files changed (38) hide show
  1. package/assets/web/assets/__vite-browser-external-D7Ct-6yo.js +1 -0
  2. package/assets/web/assets/fvad-DreiJBJr.js +1 -0
  3. package/assets/web/assets/index-Buv7a7PI.js +843 -0
  4. package/assets/web/assets/index-CTJCtPHc.css +41 -0
  5. package/assets/web/assets/jmuxer.min-BMedIzGm.js +4 -0
  6. package/assets/web/index.html +2 -2
  7. package/assets/web/sw.js +1 -1
  8. package/dist/chaos.d.ts +1 -0
  9. package/dist/chaos.d.ts.map +1 -1
  10. package/dist/{chunk-XPCFNRZO.js → chunk-JLLMBFAB.js} +3748 -502
  11. package/dist/chunk-JLLMBFAB.js.map +1 -0
  12. package/dist/device-preview-bridge.d.ts +107 -0
  13. package/dist/device-preview-bridge.d.ts.map +1 -0
  14. package/dist/device-preview-route-registry.d.ts +25 -0
  15. package/dist/device-preview-route-registry.d.ts.map +1 -0
  16. package/dist/handlers/client.d.ts +3 -1
  17. package/dist/handlers/client.d.ts.map +1 -1
  18. package/dist/handlers/proxy.d.ts +3 -1
  19. package/dist/handlers/proxy.d.ts.map +1 -1
  20. package/dist/health.d.ts.map +1 -1
  21. package/dist/index.js +1 -1
  22. package/dist/preview-route-registry.d.ts +68 -0
  23. package/dist/preview-route-registry.d.ts.map +1 -0
  24. package/dist/proxy-upgrade-bootstrap.d.ts +13 -0
  25. package/dist/proxy-upgrade-bootstrap.d.ts.map +1 -0
  26. package/dist/registry.d.ts +14 -4
  27. package/dist/registry.d.ts.map +1 -1
  28. package/dist/server.d.ts.map +1 -1
  29. package/dist/server.js +1 -1
  30. package/dist/web-app.d.ts.map +1 -1
  31. package/dist/web-preview-route-registry.d.ts +25 -0
  32. package/dist/web-preview-route-registry.d.ts.map +1 -0
  33. package/package.json +2 -2
  34. package/assets/web/assets/__vite-browser-external-BIHI7g3E.js +0 -1
  35. package/assets/web/assets/fvad-RpevwfGI.js +0 -1
  36. package/assets/web/assets/index-08tfJppO.css +0 -41
  37. package/assets/web/assets/index-D5QXto0Q.js +0 -797
  38. package/dist/chunk-XPCFNRZO.js.map +0 -1
@@ -0,0 +1,107 @@
1
+ import type { Request, Response } from "express";
2
+ import { WebSocket } from "ws";
3
+ import { type RelayControlMessage } from "@dev-anywhere/shared";
4
+ import type { Logger } from "@dev-anywhere/shared/logger";
5
+ import type { RelayChaos } from "./chaos.js";
6
+ import type { RelayRegistry } from "./registry.js";
7
+ interface DevicePreviewBridgeOptions {
8
+ registry: RelayRegistry;
9
+ logger: Logger;
10
+ chaos?: RelayChaos;
11
+ clientTokenRequired?: boolean;
12
+ validateClientToken?: (token: string | null) => boolean;
13
+ tokenTtlMs?: number;
14
+ startTimeoutMs?: number;
15
+ firstFrameTimeoutMs?: number;
16
+ drainTimeoutMs?: number;
17
+ registerTimeoutMs?: number;
18
+ maxStreams?: number;
19
+ maxStreamsPerProxy?: number;
20
+ maxStreamsPerClient?: number;
21
+ maxStreamsPerPreview?: number;
22
+ maxInputsPerSecond?: number;
23
+ maxOutstandingInputsPerLease?: number;
24
+ now?: () => number;
25
+ tokenFactory?: () => string;
26
+ idFactory?: () => string;
27
+ }
28
+ export declare class DevicePreviewBridge {
29
+ private readonly options;
30
+ private readonly routes;
31
+ private readonly proxyConnections;
32
+ private readonly transports;
33
+ private readonly tokens;
34
+ private readonly leases;
35
+ private readonly controllerByPreview;
36
+ private readonly streams;
37
+ private readonly tokenTtlMs;
38
+ private readonly startTimeoutMs;
39
+ private readonly firstFrameTimeoutMs;
40
+ private readonly drainTimeoutMs;
41
+ private readonly registerTimeoutMs;
42
+ private readonly maxStreams;
43
+ private readonly maxStreamsPerProxy;
44
+ private readonly maxStreamsPerClient;
45
+ private readonly maxStreamsPerPreview;
46
+ private readonly maxInputsPerSecond;
47
+ private readonly maxOutstandingInputsPerLease;
48
+ private readonly now;
49
+ private readonly tokenFactory;
50
+ private readonly idFactory;
51
+ private disposed;
52
+ constructor(options: DevicePreviewBridgeOptions);
53
+ /** Called for every successful main `/proxy` registration; returns a per-connection nonce. */
54
+ registerProxyConnection(proxyId: string, proxyWs: WebSocket): string;
55
+ handleStreamTransportConnection(ws: WebSocket): void;
56
+ handleClientControl(clientWs: WebSocket, message: RelayControlMessage): boolean;
57
+ handleProxyControl(proxyId: string, proxyWs: WebSocket, message: RelayControlMessage): boolean;
58
+ handlePreviewRemovedEvent(proxyId: string, proxyWs: WebSocket, previewId: string): void;
59
+ handleHttpRequest(req: Request, res: Response): void;
60
+ abandonClientSocket(clientWs: WebSocket): void;
61
+ clearProxy(proxyId: string): void;
62
+ revokeProxy(proxyId: string): void;
63
+ dispose(): void;
64
+ private forwardManagementRequest;
65
+ private sendManagementFailure;
66
+ private resolveManagementResponse;
67
+ private issueStreamUrl;
68
+ private forwardInput;
69
+ private claimControl;
70
+ private handleStreamStartResponse;
71
+ private handleStreamComplete;
72
+ private handleInputAck;
73
+ private handleFrame;
74
+ private handleH264Packet;
75
+ private writeFrame;
76
+ private writeH264Packet;
77
+ private writeStreamRecord;
78
+ private requestH264Resync;
79
+ private armFirstFrameTimer;
80
+ private clearFirstFrameTimer;
81
+ private sendFlow;
82
+ private failStream;
83
+ private finishStream;
84
+ private markStreamFinished;
85
+ private stopPreviewStreams;
86
+ private failStreamsForTransport;
87
+ private releaseLease;
88
+ private expireToken;
89
+ private cleanupExpiredTokens;
90
+ private hasLeaseCapacity;
91
+ private clientBindingStillMatches;
92
+ private clientLeaseStillValid;
93
+ private sendControlRevoked;
94
+ private allocateUniqueToken;
95
+ private allocateUniqueRuntimeId;
96
+ private clearProxyRuntime;
97
+ private isCurrentProxyConnection;
98
+ private isDeviceMessage;
99
+ private rejectTransport;
100
+ private sendClient;
101
+ private sendProxy;
102
+ /** Relay-owned lifecycle barriers bypass public chaos routing to preserve main-WS ordering. */
103
+ private sendProxyInternal;
104
+ private sendRelayError;
105
+ }
106
+ export {};
107
+ //# sourceMappingURL=device-preview-bridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-preview-bridge.d.ts","sourceRoot":"","sources":["../src/device-preview-bridge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import type { RelayControlMessage } from "@dev-anywhere/shared";
2
+ import { PreviewRouteRegistry, type PreviewRouteRegistryOptions } from "./preview-route-registry.js";
3
+ export declare const devicePreviewResponseByRequest: {
4
+ readonly device_preview_capability_request: "device_preview_capability_response";
5
+ readonly device_preview_targets_request: "device_preview_targets_response";
6
+ readonly device_preview_create_request: "device_preview_create_response";
7
+ readonly device_preview_list_request: "device_preview_list_response";
8
+ readonly device_preview_rename_request: "device_preview_rename_response";
9
+ readonly device_preview_reconnect_request: "device_preview_reconnect_response";
10
+ readonly device_preview_close_request: "device_preview_close_response";
11
+ };
12
+ export type DevicePreviewRequestType = keyof typeof devicePreviewResponseByRequest;
13
+ export type DevicePreviewResponseType = (typeof devicePreviewResponseByRequest)[DevicePreviewRequestType];
14
+ export type DevicePreviewRequestMessage = Extract<RelayControlMessage, {
15
+ type: DevicePreviewRequestType;
16
+ }>;
17
+ export type DevicePreviewResponseMessage = Extract<RelayControlMessage, {
18
+ type: DevicePreviewResponseType;
19
+ }>;
20
+ export declare function isDevicePreviewRequestMessage(message: RelayControlMessage): message is DevicePreviewRequestMessage;
21
+ export declare function isDevicePreviewResponseMessage(message: RelayControlMessage): message is DevicePreviewResponseMessage;
22
+ export declare class DevicePreviewRouteRegistry extends PreviewRouteRegistry<DevicePreviewResponseType> {
23
+ constructor(options?: PreviewRouteRegistryOptions);
24
+ }
25
+ //# sourceMappingURL=device-preview-route-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device-preview-route-registry.d.ts","sourceRoot":"","sources":["../src/device-preview-route-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EACL,oBAAoB,EACpB,KAAK,2BAA2B,EACjC,MAAM,6BAA6B,CAAC;AAErC,eAAO,MAAM,8BAA8B;;;;;;;;CAQjC,CAAC;AAEX,MAAM,MAAM,wBAAwB,GAAG,MAAM,OAAO,8BAA8B,CAAC;AACnF,MAAM,MAAM,yBAAyB,GACnC,CAAC,OAAO,8BAA8B,CAAC,CAAC,wBAAwB,CAAC,CAAC;AACpE,MAAM,MAAM,2BAA2B,GAAG,OAAO,CAC/C,mBAAmB,EACnB;IAAE,IAAI,EAAE,wBAAwB,CAAA;CAAE,CACnC,CAAC;AACF,MAAM,MAAM,4BAA4B,GAAG,OAAO,CAChD,mBAAmB,EACnB;IAAE,IAAI,EAAE,yBAAyB,CAAA;CAAE,CACpC,CAAC;AAIF,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,mBAAmB,GAC3B,OAAO,IAAI,2BAA2B,CAExC;AAED,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,mBAAmB,GAC3B,OAAO,IAAI,4BAA4B,CAEzC;AAED,qBAAa,0BAA2B,SAAQ,oBAAoB,CAAC,yBAAyB,CAAC;gBACjF,OAAO,GAAE,2BAAgC;CAGtD"}
@@ -7,10 +7,12 @@ import type { VoiceProviderRegistry } from "../voice/provider.js";
7
7
  import type { RemoteFileBridge } from "../remote-file-bridge.js";
8
8
  import type { PtySnapshotRouteRegistry } from "../pty-snapshot-route-registry.js";
9
9
  import type { SessionHistoryRouteRegistry } from "../session-history-route-registry.js";
10
+ import { type WebPreviewRouteRegistry } from "../web-preview-route-registry.js";
11
+ import type { DevicePreviewBridge } from "../device-preview-bridge.js";
10
12
  interface ClientConnectionInfo {
11
13
  userAgent?: string;
12
14
  remoteAddress?: string;
13
15
  }
14
- export declare function handleClientConnection(ws: WebSocket, registry: RelayRegistry, logger: Logger, ptySnapshotRoutes: PtySnapshotRouteRegistry, sessionHistoryRoutes: SessionHistoryRouteRegistry, chaos?: RelayChaos, voiceConfigStore?: VoiceConfigStore, voiceProviders?: VoiceProviderRegistry, remoteFileBridge?: RemoteFileBridge, connectionInfo?: ClientConnectionInfo): void;
16
+ export declare function handleClientConnection(ws: WebSocket, registry: RelayRegistry, logger: Logger, ptySnapshotRoutes: PtySnapshotRouteRegistry, sessionHistoryRoutes: SessionHistoryRouteRegistry, webPreviewRoutes: WebPreviewRouteRegistry, devicePreviewBridge: DevicePreviewBridge, chaos?: RelayChaos, voiceConfigStore?: VoiceConfigStore, voiceProviders?: VoiceProviderRegistry, remoteFileBridge?: RemoteFileBridge, connectionInfo?: ClientConnectionInfo): void;
15
17
  export {};
16
18
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/handlers/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAU/B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAElE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAClF,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,sCAAsC,CAAC;AASxF,UAAU,oBAAoB;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AA6XD,wBAAgB,sBAAsB,CACpC,EAAE,EAAE,SAAS,EACb,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,MAAM,EACd,iBAAiB,EAAE,wBAAwB,EAC3C,oBAAoB,EAAE,2BAA2B,EACjD,KAAK,CAAC,EAAE,UAAU,EAClB,gBAAgB,CAAC,EAAE,gBAAgB,EACnC,cAAc,CAAC,EAAE,qBAAqB,EACtC,gBAAgB,CAAC,EAAE,gBAAgB,EACnC,cAAc,GAAE,oBAAyB,GACxC,IAAI,CA0eN"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/handlers/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAa/B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAElE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAClF,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,sCAAsC,CAAC;AACxF,OAAO,EAIL,KAAK,uBAAuB,EAC7B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAWvE,UAAU,oBAAoB;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AA+hBD,wBAAgB,sBAAsB,CACpC,EAAE,EAAE,SAAS,EACb,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,MAAM,EACd,iBAAiB,EAAE,wBAAwB,EAC3C,oBAAoB,EAAE,2BAA2B,EACjD,gBAAgB,EAAE,uBAAuB,EACzC,mBAAmB,EAAE,mBAAmB,EACxC,KAAK,CAAC,EAAE,UAAU,EAClB,gBAAgB,CAAC,EAAE,gBAAgB,EACnC,cAAc,CAAC,EAAE,qBAAqB,EACtC,gBAAgB,CAAC,EAAE,gBAAgB,EACnC,cAAc,GAAE,oBAAyB,GACxC,IAAI,CAipBN"}
@@ -5,5 +5,7 @@ import type { RelayChaos } from "../chaos.js";
5
5
  import type { RemoteFileBridge } from "../remote-file-bridge.js";
6
6
  import type { PtySnapshotRouteRegistry } from "../pty-snapshot-route-registry.js";
7
7
  import type { SessionHistoryRouteRegistry } from "../session-history-route-registry.js";
8
- export declare function handleProxyConnection(ws: WebSocket, registry: RelayRegistry, logger: Logger, ptySnapshotRoutes: PtySnapshotRouteRegistry, sessionHistoryRoutes: SessionHistoryRouteRegistry, chaos?: RelayChaos, remoteFileBridge?: RemoteFileBridge): void;
8
+ import { type WebPreviewRouteRegistry } from "../web-preview-route-registry.js";
9
+ import type { DevicePreviewBridge } from "../device-preview-bridge.js";
10
+ export declare function handleProxyConnection(ws: WebSocket, registry: RelayRegistry, logger: Logger, ptySnapshotRoutes: PtySnapshotRouteRegistry, sessionHistoryRoutes: SessionHistoryRouteRegistry, webPreviewRoutes: WebPreviewRouteRegistry, devicePreviewBridge: DevicePreviewBridge, chaos?: RelayChaos, remoteFileBridge?: RemoteFileBridge): void;
9
11
  //# sourceMappingURL=proxy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../src/handlers/proxy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAQ/B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAClF,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,sCAAsC,CAAC;AAmExF,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,SAAS,EACb,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,MAAM,EACd,iBAAiB,EAAE,wBAAwB,EAC3C,oBAAoB,EAAE,2BAA2B,EACjD,KAAK,CAAC,EAAE,UAAU,EAClB,gBAAgB,CAAC,EAAE,gBAAgB,GAClC,IAAI,CAyTN"}
1
+ {"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../src/handlers/proxy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAY/B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAClF,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,sCAAsC,CAAC;AACxF,OAAO,EAGL,KAAK,uBAAuB,EAC7B,MAAM,kCAAkC,CAAC;AAE1C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAqKvE,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,SAAS,EACb,QAAQ,EAAE,aAAa,EACvB,MAAM,EAAE,MAAM,EACd,iBAAiB,EAAE,wBAAwB,EAC3C,oBAAoB,EAAE,2BAA2B,EACjD,gBAAgB,EAAE,uBAAuB,EACzC,mBAAmB,EAAE,mBAAmB,EACxC,KAAK,CAAC,EAAE,UAAU,EAClB,gBAAgB,CAAC,EAAE,gBAAgB,GAClC,IAAI,CAyeN"}
@@ -1 +1 @@
1
- {"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../src/health.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGnD,UAAU,mBAAmB;IAC3B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,OAAO,CAAC;IACxD,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,OAAO,CAAC;IAEvD,cAAc,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;CACtC;AAQD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,aAAa,EAAE,OAAO,GAAE,mBAAwB,GAAG,MAAM,CAsG/F"}
1
+ {"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../src/health.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAKjC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGnD,UAAU,mBAAmB;IAC3B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,OAAO,CAAC;IACxD,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,OAAO,CAAC;IAEvD,cAAc,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;CACtC;AAQD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,aAAa,EAAE,OAAO,GAAE,mBAAwB,GAAG,MAAM,CAgH/F"}
package/dist/index.js CHANGED
@@ -3,7 +3,7 @@ import {
3
3
  RELAY_VERSION,
4
4
  createRelayServer,
5
5
  parseRelayChaosFromEnv
6
- } from "./chunk-XPCFNRZO.js";
6
+ } from "./chunk-JLLMBFAB.js";
7
7
 
8
8
  // ../../packages/shared/dist/logger.js
9
9
  import { lstatSync, mkdirSync, readdirSync, renameSync, statSync, symlinkSync, unlinkSync } from "fs";
@@ -0,0 +1,68 @@
1
+ import type { WebSocket } from "ws";
2
+ import type { PreviewScope } from "@dev-anywhere/shared";
3
+ type PreviewRouteRegistration = {
4
+ kind: "registered";
5
+ upstreamRequestId: string;
6
+ } | {
7
+ kind: "client_capacity_exceeded";
8
+ } | {
9
+ kind: "capacity_exceeded";
10
+ };
11
+ type PreviewRouteResolution<ResponseType extends string> = {
12
+ kind: "matched";
13
+ clientWs: WebSocket;
14
+ clientId: string;
15
+ clientRequestId: string;
16
+ scope: PreviewScope;
17
+ } | {
18
+ kind: "response_type_mismatch";
19
+ expectedResponseType: ResponseType;
20
+ } | {
21
+ kind: "stale_proxy";
22
+ } | {
23
+ kind: "tombstone";
24
+ } | {
25
+ kind: "unmatched";
26
+ };
27
+ export interface PreviewRouteRegistryOptions {
28
+ maxEntries?: number;
29
+ maxPendingPerClient?: number;
30
+ pendingTtlMs?: number;
31
+ tombstoneTtlMs?: number;
32
+ now?: () => number;
33
+ upstreamRequestIdFactory?: () => string;
34
+ }
35
+ interface PreviewRouteRegistryConfig {
36
+ label: string;
37
+ requestIdPrefix: string;
38
+ }
39
+ /**
40
+ * Correlates a request with the exact browser and Proxy sockets that carried it. Request IDs are
41
+ * rewritten before crossing the Relay so equal IDs from different browsers cannot collide.
42
+ * Completed, abandoned, and expired routes become short-lived tombstones so late responses cannot
43
+ * fall through to a broadcast path.
44
+ */
45
+ export declare class PreviewRouteRegistry<ResponseType extends string> {
46
+ private readonly config;
47
+ private readonly routes;
48
+ private readonly maxEntries;
49
+ private readonly maxPendingPerClient;
50
+ private readonly pendingTtlMs;
51
+ private readonly tombstoneTtlMs;
52
+ private readonly now;
53
+ private readonly upstreamRequestIdFactory;
54
+ private upstreamRequestSequence;
55
+ constructor(config: PreviewRouteRegistryConfig, options?: PreviewRouteRegistryOptions);
56
+ register(proxyId: string, clientRequestId: string, expectedResponseType: ResponseType, clientWs: WebSocket, proxyWs: WebSocket): PreviewRouteRegistration;
57
+ resolve(proxyId: string, upstreamRequestId: string, responseType: ResponseType, proxyWs: WebSocket): PreviewRouteResolution<ResponseType>;
58
+ abandonSocket(clientWs: WebSocket): void;
59
+ clearProxy(proxyId: string): void;
60
+ dispose(): void;
61
+ private createUniqueUpstreamRequestId;
62
+ private setTombstone;
63
+ private deleteRoute;
64
+ private evictOldestTombstone;
65
+ private pruneExpired;
66
+ }
67
+ export {};
68
+ //# sourceMappingURL=preview-route-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preview-route-registry.d.ts","sourceRoot":"","sources":["../src/preview-route-registry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AA6BzD,KAAK,wBAAwB,GACzB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAA;CAAE,GACjD;IAAE,IAAI,EAAE,0BAA0B,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,mBAAmB,CAAA;CAAE,CAAC;AAElC,KAAK,sBAAsB,CAAC,YAAY,SAAS,MAAM,IACnD;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE,SAAS,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,YAAY,CAAC;CACrB,GACD;IAAE,IAAI,EAAE,wBAAwB,CAAC;IAAC,oBAAoB,EAAE,YAAY,CAAA;CAAE,GACtE;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,GACvB;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GACrB;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,CAAC;AAE1B,MAAM,WAAW,2BAA2B;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,wBAAwB,CAAC,EAAE,MAAM,MAAM,CAAC;CACzC;AAED,UAAU,0BAA0B;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,CAAC;CACzB;AAYD;;;;;GAKG;AACH,qBAAa,oBAAoB,CAAC,YAAY,SAAS,MAAM;IAWzD,OAAO,CAAC,QAAQ,CAAC,MAAM;IAVzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0C;IACjE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAS;IAC7C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAe;IACxD,OAAO,CAAC,uBAAuB,CAAK;gBAGjB,MAAM,EAAE,0BAA0B,EACnD,OAAO,GAAE,2BAAgC;IAkB3C,QAAQ,CACN,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,MAAM,EACvB,oBAAoB,EAAE,YAAY,EAClC,QAAQ,EAAE,SAAS,EACnB,OAAO,EAAE,SAAS,GACjB,wBAAwB;IA4C3B,OAAO,CACL,OAAO,EAAE,MAAM,EACf,iBAAiB,EAAE,MAAM,EACzB,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,SAAS,GACjB,sBAAsB,CAAC,YAAY,CAAC;IAsBvC,aAAa,CAAC,QAAQ,EAAE,SAAS,GAAG,IAAI;IAUxC,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAMjC,OAAO,IAAI,IAAI;IAIf,OAAO,CAAC,6BAA6B;IAQrC,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,oBAAoB;IAW5B,OAAO,CAAC,YAAY;CAKrB"}
@@ -0,0 +1,13 @@
1
+ import type { WebSocket } from "ws";
2
+ import { z } from "zod";
3
+ declare const ProxyUpgradeBootstrapRequestSchema: z.ZodObject<{
4
+ type: z.ZodLiteral<"proxy_register">;
5
+ proxyId: z.ZodString;
6
+ name: z.ZodOptional<z.ZodString>;
7
+ proxyVersion: z.ZodLiteral<"0.8.1">;
8
+ }, z.core.$strict>;
9
+ type ProxyUpgradeBootstrapRequest = z.infer<typeof ProxyUpgradeBootstrapRequestSchema>;
10
+ export declare function parseProxyUpgradeBootstrapRequest(raw: string, relayVersion: string): ProxyUpgradeBootstrapRequest | null;
11
+ export declare function sendProxyUpgradeBootstrapResponse(ws: WebSocket, relayVersion: string): void;
12
+ export {};
13
+ //# sourceMappingURL=proxy-upgrade-bootstrap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy-upgrade-bootstrap.d.ts","sourceRoot":"","sources":["../src/proxy-upgrade-bootstrap.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,QAAA,MAAM,kCAAkC;;;;;kBAO7B,CAAC;AAEZ,KAAK,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kCAAkC,CAAC,CAAC;AAsBvF,wBAAgB,iCAAiC,CAC/C,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,GACnB,4BAA4B,GAAG,IAAI,CAYrC;AAED,wBAAgB,iCAAiC,CAAC,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAc3F"}
@@ -4,6 +4,7 @@ type ClientConnectionState = "registered" | "bound";
4
4
  type RemoveOfflineProxyResult = "removed" | "not_found" | "online";
5
5
  interface ClientBinding {
6
6
  proxyId: string;
7
+ bindingId: string;
7
8
  ws: WebSocket | null;
8
9
  connectionState: ClientConnectionState;
9
10
  }
@@ -22,7 +23,7 @@ export declare class RelayRegistry {
22
23
  private proxyStates;
23
24
  private clientBindings;
24
25
  private connectedClients;
25
- registerProxy(proxyId: string, ws: WebSocket, name?: string, version?: string): "new" | "reconnected";
26
+ registerProxy(proxyId: string, ws: WebSocket, version: string, name?: string): "new" | "reconnected";
26
27
  transitionProxy(proxyId: string, from: ProxyConnectionState, to: ProxyConnectionState): void;
27
28
  getProxyConnectionState(proxyId: string): ProxyConnectionState | undefined;
28
29
  getClientConnectionState(clientId: string): ClientConnectionState | undefined;
@@ -36,7 +37,7 @@ export declare class RelayRegistry {
36
37
  listProxiesWithName(): Array<{
37
38
  proxyId: string;
38
39
  name?: string;
39
- version?: string;
40
+ version: string;
40
41
  online: boolean;
41
42
  }>;
42
43
  getProxyName(proxyId: string): string | undefined;
@@ -44,11 +45,20 @@ export declare class RelayRegistry {
44
45
  setSessionsForProxy(proxyId: string, sessionIds: readonly string[]): void;
45
46
  getProxyForSession(sessionId: string): string | undefined;
46
47
  getSessionsForProxy(proxyId: string): string[];
47
- bindClientById(clientId: string, proxyId: string, ws: WebSocket): boolean;
48
- updateClientSocket(clientId: string, ws: WebSocket): void;
48
+ bindClientById(clientId: string, proxyId: string, ws: WebSocket): string | undefined;
49
+ restoreClientBinding(clientId: string, ws: WebSocket): {
50
+ proxyId: string;
51
+ bindingId: string;
52
+ } | undefined;
49
53
  unbindClientById(clientId: string): void;
50
54
  unbindClientSocket(clientId: string, ws: WebSocket): boolean;
51
55
  getClientBinding(clientId: string): ClientBinding | undefined;
56
+ isCurrentClientBinding(clientId: string | undefined, ws: WebSocket, scope: {
57
+ proxyId: string;
58
+ bindingId: string;
59
+ }): boolean;
60
+ private installClientBinding;
61
+ private clearSocketBinding;
52
62
  getClientsForProxy(proxyId: string): WebSocket[];
53
63
  countClients(): number;
54
64
  addClientWs(ws: WebSocket, metadata?: Partial<Omit<ClientConnectionMetadata, "connectedAt">> & {
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsC,KAAK,MAAM,EAAE,MAAM,WAAW,CAAC;AAK5E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAK9C,OAAO,EAAoB,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEtE,OAAO,EAA4B,KAAK,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AACzF,OAAO,EAA4B,KAAK,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAEzF,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAA+B,KAAK,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAM9F,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,WAAW,CAAC,EAAE,MAAM,CAAC;IAIrB,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAC7B,aAAa,CAAC,EAAE;QACd,MAAM,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;QACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IAC9C,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IAC9C,yBAAyB,CAAC,EAAE,yBAAyB,CAAC;IACtD,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;CAC/C;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,aAAa,CAAC;IACxB,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AA6BD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,GAAG,WAAW,CA4S1E"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsC,KAAK,MAAM,EAAE,MAAM,WAAW,CAAC;AAM5E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAK9C,OAAO,EAAoB,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEtE,OAAO,EAA4B,KAAK,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AACzF,OAAO,EAA4B,KAAK,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAEzF,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAA+B,KAAK,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAQ9F,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,WAAW,CAAC,EAAE,MAAM,CAAC;IAIrB,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAC7B,aAAa,CAAC,EAAE;QACd,MAAM,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;QACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IAC9C,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IAC9C,yBAAyB,CAAC,EAAE,yBAAyB,CAAC;IACtD,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;CAC/C;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,aAAa,CAAC;IACxB,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AA6BD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,GAAG,WAAW,CA0V1E"}
package/dist/server.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  createRelayServer
4
- } from "./chunk-XPCFNRZO.js";
4
+ } from "./chunk-JLLMBFAB.js";
5
5
  export {
6
6
  createRelayServer
7
7
  };
@@ -1 +1 @@
1
- {"version":3,"file":"web-app.d.ts","sourceRoot":"","sources":["../src/web-app.ts"],"names":[],"mappings":"AACA,OAAgB,EAAE,KAAK,OAAO,EAA+B,MAAM,SAAS,CAAC;AAG7E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AA2C1D,wBAAgB,WAAW,CACzB,GAAG,EAAE,OAAO,EACZ,OAAO,EAAE;IACP,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB,GACA,OAAO,CAuCT"}
1
+ {"version":3,"file":"web-app.d.ts","sourceRoot":"","sources":["../src/web-app.ts"],"names":[],"mappings":"AACA,OAAgB,EAAE,KAAK,OAAO,EAA+B,MAAM,SAAS,CAAC;AAG7E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AA4C1D,wBAAgB,WAAW,CACzB,GAAG,EAAE,OAAO,EACZ,OAAO,EAAE;IACP,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB,GACA,OAAO,CAuCT"}
@@ -0,0 +1,25 @@
1
+ import type { RelayControlMessage } from "@dev-anywhere/shared";
2
+ import { PreviewRouteRegistry, type PreviewRouteRegistryOptions } from "./preview-route-registry.js";
3
+ export declare const webPreviewResponseByRequest: {
4
+ readonly preview_capability_request: "preview_capability_response";
5
+ readonly preview_static_inspect_request: "preview_static_inspect_response";
6
+ readonly preview_create_request: "preview_create_response";
7
+ readonly preview_list_request: "preview_list_response";
8
+ readonly preview_rename_request: "preview_rename_response";
9
+ readonly preview_reconnect_request: "preview_reconnect_response";
10
+ readonly preview_close_request: "preview_close_response";
11
+ };
12
+ export type WebPreviewRequestType = keyof typeof webPreviewResponseByRequest;
13
+ export type WebPreviewResponseType = (typeof webPreviewResponseByRequest)[WebPreviewRequestType];
14
+ export type WebPreviewRequestMessage = Extract<RelayControlMessage, {
15
+ type: WebPreviewRequestType;
16
+ }>;
17
+ export type WebPreviewResponseMessage = Extract<RelayControlMessage, {
18
+ type: WebPreviewResponseType;
19
+ }>;
20
+ export declare function isWebPreviewRequestMessage(message: RelayControlMessage): message is WebPreviewRequestMessage;
21
+ export declare function isWebPreviewResponseMessage(message: RelayControlMessage): message is WebPreviewResponseMessage;
22
+ export declare class WebPreviewRouteRegistry extends PreviewRouteRegistry<WebPreviewResponseType> {
23
+ constructor(options?: PreviewRouteRegistryOptions);
24
+ }
25
+ //# sourceMappingURL=web-preview-route-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-preview-route-registry.d.ts","sourceRoot":"","sources":["../src/web-preview-route-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EACL,oBAAoB,EACpB,KAAK,2BAA2B,EACjC,MAAM,6BAA6B,CAAC;AAErC,eAAO,MAAM,2BAA2B;;;;;;;;CAQ9B,CAAC;AAEX,MAAM,MAAM,qBAAqB,GAAG,MAAM,OAAO,2BAA2B,CAAC;AAC7E,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,2BAA2B,CAAC,CAAC,qBAAqB,CAAC,CAAC;AACjG,MAAM,MAAM,wBAAwB,GAAG,OAAO,CAC5C,mBAAmB,EACnB;IAAE,IAAI,EAAE,qBAAqB,CAAA;CAAE,CAChC,CAAC;AACF,MAAM,MAAM,yBAAyB,GAAG,OAAO,CAC7C,mBAAmB,EACnB;IAAE,IAAI,EAAE,sBAAsB,CAAA;CAAE,CACjC,CAAC;AAIF,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,mBAAmB,GAC3B,OAAO,IAAI,wBAAwB,CAErC;AAED,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,mBAAmB,GAC3B,OAAO,IAAI,yBAAyB,CAEtC;AAED,qBAAa,uBAAwB,SAAQ,oBAAoB,CAAC,sBAAsB,CAAC;gBAC3E,OAAO,GAAE,2BAAgC;CAGtD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dev-anywhere/relay",
3
- "version": "0.8.1",
3
+ "version": "0.9.1",
4
4
  "description": "Relay server for DEV Anywhere — bridges local AI CLI proxies to remote web clients via WebSocket.",
5
5
  "keywords": [
6
6
  "claude-code",
@@ -57,7 +57,7 @@
57
57
  "@types/node": "^22.15.30",
58
58
  "@types/ws": "^8.18.1",
59
59
  "vitest": "^4.1.2",
60
- "@dev-anywhere/shared": "0.8.1"
60
+ "@dev-anywhere/shared": "0.9.1"
61
61
  },
62
62
  "scripts": {
63
63
  "build": "tsup && node scripts/copy-web-assets.mjs && rm -f tsconfig.build.tsbuildinfo && tsc -p tsconfig.build.json --emitDeclarationOnly --outDir dist",
@@ -1 +0,0 @@
1
- const e={};export{e as default};
@@ -1 +0,0 @@
1
- import{_ as Ke}from"./index-D5QXto0Q.js";var Je=(()=>{var j=import.meta.url;return(async function(ue={}){var $,n=ue,z,w,le=new Promise((e,r)=>{z=e,w=r}),ve=typeof window=="object",S=typeof importScripts=="function",W=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string"&&process.type!="renderer";if(W){const{createRequire:e}=await Ke(()=>import("./__vite-browser-external-BIHI7g3E.js"),[]);let r=import.meta.url;r.startsWith("data:")&&(r="/");var I=e(r)}var G=Object.assign({},n),l="";function me(e){return n.locateFile?n.locateFile(e,l):l+e}var N,b;if(W){var X=I("fs"),F=I("path");import.meta.url.startsWith("data:")||(l=F.dirname(I("url").fileURLToPath(import.meta.url))+"/"),b=e=>{e=T(e)?new URL(e):F.normalize(e);var r=X.readFileSync(e);return r},N=(e,r=!0)=>(e=T(e)?new URL(e):F.normalize(e),new Promise((t,a)=>{X.readFile(e,r?void 0:"utf8",(o,f)=>{o?a(o):t(r?f.buffer:f)})})),!n.thisProgram&&process.argv.length>1&&process.argv[1].replace(/\\/g,"/"),process.argv.slice(2)}else(ve||S)&&(S?l=self.location.href:typeof document<"u"&&document.currentScript&&(l=document.currentScript.src),j&&(l=j),l.startsWith("blob:")?l="":l=l.substr(0,l.replace(/[?#].*/,"").lastIndexOf("/")+1),S&&(b=e=>{var r=new XMLHttpRequest;return r.open("GET",e,!1),r.responseType="arraybuffer",r.send(null),new Uint8Array(r.response)}),N=e=>T(e)?new Promise((r,t)=>{var a=new XMLHttpRequest;a.open("GET",e,!0),a.responseType="arraybuffer",a.onload=()=>{if(a.status==200||a.status==0&&a.response){r(a.response);return}t(a.status)},a.onerror=t,a.send(null)}):fetch(e,{credentials:"same-origin"}).then(r=>r.ok?r.arrayBuffer():Promise.reject(new Error(r.status+" : "+r.url))));n.print||console.log.bind(console);var y=n.printErr||console.error.bind(console);Object.assign(n,G),G=null,n.arguments&&n.arguments,n.thisProgram&&n.thisProgram;var h=n.wasmBinary,E,K=!1,g,P,H,B,C,V,D;function Y(){var e=E.buffer;n.HEAP8=g=new Int8Array(e),n.HEAP16=H=new Int16Array(e),n.HEAPU8=P=new Uint8Array(e),n.HEAPU16=new Uint16Array(e),n.HEAP32=B=new Int32Array(e),n.HEAPU32=C=new Uint32Array(e),n.HEAPF32=V=new Float32Array(e),n.HEAPF64=D=new Float64Array(e)}var J=[],Q=[],Z=[];function de(){var e=n.preRun;e&&(typeof e=="function"&&(e=[e]),e.forEach(pe)),O(J)}function _e(){O(Q)}function ge(){var e=n.postRun;e&&(typeof e=="function"&&(e=[e]),e.forEach(Re)),O(Z)}function pe(e){J.unshift(e)}function ye(e){Q.unshift(e)}function Re(e){Z.unshift(e)}var m=0,R=null;function Ae(e){var r;m++,(r=n.monitorRunDependencies)==null||r.call(n,m)}function we(e){var t;if(m--,(t=n.monitorRunDependencies)==null||t.call(n,m),m==0&&R){var r=R;R=null,r()}}function p(e){var t;(t=n.onAbort)==null||t.call(n,e),e="Aborted("+e+")",y(e),K=!0,e+=". Build with -sASSERTIONS for more info.";var r=new WebAssembly.RuntimeError(e);throw w(r),r}var be="data:application/octet-stream;base64,",q=e=>e.startsWith(be),T=e=>e.startsWith("file://");function he(){if(n.locateFile){var e="fvad.wasm";return q(e)?e:me(e)}return new URL("/assets/fvad-DYxbW2my.wasm",import.meta.url).href}var M;function x(e){if(e==M&&h)return new Uint8Array(h);if(b)return b(e);throw"both async and sync fetching of the wasm failed"}function Ee(e){return h?Promise.resolve().then(()=>x(e)):N(e).then(r=>new Uint8Array(r),()=>x(e))}function ee(e,r,t){return Ee(e).then(a=>WebAssembly.instantiate(a,r)).then(t,a=>{y(`failed to asynchronously prepare wasm: ${a}`),p(a)})}function Pe(e,r,t,a){return!e&&typeof WebAssembly.instantiateStreaming=="function"&&!q(r)&&!T(r)&&!W&&typeof fetch=="function"?fetch(r,{credentials:"same-origin"}).then(o=>{var f=WebAssembly.instantiateStreaming(o,t);return f.then(a,function(i){return y(`wasm streaming compile failed: ${i}`),y("falling back to ArrayBuffer instantiation"),ee(r,t,a)})}):ee(r,t,a)}function Te(){return{a:Ge}}function Ue(){var e=Te();function r(a,o){return c=a.exports,E=c.c,Y(),ye(c.d),we(),c}Ae();function t(a){r(a.instance)}if(n.instantiateWasm)try{return n.instantiateWasm(e,r)}catch(a){y(`Module.instantiateWasm callback failed with error: ${a}`),w(a)}return M??(M=he()),Pe(h,M,e,t).catch(w),{}}var O=e=>{e.forEach(r=>r(n))};function ke(e,r="i8"){switch(r.endsWith("*")&&(r="*"),r){case"i1":return g[e];case"i8":return g[e];case"i16":return H[e>>1];case"i32":return B[e>>2];case"i64":p("to do getValue(i64) use WASM_BIGINT");case"float":return V[e>>2];case"double":return D[e>>3];case"*":return C[e>>2];default:p(`invalid type for getValue: ${r}`)}}n.noExitRuntime;function Se(e,r,t="i8"){switch(t.endsWith("*")&&(t="*"),t){case"i1":g[e]=r;break;case"i8":g[e]=r;break;case"i16":H[e>>1]=r;break;case"i32":B[e>>2]=r;break;case"i64":p("to do setValue(i64) use WASM_BIGINT");case"float":V[e>>2]=r;break;case"double":D[e>>3]=r;break;case"*":C[e>>2]=r;break;default:p(`invalid type for setValue: ${t}`)}}var We=e=>ae(e),Ie=()=>se(),re=typeof TextDecoder<"u"?new TextDecoder:void 0,Ne=(e,r=0,t=NaN)=>{for(var a=r+t,o=r;e[o]&&!(o>=a);)++o;if(o-r>16&&e.buffer&&re)return re.decode(e.subarray(r,o));for(var f="";r<o;){var i=e[r++];if(!(i&128)){f+=String.fromCharCode(i);continue}var s=e[r++]&63;if((i&224)==192){f+=String.fromCharCode((i&31)<<6|s);continue}var v=e[r++]&63;if((i&240)==224?i=(i&15)<<12|s<<6|v:i=(i&7)<<18|s<<12|v<<6|e[r++]&63,i<65536)f+=String.fromCharCode(i);else{var d=i-65536;f+=String.fromCharCode(55296|d>>10,56320|d&1023)}}return f},U=(e,r)=>e?Ne(P,e,r):"",Fe=(e,r,t,a)=>{p(`Assertion failed: ${U(e)}, at: `+[r?U(r):"unknown filename",t,a?U(a):"unknown function"])},He=()=>2147483648,Be=(e,r)=>Math.ceil(e/r)*r,Ce=e=>{var r=E.buffer,t=(e-r.byteLength+65535)/65536|0;try{return E.grow(t),Y(),1}catch{}},Ve=e=>{var r=P.length;e>>>=0;var t=He();if(e>t)return!1;for(var a=1;a<=4;a*=2){var o=r*(1+.2/a);o=Math.min(o,e+100663296);var f=Math.min(t,Be(Math.max(e,o),65536)),i=Ce(f);if(i)return!0}return!1},ne=e=>{var r=n["_"+e];return r},De=(e,r)=>{g.set(e,r)},Me=e=>{for(var r=0,t=0;t<e.length;++t){var a=e.charCodeAt(t);a<=127?r++:a<=2047?r+=2:a>=55296&&a<=57343?(r+=4,++t):r+=3}return r},Oe=(e,r,t,a)=>{if(!(a>0))return 0;for(var o=t,f=t+a-1,i=0;i<e.length;++i){var s=e.charCodeAt(i);if(s>=55296&&s<=57343){var v=e.charCodeAt(++i);s=65536+((s&1023)<<10)|v&1023}if(s<=127){if(t>=f)break;r[t++]=s}else if(s<=2047){if(t+1>=f)break;r[t++]=192|s>>6,r[t++]=128|s&63}else if(s<=65535){if(t+2>=f)break;r[t++]=224|s>>12,r[t++]=128|s>>6&63,r[t++]=128|s&63}else{if(t+3>=f)break;r[t++]=240|s>>18,r[t++]=128|s>>12&63,r[t++]=128|s>>6&63,r[t++]=128|s&63}}return r[t]=0,t-o},Le=(e,r,t)=>Oe(e,P,r,t),te=e=>ie(e),je=e=>{var r=Me(e)+1,t=te(r);return Le(e,t,r),t},$e=(e,r,t,a,o)=>{var f={string:u=>{var A=0;return u!=null&&u!==0&&(A=je(u)),A},array:u=>{var A=te(u.length);return De(u,A),A}};function i(u){return r==="string"?U(u):r==="boolean"?!!u:u}var s=ne(e),v=[],d=0;if(a)for(var _=0;_<a.length;_++){var ce=f[t[_]];ce?(d===0&&(d=Ie()),v[_]=ce(a[_])):v[_]=a[_]}var L=s(...v);function Xe(u){return d!==0&&We(d),i(u)}return L=Xe(L),L},ze=(e,r,t,a)=>{var o=!t||t.every(i=>i==="number"||i==="boolean"),f=r!=="string";return f&&o&&!a?ne(e):(...i)=>$e(e,r,t,i)},Ge={a:Fe,b:Ve},c=Ue();n._fvad_new=()=>(n._fvad_new=c.e)(),n._malloc=e=>(n._malloc=c.f)(e),n._fvad_reset=e=>(n._fvad_reset=c.g)(e),n._fvad_free=e=>(n._fvad_free=c.h)(e),n._free=e=>(n._free=c.i)(e),n._fvad_set_mode=(e,r)=>(n._fvad_set_mode=c.j)(e,r),n._fvad_set_sample_rate=(e,r)=>(n._fvad_set_sample_rate=c.k)(e,r),n._fvad_process=(e,r,t)=>(n._fvad_process=c.l)(e,r,t);var ae=e=>(ae=c.n)(e),ie=e=>(ie=c.o)(e),se=()=>(se=c.p)();n.cwrap=ze,n.setValue=Se,n.getValue=ke;var k,oe;R=function e(){k||fe(),k||(R=e)};function fe(){if(m>0||!oe&&(oe=1,de(),m>0))return;function e(){var r;k||(k=1,n.calledRun=1,!K&&(_e(),z(n),(r=n.onRuntimeInitialized)==null||r.call(n),ge()))}n.setStatus?(n.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>n.setStatus(""),1),e()},1)):e()}if(n.preInit)for(typeof n.preInit=="function"&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.pop()();return fe(),$=le,$})})();export{Je as default};