@superblocksteam/gateway 2.0.0-SNAPSHOT.2161f9a02a4eb5d8

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 (239) hide show
  1. package/LICENSE.txt +87 -0
  2. package/README.md +284 -0
  3. package/dist/agents/resolve-orchestrator-url.d.ts +22 -0
  4. package/dist/agents/resolve-orchestrator-url.js +38 -0
  5. package/dist/agents/resolve-orchestrator-url.js.map +1 -0
  6. package/dist/capabilities/integration-metadata.d.ts +28 -0
  7. package/dist/capabilities/integration-metadata.js +174 -0
  8. package/dist/capabilities/integration-metadata.js.map +1 -0
  9. package/dist/capabilities/lifecycle.d.ts +93 -0
  10. package/dist/capabilities/lifecycle.js +3417 -0
  11. package/dist/capabilities/lifecycle.js.map +1 -0
  12. package/dist/capabilities/query-integration.d.ts +14 -0
  13. package/dist/capabilities/query-integration.js +172 -0
  14. package/dist/capabilities/query-integration.js.map +1 -0
  15. package/dist/capabilities/source-files-archive.d.ts +11 -0
  16. package/dist/capabilities/source-files-archive.js +54 -0
  17. package/dist/capabilities/source-files-archive.js.map +1 -0
  18. package/dist/capabilities/types.d.ts +542 -0
  19. package/dist/capabilities/types.js +86 -0
  20. package/dist/capabilities/types.js.map +1 -0
  21. package/dist/capture/browser-contract.d.ts +46 -0
  22. package/dist/capture/browser-contract.js +34 -0
  23. package/dist/capture/browser-contract.js.map +1 -0
  24. package/dist/capture/browser-instructions.d.ts +10 -0
  25. package/dist/capture/browser-instructions.js +18 -0
  26. package/dist/capture/browser-instructions.js.map +1 -0
  27. package/dist/capture/capture-library-probe.d.ts +55 -0
  28. package/dist/capture/capture-library-probe.js +177 -0
  29. package/dist/capture/capture-library-probe.js.map +1 -0
  30. package/dist/capture/capture-library.d.ts +52 -0
  31. package/dist/capture/capture-library.js +249 -0
  32. package/dist/capture/capture-library.js.map +1 -0
  33. package/dist/capture/classify-library-paint.d.ts +21 -0
  34. package/dist/capture/classify-library-paint.js +13 -0
  35. package/dist/capture/classify-library-paint.js.map +1 -0
  36. package/dist/capture/host-mcp-scan.d.ts +16 -0
  37. package/dist/capture/host-mcp-scan.js +64 -0
  38. package/dist/capture/host-mcp-scan.js.map +1 -0
  39. package/dist/capture/library-parent-script.d.ts +35 -0
  40. package/dist/capture/library-parent-script.js +82 -0
  41. package/dist/capture/library-parent-script.js.map +1 -0
  42. package/dist/capture/mode.d.ts +29 -0
  43. package/dist/capture/mode.js +65 -0
  44. package/dist/capture/mode.js.map +1 -0
  45. package/dist/config.d.ts +148 -0
  46. package/dist/config.js +112 -0
  47. package/dist/config.js.map +1 -0
  48. package/dist/debug.d.ts +2 -0
  49. package/dist/debug.js +9 -0
  50. package/dist/debug.js.map +1 -0
  51. package/dist/deps.d.ts +38 -0
  52. package/dist/deps.js +2 -0
  53. package/dist/deps.js.map +1 -0
  54. package/dist/health/readiness.d.ts +99 -0
  55. package/dist/health/readiness.js +202 -0
  56. package/dist/health/readiness.js.map +1 -0
  57. package/dist/index.d.ts +8 -0
  58. package/dist/index.js +8 -0
  59. package/dist/index.js.map +1 -0
  60. package/dist/integrations/filters.d.ts +8 -0
  61. package/dist/integrations/filters.js +40 -0
  62. package/dist/integrations/filters.js.map +1 -0
  63. package/dist/integrations/map.d.ts +27 -0
  64. package/dist/integrations/map.js +43 -0
  65. package/dist/integrations/map.js.map +1 -0
  66. package/dist/integrations/profile-key.d.ts +19 -0
  67. package/dist/integrations/profile-key.js +35 -0
  68. package/dist/integrations/profile-key.js.map +1 -0
  69. package/dist/integrations/read-only-postgres-query.d.ts +2 -0
  70. package/dist/integrations/read-only-postgres-query.js +164 -0
  71. package/dist/integrations/read-only-postgres-query.js.map +1 -0
  72. package/dist/main.d.ts +2 -0
  73. package/dist/main.js +5 -0
  74. package/dist/main.js.map +1 -0
  75. package/dist/orchestrator/client.d.ts +62 -0
  76. package/dist/orchestrator/client.js +160 -0
  77. package/dist/orchestrator/client.js.map +1 -0
  78. package/dist/playwright/ensure-chromium.d.ts +23 -0
  79. package/dist/playwright/ensure-chromium.js +59 -0
  80. package/dist/playwright/ensure-chromium.js.map +1 -0
  81. package/dist/preview/capture-screenshot.d.ts +67 -0
  82. package/dist/preview/capture-screenshot.js +179 -0
  83. package/dist/preview/capture-screenshot.js.map +1 -0
  84. package/dist/preview/viewer-url.d.ts +82 -0
  85. package/dist/preview/viewer-url.js +130 -0
  86. package/dist/preview/viewer-url.js.map +1 -0
  87. package/dist/process/fault-barrier.d.ts +55 -0
  88. package/dist/process/fault-barrier.js +113 -0
  89. package/dist/process/fault-barrier.js.map +1 -0
  90. package/dist/sabs/agent-facing-text.d.ts +35 -0
  91. package/dist/sabs/agent-facing-text.js +165 -0
  92. package/dist/sabs/agent-facing-text.js.map +1 -0
  93. package/dist/sabs/app-state.d.ts +133 -0
  94. package/dist/sabs/app-state.js +347 -0
  95. package/dist/sabs/app-state.js.map +1 -0
  96. package/dist/sabs/awaited-decision.d.ts +47 -0
  97. package/dist/sabs/awaited-decision.js +124 -0
  98. package/dist/sabs/awaited-decision.js.map +1 -0
  99. package/dist/sabs/browser-context.d.ts +53 -0
  100. package/dist/sabs/browser-context.js +92 -0
  101. package/dist/sabs/browser-context.js.map +1 -0
  102. package/dist/sabs/editor-client-methods.d.ts +164 -0
  103. package/dist/sabs/editor-client-methods.js +749 -0
  104. package/dist/sabs/editor-client-methods.js.map +1 -0
  105. package/dist/sabs/editor-socket.d.ts +84 -0
  106. package/dist/sabs/editor-socket.js +64 -0
  107. package/dist/sabs/editor-socket.js.map +1 -0
  108. package/dist/sabs/recent-tool-runs.d.ts +14 -0
  109. package/dist/sabs/recent-tool-runs.js +61 -0
  110. package/dist/sabs/recent-tool-runs.js.map +1 -0
  111. package/dist/sabs/session-peer.d.ts +386 -0
  112. package/dist/sabs/session-peer.js +11 -0
  113. package/dist/sabs/session-peer.js.map +1 -0
  114. package/dist/sabs/streamed-reply.d.ts +42 -0
  115. package/dist/sabs/streamed-reply.js +110 -0
  116. package/dist/sabs/streamed-reply.js.map +1 -0
  117. package/dist/sabs/turn-collector.d.ts +169 -0
  118. package/dist/sabs/turn-collector.js +512 -0
  119. package/dist/sabs/turn-collector.js.map +1 -0
  120. package/dist/sabs/websocket-session-peer.d.ts +533 -0
  121. package/dist/sabs/websocket-session-peer.js +3241 -0
  122. package/dist/sabs/websocket-session-peer.js.map +1 -0
  123. package/dist/security/constant-time.d.ts +9 -0
  124. package/dist/security/constant-time.js +13 -0
  125. package/dist/security/constant-time.js.map +1 -0
  126. package/dist/server/client.d.ts +400 -0
  127. package/dist/server/client.js +649 -0
  128. package/dist/server/client.js.map +1 -0
  129. package/dist/server/identity-reads.d.ts +76 -0
  130. package/dist/server/identity-reads.js +209 -0
  131. package/dist/server/identity-reads.js.map +1 -0
  132. package/dist/start.d.ts +24 -0
  133. package/dist/start.js +81 -0
  134. package/dist/start.js.map +1 -0
  135. package/dist/stores/memory.d.ts +42 -0
  136. package/dist/stores/memory.js +121 -0
  137. package/dist/stores/memory.js.map +1 -0
  138. package/dist/stores/types.d.ts +74 -0
  139. package/dist/stores/types.js +11 -0
  140. package/dist/stores/types.js.map +1 -0
  141. package/dist/telemetry/mcp-client.d.ts +22 -0
  142. package/dist/telemetry/mcp-client.js +140 -0
  143. package/dist/telemetry/mcp-client.js.map +1 -0
  144. package/dist/telemetry/metrics.d.ts +41 -0
  145. package/dist/telemetry/metrics.js +103 -0
  146. package/dist/telemetry/metrics.js.map +1 -0
  147. package/dist/telemetry/runtime.d.ts +9 -0
  148. package/dist/telemetry/runtime.js +118 -0
  149. package/dist/telemetry/runtime.js.map +1 -0
  150. package/dist/transports/mcp/admin-tools.d.ts +51 -0
  151. package/dist/transports/mcp/admin-tools.js +211 -0
  152. package/dist/transports/mcp/admin-tools.js.map +1 -0
  153. package/dist/transports/mcp/app-status-html.d.ts +11 -0
  154. package/dist/transports/mcp/app-status-html.js +899 -0
  155. package/dist/transports/mcp/app-status-html.js.map +1 -0
  156. package/dist/transports/mcp/client-presentation.d.ts +16 -0
  157. package/dist/transports/mcp/client-presentation.js +13 -0
  158. package/dist/transports/mcp/client-presentation.js.map +1 -0
  159. package/dist/transports/mcp/decision-card-html.d.ts +26 -0
  160. package/dist/transports/mcp/decision-card-html.js +876 -0
  161. package/dist/transports/mcp/decision-card-html.js.map +1 -0
  162. package/dist/transports/mcp/decision-elicitation.d.ts +116 -0
  163. package/dist/transports/mcp/decision-elicitation.js +292 -0
  164. package/dist/transports/mcp/decision-elicitation.js.map +1 -0
  165. package/dist/transports/mcp/dispatch-probe.d.ts +24 -0
  166. package/dist/transports/mcp/dispatch-probe.js +48 -0
  167. package/dist/transports/mcp/dispatch-probe.js.map +1 -0
  168. package/dist/transports/mcp/format-tool-content.d.ts +20 -0
  169. package/dist/transports/mcp/format-tool-content.js +89 -0
  170. package/dist/transports/mcp/format-tool-content.js.map +1 -0
  171. package/dist/transports/mcp/instructions/index.d.ts +23 -0
  172. package/dist/transports/mcp/instructions/index.js +81 -0
  173. package/dist/transports/mcp/instructions/index.js.map +1 -0
  174. package/dist/transports/mcp/instructions/result.d.ts +18 -0
  175. package/dist/transports/mcp/instructions/result.js +58 -0
  176. package/dist/transports/mcp/instructions/result.js.map +1 -0
  177. package/dist/transports/mcp/instructions/tools/ask-user.d.ts +2 -0
  178. package/dist/transports/mcp/instructions/tools/ask-user.js +17 -0
  179. package/dist/transports/mcp/instructions/tools/ask-user.js.map +1 -0
  180. package/dist/transports/mcp/instructions/tools/check-app-progress.d.ts +3 -0
  181. package/dist/transports/mcp/instructions/tools/check-app-progress.js +72 -0
  182. package/dist/transports/mcp/instructions/tools/check-app-progress.js.map +1 -0
  183. package/dist/transports/mcp/instructions/tools/check-publish-progress.d.ts +2 -0
  184. package/dist/transports/mcp/instructions/tools/check-publish-progress.js +14 -0
  185. package/dist/transports/mcp/instructions/tools/check-publish-progress.js.map +1 -0
  186. package/dist/transports/mcp/instructions/tools/copy.d.ts +8 -0
  187. package/dist/transports/mcp/instructions/tools/copy.js +19 -0
  188. package/dist/transports/mcp/instructions/tools/copy.js.map +1 -0
  189. package/dist/transports/mcp/instructions/tools/create-integration.d.ts +3 -0
  190. package/dist/transports/mcp/instructions/tools/create-integration.js +32 -0
  191. package/dist/transports/mcp/instructions/tools/create-integration.js.map +1 -0
  192. package/dist/transports/mcp/instructions/tools/edit-app.d.ts +2 -0
  193. package/dist/transports/mcp/instructions/tools/edit-app.js +14 -0
  194. package/dist/transports/mcp/instructions/tools/edit-app.js.map +1 -0
  195. package/dist/transports/mcp/instructions/tools/get-app.d.ts +3 -0
  196. package/dist/transports/mcp/instructions/tools/get-app.js +47 -0
  197. package/dist/transports/mcp/instructions/tools/get-app.js.map +1 -0
  198. package/dist/transports/mcp/instructions/tools/get-integration-metadata.d.ts +2 -0
  199. package/dist/transports/mcp/instructions/tools/get-integration-metadata.js +13 -0
  200. package/dist/transports/mcp/instructions/tools/get-integration-metadata.js.map +1 -0
  201. package/dist/transports/mcp/instructions/tools/index.d.ts +7 -0
  202. package/dist/transports/mcp/instructions/tools/index.js +26 -0
  203. package/dist/transports/mcp/instructions/tools/index.js.map +1 -0
  204. package/dist/transports/mcp/instructions/tools/preview-app.d.ts +3 -0
  205. package/dist/transports/mcp/instructions/tools/preview-app.js +14 -0
  206. package/dist/transports/mcp/instructions/tools/preview-app.js.map +1 -0
  207. package/dist/transports/mcp/instructions/tools/publish-app.d.ts +2 -0
  208. package/dist/transports/mcp/instructions/tools/publish-app.js +11 -0
  209. package/dist/transports/mcp/instructions/tools/publish-app.js.map +1 -0
  210. package/dist/transports/mcp/instructions/tools/start-app.d.ts +2 -0
  211. package/dist/transports/mcp/instructions/tools/start-app.js +18 -0
  212. package/dist/transports/mcp/instructions/tools/start-app.js.map +1 -0
  213. package/dist/transports/mcp/instructions/tools/upload-artifact.d.ts +2 -0
  214. package/dist/transports/mcp/instructions/tools/upload-artifact.js +13 -0
  215. package/dist/transports/mcp/instructions/tools/upload-artifact.js.map +1 -0
  216. package/dist/transports/mcp/mcp-app-brand-css.d.ts +1 -0
  217. package/dist/transports/mcp/mcp-app-brand-css.js +180 -0
  218. package/dist/transports/mcp/mcp-app-brand-css.js.map +1 -0
  219. package/dist/transports/mcp/mount.d.ts +21 -0
  220. package/dist/transports/mcp/mount.js +968 -0
  221. package/dist/transports/mcp/mount.js.map +1 -0
  222. package/dist/transports/mcp/native-browser-presence.d.ts +45 -0
  223. package/dist/transports/mcp/native-browser-presence.js +158 -0
  224. package/dist/transports/mcp/native-browser-presence.js.map +1 -0
  225. package/dist/transports/mcp/plan-approval.d.ts +38 -0
  226. package/dist/transports/mcp/plan-approval.js +175 -0
  227. package/dist/transports/mcp/plan-approval.js.map +1 -0
  228. package/dist/transports/mcp/progress-notifier.d.ts +39 -0
  229. package/dist/transports/mcp/progress-notifier.js +52 -0
  230. package/dist/transports/mcp/progress-notifier.js.map +1 -0
  231. package/dist/transports/mcp/session-directory.d.ts +7 -0
  232. package/dist/transports/mcp/session-directory.js +18 -0
  233. package/dist/transports/mcp/session-directory.js.map +1 -0
  234. package/dist/transports/mcp/tool-names.d.ts +2 -0
  235. package/dist/transports/mcp/tool-names.js +2 -0
  236. package/dist/transports/mcp/tool-names.js.map +1 -0
  237. package/package.json +78 -0
  238. package/skills/superblocks-build/SKILL.md +59 -0
  239. package/skills/superblocks-import/SKILL.md +87 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mount.js","sourceRoot":"","sources":["../../../src/transports/mcp/mount.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ type NativeBrowserPresenceOptions = {
2
+ directory: string;
3
+ isAlive?: (pid: number) => boolean;
4
+ now?: () => number;
5
+ pid?: number;
6
+ ttlMs?: number;
7
+ };
8
+ export declare function nativeBrowserPresenceDirectory(apiKey: string, serverUrl: string): string;
9
+ /**
10
+ * Which of a session's gateway processes are serving a host that drives its own
11
+ * browser.
12
+ *
13
+ * One host can spawn two gateways from a single config entry, and they meet
14
+ * different clients: Cowork's agent gets `browserNavigation` and opens the app
15
+ * in its embedded browser, while the desktop client alongside it looks like any
16
+ * MCP Apps host and would open a status card for the app already on screen.
17
+ * Nothing in the MCP session links the two, so the process serving the browser
18
+ * records itself here and the other reads it.
19
+ *
20
+ * Every call is synchronous because the answer decides what goes in a tool list
21
+ * during `initialize`. A card withheld a tick late is a card a host can capture
22
+ * and then have taken away, which is the flicker this exists to prevent.
23
+ */
24
+ export declare class NativeBrowserPresence {
25
+ private readonly directory;
26
+ private readonly isAlive;
27
+ private readonly now;
28
+ private readonly pid;
29
+ private readonly ttlMs;
30
+ constructor(options: NativeBrowserPresenceOptions);
31
+ /** Whether another gateway process is serving a host with its own browser. */
32
+ active(): boolean;
33
+ /** Records that this process serves a host with its own browser. */
34
+ announce(): void;
35
+ withdraw(): void;
36
+ /** Calls back once no gateway process is serving a native browser. */
37
+ whenInactive(callback: () => void): () => void;
38
+ /** An unreadable or unparsable marker counts as expired, so it gets swept. */
39
+ private announcedAt;
40
+ private believable;
41
+ private markerPath;
42
+ private markers;
43
+ private remove;
44
+ }
45
+ export {};
@@ -0,0 +1,158 @@
1
+ import { mkdirSync, readFileSync, readdirSync, rmSync, watch, writeFileSync, } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { sessionDirectory } from "./session-directory.js";
4
+ /**
5
+ * How long a marker is believed once its process can no longer be found alive.
6
+ * Liveness is the real check; this only guards against a recycled pid.
7
+ */
8
+ const DEFAULT_TTL_MS = 12 * 60 * 60 * 1000;
9
+ const MARKER_PREFIX = "host-";
10
+ const RECHECK_INTERVAL_MS = 1_000;
11
+ export function nativeBrowserPresenceDirectory(apiKey, serverUrl) {
12
+ return sessionDirectory(apiKey, serverUrl, "native-browser");
13
+ }
14
+ /**
15
+ * Which of a session's gateway processes are serving a host that drives its own
16
+ * browser.
17
+ *
18
+ * One host can spawn two gateways from a single config entry, and they meet
19
+ * different clients: Cowork's agent gets `browserNavigation` and opens the app
20
+ * in its embedded browser, while the desktop client alongside it looks like any
21
+ * MCP Apps host and would open a status card for the app already on screen.
22
+ * Nothing in the MCP session links the two, so the process serving the browser
23
+ * records itself here and the other reads it.
24
+ *
25
+ * Every call is synchronous because the answer decides what goes in a tool list
26
+ * during `initialize`. A card withheld a tick late is a card a host can capture
27
+ * and then have taken away, which is the flicker this exists to prevent.
28
+ */
29
+ export class NativeBrowserPresence {
30
+ directory;
31
+ isAlive;
32
+ now;
33
+ pid;
34
+ ttlMs;
35
+ constructor(options) {
36
+ this.directory = options.directory;
37
+ this.isAlive = options.isAlive ?? processIsAlive;
38
+ this.now = options.now ?? (() => Date.now());
39
+ this.pid = options.pid ?? process.pid;
40
+ this.ttlMs = options.ttlMs ?? DEFAULT_TTL_MS;
41
+ }
42
+ /** Whether another gateway process is serving a host with its own browser. */
43
+ active() {
44
+ let found = false;
45
+ for (const marker of this.markers()) {
46
+ if (this.believable(marker)) {
47
+ found = true;
48
+ }
49
+ else {
50
+ this.remove(marker.name);
51
+ }
52
+ }
53
+ return found;
54
+ }
55
+ /** Records that this process serves a host with its own browser. */
56
+ announce() {
57
+ try {
58
+ mkdirSync(this.directory, { mode: 0o700, recursive: true });
59
+ writeFileSync(this.markerPath(this.pid), String(this.now()), {
60
+ mode: 0o600,
61
+ });
62
+ }
63
+ catch {
64
+ // A session is still worth serving on a filesystem we cannot write to.
65
+ return;
66
+ }
67
+ }
68
+ withdraw() {
69
+ this.remove(`${MARKER_PREFIX}${this.pid}`);
70
+ }
71
+ /** Calls back once no gateway process is serving a native browser. */
72
+ whenInactive(callback) {
73
+ let closed = false;
74
+ let watcher;
75
+ const close = () => {
76
+ closed = true;
77
+ watcher?.close();
78
+ clearInterval(interval);
79
+ };
80
+ const check = () => {
81
+ if (closed || this.active()) {
82
+ return;
83
+ }
84
+ close();
85
+ callback();
86
+ };
87
+ const interval = setInterval(check, RECHECK_INTERVAL_MS);
88
+ interval.unref();
89
+ try {
90
+ watcher = watch(this.directory, { persistent: false }, check);
91
+ watcher.on("error", () => watcher?.close());
92
+ }
93
+ catch {
94
+ check();
95
+ }
96
+ check();
97
+ return close;
98
+ }
99
+ /** An unreadable or unparsable marker counts as expired, so it gets swept. */
100
+ announcedAt(name) {
101
+ try {
102
+ return Number(readFileSync(join(this.directory, name), "utf8"));
103
+ }
104
+ catch {
105
+ return Number.NaN;
106
+ }
107
+ }
108
+ believable(marker) {
109
+ return (this.isAlive(marker.pid) &&
110
+ this.now() - this.announcedAt(marker.name) < this.ttlMs);
111
+ }
112
+ markerPath(pid) {
113
+ return join(this.directory, `${MARKER_PREFIX}${pid}`);
114
+ }
115
+ markers() {
116
+ let names;
117
+ try {
118
+ names = readdirSync(this.directory);
119
+ }
120
+ catch {
121
+ return [];
122
+ }
123
+ return names.flatMap((name) => {
124
+ if (!name.startsWith(MARKER_PREFIX)) {
125
+ return [];
126
+ }
127
+ const pid = Number(name.slice(MARKER_PREFIX.length));
128
+ return Number.isInteger(pid) && pid > 0 ? [{ name, pid }] : [];
129
+ });
130
+ }
131
+ remove(name) {
132
+ try {
133
+ rmSync(join(this.directory, name), { force: true });
134
+ }
135
+ catch {
136
+ // Sweeping is opportunistic; the pid check keeps a leftover harmless.
137
+ return;
138
+ }
139
+ }
140
+ }
141
+ function processIsAlive(pid) {
142
+ try {
143
+ process.kill(pid, 0);
144
+ return true;
145
+ }
146
+ catch (error) {
147
+ // Someone else's process is alive; we just may not signal it.
148
+ return errorCode(error) === "EPERM";
149
+ }
150
+ }
151
+ function errorCode(error) {
152
+ if (error instanceof Error && "code" in error) {
153
+ const { code } = error;
154
+ return typeof code === "string" ? code : undefined;
155
+ }
156
+ return undefined;
157
+ }
158
+ //# sourceMappingURL=native-browser-presence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-browser-presence.js","sourceRoot":"","sources":["../../../src/transports/mcp/native-browser-presence.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import type { AppState } from "../../sabs/app-state.js";
2
+ type PlanApproval = {
3
+ applicationId: string;
4
+ branch: string | undefined;
5
+ decision: object | undefined;
6
+ plan: object | undefined;
7
+ };
8
+ type PlanApprovalTarget = Pick<PlanApproval, "applicationId" | "branch"> & {
9
+ plan: object;
10
+ };
11
+ type PlanApprovalChallengesOptions = {
12
+ directory: string;
13
+ now?: () => number;
14
+ ttlMs?: number;
15
+ };
16
+ export declare function planApprovalDirectory(apiKey: string, serverUrl: string): string;
17
+ /** One-use challenge for a decision-card approval of the current plan. */
18
+ export declare class PlanApprovalChallenges {
19
+ private readonly approvals;
20
+ private readonly directory;
21
+ private readonly now;
22
+ private readonly tokenByApplication;
23
+ private readonly ttlMs;
24
+ constructor(options: PlanApprovalChallengesOptions);
25
+ issue(appState: AppState, applicationId: string, branch: string | undefined): Promise<string | undefined>;
26
+ confirm(appState: AppState, token: string): Promise<boolean>;
27
+ consumeConfirmed(appState: AppState, applicationId?: string, branch?: string): Promise<PlanApprovalTarget | undefined>;
28
+ private confirmedPath;
29
+ private createdAt;
30
+ private drop;
31
+ private forget;
32
+ private matches;
33
+ private move;
34
+ private pendingPath;
35
+ private prepareDirectory;
36
+ private remove;
37
+ }
38
+ export {};
@@ -0,0 +1,175 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { mkdir, readFile, readdir, rename, stat, unlink, writeFile, } from "node:fs/promises";
3
+ import { join } from "node:path";
4
+ import { sessionDirectory } from "./session-directory.js";
5
+ const DEFAULT_TTL_MS = 10 * 60 * 1000;
6
+ export function planApprovalDirectory(apiKey, serverUrl) {
7
+ return sessionDirectory(apiKey, serverUrl, "plan-approvals");
8
+ }
9
+ /** One-use challenge for a decision-card approval of the current plan. */
10
+ export class PlanApprovalChallenges {
11
+ approvals = new Map();
12
+ directory;
13
+ now;
14
+ tokenByApplication = new Map();
15
+ ttlMs;
16
+ constructor(options) {
17
+ this.directory = options.directory;
18
+ this.now = options.now ?? (() => Date.now());
19
+ this.ttlMs = options.ttlMs ?? DEFAULT_TTL_MS;
20
+ }
21
+ async issue(appState, applicationId, branch) {
22
+ const decision = appState.pendingDecision(applicationId, branch);
23
+ const plan = appState.pendingPlan(applicationId, branch);
24
+ if (!decision && !plan) {
25
+ return undefined;
26
+ }
27
+ try {
28
+ await this.prepareDirectory();
29
+ }
30
+ catch {
31
+ return undefined;
32
+ }
33
+ const previous = this.tokenByApplication.get(applicationId);
34
+ if (previous) {
35
+ await this.forget(previous);
36
+ }
37
+ const token = randomUUID();
38
+ this.approvals.set(token, {
39
+ applicationId,
40
+ branch,
41
+ decision,
42
+ plan,
43
+ });
44
+ this.tokenByApplication.set(applicationId, token);
45
+ try {
46
+ await writeFile(this.pendingPath(token), String(this.now()), {
47
+ flag: "wx",
48
+ mode: 0o600,
49
+ });
50
+ return token;
51
+ }
52
+ catch {
53
+ this.drop(token);
54
+ return undefined;
55
+ }
56
+ }
57
+ async confirm(appState, token) {
58
+ const local = this.approvals.get(token);
59
+ if (local && !this.matches(appState, local)) {
60
+ await this.forget(token);
61
+ return false;
62
+ }
63
+ const createdAtMs = await this.createdAt(this.pendingPath(token));
64
+ if (createdAtMs === undefined) {
65
+ return false;
66
+ }
67
+ if (this.now() - createdAtMs >= this.ttlMs) {
68
+ await this.forget(token);
69
+ return false;
70
+ }
71
+ return this.move(this.pendingPath(token), this.confirmedPath(token));
72
+ }
73
+ async consumeConfirmed(appState, applicationId, branch) {
74
+ if (!applicationId && this.approvals.size !== 1) {
75
+ return undefined;
76
+ }
77
+ const candidates = applicationId
78
+ ? [this.tokenByApplication.get(applicationId)].filter((token) => token !== undefined)
79
+ : [...this.approvals.keys()];
80
+ for (const token of candidates) {
81
+ const approval = this.approvals.get(token);
82
+ if (!approval || (branch !== undefined && approval.branch !== branch)) {
83
+ continue;
84
+ }
85
+ const claimed = `${this.confirmedPath(token)}.${randomUUID()}`;
86
+ if (!(await this.move(this.confirmedPath(token), claimed))) {
87
+ continue;
88
+ }
89
+ try {
90
+ const createdAtMs = await this.createdAt(claimed);
91
+ if (createdAtMs !== undefined &&
92
+ this.now() - createdAtMs < this.ttlMs &&
93
+ approval.plan !== undefined &&
94
+ this.matches(appState, approval)) {
95
+ return {
96
+ applicationId: approval.applicationId,
97
+ branch: approval.branch,
98
+ plan: approval.plan,
99
+ };
100
+ }
101
+ }
102
+ finally {
103
+ await this.remove(claimed);
104
+ this.drop(token);
105
+ }
106
+ }
107
+ return undefined;
108
+ }
109
+ confirmedPath(token) {
110
+ return join(this.directory, `confirmed-${token}`);
111
+ }
112
+ async createdAt(path) {
113
+ try {
114
+ return Number(await readFile(path, "utf8"));
115
+ }
116
+ catch {
117
+ return undefined;
118
+ }
119
+ }
120
+ drop(token) {
121
+ const approval = this.approvals.get(token);
122
+ this.approvals.delete(token);
123
+ if (approval &&
124
+ this.tokenByApplication.get(approval.applicationId) === token) {
125
+ this.tokenByApplication.delete(approval.applicationId);
126
+ }
127
+ }
128
+ async forget(token) {
129
+ this.drop(token);
130
+ await Promise.all([
131
+ this.remove(this.pendingPath(token)),
132
+ this.remove(this.confirmedPath(token)),
133
+ ]);
134
+ }
135
+ matches(appState, approval) {
136
+ return (appState.pendingDecision(approval.applicationId, approval.branch) ===
137
+ approval.decision &&
138
+ appState.pendingPlan(approval.applicationId, approval.branch) ===
139
+ approval.plan);
140
+ }
141
+ async move(from, to) {
142
+ try {
143
+ await rename(from, to);
144
+ return true;
145
+ }
146
+ catch {
147
+ return false;
148
+ }
149
+ }
150
+ pendingPath(token) {
151
+ return join(this.directory, `pending-${token}`);
152
+ }
153
+ async prepareDirectory() {
154
+ await mkdir(this.directory, { mode: 0o700, recursive: true });
155
+ const names = await readdir(this.directory);
156
+ await Promise.all(names.map(async (name) => {
157
+ if (!/^(?:confirmed|pending)-/.test(name)) {
158
+ return;
159
+ }
160
+ const path = join(this.directory, name);
161
+ try {
162
+ if (this.now() - (await stat(path)).mtimeMs >= this.ttlMs) {
163
+ await unlink(path);
164
+ }
165
+ }
166
+ catch {
167
+ return;
168
+ }
169
+ }));
170
+ }
171
+ async remove(path) {
172
+ await unlink(path).catch(() => undefined);
173
+ }
174
+ }
175
+ //# sourceMappingURL=plan-approval.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan-approval.js","sourceRoot":"","sources":["../../../src/transports/mcp/plan-approval.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import type { ProgressToken } from "@modelcontextprotocol/sdk/types.js";
2
+ /**
3
+ * The part of a tool call's `extra` a notifier needs: the token the host asked
4
+ * to be told about progress under, and the channel back to it.
5
+ */
6
+ export type ProgressNotificationSender = {
7
+ _meta?: {
8
+ progressToken?: ProgressToken;
9
+ };
10
+ sendNotification: (notification: {
11
+ method: "notifications/progress";
12
+ params: {
13
+ message: string;
14
+ progress: number;
15
+ progressToken: ProgressToken;
16
+ };
17
+ }) => Promise<void>;
18
+ };
19
+ /**
20
+ * Relays a capability's progress to the host that asked for it, and survives
21
+ * that host going away.
22
+ *
23
+ * Progress rides the tool call's own response stream, so it lives exactly as
24
+ * long as the host keeps reading: cancel, disconnect, or simply walk away, and
25
+ * every later send on that stream fails. These sends are driven by SABS turn
26
+ * events, which arrive on a websocket callback - outside any request handler,
27
+ * and so outside the `guarded` wrapper that stops a failed request short of the
28
+ * top. Left alone, one such failure ends the process: the gateway dies because
29
+ * a single client stopped listening, taking every other session with it.
30
+ *
31
+ * Both failure shapes are handled because the SDK produces both. A transport
32
+ * holding no stream for the request throws before it returns a promise; one
33
+ * that fails mid-write rejects the promise it already returned.
34
+ *
35
+ * The first failure latches the notifier shut. A dropped stream does not come
36
+ * back, and a single turn emits progress continuously, so trying again only
37
+ * spends work to fail the same way.
38
+ */
39
+ export declare function createProgressNotifier(extra: ProgressNotificationSender | undefined): ((message: string) => void) | undefined;
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Relays a capability's progress to the host that asked for it, and survives
3
+ * that host going away.
4
+ *
5
+ * Progress rides the tool call's own response stream, so it lives exactly as
6
+ * long as the host keeps reading: cancel, disconnect, or simply walk away, and
7
+ * every later send on that stream fails. These sends are driven by SABS turn
8
+ * events, which arrive on a websocket callback - outside any request handler,
9
+ * and so outside the `guarded` wrapper that stops a failed request short of the
10
+ * top. Left alone, one such failure ends the process: the gateway dies because
11
+ * a single client stopped listening, taking every other session with it.
12
+ *
13
+ * Both failure shapes are handled because the SDK produces both. A transport
14
+ * holding no stream for the request throws before it returns a promise; one
15
+ * that fails mid-write rejects the promise it already returned.
16
+ *
17
+ * The first failure latches the notifier shut. A dropped stream does not come
18
+ * back, and a single turn emits progress continuously, so trying again only
19
+ * spends work to fail the same way.
20
+ */
21
+ export function createProgressNotifier(extra) {
22
+ const progressToken = extra?._meta?.progressToken;
23
+ if (extra === undefined || progressToken === undefined) {
24
+ return undefined;
25
+ }
26
+ let progress = 0;
27
+ let listening = true;
28
+ const stopListening = (error) => {
29
+ listening = false;
30
+ // Said once per call rather than per event: a host that hung up is
31
+ // ordinary, but a silent gateway is what makes it hard to explain.
32
+ console.debug("gateway progress stream closed by the host", error);
33
+ };
34
+ return (message) => {
35
+ if (!listening) {
36
+ return;
37
+ }
38
+ progress += 1;
39
+ try {
40
+ void extra
41
+ .sendNotification({
42
+ method: "notifications/progress",
43
+ params: { message, progress, progressToken },
44
+ })
45
+ .catch(stopListening);
46
+ }
47
+ catch (error) {
48
+ stopListening(error);
49
+ }
50
+ };
51
+ }
52
+ //# sourceMappingURL=progress-notifier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress-notifier.js","sourceRoot":"","sources":["../../../src/transports/mcp/progress-notifier.ts"],"names":[],"mappings":"AAkBA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,sBAAsB,CACpC,KAA6C;IAE7C,MAAM,aAAa,GAAG,KAAK,EAAE,KAAK,EAAE,aAAa,CAAC;IAClD,IAAI,KAAK,KAAK,SAAS,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QACvD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,SAAS,GAAG,IAAI,CAAC;IAErB,MAAM,aAAa,GAAG,CAAC,KAAc,EAAE,EAAE;QACvC,SAAS,GAAG,KAAK,CAAC;QAClB,mEAAmE;QACnE,mEAAmE;QACnE,OAAO,CAAC,KAAK,CAAC,4CAA4C,EAAE,KAAK,CAAC,CAAC;IACrE,CAAC,CAAC;IAEF,OAAO,CAAC,OAAe,EAAE,EAAE;QACzB,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO;QACT,CAAC;QACD,QAAQ,IAAI,CAAC,CAAC;QACd,IAAI,CAAC;YACH,KAAK,KAAK;iBACP,gBAAgB,CAAC;gBAChB,MAAM,EAAE,wBAAwB;gBAChC,MAAM,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE;aAC7C,CAAC;iBACD,KAAK,CAAC,aAAa,CAAC,CAAC;QAC1B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,aAAa,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Scratch space shared by every gateway process serving one set of
3
+ * credentials. A host may spawn several - Claude Desktop and Cowork each start
4
+ * their own from a single config entry - and these directories are how those
5
+ * processes see each other's state.
6
+ */
7
+ export declare function sessionDirectory(apiKey: string, serverUrl: string, kind: string): string;
@@ -0,0 +1,18 @@
1
+ import { createHash } from "node:crypto";
2
+ import { tmpdir } from "node:os";
3
+ import { join } from "node:path";
4
+ /**
5
+ * Scratch space shared by every gateway process serving one set of
6
+ * credentials. A host may spawn several - Claude Desktop and Cowork each start
7
+ * their own from a single config entry - and these directories are how those
8
+ * processes see each other's state.
9
+ */
10
+ export function sessionDirectory(apiKey, serverUrl, kind) {
11
+ const namespace = createHash("sha256")
12
+ .update(serverUrl)
13
+ .update("\0")
14
+ .update(apiKey)
15
+ .digest("hex");
16
+ return join(tmpdir(), `superblocks-gateway-${kind}`, namespace);
17
+ }
18
+ //# sourceMappingURL=session-directory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-directory.js","sourceRoot":"","sources":["../../../src/transports/mcp/session-directory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAC9B,MAAc,EACd,SAAiB,EACjB,IAAY;IAEZ,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC;SACnC,MAAM,CAAC,SAAS,CAAC;SACjB,MAAM,CAAC,IAAI,CAAC;SACZ,MAAM,CAAC,MAAM,CAAC;SACd,MAAM,CAAC,KAAK,CAAC,CAAC;IACjB,OAAO,IAAI,CAAC,MAAM,EAAE,EAAE,uBAAuB,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;AAClE,CAAC"}
@@ -0,0 +1,2 @@
1
+ /** Every tool this MCP server registers, Builder and the Admin ones we extend. */
2
+ export type ToolName = "ask_user" | "check_app_progress" | "check_publish_progress" | "confirm_plan_approval" | "create_integration" | "edit_app" | "get_app" | "get_app_status" | "get_integration_metadata" | "get_preview_status" | "preview_app" | "publish_app" | "query_integration" | "start_app" | "upload_artifact";
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=tool-names.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-names.js","sourceRoot":"","sources":["../../../src/transports/mcp/tool-names.ts"],"names":[],"mappings":""}