@tapflowio/relay 0.28.1 → 0.29.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.
Files changed (190) hide show
  1. package/dist/RelayServer.d.ts +75 -0
  2. package/dist/RelayServer.d.ts.map +1 -1
  3. package/dist/RelayServer.js +496 -49
  4. package/dist/RelayServer.js.map +1 -1
  5. package/dist/SessionManager.d.ts +41 -2
  6. package/dist/SessionManager.d.ts.map +1 -1
  7. package/dist/SessionManager.js +31 -1
  8. package/dist/SessionManager.js.map +1 -1
  9. package/dist/admission/HostBootGate.d.ts +181 -0
  10. package/dist/admission/HostBootGate.d.ts.map +1 -0
  11. package/dist/admission/HostBootGate.js +388 -0
  12. package/dist/admission/HostBootGate.js.map +1 -0
  13. package/dist/admission/capacity.d.ts +51 -0
  14. package/dist/admission/capacity.d.ts.map +1 -0
  15. package/dist/admission/capacity.js +49 -0
  16. package/dist/admission/capacity.js.map +1 -0
  17. package/dist/admission/classifyBoot.d.ts +17 -0
  18. package/dist/admission/classifyBoot.d.ts.map +1 -0
  19. package/dist/admission/classifyBoot.js +23 -0
  20. package/dist/admission/classifyBoot.js.map +1 -0
  21. package/dist/admission/hostKey.d.ts +10 -0
  22. package/dist/admission/hostKey.d.ts.map +1 -0
  23. package/dist/admission/hostKey.js +13 -0
  24. package/dist/admission/hostKey.js.map +1 -0
  25. package/dist/admission/leaseChoice.d.ts +38 -0
  26. package/dist/admission/leaseChoice.d.ts.map +1 -0
  27. package/dist/admission/leaseChoice.js +40 -0
  28. package/dist/admission/leaseChoice.js.map +1 -0
  29. package/dist/admission/settle.d.ts +35 -0
  30. package/dist/admission/settle.d.ts.map +1 -0
  31. package/dist/admission/settle.js +41 -0
  32. package/dist/admission/settle.js.map +1 -0
  33. package/dist/api/runs.d.ts +21 -2
  34. package/dist/api/runs.d.ts.map +1 -1
  35. package/dist/api/runs.js +181 -26
  36. package/dist/api/runs.js.map +1 -1
  37. package/dist/migrations/017_flow_run_skipped.sql +34 -0
  38. package/dist/migrations/018_flow_run_service_tier.sql +6 -0
  39. package/dist/migrations/019_flow_run_device_reset.sql +7 -0
  40. package/package.json +4 -4
  41. package/public/assets/{AISessionWatch-C2h4NZ_I.js → AISessionWatch-BSBkpTom.js} +7 -7
  42. package/public/assets/AISessionWatch-BSBkpTom.js.br +0 -0
  43. package/public/assets/AISessionWatch-BSBkpTom.js.gz +0 -0
  44. package/public/assets/{AppCenter-S1y-8_7l.js → AppCenter-DD_6LQx-.js} +6 -6
  45. package/public/assets/AppCenter-DD_6LQx-.js.br +0 -0
  46. package/public/assets/AppCenter-DD_6LQx-.js.gz +0 -0
  47. package/public/assets/{Default-C-l1O-g9.js → Default-CQ3Ae2mK.js} +1 -1
  48. package/public/assets/Default-CQ3Ae2mK.js.br +0 -0
  49. package/public/assets/Default-CQ3Ae2mK.js.gz +0 -0
  50. package/public/assets/{Invite-BCndVxaO.js → Invite-D1uNMm0-.js} +1 -1
  51. package/public/assets/Invite-D1uNMm0-.js.br +0 -0
  52. package/public/assets/Invite-D1uNMm0-.js.gz +0 -0
  53. package/public/assets/{MacResources-41cFDgE1.js → MacResources-D2UeRbKL.js} +1 -1
  54. package/public/assets/MacResources-D2UeRbKL.js.br +0 -0
  55. package/public/assets/MacResources-D2UeRbKL.js.gz +0 -0
  56. package/public/assets/QASession-d0eOjXXo.js +81 -0
  57. package/public/assets/QASession-d0eOjXXo.js.br +0 -0
  58. package/public/assets/QASession-d0eOjXXo.js.gz +0 -0
  59. package/public/assets/{ResetPassword-8rj7ASt1.js → ResetPassword-B-4Uyfwr.js} +1 -1
  60. package/public/assets/ResetPassword-B-4Uyfwr.js.br +0 -0
  61. package/public/assets/ResetPassword-B-4Uyfwr.js.gz +0 -0
  62. package/public/assets/RunDetail-C50RjsuM.js +16 -0
  63. package/public/assets/RunDetail-C50RjsuM.js.br +0 -0
  64. package/public/assets/RunDetail-C50RjsuM.js.gz +0 -0
  65. package/public/assets/Runs-A7RcDLgO.js +6 -0
  66. package/public/assets/Runs-A7RcDLgO.js.br +0 -0
  67. package/public/assets/Runs-A7RcDLgO.js.gz +0 -0
  68. package/public/assets/{Setup-DZrhA_7b.js → Setup-DK6TZbwh.js} +1 -1
  69. package/public/assets/Setup-DK6TZbwh.js.br +0 -0
  70. package/public/assets/Setup-DK6TZbwh.js.gz +0 -0
  71. package/public/assets/{Team-CJThCjd3.js → Team-VoGput2p.js} +2 -2
  72. package/public/assets/Team-VoGput2p.js.br +0 -0
  73. package/public/assets/Team-VoGput2p.js.gz +0 -0
  74. package/public/assets/{Tokens-DGURtHWi.js → Tokens-qkcJgunR.js} +1 -1
  75. package/public/assets/Tokens-qkcJgunR.js.br +0 -0
  76. package/public/assets/Tokens-qkcJgunR.js.gz +0 -0
  77. package/public/assets/{aiSession-BW09Jhqz.js → aiSession-U7UqgdSb.js} +6 -6
  78. package/public/assets/aiSession-U7UqgdSb.js.br +0 -0
  79. package/public/assets/aiSession-U7UqgdSb.js.gz +0 -0
  80. package/public/assets/{alert-dialog-t5vlOabq.js → alert-dialog-C0mRms8g.js} +1 -1
  81. package/public/assets/{alert-dialog-t5vlOabq.js.br → alert-dialog-C0mRms8g.js.br} +0 -0
  82. package/public/assets/alert-dialog-C0mRms8g.js.gz +0 -0
  83. package/public/assets/{badge-DrDCTAQQ.js → badge-BjEnOmb0.js} +1 -1
  84. package/public/assets/badge-BjEnOmb0.js.br +0 -0
  85. package/public/assets/badge-BjEnOmb0.js.gz +0 -0
  86. package/public/assets/{dialog-BOFZkCES.js → dialog-Cugbp1C4.js} +1 -1
  87. package/public/assets/dialog-Cugbp1C4.js.br +0 -0
  88. package/public/assets/dialog-Cugbp1C4.js.gz +0 -0
  89. package/public/assets/{field-hint-B9fPUgi7.js → field-hint-qmBa0qqN.js} +1 -1
  90. package/public/assets/field-hint-qmBa0qqN.js.br +0 -0
  91. package/public/assets/field-hint-qmBa0qqN.js.gz +0 -0
  92. package/public/assets/{index-Bixhy5MB.js → index-C_3Q51YJ.js} +39 -39
  93. package/public/assets/index-C_3Q51YJ.js.br +0 -0
  94. package/public/assets/index-C_3Q51YJ.js.gz +0 -0
  95. package/public/assets/{list-view-BpOY1e-d.js → list-view-CyM0QUaH.js} +1 -1
  96. package/public/assets/list-view-CyM0QUaH.js.br +0 -0
  97. package/public/assets/list-view-CyM0QUaH.js.gz +0 -0
  98. package/public/assets/{pencil-ZlrAsWuU.js → pencil-DUZRZB3S.js} +2 -2
  99. package/public/assets/pencil-DUZRZB3S.js.br +0 -0
  100. package/public/assets/pencil-DUZRZB3S.js.gz +0 -0
  101. package/public/assets/{play-4CsGZdQU.js → play-Z1L2Eb91.js} +2 -2
  102. package/public/assets/play-Z1L2Eb91.js.br +0 -0
  103. package/public/assets/play-Z1L2Eb91.js.gz +0 -0
  104. package/public/assets/{runs-CInQb6v1.js → runs-CFQ6M4rx.js} +1 -1
  105. package/public/assets/runs-CFQ6M4rx.js.br +0 -0
  106. package/public/assets/runs-CFQ6M4rx.js.gz +0 -0
  107. package/public/assets/{search-input-G_QpBvPM.js → search-input-B0s9mzRt.js} +2 -2
  108. package/public/assets/search-input-B0s9mzRt.js.br +0 -0
  109. package/public/assets/search-input-B0s9mzRt.js.gz +0 -0
  110. package/public/assets/{select-DDzv2YfY.js → select-CHbE6M4S.js} +3 -3
  111. package/public/assets/select-CHbE6M4S.js.br +0 -0
  112. package/public/assets/select-CHbE6M4S.js.gz +0 -0
  113. package/public/assets/{slider-DE7lQdK4.js → slider-tyb3JvL2.js} +1 -1
  114. package/public/assets/slider-tyb3JvL2.js.br +0 -0
  115. package/public/assets/slider-tyb3JvL2.js.gz +0 -0
  116. package/public/assets/{tabs-Co1N3x_X.js → tabs-Bf7ou-eS.js} +1 -1
  117. package/public/assets/tabs-Bf7ou-eS.js.br +0 -0
  118. package/public/assets/tabs-Bf7ou-eS.js.gz +0 -0
  119. package/public/assets/{tech-label-BMvuJmUf.js → tech-label-KAwM5qZ_.js} +1 -1
  120. package/public/assets/tech-label-KAwM5qZ_.js.br +0 -0
  121. package/public/assets/tech-label-KAwM5qZ_.js.gz +0 -0
  122. package/public/assets/{trash-Cwj2dbgB.js → trash-HEJmY7DQ.js} +3 -3
  123. package/public/assets/trash-HEJmY7DQ.js.br +0 -0
  124. package/public/assets/trash-HEJmY7DQ.js.gz +0 -0
  125. package/public/assets/{video-swsaHrfi.js → video-DdHH0Q0l.js} +2 -2
  126. package/public/assets/video-DdHH0Q0l.js.br +0 -0
  127. package/public/assets/video-DdHH0Q0l.js.gz +0 -0
  128. package/public/index.html +1 -1
  129. package/public/index.html.br +0 -0
  130. package/public/index.html.gz +0 -0
  131. package/public/assets/AISessionWatch-C2h4NZ_I.js.br +0 -0
  132. package/public/assets/AISessionWatch-C2h4NZ_I.js.gz +0 -0
  133. package/public/assets/AppCenter-S1y-8_7l.js.br +0 -0
  134. package/public/assets/AppCenter-S1y-8_7l.js.gz +0 -0
  135. package/public/assets/Default-C-l1O-g9.js.br +0 -0
  136. package/public/assets/Default-C-l1O-g9.js.gz +0 -0
  137. package/public/assets/Invite-BCndVxaO.js.br +0 -0
  138. package/public/assets/Invite-BCndVxaO.js.gz +0 -0
  139. package/public/assets/MacResources-41cFDgE1.js.br +0 -0
  140. package/public/assets/MacResources-41cFDgE1.js.gz +0 -0
  141. package/public/assets/QASession-B67RsIPm.js +0 -81
  142. package/public/assets/QASession-B67RsIPm.js.br +0 -0
  143. package/public/assets/QASession-B67RsIPm.js.gz +0 -0
  144. package/public/assets/ResetPassword-8rj7ASt1.js.br +0 -0
  145. package/public/assets/ResetPassword-8rj7ASt1.js.gz +0 -0
  146. package/public/assets/RunDetail-BIgq9gJ0.js +0 -16
  147. package/public/assets/RunDetail-BIgq9gJ0.js.br +0 -0
  148. package/public/assets/RunDetail-BIgq9gJ0.js.gz +0 -0
  149. package/public/assets/Runs-DpK5aoBr.js +0 -6
  150. package/public/assets/Runs-DpK5aoBr.js.br +0 -0
  151. package/public/assets/Runs-DpK5aoBr.js.gz +0 -0
  152. package/public/assets/Setup-DZrhA_7b.js.br +0 -0
  153. package/public/assets/Setup-DZrhA_7b.js.gz +0 -0
  154. package/public/assets/Team-CJThCjd3.js.br +0 -0
  155. package/public/assets/Team-CJThCjd3.js.gz +0 -0
  156. package/public/assets/Tokens-DGURtHWi.js.br +0 -0
  157. package/public/assets/Tokens-DGURtHWi.js.gz +0 -0
  158. package/public/assets/aiSession-BW09Jhqz.js.br +0 -0
  159. package/public/assets/aiSession-BW09Jhqz.js.gz +0 -0
  160. package/public/assets/alert-dialog-t5vlOabq.js.gz +0 -0
  161. package/public/assets/badge-DrDCTAQQ.js.br +0 -0
  162. package/public/assets/badge-DrDCTAQQ.js.gz +0 -0
  163. package/public/assets/dialog-BOFZkCES.js.br +0 -0
  164. package/public/assets/dialog-BOFZkCES.js.gz +0 -0
  165. package/public/assets/field-hint-B9fPUgi7.js.br +0 -0
  166. package/public/assets/field-hint-B9fPUgi7.js.gz +0 -0
  167. package/public/assets/index-Bixhy5MB.js.br +0 -0
  168. package/public/assets/index-Bixhy5MB.js.gz +0 -0
  169. package/public/assets/list-view-BpOY1e-d.js.br +0 -0
  170. package/public/assets/list-view-BpOY1e-d.js.gz +0 -0
  171. package/public/assets/pencil-ZlrAsWuU.js.br +0 -0
  172. package/public/assets/pencil-ZlrAsWuU.js.gz +0 -0
  173. package/public/assets/play-4CsGZdQU.js.br +0 -0
  174. package/public/assets/play-4CsGZdQU.js.gz +0 -0
  175. package/public/assets/runs-CInQb6v1.js.br +0 -0
  176. package/public/assets/runs-CInQb6v1.js.gz +0 -0
  177. package/public/assets/search-input-G_QpBvPM.js.br +0 -0
  178. package/public/assets/search-input-G_QpBvPM.js.gz +0 -0
  179. package/public/assets/select-DDzv2YfY.js.br +0 -0
  180. package/public/assets/select-DDzv2YfY.js.gz +0 -0
  181. package/public/assets/slider-DE7lQdK4.js.br +0 -0
  182. package/public/assets/slider-DE7lQdK4.js.gz +0 -0
  183. package/public/assets/tabs-Co1N3x_X.js.br +0 -0
  184. package/public/assets/tabs-Co1N3x_X.js.gz +0 -0
  185. package/public/assets/tech-label-BMvuJmUf.js.br +0 -0
  186. package/public/assets/tech-label-BMvuJmUf.js.gz +0 -0
  187. package/public/assets/trash-Cwj2dbgB.js.br +0 -0
  188. package/public/assets/trash-Cwj2dbgB.js.gz +0 -0
  189. package/public/assets/video-swsaHrfi.js.br +0 -0
  190. package/public/assets/video-swsaHrfi.js.gz +0 -0
@@ -1,7 +1,8 @@
1
1
  import { WebSocket } from 'ws';
2
2
  import type { DeviceStatus } from '@tapflowio/agent-core';
3
3
  import type { AgentResources, SessionInfo } from './types.js';
4
- import type { AiClientKind, ChromePayload, ClientKind, DeviceDetails, DeviceReport, FormFactor, Point, PosturesPayload, WatchEndReason } from '@tapflowio/protocol';
4
+ import type { BooterClass } from './admission/HostBootGate.js';
5
+ import type { AiClientKind, ChromePayload, MacAdmission, ServiceTier, ClientKind, DeviceDetails, DeviceReport, FormFactor, Point, PosturesPayload, WatchEndReason } from '@tapflowio/protocol';
5
6
  export interface Session {
6
7
  id: string;
7
8
  agentId?: string;
@@ -49,6 +50,9 @@ export interface Session {
49
50
  devicePlatform: string;
50
51
  /** What simctl/adb reported about the device. Drives the device list and the REST guards —
51
52
  * "is this device up", which is a different question from the one below. */
53
+ /** The service tier the device boots with now: from the agent's register, then from each `device:ready`, since
54
+ * the register is a snapshot. Absent from an agent that predates tiers. */
55
+ deviceServiceTier?: ServiceTier | 'unsupported';
52
56
  deviceStatus: DeviceStatus;
53
57
  /** Whether the relay has told a browser this session is streaming, and has not since taken it
54
58
  * back. This is what the `device:ready` replay keys off. `deviceStatus` cannot answer it: it
@@ -63,6 +67,34 @@ export interface Session {
63
67
  postures?: PosturesPayload;
64
68
  deviceInfo?: DeviceDetails;
65
69
  idleTimer: ReturnType<typeof setTimeout> | null;
70
+ /** Whether the last holder to let go was an AI client holding the device for itself. Read with `idleTimer`: a device whose idle countdown is
71
+ * running for a person is theirs to come back to, and a lease must not take it and wipe it. `lastBoot` cannot
72
+ * say so — it names whoever cold-booted the device, and a person picks up automation's devices warm. */
73
+ lastHolderWasAi?: boolean;
74
+ /** Who cold-booted the device this session drives, and when — kept after the holder leaves, since that is when
75
+ * it matters: it is what the per-Mac automation cap counts and shuts down (`admission/capacity.ts`). Set when
76
+ * the relay forwards a cold boot, undone if that boot fails or turns out warm, cleared on `shutdown-done`.
77
+ * Absent after a relay restart, which counts nothing rather than guess. */
78
+ lastBoot?: {
79
+ booterClass: BooterClass;
80
+ at: number;
81
+ };
82
+ /** The boot `lastBoot` was set for, and what it held before, so a failure or a warm ready can put it back. */
83
+ lastBootPending?: {
84
+ requestId: string;
85
+ prev: Session['lastBoot'];
86
+ };
87
+ /** A boot whose record expired unanswered, kept so a ready that arrives after all is recorded as the boot it was —
88
+ * by then the automation client that asked has usually left, and the holder no longer says who started it. */
89
+ lastBootExpired?: {
90
+ requestId: string;
91
+ booterClass: BooterClass;
92
+ };
93
+ /** The relay shut this device down to make room. Until the agent confirms, it is neither counted nor offered. */
94
+ evictingAt?: number;
95
+ /** An automation client joined while the idle timer was running and stopped it: its leave starts it again, so a
96
+ * device a person left is not kept up for good by a run that borrowed it. */
97
+ idleResumeOnLeave: boolean;
66
98
  }
67
99
  /**
68
100
  * Why a `session:start` could not bind, or that it did.
@@ -154,6 +186,9 @@ export declare class SessionManager {
154
186
  * never-reconnecting agents is tracked in #313.
155
187
  */
156
188
  getAgentSocketsByIdentity(identity: string, platform: string | undefined): WebSocket[];
189
+ all(): Session[];
190
+ /** Every session whose agent runs on the Mac `hostKey` names, across that Mac's agents. */
191
+ getAllOnHost(hostKey: string, keyOf: (s: Session) => string): Session[];
157
192
  /** Sessions currently claiming a device id. More than one only while a held session (#426) has
158
193
  * not yet been reclaimed or given up on. */
159
194
  getAllByDeviceId(deviceId: string): Session[];
@@ -223,6 +258,9 @@ export declare class SessionManager {
223
258
  setPostures(sessionId: string, postures: PosturesPayload): void;
224
259
  setDeviceInfo(sessionId: string, info: DeviceDetails): void;
225
260
  setReadySent(sessionId: string, value: boolean): void;
261
+ /** A `device:ready` said which tier the device came up with; `undefined` once it is off or starting again, until
262
+ * the next ready says. */
263
+ setDeviceServiceTier(sessionId: string, tier: ServiceTier | 'unsupported' | undefined): void;
226
264
  updateDeviceStatus(sessionId: string, status: DeviceStatus): void;
227
265
  /**
228
266
  * @param asker the owner key of the socket that asked, so `busy` can mean *busy for you*.
@@ -239,6 +277,7 @@ export declare class SessionManager {
239
277
  */
240
278
  /** An AI client holds this session on a socket that is answering — the same liveness `busy` reads. */
241
279
  private liveAiHolder;
242
- list(asker: string, isAlive: (ws: WebSocket) => boolean): SessionInfo[];
280
+ /** `admissionOf` is asked once per agent, with that agent's sessions. */
281
+ list(asker: string, isAlive: (ws: WebSocket) => boolean, admissionOf: (sessions: Session[]) => MacAdmission): SessionInfo[];
243
282
  }
244
283
  //# sourceMappingURL=SessionManager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SessionManager.d.ts","sourceRoot":"","sources":["../src/SessionManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SessionManager.d.ts","sourceRoot":"","sources":["../src/SessionManager.ts"],"names":[],"mappings":"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"}
@@ -68,6 +68,7 @@ export class SessionManager {
68
68
  deviceStatus: device.status,
69
69
  deviceOsVersion: device.osVersion,
70
70
  deviceFormFactor: device.formFactor,
71
+ deviceServiceTier: device.serviceTier,
71
72
  };
72
73
  }
73
74
  create(agentSocket, devices = [], agentName, agentPlatform, agentId, agentCapabilities) {
@@ -91,6 +92,7 @@ export class SessionManager {
91
92
  deviceId: d.id,
92
93
  readySent: false,
93
94
  idleTimer: null,
95
+ idleResumeOnLeave: false,
94
96
  });
95
97
  agentIds.add(id);
96
98
  this.agentSocketIndex.set(agentSocket, agentIds);
@@ -123,6 +125,13 @@ export class SessionManager {
123
125
  }
124
126
  return Array.from(sockets);
125
127
  }
128
+ all() {
129
+ return Array.from(this.sessions.values());
130
+ }
131
+ /** Every session whose agent runs on the Mac `hostKey` names, across that Mac's agents. */
132
+ getAllOnHost(hostKey, keyOf) {
133
+ return Array.from(this.sessions.values()).filter((s) => keyOf(s) === hostKey);
134
+ }
126
135
  /** Sessions currently claiming a device id. More than one only while a held session (#426) has
127
136
  * not yet been reclaimed or given up on. */
128
137
  getAllByDeviceId(deviceId) {
@@ -182,6 +191,12 @@ export class SessionManager {
182
191
  isAlive(session.browserSocket)) {
183
192
  return { ok: false, failure: 'held-by-another' };
184
193
  }
194
+ // Decided by the join that stops a countdown. A later re-join by the same client (MCP's `connect_device` again)
195
+ // finds no timer and must not forget it; a person taking the device over makes it theirs to leave.
196
+ if (session.idleTimer !== null)
197
+ session.idleResumeOnLeave = isAiClientKind(holder.kind);
198
+ else if (!isAiClientKind(holder.kind))
199
+ session.idleResumeOnLeave = false;
185
200
  if (session.idleTimer) {
186
201
  clearTimeout(session.idleTimer);
187
202
  session.idleTimer = null;
@@ -240,6 +255,11 @@ export class SessionManager {
240
255
  this.unindexBrowser(session);
241
256
  session.browserSocket = null;
242
257
  }
258
+ // An AI client that joined during a countdown hands it back when it goes (`idleResumeOnLeave`), so the countdown
259
+ // stays whoever's it was: a person's stays a person's, and one an AI client left stays leasable.
260
+ if (session.owner !== null) {
261
+ session.lastHolderWasAi = isAiClientKind(session.holderKind) && (!session.idleResumeOnLeave || session.lastHolderWasAi === true);
262
+ }
243
263
  session.owner = null;
244
264
  session.ownerMinted = false;
245
265
  session.ownerUser = null;
@@ -435,6 +455,13 @@ export class SessionManager {
435
455
  if (session)
436
456
  session.readySent = value;
437
457
  }
458
+ /** A `device:ready` said which tier the device came up with; `undefined` once it is off or starting again, until
459
+ * the next ready says. */
460
+ setDeviceServiceTier(sessionId, tier) {
461
+ const session = this.sessions.get(sessionId);
462
+ if (session)
463
+ session.deviceServiceTier = tier;
464
+ }
438
465
  updateDeviceStatus(sessionId, status) {
439
466
  const session = this.sessions.get(sessionId);
440
467
  if (session)
@@ -461,7 +488,8 @@ export class SessionManager {
461
488
  s.browserSocket.readyState === WebSocket.OPEN &&
462
489
  isAlive(s.browserSocket);
463
490
  }
464
- list(asker, isAlive) {
491
+ /** `admissionOf` is asked once per agent, with that agent's sessions. */
492
+ list(asker, isAlive, admissionOf) {
465
493
  // Group sessions by agentSocket
466
494
  const agentMap = new Map();
467
495
  for (const session of this.sessions.values()) {
@@ -486,6 +514,7 @@ export class SessionManager {
486
514
  // "advertises nothing", and the viewer gates on membership. Leaving it undefined would make
487
515
  // every consumer repeat the same fallback, and one of them would forget.
488
516
  capabilities: group[0].agentCapabilities ?? [],
517
+ admission: admissionOf(group),
489
518
  devices: group.map((s) => ({
490
519
  id: s.deviceId,
491
520
  name: s.deviceName,
@@ -493,6 +522,7 @@ export class SessionManager {
493
522
  status: s.deviceStatus,
494
523
  osVersion: s.deviceOsVersion,
495
524
  formFactor: s.deviceFormFactor,
525
+ ...(s.deviceServiceTier !== undefined ? { serviceTier: s.deviceServiceTier } : {}),
496
526
  sessionId: s.id,
497
527
  ...(this.liveAiHolder(s, isAlive) ? { holder: { kind: s.holderKind, user: s.holderLabel ?? 'unknown' } } : {}),
498
528
  busy: s.owner !== null &&
@@ -1 +1 @@
1
- {"version":3,"file":"SessionManager.js","sourceRoot":"","sources":["../src/SessionManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SessionManager.js","sourceRoot":"","sources":["../src/SessionManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,181 @@
1
+ import type { BootRefusalReason } from '@tapflowio/protocol';
2
+ /**
3
+ * One cold boot at a time per Mac, and a person never refused for it.
4
+ *
5
+ * A device that has finished booting does not slow the other sessions on its Mac; the boot does, for 30–90 s
6
+ * (`contributing/simulator-boot-contention.md`). So each Mac has one boot **slot**, held from the moment a cold
7
+ * boot is let through until the device has settled. An automated client (flow runner, MCP) that finds it taken is
8
+ * refused with `host-booting` and retries on its own. A person is never refused: their boot waits in the Mac's
9
+ * one-place **reservation**, which goes ahead of any automated retry, for at most `humanWaitMs`.
10
+ *
11
+ * Pure state: no sockets and no timers. Every call returns what the relay should do, and `nextDeadline()` says
12
+ * when it must call `tick()`. That is read after the relay has carried out the effects rather than returned with
13
+ * them, because carrying one out can feed the gate again (a held boot whose agent has gone is answered and
14
+ * released), and a deadline returned before that would already be stale. The message a held boot carries rides in the gate as `M`, so there
15
+ * is one owner of a held boot rather than a gate entry and a relay map that can disagree.
16
+ *
17
+ * **Memory is a safety valve, not a budget.** While an agent on the Mac reports critical kernel memory pressure, no
18
+ * automated cold boot is let through (`host-memory-critical`) and a person's waits in the reservation as it would
19
+ * behind a boot. The reading counts for `SETTLE.freshMs` after the last report that said so, so a Mac whose agents
20
+ * went quiet is not held shut by their last word.
21
+ *
22
+ * **What releases a slot is a closed list** (`GateEvent`), not a general release call. A rebind, a correlator's
23
+ * TTL or an evicted boot record does not appear in it, because the device is still booting on that Mac through
24
+ * all three — the slot is about the Mac, `pendingBoots` is about who is waiting for an answer.
25
+ */
26
+ export type BooterClass = 'interactive' | 'automated';
27
+ export interface GateTiming {
28
+ /** A slot still `booting` after this is let go. The clients' own boot deadline: past it nobody is waiting. */
29
+ bootMs: number;
30
+ /** A settling slot is let go this long after ready, settled or not. The slowest measured settle was 84 s. */
31
+ settleCapMs: number;
32
+ /** With no CPU sample at all since ready, the slot is let go after this. Covers 76–84 s unmodified settles. */
33
+ noSampleMs: number;
34
+ /** A person's boot waits in the reservation at most this long, then goes ahead regardless. */
35
+ humanWaitMs: number;
36
+ /** After a rebind during booting, a slot whose session sends no new boot for this long is taken as abandoned. */
37
+ reboundMs: number;
38
+ /** After this many people in a row took the slot while an automated client was being refused… */
39
+ agingCount: number;
40
+ /** …the next free slot is kept for automation this long. Longer than the clients' largest backoff. */
41
+ agingWindowMs: number;
42
+ /** An automated refusal counts as someone still waiting for this long. About twice the largest backoff. */
43
+ recentRefusalMs: number;
44
+ }
45
+ /** Numbers and their sources: L2 admission plan, appendix 숫자 결정. */
46
+ export declare const GATE_DEFAULTS: GateTiming;
47
+ export interface BootRequest<M> {
48
+ hostKey: string;
49
+ sessionId: string;
50
+ requestId: string;
51
+ cost: 'cold' | 'warm';
52
+ booterClass: BooterClass;
53
+ message: M;
54
+ }
55
+ export type GateLogEvent = 'overlap' | 'boot-timeout' | 'settle-timeout' | 'no-samples' | 'human-wait-expired' | 'rebound-abandoned' | 'aging-window' | 'memory-critical' | 'memory-critical-stale';
56
+ export type Effect<M> =
57
+ /** Send this boot to its agent now. */
58
+ {
59
+ kind: 'deliver';
60
+ sessionId: string;
61
+ requestId: string;
62
+ message: M;
63
+ }
64
+ /** Answer this automated boot with `device:boot-error` and the reason; it was never forwarded. */
65
+ | {
66
+ kind: 'refuse';
67
+ sessionId: string;
68
+ requestId: string;
69
+ reason: BootRefusalReason;
70
+ message: M;
71
+ }
72
+ /** A person's boot is now held, or held for a different reason than they were told; tell them, and when it goes
73
+ * ahead regardless. */
74
+ | {
75
+ kind: 'waiting';
76
+ sessionId: string;
77
+ requestId: string;
78
+ until: number;
79
+ reason: BootRefusalReason;
80
+ message: M;
81
+ }
82
+ /** A held boot that will not go ahead: answer it with `device:boot-error`. */
83
+ | {
84
+ kind: 'withdraw';
85
+ sessionId: string;
86
+ requestId: string;
87
+ why: 'cancelled' | 'replaced';
88
+ message: M;
89
+ } | {
90
+ kind: 'log';
91
+ event: GateLogEvent;
92
+ hostKey: string;
93
+ sessionId?: string;
94
+ };
95
+ export type GateEvent =
96
+ /** The agent's `device:ready`. `cold` is its own account, absent from an agent that predates it. */
97
+ {
98
+ kind: 'ready';
99
+ hostKey: string;
100
+ sessionId: string;
101
+ cold?: boolean;
102
+ }
103
+ /** One `agent:resources` report from any agent on that Mac. */
104
+ | {
105
+ kind: 'sample';
106
+ hostKey: string;
107
+ cpuPercent: number;
108
+ }
109
+ /** The memory pressure on that report, from an agent that reads it. A report without one says nothing either way. */
110
+ | {
111
+ kind: 'pressure';
112
+ hostKey: string;
113
+ critical: boolean;
114
+ }
115
+ /** The agent's `device:boot-error`. No `requestId` is an Android stream that died outside a boot. */
116
+ | {
117
+ kind: 'boot-error';
118
+ sessionId: string;
119
+ requestId?: string;
120
+ } | {
121
+ kind: 'shutdown-done';
122
+ sessionId: string;
123
+ } | {
124
+ kind: 'session-removed';
125
+ sessionId: string;
126
+ }
127
+ /** The person's socket went away or they left: a held boot has nobody to show it to. */
128
+ | {
129
+ kind: 'browser-closed';
130
+ sessionId: string;
131
+ }
132
+ /** The session moved to a restarted agent while its device may still be booting. */
133
+ | {
134
+ kind: 'rebound';
135
+ sessionId: string;
136
+ };
137
+ export declare class HostBootGate<M> {
138
+ private readonly now;
139
+ private readonly timing;
140
+ private readonly hosts;
141
+ constructor(now: () => number, timing?: GateTiming);
142
+ admit(req: BootRequest<M>): Effect<M>[];
143
+ onEvent(ev: GateEvent): Effect<M>[];
144
+ /** Act on every deadline that has passed. */
145
+ tick(): Effect<M>[];
146
+ /**
147
+ * What `admit` would answer an automated cold boot on this Mac now — `null` for go — without recording anything.
148
+ * A lease tries Macs in turn, and an `admit` per candidate would stamp a refusal on each Mac it passed over: that
149
+ * stamp is what opens an aging window for automation, so people on those Macs would be made to wait for a boot
150
+ * that went elsewhere. Mirrors the automated branch of `admit` and must move with it.
151
+ */
152
+ wouldRefuseAutomated(hostKey: string): BootRefusalReason | null;
153
+ /** Whether a cold boot is being paid for on this Mac now. The relay pauses its CPU join gate while it is. */
154
+ isBooting(hostKey: string): boolean;
155
+ private release;
156
+ private criticalEnded;
157
+ /**
158
+ * A boot let through regardless — a second person while the reservation is taken, or a person whose wait ran
159
+ * out. With the slot free it takes the slot, so the boot is tracked to its settle like any other: free here means
160
+ * the Mac was critical, and letting it through slotless would let the next automated boot start beside it the
161
+ * moment pressure cleared. An open aging window keeps it slotless only while automation can use that slot; under
162
+ * critical pressure it cannot, and a window frozen by critical can outlast a person's wait.
163
+ */
164
+ private deliverAnyway;
165
+ private isCritical;
166
+ private waitReason;
167
+ /** Tell a held person when what they wait for has changed, keeping their place and clock. Called on each change of
168
+ * pressure, since that is the only thing `waitReason` reads. */
169
+ private refreshWaiting;
170
+ private waitingOf;
171
+ private dispatchReservation;
172
+ private noteHumanGrant;
173
+ private withdrawHeld;
174
+ private takeSlot;
175
+ private deliverOf;
176
+ private slotOf;
177
+ private host;
178
+ /** When `tick()` must next run, or null when nothing is pending. */
179
+ nextDeadline(): number | null;
180
+ }
181
+ //# sourceMappingURL=HostBootGate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HostBootGate.d.ts","sourceRoot":"","sources":["../../src/admission/HostBootGate.ts"],"names":[],"mappings":"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"}