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.
Files changed (57) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/{chunk-IGOT6EXU.js → chunk-4LZSXUFM.js} +1 -1
  3. package/dist/{chunk-WCYUQJUP.js → chunk-5RTMAOZ6.js} +20 -1057
  4. package/dist/{chunk-RKRRGQMY.js → chunk-EBSNALCB.js} +2 -2
  5. package/dist/{chunk-IDLN6TBY.js → chunk-GVU7C2ZD.js} +1 -1
  6. package/dist/chunk-GXNAXUDI.js +0 -0
  7. package/dist/{chunk-Y3MECXDY.js → chunk-JPKFN73V.js} +1 -1
  8. package/dist/{chunk-OFD5S2YF.js → chunk-JZNXOM7C.js} +1 -1
  9. package/dist/chunk-MFSO5PUW.js +1049 -0
  10. package/dist/{chunk-A2F55OQO.js → chunk-TAEHPLGV.js} +2 -2
  11. package/dist/{chunk-KZBJSFU7.js → chunk-X7JKFBPN.js} +20 -6
  12. package/dist/{chunk-56NAKAFY.js → chunk-XKTBHYNM.js} +1 -1
  13. package/dist/index.cjs +19 -6
  14. package/dist/index.d.ts +1 -1
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +18 -17
  17. package/dist/src/adapters/index.cjs +1346 -0
  18. package/dist/src/adapters/index.js +11 -0
  19. package/dist/src/agents/index.cjs +1 -1
  20. package/dist/src/agents/index.js +7 -6
  21. package/dist/src/browser.cjs +1 -2
  22. package/dist/src/browser.d.ts +1 -1
  23. package/dist/src/browser.d.ts.map +1 -1
  24. package/dist/src/browser.js +11 -10
  25. package/dist/src/client/prompts.js +4 -4
  26. package/dist/src/react/index.cjs +19 -5
  27. package/dist/src/react/index.js +5 -5
  28. package/dist/src/react/useWidget.d.ts +11 -7
  29. package/dist/src/react/useWidget.d.ts.map +1 -1
  30. package/dist/src/react/widget-types.d.ts +6 -2
  31. package/dist/src/react/widget-types.d.ts.map +1 -1
  32. package/dist/src/server/index.cjs +131 -24
  33. package/dist/src/server/index.js +135 -28
  34. package/dist/src/server/mcp-server.d.ts +1 -0
  35. package/dist/src/server/mcp-server.d.ts.map +1 -1
  36. package/dist/src/server/types/common.d.ts +23 -0
  37. package/dist/src/server/types/common.d.ts.map +1 -1
  38. package/dist/src/server/types/resource.d.ts +16 -0
  39. package/dist/src/server/types/resource.d.ts.map +1 -1
  40. package/dist/src/server/types/widget.d.ts +21 -2
  41. package/dist/src/server/types/widget.d.ts.map +1 -1
  42. package/dist/src/server/utils/response-helpers.d.ts +10 -6
  43. package/dist/src/server/utils/response-helpers.d.ts.map +1 -1
  44. package/dist/src/server/widgets/index.d.ts +1 -1
  45. package/dist/src/server/widgets/index.d.ts.map +1 -1
  46. package/dist/src/server/widgets/mount-widgets-dev.d.ts.map +1 -1
  47. package/dist/src/server/widgets/setup-widget-routes.d.ts.map +1 -1
  48. package/dist/src/server/widgets/ui-resource-registration.d.ts.map +1 -1
  49. package/dist/src/server/widgets/widget-helpers.d.ts +22 -0
  50. package/dist/src/server/widgets/widget-helpers.d.ts.map +1 -1
  51. package/dist/src/server/widgets/widget-types.d.ts +2 -0
  52. package/dist/src/server/widgets/widget-types.d.ts.map +1 -1
  53. package/dist/src/version.d.ts +1 -1
  54. package/dist/{tool-execution-helpers-543W3CSL.js → tool-execution-helpers-EYAIJERC.js} +2 -2
  55. package/dist/tsup.config.d.ts.map +1 -1
  56. package/package.json +17 -6
  57. /package/dist/{chunk-H4BZVTGK.js → chunk-LGDFGYRL.js} +0 -0
@@ -0,0 +1,11 @@
1
+ import "../../chunk-GXNAXUDI.js";
2
+ import {
3
+ BaseAdapter,
4
+ LangChainAdapter
5
+ } from "../../chunk-MFSO5PUW.js";
6
+ import "../../chunk-FRUZDWXH.js";
7
+ import "../../chunk-3GQAWCBQ.js";
8
+ export {
9
+ BaseAdapter,
10
+ LangChainAdapter
11
+ };
@@ -1417,7 +1417,7 @@ __name(generateUUID, "generateUUID");
1417
1417
  init_logging();
1418
1418
 
1419
1419
  // src/version.ts
1420
- var VERSION = "1.11.0-canary.6";
1420
+ var VERSION = "1.11.0-canary.8";
1421
1421
  function getPackageVersion() {
1422
1422
  return VERSION;
1423
1423
  }
@@ -4,15 +4,16 @@ import {
4
4
  import {
5
5
  MCPAgent,
6
6
  RemoteAgent
7
- } from "../../chunk-WCYUQJUP.js";
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-IDLN6TBY.js";
12
- import "../../chunk-OFD5S2YF.js";
13
- import "../../chunk-A2F55OQO.js";
14
- import "../../chunk-56NAKAFY.js";
15
- import "../../chunk-Y3MECXDY.js";
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 {
@@ -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.6";
1612
+ var VERSION = "1.11.0-canary.8";
1614
1613
  function getPackageVersion() {
1615
1614
  return VERSION;
1616
1615
  }
@@ -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, LangChainAdapter } from "./adapters/index.js";
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,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGpE,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"}
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"}
@@ -2,10 +2,9 @@ import {
2
2
  createReadableStreamFromGenerator,
3
3
  streamEventsToAISDK,
4
4
  streamEventsToAISDKWithTools
5
- } from "../chunk-H4BZVTGK.js";
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-WCYUQJUP.js";
15
+ } from "../chunk-5RTMAOZ6.js";
17
16
  import "../chunk-JRGQRPTN.js";
18
- import "../chunk-OFD5S2YF.js";
17
+ import {
18
+ BaseAdapter
19
+ } from "../chunk-MFSO5PUW.js";
20
+ import "../chunk-JZNXOM7C.js";
19
21
  import {
20
22
  BrowserMCPClient
21
- } from "../chunk-RKRRGQMY.js";
23
+ } from "../chunk-EBSNALCB.js";
22
24
  import {
23
25
  HttpConnector,
24
26
  MCPSession
25
- } from "../chunk-A2F55OQO.js";
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-56NAKAFY.js";
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-Y3MECXDY.js";
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-IDLN6TBY.js";
4
- import "../../chunk-OFD5S2YF.js";
5
- import "../../chunk-56NAKAFY.js";
6
- import "../../chunk-Y3MECXDY.js";
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 {
@@ -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.6";
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: toolInput || defaultProps || {},
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-dom");
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-dom not installed!\n\nTo use MCP widgets with McpUseProvider, you need to install:\n\n npm install react-router-dom\n # or\n pnpm add react-router-dom\n\nThis dependency is automatically included in projects created with 'create-mcp-use-app'."
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);
@@ -9,18 +9,18 @@ import {
9
9
  useWidgetProps,
10
10
  useWidgetState,
11
11
  useWidgetTheme
12
- } from "../../chunk-KZBJSFU7.js";
13
- import "../../chunk-RKRRGQMY.js";
14
- import "../../chunk-A2F55OQO.js";
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-56NAKAFY.js";
18
+ import "../../chunk-XKTBHYNM.js";
19
19
  import {
20
20
  Tel,
21
21
  Telemetry,
22
22
  setTelemetrySource
23
- } from "../../chunk-Y3MECXDY.js";
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 and automatically
10
- * maps MCP UI props to the Apps SDK toolInput format.
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, theme, callTool, sendFollowUpMessage } = useWidget<{
16
- * city: string;
17
- * temperature: number;
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;;;;;;;;;;;;;;;;;;;;;;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"}
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 (mapped from toolInput for MCP compatibility) */
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.6";
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 { data, message } = config;
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
- type: "text",
2435
- text: message || ""
2436
- }
2437
- ],
2438
- // structuredContent will be injected as window.openai.toolOutput by Apps SDK
2439
- structuredContent: data
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 = responseMeta;
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
  }