@frontmcp/uipack 1.8.5 → 1.8.7

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.
package/shell/index.js CHANGED
@@ -157,6 +157,23 @@ function __applySizingCss(sizing) {
157
157
  }
158
158
  }
159
159
 
160
+ function __measureHeight() {
161
+ // <html> at fit-content includes body margins and collapsed child margins;
162
+ // content overflowing a fixed-height body is added; a px max-height clamps.
163
+ var de = document.documentElement;
164
+ var body = document.body;
165
+ if (!de || !body) return 0;
166
+ var prev = de.style.height;
167
+ de.style.height = 'fit-content';
168
+ var dr = de.getBoundingClientRect();
169
+ var br = body.getBoundingClientRect();
170
+ var h = Math.max(dr.height, br.top + body.scrollHeight + Math.max(0, dr.bottom - br.bottom) - dr.top);
171
+ de.style.height = prev;
172
+ var maxHeight = getComputedStyle(de).maxHeight;
173
+ var mx = maxHeight && maxHeight.slice(-2) === 'px' ? parseFloat(maxHeight) : NaN;
174
+ return Math.ceil(isNaN(mx) ? h : Math.min(h, mx));
175
+ }
176
+
160
177
  function __initAutoResize() {
161
178
  if (typeof window === 'undefined') return;
162
179
  // Idempotent: a re-injected IIFE must not stack observers.
@@ -179,23 +196,30 @@ function __initAutoResize() {
179
196
  if (typeof ResizeObserver === 'undefined') return;
180
197
 
181
198
  function startObserving() {
182
- var target = document.getElementById('root') || document.body;
183
- if (!target) return;
199
+ if (!document.body) return;
200
+ var targets = [document.documentElement, document.body];
201
+ var root = document.getElementById('root');
202
+ if (root) targets.push(root);
184
203
 
185
204
  var rafId = null;
186
205
  var lastReported = -1;
187
206
  function report() {
188
207
  rafId = null;
189
208
  try {
190
- var rect = target.getBoundingClientRect();
191
- var height = Math.ceil(rect.height);
192
- var width = Math.ceil(rect.width);
209
+ // Before the handshake an ext-apps host can't receive the report; the
210
+ // bridge:ready listener below sends it once the bridge is up.
211
+ if (window.FrontMcpBridge && window.FrontMcpBridge.initialized === false) return;
212
+ var height = __measureHeight();
213
+ var width = Math.ceil(document.documentElement.getBoundingClientRect().width);
193
214
  if (height === lastReported || height <= 0) return;
194
215
  lastReported = height;
195
216
  var payload = { height: height, width: width };
196
217
  if (sizing.aspectRatio != null) payload.aspectRatio = sizing.aspectRatio;
197
218
  if (window.FrontMcpBridge && typeof window.FrontMcpBridge.setSize === 'function') {
198
- window.FrontMcpBridge.setSize(payload).catch(function() {});
219
+ window.FrontMcpBridge.setSize(payload).catch(function() {
220
+ // Forget a rejected report so the same height is sent again.
221
+ if (lastReported === height) lastReported = -1;
222
+ });
199
223
  }
200
224
  window.dispatchEvent(new CustomEvent('widget:resize', { detail: payload }));
201
225
  } catch (e) {}
@@ -216,9 +240,17 @@ function __initAutoResize() {
216
240
  window.__mcpResizeObserver.disconnect();
217
241
  }
218
242
  var ro = new ResizeObserver(function() { schedule(); });
219
- ro.observe(target);
243
+ for (var i = 0; i < targets.length; i++) ro.observe(targets[i]);
220
244
  window.__mcpResizeObserver = ro;
221
245
  } catch (e) {}
246
+ // Report once the bridge is ready (the report scheduled below is skipped
247
+ // while the handshake is still pending).
248
+ var readySent = false;
249
+ window.addEventListener('bridge:ready', function() {
250
+ if (readySent) return;
251
+ readySent = true;
252
+ schedule();
253
+ });
222
254
  // Report once on init so the host gets an initial measurement.
223
255
  schedule();
224
256
  }
@@ -266,12 +298,57 @@ function detectViewport() {
266
298
  return undefined;
267
299
  }
268
300
 
301
+ function __applyHostTheme(theme) {
302
+ // Follow a host-supplied theme: <meta name="color-scheme"> sets the frame's
303
+ // canvas and form controls (a widget's own :root color-scheme still wins),
304
+ // <html data-theme> is a styling hook. The OS fallback is never written.
305
+ if (theme !== 'light' && theme !== 'dark') return;
306
+ if (typeof document === 'undefined' || !document.documentElement) return;
307
+ try {
308
+ var meta = document.querySelector('meta[name="color-scheme"]');
309
+ var head = document.head || document.getElementsByTagName('head')[0];
310
+ if (!meta && head) {
311
+ meta = document.createElement('meta');
312
+ meta.setAttribute('name', 'color-scheme');
313
+ head.appendChild(meta);
314
+ }
315
+ if (meta) meta.setAttribute('content', theme);
316
+ document.documentElement.setAttribute('data-theme', theme);
317
+ } catch (e) {}
318
+ }
319
+
320
+ function extractToolOutput(params) {
321
+ // A host sends a CallToolResult: prefer structuredContent, then parsed text, then the raw content.
322
+ if (!params) return undefined;
323
+ if (params.structuredContent !== undefined && params.structuredContent !== null) return params.structuredContent;
324
+ var content = params.content;
325
+ if (Array.isArray(content)) {
326
+ for (var i = 0; i < content.length; i++) {
327
+ var item = content[i];
328
+ if (item && item.type === 'text' && typeof item.text === 'string') {
329
+ try { return JSON.parse(item.text); } catch (e) { return item.text; }
330
+ }
331
+ }
332
+ }
333
+ return content;
334
+ }
335
+
269
336
  function readInjectedData() {
270
337
  var data = { toolInput: {}, toolOutput: undefined, structuredContent: undefined };
271
338
  if (typeof window !== 'undefined') {
272
339
  if (window.__mcpToolInput) data.toolInput = window.__mcpToolInput;
273
340
  if (window.__mcpToolOutput) data.toolOutput = window.__mcpToolOutput;
274
341
  if (window.__mcpStructuredContent) data.structuredContent = window.__mcpStructuredContent;
342
+ // The OpenAI Apps SDK hands the widget its data as window.openai.toolInput / toolOutput
343
+ // (toolOutput is the tool's structuredContent).
344
+ var oa = window.openai;
345
+ if (oa && typeof oa === 'object') {
346
+ if (oa.toolInput && !window.__mcpToolInput) data.toolInput = oa.toolInput;
347
+ if (oa.toolOutput !== undefined && oa.toolOutput !== null) {
348
+ if (data.toolOutput === undefined) data.toolOutput = oa.toolOutput;
349
+ if (data.structuredContent === undefined) data.structuredContent = oa.toolOutput;
350
+ }
351
+ }
275
352
  }
276
353
  return data;
277
354
  }
@@ -320,7 +397,24 @@ var OpenAIAdapter = {
320
397
  if (sdk.displayMode) {
321
398
  context.hostContext.displayMode = sdk.displayMode;
322
399
  }
323
- // Note: OpenAI SDK does not have an onContextChange equivalent
400
+ // The Apps SDK re-dispatches the changed globals in an 'openai:set_globals' event.
401
+ window.addEventListener('openai:set_globals', function(event) {
402
+ var globals = (event && event.detail && event.detail.globals) || window.openai || {};
403
+ if (globals.toolInput !== undefined && globals.toolInput !== null) {
404
+ context.toolInput = globals.toolInput;
405
+ window.dispatchEvent(new CustomEvent('tool:input', { detail: { arguments: context.toolInput } }));
406
+ }
407
+ if (globals.toolOutput !== undefined && globals.toolOutput !== null) {
408
+ context.structuredContent = globals.toolOutput;
409
+ context.notifyToolResult(globals.toolOutput);
410
+ }
411
+ if (globals.theme && globals.theme !== context.hostContext.theme) {
412
+ context.notifyContextChange({ theme: globals.theme });
413
+ }
414
+ if (globals.displayMode && globals.displayMode !== context.hostContext.displayMode) {
415
+ context.notifyContextChange({ displayMode: globals.displayMode });
416
+ }
417
+ });
324
418
  return Promise.resolve();
325
419
  },
326
420
  callTool: function(context, name, args) {
@@ -372,6 +466,8 @@ var ExtAppsAdapter = {
372
466
  pendingRequests: {},
373
467
  requestId: 0,
374
468
  hostCapabilities: {},
469
+ handshakeSettled: false,
470
+ pendingSize: null,
375
471
  canHandle: function() {
376
472
  if (typeof window === 'undefined') return false;
377
473
  if (window.parent === window) return false;
@@ -465,9 +561,10 @@ var ExtAppsAdapter = {
465
561
  window.dispatchEvent(new CustomEvent('tool:input-partial', { detail: { arguments: context.toolInput } }));
466
562
  break;
467
563
  case 'ui/notifications/tool-result':
468
- context.toolOutput = params.content;
564
+ var resultOutput = extractToolOutput(params);
565
+ context.toolOutput = resultOutput;
469
566
  context.structuredContent = params.structuredContent;
470
- context.notifyToolResult(params.content);
567
+ context.notifyToolResult(resultOutput);
471
568
  window.dispatchEvent(new CustomEvent('tool:result', { detail: params }));
472
569
  break;
473
570
  case 'ui/notifications/host-context-changed':
@@ -521,6 +618,15 @@ var ExtAppsAdapter = {
521
618
  window.parent.postMessage({ jsonrpc: '2.0', id: id, method: method, params: params }, targetOrigin);
522
619
  });
523
620
  },
621
+ sendNotification: function(method, params) {
622
+ // JSON-RPC notification: no id, no response. Same origin rule as sendRequest.
623
+ if (!this.trustedOrigin && this.trustedOrigins.length === 0) {
624
+ return Promise.reject(new Error('Cannot send notification: no trusted origin established'));
625
+ }
626
+ var targetOrigin = this.trustedOrigin || this.trustedOrigins[0];
627
+ window.parent.postMessage({ jsonrpc: '2.0', method: method, params: params }, targetOrigin);
628
+ return Promise.resolve();
629
+ },
524
630
  sendHandshake: function(context) {
525
631
  // Send ui/initialize using '*' as target origin since TOFU hasn't
526
632
  // been established yet. The response from the host will establish
@@ -537,6 +643,7 @@ var ExtAppsAdapter = {
537
643
  var timeout = setTimeout(function() {
538
644
  delete self.pendingRequests[id];
539
645
  // Handshake timeout is non-fatal \u2014 notifications may still arrive
646
+ self.settleHandshake();
540
647
  resolve();
541
648
  }, 10000);
542
649
 
@@ -550,7 +657,9 @@ var ExtAppsAdapter = {
550
657
  supportsDisplayModes: true
551
658
  });
552
659
  if (result.hostContext) {
553
- Object.assign(context.hostContext, result.hostContext);
660
+ // Notify (not a silent merge) so onContextChange listeners and the
661
+ // host theme see the handshake's context.
662
+ context.notifyContextChange(result.hostContext);
554
663
  }
555
664
  // Send ui/notifications/initialized to tell the host the view is ready.
556
665
  // Per MCP Apps spec, the host waits for this before sending tool-result.
@@ -560,9 +669,10 @@ var ExtAppsAdapter = {
560
669
  method: 'ui/notifications/initialized',
561
670
  params: {}
562
671
  }, targetOrigin);
672
+ self.settleHandshake();
563
673
  resolve();
564
674
  },
565
- reject: function(err) { resolve(); }, // Non-fatal
675
+ reject: function(err) { self.settleHandshake(); resolve(); }, // Non-fatal
566
676
  timeout: timeout
567
677
  };
568
678
 
@@ -576,6 +686,18 @@ var ExtAppsAdapter = {
576
686
  performHandshake: function(context) {
577
687
  return this.sendHandshake(context);
578
688
  },
689
+ settleHandshake: function() {
690
+ // Deliver the latest size requested while no host origin was trusted.
691
+ this.handshakeSettled = true;
692
+ var pending = this.pendingSize;
693
+ if (!pending) return;
694
+ this.pendingSize = null;
695
+ this.sendNotification('ui/notifications/size-changed', pending.params).then(function(result) {
696
+ for (var i = 0; i < pending.waiters.length; i++) pending.waiters[i].resolve(result);
697
+ }, function(err) {
698
+ for (var i = 0; i < pending.waiters.length; i++) pending.waiters[i].reject(err);
699
+ });
700
+ },
579
701
  callTool: function(context, name, args) {
580
702
  if (!this.hostCapabilities.serverTools && !this.hostCapabilities.serverToolProxy) {
581
703
  return Promise.reject(new Error('Server tool proxy not supported'));
@@ -597,13 +719,22 @@ var ExtAppsAdapter = {
597
719
  return this.sendRequest('ui/setDisplayMode', { mode: mode });
598
720
  },
599
721
  setSize: function(context, size) {
600
- // FrontMCP sizing channel \u2014 parallels ui/setDisplayMode. Reports the
601
- // measured/desired widget dimensions to the host.
602
- return this.sendRequest('ui/setSize', {
603
- height: size && size.height,
604
- width: size && size.width,
605
- aspectRatio: size && size.aspectRatio
606
- });
722
+ // Standard ext-apps sizing: the view tells the host its dimensions with the
723
+ // ui/notifications/size-changed notification ({ width?, height? } in px).
724
+ var params = {};
725
+ if (size && typeof size.width === 'number') params.width = size.width;
726
+ if (size && typeof size.height === 'number') params.height = size.height;
727
+ if (!this.handshakeSettled && !this.trustedOrigin && this.trustedOrigins.length === 0) {
728
+ // No host origin yet: keep only the latest size and send it when the
729
+ // handshake settles; every caller's promise follows that one request.
730
+ var self = this;
731
+ if (!this.pendingSize) this.pendingSize = { params: params, waiters: [] };
732
+ this.pendingSize.params = params;
733
+ return new Promise(function(resolve, reject) {
734
+ self.pendingSize.waiters.push({ resolve: resolve, reject: reject });
735
+ });
736
+ }
737
+ return this.sendNotification('ui/notifications/size-changed', params);
607
738
  },
608
739
  requestClose: function(context) {
609
740
  return this.sendRequest('ui/close', {});
@@ -849,6 +980,7 @@ function FrontMcpBridge() {
849
980
  toolResultListeners: [],
850
981
  notifyContextChange: function(changes) {
851
982
  Object.assign(this.hostContext, changes);
983
+ if (changes && changes.theme) __applyHostTheme(changes.theme);
852
984
  for (var i = 0; i < this.contextListeners.length; i++) {
853
985
  try { this.contextListeners[i](changes); } catch(e) {}
854
986
  }
@@ -1025,7 +1157,7 @@ FrontMcpBridge.prototype.requestDisplayMode = function(mode) {
1025
1157
 
1026
1158
  // Report a desired widget size to the host. \`size\` is { height?, width?, aspectRatio? }.
1027
1159
  // Per-adapter behaviour: Claude/generic no-op (host measures the DOM),
1028
- // ext-apps sends ui/setSize, OpenAI forwards to its SDK when available.
1160
+ // ext-apps sends ui/notifications/size-changed, OpenAI forwards to its SDK when available.
1029
1161
  FrontMcpBridge.prototype.setSize = function(size) {
1030
1162
  if (!this._adapter) return Promise.reject(new Error('Not initialized'));
1031
1163
  if (!this._adapter.setSize) return Promise.resolve();
@@ -1127,7 +1259,7 @@ FrontMcpBridge.prototype._setupDataToolCallHandler = function() {
1127
1259
  target.classList.add('opacity-50', 'cursor-not-allowed');
1128
1260
 
1129
1261
  // Add spinner for buttons
1130
- var spinner = '<svg class="animate-spin -ml-1 mr-2 h-4 w-4 inline" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle><path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"></path></svg>';
1262
+ var spinner = '<svg class="animate-spin -ml-1 mr-2 h-4 w-4 inline" style="width:1em;height:1em;vertical-align:-0.125em" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle><path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"></path></svg>';
1131
1263
  if (target.tagName === 'BUTTON') {
1132
1264
  target.innerHTML = spinner + 'Loading...';
1133
1265
  }
@@ -1208,7 +1340,22 @@ function minifyJS(code) {
1208
1340
  if (code.length > MAX_MINIFY_CODE_LENGTH) {
1209
1341
  return code;
1210
1342
  }
1211
- return code.replace(/\/\*[\s\S]*?\*\//g, "").replace(/(^|[^:])\/\/.*$/gm, "$1").replace(/\s+/g, " ").replace(/\s*([{};,:()[\]])\s*/g, "$1").replace(/;\}/g, "}").trim();
1343
+ const out = [];
1344
+ let inBlockComment = false;
1345
+ for (const raw of code.split("\n")) {
1346
+ const line = raw.trim();
1347
+ if (inBlockComment) {
1348
+ if (line.includes("*/")) inBlockComment = false;
1349
+ continue;
1350
+ }
1351
+ if (line === "" || line.startsWith("//")) continue;
1352
+ if (line.startsWith("/*")) {
1353
+ if (!line.includes("*/")) inBlockComment = true;
1354
+ continue;
1355
+ }
1356
+ out.push(line);
1357
+ }
1358
+ return out.join("\n");
1212
1359
  }
1213
1360
  function generatePlatformBundle(platform, options = {}) {
1214
1361
  const platformAdapters = {
@@ -404,8 +404,10 @@ export interface UITemplateConfig<In = unknown, Out = unknown> {
404
404
  */
405
405
  aspectRatio?: string | number;
406
406
  /**
407
- * Whether the widget should auto-report its content height to the host as it
408
- * changes (via a debounced `ResizeObserver` on `#root`).
407
+ * Whether the widget should auto-report its height to the host as it changes
408
+ * (via a debounced `ResizeObserver` on `<html>`, `<body>` and `#root`). The
409
+ * whole document is measured, margins included; the first report is sent once
410
+ * the host handshake completes.
409
411
  *
410
412
  * Only takes effect when the widget configures sizing — i.e. at least one
411
413
  * sizing field (`preferredHeight` / `minHeight` / `maxHeight` / `aspectRatio` /
@@ -416,7 +418,7 @@ export interface UITemplateConfig<In = unknown, Out = unknown> {
416
418
  * - Claude / static widgets: the host measures DOM height itself, so this is
417
419
  * a CSS-only no-op.
418
420
  * - OpenAI: forwarded through the Apps SDK sizing API.
419
- * - ext-apps hosts: reported via the `ui/setSize` request.
421
+ * - ext-apps hosts: reported with the standard `ui/notifications/size-changed` notification.
420
422
  *
421
423
  * @default true (when the widget configures sizing)
422
424
  */
@@ -1 +1 @@
1
- {"version":3,"file":"ui-config.d.ts","sourceRoot":"","sources":["../../src/types/ui-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ui-config.d.ts","sourceRoot":"","sources":["../../src/types/ui-config.ts"],"names":[],"mappings":"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"}