skybridge 0.0.0-dev.fd61a71 → 0.0.0-dev.fd6e4e8

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 (97) hide show
  1. package/README.md +1 -7
  2. package/dist/cli/header.js +1 -1
  3. package/dist/cli/header.js.map +1 -1
  4. package/dist/cli/use-messages.d.ts +3 -0
  5. package/dist/cli/use-messages.js +11 -0
  6. package/dist/cli/use-messages.js.map +1 -0
  7. package/dist/cli/use-nodemon.d.ts +2 -2
  8. package/dist/cli/use-nodemon.js +8 -24
  9. package/dist/cli/use-nodemon.js.map +1 -1
  10. package/dist/cli/use-tunnel.d.ts +13 -7
  11. package/dist/cli/use-tunnel.js +35 -39
  12. package/dist/cli/use-tunnel.js.map +1 -1
  13. package/dist/commands/build.js +6 -5
  14. package/dist/commands/build.js.map +1 -1
  15. package/dist/commands/dev.d.ts +1 -0
  16. package/dist/commands/dev.js +10 -5
  17. package/dist/commands/dev.js.map +1 -1
  18. package/dist/commands/start.js +7 -10
  19. package/dist/commands/start.js.map +1 -1
  20. package/dist/server/asset-base-url-transform-plugin.d.ts +5 -6
  21. package/dist/server/asset-base-url-transform-plugin.js +8 -9
  22. package/dist/server/asset-base-url-transform-plugin.js.map +1 -1
  23. package/dist/server/asset-base-url-transform-plugin.test.js +12 -13
  24. package/dist/server/asset-base-url-transform-plugin.test.js.map +1 -1
  25. package/dist/server/content-helpers.d.ts +27 -0
  26. package/dist/server/content-helpers.js +46 -0
  27. package/dist/server/content-helpers.js.map +1 -0
  28. package/dist/server/content-helpers.test.d.ts +1 -0
  29. package/dist/server/content-helpers.test.js +70 -0
  30. package/dist/server/content-helpers.test.js.map +1 -0
  31. package/dist/server/express.d.ts +1 -1
  32. package/dist/server/index.d.ts +3 -2
  33. package/dist/server/index.js +2 -1
  34. package/dist/server/index.js.map +1 -1
  35. package/dist/server/metric.d.ts +14 -0
  36. package/dist/server/metric.js +62 -0
  37. package/dist/server/metric.js.map +1 -0
  38. package/dist/server/middleware.test.js +12 -9
  39. package/dist/server/middleware.test.js.map +1 -1
  40. package/dist/server/server.d.ts +94 -70
  41. package/dist/server/server.js +154 -55
  42. package/dist/server/server.js.map +1 -1
  43. package/dist/server/templates/development.hbs +1 -1
  44. package/dist/server/widgetsDevServer.d.ts +7 -6
  45. package/dist/server/widgetsDevServer.js +18 -30
  46. package/dist/server/widgetsDevServer.js.map +1 -1
  47. package/dist/test/utils.d.ts +6 -14
  48. package/dist/test/utils.js +35 -30
  49. package/dist/test/utils.js.map +1 -1
  50. package/dist/test/widget.test.js +285 -94
  51. package/dist/test/widget.test.js.map +1 -1
  52. package/dist/version.d.ts +1 -0
  53. package/dist/version.js +5 -0
  54. package/dist/version.js.map +1 -0
  55. package/dist/web/bridges/apps-sdk/adaptor.d.ts +4 -2
  56. package/dist/web/bridges/apps-sdk/adaptor.js +24 -12
  57. package/dist/web/bridges/apps-sdk/adaptor.js.map +1 -1
  58. package/dist/web/bridges/apps-sdk/types.d.ts +10 -5
  59. package/dist/web/bridges/apps-sdk/types.js.map +1 -1
  60. package/dist/web/bridges/mcp-app/adaptor.d.ts +10 -0
  61. package/dist/web/bridges/mcp-app/adaptor.js +84 -0
  62. package/dist/web/bridges/mcp-app/adaptor.js.map +1 -1
  63. package/dist/web/bridges/types.d.ts +7 -1
  64. package/dist/web/components/modal-provider.js +1 -1
  65. package/dist/web/components/modal-provider.js.map +1 -1
  66. package/dist/web/create-store.js +15 -1
  67. package/dist/web/create-store.js.map +1 -1
  68. package/dist/web/generate-helpers.d.ts +8 -6
  69. package/dist/web/generate-helpers.js +8 -6
  70. package/dist/web/generate-helpers.js.map +1 -1
  71. package/dist/web/hooks/use-files.d.ts +2 -1
  72. package/dist/web/hooks/use-files.js +1 -0
  73. package/dist/web/hooks/use-files.js.map +1 -1
  74. package/dist/web/hooks/use-files.test.js +22 -2
  75. package/dist/web/hooks/use-files.test.js.map +1 -1
  76. package/dist/web/hooks/use-widget-state.test.js +114 -1
  77. package/dist/web/hooks/use-widget-state.test.js.map +1 -1
  78. package/dist/web/index.d.ts +1 -0
  79. package/dist/web/index.js.map +1 -1
  80. package/dist/web/plugin/plugin.d.ts +4 -1
  81. package/dist/web/plugin/plugin.js +101 -24
  82. package/dist/web/plugin/plugin.js.map +1 -1
  83. package/dist/web/plugin/scan-widgets.d.ts +8 -0
  84. package/dist/web/plugin/scan-widgets.js +68 -0
  85. package/dist/web/plugin/scan-widgets.js.map +1 -0
  86. package/dist/web/plugin/scan-widgets.test.d.ts +1 -0
  87. package/dist/web/plugin/scan-widgets.test.js +96 -0
  88. package/dist/web/plugin/scan-widgets.test.js.map +1 -0
  89. package/dist/web/plugin/transform-data-llm.js +1 -1
  90. package/dist/web/plugin/transform-data-llm.js.map +1 -1
  91. package/dist/web/plugin/validate-widget.d.ts +1 -5
  92. package/dist/web/plugin/validate-widget.js +4 -22
  93. package/dist/web/plugin/validate-widget.js.map +1 -1
  94. package/dist/web/plugin/validate-widget.test.js +12 -30
  95. package/dist/web/plugin/validate-widget.test.js.map +1 -1
  96. package/package.json +10 -6
  97. package/tsconfig.base.json +2 -0
@@ -1,8 +1,8 @@
1
- import type { McpUiResourceMeta } from "@modelcontextprotocol/ext-apps";
2
- import { McpServer as McpServerBase, type RegisteredTool } from "@modelcontextprotocol/sdk/server/mcp.js";
1
+ import type { McpUiToolMeta } from "@modelcontextprotocol/ext-apps";
2
+ import { McpServer as McpServerBase } from "@modelcontextprotocol/sdk/server/mcp.js";
3
3
  import type { AnySchema, SchemaOutput, ZodRawShapeCompat } from "@modelcontextprotocol/sdk/server/zod-compat.js";
4
4
  import type { RequestHandlerExtra } from "@modelcontextprotocol/sdk/shared/protocol.js";
5
- import type { CallToolResult, Resource, ServerNotification, ServerRequest, ServerResult, ToolAnnotations } from "@modelcontextprotocol/sdk/types.js";
5
+ import type { ContentBlock, ServerNotification, ServerRequest, ServerResult, ToolAnnotations } from "@modelcontextprotocol/sdk/types.js";
6
6
  import type { ErrorRequestHandler, RequestHandler } from "express";
7
7
  import type { McpExtra, McpExtraFor, McpMethodString, McpMiddlewareFilter, McpMiddlewareFn, McpResultFor, McpTypedMiddlewareFn, McpWildcard } from "./middleware.js";
8
8
  export type ToolDef<TInput = unknown, TOutput = unknown, TResponseMetadata = unknown> = {
@@ -10,102 +10,122 @@ export type ToolDef<TInput = unknown, TOutput = unknown, TResponseMetadata = unk
10
10
  output: TOutput;
11
11
  responseMetadata: TResponseMetadata;
12
12
  };
13
- /**
14
- * Extended MCP Apps CSP with upcoming fields from ext-apps PR #158
15
- * and Skybridge-specific fields for OpenAI compatibility
16
- * @see https://github.com/modelcontextprotocol/ext-apps/pull/158
17
- */
18
- type ExtendedMcpUiResourceCsp = McpUiResourceMeta["csp"] & {
19
- /**
20
- * Origins that can receive openExternal redirects without safe-link modal (OpenAI-specific)
21
- * @see https://developers.openai.com/apps-sdk/reference#component-resource-_meta-fields
22
- */
23
- redirectDomains?: string[];
24
- };
25
- /** Extended MCP Apps resource metadata with upcoming CSP fields */
26
- type ExtendedMcpUiResourceMeta = Omit<McpUiResourceMeta, "csp"> & {
27
- csp?: ExtendedMcpUiResourceCsp;
28
- };
29
- /** User-provided resource configuration with optional CSP override */
30
- export type WidgetResourceMeta = {
31
- ui?: ExtendedMcpUiResourceMeta;
32
- } & Resource["_meta"];
33
13
  export type WidgetHostType = "apps-sdk" | "mcp-app";
34
- type McpServerOriginalResourceConfig = Omit<Resource, "uri" | "name" | "mimeType" | "_meta"> & {
35
- _meta?: WidgetResourceMeta;
36
- /** Restrict host types to a specific subset */
14
+ export interface ViewCsp {
15
+ /** Origins for static assets (images, fonts, scripts, styles). */
16
+ resourceDomains?: string[];
17
+ /** Origins the widget may contact via fetch/XHR. */
18
+ connectDomains?: string[];
19
+ /** Origins allowed for iframe embeds (opts into stricter app review). */
20
+ frameDomains?: string[];
21
+ /** Origins that can receive openExternal redirects without the safe-link modal. */
22
+ redirectDomains?: string[];
23
+ /** Origins allowed in `<base href>` tags (mcp-apps only). */
24
+ baseUriDomains?: string[];
25
+ }
26
+ interface WidgetNameRegistry {
27
+ }
28
+ export type WidgetName = keyof WidgetNameRegistry extends never ? string : keyof WidgetNameRegistry & string;
29
+ export interface ViewConfig {
30
+ component: WidgetName;
31
+ description?: string;
37
32
  hosts?: WidgetHostType[];
33
+ prefersBorder?: boolean;
34
+ domain?: string;
35
+ csp?: ViewCsp;
36
+ _meta?: Record<string, unknown>;
37
+ }
38
+ export interface KnownToolMeta {
39
+ "openai/widgetAccessible"?: boolean;
40
+ "openai/toolInvocation/invoking"?: string;
41
+ "openai/toolInvocation/invoked"?: string;
42
+ }
43
+ export type ToolMeta = KnownToolMeta & Record<string, unknown>;
44
+ export type HandlerContent = string | ContentBlock | ContentBlock[];
45
+ type OpenaiToolMeta = {
46
+ "openai/outputTemplate": string;
47
+ "openai/widgetAccessible"?: boolean;
48
+ "openai/toolInvocation/invoking"?: string;
49
+ "openai/toolInvocation/invoked"?: string;
38
50
  };
39
- type McpServerOriginalToolConfig = Omit<Parameters<typeof McpServerBase.prototype.registerTool<ZodRawShapeCompat, ZodRawShapeCompat>>[1], "inputSchema" | "outputSchema">;
40
- type Simplify<T> = {
41
- [K in keyof T]: T[K];
51
+ /** @see https://github.com/modelcontextprotocol/ext-apps/blob/main/specification/draft/apps.mdx#resource-discovery */
52
+ type McpAppsToolMeta = {
53
+ ui: McpUiToolMeta;
42
54
  };
43
- type ExtractStructuredContent<T> = T extends {
44
- structuredContent: infer SC;
45
- } ? Simplify<SC> : never;
46
- type ExtractMeta<T> = [Extract<T, {
47
- _meta: unknown;
48
- }>] extends [never] ? unknown : Extract<T, {
49
- _meta: unknown;
50
- }> extends {
51
- _meta: infer M;
52
- } ? Simplify<M> : unknown;
55
+ type InternalToolMeta = Partial<OpenaiToolMeta & McpAppsToolMeta>;
53
56
  /**
54
57
  * Type-level marker interface for cross-package type inference.
55
- * This enables TypeScript to infer tool types across package boundaries
56
- * using structural typing on the $types property, rather than relying on
57
- * class generic inference which fails when McpServer comes from different
58
- * package installations.
59
58
  *
60
- * Inspired by tRPC's _def pattern and Hono's type markers.
59
+ * Consumers infer tool types via the structural `$types` property rather than
60
+ * the `McpServer` class generic, because class-generic inference breaks when
61
+ * `McpServer` comes from different package installations (e.g. a consumer
62
+ * with its own `skybridge` dep vs. the in-tree workspace version).
63
+ *
64
+ * Inspired by tRPC's `_def` pattern and Hono's type markers.
61
65
  */
62
66
  export interface McpServerTypes<TTools extends Record<string, ToolDef>> {
63
67
  readonly tools: TTools;
64
68
  }
69
+ type Simplify<T> = {
70
+ [K in keyof T]: T[K];
71
+ };
65
72
  type ShapeOutput<Shape extends ZodRawShapeCompat> = Simplify<{
66
73
  [K in keyof Shape as undefined extends SchemaOutput<Shape[K]> ? never : K]: SchemaOutput<Shape[K]>;
67
74
  } & {
68
75
  [K in keyof Shape as undefined extends SchemaOutput<Shape[K]> ? K : never]?: SchemaOutput<Shape[K]>;
69
76
  }>;
77
+ type ExtractStructuredContent<T> = T extends {
78
+ structuredContent: infer SC;
79
+ } ? Simplify<SC> : never;
80
+ type ExtractMeta<T> = [Extract<T, {
81
+ _meta: unknown;
82
+ }>] extends [never] ? unknown : Extract<T, {
83
+ _meta: unknown;
84
+ }> extends {
85
+ _meta: infer M;
86
+ } ? Simplify<M> : unknown;
70
87
  type AddTool<TTools, TName extends string, TInput extends ZodRawShapeCompat, TOutput, TResponseMetadata = unknown> = McpServer<TTools & {
71
88
  [K in TName]: ToolDef<ShapeOutput<TInput>, TOutput, TResponseMetadata>;
72
89
  }>;
73
- type ToolConfig<TInput extends ZodRawShapeCompat | AnySchema> = {
90
+ interface UnifiedToolConfig<TInput extends ZodRawShapeCompat | AnySchema> {
91
+ name: string;
74
92
  title?: string;
75
93
  description?: string;
76
94
  inputSchema?: TInput;
77
95
  outputSchema?: ZodRawShapeCompat | AnySchema;
78
96
  annotations?: ToolAnnotations;
79
- _meta?: Record<string, unknown>;
80
- };
97
+ view?: ViewConfig;
98
+ _meta?: ToolMeta;
99
+ }
81
100
  type ToolHandler<TInput extends ZodRawShapeCompat, TReturn extends {
82
- content: CallToolResult["content"];
83
- } = CallToolResult> = (args: ShapeOutput<TInput>, extra: RequestHandlerExtra<ServerRequest, ServerNotification>) => TReturn | Promise<TReturn>;
84
- export declare class McpServer<TTools extends Record<string, ToolDef> = Record<never, ToolDef>> extends McpServerBase {
101
+ content: HandlerContent;
102
+ } = {
103
+ content: HandlerContent;
104
+ }> = (args: ShapeOutput<TInput>, extra: RequestHandlerExtra<ServerRequest, ServerNotification>) => TReturn | Promise<TReturn>;
105
+ export declare function normalizeContent(content: HandlerContent): ContentBlock[];
106
+ interface McpServerBaseOmitted extends Omit<McpServerBase, "registerTool" | "connect"> {
107
+ }
108
+ declare const McpServerBaseOmitted: new (...args: ConstructorParameters<typeof McpServerBase>) => McpServerBaseOmitted;
109
+ export declare class McpServer<TTools extends Record<string, ToolDef> = Record<never, ToolDef>> extends McpServerBaseOmitted {
85
110
  readonly $types: McpServerTypes<TTools>;
86
111
  private express?;
87
112
  private customMiddleware;
88
113
  private customErrorMiddleware;
89
114
  private mcpMiddlewareEntries;
90
115
  private mcpMiddlewareApplied;
116
+ private claimedWidgets;
91
117
  use(...handlers: RequestHandler[]): this;
92
118
  use(path: string, ...handlers: RequestHandler[]): this;
93
119
  useOnError(...handlers: ErrorRequestHandler[]): this;
94
120
  useOnError(path: string, ...handlers: ErrorRequestHandler[]): this;
95
- /**
96
- * Register MCP protocol-level middleware (catch-all).
97
- */
121
+ /** Register MCP protocol-level middleware (catch-all). */
98
122
  mcpMiddleware(handler: McpMiddlewareFn): this;
99
- /**
100
- * Register MCP protocol-level middleware for all requests (`extra` is `McpExtra`).
101
- */
123
+ /** Register MCP protocol-level middleware for all requests (`extra` is `McpExtra`). */
102
124
  mcpMiddleware(filter: "request", handler: (request: {
103
125
  method: string;
104
126
  params: Record<string, unknown>;
105
127
  }, extra: McpExtra, next: () => Promise<ServerResult>) => Promise<unknown> | unknown): this;
106
- /**
107
- * Register MCP protocol-level middleware for all notifications (`extra` is `undefined`).
108
- */
128
+ /** Register MCP protocol-level middleware for all notifications (`extra` is `undefined`). */
109
129
  mcpMiddleware(filter: "notification", handler: (request: {
110
130
  method: string;
111
131
  params: Record<string, unknown>;
@@ -132,19 +152,23 @@ export declare class McpServer<TTools extends Record<string, ToolDef> = Record<n
132
152
  private applyMcpMiddleware;
133
153
  connect(transport: Parameters<typeof McpServerBase.prototype.connect>[0]): Promise<void>;
134
154
  run(): Promise<void>;
135
- registerWidget<TName extends string, TInput extends ZodRawShapeCompat, TReturn extends {
136
- content: CallToolResult["content"];
137
- }>(name: TName, resourceConfig: McpServerOriginalResourceConfig, toolConfig: McpServerOriginalToolConfig & {
138
- inputSchema?: TInput;
139
- outputSchema?: ZodRawShapeCompat | AnySchema;
140
- }, toolCallback: ToolHandler<TInput, TReturn>): AddTool<TTools, TName, TInput, ExtractStructuredContent<TReturn>, ExtractMeta<TReturn>>;
141
- registerTool<TName extends string, InputArgs extends ZodRawShapeCompat, TReturn extends {
142
- content: CallToolResult["content"];
143
- }>(name: TName, config: ToolConfig<InputArgs>, cb: ToolHandler<InputArgs, TReturn>): AddTool<TTools, TName, InputArgs, ExtractStructuredContent<TReturn>, ExtractMeta<TReturn>>;
144
- registerTool<InputArgs extends ZodRawShapeCompat>(name: string, config: ToolConfig<InputArgs>, cb: ToolHandler<InputArgs>): RegisteredTool;
155
+ /** @internal */
156
+ enforceOneToolPerWidget(component: string, toolName: string): void;
157
+ /** @internal */
158
+ registerViewResources(toolName: string, view: ViewConfig, toolMeta: InternalToolMeta): void;
145
159
  private registerWidgetResource;
160
+ /** @internal */
161
+ wrapHandler<InputArgs extends ZodRawShapeCompat>(cb: ToolHandler<InputArgs>, { attachViewUUID }: {
162
+ attachViewUUID: boolean;
163
+ }): ToolHandler<InputArgs>;
164
+ private lookupWidgetFile;
146
165
  private lookupDistFile;
147
- private lookupDistFileWithIndexFallback;
148
166
  private readManifest;
167
+ registerTool<TName extends string, InputArgs extends ZodRawShapeCompat, TReturn extends {
168
+ content: HandlerContent;
169
+ }>(config: UnifiedToolConfig<InputArgs> & {
170
+ name: TName;
171
+ }, cb: ToolHandler<InputArgs, TReturn>): AddTool<TTools, TName, InputArgs, ExtractStructuredContent<TReturn>, ExtractMeta<TReturn>>;
172
+ registerTool<InputArgs extends ZodRawShapeCompat>(config: UnifiedToolConfig<InputArgs>, cb: ToolHandler<InputArgs>): this;
149
173
  }
150
174
  export {};
@@ -2,9 +2,10 @@ import crypto from "node:crypto";
2
2
  import { readFileSync } from "node:fs";
3
3
  import http from "node:http";
4
4
  import path from "node:path";
5
- import { McpServer as McpServerBase, } from "@modelcontextprotocol/sdk/server/mcp.js";
5
+ import { McpServer as McpServerBase } from "@modelcontextprotocol/sdk/server/mcp.js";
6
6
  import { mergeWith, union } from "es-toolkit";
7
7
  import { createApp } from "./express.js";
8
+ import { createMiddlewareEntry } from "./metric.js";
8
9
  import { buildMiddlewareChain, getHandlerMaps } from "./middleware.js";
9
10
  import { templateHelper } from "./templateHelper.js";
10
11
  const mergeWithUnion = (target, source) => {
@@ -14,12 +15,26 @@ const mergeWithUnion = (target, source) => {
14
15
  }
15
16
  });
16
17
  };
17
- export class McpServer extends McpServerBase {
18
+ // ---------------------------------------------------------------------------
19
+ // Content normalization
20
+ // ---------------------------------------------------------------------------
21
+ export function normalizeContent(content) {
22
+ if (typeof content === "string") {
23
+ return [{ type: "text", text: content }];
24
+ }
25
+ if (Array.isArray(content)) {
26
+ return content;
27
+ }
28
+ return [content];
29
+ }
30
+ const McpServerBaseOmitted = McpServerBase;
31
+ export class McpServer extends McpServerBaseOmitted {
18
32
  express;
19
33
  customMiddleware = [];
20
34
  customErrorMiddleware = [];
21
35
  mcpMiddlewareEntries = [];
22
36
  mcpMiddlewareApplied = false;
37
+ claimedWidgets = new Map();
23
38
  use(pathOrHandler, ...handlers) {
24
39
  if (typeof pathOrHandler === "string") {
25
40
  this.customMiddleware.push({
@@ -74,12 +89,14 @@ export class McpServer extends McpServerBase {
74
89
  return;
75
90
  }
76
91
  this.mcpMiddlewareApplied = true;
77
- if (this.mcpMiddlewareEntries.length === 0) {
92
+ const monitoringEntry = createMiddlewareEntry();
93
+ const entries = monitoringEntry
94
+ ? [monitoringEntry, ...this.mcpMiddlewareEntries]
95
+ : this.mcpMiddlewareEntries;
96
+ if (entries.length === 0) {
78
97
  return;
79
98
  }
80
99
  const { requestHandlers, notificationHandlers } = getHandlerMaps(this.server);
81
- const entries = this.mcpMiddlewareEntries;
82
- // Wrap existing handlers and proxy future .set() for lazy SDK registration
83
100
  const instrumentMap = (map, isNotification) => {
84
101
  for (const [method, handler] of map) {
85
102
  map.set(method, buildMiddlewareChain(method, isNotification, handler, entries));
@@ -92,7 +109,7 @@ export class McpServer extends McpServerBase {
92
109
  }
93
110
  async connect(transport) {
94
111
  this.applyMcpMiddleware();
95
- return super.connect(transport);
112
+ return McpServerBase.prototype.connect.call(this, transport);
96
113
  }
97
114
  async run() {
98
115
  this.applyMcpMiddleware();
@@ -117,90 +134,126 @@ export class McpServer extends McpServerBase {
117
134
  });
118
135
  });
119
136
  }
120
- registerWidget(name, resourceConfig, toolConfig, toolCallback) {
121
- const userMeta = resourceConfig._meta;
122
- const toolMeta = {
123
- ...toolConfig._meta,
124
- };
125
- if (!resourceConfig.hosts || resourceConfig.hosts.includes("apps-sdk")) {
137
+ // registerTool is defined via interface merging + prototype assignment below
138
+ // to avoid TypeScript override signature incompatibility with the base class.
139
+ // -------------------------------------------------------------------------
140
+ // View (widget) resource registration
141
+ // -------------------------------------------------------------------------
142
+ /** @internal */
143
+ enforceOneToolPerWidget(component, toolName) {
144
+ const existingTool = this.claimedWidgets.get(component);
145
+ if (existingTool) {
146
+ throw new Error(`skybridge: widget "${component}" is already used by tool "${existingTool}". Tool "${toolName}" cannot also reference it — each widget backs exactly one tool.`);
147
+ }
148
+ this.claimedWidgets.set(component, toolName);
149
+ }
150
+ /** @internal */
151
+ registerViewResources(toolName, view, toolMeta) {
152
+ const hosts = view.hosts ?? ["apps-sdk", "mcp-app"];
153
+ if (hosts.includes("apps-sdk")) {
126
154
  const widgetConfig = {
127
155
  hostType: "apps-sdk",
128
- uri: `ui://widgets/apps-sdk/${name}.html`,
156
+ uri: `ui://widgets/apps-sdk/${view.component}.html`,
129
157
  mimeType: "text/html+skybridge",
130
158
  buildContentMeta: ({ resourceDomains, connectDomains, domain }, overrides) => {
131
- const userUi = userMeta?.ui;
132
- const userCsp = userUi?.csp;
133
159
  const defaults = {
134
160
  "openai/widgetCSP": {
135
161
  resource_domains: resourceDomains,
136
162
  connect_domains: connectDomains,
137
163
  },
138
164
  "openai/widgetDomain": domain,
139
- "openai/widgetDescription": resourceConfig.description,
165
+ "openai/widgetDescription": view.description,
140
166
  };
141
- const fromUi = {
167
+ const fromView = {
142
168
  "openai/widgetCSP": {
143
- resource_domains: userCsp?.resourceDomains,
144
- connect_domains: userCsp?.connectDomains,
145
- frame_domains: userCsp?.frameDomains,
146
- redirect_domains: userCsp?.redirectDomains,
169
+ resource_domains: view.csp?.resourceDomains,
170
+ connect_domains: view.csp?.connectDomains,
171
+ frame_domains: view.csp?.frameDomains,
172
+ redirect_domains: view.csp?.redirectDomains,
147
173
  },
148
- "openai/widgetDomain": userUi?.domain,
149
- "openai/widgetPrefersBorder": userUi?.prefersBorder,
174
+ "openai/widgetDomain": view.domain,
175
+ "openai/widgetPrefersBorder": view.prefersBorder,
150
176
  };
151
- const directOpenaiKeys = Object.fromEntries(Object.entries(userMeta ?? {}).filter(([key]) => key.startsWith("openai/")));
152
- return mergeWithUnion(mergeWithUnion(mergeWithUnion(defaults, fromUi), directOpenaiKeys), { "openai/widgetDomain": overrides.domain });
177
+ const base = mergeWithUnion(mergeWithUnion(defaults, fromView), {
178
+ "openai/widgetDomain": overrides.domain,
179
+ });
180
+ if (view._meta) {
181
+ return { ...base, ...view._meta };
182
+ }
183
+ return base;
153
184
  },
154
185
  };
155
186
  this.registerWidgetResource({
156
- name,
187
+ name: toolName,
157
188
  widgetConfig,
158
- resourceConfig,
189
+ view,
159
190
  });
160
191
  toolMeta["openai/outputTemplate"] = widgetConfig.uri;
161
192
  }
162
- if (!resourceConfig.hosts || resourceConfig.hosts.includes("mcp-app")) {
193
+ if (hosts.includes("mcp-app")) {
163
194
  const widgetConfig = {
164
195
  hostType: "mcp-app",
165
- uri: `ui://widgets/ext-apps/${name}.html`,
196
+ uri: `ui://widgets/ext-apps/${view.component}.html`,
166
197
  mimeType: "text/html;profile=mcp-app",
167
- buildContentMeta: ({ resourceDomains, connectDomains, domain }, overrides) => {
198
+ buildContentMeta: ({ resourceDomains, connectDomains, domain, baseUriDomains }, overrides) => {
168
199
  const defaults = {
169
200
  ui: {
170
201
  csp: {
171
202
  resourceDomains,
172
203
  connectDomains,
204
+ baseUriDomains,
173
205
  },
174
206
  domain,
175
207
  },
176
208
  };
177
- return mergeWithUnion(defaults, {
178
- ui: { ...userMeta?.ui, ...overrides },
209
+ const fromView = {
210
+ ui: {
211
+ ...(view.description && { description: view.description }),
212
+ ...(view.prefersBorder !== undefined && {
213
+ prefersBorder: view.prefersBorder,
214
+ }),
215
+ ...(view.domain && { domain: view.domain }),
216
+ csp: {
217
+ ...(view.csp?.resourceDomains && {
218
+ resourceDomains: view.csp.resourceDomains,
219
+ }),
220
+ ...(view.csp?.connectDomains && {
221
+ connectDomains: view.csp.connectDomains,
222
+ }),
223
+ ...(view.csp?.frameDomains && {
224
+ frameDomains: view.csp.frameDomains,
225
+ }),
226
+ ...(view.csp?.baseUriDomains && {
227
+ baseUriDomains: view.csp.baseUriDomains,
228
+ }),
229
+ ...(view.csp?.redirectDomains && {
230
+ redirectDomains: view.csp.redirectDomains,
231
+ }),
232
+ },
233
+ },
234
+ };
235
+ const base = mergeWithUnion(mergeWithUnion(defaults, fromView), {
236
+ ui: overrides,
179
237
  });
238
+ if (view._meta) {
239
+ return { ...base, ...view._meta };
240
+ }
241
+ return base;
180
242
  },
181
243
  };
182
244
  this.registerWidgetResource({
183
- name,
245
+ name: toolName,
184
246
  widgetConfig,
185
- resourceConfig,
247
+ view,
186
248
  });
187
249
  // @ts-expect-error - For backwards compatibility with Claude current implementation of the specs
188
250
  toolMeta["ui/resourceUri"] = widgetConfig.uri;
189
251
  toolMeta.ui = { resourceUri: widgetConfig.uri };
190
252
  }
191
- this.registerTool(name, {
192
- ...toolConfig,
193
- _meta: toolMeta,
194
- }, toolCallback);
195
- return this;
196
- }
197
- registerTool(name, config, cb) {
198
- super.registerTool(name, config, cb);
199
- return this;
200
253
  }
201
- registerWidgetResource({ name, widgetConfig, resourceConfig, }) {
254
+ registerWidgetResource({ name, widgetConfig, view, }) {
202
255
  const { hostType, uri: widgetUri, mimeType, buildContentMeta, } = widgetConfig;
203
- this.registerResource(name, widgetUri, { ...resourceConfig, _meta: resourceConfig._meta }, async (uri, extra) => {
256
+ this.registerResource(name, widgetUri, { description: view.description }, async (uri, extra) => {
204
257
  const isProduction = process.env.NODE_ENV === "production";
205
258
  const isClaude = extra?.requestInfo?.headers?.["user-agent"] === "Claude-User";
206
259
  const headers = extra?.requestInfo?.headers || {};
@@ -233,13 +286,13 @@ export class McpServer extends McpServerBase {
233
286
  ? templateHelper.renderProduction({
234
287
  hostType,
235
288
  serverUrl,
236
- widgetFile: this.lookupDistFileWithIndexFallback(`src/widgets/${name}`),
237
- styleFile: this.lookupDistFile("style.css"),
289
+ widgetFile: this.lookupWidgetFile(view.component),
290
+ styleFile: this.lookupDistFile("style.css") ?? "",
238
291
  })
239
292
  : templateHelper.renderDevelopment({
240
293
  hostType,
241
294
  serverUrl,
242
- widgetName: name,
295
+ widgetName: view.component,
243
296
  });
244
297
  const connectDomains = [serverUrl];
245
298
  if (!isProduction) {
@@ -250,7 +303,10 @@ export class McpServer extends McpServerBase {
250
303
  let contentMetaOverrides = {};
251
304
  if (isClaude) {
252
305
  const pathname = extra?.requestInfo?.url?.pathname ?? "";
253
- const url = `${serverUrl}${pathname}`;
306
+ const rawUrl = header("x-alpic-forwarded-url") ?? `${serverUrl}${pathname}`;
307
+ // Strip a lone trailing slash so the hash matches the connector URL
308
+ // as registered with Claude (which has no trailing slash on bare origins).
309
+ const url = rawUrl.endsWith("/") ? rawUrl.slice(0, -1) : rawUrl;
254
310
  const hash = crypto
255
311
  .createHash("sha256")
256
312
  .update(url)
@@ -271,18 +327,61 @@ export class McpServer extends McpServerBase {
271
327
  };
272
328
  });
273
329
  }
274
- lookupDistFile(key) {
330
+ // -------------------------------------------------------------------------
331
+ // Handler wrapping
332
+ // -------------------------------------------------------------------------
333
+ /** @internal */
334
+ wrapHandler(cb, { attachViewUUID }) {
335
+ return async (args, extra) => {
336
+ const result = await cb(args, extra);
337
+ return {
338
+ ...result,
339
+ content: normalizeContent(result.content),
340
+ ...(attachViewUUID && {
341
+ _meta: {
342
+ ...result._meta,
343
+ viewUUID: crypto.randomUUID(),
344
+ },
345
+ }),
346
+ };
347
+ };
348
+ }
349
+ // -------------------------------------------------------------------------
350
+ // Manifest helpers
351
+ // -------------------------------------------------------------------------
352
+ lookupWidgetFile(widgetName) {
275
353
  const manifest = this.readManifest();
276
- return manifest[key]?.file;
354
+ for (const entry of Object.values(manifest)) {
355
+ if (entry?.isEntry && entry.name === widgetName && entry.file) {
356
+ return entry.file;
357
+ }
358
+ }
359
+ throw new Error(`Widget "${widgetName}" not found in Vite manifest. Did the build complete successfully? Look for an entry with name "${widgetName}" in dist/assets/.vite/manifest.json.`);
277
360
  }
278
- lookupDistFileWithIndexFallback(basePath) {
361
+ lookupDistFile(key) {
279
362
  const manifest = this.readManifest();
280
- const flatFileKey = `${basePath}.tsx`;
281
- const indexFileKey = `${basePath}/index.tsx`;
282
- return manifest[flatFileKey]?.file ?? manifest[indexFileKey]?.file;
363
+ return manifest[key]?.file;
283
364
  }
284
365
  readManifest() {
285
366
  return JSON.parse(readFileSync(path.join(process.cwd(), "dist", "assets", ".vite", "manifest.json"), "utf-8"));
286
367
  }
368
+ registerTool(...args) {
369
+ const baseFn = McpServerBase.prototype.registerTool;
370
+ if (typeof args[0] === "string") {
371
+ baseFn.call(this, args[0], args[1], args[2]);
372
+ return this;
373
+ }
374
+ const config = args[0];
375
+ const cb = args[1];
376
+ const { name, view, _meta: userToolMeta, ...toolFields } = config;
377
+ const toolMeta = { ...userToolMeta };
378
+ if (view) {
379
+ this.enforceOneToolPerWidget(view.component, name);
380
+ this.registerViewResources(name, view, toolMeta);
381
+ }
382
+ const wrappedCb = this.wrapHandler(cb, { attachViewUUID: Boolean(view) });
383
+ baseFn.call(this, name, { ...toolFields, _meta: toolMeta }, wrappedCb);
384
+ return this;
385
+ }
287
386
  }
288
387
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server/server.ts"],"names":[],"mappings":"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"}
@@ -8,5 +8,5 @@
8
8
  <script type="module" src="{{serverUrl}}/@vite/client"></script>
9
9
  <div id="root"></div>
10
10
  <script type="module" id="dev-widget-entry">
11
- import('{{serverUrl}}/src/widgets/{{widgetName}}');
11
+ import('{{serverUrl}}/_skybridge/widget/{{widgetName}}');
12
12
  </script>
@@ -1,13 +1,14 @@
1
1
  import type http from "node:http";
2
2
  import { type Router } from "express";
3
3
  /**
4
- * Install Vite dev server
5
- * This router MUST be installed at the application root, like so:
4
+ * Vite dev-server middleware for widget assets.
6
5
  *
7
- * const app = express();
6
+ * MUST be mounted at the Express app root so Vite can intercept
7
+ * `/@vite/client`, `/@react-refresh`, and `/_skybridge/widget/...` imports:
8
8
  *
9
- * if (env.NODE_ENV !== "production") {
10
- * app.use(await widgetsRouter());
11
- * }
9
+ * const app = express();
10
+ * if (env.NODE_ENV !== "production") {
11
+ * app.use(await widgetsDevServer(httpServer));
12
+ * }
12
13
  */
13
14
  export declare const widgetsDevServer: (httpServer: http.Server) => Promise<Router>;