sunpeak 0.18.9 → 0.18.12

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 (66) hide show
  1. package/README.md +12 -0
  2. package/bin/commands/inspect.mjs +4 -1
  3. package/bin/lib/sandbox-server.mjs +12 -1
  4. package/dist/chatgpt/index.cjs +1 -1
  5. package/dist/chatgpt/index.js +1 -1
  6. package/dist/claude/index.cjs +1 -1
  7. package/dist/claude/index.js +1 -1
  8. package/dist/host/chatgpt/index.cjs +1 -1
  9. package/dist/host/chatgpt/index.js +1 -1
  10. package/dist/index.cjs +93 -93
  11. package/dist/index.cjs.map +1 -1
  12. package/dist/index.js +54 -54
  13. package/dist/index.js.map +1 -1
  14. package/dist/inspector/hosts.d.ts +12 -0
  15. package/dist/inspector/index.cjs +1 -1
  16. package/dist/inspector/index.js +1 -1
  17. package/dist/{inspector-CTMccsz9.cjs → inspector-8nPV2A-z.cjs} +93 -51
  18. package/dist/inspector-8nPV2A-z.cjs.map +1 -0
  19. package/dist/{inspector-DkS75JCk.js → inspector-Cdo5BK2D.js} +92 -50
  20. package/dist/inspector-Cdo5BK2D.js.map +1 -0
  21. package/dist/mcp/index.cjs +67 -62
  22. package/dist/mcp/index.cjs.map +1 -1
  23. package/dist/mcp/index.js +61 -56
  24. package/dist/mcp/index.js.map +1 -1
  25. package/dist/{protocol-DJmRaBzO.js → protocol-BfAACnv0.js} +14 -9
  26. package/dist/{protocol-DJmRaBzO.js.map → protocol-BfAACnv0.js.map} +1 -1
  27. package/dist/{protocol-jbxhzcnS.cjs → protocol-C7kTcBr_.cjs} +14 -9
  28. package/dist/{protocol-jbxhzcnS.cjs.map → protocol-C7kTcBr_.cjs.map} +1 -1
  29. package/dist/style.css +36 -1
  30. package/dist/{use-app-BNbz1uzj.js → use-app-CfP9VypY.js} +107 -56
  31. package/dist/use-app-CfP9VypY.js.map +1 -0
  32. package/dist/{use-app-Dqh20JPP.cjs → use-app-CzcYw1Kz.cjs} +165 -114
  33. package/dist/use-app-CzcYw1Kz.cjs.map +1 -0
  34. package/package.json +3 -3
  35. package/template/README.md +12 -0
  36. package/template/dist/albums/albums.html +16 -15
  37. package/template/dist/albums/albums.json +1 -1
  38. package/template/dist/carousel/carousel.html +20 -19
  39. package/template/dist/carousel/carousel.json +1 -1
  40. package/template/dist/map/map.html +7 -6
  41. package/template/dist/map/map.json +1 -1
  42. package/template/dist/review/review.html +6 -5
  43. package/template/dist/review/review.json +1 -1
  44. package/template/node_modules/.vite/deps/_metadata.json +3 -3
  45. package/template/node_modules/.vite-mcp/deps/@modelcontextprotocol_ext-apps.js +49 -49
  46. package/template/node_modules/.vite-mcp/deps/@modelcontextprotocol_ext-apps.js.map +1 -1
  47. package/template/node_modules/.vite-mcp/deps/@modelcontextprotocol_ext-apps_app-bridge.js +49 -49
  48. package/template/node_modules/.vite-mcp/deps/@modelcontextprotocol_ext-apps_app-bridge.js.map +1 -1
  49. package/template/node_modules/.vite-mcp/deps/@modelcontextprotocol_ext-apps_react.js +89 -89
  50. package/template/node_modules/.vite-mcp/deps/@modelcontextprotocol_ext-apps_react.js.map +1 -1
  51. package/template/node_modules/.vite-mcp/deps/_metadata.json +24 -24
  52. package/template/node_modules/.vite-mcp/deps/{protocol-CTflwIfG.js → protocol-B_qKkui_.js} +14 -9
  53. package/template/node_modules/.vite-mcp/deps/protocol-B_qKkui_.js.map +1 -0
  54. package/template/src/resources/carousel/carousel.test.tsx +16 -2
  55. package/template/src/resources/carousel/carousel.tsx +42 -14
  56. package/template/src/resources/carousel/components/carousel.tsx +20 -0
  57. package/template/src/resources/carousel/components/index.ts +1 -0
  58. package/template/src/resources/carousel/components/place-detail.tsx +153 -0
  59. package/template/tests/e2e/carousel.spec.ts +125 -0
  60. package/template/tests/live/carousel.spec.ts +2 -2
  61. package/template/tests/simulations/show-carousel.json +54 -5
  62. package/dist/inspector-CTMccsz9.cjs.map +0 -1
  63. package/dist/inspector-DkS75JCk.js.map +0 -1
  64. package/dist/use-app-BNbz1uzj.js.map +0 -1
  65. package/dist/use-app-Dqh20JPP.cjs.map +0 -1
  66. package/template/node_modules/.vite-mcp/deps/protocol-CTflwIfG.js.map +0 -1
package/README.md CHANGED
@@ -230,6 +230,18 @@ Install the `create-sunpeak-app` skill to give your coding agent (Claude Code, C
230
230
  npx skills add Sunpeak-AI/sunpeak@create-sunpeak-app
231
231
  ```
232
232
 
233
+ ## Troubleshooting
234
+
235
+ If your app doesn't render in ChatGPT or Claude:
236
+
237
+ 1. **Check your tunnel** is running and pointing to the correct port
238
+ 2. **Restart `sunpeak dev`** to clear stale connections
239
+ 3. **Refresh or re-add the MCP server** in the host's settings (Settings > MCP Servers)
240
+ 4. **Hard refresh** the host page (`Cmd+Shift+R` / `Ctrl+Shift+R`)
241
+ 5. **Open a new chat** in the host (cached iframes persist per-conversation)
242
+
243
+ Full guide: [sunpeak.ai/docs/guides/troubleshooting](https://sunpeak.ai/docs/guides/troubleshooting)
244
+
233
245
  ## Resources
234
246
 
235
247
  - [MCP Apps Documentation](https://sunpeak.ai/docs/mcp-apps/introduction)
@@ -1144,10 +1144,13 @@ export async function inspectServer(opts) {
1144
1144
  server.printUrls();
1145
1145
  server.bindCLIShortcuts({ print: true });
1146
1146
 
1147
+ // Print troubleshooting link (dimmed)
1148
+ console.log('\n \x1b[2mApp not loading? \u2192 https://sunpeak.ai/docs/guides/troubleshooting\x1b[0m');
1149
+
1147
1150
  // Print star-begging message unless suppressed
1148
1151
  if (!noBegging) {
1149
1152
  // #FFB800 in 24-bit ANSI color
1150
- console.log('\n\n\x1b[38;2;255;184;0m\u2b50\ufe0f \u2192 \u2764\ufe0f https://github.com/Sunpeak-AI/sunpeak\x1b[0m\n');
1153
+ console.log('\n\x1b[38;2;255;184;0m\u2b50\ufe0f \u2192 \u2764\ufe0f https://github.com/Sunpeak-AI/sunpeak\x1b[0m\n');
1151
1154
  }
1152
1155
 
1153
1156
  // Cleanup on exit
@@ -208,6 +208,7 @@ iframe { border: none; width: 100%; height: 100%; display: block; }
208
208
  });
209
209
 
210
210
  function createInnerFrame(params) {
211
+ clearInterval(readyInterval);
211
212
  if (innerFrame) innerFrame.remove();
212
213
 
213
214
  innerFrame = document.createElement('iframe');
@@ -226,6 +227,7 @@ iframe { border: none; width: 100%; height: 100%; display: block; }
226
227
  }
227
228
 
228
229
  function createInnerFrameWithSrc(params) {
230
+ clearInterval(readyInterval);
229
231
  if (innerFrame) innerFrame.remove();
230
232
 
231
233
  innerFrame = document.createElement('iframe');
@@ -296,7 +298,15 @@ iframe { border: none; width: 100%; height: 100%; display: block; }
296
298
  'e.source.postMessage({jsonrpc:"2.0",method:"sunpeak/fence-ack",params:{fenceId:fid}},"*");' +
297
299
  '});}});';
298
300
 
299
- // Signal readiness to the host
301
+ // Signal readiness to the host. Retry every 200ms in case the host's
302
+ // PostMessage listener isn't attached yet (srcdoc race with React refs).
303
+ var readyInterval = setInterval(function() {
304
+ window.parent.postMessage({
305
+ jsonrpc: '2.0',
306
+ method: 'ui/notifications/sandbox-proxy-ready',
307
+ params: {}
308
+ }, '*');
309
+ }, 200);
300
310
  setTimeout(function() {
301
311
  window.parent.postMessage({
302
312
  jsonrpc: '2.0',
@@ -304,6 +314,7 @@ iframe { border: none; width: 100%; height: 100%; display: block; }
304
314
  params: {}
305
315
  }, '*');
306
316
  }, 0);
317
+ setTimeout(function() { clearInterval(readyInterval); }, 10000);
307
318
  })();
308
319
  </script>
309
320
  </body>
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_chunk = require("../chunk-9hOWP6kD.cjs");
3
- const require_inspector = require("../inspector-CTMccsz9.cjs");
3
+ const require_inspector = require("../inspector-8nPV2A-z.cjs");
4
4
  const require_inspector_url = require("../inspector-url-C3LTKgXt.cjs");
5
5
  const require_discovery = require("../discovery-Clu4uHp1.cjs");
6
6
  //#region src/chatgpt/index.ts
@@ -1,5 +1,5 @@
1
1
  import { r as __exportAll } from "../chunk-D6g4UhsZ.js";
2
- import { _ as McpAppHost, d as ThemeProvider, f as useThemeContext, g as extractResourceCSP, h as IframeResource, n as resolveServerToolResult, t as Inspector, v as SCREEN_WIDTHS } from "../inspector-DkS75JCk.js";
2
+ import { _ as McpAppHost, d as ThemeProvider, f as useThemeContext, g as extractResourceCSP, h as IframeResource, n as resolveServerToolResult, t as Inspector, v as SCREEN_WIDTHS } from "../inspector-Cdo5BK2D.js";
3
3
  import { t as createInspectorUrl } from "../inspector-url-CyQcuBI9.js";
4
4
  import { c as toPascalCase, i as findResourceKey, n as extractSimulationKey, r as findResourceDirs, s as getComponentName, t as extractResourceKey } from "../discovery-Cgoegt62.js";
5
5
  //#region src/chatgpt/index.ts
@@ -1,4 +1,4 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  require("../chunk-9hOWP6kD.cjs");
3
- const require_inspector = require("../inspector-CTMccsz9.cjs");
3
+ const require_inspector = require("../inspector-8nPV2A-z.cjs");
4
4
  exports.Inspector = require_inspector.Inspector;
@@ -1,2 +1,2 @@
1
- import { t as Inspector } from "../inspector-DkS75JCk.js";
1
+ import { t as Inspector } from "../inspector-Cdo5BK2D.js";
2
2
  export { Inspector };
@@ -1,6 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  require("../../chunk-9hOWP6kD.cjs");
3
- const require_use_app = require("../../use-app-Dqh20JPP.cjs");
3
+ const require_use_app = require("../../use-app-CzcYw1Kz.cjs");
4
4
  let react = require("react");
5
5
  //#region src/host/chatgpt/openai-types.ts
6
6
  /**
@@ -1,4 +1,4 @@
1
- import { t as useApp } from "../../use-app-BNbz1uzj.js";
1
+ import { t as useApp } from "../../use-app-CfP9VypY.js";
2
2
  import { useCallback } from "react";
3
3
  //#region src/host/chatgpt/openai-types.ts
4
4
  /**
package/dist/index.cjs CHANGED
@@ -1,16 +1,16 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_chunk = require("./chunk-9hOWP6kD.cjs");
3
- const require_protocol = require("./protocol-jbxhzcnS.cjs");
4
- const require_use_app = require("./use-app-Dqh20JPP.cjs");
5
- const require_inspector = require("./inspector-CTMccsz9.cjs");
3
+ const require_protocol = require("./protocol-C7kTcBr_.cjs");
4
+ const require_use_app = require("./use-app-CzcYw1Kz.cjs");
5
+ const require_inspector = require("./inspector-8nPV2A-z.cjs");
6
6
  const require_host_index = require("./host/index.cjs");
7
7
  const require_inspector_index = require("./inspector/index.cjs");
8
8
  const require_chatgpt_index = require("./chatgpt/index.cjs");
9
9
  let react = require("react");
10
10
  react = require_chunk.__toESM(react);
11
11
  let react_jsx_runtime = require("react/jsx-runtime");
12
- //#region ../../node_modules/.pnpm/@modelcontextprotocol+ext-apps@1.3.1_@modelcontextprotocol+sdk@1.27.1_zod@4.3.6__react-_cd1fb28fd87e0bddd0a29eba0721855d/node_modules/@modelcontextprotocol/ext-apps/dist/src/react/index.js
13
- var m$1 = require_protocol.union([require_protocol.literal("light"), require_protocol.literal("dark")]).describe("Color theme preference for the host environment."), W$1 = require_protocol.union([
12
+ //#region ../../node_modules/.pnpm/@modelcontextprotocol+ext-apps@1.3.2_@modelcontextprotocol+sdk@1.29.0_zod@4.3.6__react-_38e5f6c50a4ca9cf3f1dffc73a60c951/node_modules/@modelcontextprotocol/ext-apps/dist/src/react/index.js
13
+ var h = require_protocol.union([require_protocol.literal("light"), require_protocol.literal("dark")]).describe("Color theme preference for the host environment."), j = require_protocol.union([
14
14
  require_protocol.literal("inline"),
15
15
  require_protocol.literal("fullscreen"),
16
16
  require_protocol.literal("pip")
@@ -121,7 +121,7 @@ require_protocol.object({
121
121
  method: require_protocol.literal("ui/notifications/sandbox-proxy-ready"),
122
122
  params: require_protocol.object({})
123
123
  });
124
- var P$1 = require_protocol.object({
124
+ var V$1 = require_protocol.object({
125
125
  connectDomains: require_protocol.array(require_protocol.string()).optional().describe(`Origins for network requests (fetch/XHR/WebSocket).
126
126
 
127
127
  - Maps to CSP \`connect-src\` directive
@@ -129,7 +129,7 @@ var P$1 = require_protocol.object({
129
129
  resourceDomains: require_protocol.array(require_protocol.string()).optional().describe("Origins for static resources (images, scripts, stylesheets, fonts, media).\n\n- Maps to CSP `img-src`, `script-src`, `style-src`, `font-src`, `media-src` directives\n- Wildcard subdomains supported: `https://*.example.com`\n- Empty or omitted → no network resources (secure default)"),
130
130
  frameDomains: require_protocol.array(require_protocol.string()).optional().describe("Origins for nested iframes.\n\n- Maps to CSP `frame-src` directive\n- Empty or omitted → no nested iframes allowed (`frame-src 'none'`)"),
131
131
  baseUriDomains: require_protocol.array(require_protocol.string()).optional().describe("Allowed base URIs for the document.\n\n- Maps to CSP `base-uri` directive\n- Empty or omitted → only same origin allowed (`base-uri 'self'`)")
132
- }), _$1 = require_protocol.object({
132
+ }), P$1 = require_protocol.object({
133
133
  camera: require_protocol.object({}).optional().describe("Request camera access.\n\nMaps to Permission Policy `camera` feature."),
134
134
  microphone: require_protocol.object({}).optional().describe("Request microphone access.\n\nMaps to Permission Policy `microphone` feature."),
135
135
  geolocation: require_protocol.object({}).optional().describe("Request geolocation access.\n\nMaps to Permission Policy `geolocation` feature."),
@@ -154,16 +154,16 @@ require_protocol.object({
154
154
  method: require_protocol.literal("ui/notifications/tool-cancelled"),
155
155
  params: require_protocol.object({ reason: require_protocol.string().optional().describe("Optional reason for the cancellation (e.g., \"user action\", \"timeout\").") })
156
156
  });
157
- var c$1 = require_protocol.object({ fonts: require_protocol.string().optional() }), r$2 = require_protocol.object({
157
+ var m$1 = require_protocol.object({ fonts: require_protocol.string().optional() }), c$1 = require_protocol.object({
158
158
  variables: qJ.optional().describe("CSS variables for theming the app."),
159
- css: c$1.optional().describe("CSS blocks that apps can inject.")
159
+ css: m$1.optional().describe("CSS blocks that apps can inject.")
160
160
  });
161
161
  require_protocol.object({
162
162
  method: require_protocol.literal("ui/resource-teardown"),
163
163
  params: require_protocol.object({})
164
164
  });
165
165
  require_protocol.record(require_protocol.string(), require_protocol.unknown());
166
- var w$1 = require_protocol.object({
166
+ var U$1 = require_protocol.object({
167
167
  text: require_protocol.object({}).optional().describe("Host supports text content blocks."),
168
168
  image: require_protocol.object({}).optional().describe("Host supports image content blocks."),
169
169
  audio: require_protocol.object({}).optional().describe("Host supports audio content blocks."),
@@ -175,7 +175,7 @@ require_protocol.object({
175
175
  method: require_protocol.literal("ui/notifications/request-teardown"),
176
176
  params: require_protocol.object({}).optional()
177
177
  });
178
- var l = require_protocol.object({
178
+ var r$2 = require_protocol.object({
179
179
  experimental: require_protocol.object({}).optional().describe("Experimental features (structure TBD)."),
180
180
  openLinks: require_protocol.object({}).optional().describe("Host supports opening external URLs."),
181
181
  downloadFile: require_protocol.object({}).optional().describe("Host supports file downloads via ui/download-file."),
@@ -183,23 +183,23 @@ var l = require_protocol.object({
183
183
  serverResources: require_protocol.object({ listChanged: require_protocol.boolean().optional().describe("Host supports resources/list_changed notifications.") }).optional().describe("Host can proxy resource reads to the MCP server."),
184
184
  logging: require_protocol.object({}).optional().describe("Host accepts log messages."),
185
185
  sandbox: require_protocol.object({
186
- permissions: _$1.optional().describe("Permissions granted by the host (camera, microphone, geolocation)."),
187
- csp: P$1.optional().describe("CSP domains approved by the host.")
186
+ permissions: P$1.optional().describe("Permissions granted by the host (camera, microphone, geolocation)."),
187
+ csp: V$1.optional().describe("CSP domains approved by the host.")
188
188
  }).optional().describe("Sandbox configuration applied by the host."),
189
- updateModelContext: w$1.optional().describe("Host accepts context updates (ui/update-model-context) to be included in the model's context for future turns."),
190
- message: w$1.optional().describe("Host supports receiving content messages (ui/message) from the view.")
191
- }), i = require_protocol.object({
189
+ updateModelContext: U$1.optional().describe("Host accepts context updates (ui/update-model-context) to be included in the model's context for future turns."),
190
+ message: U$1.optional().describe("Host supports receiving content messages (ui/message) from the view.")
191
+ }), l$1 = require_protocol.object({
192
192
  experimental: require_protocol.object({}).optional().describe("Experimental features (structure TBD)."),
193
193
  tools: require_protocol.object({ listChanged: require_protocol.boolean().optional().describe("App supports tools/list_changed notifications.") }).optional().describe("App exposes MCP-style tools that the host can call."),
194
- availableDisplayModes: require_protocol.array(W$1).optional().describe("Display modes the app supports.")
194
+ availableDisplayModes: require_protocol.array(j).optional().describe("Display modes the app supports.")
195
195
  });
196
196
  require_protocol.object({
197
197
  method: require_protocol.literal("ui/notifications/initialized"),
198
198
  params: require_protocol.object({}).optional()
199
199
  });
200
200
  require_protocol.object({
201
- csp: P$1.optional().describe("Content Security Policy configuration for UI resources."),
202
- permissions: _$1.optional().describe("Sandbox permissions requested by the UI resource."),
201
+ csp: V$1.optional().describe("Content Security Policy configuration for UI resources."),
202
+ permissions: P$1.optional().describe("Sandbox permissions requested by the UI resource."),
203
203
  domain: require_protocol.string().optional().describe(`Dedicated origin for view sandbox.
204
204
 
205
205
  Useful when views need stable, dedicated origins for OAuth callbacks, CORS policies, or API key allowlists.
@@ -219,13 +219,13 @@ Boolean requesting whether a visible border and background is provided by the ho
219
219
  });
220
220
  require_protocol.object({
221
221
  method: require_protocol.literal("ui/request-display-mode"),
222
- params: require_protocol.object({ mode: W$1.describe("The display mode being requested.") })
222
+ params: require_protocol.object({ mode: j.describe("The display mode being requested.") })
223
223
  });
224
- require_protocol.object({ mode: W$1.describe("The display mode that was actually set. May differ from requested if not supported.") }).passthrough();
225
- var p$1 = require_protocol.union([require_protocol.literal("model"), require_protocol.literal("app")]).describe("Tool visibility scope - who can access the tool.");
224
+ require_protocol.object({ mode: j.describe("The display mode that was actually set. May differ from requested if not supported.") }).passthrough();
225
+ var i$1 = require_protocol.union([require_protocol.literal("model"), require_protocol.literal("app")]).describe("Tool visibility scope - who can access the tool.");
226
226
  require_protocol.object({
227
227
  resourceUri: require_protocol.string().optional(),
228
- visibility: require_protocol.array(p$1).optional().describe(`Who can access this tool. Default: ["model", "app"]
228
+ visibility: require_protocol.array(i$1).optional().describe(`Who can access this tool. Default: ["model", "app"]
229
229
  - "model": Tool visible to and callable by the agent
230
230
  - "app": Tool callable by the app from this server only`)
231
231
  });
@@ -246,23 +246,23 @@ require_protocol.object({
246
246
  params: require_protocol.object({
247
247
  html: require_protocol.string().describe("HTML content to load into the inner iframe."),
248
248
  sandbox: require_protocol.string().optional().describe("Optional override for the inner iframe's sandbox attribute."),
249
- csp: P$1.optional().describe("CSP configuration from resource metadata."),
250
- permissions: _$1.optional().describe("Sandbox permissions from resource metadata.")
249
+ csp: V$1.optional().describe("CSP configuration from resource metadata."),
250
+ permissions: P$1.optional().describe("Sandbox permissions from resource metadata.")
251
251
  })
252
252
  });
253
253
  require_protocol.object({
254
254
  method: require_protocol.literal("ui/notifications/tool-result"),
255
255
  params: require_protocol.CallToolResultSchema.describe("Standard MCP tool execution result.")
256
256
  });
257
- var g$1 = require_protocol.object({
257
+ var C$1 = require_protocol.object({
258
258
  toolInfo: require_protocol.object({
259
259
  id: require_protocol.RequestIdSchema.optional().describe("JSON-RPC id of the tools/call request."),
260
260
  tool: require_protocol.ToolSchema.describe("Tool definition including name, inputSchema, etc.")
261
261
  }).optional().describe("Metadata of the tool call that instantiated this App."),
262
- theme: m$1.optional().describe("Current color theme preference."),
263
- styles: r$2.optional().describe("Style configuration for theming the app."),
264
- displayMode: W$1.optional().describe("How the UI is currently displayed."),
265
- availableDisplayModes: require_protocol.array(W$1).optional().describe("Display modes the host supports."),
262
+ theme: h.optional().describe("Current color theme preference."),
263
+ styles: c$1.optional().describe("Style configuration for theming the app."),
264
+ displayMode: j.optional().describe("How the UI is currently displayed."),
265
+ availableDisplayModes: require_protocol.array(j).optional().describe("Display modes the host supports."),
266
266
  containerDimensions: require_protocol.union([require_protocol.object({ height: require_protocol.number().describe("Fixed container height in pixels.") }), require_protocol.object({ maxHeight: require_protocol.union([require_protocol.number(), require_protocol._undefined()]).optional().describe("Maximum container height in pixels.") })]).and(require_protocol.union([require_protocol.object({ width: require_protocol.number().describe("Fixed container width in pixels.") }), require_protocol.object({ maxWidth: require_protocol.union([require_protocol.number(), require_protocol._undefined()]).optional().describe("Maximum container width in pixels.") })])).optional().describe(`Container dimensions. Represents the dimensions of the iframe or other
267
267
  container holding the app. Specify either width or maxWidth, and either height or maxHeight.`),
268
268
  locale: require_protocol.string().optional().describe("User's language and region preference in BCP 47 format."),
@@ -286,7 +286,7 @@ container holding the app. Specify either width or maxWidth, and either height o
286
286
  }).passthrough();
287
287
  require_protocol.object({
288
288
  method: require_protocol.literal("ui/notifications/host-context-changed"),
289
- params: g$1.describe("Partial context update containing only changed fields.")
289
+ params: C$1.describe("Partial context update containing only changed fields.")
290
290
  });
291
291
  require_protocol.object({
292
292
  method: require_protocol.literal("ui/update-model-context"),
@@ -299,29 +299,29 @@ require_protocol.object({
299
299
  method: require_protocol.literal("ui/initialize"),
300
300
  params: require_protocol.object({
301
301
  appInfo: require_protocol.ImplementationSchema.describe("App identification (name and version)."),
302
- appCapabilities: i.describe("Features and capabilities this app provides."),
302
+ appCapabilities: l$1.describe("Features and capabilities this app provides."),
303
303
  protocolVersion: require_protocol.string().describe("Protocol version this app supports.")
304
304
  })
305
305
  });
306
306
  require_protocol.object({
307
307
  protocolVersion: require_protocol.string().describe("Negotiated protocol version string (e.g., \"2025-11-21\")."),
308
308
  hostInfo: require_protocol.ImplementationSchema.describe("Host application identification and version."),
309
- hostCapabilities: l.describe("Features and capabilities provided by the host."),
310
- hostContext: g$1.describe("Rich context about the host environment.")
309
+ hostCapabilities: r$2.describe("Features and capabilities provided by the host."),
310
+ hostContext: C$1.describe("Rich context about the host environment.")
311
311
  }).passthrough();
312
- function O$1() {
312
+ function _$1() {
313
313
  let K = document.documentElement.getAttribute("data-theme");
314
314
  if (K === "dark" || K === "light") return K;
315
315
  return document.documentElement.classList.contains("dark") ? "dark" : "light";
316
316
  }
317
- function q$1(K) {
317
+ function O$1(K) {
318
318
  let Q = document.documentElement;
319
319
  Q.setAttribute("data-theme", K), Q.style.colorScheme = K;
320
320
  }
321
- function D(K, Q = document.documentElement) {
321
+ function q$1(K, Q = document.documentElement) {
322
322
  for (let [X, Y] of Object.entries(K)) if (Y !== void 0) Q.style.setProperty(X, Y);
323
323
  }
324
- function I$1(K) {
324
+ function D$1(K) {
325
325
  if (document.getElementById("__mcp-host-fonts")) return;
326
326
  let X = document.createElement("style");
327
327
  X.id = "__mcp-host-fonts", X.textContent = K, document.head.appendChild(X);
@@ -333,10 +333,10 @@ function eK(K, Q) {
333
333
  }, [K, Q]);
334
334
  }
335
335
  function XQ() {
336
- let [K, Q] = (0, react.useState)(O$1);
336
+ let [K, Q] = (0, react.useState)(_$1);
337
337
  return (0, react.useEffect)(() => {
338
338
  let X = new MutationObserver(() => {
339
- Q(O$1());
339
+ Q(_$1());
340
340
  });
341
341
  return X.observe(document.documentElement, {
342
342
  attributes: !0,
@@ -351,14 +351,14 @@ function rJ(K, Q) {
351
351
  let X = (0, react.useRef)(!1);
352
352
  (0, react.useEffect)(() => {
353
353
  if (X.current) return;
354
- if (Q?.theme) q$1(Q.theme);
355
- if (Q?.styles?.variables) D(Q.styles.variables);
354
+ if (Q?.theme) O$1(Q.theme);
355
+ if (Q?.styles?.variables) q$1(Q.styles.variables);
356
356
  if (Q?.theme || Q?.styles?.variables) X.current = !0;
357
357
  }, [Q]), (0, react.useEffect)(() => {
358
358
  if (!K) return;
359
359
  K.onhostcontextchanged = (Y) => {
360
- if (Y.theme) q$1(Y.theme);
361
- if (Y.styles?.variables) D(Y.styles.variables);
360
+ if (Y.theme) O$1(Y.theme);
361
+ if (Y.styles?.variables) q$1(Y.styles.variables);
362
362
  };
363
363
  }, [K]);
364
364
  }
@@ -366,15 +366,15 @@ function lJ(K, Q) {
366
366
  let X = (0, react.useRef)(!1);
367
367
  (0, react.useEffect)(() => {
368
368
  if (X.current) return;
369
- if (Q?.styles?.css?.fonts) I$1(Q.styles.css.fonts), X.current = !0;
369
+ if (Q?.styles?.css?.fonts) D$1(Q.styles.css.fonts), X.current = !0;
370
370
  }, [Q]), (0, react.useEffect)(() => {
371
371
  if (!K) return;
372
372
  K.onhostcontextchanged = (Y) => {
373
- if (Y.styles?.css?.fonts) I$1(Y.styles.css.fonts);
373
+ if (Y.styles?.css?.fonts) D$1(Y.styles.css.fonts);
374
374
  };
375
375
  }, [K]);
376
376
  }
377
- function GQ(K, Q) {
377
+ function GQ$1(K, Q) {
378
378
  rJ(K, Q), lJ(K, Q);
379
379
  }
380
380
  //#endregion
@@ -394,8 +394,8 @@ var registries$1 = /* @__PURE__ */ new WeakMap();
394
394
  * Host-provided variables override defaults since they're applied after.
395
395
  */
396
396
  function applyStyles(variables) {
397
- require_use_app.TQ(require_inspector.DEFAULT_STYLE_VARIABLES);
398
- if (variables) require_use_app.TQ(variables);
397
+ require_use_app.FQ(require_inspector.DEFAULT_STYLE_VARIABLES);
398
+ if (variables) require_use_app.FQ(variables);
399
399
  }
400
400
  function getRegistry$1(app) {
401
401
  let subs = registries$1.get(app);
@@ -403,15 +403,15 @@ function getRegistry$1(app) {
403
403
  subs = /* @__PURE__ */ new Set();
404
404
  registries$1.set(app, subs);
405
405
  const ctx = app.getHostContext();
406
- if (ctx?.theme) require_use_app.qQ(ctx.theme);
406
+ if (ctx?.theme) require_use_app.AQ(ctx.theme);
407
407
  applyStyles(ctx?.styles?.variables);
408
- if (ctx?.styles?.css?.fonts) require_use_app.RQ(ctx.styles.css.fonts);
408
+ if (ctx?.styles?.css?.fonts) require_use_app.PQ(ctx.styles.css.fonts);
409
409
  let debounceTimer = null;
410
410
  app.onhostcontextchanged = () => {
411
411
  const ctx = app.getHostContext();
412
- if (ctx?.theme) require_use_app.qQ(ctx.theme);
412
+ if (ctx?.theme) require_use_app.AQ(ctx.theme);
413
413
  applyStyles(ctx?.styles?.variables);
414
- if (ctx?.styles?.css?.fonts) require_use_app.RQ(ctx.styles.css.fonts);
414
+ if (ctx?.styles?.css?.fonts) require_use_app.PQ(ctx.styles.css.fonts);
415
415
  if (debounceTimer) clearTimeout(debounceTimer);
416
416
  debounceTimer = setTimeout(() => {
417
417
  debounceTimer = null;
@@ -3207,64 +3207,64 @@ var prefersReducedMotion = createMediaQueryFn("(prefers-reduced-motion: reduce)"
3207
3207
  var isPrimarilyTouchDevice = createMediaQueryFn("(pointer: coarse)");
3208
3208
  var isHoverAvailable = createMediaQueryFn("(hover: hover)");
3209
3209
  //#endregion
3210
- exports.App = require_use_app.gQ;
3210
+ exports.App = require_use_app.kQ;
3211
3211
  exports.AppProvider = require_use_app.AppProvider;
3212
- exports.DOWNLOAD_FILE_METHOD = require_use_app.h;
3213
- exports.HOST_CONTEXT_CHANGED_METHOD = require_use_app.a;
3214
- exports.INITIALIZED_METHOD = require_use_app.e;
3215
- exports.INITIALIZE_METHOD = require_use_app.t;
3216
- exports.LATEST_PROTOCOL_VERSION = require_use_app.W;
3217
- exports.MESSAGE_METHOD = require_use_app.m;
3218
- exports.McpUiAppCapabilitiesSchema = require_use_app.g;
3219
- exports.McpUiDisplayModeSchema = require_use_app.J;
3220
- exports.McpUiDownloadFileRequestSchema = require_use_app.OQ;
3212
+ exports.DOWNLOAD_FILE_METHOD = require_use_app.u;
3213
+ exports.HOST_CONTEXT_CHANGED_METHOD = require_use_app.c;
3214
+ exports.INITIALIZED_METHOD = require_use_app.o;
3215
+ exports.INITIALIZE_METHOD = require_use_app.a;
3216
+ exports.LATEST_PROTOCOL_VERSION = require_use_app.E;
3217
+ exports.MESSAGE_METHOD = require_use_app.f;
3218
+ exports.McpUiAppCapabilitiesSchema = require_use_app.x;
3219
+ exports.McpUiDisplayModeSchema = require_use_app.D;
3220
+ exports.McpUiDownloadFileRequestSchema = require_use_app.LQ;
3221
3221
  exports.McpUiDownloadFileResultSchema = require_use_app._;
3222
- exports.McpUiHostCapabilitiesSchema = require_use_app.x;
3222
+ exports.McpUiHostCapabilitiesSchema = require_use_app.C;
3223
3223
  exports.McpUiHostContextChangedNotificationSchema = require_use_app.R;
3224
3224
  exports.McpUiHostContextSchema = require_use_app.T;
3225
- exports.McpUiHostCssSchema = require_use_app.k;
3226
- exports.McpUiHostStylesSchema = require_use_app.C;
3227
- exports.McpUiInitializeRequestSchema = require_use_app.FQ;
3225
+ exports.McpUiHostCssSchema = require_use_app.b;
3226
+ exports.McpUiHostStylesSchema = require_use_app.k;
3227
+ exports.McpUiInitializeRequestSchema = require_use_app.IQ;
3228
3228
  exports.McpUiInitializeResultSchema = require_use_app.U;
3229
- exports.McpUiInitializedNotificationSchema = require_use_app.zQ;
3230
- exports.McpUiMessageRequestSchema = require_use_app.IQ;
3229
+ exports.McpUiInitializedNotificationSchema = require_use_app.NQ;
3230
+ exports.McpUiMessageRequestSchema = require_use_app.BQ;
3231
3231
  exports.McpUiMessageResultSchema = require_use_app.O;
3232
- exports.McpUiOpenLinkRequestSchema = require_use_app.VQ;
3232
+ exports.McpUiOpenLinkRequestSchema = require_use_app.JQ;
3233
3233
  exports.McpUiOpenLinkResultSchema = require_use_app.B;
3234
- exports.McpUiRequestDisplayModeRequestSchema = require_use_app.BQ;
3234
+ exports.McpUiRequestDisplayModeRequestSchema = require_use_app.EQ;
3235
3235
  exports.McpUiRequestDisplayModeResultSchema = require_use_app.P;
3236
3236
  exports.McpUiRequestTeardownNotificationSchema = require_use_app.WQ;
3237
3237
  exports.McpUiResourceCspSchema = require_use_app.G;
3238
- exports.McpUiResourceMetaSchema = require_use_app.LQ;
3238
+ exports.McpUiResourceMetaSchema = require_use_app.jQ;
3239
3239
  exports.McpUiResourcePermissionsSchema = require_use_app.V;
3240
3240
  exports.McpUiResourceTeardownRequestSchema = require_use_app.F;
3241
- exports.McpUiResourceTeardownResultSchema = require_use_app.EQ;
3242
- exports.McpUiSizeChangedNotificationSchema = require_use_app.jQ;
3241
+ exports.McpUiResourceTeardownResultSchema = require_use_app.VQ;
3242
+ exports.McpUiSizeChangedNotificationSchema = require_use_app.GQ;
3243
3243
  exports.McpUiSupportedContentBlockModalitiesSchema = require_use_app.L;
3244
- exports.McpUiThemeSchema = require_use_app.b;
3244
+ exports.McpUiThemeSchema = require_use_app.v;
3245
3245
  exports.McpUiToolCancelledNotificationSchema = require_use_app.A;
3246
3246
  exports.McpUiToolInputNotificationSchema = require_use_app.I;
3247
3247
  exports.McpUiToolInputPartialNotificationSchema = require_use_app.w;
3248
- exports.McpUiToolMetaSchema = require_use_app._Q;
3248
+ exports.McpUiToolMetaSchema = require_use_app.zQ;
3249
3249
  exports.McpUiToolResultNotificationSchema = require_use_app.q;
3250
- exports.McpUiToolVisibilitySchema = require_use_app.S;
3251
- exports.McpUiUpdateModelContextRequestSchema = require_use_app.AQ;
3252
- exports.OPEN_LINK_METHOD = require_use_app.d;
3250
+ exports.McpUiToolVisibilitySchema = require_use_app.g;
3251
+ exports.McpUiUpdateModelContextRequestSchema = require_use_app.OQ;
3252
+ exports.OPEN_LINK_METHOD = require_use_app.y;
3253
3253
  exports.PostMessageTransport = require_use_app.K;
3254
- exports.REQUEST_DISPLAY_MODE_METHOD = require_use_app.QQ;
3255
- exports.REQUEST_TEARDOWN_METHOD = require_use_app.o;
3256
- exports.RESOURCE_MIME_TYPE = require_use_app.vX;
3257
- exports.RESOURCE_TEARDOWN_METHOD = require_use_app.s;
3258
- exports.RESOURCE_URI_META_KEY = require_use_app.MX;
3259
- exports.SIZE_CHANGED_METHOD = require_use_app.r;
3254
+ exports.REQUEST_DISPLAY_MODE_METHOD = require_use_app.s;
3255
+ exports.REQUEST_TEARDOWN_METHOD = require_use_app.p;
3256
+ exports.RESOURCE_MIME_TYPE = require_use_app.UX;
3257
+ exports.RESOURCE_TEARDOWN_METHOD = require_use_app.n;
3258
+ exports.RESOURCE_URI_META_KEY = require_use_app.RX;
3259
+ exports.SIZE_CHANGED_METHOD = require_use_app.m;
3260
3260
  exports.SafeArea = SafeArea;
3261
- exports.TOOL_CANCELLED_METHOD = require_use_app.n;
3262
- exports.TOOL_INPUT_METHOD = require_use_app.p;
3261
+ exports.TOOL_CANCELLED_METHOD = require_use_app.r;
3262
+ exports.TOOL_INPUT_METHOD = require_use_app.i;
3263
3263
  exports.TOOL_INPUT_PARTIAL_METHOD = require_use_app.z;
3264
- exports.TOOL_RESULT_METHOD = require_use_app.c;
3265
- exports.applyDocumentTheme = require_use_app.qQ;
3266
- exports.applyHostFonts = require_use_app.RQ;
3267
- exports.applyHostStyleVariables = require_use_app.TQ;
3264
+ exports.TOOL_RESULT_METHOD = require_use_app.l;
3265
+ exports.applyDocumentTheme = require_use_app.AQ;
3266
+ exports.applyHostFonts = require_use_app.PQ;
3267
+ exports.applyHostStyleVariables = require_use_app.FQ;
3268
3268
  Object.defineProperty(exports, "chatgpt", {
3269
3269
  enumerable: true,
3270
3270
  get: function() {
@@ -3273,7 +3273,7 @@ Object.defineProperty(exports, "chatgpt", {
3273
3273
  });
3274
3274
  exports.cn = cn;
3275
3275
  exports.detectHost = require_host_index.detectHost;
3276
- exports.getDocumentTheme = require_use_app.PQ;
3276
+ exports.getDocumentTheme = require_use_app.wQ;
3277
3277
  Object.defineProperty(exports, "inspector", {
3278
3278
  enumerable: true,
3279
3279
  get: function() {
@@ -3298,7 +3298,7 @@ exports.useHostContext = useHostContext;
3298
3298
  exports.useHostFonts = lJ;
3299
3299
  exports.useHostInfo = useHostInfo;
3300
3300
  exports.useHostStyleVariables = rJ;
3301
- exports.useHostStyles = GQ;
3301
+ exports.useHostStyles = GQ$1;
3302
3302
  exports.useIsMobile = useIsMobile;
3303
3303
  exports.useListServerResources = useListServerResources;
3304
3304
  exports.useLocale = useLocale;