Releases: DerekEXS/agentwire-core
Release list
v2.3.0 - OpenClaw Native A2A Plugin
AgentWire CORE v2.3.0
OpenClaw 原生 A2A plugin — 替换"翻译 sidecar 追逐 OpenClaw 私有 API"的失败模式,改为 OpenClaw 原生 plugin 跑在 gateway 进程内,单一 A2A 边界,无私有 API 追逐。
架构
外部 Agent → CORE 18880 → 18789/a2a/jsonrpc → [agentwire-a2a plugin] → openclaw agent CLI → 初梦/影猎/影锻
↑ 标准 A2A 边界 ↑ 绕开 plugin trust gate
New Features
agentwire-a2a OpenClaw 原生 plugin (TypeScript)
- 跑在 OpenClaw gateway 进程内 (18789),无独立 sidecar
definePluginEntry+registerHttpRoute暴露标准 A2A v1.0 (/a2a/jsonrpc+/.well-known/agent.json)- 方案 C2 dispatch: spawn
openclaw agentCLI 调 agent(以外部 operator client 身份走 gateway WS,绕开 plugin runtime scope/trust 限制) - 多轮 session: 同 A2A
contextId进同 OpenClaw session
CORE 侧改动
- 删除
_dispatch_via_openclaw()(私有/rpc/agent,OpenClaw 2026.7.1 已移除) - 所有 peer 统一走
_dispatch_via_a2a(OpenClaw 成标准 A2A peer) _dispatch_via_a2a空 token 不发 Authorization 头(净改进,适用所有 peer)
清理(下线旧 adapter)
~/.openclaw/a2a-gateway/sidecar (PID 476004, 端口 18802) 下线归档到designs/v2.3/legacy-sidecar/- plugin/ 旧 v1.5.5 反向代理骨架重写为 v2.3 原生 plugin
验证(实测全链路)
- M2: plugin
/a2a/jsonrpcSendMessage → 初梦真实回复 "收到,丝线 v2.3 M2 验证 ping ✅" - M3 全链路: 外部 → CORE 18880 → plugin 18789 → 初梦 "pong ✅ — A2A 链路 CORE→plugin→初梦 通畅"
- CORE: 31 tests passing
关键决策:为什么是 CLI 子进程而非进程内 WS
M1 验证 OpenClaw 2026.7.1 安全模型:第三方 plugin 禁止直接驱动 agent turn(api.runtime.gateway.request 被 trust gate 拦,subagent.run 缺 operator.write scope)。三条进程内路径全封。
方案 C2 用 openclaw agent CLI 子进程——以外部 operator client 身份走 gateway WS,不受 plugin trust gate 限制。CLI 调初梦已实战验证。进程 spawn 开销 (~50ms) 相对 agent 推理 (3-30s) 可忽略。v2.3.1 可选升级进程内 WS loopback client(见 designs/v2.3/WS-PROTOCOL-VERIFICATION.md)。
依赖
- plugin: 0 npm 运行时依赖(Node 22 内置
child_process) - CORE: 无新依赖
已知限制(v2.3.0 范围外)
- 反向闭环(agent 主动发 A2A)→ v2.3.1
- SendStreamingMessage / SSE → v2.3.2+
- 动态 agent 发现 → v2.3.1
文档
designs/v2.3/DESIGN.md— 设计文档(R1 评审修订)designs/v2.3/WS-PROTOCOL-VERIFICATION.md— gateway WS 协议技术验证designs/v2.3/legacy-sidecar/— 下线 sidecar 留档
Commit: 11e9bfb · Author: silk-thread silk-thread@agentwire.local
v2.2.0 - Structured Logging + Prometheus Metrics
AgentWire CORE v2.2.0
Observability infrastructure for Phase 0 stability.
New Features
Prometheus Metrics Endpoint
GET /metrics— Prometheus scrape format (no auth required)GET /— root endpoint now lists metrics path
Metrics Exported
| Metric | Type | Labels | Purpose |
|---|---|---|---|
agentwire_router_hit_total |
Counter | rule_name |
Routing rule hit count |
agentwire_routing_duration_seconds |
Histogram | — | Routing decision latency |
a2a_dispatch_total |
Counter | peer, status |
Dispatch attempts (success/error) |
a2a_message_duration_seconds |
Histogram | peer, agent_id, rule_name |
End-to-end message latency |
a2a_task_state_total |
Counter | state |
Task state transitions |
Structured Logging
- Added
structlogdependency (>=24.1.0) _configure_structlog()helper for JSON-formatted logs
Dependencies
+structlog>=24.1.0+prometheus-client>=0.20.0
Testing
- 31 tests passing (added 5 new test classes for metrics instrumentation)
- TestAgentCard, TestAgentRouter, TestSqliteTaskStore, TestGatewayExecutor, TestBearerTokenMiddleware
- TestMetricsEndpoint, TestRouterMetrics, TestExecutorMetrics, TestTaskStoreMetrics (new)
Files Changed
server_v2/__init__.py— version bump 2.1.0 → 2.2.0server_v2/requirements.txt— +structlog, +prometheus-clientserver_v2/agent_router.py— metrics instrumentationserver_v2/gateway_executor.py— metrics instrumentationserver_v2/task_store.py— metrics instrumentationserver_v2/start.py— /metrics endpoint + root endpoint updatetests/test_v2_core.py— +5 test classes
Alignment with Strategic Goals
This release supports Phase 0 (~2029) stability requirements by providing:
- Production-grade observability via Prometheus metrics
- Foundation for Grafana dashboards and alerting
- Structured logs for log aggregation pipelines
Commit: 273ccbb
Author: silk-thread silk-thread@agentwire.local
v2.1.0
v2.1.0: Stability infrastructure
- Protocol compat layer: role string normalization + message_id auto-injection
- Dynamic version imported into health endpoint and agent card
- docs: AGENT-COMPATIBILITY.md and PORTPROXY-FIX.md
- README updated with Known Limitations section
CORE v2.0.8
CORE v2.0.8 (2026-07-10)
Core Change: Port Migration 18800→18880
Default port remains 18800 for backward compatibility.
CORE_LISTEN_PORT and CORE_LISTEN_HOST environment variables are now
the primary configuration mechanism for port/host overrides (already
present in start.py since v2.0.7 — this release is a version bump).
AI-CLAW sets CORE_LISTEN_PORT=18880 to work around Windows iphlpsvc
service occupying port 18800.
Changes from v2.0.7
- Version bump to 2.0.8
- All v2.0.7 bug fixes included:
- agent_router passed flag (metadata rules work correctly)
- gateway_executor peer key lookup (no more 401 on cue-worker dispatch)
- task_store ListTasks (no more 500 on ListTasks RPC)
- a2a-sdk v0.3 compat sed patch in Dockerfile.v2
Changes from v2.0.6
- All v2.0.6 fixes included
CORE v2.0.7
CORE v2.0.7 (2026-07-09)
Bug Fixes (初梦 audit — 3 critical)
-
agent_router.py:
_rule_matches_metadatanow correctly returns True only when ALL specified conditions are satisfied. Previously returned True even when no conditions matched (logic error:return Trueat end instead of trackingpassedflag). -
gateway_executor.py:
_dispatch_via_a2anow looks up peer token bypeerkey (the config key) instead ofagent_id. Previously usedagent_idwhich would be "script-receiver" when dispatching to cue-worker, causing 401. -
task_store.py:
ListTasksnow usesparams.statusinstead ofparams.HasField("status"). The latter throws ValueError when the field is not set in the protobuf, causing 500 on every ListTasks RPC call.
Changes from v2.0.6
- All 3 bug fixes above
- Version bumped to 2.0.7
- a2a-sdk v0.3 compat sed patch in Dockerfile.v2 (from v2.0.6)
CORE v2.0.6
CORE v2.0.6 (2026-07-09)
Bug Fixes
- A2A-Version v0.3 compatibility: Accept v0.3 clients connecting to v1.0 server. The a2a-sdk version_validator raised VersionNotSupportedError when client sent A2A-Version: 0.3. v0.3 and v1.0 share the same JSON-RPC wire format — we now accept cross-version requests and respond with v1.0-compliant output.
Changes from v2.0.5
v2.0.5
v2.0.5
Bug Fixes
- Dockerfile.v2: Fix config path mismatch -
COPY docker/core-config.yaml /app/server/config.yamlnow correctly places the config in the server directory - docker/core-config.yaml: Add
mainpeer alias pointing to OpenClaw gateway main agent
Files Changed
Dockerfile.v2: Fixed COPY path for core-config.yamldocker/core-config.yaml: Added main peer alias (v2.0.5)
CORE v2.0.2
[v2.0.2] - 2026-07-08
🐛 Bug Fixes
_dispatch_via_a2a(): addAuthorization: Bearer <peer_token>header when forwarding
messages to remote A2A peers. Previously no auth was sent, causing 401 at the peer gateway._dispatch_via_a2a(): use standardSendMessagemethod (v2.0) instead of legacymessage/send._load_peer_config(): resolvetoken_filepath at config load time, storeresolved_token
so_dispatch_via_a2a()can use the correct per-peer credential.
📦 Build
docker/core-config.yaml: replaced v1.x history-only config with full v2.0 peer routing
configuration (routing rules + peer registry).docker-compose.ymlCORE service: mountpeer-a-a2a-token.txtsecret so the container
can authenticate to remote peers.
v2.0.0 — A2A v1.0 Gateway Rewrite
CORE v2.0.0 — Rewrite as A2A v1.0 Gateway
Hotfix v2.0.1 (2026-07-07)
- Expose both
/.well-known/agent.json(standard A2A primary path) and/.well-known/agent-card.json(compatibility path) - Both endpoints return identical Agent Card content, matching CUE v2.0 behavior
Architecture Change
- Before: Message store + HTTP API (not A2A-compliant)
- After: Proper A2A v1.0 gateway based on official a2a-sdk v1.1.0
New Features
- Agent Card:
/.well-known/agent.json— standard A2A discovery - JSON-RPC Transport:
/a2a/jsonrpc—SendMessage,GetTask,ListTasks,CancelTask - Agent Routing: explicit agentId > rule-based (tags/patterns) > default fallback
- Task Lifecycle: standard state machine (submitted → working → completed/failed/cancelled)
- SQLite TaskStore: persistent task storage with indexed queries
- Bearer Token Auth: hmac.compare_digest middleware, TLS support, loopback default
- Routing Rules: YAML config with priority-based matching
Files
server_v2/— new gateway implementation (9 files, 1336 lines)Dockerfile.v2— container build for v2.0tests/test_v2_core.py— 23 unit tests
Test Results
- 23/23 v2.0 tests passing
- 35/35 v1.x tests passing (no regressions)
Breaking Changes
- Standard A2A method names (
SendMessagenotmessage/send) - Requires
a2a-sdk>=1.1.0withsse-starlette,starlette,uvicorn
v1.5.5 — OpenClaw 2026.6.6 schema compat (final v1.5.x)
Summary
Final cleanup release of the v1.5.x series for AgentWire-Core.
- OpenClaw 2026.6.6 schema compat —
plugin/openclaw.plugin.jsonnow declaresadditionalProperties: falseonconfigSchema, top-levelkind: "http-server", fulluiHintsfor all main config fields, andversion: "1.5.5"synced with the CORE image tag. - README refresh —
README.mdandREADME_CN.mdrewritten: status badgev1.5.5, Docker Compose quick-start, full feature list (TLS,messages/import, export pagination, size limits,/a2a/metricsauth, token health checks, log redaction, workflow allowlist), updated API list, updated deployment / security sections. - Version unification —
server/start.pyAgent Card,docker-compose.ymlimage tag,SKILL.md/SKILL_CN.md/PROTOCOL_QUICK_REF.mdall bumped to1.5.5.
Verification
- CORE test suite: 35 passed.
plugin/openclaw.plugin.jsonvalidated as strict JSON Schema withadditionalProperties: false.
Companion
- agentwire-cue v1.6.0 marks the production-ready milestone.
Notes
No new features, no behavior changes — manifest + documentation alignment only. The v1.5.x series for AgentWire is now frozen; future work moves to maintenance mode (defect fixes only).