@effect/ai-openrouter 4.0.0-beta.9 → 4.0.0-beta.91

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,11 +1,16 @@
1
1
  /**
2
- * @since 1.0.0
2
+ * The `OpenRouterClient` module provides an Effect service for calling
3
+ * OpenRouter's chat completions API. It wraps the generated OpenRouter HTTP
4
+ * client with Effect-native constructors, layers, authentication and optional
5
+ * site ranking headers, typed errors, and streaming support.
6
+ *
7
+ * @since 4.0.0
3
8
  */
4
9
  import type * as Config from "effect/Config";
10
+ import * as Context from "effect/Context";
5
11
  import * as Effect from "effect/Effect";
6
12
  import * as Layer from "effect/Layer";
7
13
  import type * as Redacted from "effect/Redacted";
8
- import * as ServiceMap from "effect/ServiceMap";
9
14
  import * as Stream from "effect/Stream";
10
15
  import type * as AiError from "effect/unstable/ai/AiError";
11
16
  import * as HttpClient from "effect/unstable/http/HttpClient";
@@ -14,11 +19,13 @@ import * as Generated from "./Generated.ts";
14
19
  /**
15
20
  * The OpenRouter client service interface.
16
21
  *
22
+ * **Details**
23
+ *
17
24
  * Provides methods for interacting with OpenRouter's Chat Completions API,
18
25
  * including both synchronous and streaming message creation.
19
26
  *
20
- * @since 1.0.0
21
27
  * @category models
28
+ * @since 4.0.0
22
29
  */
23
30
  export interface Service {
24
31
  readonly client: Generated.OpenRouterClient;
@@ -32,24 +39,40 @@ export interface Service {
32
39
  ], AiError.AiError>;
33
40
  }
34
41
  /**
35
- * @since 1.0.0
36
- * @category Models
42
+ * Decoded `data` payload from an OpenRouter chat completion streaming chunk.
43
+ *
44
+ * **Details**
45
+ *
46
+ * The payload contains streamed choices, model metadata, optional usage, and may
47
+ * include an OpenRouter error object for a streamed response.
48
+ *
49
+ * @category models
50
+ * @since 4.0.0
37
51
  */
38
52
  export type ChatStreamingResponseChunkData = typeof Generated.ChatStreamingResponseChunk.fields.data.Type;
39
- declare const OpenRouterClient_base: ServiceMap.ServiceClass<OpenRouterClient, "@effect/ai-openrouter/OpenRouterClient", Service>;
53
+ declare const OpenRouterClient_base: Context.ServiceClass<OpenRouterClient, "@effect/ai-openrouter/OpenRouterClient", Service>;
40
54
  /**
41
- * Service identifier for the OpenRouter client.
55
+ * Service tag for the OpenRouter client.
56
+ *
57
+ * **When to use**
42
58
  *
43
- * @since 1.0.0
44
- * @category service
59
+ * Use when accessing or providing the OpenRouter client service through
60
+ * Effect's context.
61
+ *
62
+ * @see {@link make} for constructing an OpenRouter client effectfully
63
+ * @see {@link layer} for providing a client from explicit options
64
+ * @see {@link layerConfig} for providing a client from `Config`
65
+ *
66
+ * @category services
67
+ * @since 4.0.0
45
68
  */
46
69
  export declare class OpenRouterClient extends OpenRouterClient_base {
47
70
  }
48
71
  /**
49
- * Configuration options for creating an OpenRouter client.
72
+ * Configuration for creating an OpenRouter client.
50
73
  *
51
- * @since 1.0.0
52
- * @category models
74
+ * @category options
75
+ * @since 4.0.0
53
76
  */
54
77
  export type Options = {
55
78
  readonly apiKey?: Redacted.Redacted<string> | undefined;
@@ -65,36 +88,79 @@ export type Options = {
65
88
  /**
66
89
  * Optional transformer for the underlying HTTP client.
67
90
  *
68
- * Use this to add middleware, logging, or custom request/response handling.
91
+ * **When to use**
92
+ *
93
+ * Use to add middleware, logging, or custom request/response handling.
69
94
  */
70
95
  readonly transformClient?: ((client: HttpClient.HttpClient) => HttpClient.HttpClient) | undefined;
71
96
  };
72
97
  /**
73
- * Creates an OpenRouter client service with the given options.
98
+ * Creates an OpenRouter client service from explicit options.
99
+ *
100
+ * **When to use**
101
+ *
102
+ * Use when you need the OpenRouter client service value inside an effect.
103
+ *
104
+ * **Details**
105
+ *
106
+ * The returned service uses the current `HttpClient`, prepends `apiUrl` or
107
+ * `https://openrouter.ai/api/v1`, adds the bearer token and optional
108
+ * `HTTP-Referer` and `X-Title` headers, accepts JSON responses, and applies
109
+ * `transformClient` when provided.
110
+ *
111
+ * **Gotchas**
112
+ *
113
+ * Scoped `OpenRouterConfig.withClientTransform` applies to generated client
114
+ * request methods. Streaming chat completion requests are sent directly by this
115
+ * module and do not read that scoped transform.
116
+ *
117
+ * @see {@link layer} for providing this client from explicit options
118
+ * @see {@link layerConfig} for loading client settings from `Config`
74
119
  *
75
- * @since 1.0.0
76
120
  * @category constructors
121
+ * @since 4.0.0
77
122
  */
78
123
  export declare const make: (options: Options) => Effect.Effect<Service, never, HttpClient.HttpClient>;
79
124
  /**
80
125
  * Creates a layer for the OpenRouter client with the given options.
81
126
  *
82
- * @since 1.0.0
127
+ * **When to use**
128
+ *
129
+ * Use when you already have the OpenRouter client options in code and want to
130
+ * provide `OpenRouterClient` as a layer.
131
+ *
132
+ * @see {@link make} for constructing the client service effectfully
133
+ * @see {@link layerConfig} for loading client settings from `Config`
134
+ *
83
135
  * @category layers
136
+ * @since 4.0.0
84
137
  */
85
138
  export declare const layer: (options: Options) => Layer.Layer<OpenRouterClient, never, HttpClient.HttpClient>;
86
139
  /**
87
- * Creates a layer for the OpenRouter client, loading the requisite
88
- * configuration via Effect's `Config` module.
140
+ * Creates a layer for the OpenRouter client from provided `Config` values.
141
+ *
142
+ * **When to use**
143
+ *
144
+ * Use when you need client settings for OpenRouter to be read from Effect
145
+ * `Config` values while providing `OpenRouterClient` as a layer.
146
+ *
147
+ * **Details**
148
+ *
149
+ * Only config values supplied in `options` are loaded. Omitted fields are
150
+ * passed to `make` as `undefined`, and `transformClient` is forwarded as a
151
+ * plain option.
152
+ *
153
+ * @see {@link make} for constructing the client service effectfully
154
+ * @see {@link layer} for providing the client from already-resolved options
89
155
  *
90
- * @since 1.0.0
91
156
  * @category layers
157
+ * @since 4.0.0
92
158
  */
93
159
  export declare const layerConfig: (options?: {
94
160
  /**
95
161
  * The config value to load for the API key.
96
162
  */
97
- readonly apiKey?: Config.Config<Redacted.Redacted<string>> | undefined;
163
+ readonly apiKey?: Config.Config<Redacted.Redacted<string> | undefined> | undefined;
98
164
  /**
99
165
  * The config value to load for the API URL.
100
166
  */
@@ -1 +1 @@
1
- {"version":3,"file":"OpenRouterClient.d.ts","sourceRoot":"","sources":["../src/OpenRouterClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"OpenRouterClient.d.ts","sourceRoot":"","sources":["../src/OpenRouterClient.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
+ import * as Context from "effect/Context";
1
2
  import * as Effect from "effect/Effect";
2
3
  import { identity } from "effect/Function";
3
4
  import * as Layer from "effect/Layer";
4
5
  import * as Predicate from "effect/Predicate";
5
6
  import * as Schema from "effect/Schema";
6
- import * as ServiceMap from "effect/ServiceMap";
7
7
  import * as Stream from "effect/Stream";
8
8
  import * as Sse from "effect/unstable/encoding/Sse";
9
9
  import * as HttpBody from "effect/unstable/http/HttpBody";
@@ -16,24 +16,53 @@ import { OpenRouterConfig } from "./OpenRouterConfig.js";
16
16
  // Service Identifier
17
17
  // =============================================================================
18
18
  /**
19
- * Service identifier for the OpenRouter client.
19
+ * Service tag for the OpenRouter client.
20
20
  *
21
- * @since 1.0.0
22
- * @category service
21
+ * **When to use**
22
+ *
23
+ * Use when accessing or providing the OpenRouter client service through
24
+ * Effect's context.
25
+ *
26
+ * @see {@link make} for constructing an OpenRouter client effectfully
27
+ * @see {@link layer} for providing a client from explicit options
28
+ * @see {@link layerConfig} for providing a client from `Config`
29
+ *
30
+ * @category services
31
+ * @since 4.0.0
23
32
  */
24
- export class OpenRouterClient extends /*#__PURE__*/ServiceMap.Service()("@effect/ai-openrouter/OpenRouterClient") {}
33
+ export class OpenRouterClient extends /*#__PURE__*/Context.Service()("@effect/ai-openrouter/OpenRouterClient") {}
25
34
  // =============================================================================
26
35
  // Constructor
27
36
  // =============================================================================
28
37
  /**
29
- * Creates an OpenRouter client service with the given options.
38
+ * Creates an OpenRouter client service from explicit options.
39
+ *
40
+ * **When to use**
41
+ *
42
+ * Use when you need the OpenRouter client service value inside an effect.
43
+ *
44
+ * **Details**
45
+ *
46
+ * The returned service uses the current `HttpClient`, prepends `apiUrl` or
47
+ * `https://openrouter.ai/api/v1`, adds the bearer token and optional
48
+ * `HTTP-Referer` and `X-Title` headers, accepts JSON responses, and applies
49
+ * `transformClient` when provided.
50
+ *
51
+ * **Gotchas**
52
+ *
53
+ * Scoped `OpenRouterConfig.withClientTransform` applies to generated client
54
+ * request methods. Streaming chat completion requests are sent directly by this
55
+ * module and do not read that scoped transform.
56
+ *
57
+ * @see {@link layer} for providing this client from explicit options
58
+ * @see {@link layerConfig} for loading client settings from `Config`
30
59
  *
31
- * @since 1.0.0
32
60
  * @category constructors
61
+ * @since 4.0.0
33
62
  */
34
63
  export const make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
35
64
  const baseClient = yield* HttpClient.HttpClient;
36
- const httpClient = baseClient.pipe(HttpClient.mapRequest(request => request.pipe(HttpClientRequest.prependUrl(options.apiUrl ?? "https://openrouter.ai/api/v1"), options.apiKey ? HttpClientRequest.bearerToken(options.apiKey) : identity, options.siteReferrer ? HttpClientRequest.setHeader("HTTP-Referrer", options.siteReferrer) : identity, options.siteTitle ? HttpClientRequest.setHeader("X-Title", options.siteTitle) : identity, HttpClientRequest.acceptJson)), options.transformClient ?? identity);
65
+ const httpClient = baseClient.pipe(HttpClient.mapRequest(request => request.pipe(HttpClientRequest.prependUrl(options.apiUrl ?? "https://openrouter.ai/api/v1"), options.apiKey ? HttpClientRequest.bearerToken(options.apiKey) : identity, options.siteReferrer ? HttpClientRequest.setHeader("HTTP-Referer", options.siteReferrer) : identity, options.siteTitle ? HttpClientRequest.setHeader("X-Title", options.siteTitle) : identity, HttpClientRequest.acceptJson)), options.transformClient ?? identity);
37
66
  const httpClientOk = HttpClient.filterStatusOk(httpClient);
38
67
  const client = Generated.make(httpClient, {
39
68
  transformClient: Effect.fnUntraced(function* (client) {
@@ -87,16 +116,37 @@ export const make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
87
116
  /**
88
117
  * Creates a layer for the OpenRouter client with the given options.
89
118
  *
90
- * @since 1.0.0
119
+ * **When to use**
120
+ *
121
+ * Use when you already have the OpenRouter client options in code and want to
122
+ * provide `OpenRouterClient` as a layer.
123
+ *
124
+ * @see {@link make} for constructing the client service effectfully
125
+ * @see {@link layerConfig} for loading client settings from `Config`
126
+ *
91
127
  * @category layers
128
+ * @since 4.0.0
92
129
  */
93
130
  export const layer = options => Layer.effect(OpenRouterClient, make(options));
94
131
  /**
95
- * Creates a layer for the OpenRouter client, loading the requisite
96
- * configuration via Effect's `Config` module.
132
+ * Creates a layer for the OpenRouter client from provided `Config` values.
133
+ *
134
+ * **When to use**
135
+ *
136
+ * Use when you need client settings for OpenRouter to be read from Effect
137
+ * `Config` values while providing `OpenRouterClient` as a layer.
138
+ *
139
+ * **Details**
140
+ *
141
+ * Only config values supplied in `options` are loaded. Omitted fields are
142
+ * passed to `make` as `undefined`, and `transformClient` is forwarded as a
143
+ * plain option.
144
+ *
145
+ * @see {@link make} for constructing the client service effectfully
146
+ * @see {@link layer} for providing the client from already-resolved options
97
147
  *
98
- * @since 1.0.0
99
148
  * @category layers
149
+ * @since 4.0.0
100
150
  */
101
151
  export const layerConfig = options => Layer.effect(OpenRouterClient, Effect.gen(function* () {
102
152
  const apiKey = Predicate.isNotUndefined(options?.apiKey) ? yield* options.apiKey : undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"OpenRouterClient.js","names":["Effect","identity","Layer","Predicate","Schema","ServiceMap","Stream","Sse","HttpBody","HttpClient","HttpClientRequest","Generated","Errors","OpenRouterConfig","OpenRouterClient","Service","make","fnUntraced","options","baseClient","httpClient","pipe","mapRequest","request","prependUrl","apiUrl","apiKey","bearerToken","siteReferrer","setHeader","siteTitle","acceptJson","transformClient","httpClientOk","filterStatusOk","client","config","getOrUndefined","isNotUndefined","createChatCompletion","payload","sendChatCompletionRequest","includeResponse","catchTags","SendChatCompletionRequest400","error","fail","mapClientError","SendChatCompletionRequest401","SendChatCompletionRequest429","SendChatCompletionRequest500","HttpClientError","mapHttpClientError","SchemaError","mapSchemaError","buildChatCompletionStream","response","stream","decodeText","pipeThroughChannel","decode","mapEffect","event","decodeChatCompletionSseData","data","takeWhile","Retry","die","fromEffect","createChatCompletionStream","execute","post","body","jsonUnsafe","stream_options","include_usage","map","catchTag","of","layer","effect","layerConfig","gen","undefined","ChatStreamingResponseChunkDataFromString","fromJsonString","ChatStreamingResponseChunk","fields","decodeChatStreamingResponseChunkData","decodeUnknownEffect","succeed"],"sources":["../src/OpenRouterClient.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"OpenRouterClient.js","names":["Context","Effect","identity","Layer","Predicate","Schema","Stream","Sse","HttpBody","HttpClient","HttpClientRequest","Generated","Errors","OpenRouterConfig","OpenRouterClient","Service","make","fnUntraced","options","baseClient","httpClient","pipe","mapRequest","request","prependUrl","apiUrl","apiKey","bearerToken","siteReferrer","setHeader","siteTitle","acceptJson","transformClient","httpClientOk","filterStatusOk","client","config","getOrUndefined","isNotUndefined","createChatCompletion","payload","sendChatCompletionRequest","includeResponse","catchTags","SendChatCompletionRequest400","error","fail","mapClientError","SendChatCompletionRequest401","SendChatCompletionRequest429","SendChatCompletionRequest500","HttpClientError","mapHttpClientError","SchemaError","mapSchemaError","buildChatCompletionStream","response","stream","decodeText","pipeThroughChannel","decode","mapEffect","event","decodeChatCompletionSseData","data","takeWhile","Retry","die","fromEffect","createChatCompletionStream","execute","post","body","jsonUnsafe","stream_options","include_usage","map","catchTag","of","layer","effect","layerConfig","gen","undefined","ChatStreamingResponseChunkDataFromString","fromJsonString","ChatStreamingResponseChunk","fields","decodeChatStreamingResponseChunkData","decodeUnknownEffect","succeed"],"sources":["../src/OpenRouterClient.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1,45 +1,130 @@
1
1
  /**
2
- * @since 1.0.0
2
+ * The `OpenRouterConfig` module lets a workflow temporarily customize the HTTP
3
+ * client used by generated OpenRouter request methods. `OpenRouterClient` reads
4
+ * this scoped transform when generated client operations execute, so callers can
5
+ * add middleware or instrumentation without rebuilding the client layer.
6
+ *
7
+ * @since 4.0.0
3
8
  */
9
+ import * as Context from "effect/Context";
4
10
  import * as Effect from "effect/Effect";
5
- import * as ServiceMap from "effect/ServiceMap";
6
11
  import type { HttpClient } from "effect/unstable/http/HttpClient";
7
- declare const OpenRouterConfig_base: ServiceMap.ServiceClass<OpenRouterConfig, "@effect/ai-openrouter/OpenRouterConfig", OpenRouterConfig.Service>;
12
+ declare const OpenRouterConfig_base: Context.ServiceClass<OpenRouterConfig, "@effect/ai-openrouter/OpenRouterConfig", OpenRouterConfig.Service>;
8
13
  /**
9
- * @since 1.0.0
14
+ * Context service for scoped OpenRouter provider configuration used by client
15
+ * operations.
16
+ *
17
+ * **When to use**
18
+ *
19
+ * Use as the context service tag when manually providing or reading scoped
20
+ * OpenRouter provider configuration in an Effect context.
21
+ *
22
+ * @see {@link withClientTransform} for scoping an HTTP client transformation
23
+ *
10
24
  * @category services
25
+ * @since 4.0.0
11
26
  */
12
27
  export declare class OpenRouterConfig extends OpenRouterConfig_base {
13
28
  /**
14
- * @since 1.0.0
29
+ * Gets the configured OpenRouter service from the current context when present.
30
+ *
31
+ * @since 4.0.0
15
32
  */
16
33
  static readonly getOrUndefined: Effect.Effect<typeof OpenRouterConfig.Service | undefined>;
17
34
  }
18
35
  /**
19
- * @since 1.0.0
36
+ * Types associated with the `OpenRouterConfig` context service.
37
+ *
38
+ * @since 4.0.0
20
39
  */
21
40
  export declare namespace OpenRouterConfig {
22
41
  /**
23
- * @since 1.0.0
42
+ * Configuration values read by OpenRouter provider operations when resolving
43
+ * the generated HTTP client.
44
+ *
24
45
  * @category models
46
+ * @since 4.0.0
25
47
  */
26
48
  interface Service {
27
49
  readonly transformClient?: ((client: HttpClient) => HttpClient) | undefined;
28
50
  }
29
51
  }
30
52
  /**
31
- * @since 1.0.0
53
+ * Provides a scoped transform for the OpenRouter HTTP client used by provider
54
+ * operations.
55
+ *
56
+ * **When to use**
57
+ *
58
+ * Use when you need temporary OpenRouter HTTP client customization for a
59
+ * single effect or workflow without rebuilding the client layer.
60
+ *
61
+ * **Details**
62
+ *
63
+ * Supports both data-first and data-last forms. The transform is stored in the
64
+ * scoped `OpenRouterConfig` service and read by generated OpenRouter request
65
+ * operations while running the supplied effect.
66
+ *
67
+ * **Gotchas**
68
+ *
69
+ * If a transform is already present in the scoped config, this helper replaces
70
+ * it. Compose transforms manually when both should apply. Streaming chat
71
+ * completion requests are sent directly by `OpenRouterClient.make` and do not
72
+ * read this scoped transform.
73
+ *
32
74
  * @category configuration
75
+ * @since 4.0.0
33
76
  */
34
77
  export declare const withClientTransform: {
35
78
  /**
36
- * @since 1.0.0
79
+ * Provides a scoped transform for the OpenRouter HTTP client used by provider
80
+ * operations.
81
+ *
82
+ * **When to use**
83
+ *
84
+ * Use when you need temporary OpenRouter HTTP client customization for a
85
+ * single effect or workflow without rebuilding the client layer.
86
+ *
87
+ * **Details**
88
+ *
89
+ * Supports both data-first and data-last forms. The transform is stored in the
90
+ * scoped `OpenRouterConfig` service and read by generated OpenRouter request
91
+ * operations while running the supplied effect.
92
+ *
93
+ * **Gotchas**
94
+ *
95
+ * If a transform is already present in the scoped config, this helper replaces
96
+ * it. Compose transforms manually when both should apply. Streaming chat
97
+ * completion requests are sent directly by `OpenRouterClient.make` and do not
98
+ * read this scoped transform.
99
+ *
37
100
  * @category configuration
101
+ * @since 4.0.0
38
102
  */
39
103
  (transform: (client: HttpClient) => HttpClient): <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
40
104
  /**
41
- * @since 1.0.0
105
+ * Provides a scoped transform for the OpenRouter HTTP client used by provider
106
+ * operations.
107
+ *
108
+ * **When to use**
109
+ *
110
+ * Use when you need temporary OpenRouter HTTP client customization for a
111
+ * single effect or workflow without rebuilding the client layer.
112
+ *
113
+ * **Details**
114
+ *
115
+ * Supports both data-first and data-last forms. The transform is stored in the
116
+ * scoped `OpenRouterConfig` service and read by generated OpenRouter request
117
+ * operations while running the supplied effect.
118
+ *
119
+ * **Gotchas**
120
+ *
121
+ * If a transform is already present in the scoped config, this helper replaces
122
+ * it. Compose transforms manually when both should apply. Streaming chat
123
+ * completion requests are sent directly by `OpenRouterClient.make` and do not
124
+ * read this scoped transform.
125
+ *
42
126
  * @category configuration
127
+ * @since 4.0.0
43
128
  */
44
129
  <A, E, R>(self: Effect.Effect<A, E, R>, transform: (client: HttpClient) => HttpClient): Effect.Effect<A, E, R>;
45
130
  };
@@ -1 +1 @@
1
- {"version":3,"file":"OpenRouterConfig.d.ts","sourceRoot":"","sources":["../src/OpenRouterConfig.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAA;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAA;;AAEjE;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,qBAGO;IAC3C;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,gBAAgB,CAAC,OAAO,GAAG,SAAS,CAAC,CAGzF;CACF;AAED;;GAEG;AACH,MAAM,CAAC,OAAO,WAAW,gBAAgB,CAAC;IACxC;;;OAGG;IACH,UAAiB,OAAO;QACtB,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,UAAU,KAAK,UAAU,CAAC,GAAG,SAAS,CAAA;KAC5E;CACF;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE;IAChC;;;OAGG;IACH,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IAClH;;;OAGG;IACH,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EACN,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAC5B,SAAS,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,UAAU,GAC5C,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;CAsB1B,CAAA"}
1
+ {"version":3,"file":"OpenRouterConfig.d.ts","sourceRoot":"","sources":["../src/OpenRouterConfig.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAA;;AAEjE;;;;;;;;;;;;;GAaG;AACH,qBAAa,gBAAiB,SAAQ,qBAGO;IAC3C;;;;OAIG;IACH,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,gBAAgB,CAAC,OAAO,GAAG,SAAS,CAAC,CAGzF;CACF;AAED;;;;GAIG;AACH,MAAM,CAAC,OAAO,WAAW,gBAAgB,CAAC;IACxC;;;;;;OAMG;IACH,UAAiB,OAAO;QACtB,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,UAAU,KAAK,UAAU,CAAC,GAAG,SAAS,CAAA;KAC5E;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,mBAAmB,EAAE;IAChC;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,UAAU,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IAClH;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EACN,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAC5B,SAAS,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,UAAU,GAC5C,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;CAgE1B,CAAA"}
@@ -1,22 +1,60 @@
1
1
  /**
2
- * @since 1.0.0
2
+ * The `OpenRouterConfig` module lets a workflow temporarily customize the HTTP
3
+ * client used by generated OpenRouter request methods. `OpenRouterClient` reads
4
+ * this scoped transform when generated client operations execute, so callers can
5
+ * add middleware or instrumentation without rebuilding the client layer.
6
+ *
7
+ * @since 4.0.0
3
8
  */
9
+ import * as Context from "effect/Context";
4
10
  import * as Effect from "effect/Effect";
5
11
  import { dual } from "effect/Function";
6
- import * as ServiceMap from "effect/ServiceMap";
7
12
  /**
8
- * @since 1.0.0
13
+ * Context service for scoped OpenRouter provider configuration used by client
14
+ * operations.
15
+ *
16
+ * **When to use**
17
+ *
18
+ * Use as the context service tag when manually providing or reading scoped
19
+ * OpenRouter provider configuration in an Effect context.
20
+ *
21
+ * @see {@link withClientTransform} for scoping an HTTP client transformation
22
+ *
9
23
  * @category services
24
+ * @since 4.0.0
10
25
  */
11
- export class OpenRouterConfig extends /*#__PURE__*/ServiceMap.Service()("@effect/ai-openrouter/OpenRouterConfig") {
26
+ export class OpenRouterConfig extends /*#__PURE__*/Context.Service()("@effect/ai-openrouter/OpenRouterConfig") {
12
27
  /**
13
- * @since 1.0.0
28
+ * Gets the configured OpenRouter service from the current context when present.
29
+ *
30
+ * @since 4.0.0
14
31
  */
15
- static getOrUndefined = /*#__PURE__*/Effect.map(/*#__PURE__*/Effect.services(), services => services.mapUnsafe.get(OpenRouterConfig.key));
32
+ static getOrUndefined = /*#__PURE__*/Effect.map(/*#__PURE__*/Effect.context(), services => services.mapUnsafe.get(OpenRouterConfig.key));
16
33
  }
17
34
  /**
18
- * @since 1.0.0
35
+ * Provides a scoped transform for the OpenRouter HTTP client used by provider
36
+ * operations.
37
+ *
38
+ * **When to use**
39
+ *
40
+ * Use when you need temporary OpenRouter HTTP client customization for a
41
+ * single effect or workflow without rebuilding the client layer.
42
+ *
43
+ * **Details**
44
+ *
45
+ * Supports both data-first and data-last forms. The transform is stored in the
46
+ * scoped `OpenRouterConfig` service and read by generated OpenRouter request
47
+ * operations while running the supplied effect.
48
+ *
49
+ * **Gotchas**
50
+ *
51
+ * If a transform is already present in the scoped config, this helper replaces
52
+ * it. Compose transforms manually when both should apply. Streaming chat
53
+ * completion requests are sent directly by `OpenRouterClient.make` and do not
54
+ * read this scoped transform.
55
+ *
19
56
  * @category configuration
57
+ * @since 4.0.0
20
58
  */
21
59
  export const withClientTransform = /*#__PURE__*/dual(2, (self, transformClient) => Effect.flatMap(OpenRouterConfig.getOrUndefined, config => Effect.provideService(self, OpenRouterConfig, {
22
60
  ...config,
@@ -1 +1 @@
1
- {"version":3,"file":"OpenRouterConfig.js","names":["Effect","dual","ServiceMap","OpenRouterConfig","Service","getOrUndefined","map","services","mapUnsafe","get","key","withClientTransform","self","transformClient","flatMap","config","provideService"],"sources":["../src/OpenRouterConfig.ts"],"sourcesContent":[null],"mappings":"AAAA;;;AAGA,OAAO,KAAKA,MAAM,MAAM,eAAe;AACvC,SAASC,IAAI,QAAQ,iBAAiB;AACtC,OAAO,KAAKC,UAAU,MAAM,mBAAmB;AAG/C;;;;AAIA,OAAM,MAAOC,gBAAiB,sBAAQD,UAAU,CAACE,OAAO,EAGrD,CAAC,wCAAwC,CAAC;EAC3C;;;EAGA,OAAgBC,cAAc,gBAA+DL,MAAM,CAACM,GAAG,cACrGN,MAAM,CAACO,QAAQ,EAAS,EACvBA,QAAQ,IAAKA,QAAQ,CAACC,SAAS,CAACC,GAAG,CAACN,gBAAgB,CAACO,GAAG,CAAC,CAC3D;;AAgBH;;;;AAIA,OAAO,MAAMC,mBAAmB,gBAc5BV,IAAI,CAeN,CAAC,EACD,CAACW,IAAI,EAAEC,eAAe,KACpBb,MAAM,CAACc,OAAO,CACZX,gBAAgB,CAACE,cAAc,EAC9BU,MAAM,IAAKf,MAAM,CAACgB,cAAc,CAACJ,IAAI,EAAET,gBAAgB,EAAE;EAAE,GAAGY,MAAM;EAAEF;AAAe,CAAE,CAAC,CAC1F,CACJ","ignoreList":[]}
1
+ {"version":3,"file":"OpenRouterConfig.js","names":["Context","Effect","dual","OpenRouterConfig","Service","getOrUndefined","map","context","services","mapUnsafe","get","key","withClientTransform","self","transformClient","flatMap","config","provideService"],"sources":["../src/OpenRouterConfig.ts"],"sourcesContent":[null],"mappings":"AAAA;;;;;;;;AAQA,OAAO,KAAKA,OAAO,MAAM,gBAAgB;AACzC,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,SAASC,IAAI,QAAQ,iBAAiB;AAGtC;;;;;;;;;;;;;;AAcA,OAAM,MAAOC,gBAAiB,sBAAQH,OAAO,CAACI,OAAO,EAGlD,CAAC,wCAAwC,CAAC;EAC3C;;;;;EAKA,OAAgBC,cAAc,gBAA+DJ,MAAM,CAACK,GAAG,cACrGL,MAAM,CAACM,OAAO,EAAS,EACtBC,QAAQ,IAAKA,QAAQ,CAACC,SAAS,CAACC,GAAG,CAACP,gBAAgB,CAACQ,GAAG,CAAC,CAC3D;;AAqBH;;;;;;;;;;;;;;;;;;;;;;;;;AAyBA,OAAO,MAAMC,mBAAmB,gBAwD5BV,IAAI,CAyDN,CAAC,EACD,CAACW,IAAI,EAAEC,eAAe,KACpBb,MAAM,CAACc,OAAO,CACZZ,gBAAgB,CAACE,cAAc,EAC9BW,MAAM,IAAKf,MAAM,CAACgB,cAAc,CAACJ,IAAI,EAAEV,gBAAgB,EAAE;EAAE,GAAGa,MAAM;EAAEF;AAAe,CAAE,CAAC,CAC1F,CACJ","ignoreList":[]}