- Breaking pre-1.0 namespace change: moved shared JSON-RPC/core APIs to
Voltaic.Coreand MCP APIs toVoltaic.Mcp - Added
Voltaic.A2Afor A2A v1.0 Agent Card models, task/message/artifact models, security declarations, push notification config models, and protocol errors - Added dependency-light
A2AClientfor JSON-RPC over HTTP withA2A-Version: 1.0and SSE streaming support - Added dependency-light
A2AHttpJsonClientfor the A2A HTTP+JSON binding without depending on ASP.NET Core orSystem.Net.ServerSentEvents - Added dependency-light
A2AGrpcClientand Watson-backedA2AGrpcServerfor A2A gRPC over HTTP/2 without ASP.NET Core - Added
A2ACardResolverfor/.well-known/agent-card.jsondiscovery - Added
A2AHttpServeronHttpListenerwith public and extended Agent Cards, JSON-RPC, HTTP+JSON REST routes, SSE streaming, task projection, in-memory task storage, live task subscriptions, CORS, optional auth, push notification config storage, and return-immediately handling - Added
IA2AAgentHandler,A2AAgentEventQueue,A2ATaskUpdater,IA2ATaskStore, andInMemoryA2ATaskStorefor direct-style agent implementation - Added official
a2a-dotnetcompatibility coverage based on inspected source commit8fe65cfaa65a72b2d63bc9bef2e2d32fddc12a18, including JSON-RPC method/envelope/header checks, HTTP+JSON route/body checks, official-style server request acceptance, and SSE parsing - Added A2A Touchstone suites covering serialization, Agent Card discovery, JSON-RPC, HTTP+JSON, gRPC, streaming, task lifecycle, push notification config CRUD, extended Agent Cards, return-immediately behavior, and compatibility oracle checks
- Added
Sample.A2AServer,Test.A2AServer, andTest.A2AClient - Reorganized library source under
src/Voltaic/Core,src/Voltaic/Mcp, andsrc/Voltaic/A2A, including A2A protobuf definitions undersrc/Voltaic/A2A/Protos - Updated README, package metadata, API coverage documentation, and source-layout tests for the new namespace layout and A2A support
- Updated package version and MCP default protocol version to
2025-11-25, while retaining2025-03-26negotiation support - Added shared MCP endpoint infrastructure for tools, resources, prompts, capability reporting, pagination, and protocol validation errors
- Expanded
ToolDefinitionmetadata and addedMcpToolCallResultsupport for structured content and full tool-call result returns - Added resource models and server registration APIs for static resources, resource templates,
resources/list,resources/templates/list, andresources/read - Added prompt models and server registration APIs for
prompts/list,prompts/get, and required prompt argument validation - Added completion provider APIs and
completion/completehandling for prompt and resource completions - Added MCP utility models and handlers for
logging/setLevel,notifications/cancelled,notifications/progress, andnotifications/message - Added lightweight JSON Schema validation for common tool input and structured-output schema cases
- Tightened Streamable HTTP behavior for required
Acceptheaders,MCP-Protocol-Version, notification202 Acceptedresponses, and terminated-session404responses - Added MCP resource/prompt/tool notification helpers for HTTP, TCP, and WebSocket transports where server-to-client notifications are available
- Added Touchstone-based shared test descriptors plus console, xUnit, and NUnit runners under
src/ - Expanded
Test.Sharedinto a 253-case matrix covering public API validation, JSON-RPC TCP integration, Streamable HTTP behavior, MCP registry operations, model serialization, framing edge cases, client connection lifecycle, auth/CORS/session behavior, stdio subprocess integration, and TCP/WebSocket MCP parity - Added protocol-level HTTP tests covering initialize, unsupported versions, tools, resources, templates, prompts, SSE notification delivery, and JSON result export
- Updated
Sample.McpServerand README with structured-output, resource, template, prompt, Streamable HTTP, authentication, and Touchstone testing examples
- Fixed Streamable HTTP
/mcpand legacy/eventsSSE connections so they emit an immediate: connectedprelude and flush as soon as the stream is established - Fixed idle SSE heartbeat behavior by restoring keep-alive comments (
: keep-alive) when no notifications are queued - Added raw
HttpClientregression tests that verify immediate SSE liveness and keep-alive delivery on the wire - Breaking change:
ClientConnection.DequeueAsync(CancellationToken)now throwsOperationCanceledExceptionwhen cancelled instead of returningnull - Clarified Streamable HTTP client usage and endpoint documentation in the README
- Fixed IDisposable implementation across all 9 disposable classes to follow the full Dispose pattern
- All classes now implement
protected virtual void Dispose(bool disposing)withGC.SuppressFinalize(this) - Added
_IsDisposedguard flags to prevent double-disposal in all classes - Fixed double-disposal bugs in JsonRpcClient, McpClient, and McpWebsocketsClient where
Disconnect()/Shutdown()previously disposed resources thatDispose()also disposed - Fixed listener disposal in JsonRpcServer, McpHttpServer, and McpWebsocketsServer; now calls
Dispose()instead ofClose()/Stop() - Fixed
TcpClient?.Close()toTcpClient?.Dispose()in ClientConnection - Removed resource disposal from
Disconnect()/Shutdown()methods to prevent double-disposal; these methods now only manage connection state
- Added
AuthenticationHandlerproperty toMcpHttpServerfor optional async request authentication - Added
AuthenticationResultclass withIsAuthenticated,Principal,Claims,StatusCode, andErrorMessageproperties - Health check (
/) andpingJSON-RPC method bypass authentication to allow connectivity validation without credentials - CORS preflight (
OPTIONS) requests bypass authentication - When
AuthenticationHandleris not set, behavior is unchanged from previous versions
- Initial release
Notes from previous versions will be pasted here.