/** * ProviderRegistry - Provider snapshot service. * * Owns provider install/auth/version/model snapshots and exposes the latest * provider state to transport layers. * * @module ProviderRegistry */ import type { ProviderKind, ServerProvider } from "@t3tools/contracts"; import { ServiceMap } from "effect"; import type { Effect, Stream } from "effect"; export interface ProviderRegistryShape { /** * Read the latest provider snapshots. */ readonly getProviders: Effect.Effect>; /** * Refresh all providers, or a single provider when specified. */ readonly refresh: (provider?: ProviderKind) => Effect.Effect>; /** * Stream of provider snapshot updates. */ readonly streamChanges: Stream.Stream>; } export class ProviderRegistry extends ServiceMap.Service()( "t3/provider/Services/ProviderRegistry", ) {}