@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.
Files changed (161) hide show
  1. package/dist/RelayServer.d.ts +92 -0
  2. package/dist/RelayServer.d.ts.map +1 -1
  3. package/dist/RelayServer.js +352 -13
  4. package/dist/RelayServer.js.map +1 -1
  5. package/dist/SessionManager.d.ts +5 -3
  6. package/dist/SessionManager.d.ts.map +1 -1
  7. package/dist/SessionManager.js +3 -1
  8. package/dist/SessionManager.js.map +1 -1
  9. package/dist/api/builds.d.ts.map +1 -1
  10. package/dist/api/builds.js +13 -8
  11. package/dist/api/builds.js.map +1 -1
  12. package/dist/api/comments.d.ts.map +1 -1
  13. package/dist/api/comments.js +5 -7
  14. package/dist/api/comments.js.map +1 -1
  15. package/dist/api/invitations.d.ts.map +1 -1
  16. package/dist/api/invitations.js +3 -0
  17. package/dist/api/invitations.js.map +1 -1
  18. package/dist/api/profile.d.ts.map +1 -1
  19. package/dist/api/profile.js +28 -9
  20. package/dist/api/profile.js.map +1 -1
  21. package/dist/api/recordings.d.ts.map +1 -1
  22. package/dist/api/recordings.js +5 -6
  23. package/dist/api/recordings.js.map +1 -1
  24. package/dist/api/settings.d.ts.map +1 -1
  25. package/dist/api/settings.js +28 -9
  26. package/dist/api/settings.js.map +1 -1
  27. package/dist/lib/clientAddress.d.ts +12 -0
  28. package/dist/lib/clientAddress.d.ts.map +1 -1
  29. package/dist/lib/clientAddress.js +22 -0
  30. package/dist/lib/clientAddress.js.map +1 -1
  31. package/dist/lib/uploads.d.ts +13 -0
  32. package/dist/lib/uploads.d.ts.map +1 -1
  33. package/dist/lib/uploads.js +41 -0
  34. package/dist/lib/uploads.js.map +1 -1
  35. package/dist/lib/webhookTransport.d.ts +29 -0
  36. package/dist/lib/webhookTransport.d.ts.map +1 -0
  37. package/dist/lib/webhookTransport.js +86 -0
  38. package/dist/lib/webhookTransport.js.map +1 -0
  39. package/dist/lib/webhookUrl.d.ts +6 -0
  40. package/dist/lib/webhookUrl.d.ts.map +1 -1
  41. package/dist/lib/webhookUrl.js +50 -14
  42. package/dist/lib/webhookUrl.js.map +1 -1
  43. package/dist/lib/webhooks.d.ts +2 -10
  44. package/dist/lib/webhooks.d.ts.map +1 -1
  45. package/dist/lib/webhooks.js +8 -3
  46. package/dist/lib/webhooks.js.map +1 -1
  47. package/package.json +6 -6
  48. package/public/assets/{AppCenter-DZCsC2wa.js → AppCenter-CeLjUbnR.js} +7 -7
  49. package/public/assets/AppCenter-CeLjUbnR.js.br +0 -0
  50. package/public/assets/AppCenter-CeLjUbnR.js.gz +0 -0
  51. package/public/assets/Default-UB0Pa3lN.js +1 -0
  52. package/public/assets/Default-UB0Pa3lN.js.br +0 -0
  53. package/public/assets/Default-UB0Pa3lN.js.gz +0 -0
  54. package/public/assets/Invite-Dv3omu3x.js +1 -0
  55. package/public/assets/Invite-Dv3omu3x.js.br +0 -0
  56. package/public/assets/Invite-Dv3omu3x.js.gz +0 -0
  57. package/public/assets/{MacResources-B0DQ9ISE.js → MacResources-CY4-OdGt.js} +1 -1
  58. package/public/assets/MacResources-CY4-OdGt.js.br +0 -0
  59. package/public/assets/MacResources-CY4-OdGt.js.gz +0 -0
  60. package/public/assets/QASession-H5eRSwZv.js +150 -0
  61. package/public/assets/QASession-H5eRSwZv.js.br +0 -0
  62. package/public/assets/QASession-H5eRSwZv.js.gz +0 -0
  63. package/public/assets/ResetPassword-nFTigYt2.js +1 -0
  64. package/public/assets/ResetPassword-nFTigYt2.js.br +0 -0
  65. package/public/assets/ResetPassword-nFTigYt2.js.gz +0 -0
  66. package/public/assets/Setup-UmLtF2PF.js +1 -0
  67. package/public/assets/Setup-UmLtF2PF.js.br +0 -0
  68. package/public/assets/Setup-UmLtF2PF.js.gz +0 -0
  69. package/public/assets/Team-DW40kt3H.js +6 -0
  70. package/public/assets/Team-DW40kt3H.js.br +0 -0
  71. package/public/assets/Team-DW40kt3H.js.gz +0 -0
  72. package/public/assets/Tokens-B1a4ChJK.js +1 -0
  73. package/public/assets/Tokens-B1a4ChJK.js.br +0 -0
  74. package/public/assets/Tokens-B1a4ChJK.js.gz +0 -0
  75. package/public/assets/alert-dialog-aoqYdAwx.js +1 -0
  76. package/public/assets/alert-dialog-aoqYdAwx.js.br +0 -0
  77. package/public/assets/alert-dialog-aoqYdAwx.js.gz +0 -0
  78. package/public/assets/badge-DNaS0Mu3.js +1 -0
  79. package/public/assets/badge-DNaS0Mu3.js.br +0 -0
  80. package/public/assets/badge-DNaS0Mu3.js.gz +0 -0
  81. package/public/assets/{build-format-fzt-JrUX.js → build-format-DF5aFcag.js} +3 -3
  82. package/public/assets/build-format-DF5aFcag.js.br +0 -0
  83. package/public/assets/build-format-DF5aFcag.js.gz +0 -0
  84. package/public/assets/{dialog-DQkbaw8h.js → dialog-DE2WUMuX.js} +5 -5
  85. package/public/assets/dialog-DE2WUMuX.js.br +0 -0
  86. package/public/assets/dialog-DE2WUMuX.js.gz +0 -0
  87. package/public/assets/field-hint-Csb40Gzp.js +1 -0
  88. package/public/assets/field-hint-Csb40Gzp.js.br +2 -0
  89. package/public/assets/field-hint-Csb40Gzp.js.gz +0 -0
  90. package/public/assets/index-BbCkTtjO.css +1 -0
  91. package/public/assets/index-BbCkTtjO.css.br +0 -0
  92. package/public/assets/index-BbCkTtjO.css.gz +0 -0
  93. package/public/assets/index-DSW9h8XX.js +218 -0
  94. package/public/assets/index-DSW9h8XX.js.br +0 -0
  95. package/public/assets/index-DSW9h8XX.js.gz +0 -0
  96. package/public/assets/list-view-C0w97ltJ.js +1 -0
  97. package/public/assets/list-view-C0w97ltJ.js.br +0 -0
  98. package/public/assets/list-view-C0w97ltJ.js.gz +0 -0
  99. package/public/assets/{pencil-BJcOp3oN.js → pencil-BN18R4oa.js} +2 -2
  100. package/public/assets/pencil-BN18R4oa.js.br +0 -0
  101. package/public/assets/pencil-BN18R4oa.js.gz +0 -0
  102. package/public/assets/resource-health-Bi20EUDs.js +1 -0
  103. package/public/assets/resource-health-Bi20EUDs.js.br +0 -0
  104. package/public/assets/resource-health-Bi20EUDs.js.gz +0 -0
  105. package/public/assets/{trash-DhBxh6H7.js → trash-D1l1Fm-Z.js} +3 -3
  106. package/public/assets/trash-D1l1Fm-Z.js.br +0 -0
  107. package/public/assets/trash-D1l1Fm-Z.js.gz +0 -0
  108. package/public/index.html +2 -2
  109. package/public/index.html.br +0 -0
  110. package/public/index.html.gz +0 -0
  111. package/public/assets/AppCenter-DZCsC2wa.js.br +0 -0
  112. package/public/assets/AppCenter-DZCsC2wa.js.gz +0 -0
  113. package/public/assets/Default-xD9Fmd5X.js +0 -1
  114. package/public/assets/Default-xD9Fmd5X.js.br +0 -0
  115. package/public/assets/Default-xD9Fmd5X.js.gz +0 -0
  116. package/public/assets/Invite-29Erwv8j.js +0 -1
  117. package/public/assets/Invite-29Erwv8j.js.br +0 -0
  118. package/public/assets/Invite-29Erwv8j.js.gz +0 -0
  119. package/public/assets/MacResources-B0DQ9ISE.js.br +0 -0
  120. package/public/assets/MacResources-B0DQ9ISE.js.gz +0 -0
  121. package/public/assets/QASession-D-n6PXuD.js +0 -150
  122. package/public/assets/QASession-D-n6PXuD.js.br +0 -0
  123. package/public/assets/QASession-D-n6PXuD.js.gz +0 -0
  124. package/public/assets/ResetPassword-BnPIwTYH.js +0 -1
  125. package/public/assets/ResetPassword-BnPIwTYH.js.br +0 -0
  126. package/public/assets/ResetPassword-BnPIwTYH.js.gz +0 -0
  127. package/public/assets/Setup-DmUGFblg.js +0 -1
  128. package/public/assets/Setup-DmUGFblg.js.br +0 -0
  129. package/public/assets/Setup-DmUGFblg.js.gz +0 -0
  130. package/public/assets/Team-BpvRgFfZ.js +0 -6
  131. package/public/assets/Team-BpvRgFfZ.js.br +0 -0
  132. package/public/assets/Team-BpvRgFfZ.js.gz +0 -0
  133. package/public/assets/Tokens-x6BtCcL7.js +0 -1
  134. package/public/assets/Tokens-x6BtCcL7.js.br +0 -0
  135. package/public/assets/Tokens-x6BtCcL7.js.gz +0 -0
  136. package/public/assets/alert-dialog-C8wDimW-.js +0 -1
  137. package/public/assets/alert-dialog-C8wDimW-.js.br +0 -0
  138. package/public/assets/alert-dialog-C8wDimW-.js.gz +0 -0
  139. package/public/assets/badge-CWVbeuH3.js +0 -1
  140. package/public/assets/badge-CWVbeuH3.js.br +0 -0
  141. package/public/assets/badge-CWVbeuH3.js.gz +0 -0
  142. package/public/assets/build-format-fzt-JrUX.js.br +0 -0
  143. package/public/assets/build-format-fzt-JrUX.js.gz +0 -0
  144. package/public/assets/dialog-DQkbaw8h.js.br +0 -0
  145. package/public/assets/dialog-DQkbaw8h.js.gz +0 -0
  146. package/public/assets/index-C1Fo8g_c.js +0 -218
  147. package/public/assets/index-C1Fo8g_c.js.br +0 -0
  148. package/public/assets/index-C1Fo8g_c.js.gz +0 -0
  149. package/public/assets/index-C2F1AgwB.css +0 -1
  150. package/public/assets/index-C2F1AgwB.css.br +0 -0
  151. package/public/assets/index-C2F1AgwB.css.gz +0 -0
  152. package/public/assets/list-view-DxI397-H.js +0 -1
  153. package/public/assets/list-view-DxI397-H.js.br +0 -0
  154. package/public/assets/list-view-DxI397-H.js.gz +0 -0
  155. package/public/assets/pencil-BJcOp3oN.js.br +0 -0
  156. package/public/assets/pencil-BJcOp3oN.js.gz +0 -0
  157. package/public/assets/resource-health-Cq3gqqVd.js +0 -1
  158. package/public/assets/resource-health-Cq3gqqVd.js.br +0 -0
  159. package/public/assets/resource-health-Cq3gqqVd.js.gz +0 -0
  160. package/public/assets/trash-DhBxh6H7.js.br +0 -0
  161. package/public/assets/trash-DhBxh6H7.js.gz +0 -0
@@ -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":"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"}
1
+ {"version":3,"file":"RelayServer.d.ts","sourceRoot":"","sources":["../src/RelayServer.ts"],"names":[],"mappings":"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"}