/** * @since 1.0.0 */ import type { HttpClient } from "@effect/platform/HttpClient" import * as Context from "effect/Context" import * as Effect from "effect/Effect" import { dual } from "effect/Function" /** * @since 1.0.0 * @category Context */ export class OpenRouterConfig extends Context.Tag("@effect/ai-openrouter/OpenRouterConfig")< OpenRouterConfig, OpenRouterConfig.Service >() { /** * @since 1.0.0 */ static readonly getOrUndefined: Effect.Effect = Effect.map( Effect.context(), (context) => context.unsafeMap.get(OpenRouterConfig.key) ) } /** * @since 1.0.0 */ export declare namespace OpenRouterConfig { /** * @since 1.0.0 * @category Models */ export interface Service { readonly transformClient?: (client: HttpClient) => HttpClient } } /** * @since 1.0.0 * @category Configuration */ export const withClientTransform: { /** * @since 1.0.0 * @category Configuration */ (transform: (client: HttpClient) => HttpClient): (self: Effect.Effect) => Effect.Effect /** * @since 1.0.0 * @category Configuration */ ( self: Effect.Effect, transform: (client: HttpClient) => HttpClient ): Effect.Effect } = dual< /** * @since 1.0.0 * @category Configuration */ (transform: (client: HttpClient) => HttpClient) => (self: Effect.Effect) => Effect.Effect, /** * @since 1.0.0 * @category Configuration */ ( self: Effect.Effect, transform: (client: HttpClient) => HttpClient ) => Effect.Effect >( 2, (self, transformClient) => Effect.flatMap( OpenRouterConfig.getOrUndefined, (config) => Effect.provideService(self, OpenRouterConfig, { ...config, transformClient }) ) )