a2aproject / a2aproject/a2a-dotnet
feat: implement tenant-based routing
- Ngôn ngữ chính
- C#
- Star
- 262
- Fork
- 64
- Merge trung bình
- 5 ngày 2 giờ
- Pull request đã merge (30 ngày)
- 31
Mô tả
## 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
Hướng dẫn đóng góp
Hướng nghiên cứu
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.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- csharp
- Lĩnh vực
- api, backend
- Loại issue
- Tính năng
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 35/100