a2aproject / a2aproject/a2a-dotnet

feat: implement tenant-based routing

未关闭
#368 1 条评论 0 个 reaction 已指派 1 人 已被 @rokonec 认领 在 GitHub 查看
v1.0.0
主要语言
C#
星标
262
派生
64
平均合并
5 天 2 小时
30 天内合并 PR
31

描述

## Summary

The A2A v1.0 specification defines tenant-based routing. All REST endpoints have `/{tenant}/` prefix variants, and every request type includes an optional `tenant` field. The .NET SDK does not currently support this.

## Spec References

- **`AgentInterface.Tenant`** (proto line 345): Each entry in `supportedInterfaces` can declare a tenant ID, allowing a single well-known agent card to advertise multiple agents.
- **REST route variants** (proto lines 26-135): All endpoints have `/{tenant}/` prefix variants (e.g., `/{tenant}/message:send`, `/{tenant}/tasks/{id}`).
- **JSON-RPC**: Tenant is passed as a field in request params (e.g., `SendMessageRequest.tenant`).
- **`GetExtendedAgentCard`**: Has `/{tenant}/extendedAgentCard` variant, enabling per-tenant agent card details after authentication.

## Current State

- `MapHttpA2A` documentation explicitly notes: "Multi-tenant route variants (`/{tenant}/tasks/{id}`) defined in the A2A specification are not currently supported. The `Tenant` field on request types will always be `null` for REST API calls."
- JSON-RPC binding: `Tenant` field is deserialized from request params but not routed.
- `GetExtendedAgentCardAsync` on `A2AServer` throws `ExtendedAgentCardNotConfigured` — no built-in implementation.

## Proposed Work

### 1: REST Tenant Routing
- Add `/{tenant}/` route variants to `MapHttpA2A` for all endpoints
- Extract tenant from route parameter and populate `Tenant` field on request objects
- Pass tenant through to `IA2ARequestHandler` methods

### 2: GetExtendedAgentCard Support
- Provide a mechanism for `A2AServer` to serve per-tenant extended agent cards (e.g., a delegate or override)
- Wire `GetExtendedAgentCard` endpoint in both JSON-RPC and REST bindings

## Use Cases
- Enterprise deployments with tenant-isolated agent configurations

贡献指南

打开贡献指南

调研方向

The work centers on MapHttpA2A in the routing layer and the A2AServer class. Start by examining the current route mappings and the IA2ARequestHandler interface to understand how requests flow. The spec references proto lines detail the required route patterns and request field mappings. Implementing tenant extraction and propagation will involve several files across the SDK's HTTP and RPC bindings.

由索引模型根据 Issue 内容生成。

评估

技术栈
csharp
领域
api, backend
Issue 类型
功能
难度
4/5
预计耗时
3-5 天
活跃度
停滞
描述清晰度
基本清楚
新手友好度
35/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。