mcp-use 1.11.0-canary.6 → 1.11.0-canary.8
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-IGOT6EXU.js → chunk-4LZSXUFM.js} +1 -1
- package/dist/{chunk-WCYUQJUP.js → chunk-5RTMAOZ6.js} +20 -1057
- package/dist/{chunk-RKRRGQMY.js → chunk-EBSNALCB.js} +2 -2
- package/dist/{chunk-IDLN6TBY.js → chunk-GVU7C2ZD.js} +1 -1
- package/dist/chunk-GXNAXUDI.js +0 -0
- package/dist/{chunk-Y3MECXDY.js → chunk-JPKFN73V.js} +1 -1
- package/dist/{chunk-OFD5S2YF.js → chunk-JZNXOM7C.js} +1 -1
- package/dist/chunk-MFSO5PUW.js +1049 -0
- package/dist/{chunk-A2F55OQO.js → chunk-TAEHPLGV.js} +2 -2
- package/dist/{chunk-KZBJSFU7.js → chunk-X7JKFBPN.js} +20 -6
- package/dist/{chunk-56NAKAFY.js → chunk-XKTBHYNM.js} +1 -1
- package/dist/index.cjs +19 -6
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -17
- package/dist/src/adapters/index.cjs +1346 -0
- package/dist/src/adapters/index.js +11 -0
- package/dist/src/agents/index.cjs +1 -1
- package/dist/src/agents/index.js +7 -6
- package/dist/src/browser.cjs +1 -2
- package/dist/src/browser.d.ts +1 -1
- package/dist/src/browser.d.ts.map +1 -1
- package/dist/src/browser.js +11 -10
- package/dist/src/client/prompts.js +4 -4
- package/dist/src/react/index.cjs +19 -5
- package/dist/src/react/index.js +5 -5
- package/dist/src/react/useWidget.d.ts +11 -7
- package/dist/src/react/useWidget.d.ts.map +1 -1
- package/dist/src/react/widget-types.d.ts +6 -2
- package/dist/src/react/widget-types.d.ts.map +1 -1
- package/dist/src/server/index.cjs +131 -24
- package/dist/src/server/index.js +135 -28
- package/dist/src/server/mcp-server.d.ts +1 -0
- package/dist/src/server/mcp-server.d.ts.map +1 -1
- package/dist/src/server/types/common.d.ts +23 -0
- package/dist/src/server/types/common.d.ts.map +1 -1
- package/dist/src/server/types/resource.d.ts +16 -0
- package/dist/src/server/types/resource.d.ts.map +1 -1
- package/dist/src/server/types/widget.d.ts +21 -2
- package/dist/src/server/types/widget.d.ts.map +1 -1
- package/dist/src/server/utils/response-helpers.d.ts +10 -6
- package/dist/src/server/utils/response-helpers.d.ts.map +1 -1
- package/dist/src/server/widgets/index.d.ts +1 -1
- package/dist/src/server/widgets/index.d.ts.map +1 -1
- package/dist/src/server/widgets/mount-widgets-dev.d.ts.map +1 -1
- package/dist/src/server/widgets/setup-widget-routes.d.ts.map +1 -1
- package/dist/src/server/widgets/ui-resource-registration.d.ts.map +1 -1
- package/dist/src/server/widgets/widget-helpers.d.ts +22 -0
- package/dist/src/server/widgets/widget-helpers.d.ts.map +1 -1
- package/dist/src/server/widgets/widget-types.d.ts +2 -0
- package/dist/src/server/widgets/widget-types.d.ts.map +1 -1
- package/dist/src/version.d.ts +1 -1
- package/dist/{tool-execution-helpers-543W3CSL.js → tool-execution-helpers-EYAIJERC.js} +2 -2
- package/dist/tsup.config.d.ts.map +1 -1
- package/package.json +17 -6
- /package/dist/{chunk-H4BZVTGK.js → chunk-LGDFGYRL.js} +0 -0
package/dist/src/agents/index.js
CHANGED
|
@@ -4,15 +4,16 @@ import {
|
|
|
4
4
|
import {
|
|
5
5
|
MCPAgent,
|
|
6
6
|
RemoteAgent
|
|
7
|
-
} from "../../chunk-
|
|
7
|
+
} from "../../chunk-5RTMAOZ6.js";
|
|
8
8
|
import "../../chunk-JRGQRPTN.js";
|
|
9
|
+
import "../../chunk-MFSO5PUW.js";
|
|
9
10
|
import {
|
|
10
11
|
PROMPTS
|
|
11
|
-
} from "../../chunk-
|
|
12
|
-
import "../../chunk-
|
|
13
|
-
import "../../chunk-
|
|
14
|
-
import "../../chunk-
|
|
15
|
-
import "../../chunk-
|
|
12
|
+
} from "../../chunk-GVU7C2ZD.js";
|
|
13
|
+
import "../../chunk-JZNXOM7C.js";
|
|
14
|
+
import "../../chunk-TAEHPLGV.js";
|
|
15
|
+
import "../../chunk-XKTBHYNM.js";
|
|
16
|
+
import "../../chunk-JPKFN73V.js";
|
|
16
17
|
import "../../chunk-FRUZDWXH.js";
|
|
17
18
|
import "../../chunk-3GQAWCBQ.js";
|
|
18
19
|
export {
|
package/dist/src/browser.cjs
CHANGED
|
@@ -1052,7 +1052,6 @@ __export(browser_exports, {
|
|
|
1052
1052
|
BrowserOAuthClientProvider: () => BrowserOAuthClientProvider,
|
|
1053
1053
|
BrowserTelemetry: () => Tel,
|
|
1054
1054
|
HttpConnector: () => HttpConnector,
|
|
1055
|
-
LangChainAdapter: () => LangChainAdapter,
|
|
1056
1055
|
Logger: () => Logger,
|
|
1057
1056
|
MCPAgent: () => MCPAgent,
|
|
1058
1057
|
MCPClient: () => BrowserMCPClient,
|
|
@@ -1610,7 +1609,7 @@ __name(generateUUID, "generateUUID");
|
|
|
1610
1609
|
init_logging();
|
|
1611
1610
|
|
|
1612
1611
|
// src/version.ts
|
|
1613
|
-
var VERSION = "1.11.0-canary.
|
|
1612
|
+
var VERSION = "1.11.0-canary.8";
|
|
1614
1613
|
function getPackageVersion() {
|
|
1615
1614
|
return VERSION;
|
|
1616
1615
|
}
|
package/dist/src/browser.d.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
export { BrowserMCPClient as MCPClient } from "./client/browser.js";
|
|
5
5
|
export { MCPAgent } from "./agents/mcp_agent.js";
|
|
6
6
|
export { RemoteAgent } from "./agents/remote.js";
|
|
7
|
-
export { BaseAdapter
|
|
7
|
+
export { BaseAdapter } from "./adapters/index.js";
|
|
8
8
|
export { BaseConnector } from "./connectors/base.js";
|
|
9
9
|
export type { NotificationHandler } from "./connectors/base.js";
|
|
10
10
|
export { HttpConnector } from "./connectors/http.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/browser.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,gBAAgB,IAAI,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD,OAAO,EAAE,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/browser.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,gBAAgB,IAAI,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGlD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,YAAY,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGrD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAGvD,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAGnD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAG9C,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1E,OAAO,EAAE,GAAG,IAAI,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,kBAAkB,IAAI,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAGvF,OAAO,EACL,KAAK,mBAAmB,EACxB,oBAAoB,GACrB,MAAM,0BAA0B,CAAC;AAGlC,cAAc,yBAAyB,CAAC;AASxC,YAAY,EACV,sBAAsB,EACtB,aAAa,EACb,WAAW,GACZ,MAAM,kDAAkD,CAAC;AAG1D,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC"}
|
package/dist/src/browser.js
CHANGED
|
@@ -2,10 +2,9 @@ import {
|
|
|
2
2
|
createReadableStreamFromGenerator,
|
|
3
3
|
streamEventsToAISDK,
|
|
4
4
|
streamEventsToAISDKWithTools
|
|
5
|
-
} from "../chunk-
|
|
5
|
+
} from "../chunk-LGDFGYRL.js";
|
|
6
|
+
import "../chunk-GXNAXUDI.js";
|
|
6
7
|
import {
|
|
7
|
-
BaseAdapter,
|
|
8
|
-
LangChainAdapter,
|
|
9
8
|
MCPAgent,
|
|
10
9
|
ObservabilityManager,
|
|
11
10
|
RemoteAgent,
|
|
@@ -13,30 +12,33 @@ import {
|
|
|
13
12
|
getSupportedProviders,
|
|
14
13
|
isValidLLMString,
|
|
15
14
|
parseLLMString
|
|
16
|
-
} from "../chunk-
|
|
15
|
+
} from "../chunk-5RTMAOZ6.js";
|
|
17
16
|
import "../chunk-JRGQRPTN.js";
|
|
18
|
-
import
|
|
17
|
+
import {
|
|
18
|
+
BaseAdapter
|
|
19
|
+
} from "../chunk-MFSO5PUW.js";
|
|
20
|
+
import "../chunk-JZNXOM7C.js";
|
|
19
21
|
import {
|
|
20
22
|
BrowserMCPClient
|
|
21
|
-
} from "../chunk-
|
|
23
|
+
} from "../chunk-EBSNALCB.js";
|
|
22
24
|
import {
|
|
23
25
|
HttpConnector,
|
|
24
26
|
MCPSession
|
|
25
|
-
} from "../chunk-
|
|
27
|
+
} from "../chunk-TAEHPLGV.js";
|
|
26
28
|
import {
|
|
27
29
|
BrowserOAuthClientProvider,
|
|
28
30
|
onMcpAuthorization
|
|
29
31
|
} from "../chunk-J75I2C26.js";
|
|
30
32
|
import {
|
|
31
33
|
BaseConnector
|
|
32
|
-
} from "../chunk-
|
|
34
|
+
} from "../chunk-XKTBHYNM.js";
|
|
33
35
|
import {
|
|
34
36
|
Tel,
|
|
35
37
|
Telemetry,
|
|
36
38
|
VERSION,
|
|
37
39
|
getPackageVersion,
|
|
38
40
|
setTelemetrySource
|
|
39
|
-
} from "../chunk-
|
|
41
|
+
} from "../chunk-JPKFN73V.js";
|
|
40
42
|
import {
|
|
41
43
|
Logger,
|
|
42
44
|
logger
|
|
@@ -48,7 +50,6 @@ export {
|
|
|
48
50
|
BrowserOAuthClientProvider,
|
|
49
51
|
Tel as BrowserTelemetry,
|
|
50
52
|
HttpConnector,
|
|
51
|
-
LangChainAdapter,
|
|
52
53
|
Logger,
|
|
53
54
|
MCPAgent,
|
|
54
55
|
BrowserMCPClient as MCPClient,
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
PROMPTS
|
|
3
|
-
} from "../../chunk-
|
|
4
|
-
import "../../chunk-
|
|
5
|
-
import "../../chunk-
|
|
6
|
-
import "../../chunk-
|
|
3
|
+
} from "../../chunk-GVU7C2ZD.js";
|
|
4
|
+
import "../../chunk-JZNXOM7C.js";
|
|
5
|
+
import "../../chunk-XKTBHYNM.js";
|
|
6
|
+
import "../../chunk-JPKFN73V.js";
|
|
7
7
|
import "../../chunk-FRUZDWXH.js";
|
|
8
8
|
import "../../chunk-3GQAWCBQ.js";
|
|
9
9
|
export {
|
package/dist/src/react/index.cjs
CHANGED
|
@@ -876,7 +876,7 @@ function generateUUID() {
|
|
|
876
876
|
__name(generateUUID, "generateUUID");
|
|
877
877
|
|
|
878
878
|
// src/version.ts
|
|
879
|
-
var VERSION = "1.11.0-canary.
|
|
879
|
+
var VERSION = "1.11.0-canary.8";
|
|
880
880
|
function getPackageVersion() {
|
|
881
881
|
return VERSION;
|
|
882
882
|
}
|
|
@@ -4029,6 +4029,15 @@ function useWidget(defaultProps) {
|
|
|
4029
4029
|
const toolInput = provider === "openai" ? useOpenAiGlobal("toolInput") : urlParams.toolInput;
|
|
4030
4030
|
const toolOutput = provider === "openai" ? useOpenAiGlobal("toolOutput") : urlParams.toolOutput;
|
|
4031
4031
|
const toolResponseMetadata = useOpenAiGlobal("toolResponseMetadata");
|
|
4032
|
+
const widgetProps = (0, import_react4.useMemo)(() => {
|
|
4033
|
+
if (toolResponseMetadata && typeof toolResponseMetadata === "object") {
|
|
4034
|
+
const metaProps = toolResponseMetadata["mcp-use/props"];
|
|
4035
|
+
if (metaProps) {
|
|
4036
|
+
return metaProps;
|
|
4037
|
+
}
|
|
4038
|
+
}
|
|
4039
|
+
return defaultProps || {};
|
|
4040
|
+
}, [toolResponseMetadata, defaultProps]);
|
|
4032
4041
|
const widgetState = useOpenAiGlobal("widgetState");
|
|
4033
4042
|
const theme = useOpenAiGlobal("theme");
|
|
4034
4043
|
const displayMode = useOpenAiGlobal("displayMode");
|
|
@@ -4093,9 +4102,13 @@ function useWidget(defaultProps) {
|
|
|
4093
4102
|
},
|
|
4094
4103
|
[widgetState, localWidgetState]
|
|
4095
4104
|
);
|
|
4105
|
+
const isPending = (0, import_react4.useMemo)(() => {
|
|
4106
|
+
return provider === "openai" && toolResponseMetadata === null;
|
|
4107
|
+
}, [provider, toolResponseMetadata]);
|
|
4096
4108
|
return {
|
|
4097
4109
|
// Props and state (with defaults)
|
|
4098
|
-
props:
|
|
4110
|
+
props: widgetProps,
|
|
4111
|
+
toolInput: toolInput || {},
|
|
4099
4112
|
output: toolOutput ?? null,
|
|
4100
4113
|
metadata: toolResponseMetadata ?? null,
|
|
4101
4114
|
state: localWidgetState,
|
|
@@ -4117,7 +4130,8 @@ function useWidget(defaultProps) {
|
|
|
4117
4130
|
openExternal,
|
|
4118
4131
|
requestDisplayMode,
|
|
4119
4132
|
// Availability
|
|
4120
|
-
isAvailable: isOpenAiAvailable
|
|
4133
|
+
isAvailable: isOpenAiAvailable,
|
|
4134
|
+
isPending
|
|
4121
4135
|
};
|
|
4122
4136
|
}
|
|
4123
4137
|
__name(useWidget, "useWidget");
|
|
@@ -4704,7 +4718,7 @@ function McpUseProvider({
|
|
|
4704
4718
|
let mounted = true;
|
|
4705
4719
|
(async () => {
|
|
4706
4720
|
try {
|
|
4707
|
-
const routerModule = await import("react-router
|
|
4721
|
+
const routerModule = await import("react-router");
|
|
4708
4722
|
if (mounted) {
|
|
4709
4723
|
setBrowserRouter(() => routerModule.BrowserRouter);
|
|
4710
4724
|
setIsRouterLoading(false);
|
|
@@ -4713,7 +4727,7 @@ function McpUseProvider({
|
|
|
4713
4727
|
if (mounted) {
|
|
4714
4728
|
setRouterError(
|
|
4715
4729
|
new Error(
|
|
4716
|
-
"\u274C react-router
|
|
4730
|
+
"\u274C react-router not installed!\n\nTo use MCP widgets with McpUseProvider, you need to install:\n\n npm install react-router\n # or\n pnpm add react-router\n\nThis dependency is automatically included in projects created with 'create-mcp-use-app'."
|
|
4717
4731
|
)
|
|
4718
4732
|
);
|
|
4719
4733
|
setIsRouterLoading(false);
|
package/dist/src/react/index.js
CHANGED
|
@@ -9,18 +9,18 @@ import {
|
|
|
9
9
|
useWidgetProps,
|
|
10
10
|
useWidgetState,
|
|
11
11
|
useWidgetTheme
|
|
12
|
-
} from "../../chunk-
|
|
13
|
-
import "../../chunk-
|
|
14
|
-
import "../../chunk-
|
|
12
|
+
} from "../../chunk-X7JKFBPN.js";
|
|
13
|
+
import "../../chunk-EBSNALCB.js";
|
|
14
|
+
import "../../chunk-TAEHPLGV.js";
|
|
15
15
|
import {
|
|
16
16
|
onMcpAuthorization
|
|
17
17
|
} from "../../chunk-J75I2C26.js";
|
|
18
|
-
import "../../chunk-
|
|
18
|
+
import "../../chunk-XKTBHYNM.js";
|
|
19
19
|
import {
|
|
20
20
|
Tel,
|
|
21
21
|
Telemetry,
|
|
22
22
|
setTelemetrySource
|
|
23
|
-
} from "../../chunk-
|
|
23
|
+
} from "../../chunk-JPKFN73V.js";
|
|
24
24
|
import "../../chunk-FRUZDWXH.js";
|
|
25
25
|
import "../../chunk-3GQAWCBQ.js";
|
|
26
26
|
export {
|
|
@@ -6,27 +6,31 @@ import type { Theme, UnknownObject, UseWidgetResult } from "./widget-types.js";
|
|
|
6
6
|
/**
|
|
7
7
|
* React hook for building OpenAI Apps SDK widgets with MCP-use
|
|
8
8
|
*
|
|
9
|
-
* Provides type-safe access to the window.openai API
|
|
10
|
-
*
|
|
9
|
+
* Provides type-safe access to the window.openai API. Widget props come from
|
|
10
|
+
* _meta["mcp-use/props"] (widget-only data), while toolInput contains the original tool arguments.
|
|
11
11
|
*
|
|
12
12
|
* @example
|
|
13
13
|
* ```tsx
|
|
14
14
|
* const MyWidget: React.FC = () => {
|
|
15
|
-
* const { props,
|
|
16
|
-
* city: string;
|
|
17
|
-
*
|
|
18
|
-
*
|
|
15
|
+
* const { props, toolInput, output, theme } = useWidget<
|
|
16
|
+
* { city: string; temperature: number }, // Props (widget-only)
|
|
17
|
+
* string, // Output (model sees)
|
|
18
|
+
* {}, // Metadata
|
|
19
|
+
* {}, // State
|
|
20
|
+
* { city: string } // ToolInput (tool args)
|
|
21
|
+
* >();
|
|
19
22
|
*
|
|
20
23
|
* return (
|
|
21
24
|
* <div data-theme={theme}>
|
|
22
25
|
* <h1>{props.city}</h1>
|
|
23
26
|
* <p>{props.temperature}°C</p>
|
|
27
|
+
* <p>Requested: {toolInput.city}</p>
|
|
24
28
|
* </div>
|
|
25
29
|
* );
|
|
26
30
|
* };
|
|
27
31
|
* ```
|
|
28
32
|
*/
|
|
29
|
-
export declare function useWidget<TProps extends UnknownObject = UnknownObject, TOutput extends UnknownObject = UnknownObject, TMetadata extends UnknownObject = UnknownObject, TState extends UnknownObject = UnknownObject>(defaultProps?: TProps): UseWidgetResult<TProps, TOutput, TMetadata, TState>;
|
|
33
|
+
export declare function useWidget<TProps extends UnknownObject = UnknownObject, TOutput extends UnknownObject = UnknownObject, TMetadata extends UnknownObject = UnknownObject, TState extends UnknownObject = UnknownObject, TToolInput extends UnknownObject = UnknownObject>(defaultProps?: TProps): UseWidgetResult<TProps, TOutput, TMetadata, TState, TToolInput>;
|
|
30
34
|
/**
|
|
31
35
|
* Hook to get just the widget props (most common use case)
|
|
32
36
|
* @example
|
|
@@ -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
|
|
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;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;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,UAAU,SAAS,aAAa,GAAG,aAAa,EAEhD,YAAY,CAAC,EAAE,MAAM,GACpB,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,CAqOjE;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"}
|
|
@@ -90,9 +90,11 @@ declare global {
|
|
|
90
90
|
/**
|
|
91
91
|
* Result type for the useWidget hook
|
|
92
92
|
*/
|
|
93
|
-
export interface UseWidgetResult<TProps extends UnknownObject = UnknownObject, TOutput extends UnknownObject = UnknownObject, TMetadata extends UnknownObject = UnknownObject, TState extends UnknownObject = UnknownObject> {
|
|
94
|
-
/** Widget props (
|
|
93
|
+
export interface UseWidgetResult<TProps extends UnknownObject = UnknownObject, TOutput extends UnknownObject = UnknownObject, TMetadata extends UnknownObject = UnknownObject, TState extends UnknownObject = UnknownObject, TToolInput extends UnknownObject = UnknownObject> {
|
|
94
|
+
/** Widget props from _meta["mcp-use/props"] (widget-only data, hidden from model) */
|
|
95
95
|
props: TProps;
|
|
96
|
+
/** Original tool input arguments */
|
|
97
|
+
toolInput: TToolInput;
|
|
96
98
|
/** Tool output from the last execution */
|
|
97
99
|
output: TOutput | null;
|
|
98
100
|
/** Response metadata from the tool */
|
|
@@ -127,5 +129,7 @@ export interface UseWidgetResult<TProps extends UnknownObject = UnknownObject, T
|
|
|
127
129
|
}>;
|
|
128
130
|
/** Whether the widget API is available */
|
|
129
131
|
isAvailable: boolean;
|
|
132
|
+
/** Whether the tool is currently executing (metadata is null) */
|
|
133
|
+
isPending: boolean;
|
|
130
134
|
}
|
|
131
135
|
//# sourceMappingURL=widget-types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"widget-types.d.ts","sourceRoot":"","sources":["../../../src/react/widget-types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"widget-types.d.ts","sourceRoot":"","sources":["../../../src/react/widget-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -761,7 +761,7 @@ var VERSION;
|
|
|
761
761
|
var init_version = __esm({
|
|
762
762
|
"src/version.ts"() {
|
|
763
763
|
"use strict";
|
|
764
|
-
VERSION = "1.11.0-canary.
|
|
764
|
+
VERSION = "1.11.0-canary.8";
|
|
765
765
|
__name(getPackageVersion, "getPackageVersion");
|
|
766
766
|
}
|
|
767
767
|
});
|
|
@@ -2427,16 +2427,17 @@ function binary(base64Data, mimeType) {
|
|
|
2427
2427
|
}
|
|
2428
2428
|
__name(binary, "binary");
|
|
2429
2429
|
function widget(config) {
|
|
2430
|
-
const {
|
|
2430
|
+
const { props, output, message } = config;
|
|
2431
|
+
const finalContent = message ? [{ type: "text", text: message }] : output.content || [{ type: "text", text: "" }];
|
|
2431
2432
|
return {
|
|
2432
|
-
content:
|
|
2433
|
-
|
|
2434
|
-
|
|
2435
|
-
|
|
2436
|
-
|
|
2437
|
-
|
|
2438
|
-
|
|
2439
|
-
|
|
2433
|
+
content: finalContent,
|
|
2434
|
+
...output.structuredContent && {
|
|
2435
|
+
structuredContent: output.structuredContent
|
|
2436
|
+
},
|
|
2437
|
+
_meta: {
|
|
2438
|
+
...output._meta || {},
|
|
2439
|
+
"mcp-use/props": props
|
|
2440
|
+
}
|
|
2440
2441
|
};
|
|
2441
2442
|
}
|
|
2442
2443
|
__name(widget, "widget");
|
|
@@ -3107,7 +3108,7 @@ function processWidgetHtml(html2, widgetName, baseUrl) {
|
|
|
3107
3108
|
}
|
|
3108
3109
|
__name(processWidgetHtml, "processWidgetHtml");
|
|
3109
3110
|
function createWidgetRegistration(widgetName, metadata, html2, serverConfig, isDev = false) {
|
|
3110
|
-
const props = metadata.inputs || {};
|
|
3111
|
+
const props = metadata.props || metadata.inputs || metadata.schema || {};
|
|
3111
3112
|
const description = metadata.description || `Widget: ${widgetName}`;
|
|
3112
3113
|
const title = metadata.title || widgetName;
|
|
3113
3114
|
const exposeAsTool = metadata.exposeAsTool !== void 0 ? metadata.exposeAsTool : true;
|
|
@@ -3249,6 +3250,33 @@ function setupPublicRoutes(app, useDistDirectory = false) {
|
|
|
3249
3250
|
});
|
|
3250
3251
|
}
|
|
3251
3252
|
__name(setupPublicRoutes, "setupPublicRoutes");
|
|
3253
|
+
function setupFaviconRoute(app, faviconPath, useDistDirectory = false) {
|
|
3254
|
+
if (!faviconPath) {
|
|
3255
|
+
return;
|
|
3256
|
+
}
|
|
3257
|
+
app.get("/favicon.ico", async (c) => {
|
|
3258
|
+
const basePath = useDistDirectory ? "dist/public" : "public";
|
|
3259
|
+
const fullPath = pathHelpers.join(getCwd(), basePath, faviconPath);
|
|
3260
|
+
try {
|
|
3261
|
+
if (await fsHelpers.existsSync(fullPath)) {
|
|
3262
|
+
const content = await fsHelpers.readFile(fullPath);
|
|
3263
|
+
const contentType = getContentType(faviconPath);
|
|
3264
|
+
return new Response(content, {
|
|
3265
|
+
status: 200,
|
|
3266
|
+
headers: {
|
|
3267
|
+
"Content-Type": contentType,
|
|
3268
|
+
"Cache-Control": "public, max-age=31536000"
|
|
3269
|
+
// Cache for 1 year
|
|
3270
|
+
}
|
|
3271
|
+
});
|
|
3272
|
+
}
|
|
3273
|
+
return c.notFound();
|
|
3274
|
+
} catch {
|
|
3275
|
+
return c.notFound();
|
|
3276
|
+
}
|
|
3277
|
+
});
|
|
3278
|
+
}
|
|
3279
|
+
__name(setupFaviconRoute, "setupFaviconRoute");
|
|
3252
3280
|
|
|
3253
3281
|
// src/server/widgets/mount-widgets-dev.ts
|
|
3254
3282
|
var TMP_MCP_USE_DIR = ".mcp-use";
|
|
@@ -3298,6 +3326,19 @@ async function mountWidgetsDev(app, serverConfig, registerWidget, options) {
|
|
|
3298
3326
|
return;
|
|
3299
3327
|
}
|
|
3300
3328
|
const tempDir = pathHelpers.join(getCwd(), TMP_MCP_USE_DIR);
|
|
3329
|
+
try {
|
|
3330
|
+
await fs.access(tempDir);
|
|
3331
|
+
const currentWidgetNames = new Set(entries.map((e) => e.name));
|
|
3332
|
+
const existingDirs = await fs.readdir(tempDir, { withFileTypes: true });
|
|
3333
|
+
for (const dirent of existingDirs) {
|
|
3334
|
+
if (dirent.isDirectory() && !currentWidgetNames.has(dirent.name)) {
|
|
3335
|
+
const staleDir = pathHelpers.join(tempDir, dirent.name);
|
|
3336
|
+
await fs.rm(staleDir, { recursive: true, force: true });
|
|
3337
|
+
console.log(`[WIDGETS] Cleaned up stale widget: ${dirent.name}`);
|
|
3338
|
+
}
|
|
3339
|
+
}
|
|
3340
|
+
} catch {
|
|
3341
|
+
}
|
|
3301
3342
|
await fs.mkdir(tempDir, { recursive: true }).catch(() => {
|
|
3302
3343
|
});
|
|
3303
3344
|
let createServer;
|
|
@@ -3364,7 +3405,8 @@ if (container && Component) {
|
|
|
3364
3405
|
<head>
|
|
3365
3406
|
<meta charset="UTF-8" />
|
|
3366
3407
|
<meta name="viewport" content="width=device-width,initial-scale=1" />
|
|
3367
|
-
<title>${widget2.name} Widget</title
|
|
3408
|
+
<title>${widget2.name} Widget</title>${serverConfig.favicon ? `
|
|
3409
|
+
<link rel="icon" href="/mcp-use/public/${serverConfig.favicon}" />` : ""}
|
|
3368
3410
|
</head>
|
|
3369
3411
|
<body>
|
|
3370
3412
|
<div id="widget-root"></div>
|
|
@@ -3408,6 +3450,50 @@ if (container && Component) {
|
|
|
3408
3450
|
const resourcesPath = pathHelpers.join(getCwd(), resourcesDir);
|
|
3409
3451
|
server.watcher.add(resourcesPath);
|
|
3410
3452
|
console.log(`[WIDGETS] Watching resources directory: ${resourcesPath}`);
|
|
3453
|
+
server.watcher.on("unlink", async (filePath) => {
|
|
3454
|
+
const relativePath = pathHelpers.relative(resourcesPath, filePath);
|
|
3455
|
+
if ((relativePath.endsWith(".tsx") || relativePath.endsWith(".ts")) && !relativePath.includes("/")) {
|
|
3456
|
+
const widgetName = relativePath.replace(/\.tsx?$/, "");
|
|
3457
|
+
const widgetDir = pathHelpers.join(tempDir, widgetName);
|
|
3458
|
+
try {
|
|
3459
|
+
await fs.access(widgetDir);
|
|
3460
|
+
await fs.rm(widgetDir, { recursive: true, force: true });
|
|
3461
|
+
console.log(
|
|
3462
|
+
`[WIDGETS] Cleaned up stale widget (file removed): ${widgetName}`
|
|
3463
|
+
);
|
|
3464
|
+
} catch {
|
|
3465
|
+
}
|
|
3466
|
+
} else if (relativePath.endsWith("widget.tsx")) {
|
|
3467
|
+
const parts = relativePath.split("/");
|
|
3468
|
+
if (parts.length === 2) {
|
|
3469
|
+
const widgetName = parts[0];
|
|
3470
|
+
const widgetDir = pathHelpers.join(tempDir, widgetName);
|
|
3471
|
+
try {
|
|
3472
|
+
await fs.access(widgetDir);
|
|
3473
|
+
await fs.rm(widgetDir, { recursive: true, force: true });
|
|
3474
|
+
console.log(
|
|
3475
|
+
`[WIDGETS] Cleaned up stale widget (file removed): ${widgetName}`
|
|
3476
|
+
);
|
|
3477
|
+
} catch {
|
|
3478
|
+
}
|
|
3479
|
+
}
|
|
3480
|
+
}
|
|
3481
|
+
});
|
|
3482
|
+
server.watcher.on("unlinkDir", async (dirPath) => {
|
|
3483
|
+
const relativePath = pathHelpers.relative(resourcesPath, dirPath);
|
|
3484
|
+
if (relativePath && !relativePath.includes("/")) {
|
|
3485
|
+
const widgetName = relativePath;
|
|
3486
|
+
const widgetDir = pathHelpers.join(tempDir, widgetName);
|
|
3487
|
+
try {
|
|
3488
|
+
await fs.access(widgetDir);
|
|
3489
|
+
await fs.rm(widgetDir, { recursive: true, force: true });
|
|
3490
|
+
console.log(
|
|
3491
|
+
`[WIDGETS] Cleaned up stale widget (directory removed): ${widgetName}`
|
|
3492
|
+
);
|
|
3493
|
+
} catch {
|
|
3494
|
+
}
|
|
3495
|
+
}
|
|
3496
|
+
});
|
|
3411
3497
|
}
|
|
3412
3498
|
};
|
|
3413
3499
|
const nodeStubsPlugin = {
|
|
@@ -3520,6 +3606,7 @@ export default PostHog;
|
|
|
3520
3606
|
);
|
|
3521
3607
|
app.use(`${baseRoute}/*`, viteMiddleware);
|
|
3522
3608
|
setupPublicRoutes(app, false);
|
|
3609
|
+
setupFaviconRoute(app, serverConfig.favicon, false);
|
|
3523
3610
|
app.use(`${baseRoute}/*`, async (c) => {
|
|
3524
3611
|
const url = new URL(c.req.url);
|
|
3525
3612
|
const isAsset = url.pathname.match(
|
|
@@ -3729,6 +3816,7 @@ function setupWidgetRoutes(app, serverConfig) {
|
|
|
3729
3816
|
}
|
|
3730
3817
|
});
|
|
3731
3818
|
setupPublicRoutes(app, true);
|
|
3819
|
+
setupFaviconRoute(app, serverConfig.favicon, true);
|
|
3732
3820
|
}
|
|
3733
3821
|
__name(setupWidgetRoutes, "setupWidgetRoutes");
|
|
3734
3822
|
|
|
@@ -3863,18 +3951,30 @@ function uiResourceRegistration(server, definition) {
|
|
|
3863
3951
|
);
|
|
3864
3952
|
const uniqueToolMetadata = {
|
|
3865
3953
|
...toolMetadata,
|
|
3866
|
-
"openai/outputTemplate": uniqueUri
|
|
3954
|
+
"openai/outputTemplate": uniqueUri,
|
|
3955
|
+
"mcp-use/props": params
|
|
3956
|
+
// Pass params as widget props
|
|
3867
3957
|
};
|
|
3958
|
+
let toolOutputResult;
|
|
3959
|
+
if (definition.toolOutput) {
|
|
3960
|
+
toolOutputResult = typeof definition.toolOutput === "function" ? definition.toolOutput(params) : definition.toolOutput;
|
|
3961
|
+
} else {
|
|
3962
|
+
toolOutputResult = {
|
|
3963
|
+
content: [
|
|
3964
|
+
{
|
|
3965
|
+
type: "text",
|
|
3966
|
+
text: `Displaying ${displayName}`
|
|
3967
|
+
}
|
|
3968
|
+
]
|
|
3969
|
+
};
|
|
3970
|
+
}
|
|
3971
|
+
const content = toolOutputResult.content || [
|
|
3972
|
+
{ type: "text", text: `Displaying ${displayName}` }
|
|
3973
|
+
];
|
|
3868
3974
|
return {
|
|
3869
3975
|
_meta: uniqueToolMetadata,
|
|
3870
|
-
content
|
|
3871
|
-
|
|
3872
|
-
type: "text",
|
|
3873
|
-
text: `Displaying ${displayName}`
|
|
3874
|
-
}
|
|
3875
|
-
],
|
|
3876
|
-
// structuredContent will be injected as window.openai.toolOutput by Apps SDK
|
|
3877
|
-
structuredContent: params
|
|
3976
|
+
content,
|
|
3977
|
+
structuredContent: toolOutputResult.structuredContent
|
|
3878
3978
|
};
|
|
3879
3979
|
}
|
|
3880
3980
|
return {
|
|
@@ -3900,7 +4000,8 @@ async function mountWidgets(server, options) {
|
|
|
3900
4000
|
serverBaseUrl: server.serverBaseUrl || `http://${server.serverHost}:${server.serverPort || 3e3}`,
|
|
3901
4001
|
serverPort: server.serverPort || 3e3,
|
|
3902
4002
|
cspUrls: getCSPUrls(),
|
|
3903
|
-
buildId: server.buildId
|
|
4003
|
+
buildId: server.buildId,
|
|
4004
|
+
favicon: server.favicon
|
|
3904
4005
|
};
|
|
3905
4006
|
const registerWidget = /* @__PURE__ */ __name((widgetDef) => {
|
|
3906
4007
|
server.uiResource(widgetDef);
|
|
@@ -5082,6 +5183,7 @@ var MCPServerClass = class {
|
|
|
5082
5183
|
serverPort;
|
|
5083
5184
|
serverHost;
|
|
5084
5185
|
serverBaseUrl;
|
|
5186
|
+
favicon;
|
|
5085
5187
|
registeredTools = [];
|
|
5086
5188
|
registeredPrompts = [];
|
|
5087
5189
|
registeredResources = [];
|
|
@@ -5147,6 +5249,7 @@ var MCPServerClass = class {
|
|
|
5147
5249
|
}
|
|
5148
5250
|
this.serverHost = config.host || "localhost";
|
|
5149
5251
|
this.serverBaseUrl = config.baseUrl;
|
|
5252
|
+
this.favicon = config.favicon;
|
|
5150
5253
|
this.nativeServer = new import_mcp2.McpServer(
|
|
5151
5254
|
{
|
|
5152
5255
|
name: config.name,
|
|
@@ -5211,7 +5314,10 @@ var MCPServerClass = class {
|
|
|
5211
5314
|
"openai/widgetAccessible": widgetConfig.widgetAccessible ?? true,
|
|
5212
5315
|
"openai/resultCanProduceWidget": widgetConfig.resultCanProduceWidget ?? true
|
|
5213
5316
|
};
|
|
5214
|
-
result._meta =
|
|
5317
|
+
result._meta = {
|
|
5318
|
+
...result._meta || {},
|
|
5319
|
+
...responseMeta
|
|
5320
|
+
};
|
|
5215
5321
|
if (result.content?.[0]?.type === "text" && !result.content[0].text) {
|
|
5216
5322
|
result.content[0].text = `Displaying ${widgetName}`;
|
|
5217
5323
|
}
|
|
@@ -5866,7 +5972,8 @@ function createMCPServer(name, config = {}) {
|
|
|
5866
5972
|
allowedOrigins: config.allowedOrigins,
|
|
5867
5973
|
sessionIdleTimeoutMs: config.sessionIdleTimeoutMs,
|
|
5868
5974
|
autoCreateSessionOnInvalidId: config.autoCreateSessionOnInvalidId,
|
|
5869
|
-
oauth: config.oauth
|
|
5975
|
+
oauth: config.oauth,
|
|
5976
|
+
favicon: config.favicon
|
|
5870
5977
|
});
|
|
5871
5978
|
return instance;
|
|
5872
5979
|
}
|