@effect/ai-openai-compat 4.0.0-beta.7 → 4.0.0-beta.70

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 (38) hide show
  1. package/dist/OpenAiClient.d.ts +198 -50
  2. package/dist/OpenAiClient.d.ts.map +1 -1
  3. package/dist/OpenAiClient.js +57 -9
  4. package/dist/OpenAiClient.js.map +1 -1
  5. package/dist/OpenAiConfig.d.ts +76 -10
  6. package/dist/OpenAiConfig.d.ts.map +1 -1
  7. package/dist/OpenAiConfig.js +44 -7
  8. package/dist/OpenAiConfig.js.map +1 -1
  9. package/dist/OpenAiEmbeddingModel.d.ts +90 -0
  10. package/dist/OpenAiEmbeddingModel.d.ts.map +1 -0
  11. package/dist/OpenAiEmbeddingModel.js +122 -0
  12. package/dist/OpenAiEmbeddingModel.js.map +1 -0
  13. package/dist/OpenAiError.d.ts +109 -35
  14. package/dist/OpenAiError.d.ts.map +1 -1
  15. package/dist/OpenAiError.js +14 -1
  16. package/dist/OpenAiLanguageModel.d.ts +219 -13
  17. package/dist/OpenAiLanguageModel.d.ts.map +1 -1
  18. package/dist/OpenAiLanguageModel.js +42 -19
  19. package/dist/OpenAiLanguageModel.js.map +1 -1
  20. package/dist/OpenAiTelemetry.d.ts +35 -23
  21. package/dist/OpenAiTelemetry.d.ts.map +1 -1
  22. package/dist/OpenAiTelemetry.js +6 -4
  23. package/dist/OpenAiTelemetry.js.map +1 -1
  24. package/dist/index.d.ts +70 -6
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +70 -6
  27. package/dist/index.js.map +1 -1
  28. package/dist/internal/errors.js +4 -4
  29. package/dist/internal/errors.js.map +1 -1
  30. package/package.json +3 -3
  31. package/src/OpenAiClient.ts +232 -49
  32. package/src/OpenAiConfig.ts +77 -11
  33. package/src/OpenAiEmbeddingModel.ts +208 -0
  34. package/src/OpenAiError.ts +111 -35
  35. package/src/OpenAiLanguageModel.ts +273 -30
  36. package/src/OpenAiTelemetry.ts +36 -24
  37. package/src/index.ts +71 -6
  38. package/src/internal/errors.ts +4 -4
@@ -1,13 +1,36 @@
1
1
  /**
2
- * @since 1.0.0
2
+ * The `OpenAiClient` module provides an Effect service for calling
3
+ * OpenAI-compatible chat completions and embeddings APIs. It builds on the
4
+ * Effect HTTP client, adds authentication and OpenAI header handling, and
5
+ * exposes typed helpers for regular responses, server-sent event streaming, and
6
+ * embedding requests.
7
+ *
8
+ * **Common tasks**
9
+ *
10
+ * - Create a client service directly with {@link make}
11
+ * - Provide the service as a layer with {@link layer} or {@link layerConfig}
12
+ * - Send non-streaming chat completion requests with `createResponse`
13
+ * - Send streaming chat completion requests with `createResponseStream`
14
+ * - Generate embeddings with `createEmbedding`
15
+ * - Reuse the exported request and response types when integrating compatible providers
16
+ *
17
+ * **Gotchas**
18
+ *
19
+ * - The default base URL is `https://api.openai.com/v1`; set `apiUrl` for other
20
+ * OpenAI-compatible providers.
21
+ * - `createResponseStream` forces `stream: true` and requests usage events with
22
+ * `stream_options.include_usage`.
23
+ * - HTTP and schema decoding failures are mapped into `AiError`.
24
+ *
25
+ * @since 4.0.0
3
26
  */
4
27
  import * as Array from "effect/Array";
28
+ import * as Context from "effect/Context";
5
29
  import * as Effect from "effect/Effect";
6
30
  import { identity, pipe } from "effect/Function";
7
31
  import * as Layer from "effect/Layer";
8
32
  import * as Redacted from "effect/Redacted";
9
33
  import * as Schema from "effect/Schema";
10
- import * as ServiceMap from "effect/ServiceMap";
11
34
  import * as Stream from "effect/Stream";
12
35
  import * as Sse from "effect/unstable/encoding/Sse";
13
36
  import * as Headers from "effect/unstable/http/Headers";
@@ -17,17 +40,27 @@ import * as HttpClientResponse from "effect/unstable/http/HttpClientResponse";
17
40
  import * as Errors from "./internal/errors.js";
18
41
  import { OpenAiConfig } from "./OpenAiConfig.js";
19
42
  /**
20
- * @since 1.0.0
21
- * @category service
43
+ * Context service tag for accessing an OpenAI-compatible client from the
44
+ * Effect context.
45
+ *
46
+ * @category services
47
+ * @since 4.0.0
22
48
  */
23
- export class OpenAiClient extends /*#__PURE__*/ServiceMap.Service()("@effect/ai-openai-compat/OpenAiClient") {}
49
+ export class OpenAiClient extends /*#__PURE__*/Context.Service()("@effect/ai-openai-compat/OpenAiClient") {}
24
50
  const RedactedOpenAiHeaders = {
25
51
  OpenAiOrganization: "OpenAI-Organization",
26
52
  OpenAiProject: "OpenAI-Project"
27
53
  };
28
54
  /**
29
- * @since 1.0.0
55
+ * Constructs an OpenAI-compatible client service from explicit options.
56
+ *
57
+ * **Details**
58
+ *
59
+ * The returned service applies the configured base URL, authentication, and
60
+ * OpenAI organization/project headers to the underlying HTTP client.
61
+ *
30
62
  * @category constructors
63
+ * @since 4.0.0
31
64
  */
32
65
  export const make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
33
66
  const baseClient = yield* HttpClient.HttpClient;
@@ -68,13 +101,18 @@ export const make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
68
101
  });
69
102
  }, /*#__PURE__*/Effect.updateService(Headers.CurrentRedactedNames, /*#__PURE__*/Array.appendAll(/*#__PURE__*/Object.values(RedactedOpenAiHeaders))));
70
103
  /**
71
- * @since 1.0.0
104
+ * Creates a layer that provides an OpenAI-compatible client from explicit options.
105
+ *
72
106
  * @category layers
107
+ * @since 4.0.0
73
108
  */
74
109
  export const layer = options => Layer.effect(OpenAiClient, make(options));
75
110
  /**
76
- * @since 1.0.0
111
+ * Creates a layer that loads OpenAI-compatible client settings from `Config`
112
+ * values before constructing the service.
113
+ *
77
114
  * @category layers
115
+ * @since 4.0.0
78
116
  */
79
117
  export const layerConfig = options => Layer.effect(OpenAiClient, Effect.gen(function* () {
80
118
  const apiKey = options?.apiKey !== undefined ? yield* options.apiKey : undefined;
@@ -107,12 +145,22 @@ const ChatCompletionToolFunction = /*#__PURE__*/Schema.Struct({
107
145
  name: Schema.String,
108
146
  arguments: /*#__PURE__*/Schema.optionalKey(Schema.String)
109
147
  });
148
+ const ChatCompletionToolFunctionDelta = /*#__PURE__*/Schema.Struct({
149
+ name: /*#__PURE__*/Schema.optionalKey(Schema.String),
150
+ arguments: /*#__PURE__*/Schema.optionalKey(Schema.String)
151
+ });
110
152
  const ChatCompletionToolCall = /*#__PURE__*/Schema.Struct({
111
153
  id: /*#__PURE__*/Schema.optionalKey(Schema.String),
112
154
  index: /*#__PURE__*/Schema.optionalKey(Schema.Number),
113
155
  type: /*#__PURE__*/Schema.optionalKey(Schema.String),
114
156
  function: /*#__PURE__*/Schema.optionalKey(ChatCompletionToolFunction)
115
157
  });
158
+ const ChatCompletionToolCallDelta = /*#__PURE__*/Schema.Struct({
159
+ id: /*#__PURE__*/Schema.optionalKey(Schema.String),
160
+ index: /*#__PURE__*/Schema.optionalKey(Schema.Number),
161
+ type: /*#__PURE__*/Schema.optionalKey(Schema.String),
162
+ function: /*#__PURE__*/Schema.optionalKey(ChatCompletionToolFunctionDelta)
163
+ });
116
164
  const ChatCompletionMessage = /*#__PURE__*/Schema.Struct({
117
165
  role: /*#__PURE__*/Schema.optionalKey(Schema.String),
118
166
  content: /*#__PURE__*/Schema.optionalKey(/*#__PURE__*/Schema.NullOr(Schema.String)),
@@ -121,7 +169,7 @@ const ChatCompletionMessage = /*#__PURE__*/Schema.Struct({
121
169
  const ChatCompletionDelta = /*#__PURE__*/Schema.Struct({
122
170
  role: /*#__PURE__*/Schema.optionalKey(Schema.String),
123
171
  content: /*#__PURE__*/Schema.optionalKey(/*#__PURE__*/Schema.NullOr(Schema.String)),
124
- tool_calls: /*#__PURE__*/Schema.optionalKey(/*#__PURE__*/Schema.Array(ChatCompletionToolCall))
172
+ tool_calls: /*#__PURE__*/Schema.optionalKey(/*#__PURE__*/Schema.Array(ChatCompletionToolCallDelta))
125
173
  });
126
174
  const ChatCompletionChoice = /*#__PURE__*/Schema.Struct({
127
175
  index: Schema.Number,
@@ -1 +1 @@
1
- {"version":3,"file":"OpenAiClient.js","names":["Array","Effect","identity","pipe","Layer","Redacted","Schema","ServiceMap","Stream","Sse","Headers","HttpClient","HttpClientRequest","HttpClientResponse","Errors","OpenAiConfig","OpenAiClient","Service","RedactedOpenAiHeaders","OpenAiOrganization","OpenAiProject","make","fnUntraced","options","baseClient","httpClient","mapRequest","request","prependUrl","apiUrl","apiKey","undefined","bearerToken","value","organizationId","setHeader","projectId","acceptJson","transformClient","resolveHttpClient","map","getOrUndefined","config","decodeResponse","schemaBodyJson","ChatCompletionResponse","createResponse","payload","flatMap","client","post","bodyJsonUnsafe","filterStatusOk","execute","response","body","catchTags","HttpClientError","error","mapHttpClientError","SchemaError","fail","mapSchemaError","buildResponseStream","stream","decodeText","pipeThroughChannel","decode","event","data","decodeChatCompletionSseData","fromIterable","takeUntil","Retry","die","fromEffect","createResponseStream","stream_options","include_usage","catchTag","decodeEmbedding","CreateEmbeddingResponseSchema","createEmbedding","of","updateService","CurrentRedactedNames","appendAll","Object","values","layer","effect","layerConfig","gen","EmbeddingSchema","Struct","embedding","Union","Number","String","index","object","optionalKey","model","Literal","usage","prompt_tokens","total_tokens","ChatCompletionToolFunction","name","arguments","ChatCompletionToolCall","id","type","function","ChatCompletionMessage","role","content","NullOr","tool_calls","ChatCompletionDelta","ChatCompletionChoice","finish_reason","message","delta","ChatCompletionUsage","completion_tokens","prompt_tokens_details","Any","completion_tokens_details","created","choices","service_tier","ChatCompletionChunk","parseJson","JSON","parse","isChatCompletionChunk","is","parsed"],"sources":["../src/OpenAiClient.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"OpenAiClient.js","names":["Array","Context","Effect","identity","pipe","Layer","Redacted","Schema","Stream","Sse","Headers","HttpClient","HttpClientRequest","HttpClientResponse","Errors","OpenAiConfig","OpenAiClient","Service","RedactedOpenAiHeaders","OpenAiOrganization","OpenAiProject","make","fnUntraced","options","baseClient","httpClient","mapRequest","request","prependUrl","apiUrl","apiKey","undefined","bearerToken","value","organizationId","setHeader","projectId","acceptJson","transformClient","resolveHttpClient","map","getOrUndefined","config","decodeResponse","schemaBodyJson","ChatCompletionResponse","createResponse","payload","flatMap","client","post","bodyJsonUnsafe","filterStatusOk","execute","response","body","catchTags","HttpClientError","error","mapHttpClientError","SchemaError","fail","mapSchemaError","buildResponseStream","stream","decodeText","pipeThroughChannel","decode","event","data","decodeChatCompletionSseData","fromIterable","takeUntil","Retry","die","fromEffect","createResponseStream","stream_options","include_usage","catchTag","decodeEmbedding","CreateEmbeddingResponseSchema","createEmbedding","of","updateService","CurrentRedactedNames","appendAll","Object","values","layer","effect","layerConfig","gen","EmbeddingSchema","Struct","embedding","Union","Number","String","index","object","optionalKey","model","Literal","usage","prompt_tokens","total_tokens","ChatCompletionToolFunction","name","arguments","ChatCompletionToolFunctionDelta","ChatCompletionToolCall","id","type","function","ChatCompletionToolCallDelta","ChatCompletionMessage","role","content","NullOr","tool_calls","ChatCompletionDelta","ChatCompletionChoice","finish_reason","message","delta","ChatCompletionUsage","completion_tokens","prompt_tokens_details","Any","completion_tokens_details","created","choices","service_tier","ChatCompletionChunk","parseJson","JSON","parse","isChatCompletionChunk","is","parsed"],"sources":["../src/OpenAiClient.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1,45 +1,111 @@
1
1
  /**
2
- * @since 1.0.0
2
+ * The `OpenAiConfig` module provides shared configuration for clients that
3
+ * talk to OpenAI-compatible APIs. It is used to customize the HTTP client
4
+ * wiring around a provider without changing the higher-level model,
5
+ * embeddings, or tool-calling APIs that consume the client.
6
+ *
7
+ * **Common tasks**
8
+ *
9
+ * - Install a client transform with {@link withClientTransform}
10
+ * - Add provider-specific HTTP behavior, such as headers, retries, proxies, or
11
+ * instrumentation
12
+ * - Read the active configuration from the Effect context when implementing
13
+ * OpenAI-compatible integrations
14
+ *
15
+ * **Gotchas**
16
+ *
17
+ * - The transform receives and returns an `HttpClient`, so it should preserve
18
+ * the existing client behavior unless it intentionally replaces it
19
+ * - Configuration is provided through Effect context and is scoped to the
20
+ * effect that receives the service
21
+ *
22
+ * @since 4.0.0
3
23
  */
24
+ import * as Context from "effect/Context";
4
25
  import * as Effect from "effect/Effect";
5
- import * as ServiceMap from "effect/ServiceMap";
6
26
  import type { HttpClient } from "effect/unstable/http/HttpClient";
7
- declare const OpenAiConfig_base: ServiceMap.ServiceClass<OpenAiConfig, "@effect/ai-openai-compat/OpenAiConfig", OpenAiConfig.Service>;
27
+ declare const OpenAiConfig_base: Context.ServiceClass<OpenAiConfig, "@effect/ai-openai-compat/OpenAiConfig", OpenAiConfig.Service>;
8
28
  /**
9
- * @since 1.0.0
29
+ * Context service used to carry OpenAI-compatible client configuration for the
30
+ * current Effect scope.
31
+ *
10
32
  * @category services
33
+ * @since 4.0.0
11
34
  */
12
35
  export declare class OpenAiConfig extends OpenAiConfig_base {
13
36
  /**
14
- * @since 1.0.0
37
+ * Gets the configured OpenAI-compatible service from the current context when present.
38
+ *
39
+ * @since 4.0.0
15
40
  */
16
41
  static readonly getOrUndefined: Effect.Effect<typeof OpenAiConfig.Service | undefined>;
17
42
  }
18
43
  /**
19
- * @since 1.0.0
44
+ * Types associated with the `OpenAiConfig` context service.
45
+ *
46
+ * @since 4.0.0
20
47
  */
21
48
  export declare namespace OpenAiConfig {
22
49
  /**
23
- * @since 1.0.
50
+ * Configuration consumed by OpenAI-compatible clients when they build or
51
+ * resolve the underlying HTTP client.
52
+ *
24
53
  * @category models
54
+ * @since 4.0.0
25
55
  */
26
56
  interface Service {
27
57
  readonly transformClient?: ((client: HttpClient) => HttpClient) | undefined;
28
58
  }
29
59
  }
30
60
  /**
31
- * @since 1.0.0
61
+ * Provides an HTTP client transform for the supplied effect.
62
+ *
63
+ * **When to use**
64
+ *
65
+ * Use this to add provider-specific OpenAI-compatible HTTP behavior, such as
66
+ * headers, retries, instrumentation, or proxy routing.
67
+ *
68
+ * **Details**
69
+ *
70
+ * OpenAI-compatible provider services read the transform from the
71
+ * `OpenAiConfig` context.
72
+ *
32
73
  * @category configuration
74
+ * @since 4.0.0
33
75
  */
34
76
  export declare const withClientTransform: {
35
77
  /**
36
- * @since 1.0.0
78
+ * Provides an HTTP client transform for the supplied effect.
79
+ *
80
+ * **When to use**
81
+ *
82
+ * Use this to add provider-specific OpenAI-compatible HTTP behavior, such as
83
+ * headers, retries, instrumentation, or proxy routing.
84
+ *
85
+ * **Details**
86
+ *
87
+ * OpenAI-compatible provider services read the transform from the
88
+ * `OpenAiConfig` context.
89
+ *
37
90
  * @category configuration
91
+ * @since 4.0.0
38
92
  */
39
93
  (transform: (client: HttpClient) => HttpClient): <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
40
94
  /**
41
- * @since 1.0.0
95
+ * Provides an HTTP client transform for the supplied effect.
96
+ *
97
+ * **When to use**
98
+ *
99
+ * Use this to add provider-specific OpenAI-compatible HTTP behavior, such as
100
+ * headers, retries, instrumentation, or proxy routing.
101
+ *
102
+ * **Details**
103
+ *
104
+ * OpenAI-compatible provider services read the transform from the
105
+ * `OpenAiConfig` context.
106
+ *
42
107
  * @category configuration
108
+ * @since 4.0.0
43
109
  */
44
110
  <A, E, R>(self: Effect.Effect<A, E, R>, transform: (client: HttpClient) => HttpClient): Effect.Effect<A, E, R>;
45
111
  };
@@ -1 +1 @@
1
- {"version":3,"file":"OpenAiConfig.d.ts","sourceRoot":"","sources":["../src/OpenAiConfig.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,YAAa,SAAQ,iBAGU;IAC1C;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,YAAY,CAAC,OAAO,GAAG,SAAS,CAAC,CAGrF;CACF;AAED;;GAEG;AACH,MAAM,CAAC,OAAO,WAAW,YAAY,CAAC;IACpC;;;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;CAQvB,CAAA"}
1
+ {"version":3,"file":"OpenAiConfig.d.ts","sourceRoot":"","sources":["../src/OpenAiConfig.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAA;;AAEjE;;;;;;GAMG;AACH,qBAAa,YAAa,SAAQ,iBAGU;IAC1C;;;;OAIG;IACH,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,YAAY,CAAC,OAAO,GAAG,SAAS,CAAC,CAGrF;CACF;AAED;;;;GAIG;AACH,MAAM,CAAC,OAAO,WAAW,YAAY,CAAC;IACpC;;;;;;OAMG;IACH,UAAiB,OAAO;QACtB,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,UAAU,KAAK,UAAU,CAAC,GAAG,SAAS,CAAA;KAC5E;CACF;AAED;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,mBAAmB,EAAE;IAChC;;;;;;;;;;;;;;;OAeG;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;;;;;;;;;;;;;;;OAeG;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;CAQvB,CAAA"}
@@ -1,22 +1,59 @@
1
1
  /**
2
- * @since 1.0.0
2
+ * The `OpenAiConfig` module provides shared configuration for clients that
3
+ * talk to OpenAI-compatible APIs. It is used to customize the HTTP client
4
+ * wiring around a provider without changing the higher-level model,
5
+ * embeddings, or tool-calling APIs that consume the client.
6
+ *
7
+ * **Common tasks**
8
+ *
9
+ * - Install a client transform with {@link withClientTransform}
10
+ * - Add provider-specific HTTP behavior, such as headers, retries, proxies, or
11
+ * instrumentation
12
+ * - Read the active configuration from the Effect context when implementing
13
+ * OpenAI-compatible integrations
14
+ *
15
+ * **Gotchas**
16
+ *
17
+ * - The transform receives and returns an `HttpClient`, so it should preserve
18
+ * the existing client behavior unless it intentionally replaces it
19
+ * - Configuration is provided through Effect context and is scoped to the
20
+ * effect that receives the service
21
+ *
22
+ * @since 4.0.0
3
23
  */
24
+ import * as Context from "effect/Context";
4
25
  import * as Effect from "effect/Effect";
5
26
  import { dual } from "effect/Function";
6
- import * as ServiceMap from "effect/ServiceMap";
7
27
  /**
8
- * @since 1.0.0
28
+ * Context service used to carry OpenAI-compatible client configuration for the
29
+ * current Effect scope.
30
+ *
9
31
  * @category services
32
+ * @since 4.0.0
10
33
  */
11
- export class OpenAiConfig extends /*#__PURE__*/ServiceMap.Service()("@effect/ai-openai-compat/OpenAiConfig") {
34
+ export class OpenAiConfig extends /*#__PURE__*/Context.Service()("@effect/ai-openai-compat/OpenAiConfig") {
12
35
  /**
13
- * @since 1.0.0
36
+ * Gets the configured OpenAI-compatible service from the current context when present.
37
+ *
38
+ * @since 4.0.0
14
39
  */
15
- static getOrUndefined = /*#__PURE__*/Effect.map(/*#__PURE__*/Effect.services(), context => context.mapUnsafe.get(OpenAiConfig.key));
40
+ static getOrUndefined = /*#__PURE__*/Effect.map(/*#__PURE__*/Effect.context(), context => context.mapUnsafe.get(OpenAiConfig.key));
16
41
  }
17
42
  /**
18
- * @since 1.0.0
43
+ * Provides an HTTP client transform for the supplied effect.
44
+ *
45
+ * **When to use**
46
+ *
47
+ * Use this to add provider-specific OpenAI-compatible HTTP behavior, such as
48
+ * headers, retries, instrumentation, or proxy routing.
49
+ *
50
+ * **Details**
51
+ *
52
+ * OpenAI-compatible provider services read the transform from the
53
+ * `OpenAiConfig` context.
54
+ *
19
55
  * @category configuration
56
+ * @since 4.0.0
20
57
  */
21
58
  export const withClientTransform = /*#__PURE__*/dual(2, (self, transformClient) => Effect.flatMap(OpenAiConfig.getOrUndefined, config => Effect.provideService(self, OpenAiConfig, {
22
59
  ...config,
@@ -1 +1 @@
1
- {"version":3,"file":"OpenAiConfig.js","names":["Effect","dual","ServiceMap","OpenAiConfig","Service","getOrUndefined","map","services","context","mapUnsafe","get","key","withClientTransform","self","transformClient","flatMap","config","provideService"],"sources":["../src/OpenAiConfig.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,YAAa,sBAAQD,UAAU,CAACE,OAAO,EAGjD,CAAC,uCAAuC,CAAC;EAC1C;;;EAGA,OAAgBC,cAAc,gBAA2DL,MAAM,CAACM,GAAG,cACjGN,MAAM,CAACO,QAAQ,EAAS,EACvBC,OAAO,IAAKA,OAAO,CAACC,SAAS,CAACC,GAAG,CAACP,YAAY,CAACQ,GAAG,CAAC,CACrD;;AAgBH;;;;AAIA,OAAO,MAAMC,mBAAmB,gBAc5BX,IAAI,CAAC,CAAC,EAAE,CACVY,IAA4B,EAC5BC,eAAmD,KAEnDd,MAAM,CAACe,OAAO,CACZZ,YAAY,CAACE,cAAc,EAC1BW,MAAM,IAAKhB,MAAM,CAACiB,cAAc,CAACJ,IAAI,EAAEV,YAAY,EAAE;EAAE,GAAGa,MAAM;EAAEF;AAAe,CAAE,CAAC,CACtF,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"OpenAiConfig.js","names":["Context","Effect","dual","OpenAiConfig","Service","getOrUndefined","map","context","mapUnsafe","get","key","withClientTransform","self","transformClient","flatMap","config","provideService"],"sources":["../src/OpenAiConfig.ts"],"sourcesContent":[null],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;AAuBA,OAAO,KAAKA,OAAO,MAAM,gBAAgB;AACzC,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,SAASC,IAAI,QAAQ,iBAAiB;AAGtC;;;;;;;AAOA,OAAM,MAAOC,YAAa,sBAAQH,OAAO,CAACI,OAAO,EAG9C,CAAC,uCAAuC,CAAC;EAC1C;;;;;EAKA,OAAgBC,cAAc,gBAA2DJ,MAAM,CAACK,GAAG,cACjGL,MAAM,CAACM,OAAO,EAAS,EACtBA,OAAO,IAAKA,OAAO,CAACC,SAAS,CAACC,GAAG,CAACN,YAAY,CAACO,GAAG,CAAC,CACrD;;AAqBH;;;;;;;;;;;;;;;;AAgBA,OAAO,MAAMC,mBAAmB,gBAsC5BT,IAAI,CAAC,CAAC,EAAE,CACVU,IAA4B,EAC5BC,eAAmD,KAEnDZ,MAAM,CAACa,OAAO,CACZX,YAAY,CAACE,cAAc,EAC1BU,MAAM,IAAKd,MAAM,CAACe,cAAc,CAACJ,IAAI,EAAET,YAAY,EAAE;EAAE,GAAGY,MAAM;EAAEF;AAAe,CAAE,CAAC,CACtF,CAAC","ignoreList":[]}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * OpenAI Embedding Model implementation.
3
+ *
4
+ * Provides an EmbeddingModel implementation for OpenAI-compatible embeddings APIs.
5
+ *
6
+ * @since 4.0.0
7
+ */
8
+ import * as Context from "effect/Context";
9
+ import * as Effect from "effect/Effect";
10
+ import * as Layer from "effect/Layer";
11
+ import * as EmbeddingModel from "effect/unstable/ai/EmbeddingModel";
12
+ import * as AiModel from "effect/unstable/ai/Model";
13
+ import { OpenAiClient } from "./OpenAiClient.ts";
14
+ /**
15
+ * A model identifier accepted by an OpenAI-compatible embeddings endpoint.
16
+ *
17
+ * @category models
18
+ * @since 4.0.0
19
+ */
20
+ export type Model = string;
21
+ declare const Config_base: Context.ServiceClass<Config, "@effect/ai-openai-compat/OpenAiEmbeddingModel/Config", {
22
+ readonly [x: string]: unknown;
23
+ readonly model?: string;
24
+ readonly user?: string | undefined | undefined;
25
+ readonly encoding_format?: "float" | "base64" | undefined | undefined;
26
+ readonly dimensions?: number | undefined | undefined;
27
+ }>;
28
+ /**
29
+ * Service definition for OpenAI embedding model configuration.
30
+ *
31
+ * @category context
32
+ * @since 4.0.0
33
+ */
34
+ export declare class Config extends Config_base {
35
+ }
36
+ /**
37
+ * Creates an OpenAI-compatible embedding model that can be used with
38
+ * `AiModel.provide`.
39
+ *
40
+ * @category constructors
41
+ * @since 4.0.0
42
+ */
43
+ export declare const model: (model: string, options: {
44
+ readonly dimensions: number;
45
+ readonly config?: Omit<typeof Config.Service, "model" | "dimensions">;
46
+ }) => AiModel.Model<"openai", EmbeddingModel.EmbeddingModel | EmbeddingModel.Dimensions, OpenAiClient>;
47
+ /**
48
+ * Creates an OpenAI embedding model service.
49
+ *
50
+ * @category constructors
51
+ * @since 4.0.0
52
+ */
53
+ export declare const make: (args_0: {
54
+ readonly model: string;
55
+ readonly config?: Omit<typeof Config.Service, "model"> | undefined;
56
+ }) => Effect.Effect<EmbeddingModel.Service, never, OpenAiClient>;
57
+ /**
58
+ * Creates a layer for the OpenAI embedding model.
59
+ *
60
+ * @category layers
61
+ * @since 4.0.0
62
+ */
63
+ export declare const layer: (options: {
64
+ readonly model: string;
65
+ readonly config?: Omit<typeof Config.Service, "model"> | undefined;
66
+ }) => Layer.Layer<EmbeddingModel.EmbeddingModel, never, OpenAiClient>;
67
+ /**
68
+ * Provides config overrides for OpenAI embedding model operations.
69
+ *
70
+ * @category configuration
71
+ * @since 4.0.0
72
+ */
73
+ export declare const withConfigOverride: {
74
+ /**
75
+ * Provides config overrides for OpenAI embedding model operations.
76
+ *
77
+ * @category configuration
78
+ * @since 4.0.0
79
+ */
80
+ (overrides: typeof Config.Service): <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, Exclude<R, Config>>;
81
+ /**
82
+ * Provides config overrides for OpenAI embedding model operations.
83
+ *
84
+ * @category configuration
85
+ * @since 4.0.0
86
+ */
87
+ <A, E, R>(self: Effect.Effect<A, E, R>, overrides: typeof Config.Service): Effect.Effect<A, E, Exclude<R, Config>>;
88
+ };
89
+ export {};
90
+ //# sourceMappingURL=OpenAiEmbeddingModel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OpenAiEmbeddingModel.d.ts","sourceRoot":"","sources":["../src/OpenAiEmbeddingModel.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAGrC,OAAO,KAAK,cAAc,MAAM,mCAAmC,CAAA;AACnE,OAAO,KAAK,OAAO,MAAM,0BAA0B,CAAA;AAEnD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAEhD;;;;;GAKG;AACH,MAAM,MAAM,KAAK,GAAG,MAAM,CAAA;;;;;;;;AAE1B;;;;;GAKG;AACH,qBAAa,MAAO,SAAQ,WAa+B;CAAG;AAE9D;;;;;;GAMG;AACH,eAAO,MAAM,KAAK,GAChB,OAAO,MAAM,EACb,SAAS;IACP,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,CAAC,CAAA;CACtE,KACA,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,cAAc,CAAC,cAAc,GAAG,cAAc,CAAC,UAAU,EAAE,YAAY,CAc/F,CAAA;AAEH;;;;;GAKG;AACH,eAAO,MAAM,IAAI;oBACC,MAAM;sBACJ,IAAI,CAAC,OAAO,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,SAAS;gEAgBlE,CAAA;AAEF;;;;;GAKG;AACH,eAAO,MAAM,KAAK,GAAI,SAAS;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,SAAS,CAAA;CACnE,KAAG,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,EAAE,KAAK,EAAE,YAAY,CACN,CAAA;AAE5D;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,EAAE;IAC/B;;;;;OAKG;IACH,CAAC,SAAS,EAAE,OAAO,MAAM,CAAC,OAAO,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,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAA;IACtH;;;;;OAKG;IACH,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAA;CAwBhH,CAAA"}
@@ -0,0 +1,122 @@
1
+ /**
2
+ * OpenAI Embedding Model implementation.
3
+ *
4
+ * Provides an EmbeddingModel implementation for OpenAI-compatible embeddings APIs.
5
+ *
6
+ * @since 4.0.0
7
+ */
8
+ import * as Context from "effect/Context";
9
+ import * as Effect from "effect/Effect";
10
+ import { dual } from "effect/Function";
11
+ import * as Layer from "effect/Layer";
12
+ import * as AiError from "effect/unstable/ai/AiError";
13
+ import * as EmbeddingModel from "effect/unstable/ai/EmbeddingModel";
14
+ import * as AiModel from "effect/unstable/ai/Model";
15
+ import { OpenAiClient } from "./OpenAiClient.js";
16
+ /**
17
+ * Service definition for OpenAI embedding model configuration.
18
+ *
19
+ * @category context
20
+ * @since 4.0.0
21
+ */
22
+ export class Config extends /*#__PURE__*/Context.Service()("@effect/ai-openai-compat/OpenAiEmbeddingModel/Config") {}
23
+ /**
24
+ * Creates an OpenAI-compatible embedding model that can be used with
25
+ * `AiModel.provide`.
26
+ *
27
+ * @category constructors
28
+ * @since 4.0.0
29
+ */
30
+ export const model = (model, options) => AiModel.make("openai", model, Layer.merge(layer({
31
+ model,
32
+ config: {
33
+ ...options.config,
34
+ dimensions: options.dimensions
35
+ }
36
+ }), Layer.succeed(EmbeddingModel.Dimensions, options.dimensions)));
37
+ /**
38
+ * Creates an OpenAI embedding model service.
39
+ *
40
+ * @category constructors
41
+ * @since 4.0.0
42
+ */
43
+ export const make = /*#__PURE__*/Effect.fnUntraced(function* ({
44
+ model,
45
+ config: providerConfig
46
+ }) {
47
+ const client = yield* OpenAiClient;
48
+ const makeConfig = Effect.gen(function* () {
49
+ const services = yield* Effect.context();
50
+ return {
51
+ model,
52
+ ...providerConfig,
53
+ ...services.mapUnsafe.get(Config.key)
54
+ };
55
+ });
56
+ return yield* EmbeddingModel.make({
57
+ embedMany: Effect.fnUntraced(function* ({
58
+ inputs
59
+ }) {
60
+ const config = yield* makeConfig;
61
+ const response = yield* client.createEmbedding({
62
+ ...config,
63
+ input: inputs
64
+ });
65
+ return yield* mapProviderResponse(inputs.length, response);
66
+ })
67
+ });
68
+ });
69
+ /**
70
+ * Creates a layer for the OpenAI embedding model.
71
+ *
72
+ * @category layers
73
+ * @since 4.0.0
74
+ */
75
+ export const layer = options => Layer.effect(EmbeddingModel.EmbeddingModel, make(options));
76
+ /**
77
+ * Provides config overrides for OpenAI embedding model operations.
78
+ *
79
+ * @category configuration
80
+ * @since 4.0.0
81
+ */
82
+ export const withConfigOverride = /*#__PURE__*/dual(2, (self, overrides) => Effect.flatMap(Effect.serviceOption(Config), config => Effect.provideService(self, Config, {
83
+ ...(config._tag === "Some" ? config.value : {}),
84
+ ...overrides
85
+ })));
86
+ const mapProviderResponse = (inputLength, response) => {
87
+ if (response.data.length !== inputLength) {
88
+ return Effect.fail(invalidOutput(`Provider returned ${response.data.length} embeddings but expected ${inputLength}`));
89
+ }
90
+ const results = new Array(inputLength);
91
+ const seen = new Set();
92
+ for (const entry of response.data) {
93
+ if (!Number.isInteger(entry.index) || entry.index < 0 || entry.index >= inputLength) {
94
+ return Effect.fail(invalidOutput(`Provider returned invalid embedding index: ${entry.index}`));
95
+ }
96
+ if (seen.has(entry.index)) {
97
+ return Effect.fail(invalidOutput(`Provider returned duplicate embedding index: ${entry.index}`));
98
+ }
99
+ if (!Array.isArray(entry.embedding)) {
100
+ return Effect.fail(invalidOutput(`Provider returned non-vector embedding at index ${entry.index}`));
101
+ }
102
+ seen.add(entry.index);
103
+ results[entry.index] = [...entry.embedding];
104
+ }
105
+ if (seen.size !== inputLength) {
106
+ return Effect.fail(invalidOutput(`Provider returned embeddings for ${seen.size} inputs but expected ${inputLength}`));
107
+ }
108
+ return Effect.succeed({
109
+ results,
110
+ usage: {
111
+ inputTokens: response.usage?.prompt_tokens
112
+ }
113
+ });
114
+ };
115
+ const invalidOutput = description => AiError.make({
116
+ module: "OpenAiEmbeddingModel",
117
+ method: "embedMany",
118
+ reason: new AiError.InvalidOutputError({
119
+ description
120
+ })
121
+ });
122
+ //# sourceMappingURL=OpenAiEmbeddingModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OpenAiEmbeddingModel.js","names":["Context","Effect","dual","Layer","AiError","EmbeddingModel","AiModel","OpenAiClient","Config","Service","model","options","make","merge","layer","config","dimensions","succeed","Dimensions","fnUntraced","providerConfig","client","makeConfig","gen","services","context","mapUnsafe","get","key","embedMany","inputs","response","createEmbedding","input","mapProviderResponse","length","effect","withConfigOverride","self","overrides","flatMap","serviceOption","provideService","_tag","value","inputLength","data","fail","invalidOutput","results","Array","seen","Set","entry","Number","isInteger","index","has","isArray","embedding","add","size","usage","inputTokens","prompt_tokens","description","module","method","reason","InvalidOutputError"],"sources":["../src/OpenAiEmbeddingModel.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}