@effect/ai-openai-compat 4.0.0-beta.0

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 (42) hide show
  1. package/LICENSE +21 -0
  2. package/dist/OpenAiClient.d.ts +739 -0
  3. package/dist/OpenAiClient.d.ts.map +1 -0
  4. package/dist/OpenAiClient.js +170 -0
  5. package/dist/OpenAiClient.js.map +1 -0
  6. package/dist/OpenAiConfig.d.ts +47 -0
  7. package/dist/OpenAiConfig.d.ts.map +1 -0
  8. package/dist/OpenAiConfig.js +25 -0
  9. package/dist/OpenAiConfig.js.map +1 -0
  10. package/dist/OpenAiError.d.ts +93 -0
  11. package/dist/OpenAiError.d.ts.map +1 -0
  12. package/dist/OpenAiError.js +5 -0
  13. package/dist/OpenAiError.js.map +1 -0
  14. package/dist/OpenAiLanguageModel.d.ts +285 -0
  15. package/dist/OpenAiLanguageModel.d.ts.map +1 -0
  16. package/dist/OpenAiLanguageModel.js +1223 -0
  17. package/dist/OpenAiLanguageModel.js.map +1 -0
  18. package/dist/OpenAiTelemetry.d.ts +120 -0
  19. package/dist/OpenAiTelemetry.d.ts.map +1 -0
  20. package/dist/OpenAiTelemetry.js +35 -0
  21. package/dist/OpenAiTelemetry.js.map +1 -0
  22. package/dist/index.d.ts +35 -0
  23. package/dist/index.d.ts.map +1 -0
  24. package/dist/index.js +36 -0
  25. package/dist/index.js.map +1 -0
  26. package/dist/internal/errors.d.ts +2 -0
  27. package/dist/internal/errors.d.ts.map +1 -0
  28. package/dist/internal/errors.js +286 -0
  29. package/dist/internal/errors.js.map +1 -0
  30. package/dist/internal/utilities.d.ts +2 -0
  31. package/dist/internal/utilities.d.ts.map +1 -0
  32. package/dist/internal/utilities.js +25 -0
  33. package/dist/internal/utilities.js.map +1 -0
  34. package/package.json +62 -0
  35. package/src/OpenAiClient.ts +998 -0
  36. package/src/OpenAiConfig.ts +64 -0
  37. package/src/OpenAiError.ts +102 -0
  38. package/src/OpenAiLanguageModel.ts +1638 -0
  39. package/src/OpenAiTelemetry.ts +159 -0
  40. package/src/index.ts +41 -0
  41. package/src/internal/errors.ts +327 -0
  42. package/src/internal/utilities.ts +33 -0
@@ -0,0 +1,64 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+ import * as Effect from "effect/Effect"
5
+ import { dual } from "effect/Function"
6
+ import * as ServiceMap from "effect/ServiceMap"
7
+ import type { HttpClient } from "effect/unstable/http/HttpClient"
8
+
9
+ /**
10
+ * @since 1.0.0
11
+ * @category services
12
+ */
13
+ export class OpenAiConfig extends ServiceMap.Service<
14
+ OpenAiConfig,
15
+ OpenAiConfig.Service
16
+ >()("@effect/ai-openai-compat/OpenAiConfig") {
17
+ /**
18
+ * @since 1.0.0
19
+ */
20
+ static readonly getOrUndefined: Effect.Effect<typeof OpenAiConfig.Service | undefined> = Effect.map(
21
+ Effect.services<never>(),
22
+ (context) => context.mapUnsafe.get(OpenAiConfig.key)
23
+ )
24
+ }
25
+
26
+ /**
27
+ * @since 1.0.0
28
+ */
29
+ export declare namespace OpenAiConfig {
30
+ /**
31
+ * @since 1.0.
32
+ * @category models
33
+ */
34
+ export interface Service {
35
+ readonly transformClient?: ((client: HttpClient) => HttpClient) | undefined
36
+ }
37
+ }
38
+
39
+ /**
40
+ * @since 1.0.0
41
+ * @category configuration
42
+ */
43
+ export const withClientTransform: {
44
+ /**
45
+ * @since 1.0.0
46
+ * @category configuration
47
+ */
48
+ (transform: (client: HttpClient) => HttpClient): <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>
49
+ /**
50
+ * @since 1.0.0
51
+ * @category configuration
52
+ */
53
+ <A, E, R>(
54
+ self: Effect.Effect<A, E, R>,
55
+ transform: (client: HttpClient) => HttpClient
56
+ ): Effect.Effect<A, E, R>
57
+ } = dual(2, <A, E, R>(
58
+ self: Effect.Effect<A, E, R>,
59
+ transformClient: (client: HttpClient) => HttpClient
60
+ ) =>
61
+ Effect.flatMap(
62
+ OpenAiConfig.getOrUndefined,
63
+ (config) => Effect.provideService(self, OpenAiConfig, { ...config, transformClient })
64
+ ))
@@ -0,0 +1,102 @@
1
+ /**
2
+ * @since 1.0.0
3
+ */
4
+
5
+ /**
6
+ * OpenAI-specific error metadata fields.
7
+ *
8
+ * @since 1.0.0
9
+ * @category models
10
+ */
11
+ export type OpenAiErrorMetadata = {
12
+ /**
13
+ * The OpenAI error code returned by the API.
14
+ */
15
+ readonly errorCode: string | null
16
+ /**
17
+ * The OpenAI error type returned by the API.
18
+ */
19
+ readonly errorType: string | null
20
+ /**
21
+ * The unique request ID for debugging with OpenAI support.
22
+ */
23
+ readonly requestId: string | null
24
+ }
25
+
26
+ /**
27
+ * OpenAI-specific rate limit metadata fields.
28
+ *
29
+ * Extends base error metadata with rate limit specific information from
30
+ * OpenAI's rate limit headers.
31
+ *
32
+ * @since 1.0.0
33
+ * @category models
34
+ */
35
+ export type OpenAiRateLimitMetadata = OpenAiErrorMetadata & {
36
+ /**
37
+ * The rate limit type (e.g. "requests", "tokens").
38
+ */
39
+ readonly limit: string | null
40
+ /**
41
+ * Number of remaining requests in the current window.
42
+ */
43
+ readonly remaining: number | null
44
+ /**
45
+ * Time until the request rate limit resets.
46
+ */
47
+ readonly resetRequests: string | null
48
+ /**
49
+ * Time until the token rate limit resets.
50
+ */
51
+ readonly resetTokens: string | null
52
+ }
53
+
54
+ declare module "effect/unstable/ai/AiError" {
55
+ export interface RateLimitError {
56
+ readonly metadata: {
57
+ readonly openai?: OpenAiRateLimitMetadata | null
58
+ }
59
+ }
60
+
61
+ export interface QuotaExhaustedError {
62
+ readonly metadata: {
63
+ readonly openai?: OpenAiErrorMetadata | null
64
+ }
65
+ }
66
+
67
+ export interface AuthenticationError {
68
+ readonly metadata: {
69
+ readonly openai?: OpenAiErrorMetadata | null
70
+ }
71
+ }
72
+
73
+ export interface ContentPolicyError {
74
+ readonly metadata: {
75
+ readonly openai?: OpenAiErrorMetadata | null
76
+ }
77
+ }
78
+
79
+ export interface InvalidRequestError {
80
+ readonly metadata: {
81
+ readonly openai?: OpenAiErrorMetadata | null
82
+ }
83
+ }
84
+
85
+ export interface InternalProviderError {
86
+ readonly metadata: {
87
+ readonly openai?: OpenAiErrorMetadata | null
88
+ }
89
+ }
90
+
91
+ export interface InvalidOutputError {
92
+ readonly metadata: {
93
+ readonly openai?: OpenAiErrorMetadata | null
94
+ }
95
+ }
96
+
97
+ export interface UnknownError {
98
+ readonly metadata: {
99
+ readonly openai?: OpenAiErrorMetadata | null
100
+ }
101
+ }
102
+ }