@effect/ai 0.14.1 → 0.16.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 (134) hide show
  1. package/AiEmbeddingModel/package.json +6 -0
  2. package/AiLanguageModel/package.json +6 -0
  3. package/AiTool/package.json +6 -0
  4. package/dist/cjs/AiChat.js +65 -86
  5. package/dist/cjs/AiChat.js.map +1 -1
  6. package/dist/cjs/{Embeddings.js → AiEmbeddingModel.js} +12 -12
  7. package/dist/cjs/AiEmbeddingModel.js.map +1 -0
  8. package/dist/cjs/AiError.js +8 -1
  9. package/dist/cjs/AiError.js.map +1 -1
  10. package/dist/cjs/AiInput.js +335 -248
  11. package/dist/cjs/AiInput.js.map +1 -1
  12. package/dist/cjs/AiLanguageModel.js +311 -0
  13. package/dist/cjs/AiLanguageModel.js.map +1 -0
  14. package/dist/cjs/AiModel.js +11 -5
  15. package/dist/cjs/AiModel.js.map +1 -1
  16. package/dist/cjs/AiPlan.js +10 -3
  17. package/dist/cjs/AiPlan.js.map +1 -1
  18. package/dist/cjs/AiResponse.js +481 -165
  19. package/dist/cjs/AiResponse.js.map +1 -1
  20. package/dist/cjs/AiTelemetry.js +10 -3
  21. package/dist/cjs/AiTelemetry.js.map +1 -1
  22. package/dist/cjs/AiTool.js +93 -0
  23. package/dist/cjs/AiTool.js.map +1 -0
  24. package/dist/cjs/AiToolkit.js +121 -98
  25. package/dist/cjs/AiToolkit.js.map +1 -1
  26. package/dist/cjs/Tokenizer.js +14 -16
  27. package/dist/cjs/Tokenizer.js.map +1 -1
  28. package/dist/cjs/index.js +7 -9
  29. package/dist/cjs/internal/aiPlan.js +6 -9
  30. package/dist/cjs/internal/aiPlan.js.map +1 -1
  31. package/dist/cjs/internal/common.js +22 -0
  32. package/dist/cjs/internal/common.js.map +1 -0
  33. package/dist/dts/AiChat.d.ts +58 -44
  34. package/dist/dts/AiChat.d.ts.map +1 -1
  35. package/dist/dts/{Embeddings.d.ts → AiEmbeddingModel.d.ts} +13 -14
  36. package/dist/dts/AiEmbeddingModel.d.ts.map +1 -0
  37. package/dist/dts/AiError.d.ts +4 -3
  38. package/dist/dts/AiError.d.ts.map +1 -1
  39. package/dist/dts/AiInput.d.ts +441 -146
  40. package/dist/dts/AiInput.d.ts.map +1 -1
  41. package/dist/dts/AiLanguageModel.d.ts +263 -0
  42. package/dist/dts/AiLanguageModel.d.ts.map +1 -0
  43. package/dist/dts/AiModel.d.ts +21 -20
  44. package/dist/dts/AiModel.d.ts.map +1 -1
  45. package/dist/dts/AiPlan.d.ts +90 -26
  46. package/dist/dts/AiPlan.d.ts.map +1 -1
  47. package/dist/dts/AiResponse.d.ts +711 -100
  48. package/dist/dts/AiResponse.d.ts.map +1 -1
  49. package/dist/dts/AiTelemetry.d.ts +175 -157
  50. package/dist/dts/AiTelemetry.d.ts.map +1 -1
  51. package/dist/dts/AiTool.d.ts +288 -0
  52. package/dist/dts/AiTool.d.ts.map +1 -0
  53. package/dist/dts/AiToolkit.d.ts +50 -111
  54. package/dist/dts/AiToolkit.d.ts.map +1 -1
  55. package/dist/dts/Tokenizer.d.ts +8 -6
  56. package/dist/dts/Tokenizer.d.ts.map +1 -1
  57. package/dist/dts/index.d.ts +8 -12
  58. package/dist/dts/index.d.ts.map +1 -1
  59. package/dist/dts/internal/common.d.ts +2 -0
  60. package/dist/dts/internal/common.d.ts.map +1 -0
  61. package/dist/esm/AiChat.js +62 -83
  62. package/dist/esm/AiChat.js.map +1 -1
  63. package/dist/esm/{Embeddings.js → AiEmbeddingModel.js} +10 -10
  64. package/dist/esm/AiEmbeddingModel.js.map +1 -0
  65. package/dist/esm/AiError.js +8 -1
  66. package/dist/esm/AiError.js.map +1 -1
  67. package/dist/esm/AiInput.js +316 -238
  68. package/dist/esm/AiInput.js.map +1 -1
  69. package/dist/esm/AiLanguageModel.js +300 -0
  70. package/dist/esm/AiLanguageModel.js.map +1 -0
  71. package/dist/esm/AiModel.js +11 -5
  72. package/dist/esm/AiModel.js.map +1 -1
  73. package/dist/esm/AiPlan.js +8 -2
  74. package/dist/esm/AiPlan.js.map +1 -1
  75. package/dist/esm/AiResponse.js +467 -162
  76. package/dist/esm/AiResponse.js.map +1 -1
  77. package/dist/esm/AiTelemetry.js +8 -2
  78. package/dist/esm/AiTelemetry.js.map +1 -1
  79. package/dist/esm/AiTool.js +82 -0
  80. package/dist/esm/AiTool.js.map +1 -0
  81. package/dist/esm/AiToolkit.js +118 -96
  82. package/dist/esm/AiToolkit.js.map +1 -1
  83. package/dist/esm/Tokenizer.js +14 -16
  84. package/dist/esm/Tokenizer.js.map +1 -1
  85. package/dist/esm/index.js +8 -12
  86. package/dist/esm/index.js.map +1 -1
  87. package/dist/esm/internal/aiPlan.js +4 -7
  88. package/dist/esm/internal/aiPlan.js.map +1 -1
  89. package/dist/esm/internal/common.js +14 -0
  90. package/dist/esm/internal/common.js.map +1 -0
  91. package/package.json +28 -36
  92. package/src/AiChat.ts +182 -207
  93. package/src/{Embeddings.ts → AiEmbeddingModel.ts} +19 -18
  94. package/src/AiError.ts +8 -1
  95. package/src/AiInput.ts +434 -313
  96. package/src/AiLanguageModel.ts +569 -0
  97. package/src/AiModel.ts +47 -29
  98. package/src/AiPlan.ts +102 -30
  99. package/src/AiResponse.ts +743 -187
  100. package/src/AiTelemetry.ts +214 -197
  101. package/src/AiTool.ts +496 -0
  102. package/src/AiToolkit.ts +200 -240
  103. package/src/Tokenizer.ts +18 -22
  104. package/src/index.ts +9 -14
  105. package/src/internal/aiPlan.ts +12 -14
  106. package/src/internal/common.ts +12 -0
  107. package/AiModels/package.json +0 -6
  108. package/AiRole/package.json +0 -6
  109. package/Completions/package.json +0 -6
  110. package/Embeddings/package.json +0 -6
  111. package/dist/cjs/AiModels.js +0 -54
  112. package/dist/cjs/AiModels.js.map +0 -1
  113. package/dist/cjs/AiRole.js +0 -106
  114. package/dist/cjs/AiRole.js.map +0 -1
  115. package/dist/cjs/Completions.js +0 -256
  116. package/dist/cjs/Completions.js.map +0 -1
  117. package/dist/cjs/Embeddings.js.map +0 -1
  118. package/dist/dts/AiModels.d.ts +0 -34
  119. package/dist/dts/AiModels.d.ts.map +0 -1
  120. package/dist/dts/AiRole.d.ts +0 -111
  121. package/dist/dts/AiRole.d.ts.map +0 -1
  122. package/dist/dts/Completions.d.ts +0 -128
  123. package/dist/dts/Completions.d.ts.map +0 -1
  124. package/dist/dts/Embeddings.d.ts.map +0 -1
  125. package/dist/esm/AiModels.js +0 -44
  126. package/dist/esm/AiModels.js.map +0 -1
  127. package/dist/esm/AiRole.js +0 -93
  128. package/dist/esm/AiRole.js.map +0 -1
  129. package/dist/esm/Completions.js +0 -245
  130. package/dist/esm/Completions.js.map +0 -1
  131. package/dist/esm/Embeddings.js.map +0 -1
  132. package/src/AiModels.ts +0 -77
  133. package/src/AiRole.ts +0 -122
  134. package/src/Completions.ts +0 -434
package/src/AiPlan.ts CHANGED
@@ -6,40 +6,38 @@ import type * as Effect from "effect/Effect"
6
6
  import type * as Option from "effect/Option"
7
7
  import type { Pipeable } from "effect/Pipeable"
8
8
  import type * as Schedule from "effect/Schedule"
9
+ import type * as Types from "effect/Types"
9
10
  import type * as Unify from "effect/Unify"
10
11
  import type * as AiModel from "./AiModel.js"
11
- import type { AiModels } from "./AiModels.js"
12
12
  import * as Internal from "./internal/aiPlan.js"
13
13
 
14
14
  /**
15
15
  * @since 1.0.0
16
- * @category type ids
16
+ * @category Type Ids
17
17
  */
18
18
  export const TypeId: unique symbol = Internal.TypeId
19
19
 
20
20
  /**
21
21
  * @since 1.0.0
22
- * @category type ids
22
+ * @category Type Ids
23
23
  */
24
24
  export type TypeId = typeof TypeId
25
25
 
26
26
  /**
27
27
  * @since 1.0.0
28
- * @category AiPlan
28
+ * @category Models
29
29
  */
30
- export interface AiPlan<in Error, in out Provides, in out Requires>
31
- extends Pipeable, AiPlan.Builder<Provides, Requires>
32
- {
30
+ export interface AiPlan<in Error, in out Provides, in out Requires> extends Pipeable, Builder<Provides, Requires> {
33
31
  readonly [TypeId]: TypeId
34
32
  readonly [Unify.typeSymbol]?: unknown
35
33
  readonly [Unify.unifySymbol]?: AiPlanUnify<this>
36
34
  readonly [Unify.ignoreSymbol]?: AiPlanUnifyIgnore
37
- readonly steps: NonEmptyReadonlyArray<AiPlan.Step<Error, Provides, Requires>>
35
+ readonly steps: NonEmptyReadonlyArray<Step<Error, Provides, Requires>>
38
36
  }
39
37
 
40
38
  /**
41
39
  * @since 1.0.0
42
- * @category Plan
40
+ * @category Models
43
41
  */
44
42
  export interface AiPlanUnify<A extends { [Unify.typeSymbol]?: any }> extends Effect.EffectUnify<A> {
45
43
  AiPlan?: () => Extract<A[Unify.typeSymbol], AiPlan<any, any, any>>
@@ -47,7 +45,7 @@ export interface AiPlanUnify<A extends { [Unify.typeSymbol]?: any }> extends Eff
47
45
 
48
46
  /**
49
47
  * @since 1.0.0
50
- * @category Plan
48
+ * @category Models
51
49
  */
52
50
  export interface AiPlanUnifyIgnore extends Effect.EffectUnifyIgnore {
53
51
  Effect?: true
@@ -55,45 +53,119 @@ export interface AiPlanUnifyIgnore extends Effect.EffectUnifyIgnore {
55
53
 
56
54
  /**
57
55
  * @since 1.0.0
56
+ * @category Models
58
57
  */
59
- export declare namespace AiPlan {
58
+ export type Builder<Provides, Requires> = Effect.Effect<Provider<Provides>, never, Requires>
59
+
60
+ /**
61
+ * @since 1.0.0
62
+ * @category Models
63
+ */
64
+ export interface Provider<Provides> {
65
+ readonly use: <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, Exclude<R, Provides>>
66
+ }
67
+
68
+ /**
69
+ * @since 1.0.0
70
+ * @category Models
71
+ */
72
+ export interface Step<Error, Provides, Requires> {
73
+ readonly model: AiModel.AiModel<Provides, Requires>
74
+ readonly check: Option.Option<(error: Error) => boolean | Effect.Effect<boolean>>
75
+ readonly schedule: Option.Option<Schedule.Schedule<any, Error, Requires>>
76
+ }
77
+
78
+ /**
79
+ * @since 1.0.0
80
+ */
81
+ export declare namespace Make {
60
82
  /**
61
83
  * @since 1.0.0
62
- * @category AiPlan
84
+ * @category Models
63
85
  */
64
- export type Builder<Provides, Requires> = Effect.Effect<Provider<Provides>, never, AiModels | Requires>
86
+ export type Base = {
87
+ readonly model: AiModel.AiModel<any, any>
88
+ readonly attempts?: number | undefined
89
+ readonly while?: ((error: any) => boolean | Effect.Effect<boolean, never, any>) | undefined
90
+ readonly schedule?: Schedule.Schedule<any, any, any> | undefined
91
+ }
65
92
 
66
93
  /**
67
94
  * @since 1.0.0
68
- * @category AiPlan
95
+ * @category Models
69
96
  */
70
- export interface Provider<Provides> {
71
- readonly provide: <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, Exclude<R, Provides>>
72
- }
97
+ export type EW<Plan extends Base> = Plan extends { readonly while: (error: infer X) => any } ? X : never
73
98
 
74
99
  /**
75
100
  * @since 1.0.0
76
- * @category AiPlan
101
+ * @category Models
77
102
  */
78
- export interface Step<Error, Provides, Requires> {
79
- readonly model: AiModel.AiModel<Provides, Requires>
80
- readonly check: Option.Option<(error: Error) => boolean | Effect.Effect<boolean>>
81
- readonly schedule: Option.Option<Schedule.Schedule<any, Error, Requires>>
82
- }
103
+ export type ES<Plan extends Base> = Plan extends { readonly schedule: Schedule.Schedule<any, infer X, any> } ? X
104
+ : never
105
+
106
+ /**
107
+ * @since 1.0.0
108
+ * @category Models
109
+ */
110
+ export type Provides<Plan extends Base> = Plan extends { readonly model: AiModel.AiModel<infer X, any> } ? X : never
111
+
112
+ /**
113
+ * @since 1.0.0
114
+ * @category Models
115
+ */
116
+ export type Requires<Plan extends Base> = Plan extends { readonly model: AiModel.AiModel<any, infer X> } ? X : never
117
+
118
+ /**
119
+ * @since 1.0.0
120
+ * @category Models
121
+ */
122
+ export type RW<Plan extends Base> = Plan extends
123
+ { readonly while: (error: any) => Effect.Effect<any, any, infer X> } ? X
124
+ : never
125
+
126
+ /**
127
+ * @since 1.0.0
128
+ * @category Models
129
+ */
130
+ export type RS<Plan extends Base> = Plan extends { readonly schedule: Schedule.Schedule<any, any, infer X> } ? X
131
+ : never
132
+
133
+ /**
134
+ * @since 1.0.0
135
+ * @category Models
136
+ */
137
+ export type MakePlan<Plan extends Base> = AiPlan<
138
+ EW<Plan> & ES<Plan>,
139
+ Provides<Plan>,
140
+ RW<Plan> | RS<Plan> | Requires<Plan>
141
+ > extends infer X ? X : never
142
+
143
+ /**
144
+ * @since 1.0.0
145
+ * @category Models
146
+ */
147
+ export type MergePlan<Plans extends ReadonlyArray<Base>> = AiPlan<
148
+ Types.UnionToIntersection<
149
+ { [K in keyof Plans]: MakePlan<Plans[K]> extends AiPlan<infer X, any, any> ? X : never }[number]
150
+ >,
151
+ { [K in keyof Plans]: MakePlan<Plans[K]> extends AiPlan<any, infer X, any> ? X : never }[number],
152
+ { [K in keyof Plans]: MakePlan<Plans[K]> extends AiPlan<any, any, infer X> ? X : never }[number]
153
+ > extends infer K ? K : never
83
154
  }
84
155
 
85
156
  /**
86
157
  * @since 1.0.0
87
158
  * @category constructors
88
159
  */
89
- export const fromModel: <Provides, Requires, EW, Out, ES, RW = never, RS = never>(
90
- model: AiModel.AiModel<Provides, Requires>,
91
- options?: {
92
- readonly attempts?: number | undefined
93
- readonly while?: ((error: EW) => boolean | Effect.Effect<boolean, never, RW>) | undefined
94
- readonly schedule?: Schedule.Schedule<Out, ES, RS> | undefined
160
+ export const make: <Plans extends readonly [Make.Base, ...ReadonlyArray<Make.Base>]>(
161
+ ...plans: Plans
162
+ ) => Make.MergePlan<Plans> = (function() {
163
+ let plan = Internal.make(arguments[0])
164
+ for (let i = 1; i < arguments.length; i++) {
165
+ plan = withFallback(plan, arguments[i])
95
166
  }
96
- ) => AiPlan<EW & ES, Provides, RW | RS | Requires> = Internal.fromModel
167
+ return plan
168
+ }) as any
97
169
 
98
170
  /**
99
171
  * @since 1.0.0