@effect/ai 0.26.0 → 0.27.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 (188) hide show
  1. package/Chat/package.json +6 -0
  2. package/EmbeddingModel/package.json +6 -0
  3. package/IdGenerator/package.json +6 -0
  4. package/LanguageModel/package.json +6 -0
  5. package/Model/package.json +6 -0
  6. package/Prompt/package.json +6 -0
  7. package/Response/package.json +6 -0
  8. package/Telemetry/package.json +6 -0
  9. package/Tool/package.json +6 -0
  10. package/Toolkit/package.json +6 -0
  11. package/dist/cjs/AiError.js +575 -11
  12. package/dist/cjs/AiError.js.map +1 -1
  13. package/dist/cjs/Chat.js +302 -0
  14. package/dist/cjs/Chat.js.map +1 -0
  15. package/dist/cjs/EmbeddingModel.js +184 -0
  16. package/dist/cjs/EmbeddingModel.js.map +1 -0
  17. package/dist/cjs/IdGenerator.js +255 -0
  18. package/dist/cjs/IdGenerator.js.map +1 -0
  19. package/dist/cjs/LanguageModel.js +584 -0
  20. package/dist/cjs/LanguageModel.js.map +1 -0
  21. package/dist/cjs/McpServer.js +12 -4
  22. package/dist/cjs/McpServer.js.map +1 -1
  23. package/dist/cjs/Model.js +118 -0
  24. package/dist/cjs/Model.js.map +1 -0
  25. package/dist/cjs/Prompt.js +649 -0
  26. package/dist/cjs/Prompt.js.map +1 -0
  27. package/dist/cjs/Response.js +635 -0
  28. package/dist/cjs/Response.js.map +1 -0
  29. package/dist/cjs/Telemetry.js +176 -0
  30. package/dist/cjs/Telemetry.js.map +1 -0
  31. package/dist/cjs/Tokenizer.js +87 -8
  32. package/dist/cjs/Tokenizer.js.map +1 -1
  33. package/dist/cjs/Tool.js +556 -0
  34. package/dist/cjs/Tool.js.map +1 -0
  35. package/dist/cjs/Toolkit.js +279 -0
  36. package/dist/cjs/Toolkit.js.map +1 -0
  37. package/dist/cjs/index.js +21 -19
  38. package/dist/dts/AiError.d.ts +577 -9
  39. package/dist/dts/AiError.d.ts.map +1 -1
  40. package/dist/dts/Chat.d.ts +356 -0
  41. package/dist/dts/Chat.d.ts.map +1 -0
  42. package/dist/dts/EmbeddingModel.d.ts +153 -0
  43. package/dist/dts/EmbeddingModel.d.ts.map +1 -0
  44. package/dist/dts/IdGenerator.d.ts +272 -0
  45. package/dist/dts/IdGenerator.d.ts.map +1 -0
  46. package/dist/dts/LanguageModel.d.ts +458 -0
  47. package/dist/dts/LanguageModel.d.ts.map +1 -0
  48. package/dist/dts/McpSchema.d.ts +25 -25
  49. package/dist/dts/McpServer.d.ts +6 -4
  50. package/dist/dts/McpServer.d.ts.map +1 -1
  51. package/dist/dts/Model.d.ts +124 -0
  52. package/dist/dts/Model.d.ts.map +1 -0
  53. package/dist/dts/Prompt.d.ts +1119 -0
  54. package/dist/dts/Prompt.d.ts.map +1 -0
  55. package/dist/dts/Response.d.ts +1519 -0
  56. package/dist/dts/Response.d.ts.map +1 -0
  57. package/dist/dts/Telemetry.d.ts +520 -0
  58. package/dist/dts/Telemetry.d.ts.map +1 -0
  59. package/dist/dts/Tokenizer.d.ts +131 -13
  60. package/dist/dts/Tokenizer.d.ts.map +1 -1
  61. package/dist/dts/Tool.d.ts +876 -0
  62. package/dist/dts/Tool.d.ts.map +1 -0
  63. package/dist/dts/Toolkit.d.ts +310 -0
  64. package/dist/dts/Toolkit.d.ts.map +1 -0
  65. package/dist/dts/index.d.ts +498 -13
  66. package/dist/dts/index.d.ts.map +1 -1
  67. package/dist/esm/AiError.js +570 -10
  68. package/dist/esm/AiError.js.map +1 -1
  69. package/dist/esm/Chat.js +291 -0
  70. package/dist/esm/Chat.js.map +1 -0
  71. package/dist/esm/EmbeddingModel.js +173 -0
  72. package/dist/esm/EmbeddingModel.js.map +1 -0
  73. package/dist/esm/IdGenerator.js +245 -0
  74. package/dist/esm/IdGenerator.js.map +1 -0
  75. package/dist/esm/LanguageModel.js +572 -0
  76. package/dist/esm/LanguageModel.js.map +1 -0
  77. package/dist/esm/McpServer.js +12 -4
  78. package/dist/esm/McpServer.js.map +1 -1
  79. package/dist/esm/Model.js +108 -0
  80. package/dist/esm/Model.js.map +1 -0
  81. package/dist/esm/Prompt.js +633 -0
  82. package/dist/esm/Prompt.js.map +1 -0
  83. package/dist/esm/Response.js +619 -0
  84. package/dist/esm/Response.js.map +1 -0
  85. package/dist/esm/Telemetry.js +166 -0
  86. package/dist/esm/Telemetry.js.map +1 -0
  87. package/dist/esm/Tokenizer.js +87 -8
  88. package/dist/esm/Tokenizer.js.map +1 -1
  89. package/dist/esm/Tool.js +534 -0
  90. package/dist/esm/Tool.js.map +1 -0
  91. package/dist/esm/Toolkit.js +269 -0
  92. package/dist/esm/Toolkit.js.map +1 -0
  93. package/dist/esm/index.js +498 -13
  94. package/dist/esm/index.js.map +1 -1
  95. package/package.json +76 -68
  96. package/src/AiError.ts +739 -9
  97. package/src/Chat.ts +546 -0
  98. package/src/EmbeddingModel.ts +311 -0
  99. package/src/IdGenerator.ts +320 -0
  100. package/src/LanguageModel.ts +1074 -0
  101. package/src/McpServer.ts +337 -194
  102. package/src/Model.ts +155 -0
  103. package/src/Prompt.ts +1616 -0
  104. package/src/Response.ts +2131 -0
  105. package/src/Telemetry.ts +655 -0
  106. package/src/Tokenizer.ts +145 -24
  107. package/src/Tool.ts +1267 -0
  108. package/src/Toolkit.ts +516 -0
  109. package/src/index.ts +499 -13
  110. package/AiChat/package.json +0 -6
  111. package/AiEmbeddingModel/package.json +0 -6
  112. package/AiInput/package.json +0 -6
  113. package/AiLanguageModel/package.json +0 -6
  114. package/AiModel/package.json +0 -6
  115. package/AiResponse/package.json +0 -6
  116. package/AiTelemetry/package.json +0 -6
  117. package/AiTool/package.json +0 -6
  118. package/AiToolkit/package.json +0 -6
  119. package/dist/cjs/AiChat.js +0 -122
  120. package/dist/cjs/AiChat.js.map +0 -1
  121. package/dist/cjs/AiEmbeddingModel.js +0 -109
  122. package/dist/cjs/AiEmbeddingModel.js.map +0 -1
  123. package/dist/cjs/AiInput.js +0 -458
  124. package/dist/cjs/AiInput.js.map +0 -1
  125. package/dist/cjs/AiLanguageModel.js +0 -351
  126. package/dist/cjs/AiLanguageModel.js.map +0 -1
  127. package/dist/cjs/AiModel.js +0 -37
  128. package/dist/cjs/AiModel.js.map +0 -1
  129. package/dist/cjs/AiResponse.js +0 -681
  130. package/dist/cjs/AiResponse.js.map +0 -1
  131. package/dist/cjs/AiTelemetry.js +0 -58
  132. package/dist/cjs/AiTelemetry.js.map +0 -1
  133. package/dist/cjs/AiTool.js +0 -150
  134. package/dist/cjs/AiTool.js.map +0 -1
  135. package/dist/cjs/AiToolkit.js +0 -157
  136. package/dist/cjs/AiToolkit.js.map +0 -1
  137. package/dist/cjs/internal/common.js +0 -21
  138. package/dist/cjs/internal/common.js.map +0 -1
  139. package/dist/dts/AiChat.d.ts +0 -101
  140. package/dist/dts/AiChat.d.ts.map +0 -1
  141. package/dist/dts/AiEmbeddingModel.d.ts +0 -65
  142. package/dist/dts/AiEmbeddingModel.d.ts.map +0 -1
  143. package/dist/dts/AiInput.d.ts +0 -590
  144. package/dist/dts/AiInput.d.ts.map +0 -1
  145. package/dist/dts/AiLanguageModel.d.ts +0 -302
  146. package/dist/dts/AiLanguageModel.d.ts.map +0 -1
  147. package/dist/dts/AiModel.d.ts +0 -25
  148. package/dist/dts/AiModel.d.ts.map +0 -1
  149. package/dist/dts/AiResponse.d.ts +0 -863
  150. package/dist/dts/AiResponse.d.ts.map +0 -1
  151. package/dist/dts/AiTelemetry.d.ts +0 -242
  152. package/dist/dts/AiTelemetry.d.ts.map +0 -1
  153. package/dist/dts/AiTool.d.ts +0 -334
  154. package/dist/dts/AiTool.d.ts.map +0 -1
  155. package/dist/dts/AiToolkit.d.ts +0 -96
  156. package/dist/dts/AiToolkit.d.ts.map +0 -1
  157. package/dist/dts/internal/common.d.ts +0 -2
  158. package/dist/dts/internal/common.d.ts.map +0 -1
  159. package/dist/esm/AiChat.js +0 -111
  160. package/dist/esm/AiChat.js.map +0 -1
  161. package/dist/esm/AiEmbeddingModel.js +0 -98
  162. package/dist/esm/AiEmbeddingModel.js.map +0 -1
  163. package/dist/esm/AiInput.js +0 -433
  164. package/dist/esm/AiInput.js.map +0 -1
  165. package/dist/esm/AiLanguageModel.js +0 -340
  166. package/dist/esm/AiLanguageModel.js.map +0 -1
  167. package/dist/esm/AiModel.js +0 -29
  168. package/dist/esm/AiModel.js.map +0 -1
  169. package/dist/esm/AiResponse.js +0 -657
  170. package/dist/esm/AiResponse.js.map +0 -1
  171. package/dist/esm/AiTelemetry.js +0 -48
  172. package/dist/esm/AiTelemetry.js.map +0 -1
  173. package/dist/esm/AiTool.js +0 -134
  174. package/dist/esm/AiTool.js.map +0 -1
  175. package/dist/esm/AiToolkit.js +0 -147
  176. package/dist/esm/AiToolkit.js.map +0 -1
  177. package/dist/esm/internal/common.js +0 -14
  178. package/dist/esm/internal/common.js.map +0 -1
  179. package/src/AiChat.ts +0 -251
  180. package/src/AiEmbeddingModel.ts +0 -169
  181. package/src/AiInput.ts +0 -602
  182. package/src/AiLanguageModel.ts +0 -685
  183. package/src/AiModel.ts +0 -53
  184. package/src/AiResponse.ts +0 -986
  185. package/src/AiTelemetry.ts +0 -333
  186. package/src/AiTool.ts +0 -579
  187. package/src/AiToolkit.ts +0 -265
  188. package/src/internal/common.ts +0 -12
@@ -0,0 +1,245 @@
1
+ /**
2
+ * The `IdGenerator` module provides a pluggable system for generating unique identifiers
3
+ * for tool calls and other items in the Effect AI SDKs.
4
+ *
5
+ * This module offers a flexible and configurable approach to ID generation, supporting
6
+ * custom alphabets, prefixes, separators, and sizes.
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * import { IdGenerator } from "@effect/ai"
11
+ * import { Effect, Layer } from "effect"
12
+ *
13
+ * // Using the default ID generator
14
+ * const program = Effect.gen(function* () {
15
+ * const idGen = yield* IdGenerator.IdGenerator
16
+ * const toolCallId = yield* idGen.generateId()
17
+ * console.log(toolCallId) // "id_A7xK9mP2qR5tY8uV"
18
+ * return toolCallId
19
+ * }).pipe(
20
+ * Effect.provide(Layer.succeed(
21
+ * IdGenerator.IdGenerator,
22
+ * IdGenerator.defaultIdGenerator
23
+ * ))
24
+ * )
25
+ * ```
26
+ *
27
+ * @example
28
+ * ```ts
29
+ * import { IdGenerator } from "@effect/ai"
30
+ * import { Effect, Layer } from "effect"
31
+ *
32
+ * // Creating a custom ID generator for AI tool calls
33
+ * const customLayer = IdGenerator.layer({
34
+ * alphabet: "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",
35
+ * prefix: "tool_call",
36
+ * separator: "-",
37
+ * size: 12
38
+ * })
39
+ *
40
+ * const program = Effect.gen(function* () {
41
+ * const idGen = yield* IdGenerator.IdGenerator
42
+ * const id = yield* idGen.generateId()
43
+ * console.log(id) // "tool_call-A7XK9MP2QR5T"
44
+ * return id
45
+ * }).pipe(
46
+ * Effect.provide(customLayer)
47
+ * )
48
+ * ```
49
+ *
50
+ * @since 1.0.0
51
+ */
52
+ import * as Cause from "effect/Cause";
53
+ import * as Context from "effect/Context";
54
+ import * as Effect from "effect/Effect";
55
+ import * as Layer from "effect/Layer";
56
+ import * as Predicate from "effect/Predicate";
57
+ import * as Random from "effect/Random";
58
+ /**
59
+ * The `IdGenerator` service tag for dependency injection.
60
+ *
61
+ * This tag is used to provide and access ID generation functionality throughout
62
+ * the application. It follows Effect's standard service pattern for type-safe
63
+ * dependency injection.
64
+ *
65
+ * @example
66
+ * ```ts
67
+ * import { IdGenerator } from "@effect/ai"
68
+ * import { Effect } from "effect"
69
+ *
70
+ * const useIdGenerator = Effect.gen(function* () {
71
+ * const idGenerator = yield* IdGenerator.IdGenerator
72
+ * const newId = yield* idGenerator.generateId()
73
+ * return newId
74
+ * })
75
+ * ```
76
+ *
77
+ * @since 1.0.0
78
+ * @category Models
79
+ */
80
+ export class IdGenerator extends /*#__PURE__*/Context.Tag("@effect/ai/IdGenerator")() {}
81
+ const DEFAULT_ALPHABET = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
82
+ const DEFAULT_SEPARATOR = "_";
83
+ const DEFAULT_SIZE = 16;
84
+ const makeGenerator = ({
85
+ alphabet = DEFAULT_ALPHABET,
86
+ prefix,
87
+ separator = DEFAULT_SEPARATOR,
88
+ size = DEFAULT_SIZE
89
+ }) => {
90
+ const alphabetLength = alphabet.length;
91
+ return Effect.fnUntraced(function* () {
92
+ const chars = new Array(size);
93
+ for (let i = 0; i < size; i++) {
94
+ chars[i] = alphabet[(yield* Random.next) * alphabetLength | 0];
95
+ }
96
+ const identifier = chars.join("");
97
+ if (Predicate.isUndefined(prefix)) {
98
+ return identifier;
99
+ }
100
+ return `${prefix}${separator}${identifier}`;
101
+ });
102
+ };
103
+ /**
104
+ * Default ID generator service implementation.
105
+ *
106
+ * Uses the standard configuration with "id" prefix and generates IDs in the
107
+ * format "id_XXXXXXXXXXXXXXXX" where X represents random alphanumeric
108
+ * characters.
109
+ *
110
+ * @example
111
+ * ```ts
112
+ * import { IdGenerator } from "@effect/ai"
113
+ * import { Effect, Layer } from "effect"
114
+ *
115
+ * const program = Effect.gen(function* () {
116
+ * const id = yield* IdGenerator.defaultIdGenerator.generateId()
117
+ * console.log(id) // "id_A7xK9mP2qR5tY8uV"
118
+ * return id
119
+ * })
120
+ *
121
+ * // Or provide it as a service
122
+ * const withDefault = program.pipe(
123
+ * Effect.provideService(
124
+ * IdGenerator.IdGenerator,
125
+ * IdGenerator.defaultIdGenerator
126
+ * )
127
+ * )
128
+ * ```
129
+ *
130
+ * @since 1.0.0
131
+ * @category Constructors
132
+ */
133
+ export const defaultIdGenerator = {
134
+ generateId: /*#__PURE__*/makeGenerator({
135
+ prefix: "id"
136
+ })
137
+ };
138
+ /**
139
+ * Creates a custom ID generator service with the specified options.
140
+ *
141
+ * Validates the configuration to ensure the separator is not part of the
142
+ * alphabet, which would cause ambiguity in parsing generated IDs.
143
+ *
144
+ * @example
145
+ * ```ts
146
+ * import { IdGenerator } from "@effect/ai"
147
+ * import { Effect } from "effect"
148
+ *
149
+ * const program = Effect.gen(function* () {
150
+ * // Create a generator for AI assistant message IDs
151
+ * const messageIdGen = yield* IdGenerator.make({
152
+ * alphabet: "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ",
153
+ * prefix: "msg",
154
+ * separator: "-",
155
+ * size: 10
156
+ * })
157
+ *
158
+ * const messageId = yield* messageIdGen.generateId()
159
+ * console.log(messageId) // "msg-A7X9K2M5P8"
160
+ * return messageId
161
+ * })
162
+ * ```
163
+ *
164
+ * @example
165
+ * ```ts
166
+ * import { IdGenerator } from "@effect/ai"
167
+ * import { Effect } from "effect"
168
+ *
169
+ * // This will fail with IllegalArgumentException
170
+ * const invalidConfig = IdGenerator.make({
171
+ * alphabet: "ABC123",
172
+ * prefix: "test",
173
+ * separator: "A", // Error: separator is part of alphabet
174
+ * size: 8
175
+ * })
176
+ *
177
+ * const program = Effect.gen(function* () {
178
+ * const generator = yield* invalidConfig
179
+ * return generator
180
+ * }).pipe(
181
+ * Effect.catchAll(error =>
182
+ * Effect.succeed(`Configuration error: ${error.message}`)
183
+ * )
184
+ * )
185
+ * ```
186
+ *
187
+ * @since 1.0.0
188
+ * @category Constructors
189
+ */
190
+ export const make = /*#__PURE__*/Effect.fnUntraced(function* ({
191
+ alphabet = DEFAULT_ALPHABET,
192
+ prefix,
193
+ separator = DEFAULT_SEPARATOR,
194
+ size = DEFAULT_SIZE
195
+ }) {
196
+ if (alphabet.includes(separator)) {
197
+ const message = `The separator "${separator}" must not be part of the alphabet "${alphabet}".`;
198
+ return yield* new Cause.IllegalArgumentException(message);
199
+ }
200
+ const generateId = makeGenerator({
201
+ alphabet,
202
+ prefix,
203
+ separator,
204
+ size
205
+ });
206
+ return {
207
+ generateId
208
+ };
209
+ });
210
+ /**
211
+ * Creates a Layer that provides the IdGenerator service with custom
212
+ * configuration.
213
+ *
214
+ * This is the recommended way to provide ID generation capabilities to your
215
+ * application. The layer will fail during construction if the configuration is
216
+ * invalid.
217
+ *
218
+ * @example
219
+ * ```ts
220
+ * import { IdGenerator } from "@effect/ai"
221
+ * import { Effect, Layer } from "effect"
222
+ *
223
+ * // Create a layer for generating AI tool call IDs
224
+ * const toolCallIdLayer = IdGenerator.layer({
225
+ * alphabet: "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ",
226
+ * prefix: "tool_call",
227
+ * separator: "_",
228
+ * size: 12
229
+ * })
230
+ *
231
+ * const program = Effect.gen(function* () {
232
+ * const idGen = yield* IdGenerator.IdGenerator
233
+ * const toolCallId = yield* idGen.generateId()
234
+ * console.log(toolCallId) // "tool_call_A7XK9MP2QR5T"
235
+ * return toolCallId
236
+ * }).pipe(
237
+ * Effect.provide(toolCallIdLayer)
238
+ * )
239
+ * ```
240
+ *
241
+ * @since 1.0.0
242
+ * @category Constructors
243
+ */
244
+ export const layer = options => Layer.effect(IdGenerator, make(options));
245
+ //# sourceMappingURL=IdGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IdGenerator.js","names":["Cause","Context","Effect","Layer","Predicate","Random","IdGenerator","Tag","DEFAULT_ALPHABET","DEFAULT_SEPARATOR","DEFAULT_SIZE","makeGenerator","alphabet","prefix","separator","size","alphabetLength","length","fnUntraced","chars","Array","i","next","identifier","join","isUndefined","defaultIdGenerator","generateId","make","includes","message","IllegalArgumentException","layer","options","effect"],"sources":["../../src/IdGenerator.ts"],"sourcesContent":[null],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmDA,OAAO,KAAKA,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,OAAO,MAAM,gBAAgB;AACzC,OAAO,KAAKC,MAAM,MAAM,eAAe;AACvC,OAAO,KAAKC,KAAK,MAAM,cAAc;AACrC,OAAO,KAAKC,SAAS,MAAM,kBAAkB;AAC7C,OAAO,KAAKC,MAAM,MAAM,eAAe;AAEvC;;;;;;;;;;;;;;;;;;;;;;AAsBA,OAAM,MAAOC,WAAY,sBAAQL,OAAO,CAACM,GAAG,CAAC,wBAAwB,CAAC,EAGnE;AAyEH,MAAMC,gBAAgB,GAAG,gEAAgE;AACzF,MAAMC,iBAAiB,GAAG,GAAG;AAC7B,MAAMC,YAAY,GAAG,EAAE;AAEvB,MAAMC,aAAa,GAAGA,CAAC;EACrBC,QAAQ,GAAGJ,gBAAgB;EAC3BK,MAAM;EACNC,SAAS,GAAGL,iBAAiB;EAC7BM,IAAI,GAAGL;AAAY,CACE,KAAI;EACzB,MAAMM,cAAc,GAAGJ,QAAQ,CAACK,MAAM;EACtC,OAAOf,MAAM,CAACgB,UAAU,CAAC,aAAS;IAChC,MAAMC,KAAK,GAAG,IAAIC,KAAK,CAACL,IAAI,CAAC;IAC7B,KAAK,IAAIM,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGN,IAAI,EAAEM,CAAC,EAAE,EAAE;MAC7BF,KAAK,CAACE,CAAC,CAAC,GAAGT,QAAQ,CAAE,CAAC,OAAOP,MAAM,CAACiB,IAAI,IAAIN,cAAc,GAAI,CAAC,CAAC;IAClE;IACA,MAAMO,UAAU,GAAGJ,KAAK,CAACK,IAAI,CAAC,EAAE,CAAC;IACjC,IAAIpB,SAAS,CAACqB,WAAW,CAACZ,MAAM,CAAC,EAAE;MACjC,OAAOU,UAAU;IACnB;IACA,OAAO,GAAGV,MAAM,GAAGC,SAAS,GAAGS,UAAU,EAAE;EAC7C,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BA,OAAO,MAAMG,kBAAkB,GAAY;EACzCC,UAAU,eAAEhB,aAAa,CAAC;IAAEE,MAAM,EAAE;EAAI,CAAE;CAC3C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoDA,OAAO,MAAMe,IAAI,gBAAG1B,MAAM,CAACgB,UAAU,CAAC,WAAU;EAC9CN,QAAQ,GAAGJ,gBAAgB;EAC3BK,MAAM;EACNC,SAAS,GAAGL,iBAAiB;EAC7BM,IAAI,GAAGL;AAAY,CACP;EACZ,IAAIE,QAAQ,CAACiB,QAAQ,CAACf,SAAS,CAAC,EAAE;IAChC,MAAMgB,OAAO,GAAG,kBAAkBhB,SAAS,uCAAuCF,QAAQ,IAAI;IAC9F,OAAO,OAAO,IAAIZ,KAAK,CAAC+B,wBAAwB,CAACD,OAAO,CAAC;EAC3D;EAEA,MAAMH,UAAU,GAAGhB,aAAa,CAAC;IAAEC,QAAQ;IAAEC,MAAM;IAAEC,SAAS;IAAEC;EAAI,CAAE,CAAC;EAEvE,OAAO;IACLY;GACQ;AACZ,CAAC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCA,OAAO,MAAMK,KAAK,GAAIC,OAAoB,IACxC9B,KAAK,CAAC+B,MAAM,CAAC5B,WAAW,EAAEsB,IAAI,CAACK,OAAO,CAAC,CAAC","ignoreList":[]}