Skip to content

Commit 795c373

Browse files
authored
Merge branch 'main' into feat/generic-a2ui-react-renderer
Signed-off-by: Yuzuru Tanahashi <75597583+sugoi-yuzuru@users.noreply.github.com>
2 parents f5abe97 + 525f3f1 commit 795c373

305 files changed

Lines changed: 15059 additions & 10981 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.agents/skills/a2ui-agent-maintenance/SKILL.md

Lines changed: 0 additions & 25 deletions
This file was deleted.
Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
---
2+
name: a2ui-implement-new-sdks-for-client-language
3+
description: Step-by-step phased instructions for building new A2UI Core SDKs, Framework Adapters, and Inference SDKs from scratch in any client language.
4+
---
5+
6+
# A2UI SDK Implementation Guide (Phased Execution)
7+
8+
This skill provides expert instructions and sequences for AI agents or contributors tasked with implementing A2UI Core SDKs, Framework Adapters, or Agent/Inference SDKs in a new programming language or UI framework.
9+
10+
---
11+
12+
## **1. Core State SDK Phases**
13+
14+
If you are building a new **Core SDK** (e.g., in Rust, Swift, Go, or C++), you must follow this sequence of phases:
15+
16+
### **Phase 1: Context & Schemas Ingestion**
17+
18+
Thoroughly review:
19+
20+
- `blueprints/modules/a2ui_core.blueprint.md` (for state and message structures).
21+
- `specification/v1_0/json/common_types.json` (dynamic binding schemas).
22+
- `specification/v1_0/json/server_to_client.json` (message envelopes).
23+
- `specification/v1_0/catalogs/basic/catalog.json` (target components catalog).
24+
25+
### **Phase 2: Technical Architecture Planning**
26+
27+
Create a detailed, local architectural proposal detailing:
28+
29+
- **Dependencies**: Which Schema library and Observable/Reactive library will you use? Note that the reactive library must support both discrete event subscription and stateful, signal-like data streams (e.g., BehaviorSubject/Signal).
30+
- **Component APIs**: How will you define the `ComponentApi` interface in this language?
31+
- **Binding Strategy**: How will you structure the abstract Core Binder Layer?
32+
- _STOP and obtain human reviewer approval on this plan before writing code._
33+
34+
### **Phase 3: Core Model Layer**
35+
36+
Implement the framework-agnostic data and processor layers:
37+
38+
1. **Observables & Signals**: Implement multi-cast reactive streams with clear unsubscribe mechanism to prevent leaks.
39+
2. **Protocol Structures**: Create strictly-typed native classes/structs representing `A2uiMessage` envelopes and client capabilities with serialization/deserialization.
40+
3. **DataModel & JSON Pointers**: Implement relative/absolute path resolution, auto-vivification (auto-typing intermediate segments), and bubble/cascade path change notifications.
41+
4. **Core State Models**: Implement `ComponentModel`, `SurfaceComponentsModel`, `SurfaceModel`, and `SurfaceGroupModel`.
42+
5. **Context Mapping**: Implement `DataContext` and `ComponentContext`.
43+
6. **MessageProcessor**: Ingest incoming messages and mutate the state models. Generate `inlineCatalogs` client capabilities.
44+
7. **Verification**: Write comprehensive unit tests for pointer cascading, JSON deserialization/validation, and message dispatching.
45+
46+
### **Phase 4: Foundational Basic Catalog Support**
47+
48+
Bootstrap support for the Basic Catalog:
49+
50+
- **Foundational Components**: Define the pure API schemas and Binders for: `Text`, `Row`, `Column`, `Button`, and `TextField`.
51+
- **Foundational Functions**: Implement `formatString` to interpret `${expression}` syntaxes, supporting recursive token evaluations and reactive coercion.
52+
- **Verification**: Ensure properties update reactively when underlying data paths emit notifications.
53+
54+
### **Phase 5: Complete Basic Catalog Support**
55+
56+
- **Full Components & Binders**: Define core binders for all other components in `basic/catalog.json`.
57+
- **Full Functions**: Implement remaining basic mathematical, logical, and array operations.
58+
- **Validation**: Ensure strict type coercion rules are satisfied and memory disposals work flawlessly.
59+
60+
---
61+
62+
## **2. Framework Adapter SDK Phases**
63+
64+
If you are building a new **UI Framework Adapter / Renderer** (e.g., in Flutter/Dart, SwiftUI, Jetpack Compose, Vue, or Svelte), follow this sequence:
65+
66+
### **Phase 1: Ingestion & Core Integration**
67+
68+
Review:
69+
70+
- `blueprints/modules/a2ui_framework_adapter.blueprint.md` (View and rendering architecture).
71+
- `specification/v1_0/docs/basic_catalog_implementation_guide.md` (spacing, alignment, and typography specifications).
72+
73+
### **Phase 2: Architectural Plan**
74+
75+
Draft a plan specifying:
76+
77+
- **Component Registry**: How components are dynamically resolved and instantiated.
78+
- **Surface Widget**: How the root canvas mounts and recurses through the layout tree starting at `root`.
79+
- **Observer/State Bridge**: Which Strategy (Direct, Predefined Binders, or Automated wrappers) will connect core signals to native views.
80+
- _STOP and obtain human reviewer approval on this plan._
81+
82+
### **Phase 3: Adapter & Lifecycle Layer**
83+
84+
- Implement `ComponentImplementation` base traits/classes.
85+
- Implement the framework-native `Surface` entrypoint widget.
86+
- Implement subscription management: lazy-subscribing only on mount, handling path stability updates, and strictly calling `dispose()` on unmount.
87+
88+
### **Phase 4: Bootstrapping Basic Catalog Rendering**
89+
90+
- Build native visual elements for: `Text`, `Row`, `Column`, `Button`, and `TextField`.
91+
- Bundle these elements into the first framework catalog adapter.
92+
- Verify reactive layout properties dynamically.
93+
94+
### **Phase 5: Gallery Application Milestone**
95+
96+
Build the **Gallery App** as a testing playground with:
97+
98+
- Left Column: Sample navigation.
99+
- Center Column: Surface preview, JSON message stream, and step-by-step interactive message stepper.
100+
- Right Column: Live data model inspect pane and action logger.
101+
- Load the 5 foundational verification examples: `00_simple-text.json`, `00_row-layout.json`, `00_complex-layout.json`, `00_interactive-button.json`, and `00_simple-login-form.json`.
102+
- _STOP and obtain human reviewer approval of the UI and visual rendering performance._
103+
104+
### **Phase 6: Full Catalog Support**
105+
106+
- Implement all remaining widgets (e.g. Card, Image, List, etc.) and validation traits like `Checkable`.
107+
- Update the Gallery App to support all official examples in `specification/v1_0/catalogs/basic/examples/`.
108+
- Run visual parity and event action tests to verify correctness.

.agents/skills/a2ui-issue-triage/references/triage_criteria.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ _Note: There is no P4 priority tier. Issues that are out of scope, highly custom
4040
### 2. Feature Requests
4141

4242
- **Analysis**:
43-
- Verify if the request aligns with the [A2UI roadmap](../../../../docs/roadmap.md) and/or design philosophy for the affected components. Be lenient if the idea can be implemented entirely as a client-side catalog extension or a custom renderer component without modifying the core protocol schemas or SDK interfaces.
43+
- Verify if the request aligns with the [A2UI roadmap](../../../../docs/public/roadmap.md) and/or design philosophy for the affected components. Be lenient if the idea can be implemented entirely as a client-side catalog extension or a custom renderer component without modifying the core protocol schemas or SDK interfaces.
4444
- Note if the request seems to be related to a specific issue or PR that has already been discussed.
4545
- **Action**:
4646
- If aligned, set action to `backlog` with priority `P2` or `P3` and suggest appropriate component labels (e.g., `component: standard catalog specification`, `type: feature/enhancement`).
@@ -50,10 +50,10 @@ _Note: There is no P4 priority tier. Issues that are out of scope, highly custom
5050

5151
- **Analysis**:
5252
- Identify if the issue is a question about usage or setup rather than a bug.
53-
- If the question is answered in the documentation (e.g., [quickstart.md](../../../../docs/quickstart.md)), provide a link to the relevant guide in the response.
53+
- If the question is answered in the documentation (e.g., [quickstart.md](../../../../docs/public/quickstart.md)), provide a link to the relevant guide in the response.
5454
- **Action**:
5555
- Set action to `close_resolved` or `close_invalid`.
56-
- Answer the question directly or provide links to the relevant guides (e.g., [quickstart.md](../../../../docs/quickstart.md)) or GitHub Discussions, then close the issue.
56+
- Answer the question directly or provide links to the relevant guides (e.g., [quickstart.md](../../../../docs/public/quickstart.md)) or GitHub Discussions, then close the issue.
5757

5858
---
5959

.agents/skills/a2ui-sdk-design/SKILL.md

Lines changed: 0 additions & 24 deletions
This file was deleted.
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
---
2+
name: Bug Report
3+
about: Report a bug or issue in the codebase
4+
title: '[BUG]: '
5+
labels: bug
6+
assignees: ''
7+
---
8+
9+
- [ ] I have searched the existing issues to make sure this bug has not already been reported.
10+
11+
## Describe the Bug
12+
13+
A clear and concise description of what the bug is.
14+
15+
## Steps to Reproduce
16+
17+
Steps to reproduce the behavior:
18+
19+
1. Go to '...'
20+
2. Click on '...'
21+
3. Scroll down to '...'
22+
4. See error
23+
24+
## Expected Behavior
25+
26+
A clear and concise description of what you expected to happen.
27+
28+
## Screenshots / Video / Logs
29+
30+
If applicable, add screenshots, video recordings, or console logs to help explain the problem.
31+
32+
## Environment Details
33+
34+
- **OS**: [e.g. macOS, Ubuntu, Windows]
35+
- **Browser/Platform**: [e.g. Chrome, Safari, Node.js version, Python version]
36+
- **SDK/Package Name & Version**: [e.g. a2ui-agent v0.9.0, Lit v0.8.0]
37+
- **Protocol Version**: [e.g. v0.9, v0.10]
38+
- **Agent Framework & LLM Model**: [e.g. ADK / Gemini 1.5 Pro, CopilotKit / GPT-4o]
39+
40+
## Additional Context
41+
42+
Add any other context or logs about the problem here.
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
---
2+
name: Documentation Improvement
3+
about: Propose improvements or report errors in the documentation
4+
title: '[DOCS]: '
5+
labels: documentation
6+
assignees: ''
7+
---
8+
9+
- [ ] I have searched the existing issues to make sure this documentation issue has not already been reported.
10+
11+
## Problem Page(s)
12+
13+
Which page(s) or file(s) in the documentation have problems? (Include URLs or file paths)
14+
15+
## Describe the Issue
16+
17+
What is incorrect, outdated, unclear, or missing?
18+
19+
## Proposed Changes
20+
21+
How would you suggest improving the documentation? Feel free to provide the exact phrasing or a draft of the changes.
22+
23+
## Additional Context
24+
25+
Any other information or comments.
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
---
2+
name: Feature Request
3+
about: Suggest an idea or enhancement for this project
4+
title: '[FEATURE]: '
5+
labels: enhancement
6+
assignees: ''
7+
---
8+
9+
- [ ] I have searched the existing issues to make sure this feature has not already been requested.
10+
11+
## Is your feature request related to a problem? Please describe.
12+
13+
A clear and concise description of what the problem is. (e.g. "I'm always frustrated when...")
14+
15+
## Describe the Proposed Solution
16+
17+
A clear and concise description of what you want to happen.
18+
19+
## Describe Alternatives Considered
20+
21+
A clear and concise description of any alternative solutions or features you've considered.
22+
23+
## Additional Context
24+
25+
Add any other context, mockup designs, or details about the feature request here.

.github/workflows/docs.yml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,11 +83,12 @@ jobs:
8383

8484
- name: Copy schemas to documentation
8585
run: |
86-
cp -R specification/* docs/specification/
86+
mkdir -p docs/public/specification/
87+
cp -R specification/* docs/public/specification/
8788
# Flatten JSON files to version roots to support clean URLs without redirects
8889
for version in v0_8 v0_9 v0_9_1 v1_0; do
89-
if [ -d "docs/specification/$version/json" ]; then
90-
cp docs/specification/$version/json/*.json docs/specification/$version/
90+
if [ -d "docs/public/specification/$version/json" ]; then
91+
cp docs/public/specification/$version/json/*.json docs/public/specification/$version/
9192
fi
9293
done
9394
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
# Copyright 2026 Google LLC
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License");
4+
# you may not use this file except in compliance with the License.
5+
# You may obtain a copy of the License at
6+
#
7+
# https://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS,
11+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
# See the License for the specific language governing permissions and
13+
# limitations under the License.
14+
15+
name: Validate A2UI Blueprints
16+
17+
on:
18+
push:
19+
branches: [main]
20+
paths:
21+
- "blueprints/**"
22+
- ".github/workflows/validate_blueprints.yml"
23+
pull_request:
24+
paths:
25+
- "blueprints/**"
26+
- ".github/workflows/validate_blueprints.yml"
27+
28+
concurrency:
29+
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
30+
cancel-in-progress: true
31+
32+
permissions:
33+
contents: read
34+
35+
jobs:
36+
validate-blueprints:
37+
runs-on: ubuntu-latest
38+
39+
steps:
40+
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
41+
with:
42+
persist-credentials: false
43+
44+
- name: Set up Python
45+
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6
46+
with:
47+
python-version: "3.12"
48+
49+
- name: Run Blueprint Validator
50+
run: python3 blueprints/validate_blueprints.py

.github/workflows/web_ci.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,13 @@ jobs:
8585
with:
8686
persist-credentials: false
8787
- uses: ./.github/actions/setup-node
88+
- name: Set up JDK 21
89+
uses: actions/setup-java@ad2b38190b15e4d6bdf0c97fb4fca8412226d287 # v5.3.0
90+
with:
91+
java-version: "21"
92+
distribution: "temurin"
93+
- name: Install Playwright browsers
94+
run: npx playwright@1.58.1 install --with-deps chromium chromium-headless-shell
8895
- name: Setup Wireit Cache
8996
uses: google/wireit@9d7c2e5346f8ef1b1ab6014c4e96c74e234f7ed5 # setup-github-actions-caching/v2.0.4
9097
- name: Build Renderers

0 commit comments

Comments
 (0)