@frontmcp/uipack 1.3.0 → 1.4.1
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/adapters/index.js +1046 -698
- package/adapters/template-renderer.d.ts +14 -0
- package/adapters/template-renderer.d.ts.map +1 -1
- package/bridge-runtime/iife-generator.d.ts.map +1 -1
- package/bridge-runtime/index.js +149 -0
- package/component/index.d.ts +1 -0
- package/component/index.d.ts.map +1 -1
- package/component/index.js +468 -145
- package/component/loader.d.ts +21 -2
- package/component/loader.d.ts.map +1 -1
- package/component/renderer.d.ts +2 -2
- package/component/renderer.d.ts.map +1 -1
- package/component/transpiler.d.ts +16 -1
- package/component/transpiler.d.ts.map +1 -1
- package/component/types.d.ts +19 -0
- package/component/types.d.ts.map +1 -1
- package/component/ui-availability.d.ts +27 -0
- package/component/ui-availability.d.ts.map +1 -0
- package/esm/adapters/index.mjs +1046 -698
- package/esm/bridge-runtime/index.mjs +149 -0
- package/esm/component/index.mjs +468 -145
- package/esm/index.mjs +444 -109
- package/esm/package.json +2 -2
- package/esm/shell/index.mjs +420 -171
- package/index.d.ts +1 -1
- package/index.d.ts.map +1 -1
- package/index.js +445 -109
- package/package.json +2 -2
- package/shell/builder.d.ts.map +1 -1
- package/shell/data-injector.d.ts +27 -1
- package/shell/data-injector.d.ts.map +1 -1
- package/shell/index.d.ts +3 -2
- package/shell/index.d.ts.map +1 -1
- package/shell/index.js +423 -171
- package/shell/sizing-css.d.ts +27 -0
- package/shell/sizing-css.d.ts.map +1 -0
- package/shell/types.d.ts +102 -0
- package/shell/types.d.ts.map +1 -1
- package/types/index.d.ts +1 -1
- package/types/index.d.ts.map +1 -1
- package/types/ui-config.d.ts +105 -11
- package/types/ui-config.d.ts.map +1 -1
- package/types/ui-runtime.d.ts +23 -2
- package/types/ui-runtime.d.ts.map +1 -1
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Widget Sizing CSS
|
|
3
|
+
*
|
|
4
|
+
* Builds the static `<style>` block that applies a widget's configured
|
|
5
|
+
* initial/min/max height and aspect-ratio to the shell document.
|
|
6
|
+
*
|
|
7
|
+
* This is the CSS-only half of the sizing feature — the runtime auto-resize
|
|
8
|
+
* behaviour lives in the bridge IIFE (`generateAutoResize`) and reads the same
|
|
9
|
+
* values from `window.__mcpWidgetSizing`.
|
|
10
|
+
*
|
|
11
|
+
* @packageDocumentation
|
|
12
|
+
*/
|
|
13
|
+
import type { WidgetSizing } from './types';
|
|
14
|
+
/**
|
|
15
|
+
* Build a `<style>` tag applying the configured sizing to the shell document.
|
|
16
|
+
*
|
|
17
|
+
* Returns an empty string when no sizing values are configured (so widgets that
|
|
18
|
+
* don't opt in are byte-for-byte unchanged).
|
|
19
|
+
*
|
|
20
|
+
* Rules emitted (only for the fields that are set):
|
|
21
|
+
* - `html, body { height: <preferredHeight> }` — initial height baseline.
|
|
22
|
+
* - `#root { min-height: <preferredHeight> }` — so content-driven layouts fill it.
|
|
23
|
+
* - `html, body, #root { min-height / max-height / aspect-ratio }`.
|
|
24
|
+
* - `body { margin: 0 }` whenever sizing is active so the iframe isn't padded.
|
|
25
|
+
*/
|
|
26
|
+
export declare function buildSizingStyleTag(sizing?: WidgetSizing): string;
|
|
27
|
+
//# sourceMappingURL=sizing-css.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sizing-css.d.ts","sourceRoot":"","sources":["../../src/shell/sizing-css.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAuB5C;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,MAAM,CA2CjE"}
|
package/shell/types.d.ts
CHANGED
|
@@ -16,6 +16,78 @@ export interface CSPConfig {
|
|
|
16
16
|
/** Origins allowed for images, scripts, fonts, and styles */
|
|
17
17
|
resourceDomains?: string[];
|
|
18
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* Pluggable mount descriptor for the inline-module render path.
|
|
21
|
+
*
|
|
22
|
+
* Lets a caller supply the inline `<script type="module">` mount tail that is
|
|
23
|
+
* appended after the transpiled component source — i.e. which package to import
|
|
24
|
+
* the mounter/provider from and how to render the component into the page.
|
|
25
|
+
*
|
|
26
|
+
* This is the GENERIC shell hook: the tool-widget path leaves it unset and gets
|
|
27
|
+
* the default `McpBridgeProvider` mount from `@frontmcp/ui/react`. A different
|
|
28
|
+
* caller (e.g. an auth page) supplies its own `moduleSpecifier` +
|
|
29
|
+
* `wrapperImportName` (or a full `generate`) to swap in a different shell over
|
|
30
|
+
* the SAME render pipeline. The renderer also adds `moduleSpecifier` to the
|
|
31
|
+
* import map (with the single-React `?external=react,react-dom` treatment) so a
|
|
32
|
+
* non-default mounter is resolvable.
|
|
33
|
+
*
|
|
34
|
+
* No field here is auth-specific — the caller supplies the specifics.
|
|
35
|
+
*/
|
|
36
|
+
export interface ShellMountDescriptor {
|
|
37
|
+
/**
|
|
38
|
+
* Module specifier the mount tail imports the mounter/provider from
|
|
39
|
+
* (e.g. `@frontmcp/ui/react` for the default widget mount). Always added to
|
|
40
|
+
* the inline-module import map.
|
|
41
|
+
*/
|
|
42
|
+
moduleSpecifier: string;
|
|
43
|
+
/**
|
|
44
|
+
* Named export to import from {@link moduleSpecifier} (the React provider or a
|
|
45
|
+
* mount function). Used by the built-in tail generator when {@link generate}
|
|
46
|
+
* is not supplied.
|
|
47
|
+
*/
|
|
48
|
+
wrapperImportName?: string;
|
|
49
|
+
/**
|
|
50
|
+
* Full override for the mount tail. Receives the component's export name and
|
|
51
|
+
* returns the JS appended after the transpiled source inside the inline
|
|
52
|
+
* `<script type="module">`. When omitted, a default tail is generated from
|
|
53
|
+
* {@link moduleSpecifier} + {@link wrapperImportName}.
|
|
54
|
+
*/
|
|
55
|
+
generate?: (exportName: string) => string;
|
|
56
|
+
/**
|
|
57
|
+
* Id of the empty mount `<div>` the renderer emits before the inline module.
|
|
58
|
+
* Defaults to `'root'` (the widget mount). A caller whose mounter targets a
|
|
59
|
+
* different node (e.g. an auth page's `#frontmcp-auth-root`) overrides it.
|
|
60
|
+
*/
|
|
61
|
+
mountNodeId?: string;
|
|
62
|
+
/**
|
|
63
|
+
* Inner HTML placed inside the mount `<div>` (e.g. a `<noscript>` fallback).
|
|
64
|
+
* Default is empty. Emitted verbatim — the caller owns its safety (server
|
|
65
|
+
* content only, never user input).
|
|
66
|
+
*/
|
|
67
|
+
mountNodeInnerHtml?: string;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Pluggable data-injection descriptor for the shell's injected window global.
|
|
71
|
+
*
|
|
72
|
+
* Lets a caller override the `<script>` that seeds page data onto a window
|
|
73
|
+
* global. The tool-widget path leaves it unset and gets the default
|
|
74
|
+
* `window.__mcp*` injection. A different caller (e.g. an auth page) provides its
|
|
75
|
+
* own `globalKey` + `value` (or a full `script`) to inject a different global
|
|
76
|
+
* over the SAME render pipeline.
|
|
77
|
+
*
|
|
78
|
+
* No field here is auth-specific — the caller supplies the key and value.
|
|
79
|
+
*/
|
|
80
|
+
export interface ShellDataInjectionDescriptor {
|
|
81
|
+
/** Window global key to assign (e.g. `__MY_PAGE_STATE__`). */
|
|
82
|
+
globalKey?: string;
|
|
83
|
+
/** Value serialized (XSS-safe) and assigned to `window[globalKey]`. */
|
|
84
|
+
value?: unknown;
|
|
85
|
+
/**
|
|
86
|
+
* Full override for the injection `<script>...</script>`. When provided it is
|
|
87
|
+
* emitted verbatim and {@link globalKey} / {@link value} are ignored.
|
|
88
|
+
*/
|
|
89
|
+
script?: string;
|
|
90
|
+
}
|
|
19
91
|
/**
|
|
20
92
|
* Configuration for building an HTML shell.
|
|
21
93
|
*/
|
|
@@ -39,6 +111,36 @@ export interface ShellConfig {
|
|
|
39
111
|
title?: string;
|
|
40
112
|
/** Custom shell template (pre-resolved object or inline string). */
|
|
41
113
|
customShell?: ResolvedShellTemplate | string;
|
|
114
|
+
/** Widget sizing configuration (height/aspect-ratio/auto-resize). */
|
|
115
|
+
sizing?: WidgetSizing;
|
|
116
|
+
/**
|
|
117
|
+
* Pluggable inline-module mount tail. Default = the widget `McpBridgeProvider`
|
|
118
|
+
* mount from `@frontmcp/ui/react`. See {@link ShellMountDescriptor}.
|
|
119
|
+
*/
|
|
120
|
+
mount?: ShellMountDescriptor;
|
|
121
|
+
/**
|
|
122
|
+
* Pluggable injected window global. Default = the widget `window.__mcp*`
|
|
123
|
+
* injection. See {@link ShellDataInjectionDescriptor}.
|
|
124
|
+
*/
|
|
125
|
+
dataInjection?: ShellDataInjectionDescriptor;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Widget sizing configuration injected into the shell document.
|
|
129
|
+
*
|
|
130
|
+
* Drives both the static sizing CSS (initial/min/max height, aspect-ratio) and
|
|
131
|
+
* the runtime auto-resize behaviour (via `window.__mcpWidgetSizing`).
|
|
132
|
+
*/
|
|
133
|
+
export interface WidgetSizing {
|
|
134
|
+
/** Preferred initial height (number → px, string → any CSS length). */
|
|
135
|
+
preferredHeight?: number | string;
|
|
136
|
+
/** Minimum height (number → px, string → any CSS length). */
|
|
137
|
+
minHeight?: number | string;
|
|
138
|
+
/** Maximum height (number → px, string → any CSS length). */
|
|
139
|
+
maxHeight?: number | string;
|
|
140
|
+
/** CSS aspect-ratio (e.g. `'16 / 9'` or `1.5`). */
|
|
141
|
+
aspectRatio?: string | number;
|
|
142
|
+
/** Whether the runtime auto-reports content height to the host. Default true. */
|
|
143
|
+
autoResize?: boolean;
|
|
42
144
|
}
|
|
43
145
|
/**
|
|
44
146
|
* Result of building an HTML shell.
|
package/shell/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/shell/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAElE;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,0DAA0D;IAC1D,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,6DAA6D;IAC7D,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,uCAAuC;IACvC,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,wBAAwB;IACxB,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,4DAA4D;IAC5D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,uCAAuC;IACvC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,sCAAsC;IACtC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,6CAA6C;IAC7C,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iBAAiB;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oEAAoE;IACpE,WAAW,CAAC,EAAE,qBAAqB,GAAG,MAAM,CAAC;CAC9C;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,6CAA6C;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAC;CACd"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/shell/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAElE;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,0DAA0D;IAC1D,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,6DAA6D;IAC7D,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,eAAe,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC;IAC1C;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,4BAA4B;IAC3C,8DAA8D;IAC9D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uEAAuE;IACvE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,uCAAuC;IACvC,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,wBAAwB;IACxB,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,4DAA4D;IAC5D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,uCAAuC;IACvC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,sCAAsC;IACtC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,6CAA6C;IAC7C,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,iBAAiB;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oEAAoE;IACpE,WAAW,CAAC,EAAE,qBAAqB,GAAG,MAAM,CAAC;IAC7C,qEAAqE;IACrE,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB;;;OAGG;IACH,KAAK,CAAC,EAAE,oBAAoB,CAAC;IAC7B;;;OAGG;IACH,aAAa,CAAC,EAAE,4BAA4B,CAAC;CAC9C;AAED;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,uEAAuE;IACvE,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAClC,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,mDAAmD;IACnD,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC9B,iFAAiF;IACjF,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,6CAA6C;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAC;CACd"}
|
package/types/index.d.ts
CHANGED
|
@@ -7,6 +7,6 @@
|
|
|
7
7
|
*
|
|
8
8
|
* @packageDocumentation
|
|
9
9
|
*/
|
|
10
|
-
export { type UIContentSecurityPolicy, type UIContentSecurity, type TemplateHelpers, type TemplateContext, type TemplateBuilderFn, type WidgetServingMode, type WidgetDisplayMode, type UITemplateConfig, type UITemplate, } from './ui-config';
|
|
10
|
+
export { type UIContentSecurityPolicy, type UIContentSecurity, type TemplateHelpers, type TemplateContext, type TemplateBuilderFn, type WidgetServingMode, type WidgetDisplayMode, type WidgetSizeValue, type UITemplateConfig, type UITemplate, } from './ui-config';
|
|
11
11
|
export { type UIType, type BundlingMode, type ResourceMode, type OutputMode, type DisplayMode, type CSPDirectives, type CDNResource, type RendererAssets, type WidgetManifest, type UIMetaFields, type OpenAIMetaFields, type ToolResponseMeta, type WidgetConfig, type WidgetTemplate, type WidgetTemplateContext, type WidgetTemplateHelpers, type WidgetRuntimeOptions, type BuildManifestResult, type BuildManifestOptions, isUIType, isBundlingMode, isResourceMode, isOutputMode, isDisplayMode, DEFAULT_CSP_BY_TYPE, DEFAULT_RENDERER_ASSETS, } from './ui-runtime';
|
|
12
12
|
//# sourceMappingURL=index.d.ts.map
|
package/types/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,EAEL,KAAK,uBAAuB,EAE5B,KAAK,iBAAiB,EAEtB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EAEtB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,EAEL,KAAK,uBAAuB,EAE5B,KAAK,iBAAiB,EAEtB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EAEtB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EAEpB,KAAK,gBAAgB,EACrB,KAAK,UAAU,GAChB,MAAM,aAAa,CAAC;AAMrB,OAAO,EAEL,KAAK,MAAM,EACX,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,WAAW,EAEhB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,cAAc,EAEnB,KAAK,cAAc,EAEnB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EAErB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EAEzB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EAEzB,QAAQ,EACR,cAAc,EACd,cAAc,EACd,YAAY,EACZ,aAAa,EAEb,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,cAAc,CAAC"}
|
package/types/ui-config.d.ts
CHANGED
|
@@ -7,9 +7,9 @@
|
|
|
7
7
|
*
|
|
8
8
|
* @packageDocumentation
|
|
9
9
|
*/
|
|
10
|
+
import type { FileSource } from '../component/types';
|
|
10
11
|
import type { CDNDependency } from '../resolver/types';
|
|
11
12
|
import type { CustomShellSource } from '../shell/custom-shell-types';
|
|
12
|
-
import type { FileSource } from '../component/types';
|
|
13
13
|
/**
|
|
14
14
|
* Configuration options for bundling file-based components.
|
|
15
15
|
*/
|
|
@@ -32,6 +32,14 @@ export interface FileBundleOptions {
|
|
|
32
32
|
/**
|
|
33
33
|
* Content Security Policy for UI templates rendered in sandboxed iframes.
|
|
34
34
|
* Based on OpenAI Apps SDK and MCP Apps (SEP-1865) specifications.
|
|
35
|
+
*
|
|
36
|
+
* **Where this is emitted (issue #455 fix):** FrontMCP attaches this
|
|
37
|
+
* configuration to the **resource** content item returned by
|
|
38
|
+
* `resources/read` for `ui://widget/{toolName}.html`, as both
|
|
39
|
+
* `_meta.ui.csp` (nested) and `_meta['ui/csp']` (slash) with snake_case
|
|
40
|
+
* `connect_domains` / `resource_domains` fields. MCP Apps hosts (notably
|
|
41
|
+
* Claude) only honor CSP declared on the resource — declarations on the
|
|
42
|
+
* tool's `_meta.ui.csp` are ignored.
|
|
35
43
|
*/
|
|
36
44
|
export interface UIContentSecurityPolicy {
|
|
37
45
|
/**
|
|
@@ -201,7 +209,9 @@ export type TemplateBuilderFn<In = unknown, Out = unknown> = (ctx: TemplateConte
|
|
|
201
209
|
* For unsupported clients (e.g., Gemini): skips UI entirely (returns JSON only).
|
|
202
210
|
*
|
|
203
211
|
* - `'inline'`: HTML embedded directly in tool response `_meta['ui/html']`.
|
|
204
|
-
* Works on all platforms including network-blocked ones
|
|
212
|
+
* Works on all platforms including network-blocked ones, **provided the HTML
|
|
213
|
+
* itself is fully self-contained** (no external `<script src>` / module
|
|
214
|
+
* import maps). See the Claude target note on {@link UITemplateConfig.resourceMode}.
|
|
205
215
|
*
|
|
206
216
|
* - `'static'`: Pre-compiled at startup, resolved via `tools/list` (ui:// resource URI).
|
|
207
217
|
* Widget is fetched via MCP `resources/read`.
|
|
@@ -212,12 +222,30 @@ export type TemplateBuilderFn<In = unknown, Out = unknown> = (ctx: TemplateConte
|
|
|
212
222
|
* - `'direct-url'`: HTTP endpoint on MCP server.
|
|
213
223
|
*
|
|
214
224
|
* - `'custom-url'`: Custom URL (CDN or external hosting).
|
|
225
|
+
*
|
|
226
|
+
* ## Claude target caveat (issue #447)
|
|
227
|
+
*
|
|
228
|
+
* Claude Desktop / claude.ai render widgets in a sandboxed iframe whose CSP
|
|
229
|
+
* blocks **all** external script execution — including esm.sh — regardless of
|
|
230
|
+
* what's set on the tool's `_meta.ui.csp` (Claude only honors CSP declared
|
|
231
|
+
* on the UI resource; see issue #455). React `FileSource` templates and any
|
|
232
|
+
* widget that loads runtime modules from a CDN will silently hang on the
|
|
233
|
+
* "Loading widget…" placeholder in Claude. Only fully self-contained HTML
|
|
234
|
+
* (all JS inline, no import map, no `<script src="https://…">`) renders
|
|
235
|
+
* reliably in Claude today.
|
|
215
236
|
*/
|
|
216
237
|
export type WidgetServingMode = 'auto' | 'inline' | 'static' | 'hybrid' | 'direct-url' | 'custom-url';
|
|
217
238
|
/**
|
|
218
239
|
* Widget display mode preference.
|
|
219
240
|
*/
|
|
220
241
|
export type WidgetDisplayMode = 'inline' | 'fullscreen' | 'pip';
|
|
242
|
+
/**
|
|
243
|
+
* A widget sizing value.
|
|
244
|
+
*
|
|
245
|
+
* - `number` — interpreted as CSS pixels (e.g. `420` → `420px`).
|
|
246
|
+
* - `string` — any valid CSS length (e.g. `'50vh'`, `'24rem'`, `'480px'`).
|
|
247
|
+
*/
|
|
248
|
+
export type WidgetSizeValue = number | string;
|
|
221
249
|
/**
|
|
222
250
|
* UI template configuration for tools.
|
|
223
251
|
* Enables rendering interactive widgets for tool responses in supported hosts
|
|
@@ -320,6 +348,51 @@ export interface UITemplateConfig<In = unknown, Out = unknown> {
|
|
|
320
348
|
* Note: Host may not support all modes; this is a preference hint.
|
|
321
349
|
*/
|
|
322
350
|
displayMode?: WidgetDisplayMode;
|
|
351
|
+
/**
|
|
352
|
+
* Preferred initial height for the widget iframe.
|
|
353
|
+
*
|
|
354
|
+
* Applied as the starting height on the shell document (`html`/`body`/`#root`)
|
|
355
|
+
* and exposed to the host via `_meta['ui/preferredHeight']`. A `number` is
|
|
356
|
+
* treated as CSS pixels; a `string` is any valid CSS length (`'50vh'`,
|
|
357
|
+
* `'24rem'`). When `autoResize` is enabled the runtime grows/shrinks from
|
|
358
|
+
* this baseline to fit content.
|
|
359
|
+
*/
|
|
360
|
+
preferredHeight?: WidgetSizeValue;
|
|
361
|
+
/**
|
|
362
|
+
* Minimum height for the widget. Applied as `min-height` CSS and exposed via
|
|
363
|
+
* `_meta['ui/minHeight']`. Auto-resize never reports a height below this.
|
|
364
|
+
*/
|
|
365
|
+
minHeight?: WidgetSizeValue;
|
|
366
|
+
/**
|
|
367
|
+
* Maximum height for the widget. Applied as `max-height` CSS and exposed via
|
|
368
|
+
* `_meta['ui/maxHeight']`. Auto-resize never reports a height above this.
|
|
369
|
+
*/
|
|
370
|
+
maxHeight?: WidgetSizeValue;
|
|
371
|
+
/**
|
|
372
|
+
* CSS `aspect-ratio` for the widget (e.g. `'16 / 9'` or `1.5`). Applied as
|
|
373
|
+
* `aspect-ratio` CSS on the shell and exposed via `_meta['ui/aspectRatio']`.
|
|
374
|
+
* When set, hosts that honor it size the widget by ratio instead of by
|
|
375
|
+
* measured content height.
|
|
376
|
+
*/
|
|
377
|
+
aspectRatio?: string | number;
|
|
378
|
+
/**
|
|
379
|
+
* Whether the widget should auto-report its content height to the host as it
|
|
380
|
+
* changes (via a debounced `ResizeObserver` on `#root`).
|
|
381
|
+
*
|
|
382
|
+
* Only takes effect when the widget configures sizing — i.e. at least one
|
|
383
|
+
* sizing field (`preferredHeight` / `minHeight` / `maxHeight` / `aspectRatio` /
|
|
384
|
+
* `autoResize`) is set, which is what causes the runtime to be injected. A
|
|
385
|
+
* widget with no sizing config does not auto-resize at all. When sizing is
|
|
386
|
+
* configured, auto-resize is on unless you set this to `false`.
|
|
387
|
+
*
|
|
388
|
+
* - Claude / static widgets: the host measures DOM height itself, so this is
|
|
389
|
+
* a CSS-only no-op.
|
|
390
|
+
* - OpenAI: forwarded through the Apps SDK sizing API.
|
|
391
|
+
* - ext-apps hosts: reported via the `ui/setSize` request.
|
|
392
|
+
*
|
|
393
|
+
* @default true (when the widget configures sizing)
|
|
394
|
+
*/
|
|
395
|
+
autoResize?: boolean;
|
|
323
396
|
/**
|
|
324
397
|
* Human-readable description shown to users about what the widget does.
|
|
325
398
|
* Exposed in `_meta.ui` for platform discovery.
|
|
@@ -521,15 +594,27 @@ export interface UITemplateConfig<In = unknown, Out = unknown> {
|
|
|
521
594
|
*/
|
|
522
595
|
bundlingMode?: 'static' | 'dynamic';
|
|
523
596
|
/**
|
|
524
|
-
* Resource loading mode.
|
|
597
|
+
* Resource loading mode for renderer runtime scripts (React, MDX, Handlebars).
|
|
598
|
+
*
|
|
599
|
+
* - `'cdn'`: Load runtime scripts from CDN URLs (lightweight). Works in OpenAI
|
|
600
|
+
* Apps SDK, ChatGPT, Cursor, MCP Inspector, and other CDN-permissive hosts.
|
|
525
601
|
*
|
|
526
|
-
* - `'
|
|
527
|
-
*
|
|
602
|
+
* - `'inline'`: Embed everything in the HTML. For `FileSource` (`.tsx`/`.jsx`)
|
|
603
|
+
* templates, React and ReactDOM are bundled into the widget's
|
|
604
|
+
* `<script type="module">` (no esm.sh import map). The output is a fully
|
|
605
|
+
* self-contained widget that runs in hosts which block external script
|
|
606
|
+
* execution — including Claude Desktop / claude.ai (fix shipped for #454).
|
|
528
607
|
*
|
|
529
|
-
*
|
|
530
|
-
*
|
|
608
|
+
* @default `'cdn'` for most platforms. When left unset, FrontMCP host-detects
|
|
609
|
+
* the right default: `platformType === 'claude'` auto-switches to
|
|
610
|
+
* `'inline'` so widgets actually render under Claude's CSP (#456). Set
|
|
611
|
+
* the value explicitly to opt out of the detection.
|
|
531
612
|
*
|
|
532
|
-
*
|
|
613
|
+
* **Auto-detection only applies to per-call rendering modes (inline /
|
|
614
|
+
* hybrid / lean).** Static-mode widgets compile at server startup, before
|
|
615
|
+
* any client connects, so the platform isn't known. If your tool uses
|
|
616
|
+
* `servingMode: 'static'` and targets Claude, set `resourceMode: 'inline'`
|
|
617
|
+
* explicitly.
|
|
533
618
|
*/
|
|
534
619
|
resourceMode?: 'cdn' | 'inline';
|
|
535
620
|
/**
|
|
@@ -586,9 +671,18 @@ export interface UITemplateConfig<In = unknown, Out = unknown> {
|
|
|
586
671
|
* Package names should match npm package names. The CDN URL is resolved
|
|
587
672
|
* from the built-in CDN registry or from explicit `dependencies` overrides.
|
|
588
673
|
*
|
|
589
|
-
* **Platform considerations:**
|
|
590
|
-
* - Claude
|
|
591
|
-
*
|
|
674
|
+
* **Platform considerations (issue #447):**
|
|
675
|
+
* - **Claude Desktop / claude.ai**: the widget iframe blocks all external
|
|
676
|
+
* script execution regardless of CSP, including `cdnjs.cloudflare.com`.
|
|
677
|
+
* Even pinning `dependencies` to cdnjs URLs is not enough today —
|
|
678
|
+
* `.tsx` `FileSource` widgets that rely on a CDN import map for React
|
|
679
|
+
* itself hang on the "Loading widget…" placeholder (see #454 / #455).
|
|
680
|
+
* Use a fully self-contained `uiType: 'html'` function template for
|
|
681
|
+
* Claude until those land.
|
|
682
|
+
* - **OpenAI Apps SDK / ChatGPT / Cursor / MCP Inspector**: any CDN works;
|
|
683
|
+
* esm.sh is the default. Pinning to `cdnjs.cloudflare.com` via
|
|
684
|
+
* `dependencies` overrides is recommended only when targeting hosts
|
|
685
|
+
* with stricter CSP than esm.sh allows.
|
|
592
686
|
*
|
|
593
687
|
* @example
|
|
594
688
|
* ```typescript
|
package/types/ui-config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-config.d.ts","sourceRoot":"","sources":["../../src/types/ui-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"ui-config.d.ts","sourceRoot":"","sources":["../../src/types/ui-config.ts"],"names":[],"mappings":"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"}
|
package/types/ui-runtime.d.ts
CHANGED
|
@@ -15,9 +15,10 @@
|
|
|
15
15
|
* @packageDocumentation
|
|
16
16
|
*/
|
|
17
17
|
import type { ZodTypeAny } from '@frontmcp/lazy-zod';
|
|
18
|
-
import type { WidgetServingMode as _WidgetServingMode } from './ui-config';
|
|
19
|
-
export type { TemplateHelpers, TemplateContext, TemplateBuilderFn, UIContentSecurityPolicy, WidgetDisplayMode, WidgetServingMode, } from './ui-config';
|
|
18
|
+
import type { WidgetServingMode as _WidgetServingMode, WidgetSizeValue as _WidgetSizeValue } from './ui-config';
|
|
19
|
+
export type { TemplateHelpers, TemplateContext, TemplateBuilderFn, UIContentSecurityPolicy, WidgetDisplayMode, WidgetServingMode, WidgetSizeValue, } from './ui-config';
|
|
20
20
|
type WidgetServingMode = _WidgetServingMode;
|
|
21
|
+
type WidgetSizeValue = _WidgetSizeValue;
|
|
21
22
|
/**
|
|
22
23
|
* UI renderer type for widget templates.
|
|
23
24
|
*
|
|
@@ -457,6 +458,26 @@ export interface UIMetaFields {
|
|
|
457
458
|
* Maps to `_meta['ui/displayMode']`.
|
|
458
459
|
*/
|
|
459
460
|
'ui/displayMode'?: DisplayMode;
|
|
461
|
+
/**
|
|
462
|
+
* Preferred initial widget height.
|
|
463
|
+
* Maps to `_meta['ui/preferredHeight']`.
|
|
464
|
+
*/
|
|
465
|
+
'ui/preferredHeight'?: WidgetSizeValue;
|
|
466
|
+
/**
|
|
467
|
+
* Minimum widget height.
|
|
468
|
+
* Maps to `_meta['ui/minHeight']`.
|
|
469
|
+
*/
|
|
470
|
+
'ui/minHeight'?: WidgetSizeValue;
|
|
471
|
+
/**
|
|
472
|
+
* Maximum widget height.
|
|
473
|
+
* Maps to `_meta['ui/maxHeight']`.
|
|
474
|
+
*/
|
|
475
|
+
'ui/maxHeight'?: WidgetSizeValue;
|
|
476
|
+
/**
|
|
477
|
+
* CSS aspect-ratio for the widget.
|
|
478
|
+
* Maps to `_meta['ui/aspectRatio']`.
|
|
479
|
+
*/
|
|
480
|
+
'ui/aspectRatio'?: string | number;
|
|
460
481
|
/**
|
|
461
482
|
* Whether widget can invoke tools via MCP bridge.
|
|
462
483
|
* Maps to `_meta['ui/widgetAccessible']`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-runtime.d.ts","sourceRoot":"","sources":["../../src/types/ui-runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,KAAK,EAAE,iBAAiB,IAAI,kBAAkB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"ui-runtime.d.ts","sourceRoot":"","sources":["../../src/types/ui-runtime.ts"],"names":[],"mappings":"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"}
|