Skip to content

Releases: DerekEXS/agentwire-core

v2.3.0 - OpenClaw Native A2A Plugin

Choose a tag to compare

@DerekEXS DerekEXS released this 18 Jul 12:06

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 agent CLI 调 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/jsonrpc SendMessage → 初梦真实回复 "收到,丝线 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

Choose a tag to compare

@DerekEXS DerekEXS released this 14 Jul 14:02

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 structlog dependency (>=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.0
  • server_v2/requirements.txt — +structlog, +prometheus-client
  • server_v2/agent_router.py — metrics instrumentation
  • server_v2/gateway_executor.py — metrics instrumentation
  • server_v2/task_store.py — metrics instrumentation
  • server_v2/start.py — /metrics endpoint + root endpoint update
  • tests/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

Choose a tag to compare

@DerekEXS DerekEXS released this 10 Jul 08:58

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

Choose a tag to compare

@DerekEXS DerekEXS released this 09 Jul 17:47

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

Choose a tag to compare

@DerekEXS DerekEXS released this 09 Jul 12:45

CORE v2.0.7 (2026-07-09)

Bug Fixes (初梦 audit — 3 critical)

  1. agent_router.py: _rule_matches_metadata now correctly returns True only when ALL specified conditions are satisfied. Previously returned True even when no conditions matched (logic error: return True at end instead of tracking passed flag).

  2. gateway_executor.py: _dispatch_via_a2a now looks up peer token by peer key (the config key) instead of agent_id. Previously used agent_id which would be "script-receiver" when dispatching to cue-worker, causing 401.

  3. task_store.py: ListTasks now uses params.status instead of params.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

Choose a tag to compare

@DerekEXS DerekEXS released this 09 Jul 10:26

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

  • Commit 8300b8e: add a2a-sdk v0.3 compat patch (Dockerfile.v2 sed)
  • Commit 12ee8f7: bump core image tag to v2.0.4, add main peer alias

v2.0.5

Choose a tag to compare

@DerekEXS DerekEXS released this 09 Jul 09:05

v2.0.5

Bug Fixes

  • Dockerfile.v2: Fix config path mismatch - COPY docker/core-config.yaml /app/server/config.yaml now correctly places the config in the server directory
  • docker/core-config.yaml: Add main peer alias pointing to OpenClaw gateway main agent

Files Changed

  • Dockerfile.v2: Fixed COPY path for core-config.yaml
  • docker/core-config.yaml: Added main peer alias (v2.0.5)

CORE v2.0.2

Choose a tag to compare

@DerekEXS DerekEXS released this 08 Jul 13:12

[v2.0.2] - 2026-07-08

🐛 Bug Fixes

  • _dispatch_via_a2a(): add Authorization: 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 standard SendMessage method (v2.0) instead of legacy message/send.
  • _load_peer_config(): resolve token_file path at config load time, store resolved_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.yml CORE service: mount peer-a-a2a-token.txt secret so the container
    can authenticate to remote peers.

v2.0.0 — A2A v1.0 Gateway Rewrite

Choose a tag to compare

@DerekEXS DerekEXS released this 06 Jul 19:52

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/jsonrpcSendMessage, 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.0
  • tests/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 (SendMessage not message/send)
  • Requires a2a-sdk>=1.1.0 with sse-starlette, starlette, uvicorn

v1.5.5 — OpenClaw 2026.6.6 schema compat (final v1.5.x)

Choose a tag to compare

@DerekEXS DerekEXS released this 13 Jun 13:23

Summary

Final cleanup release of the v1.5.x series for AgentWire-Core.

  • OpenClaw 2026.6.6 schema compatplugin/openclaw.plugin.json now declares additionalProperties: false on configSchema, top-level kind: "http-server", full uiHints for all main config fields, and version: "1.5.5" synced with the CORE image tag.
  • README refreshREADME.md and README_CN.md rewritten: status badge v1.5.5, Docker Compose quick-start, full feature list (TLS, messages/import, export pagination, size limits, /a2a/metrics auth, token health checks, log redaction, workflow allowlist), updated API list, updated deployment / security sections.
  • Version unificationserver/start.py Agent Card, docker-compose.yml image tag, SKILL.md / SKILL_CN.md / PROTOCOL_QUICK_REF.md all bumped to 1.5.5.

Verification

  • CORE test suite: 35 passed.
  • plugin/openclaw.plugin.json validated as strict JSON Schema with additionalProperties: false.

Companion

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).