@miragon/mcp-toolkit-ui 0.10.1 → 1.0.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.
Files changed (49) hide show
  1. package/README.md +7 -7
  2. package/dist/app/adapt-data-widget.d.ts +26 -5
  3. package/dist/app/adapt-data-widget.d.ts.map +1 -1
  4. package/dist/app/adapt-data-widget.js +39 -5
  5. package/dist/app/adapt-data-widget.js.map +1 -1
  6. package/dist/app/host-bridge.d.ts +48 -42
  7. package/dist/app/host-bridge.d.ts.map +1 -1
  8. package/dist/app/host-bridge.js +28 -50
  9. package/dist/app/host-bridge.js.map +1 -1
  10. package/dist/app/index.d.ts +5 -4
  11. package/dist/app/index.d.ts.map +1 -1
  12. package/dist/app/index.js +9 -8
  13. package/dist/app/index.js.map +1 -1
  14. package/dist/app/mcp-app-view.d.ts.map +1 -1
  15. package/dist/app/mcp-app-view.js +37 -24
  16. package/dist/app/mcp-app-view.js.map +1 -1
  17. package/dist/app/mcp-toolkit-app.d.ts +21 -10
  18. package/dist/app/mcp-toolkit-app.d.ts.map +1 -1
  19. package/dist/app/mcp-toolkit-app.js +26 -12
  20. package/dist/app/mcp-toolkit-app.js.map +1 -1
  21. package/dist/app/mcp-use-host-bridge.d.ts +29 -0
  22. package/dist/app/mcp-use-host-bridge.d.ts.map +1 -0
  23. package/dist/app/mcp-use-host-bridge.js +120 -0
  24. package/dist/app/mcp-use-host-bridge.js.map +1 -0
  25. package/dist/app/use-host-actions.d.ts +6 -6
  26. package/dist/app/use-host-actions.js +6 -6
  27. package/dist/app/widget-fixture.d.ts +24 -21
  28. package/dist/app/widget-fixture.d.ts.map +1 -1
  29. package/dist/app/widget-fixture.js +27 -123
  30. package/dist/app/widget-fixture.js.map +1 -1
  31. package/dist/hooks/use-tool-result-recovery.d.ts +40 -15
  32. package/dist/hooks/use-tool-result-recovery.d.ts.map +1 -1
  33. package/dist/hooks/use-tool-result-recovery.js +57 -4
  34. package/dist/hooks/use-tool-result-recovery.js.map +1 -1
  35. package/dist/index.js +1 -1
  36. package/dist/index.js.map +1 -1
  37. package/package.json +16 -8
  38. package/src/app/adapt-data-widget.tsx +50 -6
  39. package/src/app/host-bridge.test.ts +107 -0
  40. package/src/app/host-bridge.tsx +81 -78
  41. package/src/app/index.ts +15 -10
  42. package/src/app/mcp-app-view.tsx +41 -32
  43. package/src/app/mcp-toolkit-app.tsx +33 -16
  44. package/src/app/mcp-use-host-bridge.tsx +164 -0
  45. package/src/app/use-host-actions.tsx +6 -6
  46. package/src/app/widget-fixture.tsx +35 -156
  47. package/src/hooks/use-tool-result-recovery.ts +75 -19
  48. package/src/index.ts +1 -1
  49. package/ui-catalog.json +80 -26
package/README.md CHANGED
@@ -9,19 +9,19 @@ Published to the public npm registry under the `@miragon` scope — no `.npmrc`
9
9
  or token needed.
10
10
 
11
11
  ```sh
12
- pnpm add @miragon/mcp-toolkit-ui @miragon/mcp-toolkit-core mcp-use@1.34.1 react@19.2.7 react-dom@19.2.7 tailwindcss@4.3.1
12
+ pnpm add @miragon/mcp-toolkit-ui @miragon/mcp-toolkit-core mcp-use@2.0.4 react@19.2.8 react-dom@19.2.8 tailwindcss@4.3.3
13
13
  ```
14
14
 
15
15
  Peer versions are pinned exactly — install the versions above.
16
16
 
17
17
  ## Import paths
18
18
 
19
- | Subpath | Key exports | Constraint |
20
- | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- |
21
- | `@miragon/mcp-toolkit-ui` | Primitives (`Card`, `Table`, `Button`, …), composed components (`KpiGrid`, `WidgetHeader`, `FilterBar`), `useToolQuery`, `createTheme` / `ThemeProvider`, `cn`, `parseViewToolResult` | Free of `mcp-use/react` value imports (langchain transitive) — safe for apps that never mount the shell. |
22
- | `…-ui/app` | `McpToolkitApp`, `McpAppView`, `WidgetRenderer`, `useHostBridge`, `adaptDataWidget`, `WidgetFixtureHost` | The MCP app shell + host bridge — imports `mcp-use/react`. Never re-exported from the root barrel. |
23
- | `…-ui/hooks` | `useViewToolQuery`, `useViewData`, `useToolQuery`, `useToolMutation` | View-tool hooks. |
24
- | `…-ui/globals.css` | Tailwind v4 theme + design tokens | Import once in the app entry. |
19
+ | Subpath | Key exports | Constraint |
20
+ | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ |
21
+ | `@miragon/mcp-toolkit-ui` | Primitives (`Card`, `Table`, `Button`, …), composed components (`KpiGrid`, `WidgetHeader`, `FilterBar`), `useToolQuery`, `createTheme` / `ThemeProvider`, `cn`, `parseViewToolResult` | Free of `mcp-use/react` value imports (the view runtime + its ext-apps transitive) — safe for apps that never mount the shell. |
22
+ | `…-ui/app` | `mountMcpToolkitApp`, `McpToolkitApp`, `McpAppView`, `WidgetRenderer`, `useHostBridge`, `adaptDataWidget`, `WidgetFixtureHost` | The MCP app shell + host bridge — imports `mcp-use/react`. Never re-exported from the root barrel. |
23
+ | `…-ui/hooks` | `useViewToolQuery`, `useViewData`, `useToolQuery`, `useToolMutation` | View-tool hooks. |
24
+ | `…-ui/globals.css` | Tailwind v4 theme + design tokens | Import once in the app entry. |
25
25
 
26
26
  ## Component catalog
27
27
 
@@ -1,4 +1,4 @@
1
- import type { ComponentType } from "react";
1
+ import { type ComponentType, type ReactNode } from "react";
2
2
  import type { WidgetComponent } from "./widget-renderer.js";
3
3
  /**
4
4
  * Builds the model-context line for an adapted widget. Receives the resolved
@@ -7,6 +7,27 @@ import type { WidgetComponent } from "./widget-renderer.js";
7
7
  * `period` / `engine` on dashboard widgets) can be reported too.
8
8
  */
9
9
  export type DescribeForModel<T> = (data: NonNullable<T>, props: Readonly<Record<string, unknown>>) => string;
10
+ /**
11
+ * Model-context reporting that works on every host — the host-portable
12
+ * replacement for rendering `mcp-use/react`'s `ModelContext` directly.
13
+ *
14
+ * mcp-use 2.x's `ModelContext` registers with the view runtime and THROWS
15
+ * outside a `bootstrapView` mount, so it is only rendered inside an mcp-use
16
+ * view (where it aggregates nested nodes into one tree). Everywhere else —
17
+ * ChatGPT via `createChatGptHostBridge`, the `WidgetFixtureHost` harness,
18
+ * standalone apps — the description flows through the bridge's
19
+ * `setModelContext` instead (last-writer-wins; fine for the single-widget
20
+ * mounts those hosts render).
21
+ *
22
+ * Widgets that self-fetch and report their own context (cockpit views like
23
+ * `TasksBoard`) must use this instead of importing `ModelContext` from
24
+ * `mcp-use/react` — the direct import crashes the widget in every non-view
25
+ * mount, starting with the widget playground.
26
+ */
27
+ export declare function HostModelContext({ content, children, }: {
28
+ content: string;
29
+ children: ReactNode;
30
+ }): ReactNode;
10
31
  /**
11
32
  * Wraps a "single-data" widget component (signature `({ data }: { data: T | null })`)
12
33
  * so it can be registered as a framework {@link WidgetComponent} (which receives
@@ -21,11 +42,11 @@ export type DescribeForModel<T> = (data: NonNullable<T>, props: Readonly<Record<
21
42
  * times in one view with different scoping (e.g. one tab per process key).
22
43
  *
23
44
  * When `describeForModel` is provided the adapter wraps the widget in a
24
- * `ModelContext` so the model knows what the user is looking at (view identity,
25
- * active filters, headline numbers) without per-widget boilerplate. The
26
- * description is only rendered once the step data is present; widgets that
45
+ * `HostModelContext` so the model knows what the user is looking at (view
46
+ * identity, active filters, headline numbers) without per-widget boilerplate.
47
+ * The description is only rendered once the step data is present; widgets that
27
48
  * self-fetch when the adapter has no data (cockpit views) must render their own
28
- * `<ModelContext>` instead.
49
+ * `<HostModelContext>` instead.
29
50
  */
30
51
  export declare function adaptDataWidget<T>(Widget: ComponentType<{
31
52
  data: T | null;
@@ -1 +1 @@
1
- {"version":3,"file":"adapt-data-widget.d.ts","sourceRoot":"","sources":["../../src/app/adapt-data-widget.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAG1C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAE3D;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI,CAChC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,EACpB,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,KACrC,MAAM,CAAA;AAEX;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAC/B,MAAM,EAAE,aAAa,CAAC;IAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAA;CAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACnE,QAAQ,EAAE,MAAM,EAChB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,GACrC,eAAe,CAUjB"}
1
+ {"version":3,"file":"adapt-data-widget.d.ts","sourceRoot":"","sources":["../../src/app/adapt-data-widget.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAKrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAE3D;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI,CAChC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,EACpB,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,KACrC,MAAM,CAAA;AAEX;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,OAAO,EACP,QAAQ,GACT,EAAE;IACD,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,SAAS,CAAA;CACpB,GAAG,SAAS,CAIZ;AAWD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAC/B,MAAM,EAAE,aAAa,CAAC;IAAE,IAAI,EAAE,CAAC,GAAG,IAAI,CAAA;CAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACnE,QAAQ,EAAE,MAAM,EAChB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC,CAAC,CAAC,GACrC,eAAe,CAcjB"}
@@ -1,5 +1,39 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useEffect } from "react";
2
3
  import { ModelContext } from "mcp-use/react";
4
+ import { useHostBridgeOrNull } from "./host-bridge.js";
5
+ import { useIsInsideMcpUseView } from "./mcp-use-host-bridge.js";
6
+ /**
7
+ * Model-context reporting that works on every host — the host-portable
8
+ * replacement for rendering `mcp-use/react`'s `ModelContext` directly.
9
+ *
10
+ * mcp-use 2.x's `ModelContext` registers with the view runtime and THROWS
11
+ * outside a `bootstrapView` mount, so it is only rendered inside an mcp-use
12
+ * view (where it aggregates nested nodes into one tree). Everywhere else —
13
+ * ChatGPT via `createChatGptHostBridge`, the `WidgetFixtureHost` harness,
14
+ * standalone apps — the description flows through the bridge's
15
+ * `setModelContext` instead (last-writer-wins; fine for the single-widget
16
+ * mounts those hosts render).
17
+ *
18
+ * Widgets that self-fetch and report their own context (cockpit views like
19
+ * `TasksBoard`) must use this instead of importing `ModelContext` from
20
+ * `mcp-use/react` — the direct import crashes the widget in every non-view
21
+ * mount, starting with the widget playground.
22
+ */
23
+ export function HostModelContext({ content, children, }) {
24
+ const insideView = useIsInsideMcpUseView();
25
+ if (insideView)
26
+ return _jsx(ModelContext, { content: content, children: children });
27
+ return _jsx(BridgeModelContext, { content: content, children: children });
28
+ }
29
+ function BridgeModelContext({ content, children }) {
30
+ const bridge = useHostBridgeOrNull();
31
+ const setModelContext = bridge?.setModelContext;
32
+ useEffect(() => {
33
+ setModelContext?.(content);
34
+ }, [setModelContext, content]);
35
+ return children;
36
+ }
3
37
  /**
4
38
  * Wraps a "single-data" widget component (signature `({ data }: { data: T | null })`)
5
39
  * so it can be registered as a framework {@link WidgetComponent} (which receives
@@ -14,11 +48,11 @@ import { ModelContext } from "mcp-use/react";
14
48
  * times in one view with different scoping (e.g. one tab per process key).
15
49
  *
16
50
  * When `describeForModel` is provided the adapter wraps the widget in a
17
- * `ModelContext` so the model knows what the user is looking at (view identity,
18
- * active filters, headline numbers) without per-widget boilerplate. The
19
- * description is only rendered once the step data is present; widgets that
51
+ * `HostModelContext` so the model knows what the user is looking at (view
52
+ * identity, active filters, headline numbers) without per-widget boilerplate.
53
+ * The description is only rendered once the step data is present; widgets that
20
54
  * self-fetch when the adapter has no data (cockpit views) must render their own
21
- * `<ModelContext>` instead.
55
+ * `<HostModelContext>` instead.
22
56
  */
23
57
  export function adaptDataWidget(Widget, dataType, describeForModel) {
24
58
  function AdaptedWidget({ context, widgetProps }) {
@@ -27,7 +61,7 @@ export function adaptDataWidget(Widget, dataType, describeForModel) {
27
61
  const widget = _jsx(Widget, { ...(widgetProps ?? {}), data: data });
28
62
  if (data == null || !describeForModel)
29
63
  return widget;
30
- return _jsx(ModelContext, { content: describeForModel(data, widgetProps ?? {}), children: widget });
64
+ return (_jsx(HostModelContext, { content: describeForModel(data, widgetProps ?? {}), children: widget }));
31
65
  }
32
66
  AdaptedWidget.displayName = `Adapted(${Widget.displayName ?? Widget.name ?? "Widget"})`;
33
67
  return AdaptedWidget;
@@ -1 +1 @@
1
- {"version":3,"file":"adapt-data-widget.js","sourceRoot":"","sources":["../../src/app/adapt-data-widget.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAe5C;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAmE,EACnE,QAAgB,EAChB,gBAAsC;IAEtC,SAAS,aAAa,CAAC,EAAE,OAAO,EAAE,WAAW,EAAe;QAC1D,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAA;QACrF,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,IAAI,IAAI,IAAI,CAAa,CAAA;QACnD,MAAM,MAAM,GAAG,KAAC,MAAM,OAAK,CAAC,WAAW,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,GAAI,CAAA;QAC9D,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,gBAAgB;YAAE,OAAO,MAAM,CAAA;QACpD,OAAO,KAAC,YAAY,IAAC,OAAO,EAAE,gBAAgB,CAAC,IAAI,EAAE,WAAW,IAAI,EAAE,CAAC,YAAG,MAAM,GAAgB,CAAA;IAClG,CAAC;IACD,aAAa,CAAC,WAAW,GAAG,WAAW,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,IAAI,QAAQ,GAAG,CAAA;IACvF,OAAO,aAAa,CAAA;AACtB,CAAC"}
1
+ {"version":3,"file":"adapt-data-widget.js","sourceRoot":"","sources":["../../src/app/adapt-data-widget.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAsC,MAAM,OAAO,CAAA;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAE5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAchE;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,gBAAgB,CAAC,EAC/B,OAAO,EACP,QAAQ,GAIT;IACC,MAAM,UAAU,GAAG,qBAAqB,EAAE,CAAA;IAC1C,IAAI,UAAU;QAAE,OAAO,KAAC,YAAY,IAAC,OAAO,EAAE,OAAO,YAAG,QAAQ,GAAgB,CAAA;IAChF,OAAO,KAAC,kBAAkB,IAAC,OAAO,EAAE,OAAO,YAAG,QAAQ,GAAsB,CAAA;AAC9E,CAAC;AAED,SAAS,kBAAkB,CAAC,EAAE,OAAO,EAAE,QAAQ,EAA4C;IACzF,MAAM,MAAM,GAAG,mBAAmB,EAAE,CAAA;IACpC,MAAM,eAAe,GAAG,MAAM,EAAE,eAAe,CAAA;IAC/C,SAAS,CAAC,GAAG,EAAE;QACb,eAAe,EAAE,CAAC,OAAO,CAAC,CAAA;IAC5B,CAAC,EAAE,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAA;IAC9B,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAmE,EACnE,QAAgB,EAChB,gBAAsC;IAEtC,SAAS,aAAa,CAAC,EAAE,OAAO,EAAE,WAAW,EAAe;QAC1D,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAA;QACrF,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,IAAI,IAAI,IAAI,CAAa,CAAA;QACnD,MAAM,MAAM,GAAG,KAAC,MAAM,OAAK,CAAC,WAAW,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,GAAI,CAAA;QAC9D,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,gBAAgB;YAAE,OAAO,MAAM,CAAA;QACpD,OAAO,CACL,KAAC,gBAAgB,IAAC,OAAO,EAAE,gBAAgB,CAAC,IAAI,EAAE,WAAW,IAAI,EAAE,CAAC,YACjE,MAAM,GACU,CACpB,CAAA;IACH,CAAC;IACD,aAAa,CAAC,WAAW,GAAG,WAAW,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,IAAI,QAAQ,GAAG,CAAA;IACvF,OAAO,aAAa,CAAA;AACtB,CAAC"}
@@ -18,43 +18,40 @@ export interface HostBridge {
18
18
  * with `parseToolResult`. Rejects if the call fails so a widget's own error
19
19
  * state (TanStack Query, try/catch) can surface it.
20
20
  */
21
- callTool(name: string, args: Record<string, unknown>): Promise<unknown>;
21
+ callTool: (name: string, args: Record<string, unknown>) => Promise<unknown>;
22
22
  /**
23
23
  * Hand a natural-language prompt back to the conversation to drive a new model
24
24
  * turn (navigate to another widget, ask the agent to analyse something). In
25
25
  * hosts without a conversation (standalone web app) this is a no-op unless an
26
26
  * `onFollowup` handler is supplied.
27
27
  */
28
- sendFollowup(prompt: string): void;
28
+ sendFollowup: (prompt: string) => void;
29
29
  /**
30
30
  * Ask the host to open a URL outside the (often sandboxed) widget frame.
31
31
  * Falls back to `window.open` only where no host bridge mediates links.
32
32
  */
33
- openExternal(url: string): void;
33
+ openExternal: (url: string) => void;
34
34
  /**
35
35
  * The structured data this widget was rendered with, if the host pushed any
36
36
  * (the tool result's `structuredContent` / `toolOutput`). Returns `null` when
37
37
  * the host delivers data another way (e.g. props) or has none.
38
38
  */
39
- getWidgetData<T>(): T | null;
39
+ getWidgetData: <T>() => T | null;
40
40
  /**
41
41
  * Persist a short text the model should see on the next turn (selection,
42
42
  * filter, current view). Optional: not every host exposes model context, and
43
43
  * a standalone web app has no model at all — callers must guard its absence.
44
44
  */
45
- setModelContext?(text: string): void;
45
+ setModelContext?: (text: string) => void;
46
46
  /** The host's colour-scheme preference, when it reports one. */
47
47
  theme?: "light" | "dark";
48
48
  }
49
49
  /**
50
50
  * Provide an explicit {@link HostBridge} to a subtree. Wrap a portable widget in
51
51
  * the adapter for the host it is running in — {@link createChatGptHostBridge},
52
- * {@link createStandaloneHostBridge}, or {@link createMcpUseHostBridge} — and
53
- * every `useHostBridge()` below resolves to it.
54
- *
55
- * Omitting the provider is supported: {@link useHostBridge} (and, for backward
56
- * compatibility, `useHostActions`) then fall back to the `mcp-use`/react default
57
- * bridge so existing widgets keep working without any wrapping.
52
+ * {@link createStandaloneHostBridge}, or (inside the toolkit's own mcp-use
53
+ * view) the `McpUseHostBridgeProvider` — and every `useHostBridge()` below
54
+ * resolves to it.
58
55
  */
59
56
  export declare function HostBridgeProvider({ bridge, children, }: {
60
57
  bridge: HostBridge;
@@ -68,47 +65,56 @@ export declare function HostBridgeProvider({ bridge, children, }: {
68
65
  */
69
66
  export declare function useHostBridgeOrNull(): HostBridge | null;
70
67
  /**
71
- * The {@link HostBridge} for the current subtree. Resolution order:
68
+ * The {@link HostBridge} for the current subtree — the nearest
69
+ * {@link HostBridgeProvider}'s bridge.
72
70
  *
73
- * 1. An explicit bridge from the nearest {@link HostBridgeProvider}.
74
- * 2. The default `mcp-use`/react bridge ({@link createMcpUseHostBridge}), so a
75
- * widget mounted in our own host needs no provider.
71
+ * A provider is always present in the supported mounts: the toolkit shell
72
+ * (`McpToolkitApp` via `McpUseHostBridgeProvider`) installs the `mcp-use`
73
+ * bridge for every widget it renders, the `WidgetFixtureHost` harness installs
74
+ * a standalone bridge, and ChatGPT / standalone apps wrap their root in
75
+ * {@link createChatGptHostBridge} / {@link createStandaloneHostBridge}.
76
76
  *
77
- * The `mcp-use` hooks the default bridge wraps must run under an `mcp-use`
78
- * provider/host context; outside one (e.g. a bare unit test render) wrap the
79
- * widget in a `HostBridgeProvider` with a {@link createStandaloneHostBridge}
80
- * instead. This hook never returns `null`: a portable widget can always assume a
81
- * bridge exists.
77
+ * Since mcp-use 2.x there is no provider-less fallback: the `mcp-use` hooks
78
+ * only work inside a `bootstrapView`-mounted view, so a bare render without a
79
+ * provider cannot silently degrade — this hook throws with a pointer to the
80
+ * adapters instead.
82
81
  */
83
82
  export declare function useHostBridge(): HostBridge;
84
83
  /**
85
- * Build a {@link HostBridge} backed by `mcp-use`/react — the default for widgets
86
- * running in the toolkit's own host. Wraps `useWidget()` (host actions,
87
- * `toolOutput`, `theme`) and `useCallTool` so it preserves exactly the behaviour
88
- * widgets had before the bridge abstraction:
84
+ * Exactly the slice of `mcp-use`'s widget surface {@link toHostBridge} reads —
85
+ * declared structurally rather than imported from `mcp-use/react`.
89
86
  *
90
- * - `openExternal` routes through the host's `openExternal` and falls back to
91
- * `window.open` when no host bridge is wired (local dev preview) — mirroring
92
- * the original `useHostActions.openLink`.
93
- * - `sendFollowup` routes through `sendFollowUpMessage` and swallows rejections
94
- * with a `console.warn`, as `useHostActions` did.
95
- *
96
- * Must be called inside an `mcp-use` host context (it calls `mcp-use` hooks).
97
- * Use {@link createMcpUseHostBridge} for the standalone factory variant.
87
+ * That indirection is the point: the mapping below is the behaviour widgets
88
+ * depend on, and pinning it against a local interface keeps it testable without
89
+ * a host, a DOM, or a React renderer. It also localises upstream churn — when
90
+ * the shape moves, this interface and the `McpUseHostBridgeProvider` (which
91
+ * composes the mcp-use 2.x view hooks into this surface) are what change, and
92
+ * {@link toHostBridge}'s tests still prove the bridge contract widgets see is
93
+ * unchanged. The 1.x `useWidget()` satisfied it directly; the 2.x composition
94
+ * lives in `mcp-use-host-bridge.tsx`.
98
95
  */
99
- export declare function useMcpUseHostBridge(): HostBridge;
96
+ export interface McpUseWidgetSurface {
97
+ /** Invoke a tool on the connected server. */
98
+ callTool: (name: string, args: Record<string, unknown>) => Promise<unknown>;
99
+ /** Hand a prompt back to the conversation. Rejects are swallowed by the mapping. */
100
+ sendFollowUpMessage: (prompt: string) => Promise<unknown>;
101
+ /** Open a URL outside the widget frame. Throws when no host mediates links. */
102
+ openExternal: (url: string) => void;
103
+ /** The tool output the host rendered this widget with, when it pushed one. */
104
+ output?: unknown;
105
+ /** The host's reported colour scheme, in whatever spelling it uses. */
106
+ theme?: unknown;
107
+ /** Persist widget state; the model-context write rides on this. */
108
+ setState: (state: Record<string, unknown>) => Promise<unknown>;
109
+ }
100
110
  /**
101
- * Factory form of {@link useMcpUseHostBridge} for symmetry with the other
102
- * adapters. Because the `mcp-use` bridge is hook-driven (it reads live host
103
- * context), the "factory" is really the hook itself — call it from a component.
111
+ * Map `mcp-use`'s widget surface onto the host-agnostic {@link HostBridge}.
104
112
  *
105
- * @example
106
- * function MyWidget() {
107
- * const bridge = createMcpUseHostBridge() // === useMcpUseHostBridge()
108
- * // …or rely on useHostBridge()'s default and skip the provider entirely.
109
- * }
113
+ * Pure and separately exported so the fail-soft behaviour is pinned by tests:
114
+ * every verb here has a documented failure mode that widgets rely on, and none
115
+ * of them may start throwing into widget render paths.
110
116
  */
111
- export declare const createMcpUseHostBridge: typeof useMcpUseHostBridge;
117
+ export declare function toHostBridge(widget: McpUseWidgetSurface): HostBridge;
112
118
  /**
113
119
  * Minimal structural view of the OpenAI Apps SDK `window.openai` object this
114
120
  * adapter reads. Every field is optional: the real SDK shape varies across
@@ -1 +1 @@
1
- {"version":3,"file":"host-bridge.d.ts","sourceRoot":"","sources":["../../src/app/host-bridge.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"host-bridge.d.ts","sourceRoot":"","sources":["../../src/app/host-bridge.tsx"],"names":[],"mappings":"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"}
@@ -1,16 +1,12 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import { createContext, useContext, useMemo } from "react";
3
- import { useWidget } from "mcp-use/react";
2
+ import { createContext, useContext } from "react";
4
3
  const HostBridgeContext = createContext(null);
5
4
  /**
6
5
  * Provide an explicit {@link HostBridge} to a subtree. Wrap a portable widget in
7
6
  * the adapter for the host it is running in — {@link createChatGptHostBridge},
8
- * {@link createStandaloneHostBridge}, or {@link createMcpUseHostBridge} — and
9
- * every `useHostBridge()` below resolves to it.
10
- *
11
- * Omitting the provider is supported: {@link useHostBridge} (and, for backward
12
- * compatibility, `useHostActions`) then fall back to the `mcp-use`/react default
13
- * bridge so existing widgets keep working without any wrapping.
7
+ * {@link createStandaloneHostBridge}, or (inside the toolkit's own mcp-use
8
+ * view) the `McpUseHostBridgeProvider` — and every `useHostBridge()` below
9
+ * resolves to it.
14
10
  */
15
11
  export function HostBridgeProvider({ bridge, children, }) {
16
12
  return _jsx(HostBridgeContext.Provider, { value: bridge, children: children });
@@ -25,45 +21,39 @@ export function useHostBridgeOrNull() {
25
21
  return useContext(HostBridgeContext);
26
22
  }
27
23
  /**
28
- * The {@link HostBridge} for the current subtree. Resolution order:
24
+ * The {@link HostBridge} for the current subtree — the nearest
25
+ * {@link HostBridgeProvider}'s bridge.
29
26
  *
30
- * 1. An explicit bridge from the nearest {@link HostBridgeProvider}.
31
- * 2. The default `mcp-use`/react bridge ({@link createMcpUseHostBridge}), so a
32
- * widget mounted in our own host needs no provider.
27
+ * A provider is always present in the supported mounts: the toolkit shell
28
+ * (`McpToolkitApp` via `McpUseHostBridgeProvider`) installs the `mcp-use`
29
+ * bridge for every widget it renders, the `WidgetFixtureHost` harness installs
30
+ * a standalone bridge, and ChatGPT / standalone apps wrap their root in
31
+ * {@link createChatGptHostBridge} / {@link createStandaloneHostBridge}.
33
32
  *
34
- * The `mcp-use` hooks the default bridge wraps must run under an `mcp-use`
35
- * provider/host context; outside one (e.g. a bare unit test render) wrap the
36
- * widget in a `HostBridgeProvider` with a {@link createStandaloneHostBridge}
37
- * instead. This hook never returns `null`: a portable widget can always assume a
38
- * bridge exists.
33
+ * Since mcp-use 2.x there is no provider-less fallback: the `mcp-use` hooks
34
+ * only work inside a `bootstrapView`-mounted view, so a bare render without a
35
+ * provider cannot silently degrade — this hook throws with a pointer to the
36
+ * adapters instead.
39
37
  */
40
38
  export function useHostBridge() {
41
39
  const explicit = useContext(HostBridgeContext);
42
- // Always call the default-bridge hook (Rules of Hooks): it's cheap and only
43
- // *used* when no explicit bridge is provided. The mcp-use hooks underneath are
44
- // host-context readers, safe to call even when their result goes unused.
45
- const fallback = useMcpUseHostBridge();
46
- return explicit ?? fallback;
40
+ if (!explicit) {
41
+ throw new Error("[host-bridge] useHostBridge() found no HostBridgeProvider. Wrap the widget in " +
42
+ "McpToolkitApp / McpUseHostBridgeProvider (toolkit host), WidgetFixtureHost (dev), " +
43
+ "or a HostBridgeProvider with createChatGptHostBridge / createStandaloneHostBridge.");
44
+ }
45
+ return explicit;
47
46
  }
48
47
  /**
49
- * Build a {@link HostBridge} backed by `mcp-use`/react — the default for widgets
50
- * running in the toolkit's own host. Wraps `useWidget()` (host actions,
51
- * `toolOutput`, `theme`) and `useCallTool` so it preserves exactly the behaviour
52
- * widgets had before the bridge abstraction:
53
- *
54
- * - `openExternal` routes through the host's `openExternal` and falls back to
55
- * `window.open` when no host bridge is wired (local dev preview) — mirroring
56
- * the original `useHostActions.openLink`.
57
- * - `sendFollowup` routes through `sendFollowUpMessage` and swallows rejections
58
- * with a `console.warn`, as `useHostActions` did.
48
+ * Map `mcp-use`'s widget surface onto the host-agnostic {@link HostBridge}.
59
49
  *
60
- * Must be called inside an `mcp-use` host context (it calls `mcp-use` hooks).
61
- * Use {@link createMcpUseHostBridge} for the standalone factory variant.
50
+ * Pure and separately exported so the fail-soft behaviour is pinned by tests:
51
+ * every verb here has a documented failure mode that widgets rely on, and none
52
+ * of them may start throwing into widget render paths.
62
53
  */
63
- export function useMcpUseHostBridge() {
64
- const widget = useWidget();
54
+ export function toHostBridge(widget) {
65
55
  const { callTool, sendFollowUpMessage, openExternal, output, theme, setState } = widget;
66
- return useMemo(() => ({
56
+ return {
67
57
  callTool: (name, args) => callTool(name, args),
68
58
  sendFollowup: (prompt) => {
69
59
  void sendFollowUpMessage(prompt).catch((err) => {
@@ -87,20 +77,8 @@ export function useMcpUseHostBridge() {
87
77
  });
88
78
  },
89
79
  theme: theme === "dark" ? "dark" : "light",
90
- }), [callTool, sendFollowUpMessage, openExternal, output, theme, setState]);
80
+ };
91
81
  }
92
- /**
93
- * Factory form of {@link useMcpUseHostBridge} for symmetry with the other
94
- * adapters. Because the `mcp-use` bridge is hook-driven (it reads live host
95
- * context), the "factory" is really the hook itself — call it from a component.
96
- *
97
- * @example
98
- * function MyWidget() {
99
- * const bridge = createMcpUseHostBridge() // === useMcpUseHostBridge()
100
- * // …or rely on useHostBridge()'s default and skip the provider entirely.
101
- * }
102
- */
103
- export const createMcpUseHostBridge = useMcpUseHostBridge;
104
82
  /**
105
83
  * Resolve the `window.openai` object, or `null` outside a browser / when the SDK
106
84
  * is absent. Pulled out so the no-SDK fallback path is unit-testable by passing
@@ -1 +1 @@
1
- {"version":3,"file":"host-bridge.js","sourceRoot":"","sources":["../../src/app/host-bridge.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"host-bridge.js","sourceRoot":"","sources":["../../src/app/host-bridge.tsx"],"names":[],"mappings":"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"}
@@ -1,16 +1,17 @@
1
1
  export { McpAppView } from "./mcp-app-view.js";
2
2
  export type { McpAppViewProps, McpAppViewLabels } from "./mcp-app-view.js";
3
- export { McpToolkitApp } from "./mcp-toolkit-app.js";
3
+ export { McpToolkitApp, mountMcpToolkitApp } from "./mcp-toolkit-app.js";
4
4
  export { WidgetRenderer, WidgetErrorBoundary, RenderedWidget, contextHasNoData, } from "./widget-renderer.js";
5
5
  export type { WidgetRendererProps, WidgetComponent } from "./widget-renderer.js";
6
6
  export { LayoutBuilder } from "./layout-builder.js";
7
7
  export type { LayoutBuilderProps, LayoutBuilderLabels } from "./layout-builder.js";
8
- export { adaptDataWidget } from "./adapt-data-widget.js";
8
+ export { adaptDataWidget, HostModelContext } from "./adapt-data-widget.js";
9
9
  export type { DescribeForModel } from "./adapt-data-widget.js";
10
10
  export { useHostActions, buildShowWidgetIntent } from "./use-host-actions.js";
11
11
  export type { HostActions } from "./use-host-actions.js";
12
- export { HostBridgeProvider, useHostBridge, useHostBridgeOrNull, useMcpUseHostBridge, createMcpUseHostBridge, createChatGptHostBridge, createStandaloneHostBridge, } from "./host-bridge.js";
13
- export type { HostBridge, OpenAiAppsSdk, StandaloneHostBridgeOptions } from "./host-bridge.js";
12
+ export { HostBridgeProvider, useHostBridge, useHostBridgeOrNull, toHostBridge, createChatGptHostBridge, createStandaloneHostBridge, } from "./host-bridge.js";
13
+ export type { HostBridge, McpUseWidgetSurface, OpenAiAppsSdk, StandaloneHostBridgeOptions, } from "./host-bridge.js";
14
+ export { McpUseHostBridgeProvider, useIsInsideMcpUseView } from "./mcp-use-host-bridge.js";
14
15
  export { WidgetFixtureHost, FixtureCallToolRegistry, buildFixtureWidgetProps, useFixtureHost, } from "./widget-fixture.js";
15
16
  export type { WidgetFixtureHostProps, FixtureWidget, FixtureToolEntry, FixtureToolResult, HostActionLog, } from "./widget-fixture.js";
16
17
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/app/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,gBAAgB,GACjB,MAAM,sBAAsB,CAAA;AAC7B,YAAY,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAIlF,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,YAAY,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAC9D,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AAC7E,YAAY,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAMxD,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,sBAAsB,EACtB,uBAAuB,EACvB,0BAA0B,GAC3B,MAAM,kBAAkB,CAAA;AACzB,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAA;AAK9F,OAAO,EACL,iBAAiB,EACjB,uBAAuB,EACvB,uBAAuB,EACvB,cAAc,GACf,MAAM,qBAAqB,CAAA;AAC5B,YAAY,EACV,sBAAsB,EACtB,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,GACd,MAAM,qBAAqB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/app/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAC1E,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACxE,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,gBAAgB,GACjB,MAAM,sBAAsB,CAAA;AAC7B,YAAY,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAIlF,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAC1E,YAAY,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAC9D,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AAC7E,YAAY,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAMxD,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,mBAAmB,EACnB,YAAY,EACZ,uBAAuB,EACvB,0BAA0B,GAC3B,MAAM,kBAAkB,CAAA;AACzB,YAAY,EACV,UAAU,EACV,mBAAmB,EACnB,aAAa,EACb,2BAA2B,GAC5B,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAK1F,OAAO,EACL,iBAAiB,EACjB,uBAAuB,EACvB,uBAAuB,EACvB,cAAc,GACf,MAAM,qBAAqB,CAAA;AAC5B,YAAY,EACV,sBAAsB,EACtB,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,GACd,MAAM,qBAAqB,CAAA"}
package/dist/app/index.js CHANGED
@@ -1,18 +1,19 @@
1
1
  export { McpAppView } from "./mcp-app-view.js";
2
- export { McpToolkitApp } from "./mcp-toolkit-app.js";
2
+ export { McpToolkitApp, mountMcpToolkitApp } from "./mcp-toolkit-app.js";
3
3
  export { WidgetRenderer, WidgetErrorBoundary, RenderedWidget, contextHasNoData, } from "./widget-renderer.js";
4
4
  export { LayoutBuilder } from "./layout-builder.js";
5
- // App-level value modules that import `mcp-use/react` (ModelContext, useWidget)
6
- // — exported from this subpath only, never the root barrel.
7
- export { adaptDataWidget } from "./adapt-data-widget.js";
5
+ // App-level value modules that import `mcp-use/react` (ModelContext, the 2.x
6
+ // view hooks) — exported from this subpath only, never the root barrel.
7
+ export { adaptDataWidget, HostModelContext } from "./adapt-data-widget.js";
8
8
  export { useHostActions, buildShowWidgetIntent } from "./use-host-actions.js";
9
9
  // Host-portability bridge: the seam that lets the same hand-built widget run in
10
10
  // our mcp-use host, ChatGPT (Apps SDK), or a standalone web app against an
11
- // existing MCP server. Lives under ./app because the default adapter imports
11
+ // existing MCP server. Lives under ./app because the mcp-use adapter imports
12
12
  // `mcp-use/react` — never the root barrel.
13
- export { HostBridgeProvider, useHostBridge, useHostBridgeOrNull, useMcpUseHostBridge, createMcpUseHostBridge, createChatGptHostBridge, createStandaloneHostBridge, } from "./host-bridge.js";
13
+ export { HostBridgeProvider, useHostBridge, useHostBridgeOrNull, toHostBridge, createChatGptHostBridge, createStandaloneHostBridge, } from "./host-bridge.js";
14
+ export { McpUseHostBridgeProvider, useIsInsideMcpUseView } from "./mcp-use-host-bridge.js";
14
15
  // Storybook-style harness for developing widgets in isolation with fixture
15
- // data and a mocked host. Lives under ./app because it mocks the
16
- // `mcp-use/react` host bridge (window.openai) — never the root barrel.
16
+ // data and a simulated HostBridge. Lives under ./app to keep every host-facing
17
+ // surface on one subpath — never the root barrel.
17
18
  export { WidgetFixtureHost, FixtureCallToolRegistry, buildFixtureWidgetProps, useFixtureHost, } from "./widget-fixture.js";
18
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/app/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAE9C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,gBAAgB,GACjB,MAAM,sBAAsB,CAAA;AAE7B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAGnD,gFAAgF;AAChF,4DAA4D;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAExD,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AAG7E,gFAAgF;AAChF,2EAA2E;AAC3E,6EAA6E;AAC7E,2CAA2C;AAC3C,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,sBAAsB,EACtB,uBAAuB,EACvB,0BAA0B,GAC3B,MAAM,kBAAkB,CAAA;AAGzB,2EAA2E;AAC3E,iEAAiE;AACjE,uEAAuE;AACvE,OAAO,EACL,iBAAiB,EACjB,uBAAuB,EACvB,uBAAuB,EACvB,cAAc,GACf,MAAM,qBAAqB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/app/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAE9C,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACxE,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,gBAAgB,GACjB,MAAM,sBAAsB,CAAA;AAE7B,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAGnD,6EAA6E;AAC7E,wEAAwE;AACxE,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAE1E,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AAG7E,gFAAgF;AAChF,2EAA2E;AAC3E,6EAA6E;AAC7E,2CAA2C;AAC3C,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,mBAAmB,EACnB,YAAY,EACZ,uBAAuB,EACvB,0BAA0B,GAC3B,MAAM,kBAAkB,CAAA;AAOzB,OAAO,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAE1F,2EAA2E;AAC3E,+EAA+E;AAC/E,kDAAkD;AAClD,OAAO,EACL,iBAAiB,EACjB,uBAAuB,EACvB,uBAAuB,EACvB,cAAc,GACf,MAAM,qBAAqB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-app-view.d.ts","sourceRoot":"","sources":["../../src/app/mcp-app-view.tsx"],"names":[],"mappings":"AASA,OAAO,EAAkB,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAE3E,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAkDD,MAAM,WAAW,eAAe;IAC9B;;;;;OAKG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IACxC;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB;;;;;;;;;;OAUG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB;;;OAGG;IACH,MAAM,CAAC,EAAE,gBAAgB,CAAA;CAC1B;AAED,wBAAgB,UAAU,CAAC,EACzB,OAAO,EACP,eAAgC,EAChC,cAAc,EACd,MAAM,GACP,EAAE,eAAe,+BAoQjB"}
1
+ {"version":3,"file":"mcp-app-view.d.ts","sourceRoot":"","sources":["../../src/app/mcp-app-view.tsx"],"names":[],"mappings":"AAUA,OAAO,EAAkB,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAE3E,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAkDD,MAAM,WAAW,eAAe;IAC9B;;;;;OAKG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;IACxC;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB;;;;;;;;;;OAUG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB;;;OAGG;IACH,MAAM,CAAC,EAAE,gBAAgB,CAAA;CAC1B;AAED,wBAAgB,UAAU,CAAC,EACzB,OAAO,EACP,eAAgC,EAChC,cAAc,EACd,MAAM,GACP,EAAE,eAAe,+BA4QjB"}