Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
5527a43
Remove redundant schema validation tests and legacy payload helper me…
nan-yu Apr 22, 2026
6e9f9fc
Remove example loading logic from A2uiCatalog and replace with standa…
nan-yu Apr 22, 2026
3632b52
Migrate schema modifier tests from Python to conformance YAML files
nan-yu Apr 22, 2026
618ef62
Add Schema Manager conformance tests
nan-yu Apr 22, 2026
b99a7fc
Migrate streaming parser conformance tests to a dedicated configurati…
nan-yu Apr 22, 2026
26635e9
Migrate payload fixer unit tests to conformance test suite
nan-yu Apr 22, 2026
fd62433
Migrate c++ parser tests to centralized conformance runner and consol…
nan-yu Apr 22, 2026
ef788c6
Consolidate streaming parser tests into conformance tests
nan-yu Apr 22, 2026
869dac3
Implement catalog conformance test runner
nan-yu Apr 22, 2026
01dc995
Implement SchemaManager conformance tests in C++ and remove redundant…
nan-yu Apr 22, 2026
78caae2
Reorganize conformance test suite into modular subdirectories and upd…
nan-yu Apr 23, 2026
6eef4d9
Remove json-schema-validator dependency and modernize memory manageme…
nan-yu Apr 23, 2026
1f05e1d
Update the conformance tests for schema management
nan-yu Apr 23, 2026
ef66fef
Update README to reflect restructuring of conformance test suites and…
nan-yu Apr 23, 2026
10065c0
Update s2c_schema path in validator
nan-yu Apr 23, 2026
b1d6125
Silence unused variable warning in example validation during JSON par…
nan-yu Apr 23, 2026
c3d87c3
Update conformance schema to make catalog fields optional in root and…
nan-yu Apr 23, 2026
34ec768
Implement glob pattern support for file path matching in A2uiCatalog …
nan-yu Apr 23, 2026
b170b6a
Integrate jsoncons for robust JSON schema validation and refactor cat…
nan-yu Apr 24, 2026
bb2ba82
test: add conformance validation tests for custom catalogs in v0.8 an…
nan-yu Apr 24, 2026
cd793c3
Move get_reachable_components to A2uiStreamParserImpl and implement s…
nan-yu Apr 24, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 14 additions & 3 deletions agent_sdks/conformance/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,20 @@
To ensure behavioral parity across all SDK implementations (Python, Kotlin, etc.), the project maintains a language-agnostic conformance suite in this directory.

## Suite Structure
* `parser.yaml`: Contains test cases for the `A2uiStreamParser`, verifying chunk buffering, incremental yielding, and edge cases like cut tokens.
* `validator.yaml`: Contains test cases for the `A2uiValidator`, verifying structural integrity, cycle detection, and reachability.
* `conformance_schema.json`: The JSON schema that validates the structure of the YAML test files themselves.
All test suites are located in the `suites/` directory:
* `suites/streaming_parser.yaml`: Contains test cases for the `A2uiStreamParser` (streaming), verifying chunk buffering, incremental yielding, and edge cases like cut tokens.
* `suites/parser.yaml`: Contains test cases for non-streaming parsing and payload fixing.
* `suites/validator.yaml`: Contains test cases for the `A2uiValidator`, verifying structural integrity, cycle detection, and reachability.
* `suites/catalog.yaml`: Contains test cases for `A2uiCatalog` (prune, render, load).
* `suites/schema_manager.yaml`: Contains test cases for `A2uiSchemaManager` (select_catalog, load_catalog, generate_prompt).

All static test data and simplified schemas are located in the `test_data/` directory.

`conformance_schema.json` at the root is the JSON schema that validates the structure of the YAML test files themselves.





## Usage in SDKs
Each language SDK must implement a test harness that:
Expand Down
171 changes: 150 additions & 21 deletions agent_sdks/conformance/conformance_schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,29 +20,53 @@
"properties": {
"version": {
"type": "string",
"enum": ["0.8", "0.9"],
"enum": [
"0.8",
"0.9"
],
"description": "Protocol version."
},
"s2c_schema": {
"oneOf": [
{ "type": "string", "description": "Path to simplified schema file." },
{ "type": "object", "description": "Inlined schema object." }
{
"type": "string",
"description": "Path to simplified schema file."
},
{
"type": "object",
"description": "Inlined schema object."
}
]
},
"catalog_schema": {
"oneOf": [
{ "type": "string", "description": "Path to catalog file." },
{ "type": "object", "description": "Inlined catalog object." }
{
"type": "string",
"description": "Path to catalog file."
},
{
"type": "object",
"description": "Inlined catalog object."
}
]
},
"common_types_schema": {
"oneOf": [
{ "type": "string", "description": "Path to common types schema file." },
{ "type": "object", "description": "Inlined common types schema object." }
{
"type": "string",
"description": "Path to common types schema file."
},
{
"type": "object",
"description": "Inlined common types schema object."
}
]
}
},
"required": ["version", "s2c_schema", "catalog_schema"]
"required": [
"version"
]

},
"process_chunk": {
"type": "array",
Expand All @@ -60,8 +84,15 @@
"items": {
"type": "object",
"properties": {
"text": { "type": "string" },
"a2ui": { "type": "array", "items": { "type": "object" } }
"text": {
"type": "string"
},
"a2ui": {
"type": "array",
"items": {
"type": "object"
}
}
}
}
},
Expand All @@ -70,10 +101,20 @@
"description": "Expected error message (regex) if this step should fail."
}
},
"required": ["input"],
"required": [
"input"
],
"oneOf": [
{ "required": ["expect"] },
{ "required": ["expect_error"] }
{
"required": [
"expect"
]
},
{
"required": [
"expect_error"
]
}
]
}
},
Expand All @@ -85,8 +126,15 @@
"properties": {
"payload": {
"oneOf": [
{ "type": "object" },
{ "type": "array", "items": { "type": "object" } }
{
"type": "object"
},
{
"type": "array",
"items": {
"type": "object"
}
}
],
"description": "Payload to validate (single message or list of messages)."
},
Expand All @@ -95,14 +143,95 @@
"description": "Expected error message (regex) if validation should fail."
}
},
"required": ["payload"]
"required": [
"payload"
]
}
},
"action": {
"type": "string",
"description": "Action for general conformance tests (e.g., prune, render, select_catalog)."
},
"args": {
"type": "object",
"description": "Arguments for the action."
},
"expect": {
"description": "Expected output for the action."
},
"expect_contains": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of substrings expected in the output."
},
"expect_output": {
"type": "string",
"description": "Expected raw string output."
},
"input": {
"type": "string",
"description": "Input for single-step tests."
}
},
"required": ["name", "catalog"],
"oneOf": [
{ "required": ["process_chunk"] },
{ "required": ["validate"] }
"required": [
"name"
],
"anyOf": [
{

"required": [
"process_chunk",
"catalog"
],
"properties": {
"catalog": {
"required": [
"s2c_schema",
"catalog_schema"
]
}
}
},
{
"required": [
"validate",
"catalog"
],
"properties": {
"catalog": {
"required": [
"s2c_schema",
"catalog_schema"
]
}
}
},

{
"required": [
"action"
]
},
{
"required": [
"input"
],
"oneOf": [
{
"required": [
"expect"
]
},
{
"required": [
"expect_error"
]
}
]
}
]

}
}
}
83 changes: 0 additions & 83 deletions agent_sdks/conformance/simplified_s2c_v09.json

This file was deleted.

Loading
Loading