@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,13 @@
1
+ export function instructUploadArtifact(result) {
2
+ if (result.code === "import_zip_too_large") {
3
+ return "This file is over the 50 MB cap. Ask the user for a smaller export, or (if this is a readable tree already on disk) follow the superblocks-import skill instead of zipping it.";
4
+ }
5
+ if (result.code === "import_file_unsupported") {
6
+ return "Binary content was sent through `files`, which only accepts text. Re-send this file via `filePath` instead - the gateway reads the bytes itself.";
7
+ }
8
+ if (result.ok) {
9
+ return "Pass this result's `artifact` unchanged into `start_app` or `edit_app`'s `artifacts` field. Do not re-upload on a retry - reuse this same artifact.";
10
+ }
11
+ return undefined;
12
+ }
13
+ //# sourceMappingURL=upload-artifact.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload-artifact.js","sourceRoot":"","sources":["../../../../../src/transports/mcp/instructions/tools/upload-artifact.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,sBAAsB,CAAC,MAAkB;IACvD,IAAI,MAAM,CAAC,IAAI,KAAK,sBAAsB,EAAE,CAAC;QAC3C,OAAO,gLAAgL,CAAC;IAC1L,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,KAAK,yBAAyB,EAAE,CAAC;QAC9C,OAAO,kJAAkJ,CAAC;IAC5J,CAAC;IACD,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;QACd,OAAO,qJAAqJ,CAAC;IAC/J,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1 @@
1
+ export declare const MCP_APP_BRAND_CSS = "\n :root {\n color-scheme: light dark;\n --sb-app-background: var(\n --color-background-primary,\n light-dark(#ffffff, #1b1c1f)\n );\n --sb-app-background-subtle: var(\n --color-background-secondary,\n light-dark(#f9fafb, #24272b)\n );\n --sb-app-background-hover: var(\n --color-background-tertiary,\n light-dark(#f3f4f6, #2f3437)\n );\n --sb-app-background-inverse: var(\n --color-background-inverse,\n light-dark(#121517, #f9fafb)\n );\n --sb-app-text: var(\n --color-text-primary,\n light-dark(#121517, #f9fafb)\n );\n --sb-app-text-secondary: var(\n --color-text-secondary,\n light-dark(#5a6272, #c6cad2)\n );\n --sb-app-text-tertiary: var(\n --color-text-tertiary,\n light-dark(#6b7280, #a4aab7)\n );\n --sb-app-text-inverse: var(\n --color-text-inverse,\n light-dark(#ffffff, #121517)\n );\n --sb-app-border: var(\n --color-border-primary,\n light-dark(#e8eaed, #454d5f)\n );\n --sb-app-ring: var(\n --color-ring-primary,\n light-dark(#0077b6, #27bbff)\n );\n --sb-app-info-background: var(\n --color-background-info,\n light-dark(#e6f5ff, #083a50)\n );\n --sb-app-info-text: var(\n --color-text-info,\n light-dark(#00679e, #7dd3fc)\n );\n --sb-app-info-border: var(\n --color-border-info,\n light-dark(#c2e7ff, #075985)\n );\n --sb-app-success-background: var(\n --color-background-success,\n light-dark(#e8f8ef, #0a3926)\n );\n --sb-app-success-text: var(\n --color-text-success,\n light-dark(#087a43, #6ee7b7)\n );\n --sb-app-success-border: var(\n --color-border-success,\n light-dark(#b8e8cf, #087a43)\n );\n --sb-app-warning-background: var(\n --color-background-warning,\n light-dark(#fff7e6, #49350a)\n );\n --sb-app-warning-text: var(\n --color-text-warning,\n light-dark(#946200, #fcd34d)\n );\n --sb-app-warning-border: var(\n --color-border-warning,\n light-dark(#f5d996, #946200)\n );\n --sb-app-danger-background: var(\n --color-background-danger,\n light-dark(#fff1f1, #4a1d1d)\n );\n --sb-app-danger-text: var(\n --color-text-danger,\n light-dark(#c54141, #fca5a5)\n );\n --sb-app-danger-border: var(\n --color-border-danger,\n light-dark(#ffcaca, #c54141)\n );\n }\n * {\n box-sizing: border-box;\n }\n body {\n min-width: 0;\n margin: 0;\n overflow-x: hidden;\n background: transparent;\n color: var(--sb-app-text);\n font-family: var(--font-sans, system-ui, -apple-system, sans-serif);\n font-size: var(--font-text-sm-size, 13px);\n line-height: var(--font-text-sm-line-height, 1.45);\n }\n .card {\n display: flex;\n min-width: 0;\n flex-direction: column;\n gap: 12px;\n padding: 16px;\n border: var(--border-width-regular, 1px) solid var(--sb-app-border);\n border-radius: var(--border-radius-lg, 12px);\n background: var(--sb-app-background);\n box-shadow: var(--shadow-sm, 0 1px 2px rgba(18, 21, 23, 0.08));\n }\n h1,\n .meta,\n .note {\n min-width: 0;\n overflow-wrap: anywhere;\n }\n .note:empty {\n position: absolute;\n }\n button,\n textarea {\n font: inherit;\n }\n button {\n appearance: none;\n min-width: 0;\n padding: 8px 12px;\n border: var(--border-width-regular, 1px) solid var(--sb-app-border);\n border-radius: var(--border-radius-md, 8px);\n background: var(--sb-app-background-subtle);\n color: var(--sb-app-text);\n font-weight: var(--font-weight-medium, 500);\n line-height: var(--font-text-sm-line-height, 1.45);\n cursor: pointer;\n }\n button:hover:not(:disabled) {\n background: var(--sb-app-background-hover);\n }\n .button-primary {\n border-color: var(--sb-app-background-inverse);\n background: var(--sb-app-background-inverse);\n color: var(--sb-app-text-inverse);\n }\n .button-primary:hover:not(:disabled) {\n border-color: var(--sb-app-background-inverse);\n background: var(--sb-app-background-inverse);\n }\n button:focus-visible,\n textarea:focus-visible,\n a:focus-visible {\n outline: 2px solid var(--sb-app-ring);\n outline-offset: 2px;\n }\n button:disabled {\n opacity: 0.48;\n cursor: not-allowed;\n }\n .actions {\n min-width: 0;\n }\n .actions > button {\n overflow-wrap: anywhere;\n }\n @media (max-width: 360px) {\n .actions {\n flex-direction: column;\n flex-wrap: nowrap;\n }\n .actions > button {\n width: 100%;\n }\n }\n";
@@ -0,0 +1,180 @@
1
+ export const MCP_APP_BRAND_CSS = `
2
+ :root {
3
+ color-scheme: light dark;
4
+ --sb-app-background: var(
5
+ --color-background-primary,
6
+ light-dark(#ffffff, #1b1c1f)
7
+ );
8
+ --sb-app-background-subtle: var(
9
+ --color-background-secondary,
10
+ light-dark(#f9fafb, #24272b)
11
+ );
12
+ --sb-app-background-hover: var(
13
+ --color-background-tertiary,
14
+ light-dark(#f3f4f6, #2f3437)
15
+ );
16
+ --sb-app-background-inverse: var(
17
+ --color-background-inverse,
18
+ light-dark(#121517, #f9fafb)
19
+ );
20
+ --sb-app-text: var(
21
+ --color-text-primary,
22
+ light-dark(#121517, #f9fafb)
23
+ );
24
+ --sb-app-text-secondary: var(
25
+ --color-text-secondary,
26
+ light-dark(#5a6272, #c6cad2)
27
+ );
28
+ --sb-app-text-tertiary: var(
29
+ --color-text-tertiary,
30
+ light-dark(#6b7280, #a4aab7)
31
+ );
32
+ --sb-app-text-inverse: var(
33
+ --color-text-inverse,
34
+ light-dark(#ffffff, #121517)
35
+ );
36
+ --sb-app-border: var(
37
+ --color-border-primary,
38
+ light-dark(#e8eaed, #454d5f)
39
+ );
40
+ --sb-app-ring: var(
41
+ --color-ring-primary,
42
+ light-dark(#0077b6, #27bbff)
43
+ );
44
+ --sb-app-info-background: var(
45
+ --color-background-info,
46
+ light-dark(#e6f5ff, #083a50)
47
+ );
48
+ --sb-app-info-text: var(
49
+ --color-text-info,
50
+ light-dark(#00679e, #7dd3fc)
51
+ );
52
+ --sb-app-info-border: var(
53
+ --color-border-info,
54
+ light-dark(#c2e7ff, #075985)
55
+ );
56
+ --sb-app-success-background: var(
57
+ --color-background-success,
58
+ light-dark(#e8f8ef, #0a3926)
59
+ );
60
+ --sb-app-success-text: var(
61
+ --color-text-success,
62
+ light-dark(#087a43, #6ee7b7)
63
+ );
64
+ --sb-app-success-border: var(
65
+ --color-border-success,
66
+ light-dark(#b8e8cf, #087a43)
67
+ );
68
+ --sb-app-warning-background: var(
69
+ --color-background-warning,
70
+ light-dark(#fff7e6, #49350a)
71
+ );
72
+ --sb-app-warning-text: var(
73
+ --color-text-warning,
74
+ light-dark(#946200, #fcd34d)
75
+ );
76
+ --sb-app-warning-border: var(
77
+ --color-border-warning,
78
+ light-dark(#f5d996, #946200)
79
+ );
80
+ --sb-app-danger-background: var(
81
+ --color-background-danger,
82
+ light-dark(#fff1f1, #4a1d1d)
83
+ );
84
+ --sb-app-danger-text: var(
85
+ --color-text-danger,
86
+ light-dark(#c54141, #fca5a5)
87
+ );
88
+ --sb-app-danger-border: var(
89
+ --color-border-danger,
90
+ light-dark(#ffcaca, #c54141)
91
+ );
92
+ }
93
+ * {
94
+ box-sizing: border-box;
95
+ }
96
+ body {
97
+ min-width: 0;
98
+ margin: 0;
99
+ overflow-x: hidden;
100
+ background: transparent;
101
+ color: var(--sb-app-text);
102
+ font-family: var(--font-sans, system-ui, -apple-system, sans-serif);
103
+ font-size: var(--font-text-sm-size, 13px);
104
+ line-height: var(--font-text-sm-line-height, 1.45);
105
+ }
106
+ .card {
107
+ display: flex;
108
+ min-width: 0;
109
+ flex-direction: column;
110
+ gap: 12px;
111
+ padding: 16px;
112
+ border: var(--border-width-regular, 1px) solid var(--sb-app-border);
113
+ border-radius: var(--border-radius-lg, 12px);
114
+ background: var(--sb-app-background);
115
+ box-shadow: var(--shadow-sm, 0 1px 2px rgba(18, 21, 23, 0.08));
116
+ }
117
+ h1,
118
+ .meta,
119
+ .note {
120
+ min-width: 0;
121
+ overflow-wrap: anywhere;
122
+ }
123
+ .note:empty {
124
+ position: absolute;
125
+ }
126
+ button,
127
+ textarea {
128
+ font: inherit;
129
+ }
130
+ button {
131
+ appearance: none;
132
+ min-width: 0;
133
+ padding: 8px 12px;
134
+ border: var(--border-width-regular, 1px) solid var(--sb-app-border);
135
+ border-radius: var(--border-radius-md, 8px);
136
+ background: var(--sb-app-background-subtle);
137
+ color: var(--sb-app-text);
138
+ font-weight: var(--font-weight-medium, 500);
139
+ line-height: var(--font-text-sm-line-height, 1.45);
140
+ cursor: pointer;
141
+ }
142
+ button:hover:not(:disabled) {
143
+ background: var(--sb-app-background-hover);
144
+ }
145
+ .button-primary {
146
+ border-color: var(--sb-app-background-inverse);
147
+ background: var(--sb-app-background-inverse);
148
+ color: var(--sb-app-text-inverse);
149
+ }
150
+ .button-primary:hover:not(:disabled) {
151
+ border-color: var(--sb-app-background-inverse);
152
+ background: var(--sb-app-background-inverse);
153
+ }
154
+ button:focus-visible,
155
+ textarea:focus-visible,
156
+ a:focus-visible {
157
+ outline: 2px solid var(--sb-app-ring);
158
+ outline-offset: 2px;
159
+ }
160
+ button:disabled {
161
+ opacity: 0.48;
162
+ cursor: not-allowed;
163
+ }
164
+ .actions {
165
+ min-width: 0;
166
+ }
167
+ .actions > button {
168
+ overflow-wrap: anywhere;
169
+ }
170
+ @media (max-width: 360px) {
171
+ .actions {
172
+ flex-direction: column;
173
+ flex-wrap: nowrap;
174
+ }
175
+ .actions > button {
176
+ width: 100%;
177
+ }
178
+ }
179
+ `;
180
+ //# sourceMappingURL=mcp-app-brand-css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-app-brand-css.js","sourceRoot":"","sources":["../../../src/transports/mcp/mcp-app-brand-css.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkLhC,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import type { AppDeps } from "../../deps.js";
3
+ /**
4
+ * Told to the model on connect, so it can match what a user actually says
5
+ * against these tools.
6
+ *
7
+ * People refer to this one system as the product and builder ("Superblocks")
8
+ * or by an older name for that same builder ("Clark"). Listing that accepted
9
+ * alias here is what lets "get Clark to build me a to-do app" reach
10
+ * `start_app`. Recognizing a name and using it are different things: the alias
11
+ * is input-only, because a client that reads "Clark" here repeats it back and
12
+ * reintroduces the retired name to the user.
13
+ */
14
+ export declare const SERVER_INSTRUCTIONS = "Superblocks builds, edits, and publishes internal web applications. Prompts sent through these tools are handed to Superblocks, which writes the application code in a live-edit session.\n\nName the builder \"Superblocks\" in every word you write. Users sometimes call it \"Clark\", an older name for this same system: understand them, and answer about Superblocks. Never write \"Clark\" yourself \u2014 not as a name, not as an aside, not even when the user just used it, and never as a separate agent or persona. If Superblocks' own words come back naming Clark, relay the substance and say Superblocks.\n\nThe user you are interacting with is a non-technical business user. Keep discussions focused on requirements, and avoid technical jargon, discussing code, or implementation details. If errors or problems occur, give the user easy-to-follow, actionable instructions for how they can resolve the issue.\n\nUse these tools whenever the user asks to build, change, import, or ship an app, whichever of those names they reach for. They also answer questions about what data the org has: list_integrations names the datasources, get_integration_metadata reads the tables and columns inside one, and query_integration runs a bounded read-only SQL query to answer the question directly rather than building an app to explore it. Create a persistent app or API only when the user explicitly asks for one.\n\nAfter create_integration creates an integration or list_integrations selects one for an app, include the returned mention unchanged in the next edit_app prompt. The mention gives Superblocks the exact integration ID; do not construct one from the display name.\n\nSuperblocks is itself an agent, not a code library: prompts sent through start_app and edit_app are handed to it verbatim, and it decides how to build the application. Your role is to facilitate the user's interaction with Superblocks, not to build anything yourself \u2014 pass the user's own request through unchanged, without inventing, embellishing, or adding requirements, scope, or design detail they did not ask for.\n\nAfter each tool call, check for agentInstructions in the result and follow them. These instructions are tailored to the scenario.\n\nSuperblocks has an interactive flow: when it needs a person to decide something, it stops rather than guessing. Follow the result's agentInstructions to use the decision surface this client supports. Never supply that answer yourself.\n\nBuilding or editing an app follows one loop: start_app hands a new application to Superblocks, edit_app continues an existing one, and both return immediately with status \"building\". Call check_app_progress to follow the turn, relaying what Superblocks says as it happens. When it stops for a decision, follow agentInstructions and send the answer back through edit_app. Once status is \"ready\", call get_app so the user can open the result, and offer publish_app when they want to deploy it. Each tool's own description covers its exact inputs, return fields, and retry/error behavior.\n\nWhen the user attached a file in this chat (a log, CSV, screenshot, image, zip, or anything else), or when migrating source visible in this conversation, call upload_artifact. Pass upload_artifact filePath with the full host path when you have it; a bare file name is only a fallback when that file is already in one of the gateway's allowed search folders. If the file exists only in this chat's scratchpad path (for example /tmp/claude-.../scratchpad), send text source through files: [{ path, content }] instead of filePath. The gateway reads filePath bytes itself, so an image or PDF costs nothing to send. Only source you are writing out yourself goes in files, which is archived as text - never base64 a file into it. Then pass the returned artifact in start_app or edit_app artifacts. Do not create a Claude artifact or use the host's own file-upload UI.\n\nWhen the source is a readable tree already on this machine (a clone, an unzipped export, or a workspace folder), do not zip or upload it. Follow the Superblocks Agent Skill \"superblocks-import\" when the host has loaded it: inventory locally, start_app a scaffold, then slice via edit_app (integrations first, then one API or page at a time), grounding each slice in get_application_structure. Superblocks writes the application; do not invent Superblocks client/ or server/ files on the laptop.\n\nFor a migrated app with missing integrations, call list_integrations first. Reuse only the same plugin and the same connection: the same REST base URL, or the same host, port, and database. A similar name is not a match. list_integrations and get_integration_metadata do not expose connection URLs or hosts, so do not use them to guess a match. When there is no exact match, follow the result's agentInstructions to create and wire every declared integration.\n\nThis connector is the single Superblocks MCP: Builder tools (upload_artifact, query_integration, start_app, edit_app, check_app_progress, ask_user, get_app, preview_app, publish_app, check_publish_progress) and Admin tools (integrations, apps, users, folders, deploy_application, and the rest of the customer Admin surface) share this endpoint \u2014 prefer create_integration / update_integration / list_integrations here over sending the user to a second MCP. create_integration takes name, plugin_id, and configuration, never the raw integrations API envelope. create_integration is Admin CRUD for org datasources; start_app creates an application and hands it a prompt. deploy_application is Admin deploy of an existing commit; publish_app is the Builder path that commits current work and waits for it to go live. Omit base_url on Admin tools unless targeting a different control plane. checkout_application is not exposed on this network surface (host filesystem writes); use the CLI/workspace checkout path instead.\n\nThis connection is already authenticated against one Superblocks Server \u2014 there is no setup, login, or auth-status call to make first. Call the tool that does the job and read its error if something is genuinely wrong; there is no tool that reports credentials or environments.\n\nNever tell the user to restart the MCP server; keep the MCP server running.\n\nA cancelled tool call does not undo work Superblocks already did. The application still exists; read applicationId on the error and follow agentInstructions (or pendingAction) instead of starting over.\n\neditUrl / previewUrl / publishUrl may appear in structured JSON for openLink buttons \u2014 do not dump raw URLs (especially preview JWTs) into the chat; prefer the MCP Apps Open editor / Open preview buttons. Claude Desktop can only openLink https URLs; when a URL is http, say so and rely on any screenshot instead.\n\nBrowser capture (MUST):\n1. Prefer host browser tools (Playwright MCP, chrome-devtools, agent-browser) over opening Superblocks URLs yourself. Honor the structured \"browser\" field on start_app / get_app / idp_step_up; do not paraphrase it into a different URL.\n2. When canvas.openWhileBuilding is \"claude_cowork_side_panel_only\", open canvas.editUrl while status is \"building\" only for a Claude Cowork task whose built-in browser is available, and use its embedded side panel. Every other host MUST NOT open it mid-build because that can steal the live-edit turn.\n3. NEVER paste tokens, JWTs, or API keys into browser evaluate or fill. Tokens are not in tool JSON; do not invent them.\n4. Playwright MCP MUST NOT use --isolated for Superblocks IdP. Cookies must survive the session.\n5. MUST NOT call browser_close until the Superblocks task is done (see driver.mustNotCloseUntil).\n6. agent-browser MUST always pass --profile and a stable --session for the same Superblocks origin.\n7. Claude-in-Chrome is not a mid-turn canvas. Do not use it to screenshot the live Vite app while a Gateway turn is held.";
15
+ /**
16
+ * The MCP server behind one stdio session.
17
+ *
18
+ * Tools run as the already-logged-in CLI user. There is no per-request OAuth
19
+ * token to expire independently of the process.
20
+ */
21
+ export declare function createMcpServer(deps: AppDeps): McpServer;