diff --git a/Directory.Packages.props b/Directory.Packages.props
index beb4778e..1f58e358 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -2,13 +2,13 @@
true
true
- 2.0.0
+ 2.2.0
1.0.8
-
-
+
+
@@ -28,9 +28,9 @@
-
-
-
+
+
+
diff --git a/benchmarks/CrestApps.Core.Benchmarks/A2AToolRegistryProviderBenchmarks.cs b/benchmarks/CrestApps.Core.Benchmarks/A2AToolRegistryProviderBenchmarks.cs
index d8165f4e..aeefc68b 100644
--- a/benchmarks/CrestApps.Core.Benchmarks/A2AToolRegistryProviderBenchmarks.cs
+++ b/benchmarks/CrestApps.Core.Benchmarks/A2AToolRegistryProviderBenchmarks.cs
@@ -79,7 +79,13 @@ public void Setup()
{
Name = $"Agent {connectionIndex}",
Description = $"Benchmark agent {connectionIndex}.",
- Url = $"https://agent-{connectionIndex}.example",
+ SupportedInterfaces =
+ [
+ new AgentInterface
+ {
+ Url = $"https://agent-{connectionIndex}.example",
+ },
+ ],
Version = "1.0",
Skills = skills,
}));
diff --git a/benchmarks/CrestApps.Core.Benchmarks/CrestApps.Core.Benchmarks.csproj b/benchmarks/CrestApps.Core.Benchmarks/CrestApps.Core.Benchmarks.csproj
index b8f6bd62..3f88e2a5 100644
--- a/benchmarks/CrestApps.Core.Benchmarks/CrestApps.Core.Benchmarks.csproj
+++ b/benchmarks/CrestApps.Core.Benchmarks/CrestApps.Core.Benchmarks.csproj
@@ -3,6 +3,7 @@
Exe
false
+ $(NoWarn);CA1001;CA1305;CA1848
diff --git a/src/CrestApps.Core.Docs/docs/changelog/1.2.0.md b/src/CrestApps.Core.Docs/docs/changelog/1.2.0.md
index 0a8acc78..72c9c709 100644
--- a/src/CrestApps.Core.Docs/docs/changelog/1.2.0.md
+++ b/src/CrestApps.Core.Docs/docs/changelog/1.2.0.md
@@ -13,6 +13,11 @@ description: Release notes for the CrestApps.Core 1.2.0 release.
## Change Logs
+- Updated the A2A client, proxy tools, MVC sample host, and Blazor sample host to use the A2A 1.0 preview protocol models and ASP.NET Core endpoint APIs.
+- Updated A2A tests and benchmark build settings for the A2A 1.0 preview API and stricter analyzer defaults.
+- Fixed the A2A client sample error handling so authentication redirects and non-JSON host responses produce actionable messages instead of JSON parser errors.
+- Corrected the A2A client sample's standalone MVC and Blazor host endpoints to match each project's HTTPS launch URL and improved local TLS/connection error messages.
+- Updated the Aspire sample host to set the effective A2A host options for local unauthenticated A2A sample-client calls.
- Downgraded YesSql to 5.4.7 to unblock the release of CrestApps.OrchardCore 2.1.
- upgrades SSH.NET to 2026.0.0 to address the high-severity
[GHSA-q939-rpr3-3284](https://github.com/advisories/GHSA-q939-rpr3-3284)
diff --git a/src/Primitives/CrestApps.Core.AI.A2A/A2ALog.cs b/src/Primitives/CrestApps.Core.AI.A2A/A2ALog.cs
new file mode 100644
index 00000000..90570ed1
--- /dev/null
+++ b/src/Primitives/CrestApps.Core.AI.A2A/A2ALog.cs
@@ -0,0 +1,105 @@
+using Microsoft.Extensions.Logging;
+
+namespace CrestApps.Core.AI.A2A;
+
+internal static class A2ALog
+{
+ private static readonly Action _failedToLoadAgentCardForConnection =
+ LoggerMessage.Define(
+ LogLevel.Warning,
+ new EventId(1001, nameof(FailedToLoadAgentCardForConnection)),
+ "Failed to load agent card for A2A connection '{ConnectionId}'.");
+
+ private static readonly Action _failedToFetchAgentCardFromHost =
+ LoggerMessage.Define(
+ LogLevel.Warning,
+ new EventId(1002, nameof(FailedToFetchAgentCardFromHost)),
+ "Failed to fetch agent card from A2A host '{Endpoint}' for connection '{ConnectionId}'.");
+
+ private static readonly Action _failedToCommunicateWithRemoteAgent =
+ LoggerMessage.Define(
+ LogLevel.Error,
+ new EventId(1003, nameof(FailedToCommunicateWithRemoteAgent)),
+ "Failed to communicate with remote A2A agent '{AgentName}' at '{Endpoint}'.");
+
+ private static readonly Action _failedToListLocalAgentProfiles =
+ LoggerMessage.Define(
+ LogLevel.Warning,
+ new EventId(1004, nameof(FailedToListLocalAgentProfiles)),
+ "Failed to list local agent profiles.");
+
+ private static readonly Action _failedToFetchAgentCardFromConnection =
+ LoggerMessage.Define(
+ LogLevel.Warning,
+ new EventId(1005, nameof(FailedToFetchAgentCardFromConnection)),
+ "Failed to fetch agent card from A2A connection '{ConnectionId}'.");
+
+ private static readonly Action _failedToListRemoteA2AAgents =
+ LoggerMessage.Define(
+ LogLevel.Warning,
+ new EventId(1006, nameof(FailedToListRemoteA2AAgents)),
+ "Failed to list remote A2A agents.");
+
+ private static readonly Action _failedToSearchForTools =
+ LoggerMessage.Define(
+ LogLevel.Warning,
+ new EventId(1007, nameof(FailedToSearchForTools)),
+ "Failed to search for tools.");
+
+ private static readonly Action _failedToSearchLocalAgentProfiles =
+ LoggerMessage.Define(
+ LogLevel.Warning,
+ new EventId(1008, nameof(FailedToSearchLocalAgentProfiles)),
+ "Failed to search local agent profiles.");
+
+ private static readonly Action _failedToSearchRemoteA2AAgents =
+ LoggerMessage.Define(
+ LogLevel.Warning,
+ new EventId(1009, nameof(FailedToSearchRemoteA2AAgents)),
+ "Failed to search remote A2A agents.");
+
+ public static void FailedToLoadAgentCardForConnection(ILogger logger, string connectionId, Exception exception)
+ {
+ _failedToLoadAgentCardForConnection(logger, connectionId, exception);
+ }
+
+ public static void FailedToFetchAgentCardFromHost(ILogger logger, string endpoint, string connectionId, Exception exception)
+ {
+ _failedToFetchAgentCardFromHost(logger, endpoint, connectionId, exception);
+ }
+
+ public static void FailedToCommunicateWithRemoteAgent(ILogger logger, string agentName, string endpoint, Exception exception)
+ {
+ _failedToCommunicateWithRemoteAgent(logger, agentName, endpoint, exception);
+ }
+
+ public static void FailedToListLocalAgentProfiles(ILogger logger, Exception exception)
+ {
+ _failedToListLocalAgentProfiles(logger, exception);
+ }
+
+ public static void FailedToFetchAgentCardFromConnection(ILogger logger, string connectionId, Exception exception)
+ {
+ _failedToFetchAgentCardFromConnection(logger, connectionId, exception);
+ }
+
+ public static void FailedToListRemoteA2AAgents(ILogger logger, Exception exception)
+ {
+ _failedToListRemoteA2AAgents(logger, exception);
+ }
+
+ public static void FailedToSearchForTools(ILogger logger, Exception exception)
+ {
+ _failedToSearchForTools(logger, exception);
+ }
+
+ public static void FailedToSearchLocalAgentProfiles(ILogger logger, Exception exception)
+ {
+ _failedToSearchLocalAgentProfiles(logger, exception);
+ }
+
+ public static void FailedToSearchRemoteA2AAgents(ILogger logger, Exception exception)
+ {
+ _failedToSearchRemoteA2AAgents(logger, exception);
+ }
+}
diff --git a/src/Primitives/CrestApps.Core.AI.A2A/Functions/FindAgentForTaskFunction.cs b/src/Primitives/CrestApps.Core.AI.A2A/Functions/FindAgentForTaskFunction.cs
index 583ca14b..02cd6c18 100644
--- a/src/Primitives/CrestApps.Core.AI.A2A/Functions/FindAgentForTaskFunction.cs
+++ b/src/Primitives/CrestApps.Core.AI.A2A/Functions/FindAgentForTaskFunction.cs
@@ -1,4 +1,5 @@
using System.Text.Json;
+using CrestApps.Core.AI.A2A;
using CrestApps.Core.AI.A2A.Models;
using CrestApps.Core.AI.A2A.Services;
using CrestApps.Core.AI.Extensions;
@@ -106,7 +107,7 @@ protected override async ValueTask