# a2a-opencode changelog (/docs/community/changelog/a2a-opencode)



> This page is generated from [`a2a-opencode/CHANGELOG.md`](https://github.com/shashikanth-gs/a2a-wrapper/blob/main/a2a-opencode/CHANGELOG.md) and stays in sync with the repository.

## 1.7.2 [#172]

### Patch Changes [#patch-changes]

* 4e2bd82: No code changes. A prior release run published every package's exact
  target version under the `canary` npm dist-tag instead of `latest` (the
  `canary` job's snapshot step no-ops when there are no pending changesets,
  which was the case immediately after that Version Packages PR merged —
  see the canary-job fix in a preceding commit). Since npm never allows
  republishing an already-used version string, the only way to get a
  `latest`-tagged release out is a fresh patch bump.
* Updated dependencies \[4e2bd82]
  * @a2a-wrapper/core\@2.1.1

## 1.7.1 [#171]

### Minor Changes [#minor-changes]

* d6c2701: Add native A2A protocol v1.0 support, built on `@a2a-js/sdk@1.0.0`, while preserving full backward compatibility with A2A v0.3.x clients.

  **`@a2a-wrapper/core` (breaking):**

  * `buildAgentCard()` now produces the native v1.0 `AgentCard` shape (`supportedInterfaces[]` instead of `url`/`additionalInterfaces`/`protocolVersion`; `capabilities.extendedAgentCard` instead of `supportsAuthenticatedExtendedCard`; `stateTransitionHistory` removed). Callers reading the old v0.3 fields directly off the return value must update — the server itself still serves a fully v0.3-shaped card to legacy clients (see below).
  * `createA2AServer()`'s JSON-RPC/REST transports and the `/.well-known/agent-card.json` route now negotiate protocol version per-request via the `A2A-Version` header: `1.0`/absent-with-recent-header gets the native v1.0 card and wire shapes, while `0.3`/no-header-at-all (matching the SDK's own default) gets a fully v0.3-shaped card and JSON-RPC/REST translation via `@a2a-js/sdk`'s `compat/v0_3` layer.
  * `ServerOptions.protocolVersion` default changed from `"0.3"` to `"1.0"`.
  * New `ServerOptions.onListening` hook and `ServerOptions.agentCardSigning` option (Signed Agent Cards, RFC 7515 JWS, opt-in via `AgentCardConfig.signing` or the programmatic option).
  * New `extractUserText(message)` export centralizing inbound `Part` parsing for the v1.0 proto-oneof `Part` shape.
  * `TaskState` is now re-exported as a value (real numeric enum in v1.0, was a string-literal type in v0.3).
  * `@a2a-js/sdk` peer/dev dependency bumped to `^1.0.0`.

  **Wrapper packages (`a2a-claude`, `a2a-codex`, `a2a-copilot`, `a2a-opencode`, `a2a-antigravity`):**

  * Each wrapper's `createA2AServer()` public API is unchanged, but is now a thin delegate to `@a2a-wrapper/core`'s `createA2AServer` instead of duplicating Express/SDK server wiring — restoring the "A2A protocol code lives only in core" design.
  * `a2a-copilot` and `a2a-opencode` no longer ship their own local `event-publisher.ts`; both now use `@a2a-wrapper/core`'s (v1.0-aware) event publisher.
  * `@a2a-js/sdk` dependency bumped to `^1.0.0` (previously an inconsistent mix of `^0.3.9`/`^0.3.13`).

### Patch Changes [#patch-changes-1]

* Updated dependencies \[f3c7062]
* Updated dependencies \[41e2d82]
* Updated dependencies \[d6c2701]
  * @a2a-wrapper/core\@2.1.0

## 1.6.1 [#161]

### Patch Changes [#patch-changes-2]

* Updated dependencies
  * @a2a-wrapper/core\@1.7.0

## 1.6.0 — 2026-06-03 [#160--2026-06-03]

### Added [#added]

* **MCP custom headers** — `remote` MCP server configs now accept a `headers: Record<string, string>` map. Use for auth tokens and API keys against hosted MCP servers (Linear, Notion, remote GitHub MCP, etc.). Header values support `${ENV_VAR}` substitution so secrets stay out of `config.json`.
* **Env-var substitution extended** — `${ENV_VAR}` (explicit, recommended) and `$ENV_VAR` (bare, backward-compatible) substitution now applies to local `command` args, local `environment` values, and remote `headers` values.
* **`@opencode-ai/sdk` upgraded `1.14.29 → 1.15.13`** — no breaking changes; v2 API surface is additive.

### Fixed [#fixed]

* **Logger level propagation** — `level: "debug"` in config now correctly reaches all child loggers. Previously, child loggers captured the level at module-import time before config was loaded.

### Changed [#changed]

* Updated dependencies
  * @a2a-wrapper/core\@1.6.0

## 1.5.0 — 2026-05-13 [#150--2026-05-13]

### Added [#added-1]

* **A2A Sub-Agents** — new `subAgents` config section lets the parent agent expose remote A2A agents as MCP tools to the OpenCode LLM. The wrapper spawns [`a2a-mcp-skillmap`](https://github.com/shashikanth-gs/a2a-mcp-skillmap) as a stdio MCP server and registers it under the reserved `a2a-subagents` key. Each remote skill becomes a callable tool the LLM can dispatch like any other MCP tool. See `agents/multi-agent/` for an example.
* **Pinned skillmap version** — the synthesized MCP entry invokes `npx -y a2a-mcp-skillmap@<pinned>` rather than the unpinned package name, so a future skillmap release cannot silently change semantics.
* **JSON schema for `config.json`** — `schemas/agent-config.schema.json` generated from the TypeScript types via `npm run schema`. Drift-detection and schema validation tests ship in CI.

### Changed [#changed-1]

* Updated dependencies
  * @a2a-wrapper/core\@1.5.0

## 1.4.0 [#140]

### Added [#added-2]

* **Memory Persistence** — agents can now declare `memory.instructions` and `memory.skills` in their config.json. At startup, the executor materializes these files into the workspace at backend-specific paths. The target path is determined by the configured model: Claude models → `CLAUDE.md` + `.claude/skills/`, Codex models → `.codex/` + `.agents/skills/`, all others → `.opencode/instructions.md` + `.opencode/skills/`.
* **configDir injection** — the CLI now automatically derives and injects `configDir` from the config file path, enabling relative path resolution in memory configs.

### Changed [#changed-2]

* Updated dependencies
  * @a2a-wrapper/core\@1.4.0

## 1.3.0 [#130]

### Added [#added-3]

* **Event Transport Integration** — executor now routes all trace events (tool calls, reasoning) through the new `@a2a-wrapper/core` event transport abstraction instead of calling `publishTraceArtifact` directly. Supports A2A sideband (default), HTTP collectors, and custom transports.
* **Agent card delegates to core** — `buildAgentCard()` now delegates to `@a2a-wrapper/core`'s shared implementation, eliminating duplicated card construction logic.
* **OpenCode SDK upgrade** — upgraded `@opencode-ai/sdk` from `1.3.13` to `1.4.3`. Renamed `FileDiff` → `SnapshotFileDiff` to match the new SDK export.

### Changed [#changed-3]

* **Default events config** — defaults now include `events: { enabled: true, transport: "a2a" }`.
* Updated dependencies
  * @a2a-wrapper/core\@1.3.0

## 1.2.1 [#121]

### Changed [#changed-4]

* Fix post-release bugs: Node 22 ESM resolution (postinstall patch for vscode-jsonrpc), auth error message clarity (GITHUB_TOKEN guidance), README corrections (message/\* method names, messageId in examples), and ResultManager race condition (publish task event before status-update in both executors).
* Updated dependencies
  * @a2a-wrapper/core\@1.2.1

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## Unreleased [#unreleased]

## 1.2.0 - 2026-04-02 [#120---2026-04-02]

### Changed [#changed-5]

* Migrated to monorepo structure with npm workspaces, Turborepo, and Changesets
* Extracted shared infrastructure to `@a2a-wrapper/core` package (logging, config, events, server factory, session management, CLI scaffold)
* Now depends on `@a2a-wrapper/core` for all shared functionality
* Consolidated community docs (CONTRIBUTING, CODE_OF_CONDUCT, SECURITY, LICENSE) to repository root
* Unified CI/CD with Turborepo-powered GitHub Actions workflows
* Switched test script to `vitest --run` for non-interactive CI execution

## 1.0.0 - 2025-02-23 [#100---2025-02-23]

### Added [#added-4]

* A2A v0.3.0 protocol implementation over Express HTTP server
* Agent Card served at `/.well-known/agent-card.json`
* JSON-RPC endpoint at `/a2a/jsonrpc` — `message/send`, `message/stream`, `tasks/get`, `tasks/cancel`
* REST endpoint at `/a2a/rest`
* OpenCode backend (`@opencode-ai/sdk`) for LLM inference via `opencode serve`
* SSE event streaming with automatic reconnect and polling fallback
* Multi-turn conversation support via `contextId` → OpenCode session mapping
* MCP tool server support — HTTP, SSE, stdio, and OAuth transports
* Auto-approval of tool permissions (`PermissionHandler`)
* JSON config file with `$comment` annotations for easy customisation
* Environment variable and CLI argument overrides (priority: defaults ← JSON ← ENV ← CLI)
* `example` bundled agent configuration
* Docker support with multi-stage build and corporate proxy CA injection
* `server.sh` lifecycle manager (start / stop / restart / status / logs / foreground)
* Health check endpoint at `/health`
* Context building endpoint at `/context/build`
* `--stream-artifacts` / `--no-stream-artifacts` flag for SSE vs. buffered output
* Postman collection for all A2A and system endpoints
* TypeScript public API exports for programmatic use

[Unreleased]: https://github.com/shashikanth-gs/a2a-wrapper/compare/opencode-v1.0.0...HEAD

[1.0.0]: https://github.com/shashikanth-gs/a2a-wrapper/releases/tag/opencode-v1.0.0
