@effect/ai-openai 4.0.0-beta.9 → 4.0.0-beta.90

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.
Files changed (61) hide show
  1. package/dist/Generated.d.ts +66675 -37672
  2. package/dist/Generated.d.ts.map +1 -1
  3. package/dist/Generated.js +1 -1
  4. package/dist/Generated.js.map +1 -1
  5. package/dist/OpenAiClient.d.ts +170 -29
  6. package/dist/OpenAiClient.d.ts.map +1 -1
  7. package/dist/OpenAiClient.js +321 -46
  8. package/dist/OpenAiClient.js.map +1 -1
  9. package/dist/OpenAiClientGenerated.d.ts +91 -0
  10. package/dist/OpenAiClientGenerated.d.ts.map +1 -0
  11. package/dist/OpenAiClientGenerated.js +84 -0
  12. package/dist/OpenAiClientGenerated.js.map +1 -0
  13. package/dist/OpenAiConfig.d.ts +88 -10
  14. package/dist/OpenAiConfig.d.ts.map +1 -1
  15. package/dist/OpenAiConfig.js +42 -7
  16. package/dist/OpenAiConfig.js.map +1 -1
  17. package/dist/OpenAiEmbeddingModel.d.ts +188 -0
  18. package/dist/OpenAiEmbeddingModel.d.ts.map +1 -0
  19. package/dist/OpenAiEmbeddingModel.js +194 -0
  20. package/dist/OpenAiEmbeddingModel.js.map +1 -0
  21. package/dist/OpenAiError.d.ts +168 -35
  22. package/dist/OpenAiError.d.ts.map +1 -1
  23. package/dist/OpenAiError.js +1 -1
  24. package/dist/OpenAiLanguageModel.d.ts +357 -63
  25. package/dist/OpenAiLanguageModel.d.ts.map +1 -1
  26. package/dist/OpenAiLanguageModel.js +390 -168
  27. package/dist/OpenAiLanguageModel.js.map +1 -1
  28. package/dist/OpenAiSchema.d.ts +2325 -0
  29. package/dist/OpenAiSchema.d.ts.map +1 -0
  30. package/dist/OpenAiSchema.js +811 -0
  31. package/dist/OpenAiSchema.js.map +1 -0
  32. package/dist/OpenAiTelemetry.d.ts +63 -22
  33. package/dist/OpenAiTelemetry.d.ts.map +1 -1
  34. package/dist/OpenAiTelemetry.js +20 -10
  35. package/dist/OpenAiTelemetry.js.map +1 -1
  36. package/dist/OpenAiTool.d.ts +157 -67
  37. package/dist/OpenAiTool.d.ts.map +1 -1
  38. package/dist/OpenAiTool.js +125 -39
  39. package/dist/OpenAiTool.js.map +1 -1
  40. package/dist/index.d.ts +19 -33
  41. package/dist/index.d.ts.map +1 -1
  42. package/dist/index.js +19 -33
  43. package/dist/index.js.map +1 -1
  44. package/dist/internal/errors.js +4 -4
  45. package/dist/internal/errors.js.map +1 -1
  46. package/dist/internal/utilities.js +0 -4
  47. package/dist/internal/utilities.js.map +1 -1
  48. package/package.json +3 -3
  49. package/src/Generated.ts +9720 -4890
  50. package/src/OpenAiClient.ts +499 -98
  51. package/src/OpenAiClientGenerated.ts +202 -0
  52. package/src/OpenAiConfig.ts +89 -11
  53. package/src/OpenAiEmbeddingModel.ts +332 -0
  54. package/src/OpenAiError.ts +170 -35
  55. package/src/OpenAiLanguageModel.ts +776 -169
  56. package/src/OpenAiSchema.ts +1286 -0
  57. package/src/OpenAiTelemetry.ts +69 -28
  58. package/src/OpenAiTool.ts +126 -40
  59. package/src/index.ts +22 -33
  60. package/src/internal/errors.ts +6 -4
  61. package/src/internal/utilities.ts +0 -6
@@ -1,37 +1,58 @@
1
1
  /**
2
- * OpenAI Client module for interacting with OpenAI's API.
2
+ * The `OpenAiClient` module defines the low-level Effect service used by the
3
+ * OpenAI integration for Responses API and embedding requests. It builds a
4
+ * configured HTTP client with authentication and OpenAI organization or project
5
+ * headers, exposes helpers for non-streaming responses, SSE response streams,
6
+ * WebSocket response streams, and embeddings, and maps transport or decoding
7
+ * failures into `AiError`.
3
8
  *
4
- * Provides a type-safe, Effect-based client for OpenAI operations including
5
- * completions, embeddings, and streaming responses.
6
- *
7
- * @since 1.0.0
9
+ * @since 4.0.0
8
10
  */
9
11
  import * as Array from "effect/Array";
12
+ import * as Context from "effect/Context";
10
13
  import * as Effect from "effect/Effect";
11
14
  import { identity } from "effect/Function";
15
+ import * as Function from "effect/Function";
12
16
  import * as Layer from "effect/Layer";
13
17
  import * as Predicate from "effect/Predicate";
18
+ import * as Queue from "effect/Queue";
19
+ import * as RcRef from "effect/RcRef";
14
20
  import * as Redacted from "effect/Redacted";
15
- import * as ServiceMap from "effect/ServiceMap";
21
+ import * as Schema from "effect/Schema";
22
+ import * as Scope from "effect/Scope";
23
+ import * as Semaphore from "effect/Semaphore";
16
24
  import * as Stream from "effect/Stream";
25
+ import * as AiError from "effect/unstable/ai/AiError";
26
+ import * as ResponseIdTracker from "effect/unstable/ai/ResponseIdTracker";
17
27
  import * as Sse from "effect/unstable/encoding/Sse";
18
28
  import * as Headers from "effect/unstable/http/Headers";
19
29
  import * as HttpBody from "effect/unstable/http/HttpBody";
20
30
  import * as HttpClient from "effect/unstable/http/HttpClient";
21
31
  import * as HttpClientRequest from "effect/unstable/http/HttpClientRequest";
22
- import * as Generated from "./Generated.js";
32
+ import * as HttpClientResponse from "effect/unstable/http/HttpClientResponse";
33
+ import * as Socket from "effect/unstable/socket/Socket";
23
34
  import * as Errors from "./internal/errors.js";
24
35
  import { OpenAiConfig } from "./OpenAiConfig.js";
36
+ import * as OpenAiSchema from "./OpenAiSchema.js";
25
37
  // =============================================================================
26
38
  // Service Identifier
27
39
  // =============================================================================
28
40
  /**
29
- * Service identifier for the OpenAI client.
41
+ * Service tag for the OpenAI client.
42
+ *
43
+ * **When to use**
44
+ *
45
+ * Use when accessing or providing the OpenAI client service through Effect's
46
+ * context.
47
+ *
48
+ * @see {@link make} for constructing an OpenAI client effectfully
49
+ * @see {@link layer} for providing a client from explicit options
50
+ * @see {@link layerConfig} for providing a client from `Config`
30
51
  *
31
- * @since 1.0.0
32
- * @category service
52
+ * @category services
53
+ * @since 4.0.0
33
54
  */
34
- export class OpenAiClient extends /*#__PURE__*/ServiceMap.Service()("@effect/ai-openai/OpenAiClient") {}
55
+ export class OpenAiClient extends /*#__PURE__*/Context.Service()("@effect/ai-openai/OpenAiClient") {}
35
56
  // =============================================================================
36
57
  // Constructor
37
58
  // =============================================================================
@@ -42,33 +63,42 @@ const RedactedOpenAiHeaders = {
42
63
  /**
43
64
  * Creates an OpenAI client service with the given options.
44
65
  *
45
- * @since 1.0.0
66
+ * **When to use**
67
+ *
68
+ * Use when you need the OpenAI client service value inside an effect.
69
+ *
70
+ * **Details**
71
+ *
72
+ * The returned service uses the current `HttpClient`, prepends `apiUrl` or
73
+ * `https://api.openai.com/v1`, adds the bearer token and optional OpenAI
74
+ * organization/project headers, accepts JSON responses, filters for successful
75
+ * HTTP statuses, and applies `transformClient` when provided.
76
+ *
77
+ * **Gotchas**
78
+ *
79
+ * A scoped `OpenAiConfig.withClientTransform` is applied when request helpers
80
+ * run, after the `transformClient` option supplied to `make`.
81
+ *
82
+ * @see {@link layer} for providing this client from explicit options
83
+ * @see {@link layerConfig} for loading client settings from `Config`
84
+ *
46
85
  * @category constructors
86
+ * @since 4.0.0
47
87
  */
48
88
  export const make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
49
89
  const baseClient = yield* HttpClient.HttpClient;
50
- const httpClient = baseClient.pipe(HttpClient.mapRequest(request => request.pipe(HttpClientRequest.prependUrl(options.apiUrl ?? "https://api.openai.com/v1"), Predicate.isNotUndefined(options.apiKey) ? HttpClientRequest.bearerToken(Redacted.value(options.apiKey)) : identity, Predicate.isNotUndefined(options.organizationId) ? HttpClientRequest.setHeader(RedactedOpenAiHeaders.OpenAiOrganization, Redacted.value(options.organizationId)) : identity, Predicate.isNotUndefined(options.projectId) ? HttpClientRequest.setHeader(RedactedOpenAiHeaders.OpenAiProject, Redacted.value(options.projectId)) : identity, HttpClientRequest.acceptJson)), Predicate.isNotUndefined(options.transformClient) ? options.transformClient : identity);
51
- const httpClientOk = HttpClient.filterStatusOk(httpClient);
52
- const client = Generated.make(httpClient, {
53
- transformClient: Effect.fnUntraced(function* (client) {
54
- const config = yield* OpenAiConfig.getOrUndefined;
55
- if (Predicate.isNotUndefined(config?.transformClient)) {
56
- return config.transformClient(client);
57
- }
58
- return client;
59
- })
60
- });
61
- const createResponse = payload => client.createResponse({
62
- payload,
63
- config: {
64
- includeResponse: true
65
- }
66
- }).pipe(Effect.catchTags({
90
+ const apiUrl = options.apiUrl ?? "https://api.openai.com/v1";
91
+ const httpClient = baseClient.pipe(HttpClient.mapRequest(Function.flow(HttpClientRequest.prependUrl(apiUrl), options.apiKey ? HttpClientRequest.bearerToken(Redacted.value(options.apiKey)) : identity, options.organizationId ? HttpClientRequest.setHeader(RedactedOpenAiHeaders.OpenAiOrganization, Redacted.value(options.organizationId)) : identity, options.projectId ? HttpClientRequest.setHeader(RedactedOpenAiHeaders.OpenAiProject, Redacted.value(options.projectId)) : identity, HttpClientRequest.acceptJson)), HttpClient.filterStatusOk, options.transformClient ? options.transformClient : identity);
92
+ const resolveHttpClient = Effect.map(OpenAiConfig.getOrUndefined, config => Predicate.isNotUndefined(config?.transformClient) ? config.transformClient(httpClient) : httpClient);
93
+ const decodeResponse = HttpClientResponse.schemaBodyJson(OpenAiSchema.Response);
94
+ const createResponse = payload => Effect.flatMap(resolveHttpClient, client => client.execute(HttpClientRequest.post("/responses", {
95
+ body: HttpBody.jsonUnsafe(payload)
96
+ })).pipe(Effect.flatMap(response => decodeResponse(response).pipe(Effect.map(body => [body, response]))), Effect.catchTags({
67
97
  HttpClientError: error => Errors.mapHttpClientError(error, "createResponse"),
68
98
  SchemaError: error => Effect.fail(Errors.mapSchemaError(error, "createResponse"))
69
- }));
99
+ })));
70
100
  const buildResponseStream = response => {
71
- const stream = response.stream.pipe(Stream.decodeText(), Stream.pipeThroughChannel(Sse.decodeDataSchema(Generated.ResponseStreamEvent)), Stream.takeUntil(event => event.data.type === "response.completed" || event.data.type === "response.incomplete"), Stream.map(event => event.data), Stream.catchTags({
101
+ const stream = response.stream.pipe(Stream.decodeText(), Stream.pipeThroughChannel(Sse.decodeDataSchema(OpenAiSchema.ResponseStreamEvent)), Stream.takeUntil(event => event.data.type === "response.completed" || event.data.type === "response.incomplete"), Stream.map(event => event.data), Stream.catchTags({
72
102
  // TODO: handle SSE retries
73
103
  Retry: error => Stream.die(error),
74
104
  HttpClientError: error => Stream.fromEffect(Errors.mapHttpClientError(error, "createResponseStream")),
@@ -76,20 +106,25 @@ export const make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
76
106
  }));
77
107
  return [response, stream];
78
108
  };
79
- const createResponseStream = payload => httpClientOk.execute(HttpClientRequest.post("/responses", {
80
- body: HttpBody.jsonUnsafe({
81
- ...payload,
82
- stream: true
83
- })
84
- })).pipe(Effect.map(buildResponseStream), Effect.catchTag("HttpClientError", error => Errors.mapHttpClientError(error, "createResponseStream")));
85
- const createEmbedding = payload => client.createEmbedding({
86
- payload
87
- }).pipe(Effect.catchTags({
109
+ const createResponseStream = payload => Effect.contextWith(services => {
110
+ const socket = Context.getOrUndefined(services, OpenAiSocket);
111
+ if (socket) return socket.createResponseStream(payload);
112
+ return Effect.flatMap(resolveHttpClient, client => client.execute(HttpClientRequest.post("/responses", {
113
+ body: HttpBody.jsonUnsafe({
114
+ ...payload,
115
+ stream: true
116
+ })
117
+ })).pipe(Effect.map(buildResponseStream), Effect.catchTag("HttpClientError", error => Errors.mapHttpClientError(error, "createResponseStream"))));
118
+ });
119
+ const decodeEmbedding = HttpClientResponse.schemaBodyJson(OpenAiSchema.CreateEmbeddingResponse);
120
+ const createEmbedding = payload => Effect.flatMap(resolveHttpClient, client => client.execute(HttpClientRequest.post("/embeddings", {
121
+ body: HttpBody.jsonUnsafe(payload)
122
+ })).pipe(Effect.flatMap(decodeEmbedding), Effect.catchTags({
88
123
  HttpClientError: error => Errors.mapHttpClientError(error, "createEmbedding"),
89
124
  SchemaError: error => Effect.fail(Errors.mapSchemaError(error, "createEmbedding"))
90
- }));
125
+ })));
91
126
  return OpenAiClient.of({
92
- client,
127
+ client: httpClient,
93
128
  createResponse,
94
129
  createResponseStream,
95
130
  createEmbedding
@@ -101,16 +136,37 @@ export const make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
101
136
  /**
102
137
  * Creates a layer for the OpenAI client with the given options.
103
138
  *
104
- * @since 1.0.0
139
+ * **When to use**
140
+ *
141
+ * Use when you already have explicit `Options` values, such as an API key or
142
+ * custom API URL, and want to provide `OpenAiClient` as a `Layer`.
143
+ *
144
+ * @see {@link make} for constructing the client service effectfully
145
+ * @see {@link layerConfig} for loading client settings from `Config`
146
+ *
105
147
  * @category layers
148
+ * @since 4.0.0
106
149
  */
107
150
  export const layer = options => Layer.effect(OpenAiClient, make(options));
108
151
  /**
109
- * Creates a layer for the OpenAI client, loading the requisite configuration
110
- * via Effect's `Config` module.
152
+ * Creates a layer for the OpenAI client from provided `Config` values.
153
+ *
154
+ * **When to use**
155
+ *
156
+ * Use when you need client settings for OpenAI-compatible APIs to be read from
157
+ * Effect `Config` values while providing `OpenAiClient` as a `Layer`.
158
+ *
159
+ * **Details**
160
+ *
161
+ * Only config values supplied in `options` are loaded. Omitted fields are
162
+ * passed to `make` as `undefined`, and `transformClient` is forwarded as a
163
+ * plain option.
164
+ *
165
+ * @see {@link make} for constructing the client service effectfully
166
+ * @see {@link layer} for providing the client from already-resolved options
111
167
  *
112
- * @since 1.0.0
113
168
  * @category layers
169
+ * @since 4.0.0
114
170
  */
115
171
  export const layerConfig = options => Layer.effect(OpenAiClient, Effect.gen(function* () {
116
172
  const apiKey = Predicate.isNotUndefined(options?.apiKey) ? yield* options.apiKey : undefined;
@@ -125,4 +181,223 @@ export const layerConfig = options => Layer.effect(OpenAiClient, Effect.gen(func
125
181
  transformClient: options?.transformClient
126
182
  });
127
183
  }));
184
+ /**
185
+ * Service for creating OpenAI response streams over a WebSocket connection.
186
+ *
187
+ * **When to use**
188
+ *
189
+ * Use when you need direct access to the WebSocket-backed response streaming
190
+ * service rather than wrapping an effect with WebSocket mode.
191
+ *
192
+ * **Details**
193
+ *
194
+ * `createResponseStream` sends a `response.create` message over the WebSocket
195
+ * connection and returns an HTTP response together with a stream of
196
+ * `ResponseStreamEvent` values.
197
+ *
198
+ * **Gotchas**
199
+ *
200
+ * WebSocket response streams are serialized to one request at a time by the
201
+ * shared socket service.
202
+ *
203
+ * @see {@link withWebSocketMode} for enabling WebSocket mode for one effect
204
+ * @see {@link layerWebSocketMode} for providing WebSocket mode through a layer
205
+ *
206
+ * @category Websocket mode
207
+ * @since 4.0.0
208
+ */
209
+ export class OpenAiSocket extends /*#__PURE__*/Context.Service()("@effect/ai-openai/OpenAiClient/OpenAiSocket") {}
210
+ const makeSocket = /*#__PURE__*/Effect.gen(function* () {
211
+ const client = yield* OpenAiClient;
212
+ const tracker = yield* ResponseIdTracker.make;
213
+ const socketScope = yield* Effect.scope;
214
+ const makeRequest = Effect.flatMap(OpenAiConfig.getOrUndefined, config => {
215
+ const httpClient = Predicate.isNotUndefined(config?.transformClient) ? config.transformClient(client.client) : client.client;
216
+ return Effect.orDie(httpClient.preprocess(HttpClientRequest.post("/responses")));
217
+ });
218
+ const makeWebSocket = yield* Socket.WebSocketConstructor;
219
+ const decoder = new TextDecoder();
220
+ const queueRef = yield* RcRef.make({
221
+ idleTimeToLive: 60_000,
222
+ acquire: Effect.gen(function* () {
223
+ const scope = yield* Effect.scope;
224
+ const request = yield* makeRequest;
225
+ const socket = yield* Socket.makeWebSocket(request.url.replace(/^http/, "ws")).pipe(Effect.provideService(Socket.WebSocketConstructor, url => makeWebSocket(url, {
226
+ headers: request.headers
227
+ })));
228
+ const write = yield* socket.writer;
229
+ yield* Scope.addFinalizerExit(scope, () => {
230
+ tracker.clearUnsafe();
231
+ return Effect.void;
232
+ });
233
+ const incoming = yield* Queue.unbounded();
234
+ const send = message => write(JSON.stringify({
235
+ type: "response.create",
236
+ ...message
237
+ })).pipe(Effect.mapError(_error => AiError.make({
238
+ module: "OpenAiClient",
239
+ method: "createResponseStream",
240
+ reason: new AiError.NetworkError({
241
+ reason: "TransportError",
242
+ request: {
243
+ method: "POST",
244
+ url: request.url,
245
+ urlParams: [],
246
+ hash: undefined,
247
+ headers: request.headers
248
+ },
249
+ description: "Failed to send message over WebSocket"
250
+ })
251
+ })));
252
+ yield* socket.runRaw(msg => {
253
+ const text = typeof msg === "string" ? msg : decoder.decode(msg);
254
+ try {
255
+ const event = decodeEvent(text);
256
+ if (event.type === "error" && "status" in event) {
257
+ const status = Number(event.status);
258
+ const error = "error" in event ? event.error : event;
259
+ const json = JSON.stringify(error);
260
+ return Effect.fail(AiError.make({
261
+ module: "OpenAiClient",
262
+ method: "createResponseStream",
263
+ reason: AiError.reasonFromHttpStatus({
264
+ description: json,
265
+ status: isNaN(status) ? errorTypeToStatus[error.type] ?? 500 : status,
266
+ metadata: error,
267
+ http: {
268
+ body: json,
269
+ request: {
270
+ method: "POST",
271
+ url: request.url,
272
+ urlParams: [],
273
+ hash: undefined,
274
+ headers: request.headers
275
+ }
276
+ }
277
+ })
278
+ }));
279
+ }
280
+ Queue.offerUnsafe(incoming, event);
281
+ } catch {}
282
+ }).pipe(Effect.catchTag("SocketError", error => AiError.make({
283
+ module: "OpenAiClient",
284
+ method: "createResponseStream",
285
+ reason: new AiError.NetworkError({
286
+ reason: "TransportError",
287
+ request: {
288
+ method: "POST",
289
+ url: request.url,
290
+ urlParams: [],
291
+ hash: undefined,
292
+ headers: request.headers
293
+ },
294
+ description: error.message
295
+ })
296
+ })), Effect.catchCause(cause => Queue.failCause(incoming, cause)), Effect.ensuring(Effect.forkIn(RcRef.invalidate(queueRef), socketScope, {
297
+ startImmediately: true
298
+ })), Effect.forkScoped({
299
+ startImmediately: true
300
+ }));
301
+ return {
302
+ send,
303
+ incoming
304
+ };
305
+ })
306
+ });
307
+ // Prime the websocket
308
+ yield* Effect.scoped(RcRef.get(queueRef));
309
+ // Websocket mode only allows one request at a time
310
+ const semaphore = Semaphore.makeUnsafe(1);
311
+ const request = yield* makeRequest;
312
+ return OpenAiSocket.context({
313
+ createResponseStream(options) {
314
+ const stream = Stream.unwrap(Effect.gen(function* () {
315
+ const scope = yield* Effect.scope;
316
+ yield* Effect.acquireRelease(semaphore.take(1), () => semaphore.release(1), {
317
+ interruptible: true
318
+ });
319
+ const {
320
+ send,
321
+ incoming
322
+ } = yield* RcRef.get(queueRef);
323
+ let done = false;
324
+ yield* Scope.addFinalizerExit(scope, () => done ? Effect.void : RcRef.invalidate(queueRef));
325
+ yield* send(options).pipe(Effect.forkScoped({
326
+ startImmediately: true
327
+ }));
328
+ return Stream.fromQueue(incoming).pipe(Stream.takeUntil(e => {
329
+ done = e.type === "response.completed" || e.type === "response.incomplete";
330
+ return done;
331
+ }));
332
+ }));
333
+ return Effect.succeed([HttpClientResponse.fromWeb(request, new Response()), stream]);
334
+ }
335
+ }).pipe(Context.add(ResponseIdTracker.ResponseIdTracker, tracker));
336
+ });
337
+ const ErrorEvent = /*#__PURE__*/Schema.Struct({
338
+ type: /*#__PURE__*/Schema.Literal("error"),
339
+ status: /*#__PURE__*/Schema.Number.pipe(/*#__PURE__*/Schema.withDecodingDefault(/*#__PURE__*/Effect.succeed(500))),
340
+ error: /*#__PURE__*/Schema.Struct({
341
+ type: Schema.String,
342
+ message: Schema.String
343
+ })
344
+ });
345
+ const errorTypeToStatus = {
346
+ invalid_request_error: 400,
347
+ invalid_api_key_error: 401,
348
+ insufficient_quota_error: 429,
349
+ rate_limit_error: 429,
350
+ service_unavailable_error: 503
351
+ };
352
+ const AllEvents = /*#__PURE__*/Schema.Union([ErrorEvent, OpenAiSchema.ResponseStreamEvent]);
353
+ const decodeEvent = /*#__PURE__*/Schema.decodeUnknownSync(/*#__PURE__*/Schema.fromJsonString(AllEvents));
354
+ /**
355
+ * Uses OpenAI's WebSocket mode for response streams within the provided effect.
356
+ *
357
+ * **When to use**
358
+ *
359
+ * Use to enable WebSocket mode around one effect that creates OpenAI response
360
+ * streams.
361
+ *
362
+ * **Gotchas**
363
+ *
364
+ * This only works with the following WebSocket constructor layers:
365
+ *
366
+ * - `NodeSocket.layerWebSocketConstructorWS`
367
+ * - `BunSocket.layerWebSocketConstructor`
368
+ *
369
+ * These constructor layers support the non-standard options needed to set the
370
+ * Authorization header.
371
+ *
372
+ * @see {@link layerWebSocketMode} for providing WebSocket mode through a layer
373
+ * @see {@link OpenAiSocket} for direct access to the WebSocket-backed streaming service
374
+ *
375
+ * @category Websocket mode
376
+ * @since 4.0.0
377
+ */
378
+ export const withWebSocketMode = effect => Effect.scopedWith(scope => Effect.flatMap(Scope.provide(makeSocket, scope), services => Effect.provideContext(effect, services)));
379
+ /**
380
+ * Uses OpenAI's websocket mode for all responses that use the Layer.
381
+ *
382
+ * **When to use**
383
+ *
384
+ * Use to provide WebSocket mode through layer composition for effects that use
385
+ * OpenAI response streaming.
386
+ *
387
+ * **Gotchas**
388
+ *
389
+ * This only works with the following WebSocket constructor layers:
390
+ *
391
+ * - `NodeSocket.layerWebSocketConstructorWS`
392
+ * - `BunSocket.layerWebSocketConstructor`
393
+ *
394
+ * These constructor layers support the non-standard options needed to set the
395
+ * Authorization header.
396
+ *
397
+ * @see {@link withWebSocketMode} for enabling WebSocket mode around a single effect
398
+ *
399
+ * @category Websocket mode
400
+ * @since 4.0.0
401
+ */
402
+ export const layerWebSocketMode = /*#__PURE__*/Layer.effectContext(makeSocket);
128
403
  //# sourceMappingURL=OpenAiClient.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"OpenAiClient.js","names":["Array","Effect","identity","Layer","Predicate","Redacted","ServiceMap","Stream","Sse","Headers","HttpBody","HttpClient","HttpClientRequest","Generated","Errors","OpenAiConfig","OpenAiClient","Service","RedactedOpenAiHeaders","OpenAiOrganization","OpenAiProject","make","fnUntraced","options","baseClient","httpClient","pipe","mapRequest","request","prependUrl","apiUrl","isNotUndefined","apiKey","bearerToken","value","organizationId","setHeader","projectId","acceptJson","transformClient","httpClientOk","filterStatusOk","client","config","getOrUndefined","createResponse","payload","includeResponse","catchTags","HttpClientError","error","mapHttpClientError","SchemaError","fail","mapSchemaError","buildResponseStream","response","stream","decodeText","pipeThroughChannel","decodeDataSchema","ResponseStreamEvent","takeUntil","event","data","type","map","Retry","die","fromEffect","createResponseStream","execute","post","body","jsonUnsafe","catchTag","createEmbedding","of","updateService","CurrentRedactedNames","appendAll","Object","values","layer","effect","layerConfig","gen","undefined"],"sources":["../src/OpenAiClient.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"OpenAiClient.js","names":["Array","Context","Effect","identity","Function","Layer","Predicate","Queue","RcRef","Redacted","Schema","Scope","Semaphore","Stream","AiError","ResponseIdTracker","Sse","Headers","HttpBody","HttpClient","HttpClientRequest","HttpClientResponse","Socket","Errors","OpenAiConfig","OpenAiSchema","OpenAiClient","Service","RedactedOpenAiHeaders","OpenAiOrganization","OpenAiProject","make","fnUntraced","options","baseClient","apiUrl","httpClient","pipe","mapRequest","flow","prependUrl","apiKey","bearerToken","value","organizationId","setHeader","projectId","acceptJson","filterStatusOk","transformClient","resolveHttpClient","map","getOrUndefined","config","isNotUndefined","decodeResponse","schemaBodyJson","Response","createResponse","payload","flatMap","client","execute","post","body","jsonUnsafe","response","catchTags","HttpClientError","error","mapHttpClientError","SchemaError","fail","mapSchemaError","buildResponseStream","stream","decodeText","pipeThroughChannel","decodeDataSchema","ResponseStreamEvent","takeUntil","event","data","type","Retry","die","fromEffect","createResponseStream","contextWith","services","socket","OpenAiSocket","catchTag","decodeEmbedding","CreateEmbeddingResponse","createEmbedding","of","updateService","CurrentRedactedNames","appendAll","Object","values","layer","effect","layerConfig","gen","undefined","makeSocket","tracker","socketScope","scope","makeRequest","orDie","preprocess","makeWebSocket","WebSocketConstructor","decoder","TextDecoder","queueRef","idleTimeToLive","acquire","request","url","replace","provideService","headers","write","writer","addFinalizerExit","clearUnsafe","void","incoming","unbounded","send","message","JSON","stringify","mapError","_error","module","method","reason","NetworkError","urlParams","hash","description","runRaw","msg","text","decode","decodeEvent","status","Number","json","reasonFromHttpStatus","isNaN","errorTypeToStatus","metadata","http","offerUnsafe","catchCause","cause","failCause","ensuring","forkIn","invalidate","startImmediately","forkScoped","scoped","get","semaphore","makeUnsafe","context","unwrap","acquireRelease","take","release","interruptible","done","fromQueue","e","succeed","fromWeb","add","ErrorEvent","Struct","Literal","withDecodingDefault","String","invalid_request_error","invalid_api_key_error","insufficient_quota_error","rate_limit_error","service_unavailable_error","AllEvents","Union","decodeUnknownSync","fromJsonString","withWebSocketMode","scopedWith","provide","provideContext","layerWebSocketMode","effectContext"],"sources":["../src/OpenAiClient.ts"],"sourcesContent":[null],"mappings":"AAAA;;;;;;;;;;AAUA,OAAO,KAAKA,KAAK,MAAM,cAAc;AAErC,OAAO,KAAKC,OAAO,MAAM,gBAAgB;AACzC,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,SAASC,QAAQ,QAAQ,iBAAiB;AAC1C,OAAO,KAAKC,QAAQ,MAAM,iBAAiB;AAC3C,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,SAAS,MAAM,kBAAkB;AAC7C,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,QAAQ,MAAM,iBAAiB;AAC3C,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,SAAS,MAAM,kBAAkB;AAC7C,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,OAAO,MAAM,4BAA4B;AACrD,OAAO,KAAKC,iBAAiB,MAAM,sCAAsC;AACzE,OAAO,KAAKC,GAAG,MAAM,8BAA8B;AACnD,OAAO,KAAKC,OAAO,MAAM,8BAA8B;AACvD,OAAO,KAAKC,QAAQ,MAAM,+BAA+B;AACzD,OAAO,KAAKC,UAAU,MAAM,iCAAiC;AAC7D,OAAO,KAAKC,iBAAiB,MAAM,wCAAwC;AAC3E,OAAO,KAAKC,kBAAkB,MAAM,yCAAyC;AAC7E,OAAO,KAAKC,MAAM,MAAM,+BAA+B;AACvD,OAAO,KAAKC,MAAM,MAAM,sBAAsB;AAC9C,SAASC,YAAY,QAAQ,mBAAmB;AAChD,OAAO,KAAKC,YAAY,MAAM,mBAAmB;AAqDjD;AACA;AACA;AAEA;;;;;;;;;;;;;;;AAeA,OAAM,MAAOC,YAAa,sBAAQzB,OAAO,CAAC0B,OAAO,EAAyB,CACxE,gCAAgC,CACjC;AAyCD;AACA;AACA;AAEA,MAAMC,qBAAqB,GAAG;EAC5BC,kBAAkB,EAAE,qBAAqB;EACzCC,aAAa,EAAE;CAChB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;AAyBA,OAAO,MAAMC,IAAI,gBAAG7B,MAAM,CAAC8B,UAAU,CACnC,WACEC,OAAgB;EAEhB,MAAMC,UAAU,GAAG,OAAOf,UAAU,CAACA,UAAU;EAC/C,MAAMgB,MAAM,GAAGF,OAAO,CAACE,MAAM,IAAI,2BAA2B;EAE5D,MAAMC,UAAU,GAAGF,UAAU,CAACG,IAAI,CAChClB,UAAU,CAACmB,UAAU,CAAClC,QAAQ,CAACmC,IAAI,CACjCnB,iBAAiB,CAACoB,UAAU,CAACL,MAAM,CAAC,EACpCF,OAAO,CAACQ,MAAM,GACVrB,iBAAiB,CAACsB,WAAW,CAACjC,QAAQ,CAACkC,KAAK,CAACV,OAAO,CAACQ,MAAM,CAAC,CAAC,GAC7DtC,QAAQ,EACZ8B,OAAO,CAACW,cAAc,GAClBxB,iBAAiB,CAACyB,SAAS,CAC3BjB,qBAAqB,CAACC,kBAAkB,EACxCpB,QAAQ,CAACkC,KAAK,CAACV,OAAO,CAACW,cAAc,CAAC,CACvC,GACCzC,QAAQ,EACZ8B,OAAO,CAACa,SAAS,GACb1B,iBAAiB,CAACyB,SAAS,CAC3BjB,qBAAqB,CAACE,aAAa,EACnCrB,QAAQ,CAACkC,KAAK,CAACV,OAAO,CAACa,SAAS,CAAC,CAClC,GACC3C,QAAQ,EACZiB,iBAAiB,CAAC2B,UAAU,CAC7B,CAAC,EACF5B,UAAU,CAAC6B,cAAc,EACzBf,OAAO,CAACgB,eAAe,GACnBhB,OAAO,CAACgB,eAAe,GACvB9C,QAAQ,CACb;EAED,MAAM+C,iBAAiB,GAAGhD,MAAM,CAACiD,GAAG,CAClC3B,YAAY,CAAC4B,cAAc,EAC1BC,MAAM,IACL/C,SAAS,CAACgD,cAAc,CAACD,MAAM,EAAEJ,eAAe,CAAC,GAC7CI,MAAM,CAACJ,eAAe,CAACb,UAAU,CAAC,GAClCA,UAAU,CACjB;EAED,MAAMmB,cAAc,GAAGlC,kBAAkB,CAACmC,cAAc,CAAC/B,YAAY,CAACgC,QAAQ,CAAC;EAE/E,MAAMC,cAAc,GAClBC,OAAmD,IAKnDzD,MAAM,CAAC0D,OAAO,CAACV,iBAAiB,EAAGW,MAAM,IACvCA,MAAM,CAACC,OAAO,CACZ1C,iBAAiB,CAAC2C,IAAI,CAAC,YAAY,EAAE;IACnCC,IAAI,EAAE9C,QAAQ,CAAC+C,UAAU,CAACN,OAAO;GAClC,CAAC,CACH,CAACtB,IAAI,CACJnC,MAAM,CAAC0D,OAAO,CAAEM,QAAQ,IACtBX,cAAc,CAACW,QAAQ,CAAC,CAAC7B,IAAI,CAC3BnC,MAAM,CAACiD,GAAG,CAAEa,IAAI,IAAiF,CAC/FA,IAAI,EACJE,QAAQ,CACT,CAAC,CACH,CACF,EACDhE,MAAM,CAACiE,SAAS,CAAC;IACfC,eAAe,EAAGC,KAAK,IAAK9C,MAAM,CAAC+C,kBAAkB,CAACD,KAAK,EAAE,gBAAgB,CAAC;IAC9EE,WAAW,EAAGF,KAAK,IAAKnE,MAAM,CAACsE,IAAI,CAACjD,MAAM,CAACkD,cAAc,CAACJ,KAAK,EAAE,gBAAgB,CAAC;GACnF,CAAC,CACH,CAAC;EAEN,MAAMK,mBAAmB,GACvBR,QAA+C,IAI7C;IACF,MAAMS,MAAM,GAAGT,QAAQ,CAACS,MAAM,CAACtC,IAAI,CACjCxB,MAAM,CAAC+D,UAAU,EAAE,EACnB/D,MAAM,CAACgE,kBAAkB,CAAC7D,GAAG,CAAC8D,gBAAgB,CAACrD,YAAY,CAACsD,mBAAmB,CAAC,CAAC,EACjFlE,MAAM,CAACmE,SAAS,CAAEC,KAAK,IACrBA,KAAK,CAACC,IAAI,CAACC,IAAI,KAAK,oBAAoB,IACxCF,KAAK,CAACC,IAAI,CAACC,IAAI,KAAK,qBAAqB,CAC1C,EACDtE,MAAM,CAACsC,GAAG,CAAE8B,KAAK,IAAKA,KAAK,CAACC,IAAI,CAAC,EACjCrE,MAAM,CAACsD,SAAS,CAAC;MACf;MACAiB,KAAK,EAAGf,KAAK,IAAKxD,MAAM,CAACwE,GAAG,CAAChB,KAAK,CAAC;MACnCD,eAAe,EAAGC,KAAK,IAAKxD,MAAM,CAACyE,UAAU,CAAC/D,MAAM,CAAC+C,kBAAkB,CAACD,KAAK,EAAE,sBAAsB,CAAC,CAAC;MACvGE,WAAW,EAAGF,KAAK,IAAKxD,MAAM,CAAC2D,IAAI,CAACjD,MAAM,CAACkD,cAAc,CAACJ,KAAK,EAAE,sBAAsB,CAAC;KACzF,CAAC,CACH;IACD,OAAO,CAACH,QAAQ,EAAES,MAAM,CAAC;EAC3B,CAAC;EAED,MAAMY,oBAAoB,GAAqC5B,OAAO,IACpEzD,MAAM,CAACsF,WAAW,CAAEC,QAAQ,IAAI;IAC9B,MAAMC,MAAM,GAAGzF,OAAO,CAACmD,cAAc,CAACqC,QAAQ,EAAEE,YAAY,CAAC;IAC7D,IAAID,MAAM,EAAE,OAAOA,MAAM,CAACH,oBAAoB,CAAC5B,OAAO,CAAC;IACvD,OAAOzD,MAAM,CAAC0D,OAAO,CAACV,iBAAiB,EAAGW,MAAM,IAC9CA,MAAM,CAACC,OAAO,CACZ1C,iBAAiB,CAAC2C,IAAI,CAAC,YAAY,EAAE;MACnCC,IAAI,EAAE9C,QAAQ,CAAC+C,UAAU,CAAC;QAAE,GAAGN,OAAO;QAAEgB,MAAM,EAAE;MAAI,CAAE;KACvD,CAAC,CACH,CAACtC,IAAI,CACJnC,MAAM,CAACiD,GAAG,CAACuB,mBAAmB,CAAC,EAC/BxE,MAAM,CAAC0F,QAAQ,CACb,iBAAiB,EAChBvB,KAAK,IAAK9C,MAAM,CAAC+C,kBAAkB,CAACD,KAAK,EAAE,sBAAsB,CAAC,CACpE,CACF,CAAC;EACN,CAAC,CAAC;EAEJ,MAAMwB,eAAe,GAAGxE,kBAAkB,CAACmC,cAAc,CAAC/B,YAAY,CAACqE,uBAAuB,CAAC;EAE/F,MAAMC,eAAe,GACnBpC,OAA2D,IAE3DzD,MAAM,CAAC0D,OAAO,CAACV,iBAAiB,EAAGW,MAAM,IACvCA,MAAM,CAACC,OAAO,CACZ1C,iBAAiB,CAAC2C,IAAI,CAAC,aAAa,EAAE;IACpCC,IAAI,EAAE9C,QAAQ,CAAC+C,UAAU,CAACN,OAAO;GAClC,CAAC,CACH,CAACtB,IAAI,CACJnC,MAAM,CAAC0D,OAAO,CAACiC,eAAe,CAAC,EAC/B3F,MAAM,CAACiE,SAAS,CAAC;IACfC,eAAe,EAAGC,KAAK,IAAK9C,MAAM,CAAC+C,kBAAkB,CAACD,KAAK,EAAE,iBAAiB,CAAC;IAC/EE,WAAW,EAAGF,KAAK,IAAKnE,MAAM,CAACsE,IAAI,CAACjD,MAAM,CAACkD,cAAc,CAACJ,KAAK,EAAE,iBAAiB,CAAC;GACpF,CAAC,CACH,CAAC;EAEN,OAAO3C,YAAY,CAACsE,EAAE,CAAC;IACrBnC,MAAM,EAAEzB,UAAU;IAClBsB,cAAc;IACd6B,oBAAoB;IACpBQ;GACD,CAAC;AACJ,CAAC,eACD7F,MAAM,CAAC+F,aAAa,CAClBhF,OAAO,CAACiF,oBAAoB,eAC5BlG,KAAK,CAACmG,SAAS,cAACC,MAAM,CAACC,MAAM,CAACzE,qBAAqB,CAAC,CAAC,CACtD,CACF;AAED;AACA;AACA;AAEA;;;;;;;;;;;;;;AAcA,OAAO,MAAM0E,KAAK,GAAIrE,OAAgB,IACpC5B,KAAK,CAACkG,MAAM,CAAC7E,YAAY,EAAEK,IAAI,CAACE,OAAO,CAAC,CAAC;AAE3C;;;;;;;;;;;;;;;;;;;;AAoBA,OAAO,MAAMuE,WAAW,GAAIvE,OAyB3B,IACC5B,KAAK,CAACkG,MAAM,CACV7E,YAAY,EACZxB,MAAM,CAACuG,GAAG,CAAC,aAAS;EAClB,MAAMhE,MAAM,GAAGnC,SAAS,CAACgD,cAAc,CAACrB,OAAO,EAAEQ,MAAM,CAAC,GACpD,OAAOR,OAAO,CAACQ,MAAM,GACvBiE,SAAS;EACX,MAAMvE,MAAM,GAAG7B,SAAS,CAACgD,cAAc,CAACrB,OAAO,EAAEE,MAAM,CAAC,GACpD,OAAOF,OAAO,CAACE,MAAM,GACvBuE,SAAS;EACX,MAAM9D,cAAc,GAAGtC,SAAS,CAACgD,cAAc,CAACrB,OAAO,EAAEW,cAAc,CAAC,GACpE,OAAOX,OAAO,CAACW,cAAc,GAC7B8D,SAAS;EACb,MAAM5D,SAAS,GAAGxC,SAAS,CAACgD,cAAc,CAACrB,OAAO,EAAEa,SAAS,CAAC,GAC1D,OAAOb,OAAO,CAACa,SAAS,GAC1B4D,SAAS;EACX,OAAO,OAAO3E,IAAI,CAAC;IACjBU,MAAM;IACNN,MAAM;IACNS,cAAc;IACdE,SAAS;IACTG,eAAe,EAAEhB,OAAO,EAAEgB;GAC3B,CAAC;AACJ,CAAC,CAAC,CACH;AAcH;;;;;;;;;;;;;;;;;;;;;;;;;AAyBA,OAAM,MAAO0C,YAAa,sBAAQ1F,OAAO,CAAC0B,OAAO,EAa7C,CAAC,6CAA6C,CAAC;AAEnD,MAAMgF,UAAU,gBAAGzG,MAAM,CAACuG,GAAG,CAAC,aAAS;EACrC,MAAM5C,MAAM,GAAG,OAAOnC,YAAY;EAClC,MAAMkF,OAAO,GAAG,OAAO7F,iBAAiB,CAACgB,IAAI;EAC7C,MAAM8E,WAAW,GAAG,OAAO3G,MAAM,CAAC4G,KAAK;EACvC,MAAMC,WAAW,GAAG7G,MAAM,CAAC0D,OAAO,CAChCpC,YAAY,CAAC4B,cAAc,EAC1BC,MAAM,IAAI;IACT,MAAMjB,UAAU,GAAG9B,SAAS,CAACgD,cAAc,CAACD,MAAM,EAAEJ,eAAe,CAAC,GAChEI,MAAM,CAACJ,eAAe,CAACY,MAAM,CAACA,MAAM,CAAC,GACrCA,MAAM,CAACA,MAAM;IACjB,OAAO3D,MAAM,CAAC8G,KAAK,CAAC5E,UAAU,CAAC6E,UAAU,CAAC7F,iBAAiB,CAAC2C,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;EAClF,CAAC,CACF;EACD,MAAMmD,aAAa,GAAG,OAAO5F,MAAM,CAAC6F,oBAAoB;EAExD,MAAMC,OAAO,GAAG,IAAIC,WAAW,EAAE;EAEjC,MAAMC,QAAQ,GAKV,OAAO9G,KAAK,CAACuB,IAAI,CAAC;IACpBwF,cAAc,EAAE,MAAM;IACtBC,OAAO,EAAEtH,MAAM,CAACuG,GAAG,CAAC,aAAS;MAC3B,MAAMK,KAAK,GAAG,OAAO5G,MAAM,CAAC4G,KAAK;MACjC,MAAMW,OAAO,GAAG,OAAOV,WAAW;MAClC,MAAMrB,MAAM,GAAG,OAAOpE,MAAM,CAAC4F,aAAa,CAACO,OAAO,CAACC,GAAG,CAACC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAACtF,IAAI,CACjFnC,MAAM,CAAC0H,cAAc,CAACtG,MAAM,CAAC6F,oBAAoB,EAAGO,GAAG,IACrDR,aAAa,CAACQ,GAAG,EAAE;QACjBG,OAAO,EAAEJ,OAAO,CAACI;OACX,CAAC,CAAC,CACb;MACD,MAAMC,KAAK,GAAG,OAAOpC,MAAM,CAACqC,MAAM;MAElC,OAAOpH,KAAK,CAACqH,gBAAgB,CAAClB,KAAK,EAAE,MAAK;QACxCF,OAAO,CAACqB,WAAW,EAAE;QACrB,OAAO/H,MAAM,CAACgI,IAAI;MACpB,CAAC,CAAC;MAEF,MAAMC,QAAQ,GAAG,OAAO5H,KAAK,CAAC6H,SAAS,EAAwC;MAC/E,MAAMC,IAAI,GAAIC,OAAmD,IAC/DR,KAAK,CAACS,IAAI,CAACC,SAAS,CAAC;QACnBrD,IAAI,EAAE,iBAAiB;QACvB,GAAGmD;OACJ,CAAC,CAAC,CAACjG,IAAI,CACNnC,MAAM,CAACuI,QAAQ,CAAEC,MAAM,IACrB5H,OAAO,CAACiB,IAAI,CAAC;QACX4G,MAAM,EAAE,cAAc;QACtBC,MAAM,EAAE,sBAAsB;QAC9BC,MAAM,EAAE,IAAI/H,OAAO,CAACgI,YAAY,CAAC;UAC/BD,MAAM,EAAE,gBAAgB;UACxBpB,OAAO,EAAE;YACPmB,MAAM,EAAE,MAAM;YACdlB,GAAG,EAAED,OAAO,CAACC,GAAG;YAChBqB,SAAS,EAAE,EAAE;YACbC,IAAI,EAAEtC,SAAS;YACfmB,OAAO,EAAEJ,OAAO,CAACI;WAClB;UACDoB,WAAW,EAAE;SACd;OACF,CAAC,CACH,CACF;MAEH,OAAOvD,MAAM,CAACwD,MAAM,CAAEC,GAAG,IAAI;QAC3B,MAAMC,IAAI,GAAG,OAAOD,GAAG,KAAK,QAAQ,GAAGA,GAAG,GAAG/B,OAAO,CAACiC,MAAM,CAACF,GAAG,CAAC;QAChE,IAAI;UACF,MAAMlE,KAAK,GAAGqE,WAAW,CAACF,IAAI,CAAC;UAC/B,IAAInE,KAAK,CAACE,IAAI,KAAK,OAAO,IAAI,QAAQ,IAAIF,KAAK,EAAE;YAC/C,MAAMsE,MAAM,GAAGC,MAAM,CAACvE,KAAK,CAACsE,MAAM,CAAC;YACnC,MAAMlF,KAAK,GAAG,OAAO,IAAIY,KAAK,GAAGA,KAAK,CAACZ,KAAqC,GAAGY,KAAK;YACpF,MAAMwE,IAAI,GAAGlB,IAAI,CAACC,SAAS,CAACnE,KAAK,CAAC;YAClC,OAAOnE,MAAM,CAACsE,IAAI,CAChB1D,OAAO,CAACiB,IAAI,CAAC;cACX4G,MAAM,EAAE,cAAc;cACtBC,MAAM,EAAE,sBAAsB;cAC9BC,MAAM,EAAE/H,OAAO,CAAC4I,oBAAoB,CAAC;gBACnCT,WAAW,EAAEQ,IAAI;gBACjBF,MAAM,EAAEI,KAAK,CAACJ,MAAM,CAAC,GAAGK,iBAAiB,CAACvF,KAAK,CAACc,IAAI,CAAC,IAAI,GAAG,GAAGoE,MAAM;gBACrEM,QAAQ,EAAExF,KAAY;gBACtByF,IAAI,EAAE;kBACJ9F,IAAI,EAAEyF,IAAI;kBACVhC,OAAO,EAAE;oBACPmB,MAAM,EAAE,MAAM;oBACdlB,GAAG,EAAED,OAAO,CAACC,GAAG;oBAChBqB,SAAS,EAAE,EAAE;oBACbC,IAAI,EAAEtC,SAAS;oBACfmB,OAAO,EAAEJ,OAAO,CAACI;;;eAGtB;aACF,CAAC,CACH;UACH;UACAtH,KAAK,CAACwJ,WAAW,CAAC5B,QAAQ,EAAElD,KAAK,CAAC;QACpC,CAAC,CAAC,MAAM,CAAC;MACX,CAAC,CAAC,CAAC5C,IAAI,CACLnC,MAAM,CAAC0F,QAAQ,CAAC,aAAa,EAAGvB,KAAK,IACnCvD,OAAO,CAACiB,IAAI,CAAC;QACX4G,MAAM,EAAE,cAAc;QACtBC,MAAM,EAAE,sBAAsB;QAC9BC,MAAM,EAAE,IAAI/H,OAAO,CAACgI,YAAY,CAAC;UAC/BD,MAAM,EAAE,gBAAgB;UACxBpB,OAAO,EAAE;YACPmB,MAAM,EAAE,MAAM;YACdlB,GAAG,EAAED,OAAO,CAACC,GAAG;YAChBqB,SAAS,EAAE,EAAE;YACbC,IAAI,EAAEtC,SAAS;YACfmB,OAAO,EAAEJ,OAAO,CAACI;WAClB;UACDoB,WAAW,EAAE5E,KAAK,CAACiE;SACpB;OACF,CAAC,CAAC,EACLpI,MAAM,CAAC8J,UAAU,CAAEC,KAAK,IAAK1J,KAAK,CAAC2J,SAAS,CAAC/B,QAAQ,EAAE8B,KAAK,CAAC,CAAC,EAC9D/J,MAAM,CAACiK,QAAQ,CAACjK,MAAM,CAACkK,MAAM,CAAC5J,KAAK,CAAC6J,UAAU,CAAC/C,QAAQ,CAAC,EAAET,WAAW,EAAE;QACrEyD,gBAAgB,EAAE;OACnB,CAAC,CAAC,EACHpK,MAAM,CAACqK,UAAU,CAAC;QAAED,gBAAgB,EAAE;MAAI,CAAE,CAAC,CAC9C;MAED,OAAO;QAAEjC,IAAI;QAAEF;MAAQ,CAAW;IACpC,CAAC;GACF,CAAC;EAEF;EACA,OAAOjI,MAAM,CAACsK,MAAM,CAAChK,KAAK,CAACiK,GAAG,CAACnD,QAAQ,CAAC,CAAC;EAEzC;EACA,MAAMoD,SAAS,GAAG9J,SAAS,CAAC+J,UAAU,CAAC,CAAC,CAAC;EACzC,MAAMlD,OAAO,GAAG,OAAOV,WAAW;EAElC,OAAOpB,YAAY,CAACiF,OAAO,CAAC;IAC1BrF,oBAAoBA,CAACtD,OAAO;MAC1B,MAAM0C,MAAM,GAAG9D,MAAM,CAACgK,MAAM,CAAC3K,MAAM,CAACuG,GAAG,CAAC,aAAS;QAC/C,MAAMK,KAAK,GAAG,OAAO5G,MAAM,CAAC4G,KAAK;QACjC,OAAO5G,MAAM,CAAC4K,cAAc,CAC1BJ,SAAS,CAACK,IAAI,CAAC,CAAC,CAAC,EACjB,MAAML,SAAS,CAACM,OAAO,CAAC,CAAC,CAAC,EAC1B;UAAEC,aAAa,EAAE;QAAI,CAAE,CACxB;QACD,MAAM;UAAE5C,IAAI;UAAEF;QAAQ,CAAE,GAAG,OAAO3H,KAAK,CAACiK,GAAG,CAACnD,QAAQ,CAAC;QACrD,IAAI4D,IAAI,GAAG,KAAK;QAEhB,OAAOvK,KAAK,CAACqH,gBAAgB,CAC3BlB,KAAK,EACL,MAAMoE,IAAI,GAAGhL,MAAM,CAACgI,IAAI,GAAG1H,KAAK,CAAC6J,UAAU,CAAC/C,QAAQ,CAAC,CACtD;QAED,OAAOe,IAAI,CAACpG,OAAO,CAAC,CAACI,IAAI,CACvBnC,MAAM,CAACqK,UAAU,CAAC;UAAED,gBAAgB,EAAE;QAAI,CAAE,CAAC,CAC9C;QAED,OAAOzJ,MAAM,CAACsK,SAAS,CAAChD,QAAQ,CAAC,CAAC9F,IAAI,CACpCxB,MAAM,CAACmE,SAAS,CAAEoG,CAAC,IAAI;UACrBF,IAAI,GAAGE,CAAC,CAACjG,IAAI,KAAK,oBAAoB,IAAIiG,CAAC,CAACjG,IAAI,KAAK,qBAAqB;UAC1E,OAAO+F,IAAI;QACb,CAAC,CAAC,CACH;MACH,CAAC,CAAC,CAAC;MAEH,OAAOhL,MAAM,CAACmL,OAAO,CAAC,CACpBhK,kBAAkB,CAACiK,OAAO,CAAC7D,OAAO,EAAE,IAAIhE,QAAQ,EAAE,CAAC,EACnDkB,MAAM,CACP,CAAC;IACJ;GACD,CAAC,CAACtC,IAAI,CACLpC,OAAO,CAACsL,GAAG,CAACxK,iBAAiB,CAACA,iBAAiB,EAAE6F,OAAO,CAAC,CAC1D;AACH,CAAC,CAAC;AAEF,MAAM4E,UAAU,gBAAG9K,MAAM,CAAC+K,MAAM,CAAC;EAC/BtG,IAAI,eAAEzE,MAAM,CAACgL,OAAO,CAAC,OAAO,CAAC;EAC7BnC,MAAM,eAAE7I,MAAM,CAAC8I,MAAM,CAACnH,IAAI,cACxB3B,MAAM,CAACiL,mBAAmB,cAACzL,MAAM,CAACmL,OAAO,CAAC,GAAG,CAAC,CAAC,CAChD;EACDhH,KAAK,eAAE3D,MAAM,CAAC+K,MAAM,CAAC;IACnBtG,IAAI,EAAEzE,MAAM,CAACkL,MAAM;IACnBtD,OAAO,EAAE5H,MAAM,CAACkL;GACjB;CACF,CAAC;AAEF,MAAMhC,iBAAiB,GAA2B;EAChDiC,qBAAqB,EAAE,GAAG;EAC1BC,qBAAqB,EAAE,GAAG;EAC1BC,wBAAwB,EAAE,GAAG;EAC7BC,gBAAgB,EAAE,GAAG;EACrBC,yBAAyB,EAAE;CAC5B;AAED,MAAMC,SAAS,gBAAGxL,MAAM,CAACyL,KAAK,CAAC,CAACX,UAAU,EAAE/J,YAAY,CAACsD,mBAAmB,CAAC,CAAC;AAC9E,MAAMuE,WAAW,gBAAG5I,MAAM,CAAC0L,iBAAiB,cAAC1L,MAAM,CAAC2L,cAAc,CAACH,SAAS,CAAC,CAAC;AAE9E;;;;;;;;;;;;;;;;;;;;;;;;AAwBA,OAAO,MAAMI,iBAAiB,GAC5B/F,MAA8B,IAM9BrG,MAAM,CAACqM,UAAU,CAAEzF,KAAK,IACtB5G,MAAM,CAAC0D,OAAO,CACZjD,KAAK,CAAC6L,OAAO,CAAC7F,UAAU,EAAEG,KAAK,CAAC,EAC/BrB,QAAQ,IAAKvF,MAAM,CAACuM,cAAc,CAAClG,MAAM,EAAEd,QAAQ,CAAC,CACtD,CACF;AAEH;;;;;;;;;;;;;;;;;;;;;;;AAuBA,OAAO,MAAMiH,kBAAkB,gBAI3BrM,KAAK,CAACsM,aAAa,CAAChG,UAAU,CAAC","ignoreList":[]}
@@ -0,0 +1,91 @@
1
+ import type * as Config from "effect/Config";
2
+ import * as Context from "effect/Context";
3
+ import * as Effect from "effect/Effect";
4
+ import * as Layer from "effect/Layer";
5
+ import * as Redacted from "effect/Redacted";
6
+ import * as HttpClient from "effect/unstable/http/HttpClient";
7
+ import * as Generated from "./Generated.ts";
8
+ declare const OpenAiClientGenerated_base: Context.ServiceClass<OpenAiClientGenerated, "@effect/ai-openai/OpenAiClientGenerated", Generated.OpenAiClient>;
9
+ /**
10
+ * Service identifier for the generated OpenAI client.
11
+ *
12
+ * @since 4.0.0
13
+ * @category service
14
+ */
15
+ export declare class OpenAiClientGenerated extends OpenAiClientGenerated_base {
16
+ }
17
+ /**
18
+ * Options for configuring the generated OpenAI client.
19
+ *
20
+ * @since 4.0.0
21
+ * @category options
22
+ */
23
+ export type Options = {
24
+ /**
25
+ * The OpenAI API key.
26
+ */
27
+ readonly apiKey?: Redacted.Redacted<string> | undefined;
28
+ /**
29
+ * The base URL for the OpenAI API.
30
+ *
31
+ * @default "https://api.openai.com/v1"
32
+ */
33
+ readonly apiUrl?: string | undefined;
34
+ /**
35
+ * Optional organization ID for multi-org accounts.
36
+ */
37
+ readonly organizationId?: Redacted.Redacted<string> | undefined;
38
+ /**
39
+ * Optional project ID for project-scoped requests.
40
+ */
41
+ readonly projectId?: Redacted.Redacted<string> | undefined;
42
+ /**
43
+ * Optional transformer for the HTTP client.
44
+ */
45
+ readonly transformClient?: ((client: HttpClient.HttpClient) => HttpClient.HttpClient) | undefined;
46
+ };
47
+ /**
48
+ * Creates a generated OpenAI client service with the given options.
49
+ *
50
+ * @since 4.0.0
51
+ * @category constructors
52
+ */
53
+ export declare const make: (options: Options) => Effect.Effect<Generated.OpenAiClient, never, HttpClient.HttpClient>;
54
+ /**
55
+ * Creates a layer for the generated OpenAI client with the given options.
56
+ *
57
+ * @since 4.0.0
58
+ * @category layers
59
+ */
60
+ export declare const layer: (options: Options) => Layer.Layer<OpenAiClientGenerated, never, HttpClient.HttpClient>;
61
+ /**
62
+ * Creates a layer for the generated OpenAI client, loading the requisite
63
+ * configuration via Effect's `Config` module.
64
+ *
65
+ * @since 4.0.0
66
+ * @category layers
67
+ */
68
+ export declare const layerConfig: (options?: {
69
+ /**
70
+ * The config value to load for the API key.
71
+ */
72
+ readonly apiKey?: Config.Config<Redacted.Redacted<string> | undefined> | undefined;
73
+ /**
74
+ * The config value to load for the API URL.
75
+ */
76
+ readonly apiUrl?: Config.Config<string> | undefined;
77
+ /**
78
+ * The config value to load for the organization ID.
79
+ */
80
+ readonly organizationId?: Config.Config<Redacted.Redacted<string> | undefined> | undefined;
81
+ /**
82
+ * The config value to load for the project ID.
83
+ */
84
+ readonly projectId?: Config.Config<Redacted.Redacted<string> | undefined> | undefined;
85
+ /**
86
+ * Optional transformer for the HTTP client.
87
+ */
88
+ readonly transformClient?: ((client: HttpClient.HttpClient) => HttpClient.HttpClient) | undefined;
89
+ }) => Layer.Layer<OpenAiClientGenerated, Config.ConfigError, HttpClient.HttpClient>;
90
+ export {};
91
+ //# sourceMappingURL=OpenAiClientGenerated.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OpenAiClientGenerated.d.ts","sourceRoot":"","sources":["../src/OpenAiClientGenerated.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAGvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAA;AAE3C,OAAO,KAAK,UAAU,MAAM,iCAAiC,CAAA;AAE7D,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;;AAO3C;;;;;GAKG;AACH,qBAAa,qBAAsB,SAAQ,0BAE1C;CAAG;AAMJ;;;;;GAKG;AACH,MAAM,MAAM,OAAO,GAAG;IACpB;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,SAAS,CAAA;IAEvD;;;;OAIG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAEpC;;OAEG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,SAAS,CAAA;IAE/D;;OAEG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,SAAS,CAAA;IAE1D;;OAEG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,UAAU,KAAK,UAAU,CAAC,UAAU,CAAC,GAAG,SAAS,CAAA;CAClG,CAAA;AAWD;;;;;GAKG;AACH,eAAO,MAAM,IAAI,2FA4ChB,CAAA;AAMD;;;;;GAKG;AACH,eAAO,MAAM,KAAK,GAAI,SAAS,OAAO,KAAG,KAAK,CAAC,KAAK,CAAC,qBAAqB,EAAE,KAAK,EAAE,UAAU,CAAC,UAAU,CACpD,CAAA;AAEpD;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,GAAI,UAAU;IACpC;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC,GAAG,SAAS,CAAA;IAElF;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,SAAS,CAAA;IAEnD;;OAEG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC,GAAG,SAAS,CAAA;IAE1F;;OAEG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC,GAAG,SAAS,CAAA;IAErF;;OAEG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,UAAU,KAAK,UAAU,CAAC,UAAU,CAAC,GAAG,SAAS,CAAA;CAClG,KAAG,KAAK,CAAC,KAAK,CAAC,qBAAqB,EAAE,MAAM,CAAC,WAAW,EAAE,UAAU,CAAC,UAAU,CAwB7E,CAAA"}