You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+26Lines changed: 26 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,6 +5,32 @@ All notable changes to this project will be documented in this file.
5
5
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
8
+
## [0.2.0] - 2026-03-10
9
+
10
+
### Changed
11
+
12
+
- Updated Python requirement from 3.10+ to 3.11+ to match pyproject.toml.
13
+
- Updated apcore dependency requirement from 0.6.0+ to 0.9.0+.
14
+
- Delegated TaskStore and InMemoryTaskStore to a2a-sdk (replaces custom protocol).
15
+
- Replaced ExecutionRouter, TaskManager, and TransportManager with a2a-sdk components (ApCoreAgentExecutor, DefaultRequestHandler, A2AStarletteApplication).
16
+
- CLI `--host` default changed from `0.0.0.0` to `127.0.0.1` for safer defaults.
17
+
- Default agent name fallback changed from `"apcore-agent"` to `"Apcore Agent"`.
18
+
- Auth 401 response body now returns `{"error": "Unauthorized", "detail": "Missing or invalid Bearer token"}`.
19
+
- AgentCard `defaultOutputModes` now includes both `"text/plain"` and `"application/json"`.
20
+
21
+
### Added
22
+
23
+
- Expanded public API exports: auth classes, adapter classes, and server factory now re-exported from top-level `__init__.py`.
24
+
- Documented that SkillMapper `_build_extensions()` cannot wire annotations into AgentSkill (a2a-sdk lacks `extensions` field); annotations available via Explorer UI instead.
25
+
- ErrorMapper `_sanitize_message()` now strips traceback lines in addition to file paths.
26
+
- Explorer `create_explorer_mount()` accepts optional `registry` parameter to enrich agent card with input schemas.
27
+
- Path-based registry resolution: `serve()` and `async_serve()` accept `str`/`Path` for auto-discovery.
28
+
29
+
### Fixed
30
+
31
+
- Feature specs updated to match actual implementation (F-01 through F-11).
32
+
- Documentation version references corrected (Python 3.11+, apcore 0.9.0+).
**apcore-a2a** is an automatic [A2A (Agent-to-Agent)](https://google.github.io/A2A/) protocol adapter for the [apcore](https://github.com/aipartnerup/apcore-python) ecosystem. It allows you to expose any apcore Module Registry as a fully functional, standards-compliant A2A agent with zero manual effort.
@@ -33,7 +33,7 @@ By reading the existing apcore metadata—including `input_schema`, `output_sche
7. Cache in `self._cached_card`. Extended card in `self._cached_extended_card`.
@@ -101,7 +114,7 @@ class SkillMapper:
101
114
|`examples[:10]`|`examples`|`title` → `name`, `inputs` → JSON string in TextPart |
102
115
| computed |`inputModes`| See mode logic below |
103
116
| computed |`outputModes`| See mode logic below |
104
-
|`annotations`|`extensions.apcore.annotations`| All 5 boolean flags|
117
+
|`annotations`|*(not mapped)*|`_build_extensions()` exists but `a2a.types.AgentSkill` has no `extensions` field; annotations are available via the Explorer UI's `_inputSchemas` enrichment instead|
105
118
106
119
**Input/output mode logic:**
107
120
@@ -132,9 +145,9 @@ class SkillMapper:
132
145
Converts apcore JSON Schemas for A2A DataPart usage. Reuses logic from apcore-mcp's SchemaConverter.
"uptime_seconds": uptime, # float (seconds since start)
39
39
"version": self._version,
40
40
})
41
41
```
@@ -45,7 +45,7 @@ HTTP 200:
45
45
{
46
46
"status": "healthy",
47
47
"module_count": 5,
48
-
"uptime_seconds": 3600,
48
+
"uptime_seconds": 3600.5,
49
49
"version": "1.0.0"
50
50
}
51
51
```
@@ -106,28 +106,25 @@ HTTP 404 (when `metrics=False`, the default):
106
106
107
107
### Counter Implementation
108
108
109
-
Task state counters are maintained in `TransportManager` via callback from `TaskManager`:
109
+
Task state counters are maintained in a `_MetricsState` dataclass within `server/factory.py`, updated via `on_state_change` callback from `ApCoreAgentExecutor`:
0 commit comments