Task 37 — Опции транспорта
Phase: 3
Status: done
Owner: —
Slug: transports
Goal
HTTP и gRPC first-class; опциональный адаптер для RabbitMQ, NATS и Azure Service Bus для асинхронных/disconnected сред.
Acceptance criteria
Sub-tasks
src/agent/Mesh/Transport/ITransport.cs—ITransportinterface:TransportKind,SendAsync(envelope, target, ct),SupportsBidirectionalStreamingsrc/agent/Mesh/Transport/TransportResult.cs— result wrapper withKind,LatencyMs,TransportErrorsrc/agent/Mesh/Transport/HttpTransportAdapter.cs— HTTP adapter (moves existing IntentTransport logic, adds gzip support)src/agent/Mesh/Transport/GrpcTransportAdapter.cs— gRPC adapter using Grpc.Net.Client (protopackage reference)src/agent/Mesh/Transport/IBusTransport.cs— async messaging interface:PublishAsync,SubscribeAsync,QueueName,SupportsAtMostOnce,SupportsAtLeastOncesrc/agent/Mesh/Transport/TransportFactory.cs— factory: resolvesITransportfrom config (MeshConfig.Transports)Config/AppConfig.cs— addTransportConfig TransporttoMeshConfigMeshServiceExtensions.cs— wireITransportFactory,ITransport, update consumers (IntentRouter, SharedMemorySync, TaskLifecycleProtocol, MeshRouter)IntentRouter.cs— injectITransportdirectly (no longer concreteIntentTransport)tests/Phase3Tests/TransportTests.cs— unit tests for factory, HTTP adapter, gRPC stubdotnet build— 0 errorsdotnet test Phase— all Phase tests pass (139 Phase3 + 29 Phase4)
Implementation notes
2026-08-13
Добавлено:
src/agent/Mesh/Transport/ — новая папка для transport layer:
ITransport.cs—ITransport : IDisposableinterface:TransportKind(Http/Grpc/Bus),SendAsync,SupportsBidirectionalStreaming,DeliveryGuarantee. ТакжеICapabilityLookupinterface.TransportResult.cs— result wrapper:Ok,TimedOut,Unreachable,TransportError,Rejectedfactory methods.TransportErrorKindenum.HttpTransportAdapter.cs— HTTP/REST adapter: refactored изIntentTransport, добавляет gzip support, early cancellation check, 4xx/5xx distinction.GrpcTransportAdapter.cs— gRPC adapter: HTTP/2 viaSocketsHttpHandler, connection pooling,SupportsBidirectionalStreaming = true. gRPC proto integration оставлен для task_068.IBusTransport.cs— async bus interface:PublishAsync,SubscribeAsync,BusType, queue names.NoopBusTransportstub для не-сконфигурированных окружений.TransportFactory.cs—ITransportFactoryimplementation: resolves transport fromTransportConfig, wires via DI.
Config/AppConfig.cs — MeshConfig extended with Transport Transport { get; set; } = new().
Mesh/MeshServiceExtensions.cs — добавлены регистрации ITransportFactory и ITransport, обновлены consumers:
IntentRouterтеперь принимаетITransportвместоIntentTransport; вызовSendAsync→TransportResult.Response.SharedMemorySyncпринимаетITransport+ILogger<SharedMemorySync>.TaskLifecycleProtocolпринимаетITransport?(nullable).MeshRouterпринимаетITransportвместоIntentTransport.
Mesh/CapabilityRegistry.cs — реализует ICapabilityLookup.TryGet().
Hercules.csproj — добавлен Grpc.Net.Client 2.67.0.
tests/Phase3Tests/TransportTests.cs — 20 unit тестов: TransportResult factory methods, HttpTransportAdapter, GrpcTransportAdapter, NoopBusTransport, TransportFactory, TransportConfig defaults.
Validation:
dotnet build src/agent/Hercules.csproj— 0 errors, pre-existing warnings onlydotnet test Phase3— 139/139 passeddotnet test Phase4— 29/29 passed
Scope / Likely files
src/agent/Mesh/Transport/
Dependencies
- блокирует / опирается на: task_035 — delegation-envelope
Risks / Rollback
Разные гарантии доставки; абстракция + per-transport caveats.
Links
- Backlog: ../backlog.md
- Roadmap (EN): ../../ROADMAP-EN.md
- Roadmap (RU): ../../ROADMAP-RU.md