@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 @@
1
+ {"version":3,"file":"index.js","names":["TEAMS_MAX","SLACK_MAX","TELEGRAM_MAX","IMESSAGE_MAX","#auth","#options","#sdk","#client","#ready","#client","#client","#client","#ops","#storage","#maxMediaBytes"],"sources":["../../../src/modules/messaging/contracts.ts","../../../src/modules/messaging/domain.ts","../../../src/modules/messaging/providers/imessage.ts","../../../src/modules/messaging/providers/slack.ts","../../../src/modules/messaging/providers/teams.ts","../../../src/modules/messaging/providers/telegram.ts","../../../src/modules/messaging/client.ts","../../../src/modules/messaging/module.ts"],"sourcesContent":["/**\n * Messaging seam contracts — shared I/O + provider auth union.\n */\n\nimport { z } from 'zod'\n\nimport { batchResultSchema } from '../../shared/batch'\nimport { imessageAuthSchema } from '../../vendors/imessage'\nimport { s3AuthSchema } from '../../vendors/s3'\nimport { slackAuthSchema } from '../../vendors/slack'\nimport { teamsAuthSchema } from '../../vendors/teams'\nimport { telegramAuthSchema } from '../../vendors/telegram'\n\nexport const MAX_MESSAGING_MEDIA_BATCH = 10\n\nexport const messagingChatActionSchema = z.enum([\n\t'typing',\n\t'upload_photo',\n\t'record_video',\n\t'upload_video',\n\t'record_voice',\n\t'upload_voice',\n\t'upload_document',\n\t'choose_sticker',\n\t'find_location',\n\t'record_video_note',\n\t'upload_video_note'\n])\n\n/** Optional object storage for ArtifactRef media IO (send source / download destination). */\nconst messagingStorageAuth = s3AuthSchema\n\t.optional()\n\t.describe('S3-compatible object storage for ArtifactRef media (source on send, destination_key on download)')\n\n/** Host auth: channel credentials + provider discriminator. */\nexport const telegramMessagingAuthSchema = telegramAuthSchema.extend({\n\tprovider: z.literal('telegram'),\n\tstorage: messagingStorageAuth\n})\n\nexport const slackMessagingAuthSchema = slackAuthSchema.extend({\n\tprovider: z.literal('slack'),\n\tstorage: messagingStorageAuth\n})\n\nexport const teamsMessagingAuthSchema = teamsAuthSchema.extend({\n\tprovider: z.literal('teams'),\n\tstorage: messagingStorageAuth\n})\n\nexport const imessageMessagingAuthSchema = imessageAuthSchema.extend({\n\tprovider: z.literal('imessage'),\n\tstorage: messagingStorageAuth\n})\n\nexport type TelegramMessagingAuth = z.infer<typeof telegramMessagingAuthSchema>\nexport type SlackMessagingAuth = z.infer<typeof slackMessagingAuthSchema>\nexport type TeamsMessagingAuth = z.infer<typeof teamsMessagingAuthSchema>\nexport type ImessageMessagingAuth = z.infer<typeof imessageMessagingAuthSchema>\n\nexport const messagingAuthSchema = z.discriminatedUnion('provider', [\n\ttelegramMessagingAuthSchema,\n\tslackMessagingAuthSchema,\n\tteamsMessagingAuthSchema,\n\timessageMessagingAuthSchema\n])\n\nexport type MessagingAuth = z.infer<typeof messagingAuthSchema>\n\nconst serviceUrlOptional = z\n\t.string()\n\t.min(1)\n\t.optional()\n\t.describe('Activity service base URL when the bound channel requires it for this call')\n\nexport const messagingSendTextInputSchema = z.object({\n\tchat_id: z.string().min(1).describe('Channel conversation / chat id'),\n\ttext: z.string().min(1).describe('Message text'),\n\treply_to_message_id: z.string().min(1).optional().describe('Optional message id to reply to (thread/reply)'),\n\treply_markup: z.unknown().optional().describe('Optional channel-native markup (blocks, attachments, …)'),\n\tservice_url: serviceUrlOptional\n})\n\n/** Common send/edit/media result shell for journaling. */\nexport const messagingMessageOutputSchema = z.object({\n\tmessage_id: z.string().describe('Provider message id as string'),\n\tfile_id: z.string().optional().describe('File id when the send created a downloadable attachment'),\n\tattachment_message_ids: z\n\t\t.array(z.string())\n\t\t.optional()\n\t\t.describe('Additional attachment message ids when a single call produced more than one message')\n})\n\nexport const messagingEditTextInputSchema = z.object({\n\tchat_id: z.string().min(1).describe('Channel conversation / chat id'),\n\tmessage_id: z.string().min(1).describe('Message id to edit'),\n\ttext: z.string().min(1).describe('Replacement text'),\n\treply_markup: z.unknown().optional().describe('Optional channel-native markup'),\n\tservice_url: serviceUrlOptional\n})\n\nexport const messagingSendChatActionInputSchema = z.object({\n\tchat_id: z.string().min(1).describe('Channel conversation / chat id'),\n\taction: messagingChatActionSchema.describe('Chat action (typing, upload_document, …)'),\n\treply_to_message_id: z\n\t\t.string()\n\t\t.min(1)\n\t\t.optional()\n\t\t.describe('Optional thread or reply anchor when the channel uses thread-scoped status'),\n\tservice_url: serviceUrlOptional\n})\n\nexport const messagingStopTypingInputSchema = z.object({\n\tchat_id: z.string().min(1).describe('Channel conversation / chat id'),\n\treply_to_message_id: z\n\t\t.string()\n\t\t.min(1)\n\t\t.optional()\n\t\t.describe('Optional thread or reply anchor when the channel uses thread-scoped status'),\n\tservice_url: serviceUrlOptional\n})\n\nexport const messagingSetReactionInputSchema = z.object({\n\tchat_id: z.string().min(1).describe('Channel conversation / chat id'),\n\tmessage_id: z.string().min(1).describe('Message id to react to'),\n\temoji: z.string().min(1).max(64).describe('Any emoji the bound channel accepts')\n})\n\n/** Reaction result — store message_id when present for clearReaction. */\nexport const messagingReactionOutputSchema = z.object({\n\tmessage_id: z\n\t\t.string()\n\t\t.optional()\n\t\t.describe('Reaction message id when the channel creates a separate reaction message; pass to clearReaction')\n})\n\nexport const messagingClearReactionInputSchema = z.object({\n\tchat_id: z.string().min(1).describe('Channel conversation / chat id'),\n\tmessage_id: z\n\t\t.string()\n\t\t.min(1)\n\t\t.describe('Message id to clear; use reaction message_id from setReaction when that was returned'),\n\temoji: z.string().min(1).max(64).optional().describe('Emoji to clear when the channel requires a reaction name')\n})\n\n/** Messaging only resolves object-store artifacts (not host-mapped keys). */\nexport const messagingObjectArtifactRefSchema = z.object({\n\tstore: z.literal('object').describe('Object storage owned by bound messaging storage auth'),\n\tkey: z.string().min(1).describe('Object key'),\n\tmedia_type: z.string().min(1).optional().describe('MIME or format hint when known'),\n\tfilename: z.string().min(1).optional().describe('Original or display file name'),\n\tbyte_length: z.int().min(0).optional().describe('Size in bytes when known')\n})\n\nexport type MessagingObjectArtifactRef = z.infer<typeof messagingObjectArtifactRefSchema>\n\nconst messagingMediaBodyFields = {\n\tkind: z.enum(['photo', 'document']).describe('Media kind'),\n\tbody_base64: z\n\t\t.string()\n\t\t.min(1)\n\t\t.optional()\n\t\t.describe('File body as base64. Omit when source is set. Prefer source for large files.'),\n\tsource: messagingObjectArtifactRefSchema\n\t\t.optional()\n\t\t.describe('Object-store ArtifactRef for the media file. Prefer this over body_base64 for large files'),\n\tfile_name: z\n\t\t.string()\n\t\t.min(1)\n\t\t.optional()\n\t\t.describe(\n\t\t\t'File name including extension. Required with body_base64; defaults to source.filename when source is set'\n\t\t),\n\tcaption: z.string().optional().describe('Optional caption'),\n\tcontent_type: z\n\t\t.string()\n\t\t.optional()\n\t\t.describe('Optional content type; defaults to source.media_type when source is set')\n}\n\nfunction refineMediaBody(\n\tval: {\n\t\tbody_base64?: string | undefined\n\t\tsource?: MessagingObjectArtifactRef | undefined\n\t\tfile_name?: string | undefined\n\t},\n\tctx: z.RefinementCtx\n): void {\n\tconst hasB64 = val.body_base64 !== undefined\n\tconst hasSource = val.source !== undefined\n\tif (hasB64 === hasSource) {\n\t\tctx.addIssue({\n\t\t\tcode: 'custom',\n\t\t\tmessage: 'Provide exactly one of body_base64 or source'\n\t\t})\n\t}\n\tif (hasB64 && !val.file_name) {\n\t\tctx.addIssue({\n\t\t\tcode: 'custom',\n\t\t\tpath: ['file_name'],\n\t\t\tmessage: 'file_name is required when body_base64 is set'\n\t\t})\n\t}\n\tif (hasSource && !val.file_name && !val.source?.filename) {\n\t\tctx.addIssue({\n\t\t\tcode: 'custom',\n\t\t\tpath: ['file_name'],\n\t\t\tmessage: 'file_name or source.filename is required when source is set'\n\t\t})\n\t}\n}\n\nexport const messagingSendMediaInputSchema = z\n\t.object({\n\t\tchat_id: z.string().min(1).describe('Channel conversation / chat id'),\n\t\t...messagingMediaBodyFields,\n\t\treply_to_message_id: z.string().min(1).optional().describe('Optional reply / thread anchor'),\n\t\tservice_url: serviceUrlOptional\n\t})\n\t.superRefine(refineMediaBody)\n\nexport const messagingSendMediaBatchItemSchema = z\n\t.object({\n\t\t...messagingMediaBodyFields\n\t})\n\t.superRefine(refineMediaBody)\n\nexport const messagingSendMediaBatchInputSchema = z.object({\n\tchat_id: z.string().min(1).describe('Channel conversation / chat id'),\n\titems: z\n\t\t.array(messagingSendMediaBatchItemSchema)\n\t\t.min(1)\n\t\t.max(MAX_MESSAGING_MEDIA_BATCH)\n\t\t.describe(`1–${MAX_MESSAGING_MEDIA_BATCH} media items in send order`),\n\treply_to_message_id: z.string().min(1).optional().describe('Optional reply / thread anchor for the batch'),\n\tservice_url: serviceUrlOptional\n})\n\nexport const messagingSendMediaBatchOutputSchema = z.object({\n\tmessage_ids: z.array(z.string()).describe('Successfully sent message ids in order'),\n\tresults: batchResultSchema(messagingMessageOutputSchema).describe('Per-item outcomes (partial failure allowed)')\n})\n\nexport const messagingDownloadFileInputSchema = z.object({\n\tfile_id: z.string().min(1).describe('Provider file id, content URL, or attachment message id'),\n\tchat_id: z.string().min(1).optional().describe('Conversation id when the channel requires it for download'),\n\tfile_name: z.string().min(1).optional().describe('Preferred file name'),\n\tdestination_key: z\n\t\t.string()\n\t\t.min(1)\n\t\t.optional()\n\t\t.describe('When set, persist downloaded bytes at this object key and return an ArtifactRef instead of body_base64'),\n\tservice_url: serviceUrlOptional\n})\n\nexport const messagingDownloadFileOutputSchema = z.object({\n\tfile_name: z.string(),\n\tfile_size: z.number().optional(),\n\tbody_base64: z.string().optional().describe('Downloaded file body as base64 when destination_key is omitted'),\n\tartifact: messagingObjectArtifactRefSchema.optional().describe('Object-store ArtifactRef when destination_key is set')\n})\n\nexport const messagingAnswerCallbackInputSchema = z.object({\n\tcallback_query_id: z.string().min(1).describe('Callback / response id from an inbound interaction'),\n\ttext: z.string().max(3000).optional().describe('Optional notification text'),\n\tshow_alert: z.boolean().optional().describe('When supported, show an alert instead of a toast'),\n\tservice_url: serviceUrlOptional\n})\n\nexport const messagingReadInputSchema = z.object({\n\tchat_id: z.string().min(1).describe('Channel conversation / chat id'),\n\tmessage_id: z.string().min(1).describe('Message id to mark read up to'),\n\tservice_url: serviceUrlOptional\n})\n\nexport const messagingOkOutputSchema = z.object({\n\tok: z.boolean()\n})\n\nexport type MessagingSendTextInput = z.infer<typeof messagingSendTextInputSchema>\nexport type MessagingMessageOutput = z.infer<typeof messagingMessageOutputSchema>\nexport type MessagingEditTextInput = z.infer<typeof messagingEditTextInputSchema>\nexport type MessagingSendChatActionInput = z.infer<typeof messagingSendChatActionInputSchema>\nexport type MessagingStopTypingInput = z.infer<typeof messagingStopTypingInputSchema>\nexport type MessagingSetReactionInput = z.infer<typeof messagingSetReactionInputSchema>\nexport type MessagingReactionOutput = z.infer<typeof messagingReactionOutputSchema>\nexport type MessagingClearReactionInput = z.infer<typeof messagingClearReactionInputSchema>\nexport type MessagingSendMediaInput = z.infer<typeof messagingSendMediaInputSchema>\nexport type MessagingSendMediaBatchItem = z.infer<typeof messagingSendMediaBatchItemSchema>\nexport type MessagingSendMediaBatchInput = z.infer<typeof messagingSendMediaBatchInputSchema>\nexport type MessagingSendMediaBatchOutput = z.infer<typeof messagingSendMediaBatchOutputSchema>\nexport type MessagingDownloadFileInput = z.infer<typeof messagingDownloadFileInputSchema>\nexport type MessagingDownloadFileOutput = z.infer<typeof messagingDownloadFileOutputSchema>\nexport type MessagingAnswerCallbackInput = z.infer<typeof messagingAnswerCallbackInputSchema>\nexport type MessagingReadInput = z.infer<typeof messagingReadInputSchema>\n\n/** Channel-facing media after ArtifactRef resolution (body always present). */\nexport type MessagingSendMediaResolved = {\n\tchat_id: string\n\tkind: 'photo' | 'document'\n\tbody_base64: string\n\tfile_name: string\n\tcaption?: string | undefined\n\treply_to_message_id?: string | undefined\n\tcontent_type?: string | undefined\n\tservice_url?: string | undefined\n}\n\nexport type MessagingSendMediaBatchResolved = {\n\tchat_id: string\n\titems: Array<{\n\t\tkind: 'photo' | 'document'\n\t\tbody_base64: string\n\t\tfile_name: string\n\t\tcaption?: string | undefined\n\t\tcontent_type?: string | undefined\n\t}>\n\treply_to_message_id?: string | undefined\n\tservice_url?: string | undefined\n}\n\n/** Channel download always returns bytes; client may rewrite to artifact. */\nexport type MessagingChannelDownloadOutput = {\n\tfile_name: string\n\tfile_size?: number | undefined\n\tbody_base64: string\n}\n\n/** Shared seam surface — provider classes implement this. */\nexport type MessagingOps = {\n\tsendText: (input: MessagingSendTextInput) => Promise<MessagingMessageOutput>\n\teditText: (input: MessagingEditTextInput) => Promise<MessagingMessageOutput>\n\tsendChatAction: (input: MessagingSendChatActionInput) => Promise<void>\n\tstopTyping: (input: MessagingStopTypingInput) => Promise<void>\n\tsetReaction: (input: MessagingSetReactionInput) => Promise<MessagingReactionOutput>\n\tclearReaction: (input: MessagingClearReactionInput) => Promise<void>\n\tsendMedia: (input: MessagingSendMediaResolved) => Promise<MessagingMessageOutput>\n\tsendMediaBatch: (input: MessagingSendMediaBatchResolved) => Promise<MessagingSendMediaBatchOutput>\n\tdownloadFile: (input: MessagingDownloadFileInput) => Promise<MessagingChannelDownloadOutput>\n\tanswerCallback: (input: MessagingAnswerCallbackInput) => Promise<void>\n\tread: (input: MessagingReadInput) => Promise<void>\n}\n","/**\n * Messaging seam helpers (no HTTP).\n */\n\nimport { isError } from 'es-toolkit'\n\nimport { ToolError } from '../../core/errors'\nimport type { BatchItemError, BatchResult } from '../../shared/batch'\nimport { runBatchItems } from '../../shared/batch'\nimport { base64ToBytes, bytesToBase64 } from '../../shared/bytes'\nimport {\n\tisImessageDefiniteRejection,\n\tisImessageOutcomeUnknown,\n\tMAX_MEDIA_BYTES as IMESSAGE_MAX\n} from '../../vendors/imessage'\nimport type { S3Client } from '../../vendors/s3'\nimport { isSlackDefiniteRejection, isSlackOutcomeUnknown, MAX_MEDIA_BYTES as SLACK_MAX } from '../../vendors/slack'\nimport { isTeamsDefiniteRejection, isTeamsOutcomeUnknown, MAX_MEDIA_BYTES as TEAMS_MAX } from '../../vendors/teams'\nimport {\n\tisTelegramDefiniteRejection,\n\tisTelegramOutcomeUnknown,\n\tMAX_MEDIA_BYTES as TELEGRAM_MAX\n} from '../../vendors/telegram'\nimport type {\n\tMessagingChannelDownloadOutput,\n\tMessagingDownloadFileOutput,\n\tMessagingMessageOutput,\n\tMessagingObjectArtifactRef,\n\tMessagingSendMediaBatchInput,\n\tMessagingSendMediaBatchOutput,\n\tMessagingSendMediaBatchResolved,\n\tMessagingSendMediaInput,\n\tMessagingSendMediaResolved\n} from './contracts'\n\n/**\n * Intentional lifecycle no-op (e.g. read when the channel has no mark-as-read API).\n * Succeeds so multi-channel hosts can call one surface without branching.\n * Destructive gaps (unsend) must not live on the seam — use the vendor pack.\n */\nexport function warnUnsupportedMessagingOp(provider: string, op: string): void {\n\tconsole.warn(`[messaging] ${provider}: ${op} is a successful no-op (not needed / not applicable on this channel)`)\n}\n\n/** Provider-neutral definite rejection (do not treat as possible delivery). */\nexport function isMessagingDefiniteRejection(error: unknown): boolean {\n\treturn (\n\t\tisTelegramDefiniteRejection(error) ||\n\t\tisSlackDefiniteRejection(error) ||\n\t\tisTeamsDefiniteRejection(error) ||\n\t\tisImessageDefiniteRejection(error)\n\t)\n}\n\n/**\n * Provider-neutral outcome-unknown (retry may duplicate).\n * Includes transport network/abort failures rethrown as vendor client errors.\n */\nexport function isMessagingOutcomeUnknown(error: unknown): boolean {\n\treturn (\n\t\tisTelegramOutcomeUnknown(error) ||\n\t\tisSlackOutcomeUnknown(error) ||\n\t\tisTeamsOutcomeUnknown(error) ||\n\t\tisImessageOutcomeUnknown(error)\n\t)\n}\n\n/** Media byte ceiling for the bound channel (align object reads before channel decode). */\nexport function mediaMaxBytesForProvider(provider: string): number {\n\tswitch (provider) {\n\t\tcase 'teams':\n\t\t\treturn TEAMS_MAX\n\t\tcase 'slack':\n\t\t\treturn SLACK_MAX\n\t\tcase 'telegram':\n\t\t\treturn TELEGRAM_MAX\n\t\tcase 'imessage':\n\t\t\treturn IMESSAGE_MAX\n\t\tdefault:\n\t\t\treturn TELEGRAM_MAX\n\t}\n}\n\nfunction toBatchError(error: unknown): BatchItemError {\n\tif (error instanceof ToolError) {\n\t\treturn {\n\t\t\tcode: error.code,\n\t\t\tmessage: error.message,\n\t\t\tretryable: error.retryable\n\t\t}\n\t}\n\treturn {\n\t\tcode: 'internal',\n\t\tmessage: isError(error) ? error.message : 'Batch item failed'\n\t}\n}\n\nasync function bodyFromSource(\n\tsource: MessagingObjectArtifactRef,\n\tstorage: S3Client | undefined,\n\tmaxBytes: number\n): Promise<{ body_base64: string; file_name?: string | undefined; content_type?: string | undefined }> {\n\tif (!storage) {\n\t\tthrow new ToolError('ArtifactRef media requires storage credentials on messaging auth', {\n\t\t\tcode: 'bad_auth'\n\t\t})\n\t}\n\tconst bytes = await storage.getBytes(source.key, { maxBytes })\n\treturn {\n\t\tbody_base64: bytesToBase64(bytes),\n\t\tfile_name: source.filename,\n\t\tcontent_type: source.media_type\n\t}\n}\n\nasync function resolveMediaBody(\n\tinput: Pick<MessagingSendMediaInput, 'body_base64' | 'source' | 'file_name' | 'content_type' | 'kind'>,\n\tstorage: S3Client | undefined,\n\tmaxBytes: number\n): Promise<{ body_base64: string; file_name: string; content_type?: string | undefined }> {\n\tif (input.body_base64 !== undefined) {\n\t\tif (!input.file_name) {\n\t\t\tthrow new ToolError('file_name is required when body_base64 is set', { code: 'bad_input' })\n\t\t}\n\t\tconst raw = base64ToBytes(input.body_base64)\n\t\tif (raw.byteLength > maxBytes) {\n\t\t\tthrow new ToolError('Media body exceeds channel size limit', {\n\t\t\t\tcode: 'too_large',\n\t\t\t\tdetails: { max_bytes: maxBytes, content_length: raw.byteLength }\n\t\t\t})\n\t\t}\n\t\treturn {\n\t\t\tbody_base64: input.body_base64,\n\t\t\tfile_name: input.file_name,\n\t\t\tcontent_type: input.content_type\n\t\t}\n\t}\n\tif (!input.source) {\n\t\tthrow new ToolError('Provide exactly one of body_base64 or source', { code: 'bad_input' })\n\t}\n\tconst fromStore = await bodyFromSource(input.source, storage, maxBytes)\n\tconst file_name = input.file_name ?? fromStore.file_name\n\tif (!file_name) {\n\t\tthrow new ToolError('file_name or source.filename is required when source is set', { code: 'bad_input' })\n\t}\n\treturn {\n\t\tbody_base64: fromStore.body_base64,\n\t\tfile_name,\n\t\tcontent_type: input.content_type ?? fromStore.content_type\n\t}\n}\n\n/** Resolve public send-media input to channel-facing body_base64 payload. */\nexport async function resolveSendMediaInput(\n\tinput: MessagingSendMediaInput,\n\tstorage: S3Client | undefined,\n\tmaxBytes: number\n): Promise<MessagingSendMediaResolved> {\n\tconst body = await resolveMediaBody(input, storage, maxBytes)\n\treturn {\n\t\tchat_id: input.chat_id,\n\t\tkind: input.kind,\n\t\tbody_base64: body.body_base64,\n\t\tfile_name: body.file_name,\n\t\tcontent_type: body.content_type,\n\t\tcaption: input.caption,\n\t\treply_to_message_id: input.reply_to_message_id,\n\t\tservice_url: input.service_url\n\t}\n}\n\n/**\n * Resolve each batch item independently, send only successes, merge failures by original index.\n * Preserves partial-failure contract when ArtifactRef resolution fails mid-batch.\n */\nexport async function resolveAndSendMediaBatch(\n\tinput: MessagingSendMediaBatchInput,\n\tstorage: S3Client | undefined,\n\tmaxBytes: number,\n\tsendBatch: (resolved: MessagingSendMediaBatchResolved) => Promise<MessagingSendMediaBatchOutput>\n): Promise<MessagingSendMediaBatchOutput> {\n\ttype Slot =\n\t\t| { index: number; ok: true; item: MessagingSendMediaBatchResolved['items'][number] }\n\t\t| { index: number; ok: false; error: BatchItemError }\n\n\tconst slots: Slot[] = []\n\tfor (let index = 0; index < input.items.length; index++) {\n\t\tconst item = input.items[index]\n\t\tif (!item) continue\n\t\ttry {\n\t\t\tconst body = await resolveMediaBody(item, storage, maxBytes)\n\t\t\tslots.push({\n\t\t\t\tindex,\n\t\t\t\tok: true,\n\t\t\t\titem: {\n\t\t\t\t\tkind: item.kind,\n\t\t\t\t\tbody_base64: body.body_base64,\n\t\t\t\t\tfile_name: body.file_name,\n\t\t\t\t\tcontent_type: body.content_type,\n\t\t\t\t\tcaption: item.caption\n\t\t\t\t}\n\t\t\t})\n\t\t} catch (error) {\n\t\t\tslots.push({ index, ok: false, error: toBatchError(error) })\n\t\t}\n\t}\n\n\tconst successes = slots.filter((s): s is Extract<Slot, { ok: true }> => s.ok)\n\tconst results: BatchResult<MessagingMessageOutput>['results'] = []\n\tconst message_ids: string[] = []\n\n\tif (successes.length === 0) {\n\t\tfor (const slot of slots) {\n\t\t\tif (!slot.ok) results.push({ index: slot.index, ok: false, error: slot.error })\n\t\t}\n\t\treturn {\n\t\t\tmessage_ids,\n\t\t\tresults: { results, succeeded: 0, failed: results.length }\n\t\t}\n\t}\n\n\tconst providerOut = await sendBatch({\n\t\tchat_id: input.chat_id,\n\t\titems: successes.map((s) => s.item),\n\t\treply_to_message_id: input.reply_to_message_id,\n\t\tservice_url: input.service_url\n\t})\n\n\tconst providerByLocal = new Map(providerOut.results.results.map((row) => [row.index, row]))\n\tlet successCursor = 0\n\tfor (const slot of slots) {\n\t\tif (!slot.ok) {\n\t\t\tresults.push({ index: slot.index, ok: false, error: slot.error })\n\t\t\tcontinue\n\t\t}\n\t\tconst pr = providerByLocal.get(successCursor)\n\t\tsuccessCursor += 1\n\t\tif (!pr) {\n\t\t\tresults.push({\n\t\t\t\tindex: slot.index,\n\t\t\t\tok: false,\n\t\t\t\terror: { code: 'internal', message: 'Missing provider batch result' }\n\t\t\t})\n\t\t\tcontinue\n\t\t}\n\t\tif (pr.ok && pr.value) {\n\t\t\tresults.push({ index: slot.index, ok: true, value: pr.value })\n\t\t\tif (pr.value.message_id) message_ids.push(pr.value.message_id)\n\t\t} else {\n\t\t\tresults.push({\n\t\t\t\tindex: slot.index,\n\t\t\t\tok: false,\n\t\t\t\terror: pr.error ?? { code: 'internal', message: 'Provider batch item failed' }\n\t\t\t})\n\t\t}\n\t}\n\n\tconst succeeded = results.filter((r) => r.ok).length\n\treturn {\n\t\tmessage_ids,\n\t\tresults: { results, succeeded, failed: results.length - succeeded }\n\t}\n}\n\n/** After channel download, optionally land bytes in object storage. */\nexport async function finalizeDownloadOutput(\n\tgot: MessagingChannelDownloadOutput,\n\tdestination_key: string | undefined,\n\tstorage: S3Client | undefined\n): Promise<MessagingDownloadFileOutput> {\n\tif (!destination_key) {\n\t\treturn {\n\t\t\tfile_name: got.file_name,\n\t\t\tfile_size: got.file_size,\n\t\t\tbody_base64: got.body_base64\n\t\t}\n\t}\n\tif (!storage) {\n\t\tthrow new ToolError('destination_key requires storage credentials on messaging auth', {\n\t\t\tcode: 'bad_auth'\n\t\t})\n\t}\n\tconst bytes = base64ToBytes(got.body_base64)\n\tawait storage.putBytes(destination_key, bytes)\n\tconst file_size = got.file_size ?? bytes.byteLength\n\treturn {\n\t\tfile_name: got.file_name,\n\t\tfile_size,\n\t\tartifact: {\n\t\t\tstore: 'object',\n\t\t\tkey: destination_key,\n\t\t\tfilename: got.file_name,\n\t\t\tbyte_length: file_size\n\t\t}\n\t}\n}\n\n/** Sequential sendMedia for channels without a native multi-file API. */\nexport async function sendMediaBatchSequential(\n\tsendOne: (item: MessagingSendMediaResolved) => Promise<MessagingMessageOutput>,\n\tinput: MessagingSendMediaBatchResolved\n): Promise<MessagingSendMediaBatchOutput> {\n\tconst batch = await runBatchItems(\n\t\tinput.items,\n\t\t(item) =>\n\t\t\tsendOne({\n\t\t\t\tchat_id: input.chat_id,\n\t\t\t\tkind: item.kind,\n\t\t\t\tbody_base64: item.body_base64,\n\t\t\t\tfile_name: item.file_name,\n\t\t\t\tcaption: item.caption,\n\t\t\t\tcontent_type: item.content_type,\n\t\t\t\treply_to_message_id: input.reply_to_message_id,\n\t\t\t\tservice_url: input.service_url\n\t\t\t}),\n\t\t{ concurrency: 1 }\n\t)\n\tconst message_ids: string[] = []\n\tfor (const row of batch.results) {\n\t\tif (row.ok && row.value?.message_id) message_ids.push(row.value.message_id)\n\t}\n\treturn { message_ids, results: batch }\n}\n","/**\n * iMessage provider for the messaging seam.\n * Wraps `ImessageClient` (Photon Spectrum Cloud + Advanced iMessage gRPC).\n *\n * Vendor client is loaded via dynamic import so edge/browser packaging of the\n * messaging seam does not pull Node-only gRPC peers until iMessage is used.\n */\n\nimport { ToolError } from '../../../core/errors'\nimport type { HttpServiceOptions } from '../../../transport/http-service'\nimport type { ImessageClient } from '../../../vendors/imessage'\nimport type {\n\tImessageMessagingAuth,\n\tMessagingAnswerCallbackInput,\n\tMessagingClearReactionInput,\n\tMessagingChannelDownloadOutput,\n\tMessagingDownloadFileInput,\n\tMessagingEditTextInput,\n\tMessagingMessageOutput,\n\tMessagingOps,\n\tMessagingReactionOutput,\n\tMessagingReadInput,\n\tMessagingSendChatActionInput,\n\tMessagingSendMediaBatchOutput,\n\tMessagingSendMediaBatchResolved,\n\tMessagingSendMediaResolved,\n\tMessagingSendTextInput,\n\tMessagingSetReactionInput,\n\tMessagingStopTypingInput\n} from '../contracts'\nimport { sendMediaBatchSequential } from '../domain'\n\nexport type ImessageMessagingProviderOptions = Pick<HttpServiceOptions, 'fetch' | 'signal'>\n\nexport class ImessageMessagingProvider implements MessagingOps {\n\treadonly #auth: ImessageMessagingAuth\n\treadonly #options: ImessageMessagingProviderOptions\n\t#client: ImessageClient | undefined\n\t#ready: Promise<ImessageClient> | undefined\n\n\tconstructor(auth: ImessageMessagingAuth, options: ImessageMessagingProviderOptions = {}) {\n\t\tthis.#auth = auth\n\t\tthis.#options = options\n\t}\n\n\tasync #sdk(): Promise<ImessageClient> {\n\t\tif (this.#client) return this.#client\n\t\tthis.#ready ??= (async () => {\n\t\t\tconst { ImessageClient } = await import('../../../vendors/imessage/client')\n\t\t\tconst { provider: _p, storage: _s, ...vendorAuth } = this.#auth\n\t\t\tconst client = new ImessageClient(vendorAuth, this.#options)\n\t\t\tthis.#client = client\n\t\t\treturn client\n\t\t})()\n\t\treturn this.#ready\n\t}\n\n\tasync sendText(input: MessagingSendTextInput): Promise<MessagingMessageOutput> {\n\t\tconst result = await (\n\t\t\tawait this.#sdk()\n\t\t).sendText({\n\t\t\tchat_id: input.chat_id,\n\t\t\ttext: input.text\n\t\t})\n\t\treturn { message_id: result.message_id }\n\t}\n\n\tasync editText(input: MessagingEditTextInput): Promise<MessagingMessageOutput> {\n\t\tconst result = await (\n\t\t\tawait this.#sdk()\n\t\t).editText({\n\t\t\tchat_id: input.chat_id,\n\t\t\tmessage_id: input.message_id,\n\t\t\ttext: input.text\n\t\t})\n\t\treturn {\n\t\t\tmessage_id: result.message_id ?? input.message_id\n\t\t}\n\t}\n\n\tasync sendChatAction(input: MessagingSendChatActionInput): Promise<void> {\n\t\tawait (\n\t\t\tawait this.#sdk()\n\t\t).sendChatAction({\n\t\t\tchat_id: input.chat_id,\n\t\t\taction: input.action\n\t\t})\n\t}\n\n\tasync stopTyping(input: MessagingStopTypingInput): Promise<void> {\n\t\tawait (await this.#sdk()).stopTyping({ chat_id: input.chat_id })\n\t}\n\n\tasync setReaction(input: MessagingSetReactionInput): Promise<MessagingReactionOutput> {\n\t\tconst result = await (\n\t\t\tawait this.#sdk()\n\t\t).setReaction({\n\t\t\tchat_id: input.chat_id,\n\t\t\tmessage_id: input.message_id,\n\t\t\temoji: input.emoji\n\t\t})\n\t\treturn { message_id: result.message_id }\n\t}\n\n\t/**\n\t * Clears via setReaction(isSet=false). Requires emoji matching setReaction.\n\t * `message_id` is the **target** message guid.\n\t */\n\tasync clearReaction(input: MessagingClearReactionInput): Promise<void> {\n\t\tif (!input.emoji) {\n\t\t\tthrow new ToolError('iMessage clearReaction requires emoji (same tapback/emoji used when setting)', {\n\t\t\t\tcode: 'bad_input'\n\t\t\t})\n\t\t}\n\t\tawait (\n\t\t\tawait this.#sdk()\n\t\t).clearReaction({\n\t\t\tchat_id: input.chat_id,\n\t\t\tmessage_id: input.message_id,\n\t\t\temoji: input.emoji\n\t\t})\n\t}\n\n\tasync sendMedia(input: MessagingSendMediaResolved): Promise<MessagingMessageOutput> {\n\t\tconst result = await (\n\t\t\tawait this.#sdk()\n\t\t).sendMedia({\n\t\t\tchat_id: input.chat_id,\n\t\t\tkind: input.kind,\n\t\t\tbody_base64: input.body_base64,\n\t\t\tfile_name: input.file_name,\n\t\t\t...(input.caption && { caption: input.caption }),\n\t\t\t...(input.content_type && { content_type: input.content_type })\n\t\t})\n\t\treturn { message_id: result.message_id }\n\t}\n\n\tsendMediaBatch(input: MessagingSendMediaBatchResolved): Promise<MessagingSendMediaBatchOutput> {\n\t\treturn sendMediaBatchSequential((item) => this.sendMedia(item), input)\n\t}\n\n\tasync downloadFile(input: MessagingDownloadFileInput): Promise<MessagingChannelDownloadOutput> {\n\t\t// file_id is attachment guid; optional chat_id for journaling only\n\t\tconst fileId = input.chat_id ? input.file_id : (splitImessageFileRef(input.file_id).file_id ?? input.file_id)\n\t\treturn (await this.#sdk()).downloadFile({\n\t\t\tfile_id: fileId,\n\t\t\t...(input.chat_id && { chat_id: input.chat_id }),\n\t\t\t...(input.file_name && { file_name: input.file_name })\n\t\t})\n\t}\n\n\tasync answerCallback(_input: MessagingAnswerCallbackInput): Promise<void> {\n\t\tawait (await this.#sdk()).answerCallback({})\n\t}\n\n\tasync read(input: MessagingReadInput): Promise<void> {\n\t\tawait (\n\t\t\tawait this.#sdk()\n\t\t).read({\n\t\t\tchat_id: input.chat_id,\n\t\t\t...(input.message_id && { message_id: input.message_id })\n\t\t})\n\t}\n}\n\n/** Legacy composite: `space_id::message_id` when chat_id is omitted (message_id is attachment guid). */\nfunction splitImessageFileRef(fileId: string): { chat_id?: string; file_id: string } {\n\tconst sep = '::'\n\tconst idx = fileId.indexOf(sep)\n\tif (idx <= 0) {\n\t\treturn { file_id: fileId }\n\t}\n\tconst chat_id = fileId.slice(0, idx)\n\tconst rest = fileId.slice(idx + sep.length)\n\tif (chat_id.length === 0 || rest.length === 0) {\n\t\treturn { file_id: fileId }\n\t}\n\treturn { chat_id, file_id: rest }\n}\n","/**\n * Slack provider for the messaging seam. Wraps `SlackClient`.\n */\n\nimport { ToolError } from '../../../core/errors'\nimport type { HttpServiceOptions } from '../../../transport/http-service'\nimport { SlackClient } from '../../../vendors/slack'\nimport type {\n\tMessagingAnswerCallbackInput,\n\tMessagingClearReactionInput,\n\tMessagingChannelDownloadOutput,\n\tMessagingDownloadFileInput,\n\tMessagingEditTextInput,\n\tMessagingMessageOutput,\n\tMessagingOps,\n\tMessagingReactionOutput,\n\tMessagingReadInput,\n\tMessagingSendChatActionInput,\n\tMessagingSendMediaBatchOutput,\n\tMessagingSendMediaBatchResolved,\n\tMessagingSendMediaResolved,\n\tMessagingSendTextInput,\n\tMessagingSetReactionInput,\n\tMessagingStopTypingInput,\n\tSlackMessagingAuth\n} from '../contracts'\nimport { sendMediaBatchSequential, warnUnsupportedMessagingOp } from '../domain'\n\nexport type SlackMessagingProviderOptions = Pick<HttpServiceOptions, 'fetch' | 'signal'>\n\nexport class SlackMessagingProvider implements MessagingOps {\n\treadonly #client: SlackClient\n\n\tconstructor(auth: SlackMessagingAuth, options: SlackMessagingProviderOptions = {}) {\n\t\tconst { provider: _p, storage: _s, ...vendorAuth } = auth\n\t\tthis.#client = new SlackClient(vendorAuth, options)\n\t}\n\n\tsendText(input: MessagingSendTextInput): Promise<MessagingMessageOutput> {\n\t\treturn this.#client.sendText({\n\t\t\tchat_id: input.chat_id,\n\t\t\ttext: input.text,\n\t\t\t...(input.reply_to_message_id && { reply_to_message_id: input.reply_to_message_id }),\n\t\t\t...(input.reply_markup !== undefined && { reply_markup: input.reply_markup })\n\t\t})\n\t}\n\n\teditText(input: MessagingEditTextInput): Promise<MessagingMessageOutput> {\n\t\treturn this.#client.editText({\n\t\t\tchat_id: input.chat_id,\n\t\t\tmessage_id: input.message_id,\n\t\t\ttext: input.text,\n\t\t\t...(input.reply_markup !== undefined && { reply_markup: input.reply_markup })\n\t\t})\n\t}\n\n\tsendChatAction(input: MessagingSendChatActionInput): Promise<void> {\n\t\tconst body: Parameters<SlackClient['sendChatAction']>[0] = {\n\t\t\tchat_id: input.chat_id,\n\t\t\taction: input.action\n\t\t}\n\t\tif (input.reply_to_message_id) body.reply_to_message_id = input.reply_to_message_id\n\t\treturn this.#client.sendChatAction(body)\n\t}\n\n\t/** Clear assistant.threads.setStatus when reply_to_message_id (thread_ts) is set. */\n\tstopTyping(input: MessagingStopTypingInput): Promise<void> {\n\t\tconst body: Parameters<SlackClient['stopTyping']>[0] = { chat_id: input.chat_id }\n\t\tif (input.reply_to_message_id) body.reply_to_message_id = input.reply_to_message_id\n\t\treturn this.#client.stopTyping(body)\n\t}\n\n\tasync setReaction(input: MessagingSetReactionInput): Promise<MessagingReactionOutput> {\n\t\tawait this.#client.setReaction({\n\t\t\tchat_id: input.chat_id,\n\t\t\tmessage_id: input.message_id,\n\t\t\temoji: input.emoji\n\t\t})\n\t\treturn {}\n\t}\n\n\tclearReaction(input: MessagingClearReactionInput): Promise<void> {\n\t\tif (!input.emoji) {\n\t\t\tthrow new ToolError('Slack clear reaction requires emoji', { code: 'bad_input' })\n\t\t}\n\t\treturn this.#client.clearReaction({\n\t\t\tchat_id: input.chat_id,\n\t\t\tmessage_id: input.message_id,\n\t\t\temoji: input.emoji\n\t\t})\n\t}\n\n\tasync sendMedia(input: MessagingSendMediaResolved): Promise<MessagingMessageOutput> {\n\t\tconst out = await this.#client.sendMedia({\n\t\t\tchat_id: input.chat_id,\n\t\t\tkind: input.kind,\n\t\t\tbody_base64: input.body_base64,\n\t\t\tfile_name: input.file_name,\n\t\t\t...(input.caption && { caption: input.caption }),\n\t\t\t...(input.reply_to_message_id && { reply_to_message_id: input.reply_to_message_id }),\n\t\t\t...(input.content_type && { content_type: input.content_type })\n\t\t})\n\t\treturn {\n\t\t\tmessage_id: out.message_id,\n\t\t\t...(out.file_id && { file_id: out.file_id })\n\t\t}\n\t}\n\n\tsendMediaBatch(input: MessagingSendMediaBatchResolved): Promise<MessagingSendMediaBatchOutput> {\n\t\treturn sendMediaBatchSequential((item) => this.sendMedia(item), input)\n\t}\n\n\tdownloadFile(input: MessagingDownloadFileInput): Promise<MessagingChannelDownloadOutput> {\n\t\treturn this.#client.downloadFile({\n\t\t\tfile_id: input.file_id,\n\t\t\t...(input.file_name && { file_name: input.file_name })\n\t\t})\n\t}\n\n\tanswerCallback(input: MessagingAnswerCallbackInput): Promise<void> {\n\t\treturn this.#client.answerCallback({\n\t\t\tcallback_query_id: input.callback_query_id,\n\t\t\t...(input.text && { text: input.text }),\n\t\t\t...(input.show_alert !== undefined && { show_alert: input.show_alert })\n\t\t})\n\t}\n\n\tasync read(_input: MessagingReadInput): Promise<void> {\n\t\t// No mark-as-read API; intentional lifecycle no-op for multi-channel hosts.\n\t\twarnUnsupportedMessagingOp('slack', 'read')\n\t}\n}\n","/**\n * Teams provider for the messaging seam. Wraps `TeamsClient`.\n */\n\nimport { ToolError } from '../../../core/errors'\nimport type { HttpServiceOptions } from '../../../transport/http-service'\nimport { TeamsClient } from '../../../vendors/teams'\nimport type {\n\tMessagingAnswerCallbackInput,\n\tMessagingClearReactionInput,\n\tMessagingChannelDownloadOutput,\n\tMessagingDownloadFileInput,\n\tMessagingEditTextInput,\n\tMessagingMessageOutput,\n\tMessagingOps,\n\tMessagingReactionOutput,\n\tMessagingReadInput,\n\tMessagingSendChatActionInput,\n\tMessagingSendMediaBatchOutput,\n\tMessagingSendMediaBatchResolved,\n\tMessagingSendMediaResolved,\n\tMessagingSendTextInput,\n\tMessagingSetReactionInput,\n\tMessagingStopTypingInput,\n\tTeamsMessagingAuth\n} from '../contracts'\nimport { sendMediaBatchSequential, warnUnsupportedMessagingOp } from '../domain'\n\nexport type TeamsMessagingProviderOptions = Pick<HttpServiceOptions, 'fetch' | 'signal'>\n\nfunction requireServiceUrl(serviceUrl: string | undefined, method: string): string {\n\tif (!serviceUrl) {\n\t\tthrow new ToolError(`${method} requires service_url when provider is teams`, { code: 'bad_input' })\n\t}\n\treturn serviceUrl\n}\n\nexport class TeamsMessagingProvider implements MessagingOps {\n\treadonly #client: TeamsClient\n\n\tconstructor(auth: TeamsMessagingAuth, options: TeamsMessagingProviderOptions = {}) {\n\t\tconst { provider: _p, storage: _s, ...vendorAuth } = auth\n\t\tthis.#client = new TeamsClient(vendorAuth, options)\n\t}\n\n\tsendText(input: MessagingSendTextInput): Promise<MessagingMessageOutput> {\n\t\tconst service_url = requireServiceUrl(input.service_url, 'messaging sendText')\n\t\treturn this.#client.sendText({\n\t\t\tchat_id: input.chat_id,\n\t\t\ttext: input.text,\n\t\t\tservice_url,\n\t\t\t...(input.reply_to_message_id && { reply_to_message_id: input.reply_to_message_id }),\n\t\t\t...(input.reply_markup !== undefined && { reply_markup: input.reply_markup })\n\t\t})\n\t}\n\n\teditText(input: MessagingEditTextInput): Promise<MessagingMessageOutput> {\n\t\tconst service_url = requireServiceUrl(input.service_url, 'messaging editText')\n\t\treturn this.#client.editText({\n\t\t\tchat_id: input.chat_id,\n\t\t\tmessage_id: input.message_id,\n\t\t\ttext: input.text,\n\t\t\tservice_url,\n\t\t\t...(input.reply_markup !== undefined && { reply_markup: input.reply_markup })\n\t\t})\n\t}\n\n\tsendChatAction(input: MessagingSendChatActionInput): Promise<void> {\n\t\tconst service_url = requireServiceUrl(input.service_url, 'messaging sendChatAction')\n\t\treturn this.#client.sendChatAction({\n\t\t\tchat_id: input.chat_id,\n\t\t\taction: input.action,\n\t\t\tservice_url\n\t\t})\n\t}\n\n\t/** Teams typing is one-shot; stop is a successful no-op. */\n\tasync stopTyping(_input: MessagingStopTypingInput): Promise<void> {\n\t\treturn\n\t}\n\n\t/**\n\t * Graph reactions when Teams auth has tenant_id; otherwise client no-op.\n\t */\n\tasync setReaction(input: MessagingSetReactionInput): Promise<MessagingReactionOutput> {\n\t\tawait this.#client.setReaction({\n\t\t\tchat_id: input.chat_id,\n\t\t\tmessage_id: input.message_id,\n\t\t\temoji: input.emoji\n\t\t})\n\t\treturn {}\n\t}\n\n\t/**\n\t * Graph unsetReaction when tenant_id bound; requires emoji for Graph.\n\t * Without tenant_id, client no-ops.\n\t */\n\tclearReaction(input: MessagingClearReactionInput): Promise<void> {\n\t\treturn this.#client.clearReaction({\n\t\t\tchat_id: input.chat_id,\n\t\t\tmessage_id: input.message_id,\n\t\t\t...(input.emoji && { emoji: input.emoji })\n\t\t})\n\t}\n\n\tsendMedia(input: MessagingSendMediaResolved): Promise<MessagingMessageOutput> {\n\t\tconst service_url = requireServiceUrl(input.service_url, 'messaging sendMedia')\n\t\treturn this.#client.sendMedia({\n\t\t\tchat_id: input.chat_id,\n\t\t\tkind: input.kind,\n\t\t\tbody_base64: input.body_base64,\n\t\t\tfile_name: input.file_name,\n\t\t\tservice_url,\n\t\t\t...(input.caption && { caption: input.caption }),\n\t\t\t...(input.reply_to_message_id && { reply_to_message_id: input.reply_to_message_id }),\n\t\t\t...(input.content_type && { content_type: input.content_type })\n\t\t})\n\t}\n\n\tsendMediaBatch(input: MessagingSendMediaBatchResolved): Promise<MessagingSendMediaBatchOutput> {\n\t\treturn sendMediaBatchSequential((item) => this.sendMedia(item), input)\n\t}\n\n\tdownloadFile(input: MessagingDownloadFileInput): Promise<MessagingChannelDownloadOutput> {\n\t\treturn this.#client.downloadFile({\n\t\t\tfile_id: input.file_id,\n\t\t\t...(input.file_name && { file_name: input.file_name }),\n\t\t\t...(input.service_url && { service_url: input.service_url })\n\t\t})\n\t}\n\n\tanswerCallback(input: MessagingAnswerCallbackInput): Promise<void> {\n\t\treturn this.#client.answerCallback({\n\t\t\tcallback_query_id: input.callback_query_id,\n\t\t\t...(input.text && { text: input.text }),\n\t\t\t...(input.show_alert !== undefined && { show_alert: input.show_alert }),\n\t\t\t...(input.service_url && { service_url: input.service_url })\n\t\t})\n\t}\n\n\tasync read(_input: MessagingReadInput): Promise<void> {\n\t\t// No mark-as-read API; intentional lifecycle no-op for multi-channel hosts.\n\t\twarnUnsupportedMessagingOp('teams', 'read')\n\t}\n}\n","/**\n * Telegram provider for the messaging seam. Wraps `TelegramClient`.\n */\n\nimport type { HttpServiceOptions } from '../../../transport/http-service'\nimport { TelegramClient } from '../../../vendors/telegram'\nimport type {\n\tMessagingAnswerCallbackInput,\n\tMessagingClearReactionInput,\n\tMessagingChannelDownloadOutput,\n\tMessagingDownloadFileInput,\n\tMessagingEditTextInput,\n\tMessagingMessageOutput,\n\tMessagingOps,\n\tMessagingReactionOutput,\n\tMessagingReadInput,\n\tMessagingSendChatActionInput,\n\tMessagingSendMediaBatchOutput,\n\tMessagingSendMediaBatchResolved,\n\tMessagingSendMediaResolved,\n\tMessagingSendTextInput,\n\tMessagingSetReactionInput,\n\tMessagingStopTypingInput,\n\tTelegramMessagingAuth\n} from '../contracts'\nimport { sendMediaBatchSequential, warnUnsupportedMessagingOp } from '../domain'\n\nexport type TelegramMessagingProviderOptions = Pick<HttpServiceOptions, 'fetch' | 'signal'>\n\nexport class TelegramMessagingProvider implements MessagingOps {\n\treadonly #client: TelegramClient\n\n\tconstructor(auth: TelegramMessagingAuth, options: TelegramMessagingProviderOptions = {}) {\n\t\tconst { provider: _p, storage: _s, ...vendorAuth } = auth\n\t\tthis.#client = new TelegramClient(vendorAuth, options)\n\t}\n\n\tasync sendText(input: MessagingSendTextInput): Promise<MessagingMessageOutput> {\n\t\tconst out = await this.#client.sendText({\n\t\t\tchat_id: input.chat_id,\n\t\t\ttext: input.text,\n\t\t\t...(input.reply_to_message_id && { reply_to_message_id: input.reply_to_message_id }),\n\t\t\t...(input.reply_markup !== undefined && { reply_markup: input.reply_markup })\n\t\t})\n\t\treturn { message_id: out.message_id, ...(out.file_id && { file_id: out.file_id }) }\n\t}\n\n\tasync editText(input: MessagingEditTextInput): Promise<MessagingMessageOutput> {\n\t\tconst out = await this.#client.editText({\n\t\t\tchat_id: input.chat_id,\n\t\t\tmessage_id: input.message_id,\n\t\t\ttext: input.text,\n\t\t\t...(input.reply_markup !== undefined && { reply_markup: input.reply_markup })\n\t\t})\n\t\treturn { message_id: out.message_id }\n\t}\n\n\tsendChatAction(input: MessagingSendChatActionInput): Promise<void> {\n\t\treturn this.#client.sendChatAction({\n\t\t\tchat_id: input.chat_id,\n\t\t\taction: input.action\n\t\t})\n\t}\n\n\t/** Telegram typing auto-expires; stop is a successful no-op. */\n\tasync stopTyping(_input: MessagingStopTypingInput): Promise<void> {\n\t\treturn\n\t}\n\n\tasync setReaction(input: MessagingSetReactionInput): Promise<MessagingReactionOutput> {\n\t\tawait this.#client.setReaction({\n\t\t\tchat_id: input.chat_id,\n\t\t\tmessage_id: input.message_id,\n\t\t\temoji: input.emoji\n\t\t})\n\t\treturn {}\n\t}\n\n\tclearReaction(input: MessagingClearReactionInput): Promise<void> {\n\t\treturn this.#client.clearReaction({\n\t\t\tchat_id: input.chat_id,\n\t\t\tmessage_id: input.message_id\n\t\t})\n\t}\n\n\tasync sendMedia(input: MessagingSendMediaResolved): Promise<MessagingMessageOutput> {\n\t\tconst out = await this.#client.sendMedia({\n\t\t\tchat_id: input.chat_id,\n\t\t\tkind: input.kind,\n\t\t\tbody_base64: input.body_base64,\n\t\t\tfile_name: input.file_name,\n\t\t\t...(input.caption && { caption: input.caption }),\n\t\t\t...(input.reply_to_message_id && { reply_to_message_id: input.reply_to_message_id }),\n\t\t\t...(input.content_type && { content_type: input.content_type })\n\t\t})\n\t\treturn {\n\t\t\tmessage_id: out.message_id,\n\t\t\t...(out.file_id && { file_id: out.file_id })\n\t\t}\n\t}\n\n\tasync sendMediaBatch(input: MessagingSendMediaBatchResolved): Promise<MessagingSendMediaBatchOutput> {\n\t\tconst kinds = new Set(input.items.map((i) => i.kind))\n\t\tconst homogeneous = kinds.size === 1\n\t\tconst kind = input.items[0]?.kind\n\t\tif (homogeneous && kind && input.items.length >= 2 && input.items.length <= 10) {\n\t\t\tconst group = await this.#client.sendMediaGroup({\n\t\t\t\tchat_id: input.chat_id,\n\t\t\t\titems: input.items.map((item) => ({\n\t\t\t\t\tkind: item.kind,\n\t\t\t\t\tbody_base64: item.body_base64,\n\t\t\t\t\tfile_name: item.file_name,\n\t\t\t\t\t...(item.caption && { caption: item.caption }),\n\t\t\t\t\t...(item.content_type && { content_type: item.content_type })\n\t\t\t\t})),\n\t\t\t\t...(input.reply_to_message_id && { reply_to_message_id: input.reply_to_message_id })\n\t\t\t})\n\t\t\treturn {\n\t\t\t\tmessage_ids: group.message_ids,\n\t\t\t\tresults: {\n\t\t\t\t\tresults: group.message_ids.map((message_id, index) => ({\n\t\t\t\t\t\tindex,\n\t\t\t\t\t\tok: true,\n\t\t\t\t\t\tvalue: { message_id }\n\t\t\t\t\t})),\n\t\t\t\t\tsucceeded: group.message_ids.length,\n\t\t\t\t\tfailed: 0\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn sendMediaBatchSequential((item) => this.sendMedia(item), input)\n\t}\n\n\tdownloadFile(input: MessagingDownloadFileInput): Promise<MessagingChannelDownloadOutput> {\n\t\treturn this.#client.downloadFile({\n\t\t\tfile_id: input.file_id,\n\t\t\t...(input.file_name && { file_name: input.file_name })\n\t\t})\n\t}\n\n\tanswerCallback(input: MessagingAnswerCallbackInput): Promise<void> {\n\t\treturn this.#client.answerCallback({\n\t\t\tcallback_query_id: input.callback_query_id,\n\t\t\t...(input.text && { text: input.text }),\n\t\t\t...(input.show_alert !== undefined && { show_alert: input.show_alert })\n\t\t})\n\t}\n\n\tasync read(_input: MessagingReadInput): Promise<void> {\n\t\t// No mark-as-read API; intentional lifecycle no-op for multi-channel hosts.\n\t\twarnUnsupportedMessagingOp('telegram', 'read')\n\t}\n}\n","/**\n * Messaging seam client — picks telegram / slack / teams / imessage from host auth.\n * Resolves ArtifactRef media via optional nested S3 storage before channel calls.\n */\n\nimport { requireAuth } from '../../core/provider'\nimport type { ToolContext } from '../../core/types'\nimport { S3Client } from '../../vendors/s3'\nimport type {\n\tMessagingAnswerCallbackInput,\n\tMessagingAuth,\n\tMessagingClearReactionInput,\n\tMessagingDownloadFileInput,\n\tMessagingDownloadFileOutput,\n\tMessagingEditTextInput,\n\tMessagingMessageOutput,\n\tMessagingOps,\n\tMessagingReactionOutput,\n\tMessagingReadInput,\n\tMessagingSendChatActionInput,\n\tMessagingSendMediaBatchInput,\n\tMessagingSendMediaBatchOutput,\n\tMessagingSendMediaInput,\n\tMessagingSendTextInput,\n\tMessagingSetReactionInput,\n\tMessagingStopTypingInput\n} from './contracts'\nimport { messagingAuthSchema } from './contracts'\nimport {\n\tfinalizeDownloadOutput,\n\tmediaMaxBytesForProvider,\n\tresolveAndSendMediaBatch,\n\tresolveSendMediaInput\n} from './domain'\nimport { ImessageMessagingProvider } from './providers/imessage'\nimport { SlackMessagingProvider } from './providers/slack'\nimport { TeamsMessagingProvider } from './providers/teams'\nimport { TelegramMessagingProvider } from './providers/telegram'\n\nfunction transportOptions(ctx: ToolContext) {\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: MessagingAuth, ctx: ToolContext): MessagingOps {\n\tconst options = transportOptions(ctx)\n\tswitch (auth.provider) {\n\t\tcase 'telegram':\n\t\t\treturn new TelegramMessagingProvider(auth, options)\n\t\tcase 'slack':\n\t\t\treturn new SlackMessagingProvider(auth, options)\n\t\tcase 'teams':\n\t\t\treturn new TeamsMessagingProvider(auth, options)\n\t\tcase 'imessage':\n\t\t\treturn new ImessageMessagingProvider(auth, options)\n\t}\n}\n\nfunction storageFor(auth: MessagingAuth, ctx: ToolContext): S3Client | undefined {\n\tif (!auth.storage) return undefined\n\treturn new S3Client(auth.storage, transportOptions(ctx))\n}\n\nexport class MessagingClient {\n\treadonly #ops: MessagingOps\n\treadonly #storage: S3Client | undefined\n\treadonly #maxMediaBytes: number\n\n\tconstructor(ops: MessagingOps, storage: S3Client | undefined, maxMediaBytes: number) {\n\t\tthis.#ops = ops\n\t\tthis.#storage = storage\n\t\tthis.#maxMediaBytes = maxMediaBytes\n\t}\n\n\tstatic fromContext(ctx: ToolContext): MessagingClient {\n\t\tconst auth = requireAuth(ctx, messagingAuthSchema)\n\t\treturn new MessagingClient(providerFor(auth, ctx), storageFor(auth, ctx), mediaMaxBytesForProvider(auth.provider))\n\t}\n\n\tstatic fromAuth(auth: MessagingAuth, ctx: ToolContext = {}): MessagingClient {\n\t\treturn new MessagingClient(providerFor(auth, ctx), storageFor(auth, ctx), mediaMaxBytesForProvider(auth.provider))\n\t}\n\n\tsendText(input: MessagingSendTextInput): Promise<MessagingMessageOutput> {\n\t\treturn this.#ops.sendText(input)\n\t}\n\n\teditText(input: MessagingEditTextInput): Promise<MessagingMessageOutput> {\n\t\treturn this.#ops.editText(input)\n\t}\n\n\tsendChatAction(input: MessagingSendChatActionInput): Promise<void> {\n\t\treturn this.#ops.sendChatAction(input)\n\t}\n\n\tstopTyping(input: MessagingStopTypingInput): Promise<void> {\n\t\treturn this.#ops.stopTyping(input)\n\t}\n\n\tsetReaction(input: MessagingSetReactionInput): Promise<MessagingReactionOutput> {\n\t\treturn this.#ops.setReaction(input)\n\t}\n\n\tclearReaction(input: MessagingClearReactionInput): Promise<void> {\n\t\treturn this.#ops.clearReaction(input)\n\t}\n\n\tasync sendMedia(input: MessagingSendMediaInput): Promise<MessagingMessageOutput> {\n\t\tconst resolved = await resolveSendMediaInput(input, this.#storage, this.#maxMediaBytes)\n\t\treturn this.#ops.sendMedia(resolved)\n\t}\n\n\tasync sendMediaBatch(input: MessagingSendMediaBatchInput): Promise<MessagingSendMediaBatchOutput> {\n\t\treturn resolveAndSendMediaBatch(input, this.#storage, this.#maxMediaBytes, (resolved) =>\n\t\t\tthis.#ops.sendMediaBatch(resolved)\n\t\t)\n\t}\n\n\tasync downloadFile(input: MessagingDownloadFileInput): Promise<MessagingDownloadFileOutput> {\n\t\tconst got = await this.#ops.downloadFile(input)\n\t\treturn finalizeDownloadOutput(got, input.destination_key, this.#storage)\n\t}\n\n\tanswerCallback(input: MessagingAnswerCallbackInput): Promise<void> {\n\t\treturn this.#ops.answerCallback(input)\n\t}\n\n\tread(input: MessagingReadInput): Promise<void> {\n\t\treturn this.#ops.read(input)\n\t}\n}\n","import { defineModule, defineTool } from '../../core/define'\nimport { MessagingClient } from './client'\nimport {\n\tmessagingAnswerCallbackInputSchema,\n\tmessagingAuthSchema,\n\tmessagingClearReactionInputSchema,\n\tmessagingDownloadFileInputSchema,\n\tmessagingDownloadFileOutputSchema,\n\tmessagingEditTextInputSchema,\n\tmessagingMessageOutputSchema,\n\tmessagingOkOutputSchema,\n\tmessagingReactionOutputSchema,\n\tmessagingReadInputSchema,\n\tmessagingSendChatActionInputSchema,\n\tmessagingSendMediaBatchInputSchema,\n\tmessagingSendMediaBatchOutputSchema,\n\tmessagingSendMediaInputSchema,\n\tmessagingSendTextInputSchema,\n\tmessagingSetReactionInputSchema,\n\tmessagingStopTypingInputSchema\n} from './contracts'\n\nexport type { MessagingAuth } from './contracts'\nexport { messagingAuthSchema }\n\nexport const messagingSendTextTool = defineTool({\n\tid: 'messaging-send-text',\n\tname: 'messagingSendText',\n\tdescription:\n\t\t'Send a text message on the bound messaging channel. Optional reply_to_message_id anchors a reply or thread. Returns message_id.',\n\tinputSchema: messagingSendTextInputSchema,\n\toutputSchema: messagingMessageOutputSchema,\n\tsideEffect: 'send',\n\truntime: 'both',\n\texecute: async (input, ctx) => MessagingClient.fromContext(ctx).sendText(input)\n})\n\nexport const messagingEditTextTool = defineTool({\n\tid: 'messaging-edit-text',\n\tname: 'messagingEditText',\n\tdescription: 'Edit the text of an existing message on the bound messaging channel.',\n\tinputSchema: messagingEditTextInputSchema,\n\toutputSchema: messagingMessageOutputSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\texecute: async (input, ctx) => MessagingClient.fromContext(ctx).editText(input)\n})\n\nexport const messagingSendChatActionTool = defineTool({\n\tid: 'messaging-send-chat-action',\n\tname: 'messagingSendChatAction',\n\tdescription:\n\t\t'Show a chat action on the conversation when supported (typing, upload_photo, upload_document, …). Optional reply_to_message_id anchors a thread when the channel uses thread-scoped status.',\n\tinputSchema: messagingSendChatActionInputSchema,\n\toutputSchema: messagingOkOutputSchema,\n\tsideEffect: 'none',\n\truntime: 'both',\n\texecute: async (input, ctx) => {\n\t\tawait MessagingClient.fromContext(ctx).sendChatAction(input)\n\t\treturn { ok: true }\n\t}\n})\n\nexport const messagingStopTypingTool = defineTool({\n\tid: 'messaging-stop-typing',\n\tname: 'messagingStopTyping',\n\tdescription:\n\t\t'Stop a typing or busy indicator on the conversation when supported. Optional reply_to_message_id clears thread-scoped status when the channel uses it.',\n\tinputSchema: messagingStopTypingInputSchema,\n\toutputSchema: messagingOkOutputSchema,\n\tsideEffect: 'none',\n\truntime: 'both',\n\texecute: async (input, ctx) => {\n\t\tawait MessagingClient.fromContext(ctx).stopTyping(input)\n\t\treturn { ok: true }\n\t}\n})\n\nexport const messagingSetReactionTool = defineTool({\n\tid: 'messaging-set-reaction',\n\tname: 'messagingSetReaction',\n\tdescription:\n\t\t'Set an emoji reaction on a message when supported. Returns optional message_id when the channel creates a separate reaction message — store it for clearReaction.',\n\tinputSchema: messagingSetReactionInputSchema,\n\toutputSchema: messagingReactionOutputSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\texecute: async (input, ctx) => MessagingClient.fromContext(ctx).setReaction(input)\n})\n\nexport const messagingClearReactionTool = defineTool({\n\tid: 'messaging-clear-reaction',\n\tname: 'messagingClearReaction',\n\tdescription:\n\t\t'Clear a reaction on a message when supported. Pass emoji when required. When setReaction returned a message_id, pass that id instead of the target message id.',\n\tinputSchema: messagingClearReactionInputSchema,\n\toutputSchema: messagingOkOutputSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\texecute: async (input, ctx) => {\n\t\tawait MessagingClient.fromContext(ctx).clearReaction(input)\n\t\treturn { ok: true }\n\t}\n})\n\nexport const messagingSendMediaTool = defineTool({\n\tid: 'messaging-send-media',\n\tname: 'messagingSendMedia',\n\tdescription:\n\t\t'Send one photo or document on the bound messaging channel. Provide body_base64 for small payloads or source ArtifactRef (object store) for large files.',\n\tinputSchema: messagingSendMediaInputSchema,\n\toutputSchema: messagingMessageOutputSchema,\n\tsideEffect: 'send',\n\truntime: 'both',\n\texecute: async (input, ctx) => MessagingClient.fromContext(ctx).sendMedia(input)\n})\n\nexport const messagingSendMediaBatchTool = defineTool({\n\tid: 'messaging-send-media-batch',\n\tname: 'messagingSendMediaBatch',\n\tdescription:\n\t\t'Send 1–10 media items in order (body_base64 or source ArtifactRef per item). May use a native album when all items share the same kind (2–10); otherwise sequential. Partial failures are reported per item.',\n\tinputSchema: messagingSendMediaBatchInputSchema,\n\toutputSchema: messagingSendMediaBatchOutputSchema,\n\tsideEffect: 'send',\n\truntime: 'both',\n\texecute: async (input, ctx) => MessagingClient.fromContext(ctx).sendMediaBatch(input)\n})\n\nexport const messagingDownloadFileTool = defineTool({\n\tid: 'messaging-download-file',\n\tname: 'messagingDownloadFile',\n\tdescription:\n\t\t'Download a file by file_id (and optional chat_id / file_name). Returns body_base64 by default, or an ArtifactRef when destination_key is set (writes to bound object storage).',\n\tinputSchema: messagingDownloadFileInputSchema,\n\toutputSchema: messagingDownloadFileOutputSchema,\n\tsideEffect: 'read',\n\truntime: 'both',\n\texecute: async (input, ctx) => MessagingClient.fromContext(ctx).downloadFile(input)\n})\n\nexport const messagingAnswerCallbackTool = defineTool({\n\tid: 'messaging-answer-callback',\n\tname: 'messagingAnswerCallback',\n\tdescription: 'Acknowledge an inbound interactive callback when supported (toast, alert, or response URL).',\n\tinputSchema: messagingAnswerCallbackInputSchema,\n\toutputSchema: messagingOkOutputSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\texecute: async (input, ctx) => {\n\t\tawait MessagingClient.fromContext(ctx).answerCallback(input)\n\t\treturn { ok: true }\n\t}\n})\n\nexport const messagingReadTool = defineTool({\n\tid: 'messaging-read',\n\tname: 'messagingRead',\n\tdescription: 'Mark conversation messages as read up to message_id when supported.',\n\tinputSchema: messagingReadInputSchema,\n\toutputSchema: messagingOkOutputSchema,\n\tsideEffect: 'write',\n\truntime: 'both',\n\texecute: async (input, ctx) => {\n\t\tawait MessagingClient.fromContext(ctx).read(input)\n\t\treturn { ok: true }\n\t}\n})\n\nexport const messagingModule = defineModule({\n\tid: 'messaging',\n\ttitle: 'Messaging',\n\tdescription:\n\t\t'Send and edit text, media (single and batch), chat actions, reactions, file download, callback answers, and read on the bound messaging channel.',\n\truntime: 'both',\n\tauth: { type: 'custom', schema: messagingAuthSchema },\n\tcategories: ['messaging', 'chat'],\n\tclassification: 'pii',\n\ttags: ['multi-provider'],\n\ttools: [\n\t\tmessagingSendTextTool,\n\t\tmessagingEditTextTool,\n\t\tmessagingSendChatActionTool,\n\t\tmessagingStopTypingTool,\n\t\tmessagingSetReactionTool,\n\t\tmessagingClearReactionTool,\n\t\tmessagingSendMediaTool,\n\t\tmessagingSendMediaBatchTool,\n\t\tmessagingDownloadFileTool,\n\t\tmessagingAnswerCallbackTool,\n\t\tmessagingReadTool\n\t]\n})\n"],"mappings":"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"}
@@ -0,0 +1,287 @@
1
+ import { a as ModuleDefinition, o as ToolContext, s as ToolDefinition } from "../../types-Ccb0DXY9.js";
2
+ import "../../index-CZX5OeOF.js";
3
+ import { t as ObjectArtifactStoreOptions } from "../../object-artifact-store-CMTzCm_G.js";
4
+ import { z } from "zod";
5
+ //#region src/modules/pdf/contracts.d.ts
6
+ declare const MAX_PDF_BYTES: number;
7
+ declare const MAX_PDF_PAGES = 500;
8
+ declare const pdfAuthSchema: z.ZodObject<{
9
+ storage: z.ZodObject<{
10
+ access_key_id: z.ZodString;
11
+ secret_access_key: z.ZodString;
12
+ region: z.ZodString;
13
+ bucket: z.ZodString;
14
+ endpoint: z.ZodOptional<z.ZodURL>;
15
+ session_token: z.ZodOptional<z.ZodString>;
16
+ key_prefix: z.ZodOptional<z.ZodString>;
17
+ }, z.core.$strip>;
18
+ }, z.core.$strip>;
19
+ declare const pdfInspectInputSchema: z.ZodObject<{
20
+ source: z.ZodObject<{
21
+ store: z.ZodEnum<{
22
+ host: "host";
23
+ object: "object";
24
+ }>;
25
+ key: z.ZodString;
26
+ media_type: z.ZodOptional<z.ZodString>;
27
+ filename: z.ZodOptional<z.ZodString>;
28
+ byte_length: z.ZodOptional<z.ZodInt>;
29
+ }, z.core.$strip>;
30
+ }, z.core.$strip>;
31
+ declare const pdfPageInfoSchema: z.ZodObject<{
32
+ page_number: z.ZodInt;
33
+ width: z.ZodNumber;
34
+ height: z.ZodNumber;
35
+ rotation_degrees: z.ZodNumber;
36
+ }, z.core.$strip>;
37
+ declare const pdfMetadataSchema: z.ZodObject<{
38
+ title: z.ZodOptional<z.ZodString>;
39
+ author: z.ZodOptional<z.ZodString>;
40
+ subject: z.ZodOptional<z.ZodString>;
41
+ keywords: z.ZodOptional<z.ZodString>;
42
+ creator: z.ZodOptional<z.ZodString>;
43
+ producer: z.ZodOptional<z.ZodString>;
44
+ }, z.core.$strip>;
45
+ declare const pdfInspectOutputSchema: z.ZodObject<{
46
+ page_count: z.ZodInt;
47
+ pages: z.ZodArray<z.ZodObject<{
48
+ page_number: z.ZodInt;
49
+ width: z.ZodNumber;
50
+ height: z.ZodNumber;
51
+ rotation_degrees: z.ZodNumber;
52
+ }, z.core.$strip>>;
53
+ metadata: z.ZodObject<{
54
+ title: z.ZodOptional<z.ZodString>;
55
+ author: z.ZodOptional<z.ZodString>;
56
+ subject: z.ZodOptional<z.ZodString>;
57
+ keywords: z.ZodOptional<z.ZodString>;
58
+ creator: z.ZodOptional<z.ZodString>;
59
+ producer: z.ZodOptional<z.ZodString>;
60
+ }, z.core.$strip>;
61
+ }, z.core.$strip>;
62
+ declare const pdfMergeInputSchema: z.ZodObject<{
63
+ sources: z.ZodArray<z.ZodObject<{
64
+ store: z.ZodEnum<{
65
+ host: "host";
66
+ object: "object";
67
+ }>;
68
+ key: z.ZodString;
69
+ media_type: z.ZodOptional<z.ZodString>;
70
+ filename: z.ZodOptional<z.ZodString>;
71
+ byte_length: z.ZodOptional<z.ZodInt>;
72
+ }, z.core.$strip>>;
73
+ output_key: z.ZodString;
74
+ filename: z.ZodOptional<z.ZodString>;
75
+ }, z.core.$strip>;
76
+ declare const pdfWriteOutputSchema: z.ZodObject<{
77
+ result: z.ZodObject<{
78
+ store: z.ZodEnum<{
79
+ host: "host";
80
+ object: "object";
81
+ }>;
82
+ key: z.ZodString;
83
+ media_type: z.ZodOptional<z.ZodString>;
84
+ filename: z.ZodOptional<z.ZodString>;
85
+ byte_length: z.ZodOptional<z.ZodInt>;
86
+ }, z.core.$strip>;
87
+ }, z.core.$strip>;
88
+ declare const pdfExtractPagesInputSchema: z.ZodObject<{
89
+ source: z.ZodObject<{
90
+ store: z.ZodEnum<{
91
+ host: "host";
92
+ object: "object";
93
+ }>;
94
+ key: z.ZodString;
95
+ media_type: z.ZodOptional<z.ZodString>;
96
+ filename: z.ZodOptional<z.ZodString>;
97
+ byte_length: z.ZodOptional<z.ZodInt>;
98
+ }, z.core.$strip>;
99
+ pages: z.ZodArray<z.ZodInt>;
100
+ output_key: z.ZodString;
101
+ filename: z.ZodOptional<z.ZodString>;
102
+ }, z.core.$strip>;
103
+ declare const pdfSplitInputSchema: z.ZodObject<{
104
+ source: z.ZodObject<{
105
+ store: z.ZodEnum<{
106
+ host: "host";
107
+ object: "object";
108
+ }>;
109
+ key: z.ZodString;
110
+ media_type: z.ZodOptional<z.ZodString>;
111
+ filename: z.ZodOptional<z.ZodString>;
112
+ byte_length: z.ZodOptional<z.ZodInt>;
113
+ }, z.core.$strip>;
114
+ output_key_prefix: z.ZodString;
115
+ filename_prefix: z.ZodOptional<z.ZodString>;
116
+ }, z.core.$strip>;
117
+ declare const pdfSplitOutputSchema: z.ZodObject<{
118
+ results: z.ZodArray<z.ZodObject<{
119
+ store: z.ZodEnum<{
120
+ host: "host";
121
+ object: "object";
122
+ }>;
123
+ key: z.ZodString;
124
+ media_type: z.ZodOptional<z.ZodString>;
125
+ filename: z.ZodOptional<z.ZodString>;
126
+ byte_length: z.ZodOptional<z.ZodInt>;
127
+ }, z.core.$strip>>;
128
+ }, z.core.$strip>;
129
+ declare const pdfRotateInputSchema: z.ZodObject<{
130
+ source: z.ZodObject<{
131
+ store: z.ZodEnum<{
132
+ host: "host";
133
+ object: "object";
134
+ }>;
135
+ key: z.ZodString;
136
+ media_type: z.ZodOptional<z.ZodString>;
137
+ filename: z.ZodOptional<z.ZodString>;
138
+ byte_length: z.ZodOptional<z.ZodInt>;
139
+ }, z.core.$strip>;
140
+ degrees: z.ZodUnion<readonly [z.ZodLiteral<90>, z.ZodLiteral<180>, z.ZodLiteral<270>]>;
141
+ pages: z.ZodOptional<z.ZodArray<z.ZodInt>>;
142
+ output_key: z.ZodString;
143
+ filename: z.ZodOptional<z.ZodString>;
144
+ }, z.core.$strip>;
145
+ type PdfAuth = z.infer<typeof pdfAuthSchema>;
146
+ type PdfInspectInput = z.infer<typeof pdfInspectInputSchema>;
147
+ type PdfInspectOutput = z.infer<typeof pdfInspectOutputSchema>;
148
+ type PdfMergeInput = z.infer<typeof pdfMergeInputSchema>;
149
+ type PdfExtractPagesInput = z.infer<typeof pdfExtractPagesInputSchema>;
150
+ type PdfSplitInput = z.infer<typeof pdfSplitInputSchema>;
151
+ type PdfSplitOutput = z.infer<typeof pdfSplitOutputSchema>;
152
+ type PdfRotateInput = z.infer<typeof pdfRotateInputSchema>;
153
+ type PdfWriteOutput = z.infer<typeof pdfWriteOutputSchema>;
154
+ //#endregion
155
+ //#region src/modules/pdf/client.d.ts
156
+ type PdfClientOptions = ObjectArtifactStoreOptions;
157
+ declare class PdfClient {
158
+ #private;
159
+ constructor(auth: PdfAuth, options?: PdfClientOptions);
160
+ static fromContext(ctx: ToolContext): PdfClient;
161
+ static fromAuth(auth: PdfAuth, options?: PdfClientOptions): PdfClient;
162
+ inspect(input: PdfInspectInput): Promise<PdfInspectOutput>;
163
+ merge(input: PdfMergeInput): Promise<PdfWriteOutput>;
164
+ extractPages(input: PdfExtractPagesInput): Promise<PdfWriteOutput>;
165
+ split(input: PdfSplitInput): Promise<PdfSplitOutput>;
166
+ rotate(input: PdfRotateInput): Promise<PdfWriteOutput>;
167
+ }
168
+ //#endregion
169
+ //#region src/modules/pdf/module.d.ts
170
+ declare const pdfInspectTool: ToolDefinition<{
171
+ source: {
172
+ store: "host" | "object";
173
+ key: string;
174
+ media_type?: string | undefined;
175
+ filename?: string | undefined;
176
+ byte_length?: number | undefined;
177
+ };
178
+ }, {
179
+ page_count: number;
180
+ pages: {
181
+ page_number: number;
182
+ width: number;
183
+ height: number;
184
+ rotation_degrees: number;
185
+ }[];
186
+ metadata: {
187
+ title?: string | undefined;
188
+ author?: string | undefined;
189
+ subject?: string | undefined;
190
+ keywords?: string | undefined;
191
+ creator?: string | undefined;
192
+ producer?: string | undefined;
193
+ };
194
+ }>;
195
+ declare const pdfMergeTool: ToolDefinition<{
196
+ sources: {
197
+ store: "host" | "object";
198
+ key: string;
199
+ media_type?: string | undefined;
200
+ filename?: string | undefined;
201
+ byte_length?: number | undefined;
202
+ }[];
203
+ output_key: string;
204
+ filename?: string | undefined;
205
+ }, {
206
+ result: {
207
+ store: "host" | "object";
208
+ key: string;
209
+ media_type?: string | undefined;
210
+ filename?: string | undefined;
211
+ byte_length?: number | undefined;
212
+ };
213
+ }>;
214
+ declare const pdfExtractPagesTool: ToolDefinition<{
215
+ source: {
216
+ store: "host" | "object";
217
+ key: string;
218
+ media_type?: string | undefined;
219
+ filename?: string | undefined;
220
+ byte_length?: number | undefined;
221
+ };
222
+ pages: number[];
223
+ output_key: string;
224
+ filename?: string | undefined;
225
+ }, {
226
+ result: {
227
+ store: "host" | "object";
228
+ key: string;
229
+ media_type?: string | undefined;
230
+ filename?: string | undefined;
231
+ byte_length?: number | undefined;
232
+ };
233
+ }>;
234
+ declare const pdfSplitTool: ToolDefinition<{
235
+ source: {
236
+ store: "host" | "object";
237
+ key: string;
238
+ media_type?: string | undefined;
239
+ filename?: string | undefined;
240
+ byte_length?: number | undefined;
241
+ };
242
+ output_key_prefix: string;
243
+ filename_prefix?: string | undefined;
244
+ }, {
245
+ results: {
246
+ store: "host" | "object";
247
+ key: string;
248
+ media_type?: string | undefined;
249
+ filename?: string | undefined;
250
+ byte_length?: number | undefined;
251
+ }[];
252
+ }>;
253
+ declare const pdfRotateTool: ToolDefinition<{
254
+ source: {
255
+ store: "host" | "object";
256
+ key: string;
257
+ media_type?: string | undefined;
258
+ filename?: string | undefined;
259
+ byte_length?: number | undefined;
260
+ };
261
+ degrees: 90 | 180 | 270;
262
+ pages?: number[] | undefined;
263
+ output_key: string;
264
+ filename?: string | undefined;
265
+ }, {
266
+ result: {
267
+ store: "host" | "object";
268
+ key: string;
269
+ media_type?: string | undefined;
270
+ filename?: string | undefined;
271
+ byte_length?: number | undefined;
272
+ };
273
+ }>;
274
+ declare const pdfModule: ModuleDefinition<{
275
+ storage: {
276
+ access_key_id: string;
277
+ secret_access_key: string;
278
+ region: string;
279
+ bucket: string;
280
+ endpoint?: string | undefined;
281
+ session_token?: string | undefined;
282
+ key_prefix?: string | undefined;
283
+ };
284
+ }>;
285
+ //#endregion
286
+ export { MAX_PDF_BYTES, MAX_PDF_PAGES, type PdfAuth, PdfClient, type PdfClientOptions, type PdfExtractPagesInput, type PdfInspectInput, type PdfInspectOutput, type PdfMergeInput, type PdfRotateInput, type PdfSplitInput, type PdfSplitOutput, type PdfWriteOutput, pdfAuthSchema, pdfExtractPagesInputSchema, pdfExtractPagesTool, pdfInspectInputSchema, pdfInspectOutputSchema, pdfInspectTool, pdfMergeInputSchema, pdfMergeTool, pdfMetadataSchema, pdfModule, pdfPageInfoSchema, pdfRotateInputSchema, pdfRotateTool, pdfSplitInputSchema, pdfSplitOutputSchema, pdfSplitTool, pdfWriteOutputSchema };
287
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../src/modules/pdf/contracts.ts","../../../src/modules/pdf/client.ts","../../../src/modules/pdf/module.ts"],"mappings":";;;;;cAKa;cACA;cAEA,eAAa,EAAA;;;;;;;;;;GAExB,EAAA,KAAA;cAOW,uBAAqB,EAAA;;;;;;;;;;;GAAuB,EAAA,KAAA;cAE5C,mBAAiB,EAAA;;;;;GAK5B,EAAA,KAAA;cAEW,mBAAiB,EAAA;;;;;;;GAO5B,EAAA,KAAA;cAEW,wBAAsB,EAAA;;;;;;;;;;;;;;;;GAIjC,EAAA,KAAA;cAEW,qBAAmB,EAAA;;;;;;;;;;;;;GAI9B,EAAA,KAAA;cAEW,sBAAoB,EAAA;;;;;;;;;;;GAE/B,EAAA,KAAA;cAEW,4BAA0B,EAAA;;;;;;;;;;;;;;GAKrC,EAAA,KAAA;cAEW,qBAAmB,EAAA;;;;;;;;;;;;;GAI9B,EAAA,KAAA;cAEW,sBAAoB,EAAA;;;;;;;;;;;GAE/B,EAAA,KAAA;cAEW,sBAAoB,EAAA;;;;;;;;;;;;;;;GAM/B,EAAA,KAAA;KAEU,UAAU,EAAE,aAAa;KACzB,kBAAkB,EAAE,aAAa;KACjC,mBAAmB,EAAE,aAAa;KAClC,gBAAgB,EAAE,aAAa;KAC/B,uBAAuB,EAAE,aAAa;KACtC,gBAAgB,EAAE,aAAa;KAC/B,iBAAiB,EAAE,aAAa;KAChC,iBAAiB,EAAE,aAAa;KAChC,iBAAiB,EAAE,aAAa;;;KC1DhC,mBAAmB;cAsBlB;;EAGZ,YAAY,MAAM,SAAS,UAAS;SAW7B,YAAY,KAAK,cAAc;SAO/B,SAAS,MAAM,SAAS,UAAS,mBAAwB;EAI1D,QAAQ,OAAO,kBAAkB,QAAQ;EA2BzC,MAAM,OAAO,gBAAgB,QAAQ;EAUrC,aAAa,OAAO,uBAAuB,QAAQ;EAQnD,MAAM,OAAO,gBAAgB,QAAQ;EAgBrC,OAAO,OAAO,iBAAiB,QAAQ;;;;cCxHjC,gBAAA;;;;;;;;;;;;;;;;;;;;;;;;;cAaA,cAAA;;;;;;;;;;;;;;;;;;;cAaA,qBAAA;;;;;;;;;;;;;;;;;;;;cAaA,cAAA;;;;;;;;;;;;;;;;;;;cAaA,eAAA;;;;;;;;;;;;;;;;;;;;;cAaA,WAAA"}