From a8b26fbba51f0b032957001d17a8bda3d9fe66a5 Mon Sep 17 00:00:00 2001 From: Jay Gindin Date: Wed, 18 Mar 2026 10:46:25 -0400 Subject: [PATCH 1/2] Mostly revert "Fixes to address Zod & property renaming. (#872)" The necessary changes to handle proper property renaming will take place internally. --- renderers/web_core/CHANGELOG.md | 3 + renderers/web_core/package.json | 2 +- .../web_core/src/v0_8/types/components.ts | 38 ++++---- .../web_core/src/v0_8/types/primitives.ts | 6 +- renderers/web_core/src/v0_8/types/types.ts | 88 +++---------------- .../src/v0_9/schema/server-to-client.ts | 46 ++-------- 6 files changed, 49 insertions(+), 134 deletions(-) diff --git a/renderers/web_core/CHANGELOG.md b/renderers/web_core/CHANGELOG.md index 10a6f2cac..a1ff13538 100644 --- a/renderers/web_core/CHANGELOG.md +++ b/renderers/web_core/CHANGELOG.md @@ -1,3 +1,6 @@ +## 0.8.8 +- Remove schema definition tweaks from 0.8.7 + ## 0.8.7 - Adds `catalogId` to v0.8 schemas (was removed by mistake earlier) diff --git a/renderers/web_core/package.json b/renderers/web_core/package.json index 3e983139c..64add93f4 100644 --- a/renderers/web_core/package.json +++ b/renderers/web_core/package.json @@ -1,6 +1,6 @@ { "name": "@a2ui/web_core", - "version": "0.8.7", + "version": "0.8.8", "description": "A2UI Core Library", "main": "./dist/src/v0_8/index.js", "types": "./dist/src/v0_8/index.d.ts", diff --git a/renderers/web_core/src/v0_8/types/components.ts b/renderers/web_core/src/v0_8/types/components.ts index 197016281..980464832 100644 --- a/renderers/web_core/src/v0_8/types/components.ts +++ b/renderers/web_core/src/v0_8/types/components.ts @@ -37,22 +37,22 @@ import type { VideoSchema, } from "../schema/common-types.js"; -export declare interface Action extends z.infer {} -export declare interface Text extends z.infer {} -export declare interface Image extends z.infer {} -export declare interface Icon extends z.infer {} -export declare interface Video extends z.infer {} -export declare interface AudioPlayer extends z.infer {} -export declare interface Tabs extends z.infer {} -export declare interface Row extends z.infer {} -export declare interface Column extends z.infer {} -export declare interface List extends z.infer {} -export declare interface Button extends z.infer {} -export declare interface Modal extends z.infer {} -export declare interface Card extends z.infer {} -export declare interface Divider extends z.infer {} -export declare interface TextField extends z.infer {} -export declare interface Checkbox extends z.infer {} -export declare interface DateTimeInput extends z.infer {} -export declare interface MultipleChoice extends z.infer {} -export declare interface Slider extends z.infer {} +export type Action = z.infer; +export type Text = z.infer; +export type Image = z.infer; +export type Icon = z.infer; +export type Video = z.infer; +export type AudioPlayer = z.infer; +export type Tabs = z.infer; +export type Row = z.infer; +export type Column = z.infer; +export type List = z.infer; +export type Button = z.infer; +export type Modal = z.infer; +export type Card = z.infer; +export type Divider = z.infer; +export type TextField = z.infer; +export type Checkbox = z.infer; +export type DateTimeInput = z.infer; +export type MultipleChoice = z.infer; +export type Slider = z.infer; diff --git a/renderers/web_core/src/v0_8/types/primitives.ts b/renderers/web_core/src/v0_8/types/primitives.ts index de50b4962..23a9bd333 100644 --- a/renderers/web_core/src/v0_8/types/primitives.ts +++ b/renderers/web_core/src/v0_8/types/primitives.ts @@ -21,6 +21,6 @@ import type { BooleanValueSchema, } from "../schema/common-types.js"; -export declare interface StringValue extends z.infer {} -export declare interface NumberValue extends z.infer {} -export declare interface BooleanValue extends z.infer {} +export type StringValue = z.infer; +export type NumberValue = z.infer; +export type BooleanValue = z.infer; diff --git a/renderers/web_core/src/v0_8/types/types.ts b/renderers/web_core/src/v0_8/types/types.ts index c4d7d3b2c..8f7293bcd 100644 --- a/renderers/web_core/src/v0_8/types/types.ts +++ b/renderers/web_core/src/v0_8/types/types.ts @@ -23,19 +23,13 @@ export { type Action } from "./components.js"; import { AudioPlayer, Button, - Card, Checkbox, - Column, DateTimeInput, Divider, Icon, Image, - List, - Modal, MultipleChoice, - Row, Slider, - Tabs, Text, TextField, Video, @@ -256,87 +250,33 @@ export declare type DataMap = Map; export declare type DataArray = DataValue[]; /** A template for creating components from a list in the data model. */ -export declare interface ComponentArrayTemplate - extends z.infer { - componentId: string; - dataBinding: string; -} +export type ComponentArrayTemplate = z.infer< + typeof ComponentArrayTemplateSchema +>; /** Defines a list of child components, either explicitly or via a template. */ -export declare interface ComponentArrayReference - extends z.infer { - explicitList?: string[]; - template?: ComponentArrayTemplate; -} +export type ComponentArrayReference = z.infer< + typeof ComponentArrayReferenceSchema +>; /** Represents the general shape of a component's properties. */ -export declare interface ComponentProperties extends z.infer { - Text?: Text; - Image?: Image; - Icon?: Icon; - Video?: Video; - AudioPlayer?: AudioPlayer; - Row?: Row; - Column?: Column; - List?: List; - Card?: Card; - Tabs?: Tabs; - Divider?: Divider; - Modal?: Modal; - Button?: Button; - Checkbox?: Checkbox; - TextField?: TextField; - DateTimeInput?: DateTimeInput; - MultipleChoice?: MultipleChoice; - Slider?: Slider; -} +export type ComponentProperties = z.infer; /** A raw component instance from a SurfaceUpdate message. */ -export declare interface ComponentInstance extends z.infer { - id: string; - weight?: number; - component: ComponentProperties; -} +export type ComponentInstance = z.infer; -export declare interface BeginRenderingMessage extends z.infer { - surfaceId: string; - root: string; - styles?: { - font?: string; - primaryColor?: string; - }; -} +export type BeginRenderingMessage = z.infer; -export declare interface SurfaceUpdateMessage extends z.infer { - surfaceId: string; - components: ComponentInstance[]; -} +export type SurfaceUpdateMessage = z.infer; -export declare interface DataModelUpdate extends z.infer { - surfaceId: string; - path?: string; - contents: ValueMap[]; -} +export type DataModelUpdate = z.infer; // ValueMap is a type of DataObject for passing to the data model. -export declare interface ValueMap extends z.infer { - key: string; - valueString?: string; - valueNumber?: number; - valueBoolean?: boolean; - valueMap?: ValueMap[]; -} +export type ValueMap = z.infer; -export declare interface DeleteSurfaceMessage extends z.infer { - surfaceId: string; -} +export type DeleteSurfaceMessage = z.infer; -export declare interface ServerToClientMessage extends z.infer { - beginRendering?: BeginRenderingMessage; - surfaceUpdate?: SurfaceUpdateMessage; - dataModelUpdate?: DataModelUpdate; - deleteSurface?: DeleteSurfaceMessage; -} +export type ServerToClientMessage = z.infer; /** * A recursive type for any value that can appear within a resolved component diff --git a/renderers/web_core/src/v0_9/schema/server-to-client.ts b/renderers/web_core/src/v0_9/schema/server-to-client.ts index d770610ad..ff378b1fd 100644 --- a/renderers/web_core/src/v0_9/schema/server-to-client.ts +++ b/renderers/web_core/src/v0_9/schema/server-to-client.ts @@ -91,38 +91,14 @@ export const DeleteSurfaceMessageSchema = z }) .strict(); -export declare interface CreateSurfaceMessage extends z.infer { - version: "v0.9"; - createSurface: { - surfaceId: string; - catalogId: string; - theme?: any; - sendDataModel?: boolean; - }; -} -export declare interface UpdateComponentsMessage - extends z.infer { - version: "v0.9"; - updateComponents: { - surfaceId: string; - components: any[]; - }; -} -export declare interface UpdateDataModelMessage - extends z.infer { - version: "v0.9"; - updateDataModel: { - surfaceId: string; - path?: string; - value?: any; - }; -} -export declare interface DeleteSurfaceMessage extends z.infer { - version: "v0.9"; - deleteSurface: { - surfaceId: string; - }; -} +export type CreateSurfaceMessage = z.infer; +export type UpdateComponentsMessage = z.infer< + typeof UpdateComponentsMessageSchema +>; +export type UpdateDataModelMessage = z.infer< + typeof UpdateDataModelMessageSchema +>; +export type DeleteSurfaceMessage = z.infer; export const A2uiMessageSchema = z.union([ CreateSurfaceMessageSchema, @@ -132,8 +108,4 @@ export const A2uiMessageSchema = z.union([ ]); /** A message sent from the A2UI server to the client. */ -export type A2uiMessage = - | CreateSurfaceMessage - | UpdateComponentsMessage - | UpdateDataModelMessage - | DeleteSurfaceMessage; +export type A2uiMessage = z.infer; From 3c74e878b560d7784b178866432583149bfa0368 Mon Sep 17 00:00:00 2001 From: Jay Gindin Date: Wed, 18 Mar 2026 11:08:42 -0400 Subject: [PATCH 2/2] Also revert this. --- renderers/web_core/src/v0_8/data/model-processor.ts | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/renderers/web_core/src/v0_8/data/model-processor.ts b/renderers/web_core/src/v0_8/data/model-processor.ts index e5f264c99..b5873464d 100644 --- a/renderers/web_core/src/v0_8/data/model-processor.ts +++ b/renderers/web_core/src/v0_8/data/model-processor.ts @@ -29,7 +29,6 @@ import { SurfaceID, SurfaceUpdateMessage, MessageProcessor, - ValueMap, } from "../types/types.js"; import { A2uiMessageSchema } from "../schema/server-to-client.js"; import { A2uiStateError, A2uiValidationError } from "../errors.js"; @@ -256,7 +255,7 @@ export class A2uiMessageProcessor implements MessageProcessor { return map; } - private setDataByPath(root: DataMap, path: string, value: DataValue | ValueMap[]): void { + private setDataByPath(root: DataMap, path: string, value: DataValue): void { // Check if the incoming value is the special key-value array format. if ( Array.isArray(value) && @@ -270,12 +269,12 @@ export class A2uiMessageProcessor implements MessageProcessor { if (valueKey) { // Extract the primitive value - value = item[valueKey] as DataValue | ValueMap[]; + value = item[valueKey]; // We must still process this value in case it's a valueMap or // a JSON string. if (valueKey === "valueMap" && Array.isArray(value)) { - value = this.convertKeyValueArrayToMap(value as DataArray); + value = this.convertKeyValueArrayToMap(value); } else if (typeof value === "string") { value = this.parseIfJsonString(value); } @@ -283,10 +282,10 @@ export class A2uiMessageProcessor implements MessageProcessor { // the function. } else { // Malformed, but fall back to existing behavior. - value = this.convertKeyValueArrayToMap(value as DataArray); + value = this.convertKeyValueArrayToMap(value); } } else { - value = this.convertKeyValueArrayToMap(value as DataArray); + value = this.convertKeyValueArrayToMap(value); } } @@ -339,7 +338,7 @@ export class A2uiMessageProcessor implements MessageProcessor { } const finalSegment = segments[segments.length - 1]; - const storedValue = value as DataValue; + const storedValue = value; if (current instanceof this.mapCtor) { current.set(finalSegment, storedValue); } else if (Array.isArray(current) && /^\d+$/.test(finalSegment)) {