@tapflowio/relay 0.26.0 → 0.27.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.
- package/dist/RelayServer.d.ts +81 -3
- package/dist/RelayServer.d.ts.map +1 -1
- package/dist/RelayServer.js +278 -17
- 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/auth.d.ts +2 -1
- package/dist/api/auth.d.ts.map +1 -1
- package/dist/api/auth.js +1 -1
- package/dist/api/auth.js.map +1 -1
- package/dist/api/passwordReset.d.ts +2 -1
- package/dist/api/passwordReset.d.ts.map +1 -1
- package/dist/api/passwordReset.js +1 -1
- package/dist/api/passwordReset.js.map +1 -1
- package/dist/api/team.d.ts +3 -2
- package/dist/api/team.d.ts.map +1 -1
- package/dist/api/team.js +2 -2
- package/dist/api/team.js.map +1 -1
- package/dist/api/tokens.d.ts +2 -1
- package/dist/api/tokens.d.ts.map +1 -1
- package/dist/api/tokens.js +1 -1
- package/dist/api/tokens.js.map +1 -1
- package/dist/lib/connectionAuth.d.ts +29 -0
- package/dist/lib/connectionAuth.d.ts.map +1 -1
- package/dist/lib/connectionAuth.js +15 -0
- package/dist/lib/connectionAuth.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-BMdYtQbV.js} +7 -7
- package/public/assets/AppCenter-BMdYtQbV.js.br +0 -0
- package/public/assets/AppCenter-BMdYtQbV.js.gz +0 -0
- package/public/assets/Default-0DHHVGaN.js +1 -0
- package/public/assets/Default-0DHHVGaN.js.br +0 -0
- package/public/assets/Default-0DHHVGaN.js.gz +0 -0
- package/public/assets/Invite-C0ZB_HiU.js +1 -0
- package/public/assets/Invite-C0ZB_HiU.js.br +0 -0
- package/public/assets/Invite-C0ZB_HiU.js.gz +0 -0
- package/public/assets/{MacResources-B0DQ9ISE.js → MacResources-DmY5pRV2.js} +1 -1
- package/public/assets/MacResources-DmY5pRV2.js.br +0 -0
- package/public/assets/MacResources-DmY5pRV2.js.gz +0 -0
- package/public/assets/QASession-2QogWEX7.js +150 -0
- package/public/assets/QASession-2QogWEX7.js.br +0 -0
- package/public/assets/QASession-2QogWEX7.js.gz +0 -0
- package/public/assets/ResetPassword-jNRuertx.js +1 -0
- package/public/assets/ResetPassword-jNRuertx.js.br +0 -0
- package/public/assets/ResetPassword-jNRuertx.js.gz +0 -0
- package/public/assets/Setup-CF_FN9Dt.js +1 -0
- package/public/assets/Setup-CF_FN9Dt.js.br +0 -0
- package/public/assets/Setup-CF_FN9Dt.js.gz +0 -0
- package/public/assets/Team-BbiyOGau.js +6 -0
- package/public/assets/Team-BbiyOGau.js.br +0 -0
- package/public/assets/Team-BbiyOGau.js.gz +0 -0
- package/public/assets/Tokens-CZo4sPTx.js +1 -0
- package/public/assets/Tokens-CZo4sPTx.js.br +0 -0
- package/public/assets/Tokens-CZo4sPTx.js.gz +0 -0
- package/public/assets/alert-dialog-DFz8G_zu.js +1 -0
- package/public/assets/alert-dialog-DFz8G_zu.js.br +0 -0
- package/public/assets/alert-dialog-DFz8G_zu.js.gz +0 -0
- package/public/assets/badge-B3vaBVIQ.js +1 -0
- package/public/assets/badge-B3vaBVIQ.js.br +0 -0
- package/public/assets/badge-B3vaBVIQ.js.gz +0 -0
- package/public/assets/{build-format-fzt-JrUX.js → build-format-dbQPU3A4.js} +3 -3
- package/public/assets/build-format-dbQPU3A4.js.br +0 -0
- package/public/assets/build-format-dbQPU3A4.js.gz +0 -0
- package/public/assets/{dialog-DQkbaw8h.js → dialog-DeBPk-I3.js} +5 -5
- package/public/assets/dialog-DeBPk-I3.js.br +0 -0
- package/public/assets/dialog-DeBPk-I3.js.gz +0 -0
- package/public/assets/field-hint-CMKmbVpy.js +1 -0
- package/public/assets/field-hint-CMKmbVpy.js.br +0 -0
- package/public/assets/field-hint-CMKmbVpy.js.gz +0 -0
- package/public/assets/index-B4w4Lh3e.js +218 -0
- package/public/assets/index-B4w4Lh3e.js.br +0 -0
- package/public/assets/index-B4w4Lh3e.js.gz +0 -0
- package/public/assets/index-CDWu0GQL.css +1 -0
- package/public/assets/index-CDWu0GQL.css.br +0 -0
- package/public/assets/index-CDWu0GQL.css.gz +0 -0
- package/public/assets/list-view-BvINA5t4.js +1 -0
- package/public/assets/list-view-BvINA5t4.js.br +0 -0
- package/public/assets/list-view-BvINA5t4.js.gz +0 -0
- package/public/assets/{pencil-BJcOp3oN.js → pencil-CycAOoC_.js} +2 -2
- package/public/assets/pencil-CycAOoC_.js.br +0 -0
- package/public/assets/pencil-CycAOoC_.js.gz +0 -0
- package/public/assets/resource-health-C1qSG3MK.js +1 -0
- package/public/assets/resource-health-C1qSG3MK.js.br +0 -0
- package/public/assets/resource-health-C1qSG3MK.js.gz +0 -0
- package/public/assets/{trash-DhBxh6H7.js → trash-BXQnOI5U.js} +3 -3
- package/public/assets/trash-BXQnOI5U.js.br +0 -0
- package/public/assets/trash-BXQnOI5U.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
|
@@ -128,6 +128,9 @@ export declare class RelayServer {
|
|
|
128
128
|
private readonly backpressureBytes;
|
|
129
129
|
private readonly screenshotTimeoutMs;
|
|
130
130
|
private readonly agentGraceMs;
|
|
131
|
+
/** How long a tracked boot lives without an answer. An option so tests can shrink the
|
|
132
|
+
* 180s horizon; production always takes the default. */
|
|
133
|
+
private readonly pendingBootTtlMs;
|
|
131
134
|
private readonly corsAllowed;
|
|
132
135
|
private warnedProxyMisconfig;
|
|
133
136
|
/** Agent identities already warned about a missing `build-download`. See `warnLegacyInstaller`. */
|
|
@@ -136,6 +139,39 @@ export declare class RelayServer {
|
|
|
136
139
|
private pendingScreenshots;
|
|
137
140
|
private readonly uiTreeTimeoutMs;
|
|
138
141
|
private pendingUITrees;
|
|
142
|
+
/**
|
|
143
|
+
* Who asked for each correlated `device:shutdown` still waiting on its agent (#567). The agent's answer
|
|
144
|
+
* goes to the session's `browserSocket`, and a caller that never joined — an MCP client shutting down a
|
|
145
|
+
* session nobody holds, which `mayShutDown` permits — has no socket there, so it waited out its 30s for a
|
|
146
|
+
* shutdown that had happened. Keyed by session **and** id, because the id is chosen by the client and
|
|
147
|
+
* would alone let one session's answer reach another session's caller.
|
|
148
|
+
*
|
|
149
|
+
* **Settled when the session is removed, never when the agent socket drops — the opposite of a boot.**
|
|
150
|
+
* Both agents reconnect without restarting, and a shutdown that finishes after the reconnect is answered
|
|
151
|
+
* on the new socket, so an agent going away or being rebound is not evidence that the answer is lost.
|
|
152
|
+
* For a boot it is (#885): the binding a boot creates is exactly what a rebind loses. Folding the two
|
|
153
|
+
* into one rule would tell a caller its shutdown failed for a device that then powered off.
|
|
154
|
+
*/
|
|
155
|
+
private readonly shutdownRequesters;
|
|
156
|
+
/**
|
|
157
|
+
* In-flight `device:boot` requests, keyed by session and correlator (#885).
|
|
158
|
+
*
|
|
159
|
+
* The relay is the only layer that knows which agent socket each boot was actually dispatched
|
|
160
|
+
* to, so it owns settling the ones a rebind strands. The client cannot tell "issued before the
|
|
161
|
+
* rebound" from "delivered to the old agent", which is why the previous client-side settle on
|
|
162
|
+
* `session:rebound` answered boots the new agent was already handling. Entries record the
|
|
163
|
+
* concrete agent socket from the `device:boot` dispatch, so a rebind invalidates only the boots
|
|
164
|
+
* tied to the replaced socket and leaves a boot dispatched to the new socket alone.
|
|
165
|
+
*
|
|
166
|
+
* Cleared when a correlated `device:ready` or `device:boot-error` arrives, when the boot is
|
|
167
|
+
* invalidated at rebind, when its session is forgotten or evicted — and by its own expiry
|
|
168
|
+
* (`PENDING_BOOT_TTL_MS`) when none of those happen first, so a live agent that never answers
|
|
169
|
+
* cannot pin the entry past every caller that could have waited on it. An absent `requestId`
|
|
170
|
+
* answers no request (protocol/AGENTS.md 「Lifecycle correlation」), so id-less replies clear
|
|
171
|
+
* nothing. A leftover entry is harmless: its id names no waiter, so both clients and the
|
|
172
|
+
* dashboard drop the synthetic error it would produce.
|
|
173
|
+
*/
|
|
174
|
+
private readonly pendingBoots;
|
|
139
175
|
constructor(options: {
|
|
140
176
|
port: number;
|
|
141
177
|
publicDir?: string;
|
|
@@ -151,6 +187,7 @@ export declare class RelayServer {
|
|
|
151
187
|
key: string;
|
|
152
188
|
};
|
|
153
189
|
agentGraceMs?: number;
|
|
190
|
+
pendingBootTtlMs?: number;
|
|
154
191
|
tunnel?: TunnelRuntime;
|
|
155
192
|
tunnelPort?: number;
|
|
156
193
|
});
|
|
@@ -177,9 +214,15 @@ export declare class RelayServer {
|
|
|
177
214
|
private runHeartbeat;
|
|
178
215
|
/**
|
|
179
216
|
* Injected into the handlers whose write can take access away — member update and removal, token
|
|
180
|
-
* revocation, a password reset or change — and called after the write commits.
|
|
181
|
-
*
|
|
182
|
-
*
|
|
217
|
+
* revocation, a password reset or change — and called after the write commits. The sweep re-derives
|
|
218
|
+
* every socket's standing from the database, so when the database answers, no handler has to know which
|
|
219
|
+
* sockets its change affects.
|
|
220
|
+
*
|
|
221
|
+
* `affected` names the credential the write just reduced (`AuthChange`), and matters only when a lookup
|
|
222
|
+
* fails: the sockets resting on that credential are closed anyway (fail closed), because the one thing
|
|
223
|
+
* known for certain is that it just went down. Scoped to what the write touched, so revoking an unused
|
|
224
|
+
* CI token cannot take down the owner's agents and every session running on them. Every other socket is
|
|
225
|
+
* left alone as before.
|
|
183
226
|
*/
|
|
184
227
|
private readonly onAuthChanged;
|
|
185
228
|
private revalidateSockets;
|
|
@@ -318,6 +361,15 @@ export declare class RelayServer {
|
|
|
318
361
|
* Messages the relay merely *forwards* do not use this: they are re-serialised unchanged, so
|
|
319
362
|
* they keep their inbound type and there is nothing new to check.
|
|
320
363
|
*/
|
|
364
|
+
private rememberShutdownRequester;
|
|
365
|
+
/** Hands the agent's answer to whoever asked for it, when that is not the holder — who already has it. */
|
|
366
|
+
private answerShutdownRequester;
|
|
367
|
+
/**
|
|
368
|
+
* The session is being removed, so an answer from its agent — if one ever comes — is dropped at
|
|
369
|
+
* `sessions.get`. `message` null settles in silence; otherwise a caller that never joined is told.
|
|
370
|
+
*/
|
|
371
|
+
private settleShutdownRequesters;
|
|
372
|
+
private forgetShutdownRequesters;
|
|
321
373
|
private sendTo;
|
|
322
374
|
/**
|
|
323
375
|
* Settle every in-flight screenshot / UI-tree request belonging to these sessions. Both callers
|
|
@@ -326,6 +378,32 @@ export declare class RelayServer {
|
|
|
326
378
|
* timeout, minutes later, having told the caller nothing in between.
|
|
327
379
|
*/
|
|
328
380
|
private rejectPending;
|
|
381
|
+
private bootKey;
|
|
382
|
+
/** Record a boot against the agent socket it was dispatched to. The door guarantees both ids. */
|
|
383
|
+
private rememberBoot;
|
|
384
|
+
/** The one way an entry leaves: every removal path funnels through here so no timer survives it. */
|
|
385
|
+
private forgetBoot;
|
|
386
|
+
/**
|
|
387
|
+
* Drop the tracked boot a correlated reply answers. The key needs no live session: an agent
|
|
388
|
+
* answering after its session was removed still answers that request. An absent `requestId`
|
|
389
|
+
* is not the answer to anything, so it drops nothing.
|
|
390
|
+
*/
|
|
391
|
+
private settleBoot;
|
|
392
|
+
/**
|
|
393
|
+
* Answer the tracked boots tied to a replaced agent socket (#885). Called after the
|
|
394
|
+
* `session:rebound` frames are sent, so the client records `needsReboot` first and the error
|
|
395
|
+
* below is classified with the cause attached. Boots dispatched to any other socket — in
|
|
396
|
+
* particular to the new agent after the rebind — are left pending.
|
|
397
|
+
*/
|
|
398
|
+
private invalidateBootsFor;
|
|
399
|
+
/**
|
|
400
|
+
* Silently drop the tracked boots of sessions that no longer exist. Their callers were already
|
|
401
|
+
* settled with the better diagnosis (`session:terminated`), so answering as well would send a
|
|
402
|
+
* second failure for the same request. Scoped to the evicted sessions rather than the socket:
|
|
403
|
+
* rebound sessions have already moved off it, and their entries are `invalidateBootsFor`'s to
|
|
404
|
+
* answer, not this one's to drop.
|
|
405
|
+
*/
|
|
406
|
+
private forgetEvictedBoots;
|
|
329
407
|
/**
|
|
330
408
|
* The agent's socket went away. Keep its sessions and wait for that agent to come back, instead
|
|
331
409
|
* 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;AAwBjH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAQvD;AAGD;;gFAEgF;AAChF,eAAO,MAAM,uBAAuB,MAAM,CAAA;AAC1C;;sGAEsG;AACtG,eAAO,MAAM,iCAAiC,MAAM,CAAA;AAsEpD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,EACnC,OAAO,EAAE,MAAM,GAAG,IAAI,GACrB;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAUhD;AAQD,eAAO,MAAM,sBAAsB,yEAAyE,CAAA;AAE5G;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAKxD;
|
|
1
|
+
{"version":3,"file":"RelayServer.d.ts","sourceRoot":"","sources":["../src/RelayServer.ts"],"names":[],"mappings":"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"}
|