@ggui-ai/mcp-apps-react-native 0.23.0 → 0.24.0
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/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @ggui-ai/mcp-apps-react-native
|
|
2
2
|
|
|
3
|
-
React Native
|
|
3
|
+
MCP Apps host helper for React Native, from [ggui](https://ggui.ai) — the interface layer
|
|
4
4
|
between AI agents and humans. Agents describe UIs in natural language
|
|
5
5
|
over MCP; ggui generates ephemeral interfaces. This package lets you
|
|
6
6
|
embed those interfaces in a React Native or Expo app.
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ggui-ai/mcp-apps-react-native",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "React Native
|
|
3
|
+
"version": "0.24.0",
|
|
4
|
+
"description": "React Native host helper for MCP Apps — components and hooks for embedding agent-generated UIs in mobile apps.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ggui",
|
|
7
7
|
"react-native",
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"mcp",
|
|
10
10
|
"ai-agent",
|
|
11
11
|
"generative-ui",
|
|
12
|
-
"
|
|
12
|
+
"mcp-apps"
|
|
13
13
|
],
|
|
14
14
|
"license": "Apache-2.0",
|
|
15
15
|
"homepage": "https://github.com/ggui-ai/ggui/tree/main/packages/mcp-apps-react-native",
|
|
@@ -58,9 +58,9 @@
|
|
|
58
58
|
},
|
|
59
59
|
"dependencies": {
|
|
60
60
|
"@modelcontextprotocol/ext-apps": "^1.7.2",
|
|
61
|
-
"@ggui-ai/design": "0.
|
|
62
|
-
"@ggui-ai/
|
|
63
|
-
"@ggui-ai/
|
|
61
|
+
"@ggui-ai/design": "0.24.0",
|
|
62
|
+
"@ggui-ai/protocol": "0.24.0",
|
|
63
|
+
"@ggui-ai/iframe-runtime": "0.24.0"
|
|
64
64
|
},
|
|
65
65
|
"devDependencies": {
|
|
66
66
|
"@modelcontextprotocol/sdk": "^1.27.0",
|
|
@@ -72,7 +72,7 @@ export interface GguiProviderProps {
|
|
|
72
72
|
* (e.g., react-native-permissions, expo-permissions, or a custom dialog).
|
|
73
73
|
*
|
|
74
74
|
* @param permission - The Web Permissions API name being requested
|
|
75
|
-
* (e.g., `'camera'`, `'microphone'`, `'geolocation'`). The
|
|
75
|
+
* (e.g., `'camera'`, `'microphone'`, `'geolocation'`). The helper
|
|
76
76
|
* pre-validates the name against `KNOWN_PERMISSION_NAMES` before
|
|
77
77
|
* invoking this handler, so an unknown name surfaces as a
|
|
78
78
|
* `UnknownPermissionNameError` to the caller without ever
|
|
@@ -110,7 +110,7 @@ function detectRNInterfaceContext(): InterfaceContext {
|
|
|
110
110
|
}
|
|
111
111
|
|
|
112
112
|
/**
|
|
113
|
-
* Root provider for the
|
|
113
|
+
* Root provider for the React Native host helper.
|
|
114
114
|
*
|
|
115
115
|
* Wraps the application with shared configuration needed by all ggui hooks
|
|
116
116
|
* and components. Auto-detects interface context from React Native Dimensions
|
|
@@ -143,7 +143,7 @@ export function GguiProvider({ appId, wsEndpoint, adapterImpls, interfaceContext
|
|
|
143
143
|
async (permission: string): Promise<PermissionStatus> => {
|
|
144
144
|
// Gate on `KNOWN_PERMISSION_NAMES` (the Web Permissions API
|
|
145
145
|
// enum). With no host-advertised `AdapterType[]` allow-list,
|
|
146
|
-
// the
|
|
146
|
+
// the helper is the last line of defense against typos or
|
|
147
147
|
// unsupported names slipping into the runtime cache.
|
|
148
148
|
if (!KNOWN_PERMISSION_NAMES_SET.has(permission)) {
|
|
149
149
|
throw new UnknownPermissionNameError({ observedName: permission });
|
|
@@ -68,7 +68,7 @@ export interface GguiContextValue {
|
|
|
68
68
|
/** Base URL for design system modules in WebView import map */
|
|
69
69
|
designSystemUrl?: string;
|
|
70
70
|
/**
|
|
71
|
-
* App config (endpointUrl, defaultShellType, etc). Mirrors the web
|
|
71
|
+
* App config (endpointUrl, defaultShellType, etc). Mirrors the web host helper's
|
|
72
72
|
* context field — `useInvoke` reads `endpointUrl` from here when the
|
|
73
73
|
* caller doesn't override it. Populated by {@link GguiProvider} via its
|
|
74
74
|
* `appConfig` prop.
|
|
@@ -106,7 +106,7 @@ export function useGguiContext(): GguiContextValue {
|
|
|
106
106
|
* for this capability — callers MUST handle that case (e.g. render
|
|
107
107
|
* a fallback UI). Grant decisions live on `clientCapabilities.gadgets
|
|
108
108
|
* [*].permission` and surface to the iframe via `Permissions-Policy`;
|
|
109
|
-
* the
|
|
109
|
+
* the helper's context just exposes whatever the host wired into
|
|
110
110
|
* `adapterImpls`.
|
|
111
111
|
*
|
|
112
112
|
* Mirrors {@link useAdapter} in `@ggui-ai/mcp-apps-react`. Capability packages
|
package/src/index.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @ggui-ai/mcp-apps-react-native -
|
|
2
|
+
* @ggui-ai/mcp-apps-react-native - MCP Apps host helper for React Native
|
|
3
3
|
*
|
|
4
4
|
* Provides React Native components, hooks, and utilities for embedding ggui
|
|
5
5
|
* agent interfaces in mobile applications. The host primitive is
|
|
@@ -78,7 +78,7 @@ export type {
|
|
|
78
78
|
// ProtocolError typed union — the canonical shape for every failure
|
|
79
79
|
// the renderer classifies outward. `<McpAppIframe onError>` surfaces
|
|
80
80
|
// it; embedding apps pattern-match on `err.kind`. The sibling package
|
|
81
|
-
// `@ggui-ai/iframe-runtime` owns the declaration;
|
|
81
|
+
// `@ggui-ai/iframe-runtime` owns the declaration; this host helper re-exports
|
|
82
82
|
// it at parity with `@ggui-ai/mcp-apps-react` so consumers have a single import
|
|
83
83
|
// point per platform.
|
|
84
84
|
export type {
|
package/src/invoke/useInvoke.ts
CHANGED
|
@@ -100,7 +100,7 @@ export interface UseInvokeOptions {
|
|
|
100
100
|
* - `ggui_render` / `ggui_update` / `ggui_handshake` — paired by
|
|
101
101
|
* `tool_use_id` with an inline `tool_result` block on the same
|
|
102
102
|
* assistant turn. Consumers watch for the pair and mount their
|
|
103
|
-
* renderer (e.g. `<McpAppIframe>`
|
|
103
|
+
* renderer (e.g. this package's `<McpAppIframe>`) using the
|
|
104
104
|
* bootstrap metadata off the paired tool_result.
|
|
105
105
|
* - `ggui_render_blueprint` — a pure client tool (no server result to
|
|
106
106
|
* pair with); the consumer resolves the blueprint name locally.
|
|
@@ -409,7 +409,7 @@ function makeTransportError(message: string): InvokeError {
|
|
|
409
409
|
* tool_result's content payload if one is present. Tolerant of arbitrary
|
|
410
410
|
* nested shapes — agents may put the id directly on the result or under
|
|
411
411
|
* a wrapper like `{ result: { hostSessionId } }`. Wire field and
|
|
412
|
-
*
|
|
412
|
+
* helper-side name are both `hostSessionId`.
|
|
413
413
|
*/
|
|
414
414
|
function extractHostSessionIdFromContent(content: unknown): string | null {
|
|
415
415
|
if (typeof content !== 'object' || content === null) return null;
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* `react-test-renderer@19` does not ship its own types, and there is no
|
|
5
5
|
* matching `@types/react-test-renderer@19` on npm. We only need a tiny
|
|
6
|
-
* surface (`create`, `act`, `ReactTestRenderer.toJSON()`) for the
|
|
6
|
+
* surface (`create`, `act`, `ReactTestRenderer.toJSON()`) for the package's
|
|
7
7
|
* test files — full fidelity is not required.
|
|
8
8
|
*/
|
|
9
9
|
declare module 'react-test-renderer' {
|