Integrate the Agent2Agent (A2A) protocol and Microsoft Semantic Kernel to enable SEAβ’ agents to:
Historical Note: IBMβs Agent Client Protocol (ACP) has been merged into A2A under the Linux Foundation as of March 2025. This plan implements A2A as the unified agent communication standard, which includes the capabilities previously specified by ACP.
Gap Closure: Semantic Kernel was identified as π‘ High priority in
docs/assets/dependency_gap_analysis.mdbut not yet implemented. This plan closes that gap by integrating it alongside A2A.
| ADR ID | Decision Title | Impact on This Plan |
|---|---|---|
| ADR-017 | MCP-LSP Integration Architecture | A2A complements MCP; MCP handles agent-to-tools, A2A handles agent-to-agent. Same security patterns apply. |
| ADR-032 | NATS JetStream Messaging | A2A events can bridge to internal JetStream for async task processing. |
| ADR-033 | Kernel-Shell Architecture | A2A gateway is a shell adapter; keeps protocol translation at the boundary. |
| PRD ID | Requirement Title | Satisfied By (SDS) | Acceptance Criteria |
|---|---|---|---|
| PRD-027 | External Agent Interoperability | SDS-056, SDS-057 | REQ-070..REQ-078 (discovery, task delegation, streaming, memory) |
| PRD-020 | VibesProβ’ Foundation Platform Requirements | SDS-045 | FR-006 Cross-agent orchestration capability |
| SDS ID | Service/Component | Bounded Context | SEA-DSL Spec File | Implementation Status |
|---|---|---|---|---|
| SDS-056 | A2A Protocol Gateway | sea-api |
N/A | Draft |
| SDS-057 | Semantic Kernel Orchestration | agent-runtime |
N/A | Draft |
| SDS-052 | Semantic Tooling & IDE Integration | shared |
N/A | Active (extends) |
| SDS-031 | Authority & Ownership Boundaries | shared |
N/A | Active (extends) |
graph TD
ADR38[ADR-038: A2A + Semantic Kernel] --> PRD27[PRD-027: External Agent Interoperability]
ADR17[ADR-017: MCP-LSP Integration] --> PRD27
ADR32[ADR-032: JetStream Messaging] --> PRD27
ADR33[ADR-033: Kernel-Shell] --> PRD27
PRD27 --> SDS56[SDS-056: A2A Protocol Gateway]
PRD27 --> SDS57[SDS-057: Semantic Kernel Orchestration]
SDS56 --> SDS52[SDS-052: Semantic Tooling - Tool Surface Extension]
SDS57 --> SDS31[SDS-031: Authority - Agent Delegation Rules]
A2A (Agent2Agent) is an open standard for agent-to-agent communication:
Core Concepts:
Protocol Bindings Supported:
Relationship to MCP and Semantic Kernel:
Microsoft Semantic Kernel is an open-source SDK for building AI agents:
Core Capabilities:
Why Semantic Kernel + A2A:
| Concern | Semantic Kernel | A2A |
|---|---|---|
| Scope | Internal agent orchestration | External agent communication |
| Plugin Discovery | Local plugin registry | Remote Agent Card discovery |
| Task Execution | Planner + function calling | Task lifecycle management |
| Memory | Built-in memory stores | Context passed via Messages |
| Streaming | Kernel event hooks | SSE / gRPC streams |
Integration Strategy:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β SEAβ’ Agent Runtime β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β A2A Protocol Gateway (SDS-055) β β
β β βββββββββββββββββββββββ βββββββββββββββββββββββ β β
β β β A2A Server β β A2A Client β β β
β β β (Receive Tasks) β β (Delegate Tasks) β β β
β β β β β β β β
β β β β’ /agent-card β β β’ Task Delegation β β β
β β β β’ /tasks (CRUD) β β β’ Agent Discovery β β β
β β β β’ /messages β β β’ Streaming Client β β β
β β β β’ Streaming (SSE) β β β β β
β β ββββββββββ¬βββββββββββββ ββββββββββββ¬βββββββββββ β β
β β β β β β
β βββββββββββββΌβββββββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββ β
β β β β
β βββββββββββββΌβββββββββββββββββββββββββββββββββββββββΌβββββββββββββββββββββββ β
β β Agent Task Router (Kernel) β β
β β β’ Maps A2A tasks to internal commands/queries β β
β β β’ Enforces HITL escalation (SDS-031 Β§7) β β
β β β’ Manages task lifecycle β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β βββββββββββββΌβββββββββββββββββββββ βββββββββββββΌβββββββββββββββββββββ β
β β MCP Tool Surface (SDS-052) β β JetStream (SDS-047) β β
β β (Execute local capabilities) β β (Async event processing) β β
β ββββββββββββββββββββββββββββββββββ ββββββββββββββββββββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
External Agents
ββββββββββββββββββββββββββββββββββββ
β π€ Remote Agent 1 (LangGraph) β
β π€ Remote Agent 2 (CrewAI) β
β π€ Remote Agent 3 (Custom) β
ββββββββββββββββββββββββββββββββββββ
| Dependency | Type | Version | Package | Justification | ADR/SDS Reference |
|---|---|---|---|---|---|
| a2a-python | Python Library | latest |
a2a |
Official A2A SDK for Python server/client | SDS-055 |
| a2a-js | Node Library | latest |
@a2a/sdk |
TypeScript A2A client for Zed/VS Code integration | SDS-055 |
| Dependency | Type | Version | Package | Justification | ADR/SDS Reference |
|---|---|---|---|---|---|
| semantic-kernel | Python Library | 1.x |
semantic-kernel |
Agent orchestration, plugin system, memory integration | ADR-009, SDS-040 |
| semantic-kernel-connectors | Python Library | 1.x |
semantic-kernel[all] |
LLM connectors (OpenAI, Ollama, etc.) | SDS-040 |
| semantic-kernel | .NET Library | 1.x |
Microsoft.SemanticKernel |
Optional: C# implementation for Azure deployments | SDS-040 |
1
2
3
4
5
6
7
8
# Python (for FastAPI A2A server + Semantic Kernel)
pip install a2a semantic-kernel[all]
# Node.js (for VS Code extension A2A client)
pnpm add @a2a/sdk
# Optional: .NET SDK for Azure deployments
# dotnet add package Microsoft.SemanticKernel
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
/
βββ schemas/a2a/
β βββ agent-card.schema.json # SEAβ’ Agent Card JSON schema
β βββ task-request.schema.json # Validated task request format
β βββ artifact-envelope.schema.json # Output artifact wrapper
βββ docs/specs/shared/
β βββ adr/038-a2a-protocol-integration.md
β βββ prd/026-external-agent-interoperability.md
β βββ sds/055-a2a-protocol-gateway.sds.yaml
βββ libs/sea/adapters/a2a/
β βββ src/
β βββ a2a-server.adapter.py # FastAPI A2A server
β βββ a2a-client.adapter.py # A2A client for delegation
β βββ agent-card.py # Agent Card generator
β βββ task-router.py # A2A task β kernel command router
βββ libs/sea/adapters/semantic-kernel/
β βββ src/
β βββ kernel-factory.py # Semantic Kernel builder
β βββ plugins/ # SEAβ’ capability plugins
β β βββ semantic_analysis.py # Code/spec analysis plugin
β β βββ artifact_generation.py # CADSL/diagram generation
β β βββ governance_check.py # Policy enforcement plugin
β βββ memory/ # Memory adapters
β β βββ pgvector-memory.py # PostgreSQL vector memory
β βββ filters/ # Governance filters
β βββ hitl-filter.py # HITL escalation filter
β βββ audit-filter.py # Audit logging filter
βββ apps/sea-api/
βββ src/
βββ routes/a2a/ # A2A HTTP routes
βββ agent_card.py # /.well-known/agent.json
βββ tasks.py # /tasks CRUD
βββ messages.py # /tasks/{id}/messages
| Cycle | Branch | Wave | Files Modified | Files Created | Specs Implemented |
|---|---|---|---|---|---|
| C1A | cycle/p027-c1a-adr-prd-sds |
1 | β | docs/specs/shared/adr/038-*, prd/026-*, sds/055-*, sds/056-* |
ADR + PRD + SDS foundation (A2A + SK) |
| C1B | cycle/p027-c1b-agent-card |
1 | docs/specs/shared/sds/055-* |
schemas/a2a/*, Agent Card generator |
Agent Card + discovery |
| C1C | cycle/p027-c1c-sk-kernel |
1 | β | libs/sea/adapters/semantic-kernel/src/* |
Semantic Kernel factory + base config |
| C2A | cycle/p027-c2a-sk-plugins |
2 | β | libs/sea/adapters/semantic-kernel/src/plugins/* |
Core SK plugins (analysis, generation) |
| C2B | cycle/p027-c2b-sk-filters |
2 | docs/specs/shared/sds/031-* |
libs/sea/adapters/semantic-kernel/src/filters/* |
HITL + audit filters |
| C2C | cycle/p027-c2c-sk-memory |
2 | β | libs/sea/adapters/semantic-kernel/src/memory/* |
pgvector memory adapter |
| C3A | cycle/p027-c3a-a2a-server |
3 | β | libs/sea/adapters/a2a/src/* |
A2A Server adapter (receive tasks) |
| C3B | cycle/p027-c3b-a2a-sk-bridge |
3 | β | A2AβSK task router | Bridge A2A tasks to SK execution |
| C4A | cycle/p027-c4a-a2a-client |
4 | β | A2A client adapter | Task delegation to external agents |
| C4B | cycle/p027-c4b-streaming |
4 | β | SSE streaming endpoints | Real-time task updates |
| C5A | cycle/p027-c5a-push-notifications |
5 | docs/specs/shared/sds/047-* |
Webhook integration | Async push notifications |
docs/specs/shared/adr/038-a2a-semantic-kernel-integration.md, docs/specs/shared/prd/026-external-agent-interoperability.md, docs/specs/shared/sds/055-a2a-protocol-gateway.sds.yaml, docs/specs/shared/sds/056-semantic-kernel-orchestration.sds.yamlschemas/a2a/agent-card.schema.json, libs/sea/adapters/a2a/src/agent-card.pysemantic-kernel[all]libs/sea/adapters/semantic-kernel/src/kernel-factory.pysemantic_analysis.py - Code/spec semantic analysisartifact_generation.py - CADSL/diagram generationgovernance_check.py - Policy enforcementlibs/sea/adapters/semantic-kernel/src/plugins/*hitl-filter.py - Human-in-the-loop escalationaudit-filter.py - Audit logging for all executionslibs/sea/adapters/semantic-kernel/src/filters/*libs/sea/adapters/semantic-kernel/src/memory/pgvector-memory.pylibs/sea/adapters/a2a/src/a2a-server.adapter.py, apps/sea-api/src/routes/a2a/*libs/sea/adapters/a2a/src/task-router.pylibs/sea/adapters/a2a/src/a2a-client.adapter.pyapps/sea-api/src/routes/a2a/streaming.pydocs/specs/shared/sds/047-messaging-infrastructure.mdA2A Protocol:
/.well-known/agent.json (A2A discovery convention)Semantic Kernel:
1
2
3
4
5
6
7
8
9
10
# Test A2A server with reference client
a2a-test-client --server http://localhost:8000 --test-suite basic
# Verify Agent Card discovery
curl http://localhost:8000/.well-known/agent.json | jq
# Send test task
curl -X POST http://localhost:8000/tasks \
-H "Content-Type: application/json" \
-d '{"message": {"role": "user", "parts": [{"text": "Analyze this code"}]}}'
| # | Question | Resolution |
|---|---|---|
| 1 | Which protocol binding for MVP: JSON-RPC or REST? | β REST β User confirmed (simpler, matches existing FastAPI patterns) |
| 2 | Should SEAβ’ agents auto-discover external agents, or require manual registration? | β Auto-discovery β User confirmed |
| 3 | How to map A2A task IDs to IFL attestations? | Emit ifl:hash:<taskId> on task completion |
| 4 | Which agent frameworks to test interop with? | LangGraph, CrewAI, Google ADK, Semantic Kernel |
| 5 | Semantic Kernel Python vs .NET SDK? | β Python β User confirmed |
| Risk | Likelihood | Impact | Mitigation Strategy |
|---|---|---|---|
| A2A spec is still draft (v1.0) and may change | Medium | Medium | Pin to specific spec version; abstract protocol binding layer |
| External agents may not comply with HITL expectations | High | High | Validate all incoming tasks; reject if required approval missing |
| Streaming connections exhaust resources | Medium | Medium | Connection pooling + max concurrent streams limit |
| Agent Card capabilities diverge from actual MCP tools | Medium | High | Generate Agent Card from MCP tool registry (single source of truth) |
| Type | ID/Doc | Document |
|---|---|---|
| ADR | ADR-017 | docs/specs/shared/adr/017-mcp-lsp-integration-architecture.md |
| ADR | ADR-032 | docs/specs/shared/adr/032-nats-jetstream-messaging.md |
| ADR | ADR-033 | docs/specs/shared/adr/033-kernel-shell-architecture.md |
| SDS | SDS-031 | docs/specs/shared/sds/031-authority-ownership-boundaries.md |
| SDS | SDS-047 | docs/specs/shared/sds/047-messaging-infrastructure.md |
| SDS | SDS-052 | docs/specs/shared/sds/052-semantic-tooling-ide-integration.sds.yaml |
| Reference | URL |
|---|---|
| A2A Protocol Specification | https://a2a-protocol.org/latest/specification/ |
| A2A Python SDK | https://github.com/a2aproject/a2a-python |
| A2A JavaScript SDK | https://github.com/a2aproject/a2a-js |
| A2A Sample Implementations | https://github.com/a2aproject/a2a-samples |
| Semantic Kernel Python SDK | https://github.com/microsoft/semantic-kernel |
| Semantic Kernel Documentation | https://learn.microsoft.com/en-us/semantic-kernel/ |
| Semantic Kernel Plugins Guide | https://learn.microsoft.com/en-us/semantic-kernel/concepts/plugins/ |
[!IMPORTANT] Design Decision Required: This plan proposes REST as the MVP protocol binding. If you prefer JSON-RPC 2.0 (more aligned with MCP conventions) or gRPC (better streaming performance), please indicate before C2A begins.
[!WARNING] Breaking Change Consideration: Enabling the A2A Server allows external agents to invoke SEAβ’ capabilities. All incoming tasks will require HITL approval for mutating operations per SDS-031. Ensure appropriate approver availability before enabling in production.