@mcp-native/react-native 0.3.0 → 0.4.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
@@ -16,7 +16,7 @@
16
16
 
17
17
  `@mcp-native/react-native` converts a surface already validated by `@mcp-native/a2ui` into a trusted render plan and mounts it with components supplied by the host application. Servers provide data and declared actions—not JavaScript modules, component implementations, or arbitrary component names.
18
18
 
19
- The renderer is an internal platform layer, not proof of complete A2UI v1.0 conformance. The custom `0.1` surface remains supported, and the separate v1.0 adapter converts a strict component subset, including bounded dynamic lists, into the same host-owned `NativeElement` boundary.
19
+ The renderer is an internal platform layer, not proof of complete A2UI v1.0 conformance. The custom `0.1` surface remains available only through deprecated migration APIs, while the v1.0 adapter converts the documented component subset, including bounded dynamic lists, into the same host-owned `NativeElement` boundary. See the [feature-scoped conformance profile](https://github.com/pablospaniard/mcp-native/blob/main/docs/a2ui-v1-conformance.md).
20
20
 
21
21
  ## Install
22
22
 
@@ -79,7 +79,7 @@ The renderer uses only the currently allowed component names:
79
79
  type NativeComponentName = "Button" | "Text" | "TextInput" | "View";
80
80
  ```
81
81
 
82
- The application host decides how each name maps to a locally bundled component and how declared custom `0.1` button actions reach `McpNativeRuntime`. `onBindingChange` reports a validated binding name and the next text value for that legacy proof surface.
82
+ This example uses deprecated custom `0.1` APIs. The application host decides how each name maps to a locally bundled component and how declared button actions reach `McpNativeRuntime`. `onBindingChange` reports a validated binding name and the next text value for that legacy proof surface. New hosts should use `A2uiV1NativeSurface`.
83
83
 
84
84
  ## A2UI v1 render-plan adapter
85
85
 
@@ -101,12 +101,98 @@ const surface = store.get("profile");
101
101
  const plan = surface && createA2uiV1NativeRenderPlan(surface, policy);
102
102
  ```
103
103
 
104
- The adapter maps `Row`, `Column`, static or dynamic `List`, and `Card` to `View`; `Text` to `Text`; `Button` with a `Text` child to `Button`; and `TextField` to `TextInput`. Dynamic lists expand one validated template component per bound array item and remain inside the 1,024-node plan limit. The adapter resolves absolute and item-relative JSON Pointer values, translates relative `TextField` bindings into absolute renderer-local pointers, evaluates bounded literal `formatString`, host-localized `formatNumber`, `formatCurrency`, and `pluralize`, pure `and`, `or`, and `not`, and `@index` with optional offsets, maps supported container direction and alignment to owned React Native flex styles, applies component weight through a host-owned `View` wrapper with `flexGrow`, maps `TextField` variants to explicit native input behavior (including `secureTextEntry` for `obscured`), and preserves event context and explicit accessibility fields. Main-axis `stretch` and negative weight, which React Native flex layout cannot represent faithfully, fail closed.
104
+ The adapter maps `Row`, `Column`, static or dynamic `List`, and `Card` to `View`; `Text` to `Text`; `Button` with a `Text` child to `Button`; and `TextField` to `TextInput`. Dynamic lists expand one validated template component per bound array item and remain inside the 1,024-node plan limit. The adapter resolves absolute and item-relative JSON Pointer values, translates relative `TextField` bindings into absolute renderer-local pointers, evaluates bounded literal `formatString`, host-localized `formatNumber`, `formatCurrency`, `formatDate`, and `pluralize`, pure `and`, `or`, and `not`, `required`, bounded `regex`, `length`, `numeric`, and `email`, and `@index` with optional offsets, maps supported container direction and alignment to owned React Native flex styles, applies component weight through a host-owned `View` wrapper with `flexGrow`, maps `TextField` variants to explicit native input behavior (including `secureTextEntry` for `obscured`), and preserves event context and explicit accessibility fields. At the mounted boundary, text and buttons receive closed native roles, button accessibility state mirrors the derived disabled state, hidden text and controls are not accessibility elements, and text plus text inputs explicitly allow font scaling. Supported `TextField` checks set explicit `invalid` and `validationMessages` props on the host component and append declared failures to its accessibility hint; supported `Button` checks set `disabled`, expose declared messages, and cannot resolve or dispatch the event or local URL action until current renderer-local state passes. Main-axis `stretch` and negative weight, which React Native flex layout cannot represent faithfully, fail closed.
105
+
106
+ These mappings have automated host-boundary coverage plus passing Android 17 TalkBack and iOS 26.5
107
+ XCUITest evidence. The [native accessibility test
108
+ plan](../../docs/native-accessibility-testing.md) defines the verified platform matrix, shared
109
+ fixture, WCAG inspection, and strict evidence gate. The [automated robustness
110
+ gates](../../docs/a2ui-v1-performance.md) define repeatable Node.js render-plan budgets and
111
+ fixed-seed generated-input coverage.
112
+
113
+ For release/platform testing, `npm run native:host:prepare` generates an official temporary React
114
+ Native `0.87.1` or `0.86.3` host from local package tarballs and the pinned accessibility fixture.
115
+ The [native accessibility test plan](../../docs/native-accessibility-testing.md) documents Metro and
116
+ native build preflight, Android TalkBack and iOS XCUITest rows, verified WCAG outcomes, and the
117
+ strict evidence gate.
118
+
119
+ ### Host component adapters
120
+
121
+ The catalog may use React Native primitives directly or typed adapters around any locally bundled design system. The adapter helpers receive only the trusted primitive props selected by MCP Native and map them into the host component's API:
122
+
123
+ ```tsx
124
+ import { createNativeButtonAdapter, type NativeComponentCatalog } from "@mcp-native/react-native";
125
+ import { Text, TextInput, View } from "react-native";
126
+ import { DesignButton } from "your-design-system";
127
+
128
+ const components: NativeComponentCatalog = {
129
+ View,
130
+ Text,
131
+ TextInput,
132
+ Button: createNativeButtonAdapter(
133
+ DesignButton,
134
+ ({
135
+ title,
136
+ onPress,
137
+ disabled,
138
+ accessibilityLabel,
139
+ accessibilityRole,
140
+ accessibilityState,
141
+ accessible,
142
+ validationMessages,
143
+ }) => ({
144
+ label: title,
145
+ onActivate: onPress,
146
+ inactive: disabled === true,
147
+ assistiveLabel: accessibilityLabel,
148
+ assistiveElement: accessible,
149
+ assistiveRole: accessibilityRole,
150
+ assistiveState: accessibilityState,
151
+ ...(validationMessages === undefined ? {} : { errors: validationMessages }),
152
+ }),
153
+ ),
154
+ };
155
+ ```
156
+
157
+ `createNativeViewAdapter`, `createNativeTextAdapter`, and `createNativeTextInputAdapter` provide the same typed boundary for the other primitives. This supports wrappers around libraries such as Expo UI or Gluestack without coupling MCP Native to them. These helpers do not create new wire-level components: the supported semantic names remain the closed `View`, `Text`, `Button`, and `TextInput` render-plan catalog, and the A2UI adapter continues to reject components outside its explicit host allowlist. Mapper functions and target components are trusted application code; server input never selects an import, mapper, or unchecked target prop.
158
+
159
+ For richer local presentation, provide optional closed variant slots alongside the base primitives:
160
+
161
+ ```tsx
162
+ const components: NativeComponentCatalog = {
163
+ View,
164
+ Text,
165
+ Button,
166
+ TextInput,
167
+ variants: {
168
+ View: { row: HorizontalStack, column: VerticalStack, card: SurfaceCard, list: ItemList },
169
+ Text: { body: BodyText, caption: CaptionText },
170
+ Button: { default: DefaultButton, primary: PrimaryButton, borderless: LinkButton },
171
+ TextInput: {
172
+ shortText: ShortInput,
173
+ longText: MultilineInput,
174
+ number: NumericInput,
175
+ obscured: PasswordInput,
176
+ },
177
+ },
178
+ };
179
+ ```
180
+
181
+ Each override receives the same explicitly selected primitive props as its base component. Missing
182
+ entries fall back to `View`, `Text`, `Button`, or `TextInput`; omitted A2UI hints select their pinned
183
+ defaults (`body`, `default`, and `shortText`). The renderer consumes structural and style hints while
184
+ choosing a local component and never forwards `variant`, a server-provided style object, or an
185
+ arbitrary native prop. Hosts can combine variant slots with the typed adapter helpers when a design
186
+ system uses a different prop API. Variant slots apply only to `A2uiV1NativeSurface`; the custom `0.1`
187
+ `McpNativeSurface` always uses the four base primitives, even when the same host catalog is reused.
188
+
189
+ Create adapter components and the catalog at module scope, as above, or memoize them with stable dependencies. Each factory call intentionally creates a new React component type; calling one during every host render would remount that catalog entry and discard its component-local state. Generated adapters include descriptive React DevTools display names.
105
190
 
106
191
  Use `A2uiV1NativeSurface` to mount that subset with renderer-local string state and official action envelopes:
107
192
 
108
193
  ```tsx
109
194
  import { A2uiV1NativeSurface } from "@mcp-native/react-native";
195
+ import { Linking } from "react-native";
110
196
 
111
197
  <A2uiV1NativeSurface
112
198
  surface={surface}
@@ -120,12 +206,18 @@ import { A2uiV1NativeSurface } from "@mcp-native/react-native";
120
206
  sendToAgent(envelope, { dataModel });
121
207
  }
122
208
  }}
209
+ openUrlPolicy={({ url }) => new URL(url).origin === "https://docs.example.com"}
210
+ onOpenUrl={({ url }) => {
211
+ void Linking.openURL(url).catch(reportOpenUrlError);
212
+ }}
123
213
  />;
124
214
  ```
125
215
 
126
216
  Bound `TextField` changes update an owned local data model and rerender absolute or dynamic-list-relative bindings and formatted output immediately; they do not call the agent on each keystroke. Equivalent fresh store snapshots preserve those edits, while accepted agent data-model updates reset them. Repeated template buttons retain a renderer-only instance key, so pressing one resolves its user message, supported renderer functions, `@index`, and context again against the correct item in the latest local model while the official wire `sourceComponentId` remains the catalog component ID. The action is timestamped, reconstructed as finite JSON, and validated against the pinned official renderer-to-agent action schema. The callback receives the local data model only when the surface explicitly sets `sendDataModel: true`; otherwise its second argument is omitted. The host callback owns transport delivery and permission or consent boundaries.
127
217
 
128
- Renderer functions other than `formatString`, `formatNumber`, `formatCurrency`, `pluralize`, `and`, `or`, `not`, and template-scoped `@index`, renderer-side checks, local function actions, nested inline catalogs, and every other basic-catalog component fail closed. Number and currency formatting uses `Intl.NumberFormat`, while cardinal plural selection uses `Intl.PluralRules` and falls back to the required `other` form when the selected CLDR category is absent. The host may supply one validated, runtime-supported BCP 47 `locale` to the mounted surface, render-plan options, and event-resolution options, or omit it to use the runtime locale. Agent-controlled decimal precision is restricted to an integer from 0 through 100, currency must appear in ISO 4217 List One published 2026-01-01, boolean operands are all resolved with strict types before evaluation, formatter construction failures are controlled parse errors, and formatter caches live only for one bounded render or event-resolution pass. Expanded plans are capped at 1,024 nodes, 10,000 interpolations, and 1,048,576 formatted UTF-16 code units so repeated references or large bound arrays cannot amplify a small component graph into unbounded work; each formatted result also retains the shared 65,536-code-unit string limit.
218
+ `openUrl` is a local Button action, not an agent event. The host must allow the function name in the catalog policy and provide both `openUrlPolicy` and `onOpenUrl`. The adapter re-resolves the URL against current local state during the originating press, canonicalizes it, rejects non-HTTP(S), relative, credential-bearing, whitespace-containing, control-containing, Unicode-format-containing, or oversized values, and invokes the opener only when the synchronous policy returns exactly `true`. Invalid initial server values reject the surface; temporary invalid renderer-local text edits instead disable the affected Button until the value becomes valid, and strict resolution runs again before an enabled press can reach host policy. No URL handler is imported or called by this package. Each URL is capped at 8,192 UTF-16 code units and one expanded pass is capped at 1,048,576 URL code units.
219
+
220
+ Renderer functions other than `formatString`, `formatNumber`, `formatCurrency`, `formatDate`, `pluralize`, `required`, `regex`, `length`, `numeric`, `email`, `and`, `or`, `not`, template-scoped `@index`, and local Button action `openUrl`, nested inline catalogs, and every other basic-catalog component fail closed. Number and currency formatting uses `Intl.NumberFormat`, date formatting uses `Intl.DateTimeFormat`, and cardinal plural selection uses `Intl.PluralRules` with the required `other` fallback. `required` follows the pinned reference behavior for null, empty strings, and empty arrays. `length` and `numeric` use inclusive, ordered bounds, and `email` uses the pinned basic check with a 320-code-unit input cap. Agent-supplied `regex` is limited to 256 UTF-16 code units, a 4,096-code-unit input, repeats no larger than 4,096, no groups, alternation, backreferences, or Unicode property escapes, and at most one variable repeat; inputs over the cap fail the check, while unsupported or malformed patterns reject the surface. Expanded plans evaluate at most 10,000 renderer checks per pass. Each combined validation accessibility output is capped at 65,536 UTF-16 code units before construction, with at most 1,048,576 such output code units across one expanded pass. `formatDate` accepts finite Unix seconds or milliseconds, their numeric string forms, RFC 3339 timestamps, and strict `yyyy-MM-dd` dates. Absolute numeric magnitudes greater than `10,000,000,000` are milliseconds; all others are seconds. It supports the pinned catalog's `yy`, `yyyy`, `M`, `MM`, `MMM`, `MMMM`, `d`, `dd`, `E`, `EEEE`, `h`, `hh`, `H`, `HH`, `mm`, `ss`, and `a` token subset plus quoted literals; `h` and `hh` require `a`, other pattern letters fail closed, and one pattern may contain at most 128 tokens. The host may supply one validated, runtime-supported BCP 47 `locale` to the mounted surface, render-plan options, event-resolution options, and URL-resolution options, or omit it to use the runtime locale. A date-only `yyyy-MM-dd` value is a calendar date interpreted at midnight in the runtime time zone. An RFC 3339 value is an instant whose declared offset is applied before it is formatted in that runtime time zone. Agent-controlled decimal precision is restricted to an integer from 0 through 100, currency must appear in ISO 4217 List One published 2026-01-01, dynamic values resolve with strict types, formatter construction failures are controlled parse errors, and formatter caches live only for one bounded render, event-resolution, or URL-resolution pass. Expanded plans are capped at 1,024 nodes, 10,000 interpolations, and 1,048,576 formatted UTF-16 code units so repeated references or large bound arrays cannot amplify a small component graph into unbounded work; each formatted result also retains the shared 65,536-code-unit string limit.
129
221
 
130
222
  ## Public API
131
223
 
@@ -138,13 +230,25 @@ Renderer functions other than `formatString`, `formatNumber`, `formatCurrency`,
138
230
  | `createNativeRenderPlan` | Converts a validated `A2uiSurface` into a `NativeElement` tree. |
139
231
  | `createA2uiV1NativeRenderPlan` | Revalidates and adapts the supported v1 subset into a trusted `NativeElement` tree. |
140
232
  | `resolveA2uiV1NativeEvent` | Revalidates and resolves one reachable static or template-instance event against the latest local model. |
233
+ | `resolveA2uiV1NativeOpenUrl` | Revalidates and resolves one reachable HTTP(S) URL action against the latest local model. |
141
234
  | `A2UI_V1_NATIVE_COMPONENT_NAMES` | Exact basic-catalog component names implemented by the current native adapter. |
142
235
  | `A2UI_V1_NATIVE_MAX_RENDER_NODES` | Bound on expanded v1 render-plan nodes. |
236
+ | `A2UI_V1_NATIVE_MAX_OPEN_URL_LENGTH` | Per-action bound on canonical HTTP(S) URL length. |
143
237
  | `A2uiV1NativeEventDescriptor` | Resolved trusted-plan event data used by mounted dispatch or custom hosts. |
238
+ | `A2uiV1NativeOpenUrlDescriptor` | Canonical URL plus surface, component, and optional template-instance identity. |
144
239
  | `A2uiV1NativeRenderPlanOptions` | Optional renderer-local model and host-owned BCP 47 locale. |
145
240
  | `A2uiV1NativeEventResolutionOptions` | Optional template instance key and matching host-owned BCP 47 locale. |
241
+ | `A2uiV1NativeOpenUrlResolutionOptions` | Optional template instance key and matching host-owned BCP 47 locale for URL resolution. |
146
242
  | `A2uiV1NativeActionHandler` | Host callback receiving the validated action envelope and, when opted in, the local data model. |
147
- | `NativeComponentCatalog` | Contract for locally bundled `View`, `Text`, `Button`, and `TextInput` implementations. |
243
+ | `A2uiV1NativeOpenUrlPolicy` | Synchronous host predicate authorizing one canonical URL during its Button press. |
244
+ | `A2uiV1NativeOpenUrlHandler` | Host-owned callback that opens an authorized URL through a platform API. |
245
+ | `NativeComponentCatalog` | Base primitives plus optional closed host-owned component variants. |
246
+ | `NativeComponentVariants` | Optional overrides for supported structure and pinned style hints, with primitive fallbacks. |
247
+ | `Native*Variant` types | Closed view, text, button, and text-input variant keys. |
248
+ | `NativeAccessibilityRole` | Renderer-derived closed role union for supported text and button primitives. |
249
+ | `NativeAccessibilityState` | Renderer-derived state currently exposing only the supported button disabled flag. |
250
+ | `createNative*Adapter` helpers | Typed mappings from trusted primitive props into locally bundled component-library APIs. |
251
+ | `NativeComponentPropMapper` | Generic mapper type used by the four host component adapter helpers. |
148
252
  | `NativeActionHandler` | Synchronous handler for a validated declared action. |
149
253
  | `NativeBindingChangeHandler` | Handler receiving a validated binding name and the next text value. |
150
254
  | `McpNativeActionDispatcherOptions` | Required action error callback and optional result callback. |
@@ -152,12 +256,12 @@ Renderer functions other than `formatString`, `formatNumber`, `formatCurrency`,
152
256
 
153
257
  ## Current mappings
154
258
 
155
- | Surface node | Native component | Host props and event behavior |
156
- | ------------ | ---------------- | ------------------------------------------------------------------------------------------ |
157
- | `container` | `View` | Nested trusted children |
158
- | `text` | `Text` | Validated text as `children` |
159
- | `button` | `Button` | `title`, matching `accessibilityLabel`, and an `onPress` callback for its validated action |
160
- | `text-input` | `TextInput` | Label as placeholder/accessibility label, optional value, and binding-aware `onChangeText` |
259
+ | Surface node | Native component | Host props and event behavior |
260
+ | ------------ | ---------------- | ----------------------------------------------------------------------------------------- |
261
+ | `container` | `View` | Nested trusted children |
262
+ | `text` | `Text` | Validated `children`, closed `text` role, and enabled font scaling |
263
+ | `button` | `Button` | `title`, label, closed `button` role/state, and `onPress` for its validated action |
264
+ | `text-input` | `TextInput` | Label/placeholder, enabled font scaling, optional value, and binding-aware `onChangeText` |
161
265
 
162
266
  ## Trust boundary
163
267
 
@@ -169,9 +273,10 @@ Renderer functions other than `formatString`, `formatNumber`, `formatCurrency`,
169
273
  - Unsupported v1 components and arbitrary executable functions fail closed.
170
274
  - Declared actions and their complete JSON arguments are validated again immediately before emission.
171
275
  - Rendered component props are selected explicitly; unchecked server props are never spread into host components.
276
+ - Accessibility roles, native state, focus eligibility, and font scaling are renderer-derived; server data cannot replace them.
172
277
  - The host must explicitly map components, enforce permissions, and choose the renderer-to-agent transport; emitting an envelope does not grant network or device access.
173
278
  - Asynchronous action failures cannot become unhandled rejections because `useMcpNativeActionDispatcher` requires an error callback.
174
- - Future styling and component expansion must preserve allowlists rather than spreading unchecked server props.
279
+ - Styling variants preserve pinned allowlists and never spread unchecked server props; future component expansion must retain the same boundary.
175
280
 
176
281
  See [`@mcp-native/a2ui`](https://www.npmjs.com/package/@mcp-native/a2ui) for parsing and [`@mcp-native/core`](https://www.npmjs.com/package/@mcp-native/core) for action dispatch. Install [`mcp-native`](https://www.npmjs.com/package/mcp-native) for the combined runtime and UI APIs.
177
282
 
@@ -0,0 +1,86 @@
1
+ import { type ComponentType, type ReactNode } from "react";
2
+ export type NativeAccessibilityRole = "button" | "text";
3
+ export interface NativeAccessibilityState {
4
+ readonly disabled: boolean;
5
+ }
6
+ export interface NativeAccessibilityProps {
7
+ readonly accessible?: boolean;
8
+ readonly accessibilityElementsHidden?: boolean;
9
+ readonly accessibilityHint?: string;
10
+ readonly accessibilityLabel?: string;
11
+ readonly accessibilityLiveRegion?: "assertive" | "none" | "polite";
12
+ readonly importantForAccessibility?: "auto" | "no-hide-descendants";
13
+ }
14
+ export interface NativeViewStyle {
15
+ readonly alignItems?: "center" | "flex-end" | "flex-start" | "stretch";
16
+ readonly flexDirection?: "column" | "row";
17
+ readonly flexGrow?: number;
18
+ readonly justifyContent?: "center" | "flex-end" | "flex-start" | "space-around" | "space-between" | "space-evenly";
19
+ }
20
+ export interface NativeViewComponentProps extends NativeAccessibilityProps {
21
+ readonly children?: ReactNode;
22
+ readonly style?: NativeViewStyle;
23
+ }
24
+ export interface NativeTextComponentProps extends NativeAccessibilityProps {
25
+ readonly accessible: boolean;
26
+ readonly accessibilityRole: "text";
27
+ readonly allowFontScaling: true;
28
+ readonly children: string;
29
+ }
30
+ export interface NativeButtonComponentProps extends NativeAccessibilityProps {
31
+ readonly accessible: boolean;
32
+ readonly accessibilityLabel: string;
33
+ readonly accessibilityRole: "button";
34
+ readonly accessibilityState: NativeAccessibilityState;
35
+ readonly disabled?: boolean;
36
+ readonly onPress: () => void;
37
+ readonly title: string;
38
+ readonly validationMessages?: readonly string[];
39
+ }
40
+ export interface NativeTextInputComponentProps extends NativeAccessibilityProps {
41
+ readonly accessible: boolean;
42
+ readonly accessibilityLabel: string;
43
+ readonly allowFontScaling: true;
44
+ readonly invalid?: boolean;
45
+ readonly keyboardType?: "numeric";
46
+ readonly multiline?: boolean;
47
+ readonly onChangeText?: (value: string) => void;
48
+ readonly placeholder: string;
49
+ readonly secureTextEntry?: boolean;
50
+ readonly validationMessages?: readonly string[];
51
+ readonly value?: string;
52
+ }
53
+ export type NativeViewVariant = "card" | "column" | "list" | "row";
54
+ export type NativeTextVariant = "body" | "caption";
55
+ export type NativeButtonVariant = "borderless" | "default" | "primary";
56
+ export type NativeTextInputVariant = "longText" | "number" | "obscured" | "shortText";
57
+ /**
58
+ * Optional locally bundled component overrides for the pinned A2UI style hints.
59
+ * The renderer selects only these closed keys and still supplies primitive props.
60
+ */
61
+ export interface NativeComponentVariants {
62
+ readonly View?: Partial<Record<NativeViewVariant, ComponentType<NativeViewComponentProps>>>;
63
+ readonly Text?: Partial<Record<NativeTextVariant, ComponentType<NativeTextComponentProps>>>;
64
+ readonly Button?: Partial<Record<NativeButtonVariant, ComponentType<NativeButtonComponentProps>>>;
65
+ readonly TextInput?: Partial<Record<NativeTextInputVariant, ComponentType<NativeTextInputComponentProps>>>;
66
+ }
67
+ /** Locally bundled components chosen by the host application. */
68
+ export interface NativeComponentCatalog {
69
+ readonly View: ComponentType<NativeViewComponentProps>;
70
+ readonly Text: ComponentType<NativeTextComponentProps>;
71
+ readonly Button: ComponentType<NativeButtonComponentProps>;
72
+ readonly TextInput: ComponentType<NativeTextInputComponentProps>;
73
+ /** Optional semantic/style variants; omitted entries fall back to the base primitive. */
74
+ readonly variants?: NativeComponentVariants;
75
+ }
76
+ /** Maps renderer-selected primitive props into one locally bundled host component. */
77
+ export type NativeComponentPropMapper<TrustedProps extends object, HostProps extends object> = (props: TrustedProps) => HostProps;
78
+ /** Adapts trusted MCP Native view props to a host design-system component. */
79
+ export declare function createNativeViewAdapter<HostProps extends object>(component: ComponentType<HostProps>, mapProps: NativeComponentPropMapper<NativeViewComponentProps, HostProps>): ComponentType<NativeViewComponentProps>;
80
+ /** Adapts trusted MCP Native text props to a host design-system component. */
81
+ export declare function createNativeTextAdapter<HostProps extends object>(component: ComponentType<HostProps>, mapProps: NativeComponentPropMapper<NativeTextComponentProps, HostProps>): ComponentType<NativeTextComponentProps>;
82
+ /** Adapts trusted MCP Native button props to a host design-system component. */
83
+ export declare function createNativeButtonAdapter<HostProps extends object>(component: ComponentType<HostProps>, mapProps: NativeComponentPropMapper<NativeButtonComponentProps, HostProps>): ComponentType<NativeButtonComponentProps>;
84
+ /** Adapts trusted MCP Native text-input props to a host design-system component. */
85
+ export declare function createNativeTextInputAdapter<HostProps extends object>(component: ComponentType<HostProps>, mapProps: NativeComponentPropMapper<NativeTextInputComponentProps, HostProps>): ComponentType<NativeTextInputComponentProps>;
86
+ //# sourceMappingURL=component-adapters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component-adapters.d.ts","sourceRoot":"","sources":["../src/component-adapters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAE1E,MAAM,MAAM,uBAAuB,GAAG,QAAQ,GAAG,MAAM,CAAC;AAExD,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,2BAA2B,CAAC,EAAE,OAAO,CAAC;IAC/C,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAAQ,CAAC;IACnE,QAAQ,CAAC,yBAAyB,CAAC,EAAE,MAAM,GAAG,qBAAqB,CAAC;CACrE;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,YAAY,GAAG,SAAS,CAAC;IACvE,QAAQ,CAAC,aAAa,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC;IAC1C,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,cAAc,CAAC,EACpB,QAAQ,GACR,UAAU,GACV,YAAY,GACZ,cAAc,GACd,eAAe,GACf,cAAc,CAAC;CACpB;AAED,MAAM,WAAW,wBAAyB,SAAQ,wBAAwB;IACxE,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,eAAe,CAAC;CAClC;AAED,MAAM,WAAW,wBAAyB,SAAQ,wBAAwB;IACxE,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,gBAAgB,EAAE,IAAI,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,0BAA2B,SAAQ,wBAAwB;IAC1E,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,iBAAiB,EAAE,QAAQ,CAAC;IACrC,QAAQ,CAAC,kBAAkB,EAAE,wBAAwB,CAAC;IACtD,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACjD;AAED,MAAM,WAAW,6BAA8B,SAAQ,wBAAwB;IAC7E,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,gBAAgB,EAAE,IAAI,CAAC;IAChC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,CAAC;IAClC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAChD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,CAAC;AAEnE,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,SAAS,CAAC;AAEnD,MAAM,MAAM,mBAAmB,GAAG,YAAY,GAAG,SAAS,GAAG,SAAS,CAAC;AAEvE,MAAM,MAAM,sBAAsB,GAAG,UAAU,GAAG,QAAQ,GAAG,UAAU,GAAG,WAAW,CAAC;AAEtF;;;GAGG;AACH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE,aAAa,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;IAC5F,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE,aAAa,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC;IAC5F,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,mBAAmB,EAAE,aAAa,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC;IAClG,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAC1B,MAAM,CAAC,sBAAsB,EAAE,aAAa,CAAC,6BAA6B,CAAC,CAAC,CAC7E,CAAC;CACH;AAED,iEAAiE;AACjE,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,wBAAwB,CAAC,CAAC;IACvD,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC,wBAAwB,CAAC,CAAC;IACvD,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,0BAA0B,CAAC,CAAC;IAC3D,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,6BAA6B,CAAC,CAAC;IACjE,yFAAyF;IACzF,QAAQ,CAAC,QAAQ,CAAC,EAAE,uBAAuB,CAAC;CAC7C;AAED,sFAAsF;AACtF,MAAM,MAAM,yBAAyB,CAAC,YAAY,SAAS,MAAM,EAAE,SAAS,SAAS,MAAM,IAAI,CAC7F,KAAK,EAAE,YAAY,KAChB,SAAS,CAAC;AAef,8EAA8E;AAC9E,wBAAgB,uBAAuB,CAAC,SAAS,SAAS,MAAM,EAC9D,SAAS,EAAE,aAAa,CAAC,SAAS,CAAC,EACnC,QAAQ,EAAE,yBAAyB,CAAC,wBAAwB,EAAE,SAAS,CAAC,GACvE,aAAa,CAAC,wBAAwB,CAAC,CAEzC;AAED,8EAA8E;AAC9E,wBAAgB,uBAAuB,CAAC,SAAS,SAAS,MAAM,EAC9D,SAAS,EAAE,aAAa,CAAC,SAAS,CAAC,EACnC,QAAQ,EAAE,yBAAyB,CAAC,wBAAwB,EAAE,SAAS,CAAC,GACvE,aAAa,CAAC,wBAAwB,CAAC,CAEzC;AAED,gFAAgF;AAChF,wBAAgB,yBAAyB,CAAC,SAAS,SAAS,MAAM,EAChE,SAAS,EAAE,aAAa,CAAC,SAAS,CAAC,EACnC,QAAQ,EAAE,yBAAyB,CAAC,0BAA0B,EAAE,SAAS,CAAC,GACzE,aAAa,CAAC,0BAA0B,CAAC,CAE3C;AAED,oFAAoF;AACpF,wBAAgB,4BAA4B,CAAC,SAAS,SAAS,MAAM,EACnE,SAAS,EAAE,aAAa,CAAC,SAAS,CAAC,EACnC,QAAQ,EAAE,yBAAyB,CAAC,6BAA6B,EAAE,SAAS,CAAC,GAC5E,aAAa,CAAC,6BAA6B,CAAC,CAE9C"}
@@ -0,0 +1,26 @@
1
+ import { createElement } from "react";
2
+ function createComponentAdapter(primitiveName, component, mapProps) {
3
+ function NativeComponentAdapter(props) {
4
+ return createElement(component, mapProps(props));
5
+ }
6
+ const componentName = component.displayName ?? component.name ?? "Component";
7
+ NativeComponentAdapter.displayName = `McpNative${primitiveName}Adapter(${componentName})`;
8
+ return NativeComponentAdapter;
9
+ }
10
+ /** Adapts trusted MCP Native view props to a host design-system component. */
11
+ export function createNativeViewAdapter(component, mapProps) {
12
+ return createComponentAdapter("View", component, mapProps);
13
+ }
14
+ /** Adapts trusted MCP Native text props to a host design-system component. */
15
+ export function createNativeTextAdapter(component, mapProps) {
16
+ return createComponentAdapter("Text", component, mapProps);
17
+ }
18
+ /** Adapts trusted MCP Native button props to a host design-system component. */
19
+ export function createNativeButtonAdapter(component, mapProps) {
20
+ return createComponentAdapter("Button", component, mapProps);
21
+ }
22
+ /** Adapts trusted MCP Native text-input props to a host design-system component. */
23
+ export function createNativeTextInputAdapter(component, mapProps) {
24
+ return createComponentAdapter("TextInput", component, mapProps);
25
+ }
26
+ //# sourceMappingURL=component-adapters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component-adapters.js","sourceRoot":"","sources":["../src/component-adapters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAsC,MAAM,OAAO,CAAC;AAuG1E,SAAS,sBAAsB,CAC7B,aAAuD,EACvD,SAAmC,EACnC,QAA4D;IAE5D,SAAS,sBAAsB,CAAC,KAAmB;QACjD,OAAO,aAAa,CAAC,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IACnD,CAAC;IACD,MAAM,aAAa,GAAG,SAAS,CAAC,WAAW,IAAI,SAAS,CAAC,IAAI,IAAI,WAAW,CAAC;IAC7E,sBAAsB,CAAC,WAAW,GAAG,YAAY,aAAa,WAAW,aAAa,GAAG,CAAC;IAC1F,OAAO,sBAAsB,CAAC;AAChC,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,uBAAuB,CACrC,SAAmC,EACnC,QAAwE;IAExE,OAAO,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AAC7D,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,uBAAuB,CACrC,SAAmC,EACnC,QAAwE;IAExE,OAAO,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AAC7D,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,yBAAyB,CACvC,SAAmC,EACnC,QAA0E;IAE1E,OAAO,sBAAsB,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AAC/D,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,4BAA4B,CAC1C,SAAmC,EACnC,QAA6E;IAE7E,OAAO,sBAAsB,CAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AAClE,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,6 +1,11 @@
1
1
  import type { A2uiSurface, A2uiV1ActionEnvelope, A2uiV1SurfaceState, A2uiV1SurfaceValidationPolicy } from "@mcp-native/a2ui";
2
2
  import type { JsonObject, McpNativeAction, McpToolCallResult } from "@mcp-native/core";
3
- import { type ComponentType, type ReactElement, type ReactNode } from "react";
3
+ import { type ReactElement } from "react";
4
+ import type { NativeComponentCatalog } from "./component-adapters.js";
5
+ import { type A2uiV1NativeOpenUrlDescriptor } from "./v1.js";
6
+ export { createNativeButtonAdapter, createNativeTextAdapter, createNativeTextInputAdapter, createNativeViewAdapter, } from "./component-adapters.js";
7
+ export type { NativeComponentPropMapper } from "./component-adapters.js";
8
+ export type { NativeAccessibilityProps, NativeAccessibilityRole, NativeAccessibilityState, NativeButtonComponentProps, NativeButtonVariant, NativeComponentCatalog, NativeComponentVariants, NativeTextComponentProps, NativeTextInputComponentProps, NativeTextInputVariant, NativeTextVariant, NativeViewComponentProps, NativeViewStyle, NativeViewVariant, } from "./component-adapters.js";
4
9
  export type NativeComponentName = "Button" | "Text" | "TextInput" | "View";
5
10
  /**
6
11
  * A serializable render plan. A React Native host maps these trusted component
@@ -12,49 +17,11 @@ export interface NativeElement {
12
17
  readonly props: Readonly<Record<string, unknown>>;
13
18
  readonly children?: readonly NativeElement[];
14
19
  }
15
- export interface NativeAccessibilityProps {
16
- readonly accessibilityElementsHidden?: boolean;
17
- readonly accessibilityHint?: string;
18
- readonly accessibilityLabel?: string;
19
- readonly accessibilityLiveRegion?: "assertive" | "none" | "polite";
20
- readonly importantForAccessibility?: "auto" | "no-hide-descendants";
21
- }
22
- export interface NativeViewStyle {
23
- readonly alignItems?: "center" | "flex-end" | "flex-start" | "stretch";
24
- readonly flexDirection?: "column" | "row";
25
- readonly flexGrow?: number;
26
- readonly justifyContent?: "center" | "flex-end" | "flex-start" | "space-around" | "space-between" | "space-evenly";
27
- }
28
- export interface NativeViewComponentProps extends NativeAccessibilityProps {
29
- readonly children?: ReactNode;
30
- readonly style?: NativeViewStyle;
31
- }
32
- export interface NativeTextComponentProps extends NativeAccessibilityProps {
33
- readonly children: string;
34
- }
35
- export interface NativeButtonComponentProps extends NativeAccessibilityProps {
36
- readonly accessibilityLabel: string;
37
- readonly onPress: () => void;
38
- readonly title: string;
39
- }
40
- export interface NativeTextInputComponentProps extends NativeAccessibilityProps {
41
- readonly accessibilityLabel: string;
42
- readonly keyboardType?: "numeric";
43
- readonly multiline?: boolean;
44
- readonly onChangeText?: (value: string) => void;
45
- readonly placeholder: string;
46
- readonly secureTextEntry?: boolean;
47
- readonly value?: string;
48
- }
49
- /** Locally bundled components chosen by the host application. */
50
- export interface NativeComponentCatalog {
51
- readonly View: ComponentType<NativeViewComponentProps>;
52
- readonly Text: ComponentType<NativeTextComponentProps>;
53
- readonly Button: ComponentType<NativeButtonComponentProps>;
54
- readonly TextInput: ComponentType<NativeTextInputComponentProps>;
55
- }
20
+ /** @deprecated Use `A2uiV1NativeSurface` and its official action envelope handler. */
56
21
  export type NativeActionHandler = (action: McpNativeAction) => void;
22
+ /** @deprecated Use `A2uiV1NativeSurface` renderer-local data-model handling. */
57
23
  export type NativeBindingChangeHandler = (binding: string, value: string) => void;
24
+ /** @deprecated Use `A2uiV1NativeSurfaceProps`. */
58
25
  export interface McpNativeSurfaceProps {
59
26
  readonly surface: A2uiSurface;
60
27
  readonly components: NativeComponentCatalog;
@@ -62,16 +29,24 @@ export interface McpNativeSurfaceProps {
62
29
  readonly onBindingChange?: NativeBindingChangeHandler;
63
30
  }
64
31
  export type A2uiV1NativeActionHandler = (envelope: A2uiV1ActionEnvelope, dataModel?: JsonObject) => void;
32
+ /** Synchronous host authorization checked during the originating Button press. */
33
+ export type A2uiV1NativeOpenUrlPolicy = (request: A2uiV1NativeOpenUrlDescriptor) => boolean;
34
+ /** Host-owned platform opener. The library never invokes a browser or URL handler directly. */
35
+ export type A2uiV1NativeOpenUrlHandler = (request: A2uiV1NativeOpenUrlDescriptor) => void;
65
36
  export interface A2uiV1NativeSurfaceProps {
66
37
  readonly surface: A2uiV1SurfaceState;
67
38
  readonly policy: A2uiV1SurfaceValidationPolicy;
68
39
  readonly components: NativeComponentCatalog;
69
40
  /** Receives an official envelope and, only after explicit surface opt-in, the local model. */
70
41
  readonly onAction: A2uiV1NativeActionHandler;
42
+ /** Required with `onOpenUrl` when this surface is allowed to use the local `openUrl` function. */
43
+ readonly openUrlPolicy?: A2uiV1NativeOpenUrlPolicy;
44
+ /** Executes an authorized URL while the originating Button press is still active. */
45
+ readonly onOpenUrl?: A2uiV1NativeOpenUrlHandler;
71
46
  /** Observes renderer-local state changes without turning keystrokes into network calls. */
72
47
  readonly onDataModelChange?: (dataModel: JsonObject) => void;
73
48
  readonly actionMetadata?: JsonObject;
74
- /** Host-selected BCP 47 locale for renderer-side number and currency formatting. */
49
+ /** Host-selected BCP 47 locale for renderer-side number, currency, date, and plural formatting. */
75
50
  readonly locale?: string;
76
51
  /** Injectable RFC 3339 timestamp source for host clocks and deterministic tests. */
77
52
  readonly now?: () => string;
@@ -83,8 +58,9 @@ export interface McpNativeActionDispatcherOptions {
83
58
  readonly onError: (error: unknown) => void;
84
59
  readonly onResult?: (result: McpToolCallResult) => void;
85
60
  }
61
+ /** @deprecated Use `createA2uiV1NativeRenderPlan`. */
86
62
  export declare function createNativeRenderPlan(surface: A2uiSurface): NativeElement;
87
- /** Memoizes the trusted render plan for a validated surface identity. */
63
+ /** @deprecated Use `A2uiV1NativeSurface`. */
88
64
  export declare function useNativeRenderPlan(surface: A2uiSurface): NativeElement;
89
65
  /**
90
66
  * Creates a stable, synchronous event handler for a runtime's asynchronous
@@ -92,13 +68,13 @@ export declare function useNativeRenderPlan(surface: A2uiSurface): NativeElement
92
68
  * routed to the required error hook.
93
69
  */
94
70
  export declare function useMcpNativeActionDispatcher(dispatcher: McpNativeDispatcher, options: McpNativeActionDispatcherOptions): NativeActionHandler;
95
- /** Renders a validated surface with the host's locally bundled components. */
71
+ /** @deprecated Use `A2uiV1NativeSurface`. */
96
72
  export declare function McpNativeSurface({ surface, components, onAction, onBindingChange, }: McpNativeSurfaceProps): ReactElement;
97
73
  /**
98
74
  * Mounts the supported A2UI v1 subset with renderer-local two-way bindings.
99
75
  * Agent events are resolved against the latest local model at press time.
100
76
  */
101
- export declare function A2uiV1NativeSurface({ surface, policy, components, onAction, onDataModelChange, actionMetadata, locale, now, }: A2uiV1NativeSurfaceProps): ReactElement;
102
- export { A2UI_V1_NATIVE_COMPONENT_NAMES, A2UI_V1_NATIVE_MAX_RENDER_NODES, createA2uiV1NativeRenderPlan, resolveA2uiV1NativeEvent, } from "./v1.js";
103
- export type { A2uiV1NativeEventDescriptor, A2uiV1NativeEventResolutionOptions, A2uiV1NativeRenderPlanOptions, } from "./v1.js";
77
+ export declare function A2uiV1NativeSurface({ surface, policy, components, onAction, openUrlPolicy, onOpenUrl, onDataModelChange, actionMetadata, locale, now, }: A2uiV1NativeSurfaceProps): ReactElement;
78
+ export { A2UI_V1_NATIVE_COMPONENT_NAMES, A2UI_V1_NATIVE_MAX_OPEN_URL_LENGTH, A2UI_V1_NATIVE_MAX_RENDER_NODES, createA2uiV1NativeRenderPlan, resolveA2uiV1NativeEvent, resolveA2uiV1NativeOpenUrl, } from "./v1.js";
79
+ export type { A2uiV1NativeEventDescriptor, A2uiV1NativeEventResolutionOptions, A2uiV1NativeOpenUrlDescriptor, A2uiV1NativeOpenUrlResolutionOptions, A2uiV1NativeRenderPlanOptions, } from "./v1.js";
104
80
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}