/** * ProviderAdapterRegistry - Lookup boundary for provider adapter implementations. * * Maps a provider kind to the concrete adapter service (Codex, Claude, etc). * It does not own session lifecycle or routing rules; `ProviderService` uses * this registry together with `ProviderSessionDirectory`. * * @module ProviderAdapterRegistry */ import type { ProviderKind } from "@t3tools/contracts"; import { ServiceMap } from "effect"; import type { Effect } from "effect"; import type { ProviderAdapterError, ProviderUnsupportedError } from "../Errors.ts"; import type { ProviderAdapterShape } from "./ProviderAdapter.ts"; /** * ProviderAdapterRegistryShape - Service API for adapter lookup by provider kind. */ export interface ProviderAdapterRegistryShape { /** * Resolve the adapter for a provider kind. */ readonly getByProvider: ( provider: ProviderKind, ) => Effect.Effect, ProviderUnsupportedError>; /** * List provider kinds currently registered. */ readonly listProviders: () => Effect.Effect>; } /** * ProviderAdapterRegistry - Service tag for provider adapter lookup. */ export class ProviderAdapterRegistry extends ServiceMap.Service< ProviderAdapterRegistry, ProviderAdapterRegistryShape >()("t3/provider/Services/ProviderAdapterRegistry") {} // Dummy comment for workflow testing.