@superblocksteam/gateway 2.0.161 → 2.0.162-next.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 (235) hide show
  1. package/README.md +135 -39
  2. package/dist/agents/resolve-orchestrator-url.d.ts +18 -0
  3. package/dist/agents/resolve-orchestrator-url.js +64 -1
  4. package/dist/agents/resolve-orchestrator-url.js.map +1 -1
  5. package/dist/capabilities/lifecycle.d.ts +46 -29
  6. package/dist/capabilities/lifecycle.js +1731 -843
  7. package/dist/capabilities/lifecycle.js.map +1 -1
  8. package/dist/capabilities/query-integration.d.ts +14 -0
  9. package/dist/capabilities/query-integration.js +172 -0
  10. package/dist/capabilities/query-integration.js.map +1 -0
  11. package/dist/capabilities/source-files-archive.d.ts +11 -0
  12. package/dist/capabilities/source-files-archive.js +54 -0
  13. package/dist/capabilities/source-files-archive.js.map +1 -0
  14. package/dist/capabilities/types.d.ts +197 -119
  15. package/dist/capabilities/types.js +45 -6
  16. package/dist/capabilities/types.js.map +1 -1
  17. package/dist/capture/browser-contract.d.ts +15 -5
  18. package/dist/capture/browser-contract.js +13 -3
  19. package/dist/capture/browser-contract.js.map +1 -1
  20. package/dist/capture/browser-instructions.d.ts +3 -2
  21. package/dist/capture/browser-instructions.js +3 -2
  22. package/dist/capture/browser-instructions.js.map +1 -1
  23. package/dist/capture/mode.d.ts +8 -1
  24. package/dist/capture/mode.js +22 -2
  25. package/dist/capture/mode.js.map +1 -1
  26. package/dist/config.d.ts +22 -23
  27. package/dist/config.js +13 -12
  28. package/dist/config.js.map +1 -1
  29. package/dist/deps.d.ts +7 -7
  30. package/dist/index.d.ts +2 -4
  31. package/dist/index.js +2 -4
  32. package/dist/index.js.map +1 -1
  33. package/dist/integrations/read-only-postgres-query.d.ts +2 -0
  34. package/dist/integrations/read-only-postgres-query.js +164 -0
  35. package/dist/integrations/read-only-postgres-query.js.map +1 -0
  36. package/dist/main.js +1 -1
  37. package/dist/main.js.map +1 -1
  38. package/dist/playwright/ensure-chromium.d.ts +5 -7
  39. package/dist/playwright/ensure-chromium.js +13 -13
  40. package/dist/playwright/ensure-chromium.js.map +1 -1
  41. package/dist/preview/capture-screenshot.d.ts +30 -4
  42. package/dist/preview/capture-screenshot.js +67 -17
  43. package/dist/preview/capture-screenshot.js.map +1 -1
  44. package/dist/preview/viewer-url.js +3 -1
  45. package/dist/preview/viewer-url.js.map +1 -1
  46. package/dist/process/fault-barrier.js +1 -1
  47. package/dist/process/fault-barrier.js.map +1 -1
  48. package/dist/sabs/agent-facing-text.d.ts +2 -0
  49. package/dist/sabs/agent-facing-text.js +56 -2
  50. package/dist/sabs/agent-facing-text.js.map +1 -1
  51. package/dist/sabs/app-state.d.ts +126 -0
  52. package/dist/sabs/app-state.js +332 -0
  53. package/dist/sabs/app-state.js.map +1 -0
  54. package/dist/sabs/awaited-decision.d.ts +49 -0
  55. package/dist/sabs/awaited-decision.js +129 -0
  56. package/dist/sabs/awaited-decision.js.map +1 -0
  57. package/dist/sabs/editor-client-methods.d.ts +23 -5
  58. package/dist/sabs/editor-client-methods.js +45 -4
  59. package/dist/sabs/editor-client-methods.js.map +1 -1
  60. package/dist/sabs/editor-socket.d.ts +85 -0
  61. package/dist/sabs/editor-socket.js +67 -0
  62. package/dist/sabs/editor-socket.js.map +1 -0
  63. package/dist/sabs/session-peer.d.ts +119 -82
  64. package/dist/sabs/session-peer.js +10 -1
  65. package/dist/sabs/session-peer.js.map +1 -1
  66. package/dist/sabs/streamed-reply.d.ts +45 -0
  67. package/dist/sabs/streamed-reply.js +125 -0
  68. package/dist/sabs/streamed-reply.js.map +1 -0
  69. package/dist/sabs/turn-collector.d.ts +50 -35
  70. package/dist/sabs/turn-collector.js +110 -176
  71. package/dist/sabs/turn-collector.js.map +1 -1
  72. package/dist/sabs/websocket-session-peer.d.ts +104 -69
  73. package/dist/sabs/websocket-session-peer.js +1333 -477
  74. package/dist/sabs/websocket-session-peer.js.map +1 -1
  75. package/dist/server/client.d.ts +41 -9
  76. package/dist/server/client.js +126 -21
  77. package/dist/server/client.js.map +1 -1
  78. package/dist/start.d.ts +1 -1
  79. package/dist/start.js +30 -8
  80. package/dist/start.js.map +1 -1
  81. package/dist/stores/memory.d.ts +46 -0
  82. package/dist/stores/memory.js +163 -0
  83. package/dist/stores/memory.js.map +1 -0
  84. package/dist/stores/types.d.ts +92 -0
  85. package/dist/stores/types.js +11 -0
  86. package/dist/stores/types.js.map +1 -0
  87. package/dist/telemetry/mcp-client.d.ts +6 -1
  88. package/dist/telemetry/mcp-client.js +100 -4
  89. package/dist/telemetry/mcp-client.js.map +1 -1
  90. package/dist/telemetry/metrics.d.ts +12 -3
  91. package/dist/telemetry/metrics.js +60 -14
  92. package/dist/telemetry/metrics.js.map +1 -1
  93. package/dist/telemetry/runtime.js +4 -6
  94. package/dist/telemetry/runtime.js.map +1 -1
  95. package/dist/transports/mcp/admin-tools.d.ts +8 -0
  96. package/dist/transports/mcp/admin-tools.js +115 -4
  97. package/dist/transports/mcp/admin-tools.js.map +1 -1
  98. package/dist/transports/mcp/app-status-html.d.ts +4 -8
  99. package/dist/transports/mcp/app-status-html.js +336 -128
  100. package/dist/transports/mcp/app-status-html.js.map +1 -1
  101. package/dist/transports/mcp/client-presentation.d.ts +16 -0
  102. package/dist/transports/mcp/client-presentation.js +13 -0
  103. package/dist/transports/mcp/client-presentation.js.map +1 -0
  104. package/dist/transports/mcp/cowork-editor-url.d.ts +6 -0
  105. package/dist/transports/mcp/cowork-editor-url.js +10 -0
  106. package/dist/transports/mcp/cowork-editor-url.js.map +1 -0
  107. package/dist/transports/mcp/decision-card-html.d.ts +26 -0
  108. package/dist/transports/mcp/decision-card-html.js +876 -0
  109. package/dist/transports/mcp/decision-card-html.js.map +1 -0
  110. package/dist/transports/mcp/decision-elicitation.d.ts +42 -0
  111. package/dist/transports/mcp/decision-elicitation.js +59 -0
  112. package/dist/transports/mcp/decision-elicitation.js.map +1 -1
  113. package/dist/transports/mcp/editor-document-probe.d.ts +4 -0
  114. package/dist/transports/mcp/editor-document-probe.js +35 -0
  115. package/dist/transports/mcp/editor-document-probe.js.map +1 -0
  116. package/dist/transports/mcp/editor-integration-setup-url.d.ts +14 -0
  117. package/dist/transports/mcp/editor-integration-setup-url.js +29 -0
  118. package/dist/transports/mcp/editor-integration-setup-url.js.map +1 -0
  119. package/dist/transports/mcp/format-tool-content.d.ts +13 -18
  120. package/dist/transports/mcp/format-tool-content.js +172 -13
  121. package/dist/transports/mcp/format-tool-content.js.map +1 -1
  122. package/dist/transports/mcp/instructions/index.d.ts +23 -0
  123. package/dist/transports/mcp/instructions/index.js +81 -0
  124. package/dist/transports/mcp/instructions/index.js.map +1 -0
  125. package/dist/transports/mcp/instructions/result.d.ts +18 -0
  126. package/dist/transports/mcp/instructions/result.js +58 -0
  127. package/dist/transports/mcp/instructions/result.js.map +1 -0
  128. package/dist/transports/mcp/instructions/tools/ask-user.d.ts +2 -0
  129. package/dist/transports/mcp/instructions/tools/ask-user.js +20 -0
  130. package/dist/transports/mcp/instructions/tools/ask-user.js.map +1 -0
  131. package/dist/transports/mcp/instructions/tools/build-app.d.ts +4 -0
  132. package/dist/transports/mcp/instructions/tools/build-app.js +54 -0
  133. package/dist/transports/mcp/instructions/tools/build-app.js.map +1 -0
  134. package/dist/transports/mcp/instructions/tools/check-app-progress.d.ts +3 -0
  135. package/dist/transports/mcp/instructions/tools/check-app-progress.js +79 -0
  136. package/dist/transports/mcp/instructions/tools/check-app-progress.js.map +1 -0
  137. package/dist/transports/mcp/instructions/tools/check-publish-progress.d.ts +3 -0
  138. package/dist/transports/mcp/instructions/tools/check-publish-progress.js +23 -0
  139. package/dist/transports/mcp/instructions/tools/check-publish-progress.js.map +1 -0
  140. package/dist/transports/mcp/instructions/tools/copy.d.ts +18 -0
  141. package/dist/transports/mcp/instructions/tools/copy.js +49 -0
  142. package/dist/transports/mcp/instructions/tools/copy.js.map +1 -0
  143. package/dist/transports/mcp/instructions/tools/create-integration.d.ts +4 -0
  144. package/dist/transports/mcp/instructions/tools/create-integration.js +41 -0
  145. package/dist/transports/mcp/instructions/tools/create-integration.js.map +1 -0
  146. package/dist/transports/mcp/instructions/tools/edit-app.d.ts +3 -0
  147. package/dist/transports/mcp/instructions/tools/edit-app.js +18 -0
  148. package/dist/transports/mcp/instructions/tools/edit-app.js.map +1 -0
  149. package/dist/transports/mcp/instructions/tools/get-app.d.ts +3 -0
  150. package/dist/transports/mcp/instructions/tools/get-app.js +49 -0
  151. package/dist/transports/mcp/instructions/tools/get-app.js.map +1 -0
  152. package/dist/transports/mcp/instructions/tools/get-integration-metadata.d.ts +2 -0
  153. package/dist/transports/mcp/instructions/tools/get-integration-metadata.js +13 -0
  154. package/dist/transports/mcp/instructions/tools/get-integration-metadata.js.map +1 -0
  155. package/dist/transports/mcp/instructions/tools/index.d.ts +7 -0
  156. package/dist/transports/mcp/instructions/tools/index.js +31 -0
  157. package/dist/transports/mcp/instructions/tools/index.js.map +1 -0
  158. package/dist/transports/mcp/instructions/tools/publish-app.d.ts +3 -0
  159. package/dist/transports/mcp/instructions/tools/publish-app.js +23 -0
  160. package/dist/transports/mcp/instructions/tools/publish-app.js.map +1 -0
  161. package/dist/transports/mcp/instructions/tools/start-app.d.ts +3 -0
  162. package/dist/transports/mcp/instructions/tools/start-app.js +22 -0
  163. package/dist/transports/mcp/instructions/tools/start-app.js.map +1 -0
  164. package/dist/transports/mcp/instructions/tools/upload-artifact.d.ts +2 -0
  165. package/dist/transports/mcp/instructions/tools/upload-artifact.js +13 -0
  166. package/dist/transports/mcp/instructions/tools/upload-artifact.js.map +1 -0
  167. package/dist/transports/mcp/mcp-app-brand-css.d.ts +1 -0
  168. package/dist/transports/mcp/mcp-app-brand-css.js +180 -0
  169. package/dist/transports/mcp/mcp-app-brand-css.js.map +1 -0
  170. package/dist/transports/mcp/mount.d.ts +14 -1
  171. package/dist/transports/mcp/mount.js +729 -172
  172. package/dist/transports/mcp/mount.js.map +1 -1
  173. package/dist/transports/mcp/native-browser-presence.d.ts +45 -0
  174. package/dist/transports/mcp/native-browser-presence.js +158 -0
  175. package/dist/transports/mcp/native-browser-presence.js.map +1 -0
  176. package/dist/transports/mcp/plan-approval.d.ts +44 -0
  177. package/dist/transports/mcp/plan-approval.js +179 -0
  178. package/dist/transports/mcp/plan-approval.js.map +1 -0
  179. package/dist/transports/mcp/session-directory.d.ts +7 -0
  180. package/dist/transports/mcp/session-directory.js +18 -0
  181. package/dist/transports/mcp/session-directory.js.map +1 -0
  182. package/dist/transports/mcp/tool-names.d.ts +2 -0
  183. package/dist/transports/mcp/tool-names.js +2 -0
  184. package/dist/transports/mcp/tool-names.js.map +1 -0
  185. package/package.json +16 -7
  186. package/skills/superblocks-build/SKILL.md +59 -0
  187. package/skills/superblocks-import/SKILL.md +125 -0
  188. package/dist/capabilities/import-prompt.d.ts +0 -11
  189. package/dist/capabilities/import-prompt.js +0 -96
  190. package/dist/capabilities/import-prompt.js.map +0 -1
  191. package/dist/capabilities/persisted-progress.d.ts +0 -46
  192. package/dist/capabilities/persisted-progress.js +0 -246
  193. package/dist/capabilities/persisted-progress.js.map +0 -1
  194. package/dist/events/cursor.d.ts +0 -43
  195. package/dist/events/cursor.js +0 -78
  196. package/dist/events/cursor.js.map +0 -1
  197. package/dist/events/memory-event-store.d.ts +0 -34
  198. package/dist/events/memory-event-store.js +0 -110
  199. package/dist/events/memory-event-store.js.map +0 -1
  200. package/dist/events/merge.d.ts +0 -23
  201. package/dist/events/merge.js +0 -97
  202. package/dist/events/merge.js.map +0 -1
  203. package/dist/events/normalized-collector.d.ts +0 -62
  204. package/dist/events/normalized-collector.js +0 -156
  205. package/dist/events/normalized-collector.js.map +0 -1
  206. package/dist/events/schema.d.ts +0 -9
  207. package/dist/events/schema.js +0 -93
  208. package/dist/events/schema.js.map +0 -1
  209. package/dist/events/snapshot.d.ts +0 -32
  210. package/dist/events/snapshot.js +0 -57
  211. package/dist/events/snapshot.js.map +0 -1
  212. package/dist/events/stream-key.d.ts +0 -2
  213. package/dist/events/stream-key.js +0 -31
  214. package/dist/events/stream-key.js.map +0 -1
  215. package/dist/events/types.d.ts +0 -179
  216. package/dist/events/types.js +0 -66
  217. package/dist/events/types.js.map +0 -1
  218. package/dist/resume/memory-progress-store.d.ts +0 -39
  219. package/dist/resume/memory-progress-store.js +0 -82
  220. package/dist/resume/memory-progress-store.js.map +0 -1
  221. package/dist/resume/memory-recent-app-store.d.ts +0 -14
  222. package/dist/resume/memory-recent-app-store.js +0 -27
  223. package/dist/resume/memory-recent-app-store.js.map +0 -1
  224. package/dist/resume/memory-turn-store.d.ts +0 -18
  225. package/dist/resume/memory-turn-store.js +0 -73
  226. package/dist/resume/memory-turn-store.js.map +0 -1
  227. package/dist/resume/progress-key.d.ts +0 -21
  228. package/dist/resume/progress-key.js +0 -58
  229. package/dist/resume/progress-key.js.map +0 -1
  230. package/dist/resume/stores.d.ts +0 -14
  231. package/dist/resume/stores.js +0 -18
  232. package/dist/resume/stores.js.map +0 -1
  233. package/dist/resume/types.d.ts +0 -124
  234. package/dist/resume/types.js +0 -13
  235. package/dist/resume/types.js.map +0 -1
@@ -132,6 +132,27 @@ function buildProgress(status) {
132
132
  .replace(/^BUILD_STATUS_/, "");
133
133
  return BUILD_PROGRESS_BY_NAME[name] ?? "none";
134
134
  }
135
+ function liveEditStatus(status) {
136
+ const normalized = String(status)
137
+ .replace(/^LIVE_EDIT_STATUS_/, "")
138
+ .toUpperCase();
139
+ switch (normalized) {
140
+ case "1":
141
+ case "STARTING":
142
+ return "starting";
143
+ case "2":
144
+ case "ACTIVE":
145
+ return "active";
146
+ case "3":
147
+ case "TERMINATED":
148
+ return "terminated";
149
+ case "5":
150
+ case "TERMINATING":
151
+ return "terminating";
152
+ default:
153
+ return "unknown";
154
+ }
155
+ }
135
156
  export class HttpSuperblocksServerClient {
136
157
  identityTimeoutMs;
137
158
  readIdentity;
@@ -177,7 +198,7 @@ export class HttpSuperblocksServerClient {
177
198
  * capacity, and backing off is the whole point of it.
178
199
  */
179
200
  async request(path, init) {
180
- const retryable = (init.method ?? "GET").toUpperCase() === "GET";
201
+ const retryable = init.retry !== false && (init.method ?? "GET").toUpperCase() === "GET";
181
202
  let lastError;
182
203
  for (let attempt = 0; attempt <= (retryable ? READ_RETRY_ATTEMPTS : 0);) {
183
204
  try {
@@ -197,7 +218,7 @@ export class HttpSuperblocksServerClient {
197
218
  throw lastError;
198
219
  }
199
220
  async send(path, init) {
200
- const { apiKey, headers: callerHeaders, timeoutMs, ...rest } = init;
221
+ const { apiKey, headers: callerHeaders, retry: _retry, signal: callerSignal, timeoutMs, ...rest } = init;
201
222
  const bound = timeoutMs ?? this.timeoutMs;
202
223
  const mergedHeaders = new Headers(callerHeaders);
203
224
  // Auth and content-type are owned by this client — never override from callers.
@@ -205,16 +226,21 @@ export class HttpSuperblocksServerClient {
205
226
  if (!mergedHeaders.has("Content-Type")) {
206
227
  mergedHeaders.set("Content-Type", "application/json");
207
228
  }
229
+ const timeoutSignal = AbortSignal.timeout(bound);
208
230
  let response;
209
231
  try {
210
232
  response = await fetch(`${this.baseUrl()}${path}`, {
211
233
  ...rest,
212
234
  headers: mergedHeaders,
213
- signal: AbortSignal.timeout(bound),
235
+ signal: callerSignal
236
+ ? AbortSignal.any([callerSignal, timeoutSignal])
237
+ : timeoutSignal,
214
238
  });
215
239
  }
216
240
  catch (error) {
217
- if (error instanceof Error && error.name === "TimeoutError") {
241
+ if (timeoutSignal.aborted &&
242
+ error instanceof Error &&
243
+ error.name === "TimeoutError") {
218
244
  throw new Error(`Server ${path} timed out after ${bound}ms`);
219
245
  }
220
246
  throw error;
@@ -308,6 +334,10 @@ export class HttpSuperblocksServerClient {
308
334
  ...(input.templateName ? { templateName: input.templateName } : {}),
309
335
  }),
310
336
  method: "POST",
337
+ ...(input.signal ? { signal: input.signal } : {}),
338
+ ...(input.timeoutMs === undefined
339
+ ? {}
340
+ : { timeoutMs: input.timeoutMs }),
311
341
  });
312
342
  }
313
343
  async uploadAttachment(input) {
@@ -325,7 +355,7 @@ export class HttpSuperblocksServerClient {
325
355
  },
326
356
  prefix: "message-attachment",
327
357
  purpose: "attachment",
328
- scopeType: "app",
358
+ scopeType: input.applicationId?.trim() ? "app" : "org",
329
359
  });
330
360
  return {
331
361
  applicationId: response.applicationId,
@@ -339,28 +369,94 @@ export class HttpSuperblocksServerClient {
339
369
  };
340
370
  }
341
371
  async connectLiveEdit(input) {
372
+ const deadlineAtMs = Date.now() + this.timeoutMs;
342
373
  const branchSegment = input.branch
343
374
  ? `/branches/${encodeURIComponent(input.branch)}`
344
375
  : "";
345
- const data = await this.requestData(`/api/v3/applications/${input.applicationId}${branchSegment}/connect`, {
346
- apiKey: input.apiKey,
347
- method: "GET",
348
- });
349
- if (!data.sandboxStartData) {
350
- // Absent for a LOCAL lock — there is no remote sandbox to drive.
351
- throw new Error("Server returned no live edit session for this application");
352
- }
353
- return {
354
- liveEditId: data.sandboxStartData.sandboxId,
355
- liveEditUrl: data.sandboxStartData.pitcherURL,
356
- pitcherToken: data.sandboxStartData.pitcherToken,
357
- pitcherURL: data.sandboxStartData.pitcherURL,
376
+ const path = `/api/v3/applications/${input.applicationId}${branchSegment}/connect`;
377
+ let liveEditId = "session";
378
+ const deadlineError = () => new Error(`Live edit ${liveEditId} did not become active within ${this.timeoutMs}ms`);
379
+ const requestBeforeDeadline = async (query) => {
380
+ if (Date.now() >= deadlineAtMs) {
381
+ throw deadlineError();
382
+ }
383
+ try {
384
+ return await this.requestData(`${path}${query}`, {
385
+ apiKey: input.apiKey,
386
+ method: "GET",
387
+ retry: false,
388
+ timeoutMs: Math.max(1, deadlineAtMs - Date.now()),
389
+ });
390
+ }
391
+ catch (error) {
392
+ if (Date.now() >= deadlineAtMs) {
393
+ throw deadlineError();
394
+ }
395
+ throw error;
396
+ }
358
397
  };
398
+ let data = await requestBeforeDeadline("?returnBeforeReady=true");
399
+ let polled = false;
400
+ for (;;) {
401
+ const session = data.sandboxStartData;
402
+ if (!session) {
403
+ // Absent for a LOCAL lock — there is no remote sandbox to drive.
404
+ throw new Error("Server returned no live edit session for this application");
405
+ }
406
+ liveEditId = session.sandboxId || liveEditId;
407
+ const status = liveEditStatus(session.status);
408
+ if (session.pitcherURL &&
409
+ (session.status === undefined || status === "active")) {
410
+ return {
411
+ liveEditId: session.sandboxId,
412
+ liveEditUrl: session.pitcherURL,
413
+ pitcherToken: session.pitcherToken,
414
+ pitcherURL: session.pitcherURL,
415
+ };
416
+ }
417
+ if (status !== "starting") {
418
+ throw new Error(`Live edit ${session.sandboxId || "session"} is not connectable (${status})`);
419
+ }
420
+ if (polled) {
421
+ await delay(Math.min(1_000, Math.max(0, deadlineAtMs - Date.now())));
422
+ }
423
+ if (Date.now() >= deadlineAtMs) {
424
+ throw deadlineError();
425
+ }
426
+ polled = true;
427
+ data = await requestBeforeDeadline(`?liveEditId=${encodeURIComponent(session.sandboxId)}`);
428
+ }
429
+ }
430
+ async getLiveEditStatus(input) {
431
+ const branchSegment = input.branch
432
+ ? `/branches/${encodeURIComponent(input.branch)}`
433
+ : "";
434
+ const path = `/api/v3/applications/${input.applicationId}${branchSegment}/connect?liveEditId=${encodeURIComponent(input.liveEditId)}`;
435
+ try {
436
+ const data = await this.requestData(path, {
437
+ apiKey: input.apiKey,
438
+ method: "GET",
439
+ retry: false,
440
+ signal: input.signal,
441
+ });
442
+ if (data.sandboxStartData?.sandboxId !== input.liveEditId) {
443
+ return "unknown";
444
+ }
445
+ return liveEditStatus(data.sandboxStartData.status);
446
+ }
447
+ catch (error) {
448
+ if (error instanceof ServerHttpError && error.status === 404) {
449
+ // This route also returns 404 for an expired or mismatched editor lock
450
+ // before it queries SABS, so 404 does not prove the live edit is gone.
451
+ return "unknown";
452
+ }
453
+ throw error;
454
+ }
359
455
  }
360
456
  /**
361
- * Mints the credential the live-edit session accepts. Connect's
362
- * `pitcherToken` is a placeholder in the local sandbox path, so the editor
363
- * mints this separately and so must anything else driving a session.
457
+ * Mints an application-scoped credential. Connect's `pitcherToken` is a
458
+ * placeholder in the local sandbox path, so live-edit callers mint their
459
+ * own token here too.
364
460
  */
365
461
  async issueScopedToken(input) {
366
462
  // Alone among the routes here, this one answers with a bare OAuth-shaped
@@ -456,6 +552,8 @@ export class HttpSuperblocksServerClient {
456
552
  lastSuccessfulWrite: Date.now(),
457
553
  }),
458
554
  method: "POST",
555
+ ...(input.signal ? { signal: input.signal } : {}),
556
+ ...(input.timeoutMs !== undefined ? { timeoutMs: input.timeoutMs } : {}),
459
557
  });
460
558
  return {
461
559
  commitId: data.commitId,
@@ -487,6 +585,8 @@ export class HttpSuperblocksServerClient {
487
585
  apiKey: input.apiKey,
488
586
  body: JSON.stringify({ directoryHashes: [input.directoryHash] }),
489
587
  method: "POST",
588
+ ...(input.signal ? { signal: input.signal } : {}),
589
+ ...(input.timeoutMs !== undefined ? { timeoutMs: input.timeoutMs } : {}),
490
590
  });
491
591
  // Absent for content SABS has never built. Same meaning as UNSPECIFIED:
492
592
  // there is no build to wait for.
@@ -501,6 +601,8 @@ export class HttpSuperblocksServerClient {
501
601
  // fixed by the commit being deployed.
502
602
  body: JSON.stringify({ commitId: input.commitId }),
503
603
  method: "POST",
604
+ ...(input.signal ? { signal: input.signal } : {}),
605
+ ...(input.timeoutMs !== undefined ? { timeoutMs: input.timeoutMs } : {}),
504
606
  });
505
607
  if (body?.data?.deploymentId) {
506
608
  return { deploymentId: body.data.deploymentId, status: "deployed" };
@@ -520,6 +622,9 @@ export class HttpSuperblocksServerClient {
520
622
  const body = await this.request(path, {
521
623
  apiKey: input.apiKey,
522
624
  method: "GET",
625
+ retry: false,
626
+ ...(input.signal ? { signal: input.signal } : {}),
627
+ ...(input.timeoutMs !== undefined ? { timeoutMs: input.timeoutMs } : {}),
523
628
  });
524
629
  const status = body?.status;
525
630
  if (status === "none" ||
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/server/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/server/client.ts"],"names":[],"mappings":"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"}
package/dist/start.d.ts CHANGED
@@ -19,6 +19,6 @@ export declare function createRuntime(apiKey: string): Promise<{
19
19
  }>;
20
20
  /**
21
21
  * Boots Gateway MCP over stdio as the CLI user. Shared by
22
- * `superblocks gateway serve` (the IR path) and `node dist/main.js`.
22
+ * `superblocks mcp serve` (the IR path) and `node dist/main.js`.
23
23
  */
24
24
  export declare function startStdioGateway(options: StartGatewayOptions): Promise<StartedGateway>;
package/dist/start.js CHANGED
@@ -1,9 +1,11 @@
1
1
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
2
2
  import { loadConfig } from "./config.js";
3
+ import { captureCheckpointScreenshotWithPlaywright } from "./preview/capture-screenshot.js";
3
4
  import { installFaultBarrier } from "./process/fault-barrier.js";
4
- import { createStores } from "./resume/stores.js";
5
+ import { AppState } from "./sabs/app-state.js";
5
6
  import { WebSocketSessionPeer } from "./sabs/websocket-session-peer.js";
6
7
  import { HttpSuperblocksServerClient } from "./server/client.js";
8
+ import { createStores } from "./stores/memory.js";
7
9
  import { startGatewayTelemetry } from "./telemetry/runtime.js";
8
10
  import { createMcpServer } from "./transports/mcp/mount.js";
9
11
  /**
@@ -12,11 +14,32 @@ import { createMcpServer } from "./transports/mcp/mount.js";
12
14
  */
13
15
  export async function createRuntime(apiKey) {
14
16
  const config = loadConfig();
15
- const stores = await createStores();
17
+ const stores = createStores();
16
18
  const telemetry = startGatewayTelemetry({ apiKey, config });
17
19
  const serverClient = new HttpSuperblocksServerClient(config.serverUrl);
20
+ const appState = new AppState();
18
21
  const sessionPeer = new WebSocketSessionPeer({
22
+ appState,
19
23
  beatLostGraceMs: config.beatLostGraceMs,
24
+ captureCheckpointScreenshot: async ({ applicationId, commitId, sessionToken, }) => {
25
+ const previewToken = config.deployedShellBaseUrl
26
+ ? await serverClient.issueScopedToken({
27
+ apiKey,
28
+ applicationId,
29
+ commitId,
30
+ scope: "apps:preview",
31
+ })
32
+ : undefined;
33
+ return captureCheckpointScreenshotWithPlaywright({
34
+ applicationId,
35
+ commitId,
36
+ deployedShellBaseUrl: config.deployedShellBaseUrl,
37
+ previewToken,
38
+ sessionToken,
39
+ trustedOrigin: config.serverUrl,
40
+ uiBaseUrl: config.uiBaseUrl,
41
+ });
42
+ },
20
43
  idleMs: config.heldSessionIdleMs,
21
44
  profileKey: config.profileKey,
22
45
  readyWaitMs: config.clarkReadyWaitMs,
@@ -24,32 +47,31 @@ export async function createRuntime(apiKey) {
24
47
  server: serverClient,
25
48
  settleMs: config.clarkSettleMs,
26
49
  testingEnabled: config.clarkTestingEnabled,
27
- turnTimeoutMs: config.clarkTurnTimeoutMs,
28
50
  uiBaseUrl: config.uiBaseUrl,
29
51
  });
30
52
  const deps = {
53
+ appState,
31
54
  cliApiKey: apiKey,
32
55
  config,
33
- events: stores.events,
56
+ progress: stores.progress,
34
57
  mcpTelemetry: telemetry.mcpTelemetry,
35
- progressCursors: stores.progressCursors,
36
58
  recentApps: stores.recentApps,
37
59
  server: serverClient,
38
60
  sessionPeer,
39
- turns: stores.turns,
61
+ stepUpTurns: stores.stepUpTurns,
40
62
  };
41
63
  return {
42
64
  config,
43
65
  deps,
44
66
  close: async () => {
45
67
  sessionPeer.closeAll();
46
- await Promise.allSettled([stores.close(), telemetry.shutdown()]);
68
+ await telemetry.shutdown();
47
69
  },
48
70
  };
49
71
  }
50
72
  /**
51
73
  * Boots Gateway MCP over stdio as the CLI user. Shared by
52
- * `superblocks gateway serve` (the IR path) and `node dist/main.js`.
74
+ * `superblocks mcp serve` (the IR path) and `node dist/main.js`.
53
75
  */
54
76
  export async function startStdioGateway(options) {
55
77
  const apiKey = options.apiKey.trim();
package/dist/start.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"start.js","sourceRoot":"","sources":["../src/start.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../src/start.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import { type AppScopeKey, type ProgressStore, type RecentApp, type RecentAppStore, type StepUpTurn, type StepUpTurnStore, type UserScopeKey } from "./types.js";
2
+ export declare class MemoryRecentAppStore implements RecentAppStore {
3
+ private readonly byUser;
4
+ recent(key: UserScopeKey, withinMs: number): RecentApp | undefined;
5
+ recentForApplication(key: UserScopeKey, applicationId: string, withinMs: number): RecentApp | undefined;
6
+ recentUnambiguous(key: UserScopeKey, withinMs: number): RecentApp | undefined;
7
+ set(input: UserScopeKey & RecentApp & {
8
+ atMs?: number;
9
+ }): void;
10
+ /** Newest first, because callers set explicit timestamps out of order. */
11
+ private within;
12
+ }
13
+ export declare class MemoryProgressStore implements ProgressStore {
14
+ private readonly byApp;
15
+ lastActivityAtMs(key: AppScopeKey): number | undefined;
16
+ recordActivity(input: AppScopeKey & {
17
+ atMs: number;
18
+ }): void;
19
+ stallHintedAtMs(key: AppScopeKey): number | undefined;
20
+ recordStallHint(input: AppScopeKey & {
21
+ atMs: number | undefined;
22
+ }): void;
23
+ private entry;
24
+ }
25
+ export declare class MemoryStepUpTurnStore implements StepUpTurnStore {
26
+ private readonly byId;
27
+ private readonly byIdempotency;
28
+ create(input: {
29
+ authUrl: string;
30
+ callbackToken?: string;
31
+ idempotencyKey: string;
32
+ reason: StepUpTurn["reason"];
33
+ ttlMs?: number;
34
+ turnId?: string;
35
+ }): StepUpTurn;
36
+ get(turnId: string): StepUpTurn | undefined;
37
+ getByIdempotencyKey(idempotencyKey: string): StepUpTurn | undefined;
38
+ complete(turnId: string, callbackToken: string): StepUpTurn | undefined;
39
+ private expireIfDue;
40
+ }
41
+ export type Stores = {
42
+ progress: ProgressStore;
43
+ recentApps: RecentAppStore;
44
+ stepUpTurns: StepUpTurnStore;
45
+ };
46
+ export declare function createStores(): Stores;
@@ -0,0 +1,163 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { constantTimeEquals } from "../security/constant-time.js";
3
+ import { DEFAULT_STEP_UP_TTL_MS, } from "./types.js";
4
+ function appKey(key) {
5
+ return `${key.organizationId}/${key.applicationId}`;
6
+ }
7
+ function userKey(key) {
8
+ return `${key.organizationId}/${key.userId}`;
9
+ }
10
+ /**
11
+ * How many applications one user's history keeps. This bounds exact-app and
12
+ * ambiguity lookups; it is not a durable activity log.
13
+ */
14
+ const RECENT_APP_HISTORY_LIMIT = 10;
15
+ function toRecentApp(entry) {
16
+ if (!entry) {
17
+ return undefined;
18
+ }
19
+ return {
20
+ applicationId: entry.applicationId,
21
+ ...(entry.branch ? { branch: entry.branch } : {}),
22
+ };
23
+ }
24
+ export class MemoryRecentAppStore {
25
+ byUser = new Map();
26
+ recent(key, withinMs) {
27
+ return toRecentApp(this.within(key, withinMs)[0]);
28
+ }
29
+ recentForApplication(key, applicationId, withinMs) {
30
+ return toRecentApp(this.within(key, withinMs).find((entry) => entry.applicationId === applicationId));
31
+ }
32
+ recentUnambiguous(key, withinMs) {
33
+ const entries = this.within(key, withinMs);
34
+ const distinct = new Set(entries.map((entry) => entry.applicationId));
35
+ return distinct.size === 1 ? toRecentApp(entries[0]) : undefined;
36
+ }
37
+ set(input) {
38
+ const entries = this.byUser.get(userKey(input)) ?? [];
39
+ // Callers that do not deal in branches (a publish poll, a preview) must not
40
+ // erase the branch an earlier edit of the same application recorded.
41
+ const previous = entries.find((entry) => entry.applicationId === input.applicationId);
42
+ const branch = input.branch ?? previous?.branch;
43
+ const entry = {
44
+ applicationId: input.applicationId,
45
+ atMs: input.atMs ?? Date.now(),
46
+ ...(branch ? { branch } : {}),
47
+ };
48
+ this.byUser.set(userKey(input), [
49
+ entry,
50
+ ...entries.filter((e) => e.applicationId !== input.applicationId),
51
+ ].slice(0, RECENT_APP_HISTORY_LIMIT));
52
+ }
53
+ /** Newest first, because callers set explicit timestamps out of order. */
54
+ within(key, withinMs) {
55
+ const now = Date.now();
56
+ return (this.byUser.get(userKey(key)) ?? [])
57
+ .filter((entry) => now - entry.atMs <= withinMs)
58
+ .sort((a, b) => b.atMs - a.atMs);
59
+ }
60
+ }
61
+ export class MemoryProgressStore {
62
+ byApp = new Map();
63
+ lastActivityAtMs(key) {
64
+ return this.byApp.get(appKey(key))?.lastActivityAtMs;
65
+ }
66
+ recordActivity(input) {
67
+ this.entry(input).lastActivityAtMs = input.atMs;
68
+ }
69
+ stallHintedAtMs(key) {
70
+ return this.byApp.get(appKey(key))?.stallHintedAtMs;
71
+ }
72
+ recordStallHint(input) {
73
+ const entry = this.entry(input);
74
+ if (input.atMs === undefined) {
75
+ delete entry.stallHintedAtMs;
76
+ return;
77
+ }
78
+ entry.stallHintedAtMs = input.atMs;
79
+ }
80
+ entry(key) {
81
+ const id = appKey(key);
82
+ const existing = this.byApp.get(id);
83
+ if (existing) {
84
+ return existing;
85
+ }
86
+ const created = {};
87
+ this.byApp.set(id, created);
88
+ return created;
89
+ }
90
+ }
91
+ export class MemoryStepUpTurnStore {
92
+ byId = new Map();
93
+ byIdempotency = new Map();
94
+ create(input) {
95
+ const existingId = this.byIdempotency.get(input.idempotencyKey);
96
+ if (existingId) {
97
+ const existing = this.get(existingId);
98
+ if (existing && existing.status !== "expired") {
99
+ return existing;
100
+ }
101
+ }
102
+ const now = Date.now();
103
+ const turn = {
104
+ authUrl: input.authUrl,
105
+ callbackToken: input.callbackToken ?? randomUUID(),
106
+ createdAtMs: now,
107
+ idempotencyKey: input.idempotencyKey,
108
+ reason: input.reason,
109
+ status: "pending",
110
+ turnId: input.turnId ?? randomUUID(),
111
+ };
112
+ this.byId.set(turn.turnId, {
113
+ expiresAtMs: now + (input.ttlMs ?? DEFAULT_STEP_UP_TTL_MS),
114
+ turn,
115
+ });
116
+ this.byIdempotency.set(input.idempotencyKey, turn.turnId);
117
+ return turn;
118
+ }
119
+ get(turnId) {
120
+ const entry = this.byId.get(turnId);
121
+ if (!entry) {
122
+ return undefined;
123
+ }
124
+ return this.expireIfDue(entry) ?? entry.turn;
125
+ }
126
+ getByIdempotencyKey(idempotencyKey) {
127
+ const turnId = this.byIdempotency.get(idempotencyKey);
128
+ return turnId === undefined ? undefined : this.get(turnId);
129
+ }
130
+ complete(turnId, callbackToken) {
131
+ const entry = this.byId.get(turnId);
132
+ if (!entry) {
133
+ return undefined;
134
+ }
135
+ const expired = this.expireIfDue(entry);
136
+ if (expired) {
137
+ return expired;
138
+ }
139
+ // Constant-time because the token is the only thing standing between a
140
+ // caller and someone else's completed step-up.
141
+ if (!constantTimeEquals(entry.turn.callbackToken, callbackToken)) {
142
+ return undefined;
143
+ }
144
+ entry.turn = { ...entry.turn, status: "ready" };
145
+ return entry.turn;
146
+ }
147
+ expireIfDue(entry) {
148
+ if (Date.now() < entry.expiresAtMs) {
149
+ return undefined;
150
+ }
151
+ this.byId.delete(entry.turn.turnId);
152
+ this.byIdempotency.delete(entry.turn.idempotencyKey);
153
+ return { ...entry.turn, status: "expired" };
154
+ }
155
+ }
156
+ export function createStores() {
157
+ return {
158
+ progress: new MemoryProgressStore(),
159
+ recentApps: new MemoryRecentAppStore(),
160
+ stepUpTurns: new MemoryStepUpTurnStore(),
161
+ };
162
+ }
163
+ //# sourceMappingURL=memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/stores/memory.ts"],"names":[],"mappings":"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"}