mcp-use 1.5.0-canary.0 → 1.5.0-canary.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/dist/.tsbuildinfo +1 -1
- package/dist/{chunk-RE7EYFDV.js → chunk-5XVM4A23.js} +446 -964
- package/dist/index.cjs +474 -992
- package/dist/index.js +11 -5
- package/dist/src/react/ErrorBoundary.d.ts +24 -0
- package/dist/src/react/ErrorBoundary.d.ts.map +1 -0
- package/dist/src/react/Image.d.ts +11 -0
- package/dist/src/react/Image.d.ts.map +1 -0
- package/dist/src/react/McpUseProvider.d.ts +46 -0
- package/dist/src/react/McpUseProvider.d.ts.map +1 -0
- package/dist/src/react/ThemeProvider.d.ts +14 -0
- package/dist/src/react/ThemeProvider.d.ts.map +1 -0
- package/dist/src/react/WidgetControls.d.ts +44 -0
- package/dist/src/react/WidgetControls.d.ts.map +1 -0
- package/dist/src/react/index.cjs +474 -992
- package/dist/src/react/index.d.ts +9 -6
- package/dist/src/react/index.d.ts.map +1 -1
- package/dist/src/react/index.js +11 -5
- package/dist/src/react/useWidget.d.ts.map +1 -1
- package/dist/src/react/widget-types.d.ts +6 -0
- package/dist/src/react/widget-types.d.ts.map +1 -1
- package/dist/src/server/connect-adapter.d.ts.map +1 -1
- package/dist/src/server/index.cjs +232 -21
- package/dist/src/server/index.js +232 -21
- package/dist/src/server/mcp-server.d.ts.map +1 -1
- package/package.json +6 -4
- package/dist/src/react/WidgetDebugger.d.ts +0 -31
- package/dist/src/react/WidgetDebugger.d.ts.map +0 -1
- package/dist/src/react/WidgetFullscreenWrapper.d.ts +0 -32
- package/dist/src/react/WidgetFullscreenWrapper.d.ts.map +0 -1
|
@@ -2,12 +2,15 @@
|
|
|
2
2
|
* Entry point for the React integration.
|
|
3
3
|
* Provides the useMcp hook and related types.
|
|
4
4
|
*/
|
|
5
|
-
export { useMcp } from "./useMcp.js";
|
|
6
5
|
export type { UseMcpOptions, UseMcpResult } from "./types.js";
|
|
6
|
+
export { useMcp } from "./useMcp.js";
|
|
7
7
|
export { onMcpAuthorization } from "../auth/callback.js";
|
|
8
|
-
export type {
|
|
9
|
-
export {
|
|
10
|
-
export {
|
|
11
|
-
export {
|
|
12
|
-
export
|
|
8
|
+
export type { Prompt, Resource, ResourceTemplate, Tool, } from "@modelcontextprotocol/sdk/types.js";
|
|
9
|
+
export { ErrorBoundary } from "./ErrorBoundary.js";
|
|
10
|
+
export { Image } from "./Image.js";
|
|
11
|
+
export { ThemeProvider } from "./ThemeProvider.js";
|
|
12
|
+
export { useWidget, useWidgetProps, useWidgetState, useWidgetTheme, } from "./useWidget.js";
|
|
13
|
+
export type { API, CallToolResponse, DeviceType, DisplayMode, OpenAiGlobals, SafeArea, SafeAreaInsets, Theme, UnknownObject, UserAgent, UseWidgetResult, } from "./widget-types.js";
|
|
14
|
+
export { WidgetControls } from "./WidgetControls.js";
|
|
15
|
+
export { McpUseProvider } from "./McpUseProvider.js";
|
|
13
16
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/react/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/react/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAGrC,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAGzD,YAAY,EACV,MAAM,EACN,QAAQ,EACR,gBAAgB,EAChB,IAAI,GACL,MAAM,oCAAoC,CAAC;AAG5C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EACL,SAAS,EACT,cAAc,EACd,cAAc,EACd,cAAc,GACf,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,GAAG,EACH,gBAAgB,EAChB,UAAU,EACV,WAAW,EACX,aAAa,EACb,QAAQ,EACR,cAAc,EACd,KAAK,EACL,aAAa,EACb,SAAS,EACT,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC"}
|
package/dist/src/react/index.js
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
ErrorBoundary,
|
|
3
|
+
Image,
|
|
4
|
+
McpUseProvider,
|
|
5
|
+
ThemeProvider,
|
|
6
|
+
WidgetControls,
|
|
4
7
|
useMcp,
|
|
5
8
|
useWidget,
|
|
6
9
|
useWidgetProps,
|
|
7
10
|
useWidgetState,
|
|
8
11
|
useWidgetTheme
|
|
9
|
-
} from "../../chunk-
|
|
12
|
+
} from "../../chunk-5XVM4A23.js";
|
|
10
13
|
import {
|
|
11
14
|
onMcpAuthorization
|
|
12
15
|
} from "../../chunk-GRLCLVAK.js";
|
|
@@ -14,8 +17,11 @@ import "../../chunk-DSBKVAWD.js";
|
|
|
14
17
|
import "../../chunk-34R6SIER.js";
|
|
15
18
|
import "../../chunk-3GQAWCBQ.js";
|
|
16
19
|
export {
|
|
17
|
-
|
|
18
|
-
|
|
20
|
+
ErrorBoundary,
|
|
21
|
+
Image,
|
|
22
|
+
McpUseProvider,
|
|
23
|
+
ThemeProvider,
|
|
24
|
+
WidgetControls,
|
|
19
25
|
onMcpAuthorization,
|
|
20
26
|
useMcp,
|
|
21
27
|
useWidget,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useWidget.d.ts","sourceRoot":"","sources":["../../../src/react/useWidget.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,OAAO,KAAK,EAMV,KAAK,EACL,aAAa,EAEb,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAqC3B;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,SAAS,CACvB,MAAM,SAAS,aAAa,GAAG,aAAa,EAC5C,OAAO,SAAS,aAAa,GAAG,aAAa,EAC7C,SAAS,SAAS,aAAa,GAAG,aAAa,EAC/C,MAAM,SAAS,aAAa,GAAG,aAAa,EAC5C,YAAY,CAAC,EAAE,MAAM,GAAG,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"useWidget.d.ts","sourceRoot":"","sources":["../../../src/react/useWidget.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,OAAO,KAAK,EAMV,KAAK,EACL,aAAa,EAEb,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAqC3B;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,SAAS,CACvB,MAAM,SAAS,aAAa,GAAG,aAAa,EAC5C,OAAO,SAAS,aAAa,GAAG,aAAa,EAC7C,SAAS,SAAS,aAAa,GAAG,aAAa,EAC/C,MAAM,SAAS,aAAa,GAAG,aAAa,EAC5C,YAAY,CAAC,EAAE,MAAM,GAAG,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAkN5E;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,MAAM,SAAS,aAAa,GAAG,aAAa,EACzE,YAAY,CAAC,EAAE,MAAM,GACpB,MAAM,CAGR;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,IAAI,KAAK,CAGtC;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,MAAM,SAAS,aAAa,EACzD,YAAY,CAAC,EAAE,MAAM,GACpB,SAAS;IACV,MAAM,GAAG,IAAI;IACb,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,MAAM,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC;CACrE,CAoBA"}
|
|
@@ -67,6 +67,8 @@ export interface API<WidgetState extends UnknownObject = UnknownObject> {
|
|
|
67
67
|
}>;
|
|
68
68
|
/** Persist widget state that will be shown to the model */
|
|
69
69
|
setWidgetState: (state: WidgetState) => Promise<void>;
|
|
70
|
+
/** Notify OpenAI about intrinsic height changes for auto-sizing */
|
|
71
|
+
notifyIntrinsicHeight: (height: number) => Promise<void>;
|
|
70
72
|
}
|
|
71
73
|
export declare const SET_GLOBALS_EVENT_TYPE = "openai:set_globals";
|
|
72
74
|
export declare class SetGlobalsEvent extends CustomEvent<{
|
|
@@ -77,6 +79,8 @@ export declare class SetGlobalsEvent extends CustomEvent<{
|
|
|
77
79
|
declare global {
|
|
78
80
|
interface Window {
|
|
79
81
|
openai?: API<any> & OpenAiGlobals<any, any, any, any>;
|
|
82
|
+
__getFile?: (filename: string) => string;
|
|
83
|
+
__mcpPublicUrl?: string;
|
|
80
84
|
}
|
|
81
85
|
interface WindowEventMap {
|
|
82
86
|
[SET_GLOBALS_EVENT_TYPE]: SetGlobalsEvent;
|
|
@@ -108,6 +112,8 @@ export interface UseWidgetResult<TProps extends UnknownObject = UnknownObject, T
|
|
|
108
112
|
userAgent: UserAgent;
|
|
109
113
|
/** Current locale */
|
|
110
114
|
locale: string;
|
|
115
|
+
/** MCP server base URL for making API requests */
|
|
116
|
+
mcp_url: string;
|
|
111
117
|
/** Call a tool on the MCP server */
|
|
112
118
|
callTool: (name: string, args: Record<string, unknown>) => Promise<CallToolResponse>;
|
|
113
119
|
/** Send a follow-up message to the conversation */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"widget-types.d.ts","sourceRoot":"","sources":["../../../src/react/widget-types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEpD,MAAM,MAAM,KAAK,GAAG,OAAO,GAAG,MAAM,CAAC;AAErC,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,QAAQ,GAAG,YAAY,CAAC;AAE1D,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;AAErE,MAAM,MAAM,cAAc,GAAG;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,MAAM,EAAE,cAAc,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,MAAM,EAAE;QAAE,IAAI,EAAE,UAAU,CAAA;KAAE,CAAC;IAC7B,YAAY,EAAE;QACZ,KAAK,EAAE,OAAO,CAAC;QACf,KAAK,EAAE,OAAO,CAAC;KAChB,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,KAAK,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;KACpB,CAAC,CAAC;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,WAAW,aAAa,CAC5B,SAAS,SAAS,aAAa,GAAG,aAAa,EAC/C,UAAU,SAAS,aAAa,GAAG,aAAa,EAChD,oBAAoB,SAAS,aAAa,GAAG,aAAa,EAC1D,WAAW,SAAS,aAAa,GAAG,aAAa;IAEjD,KAAK,EAAE,KAAK,CAAC;IACb,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IAGf,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,WAAW,CAAC;IACzB,QAAQ,EAAE,QAAQ,CAAC;IAGnB,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IAC9B,oBAAoB,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAClD,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;CACjC;AAED,MAAM,WAAW,GAAG,CAAC,WAAW,SAAS,aAAa,GAAG,aAAa;IACpE,2DAA2D;IAC3D,QAAQ,EAAE,CACR,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC1B,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAE/B,2DAA2D;IAC3D,mBAAmB,EAAE,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjE,+DAA+D;IAC/D,YAAY,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAE9C,gEAAgE;IAChE,kBAAkB,EAAE,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,WAAW,CAAA;KAAE,KAAK,OAAO,CAAC;QAC3D;;;WAGG;QACH,IAAI,EAAE,WAAW,CAAC;KACnB,CAAC,CAAC;IAEH,2DAA2D;IAC3D,cAAc,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"widget-types.d.ts","sourceRoot":"","sources":["../../../src/react/widget-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connect-adapter.d.ts","sourceRoot":"","sources":["../../../src/server/connect-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,iBAAiB,EAAQ,MAAM,MAAM,CAAC;AAE7D;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,GAAG,GAAG,OAAO,CA0C5D;AAED;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CACnC,UAAU,EAAE,GAAG,EACf,cAAc,GAAE,MAAY,GAC3B,OAAO,CAAC,iBAAiB,CAAC,CAQ5B;AAED;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAC1C,iBAAiB,EAAE,GAAG,EACtB,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,iBAAiB,CAAC,
|
|
1
|
+
{"version":3,"file":"connect-adapter.d.ts","sourceRoot":"","sources":["../../../src/server/connect-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,iBAAiB,EAAQ,MAAM,MAAM,CAAC;AAE7D;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,GAAG,GAAG,OAAO,CA0C5D;AAED;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CACnC,UAAU,EAAE,GAAG,EACf,cAAc,GAAE,MAAY,GAC3B,OAAO,CAAC,iBAAiB,CAAC,CAQ5B;AAED;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAC1C,iBAAiB,EAAE,GAAG,EACtB,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,iBAAiB,CAAC,CAwJ5B"}
|
|
@@ -230,7 +230,7 @@ async function adaptConnectMiddleware(connectMiddleware, middlewarePath) {
|
|
|
230
230
|
const mockRequest = createRequest({
|
|
231
231
|
method: request.method.toUpperCase(),
|
|
232
232
|
url: middlewarePathname + parsedURL.search,
|
|
233
|
-
headers: Object.fromEntries(request.headers.entries()),
|
|
233
|
+
headers: request.headers && typeof request.headers.entries === "function" ? Object.fromEntries(request.headers.entries()) : request.headers,
|
|
234
234
|
query,
|
|
235
235
|
...request.body && { body: request.body }
|
|
236
236
|
});
|
|
@@ -1137,10 +1137,34 @@ var McpServer = class {
|
|
|
1137
1137
|
);
|
|
1138
1138
|
return;
|
|
1139
1139
|
}
|
|
1140
|
-
|
|
1140
|
+
const entries = [];
|
|
1141
1141
|
try {
|
|
1142
|
-
const files = await fs.readdir(srcDir);
|
|
1143
|
-
|
|
1142
|
+
const files = await fs.readdir(srcDir, { withFileTypes: true });
|
|
1143
|
+
for (const dirent of files) {
|
|
1144
|
+
if (dirent.name.startsWith("._") || dirent.name.startsWith(".DS_Store")) {
|
|
1145
|
+
continue;
|
|
1146
|
+
}
|
|
1147
|
+
if (dirent.isFile() && (dirent.name.endsWith(".tsx") || dirent.name.endsWith(".ts"))) {
|
|
1148
|
+
entries.push({
|
|
1149
|
+
name: dirent.name.replace(/\.tsx?$/, ""),
|
|
1150
|
+
path: pathHelpers.join(srcDir, dirent.name)
|
|
1151
|
+
});
|
|
1152
|
+
} else if (dirent.isDirectory()) {
|
|
1153
|
+
const widgetPath = pathHelpers.join(
|
|
1154
|
+
srcDir,
|
|
1155
|
+
dirent.name,
|
|
1156
|
+
"widget.tsx"
|
|
1157
|
+
);
|
|
1158
|
+
try {
|
|
1159
|
+
await fs.access(widgetPath);
|
|
1160
|
+
entries.push({
|
|
1161
|
+
name: dirent.name,
|
|
1162
|
+
path: widgetPath
|
|
1163
|
+
});
|
|
1164
|
+
} catch {
|
|
1165
|
+
}
|
|
1166
|
+
}
|
|
1167
|
+
}
|
|
1144
1168
|
} catch (error) {
|
|
1145
1169
|
console.log(`[WIDGETS] No widgets found in ${resourcesDir}/ directory`);
|
|
1146
1170
|
return;
|
|
@@ -1176,12 +1200,10 @@ var McpServer = class {
|
|
|
1176
1200
|
return;
|
|
1177
1201
|
}
|
|
1178
1202
|
const widgets = entries.map((entry) => {
|
|
1179
|
-
const baseName = entry.split("/").pop()?.replace(/\.tsx?$/, "") || "widget";
|
|
1180
|
-
const widgetName = baseName;
|
|
1181
1203
|
return {
|
|
1182
|
-
name:
|
|
1183
|
-
description: `Widget: ${
|
|
1184
|
-
entry
|
|
1204
|
+
name: entry.name,
|
|
1205
|
+
description: `Widget: ${entry.name}`,
|
|
1206
|
+
entry: entry.path
|
|
1185
1207
|
};
|
|
1186
1208
|
});
|
|
1187
1209
|
for (const widget of widgets) {
|
|
@@ -1237,10 +1259,34 @@ if (container && Component) {
|
|
|
1237
1259
|
console.log(
|
|
1238
1260
|
`[WIDGETS] Serving ${entries.length} widget(s) with shared Vite dev server and HMR`
|
|
1239
1261
|
);
|
|
1262
|
+
const ssrCssPlugin = {
|
|
1263
|
+
name: "ssr-css-handler",
|
|
1264
|
+
enforce: "pre",
|
|
1265
|
+
resolveId(id, importer, options2) {
|
|
1266
|
+
if (options2 && options2.ssr === true && (id.endsWith(".css") || id.endsWith(".module.css"))) {
|
|
1267
|
+
return "\0ssr-css:" + id;
|
|
1268
|
+
}
|
|
1269
|
+
return null;
|
|
1270
|
+
},
|
|
1271
|
+
load(id, options2) {
|
|
1272
|
+
if (options2 && options2.ssr === true && id.startsWith("\0ssr-css:")) {
|
|
1273
|
+
return "export default {}";
|
|
1274
|
+
}
|
|
1275
|
+
return null;
|
|
1276
|
+
}
|
|
1277
|
+
};
|
|
1278
|
+
const watchResourcesPlugin = {
|
|
1279
|
+
name: "watch-resources",
|
|
1280
|
+
configureServer(server) {
|
|
1281
|
+
const resourcesPath = pathHelpers.join(getCwd(), resourcesDir);
|
|
1282
|
+
server.watcher.add(resourcesPath);
|
|
1283
|
+
console.log(`[WIDGETS] Watching resources directory: ${resourcesPath}`);
|
|
1284
|
+
}
|
|
1285
|
+
};
|
|
1240
1286
|
const viteServer = await createServer({
|
|
1241
1287
|
root: tempDir,
|
|
1242
1288
|
base: baseRoute + "/",
|
|
1243
|
-
plugins: [tailwindcss(), react()],
|
|
1289
|
+
plugins: [ssrCssPlugin, watchResourcesPlugin, tailwindcss(), react()],
|
|
1244
1290
|
resolve: {
|
|
1245
1291
|
alias: {
|
|
1246
1292
|
"@": pathHelpers.join(getCwd(), resourcesDir)
|
|
@@ -1248,7 +1294,35 @@ if (container && Component) {
|
|
|
1248
1294
|
},
|
|
1249
1295
|
server: {
|
|
1250
1296
|
middlewareMode: true,
|
|
1251
|
-
origin: serverOrigin
|
|
1297
|
+
origin: serverOrigin,
|
|
1298
|
+
watch: {
|
|
1299
|
+
// Watch the resources directory for HMR to work
|
|
1300
|
+
// This ensures changes to widget source files trigger hot reload
|
|
1301
|
+
ignored: ["**/node_modules/**", "**/.git/**"],
|
|
1302
|
+
// Include the resources directory in watch list
|
|
1303
|
+
// Vite will watch files imported from outside root
|
|
1304
|
+
usePolling: false
|
|
1305
|
+
}
|
|
1306
|
+
},
|
|
1307
|
+
// Explicitly tell Vite to watch files outside root
|
|
1308
|
+
// This is needed because widget entry files import from resources directory
|
|
1309
|
+
optimizeDeps: {
|
|
1310
|
+
// Don't optimize dependencies that might change
|
|
1311
|
+
exclude: []
|
|
1312
|
+
},
|
|
1313
|
+
ssr: {
|
|
1314
|
+
// Force Vite to transform these packages in SSR instead of using external requires
|
|
1315
|
+
noExternal: ["@openai/apps-sdk-ui", "react-router"]
|
|
1316
|
+
},
|
|
1317
|
+
define: {
|
|
1318
|
+
// Define process.env for SSR context
|
|
1319
|
+
"process.env.NODE_ENV": JSON.stringify(
|
|
1320
|
+
process.env.NODE_ENV || "development"
|
|
1321
|
+
),
|
|
1322
|
+
"import.meta.env.DEV": true,
|
|
1323
|
+
"import.meta.env.PROD": false,
|
|
1324
|
+
"import.meta.env.MODE": JSON.stringify("development"),
|
|
1325
|
+
"import.meta.env.SSR": true
|
|
1252
1326
|
}
|
|
1253
1327
|
});
|
|
1254
1328
|
this.app.use(`${baseRoute}/*`, async (c, next) => {
|
|
@@ -1283,6 +1357,32 @@ if (container && Component) {
|
|
|
1283
1357
|
`${baseRoute}/*`
|
|
1284
1358
|
);
|
|
1285
1359
|
this.app.use(`${baseRoute}/*`, viteMiddleware);
|
|
1360
|
+
this.app.get("/mcp-use/public/*", async (c) => {
|
|
1361
|
+
const filePath = c.req.path.replace("/mcp-use/public/", "");
|
|
1362
|
+
const fullPath = pathHelpers.join(getCwd(), "public", filePath);
|
|
1363
|
+
try {
|
|
1364
|
+
if (await fsHelpers.existsSync(fullPath)) {
|
|
1365
|
+
const content = await fsHelpers.readFile(fullPath);
|
|
1366
|
+
const ext = filePath.split(".").pop()?.toLowerCase();
|
|
1367
|
+
const contentType = ext === "js" ? "application/javascript" : ext === "css" ? "text/css" : ext === "png" ? "image/png" : ext === "jpg" || ext === "jpeg" ? "image/jpeg" : ext === "svg" ? "image/svg+xml" : ext === "gif" ? "image/gif" : ext === "webp" ? "image/webp" : ext === "ico" ? "image/x-icon" : ext === "woff" || ext === "woff2" ? "font/woff" + (ext === "woff2" ? "2" : "") : ext === "ttf" ? "font/ttf" : ext === "otf" ? "font/otf" : ext === "json" ? "application/json" : ext === "pdf" ? "application/pdf" : "application/octet-stream";
|
|
1368
|
+
return new Response(content, {
|
|
1369
|
+
status: 200,
|
|
1370
|
+
headers: { "Content-Type": contentType }
|
|
1371
|
+
});
|
|
1372
|
+
}
|
|
1373
|
+
return c.notFound();
|
|
1374
|
+
} catch {
|
|
1375
|
+
return c.notFound();
|
|
1376
|
+
}
|
|
1377
|
+
});
|
|
1378
|
+
this.app.use(`${baseRoute}/*`, async (c) => {
|
|
1379
|
+
const url = new URL(c.req.url);
|
|
1380
|
+
const isAsset = url.pathname.match(
|
|
1381
|
+
/\.(js|css|png|jpg|jpeg|svg|json|ico|woff2?|tsx?)$/i
|
|
1382
|
+
);
|
|
1383
|
+
const message = isAsset ? "Widget asset not found" : "Widget not found";
|
|
1384
|
+
return c.text(message, 404);
|
|
1385
|
+
});
|
|
1286
1386
|
widgets.forEach((widget) => {
|
|
1287
1387
|
console.log(
|
|
1288
1388
|
`[WIDGET] ${widget.name} mounted at ${baseRoute}/${widget.name}`
|
|
@@ -1356,7 +1456,7 @@ if (container && Component) {
|
|
|
1356
1456
|
html = html.replace(
|
|
1357
1457
|
/<head[^>]*>/i,
|
|
1358
1458
|
`<head>
|
|
1359
|
-
<script>window.__getFile = (filename) => { return "${baseUrl}/mcp-use/widgets/${widget.name}/"+filename }
|
|
1459
|
+
<script>window.__getFile = (filename) => { return "${baseUrl}/mcp-use/widgets/${widget.name}/"+filename }; window.__mcpPublicUrl = "${baseUrl}/mcp-use/public";</script>`
|
|
1360
1460
|
);
|
|
1361
1461
|
} catch (error) {
|
|
1362
1462
|
console.error(
|
|
@@ -1518,7 +1618,7 @@ if (container && Component) {
|
|
|
1518
1618
|
html = html.replace(
|
|
1519
1619
|
/<head[^>]*>/i,
|
|
1520
1620
|
`<head>
|
|
1521
|
-
<script>window.__getFile = (filename) => { return "${baseUrl}/mcp-use/widgets/${widgetName}/"+filename }
|
|
1621
|
+
<script>window.__getFile = (filename) => { return "${baseUrl}/mcp-use/widgets/${widgetName}/"+filename }; window.__mcpPublicUrl = "${baseUrl}/mcp-use/public";</script>`
|
|
1522
1622
|
);
|
|
1523
1623
|
}
|
|
1524
1624
|
} catch (error) {
|
|
@@ -1642,7 +1742,7 @@ if (container && Component) {
|
|
|
1642
1742
|
query: Object.fromEntries(new URL(req.url).searchParams),
|
|
1643
1743
|
params: {},
|
|
1644
1744
|
body: {},
|
|
1645
|
-
headers: Object.fromEntries(req.headers.entries()),
|
|
1745
|
+
headers: req.headers && typeof req.headers.entries === "function" ? Object.fromEntries(req.headers.entries()) : req.headers,
|
|
1646
1746
|
method: req.method
|
|
1647
1747
|
};
|
|
1648
1748
|
const expressRes = {
|
|
@@ -1763,7 +1863,6 @@ if (container && Component) {
|
|
|
1763
1863
|
return c.text("", 200);
|
|
1764
1864
|
});
|
|
1765
1865
|
this.app.get(endpoint, async (c) => {
|
|
1766
|
-
const { expressReq, expressRes, getResponse } = createExpressLikeObjects(c);
|
|
1767
1866
|
const transport = new StreamableHTTPServerTransport({
|
|
1768
1867
|
sessionIdGenerator: void 0,
|
|
1769
1868
|
enableJsonResponse: true
|
|
@@ -1771,13 +1870,107 @@ if (container && Component) {
|
|
|
1771
1870
|
c.req.raw.signal?.addEventListener("abort", () => {
|
|
1772
1871
|
transport.close();
|
|
1773
1872
|
});
|
|
1873
|
+
const { readable, writable } = new globalThis.TransformStream();
|
|
1874
|
+
const writer = writable.getWriter();
|
|
1875
|
+
const encoder = new TextEncoder();
|
|
1876
|
+
let resolveResponse;
|
|
1877
|
+
const responsePromise = new Promise((resolve) => {
|
|
1878
|
+
resolveResponse = resolve;
|
|
1879
|
+
});
|
|
1880
|
+
let headersSent = false;
|
|
1881
|
+
const headers = {};
|
|
1882
|
+
let statusCode = 200;
|
|
1883
|
+
const expressRes = {
|
|
1884
|
+
statusCode: 200,
|
|
1885
|
+
headersSent: false,
|
|
1886
|
+
status: /* @__PURE__ */ __name((code) => {
|
|
1887
|
+
statusCode = code;
|
|
1888
|
+
expressRes.statusCode = code;
|
|
1889
|
+
return expressRes;
|
|
1890
|
+
}, "status"),
|
|
1891
|
+
setHeader: /* @__PURE__ */ __name((name, value) => {
|
|
1892
|
+
if (!headersSent) {
|
|
1893
|
+
headers[name] = Array.isArray(value) ? value.join(", ") : value;
|
|
1894
|
+
}
|
|
1895
|
+
}, "setHeader"),
|
|
1896
|
+
getHeader: /* @__PURE__ */ __name((name) => headers[name], "getHeader"),
|
|
1897
|
+
write: /* @__PURE__ */ __name((chunk) => {
|
|
1898
|
+
if (!headersSent) {
|
|
1899
|
+
headersSent = true;
|
|
1900
|
+
resolveResponse(
|
|
1901
|
+
new Response(readable, {
|
|
1902
|
+
status: statusCode,
|
|
1903
|
+
headers
|
|
1904
|
+
})
|
|
1905
|
+
);
|
|
1906
|
+
}
|
|
1907
|
+
const data = typeof chunk === "string" ? encoder.encode(chunk) : chunk instanceof Uint8Array ? chunk : Buffer.from(chunk);
|
|
1908
|
+
writer.write(data);
|
|
1909
|
+
return true;
|
|
1910
|
+
}, "write"),
|
|
1911
|
+
end: /* @__PURE__ */ __name((chunk) => {
|
|
1912
|
+
if (chunk) {
|
|
1913
|
+
expressRes.write(chunk);
|
|
1914
|
+
}
|
|
1915
|
+
if (!headersSent) {
|
|
1916
|
+
headersSent = true;
|
|
1917
|
+
resolveResponse(
|
|
1918
|
+
new Response(null, {
|
|
1919
|
+
status: statusCode,
|
|
1920
|
+
headers
|
|
1921
|
+
})
|
|
1922
|
+
);
|
|
1923
|
+
writer.close();
|
|
1924
|
+
} else {
|
|
1925
|
+
writer.close();
|
|
1926
|
+
}
|
|
1927
|
+
}, "end"),
|
|
1928
|
+
on: /* @__PURE__ */ __name((event, handler) => {
|
|
1929
|
+
if (event === "close") {
|
|
1930
|
+
expressRes._closeHandler = handler;
|
|
1931
|
+
}
|
|
1932
|
+
}, "on"),
|
|
1933
|
+
once: /* @__PURE__ */ __name(() => {
|
|
1934
|
+
}, "once"),
|
|
1935
|
+
removeListener: /* @__PURE__ */ __name(() => {
|
|
1936
|
+
}, "removeListener"),
|
|
1937
|
+
writeHead: /* @__PURE__ */ __name((code, _headers) => {
|
|
1938
|
+
statusCode = code;
|
|
1939
|
+
expressRes.statusCode = code;
|
|
1940
|
+
if (_headers) {
|
|
1941
|
+
Object.assign(headers, _headers);
|
|
1942
|
+
}
|
|
1943
|
+
if (!headersSent) {
|
|
1944
|
+
headersSent = true;
|
|
1945
|
+
resolveResponse(
|
|
1946
|
+
new Response(readable, {
|
|
1947
|
+
status: statusCode,
|
|
1948
|
+
headers
|
|
1949
|
+
})
|
|
1950
|
+
);
|
|
1951
|
+
}
|
|
1952
|
+
return expressRes;
|
|
1953
|
+
}, "writeHead"),
|
|
1954
|
+
flushHeaders: /* @__PURE__ */ __name(() => {
|
|
1955
|
+
}, "flushHeaders")
|
|
1956
|
+
};
|
|
1957
|
+
const expressReq = {
|
|
1958
|
+
...c.req.raw,
|
|
1959
|
+
url: new URL(c.req.url).pathname + new URL(c.req.url).search,
|
|
1960
|
+
path: new URL(c.req.url).pathname,
|
|
1961
|
+
query: Object.fromEntries(new URL(c.req.url).searchParams),
|
|
1962
|
+
headers: c.req.header(),
|
|
1963
|
+
method: c.req.method
|
|
1964
|
+
};
|
|
1774
1965
|
await this.server.connect(transport);
|
|
1775
|
-
|
|
1776
|
-
|
|
1777
|
-
|
|
1778
|
-
|
|
1779
|
-
|
|
1780
|
-
|
|
1966
|
+
transport.handleRequest(expressReq, expressRes).catch((err) => {
|
|
1967
|
+
console.error("MCP Transport error:", err);
|
|
1968
|
+
try {
|
|
1969
|
+
writer.close();
|
|
1970
|
+
} catch {
|
|
1971
|
+
}
|
|
1972
|
+
});
|
|
1973
|
+
return responsePromise;
|
|
1781
1974
|
});
|
|
1782
1975
|
this.app.delete(endpoint, async (c) => {
|
|
1783
1976
|
const { expressReq, expressRes, getResponse } = createExpressLikeObjects(c);
|
|
@@ -2159,6 +2352,24 @@ if (container && Component) {
|
|
|
2159
2352
|
return c.notFound();
|
|
2160
2353
|
}
|
|
2161
2354
|
});
|
|
2355
|
+
this.app.get("/mcp-use/public/*", async (c) => {
|
|
2356
|
+
const filePath = c.req.path.replace("/mcp-use/public/", "");
|
|
2357
|
+
const fullPath = pathHelpers.join(getCwd(), "dist", "public", filePath);
|
|
2358
|
+
try {
|
|
2359
|
+
if (await fsHelpers.existsSync(fullPath)) {
|
|
2360
|
+
const content = await fsHelpers.readFile(fullPath);
|
|
2361
|
+
const ext = filePath.split(".").pop()?.toLowerCase();
|
|
2362
|
+
const contentType = ext === "js" ? "application/javascript" : ext === "css" ? "text/css" : ext === "png" ? "image/png" : ext === "jpg" || ext === "jpeg" ? "image/jpeg" : ext === "svg" ? "image/svg+xml" : ext === "gif" ? "image/gif" : ext === "webp" ? "image/webp" : ext === "ico" ? "image/x-icon" : ext === "woff" || ext === "woff2" ? "font/woff" + (ext === "woff2" ? "2" : "") : ext === "ttf" ? "font/ttf" : ext === "otf" ? "font/otf" : ext === "json" ? "application/json" : ext === "pdf" ? "application/pdf" : "application/octet-stream";
|
|
2363
|
+
return new Response(content, {
|
|
2364
|
+
status: 200,
|
|
2365
|
+
headers: { "Content-Type": contentType }
|
|
2366
|
+
});
|
|
2367
|
+
}
|
|
2368
|
+
return c.notFound();
|
|
2369
|
+
} catch {
|
|
2370
|
+
return c.notFound();
|
|
2371
|
+
}
|
|
2372
|
+
});
|
|
2162
2373
|
}
|
|
2163
2374
|
/**
|
|
2164
2375
|
* Create input schema for resource templates
|