@superblocksteam/gateway 2.0.177 → 2.0.178-next.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 (221) hide show
  1. package/README.md +52 -19
  2. package/dist/agents/hosted-boundary.d.ts +36 -0
  3. package/dist/agents/hosted-boundary.d.ts.map +1 -0
  4. package/dist/agents/hosted-boundary.js +66 -0
  5. package/dist/agents/hosted-boundary.js.map +1 -0
  6. package/dist/agents/resolve-orchestrator-url.d.ts +8 -0
  7. package/dist/agents/resolve-orchestrator-url.d.ts.map +1 -1
  8. package/dist/agents/resolve-orchestrator-url.js +5 -0
  9. package/dist/agents/resolve-orchestrator-url.js.map +1 -1
  10. package/dist/capabilities/integration-metadata.d.ts.map +1 -1
  11. package/dist/capabilities/integration-metadata.js +12 -1
  12. package/dist/capabilities/integration-metadata.js.map +1 -1
  13. package/dist/capabilities/lifecycle.d.ts +1 -6
  14. package/dist/capabilities/lifecycle.d.ts.map +1 -1
  15. package/dist/capabilities/lifecycle.js +339 -21
  16. package/dist/capabilities/lifecycle.js.map +1 -1
  17. package/dist/capabilities/live-state-attaches.d.ts +28 -0
  18. package/dist/capabilities/live-state-attaches.d.ts.map +1 -1
  19. package/dist/capabilities/live-state-attaches.js +33 -0
  20. package/dist/capabilities/live-state-attaches.js.map +1 -1
  21. package/dist/capabilities/query-integration.d.ts.map +1 -1
  22. package/dist/capabilities/query-integration.js +12 -1
  23. package/dist/capabilities/query-integration.js.map +1 -1
  24. package/dist/capabilities/tool-permission-reply.d.ts.map +1 -1
  25. package/dist/capabilities/tool-permission-reply.js.map +1 -1
  26. package/dist/capabilities/types.d.ts +3 -4
  27. package/dist/capabilities/types.d.ts.map +1 -1
  28. package/dist/capabilities/types.js.map +1 -1
  29. package/dist/capture/browser-contract.d.ts +1 -18
  30. package/dist/capture/browser-contract.d.ts.map +1 -1
  31. package/dist/capture/browser-contract.js +1 -13
  32. package/dist/capture/browser-contract.js.map +1 -1
  33. package/dist/capture/browser-instructions.d.ts +3 -3
  34. package/dist/capture/browser-instructions.d.ts.map +1 -1
  35. package/dist/capture/browser-instructions.js +4 -5
  36. package/dist/capture/browser-instructions.js.map +1 -1
  37. package/dist/capture/capture-library-probe.d.ts +0 -1
  38. package/dist/capture/capture-library-probe.d.ts.map +1 -1
  39. package/dist/capture/capture-library-probe.js +1 -1
  40. package/dist/capture/capture-library-probe.js.map +1 -1
  41. package/dist/capture/capture-library.d.ts +2 -1
  42. package/dist/capture/capture-library.d.ts.map +1 -1
  43. package/dist/capture/classify-library-paint.d.ts +2 -1
  44. package/dist/capture/classify-library-paint.d.ts.map +1 -1
  45. package/dist/capture/library-parent-script.d.ts +3 -2
  46. package/dist/capture/library-parent-script.d.ts.map +1 -1
  47. package/dist/capture/mode.d.ts +2 -3
  48. package/dist/capture/mode.d.ts.map +1 -1
  49. package/dist/capture/mode.js +2 -3
  50. package/dist/capture/mode.js.map +1 -1
  51. package/dist/config.d.ts +21 -1
  52. package/dist/config.d.ts.map +1 -1
  53. package/dist/config.js +3 -0
  54. package/dist/config.js.map +1 -1
  55. package/dist/debug.js.map +1 -1
  56. package/dist/deps.d.ts +3 -3
  57. package/dist/health/readiness.d.ts +2 -1
  58. package/dist/health/readiness.d.ts.map +1 -1
  59. package/dist/http/main.d.ts +3 -0
  60. package/dist/http/main.d.ts.map +1 -0
  61. package/dist/http/main.js +11 -0
  62. package/dist/http/main.js.map +1 -0
  63. package/dist/http/serve.d.ts +26 -0
  64. package/dist/http/serve.d.ts.map +1 -0
  65. package/dist/http/serve.js +298 -0
  66. package/dist/http/serve.js.map +1 -0
  67. package/dist/integrations/filters.d.ts.map +1 -1
  68. package/dist/integrations/filters.js +1 -16
  69. package/dist/integrations/filters.js.map +1 -1
  70. package/dist/integrations/map.d.ts +0 -5
  71. package/dist/integrations/map.d.ts.map +1 -1
  72. package/dist/integrations/map.js +1 -1
  73. package/dist/integrations/map.js.map +1 -1
  74. package/dist/internal-ingress.d.ts +47 -0
  75. package/dist/internal-ingress.d.ts.map +1 -0
  76. package/dist/internal-ingress.js +90 -0
  77. package/dist/internal-ingress.js.map +1 -0
  78. package/dist/orchestrator/client.d.ts +11 -5
  79. package/dist/orchestrator/client.d.ts.map +1 -1
  80. package/dist/orchestrator/client.js +14 -3
  81. package/dist/orchestrator/client.js.map +1 -1
  82. package/dist/playwright/ensure-chromium.js.map +1 -1
  83. package/dist/preview/capture-screenshot.d.ts +2 -2
  84. package/dist/preview/capture-screenshot.d.ts.map +1 -1
  85. package/dist/preview/capture-screenshot.js +2 -2
  86. package/dist/preview/capture-screenshot.js.map +1 -1
  87. package/dist/process/fault-barrier.d.ts +4 -3
  88. package/dist/process/fault-barrier.d.ts.map +1 -1
  89. package/dist/sabs/app-state.d.ts +2 -13
  90. package/dist/sabs/app-state.d.ts.map +1 -1
  91. package/dist/sabs/app-state.js +7 -2
  92. package/dist/sabs/app-state.js.map +1 -1
  93. package/dist/sabs/awaited-decision.d.ts.map +1 -1
  94. package/dist/sabs/browser-context.d.ts +4 -1
  95. package/dist/sabs/browser-context.d.ts.map +1 -1
  96. package/dist/sabs/browser-context.js +1 -0
  97. package/dist/sabs/browser-context.js.map +1 -1
  98. package/dist/sabs/editor-client-methods.d.ts.map +1 -1
  99. package/dist/sabs/editor-client-methods.js +1 -1
  100. package/dist/sabs/editor-client-methods.js.map +1 -1
  101. package/dist/sabs/editor-socket.d.ts.map +1 -1
  102. package/dist/sabs/editor-socket.js.map +1 -1
  103. package/dist/sabs/session-peer.d.ts +13 -1
  104. package/dist/sabs/session-peer.d.ts.map +1 -1
  105. package/dist/sabs/session-peer.js.map +1 -1
  106. package/dist/sabs/streamed-reply.d.ts.map +1 -1
  107. package/dist/sabs/streamed-reply.js.map +1 -1
  108. package/dist/sabs/turn-collector.d.ts.map +1 -1
  109. package/dist/sabs/turn-collector.js.map +1 -1
  110. package/dist/sabs/websocket-session-peer.d.ts +17 -1
  111. package/dist/sabs/websocket-session-peer.d.ts.map +1 -1
  112. package/dist/sabs/websocket-session-peer.js +89 -15
  113. package/dist/sabs/websocket-session-peer.js.map +1 -1
  114. package/dist/server/client.d.ts +48 -0
  115. package/dist/server/client.d.ts.map +1 -1
  116. package/dist/server/client.js +91 -173
  117. package/dist/server/client.js.map +1 -1
  118. package/dist/server/identity-reads.d.ts +5 -3
  119. package/dist/server/identity-reads.d.ts.map +1 -1
  120. package/dist/server/identity-reads.js +31 -4
  121. package/dist/server/identity-reads.js.map +1 -1
  122. package/dist/start.d.ts +5 -1
  123. package/dist/start.d.ts.map +1 -1
  124. package/dist/start.js +23 -9
  125. package/dist/start.js.map +1 -1
  126. package/dist/stores/memory.d.ts.map +1 -1
  127. package/dist/stores/types.d.ts +2 -1
  128. package/dist/stores/types.d.ts.map +1 -1
  129. package/dist/telemetry/mcp-client.d.ts +2 -1
  130. package/dist/telemetry/mcp-client.d.ts.map +1 -1
  131. package/dist/telemetry/mcp-client.js.map +1 -1
  132. package/dist/telemetry/mcp-usage.d.ts +22 -0
  133. package/dist/telemetry/mcp-usage.d.ts.map +1 -0
  134. package/dist/telemetry/mcp-usage.js +102 -0
  135. package/dist/telemetry/mcp-usage.js.map +1 -0
  136. package/dist/telemetry/metrics.d.ts +9 -0
  137. package/dist/telemetry/metrics.d.ts.map +1 -1
  138. package/dist/telemetry/metrics.js +21 -0
  139. package/dist/telemetry/metrics.js.map +1 -1
  140. package/dist/telemetry/runtime.d.ts +2 -1
  141. package/dist/telemetry/runtime.d.ts.map +1 -1
  142. package/dist/telemetry/runtime.js +18 -5
  143. package/dist/telemetry/runtime.js.map +1 -1
  144. package/dist/transports/mcp/admin-tools.d.ts +3 -7
  145. package/dist/transports/mcp/admin-tools.d.ts.map +1 -1
  146. package/dist/transports/mcp/admin-tools.js +9 -82
  147. package/dist/transports/mcp/admin-tools.js.map +1 -1
  148. package/dist/transports/mcp/app-status-html.d.ts +2 -2
  149. package/dist/transports/mcp/app-status-html.d.ts.map +1 -1
  150. package/dist/transports/mcp/app-status-html.js +1 -27
  151. package/dist/transports/mcp/app-status-html.js.map +1 -1
  152. package/dist/transports/mcp/client-presentation.d.ts +10 -13
  153. package/dist/transports/mcp/client-presentation.d.ts.map +1 -1
  154. package/dist/transports/mcp/client-presentation.js +2 -14
  155. package/dist/transports/mcp/client-presentation.js.map +1 -1
  156. package/dist/transports/mcp/decision-elicitation.js +23 -1
  157. package/dist/transports/mcp/decision-elicitation.js.map +1 -1
  158. package/dist/transports/mcp/dispatch-probe.js.map +1 -1
  159. package/dist/transports/mcp/editor-document-probe.js.map +1 -1
  160. package/dist/transports/mcp/editor-integration-setup-url.d.ts +0 -1
  161. package/dist/transports/mcp/editor-integration-setup-url.d.ts.map +1 -1
  162. package/dist/transports/mcp/editor-integration-setup-url.js +0 -3
  163. package/dist/transports/mcp/editor-integration-setup-url.js.map +1 -1
  164. package/dist/transports/mcp/format-tool-content.js +1 -1
  165. package/dist/transports/mcp/format-tool-content.js.map +1 -1
  166. package/dist/transports/mcp/instructions/tools/build-app.d.ts +2 -3
  167. package/dist/transports/mcp/instructions/tools/build-app.d.ts.map +1 -1
  168. package/dist/transports/mcp/instructions/tools/build-app.js +5 -11
  169. package/dist/transports/mcp/instructions/tools/build-app.js.map +1 -1
  170. package/dist/transports/mcp/instructions/tools/check-app-progress.d.ts.map +1 -1
  171. package/dist/transports/mcp/instructions/tools/check-app-progress.js +1 -25
  172. package/dist/transports/mcp/instructions/tools/check-app-progress.js.map +1 -1
  173. package/dist/transports/mcp/instructions/tools/check-publish-progress.d.ts +1 -2
  174. package/dist/transports/mcp/instructions/tools/check-publish-progress.d.ts.map +1 -1
  175. package/dist/transports/mcp/instructions/tools/check-publish-progress.js +2 -11
  176. package/dist/transports/mcp/instructions/tools/check-publish-progress.js.map +1 -1
  177. package/dist/transports/mcp/instructions/tools/copy.d.ts +1 -8
  178. package/dist/transports/mcp/instructions/tools/copy.d.ts.map +1 -1
  179. package/dist/transports/mcp/instructions/tools/copy.js +4 -28
  180. package/dist/transports/mcp/instructions/tools/copy.js.map +1 -1
  181. package/dist/transports/mcp/instructions/tools/create-integration.d.ts +1 -2
  182. package/dist/transports/mcp/instructions/tools/create-integration.d.ts.map +1 -1
  183. package/dist/transports/mcp/instructions/tools/create-integration.js +4 -8
  184. package/dist/transports/mcp/instructions/tools/create-integration.js.map +1 -1
  185. package/dist/transports/mcp/instructions/tools/edit-app.js +2 -2
  186. package/dist/transports/mcp/instructions/tools/edit-app.js.map +1 -1
  187. package/dist/transports/mcp/instructions/tools/get-app.d.ts.map +1 -1
  188. package/dist/transports/mcp/instructions/tools/get-app.js +1 -23
  189. package/dist/transports/mcp/instructions/tools/get-app.js.map +1 -1
  190. package/dist/transports/mcp/instructions/tools/index.d.ts.map +1 -1
  191. package/dist/transports/mcp/instructions/tools/index.js +0 -4
  192. package/dist/transports/mcp/instructions/tools/index.js.map +1 -1
  193. package/dist/transports/mcp/instructions/tools/publish-app.d.ts +1 -2
  194. package/dist/transports/mcp/instructions/tools/publish-app.d.ts.map +1 -1
  195. package/dist/transports/mcp/instructions/tools/publish-app.js +1 -10
  196. package/dist/transports/mcp/instructions/tools/publish-app.js.map +1 -1
  197. package/dist/transports/mcp/instructions/tools/start-app.d.ts +1 -2
  198. package/dist/transports/mcp/instructions/tools/start-app.d.ts.map +1 -1
  199. package/dist/transports/mcp/instructions/tools/start-app.js +3 -3
  200. package/dist/transports/mcp/instructions/tools/start-app.js.map +1 -1
  201. package/dist/transports/mcp/mount.d.ts +8 -15
  202. package/dist/transports/mcp/mount.d.ts.map +1 -1
  203. package/dist/transports/mcp/mount.js +233 -206
  204. package/dist/transports/mcp/mount.js.map +1 -1
  205. package/dist/transports/mcp/plan-approval.d.ts.map +1 -1
  206. package/dist/transports/mcp/plan-approval.js.map +1 -1
  207. package/dist/transports/mcp/tool-permissions.d.ts +30 -0
  208. package/dist/transports/mcp/tool-permissions.d.ts.map +1 -0
  209. package/dist/transports/mcp/tool-permissions.js +39 -0
  210. package/dist/transports/mcp/tool-permissions.js.map +1 -0
  211. package/package.json +28 -22
  212. package/skills/superblocks-import/SKILL.md +5 -3
  213. package/dist/capture/cowork-editor-url.d.ts +0 -7
  214. package/dist/capture/cowork-editor-url.d.ts.map +0 -1
  215. package/dist/capture/cowork-editor-url.js +0 -12
  216. package/dist/capture/cowork-editor-url.js.map +0 -1
  217. package/dist/transports/mcp/native-browser-presence.d.ts +0 -46
  218. package/dist/transports/mcp/native-browser-presence.d.ts.map +0 -1
  219. package/dist/transports/mcp/native-browser-presence.js +0 -158
  220. package/dist/transports/mcp/native-browser-presence.js.map +0 -1
  221. package/skills/superblocks-build/SKILL.md +0 -59
@@ -1,158 +0,0 @@
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 browser pane, 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
@@ -1 +0,0 @@
1
- {"version":3,"file":"native-browser-presence.js","sourceRoot":"","sources":["../../../src/transports/mcp/native-browser-presence.ts"],"names":[],"mappings":"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"}
@@ -1,59 +0,0 @@
1
- ---
2
- name: superblocks-build
3
- description: >
4
- Use when the user asks to build, create, change, update, edit, or modify an
5
- app, dashboard, internal tool, admin panel, form, or CRUD UI - including one
6
- they might otherwise make as a local file or artifact. Most requests never
7
- say which location they mean. An existing or named app is still ambiguous
8
- unless this conversation already established its location. Ask where it
9
- should live before creating or editing anything and before using any tool;
10
- do not list apps to infer the answer.
11
- ---
12
-
13
- # Where does this app get built?
14
-
15
- Two places can build what the user just asked for:
16
-
17
- - **Superblocks** — a real application. Org datasources, server-side APIs,
18
- platform auth and permissions, a deploy story, other people can use it.
19
- - **Here** — a local file or artifact in this chat. Fast and private, but it
20
- reaches no company data and nobody else can run it.
21
-
22
- Most requests name neither. Choosing silently is wrong about half the time, and
23
- the user only finds out once the work already exists in the wrong place.
24
-
25
- ## Ask first
26
-
27
- Before creating or editing anything, ask one short question naming both options,
28
- then wait for the answer:
29
-
30
- > Do you want this built in Superblocks, or as a local artifact here?
31
-
32
- If the location is ambiguous, your first action must be the two-option question
33
- above. Do not call any Superblocks tool, including `list_applications`, or
34
- create or edit a local artifact until the user answers.
35
-
36
- Ask once per request. Do not build a local version "to show them" while waiting.
37
- Building it is the choice.
38
-
39
- ## Do not ask when they already answered
40
-
41
- - Said Superblocks, or explicitly named a Superblocks app already established in
42
- this conversation -> build there.
43
- - Said local, artifact, file, HTML, "just show me", "quick mockup" -> build here.
44
- - Answered this question for this same request -> honor it, stay silent.
45
- - Not an app at all (a script, a chart, an analysis, a document, a snippet)
46
- -> just do the work.
47
-
48
- ## Editing counts too
49
-
50
- The same question applies to changing an app, dashboard, or artifact the user
51
- names, including one already imported into Superblocks. When you cannot tell
52
- which copy they mean, ask that instead.
53
-
54
- ## Once they pick Superblocks
55
-
56
- - Something new -> `start_app`.
57
- - Existing source to port -> use the `superblocks-import` skill.
58
- - An app already in Superblocks -> `list_applications` to find it, then
59
- `edit_app`.