Implements FederationClientService — a NestJS injectable that dials peer
gateways over mTLS (undici Agent with cert+sealed-key from federation_peers),
invokes list/get/capabilities verbs, validates responses via Zod, and surfaces
all failure modes as typed FederationClientError with a coherent error code
taxonomy (PEER_NOT_FOUND, PEER_INACTIVE, PEER_MISCONFIGURED, NETWORK,
FORBIDDEN, HTTP_{status}, INVALID_RESPONSE).
Per-peer Agent instances are cached in a Map for the service lifetime;
flushPeer(peerId) invalidates the cache for M5/M6 cert rotation and
revocation events.
Wired into FederationModule providers + exports so QuerySourceService
(M3-09) can inject it.
13 unit tests covering all required scenarios via undici MockAgent +
real sealClientKey/unsealClientKey round-trip.
Closes #462
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
14 lines
383 B
TypeScript
14 lines
383 B
TypeScript
/**
|
|
* Federation client barrel — re-exports for FederationModule consumers.
|
|
*
|
|
* M3-09 (QuerySourceService) and future milestones should import from here,
|
|
* not directly from the implementation file.
|
|
*/
|
|
|
|
export {
|
|
FederationClientService,
|
|
FederationClientError,
|
|
type FederationClientErrorCode,
|
|
type FederationClientErrorOptions,
|
|
} from './federation-client.service.js';
|