@5ss/ai-tools 2.11.1

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 (342) hide show
  1. package/CHANGELOG.md +112 -0
  2. package/LICENSE +21 -0
  3. package/README.md +221 -0
  4. package/dist/ai-sdk/index.d.ts +15 -0
  5. package/dist/ai-sdk/index.d.ts.map +1 -0
  6. package/dist/ai-sdk/index.js +24 -0
  7. package/dist/ai-sdk/index.js.map +1 -0
  8. package/dist/artifact-D064mHfK.js +44 -0
  9. package/dist/artifact-D064mHfK.js.map +1 -0
  10. package/dist/artifacts-O8g-40Pw.js +404 -0
  11. package/dist/artifacts-O8g-40Pw.js.map +1 -0
  12. package/dist/aws-json-CecFqzqX.js +23 -0
  13. package/dist/aws-json-CecFqzqX.js.map +1 -0
  14. package/dist/aws-service-msttbPrz.js +58 -0
  15. package/dist/aws-service-msttbPrz.js.map +1 -0
  16. package/dist/batch-BMM5dXqL.d.ts +22 -0
  17. package/dist/batch-BMM5dXqL.d.ts.map +1 -0
  18. package/dist/batch-Co1ujeAW.js +67 -0
  19. package/dist/batch-Co1ujeAW.js.map +1 -0
  20. package/dist/bedrock-agentcore-browser-a_qOs-NR.js +182 -0
  21. package/dist/bedrock-agentcore-browser-a_qOs-NR.js.map +1 -0
  22. package/dist/bedrock-agentcore-code-interpreter-MWK-8RhA.js +357 -0
  23. package/dist/bedrock-agentcore-code-interpreter-MWK-8RhA.js.map +1 -0
  24. package/dist/bytes-BxpimpQx.js +45 -0
  25. package/dist/bytes-BxpimpQx.js.map +1 -0
  26. package/dist/client-CCKGsTeI.js +743 -0
  27. package/dist/client-CCKGsTeI.js.map +1 -0
  28. package/dist/cloudflare/index.d.ts +37 -0
  29. package/dist/cloudflare/index.d.ts.map +1 -0
  30. package/dist/cloudflare/index.js +41 -0
  31. package/dist/cloudflare/index.js.map +1 -0
  32. package/dist/cloudflare-browser-B6Yolpin.js +428 -0
  33. package/dist/cloudflare-browser-B6Yolpin.js.map +1 -0
  34. package/dist/cloudflare-email-Dy0KHeDf.js +197 -0
  35. package/dist/cloudflare-email-Dy0KHeDf.js.map +1 -0
  36. package/dist/cloudflare-sandbox-Dp_uNaqW.js +982 -0
  37. package/dist/cloudflare-sandbox-Dp_uNaqW.js.map +1 -0
  38. package/dist/content-type-CORxaxcv.js +49 -0
  39. package/dist/content-type-CORxaxcv.js.map +1 -0
  40. package/dist/core/index.d.ts +4 -0
  41. package/dist/core/index.js +204 -0
  42. package/dist/core/index.js.map +1 -0
  43. package/dist/define-CvpJ_pNP.js +115 -0
  44. package/dist/define-CvpJ_pNP.js.map +1 -0
  45. package/dist/errors-DoSpNHvs.js +20 -0
  46. package/dist/errors-DoSpNHvs.js.map +1 -0
  47. package/dist/errors-aKhko9T1.d.ts +18 -0
  48. package/dist/errors-aKhko9T1.d.ts.map +1 -0
  49. package/dist/eventbridge-scheduler-Bh6GqZY2.js +349 -0
  50. package/dist/eventbridge-scheduler-Bh6GqZY2.js.map +1 -0
  51. package/dist/framework-context-DVIIY8ZO.js +24 -0
  52. package/dist/framework-context-DVIIY8ZO.js.map +1 -0
  53. package/dist/gotenberg-NuJjxyln.js +291 -0
  54. package/dist/gotenberg-NuJjxyln.js.map +1 -0
  55. package/dist/http/index.d.ts +47 -0
  56. package/dist/http/index.d.ts.map +1 -0
  57. package/dist/http/index.js +3 -0
  58. package/dist/http-service-DDNCO1s4.js +254 -0
  59. package/dist/http-service-DDNCO1s4.js.map +1 -0
  60. package/dist/http-service-T7E5UjP8.d.ts +80 -0
  61. package/dist/http-service-T7E5UjP8.d.ts.map +1 -0
  62. package/dist/imessage-BSAFOI8Z.js +154 -0
  63. package/dist/imessage-BSAFOI8Z.js.map +1 -0
  64. package/dist/index-BU4gmYO8.d.ts +254 -0
  65. package/dist/index-BU4gmYO8.d.ts.map +1 -0
  66. package/dist/index-CCivzmxO.d.ts +188 -0
  67. package/dist/index-CCivzmxO.d.ts.map +1 -0
  68. package/dist/index-CLmTrcu5.d.ts +22 -0
  69. package/dist/index-CLmTrcu5.d.ts.map +1 -0
  70. package/dist/index-CZX5OeOF.d.ts +235 -0
  71. package/dist/index-CZX5OeOF.d.ts.map +1 -0
  72. package/dist/index-CdFmEfZO.d.ts +359 -0
  73. package/dist/index-CdFmEfZO.d.ts.map +1 -0
  74. package/dist/index-Cuh6eMWc.d.ts +285 -0
  75. package/dist/index-Cuh6eMWc.d.ts.map +1 -0
  76. package/dist/index-DuOGj7vc.d.ts +107 -0
  77. package/dist/index-DuOGj7vc.d.ts.map +1 -0
  78. package/dist/index-ccZ1XOHw.d.ts +69 -0
  79. package/dist/index-ccZ1XOHw.d.ts.map +1 -0
  80. package/dist/index-n8JTpNf1.d.ts +247 -0
  81. package/dist/index-n8JTpNf1.d.ts.map +1 -0
  82. package/dist/index-pwW1OsOx.d.ts +134 -0
  83. package/dist/index-pwW1OsOx.d.ts.map +1 -0
  84. package/dist/index-zK1ZwS4m.d.ts +347 -0
  85. package/dist/index-zK1ZwS4m.d.ts.map +1 -0
  86. package/dist/limits-hjrO8zUG.js +80 -0
  87. package/dist/limits-hjrO8zUG.js.map +1 -0
  88. package/dist/mastra/index.d.ts +14 -0
  89. package/dist/mastra/index.d.ts.map +1 -0
  90. package/dist/mastra/index.js +26 -0
  91. package/dist/mastra/index.js.map +1 -0
  92. package/dist/mastra-vector-Dhc6XZ8l.js +234 -0
  93. package/dist/mastra-vector-Dhc6XZ8l.js.map +1 -0
  94. package/dist/mcp/index.d.ts +80 -0
  95. package/dist/mcp/index.d.ts.map +1 -0
  96. package/dist/mcp/index.js +97 -0
  97. package/dist/mcp/index.js.map +1 -0
  98. package/dist/modules/artifacts/index.d.ts +337 -0
  99. package/dist/modules/artifacts/index.d.ts.map +1 -0
  100. package/dist/modules/artifacts/index.js +348 -0
  101. package/dist/modules/artifacts/index.js.map +1 -0
  102. package/dist/modules/browser/index.d.ts +516 -0
  103. package/dist/modules/browser/index.d.ts.map +1 -0
  104. package/dist/modules/browser/index.js +475 -0
  105. package/dist/modules/browser/index.js.map +1 -0
  106. package/dist/modules/calendar/index.d.ts +93 -0
  107. package/dist/modules/calendar/index.d.ts.map +1 -0
  108. package/dist/modules/calendar/index.js +131 -0
  109. package/dist/modules/calendar/index.js.map +1 -0
  110. package/dist/modules/code-sandbox/index.d.ts +317 -0
  111. package/dist/modules/code-sandbox/index.d.ts.map +1 -0
  112. package/dist/modules/code-sandbox/index.js +537 -0
  113. package/dist/modules/code-sandbox/index.js.map +1 -0
  114. package/dist/modules/content-type/index.d.ts +22 -0
  115. package/dist/modules/content-type/index.d.ts.map +1 -0
  116. package/dist/modules/content-type/index.js +66 -0
  117. package/dist/modules/content-type/index.js.map +1 -0
  118. package/dist/modules/crypto/index.d.ts +115 -0
  119. package/dist/modules/crypto/index.d.ts.map +1 -0
  120. package/dist/modules/crypto/index.js +139 -0
  121. package/dist/modules/crypto/index.js.map +1 -0
  122. package/dist/modules/document/index.d.ts +575 -0
  123. package/dist/modules/document/index.d.ts.map +1 -0
  124. package/dist/modules/document/index.js +444 -0
  125. package/dist/modules/document/index.js.map +1 -0
  126. package/dist/modules/document-extract/index.d.ts +438 -0
  127. package/dist/modules/document-extract/index.d.ts.map +1 -0
  128. package/dist/modules/document-extract/index.js +127 -0
  129. package/dist/modules/document-extract/index.js.map +1 -0
  130. package/dist/modules/document-render/index.d.ts +336 -0
  131. package/dist/modules/document-render/index.d.ts.map +1 -0
  132. package/dist/modules/document-render/index.js +155 -0
  133. package/dist/modules/document-render/index.js.map +1 -0
  134. package/dist/modules/email/index.d.ts +311 -0
  135. package/dist/modules/email/index.d.ts.map +1 -0
  136. package/dist/modules/email/index.js +167 -0
  137. package/dist/modules/email/index.js.map +1 -0
  138. package/dist/modules/email-message/index.d.ts +95 -0
  139. package/dist/modules/email-message/index.d.ts.map +1 -0
  140. package/dist/modules/email-message/index.js +264 -0
  141. package/dist/modules/email-message/index.js.map +1 -0
  142. package/dist/modules/file-convert/index.d.ts +273 -0
  143. package/dist/modules/file-convert/index.d.ts.map +1 -0
  144. package/dist/modules/file-convert/index.js +103 -0
  145. package/dist/modules/file-convert/index.js.map +1 -0
  146. package/dist/modules/files/index.d.ts +452 -0
  147. package/dist/modules/files/index.d.ts.map +1 -0
  148. package/dist/modules/files/index.js +733 -0
  149. package/dist/modules/files/index.js.map +1 -0
  150. package/dist/modules/image/index.d.ts +342 -0
  151. package/dist/modules/image/index.d.ts.map +1 -0
  152. package/dist/modules/image/index.js +281 -0
  153. package/dist/modules/image/index.js.map +1 -0
  154. package/dist/modules/messaging/index.d.ts +608 -0
  155. package/dist/modules/messaging/index.d.ts.map +1 -0
  156. package/dist/modules/messaging/index.js +1067 -0
  157. package/dist/modules/messaging/index.js.map +1 -0
  158. package/dist/modules/pdf/index.d.ts +287 -0
  159. package/dist/modules/pdf/index.d.ts.map +1 -0
  160. package/dist/modules/pdf/index.js +259 -0
  161. package/dist/modules/pdf/index.js.map +1 -0
  162. package/dist/modules/presentation/index.d.ts +247 -0
  163. package/dist/modules/presentation/index.d.ts.map +1 -0
  164. package/dist/modules/presentation/index.js +12657 -0
  165. package/dist/modules/presentation/index.js.map +1 -0
  166. package/dist/modules/queue/index.d.ts +129 -0
  167. package/dist/modules/queue/index.d.ts.map +1 -0
  168. package/dist/modules/queue/index.js +131 -0
  169. package/dist/modules/queue/index.js.map +1 -0
  170. package/dist/modules/rag/index.d.ts +250 -0
  171. package/dist/modules/rag/index.d.ts.map +1 -0
  172. package/dist/modules/rag/index.js +366 -0
  173. package/dist/modules/rag/index.js.map +1 -0
  174. package/dist/modules/scheduler/index.d.ts +216 -0
  175. package/dist/modules/scheduler/index.d.ts.map +1 -0
  176. package/dist/modules/scheduler/index.js +153 -0
  177. package/dist/modules/scheduler/index.js.map +1 -0
  178. package/dist/modules/skills/index.d.ts +205 -0
  179. package/dist/modules/skills/index.d.ts.map +1 -0
  180. package/dist/modules/skills/index.js +203 -0
  181. package/dist/modules/skills/index.js.map +1 -0
  182. package/dist/modules/tasks/index.d.ts +287 -0
  183. package/dist/modules/tasks/index.d.ts.map +1 -0
  184. package/dist/modules/tasks/index.js +207 -0
  185. package/dist/modules/tasks/index.js.map +1 -0
  186. package/dist/modules/vector-store/index.d.ts +3 -0
  187. package/dist/modules/vector-store/index.js +3 -0
  188. package/dist/modules/web-fetch/index.d.ts +99 -0
  189. package/dist/modules/web-fetch/index.d.ts.map +1 -0
  190. package/dist/modules/web-fetch/index.js +242 -0
  191. package/dist/modules/web-fetch/index.js.map +1 -0
  192. package/dist/object-artifact-store-CMTzCm_G.d.ts +7 -0
  193. package/dist/object-artifact-store-CMTzCm_G.d.ts.map +1 -0
  194. package/dist/object-artifact-store-wZ2j9cto.js +28 -0
  195. package/dist/object-artifact-store-wZ2j9cto.js.map +1 -0
  196. package/dist/pinecone-umY4t6OF.js +190 -0
  197. package/dist/pinecone-umY4t6OF.js.map +1 -0
  198. package/dist/provider-CgDAlg6K.js +34 -0
  199. package/dist/provider-CgDAlg6K.js.map +1 -0
  200. package/dist/qdrant-DMp4NhKR.js +253 -0
  201. package/dist/qdrant-DMp4NhKR.js.map +1 -0
  202. package/dist/resend-BAC38_dA.js +155 -0
  203. package/dist/resend-BAC38_dA.js.map +1 -0
  204. package/dist/s3-CsOaPWMP.js +955 -0
  205. package/dist/s3-CsOaPWMP.js.map +1 -0
  206. package/dist/schemas-ChOAhdo9.js +192 -0
  207. package/dist/schemas-ChOAhdo9.js.map +1 -0
  208. package/dist/slack-Di5BBNpt.js +1455 -0
  209. package/dist/slack-Di5BBNpt.js.map +1 -0
  210. package/dist/sqs-DCwS1i2N.js +225 -0
  211. package/dist/sqs-DCwS1i2N.js.map +1 -0
  212. package/dist/supabase-vector-Dpp9mmJR.js +218 -0
  213. package/dist/supabase-vector-Dpp9mmJR.js.map +1 -0
  214. package/dist/tanstack/index.d.ts +15 -0
  215. package/dist/tanstack/index.d.ts.map +1 -0
  216. package/dist/tanstack/index.js +28 -0
  217. package/dist/tanstack/index.js.map +1 -0
  218. package/dist/teams-DYAHNb39.js +835 -0
  219. package/dist/teams-DYAHNb39.js.map +1 -0
  220. package/dist/telegram-DDXWzkfL.js +734 -0
  221. package/dist/telegram-DDXWzkfL.js.map +1 -0
  222. package/dist/textract-CPLiB22H.js +554 -0
  223. package/dist/textract-CPLiB22H.js.map +1 -0
  224. package/dist/transport-B4vn-XiQ.js +157 -0
  225. package/dist/transport-B4vn-XiQ.js.map +1 -0
  226. package/dist/transport-i96ACAI_.d.ts +46 -0
  227. package/dist/transport-i96ACAI_.d.ts.map +1 -0
  228. package/dist/types-Ccb0DXY9.d.ts +150 -0
  229. package/dist/types-Ccb0DXY9.d.ts.map +1 -0
  230. package/dist/unique-EwBH1JPB.js +19 -0
  231. package/dist/unique-EwBH1JPB.js.map +1 -0
  232. package/dist/vector-store-C3nEO80e.js +193 -0
  233. package/dist/vector-store-C3nEO80e.js.map +1 -0
  234. package/dist/vendors/amazon-sp-api/index.d.ts +526 -0
  235. package/dist/vendors/amazon-sp-api/index.d.ts.map +1 -0
  236. package/dist/vendors/amazon-sp-api/index.js +975 -0
  237. package/dist/vendors/amazon-sp-api/index.js.map +1 -0
  238. package/dist/vendors/bedrock-agentcore-browser/index.d.ts +2 -0
  239. package/dist/vendors/bedrock-agentcore-browser/index.js +2 -0
  240. package/dist/vendors/bedrock-agentcore-code-interpreter/index.d.ts +228 -0
  241. package/dist/vendors/bedrock-agentcore-code-interpreter/index.d.ts.map +1 -0
  242. package/dist/vendors/bedrock-agentcore-code-interpreter/index.js +2 -0
  243. package/dist/vendors/cloudflare-browser/index.d.ts +2 -0
  244. package/dist/vendors/cloudflare-browser/index.js +2 -0
  245. package/dist/vendors/cloudflare-email/index.d.ts +260 -0
  246. package/dist/vendors/cloudflare-email/index.d.ts.map +1 -0
  247. package/dist/vendors/cloudflare-email/index.js +3 -0
  248. package/dist/vendors/cloudflare-sandbox/index.d.ts +565 -0
  249. package/dist/vendors/cloudflare-sandbox/index.d.ts.map +1 -0
  250. package/dist/vendors/cloudflare-sandbox/index.js +2 -0
  251. package/dist/vendors/eventbridge-scheduler/index.d.ts +2 -0
  252. package/dist/vendors/eventbridge-scheduler/index.js +2 -0
  253. package/dist/vendors/gotenberg/index.d.ts +306 -0
  254. package/dist/vendors/gotenberg/index.d.ts.map +1 -0
  255. package/dist/vendors/gotenberg/index.js +2 -0
  256. package/dist/vendors/imessage/index.d.ts +420 -0
  257. package/dist/vendors/imessage/index.d.ts.map +1 -0
  258. package/dist/vendors/imessage/index.js +4 -0
  259. package/dist/vendors/katana/index.d.ts +1570 -0
  260. package/dist/vendors/katana/index.d.ts.map +1 -0
  261. package/dist/vendors/katana/index.js +1639 -0
  262. package/dist/vendors/katana/index.js.map +1 -0
  263. package/dist/vendors/mastra-vector/index.d.ts +120 -0
  264. package/dist/vendors/mastra-vector/index.d.ts.map +1 -0
  265. package/dist/vendors/mastra-vector/index.js +3 -0
  266. package/dist/vendors/pinecone/index.d.ts +75 -0
  267. package/dist/vendors/pinecone/index.d.ts.map +1 -0
  268. package/dist/vendors/pinecone/index.js +3 -0
  269. package/dist/vendors/qdrant/index.d.ts +75 -0
  270. package/dist/vendors/qdrant/index.d.ts.map +1 -0
  271. package/dist/vendors/qdrant/index.js +3 -0
  272. package/dist/vendors/resend/index.d.ts +3 -0
  273. package/dist/vendors/resend/index.js +3 -0
  274. package/dist/vendors/s3/index.d.ts +2 -0
  275. package/dist/vendors/s3/index.js +2 -0
  276. package/dist/vendors/slack/index.d.ts +576 -0
  277. package/dist/vendors/slack/index.d.ts.map +1 -0
  278. package/dist/vendors/slack/index.js +3 -0
  279. package/dist/vendors/sqs/index.d.ts +2 -0
  280. package/dist/vendors/sqs/index.js +2 -0
  281. package/dist/vendors/supabase-vector/index.d.ts +89 -0
  282. package/dist/vendors/supabase-vector/index.d.ts.map +1 -0
  283. package/dist/vendors/supabase-vector/index.js +3 -0
  284. package/dist/vendors/teams/index.d.ts +303 -0
  285. package/dist/vendors/teams/index.d.ts.map +1 -0
  286. package/dist/vendors/teams/index.js +3 -0
  287. package/dist/vendors/telegram/index.d.ts +319 -0
  288. package/dist/vendors/telegram/index.d.ts.map +1 -0
  289. package/dist/vendors/telegram/index.js +3 -0
  290. package/dist/vendors/textract/index.d.ts +2 -0
  291. package/dist/vendors/textract/index.js +2 -0
  292. package/dist/vendors/woocommerce/index.d.ts +1700 -0
  293. package/dist/vendors/woocommerce/index.d.ts.map +1 -0
  294. package/dist/vendors/woocommerce/index.js +1427 -0
  295. package/dist/vendors/woocommerce/index.js.map +1 -0
  296. package/dist/with-auth-CpKqTrGK.js +240 -0
  297. package/dist/with-auth-CpKqTrGK.js.map +1 -0
  298. package/logos/LUCIDE-ATTRIBUTION.txt +4 -0
  299. package/logos/README.md +89 -0
  300. package/logos/amazon.svg +6 -0
  301. package/logos/artifacts.svg +9 -0
  302. package/logos/browser.svg +9 -0
  303. package/logos/calendar.svg +15 -0
  304. package/logos/cloudflare-browser.svg +5 -0
  305. package/logos/cloudflare-email.svg +5 -0
  306. package/logos/cloudflare.svg +4 -0
  307. package/logos/code-sandbox.svg +8 -0
  308. package/logos/content-type.svg +10 -0
  309. package/logos/crypto.svg +7 -0
  310. package/logos/document-extract.svg +12 -0
  311. package/logos/document-render.svg +8 -0
  312. package/logos/document.svg +10 -0
  313. package/logos/email-message.svg +8 -0
  314. package/logos/email.svg +7 -0
  315. package/logos/file-convert.svg +9 -0
  316. package/logos/files.svg +6 -0
  317. package/logos/gotenberg.svg +340 -0
  318. package/logos/image.svg +8 -0
  319. package/logos/imessage.svg +7 -0
  320. package/logos/katana.svg +13 -0
  321. package/logos/mastra.svg +7 -0
  322. package/logos/messaging.svg +7 -0
  323. package/logos/pack-logos.json +48 -0
  324. package/logos/pdf.svg +10 -0
  325. package/logos/pinecone.svg +25 -0
  326. package/logos/presentation.svg +8 -0
  327. package/logos/qdrant.svg +4 -0
  328. package/logos/queue.svg +11 -0
  329. package/logos/rag.svg +18 -0
  330. package/logos/resend.svg +5 -0
  331. package/logos/scheduler.svg +7 -0
  332. package/logos/skills.svg +10 -0
  333. package/logos/slack.svg +14 -0
  334. package/logos/supabase.svg +4 -0
  335. package/logos/tasks.svg +10 -0
  336. package/logos/teams.svg +6 -0
  337. package/logos/telegram.svg +10 -0
  338. package/logos/textract.svg +5 -0
  339. package/logos/vector-store.svg +8 -0
  340. package/logos/web-fetch.svg +8 -0
  341. package/logos/woocommerce.svg +4 -0
  342. package/package.json +373 -0
@@ -0,0 +1,197 @@
1
+ import { t as ToolError } from "./errors-DoSpNHvs.js";
2
+ import { n as defineModule, r as defineTool } from "./define-CvpJ_pNP.js";
3
+ import { n as requireAuth } from "./provider-CgDAlg6K.js";
4
+ import { t as HttpService } from "./http-service-DDNCO1s4.js";
5
+ import { n as runBatchItems, t as batchResultSchema } from "./batch-Co1ujeAW.js";
6
+ import { a as attachmentSchema, c as addressObject, l as addressObjectList, n as assertRecipientLimit, o as namedAddressSchema, t as assertEmailSize } from "./limits-hjrO8zUG.js";
7
+ import { isNumber, isPlainObject, isString, pick } from "es-toolkit";
8
+ import { isArray } from "es-toolkit/compat";
9
+ import { z } from "zod";
10
+ //#region src/vendors/cloudflare-email/contracts.ts
11
+ const cloudflareEmailAuthSchema = z.object({
12
+ account_id: z.string().min(1).describe("Cloudflare account id"),
13
+ api_token: z.string().min(1).describe("Cloudflare API token with Email Sending permission")
14
+ });
15
+ const cloudflareEmailSendInputSchema = z.object({
16
+ to: z.union([namedAddressSchema, z.array(namedAddressSchema).min(1).max(50)]).describe("Primary recipient address or list (max 50 combined to/cc/bcc)"),
17
+ from: namedAddressSchema.describe("Verified sender address on the sending domain"),
18
+ subject: z.string().min(1).max(998).describe("Email subject line"),
19
+ html: z.string().optional().describe("HTML body. Provide html and/or text"),
20
+ text: z.string().optional().describe("Plain text body. Provide html and/or text"),
21
+ cc: z.union([namedAddressSchema, z.array(namedAddressSchema).max(50)]).optional().describe("CC recipients"),
22
+ bcc: z.union([namedAddressSchema, z.array(namedAddressSchema).max(50)]).optional().describe("BCC recipients"),
23
+ reply_to: namedAddressSchema.optional().describe("Reply-To address"),
24
+ headers: z.record(z.string(), z.string()).optional().describe("Custom headers as a string map"),
25
+ attachments: z.array(attachmentSchema).max(32).optional().describe("Up to 32 base64 attachments. Total message must stay under 5 MiB")
26
+ }).refine((v) => Boolean(v.html?.trim() || v.text?.trim()), { message: "Provide html and/or text body" });
27
+ const cloudflareEmailSendOutputSchema = z.object({
28
+ success: z.boolean().describe("Whether Cloudflare accepted the request"),
29
+ accepted: z.array(z.string()).optional().describe("Addresses delivered and/or queued when known"),
30
+ rejected: z.array(z.string()).optional().describe("Addresses permanently rejected when known")
31
+ });
32
+ const cloudflareEmailSendBatchInputSchema = z.object({ messages: z.array(cloudflareEmailSendInputSchema).min(1).max(20).describe("Messages to send (max 20)") });
33
+ const cloudflareEmailSendBatchOutputSchema = batchResultSchema(cloudflareEmailSendOutputSchema);
34
+ //#endregion
35
+ //#region src/vendors/cloudflare-email/domain.ts
36
+ /**
37
+ * Cloudflare Email Sending payload + envelope parse.
38
+ * Vertical helpers: `vendors/_email`.
39
+ */
40
+ function buildSendPayload(input) {
41
+ return {
42
+ ...pick(input, [
43
+ "subject",
44
+ "html",
45
+ "text",
46
+ "headers"
47
+ ]),
48
+ to: addressObjectList(input.to),
49
+ from: addressObject(input.from),
50
+ cc: addressObjectList(input.cc),
51
+ bcc: addressObjectList(input.bcc),
52
+ ...input.reply_to && { replyTo: addressObject(input.reply_to) },
53
+ ...input.attachments && { attachments: input.attachments.map((att) => ({
54
+ content: att.content,
55
+ filename: att.filename,
56
+ type: att.type,
57
+ ...att.disposition && { disposition: att.disposition },
58
+ ...att.content_id && { contentId: att.content_id }
59
+ })) }
60
+ };
61
+ }
62
+ function preflightSend(input) {
63
+ assertRecipientLimit(input);
64
+ const payload = buildSendPayload(input);
65
+ assertEmailSize(payload, input.attachments?.map((a) => a.content));
66
+ return payload;
67
+ }
68
+ function stringArray(value) {
69
+ return isArray(value) ? value.filter(isString) : [];
70
+ }
71
+ function firstError(errors) {
72
+ if (!isArray(errors) || errors.length === 0) return {};
73
+ const first = errors[0];
74
+ if (!isPlainObject(first)) return {};
75
+ const message = first["message"];
76
+ const code = first["code"];
77
+ return {
78
+ ...isString(message) && message.length > 0 && { message },
79
+ ...isNumber(code) && Number.isFinite(code) && { code }
80
+ };
81
+ }
82
+ /** Map Cloudflare `{ success, result | errors }` to tool output or ToolError. */
83
+ function parseSendResult(data) {
84
+ if (!isPlainObject(data)) throw new ToolError("Cloudflare Email returned an unexpected payload", { code: "upstream" });
85
+ if (data["success"] === false) {
86
+ const { message, code: cfCode } = firstError(data["errors"]);
87
+ const text = message ?? "Email API rejected the send";
88
+ const lower = text.toLowerCase();
89
+ const code = lower.includes("unauthorized") || lower.includes("authentication") || cfCode === 1e4 ? "bad_auth" : lower.includes("forbidden") || lower.includes("permission") ? "forbidden" : lower.includes("rate") || lower.includes("too many") ? "rate_limited" : lower.includes("too large") || lower.includes("size") ? "too_large" : "upstream";
90
+ throw new ToolError(text, {
91
+ code,
92
+ retryable: code === "rate_limited",
93
+ details: {
94
+ success: false,
95
+ cloudflare_error_code: cfCode
96
+ }
97
+ });
98
+ }
99
+ const result = data["result"];
100
+ if (!isPlainObject(result)) throw new ToolError("Cloudflare Email returned no result object", { code: "upstream" });
101
+ const delivered = stringArray(result["delivered"]);
102
+ const queued = stringArray(result["queued"]);
103
+ const rejected = stringArray(result["permanent_bounces"]);
104
+ const accepted = [...delivered, ...queued];
105
+ return {
106
+ success: data["success"] === true,
107
+ ...accepted.length > 0 && { accepted },
108
+ ...rejected.length > 0 && { rejected }
109
+ };
110
+ }
111
+ //#endregion
112
+ //#region src/vendors/cloudflare-email/client.ts
113
+ /**
114
+ * Cloudflare Email Sending vendor client.
115
+ * Host: `new CloudflareEmailClient(auth)`. Agent tools: `fromContext(ctx)`.
116
+ */
117
+ var CloudflareEmailClient = class CloudflareEmailClient {
118
+ #auth;
119
+ #http;
120
+ constructor(auth, options = {}) {
121
+ const parsed = cloudflareEmailAuthSchema.safeParse(auth);
122
+ if (!parsed.success) throw new ToolError("Invalid Cloudflare Email auth credentials", {
123
+ code: "bad_auth",
124
+ details: { issues: parsed.error.issues.map((issue) => issue.message) }
125
+ });
126
+ this.#auth = parsed.data;
127
+ this.#http = new HttpService({
128
+ ...options,
129
+ baseURL: "https://api.cloudflare.com/client/v4",
130
+ headers: {
131
+ Authorization: `Bearer ${this.#auth.api_token}`,
132
+ "Content-Type": "application/json"
133
+ },
134
+ label: "Cloudflare Email"
135
+ });
136
+ }
137
+ static fromContext(ctx) {
138
+ const auth = requireAuth(ctx, cloudflareEmailAuthSchema);
139
+ return new CloudflareEmailClient(auth, {
140
+ ...ctx.fetch && { fetch: ctx.fetch },
141
+ ...ctx.signal && { signal: ctx.signal }
142
+ });
143
+ }
144
+ /** POST /accounts/{account_id}/email/sending/send */
145
+ async send(input) {
146
+ const payload = preflightSend(input);
147
+ const path = `/accounts/${encodeURIComponent(this.#auth.account_id)}/email/sending/send`;
148
+ const { data } = await this.#http.post(path, payload, { label: "Cloudflare Email send" });
149
+ return parseSendResult(data);
150
+ }
151
+ /** Sequential batch of independent sends (partial failure OK). */
152
+ async sendBatch(input) {
153
+ return runBatchItems(input.messages, (message) => this.send(message));
154
+ }
155
+ };
156
+ //#endregion
157
+ //#region src/vendors/cloudflare-email/module.ts
158
+ /** Single-email send tool. Host binds auth via withAuth. */
159
+ const cloudflareEmailSendTool = defineTool({
160
+ id: "cloudflare-email-send",
161
+ name: "cloudflareEmailSend",
162
+ description: "Send one email via Cloudflare Email Sending. Subject plus html and/or text. Optional cc, bcc, reply_to, headers, base64 attachments. Total under 5 MiB.",
163
+ inputSchema: cloudflareEmailSendInputSchema,
164
+ outputSchema: cloudflareEmailSendOutputSchema,
165
+ sideEffect: "send",
166
+ runtime: "both",
167
+ execute: async (input, ctx) => CloudflareEmailClient.fromContext(ctx).send(input)
168
+ });
169
+ /** Batch send (max 20). Per-message success/error; does not abort the batch. */
170
+ const cloudflareEmailSendBatchTool = defineTool({
171
+ id: "cloudflare-email-send-batch",
172
+ name: "cloudflareEmailSendBatch",
173
+ description: "Send up to 20 emails via Cloudflare Email Sending. Per-message success or error without aborting the batch.",
174
+ inputSchema: cloudflareEmailSendBatchInputSchema,
175
+ outputSchema: cloudflareEmailSendBatchOutputSchema,
176
+ sideEffect: "send",
177
+ runtime: "both",
178
+ execute: async (input, ctx) => CloudflareEmailClient.fromContext(ctx).sendBatch(input)
179
+ });
180
+ const cloudflareEmailModule = defineModule({
181
+ id: "cloudflare-email",
182
+ title: "Cloudflare Email",
183
+ description: "Cloudflare Email Sending vendor pack: send one email or a batch (max 20). Not a multi-provider email seam.",
184
+ runtime: "both",
185
+ auth: {
186
+ type: "custom",
187
+ schema: cloudflareEmailAuthSchema
188
+ },
189
+ categories: ["email", "cloudflare"],
190
+ classification: "pii",
191
+ tags: ["send"],
192
+ tools: [cloudflareEmailSendTool, cloudflareEmailSendBatchTool]
193
+ });
194
+ //#endregion
195
+ export { cloudflareEmailAuthSchema as a, cloudflareEmailSendInputSchema as c, CloudflareEmailClient as i, cloudflareEmailSendOutputSchema as l, cloudflareEmailSendBatchTool as n, cloudflareEmailSendBatchInputSchema as o, cloudflareEmailSendTool as r, cloudflareEmailSendBatchOutputSchema as s, cloudflareEmailModule as t };
196
+
197
+ //# sourceMappingURL=cloudflare-email-Dy0KHeDf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloudflare-email-Dy0KHeDf.js","names":["#auth","#http"],"sources":["../src/vendors/cloudflare-email/contracts.ts","../src/vendors/cloudflare-email/domain.ts","../src/vendors/cloudflare-email/client.ts","../src/vendors/cloudflare-email/module.ts"],"sourcesContent":["import { z } from 'zod'\n\nimport { batchResultSchema } from '../../shared/batch'\nimport type { NamedAddress } from '../_email'\nimport { attachmentSchema, MAX_BATCH_EMAILS, MAX_EMAIL_BYTES, namedAddressSchema } from '../_email'\n\nexport { MAX_BATCH_EMAILS, MAX_EMAIL_BYTES, namedAddressSchema, attachmentSchema }\nexport type { NamedAddress }\n\nexport const cloudflareEmailAuthSchema = z.object({\n\taccount_id: z.string().min(1).describe('Cloudflare account id'),\n\tapi_token: z.string().min(1).describe('Cloudflare API token with Email Sending permission')\n})\n\nexport type CloudflareEmailAuth = z.infer<typeof cloudflareEmailAuthSchema>\n\nexport const cloudflareEmailSendInputSchema = z\n\t.object({\n\t\tto: z\n\t\t\t.union([namedAddressSchema, z.array(namedAddressSchema).min(1).max(50)])\n\t\t\t.describe('Primary recipient address or list (max 50 combined to/cc/bcc)'),\n\t\tfrom: namedAddressSchema.describe('Verified sender address on the sending domain'),\n\t\tsubject: z.string().min(1).max(998).describe('Email subject line'),\n\t\thtml: z.string().optional().describe('HTML body. Provide html and/or text'),\n\t\ttext: z.string().optional().describe('Plain text body. Provide html and/or text'),\n\t\tcc: z\n\t\t\t.union([namedAddressSchema, z.array(namedAddressSchema).max(50)])\n\t\t\t.optional()\n\t\t\t.describe('CC recipients'),\n\t\tbcc: z\n\t\t\t.union([namedAddressSchema, z.array(namedAddressSchema).max(50)])\n\t\t\t.optional()\n\t\t\t.describe('BCC recipients'),\n\t\treply_to: namedAddressSchema.optional().describe('Reply-To address'),\n\t\theaders: z.record(z.string(), z.string()).optional().describe('Custom headers as a string map'),\n\t\tattachments: z\n\t\t\t.array(attachmentSchema)\n\t\t\t.max(32)\n\t\t\t.optional()\n\t\t\t.describe('Up to 32 base64 attachments. Total message must stay under 5 MiB')\n\t})\n\t.refine((v) => Boolean(v.html?.trim() || v.text?.trim()), {\n\t\tmessage: 'Provide html and/or text body'\n\t})\n\nexport const cloudflareEmailSendOutputSchema = z.object({\n\tsuccess: z.boolean().describe('Whether Cloudflare accepted the request'),\n\taccepted: z.array(z.string()).optional().describe('Addresses delivered and/or queued when known'),\n\trejected: z.array(z.string()).optional().describe('Addresses permanently rejected when known')\n})\n\nexport const cloudflareEmailSendBatchInputSchema = z.object({\n\tmessages: z.array(cloudflareEmailSendInputSchema).min(1).max(MAX_BATCH_EMAILS).describe('Messages to send (max 20)')\n})\n\nexport const cloudflareEmailSendBatchOutputSchema = batchResultSchema(cloudflareEmailSendOutputSchema)\n\nexport type CloudflareEmailSendInput = z.infer<typeof cloudflareEmailSendInputSchema>\nexport type CloudflareEmailSendOutput = z.infer<typeof cloudflareEmailSendOutputSchema>\nexport type CloudflareEmailSendBatchInput = z.infer<typeof cloudflareEmailSendBatchInputSchema>\nexport type CloudflareEmailSendBatchOutput = z.infer<typeof cloudflareEmailSendBatchOutputSchema>\n","/**\n * Cloudflare Email Sending payload + envelope parse.\n * Vertical helpers: `vendors/_email`.\n */\n\nimport { isNumber, isPlainObject, isString, pick } from 'es-toolkit'\nimport { isArray } from 'es-toolkit/compat'\n\nimport { ToolError } from '../../core/errors'\nimport { addressObject, addressObjectList, assertEmailSize, assertRecipientLimit } from '../_email'\nimport type { CloudflareEmailSendInput, CloudflareEmailSendOutput } from './contracts'\n\nexport function buildSendPayload(input: CloudflareEmailSendInput): Record<string, unknown> {\n\treturn {\n\t\t...pick(input, ['subject', 'html', 'text', 'headers']),\n\t\tto: addressObjectList(input.to),\n\t\tfrom: addressObject(input.from),\n\t\tcc: addressObjectList(input.cc),\n\t\tbcc: addressObjectList(input.bcc),\n\t\t...(input.reply_to && { replyTo: addressObject(input.reply_to) }),\n\t\t...(input.attachments && {\n\t\t\tattachments: input.attachments.map((att) => ({\n\t\t\t\tcontent: att.content,\n\t\t\t\tfilename: att.filename,\n\t\t\t\ttype: att.type,\n\t\t\t\t...(att.disposition && { disposition: att.disposition }),\n\t\t\t\t// Cloudflare Email Sending uses camelCase wire fields (same as replyTo).\n\t\t\t\t...(att.content_id && { contentId: att.content_id })\n\t\t\t}))\n\t\t})\n\t}\n}\n\nexport function preflightSend(input: CloudflareEmailSendInput): Record<string, unknown> {\n\tassertRecipientLimit(input)\n\tconst payload = buildSendPayload(input)\n\tassertEmailSize(\n\t\tpayload,\n\t\tinput.attachments?.map((a) => a.content)\n\t)\n\treturn payload\n}\n\nfunction stringArray(value: unknown): string[] {\n\treturn isArray(value) ? value.filter(isString) : []\n}\n\nfunction firstError(errors: unknown): { message?: string; code?: number } {\n\tif (!isArray(errors) || errors.length === 0) return {}\n\tconst first = errors[0]\n\tif (!isPlainObject(first)) return {}\n\tconst message = first['message']\n\tconst code = first['code']\n\treturn {\n\t\t...(isString(message) && message.length > 0 && { message }),\n\t\t...(isNumber(code) && Number.isFinite(code) && { code })\n\t}\n}\n\n/** Map Cloudflare `{ success, result | errors }` to tool output or ToolError. */\nexport function parseSendResult(data: unknown): CloudflareEmailSendOutput {\n\tif (!isPlainObject(data)) {\n\t\tthrow new ToolError('Cloudflare Email returned an unexpected payload', { code: 'upstream' })\n\t}\n\n\tif (data['success'] === false) {\n\t\tconst { message, code: cfCode } = firstError(data['errors'])\n\t\tconst text = message ?? 'Email API rejected the send'\n\t\tconst lower = text.toLowerCase()\n\t\tconst code =\n\t\t\tlower.includes('unauthorized') || lower.includes('authentication') || cfCode === 10000\n\t\t\t\t? 'bad_auth'\n\t\t\t\t: lower.includes('forbidden') || lower.includes('permission')\n\t\t\t\t\t? 'forbidden'\n\t\t\t\t\t: lower.includes('rate') || lower.includes('too many')\n\t\t\t\t\t\t? 'rate_limited'\n\t\t\t\t\t\t: lower.includes('too large') || lower.includes('size')\n\t\t\t\t\t\t\t? 'too_large'\n\t\t\t\t\t\t\t: 'upstream'\n\t\tthrow new ToolError(text, {\n\t\t\tcode,\n\t\t\tretryable: code === 'rate_limited',\n\t\t\tdetails: {\n\t\t\t\tsuccess: false,\n\t\t\t\tcloudflare_error_code: cfCode\n\t\t\t}\n\t\t})\n\t}\n\n\tconst result = data['result']\n\tif (!isPlainObject(result)) {\n\t\tthrow new ToolError('Cloudflare Email returned no result object', { code: 'upstream' })\n\t}\n\n\tconst delivered = stringArray(result['delivered'])\n\tconst queued = stringArray(result['queued'])\n\tconst rejected = stringArray(result['permanent_bounces'])\n\tconst accepted = [...delivered, ...queued]\n\n\treturn {\n\t\tsuccess: data['success'] === true,\n\t\t...(accepted.length > 0 && { accepted }),\n\t\t...(rejected.length > 0 && { rejected })\n\t}\n}\n","/**\n * Cloudflare Email Sending vendor client.\n * Host: `new CloudflareEmailClient(auth)`. Agent tools: `fromContext(ctx)`.\n */\n\nimport { ToolError } from '../../core/errors'\nimport { requireAuth } from '../../core/provider'\nimport type { ToolContext } from '../../core/types'\nimport { runBatchItems } from '../../shared/batch'\nimport { HttpService } from '../../transport/http-service'\nimport type { HttpServiceOptions } from '../../transport/http-service'\nimport type {\n\tCloudflareEmailAuth,\n\tCloudflareEmailSendBatchInput,\n\tCloudflareEmailSendBatchOutput,\n\tCloudflareEmailSendInput,\n\tCloudflareEmailSendOutput\n} from './contracts'\nimport { cloudflareEmailAuthSchema } from './contracts'\nimport { parseSendResult, preflightSend } from './domain'\n\nexport type CloudflareEmailClientOptions = Pick<HttpServiceOptions, 'fetch' | 'signal'>\n\nexport class CloudflareEmailClient {\n\treadonly #auth: CloudflareEmailAuth\n\treadonly #http: HttpService\n\n\tconstructor(auth: CloudflareEmailAuth, options: CloudflareEmailClientOptions = {}) {\n\t\tconst parsed = cloudflareEmailAuthSchema.safeParse(auth)\n\t\tif (!parsed.success) {\n\t\t\tthrow new ToolError('Invalid Cloudflare Email auth credentials', {\n\t\t\t\tcode: 'bad_auth',\n\t\t\t\tdetails: { issues: parsed.error.issues.map((issue) => issue.message) }\n\t\t\t})\n\t\t}\n\t\tthis.#auth = parsed.data\n\t\tthis.#http = new HttpService({\n\t\t\t...options,\n\t\t\tbaseURL: 'https://api.cloudflare.com/client/v4',\n\t\t\theaders: {\n\t\t\t\tAuthorization: `Bearer ${this.#auth.api_token}`,\n\t\t\t\t'Content-Type': 'application/json'\n\t\t\t},\n\t\t\tlabel: 'Cloudflare Email'\n\t\t})\n\t}\n\n\tstatic fromContext(ctx: ToolContext): CloudflareEmailClient {\n\t\tconst auth = requireAuth(ctx, cloudflareEmailAuthSchema)\n\t\treturn new CloudflareEmailClient(auth, {\n\t\t\t...(ctx.fetch && { fetch: ctx.fetch }),\n\t\t\t...(ctx.signal && { signal: ctx.signal })\n\t\t})\n\t}\n\n\t/** POST /accounts/{account_id}/email/sending/send */\n\tasync send(input: CloudflareEmailSendInput): Promise<CloudflareEmailSendOutput> {\n\t\tconst payload = preflightSend(input)\n\t\tconst path = `/accounts/${encodeURIComponent(this.#auth.account_id)}/email/sending/send`\n\t\tconst { data } = await this.#http.post(path, payload, { label: 'Cloudflare Email send' })\n\t\treturn parseSendResult(data)\n\t}\n\n\t/** Sequential batch of independent sends (partial failure OK). */\n\tasync sendBatch(input: CloudflareEmailSendBatchInput): Promise<CloudflareEmailSendBatchOutput> {\n\t\treturn runBatchItems(input.messages, (message) => this.send(message))\n\t}\n}\n","import { defineModule, defineTool } from '../../core/define'\nimport { CloudflareEmailClient } from './client'\nimport {\n\tcloudflareEmailAuthSchema,\n\tcloudflareEmailSendBatchInputSchema,\n\tcloudflareEmailSendBatchOutputSchema,\n\tcloudflareEmailSendInputSchema,\n\tcloudflareEmailSendOutputSchema\n} from './contracts'\n\n/** Single-email send tool. Host binds auth via withAuth. */\nexport const cloudflareEmailSendTool = defineTool({\n\tid: 'cloudflare-email-send',\n\tname: 'cloudflareEmailSend',\n\tdescription:\n\t\t'Send one email via Cloudflare Email Sending. Subject plus html and/or text. Optional cc, bcc, reply_to, headers, base64 attachments. Total under 5 MiB.',\n\tinputSchema: cloudflareEmailSendInputSchema,\n\toutputSchema: cloudflareEmailSendOutputSchema,\n\tsideEffect: 'send',\n\truntime: 'both',\n\texecute: async (input, ctx) => CloudflareEmailClient.fromContext(ctx).send(input)\n})\n\n/** Batch send (max 20). Per-message success/error; does not abort the batch. */\nexport const cloudflareEmailSendBatchTool = defineTool({\n\tid: 'cloudflare-email-send-batch',\n\tname: 'cloudflareEmailSendBatch',\n\tdescription:\n\t\t'Send up to 20 emails via Cloudflare Email Sending. Per-message success or error without aborting the batch.',\n\tinputSchema: cloudflareEmailSendBatchInputSchema,\n\toutputSchema: cloudflareEmailSendBatchOutputSchema,\n\tsideEffect: 'send',\n\truntime: 'both',\n\texecute: async (input, ctx) => CloudflareEmailClient.fromContext(ctx).sendBatch(input)\n})\n\nexport const cloudflareEmailModule = defineModule({\n\tid: 'cloudflare-email',\n\ttitle: 'Cloudflare Email',\n\tdescription:\n\t\t'Cloudflare Email Sending vendor pack: send one email or a batch (max 20). Not a multi-provider email seam.',\n\truntime: 'both',\n\tauth: { type: 'custom', schema: cloudflareEmailAuthSchema },\n\tcategories: ['email', 'cloudflare'],\n\tclassification: 'pii',\n\ttags: ['send'],\n\ttools: [cloudflareEmailSendTool, cloudflareEmailSendBatchTool]\n})\n"],"mappings":";;;;;;;;;;AASA,MAAa,4BAA4B,EAAE,OAAO;CACjD,YAAY,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,uBAAuB;CAC9D,WAAW,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,oDAAoD;AAC3F,CAAC;AAID,MAAa,iCAAiC,EAC5C,OAAO;CACP,IAAI,EACF,MAAM,CAAC,oBAAoB,EAAE,MAAM,kBAAkB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CACvE,SAAS,+DAA+D;CAC1E,MAAM,mBAAmB,SAAS,+CAA+C;CACjF,SAAS,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,SAAS,oBAAoB;CACjE,MAAM,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,qCAAqC;CAC1E,MAAM,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,2CAA2C;CAChF,IAAI,EACF,MAAM,CAAC,oBAAoB,EAAE,MAAM,kBAAkB,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAChE,SAAS,CAAC,CACV,SAAS,eAAe;CAC1B,KAAK,EACH,MAAM,CAAC,oBAAoB,EAAE,MAAM,kBAAkB,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAChE,SAAS,CAAC,CACV,SAAS,gBAAgB;CAC3B,UAAU,mBAAmB,SAAS,CAAC,CAAC,SAAS,kBAAkB;CACnE,SAAS,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,gCAAgC;CAC9F,aAAa,EACX,MAAM,gBAAgB,CAAC,CACvB,IAAI,EAAE,CAAC,CACP,SAAS,CAAC,CACV,SAAS,kEAAkE;AAC9E,CAAC,CAAC,CACD,QAAQ,MAAM,QAAQ,EAAE,MAAM,KAAK,KAAK,EAAE,MAAM,KAAK,CAAC,GAAG,EACzD,SAAS,gCACV,CAAC;AAEF,MAAa,kCAAkC,EAAE,OAAO;CACvD,SAAS,EAAE,QAAQ,CAAC,CAAC,SAAS,yCAAyC;CACvE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,8CAA8C;CAChG,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,2CAA2C;AAC9F,CAAC;AAED,MAAa,sCAAsC,EAAE,OAAO,EAC3D,UAAU,EAAE,MAAM,8BAA8B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAA,EAAoB,CAAC,CAAC,SAAS,2BAA2B,EACpH,CAAC;AAED,MAAa,uCAAuC,kBAAkB,+BAA+B;;;;;;;AC3CrG,SAAgB,iBAAiB,OAA0D;CAC1F,OAAO;EACN,GAAG,KAAK,OAAO;GAAC;GAAW;GAAQ;GAAQ;EAAS,CAAC;EACrD,IAAI,kBAAkB,MAAM,EAAE;EAC9B,MAAM,cAAc,MAAM,IAAI;EAC9B,IAAI,kBAAkB,MAAM,EAAE;EAC9B,KAAK,kBAAkB,MAAM,GAAG;EAChC,GAAI,MAAM,YAAY,EAAE,SAAS,cAAc,MAAM,QAAQ,EAAE;EAC/D,GAAI,MAAM,eAAe,EACxB,aAAa,MAAM,YAAY,KAAK,SAAS;GAC5C,SAAS,IAAI;GACb,UAAU,IAAI;GACd,MAAM,IAAI;GACV,GAAI,IAAI,eAAe,EAAE,aAAa,IAAI,YAAY;GAEtD,GAAI,IAAI,cAAc,EAAE,WAAW,IAAI,WAAW;EACnD,EAAE,EACH;CACD;AACD;AAEA,SAAgB,cAAc,OAA0D;CACvF,qBAAqB,KAAK;CAC1B,MAAM,UAAU,iBAAiB,KAAK;CACtC,gBACC,SACA,MAAM,aAAa,KAAK,MAAM,EAAE,OAAO,CACxC;CACA,OAAO;AACR;AAEA,SAAS,YAAY,OAA0B;CAC9C,OAAO,QAAQ,KAAK,IAAI,MAAM,OAAO,QAAQ,IAAI,CAAC;AACnD;AAEA,SAAS,WAAW,QAAsD;CACzE,IAAI,CAAC,QAAQ,MAAM,KAAK,OAAO,WAAW,GAAG,OAAO,CAAC;CACrD,MAAM,QAAQ,OAAO;CACrB,IAAI,CAAC,cAAc,KAAK,GAAG,OAAO,CAAC;CACnC,MAAM,UAAU,MAAM;CACtB,MAAM,OAAO,MAAM;CACnB,OAAO;EACN,GAAI,SAAS,OAAO,KAAK,QAAQ,SAAS,KAAK,EAAE,QAAQ;EACzD,GAAI,SAAS,IAAI,KAAK,OAAO,SAAS,IAAI,KAAK,EAAE,KAAK;CACvD;AACD;;AAGA,SAAgB,gBAAgB,MAA0C;CACzE,IAAI,CAAC,cAAc,IAAI,GACtB,MAAM,IAAI,UAAU,mDAAmD,EAAE,MAAM,WAAW,CAAC;CAG5F,IAAI,KAAK,eAAe,OAAO;EAC9B,MAAM,EAAE,SAAS,MAAM,WAAW,WAAW,KAAK,SAAS;EAC3D,MAAM,OAAO,WAAW;EACxB,MAAM,QAAQ,KAAK,YAAY;EAC/B,MAAM,OACL,MAAM,SAAS,cAAc,KAAK,MAAM,SAAS,gBAAgB,KAAK,WAAW,MAC9E,aACA,MAAM,SAAS,WAAW,KAAK,MAAM,SAAS,YAAY,IACzD,cACA,MAAM,SAAS,MAAM,KAAK,MAAM,SAAS,UAAU,IAClD,iBACA,MAAM,SAAS,WAAW,KAAK,MAAM,SAAS,MAAM,IACnD,cACA;EACP,MAAM,IAAI,UAAU,MAAM;GACzB;GACA,WAAW,SAAS;GACpB,SAAS;IACR,SAAS;IACT,uBAAuB;GACxB;EACD,CAAC;CACF;CAEA,MAAM,SAAS,KAAK;CACpB,IAAI,CAAC,cAAc,MAAM,GACxB,MAAM,IAAI,UAAU,8CAA8C,EAAE,MAAM,WAAW,CAAC;CAGvF,MAAM,YAAY,YAAY,OAAO,YAAY;CACjD,MAAM,SAAS,YAAY,OAAO,SAAS;CAC3C,MAAM,WAAW,YAAY,OAAO,oBAAoB;CACxD,MAAM,WAAW,CAAC,GAAG,WAAW,GAAG,MAAM;CAEzC,OAAO;EACN,SAAS,KAAK,eAAe;EAC7B,GAAI,SAAS,SAAS,KAAK,EAAE,SAAS;EACtC,GAAI,SAAS,SAAS,KAAK,EAAE,SAAS;CACvC;AACD;;;;;;;ACjFA,IAAa,wBAAb,MAAa,sBAAsB;CAClC;CACA;CAEA,YAAY,MAA2B,UAAwC,CAAC,GAAG;EAClF,MAAM,SAAS,0BAA0B,UAAU,IAAI;EACvD,IAAI,CAAC,OAAO,SACX,MAAM,IAAI,UAAU,6CAA6C;GAChE,MAAM;GACN,SAAS,EAAE,QAAQ,OAAO,MAAM,OAAO,KAAK,UAAU,MAAM,OAAO,EAAE;EACtE,CAAC;EAEF,KAAKA,QAAQ,OAAO;EACpB,KAAKC,QAAQ,IAAI,YAAY;GAC5B,GAAG;GACH,SAAS;GACT,SAAS;IACR,eAAe,UAAU,KAAKD,MAAM;IACpC,gBAAgB;GACjB;GACA,OAAO;EACR,CAAC;CACF;CAEA,OAAO,YAAY,KAAyC;EAC3D,MAAM,OAAO,YAAY,KAAK,yBAAyB;EACvD,OAAO,IAAI,sBAAsB,MAAM;GACtC,GAAI,IAAI,SAAS,EAAE,OAAO,IAAI,MAAM;GACpC,GAAI,IAAI,UAAU,EAAE,QAAQ,IAAI,OAAO;EACxC,CAAC;CACF;;CAGA,MAAM,KAAK,OAAqE;EAC/E,MAAM,UAAU,cAAc,KAAK;EACnC,MAAM,OAAO,aAAa,mBAAmB,KAAKA,MAAM,UAAU,EAAE;EACpE,MAAM,EAAE,SAAS,MAAM,KAAKC,MAAM,KAAK,MAAM,SAAS,EAAE,OAAO,wBAAwB,CAAC;EACxF,OAAO,gBAAgB,IAAI;CAC5B;;CAGA,MAAM,UAAU,OAA+E;EAC9F,OAAO,cAAc,MAAM,WAAW,YAAY,KAAK,KAAK,OAAO,CAAC;CACrE;AACD;;;;ACxDA,MAAa,0BAA0B,WAAW;CACjD,IAAI;CACJ,MAAM;CACN,aACC;CACD,aAAa;CACb,cAAc;CACd,YAAY;CACZ,SAAS;CACT,SAAS,OAAO,OAAO,QAAQ,sBAAsB,YAAY,GAAG,CAAC,CAAC,KAAK,KAAK;AACjF,CAAC;;AAGD,MAAa,+BAA+B,WAAW;CACtD,IAAI;CACJ,MAAM;CACN,aACC;CACD,aAAa;CACb,cAAc;CACd,YAAY;CACZ,SAAS;CACT,SAAS,OAAO,OAAO,QAAQ,sBAAsB,YAAY,GAAG,CAAC,CAAC,UAAU,KAAK;AACtF,CAAC;AAED,MAAa,wBAAwB,aAAa;CACjD,IAAI;CACJ,OAAO;CACP,aACC;CACD,SAAS;CACT,MAAM;EAAE,MAAM;EAAU,QAAQ;CAA0B;CAC1D,YAAY,CAAC,SAAS,YAAY;CAClC,gBAAgB;CAChB,MAAM,CAAC,MAAM;CACb,OAAO,CAAC,yBAAyB,4BAA4B;AAC9D,CAAC"}