@tapflowio/relay 0.26.1 → 0.27.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/dist/RelayServer.d.ts +92 -0
- package/dist/RelayServer.d.ts.map +1 -1
- package/dist/RelayServer.js +352 -13
- package/dist/RelayServer.js.map +1 -1
- package/dist/SessionManager.d.ts +5 -3
- package/dist/SessionManager.d.ts.map +1 -1
- package/dist/SessionManager.js +3 -1
- package/dist/SessionManager.js.map +1 -1
- package/dist/api/builds.d.ts.map +1 -1
- package/dist/api/builds.js +13 -8
- package/dist/api/builds.js.map +1 -1
- package/dist/api/comments.d.ts.map +1 -1
- package/dist/api/comments.js +5 -7
- package/dist/api/comments.js.map +1 -1
- package/dist/api/invitations.d.ts.map +1 -1
- package/dist/api/invitations.js +3 -0
- package/dist/api/invitations.js.map +1 -1
- package/dist/api/profile.d.ts.map +1 -1
- package/dist/api/profile.js +28 -9
- package/dist/api/profile.js.map +1 -1
- package/dist/api/recordings.d.ts.map +1 -1
- package/dist/api/recordings.js +5 -6
- package/dist/api/recordings.js.map +1 -1
- package/dist/api/settings.d.ts.map +1 -1
- package/dist/api/settings.js +28 -9
- package/dist/api/settings.js.map +1 -1
- package/dist/lib/clientAddress.d.ts +12 -0
- package/dist/lib/clientAddress.d.ts.map +1 -1
- package/dist/lib/clientAddress.js +22 -0
- package/dist/lib/clientAddress.js.map +1 -1
- package/dist/lib/uploads.d.ts +13 -0
- package/dist/lib/uploads.d.ts.map +1 -1
- package/dist/lib/uploads.js +41 -0
- package/dist/lib/uploads.js.map +1 -1
- package/dist/lib/webhookTransport.d.ts +29 -0
- package/dist/lib/webhookTransport.d.ts.map +1 -0
- package/dist/lib/webhookTransport.js +86 -0
- package/dist/lib/webhookTransport.js.map +1 -0
- package/dist/lib/webhookUrl.d.ts +6 -0
- package/dist/lib/webhookUrl.d.ts.map +1 -1
- package/dist/lib/webhookUrl.js +50 -14
- package/dist/lib/webhookUrl.js.map +1 -1
- package/dist/lib/webhooks.d.ts +2 -10
- package/dist/lib/webhooks.d.ts.map +1 -1
- package/dist/lib/webhooks.js +8 -3
- package/dist/lib/webhooks.js.map +1 -1
- package/package.json +6 -6
- package/public/assets/{AppCenter-DZCsC2wa.js → AppCenter-CeLjUbnR.js} +7 -7
- package/public/assets/AppCenter-CeLjUbnR.js.br +0 -0
- package/public/assets/AppCenter-CeLjUbnR.js.gz +0 -0
- package/public/assets/Default-UB0Pa3lN.js +1 -0
- package/public/assets/Default-UB0Pa3lN.js.br +0 -0
- package/public/assets/Default-UB0Pa3lN.js.gz +0 -0
- package/public/assets/Invite-Dv3omu3x.js +1 -0
- package/public/assets/Invite-Dv3omu3x.js.br +0 -0
- package/public/assets/Invite-Dv3omu3x.js.gz +0 -0
- package/public/assets/{MacResources-B0DQ9ISE.js → MacResources-CY4-OdGt.js} +1 -1
- package/public/assets/MacResources-CY4-OdGt.js.br +0 -0
- package/public/assets/MacResources-CY4-OdGt.js.gz +0 -0
- package/public/assets/QASession-H5eRSwZv.js +150 -0
- package/public/assets/QASession-H5eRSwZv.js.br +0 -0
- package/public/assets/QASession-H5eRSwZv.js.gz +0 -0
- package/public/assets/ResetPassword-nFTigYt2.js +1 -0
- package/public/assets/ResetPassword-nFTigYt2.js.br +0 -0
- package/public/assets/ResetPassword-nFTigYt2.js.gz +0 -0
- package/public/assets/Setup-UmLtF2PF.js +1 -0
- package/public/assets/Setup-UmLtF2PF.js.br +0 -0
- package/public/assets/Setup-UmLtF2PF.js.gz +0 -0
- package/public/assets/Team-DW40kt3H.js +6 -0
- package/public/assets/Team-DW40kt3H.js.br +0 -0
- package/public/assets/Team-DW40kt3H.js.gz +0 -0
- package/public/assets/Tokens-B1a4ChJK.js +1 -0
- package/public/assets/Tokens-B1a4ChJK.js.br +0 -0
- package/public/assets/Tokens-B1a4ChJK.js.gz +0 -0
- package/public/assets/alert-dialog-aoqYdAwx.js +1 -0
- package/public/assets/alert-dialog-aoqYdAwx.js.br +0 -0
- package/public/assets/alert-dialog-aoqYdAwx.js.gz +0 -0
- package/public/assets/badge-DNaS0Mu3.js +1 -0
- package/public/assets/badge-DNaS0Mu3.js.br +0 -0
- package/public/assets/badge-DNaS0Mu3.js.gz +0 -0
- package/public/assets/{build-format-fzt-JrUX.js → build-format-DF5aFcag.js} +3 -3
- package/public/assets/build-format-DF5aFcag.js.br +0 -0
- package/public/assets/build-format-DF5aFcag.js.gz +0 -0
- package/public/assets/{dialog-DQkbaw8h.js → dialog-DE2WUMuX.js} +5 -5
- package/public/assets/dialog-DE2WUMuX.js.br +0 -0
- package/public/assets/dialog-DE2WUMuX.js.gz +0 -0
- package/public/assets/field-hint-Csb40Gzp.js +1 -0
- package/public/assets/field-hint-Csb40Gzp.js.br +2 -0
- package/public/assets/field-hint-Csb40Gzp.js.gz +0 -0
- package/public/assets/index-BbCkTtjO.css +1 -0
- package/public/assets/index-BbCkTtjO.css.br +0 -0
- package/public/assets/index-BbCkTtjO.css.gz +0 -0
- package/public/assets/index-DSW9h8XX.js +218 -0
- package/public/assets/index-DSW9h8XX.js.br +0 -0
- package/public/assets/index-DSW9h8XX.js.gz +0 -0
- package/public/assets/list-view-C0w97ltJ.js +1 -0
- package/public/assets/list-view-C0w97ltJ.js.br +0 -0
- package/public/assets/list-view-C0w97ltJ.js.gz +0 -0
- package/public/assets/{pencil-BJcOp3oN.js → pencil-BN18R4oa.js} +2 -2
- package/public/assets/pencil-BN18R4oa.js.br +0 -0
- package/public/assets/pencil-BN18R4oa.js.gz +0 -0
- package/public/assets/resource-health-Bi20EUDs.js +1 -0
- package/public/assets/resource-health-Bi20EUDs.js.br +0 -0
- package/public/assets/resource-health-Bi20EUDs.js.gz +0 -0
- package/public/assets/{trash-DhBxh6H7.js → trash-D1l1Fm-Z.js} +3 -3
- package/public/assets/trash-D1l1Fm-Z.js.br +0 -0
- package/public/assets/trash-D1l1Fm-Z.js.gz +0 -0
- package/public/index.html +2 -2
- package/public/index.html.br +0 -0
- package/public/index.html.gz +0 -0
- package/public/assets/AppCenter-DZCsC2wa.js.br +0 -0
- package/public/assets/AppCenter-DZCsC2wa.js.gz +0 -0
- package/public/assets/Default-xD9Fmd5X.js +0 -1
- package/public/assets/Default-xD9Fmd5X.js.br +0 -0
- package/public/assets/Default-xD9Fmd5X.js.gz +0 -0
- package/public/assets/Invite-29Erwv8j.js +0 -1
- package/public/assets/Invite-29Erwv8j.js.br +0 -0
- package/public/assets/Invite-29Erwv8j.js.gz +0 -0
- package/public/assets/MacResources-B0DQ9ISE.js.br +0 -0
- package/public/assets/MacResources-B0DQ9ISE.js.gz +0 -0
- package/public/assets/QASession-D-n6PXuD.js +0 -150
- package/public/assets/QASession-D-n6PXuD.js.br +0 -0
- package/public/assets/QASession-D-n6PXuD.js.gz +0 -0
- package/public/assets/ResetPassword-BnPIwTYH.js +0 -1
- package/public/assets/ResetPassword-BnPIwTYH.js.br +0 -0
- package/public/assets/ResetPassword-BnPIwTYH.js.gz +0 -0
- package/public/assets/Setup-DmUGFblg.js +0 -1
- package/public/assets/Setup-DmUGFblg.js.br +0 -0
- package/public/assets/Setup-DmUGFblg.js.gz +0 -0
- package/public/assets/Team-BpvRgFfZ.js +0 -6
- package/public/assets/Team-BpvRgFfZ.js.br +0 -0
- package/public/assets/Team-BpvRgFfZ.js.gz +0 -0
- package/public/assets/Tokens-x6BtCcL7.js +0 -1
- package/public/assets/Tokens-x6BtCcL7.js.br +0 -0
- package/public/assets/Tokens-x6BtCcL7.js.gz +0 -0
- package/public/assets/alert-dialog-C8wDimW-.js +0 -1
- package/public/assets/alert-dialog-C8wDimW-.js.br +0 -0
- package/public/assets/alert-dialog-C8wDimW-.js.gz +0 -0
- package/public/assets/badge-CWVbeuH3.js +0 -1
- package/public/assets/badge-CWVbeuH3.js.br +0 -0
- package/public/assets/badge-CWVbeuH3.js.gz +0 -0
- package/public/assets/build-format-fzt-JrUX.js.br +0 -0
- package/public/assets/build-format-fzt-JrUX.js.gz +0 -0
- package/public/assets/dialog-DQkbaw8h.js.br +0 -0
- package/public/assets/dialog-DQkbaw8h.js.gz +0 -0
- package/public/assets/index-C1Fo8g_c.js +0 -218
- package/public/assets/index-C1Fo8g_c.js.br +0 -0
- package/public/assets/index-C1Fo8g_c.js.gz +0 -0
- package/public/assets/index-C2F1AgwB.css +0 -1
- package/public/assets/index-C2F1AgwB.css.br +0 -0
- package/public/assets/index-C2F1AgwB.css.gz +0 -0
- package/public/assets/list-view-DxI397-H.js +0 -1
- package/public/assets/list-view-DxI397-H.js.br +0 -0
- package/public/assets/list-view-DxI397-H.js.gz +0 -0
- package/public/assets/pencil-BJcOp3oN.js.br +0 -0
- package/public/assets/pencil-BJcOp3oN.js.gz +0 -0
- package/public/assets/resource-health-Cq3gqqVd.js +0 -1
- package/public/assets/resource-health-Cq3gqqVd.js.br +0 -0
- package/public/assets/resource-health-Cq3gqqVd.js.gz +0 -0
- package/public/assets/trash-DhBxh6H7.js.br +0 -0
- package/public/assets/trash-DhBxh6H7.js.gz +0 -0
package/dist/RelayServer.d.ts
CHANGED
|
@@ -64,6 +64,15 @@ export declare class RelayServer {
|
|
|
64
64
|
private purgeBuildsTimer;
|
|
65
65
|
private flushResourcesTimer;
|
|
66
66
|
private heartbeatTimer;
|
|
67
|
+
/** When the last heartbeat sweep ran, by the same clock `isAlive` judges with. */
|
|
68
|
+
private lastSweepAt;
|
|
69
|
+
/** Names agents give at registration, kept apart from the session map so an agent with no sessions
|
|
70
|
+
* can still be named when its socket goes. */
|
|
71
|
+
private agentNames;
|
|
72
|
+
private releaseStallWatch;
|
|
73
|
+
/** Agent sockets whose close was already explained — ended by a sweep, or replaced by the same agent
|
|
74
|
+
* registering again — so the close handler does not log them as a fresh drop. */
|
|
75
|
+
private explainedCloses;
|
|
67
76
|
/**
|
|
68
77
|
* When each socket last answered a ping. WeakMap → no manual cleanup on close (GC handles it).
|
|
69
78
|
*
|
|
@@ -128,14 +137,51 @@ export declare class RelayServer {
|
|
|
128
137
|
private readonly backpressureBytes;
|
|
129
138
|
private readonly screenshotTimeoutMs;
|
|
130
139
|
private readonly agentGraceMs;
|
|
140
|
+
/** How long a tracked boot lives without an answer. An option so tests can shrink the
|
|
141
|
+
* 180s horizon; production always takes the default. */
|
|
142
|
+
private readonly pendingBootTtlMs;
|
|
131
143
|
private readonly corsAllowed;
|
|
132
144
|
private warnedProxyMisconfig;
|
|
145
|
+
private warnedTrustedProxyWithoutXff;
|
|
133
146
|
/** Agent identities already warned about a missing `build-download`. See `warnLegacyInstaller`. */
|
|
134
147
|
private readonly warnedLegacyInstaller;
|
|
135
148
|
private readonly buildTickets;
|
|
136
149
|
private pendingScreenshots;
|
|
137
150
|
private readonly uiTreeTimeoutMs;
|
|
138
151
|
private pendingUITrees;
|
|
152
|
+
/**
|
|
153
|
+
* Who asked for each correlated `device:shutdown` still waiting on its agent (#567). The agent's answer
|
|
154
|
+
* goes to the session's `browserSocket`, and a caller that never joined — an MCP client shutting down a
|
|
155
|
+
* session nobody holds, which `mayShutDown` permits — has no socket there, so it waited out its 30s for a
|
|
156
|
+
* shutdown that had happened. Keyed by session **and** id, because the id is chosen by the client and
|
|
157
|
+
* would alone let one session's answer reach another session's caller.
|
|
158
|
+
*
|
|
159
|
+
* **Settled when the session is removed, never when the agent socket drops — the opposite of a boot.**
|
|
160
|
+
* Both agents reconnect without restarting, and a shutdown that finishes after the reconnect is answered
|
|
161
|
+
* on the new socket, so an agent going away or being rebound is not evidence that the answer is lost.
|
|
162
|
+
* For a boot it is (#885): the binding a boot creates is exactly what a rebind loses. Folding the two
|
|
163
|
+
* into one rule would tell a caller its shutdown failed for a device that then powered off.
|
|
164
|
+
*/
|
|
165
|
+
private readonly shutdownRequesters;
|
|
166
|
+
/**
|
|
167
|
+
* In-flight `device:boot` requests, keyed by session and correlator (#885).
|
|
168
|
+
*
|
|
169
|
+
* The relay is the only layer that knows which agent socket each boot was actually dispatched
|
|
170
|
+
* to, so it owns settling the ones a rebind strands. The client cannot tell "issued before the
|
|
171
|
+
* rebound" from "delivered to the old agent", which is why the previous client-side settle on
|
|
172
|
+
* `session:rebound` answered boots the new agent was already handling. Entries record the
|
|
173
|
+
* concrete agent socket from the `device:boot` dispatch, so a rebind invalidates only the boots
|
|
174
|
+
* tied to the replaced socket and leaves a boot dispatched to the new socket alone.
|
|
175
|
+
*
|
|
176
|
+
* Cleared when a correlated `device:ready` or `device:boot-error` arrives, when the boot is
|
|
177
|
+
* invalidated at rebind, when its session is forgotten or evicted — and by its own expiry
|
|
178
|
+
* (`PENDING_BOOT_TTL_MS`) when none of those happen first, so a live agent that never answers
|
|
179
|
+
* cannot pin the entry past every caller that could have waited on it. An absent `requestId`
|
|
180
|
+
* answers no request (protocol/AGENTS.md 「Lifecycle correlation」), so id-less replies clear
|
|
181
|
+
* nothing. A leftover entry is harmless: its id names no waiter, so both clients and the
|
|
182
|
+
* dashboard drop the synthetic error it would produce.
|
|
183
|
+
*/
|
|
184
|
+
private readonly pendingBoots;
|
|
139
185
|
constructor(options: {
|
|
140
186
|
port: number;
|
|
141
187
|
publicDir?: string;
|
|
@@ -151,6 +197,7 @@ export declare class RelayServer {
|
|
|
151
197
|
key: string;
|
|
152
198
|
};
|
|
153
199
|
agentGraceMs?: number;
|
|
200
|
+
pendingBootTtlMs?: number;
|
|
154
201
|
tunnel?: TunnelRuntime;
|
|
155
202
|
tunnelPort?: number;
|
|
156
203
|
});
|
|
@@ -175,6 +222,10 @@ export declare class RelayServer {
|
|
|
175
222
|
*/
|
|
176
223
|
private warnOrphanedAgentTokens;
|
|
177
224
|
private runHeartbeat;
|
|
225
|
+
/** A sweep that runs late means this process was held, or the machine slept: the pongs it judges were
|
|
226
|
+
* never read, so its terminations say nothing about the clients. Same clock as `isAlive`. */
|
|
227
|
+
private noteLateSweep;
|
|
228
|
+
private pongAgeSeconds;
|
|
178
229
|
/**
|
|
179
230
|
* Injected into the handlers whose write can take access away — member update and removal, token
|
|
180
231
|
* revocation, a password reset or change — and called after the write commits. The sweep re-derives
|
|
@@ -265,6 +316,12 @@ export declare class RelayServer {
|
|
|
265
316
|
*/
|
|
266
317
|
private networkStateRequester;
|
|
267
318
|
private remoteAddressOf;
|
|
319
|
+
/**
|
|
320
|
+
* Called on both doors — the WebSocket upgrade and every HTTP request — since `auth/init` and the logs
|
|
321
|
+
* route decide locality on the HTTP side. Not on the tunnel listener, where every request is remote
|
|
322
|
+
* whatever it carries.
|
|
323
|
+
*/
|
|
324
|
+
private warnTrustedProxyWithoutXffOnce;
|
|
268
325
|
private warnProxyMisconfigOnce;
|
|
269
326
|
private handleConnection;
|
|
270
327
|
/**
|
|
@@ -324,6 +381,15 @@ export declare class RelayServer {
|
|
|
324
381
|
* Messages the relay merely *forwards* do not use this: they are re-serialised unchanged, so
|
|
325
382
|
* they keep their inbound type and there is nothing new to check.
|
|
326
383
|
*/
|
|
384
|
+
private rememberShutdownRequester;
|
|
385
|
+
/** Hands the agent's answer to whoever asked for it, when that is not the holder — who already has it. */
|
|
386
|
+
private answerShutdownRequester;
|
|
387
|
+
/**
|
|
388
|
+
* The session is being removed, so an answer from its agent — if one ever comes — is dropped at
|
|
389
|
+
* `sessions.get`. `message` null settles in silence; otherwise a caller that never joined is told.
|
|
390
|
+
*/
|
|
391
|
+
private settleShutdownRequesters;
|
|
392
|
+
private forgetShutdownRequesters;
|
|
327
393
|
private sendTo;
|
|
328
394
|
/**
|
|
329
395
|
* Settle every in-flight screenshot / UI-tree request belonging to these sessions. Both callers
|
|
@@ -332,6 +398,32 @@ export declare class RelayServer {
|
|
|
332
398
|
* timeout, minutes later, having told the caller nothing in between.
|
|
333
399
|
*/
|
|
334
400
|
private rejectPending;
|
|
401
|
+
private bootKey;
|
|
402
|
+
/** Record a boot against the agent socket it was dispatched to. The door guarantees both ids. */
|
|
403
|
+
private rememberBoot;
|
|
404
|
+
/** The one way an entry leaves: every removal path funnels through here so no timer survives it. */
|
|
405
|
+
private forgetBoot;
|
|
406
|
+
/**
|
|
407
|
+
* Drop the tracked boot a correlated reply answers. The key needs no live session: an agent
|
|
408
|
+
* answering after its session was removed still answers that request. An absent `requestId`
|
|
409
|
+
* is not the answer to anything, so it drops nothing.
|
|
410
|
+
*/
|
|
411
|
+
private settleBoot;
|
|
412
|
+
/**
|
|
413
|
+
* Answer the tracked boots tied to a replaced agent socket (#885). Called after the
|
|
414
|
+
* `session:rebound` frames are sent, so the client records `needsReboot` first and the error
|
|
415
|
+
* below is classified with the cause attached. Boots dispatched to any other socket — in
|
|
416
|
+
* particular to the new agent after the rebind — are left pending.
|
|
417
|
+
*/
|
|
418
|
+
private invalidateBootsFor;
|
|
419
|
+
/**
|
|
420
|
+
* Silently drop the tracked boots of sessions that no longer exist. Their callers were already
|
|
421
|
+
* settled with the better diagnosis (`session:terminated`), so answering as well would send a
|
|
422
|
+
* second failure for the same request. Scoped to the evicted sessions rather than the socket:
|
|
423
|
+
* rebound sessions have already moved off it, and their entries are `invalidateBootsFor`'s to
|
|
424
|
+
* answer, not this one's to drop.
|
|
425
|
+
*/
|
|
426
|
+
private forgetEvictedBoots;
|
|
335
427
|
/**
|
|
336
428
|
* The agent's socket went away. Keep its sessions and wait for that agent to come back, instead
|
|
337
429
|
* of ending them here — a restarting agent registers about a second later, and until #426 stage 3
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RelayServer.d.ts","sourceRoot":"","sources":["../src/RelayServer.ts"],"names":[],"mappings":"AAuBA,OAAO,EAA4D,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"RelayServer.d.ts","sourceRoot":"","sources":["../src/RelayServer.ts"],"names":[],"mappings":"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"}
|