feat(swift): define A2UI v0.9.1 common type schemas with swift-json-schema#1994
Merged
Conversation
…ma dependency Replaces the custom JSONSchema target with a multi-target Swift package structure that uses the swift-json-schema fork (v0.13.1) as an external dependency. This is the foundation for porting the A2UI v0.9.1 protocol implementation from prototype to production quality. Changes: - Remove custom JSONSchema target (JSONValue.swift + tests) - Add swift-json-schema dependency (from: "0.13.1") to Package.swift - Bump swift-tools-version to 6.1 and add macOS 13 to platforms - Define 4 production targets: A2UIJSON, A2UICore, A2UISwiftUI, A2UISampleClient - Define 3 test targets with placeholder tests - Create stub source files for each target - Update AGENTS.md to document new target architecture - Update .gitignore for Swift Package Manager artifacts Verification: - `swift package resolve` resolves swift-json-schema at 0.13.1 - `swift build` compiles all 7 targets - `swift test --enable-swift-testing` passes (3 placeholder tests)
…chema Implements all 14 A2UI v0.9.1 common type JSON Schema definitions using the swift-json-schema fork. Schemas are defined as a raw JSON document matching the specification's common_types.json exactly, and registered into Context via the remoteSchema parameter for $ref resolution. Changes: - Define complete common types document in A2UICommonSchema (all 14 defs: ComponentId, AccessibilityAttributes, ComponentCommon, ChildList, DataBinding, DynamicValue, DynamicString, DynamicNumber, DynamicBoolean, DynamicStringList, FunctionCall, CheckRule, Checkable, Action) - Add A2UISchemaRegistry helper to create a Context pre-populated with A2UI schemas - Add 31 tests covering URI helpers, document structure, schema registry, validation of all schema types (positive and negative cases), and cross-reference resolution (including recursive Action → FunctionCall → DynamicValue chains) - Remove placeholder A2UIJSONTests (superseded by comprehensive tests) Design notes: - Raw JSON string approach used instead of JSONValue dictionary literals to avoid Swift type-checker issues with deeply nested expressions - FunctionCall's catalog.json oneOf reference omitted; catalog-level validation handled at runtime by ComponentCatalog - Context.remoteSchemaStorage is internal in the fork, so schemas are registered via the Context(remoteSchema:) initializer Verification: - swift build passes (all targets) - swift test passes (34 tests in 3 suites, 0.017s)
Contributor
There was a problem hiding this comment.
Code Review
This pull request introduces the complete A2UI v0.9.1 common type schema definitions (A2UICommonSchema) and a helper registry (A2UISchemaRegistry) to facilitate JSON schema validation and $ref resolution in Swift. It also adds comprehensive unit tests verifying the structure and validation behavior of these schemas. The reviewer feedback highlights two main issues: several lines within the raw JSON string literal exceed the 100-character limit, and the use of try! for parsing the document violates safety guidelines against forced tries.
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> Signed-off-by: Pete Biencourt <piebie@google.com>
jacobsimionato
approved these changes
Jul 17, 2026
pinieb
enabled auto-merge (squash)
July 17, 2026 15:10
gspencergoog
disabled auto-merge
July 17, 2026 19:32
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Implements all 14 A2UI v0.9.1 common type JSON Schema definitions using
the swift-json-schema fork. Schemas are defined as a raw JSON document
matching the specification's common_types.json exactly, and registered
into Context via the remoteSchema parameter for $ref resolution.
Changes:
defs: ComponentId, AccessibilityAttributes, ComponentCommon, ChildList,
DataBinding, DynamicValue, DynamicString, DynamicNumber, DynamicBoolean,
DynamicStringList, FunctionCall, CheckRule, Checkable, Action)
A2UI schemas
validation of all schema types (positive and negative cases), and
cross-reference resolution (including recursive Action → FunctionCall
→ DynamicValue chains)
Design notes:
to avoid Swift type-checker issues with deeply nested expressions
validation handled at runtime by ComponentCatalog
registered via the Context(remoteSchema:) initializer
Verification: