Skip to main content

shared/iface

The public consumer-facing interfaces. Cross-module imports go only through this package — never into another module's services/ or repository/ directories.

InterfaceProvided byConsumed by
UserProvideruserevery other module
NotificationSendernotificationauth, billing, subscriptions, agents
PDFProviderdocumentsbilling
GraphProvidergraphrag
AIModelProvideraimodelsrag, agents, sales
RAGQueryProviderragagents
JWTProviderauthidentity, any custom auth integration

This indirection is what keeps consumers decoupled from producers: any implementation — in-process, or a remote HTTP-backed client a fork wires in — satisfies the same interface, so consumer code never changes.