You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Port the upstream .NET A2A task-store isolation behavior to Go by adding a2aprovider.NewIsolationKeyScopedTaskStore and the exported IsolationKeyScopedTaskStore / TaskStoreIsolationKeyProvider API. The wrapper scopes stored task IDs and context IDs by a caller-provided isolation key, strips the scoped prefixes back off before returning tasks, adds focused A2A hosting tests, and updates the feature comparison doc. This was selected because it closes a small multi-tenant A2A hosting parity gap without pulling in the larger .NET hosting/DI surface.
Upstream reference: da056275e6cfb99f51f1bc823ce5e5c587667aae from upstream-agent-framework/main.
No. This adds an opt-in A2A hosting wrapper API; existing task-store behavior is unchanged unless hosts choose to wrap their store.
Tests and Examples
go test ./provider/a2aprovider
Added targeted task-store and request-handler tests for duplicate bare task IDs across tenants, scoped list/get/update behavior, strict isolation-key enforcement, and end-to-end A2A handler isolation.
No examples were added because the change is a small hosting helper rather than a new end-user workflow.
Notes
This ports the task-store half of the upstream isolation behavior; Go still does not mirror the broader ASP.NET hosting/DI registration surface from .NET.
ListTasksResponse.TotalSize intentionally remains the wrapped store's total count when no context filter is supplied, matching the upstream wrapper semantics.
Other recent upstream A2A candidates such as request-config forwarding were not included here to keep the PR narrow and avoid overlap with existing tracking work.
This was originally intended as a pull request, but GitHub Actions is not permitted to create or approve pull requests in this repository.
The changes have been pushed to branch copilot/a2a-taskstore-isolation-a25e7ad7ea5650ba.
To fix the permissions issue, go to Settings → Actions → General and enable Allow GitHub Actions to create and approve pull requests. See also: gh-aw FAQ
Show patch preview (479 of 479 lines)
From 5fd2d35badf068ef20ef2b600039e6b228e45abe Mon Sep 17 00:00:00 2001
From: "github-actions[bot]" <github-actions[bot]@users.noreply.github.com>
Date: Thu, 6 Aug 2026 06:30:32 +0000
Subject: [PATCH] [dotnet-port-api] Port A2A task-store isolation
Add an isolation-key scoped A2A task-store wrapper so multi-tenant hosts can scope task and context identifiers without exposing prefixed IDs to callers.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
---
docs/dotnet-go-sdk-feature-comparison.md | 2 +-
.../a2aprovider/isolation_taskstore_test.go | 217 ++++++++++++++++++
provider/a2aprovider/taskstore.go | 217 ++++++++++++++++++
3 files changed, 435 insertions(+), 1 deletion(-)
create mode 100644 provider/a2aprovider/isolation_taskstore_test.go
create mode 100644 provider/a2aprovider/taskstore.go
diff --git a/docs/dotnet-go-sdk-feature-comparison.md b/docs/dotnet-go-sdk-feature-comparison.md
index 22f52a521..99a724f6b 100644
--- a/docs/dotnet-go-sdk-feature-comparison.md+++ b/docs/dotnet-go-sdk-feature-comparison.md@@ -49,7 +49,7 @@ Within overlapping features, the main misalignments are API shape and ecosystem
| Anthropic provider | Anthropic packages and reasoning/skills/function-tool samples. | `anthropicprovider.NewAgent`, message params option. | Partial | Go has provider support, but sample coverage is smaller. |
| Gemini/provider ecosystem | Google Gemini sample through provider adapters. | `geminiprovider.NewAgent`, generate content config option. | Aligned | .NET reaches more providers through generic `IChatClient` adapters; Go has a direct Gemini package. |
| A2A agent client | `Microsoft.Agents.AI.A2A`, card/client extensions, task/session support. | `provider/a2aprovider`, task ID option, task ID/session helpers. | Aligned | Go exposes task IDs through options/session helpers; .NET exposes extension methods over A2A clients/cards/resolvers. |
-| A2A hosting | A2A hosting packages, ASP.NET Core hosting, sam
... (truncated)
Summary
Port the upstream .NET A2A task-store isolation behavior to Go by adding
a2aprovider.NewIsolationKeyScopedTaskStoreand the exportedIsolationKeyScopedTaskStore/TaskStoreIsolationKeyProviderAPI. The wrapper scopes stored task IDs and context IDs by a caller-provided isolation key, strips the scoped prefixes back off before returning tasks, adds focused A2A hosting tests, and updates the feature comparison doc. This was selected because it closes a small multi-tenant A2A hosting parity gap without pulling in the larger .NET hosting/DI surface.Upstream reference:
da056275e6cfb99f51f1bc823ce5e5c587667aaefromupstream-agent-framework/main.Ported .NET PRs
Breaking Changes
No. This adds an opt-in A2A hosting wrapper API; existing task-store behavior is unchanged unless hosts choose to wrap their store.
Tests and Examples
go test ./provider/a2aproviderNotes
ListTasksResponse.TotalSizeintentionally remains the wrapped store's total count when no context filter is supplied, matching the upstream wrapper semantics.Note
This was originally intended as a pull request, but GitHub Actions is not permitted to create or approve pull requests in this repository.
The changes have been pushed to branch
copilot/a2a-taskstore-isolation-a25e7ad7ea5650ba.Click here to create the pull request
To fix the permissions issue, go to Settings → Actions → General and enable Allow GitHub Actions to create and approve pull requests. See also: gh-aw FAQ
Show patch preview (479 of 479 lines)