@rudderjs/ai 1.17.2 → 1.18.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 (377) hide show
  1. package/README.md +19 -1274
  2. package/dist/budget-orm/index.d.ts +1 -95
  3. package/dist/budget-orm/index.d.ts.map +1 -1
  4. package/dist/budget-orm/index.js +4 -176
  5. package/dist/budget-orm/index.js.map +1 -1
  6. package/dist/chat-mentions.d.ts +1 -58
  7. package/dist/chat-mentions.d.ts.map +1 -1
  8. package/dist/chat-mentions.js +4 -80
  9. package/dist/chat-mentions.js.map +1 -1
  10. package/dist/commands/ai-eval.d.ts +1 -92
  11. package/dist/commands/ai-eval.d.ts.map +1 -1
  12. package/dist/commands/ai-eval.js +4 -377
  13. package/dist/commands/ai-eval.js.map +1 -1
  14. package/dist/commands/make-agent.d.ts +1 -2
  15. package/dist/commands/make-agent.d.ts.map +1 -1
  16. package/dist/commands/make-agent.js +4 -22
  17. package/dist/commands/make-agent.js.map +1 -1
  18. package/dist/computer-use/index.d.ts +1 -52
  19. package/dist/computer-use/index.d.ts.map +1 -1
  20. package/dist/computer-use/index.js +4 -50
  21. package/dist/computer-use/index.js.map +1 -1
  22. package/dist/conversation-orm/index.d.ts +1 -108
  23. package/dist/conversation-orm/index.d.ts.map +1 -1
  24. package/dist/conversation-orm/index.js +4 -214
  25. package/dist/conversation-orm/index.js.map +1 -1
  26. package/dist/doctor.d.ts +1 -1
  27. package/dist/doctor.d.ts.map +1 -1
  28. package/dist/doctor.js +4 -65
  29. package/dist/doctor.js.map +1 -1
  30. package/dist/eval/index.d.ts +1 -270
  31. package/dist/eval/index.d.ts.map +1 -1
  32. package/dist/eval/index.js +4 -509
  33. package/dist/eval/index.js.map +1 -1
  34. package/dist/gateway/index.d.ts +1 -10
  35. package/dist/gateway/index.d.ts.map +1 -1
  36. package/dist/gateway/index.js +4 -10
  37. package/dist/gateway/index.js.map +1 -1
  38. package/dist/index.d.ts +1 -66
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +4 -78
  41. package/dist/index.js.map +1 -1
  42. package/dist/mcp/index.d.ts +1 -15
  43. package/dist/mcp/index.d.ts.map +1 -1
  44. package/dist/mcp/index.js +4 -14
  45. package/dist/mcp/index.js.map +1 -1
  46. package/dist/memory-embedding/index.d.ts +1 -120
  47. package/dist/memory-embedding/index.d.ts.map +1 -1
  48. package/dist/memory-embedding/index.js +4 -228
  49. package/dist/memory-embedding/index.js.map +1 -1
  50. package/dist/memory-orm/index.d.ts +1 -117
  51. package/dist/memory-orm/index.d.ts.map +1 -1
  52. package/dist/memory-orm/index.js +4 -186
  53. package/dist/memory-orm/index.js.map +1 -1
  54. package/dist/node/index.d.ts +1 -2
  55. package/dist/node/index.d.ts.map +1 -1
  56. package/dist/node/index.js +4 -2
  57. package/dist/node/index.js.map +1 -1
  58. package/dist/observers.d.ts +1 -129
  59. package/dist/observers.d.ts.map +1 -1
  60. package/dist/observers.js +4 -39
  61. package/dist/observers.js.map +1 -1
  62. package/dist/react/index.d.ts +1 -15
  63. package/dist/react/index.d.ts.map +1 -1
  64. package/dist/react/index.js +4 -15
  65. package/dist/react/index.js.map +1 -1
  66. package/dist/server/index.d.ts +1 -1
  67. package/dist/server/index.d.ts.map +1 -1
  68. package/dist/server/index.js +4 -1
  69. package/dist/server/index.js.map +1 -1
  70. package/package.json +9 -13
  71. package/boost/guidelines.md +0 -260
  72. package/boost/skills/ai-agents/SKILL.md +0 -240
  73. package/boost/skills/ai-tools/SKILL.md +0 -260
  74. package/dist/agent-run-store.d.ts +0 -161
  75. package/dist/agent-run-store.d.ts.map +0 -1
  76. package/dist/agent-run-store.js +0 -98
  77. package/dist/agent-run-store.js.map +0 -1
  78. package/dist/agent-sse.d.ts +0 -153
  79. package/dist/agent-sse.d.ts.map +0 -1
  80. package/dist/agent-sse.js +0 -282
  81. package/dist/agent-sse.js.map +0 -1
  82. package/dist/agent.d.ts +0 -508
  83. package/dist/agent.d.ts.map +0 -1
  84. package/dist/agent.js +0 -1538
  85. package/dist/agent.js.map +0 -1
  86. package/dist/attachment.d.ts +0 -31
  87. package/dist/attachment.d.ts.map +0 -1
  88. package/dist/attachment.js +0 -89
  89. package/dist/attachment.js.map +0 -1
  90. package/dist/audio.d.ts +0 -45
  91. package/dist/audio.d.ts.map +0 -1
  92. package/dist/audio.js +0 -93
  93. package/dist/audio.js.map +0 -1
  94. package/dist/base64.d.ts +0 -7
  95. package/dist/base64.d.ts.map +0 -1
  96. package/dist/base64.js +0 -39
  97. package/dist/base64.js.map +0 -1
  98. package/dist/budget/pricing.d.ts +0 -124
  99. package/dist/budget/pricing.d.ts.map +0 -1
  100. package/dist/budget/pricing.js +0 -175
  101. package/dist/budget/pricing.js.map +0 -1
  102. package/dist/budget/storage.d.ts +0 -104
  103. package/dist/budget/storage.d.ts.map +0 -1
  104. package/dist/budget/storage.js +0 -0
  105. package/dist/budget/storage.js.map +0 -1
  106. package/dist/budget/with-budget.d.ts +0 -119
  107. package/dist/budget/with-budget.d.ts.map +0 -1
  108. package/dist/budget/with-budget.js +0 -175
  109. package/dist/budget/with-budget.js.map +0 -1
  110. package/dist/cached-embedding.d.ts +0 -14
  111. package/dist/cached-embedding.d.ts.map +0 -1
  112. package/dist/cached-embedding.js +0 -44
  113. package/dist/cached-embedding.js.map +0 -1
  114. package/dist/computer-use/actions.d.ts +0 -214
  115. package/dist/computer-use/actions.d.ts.map +0 -1
  116. package/dist/computer-use/actions.js +0 -48
  117. package/dist/computer-use/actions.js.map +0 -1
  118. package/dist/computer-use/errors.d.ts +0 -57
  119. package/dist/computer-use/errors.d.ts.map +0 -1
  120. package/dist/computer-use/errors.js +0 -76
  121. package/dist/computer-use/errors.js.map +0 -1
  122. package/dist/computer-use/playwright.d.ts +0 -76
  123. package/dist/computer-use/playwright.d.ts.map +0 -1
  124. package/dist/computer-use/playwright.js +0 -270
  125. package/dist/computer-use/playwright.js.map +0 -1
  126. package/dist/computer-use/tool.d.ts +0 -154
  127. package/dist/computer-use/tool.d.ts.map +0 -1
  128. package/dist/computer-use/tool.js +0 -210
  129. package/dist/computer-use/tool.js.map +0 -1
  130. package/dist/continuation-validation.d.ts +0 -85
  131. package/dist/continuation-validation.d.ts.map +0 -1
  132. package/dist/continuation-validation.js +0 -166
  133. package/dist/continuation-validation.js.map +0 -1
  134. package/dist/conversation-persistence.d.ts +0 -46
  135. package/dist/conversation-persistence.d.ts.map +0 -1
  136. package/dist/conversation-persistence.js +0 -176
  137. package/dist/conversation-persistence.js.map +0 -1
  138. package/dist/conversation.d.ts +0 -11
  139. package/dist/conversation.d.ts.map +0 -1
  140. package/dist/conversation.js +0 -55
  141. package/dist/conversation.js.map +0 -1
  142. package/dist/eval/fixtures.d.ts +0 -65
  143. package/dist/eval/fixtures.d.ts.map +0 -1
  144. package/dist/eval/fixtures.js +0 -110
  145. package/dist/eval/fixtures.js.map +0 -1
  146. package/dist/eval/html-reporter.d.ts +0 -25
  147. package/dist/eval/html-reporter.d.ts.map +0 -1
  148. package/dist/eval/html-reporter.js +0 -209
  149. package/dist/eval/html-reporter.js.map +0 -1
  150. package/dist/eval/json-reporter.d.ts +0 -43
  151. package/dist/eval/json-reporter.d.ts.map +0 -1
  152. package/dist/eval/json-reporter.js +0 -40
  153. package/dist/eval/json-reporter.js.map +0 -1
  154. package/dist/facade.d.ts +0 -96
  155. package/dist/facade.d.ts.map +0 -1
  156. package/dist/facade.js +0 -146
  157. package/dist/facade.js.map +0 -1
  158. package/dist/fake.d.ts +0 -201
  159. package/dist/fake.d.ts.map +0 -1
  160. package/dist/fake.js +0 -428
  161. package/dist/fake.js.map +0 -1
  162. package/dist/file-search.d.ts +0 -168
  163. package/dist/file-search.d.ts.map +0 -1
  164. package/dist/file-search.js +0 -158
  165. package/dist/file-search.js.map +0 -1
  166. package/dist/files.d.ts +0 -27
  167. package/dist/files.d.ts.map +0 -1
  168. package/dist/files.js +0 -44
  169. package/dist/files.js.map +0 -1
  170. package/dist/gateway/http-gateway-adapter.d.ts +0 -94
  171. package/dist/gateway/http-gateway-adapter.d.ts.map +0 -1
  172. package/dist/gateway/http-gateway-adapter.js +0 -106
  173. package/dist/gateway/http-gateway-adapter.js.map +0 -1
  174. package/dist/gateway/sse.d.ts +0 -28
  175. package/dist/gateway/sse.d.ts.map +0 -1
  176. package/dist/gateway/sse.js +0 -78
  177. package/dist/gateway/sse.js.map +0 -1
  178. package/dist/handoff.d.ts +0 -95
  179. package/dist/handoff.d.ts.map +0 -1
  180. package/dist/handoff.js +0 -78
  181. package/dist/handoff.js.map +0 -1
  182. package/dist/handoffs-driver.d.ts +0 -58
  183. package/dist/handoffs-driver.d.ts.map +0 -1
  184. package/dist/handoffs-driver.js +0 -103
  185. package/dist/handoffs-driver.js.map +0 -1
  186. package/dist/image.d.ts +0 -40
  187. package/dist/image.d.ts.map +0 -1
  188. package/dist/image.js +0 -109
  189. package/dist/image.js.map +0 -1
  190. package/dist/mcp/client-tools.d.ts +0 -39
  191. package/dist/mcp/client-tools.d.ts.map +0 -1
  192. package/dist/mcp/client-tools.js +0 -147
  193. package/dist/mcp/client-tools.js.map +0 -1
  194. package/dist/mcp/server-from-agent.d.ts +0 -24
  195. package/dist/mcp/server-from-agent.d.ts.map +0 -1
  196. package/dist/mcp/server-from-agent.js +0 -113
  197. package/dist/mcp/server-from-agent.js.map +0 -1
  198. package/dist/mcp/types.d.ts +0 -64
  199. package/dist/mcp/types.d.ts.map +0 -1
  200. package/dist/mcp/types.js +0 -6
  201. package/dist/mcp/types.js.map +0 -1
  202. package/dist/memory-extract.d.ts +0 -60
  203. package/dist/memory-extract.d.ts.map +0 -1
  204. package/dist/memory-extract.js +0 -163
  205. package/dist/memory-extract.js.map +0 -1
  206. package/dist/memory-inject.d.ts +0 -39
  207. package/dist/memory-inject.d.ts.map +0 -1
  208. package/dist/memory-inject.js +0 -135
  209. package/dist/memory-inject.js.map +0 -1
  210. package/dist/memory.d.ts +0 -55
  211. package/dist/memory.d.ts.map +0 -1
  212. package/dist/memory.js +0 -132
  213. package/dist/memory.js.map +0 -1
  214. package/dist/middleware.d.ts +0 -18
  215. package/dist/middleware.d.ts.map +0 -1
  216. package/dist/middleware.js +0 -72
  217. package/dist/middleware.js.map +0 -1
  218. package/dist/node/attachment.d.ts +0 -6
  219. package/dist/node/attachment.d.ts.map +0 -1
  220. package/dist/node/attachment.js +0 -35
  221. package/dist/node/attachment.js.map +0 -1
  222. package/dist/node/transcription.d.ts +0 -4
  223. package/dist/node/transcription.d.ts.map +0 -1
  224. package/dist/node/transcription.js +0 -8
  225. package/dist/node/transcription.js.map +0 -1
  226. package/dist/output.d.ts +0 -22
  227. package/dist/output.d.ts.map +0 -1
  228. package/dist/output.js +0 -60
  229. package/dist/output.js.map +0 -1
  230. package/dist/provider-tools.d.ts +0 -87
  231. package/dist/provider-tools.d.ts.map +0 -1
  232. package/dist/provider-tools.js +0 -189
  233. package/dist/provider-tools.js.map +0 -1
  234. package/dist/providers/anthropic.d.ts +0 -24
  235. package/dist/providers/anthropic.d.ts.map +0 -1
  236. package/dist/providers/anthropic.js +0 -405
  237. package/dist/providers/anthropic.js.map +0 -1
  238. package/dist/providers/azure.d.ts +0 -13
  239. package/dist/providers/azure.d.ts.map +0 -1
  240. package/dist/providers/azure.js +0 -15
  241. package/dist/providers/azure.js.map +0 -1
  242. package/dist/providers/bedrock.d.ts +0 -75
  243. package/dist/providers/bedrock.d.ts.map +0 -1
  244. package/dist/providers/bedrock.js +0 -181
  245. package/dist/providers/bedrock.js.map +0 -1
  246. package/dist/providers/cohere.d.ts +0 -13
  247. package/dist/providers/cohere.d.ts.map +0 -1
  248. package/dist/providers/cohere.js +0 -87
  249. package/dist/providers/cohere.js.map +0 -1
  250. package/dist/providers/deepseek.d.ts +0 -12
  251. package/dist/providers/deepseek.d.ts.map +0 -1
  252. package/dist/providers/deepseek.js +0 -15
  253. package/dist/providers/deepseek.js.map +0 -1
  254. package/dist/providers/elevenlabs.d.ts +0 -98
  255. package/dist/providers/elevenlabs.d.ts.map +0 -1
  256. package/dist/providers/elevenlabs.js +0 -229
  257. package/dist/providers/elevenlabs.js.map +0 -1
  258. package/dist/providers/google-cache-registry.d.ts +0 -132
  259. package/dist/providers/google-cache-registry.d.ts.map +0 -1
  260. package/dist/providers/google-cache-registry.js +0 -209
  261. package/dist/providers/google-cache-registry.js.map +0 -1
  262. package/dist/providers/google.d.ts +0 -38
  263. package/dist/providers/google.d.ts.map +0 -1
  264. package/dist/providers/google.js +0 -903
  265. package/dist/providers/google.js.map +0 -1
  266. package/dist/providers/groq.d.ts +0 -12
  267. package/dist/providers/groq.d.ts.map +0 -1
  268. package/dist/providers/groq.js +0 -15
  269. package/dist/providers/groq.js.map +0 -1
  270. package/dist/providers/jina.d.ts +0 -13
  271. package/dist/providers/jina.d.ts.map +0 -1
  272. package/dist/providers/jina.js +0 -90
  273. package/dist/providers/jina.js.map +0 -1
  274. package/dist/providers/mistral.d.ts +0 -13
  275. package/dist/providers/mistral.d.ts.map +0 -1
  276. package/dist/providers/mistral.js +0 -46
  277. package/dist/providers/mistral.js.map +0 -1
  278. package/dist/providers/ollama.d.ts +0 -11
  279. package/dist/providers/ollama.d.ts.map +0 -1
  280. package/dist/providers/ollama.js +0 -15
  281. package/dist/providers/ollama.js.map +0 -1
  282. package/dist/providers/openai.d.ts +0 -79
  283. package/dist/providers/openai.d.ts.map +0 -1
  284. package/dist/providers/openai.js +0 -792
  285. package/dist/providers/openai.js.map +0 -1
  286. package/dist/providers/openrouter.d.ts +0 -43
  287. package/dist/providers/openrouter.d.ts.map +0 -1
  288. package/dist/providers/openrouter.js +0 -21
  289. package/dist/providers/openrouter.js.map +0 -1
  290. package/dist/providers/voyage.d.ts +0 -91
  291. package/dist/providers/voyage.d.ts.map +0 -1
  292. package/dist/providers/voyage.js +0 -166
  293. package/dist/providers/voyage.js.map +0 -1
  294. package/dist/providers/xai.d.ts +0 -12
  295. package/dist/providers/xai.d.ts.map +0 -1
  296. package/dist/providers/xai.js +0 -15
  297. package/dist/providers/xai.js.map +0 -1
  298. package/dist/queue-job.d.ts +0 -100
  299. package/dist/queue-job.d.ts.map +0 -1
  300. package/dist/queue-job.js +0 -185
  301. package/dist/queue-job.js.map +0 -1
  302. package/dist/react/agent-run.d.ts +0 -111
  303. package/dist/react/agent-run.d.ts.map +0 -1
  304. package/dist/react/agent-run.js +0 -107
  305. package/dist/react/agent-run.js.map +0 -1
  306. package/dist/react/useAgentRun.d.ts +0 -68
  307. package/dist/react/useAgentRun.d.ts.map +0 -1
  308. package/dist/react/useAgentRun.js +0 -125
  309. package/dist/react/useAgentRun.js.map +0 -1
  310. package/dist/registry.d.ts +0 -45
  311. package/dist/registry.d.ts.map +0 -1
  312. package/dist/registry.js +0 -131
  313. package/dist/registry.js.map +0 -1
  314. package/dist/rerank.d.ts +0 -20
  315. package/dist/rerank.d.ts.map +0 -1
  316. package/dist/rerank.js +0 -40
  317. package/dist/rerank.js.map +0 -1
  318. package/dist/resume-approval.d.ts +0 -30
  319. package/dist/resume-approval.d.ts.map +0 -1
  320. package/dist/resume-approval.js +0 -147
  321. package/dist/resume-approval.js.map +0 -1
  322. package/dist/sanitize-conversation.d.ts +0 -43
  323. package/dist/sanitize-conversation.d.ts.map +0 -1
  324. package/dist/sanitize-conversation.js +0 -85
  325. package/dist/sanitize-conversation.js.map +0 -1
  326. package/dist/scoped-tool.d.ts +0 -98
  327. package/dist/scoped-tool.d.ts.map +0 -1
  328. package/dist/scoped-tool.js +0 -174
  329. package/dist/scoped-tool.js.map +0 -1
  330. package/dist/server/provider.d.ts +0 -22
  331. package/dist/server/provider.d.ts.map +0 -1
  332. package/dist/server/provider.js +0 -194
  333. package/dist/server/provider.js.map +0 -1
  334. package/dist/similarity-search.d.ts +0 -163
  335. package/dist/similarity-search.d.ts.map +0 -1
  336. package/dist/similarity-search.js +0 -147
  337. package/dist/similarity-search.js.map +0 -1
  338. package/dist/sub-agent-run-store.d.ts +0 -157
  339. package/dist/sub-agent-run-store.d.ts.map +0 -1
  340. package/dist/sub-agent-run-store.js +0 -87
  341. package/dist/sub-agent-run-store.js.map +0 -1
  342. package/dist/tool-execution.d.ts +0 -16
  343. package/dist/tool-execution.d.ts.map +0 -1
  344. package/dist/tool-execution.js +0 -498
  345. package/dist/tool-execution.js.map +0 -1
  346. package/dist/tool-helpers.d.ts +0 -77
  347. package/dist/tool-helpers.d.ts.map +0 -1
  348. package/dist/tool-helpers.js +0 -117
  349. package/dist/tool-helpers.js.map +0 -1
  350. package/dist/tool.d.ts +0 -216
  351. package/dist/tool.d.ts.map +0 -1
  352. package/dist/tool.js +0 -175
  353. package/dist/tool.js.map +0 -1
  354. package/dist/transcription.d.ts +0 -42
  355. package/dist/transcription.d.ts.map +0 -1
  356. package/dist/transcription.js +0 -77
  357. package/dist/transcription.js.map +0 -1
  358. package/dist/types.d.ts +0 -1020
  359. package/dist/types.d.ts.map +0 -1
  360. package/dist/types.js +0 -2
  361. package/dist/types.js.map +0 -1
  362. package/dist/util/hash.d.ts +0 -11
  363. package/dist/util/hash.d.ts.map +0 -1
  364. package/dist/util/hash.js +0 -23
  365. package/dist/util/hash.js.map +0 -1
  366. package/dist/vector-stores/index.d.ts +0 -96
  367. package/dist/vector-stores/index.d.ts.map +0 -1
  368. package/dist/vector-stores/index.js +0 -153
  369. package/dist/vector-stores/index.js.map +0 -1
  370. package/dist/vercel-protocol.d.ts +0 -18
  371. package/dist/vercel-protocol.d.ts.map +0 -1
  372. package/dist/vercel-protocol.js +0 -75
  373. package/dist/vercel-protocol.js.map +0 -1
  374. package/dist/zod-to-json-schema.d.ts +0 -16
  375. package/dist/zod-to-json-schema.d.ts.map +0 -1
  376. package/dist/zod-to-json-schema.js +0 -17
  377. package/dist/zod-to-json-schema.js.map +0 -1
@@ -1,229 +0,0 @@
1
- /**
2
- * ElevenLabs provider — premium TTS + STT (#B9).
3
- *
4
- * Implements `TextToSpeechAdapter` + `SpeechToTextAdapter` only — ElevenLabs
5
- * has no chat-completions surface, so `create()` throws. Apps reach this
6
- * provider through `AudioGenerator.of(...).model('elevenlabs/<voice_id>').generate()`
7
- * and `Transcription.of(...).model('elevenlabs/scribe_v1').transcribe()`.
8
- *
9
- * Wire-protocol via raw `fetch` (no SDK peer dep), matching the Jina /
10
- * Cohere shape. ElevenLabs's REST API is small enough that pulling in
11
- * `@elevenlabs/elevenlabs-js` (or any SDK) would add weight without much
12
- * leverage.
13
- *
14
- * @example Config-driven (recommended)
15
- * ```ts
16
- * // config/ai.ts
17
- * export default {
18
- * default: 'openai/gpt-4o',
19
- * providers: {
20
- * openai: { driver: 'openai', apiKey: env('OPENAI_API_KEY')! },
21
- * elevenlabs: { driver: 'elevenlabs', apiKey: env('ELEVENLABS_API_KEY')! },
22
- * },
23
- * }
24
- *
25
- * // somewhere in app code
26
- * await AudioGenerator
27
- * .of('Hello world')
28
- * .model('elevenlabs/21m00Tcm4TlvDq8ikWAM') // voice_id (Rachel)
29
- * .generate()
30
- * ```
31
- *
32
- * @example Failover from OpenAI TTS to ElevenLabs
33
- * ```ts
34
- * await AudioGenerator
35
- * .of('Hello')
36
- * .model('openai/tts-1-hd')
37
- * .failover('elevenlabs/21m00Tcm4TlvDq8ikWAM')
38
- * .generate()
39
- * ```
40
- *
41
- * # Model strings
42
- *
43
- * **TTS:** the model string after `elevenlabs/` is the **voice id**
44
- * (e.g. `21m00Tcm4TlvDq8ikWAM` for Rachel). The actual TTS model
45
- * (`eleven_multilingual_v2`, `eleven_turbo_v2_5`, ...) defaults to
46
- * {@link DEFAULT_TTS_MODEL_ID}; override via `ElevenLabsConfig.defaultTtsModelId`.
47
- * Voice ids are the discriminator most apps want to vary per-call — the
48
- * underlying TTS model is usually stable per deployment.
49
- *
50
- * **STT:** the model string is the actual model id (`scribe_v1` is the
51
- * only model today).
52
- *
53
- * # Format mapping (TTS)
54
- *
55
- * `TextToSpeechOptions.format` maps to ElevenLabs's `output_format`:
56
- *
57
- * | Our format | ElevenLabs |
58
- * |---|---|
59
- * | `mp3` (default) | `mp3_44100_128` |
60
- * | `opus` | `opus_48000_128` |
61
- * | `wav` / `aac` / `flac` | not supported by ElevenLabs — throws clearly |
62
- *
63
- * # Speed knob (TTS)
64
- *
65
- * `TextToSpeechOptions.speed` is **ignored** by this adapter — ElevenLabs
66
- * doesn't expose a top-level speed multiplier on the TTS endpoint
67
- * (timing is steered via `voice_settings.stability` etc., out of scope
68
- * for v1). OpenAI's TTS supports speed natively; failover from OpenAI
69
- * to ElevenLabs will produce audio at default speed.
70
- */
71
- const ELEVENLABS_BASE_URL = 'https://api.elevenlabs.io';
72
- /** Default TTS model when `ElevenLabsConfig.defaultTtsModelId` is unset. */
73
- export const DEFAULT_TTS_MODEL_ID = 'eleven_multilingual_v2';
74
- /** Default voice when no voice id is encoded into the model string and no `opts.voice` override. */
75
- export const DEFAULT_VOICE_ID = '21m00Tcm4TlvDq8ikWAM';
76
- export class ElevenLabsProvider {
77
- name = 'elevenlabs';
78
- config;
79
- constructor(config) {
80
- this.config = config;
81
- }
82
- create(_model) {
83
- throw new Error('[Rudder AI] ElevenLabs does not support text generation. Use it for text-to-speech and speech-to-text.');
84
- }
85
- createTts(model) {
86
- return new ElevenLabsTtsAdapter(this.config, model);
87
- }
88
- createStt(model) {
89
- return new ElevenLabsSttAdapter(this.config, model);
90
- }
91
- }
92
- // ─── TTS Adapter ─────────────────────────────────────────
93
- class ElevenLabsTtsAdapter {
94
- config;
95
- modelOrVoiceId;
96
- constructor(config,
97
- /**
98
- * Treated as a **voice id** (e.g. `21m00Tcm4TlvDq8ikWAM` for Rachel).
99
- * The TTS model id ships from `ElevenLabsConfig.defaultTtsModelId`.
100
- * Apps that want to vary the TTS model per-call should use multiple
101
- * registered providers (one per model) — the model-string convention
102
- * across @rudderjs/ai is `<provider>/<voice-or-model>`.
103
- */
104
- modelOrVoiceId) {
105
- this.config = config;
106
- this.modelOrVoiceId = modelOrVoiceId;
107
- }
108
- async generate(options) {
109
- const baseUrl = this.config.baseUrl ?? ELEVENLABS_BASE_URL;
110
- const ttsModelId = this.config.defaultTtsModelId ?? DEFAULT_TTS_MODEL_ID;
111
- // Per-call `voice` overrides whatever's encoded in the model string.
112
- // Falls back to the model-string voice id, then DEFAULT_VOICE_ID.
113
- const voiceId = options.voice ?? this.modelOrVoiceId ?? DEFAULT_VOICE_ID;
114
- const ourFormat = options.format ?? 'mp3';
115
- const elevenFormat = elevenLabsOutputFormat(ourFormat);
116
- const url = `${baseUrl}/v1/text-to-speech/${encodeURIComponent(voiceId)}?output_format=${elevenFormat}`;
117
- const response = await fetch(url, {
118
- method: 'POST',
119
- headers: {
120
- 'xi-api-key': this.config.apiKey,
121
- 'Content-Type': 'application/json',
122
- 'Accept': acceptForFormat(ourFormat),
123
- },
124
- body: JSON.stringify({
125
- text: options.text,
126
- model_id: ttsModelId,
127
- }),
128
- });
129
- if (!response.ok) {
130
- const text = await safeText(response);
131
- throw new Error(`[Rudder AI] ElevenLabs TTS failed (${response.status}): ${text}`);
132
- }
133
- const arrayBuffer = await response.arrayBuffer();
134
- return {
135
- audio: Buffer.from(arrayBuffer),
136
- format: ourFormat,
137
- // Returned as the voice id the caller used — that's the load-bearing
138
- // discriminator for ElevenLabs (TTS model id is a deployment knob).
139
- model: voiceId,
140
- };
141
- }
142
- }
143
- // ─── STT Adapter ─────────────────────────────────────────
144
- class ElevenLabsSttAdapter {
145
- config;
146
- model;
147
- constructor(config, model) {
148
- this.config = config;
149
- this.model = model;
150
- }
151
- async transcribe(options) {
152
- const baseUrl = this.config.baseUrl ?? ELEVENLABS_BASE_URL;
153
- const url = `${baseUrl}/v1/speech-to-text`;
154
- // Multipart form with the audio Blob + the model id (+ optional language).
155
- // ElevenLabs's only STT model today is `scribe_v1`; the field is
156
- // required so we always send it.
157
- const form = new FormData();
158
- const audioBlob = new Blob([toUint8Array(options.audio)], { type: 'audio/mpeg' });
159
- form.append('file', audioBlob, 'audio');
160
- form.append('model_id', this.model);
161
- if (options.language)
162
- form.append('language_code', options.language);
163
- const response = await fetch(url, {
164
- method: 'POST',
165
- headers: { 'xi-api-key': this.config.apiKey },
166
- body: form,
167
- });
168
- if (!response.ok) {
169
- const text = await safeText(response);
170
- throw new Error(`[Rudder AI] ElevenLabs STT failed (${response.status}): ${text}`);
171
- }
172
- const data = await response.json();
173
- const text = typeof data.text === 'string' ? data.text : '';
174
- const language = typeof data.language_code === 'string' ? data.language_code : undefined;
175
- const duration = lastWordEnd(data.words);
176
- const result = { text, model: this.model };
177
- if (language !== undefined)
178
- result.language = language;
179
- if (duration !== undefined)
180
- result.duration = duration;
181
- return result;
182
- }
183
- }
184
- // ─── Helpers ─────────────────────────────────────────────
185
- function elevenLabsOutputFormat(format) {
186
- switch (format) {
187
- case 'mp3': return 'mp3_44100_128';
188
- case 'opus': return 'opus_48000_128';
189
- case 'wav':
190
- case 'aac':
191
- case 'flac':
192
- throw new Error(`[Rudder AI] ElevenLabs TTS does not support format '${format}'. ` +
193
- `Supported: 'mp3' (default), 'opus'. ` +
194
- `Generate the source as mp3 and re-encode if you need ${format}, or use a provider with native ${format} support.`);
195
- }
196
- }
197
- function acceptForFormat(format) {
198
- switch (format) {
199
- case 'mp3': return 'audio/mpeg';
200
- case 'opus': return 'audio/opus';
201
- // The throwing cases above never reach here, but TypeScript doesn't
202
- // know — return a neutral value so the type stays satisfied.
203
- default: return 'application/octet-stream';
204
- }
205
- }
206
- function toUint8Array(audio) {
207
- if (audio instanceof Uint8Array)
208
- return audio;
209
- if (audio instanceof ArrayBuffer)
210
- return new Uint8Array(audio);
211
- // Buffer is a Uint8Array — the typeof check above already handles it,
212
- // but the function signature widens for safety.
213
- return new Uint8Array(audio);
214
- }
215
- function lastWordEnd(words) {
216
- if (!Array.isArray(words) || words.length === 0)
217
- return undefined;
218
- const last = words[words.length - 1]?.end;
219
- return typeof last === 'number' ? last : undefined;
220
- }
221
- async function safeText(response) {
222
- try {
223
- return await response.text();
224
- }
225
- catch {
226
- return '<unreadable response body>';
227
- }
228
- }
229
- //# sourceMappingURL=elevenlabs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"elevenlabs.js","sourceRoot":"","sources":["../../src/providers/elevenlabs.ts"],"names":[],"mappings":"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"}
@@ -1,132 +0,0 @@
1
- /**
2
- * Minimal structural shape of a cache store the registry can use. Matches
3
- * `@rudderjs/cache`'s `CacheAdapter` (see `packages/cache/src/index.ts`)
4
- * for the methods we touch. Defined locally so this file (which lives in
5
- * the runtime-agnostic main entry) doesn't take a cross-package dep — the
6
- * AiProvider hands in the real adapter at boot.
7
- */
8
- export interface CacheStoreLike {
9
- get<T = unknown>(key: string): Promise<T | null>;
10
- set(key: string, value: unknown, ttlSeconds?: number): Promise<void>;
11
- forget(key: string): Promise<void>;
12
- }
13
- export interface GoogleCacheRegistryOptions {
14
- /** Optional cache backend (cross-process / cross-restart). Falls back to in-process Map. */
15
- store?: CacheStoreLike;
16
- /** Default TTL for newly-created Google `cachedContent` resources. Default `'1h'`. */
17
- defaultTtl?: string;
18
- }
19
- export interface ResolveArgs {
20
- /** Live `@google/genai` client. */
21
- client: GoogleClientLike;
22
- /** Model id the request is going to. Caches are model-bound. */
23
- model: string;
24
- /** Stable hash of cached regions (system + tools + leading-N messages, by model). */
25
- cacheKey: string;
26
- systemInstruction?: {
27
- parts: {
28
- text: string;
29
- }[];
30
- } | undefined;
31
- contents?: unknown[] | undefined;
32
- tools?: unknown[] | undefined;
33
- /** Override the registry's default TTL for this call. Duration string. */
34
- ttl?: string | undefined;
35
- }
36
- export interface GoogleClientLike {
37
- caches: {
38
- create(args: {
39
- model: string;
40
- config: {
41
- systemInstruction?: {
42
- parts: {
43
- text: string;
44
- }[];
45
- };
46
- contents?: unknown[];
47
- tools?: unknown[];
48
- ttl?: string;
49
- displayName?: string;
50
- };
51
- }): Promise<{
52
- name: string;
53
- expireTime?: string;
54
- }>;
55
- delete?(args: {
56
- name: string;
57
- }): Promise<void>;
58
- };
59
- }
60
- /**
61
- * Owns the `cacheKey → cachedContents/*` resource-name map for the Google
62
- * provider. Coordinates concurrent creates, memoizes "too-small" failures,
63
- * and drops stale entries on demand (so the adapter can recreate-on-404).
64
- *
65
- * Storage is pluggable: the AiProvider passes a `CacheStoreLike` (typically
66
- * `@rudderjs/cache`'s adapter) when available, otherwise the registry uses
67
- * an in-process `Map` and warns once. Either way, in-process locking keeps
68
- * concurrent same-key requests from racing on `caches.create` within one
69
- * worker.
70
- */
71
- export declare class GoogleCacheRegistry {
72
- private readonly store?;
73
- private readonly memory;
74
- private readonly inFlight;
75
- private readonly defaultTtl;
76
- private readonly now;
77
- private warnedNoStore;
78
- constructor(opts?: GoogleCacheRegistryOptions);
79
- /**
80
- * Returns the `cachedContents/*` resource name for `args.cacheKey`,
81
- * creating a Google cache resource if one doesn't exist yet. Returns
82
- * `null` when the prompt is below the model's minimum-cacheable size
83
- * (the failure is memoized for ~5min so a tight loop doesn't pound the
84
- * create endpoint).
85
- */
86
- resolve(args: ResolveArgs): Promise<string | null>;
87
- /**
88
- * Drop a cached entry — used when `generateContent` returns 404 because
89
- * the resource expired between create and use. The adapter recreates by
90
- * calling `resolve()` again.
91
- */
92
- forget(cacheKey: string): Promise<void>;
93
- private lookup;
94
- private remember;
95
- private expiryFromTtl;
96
- }
97
- /**
98
- * Build a stable cache key for a Google request. The key combines the
99
- * model id with the marked regions — switching models invalidates the
100
- * cache (Google ties resources to a single model id).
101
- */
102
- export declare function buildGoogleCacheKey(model: string, cache: {
103
- instructions?: boolean;
104
- tools?: boolean;
105
- messages?: number;
106
- } | undefined, system: string | undefined, contents: unknown[], tools: unknown[] | undefined): string | undefined;
107
- /**
108
- * Split a `contents` array at the cache breakpoint. The first part is what
109
- * lives inside the cached resource; the second part is what the request
110
- * sends fresh on every call.
111
- */
112
- export declare function splitContentsAtCache(contents: unknown[], cache: {
113
- messages?: number;
114
- } | undefined): {
115
- cached: unknown[];
116
- fresh: unknown[];
117
- };
118
- /**
119
- * Parse a duration string into milliseconds. Accepts plain seconds-string
120
- * (`'3600s'`) or compact units (`'1h'`, `'30m'`, `'1d'`). Falls back to
121
- * 1 hour on unparseable input.
122
- */
123
- declare function parseDurationMs(s: string): number;
124
- declare function isTooSmallError(err: unknown): boolean;
125
- declare function isNotFoundError(err: unknown): boolean;
126
- export declare const _internals: {
127
- isTooSmallError: typeof isTooSmallError;
128
- isNotFoundError: typeof isNotFoundError;
129
- parseDurationMs: typeof parseDurationMs;
130
- };
131
- export {};
132
- //# sourceMappingURL=google-cache-registry.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"google-cache-registry.d.ts","sourceRoot":"","sources":["../../src/providers/google-cache-registry.ts"],"names":[],"mappings":"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"}
@@ -1,209 +0,0 @@
1
- import { cyrb53Hex } from '../util/hash.js';
2
- const TOO_SMALL_TTL_MS = 5 * 60 * 1000; // 5 minutes — Q4 in plan
3
- const KEY_PREFIX = 'rudderjs:ai:google-cache:';
4
- /**
5
- * Owns the `cacheKey → cachedContents/*` resource-name map for the Google
6
- * provider. Coordinates concurrent creates, memoizes "too-small" failures,
7
- * and drops stale entries on demand (so the adapter can recreate-on-404).
8
- *
9
- * Storage is pluggable: the AiProvider passes a `CacheStoreLike` (typically
10
- * `@rudderjs/cache`'s adapter) when available, otherwise the registry uses
11
- * an in-process `Map` and warns once. Either way, in-process locking keeps
12
- * concurrent same-key requests from racing on `caches.create` within one
13
- * worker.
14
- */
15
- export class GoogleCacheRegistry {
16
- store;
17
- memory = new Map();
18
- inFlight = new Map();
19
- defaultTtl;
20
- now;
21
- warnedNoStore = false;
22
- constructor(opts = {}) {
23
- if (opts.store)
24
- this.store = opts.store;
25
- this.defaultTtl = opts.defaultTtl ?? '1h';
26
- this.now = opts.now ?? Date.now;
27
- }
28
- /**
29
- * Returns the `cachedContents/*` resource name for `args.cacheKey`,
30
- * creating a Google cache resource if one doesn't exist yet. Returns
31
- * `null` when the prompt is below the model's minimum-cacheable size
32
- * (the failure is memoized for ~5min so a tight loop doesn't pound the
33
- * create endpoint).
34
- */
35
- async resolve(args) {
36
- const storeKey = KEY_PREFIX + args.cacheKey;
37
- const existing = await this.lookup(storeKey);
38
- if (existing) {
39
- if ('tooSmall' in existing)
40
- return null;
41
- return existing.name;
42
- }
43
- // In-process dedup — same-worker concurrent calls share one create.
44
- const pending = this.inFlight.get(storeKey);
45
- if (pending)
46
- return pending;
47
- const work = (async () => {
48
- try {
49
- const cache = await args.client.caches.create({
50
- model: args.model,
51
- config: {
52
- ...(args.systemInstruction ? { systemInstruction: args.systemInstruction } : {}),
53
- ...(args.contents ? { contents: args.contents } : {}),
54
- ...(args.tools ? { tools: args.tools } : {}),
55
- ttl: args.ttl ?? this.defaultTtl,
56
- displayName: `rudderjs:${args.cacheKey}`,
57
- },
58
- });
59
- await this.remember(storeKey, { name: cache.name, expiresAt: this.expiryFromTtl(args.ttl ?? this.defaultTtl) });
60
- return cache.name;
61
- }
62
- catch (err) {
63
- if (isTooSmallError(err)) {
64
- await this.remember(storeKey, { tooSmall: true, expiresAt: this.now() + TOO_SMALL_TTL_MS });
65
- console.warn(`[Rudder AI] Google cache for hash ${args.cacheKey} below model minimum — running uncached. ` +
66
- `Future calls with the same prefix will skip cache attempts for 5m.`);
67
- return null;
68
- }
69
- // Any other error — let the caller fall back to uncached for THIS request,
70
- // but don't poison the registry with a "tooSmall" entry.
71
- console.warn(`[Rudder AI] Google caches.create failed for hash ${args.cacheKey} — running uncached. ${err.message}`);
72
- return null;
73
- }
74
- finally {
75
- this.inFlight.delete(storeKey);
76
- }
77
- })();
78
- this.inFlight.set(storeKey, work);
79
- return work;
80
- }
81
- /**
82
- * Drop a cached entry — used when `generateContent` returns 404 because
83
- * the resource expired between create and use. The adapter recreates by
84
- * calling `resolve()` again.
85
- */
86
- async forget(cacheKey) {
87
- const storeKey = KEY_PREFIX + cacheKey;
88
- this.memory.delete(storeKey);
89
- if (this.store)
90
- await this.store.forget(storeKey);
91
- }
92
- // ─── Internals ──────────────────────────────────────────
93
- async lookup(storeKey) {
94
- if (this.store) {
95
- const entry = await this.store.get(storeKey);
96
- if (entry && entry.expiresAt > this.now())
97
- return entry;
98
- if (entry)
99
- await this.store.forget(storeKey);
100
- return null;
101
- }
102
- if (!this.warnedNoStore) {
103
- this.warnedNoStore = true;
104
- console.warn('[Rudder AI] Google prompt caching is using in-memory storage; ' +
105
- 'install @rudderjs/cache for cross-process/restart persistence.');
106
- }
107
- const entry = this.memory.get(storeKey);
108
- if (!entry)
109
- return null;
110
- if (entry.expiresAt > this.now())
111
- return entry;
112
- this.memory.delete(storeKey);
113
- return null;
114
- }
115
- async remember(storeKey, entry) {
116
- if (this.store) {
117
- const ttlSeconds = Math.max(1, Math.ceil((entry.expiresAt - this.now()) / 1000));
118
- await this.store.set(storeKey, entry, ttlSeconds);
119
- return;
120
- }
121
- this.memory.set(storeKey, entry);
122
- }
123
- expiryFromTtl(ttl) {
124
- return this.now() + parseDurationMs(ttl);
125
- }
126
- }
127
- // ─── Helpers ────────────────────────────────────────────────
128
- /**
129
- * Build a stable cache key for a Google request. The key combines the
130
- * model id with the marked regions — switching models invalidates the
131
- * cache (Google ties resources to a single model id).
132
- */
133
- export function buildGoogleCacheKey(model, cache, system, contents, tools) {
134
- if (!cache)
135
- return undefined;
136
- const parts = [{ model }];
137
- if (cache.instructions && system)
138
- parts.push({ s: system });
139
- if (cache.tools && tools && tools.length > 0)
140
- parts.push({ t: tools });
141
- if (cache.messages && cache.messages > 0) {
142
- const sliced = contents.slice(0, cache.messages);
143
- if (sliced.length > 0)
144
- parts.push({ m: sliced });
145
- }
146
- if (parts.length === 1)
147
- return undefined; // only `{ model }` — no actual region
148
- return cyrb53Hex(JSON.stringify(parts));
149
- }
150
- /**
151
- * Split a `contents` array at the cache breakpoint. The first part is what
152
- * lives inside the cached resource; the second part is what the request
153
- * sends fresh on every call.
154
- */
155
- export function splitContentsAtCache(contents, cache) {
156
- const n = Math.max(0, Math.min(contents.length, cache?.messages ?? 0));
157
- return {
158
- cached: contents.slice(0, n),
159
- fresh: contents.slice(n),
160
- };
161
- }
162
- const DURATION_RE = /^(\d+(?:\.\d+)?)(ms|s|m|h|d)$/i;
163
- /**
164
- * Parse a duration string into milliseconds. Accepts plain seconds-string
165
- * (`'3600s'`) or compact units (`'1h'`, `'30m'`, `'1d'`). Falls back to
166
- * 1 hour on unparseable input.
167
- */
168
- function parseDurationMs(s) {
169
- const m = DURATION_RE.exec(s.trim());
170
- if (!m)
171
- return 60 * 60 * 1000;
172
- const n = Number(m[1]);
173
- const unit = (m[2] ?? 'h').toLowerCase();
174
- switch (unit) {
175
- case 'ms': return n;
176
- case 's': return n * 1000;
177
- case 'm': return n * 60 * 1000;
178
- case 'h': return n * 60 * 60 * 1000;
179
- case 'd': return n * 24 * 60 * 60 * 1000;
180
- default: return 60 * 60 * 1000;
181
- }
182
- }
183
- /**
184
- * Convert a duration string to the Google API's `Ns` format (seconds with
185
- * an `s` suffix). Used when forwarding `ttl` to `caches.create`.
186
- *
187
- * @internal exported for tests
188
- */
189
- export function durationToGoogleTtl(s) {
190
- return `${Math.max(1, Math.ceil(parseDurationMs(s) / 1000))}s`;
191
- }
192
- function isTooSmallError(err) {
193
- if (!err)
194
- return false;
195
- const msg = String(err.message ?? err).toLowerCase();
196
- // Google returns INVALID_ARGUMENT with "minimum input token count" or similar wording.
197
- return msg.includes('minimum') && (msg.includes('token') || msg.includes('input'));
198
- }
199
- function isNotFoundError(err) {
200
- if (!err)
201
- return false;
202
- const status = err.status ?? err.code;
203
- if (status === 404)
204
- return true;
205
- const msg = String(err.message ?? err).toLowerCase();
206
- return msg.includes('not found') || msg.includes('404');
207
- }
208
- export const _internals = { isTooSmallError, isNotFoundError, parseDurationMs };
209
- //# sourceMappingURL=google-cache-registry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"google-cache-registry.js","sourceRoot":"","sources":["../../src/providers/google-cache-registry.ts"],"names":[],"mappings":"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"}
@@ -1,38 +0,0 @@
1
- import type { ProviderFactory, ProviderAdapter, ProviderRequestOptions, ProviderResponse, StreamChunk, AiMessage, EmbeddingAdapter, ImageGenerationAdapter, FileAdapter, VectorStoreAdapter } from '../types.js';
2
- import { GoogleCacheRegistry } from './google-cache-registry.js';
3
- export interface GoogleConfig {
4
- apiKey: string;
5
- }
6
- export declare class GoogleProvider implements ProviderFactory {
7
- readonly name = "google";
8
- private readonly config;
9
- private readonly cacheRegistry?;
10
- constructor(config: GoogleConfig, cacheRegistry?: GoogleCacheRegistry);
11
- create(model: string): ProviderAdapter;
12
- createEmbedding(model: string): EmbeddingAdapter;
13
- createImage(model: string): ImageGenerationAdapter;
14
- createFiles(): FileAdapter;
15
- createVectorStores(): VectorStoreAdapter;
16
- }
17
- export declare class GoogleAdapter implements ProviderAdapter {
18
- private readonly config;
19
- private readonly model;
20
- private readonly cacheRegistry?;
21
- private client;
22
- constructor(config: GoogleConfig, model: string, cacheRegistry?: GoogleCacheRegistry | undefined);
23
- private getClient;
24
- /**
25
- * Build the request payload, consulting the cache registry if `options.cache`
26
- * is set. Returns the payload for `generateContent` / `generateContentStream`
27
- * plus the cache key (so the caller can `forget()` it on a 404 stale-cache
28
- * retry).
29
- */
30
- private buildPayload;
31
- generate(options: ProviderRequestOptions): Promise<ProviderResponse>;
32
- stream(options: ProviderRequestOptions): AsyncIterable<StreamChunk>;
33
- }
34
- export declare function toGeminiContents(messages: AiMessage[]): {
35
- system: string | undefined;
36
- contents: unknown[];
37
- };
38
- //# sourceMappingURL=google.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"google.d.ts","sourceRoot":"","sources":["../../src/providers/google.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EACf,sBAAsB,EACtB,gBAAgB,EAChB,WAAW,EAEX,SAAS,EAGT,gBAAgB,EAEhB,sBAAsB,EAGtB,WAAW,EAIX,kBAAkB,EAQnB,MAAM,aAAa,CAAA;AAGpB,OAAO,EACL,mBAAmB,EAKpB,MAAM,4BAA4B,CAAA;AAEnC,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAA;CACf;AAED,qBAAa,cAAe,YAAW,eAAe;IACpD,QAAQ,CAAC,IAAI,YAAW;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAqB;gBAExC,MAAM,EAAE,YAAY,EAAE,aAAa,CAAC,EAAE,mBAAmB;IAKrE,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe;IAItC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB;IAIhD,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,sBAAsB;IAIlD,WAAW,IAAI,WAAW;IAI1B,kBAAkB,IAAI,kBAAkB;CAGzC;AAID,qBAAa,aAAc,YAAW,eAAe;IAIjD,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;IALjC,OAAO,CAAC,MAAM,CAAY;gBAGP,MAAM,EAAE,YAAY,EACpB,KAAK,EAAE,MAAM,EACb,aAAa,CAAC,EAAE,mBAAmB,GAAG,SAAS;YAGpD,SAAS;IAQvB;;;;;OAKG;YACW,YAAY;IA4DpB,QAAQ,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAmBnE,MAAM,CAAC,OAAO,EAAE,sBAAsB,GAAG,aAAa,CAAC,WAAW,CAAC;CAkD3E;AAsBD,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,SAAS,EAAE,GAAG;IAAE,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,QAAQ,EAAE,OAAO,EAAE,CAAA;CAAE,CAoD3G"}