Parent RFC: #254
Scope
Aevatar.GAgents.Channel.Abstractions package —— 核心接口层。
Deliverables
Interfaces (Aevatar.GAgents.Channel.Abstractions/):
Hard constraint: single-class two-interfaces
- 禁止 "独立两个类实现"——
IChannelTransport 和 IChannelOutboundPort 必须 single class 同时实现(init/auth/capabilities 共享 state)
- CI guard:
channel_mega_interface_guard.sh 禁止 mega-interface 回归
- Conformance Suite 泛型约束
where TAdapter : IChannelTransport, IChannelOutboundPort
Types (from proto-generated in #256):
- C# record partial classes 在 proto-generated types 上扩展必要的 helper 方法(deterministic canonical key builders etc.)
Interface documentation:
- §5.8 Interface Contracts 全部内联为 XML doc comments(lifecycle / idempotency / ordering)
Acceptance
References
- RFC §5 核心接口设计(§5.1-§5.8 全章节)
- RFC §5.8 Interface Contracts
Dependencies
Parent RFC: #254
Scope
Aevatar.GAgents.Channel.Abstractionspackage —— 核心接口层。Deliverables
Interfaces (
Aevatar.GAgents.Channel.Abstractions/):IChannelTransport(Runtime side: lifecycle + inbound stream + capabilities)IChannelOutboundPort(Dispatch side: send/update/delete/continue)IMessageComposer<TNativePayload>+IMessageComposer通用IBot+ITurnContext(业务 bot logic 接口)IChannelMiddleware(窄范围横切:logging / tracing / conversation resolver)ICredentialProvider(see [Channel RFC] Phase 0 infra prerequisites (DeleteAsync / EventHubs harness / secret manager) #255)IPayloadRedactor(含HealthCheckAsync)PerEntryDocumentProjector<TEntry, TDocument>抽象基类(base 类抽取见 [Channel RFC] Base class extraction (PerEntryDocumentProjector + ISchedulable) #259)ISchedulablemarker interface(见 [Channel RFC] Base class extraction (PerEntryDocumentProjector + ISchedulable) #259)Hard constraint: single-class two-interfaces
IChannelTransport和IChannelOutboundPort必须 single class 同时实现(init/auth/capabilities 共享 state)channel_mega_interface_guard.sh禁止 mega-interface 回归where TAdapter : IChannelTransport, IChannelOutboundPortTypes (from proto-generated in #256):
Interface documentation:
Acceptance
Aevatar.GAgents.Channel.Abstractions.csproj独立 build 通过References
Dependencies