@effect/ai-openai 4.0.0-beta.7 → 4.0.0-beta.71

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 (58) hide show
  1. package/dist/Generated.d.ts +66734 -37723
  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 +167 -27
  6. package/dist/OpenAiClient.d.ts.map +1 -1
  7. package/dist/OpenAiClient.js +337 -44
  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 +114 -10
  14. package/dist/OpenAiConfig.d.ts.map +1 -1
  15. package/dist/OpenAiConfig.js +68 -7
  16. package/dist/OpenAiConfig.js.map +1 -1
  17. package/dist/OpenAiEmbeddingModel.d.ts +213 -0
  18. package/dist/OpenAiEmbeddingModel.d.ts.map +1 -0
  19. package/dist/OpenAiEmbeddingModel.js +219 -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 +384 -62
  25. package/dist/OpenAiLanguageModel.d.ts.map +1 -1
  26. package/dist/OpenAiLanguageModel.js +416 -166
  27. package/dist/OpenAiLanguageModel.js.map +1 -1
  28. package/dist/OpenAiSchema.d.ts +2298 -0
  29. package/dist/OpenAiSchema.d.ts.map +1 -0
  30. package/dist/OpenAiSchema.js +814 -0
  31. package/dist/OpenAiSchema.js.map +1 -0
  32. package/dist/OpenAiTelemetry.d.ts +59 -18
  33. package/dist/OpenAiTelemetry.d.ts.map +1 -1
  34. package/dist/OpenAiTelemetry.js +35 -8
  35. package/dist/OpenAiTelemetry.js.map +1 -1
  36. package/dist/OpenAiTool.d.ts +157 -62
  37. package/dist/OpenAiTool.d.ts.map +1 -1
  38. package/dist/OpenAiTool.js +134 -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/package.json +3 -3
  47. package/src/Generated.ts +9858 -5044
  48. package/src/OpenAiClient.ts +513 -95
  49. package/src/OpenAiClientGenerated.ts +202 -0
  50. package/src/OpenAiConfig.ts +115 -11
  51. package/src/OpenAiEmbeddingModel.ts +357 -0
  52. package/src/OpenAiError.ts +170 -35
  53. package/src/OpenAiLanguageModel.ts +802 -167
  54. package/src/OpenAiSchema.ts +1289 -0
  55. package/src/OpenAiTelemetry.ts +81 -23
  56. package/src/OpenAiTool.ts +135 -40
  57. package/src/index.ts +22 -33
  58. package/src/internal/errors.ts +6 -4
@@ -1,37 +1,84 @@
1
1
  /**
2
- * OpenAI Client module for interacting with OpenAI's API.
2
+ * The `OpenAiClient` module provides the handwritten Effect service used by
3
+ * the OpenAI integration for Responses API and embedding requests. It builds on
4
+ * the Effect HTTP client, applies OpenAI authentication and organization or
5
+ * project headers, decodes the minimal schemas needed by higher-level modules,
6
+ * and maps transport or decoding failures into `AiError`.
3
7
  *
4
- * Provides a type-safe, Effect-based client for OpenAI operations including
5
- * completions, embeddings, and streaming responses.
8
+ * The service exposes a configured HTTP client plus helpers for non-streaming
9
+ * responses, server-sent event response streams, and embeddings. It also
10
+ * includes WebSocket mode for response streams when an application wants to use
11
+ * OpenAI's WebSocket transport instead of the default SSE path.
6
12
  *
7
- * @since 1.0.0
13
+ * **Common tasks**
14
+ *
15
+ * - Construct the service directly with {@link make}
16
+ * - Provide the service with {@link layer} or load settings from `Config` with
17
+ * {@link layerConfig}
18
+ * - Call `createResponse`, `createResponseStream`, or `createEmbedding` from
19
+ * code that depends on the `OpenAiClient` service
20
+ * - Enable WebSocket streaming around an effect with {@link withWebSocketMode}
21
+ * or through layers with {@link layerWebSocketMode}
22
+ *
23
+ * **Gotchas**
24
+ *
25
+ * - The default base URL is `https://api.openai.com/v1`; set `apiUrl` for
26
+ * proxies, local gateways, or compatible deployments.
27
+ * - A constructor `transformClient` is applied when the service is built, while
28
+ * scoped `OpenAiConfig` transforms are applied by request helpers when they
29
+ * run.
30
+ * - WebSocket mode requires a supported `Socket.WebSocketConstructor` layer and
31
+ * serializes response streams through the shared socket service.
32
+ * - This module is intentionally narrower than the generated OpenAI client; use
33
+ * `OpenAiClientGenerated` for direct access to generated endpoint helpers.
34
+ *
35
+ * @since 4.0.0
8
36
  */
9
37
  import * as Array from "effect/Array";
38
+ import * as Context from "effect/Context";
10
39
  import * as Effect from "effect/Effect";
11
40
  import { identity } from "effect/Function";
41
+ import * as Function from "effect/Function";
12
42
  import * as Layer from "effect/Layer";
13
43
  import * as Predicate from "effect/Predicate";
44
+ import * as Queue from "effect/Queue";
45
+ import * as RcRef from "effect/RcRef";
14
46
  import * as Redacted from "effect/Redacted";
15
- import * as ServiceMap from "effect/ServiceMap";
47
+ import * as Schema from "effect/Schema";
48
+ import * as Scope from "effect/Scope";
49
+ import * as Semaphore from "effect/Semaphore";
16
50
  import * as Stream from "effect/Stream";
51
+ import * as AiError from "effect/unstable/ai/AiError";
52
+ import * as ResponseIdTracker from "effect/unstable/ai/ResponseIdTracker";
17
53
  import * as Sse from "effect/unstable/encoding/Sse";
18
54
  import * as Headers from "effect/unstable/http/Headers";
19
55
  import * as HttpBody from "effect/unstable/http/HttpBody";
20
56
  import * as HttpClient from "effect/unstable/http/HttpClient";
21
57
  import * as HttpClientRequest from "effect/unstable/http/HttpClientRequest";
22
- import * as Generated from "./Generated.js";
58
+ import * as HttpClientResponse from "effect/unstable/http/HttpClientResponse";
59
+ import * as Socket from "effect/unstable/socket/Socket";
23
60
  import * as Errors from "./internal/errors.js";
24
61
  import { OpenAiConfig } from "./OpenAiConfig.js";
62
+ import * as OpenAiSchema from "./OpenAiSchema.js";
25
63
  // =============================================================================
26
64
  // Service Identifier
27
65
  // =============================================================================
28
66
  /**
29
67
  * Service identifier for the OpenAI client.
30
68
  *
31
- * @since 1.0.0
32
- * @category service
69
+ * **When to use**
70
+ *
71
+ * Use when accessing or providing the OpenAI client service through Effect's
72
+ * context.
73
+ *
74
+ * @see {@link make} for constructing an OpenAI client effectfully
75
+ * @see {@link layer} for providing a client from explicit options
76
+ * @see {@link layerConfig} for providing a client from `Config`
77
+ *
78
+ * @category services
79
+ * @since 4.0.0
33
80
  */
34
- export class OpenAiClient extends /*#__PURE__*/ServiceMap.Service()("@effect/ai-openai/OpenAiClient") {}
81
+ export class OpenAiClient extends /*#__PURE__*/Context.Service()("@effect/ai-openai/OpenAiClient") {}
35
82
  // =============================================================================
36
83
  // Constructor
37
84
  // =============================================================================
@@ -42,33 +89,43 @@ const RedactedOpenAiHeaders = {
42
89
  /**
43
90
  * Creates an OpenAI client service with the given options.
44
91
  *
45
- * @since 1.0.0
92
+ * **When to use**
93
+ *
94
+ * Use to construct the OpenAI client service inside an effect when you need the
95
+ * service value directly.
96
+ *
97
+ * **Details**
98
+ *
99
+ * The returned service uses the current `HttpClient`, prepends `apiUrl` or
100
+ * `https://api.openai.com/v1`, adds the bearer token and optional OpenAI
101
+ * organization/project headers, accepts JSON responses, filters for successful
102
+ * HTTP statuses, and applies `transformClient` when provided.
103
+ *
104
+ * **Gotchas**
105
+ *
106
+ * A scoped `OpenAiConfig.withClientTransform` is applied when request helpers
107
+ * run, after the `transformClient` option supplied to `make`.
108
+ *
109
+ * @see {@link layer} for providing this client from explicit options
110
+ * @see {@link layerConfig} for loading client settings from `Config`
111
+ *
46
112
  * @category constructors
113
+ * @since 4.0.0
47
114
  */
48
115
  export const make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
49
116
  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({
117
+ const apiUrl = options.apiUrl ?? "https://api.openai.com/v1";
118
+ 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);
119
+ const resolveHttpClient = Effect.map(OpenAiConfig.getOrUndefined, config => Predicate.isNotUndefined(config?.transformClient) ? config.transformClient(httpClient) : httpClient);
120
+ const decodeResponse = HttpClientResponse.schemaBodyJson(OpenAiSchema.Response);
121
+ const createResponse = payload => Effect.flatMap(resolveHttpClient, client => client.execute(HttpClientRequest.post("/responses", {
122
+ body: HttpBody.jsonUnsafe(payload)
123
+ })).pipe(Effect.flatMap(response => decodeResponse(response).pipe(Effect.map(body => [body, response]))), Effect.catchTags({
67
124
  HttpClientError: error => Errors.mapHttpClientError(error, "createResponse"),
68
125
  SchemaError: error => Effect.fail(Errors.mapSchemaError(error, "createResponse"))
69
- }));
126
+ })));
70
127
  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({
128
+ 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
129
  // TODO: handle SSE retries
73
130
  Retry: error => Stream.die(error),
74
131
  HttpClientError: error => Stream.fromEffect(Errors.mapHttpClientError(error, "createResponseStream")),
@@ -76,20 +133,25 @@ export const make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
76
133
  }));
77
134
  return [response, stream];
78
135
  };
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({
136
+ const createResponseStream = payload => Effect.contextWith(services => {
137
+ const socket = Context.getOrUndefined(services, OpenAiSocket);
138
+ if (socket) return socket.createResponseStream(payload);
139
+ return Effect.flatMap(resolveHttpClient, client => client.execute(HttpClientRequest.post("/responses", {
140
+ body: HttpBody.jsonUnsafe({
141
+ ...payload,
142
+ stream: true
143
+ })
144
+ })).pipe(Effect.map(buildResponseStream), Effect.catchTag("HttpClientError", error => Errors.mapHttpClientError(error, "createResponseStream"))));
145
+ });
146
+ const decodeEmbedding = HttpClientResponse.schemaBodyJson(OpenAiSchema.CreateEmbeddingResponse);
147
+ const createEmbedding = payload => Effect.flatMap(resolveHttpClient, client => client.execute(HttpClientRequest.post("/embeddings", {
148
+ body: HttpBody.jsonUnsafe(payload)
149
+ })).pipe(Effect.flatMap(decodeEmbedding), Effect.catchTags({
88
150
  HttpClientError: error => Errors.mapHttpClientError(error, "createEmbedding"),
89
151
  SchemaError: error => Effect.fail(Errors.mapSchemaError(error, "createEmbedding"))
90
- }));
152
+ })));
91
153
  return OpenAiClient.of({
92
- client,
154
+ client: httpClient,
93
155
  createResponse,
94
156
  createResponseStream,
95
157
  createEmbedding
@@ -101,16 +163,37 @@ export const make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
101
163
  /**
102
164
  * Creates a layer for the OpenAI client with the given options.
103
165
  *
104
- * @since 1.0.0
166
+ * **When to use**
167
+ *
168
+ * Use when you already have explicit `Options` values, such as an API key or
169
+ * custom API URL, and want to provide `OpenAiClient` as a `Layer`.
170
+ *
171
+ * @see {@link make} for constructing the client service effectfully
172
+ * @see {@link layerConfig} for loading client settings from `Config`
173
+ *
105
174
  * @category layers
175
+ * @since 4.0.0
106
176
  */
107
177
  export const layer = options => Layer.effect(OpenAiClient, make(options));
108
178
  /**
109
- * Creates a layer for the OpenAI client, loading the requisite configuration
110
- * via Effect's `Config` module.
179
+ * Creates a layer for the OpenAI client from provided `Config` values.
180
+ *
181
+ * **When to use**
182
+ *
183
+ * Use when client settings should be read from Effect `Config` values while
184
+ * providing `OpenAiClient` as a `Layer`.
185
+ *
186
+ * **Details**
187
+ *
188
+ * Only config values supplied in `options` are loaded. Omitted fields are
189
+ * passed to `make` as `undefined`, and `transformClient` is forwarded as a
190
+ * plain option.
191
+ *
192
+ * @see {@link make} for constructing the client service effectfully
193
+ * @see {@link layer} for providing the client from already-resolved options
111
194
  *
112
- * @since 1.0.0
113
195
  * @category layers
196
+ * @since 4.0.0
114
197
  */
115
198
  export const layerConfig = options => Layer.effect(OpenAiClient, Effect.gen(function* () {
116
199
  const apiKey = Predicate.isNotUndefined(options?.apiKey) ? yield* options.apiKey : undefined;
@@ -125,4 +208,214 @@ export const layerConfig = options => Layer.effect(OpenAiClient, Effect.gen(func
125
208
  transformClient: options?.transformClient
126
209
  });
127
210
  }));
211
+ /**
212
+ * Service for creating OpenAI response streams over a WebSocket connection.
213
+ *
214
+ * **When to use**
215
+ *
216
+ * Use when code needs direct access to the WebSocket-backed response streaming
217
+ * service rather than wrapping an effect with WebSocket mode.
218
+ *
219
+ * **Details**
220
+ *
221
+ * `createResponseStream` sends a `response.create` message over the WebSocket
222
+ * connection and returns an HTTP response together with a stream of
223
+ * `ResponseStreamEvent` values.
224
+ *
225
+ * **Gotchas**
226
+ *
227
+ * WebSocket response streams are serialized to one request at a time by the
228
+ * shared socket service.
229
+ *
230
+ * @see {@link withWebSocketMode} for enabling WebSocket mode for one effect
231
+ * @see {@link layerWebSocketMode} for providing WebSocket mode through a layer
232
+ *
233
+ * @category Websocket mode
234
+ * @since 4.0.0
235
+ */
236
+ export class OpenAiSocket extends /*#__PURE__*/Context.Service()("@effect/ai-openai/OpenAiClient/OpenAiSocket") {}
237
+ const makeSocket = /*#__PURE__*/Effect.gen(function* () {
238
+ const client = yield* OpenAiClient;
239
+ const tracker = yield* ResponseIdTracker.make;
240
+ const socketScope = yield* Effect.scope;
241
+ const makeRequest = Effect.flatMap(OpenAiConfig.getOrUndefined, config => {
242
+ const httpClient = Predicate.isNotUndefined(config?.transformClient) ? config.transformClient(client.client) : client.client;
243
+ return Effect.orDie(httpClient.preprocess(HttpClientRequest.post("/responses")));
244
+ });
245
+ const makeWebSocket = yield* Socket.WebSocketConstructor;
246
+ const decoder = new TextDecoder();
247
+ const queueRef = yield* RcRef.make({
248
+ idleTimeToLive: 60_000,
249
+ acquire: Effect.gen(function* () {
250
+ const scope = yield* Effect.scope;
251
+ const request = yield* makeRequest;
252
+ const socket = yield* Socket.makeWebSocket(request.url.replace(/^http/, "ws")).pipe(Effect.provideService(Socket.WebSocketConstructor, url => makeWebSocket(url, {
253
+ headers: request.headers
254
+ })));
255
+ const write = yield* socket.writer;
256
+ yield* Scope.addFinalizerExit(scope, () => {
257
+ tracker.clearUnsafe();
258
+ return Effect.void;
259
+ });
260
+ const incoming = yield* Queue.unbounded();
261
+ const send = message => write(JSON.stringify({
262
+ type: "response.create",
263
+ ...message
264
+ })).pipe(Effect.mapError(_error => AiError.make({
265
+ module: "OpenAiClient",
266
+ method: "createResponseStream",
267
+ reason: new AiError.NetworkError({
268
+ reason: "TransportError",
269
+ request: {
270
+ method: "POST",
271
+ url: request.url,
272
+ urlParams: [],
273
+ hash: undefined,
274
+ headers: request.headers
275
+ },
276
+ description: "Failed to send message over WebSocket"
277
+ })
278
+ })));
279
+ yield* socket.runRaw(msg => {
280
+ const text = typeof msg === "string" ? msg : decoder.decode(msg);
281
+ try {
282
+ const event = decodeEvent(text);
283
+ if (event.type === "error" && "status" in event) {
284
+ const status = Number(event.status);
285
+ const error = "error" in event ? event.error : event;
286
+ const json = JSON.stringify(error);
287
+ return Effect.fail(AiError.make({
288
+ module: "OpenAiClient",
289
+ method: "createResponseStream",
290
+ reason: AiError.reasonFromHttpStatus({
291
+ description: json,
292
+ status: isNaN(status) ? 500 : status,
293
+ metadata: error,
294
+ http: {
295
+ body: json,
296
+ request: {
297
+ method: "POST",
298
+ url: request.url,
299
+ urlParams: [],
300
+ hash: undefined,
301
+ headers: request.headers
302
+ }
303
+ }
304
+ })
305
+ }));
306
+ }
307
+ Queue.offerUnsafe(incoming, event);
308
+ } catch {}
309
+ }).pipe(Effect.catchTag("SocketError", error => AiError.make({
310
+ module: "OpenAiClient",
311
+ method: "createResponseStream",
312
+ reason: new AiError.NetworkError({
313
+ reason: "TransportError",
314
+ request: {
315
+ method: "POST",
316
+ url: request.url,
317
+ urlParams: [],
318
+ hash: undefined,
319
+ headers: request.headers
320
+ },
321
+ description: error.message
322
+ })
323
+ })), Effect.catchCause(cause => Queue.failCause(incoming, cause)), Effect.ensuring(Effect.forkIn(RcRef.invalidate(queueRef), socketScope, {
324
+ startImmediately: true
325
+ })), Effect.forkScoped({
326
+ startImmediately: true
327
+ }));
328
+ return {
329
+ send,
330
+ incoming
331
+ };
332
+ })
333
+ });
334
+ // Prime the websocket
335
+ yield* Effect.scoped(RcRef.get(queueRef));
336
+ // Websocket mode only allows one request at a time
337
+ const semaphore = Semaphore.makeUnsafe(1);
338
+ const request = yield* makeRequest;
339
+ return OpenAiSocket.context({
340
+ createResponseStream(options) {
341
+ const stream = Stream.unwrap(Effect.gen(function* () {
342
+ const scope = yield* Effect.scope;
343
+ yield* Effect.acquireRelease(semaphore.take(1), () => semaphore.release(1), {
344
+ interruptible: true
345
+ });
346
+ const {
347
+ send,
348
+ incoming
349
+ } = yield* RcRef.get(queueRef);
350
+ let done = false;
351
+ yield* Scope.addFinalizerExit(scope, () => done ? Effect.void : RcRef.invalidate(queueRef));
352
+ yield* send(options).pipe(Effect.forkScoped({
353
+ startImmediately: true
354
+ }));
355
+ return Stream.fromQueue(incoming).pipe(Stream.takeUntil(e => {
356
+ done = e.type === "response.completed" || e.type === "response.incomplete";
357
+ return done;
358
+ }));
359
+ }));
360
+ return Effect.succeed([HttpClientResponse.fromWeb(request, new Response()), stream]);
361
+ }
362
+ }).pipe(Context.add(ResponseIdTracker.ResponseIdTracker, tracker));
363
+ });
364
+ const ErrorEvent = /*#__PURE__*/Schema.Struct({
365
+ type: /*#__PURE__*/Schema.Literal("error"),
366
+ status: /*#__PURE__*/Schema.Number.pipe(/*#__PURE__*/Schema.withDecodingDefault(/*#__PURE__*/Effect.succeed(500))),
367
+ error: /*#__PURE__*/Schema.Struct({
368
+ type: Schema.String,
369
+ message: Schema.String
370
+ })
371
+ });
372
+ const AllEvents = /*#__PURE__*/Schema.Union([ErrorEvent, OpenAiSchema.ResponseStreamEvent]);
373
+ const decodeEvent = /*#__PURE__*/Schema.decodeUnknownSync(/*#__PURE__*/Schema.fromJsonString(AllEvents));
374
+ /**
375
+ * Uses OpenAI's WebSocket mode for response streams within the provided effect.
376
+ *
377
+ * **When to use**
378
+ *
379
+ * Use to enable WebSocket mode around one effect that creates OpenAI response
380
+ * streams.
381
+ *
382
+ * **Gotchas**
383
+ *
384
+ * This only works with the following WebSocket constructor layers:
385
+ *
386
+ * - `NodeSocket.layerWebSocketConstructorWS`
387
+ * - `BunSocket.layerWebSocketConstructor`
388
+ *
389
+ * This is because it needs to use non-standard options for setting the Authorization header.
390
+ *
391
+ * @see {@link layerWebSocketMode} for providing WebSocket mode through a layer
392
+ * @see {@link OpenAiSocket} for direct access to the WebSocket-backed streaming service
393
+ *
394
+ * @category Websocket mode
395
+ * @since 4.0.0
396
+ */
397
+ export const withWebSocketMode = effect => Effect.scopedWith(scope => Effect.flatMap(Scope.provide(makeSocket, scope), services => Effect.provideContext(effect, services)));
398
+ /**
399
+ * Uses OpenAI's websocket mode for all responses that use the Layer.
400
+ *
401
+ * **When to use**
402
+ *
403
+ * Use to provide WebSocket mode through layer composition for effects that use
404
+ * OpenAI response streaming.
405
+ *
406
+ * **Gotchas**
407
+ *
408
+ * This only works with the following WebSocket constructor layers:
409
+ *
410
+ * - `NodeSocket.layerWebSocketConstructorWS`
411
+ * - `BunSocket.layerWebSocketConstructor`
412
+ *
413
+ * This is because it needs to use non-standard options for setting the Authorization header.
414
+ *
415
+ * @see {@link withWebSocketMode} for enabling WebSocket mode around a single effect
416
+ *
417
+ * @category Websocket mode
418
+ * @since 4.0.0
419
+ */
420
+ export const layerWebSocketMode = /*#__PURE__*/Layer.effectContext(makeSocket);
128
421
  //# 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","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","AllEvents","Union","decodeUnknownSync","fromJsonString","withWebSocketMode","scopedWith","provide","provideContext","layerWebSocketMode","effectContext"],"sources":["../src/OpenAiClient.ts"],"sourcesContent":[null],"mappings":"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","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 models
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"}