@effect/ai-openai 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 (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 +81 -25
  6. package/dist/OpenAiClient.d.ts.map +1 -1
  7. package/dist/OpenAiClient.js +220 -39
  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 +45 -10
  14. package/dist/OpenAiConfig.d.ts.map +1 -1
  15. package/dist/OpenAiConfig.js +31 -7
  16. package/dist/OpenAiConfig.js.map +1 -1
  17. package/dist/OpenAiEmbeddingModel.d.ts +89 -0
  18. package/dist/OpenAiEmbeddingModel.d.ts.map +1 -0
  19. package/dist/OpenAiEmbeddingModel.js +121 -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 +250 -57
  25. package/dist/OpenAiLanguageModel.d.ts.map +1 -1
  26. package/dist/OpenAiLanguageModel.js +311 -160
  27. package/dist/OpenAiLanguageModel.js.map +1 -1
  28. package/dist/OpenAiSchema.d.ts +2029 -0
  29. package/dist/OpenAiSchema.d.ts.map +1 -0
  30. package/dist/OpenAiSchema.js +591 -0
  31. package/dist/OpenAiSchema.js.map +1 -0
  32. package/dist/OpenAiTelemetry.d.ts +31 -18
  33. package/dist/OpenAiTelemetry.d.ts.map +1 -1
  34. package/dist/OpenAiTelemetry.js +6 -4
  35. package/dist/OpenAiTelemetry.js.map +1 -1
  36. package/dist/OpenAiTool.d.ts +56 -67
  37. package/dist/OpenAiTool.d.ts.map +1 -1
  38. package/dist/OpenAiTool.js +33 -44
  39. package/dist/OpenAiTool.js.map +1 -1
  40. package/dist/index.d.ts +42 -8
  41. package/dist/index.d.ts.map +1 -1
  42. package/dist/index.js +42 -8
  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 +396 -90
  49. package/src/OpenAiClientGenerated.ts +202 -0
  50. package/src/OpenAiConfig.ts +46 -11
  51. package/src/OpenAiEmbeddingModel.ts +207 -0
  52. package/src/OpenAiError.ts +170 -35
  53. package/src/OpenAiLanguageModel.ts +633 -157
  54. package/src/OpenAiSchema.ts +984 -0
  55. package/src/OpenAiTelemetry.ts +32 -19
  56. package/src/OpenAiTool.ts +34 -45
  57. package/src/index.ts +45 -8
  58. package/src/internal/errors.ts +6 -4
@@ -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"}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * @since 4.0.0
3
+ */
4
+ import * as Array from "effect/Array";
5
+ import * as Context from "effect/Context";
6
+ import * as Effect from "effect/Effect";
7
+ import { identity } from "effect/Function";
8
+ import * as Function from "effect/Function";
9
+ import * as Layer from "effect/Layer";
10
+ import * as Predicate from "effect/Predicate";
11
+ import * as Redacted from "effect/Redacted";
12
+ import * as Headers from "effect/unstable/http/Headers";
13
+ import * as HttpClient from "effect/unstable/http/HttpClient";
14
+ import * as HttpClientRequest from "effect/unstable/http/HttpClientRequest";
15
+ import * as Generated from "./Generated.js";
16
+ import { OpenAiConfig } from "./OpenAiConfig.js";
17
+ // =============================================================================
18
+ // Service Identifier
19
+ // =============================================================================
20
+ /**
21
+ * Service identifier for the generated OpenAI client.
22
+ *
23
+ * @since 4.0.0
24
+ * @category service
25
+ */
26
+ export class OpenAiClientGenerated extends /*#__PURE__*/Context.Service()("@effect/ai-openai/OpenAiClientGenerated") {}
27
+ const RedactedOpenAiHeaders = {
28
+ OpenAiOrganization: "OpenAI-Organization",
29
+ OpenAiProject: "OpenAI-Project"
30
+ };
31
+ // =============================================================================
32
+ // Constructor
33
+ // =============================================================================
34
+ /**
35
+ * Creates a generated OpenAI client service with the given options.
36
+ *
37
+ * @since 4.0.0
38
+ * @category constructors
39
+ */
40
+ export const make = /*#__PURE__*/Effect.fnUntraced(function* (options) {
41
+ const baseClient = yield* HttpClient.HttpClient;
42
+ const apiUrl = options.apiUrl ?? "https://api.openai.com/v1";
43
+ 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)), options.transformClient ? options.transformClient : identity);
44
+ return Generated.make(httpClient, {
45
+ transformClient: Effect.fnUntraced(function* (client) {
46
+ const config = yield* OpenAiConfig.getOrUndefined;
47
+ if (Predicate.isNotUndefined(config?.transformClient)) {
48
+ return config.transformClient(client);
49
+ }
50
+ return client;
51
+ })
52
+ });
53
+ }, /*#__PURE__*/Effect.updateService(Headers.CurrentRedactedNames, /*#__PURE__*/Array.appendAll(/*#__PURE__*/Object.values(RedactedOpenAiHeaders))));
54
+ // =============================================================================
55
+ // Layers
56
+ // =============================================================================
57
+ /**
58
+ * Creates a layer for the generated OpenAI client with the given options.
59
+ *
60
+ * @since 4.0.0
61
+ * @category layers
62
+ */
63
+ export const layer = options => Layer.effect(OpenAiClientGenerated, make(options));
64
+ /**
65
+ * Creates a layer for the generated OpenAI client, loading the requisite
66
+ * configuration via Effect's `Config` module.
67
+ *
68
+ * @since 4.0.0
69
+ * @category layers
70
+ */
71
+ export const layerConfig = options => Layer.effect(OpenAiClientGenerated, Effect.gen(function* () {
72
+ const apiKey = Predicate.isNotUndefined(options?.apiKey) ? yield* options.apiKey : undefined;
73
+ const apiUrl = Predicate.isNotUndefined(options?.apiUrl) ? yield* options.apiUrl : undefined;
74
+ const organizationId = Predicate.isNotUndefined(options?.organizationId) ? yield* options.organizationId : undefined;
75
+ const projectId = Predicate.isNotUndefined(options?.projectId) ? yield* options.projectId : undefined;
76
+ return yield* make({
77
+ apiKey,
78
+ apiUrl,
79
+ organizationId,
80
+ projectId,
81
+ transformClient: options?.transformClient
82
+ });
83
+ }));
84
+ //# sourceMappingURL=OpenAiClientGenerated.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OpenAiClientGenerated.js","names":["Array","Context","Effect","identity","Function","Layer","Predicate","Redacted","Headers","HttpClient","HttpClientRequest","Generated","OpenAiConfig","OpenAiClientGenerated","Service","RedactedOpenAiHeaders","OpenAiOrganization","OpenAiProject","make","fnUntraced","options","baseClient","apiUrl","httpClient","pipe","mapRequest","flow","prependUrl","apiKey","bearerToken","value","organizationId","setHeader","projectId","acceptJson","transformClient","client","config","getOrUndefined","isNotUndefined","updateService","CurrentRedactedNames","appendAll","Object","values","layer","effect","layerConfig","gen","undefined"],"sources":["../src/OpenAiClientGenerated.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1,45 +1,80 @@
1
1
  /**
2
- * @since 1.0.0
2
+ * The `OpenAiConfig` module provides contextual configuration for the
3
+ * `@effect/ai-openai` integration. It is used to customize how OpenAI clients
4
+ * are built and interpreted without threading configuration through every API
5
+ * call manually.
6
+ *
7
+ * The primary use case is installing an HTTP client transform with
8
+ * {@link withClientTransform}. This lets applications adapt the underlying
9
+ * OpenAI HTTP client for cross-cutting concerns such as custom middleware,
10
+ * instrumentation, proxying, or request policy changes while keeping the
11
+ * OpenAI service APIs unchanged.
12
+ *
13
+ * Configuration is scoped through Effect's context, so transforms only apply to
14
+ * the effect they are provided to and anything evaluated inside that scope.
15
+ * When multiple transforms are needed, compose them into a single
16
+ * `HttpClient => HttpClient` function before providing the configuration.
17
+ *
18
+ * @since 4.0.0
3
19
  */
20
+ import * as Context from "effect/Context";
4
21
  import * as Effect from "effect/Effect";
5
- import * as ServiceMap from "effect/ServiceMap";
6
22
  import type { HttpClient } from "effect/unstable/http/HttpClient";
7
- declare const OpenAiConfig_base: ServiceMap.ServiceClass<OpenAiConfig, "@effect/ai-openai/OpenAiConfig", OpenAiConfig.Service>;
23
+ declare const OpenAiConfig_base: Context.ServiceClass<OpenAiConfig, "@effect/ai-openai/OpenAiConfig", OpenAiConfig.Service>;
8
24
  /**
9
- * @since 1.0.0
25
+ * Context service carrying scoped OpenAI configuration for provider
26
+ * operations.
27
+ *
10
28
  * @category services
29
+ * @since 4.0.0
11
30
  */
12
31
  export declare class OpenAiConfig extends OpenAiConfig_base {
13
32
  /**
14
- * @since 1.0.0
33
+ * Gets the configured OpenAI service from the current context when present.
34
+ *
35
+ * @since 4.0.0
15
36
  */
16
37
  static readonly getOrUndefined: Effect.Effect<typeof OpenAiConfig.Service | undefined>;
17
38
  }
18
39
  /**
19
- * @since 1.0.0
40
+ * Types used by the `OpenAiConfig` context service.
41
+ *
42
+ * @since 4.0.0
20
43
  */
21
44
  export declare namespace OpenAiConfig {
22
45
  /**
23
- * @since 1.0.
46
+ * Configuration values read by OpenAI provider operations when executing
47
+ * requests.
48
+ *
24
49
  * @category models
50
+ * @since 4.0.0
25
51
  */
26
52
  interface Service {
27
53
  readonly transformClient?: ((client: HttpClient) => HttpClient) | undefined;
28
54
  }
29
55
  }
30
56
  /**
31
- * @since 1.0.0
57
+ * Provides a scoped transform for the OpenAI HTTP client used by provider
58
+ * operations.
59
+ *
32
60
  * @category configuration
61
+ * @since 4.0.0
33
62
  */
34
63
  export declare const withClientTransform: {
35
64
  /**
36
- * @since 1.0.0
65
+ * Provides a scoped transform for the OpenAI HTTP client used by provider
66
+ * operations.
67
+ *
37
68
  * @category configuration
69
+ * @since 4.0.0
38
70
  */
39
71
  (transform: (client: HttpClient) => HttpClient): <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
40
72
  /**
41
- * @since 1.0.0
73
+ * Provides a scoped transform for the OpenAI HTTP client used by provider
74
+ * operations.
75
+ *
42
76
  * @category configuration
77
+ * @since 4.0.0
43
78
  */
44
79
  <A, E, R>(self: Effect.Effect<A, E, R>, transform: (client: HttpClient) => HttpClient): Effect.Effect<A, E, R>;
45
80
  };
@@ -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,iBAGG;IACnC;;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;;;;;;;;;;;;;;;;;;GAkBG;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,iBAGG;IACnC;;;;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;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,EAAE;IAChC;;;;;;OAMG;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;;;;;;OAMG;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,46 @@
1
1
  /**
2
- * @since 1.0.0
2
+ * The `OpenAiConfig` module provides contextual configuration for the
3
+ * `@effect/ai-openai` integration. It is used to customize how OpenAI clients
4
+ * are built and interpreted without threading configuration through every API
5
+ * call manually.
6
+ *
7
+ * The primary use case is installing an HTTP client transform with
8
+ * {@link withClientTransform}. This lets applications adapt the underlying
9
+ * OpenAI HTTP client for cross-cutting concerns such as custom middleware,
10
+ * instrumentation, proxying, or request policy changes while keeping the
11
+ * OpenAI service APIs unchanged.
12
+ *
13
+ * Configuration is scoped through Effect's context, so transforms only apply to
14
+ * the effect they are provided to and anything evaluated inside that scope.
15
+ * When multiple transforms are needed, compose them into a single
16
+ * `HttpClient => HttpClient` function before providing the configuration.
17
+ *
18
+ * @since 4.0.0
3
19
  */
20
+ import * as Context from "effect/Context";
4
21
  import * as Effect from "effect/Effect";
5
22
  import { dual } from "effect/Function";
6
- import * as ServiceMap from "effect/ServiceMap";
7
23
  /**
8
- * @since 1.0.0
24
+ * Context service carrying scoped OpenAI configuration for provider
25
+ * operations.
26
+ *
9
27
  * @category services
28
+ * @since 4.0.0
10
29
  */
11
- export class OpenAiConfig extends /*#__PURE__*/ServiceMap.Service()("@effect/ai-openai/OpenAiConfig") {
30
+ export class OpenAiConfig extends /*#__PURE__*/Context.Service()("@effect/ai-openai/OpenAiConfig") {
12
31
  /**
13
- * @since 1.0.0
32
+ * Gets the configured OpenAI service from the current context when present.
33
+ *
34
+ * @since 4.0.0
14
35
  */
15
- static getOrUndefined = /*#__PURE__*/Effect.map(/*#__PURE__*/Effect.services(), context => context.mapUnsafe.get(OpenAiConfig.key));
36
+ static getOrUndefined = /*#__PURE__*/Effect.map(/*#__PURE__*/Effect.context(), context => context.mapUnsafe.get(OpenAiConfig.key));
16
37
  }
17
38
  /**
18
- * @since 1.0.0
39
+ * Provides a scoped transform for the OpenAI HTTP client used by provider
40
+ * operations.
41
+ *
19
42
  * @category configuration
43
+ * @since 4.0.0
20
44
  */
21
45
  export const withClientTransform = /*#__PURE__*/dual(2, (self, transformClient) => Effect.flatMap(OpenAiConfig.getOrUndefined, config => Effect.provideService(self, OpenAiConfig, {
22
46
  ...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,gCAAgC,CAAC;EACnC;;;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;;;;;;;;;;;;;;;;;;;AAmBA,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,gCAAgC,CAAC;EACnC;;;;;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;;;;;;;AAOA,OAAO,MAAMC,mBAAmB,gBAoB5BT,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,89 @@
1
+ /**
2
+ * OpenAI Embedding Model implementation.
3
+ *
4
+ * Provides an EmbeddingModel implementation for OpenAI's embeddings API.
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
+ * Model identifiers supported by OpenAI's embeddings API.
16
+ *
17
+ * @category models
18
+ * @since 4.0.0
19
+ */
20
+ export type Model = "text-embedding-ada-002" | "text-embedding-3-small" | "text-embedding-3-large";
21
+ declare const Config_base: Context.ServiceClass<Config, "@effect/ai-openai/OpenAiEmbeddingModel/Config", {
22
+ readonly [x: string]: unknown;
23
+ readonly encoding_format?: "float" | "base64";
24
+ readonly dimensions?: number;
25
+ readonly user?: string;
26
+ readonly model?: string;
27
+ }>;
28
+ /**
29
+ * Service definition for OpenAI embedding model configuration.
30
+ *
31
+ * @category services
32
+ * @since 4.0.0
33
+ */
34
+ export declare class Config extends Config_base {
35
+ }
36
+ /**
37
+ * Creates an `AiModel` for an OpenAI embedding model with its configured vector dimensions.
38
+ *
39
+ * @category constructors
40
+ * @since 4.0.0
41
+ */
42
+ export declare const model: (model: (string & {}) | Model, options: {
43
+ readonly dimensions: number;
44
+ readonly config?: Omit<typeof Config.Service, "model" | "dimensions">;
45
+ }) => AiModel.Model<"openai", EmbeddingModel.EmbeddingModel | EmbeddingModel.Dimensions, OpenAiClient>;
46
+ /**
47
+ * Creates an OpenAI embedding model service.
48
+ *
49
+ * @category constructors
50
+ * @since 4.0.0
51
+ */
52
+ export declare const make: (args_0: {
53
+ readonly model: (string & {}) | Model;
54
+ readonly config?: Omit<typeof Config.Service, "model"> | undefined;
55
+ }) => Effect.Effect<EmbeddingModel.Service, never, OpenAiClient>;
56
+ /**
57
+ * Creates a layer for the OpenAI embedding model.
58
+ *
59
+ * @category layers
60
+ * @since 4.0.0
61
+ */
62
+ export declare const layer: (options: {
63
+ readonly model: (string & {}) | Model;
64
+ readonly config?: Omit<typeof Config.Service, "model"> | undefined;
65
+ }) => Layer.Layer<EmbeddingModel.EmbeddingModel, never, OpenAiClient>;
66
+ /**
67
+ * Provides config overrides for OpenAI embedding model operations.
68
+ *
69
+ * @category configuration
70
+ * @since 4.0.0
71
+ */
72
+ export declare const withConfigOverride: {
73
+ /**
74
+ * Provides config overrides for OpenAI embedding model operations.
75
+ *
76
+ * @category configuration
77
+ * @since 4.0.0
78
+ */
79
+ (overrides: typeof Config.Service): <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, Exclude<R, Config>>;
80
+ /**
81
+ * Provides config overrides for OpenAI embedding model operations.
82
+ *
83
+ * @category configuration
84
+ * @since 4.0.0
85
+ */
86
+ <A, E, R>(self: Effect.Effect<A, E, R>, overrides: typeof Config.Service): Effect.Effect<A, E, Exclude<R, Config>>;
87
+ };
88
+ export {};
89
+ //# 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;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAGhD;;;;;GAKG;AACH,MAAM,MAAM,KAAK,GAAG,wBAAwB,GAAG,wBAAwB,GAAG,wBAAwB,CAAA;;;;;;;;AAElG;;;;;GAKG;AACH,qBAAa,MAAO,SAAQ,WAawB;CAAG;AAEvD;;;;;GAKG;AACH,eAAO,MAAM,KAAK,GAChB,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,KAAK,EAC5B,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,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,KAAK;sBACnB,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,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,KAAK,CAAA;IACrC,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,121 @@
1
+ /**
2
+ * OpenAI Embedding Model implementation.
3
+ *
4
+ * Provides an EmbeddingModel implementation for OpenAI's embeddings API.
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 services
20
+ * @since 4.0.0
21
+ */
22
+ export class Config extends /*#__PURE__*/Context.Service()("@effect/ai-openai/OpenAiEmbeddingModel/Config") {}
23
+ /**
24
+ * Creates an `AiModel` for an OpenAI embedding model with its configured vector dimensions.
25
+ *
26
+ * @category constructors
27
+ * @since 4.0.0
28
+ */
29
+ export const model = (model, options) => AiModel.make("openai", model, Layer.merge(layer({
30
+ model,
31
+ config: {
32
+ ...options.config,
33
+ dimensions: options.dimensions
34
+ }
35
+ }), Layer.succeed(EmbeddingModel.Dimensions, options.dimensions)));
36
+ /**
37
+ * Creates an OpenAI embedding model service.
38
+ *
39
+ * @category constructors
40
+ * @since 4.0.0
41
+ */
42
+ export const make = /*#__PURE__*/Effect.fnUntraced(function* ({
43
+ model,
44
+ config: providerConfig
45
+ }) {
46
+ const client = yield* OpenAiClient;
47
+ const makeConfig = Effect.gen(function* () {
48
+ const services = yield* Effect.context();
49
+ return {
50
+ model,
51
+ ...providerConfig,
52
+ ...services.mapUnsafe.get(Config.key)
53
+ };
54
+ });
55
+ return yield* EmbeddingModel.make({
56
+ embedMany: Effect.fnUntraced(function* ({
57
+ inputs
58
+ }) {
59
+ const config = yield* makeConfig;
60
+ const response = yield* client.createEmbedding({
61
+ ...config,
62
+ input: inputs
63
+ });
64
+ return yield* mapProviderResponse(inputs.length, response);
65
+ })
66
+ });
67
+ });
68
+ /**
69
+ * Creates a layer for the OpenAI embedding model.
70
+ *
71
+ * @category layers
72
+ * @since 4.0.0
73
+ */
74
+ export const layer = options => Layer.effect(EmbeddingModel.EmbeddingModel, make(options));
75
+ /**
76
+ * Provides config overrides for OpenAI embedding model operations.
77
+ *
78
+ * @category configuration
79
+ * @since 4.0.0
80
+ */
81
+ export const withConfigOverride = /*#__PURE__*/dual(2, (self, overrides) => Effect.flatMap(Effect.serviceOption(Config), config => Effect.provideService(self, Config, {
82
+ ...(config._tag === "Some" ? config.value : {}),
83
+ ...overrides
84
+ })));
85
+ const mapProviderResponse = (inputLength, response) => {
86
+ if (response.data.length !== inputLength) {
87
+ return Effect.fail(invalidOutput("Provider returned " + response.data.length + " embeddings but expected " + inputLength));
88
+ }
89
+ const results = new Array(inputLength);
90
+ const seen = new Set();
91
+ for (const entry of response.data) {
92
+ if (!Number.isInteger(entry.index) || entry.index < 0 || entry.index >= inputLength) {
93
+ return Effect.fail(invalidOutput("Provider returned invalid embedding index: " + entry.index));
94
+ }
95
+ if (seen.has(entry.index)) {
96
+ return Effect.fail(invalidOutput("Provider returned duplicate embedding index: " + entry.index));
97
+ }
98
+ if (!Array.isArray(entry.embedding)) {
99
+ return Effect.fail(invalidOutput("Provider returned non-vector embedding at index " + entry.index));
100
+ }
101
+ seen.add(entry.index);
102
+ results[entry.index] = [...entry.embedding];
103
+ }
104
+ if (seen.size !== inputLength) {
105
+ return Effect.fail(invalidOutput("Provider returned embeddings for " + seen.size + " inputs but expected " + inputLength));
106
+ }
107
+ return Effect.succeed({
108
+ results,
109
+ usage: {
110
+ inputTokens: response.usage?.prompt_tokens
111
+ }
112
+ });
113
+ };
114
+ const invalidOutput = description => AiError.make({
115
+ module: "OpenAiEmbeddingModel",
116
+ method: "embedMany",
117
+ reason: new AiError.InvalidOutputError({
118
+ description
119
+ })
120
+ });
121
+ //# 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":[]}