Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
1 change: 1 addition & 0 deletions blueprints/codebases/dart/a2ui_core/codebase.blueprint.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ The official Dart implementation of the A2UI Core State Layer (`a2ui_core`), sha
- **Idiomatic Dart Concurrency Primitives**: Uses `CancellationSignal` (`lib/src/primitives/cancellation.dart`) in place of Web `AbortSignal`, and Dart `Duration` for RPC call and heartbeat timeouts.
- **Per-call validation config**: `processMessages` and `processMessagesAsync` take the config of one call as a `validationConfig` named parameter, beside `isUserActivated`, rather than in an execution context object. Validators are cached per catalog, protocol version and `allowUnknownElements`, the only part of the config a validator reads, so a call that passes a new config object reuses the validators already built. `processMessagesAsync` applies the config while it checks and applies each message, not across its waits for function calls.
- **`Catalog.derive` entries**: Dart has no union of a name and an entry short of `Object`, so `derive` takes the names of the entries to keep in `components` and `functions`, and the new entries in `addComponents` and `addFunctions`, which follow the kept ones and replace a kept entry of the same name.
- **Renderer fallback routing, without schema-only functions**: Fallback routing to the agent is implemented as the module blueprint's RPC layer describes, except for schema-only functions: a Dart catalog holds `FunctionImplementation`s, so it cannot declare a function without an implementation, and the conformance cases that declare one are skipped as a known divergence. `module_blueprint_commit` therefore stays at the commit before routing was specified.
- **Nested values in the binder**: `GenericBinder` resolves actions, bindings and child lists inside lists and objects, as the module blueprint requires. Its props are a `Map<String, dynamic>`, so there are no prop types to follow it.

## **Validation & Execution Recipes**
Expand Down
2 changes: 2 additions & 0 deletions blueprints/codebases/python/a2ui_agent/codebase.blueprint.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ codebase_path: python/a2ui_agent
associated_module: a2ui_agent
module_blueprint_commit: ccf5dc20d0b0ed041b03e3913d807420ff45e178
implemented_features:
agent_functions: 0275eabbd2e8230dfa713cf8be086004ca554c30
skill_generator: c177173ca12a9d4739e16e56d6eb87b1e0608d85
typesafe_builder_api: ae0a5253b4e4d8aad06e1b97c236d426b8a401f0
local_development:
Expand Down Expand Up @@ -33,6 +34,7 @@ The reference Python implementation of the A2UI Agent SDK (`a2ui_agent`).
- **Streamed parts typing**: `ResponseStream` is generic in the parts it returns, and `open_stream` is overloaded on `after_rejected_block`, so only a stream opened with `"continue"` is typed `ResponseStream[StreamPart]` and returns `ErrorPart`s. Python 3.10 has no type parameter defaults, so every annotation names the part type, usually `ResponseStream[ResponsePart]`.
- **Streaming without a chunk transaction**: `DirectJsonResponseStream` applies each block's messages as it emits them, so a failing chunk's earlier parts stay applied and are attached to the error as `partial_results`. A rejected block is still scanned for its closing tag, without being read, when the stream reads past rejected blocks.
- **No renderer**: The Python SDK has no renderer, so it does not implement the optional `agent_renderer_app` feature.
- **Agent function RPC on asyncio**: `a2ui.rpc` is asyncio-native. `AgentFunctionRegistry` awaits async handlers on the caller's loop and runs sync handlers through `asyncio.to_thread`; `RendererFunctionCalls` returns an `asyncio.Future`, uses `loop.call_later` for timeouts, and accepts `resolve` and `dispose` from other threads through `loop.call_soon_threadsafe`.

## **Validation & Execution Recipes**

Expand Down
6 changes: 4 additions & 2 deletions blueprints/codebases/python/a2ui_core/codebase.blueprint.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
---
codebase_path: python/a2ui_core
associated_module: a2ui_core
module_blueprint_commit: ab3954fdef84d1bea723128ceac41cf88a5979cb
implemented_features: {}
module_blueprint_commit: 0275eabbd2e8230dfa713cf8be086004ca554c30
implemented_features:
agent_functions: 0275eabbd2e8230dfa713cf8be086004ca554c30
local_development:
test_command: 'uv run pytest'
lint_command: 'uv run pyink --check .'
Expand All @@ -24,6 +25,7 @@ The official Python implementation of the A2UI Core State Layer (`a2ui_core`).
- **Auto-vivification Rules**: The JSON pointer implementation dynamically converts missing paths into dicts or list elements on setting nested undefined values.
- **Derived catalogs**: `Catalog.derive` and `Catalog.copy_with` share one builder. `copy_with` keeps the source's id and descriptive fields and is typed as a schema-only `CatalogApi`; `derive` takes a new id, drops `$id`, title, description and instructions, and keeps the source's entry types.
- **Nested resolution**: `GenericBinder` walks list and object properties at runtime, binding actions and bindings inside them as at the top level. Bound props are plain dictionaries, so there is no typed property set to update.
- **Agent functions on the catalog**: `Catalog.agent_functions` is computed from `functions` (the entries that are `AgentFunction`s) rather than stored, so `copy_with`, `derive` and the agent SDK's function pruning keep the two consistent without extra code.
- **No renderer**: The Python SDK has no renderer, so it does not implement the optional `agent_renderer_app` feature.

## **Validation & Execution Recipes**
Expand Down
1 change: 1 addition & 0 deletions blueprints/codebases/swift/core/codebase.blueprint.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ The native Swift runtime processing engine and state model implementation for A2
name to keep (`.keep`, or a string literal) and a new entry (`.add`). A Swift catalog has no
`$id`, title, description or instructions, so `derive` takes no instructions and has nothing
else to drop.
- **Renderer fallback routing**: Fallback routing to the agent is implemented as the module blueprint's RPC layer describes, with `MessageProcessor.agentFunctionTimeoutSeconds` as the routed call timeout. `module_blueprint_commit` stays at its older pin because the codebase has not caught up with earlier module changes, such as the per-call `ExecutionContext` (`isUserActivated`) of `processMessages`.
- **No agent**: The Swift SDK is a renderer only, so it does not implement the optional
`agent_renderer_app` feature.

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
codebase_path: typescript/core/web_core
associated_module: a2ui_core
module_blueprint_commit: 2e3d9bc434a34ba25498a11e0bfba079b52dcf29
module_blueprint_commit: 0275eabbd2e8230dfa713cf8be086004ca554c30
implemented_features:
agent_renderer_app: null
node_resolution: b161f9bdc9395732b305b0adddfd182a36382f09
Expand Down
Loading
Loading