@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,311 @@
1
+ import { a as ModuleDefinition, o as ToolContext, s as ToolDefinition } from "../../types-Ccb0DXY9.js";
2
+ import "../../index-CZX5OeOF.js";
3
+ import { s as HttpServiceOptions } from "../../http-service-T7E5UjP8.js";
4
+ import { t as BatchResult } from "../../batch-BMM5dXqL.js";
5
+ import { a as namedAddressSchema, i as attachmentSchema, n as MAX_EMAIL_BYTES, r as NamedAddress, t as MAX_BATCH_EMAILS } from "../../index-CLmTrcu5.js";
6
+ import "../../index-BU4gmYO8.js";
7
+ import { z } from "zod";
8
+ //#region src/modules/email/contracts.d.ts
9
+ declare const emailSenderSchema: z.ZodUnion<readonly [z.ZodEmail, z.ZodObject<{
10
+ email: z.ZodEmail;
11
+ name: z.ZodOptional<z.ZodString>;
12
+ }, z.core.$strip>]>;
13
+ /** Host auth: vendor credentials, provider discriminator, and locked sender. */
14
+ declare const resendEmailAuthSchema: z.ZodObject<{
15
+ api_key: z.ZodString;
16
+ provider: z.ZodLiteral<"resend">;
17
+ sender: z.ZodUnion<readonly [z.ZodEmail, z.ZodObject<{
18
+ email: z.ZodEmail;
19
+ name: z.ZodOptional<z.ZodString>;
20
+ }, z.core.$strip>]>;
21
+ }, z.core.$strip>;
22
+ declare const cloudflareEmailSeamAuthSchema: z.ZodObject<{
23
+ account_id: z.ZodString;
24
+ api_token: z.ZodString;
25
+ provider: z.ZodLiteral<"cloudflare">;
26
+ sender: z.ZodUnion<readonly [z.ZodEmail, z.ZodObject<{
27
+ email: z.ZodEmail;
28
+ name: z.ZodOptional<z.ZodString>;
29
+ }, z.core.$strip>]>;
30
+ }, z.core.$strip>;
31
+ type ResendEmailAuth = z.infer<typeof resendEmailAuthSchema>;
32
+ type CloudflareEmailSeamAuth = z.infer<typeof cloudflareEmailSeamAuthSchema>;
33
+ declare const emailAuthSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
34
+ api_key: z.ZodString;
35
+ provider: z.ZodLiteral<"resend">;
36
+ sender: z.ZodUnion<readonly [z.ZodEmail, z.ZodObject<{
37
+ email: z.ZodEmail;
38
+ name: z.ZodOptional<z.ZodString>;
39
+ }, z.core.$strip>]>;
40
+ }, z.core.$strip>, z.ZodObject<{
41
+ account_id: z.ZodString;
42
+ api_token: z.ZodString;
43
+ provider: z.ZodLiteral<"cloudflare">;
44
+ sender: z.ZodUnion<readonly [z.ZodEmail, z.ZodObject<{
45
+ email: z.ZodEmail;
46
+ name: z.ZodOptional<z.ZodString>;
47
+ }, z.core.$strip>]>;
48
+ }, z.core.$strip>], "provider">;
49
+ type EmailAuth = z.infer<typeof emailAuthSchema>;
50
+ /** Provider-neutral model input. Sender and raw headers remain host/vendor-only. */
51
+ declare const emailSendInputSchema: z.ZodObject<{
52
+ to: z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodEmail, z.ZodObject<{
53
+ email: z.ZodEmail;
54
+ name: z.ZodOptional<z.ZodString>;
55
+ }, z.core.$strip>]>, z.ZodArray<z.ZodUnion<readonly [z.ZodEmail, z.ZodObject<{
56
+ email: z.ZodEmail;
57
+ name: z.ZodOptional<z.ZodString>;
58
+ }, z.core.$strip>]>>]>;
59
+ subject: z.ZodString;
60
+ html: z.ZodOptional<z.ZodString>;
61
+ text: z.ZodOptional<z.ZodString>;
62
+ cc: z.ZodOptional<z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodEmail, z.ZodObject<{
63
+ email: z.ZodEmail;
64
+ name: z.ZodOptional<z.ZodString>;
65
+ }, z.core.$strip>]>, z.ZodArray<z.ZodUnion<readonly [z.ZodEmail, z.ZodObject<{
66
+ email: z.ZodEmail;
67
+ name: z.ZodOptional<z.ZodString>;
68
+ }, z.core.$strip>]>>]>>;
69
+ bcc: z.ZodOptional<z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodEmail, z.ZodObject<{
70
+ email: z.ZodEmail;
71
+ name: z.ZodOptional<z.ZodString>;
72
+ }, z.core.$strip>]>, z.ZodArray<z.ZodUnion<readonly [z.ZodEmail, z.ZodObject<{
73
+ email: z.ZodEmail;
74
+ name: z.ZodOptional<z.ZodString>;
75
+ }, z.core.$strip>]>>]>>;
76
+ reply_to: z.ZodOptional<z.ZodUnion<readonly [z.ZodEmail, z.ZodObject<{
77
+ email: z.ZodEmail;
78
+ name: z.ZodOptional<z.ZodString>;
79
+ }, z.core.$strip>]>>;
80
+ attachments: z.ZodOptional<z.ZodArray<z.ZodObject<{
81
+ content: z.ZodString;
82
+ filename: z.ZodString;
83
+ type: z.ZodString;
84
+ disposition: z.ZodOptional<z.ZodEnum<{
85
+ attachment: "attachment";
86
+ inline: "inline";
87
+ }>>;
88
+ content_id: z.ZodOptional<z.ZodString>;
89
+ }, z.core.$strip>>>;
90
+ }, z.core.$strip>;
91
+ type EmailSendInput = z.infer<typeof emailSendInputSchema>;
92
+ /**
93
+ * Unified result; each provider fills what it has.
94
+ * Resend → id; Cloudflare → accepted/rejected.
95
+ */
96
+ declare const emailSendOutputSchema: z.ZodObject<{
97
+ success: z.ZodBoolean;
98
+ id: z.ZodOptional<z.ZodString>;
99
+ accepted: z.ZodOptional<z.ZodArray<z.ZodString>>;
100
+ rejected: z.ZodOptional<z.ZodArray<z.ZodString>>;
101
+ }, z.core.$strip>;
102
+ declare const emailSendBatchInputSchema: z.ZodObject<{
103
+ messages: z.ZodArray<z.ZodObject<{
104
+ to: z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodEmail, z.ZodObject<{
105
+ email: z.ZodEmail;
106
+ name: z.ZodOptional<z.ZodString>;
107
+ }, z.core.$strip>]>, z.ZodArray<z.ZodUnion<readonly [z.ZodEmail, z.ZodObject<{
108
+ email: z.ZodEmail;
109
+ name: z.ZodOptional<z.ZodString>;
110
+ }, z.core.$strip>]>>]>;
111
+ subject: z.ZodString;
112
+ html: z.ZodOptional<z.ZodString>;
113
+ text: z.ZodOptional<z.ZodString>;
114
+ cc: z.ZodOptional<z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodEmail, z.ZodObject<{
115
+ email: z.ZodEmail;
116
+ name: z.ZodOptional<z.ZodString>;
117
+ }, z.core.$strip>]>, z.ZodArray<z.ZodUnion<readonly [z.ZodEmail, z.ZodObject<{
118
+ email: z.ZodEmail;
119
+ name: z.ZodOptional<z.ZodString>;
120
+ }, z.core.$strip>]>>]>>;
121
+ bcc: z.ZodOptional<z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodEmail, z.ZodObject<{
122
+ email: z.ZodEmail;
123
+ name: z.ZodOptional<z.ZodString>;
124
+ }, z.core.$strip>]>, z.ZodArray<z.ZodUnion<readonly [z.ZodEmail, z.ZodObject<{
125
+ email: z.ZodEmail;
126
+ name: z.ZodOptional<z.ZodString>;
127
+ }, z.core.$strip>]>>]>>;
128
+ reply_to: z.ZodOptional<z.ZodUnion<readonly [z.ZodEmail, z.ZodObject<{
129
+ email: z.ZodEmail;
130
+ name: z.ZodOptional<z.ZodString>;
131
+ }, z.core.$strip>]>>;
132
+ attachments: z.ZodOptional<z.ZodArray<z.ZodObject<{
133
+ content: z.ZodString;
134
+ filename: z.ZodString;
135
+ type: z.ZodString;
136
+ disposition: z.ZodOptional<z.ZodEnum<{
137
+ attachment: "attachment";
138
+ inline: "inline";
139
+ }>>;
140
+ content_id: z.ZodOptional<z.ZodString>;
141
+ }, z.core.$strip>>>;
142
+ }, z.core.$strip>>;
143
+ }, z.core.$strip>;
144
+ declare const emailSendBatchOutputSchema: z.ZodObject<{
145
+ results: z.ZodArray<z.ZodObject<{
146
+ index: z.ZodInt;
147
+ ok: z.ZodBoolean;
148
+ value: z.ZodOptional<z.ZodObject<{
149
+ success: z.ZodBoolean;
150
+ id: z.ZodOptional<z.ZodString>;
151
+ accepted: z.ZodOptional<z.ZodArray<z.ZodString>>;
152
+ rejected: z.ZodOptional<z.ZodArray<z.ZodString>>;
153
+ }, z.core.$strip>>;
154
+ error: z.ZodOptional<z.ZodObject<{
155
+ code: z.ZodString;
156
+ message: z.ZodString;
157
+ retryable: z.ZodOptional<z.ZodBoolean>;
158
+ }, z.core.$strip>>;
159
+ }, z.core.$strip>>;
160
+ succeeded: z.ZodInt;
161
+ failed: z.ZodInt;
162
+ }, z.core.$strip>;
163
+ type EmailSendOutput = z.infer<typeof emailSendOutputSchema>;
164
+ type EmailSendBatchInput = z.infer<typeof emailSendBatchInputSchema>;
165
+ type EmailSendBatchOutput = z.infer<typeof emailSendBatchOutputSchema>;
166
+ /** Shared seam surface — provider classes implement this. */
167
+ type EmailOps = {
168
+ send: (input: EmailSendInput) => Promise<EmailSendOutput>;
169
+ sendBatch: (input: EmailSendBatchInput) => Promise<EmailSendBatchOutput>;
170
+ };
171
+ //#endregion
172
+ //#region src/modules/email/client.d.ts
173
+ type EmailClientOptions = Pick<HttpServiceOptions, 'fetch' | 'signal'>;
174
+ declare class EmailClient implements EmailOps {
175
+ #private;
176
+ constructor(auth: EmailAuth, options?: EmailClientOptions);
177
+ static fromContext(ctx: ToolContext): EmailClient;
178
+ static fromAuth(auth: EmailAuth, ctx?: ToolContext): EmailClient;
179
+ send(input: EmailSendInput): Promise<{
180
+ success: boolean;
181
+ id?: string | undefined;
182
+ accepted?: string[] | undefined;
183
+ rejected?: string[] | undefined;
184
+ }>;
185
+ sendBatch(input: EmailSendBatchInput): Promise<BatchResult<{
186
+ success: boolean;
187
+ id?: string | undefined;
188
+ accepted?: string[] | undefined;
189
+ rejected?: string[] | undefined;
190
+ }>>;
191
+ }
192
+ //#endregion
193
+ //#region src/modules/email/module.d.ts
194
+ declare const emailSendTool: ToolDefinition<{
195
+ to: string | (string | {
196
+ email: string;
197
+ name?: string | undefined;
198
+ })[] | {
199
+ email: string;
200
+ name?: string | undefined;
201
+ };
202
+ subject: string;
203
+ html?: string | undefined;
204
+ text?: string | undefined;
205
+ cc?: string | (string | {
206
+ email: string;
207
+ name?: string | undefined;
208
+ })[] | {
209
+ email: string;
210
+ name?: string | undefined;
211
+ } | undefined;
212
+ bcc?: string | (string | {
213
+ email: string;
214
+ name?: string | undefined;
215
+ })[] | {
216
+ email: string;
217
+ name?: string | undefined;
218
+ } | undefined;
219
+ reply_to?: string | {
220
+ email: string;
221
+ name?: string | undefined;
222
+ } | undefined;
223
+ attachments?: {
224
+ content: string;
225
+ filename: string;
226
+ type: string;
227
+ disposition?: "attachment" | "inline" | undefined;
228
+ content_id?: string | undefined;
229
+ }[] | undefined;
230
+ }, {
231
+ success: boolean;
232
+ id?: string | undefined;
233
+ accepted?: string[] | undefined;
234
+ rejected?: string[] | undefined;
235
+ }>;
236
+ declare const emailSendBatchTool: ToolDefinition<{
237
+ messages: {
238
+ to: string | (string | {
239
+ email: string;
240
+ name?: string | undefined;
241
+ })[] | {
242
+ email: string;
243
+ name?: string | undefined;
244
+ };
245
+ subject: string;
246
+ html?: string | undefined;
247
+ text?: string | undefined;
248
+ cc?: string | (string | {
249
+ email: string;
250
+ name?: string | undefined;
251
+ })[] | {
252
+ email: string;
253
+ name?: string | undefined;
254
+ } | undefined;
255
+ bcc?: string | (string | {
256
+ email: string;
257
+ name?: string | undefined;
258
+ })[] | {
259
+ email: string;
260
+ name?: string | undefined;
261
+ } | undefined;
262
+ reply_to?: string | {
263
+ email: string;
264
+ name?: string | undefined;
265
+ } | undefined;
266
+ attachments?: {
267
+ content: string;
268
+ filename: string;
269
+ type: string;
270
+ disposition?: "attachment" | "inline" | undefined;
271
+ content_id?: string | undefined;
272
+ }[] | undefined;
273
+ }[];
274
+ }, {
275
+ results: {
276
+ index: number;
277
+ ok: boolean;
278
+ value?: {
279
+ success: boolean;
280
+ id?: string | undefined;
281
+ accepted?: string[] | undefined;
282
+ rejected?: string[] | undefined;
283
+ } | undefined;
284
+ error?: {
285
+ code: string;
286
+ message: string;
287
+ retryable?: boolean | undefined;
288
+ } | undefined;
289
+ }[];
290
+ succeeded: number;
291
+ failed: number;
292
+ }>;
293
+ declare const emailModule: ModuleDefinition<{
294
+ api_key: string;
295
+ provider: "resend";
296
+ sender: string | {
297
+ email: string;
298
+ name?: string | undefined;
299
+ };
300
+ } | {
301
+ account_id: string;
302
+ api_token: string;
303
+ provider: "cloudflare";
304
+ sender: string | {
305
+ email: string;
306
+ name?: string | undefined;
307
+ };
308
+ }>;
309
+ //#endregion
310
+ export { type CloudflareEmailSeamAuth, type EmailAuth, EmailClient, type EmailClientOptions, type EmailSendBatchInput, type EmailSendBatchOutput, type EmailSendInput, type EmailSendOutput, MAX_BATCH_EMAILS, MAX_EMAIL_BYTES, type NamedAddress, type ResendEmailAuth, attachmentSchema, cloudflareEmailSeamAuthSchema, emailAuthSchema, emailModule, emailSendBatchInputSchema, emailSendBatchOutputSchema, emailSendBatchTool, emailSendInputSchema, emailSendOutputSchema, emailSendTool, emailSenderSchema, namedAddressSchema, resendEmailAuthSchema };
311
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/modules/email/contracts.ts","../../../src/modules/email/client.ts","../../../src/modules/email/module.ts"],"mappings":";;;;;;;;cAqBa,mBAAiB,EAAA,mBAAA,EAAA,UAAA,EAAA;;;GAE7B,EAAA,KAAA;;cAGY,uBAAqB,EAAA;;;;;;;GAGhC,EAAA,KAAA;cAEW,+BAA6B,EAAA;;;;;;;;GAGxC,EAAA,KAAA;KAEU,kBAAkB,EAAE,aAAa;KACjC,0BAA0B,EAAE,aAAa;cAExC,iBAAe,EAAA,uBAAA,EAAA;;;;;;;;;;;;;;;GAA2F,EAAA,KAAA;KAE3G,YAAY,EAAE,aAAa;;cAK1B,sBAAoB,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAI9B,EAAA,KAAA;KACS,iBAAiB,EAAE,aAAa;;;;;cAO/B,uBAAqB,EAAA;;;;;GAKhC,EAAA,KAAA;cAEW,2BAAyB,EAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAEpC,EAAA,KAAA;cAEW,4BAA0B,EAAA;;;;;;;;;;;;;;;;;;GAA2C,EAAA,KAAA;KAEtE,kBAAkB,EAAE,aAAa;KACjC,sBAAsB,EAAE,aAAa;KACrC,uBAAuB,EAAE,aAAa;;KAGtC;EACX,OAAO,OAAO,mBAAmB,QAAQ;EACzC,YAAY,OAAO,wBAAwB,QAAQ;;;;KCzDxC,qBAAqB,KAAK;cAgCzB,uBAAuB;;EAInC,YAAY,MAAM,WAAW,UAAS;SAK/B,YAAY,KAAK,cAAc;SAK/B,SAAS,MAAM,WAAW,MAAK,cAAmB;EAInD,KAAK,OAAO,iBAAc;;;;;;EAQhC,UAAU,OAAO,sBAAmB,QAAnB;;;;;;;;;cClEL,eAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAYA,oBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAYA,aAAA"}
@@ -0,0 +1,167 @@
1
+ import { n as isToolError, 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 { n as runBatchItems, t as batchResultSchema } from "../../batch-Co1ujeAW.js";
5
+ import { a as attachmentSchema, i as MAX_EMAIL_BYTES, o as namedAddressSchema, r as MAX_BATCH_EMAILS } from "../../limits-hjrO8zUG.js";
6
+ import { a as cloudflareEmailAuthSchema, i as CloudflareEmailClient } from "../../cloudflare-email-Dy0KHeDf.js";
7
+ import { a as resendAuthSchema, c as resendSendInputSchema, i as ResendClient } from "../../resend-BAC38_dA.js";
8
+ import { z } from "zod";
9
+ //#region src/modules/email/contracts.ts
10
+ /**
11
+ * Email seam contracts — vendor I/O + provider auth union.
12
+ */
13
+ const emailSenderSchema = namedAddressSchema.describe("Verified sender locked to this provider binding. Model inputs cannot override it");
14
+ /** Host auth: vendor credentials, provider discriminator, and locked sender. */
15
+ const resendEmailAuthSchema = resendAuthSchema.extend({
16
+ provider: z.literal("resend"),
17
+ sender: emailSenderSchema
18
+ });
19
+ const cloudflareEmailSeamAuthSchema = cloudflareEmailAuthSchema.extend({
20
+ provider: z.literal("cloudflare"),
21
+ sender: emailSenderSchema
22
+ });
23
+ const emailAuthSchema = z.discriminatedUnion("provider", [resendEmailAuthSchema, cloudflareEmailSeamAuthSchema]);
24
+ const { from: _from, headers: _headers, ...emailSendInputShape } = resendSendInputSchema.shape;
25
+ /** Provider-neutral model input. Sender and raw headers remain host/vendor-only. */
26
+ const emailSendInputSchema = z.object(emailSendInputShape).refine((input) => Boolean(input.html?.trim() || input.text?.trim()), { message: "Provide html and/or text body" });
27
+ /**
28
+ * Unified result; each provider fills what it has.
29
+ * Resend → id; Cloudflare → accepted/rejected.
30
+ */
31
+ const emailSendOutputSchema = z.object({
32
+ success: z.boolean().describe("Whether the provider accepted the request"),
33
+ id: z.string().optional().describe("Provider message id when available"),
34
+ accepted: z.array(z.string()).optional().describe("Addresses delivered and/or queued when known"),
35
+ rejected: z.array(z.string()).optional().describe("Addresses permanently rejected when known")
36
+ });
37
+ const emailSendBatchInputSchema = z.object({ messages: z.array(emailSendInputSchema).min(1).max(20).describe("Messages to send (max 20)") });
38
+ const emailSendBatchOutputSchema = batchResultSchema(emailSendOutputSchema);
39
+ //#endregion
40
+ //#region src/modules/email/providers/cloudflare.ts
41
+ var CloudflareEmailProvider = class {
42
+ #client;
43
+ constructor(auth, options = {}) {
44
+ const { provider: _provider, sender: _sender, ...vendorAuth } = auth;
45
+ this.#client = new CloudflareEmailClient(vendorAuth, options);
46
+ }
47
+ async send(input) {
48
+ const result = await this.#client.send(input);
49
+ return {
50
+ success: result.success,
51
+ ...result.accepted && result.accepted.length > 0 && { accepted: result.accepted },
52
+ ...result.rejected && result.rejected.length > 0 && { rejected: result.rejected }
53
+ };
54
+ }
55
+ };
56
+ //#endregion
57
+ //#region src/modules/email/providers/resend.ts
58
+ var ResendEmailProvider = class {
59
+ #client;
60
+ constructor(auth, options = {}) {
61
+ const { provider: _provider, sender: _sender, ...vendorAuth } = auth;
62
+ this.#client = new ResendClient(vendorAuth, options);
63
+ }
64
+ async send(input) {
65
+ const result = await this.#client.send(input);
66
+ return {
67
+ success: result.success,
68
+ ...result.id && { id: result.id }
69
+ };
70
+ }
71
+ };
72
+ //#endregion
73
+ //#region src/modules/email/client.ts
74
+ /**
75
+ * Email seam client — picks resend / cloudflare from host auth.
76
+ */
77
+ function transportOptions(ctx) {
78
+ return {
79
+ ...ctx.fetch && { fetch: ctx.fetch },
80
+ ...ctx.signal && { signal: ctx.signal }
81
+ };
82
+ }
83
+ function providerFor(auth, options) {
84
+ switch (auth.provider) {
85
+ case "resend": return new ResendEmailProvider(auth, options);
86
+ case "cloudflare": return new CloudflareEmailProvider(auth, options);
87
+ }
88
+ }
89
+ function emailDeliveryError(error) {
90
+ if (isToolError(error)) return new ToolError("Email delivery was rejected", {
91
+ code: error.code,
92
+ retryable: error.retryable,
93
+ cause: error
94
+ });
95
+ return new ToolError("Email delivery was rejected", {
96
+ code: "upstream",
97
+ cause: error
98
+ });
99
+ }
100
+ var EmailClient = class EmailClient {
101
+ #provider;
102
+ #sender;
103
+ constructor(auth, options = {}) {
104
+ this.#provider = providerFor(auth, options);
105
+ this.#sender = auth.sender;
106
+ }
107
+ static fromContext(ctx) {
108
+ const auth = requireAuth(ctx, emailAuthSchema);
109
+ return new EmailClient(auth, transportOptions(ctx));
110
+ }
111
+ static fromAuth(auth, ctx = {}) {
112
+ return new EmailClient(auth, transportOptions(ctx));
113
+ }
114
+ async send(input) {
115
+ try {
116
+ return await this.#provider.send({
117
+ ...input,
118
+ from: this.#sender
119
+ });
120
+ } catch (error) {
121
+ throw emailDeliveryError(error);
122
+ }
123
+ }
124
+ sendBatch(input) {
125
+ return runBatchItems(input.messages, (message) => this.send(message));
126
+ }
127
+ };
128
+ //#endregion
129
+ //#region src/modules/email/module.ts
130
+ const emailSendTool = defineTool({
131
+ id: "email-send",
132
+ name: "sendEmail",
133
+ description: "Send one email via the bound email provider. Subject plus html and/or text. Optional cc, bcc, reply_to, headers, base64 attachments. Total under 5 MiB.",
134
+ inputSchema: emailSendInputSchema,
135
+ outputSchema: emailSendOutputSchema,
136
+ sideEffect: "send",
137
+ runtime: "both",
138
+ execute: async (input, ctx) => EmailClient.fromContext(ctx).send(input)
139
+ });
140
+ const emailSendBatchTool = defineTool({
141
+ id: "email-send-batch",
142
+ name: "sendEmailBatch",
143
+ description: "Send up to 20 emails via the bound email provider. Per-message success or error without aborting the batch.",
144
+ inputSchema: emailSendBatchInputSchema,
145
+ outputSchema: emailSendBatchOutputSchema,
146
+ sideEffect: "send",
147
+ runtime: "both",
148
+ execute: async (input, ctx) => EmailClient.fromContext(ctx).sendBatch(input)
149
+ });
150
+ const emailModule = defineModule({
151
+ id: "email",
152
+ title: "Email",
153
+ description: "Send transactional email from the configured sender. The model supplies recipients and content, never the sender identity.",
154
+ runtime: "both",
155
+ auth: {
156
+ type: "custom",
157
+ schema: emailAuthSchema
158
+ },
159
+ categories: ["email", "messaging"],
160
+ classification: "pii",
161
+ tags: ["send"],
162
+ tools: [emailSendTool, emailSendBatchTool]
163
+ });
164
+ //#endregion
165
+ export { EmailClient, MAX_BATCH_EMAILS, MAX_EMAIL_BYTES, attachmentSchema, cloudflareEmailSeamAuthSchema, emailAuthSchema, emailModule, emailSendBatchInputSchema, emailSendBatchOutputSchema, emailSendBatchTool, emailSendInputSchema, emailSendOutputSchema, emailSendTool, emailSenderSchema, namedAddressSchema, resendEmailAuthSchema };
166
+
167
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["cloudflareEmailVendorAuthSchema","#client","#client","#provider","#sender"],"sources":["../../../src/modules/email/contracts.ts","../../../src/modules/email/providers/cloudflare.ts","../../../src/modules/email/providers/resend.ts","../../../src/modules/email/client.ts","../../../src/modules/email/module.ts"],"sourcesContent":["/**\n * Email seam contracts — vendor I/O + provider auth union.\n */\n\nimport { z } from 'zod'\n\nimport { batchResultSchema } from '../../shared/batch'\nimport { cloudflareEmailAuthSchema as cloudflareEmailVendorAuthSchema } from '../../vendors/cloudflare-email'\nimport {\n\tattachmentSchema,\n\tMAX_BATCH_EMAILS,\n\tMAX_EMAIL_BYTES,\n\tnamedAddressSchema,\n\tresendAuthSchema,\n\tresendSendInputSchema\n} from '../../vendors/resend'\nimport type { NamedAddress, ResendSendInput } from '../../vendors/resend'\n\nexport { attachmentSchema, MAX_BATCH_EMAILS, MAX_EMAIL_BYTES, namedAddressSchema }\nexport type { NamedAddress }\n\nexport const emailSenderSchema = namedAddressSchema.describe(\n\t'Verified sender locked to this provider binding. Model inputs cannot override it'\n)\n\n/** Host auth: vendor credentials, provider discriminator, and locked sender. */\nexport const resendEmailAuthSchema = resendAuthSchema.extend({\n\tprovider: z.literal('resend'),\n\tsender: emailSenderSchema\n})\n\nexport const cloudflareEmailSeamAuthSchema = cloudflareEmailVendorAuthSchema.extend({\n\tprovider: z.literal('cloudflare'),\n\tsender: emailSenderSchema\n})\n\nexport type ResendEmailAuth = z.infer<typeof resendEmailAuthSchema>\nexport type CloudflareEmailSeamAuth = z.infer<typeof cloudflareEmailSeamAuthSchema>\n\nexport const emailAuthSchema = z.discriminatedUnion('provider', [resendEmailAuthSchema, cloudflareEmailSeamAuthSchema])\n\nexport type EmailAuth = z.infer<typeof emailAuthSchema>\n\nconst { from: _from, headers: _headers, ...emailSendInputShape } = resendSendInputSchema.shape\n\n/** Provider-neutral model input. Sender and raw headers remain host/vendor-only. */\nexport const emailSendInputSchema = z\n\t.object(emailSendInputShape)\n\t.refine((input) => Boolean(input.html?.trim() || input.text?.trim()), {\n\t\tmessage: 'Provide html and/or text body'\n\t})\nexport type EmailSendInput = z.infer<typeof emailSendInputSchema>\nexport type EmailProviderSendInput = ResendSendInput\n\n/**\n * Unified result; each provider fills what it has.\n * Resend → id; Cloudflare → accepted/rejected.\n */\nexport const emailSendOutputSchema = z.object({\n\tsuccess: z.boolean().describe('Whether the provider accepted the request'),\n\tid: z.string().optional().describe('Provider message id when available'),\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 emailSendBatchInputSchema = z.object({\n\tmessages: z.array(emailSendInputSchema).min(1).max(MAX_BATCH_EMAILS).describe('Messages to send (max 20)')\n})\n\nexport const emailSendBatchOutputSchema = batchResultSchema(emailSendOutputSchema)\n\nexport type EmailSendOutput = z.infer<typeof emailSendOutputSchema>\nexport type EmailSendBatchInput = z.infer<typeof emailSendBatchInputSchema>\nexport type EmailSendBatchOutput = z.infer<typeof emailSendBatchOutputSchema>\n\n/** Shared seam surface — provider classes implement this. */\nexport type EmailOps = {\n\tsend: (input: EmailSendInput) => Promise<EmailSendOutput>\n\tsendBatch: (input: EmailSendBatchInput) => Promise<EmailSendBatchOutput>\n}\n\n/** Internal seam provider surface after EmailClient injects the locked sender. */\nexport type EmailProviderOps = {\n\tsend: (input: EmailProviderSendInput) => Promise<EmailSendOutput>\n}\n","/**\n * Cloudflare Email provider for the email seam. Wraps `CloudflareEmailClient`.\n */\n\nimport type { HttpServiceOptions } from '../../../transport/http-service'\nimport { CloudflareEmailClient } from '../../../vendors/cloudflare-email'\nimport type { CloudflareEmailSeamAuth, EmailProviderOps, EmailProviderSendInput, EmailSendOutput } from '../contracts'\n\nexport type CloudflareEmailProviderOptions = Pick<HttpServiceOptions, 'fetch' | 'signal'>\n\nexport class CloudflareEmailProvider implements EmailProviderOps {\n\treadonly #client: CloudflareEmailClient\n\n\tconstructor(auth: CloudflareEmailSeamAuth, options: CloudflareEmailProviderOptions = {}) {\n\t\tconst { provider: _provider, sender: _sender, ...vendorAuth } = auth\n\t\tthis.#client = new CloudflareEmailClient(vendorAuth, options)\n\t}\n\n\tasync send(input: EmailProviderSendInput): Promise<EmailSendOutput> {\n\t\tconst result = await this.#client.send(input)\n\t\treturn {\n\t\t\tsuccess: result.success,\n\t\t\t...(result.accepted && result.accepted.length > 0 && { accepted: result.accepted }),\n\t\t\t...(result.rejected && result.rejected.length > 0 && { rejected: result.rejected })\n\t\t}\n\t}\n}\n","/**\n * Resend provider for the email seam. Wraps `ResendClient`.\n */\n\nimport type { HttpServiceOptions } from '../../../transport/http-service'\nimport { ResendClient } from '../../../vendors/resend'\nimport type { EmailProviderOps, EmailProviderSendInput, EmailSendOutput, ResendEmailAuth } from '../contracts'\n\nexport type ResendEmailProviderOptions = Pick<HttpServiceOptions, 'fetch' | 'signal'>\n\nexport class ResendEmailProvider implements EmailProviderOps {\n\treadonly #client: ResendClient\n\n\tconstructor(auth: ResendEmailAuth, options: ResendEmailProviderOptions = {}) {\n\t\tconst { provider: _provider, sender: _sender, ...vendorAuth } = auth\n\t\tthis.#client = new ResendClient(vendorAuth, options)\n\t}\n\n\tasync send(input: EmailProviderSendInput): Promise<EmailSendOutput> {\n\t\tconst result = await this.#client.send(input)\n\t\treturn {\n\t\t\tsuccess: result.success,\n\t\t\t...(result.id && { id: result.id })\n\t\t}\n\t}\n}\n","/**\n * Email seam client — picks resend / cloudflare from host auth.\n */\n\nimport { isToolError, ToolError } from '../../core/errors'\nimport { requireAuth } from '../../core/provider'\nimport type { ToolContext } from '../../core/types'\nimport { runBatchItems } from '../../shared/batch'\nimport type { HttpServiceOptions } from '../../transport/http-service'\nimport { emailAuthSchema } from './contracts'\nimport type {\n\tEmailAuth,\n\tEmailOps,\n\tEmailProviderOps,\n\tEmailSendBatchInput,\n\tEmailSendInput,\n\tNamedAddress\n} from './contracts'\nimport { CloudflareEmailProvider } from './providers/cloudflare'\nimport { ResendEmailProvider } from './providers/resend'\n\nexport type EmailClientOptions = Pick<HttpServiceOptions, 'fetch' | 'signal'>\n\nfunction transportOptions(ctx: ToolContext): EmailClientOptions {\n\treturn {\n\t\t...(ctx.fetch && { fetch: ctx.fetch }),\n\t\t...(ctx.signal && { signal: ctx.signal })\n\t}\n}\n\nfunction providerFor(auth: EmailAuth, options: EmailClientOptions): EmailProviderOps {\n\tswitch (auth.provider) {\n\t\tcase 'resend':\n\t\t\treturn new ResendEmailProvider(auth, options)\n\t\tcase 'cloudflare':\n\t\t\treturn new CloudflareEmailProvider(auth, options)\n\t}\n}\n\nfunction emailDeliveryError(error: unknown): ToolError {\n\tif (isToolError(error)) {\n\t\treturn new ToolError('Email delivery was rejected', {\n\t\t\tcode: error.code,\n\t\t\tretryable: error.retryable,\n\t\t\tcause: error\n\t\t})\n\t}\n\treturn new ToolError('Email delivery was rejected', {\n\t\tcode: 'upstream',\n\t\tcause: error\n\t})\n}\n\nexport class EmailClient implements EmailOps {\n\treadonly #provider: EmailProviderOps\n\treadonly #sender: NamedAddress\n\n\tconstructor(auth: EmailAuth, options: EmailClientOptions = {}) {\n\t\tthis.#provider = providerFor(auth, options)\n\t\tthis.#sender = auth.sender\n\t}\n\n\tstatic fromContext(ctx: ToolContext): EmailClient {\n\t\tconst auth = requireAuth(ctx, emailAuthSchema)\n\t\treturn new EmailClient(auth, transportOptions(ctx))\n\t}\n\n\tstatic fromAuth(auth: EmailAuth, ctx: ToolContext = {}): EmailClient {\n\t\treturn new EmailClient(auth, transportOptions(ctx))\n\t}\n\n\tasync send(input: EmailSendInput) {\n\t\ttry {\n\t\t\treturn await this.#provider.send({ ...input, from: this.#sender })\n\t\t} catch (error) {\n\t\t\tthrow emailDeliveryError(error)\n\t\t}\n\t}\n\n\tsendBatch(input: EmailSendBatchInput) {\n\t\treturn runBatchItems(input.messages, (message) => this.send(message))\n\t}\n}\n","import { defineModule, defineTool } from '../../core/define'\nimport { EmailClient } from './client'\nimport {\n\temailAuthSchema,\n\temailSendBatchInputSchema,\n\temailSendBatchOutputSchema,\n\temailSendInputSchema,\n\temailSendOutputSchema\n} from './contracts'\n\nexport type { EmailAuth } from './contracts'\nexport { emailAuthSchema }\n\nexport const emailSendTool = defineTool({\n\tid: 'email-send',\n\tname: 'sendEmail',\n\tdescription:\n\t\t'Send one email via the bound email provider. Subject plus html and/or text. Optional cc, bcc, reply_to, headers, base64 attachments. Total under 5 MiB.',\n\tinputSchema: emailSendInputSchema,\n\toutputSchema: emailSendOutputSchema,\n\tsideEffect: 'send',\n\truntime: 'both',\n\texecute: async (input, ctx) => EmailClient.fromContext(ctx).send(input)\n})\n\nexport const emailSendBatchTool = defineTool({\n\tid: 'email-send-batch',\n\tname: 'sendEmailBatch',\n\tdescription:\n\t\t'Send up to 20 emails via the bound email provider. Per-message success or error without aborting the batch.',\n\tinputSchema: emailSendBatchInputSchema,\n\toutputSchema: emailSendBatchOutputSchema,\n\tsideEffect: 'send',\n\truntime: 'both',\n\texecute: async (input, ctx) => EmailClient.fromContext(ctx).sendBatch(input)\n})\n\nexport const emailModule = defineModule({\n\tid: 'email',\n\ttitle: 'Email',\n\tdescription:\n\t\t'Send transactional email from the configured sender. The model supplies recipients and content, never the sender identity.',\n\truntime: 'both',\n\tauth: { type: 'custom', schema: emailAuthSchema },\n\tcategories: ['email', 'messaging'],\n\tclassification: 'pii',\n\ttags: ['send'],\n\ttools: [emailSendTool, emailSendBatchTool]\n})\n"],"mappings":";;;;;;;;;;;;AAqBA,MAAa,oBAAoB,mBAAmB,SACnD,kFACD;;AAGA,MAAa,wBAAwB,iBAAiB,OAAO;CAC5D,UAAU,EAAE,QAAQ,QAAQ;CAC5B,QAAQ;AACT,CAAC;AAED,MAAa,gCAAgCA,0BAAgC,OAAO;CACnF,UAAU,EAAE,QAAQ,YAAY;CAChC,QAAQ;AACT,CAAC;AAKD,MAAa,kBAAkB,EAAE,mBAAmB,YAAY,CAAC,uBAAuB,6BAA6B,CAAC;AAItH,MAAM,EAAE,MAAM,OAAO,SAAS,UAAU,GAAG,wBAAwB,sBAAsB;;AAGzF,MAAa,uBAAuB,EAClC,OAAO,mBAAmB,CAAC,CAC3B,QAAQ,UAAU,QAAQ,MAAM,MAAM,KAAK,KAAK,MAAM,MAAM,KAAK,CAAC,GAAG,EACrE,SAAS,gCACV,CAAC;;;;;AAQF,MAAa,wBAAwB,EAAE,OAAO;CAC7C,SAAS,EAAE,QAAQ,CAAC,CAAC,SAAS,2CAA2C;CACzE,IAAI,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,oCAAoC;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,4BAA4B,EAAE,OAAO,EACjD,UAAU,EAAE,MAAM,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAA,EAAoB,CAAC,CAAC,SAAS,2BAA2B,EAC1G,CAAC;AAED,MAAa,6BAA6B,kBAAkB,qBAAqB;;;AC3DjF,IAAa,0BAAb,MAAiE;CAChE;CAEA,YAAY,MAA+B,UAA0C,CAAC,GAAG;EACxF,MAAM,EAAE,UAAU,WAAW,QAAQ,SAAS,GAAG,eAAe;EAChE,KAAKC,UAAU,IAAI,sBAAsB,YAAY,OAAO;CAC7D;CAEA,MAAM,KAAK,OAAyD;EACnE,MAAM,SAAS,MAAM,KAAKA,QAAQ,KAAK,KAAK;EAC5C,OAAO;GACN,SAAS,OAAO;GAChB,GAAI,OAAO,YAAY,OAAO,SAAS,SAAS,KAAK,EAAE,UAAU,OAAO,SAAS;GACjF,GAAI,OAAO,YAAY,OAAO,SAAS,SAAS,KAAK,EAAE,UAAU,OAAO,SAAS;EAClF;CACD;AACD;;;AChBA,IAAa,sBAAb,MAA6D;CAC5D;CAEA,YAAY,MAAuB,UAAsC,CAAC,GAAG;EAC5E,MAAM,EAAE,UAAU,WAAW,QAAQ,SAAS,GAAG,eAAe;EAChE,KAAKC,UAAU,IAAI,aAAa,YAAY,OAAO;CACpD;CAEA,MAAM,KAAK,OAAyD;EACnE,MAAM,SAAS,MAAM,KAAKA,QAAQ,KAAK,KAAK;EAC5C,OAAO;GACN,SAAS,OAAO;GAChB,GAAI,OAAO,MAAM,EAAE,IAAI,OAAO,GAAG;EAClC;CACD;AACD;;;;;;ACFA,SAAS,iBAAiB,KAAsC;CAC/D,OAAO;EACN,GAAI,IAAI,SAAS,EAAE,OAAO,IAAI,MAAM;EACpC,GAAI,IAAI,UAAU,EAAE,QAAQ,IAAI,OAAO;CACxC;AACD;AAEA,SAAS,YAAY,MAAiB,SAA+C;CACpF,QAAQ,KAAK,UAAb;EACC,KAAK,UACJ,OAAO,IAAI,oBAAoB,MAAM,OAAO;EAC7C,KAAK,cACJ,OAAO,IAAI,wBAAwB,MAAM,OAAO;CAClD;AACD;AAEA,SAAS,mBAAmB,OAA2B;CACtD,IAAI,YAAY,KAAK,GACpB,OAAO,IAAI,UAAU,+BAA+B;EACnD,MAAM,MAAM;EACZ,WAAW,MAAM;EACjB,OAAO;CACR,CAAC;CAEF,OAAO,IAAI,UAAU,+BAA+B;EACnD,MAAM;EACN,OAAO;CACR,CAAC;AACF;AAEA,IAAa,cAAb,MAAa,YAAgC;CAC5C;CACA;CAEA,YAAY,MAAiB,UAA8B,CAAC,GAAG;EAC9D,KAAKC,YAAY,YAAY,MAAM,OAAO;EAC1C,KAAKC,UAAU,KAAK;CACrB;CAEA,OAAO,YAAY,KAA+B;EACjD,MAAM,OAAO,YAAY,KAAK,eAAe;EAC7C,OAAO,IAAI,YAAY,MAAM,iBAAiB,GAAG,CAAC;CACnD;CAEA,OAAO,SAAS,MAAiB,MAAmB,CAAC,GAAgB;EACpE,OAAO,IAAI,YAAY,MAAM,iBAAiB,GAAG,CAAC;CACnD;CAEA,MAAM,KAAK,OAAuB;EACjC,IAAI;GACH,OAAO,MAAM,KAAKD,UAAU,KAAK;IAAE,GAAG;IAAO,MAAM,KAAKC;GAAQ,CAAC;EAClE,SAAS,OAAO;GACf,MAAM,mBAAmB,KAAK;EAC/B;CACD;CAEA,UAAU,OAA4B;EACrC,OAAO,cAAc,MAAM,WAAW,YAAY,KAAK,KAAK,OAAO,CAAC;CACrE;AACD;;;ACrEA,MAAa,gBAAgB,WAAW;CACvC,IAAI;CACJ,MAAM;CACN,aACC;CACD,aAAa;CACb,cAAc;CACd,YAAY;CACZ,SAAS;CACT,SAAS,OAAO,OAAO,QAAQ,YAAY,YAAY,GAAG,CAAC,CAAC,KAAK,KAAK;AACvE,CAAC;AAED,MAAa,qBAAqB,WAAW;CAC5C,IAAI;CACJ,MAAM;CACN,aACC;CACD,aAAa;CACb,cAAc;CACd,YAAY;CACZ,SAAS;CACT,SAAS,OAAO,OAAO,QAAQ,YAAY,YAAY,GAAG,CAAC,CAAC,UAAU,KAAK;AAC5E,CAAC;AAED,MAAa,cAAc,aAAa;CACvC,IAAI;CACJ,OAAO;CACP,aACC;CACD,SAAS;CACT,MAAM;EAAE,MAAM;EAAU,QAAQ;CAAgB;CAChD,YAAY,CAAC,SAAS,WAAW;CACjC,gBAAgB;CAChB,MAAM,CAAC,MAAM;CACb,OAAO,CAAC,eAAe,kBAAkB;AAC1C,CAAC"}
@@ -0,0 +1,95 @@
1
+ import { a as ModuleDefinition, s as ToolDefinition } from "../../types-Ccb0DXY9.js";
2
+ import "../../index-CZX5OeOF.js";
3
+ //#region src/modules/email-message/module.d.ts
4
+ declare const parseEmailMessageTool: ToolDefinition<{
5
+ raw: string;
6
+ encoding?: "base64" | "utf8" | undefined;
7
+ }, {
8
+ subject?: string | undefined;
9
+ from?: {
10
+ address: string;
11
+ name?: string | undefined;
12
+ } | undefined;
13
+ to?: {
14
+ address: string;
15
+ name?: string | undefined;
16
+ }[] | undefined;
17
+ cc?: {
18
+ address: string;
19
+ name?: string | undefined;
20
+ }[] | undefined;
21
+ bcc?: {
22
+ address: string;
23
+ name?: string | undefined;
24
+ }[] | undefined;
25
+ reply_to?: {
26
+ address: string;
27
+ name?: string | undefined;
28
+ }[] | undefined;
29
+ message_id?: string | undefined;
30
+ in_reply_to?: string | undefined;
31
+ references?: string | undefined;
32
+ date?: string | undefined;
33
+ text?: string | undefined;
34
+ html?: string | undefined;
35
+ headers?: {
36
+ key: string;
37
+ value: string;
38
+ }[] | undefined;
39
+ attachments: {
40
+ filename?: string | undefined;
41
+ mime_type?: string | undefined;
42
+ size?: number | undefined;
43
+ disposition?: "attachment" | "inline" | undefined;
44
+ content_id?: string | undefined;
45
+ content_base64?: string | undefined;
46
+ }[];
47
+ }>;
48
+ declare const buildEmailMessageTool: ToolDefinition<{
49
+ from: string | {
50
+ address: string;
51
+ name?: string | undefined;
52
+ };
53
+ to: string | (string | {
54
+ address: string;
55
+ name?: string | undefined;
56
+ })[] | {
57
+ address: string;
58
+ name?: string | undefined;
59
+ };
60
+ subject: string;
61
+ text?: string | undefined;
62
+ html?: string | undefined;
63
+ cc?: string | (string | {
64
+ address: string;
65
+ name?: string | undefined;
66
+ })[] | {
67
+ address: string;
68
+ name?: string | undefined;
69
+ } | undefined;
70
+ bcc?: string | (string | {
71
+ address: string;
72
+ name?: string | undefined;
73
+ })[] | {
74
+ address: string;
75
+ name?: string | undefined;
76
+ } | undefined;
77
+ reply_to?: string | {
78
+ address: string;
79
+ name?: string | undefined;
80
+ } | undefined;
81
+ headers?: Record<string, string> | undefined;
82
+ attachments?: {
83
+ filename: string;
84
+ content_base64: string;
85
+ content_type?: string | undefined;
86
+ inline?: boolean | undefined;
87
+ content_id?: string | undefined;
88
+ }[] | undefined;
89
+ }, {
90
+ raw: string;
91
+ }>;
92
+ declare const emailMessageModule: ModuleDefinition<unknown>;
93
+ //#endregion
94
+ export { buildEmailMessageTool, emailMessageModule, parseEmailMessageTool };
95
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/modules/email-message/module.ts"],"mappings":";;;cAiJa,uBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAgEA,uBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAAA;;;;;;;;;;;cAsEA,oBAAA"}