@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,157 @@
1
+ //#region src/vendors/_messaging/transport.ts
2
+ const DEFAULT_LIVE_INTERVAL_MS = 1e3;
3
+ const DEFAULT_TYPING_INTERVAL_MS = 4e3;
4
+ /** Progressive outbound text via send + edit cadence. Shared across channels. */
5
+ function createLiveMessage(deps) {
6
+ const intervalMs = deps.intervalMs ?? DEFAULT_LIVE_INTERVAL_MS;
7
+ const now = deps.now ?? Date.now;
8
+ const sleep = deps.sleep ?? sleepMs;
9
+ let editCount = 0;
10
+ let finalizing = false;
11
+ let initialSendOutcomeUnknown;
12
+ let lastAttemptedText = "";
13
+ let lastAttemptError;
14
+ let lastSuccessfulText = "";
15
+ let lastUpdateAt = 0;
16
+ let latestText = "";
17
+ let messageId = null;
18
+ let pump = null;
19
+ const waitForCadence = async () => {
20
+ const waitMs = Math.max(0, lastUpdateAt + intervalMs - now());
21
+ if (waitMs > 0) await sleep(waitMs);
22
+ };
23
+ const runPump = async () => {
24
+ while (!finalizing && messageId !== null && latestText !== "" && latestText !== lastAttemptedText) {
25
+ await waitForCadence();
26
+ if (finalizing || messageId === null) return;
27
+ const nextText = latestText;
28
+ lastAttemptedText = nextText;
29
+ try {
30
+ await deps.editText(messageId, nextText);
31
+ lastAttemptError = void 0;
32
+ lastSuccessfulText = nextText;
33
+ editCount += 1;
34
+ } catch (error) {
35
+ lastAttemptError = error;
36
+ } finally {
37
+ lastUpdateAt = now();
38
+ }
39
+ }
40
+ };
41
+ const ensurePump = () => {
42
+ if (pump !== null) return;
43
+ pump = runPump().finally(() => {
44
+ pump = null;
45
+ if (!finalizing && messageId !== null && latestText !== "" && latestText !== lastAttemptedText) ensurePump();
46
+ });
47
+ };
48
+ return {
49
+ start: async (text) => {
50
+ if (initialSendOutcomeUnknown) throw initialSendOutcomeUnknown;
51
+ if (finalizing || messageId !== null) return;
52
+ try {
53
+ messageId = (await deps.sendText(text)).message_id;
54
+ lastAttemptedText = text;
55
+ lastSuccessfulText = text;
56
+ lastUpdateAt = now();
57
+ } catch (error) {
58
+ if (deps.isOutcomeUnknown(error)) {
59
+ initialSendOutcomeUnknown = error;
60
+ throw error;
61
+ }
62
+ }
63
+ },
64
+ update: async (text) => {
65
+ if (finalizing || messageId === null || text === "") return;
66
+ latestText = text;
67
+ if (latestText !== lastAttemptedText) ensurePump();
68
+ },
69
+ finalize: async (text) => {
70
+ finalizing = true;
71
+ latestText = text;
72
+ if (pump !== null) await pump;
73
+ if (initialSendOutcomeUnknown) throw initialSendOutcomeUnknown;
74
+ if (messageId === null) return {
75
+ message_id: (await deps.sendText(text)).message_id,
76
+ edit_count: editCount
77
+ };
78
+ if (lastSuccessfulText === text) return {
79
+ message_id: messageId,
80
+ edit_count: editCount
81
+ };
82
+ if (lastAttemptedText === text && lastAttemptError && deps.isOutcomeUnknown(lastAttemptError)) throw lastAttemptError;
83
+ await waitForCadence();
84
+ try {
85
+ await deps.editText(messageId, text);
86
+ editCount += 1;
87
+ return {
88
+ message_id: messageId,
89
+ edit_count: editCount
90
+ };
91
+ } catch (error) {
92
+ if (deps.isDefiniteRejection(error)) return {
93
+ message_id: (await deps.sendText(text)).message_id,
94
+ edit_count: editCount
95
+ };
96
+ throw error;
97
+ }
98
+ }
99
+ };
100
+ }
101
+ /**
102
+ * Renew chat-action (typing) while a turn is active.
103
+ * Immediate pulse on start, then once per interval until stop.
104
+ * stop() bumps generation so in-flight work cannot restart a dead schedule.
105
+ */
106
+ function createTypingPulse(deps) {
107
+ const intervalMs = deps.intervalMs ?? DEFAULT_TYPING_INTERVAL_MS;
108
+ const sleep = deps.sleep ?? sleepMs;
109
+ let active = false;
110
+ let generation = 0;
111
+ let wake;
112
+ const pulse = async () => {
113
+ try {
114
+ await deps.send();
115
+ } catch {}
116
+ };
117
+ const waitInterval = () => new Promise((resolve) => {
118
+ let settled = false;
119
+ const done = () => {
120
+ if (settled) return;
121
+ settled = true;
122
+ if (wake === done) wake = void 0;
123
+ resolve();
124
+ };
125
+ wake = done;
126
+ sleep(intervalMs).then(done);
127
+ });
128
+ const renew = async (mine) => {
129
+ while (active && mine === generation) {
130
+ await waitInterval();
131
+ if (!active || mine !== generation) return;
132
+ await pulse();
133
+ }
134
+ };
135
+ return {
136
+ start: async () => {
137
+ if (active) return;
138
+ active = true;
139
+ const mine = generation;
140
+ await pulse();
141
+ if (!active || mine !== generation) return;
142
+ renew(mine);
143
+ },
144
+ stop: () => {
145
+ active = false;
146
+ generation += 1;
147
+ wake?.();
148
+ }
149
+ };
150
+ }
151
+ function sleepMs(ms) {
152
+ return new Promise((resolve) => setTimeout(resolve, ms));
153
+ }
154
+ //#endregion
155
+ export { createTypingPulse as n, createLiveMessage as t };
156
+
157
+ //# sourceMappingURL=transport-B4vn-XiQ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport-B4vn-XiQ.js","names":[],"sources":["../src/vendors/_messaging/transport.ts"],"sourcesContent":["/**\n * Messaging kit for channel vendor packs (telegram, …).\n * Not published — directory `_messaging` is skipped by surface codegen.\n *\n * Shared method names + pure presentation helpers (live message, typing pulse).\n * Full channel packs own native-only APIs; this is not a multi-provider seam module.\n */\n\nexport type ChannelChatAction =\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\nexport type ChannelSendTextInput = {\n\tchat_id: string\n\ttext: string\n\treply_to_message_id?: string\n\t/** Channel-native reply markup when supported. */\n\treply_markup?: unknown\n}\n\nexport type ChannelEditTextInput = {\n\tchat_id: string\n\tmessage_id: string\n\ttext: string\n\treply_markup?: unknown\n}\n\nexport type ChannelSendChatActionInput = {\n\tchat_id: string\n\taction: ChannelChatAction\n\t/** Thread / reply anchor (Slack: thread_ts for assistant.threads.setStatus). */\n\treply_to_message_id?: string\n}\n\nexport type ChannelSetReactionInput = {\n\tchat_id: string\n\tmessage_id: string\n\t/** Any emoji the channel API accepts. */\n\temoji: string\n}\n\nexport type ChannelClearReactionInput = {\n\tchat_id: string\n\tmessage_id: string\n}\n\nexport type ChannelSendMediaInput = {\n\tchat_id: string\n\tkind: 'photo' | 'document'\n\t/** File body as base64. */\n\tbody_base64: string\n\tfile_name: string\n\tcaption?: string\n\treply_to_message_id?: string\n\tcontent_type?: string\n}\n\nexport type ChannelDownloadFileInput = {\n\tfile_id: string\n\tfile_name?: string\n}\n\nexport type ChannelAnswerCallbackInput = {\n\tcallback_query_id: string\n\ttext?: string\n\tshow_alert?: boolean\n}\n\nexport type ChannelMessageRef = {\n\tmessage_id: string\n}\n\nexport type ChannelDownloadFileResult = {\n\tfile_name: string\n\tfile_size?: number\n\tbytes: Uint8Array\n}\n\n/**\n * Shared transport subset every channel client implements with identical method names.\n * Channel-specific ops stay on the pack client only.\n */\nexport type ChannelTransport = {\n\tsendText: (input: ChannelSendTextInput) => Promise<ChannelMessageRef>\n\teditText: (input: ChannelEditTextInput) => Promise<ChannelMessageRef>\n\tsendChatAction: (input: ChannelSendChatActionInput) => Promise<void>\n\tsetReaction: (input: ChannelSetReactionInput) => Promise<void>\n\tclearReaction: (input: ChannelClearReactionInput) => Promise<void>\n\tsendMedia: (input: ChannelSendMediaInput) => Promise<ChannelMessageRef>\n\tdownloadFile: (input: ChannelDownloadFileInput) => Promise<ChannelDownloadFileResult>\n\tanswerCallback: (input: ChannelAnswerCallbackInput) => Promise<void>\n}\n\nconst DEFAULT_LIVE_INTERVAL_MS = 1000\nconst DEFAULT_TYPING_INTERVAL_MS = 4000\n\nexport type LiveMessageDeps = {\n\tsendText: (text: string) => Promise<ChannelMessageRef>\n\teditText: (messageId: string, text: string) => Promise<ChannelMessageRef>\n\t/** True when the provider definitively rejected the request (safe to fallback send). */\n\tisDefiniteRejection: (error: unknown) => boolean\n\t/** True when outcome is unknown (do not blindly resend). */\n\tisOutcomeUnknown: (error: unknown) => boolean\n\tintervalMs?: number\n\tnow?: () => number\n\tsleep?: (ms: number) => Promise<void>\n}\n\nexport type LiveMessage = {\n\t/** First visible message (send). No-op if already started. */\n\tstart: (text: string) => Promise<void>\n\t/** Cadenced edit of the live message. No-op before start or after finalize. */\n\tupdate: (text: string) => Promise<void>\n\t/** Authoritative final text (edit or send). */\n\tfinalize: (text: string) => Promise<{ message_id: string; edit_count: number }>\n}\n\n/** Progressive outbound text via send + edit cadence. Shared across channels. */\nexport function createLiveMessage(deps: LiveMessageDeps): LiveMessage {\n\tconst intervalMs = deps.intervalMs ?? DEFAULT_LIVE_INTERVAL_MS\n\tconst now = deps.now ?? Date.now\n\tconst sleep = deps.sleep ?? sleepMs\n\n\tlet editCount = 0\n\tlet finalizing = false\n\tlet initialSendOutcomeUnknown: unknown\n\tlet lastAttemptedText = ''\n\tlet lastAttemptError: unknown\n\tlet lastSuccessfulText = ''\n\tlet lastUpdateAt = 0\n\tlet latestText = ''\n\tlet messageId: string | null = null\n\tlet pump: Promise<void> | null = null\n\n\tconst waitForCadence = async () => {\n\t\tconst waitMs = Math.max(0, lastUpdateAt + intervalMs - now())\n\t\tif (waitMs > 0) await sleep(waitMs)\n\t}\n\n\tconst runPump = async () => {\n\t\twhile (!finalizing && messageId !== null && latestText !== '' && latestText !== lastAttemptedText) {\n\t\t\tawait waitForCadence()\n\t\t\tif (finalizing || messageId === null) return\n\n\t\t\tconst nextText = latestText\n\t\t\tlastAttemptedText = nextText\n\t\t\ttry {\n\t\t\t\tawait deps.editText(messageId, nextText)\n\t\t\t\tlastAttemptError = undefined\n\t\t\t\tlastSuccessfulText = nextText\n\t\t\t\teditCount += 1\n\t\t\t} catch (error) {\n\t\t\t\t// Intermediate edits are presentation only; finalize remains authoritative.\n\t\t\t\tlastAttemptError = error\n\t\t\t} finally {\n\t\t\t\tlastUpdateAt = now()\n\t\t\t}\n\t\t}\n\t}\n\n\tconst ensurePump = () => {\n\t\tif (pump !== null) return\n\t\tpump = runPump().finally(() => {\n\t\t\tpump = null\n\t\t\tif (!finalizing && messageId !== null && latestText !== '' && latestText !== lastAttemptedText) {\n\t\t\t\tensurePump()\n\t\t\t}\n\t\t})\n\t}\n\n\treturn {\n\t\tstart: async (text: string) => {\n\t\t\tif (initialSendOutcomeUnknown) throw initialSendOutcomeUnknown\n\t\t\tif (finalizing || messageId !== null) return\n\n\t\t\ttry {\n\t\t\t\tconst sent = await deps.sendText(text)\n\t\t\t\tmessageId = sent.message_id\n\t\t\t\tlastAttemptedText = text\n\t\t\t\tlastSuccessfulText = text\n\t\t\t\tlastUpdateAt = now()\n\t\t\t} catch (error) {\n\t\t\t\tif (deps.isOutcomeUnknown(error)) {\n\t\t\t\t\tinitialSendOutcomeUnknown = error\n\t\t\t\t\tthrow error\n\t\t\t\t}\n\t\t\t\t// Progress is presentation only; finalize may still send permanently.\n\t\t\t}\n\t\t},\n\t\tupdate: async (text: string) => {\n\t\t\tif (finalizing || messageId === null || text === '') return\n\t\t\tlatestText = text\n\t\t\tif (latestText !== lastAttemptedText) ensurePump()\n\t\t},\n\t\tfinalize: async (text: string) => {\n\t\t\tfinalizing = true\n\t\t\tlatestText = text\n\t\t\tif (pump !== null) await pump\n\t\t\tif (initialSendOutcomeUnknown) throw initialSendOutcomeUnknown\n\n\t\t\tif (messageId === null) {\n\t\t\t\tconst sent = await deps.sendText(text)\n\t\t\t\treturn { message_id: sent.message_id, edit_count: editCount }\n\t\t\t}\n\t\t\tif (lastSuccessfulText === text) return { message_id: messageId, edit_count: editCount }\n\t\t\tif (lastAttemptedText === text && lastAttemptError && deps.isOutcomeUnknown(lastAttemptError)) {\n\t\t\t\tthrow lastAttemptError\n\t\t\t}\n\n\t\t\tawait waitForCadence()\n\t\t\ttry {\n\t\t\t\tawait deps.editText(messageId, text)\n\t\t\t\teditCount += 1\n\t\t\t\treturn { message_id: messageId, edit_count: editCount }\n\t\t\t} catch (error) {\n\t\t\t\tif (deps.isDefiniteRejection(error)) {\n\t\t\t\t\tconst sent = await deps.sendText(text)\n\t\t\t\t\treturn { message_id: sent.message_id, edit_count: editCount }\n\t\t\t\t}\n\t\t\t\tthrow error\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport type TypingPulseDeps = {\n\tsend: () => Promise<void>\n\tintervalMs?: number\n\tsleep?: (ms: number) => Promise<void>\n}\n\nexport type TypingPulse = {\n\tstart: () => Promise<void>\n\tstop: () => void\n}\n\n/**\n * Renew chat-action (typing) while a turn is active.\n * Immediate pulse on start, then once per interval until stop.\n * stop() bumps generation so in-flight work cannot restart a dead schedule.\n */\nexport function createTypingPulse(deps: TypingPulseDeps): TypingPulse {\n\tconst intervalMs = deps.intervalMs ?? DEFAULT_TYPING_INTERVAL_MS\n\tconst sleep = deps.sleep ?? sleepMs\n\tlet active = false\n\tlet generation = 0\n\tlet wake: (() => void) | undefined\n\n\tconst pulse = async () => {\n\t\ttry {\n\t\t\tawait deps.send()\n\t\t} catch {\n\t\t\t// Typing is presentation only.\n\t\t}\n\t}\n\n\tconst waitInterval = () =>\n\t\tnew Promise<void>((resolve) => {\n\t\t\tlet settled = false\n\t\t\tconst done = () => {\n\t\t\t\tif (settled) return\n\t\t\t\tsettled = true\n\t\t\t\tif (wake === done) wake = undefined\n\t\t\t\tresolve()\n\t\t\t}\n\t\t\twake = done\n\t\t\tvoid sleep(intervalMs).then(done)\n\t\t})\n\n\tconst renew = async (mine: number) => {\n\t\twhile (active && mine === generation) {\n\t\t\tawait waitInterval()\n\t\t\tif (!active || mine !== generation) return\n\t\t\tawait pulse()\n\t\t}\n\t}\n\n\treturn {\n\t\tstart: async () => {\n\t\t\tif (active) return\n\t\t\tactive = true\n\t\t\tconst mine = generation\n\t\t\tawait pulse()\n\t\t\tif (!active || mine !== generation) return\n\t\t\t// Always schedule renew for this generation (do not gate on a shared loop handle).\n\t\t\tvoid renew(mine)\n\t\t},\n\t\tstop: () => {\n\t\t\tactive = false\n\t\t\tgeneration += 1\n\t\t\twake?.()\n\t\t}\n\t}\n}\n\nfunction sleepMs(ms: number): Promise<void> {\n\treturn new Promise((resolve) => setTimeout(resolve, ms))\n}\n"],"mappings":";AAsGA,MAAM,2BAA2B;AACjC,MAAM,6BAA6B;;AAwBnC,SAAgB,kBAAkB,MAAoC;CACrE,MAAM,aAAa,KAAK,cAAc;CACtC,MAAM,MAAM,KAAK,OAAO,KAAK;CAC7B,MAAM,QAAQ,KAAK,SAAS;CAE5B,IAAI,YAAY;CAChB,IAAI,aAAa;CACjB,IAAI;CACJ,IAAI,oBAAoB;CACxB,IAAI;CACJ,IAAI,qBAAqB;CACzB,IAAI,eAAe;CACnB,IAAI,aAAa;CACjB,IAAI,YAA2B;CAC/B,IAAI,OAA6B;CAEjC,MAAM,iBAAiB,YAAY;EAClC,MAAM,SAAS,KAAK,IAAI,GAAG,eAAe,aAAa,IAAI,CAAC;EAC5D,IAAI,SAAS,GAAG,MAAM,MAAM,MAAM;CACnC;CAEA,MAAM,UAAU,YAAY;EAC3B,OAAO,CAAC,cAAc,cAAc,QAAQ,eAAe,MAAM,eAAe,mBAAmB;GAClG,MAAM,eAAe;GACrB,IAAI,cAAc,cAAc,MAAM;GAEtC,MAAM,WAAW;GACjB,oBAAoB;GACpB,IAAI;IACH,MAAM,KAAK,SAAS,WAAW,QAAQ;IACvC,mBAAmB,KAAA;IACnB,qBAAqB;IACrB,aAAa;GACd,SAAS,OAAO;IAEf,mBAAmB;GACpB,UAAU;IACT,eAAe,IAAI;GACpB;EACD;CACD;CAEA,MAAM,mBAAmB;EACxB,IAAI,SAAS,MAAM;EACnB,OAAO,QAAQ,CAAC,CAAC,cAAc;GAC9B,OAAO;GACP,IAAI,CAAC,cAAc,cAAc,QAAQ,eAAe,MAAM,eAAe,mBAC5E,WAAW;EAEb,CAAC;CACF;CAEA,OAAO;EACN,OAAO,OAAO,SAAiB;GAC9B,IAAI,2BAA2B,MAAM;GACrC,IAAI,cAAc,cAAc,MAAM;GAEtC,IAAI;IAEH,aAAY,MADO,KAAK,SAAS,IAAI,EAAA,CACpB;IACjB,oBAAoB;IACpB,qBAAqB;IACrB,eAAe,IAAI;GACpB,SAAS,OAAO;IACf,IAAI,KAAK,iBAAiB,KAAK,GAAG;KACjC,4BAA4B;KAC5B,MAAM;IACP;GAED;EACD;EACA,QAAQ,OAAO,SAAiB;GAC/B,IAAI,cAAc,cAAc,QAAQ,SAAS,IAAI;GACrD,aAAa;GACb,IAAI,eAAe,mBAAmB,WAAW;EAClD;EACA,UAAU,OAAO,SAAiB;GACjC,aAAa;GACb,aAAa;GACb,IAAI,SAAS,MAAM,MAAM;GACzB,IAAI,2BAA2B,MAAM;GAErC,IAAI,cAAc,MAEjB,OAAO;IAAE,aAAY,MADF,KAAK,SAAS,IAAI,EAAA,CACX;IAAY,YAAY;GAAU;GAE7D,IAAI,uBAAuB,MAAM,OAAO;IAAE,YAAY;IAAW,YAAY;GAAU;GACvF,IAAI,sBAAsB,QAAQ,oBAAoB,KAAK,iBAAiB,gBAAgB,GAC3F,MAAM;GAGP,MAAM,eAAe;GACrB,IAAI;IACH,MAAM,KAAK,SAAS,WAAW,IAAI;IACnC,aAAa;IACb,OAAO;KAAE,YAAY;KAAW,YAAY;IAAU;GACvD,SAAS,OAAO;IACf,IAAI,KAAK,oBAAoB,KAAK,GAEjC,OAAO;KAAE,aAAY,MADF,KAAK,SAAS,IAAI,EAAA,CACX;KAAY,YAAY;IAAU;IAE7D,MAAM;GACP;EACD;CACD;AACD;;;;;;AAkBA,SAAgB,kBAAkB,MAAoC;CACrE,MAAM,aAAa,KAAK,cAAc;CACtC,MAAM,QAAQ,KAAK,SAAS;CAC5B,IAAI,SAAS;CACb,IAAI,aAAa;CACjB,IAAI;CAEJ,MAAM,QAAQ,YAAY;EACzB,IAAI;GACH,MAAM,KAAK,KAAK;EACjB,QAAQ,CAER;CACD;CAEA,MAAM,qBACL,IAAI,SAAe,YAAY;EAC9B,IAAI,UAAU;EACd,MAAM,aAAa;GAClB,IAAI,SAAS;GACb,UAAU;GACV,IAAI,SAAS,MAAM,OAAO,KAAA;GAC1B,QAAQ;EACT;EACA,OAAO;EACP,MAAW,UAAU,CAAC,CAAC,KAAK,IAAI;CACjC,CAAC;CAEF,MAAM,QAAQ,OAAO,SAAiB;EACrC,OAAO,UAAU,SAAS,YAAY;GACrC,MAAM,aAAa;GACnB,IAAI,CAAC,UAAU,SAAS,YAAY;GACpC,MAAM,MAAM;EACb;CACD;CAEA,OAAO;EACN,OAAO,YAAY;GAClB,IAAI,QAAQ;GACZ,SAAS;GACT,MAAM,OAAO;GACb,MAAM,MAAM;GACZ,IAAI,CAAC,UAAU,SAAS,YAAY;GAEpC,MAAW,IAAI;EAChB;EACA,YAAY;GACX,SAAS;GACT,cAAc;GACd,OAAO;EACR;CACD;AACD;AAEA,SAAS,QAAQ,IAA2B;CAC3C,OAAO,IAAI,SAAS,YAAY,WAAW,SAAS,EAAE,CAAC;AACxD"}
@@ -0,0 +1,46 @@
1
+ //#region src/vendors/_messaging/transport.d.ts
2
+ type ChannelMessageRef = {
3
+ message_id: string;
4
+ };
5
+ type LiveMessageDeps = {
6
+ sendText: (text: string) => Promise<ChannelMessageRef>;
7
+ editText: (messageId: string, text: string) => Promise<ChannelMessageRef>;
8
+ /** True when the provider definitively rejected the request (safe to fallback send). */
9
+ isDefiniteRejection: (error: unknown) => boolean;
10
+ /** True when outcome is unknown (do not blindly resend). */
11
+ isOutcomeUnknown: (error: unknown) => boolean;
12
+ intervalMs?: number;
13
+ now?: () => number;
14
+ sleep?: (ms: number) => Promise<void>;
15
+ };
16
+ type LiveMessage = {
17
+ /** First visible message (send). No-op if already started. */
18
+ start: (text: string) => Promise<void>;
19
+ /** Cadenced edit of the live message. No-op before start or after finalize. */
20
+ update: (text: string) => Promise<void>;
21
+ /** Authoritative final text (edit or send). */
22
+ finalize: (text: string) => Promise<{
23
+ message_id: string;
24
+ edit_count: number;
25
+ }>;
26
+ };
27
+ /** Progressive outbound text via send + edit cadence. Shared across channels. */
28
+ declare function createLiveMessage(deps: LiveMessageDeps): LiveMessage;
29
+ type TypingPulseDeps = {
30
+ send: () => Promise<void>;
31
+ intervalMs?: number;
32
+ sleep?: (ms: number) => Promise<void>;
33
+ };
34
+ type TypingPulse = {
35
+ start: () => Promise<void>;
36
+ stop: () => void;
37
+ };
38
+ /**
39
+ * Renew chat-action (typing) while a turn is active.
40
+ * Immediate pulse on start, then once per interval until stop.
41
+ * stop() bumps generation so in-flight work cannot restart a dead schedule.
42
+ */
43
+ declare function createTypingPulse(deps: TypingPulseDeps): TypingPulse;
44
+ //#endregion
45
+ export { createLiveMessage as a, TypingPulseDeps as i, LiveMessageDeps as n, createTypingPulse as o, TypingPulse as r, LiveMessage as t };
46
+ //# sourceMappingURL=transport-i96ACAI_.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport-i96ACAI_.d.ts","names":[],"sources":["../src/vendors/_messaging/transport.ts"],"mappings":";KA6EY;EACX;;KA2BW;EACX,WAAW,iBAAiB,QAAQ;EACpC,WAAW,mBAAmB,iBAAiB,QAAQ;;EAEvD,sBAAsB;;EAEtB,mBAAmB;EACnB;EACA;EACA,SAAS,eAAe;;KAGb;;EAEX,QAAQ,iBAAiB;;EAEzB,SAAS,iBAAiB;;EAE1B,WAAW,iBAAiB;IAAU;IAAoB;;;;iBAI3C,kBAAkB,MAAM,kBAAkB;KA2G9C;EACX,YAAY;EACZ;EACA,SAAS,eAAe;;KAGb;EACX,aAAa;EACb;;;;;;;iBAQe,kBAAkB,MAAM,kBAAkB"}
@@ -0,0 +1,150 @@
1
+ import { z } from "zod";
2
+ //#region src/shared/artifact.d.ts
3
+ /** Durable blob handle — bytes never pass through the LLM. */
4
+ declare const artifactRefSchema: z.ZodObject<{
5
+ store: z.ZodEnum<{
6
+ host: "host";
7
+ object: "object";
8
+ }>;
9
+ key: z.ZodString;
10
+ media_type: z.ZodOptional<z.ZodString>;
11
+ filename: z.ZodOptional<z.ZodString>;
12
+ byte_length: z.ZodOptional<z.ZodInt>;
13
+ }, z.core.$strip>;
14
+ type ArtifactRef = z.infer<typeof artifactRefSchema>;
15
+ /** Find unique ArtifactRefs in a structured tool output, in depth-first order. */
16
+ declare function findArtifactRefs(output: unknown): ArtifactRef[];
17
+ //#endregion
18
+ //#region src/core/types.d.ts
19
+ type ToolRuntime = 'both' | 'edge' | 'node';
20
+ type ToolSideEffect = 'delete' | 'none' | 'read' | 'send' | 'write';
21
+ /**
22
+ * Host data-sensitivity hint for catalog / policy (not enforced by the kernel).
23
+ * Hosts map this to product rules (e.g. fail-closed PHI routing).
24
+ */
25
+ type ModuleClassification = 'standard' | 'pii' | 'phi';
26
+ /** Injectable fetch (tests, custom runtimes). Passed into HttpService / AwsService. */
27
+ type FetchLike = (input: RequestInfo | URL, init?: RequestInit) => Promise<Response>;
28
+ /**
29
+ * Per-invocation host context.
30
+ * Auth is host-bound (`withAuth` / `bindModule` / client constructor), never tool inputs.
31
+ * `fetch` / `signal` feed product clients → transport.
32
+ */
33
+ type ToolContext<TAuth = unknown> = {
34
+ auth?: TAuth | undefined;
35
+ /** Host bag for non-auth injectables (org ids, progress, sinks, …). */
36
+ extras?: Record<string, unknown> | undefined;
37
+ fetch?: FetchLike | undefined;
38
+ now?: (() => Date) | undefined;
39
+ signal?: AbortSignal | undefined;
40
+ };
41
+ /**
42
+ * Public execute boundary takes unknown input so tools can be collected without
43
+ * type assertions. `defineTool` validates via inputSchema first.
44
+ */
45
+ type ToolExecute = (input: unknown, ctx: ToolContext) => Promise<unknown>;
46
+ type ToolHookToolRef = Pick<ToolDefinition, 'id' | 'name' | 'description' | 'meta'>;
47
+ type ToolHookEvent = {
48
+ tool: ToolHookToolRef;
49
+ input: unknown;
50
+ ctx: ToolContext;
51
+ };
52
+ type ArtifactHookEvent = ToolHookEvent & {
53
+ artifact: ArtifactRef;
54
+ output: unknown;
55
+ };
56
+ type ToolHooks = {
57
+ beforeExecute?: (event: ToolHookEvent) => void | Promise<void>;
58
+ /** Runs once per unique ArtifactRef found in a successfully validated output. */
59
+ onArtifact?: (event: ArtifactHookEvent) => void | Promise<void>;
60
+ /** Runs after successful output validation. */
61
+ afterExecute?: (event: ToolHookEvent & {
62
+ output: unknown;
63
+ }) => void | Promise<void>;
64
+ onError?: (event: ToolHookEvent & {
65
+ error: unknown;
66
+ }) => void | Promise<void>;
67
+ };
68
+ /**
69
+ * Internal execution plan carried through auth/context/hook wrappers.
70
+ * `runTool` is the only consumer; direct `.execute` still applies bound context.
71
+ */
72
+ type ToolExecution = {
73
+ bindContext?: (ctx: ToolContext) => ToolContext | Promise<ToolContext>;
74
+ hooks?: ToolHooks;
75
+ run: ToolExecute;
76
+ };
77
+ /**
78
+ * Tool metadata: runtime/sideEffect for contracts; optional host-facing **hints**
79
+ * (package does not enforce confirmation, cancel, or audit — host does).
80
+ */
81
+ type ToolMeta = {
82
+ runtime: ToolRuntime;
83
+ sideEffect: ToolSideEffect;
84
+ tags?: readonly string[] | undefined;
85
+ /** Hint: safe to retry with same args (host policy). */
86
+ idempotent?: boolean | undefined;
87
+ /** Hint: may run longer than a typical tool call. */
88
+ longRunning?: boolean | undefined;
89
+ /** Hint: host may want user confirmation before execute. */
90
+ requiresConfirmation?: boolean | undefined;
91
+ /** Hint: cancel via AbortSignal is meaningful. */
92
+ supportsCancel?: boolean | undefined;
93
+ /** Hint: host may surface progress callbacks. */
94
+ supportsProgress?: boolean | undefined;
95
+ /** Hint: touches network / upstream APIs. */
96
+ network?: boolean | undefined;
97
+ /** Hint: I/O uses ArtifactRef or large object storage. */
98
+ artifacts?: boolean | undefined;
99
+ };
100
+ type ToolDefinition<TInput = unknown, TOutput = unknown> = {
101
+ description: string;
102
+ /** Stable kebab-case id (`weather-get`). */
103
+ id: string;
104
+ inputSchema: z.ZodType<TInput>;
105
+ meta: ToolMeta;
106
+ name: string;
107
+ outputSchema: z.ZodType<TOutput>;
108
+ execute: ToolExecute;
109
+ /** @internal Host execution plan composed by core helpers. */
110
+ execution?: ToolExecution | undefined;
111
+ };
112
+ /**
113
+ * Module auth: none, or a Zod schema (always `custom` — protocol is the client's job).
114
+ * Bearer/API-key/etc. are headers or AwsService credentials, not kernel kinds.
115
+ */
116
+ type AuthDefinition<TAuth> = {
117
+ type: 'none';
118
+ } | {
119
+ type: 'custom';
120
+ schema: z.ZodType<TAuth>;
121
+ };
122
+ type ModuleDefinition<TAuth = unknown> = {
123
+ auth: AuthDefinition<TAuth>;
124
+ description: string;
125
+ id: string;
126
+ runtime: ToolRuntime;
127
+ title: string;
128
+ tools: readonly ToolDefinition[];
129
+ /**
130
+ * Inline SVG markup for this pack (catalog / UI).
131
+ * Filled by `defineModule` from the shared logo map — hosts use `module.logo` as-is.
132
+ */
133
+ logo?: string | undefined;
134
+ /**
135
+ * Catalog grouping for UI filters, MCP discovery, skill capability buckets.
136
+ * Free strings (e.g. `email`, `browser`, `commerce`).
137
+ */
138
+ categories: readonly string[];
139
+ /**
140
+ * Host sensitivity hint. Omitted when unknown — host may default to standard.
141
+ */
142
+ classification?: ModuleClassification | undefined;
143
+ /** Module-level search / badge labels (distinct from per-tool tags). */
144
+ tags?: readonly string[] | undefined;
145
+ };
146
+ /** Module, or a flat tool list (adapters). */
147
+ type ToolSource = ModuleDefinition | readonly ToolDefinition[];
148
+ //#endregion
149
+ export { ArtifactRef as _, ModuleDefinition as a, ToolExecute as c, ToolHookToolRef as d, ToolHooks as f, ToolSource as g, ToolSideEffect as h, ModuleClassification as i, ToolExecution as l, ToolRuntime as m, AuthDefinition as n, ToolContext as o, ToolMeta as p, FetchLike as r, ToolDefinition as s, ArtifactHookEvent as t, ToolHookEvent as u, artifactRefSchema as v, findArtifactRefs as y };
150
+ //# sourceMappingURL=types-Ccb0DXY9.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types-Ccb0DXY9.d.ts","names":[],"sources":["../src/shared/artifact.ts","../src/core/types.ts"],"mappings":";;;cAIa,mBAAiB,EAAA;;;;;;;;;GAQ5B,EAAA,KAAA;KAEU,cAAc,EAAE,aAAa;;iBAGzB,iBAAiB,kBAAkB;;;KCbvC;KAEA;;;;;KAMA;;KAGA,aAAa,OAAO,cAAc,KAAK,OAAO,gBAAgB,QAAQ;;;;;;KAOtE,YAAY;EACvB,OAAO;;EAEP,SAAS;EACT,QAAQ;EACR,aAAa;EACb,SAAS;;;;;;KAOE,eAAe,gBAAgB,KAAK,gBAAgB;KAEpD,kBAAkB,KAAK;KAEvB;EACX,MAAM;EACN;EACA,KAAK;;KAGM,oBAAoB;EAC/B,UAAU;EACV;;KAGW;EACX,iBAAiB,OAAO,yBAAyB;;EAEjD,cAAc,OAAO,6BAA6B;;EAElD,gBAAgB,OAAO;IAAkB;eAA6B;EACtE,WAAW,OAAO;IAAkB;eAA4B;;;;;;KAOrD;EACX,eAAe,KAAK,gBAAgB,cAAc,QAAQ;EAC1D,QAAQ;EACR,KAAK;;;;;;KAOM;EACX,SAAS;EACT,YAAY;EACZ;;EAEA;;EAEA;;EAEA;;EAEA;;EAEA;;EAEA;;EAEA;;KAGW,eAAe,kBAAkB;EAC5C;;EAEA;EACA,aAAa,EAAE,QAAQ;EACvB,MAAM;EACN;EACA,cAAc,EAAE,QAAQ;EACxB,SAAS;;EAET,YAAY;;;;;;KAOD,eAAe;EAAW;;EAAmB;EAAgB,QAAQ,EAAE,QAAQ;;KAE/E,iBAAiB;EAC5B,MAAM,eAAe;EACrB;EACA;EACA,SAAS;EACT;EACA,gBAAgB;;;;;EAKhB;;;;;EAKA;;;;EAIA,iBAAiB;;EAEjB;;;KAIW,aAAa,4BAA4B"}
@@ -0,0 +1,19 @@
1
+ import { countBy, pickBy } from "es-toolkit";
2
+ //#region src/core/unique.ts
3
+ /** Keys that appear more than once (via `by`). */
4
+ function duplicatesBy(items, by) {
5
+ return Object.keys(pickBy(countBy(items, by), (n) => n > 1));
6
+ }
7
+ /** First duplicate key, if any. */
8
+ function firstDuplicateBy(items, by) {
9
+ return duplicatesBy(items, by)[0];
10
+ }
11
+ /** Throw if any key from `by` is duplicated. */
12
+ function assertUniqueBy(items, by, message) {
13
+ const duplicate = firstDuplicateBy(items, by);
14
+ if (duplicate !== void 0) throw new Error(message(duplicate));
15
+ }
16
+ //#endregion
17
+ export { duplicatesBy as n, firstDuplicateBy as r, assertUniqueBy as t };
18
+
19
+ //# sourceMappingURL=unique-EwBH1JPB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unique-EwBH1JPB.js","names":[],"sources":["../src/core/unique.ts"],"sourcesContent":["import { countBy, pickBy } from 'es-toolkit'\n\n/** Keys that appear more than once (via `by`). */\nexport function duplicatesBy<T>(items: readonly T[], by: (item: T) => string): string[] {\n\treturn Object.keys(pickBy(countBy(items, by), (n) => n > 1))\n}\n\n/** First duplicate key, if any. */\nexport function firstDuplicateBy<T>(items: readonly T[], by: (item: T) => string): string | undefined {\n\treturn duplicatesBy(items, by)[0]\n}\n\n/** Throw if any key from `by` is duplicated. */\nexport function assertUniqueBy<T>(\n\titems: readonly T[],\n\tby: (item: T) => string,\n\tmessage: (duplicate: string) => string\n): void {\n\tconst duplicate = firstDuplicateBy(items, by)\n\tif (duplicate !== undefined) throw new Error(message(duplicate))\n}\n"],"mappings":";;;AAGA,SAAgB,aAAgB,OAAqB,IAAmC;CACvF,OAAO,OAAO,KAAK,OAAO,QAAQ,OAAO,EAAE,IAAI,MAAM,IAAI,CAAC,CAAC;AAC5D;;AAGA,SAAgB,iBAAoB,OAAqB,IAA6C;CACrG,OAAO,aAAa,OAAO,EAAE,CAAC,CAAC;AAChC;;AAGA,SAAgB,eACf,OACA,IACA,SACO;CACP,MAAM,YAAY,iBAAiB,OAAO,EAAE;CAC5C,IAAI,cAAc,KAAA,GAAW,MAAM,IAAI,MAAM,QAAQ,SAAS,CAAC;AAChE"}
@@ -0,0 +1,193 @@
1
+ import { n as defineModule, r as defineTool } from "./define-CvpJ_pNP.js";
2
+ import { n as requireAuth } from "./provider-CgDAlg6K.js";
3
+ import { a as deleteVectorsOutputSchema, c as upsertVectorsInputSchema, i as deleteVectorsInputSchema, l as upsertVectorsOutputSchema, o as queryVectorsInputSchema, s as queryVectorsOutputSchema } from "./schemas-ChOAhdo9.js";
4
+ import { a as MastraVectorClient, o as mastraVectorAuthSchema } from "./mastra-vector-Dhc6XZ8l.js";
5
+ import { a as PineconeClient, o as pineconeAuthSchema } from "./pinecone-umY4t6OF.js";
6
+ import { a as QdrantClient, o as qdrantAuthSchema } from "./qdrant-DMp4NhKR.js";
7
+ import { a as SupabaseVectorClient, o as supabaseVectorAuthSchema } from "./supabase-vector-Dpp9mmJR.js";
8
+ import { z } from "zod";
9
+ //#region src/modules/vector-store/contracts.ts
10
+ /**
11
+ * Vector-store seam contracts — shared I/O from vendors/_vector + provider auth union.
12
+ */
13
+ const qdrantVectorAuthSchema = qdrantAuthSchema.extend({ provider: z.literal("qdrant") });
14
+ const pineconeVectorAuthSchema = pineconeAuthSchema.extend({ provider: z.literal("pinecone") });
15
+ const supabaseVectorSeamAuthSchema = supabaseVectorAuthSchema.extend({ provider: z.literal("supabase") });
16
+ const mastraVectorSeamAuthSchema = mastraVectorAuthSchema.extend({ provider: z.literal("mastra") });
17
+ const vectorStoreAuthSchema = z.discriminatedUnion("provider", [
18
+ qdrantVectorAuthSchema,
19
+ pineconeVectorAuthSchema,
20
+ supabaseVectorSeamAuthSchema,
21
+ mastraVectorSeamAuthSchema
22
+ ]);
23
+ //#endregion
24
+ //#region src/modules/vector-store/providers/mastra.ts
25
+ /**
26
+ * Mastra PgVector provider for the vector-store seam. Wraps `MastraVectorClient`.
27
+ */
28
+ var MastraVectorStoreProvider = class {
29
+ #client;
30
+ constructor(auth, options = {}) {
31
+ const { provider: _p, ...vendorAuth } = auth;
32
+ this.#client = new MastraVectorClient(vendorAuth, options);
33
+ }
34
+ upsert(input) {
35
+ return this.#client.upsert(input);
36
+ }
37
+ query(input) {
38
+ return this.#client.query(input);
39
+ }
40
+ delete(input) {
41
+ return this.#client.delete(input);
42
+ }
43
+ };
44
+ //#endregion
45
+ //#region src/modules/vector-store/providers/pinecone.ts
46
+ var PineconeVectorStoreProvider = class {
47
+ #client;
48
+ constructor(auth, options = {}) {
49
+ const { provider: _p, ...vendorAuth } = auth;
50
+ this.#client = new PineconeClient(vendorAuth, options);
51
+ }
52
+ upsert(input) {
53
+ return this.#client.upsert(input);
54
+ }
55
+ query(input) {
56
+ return this.#client.query(input);
57
+ }
58
+ delete(input) {
59
+ return this.#client.delete(input);
60
+ }
61
+ };
62
+ //#endregion
63
+ //#region src/modules/vector-store/providers/qdrant.ts
64
+ var QdrantVectorStoreProvider = class {
65
+ #client;
66
+ constructor(auth, options = {}) {
67
+ const { provider: _p, ...vendorAuth } = auth;
68
+ this.#client = new QdrantClient(vendorAuth, options);
69
+ }
70
+ upsert(input) {
71
+ return this.#client.upsert(input);
72
+ }
73
+ query(input) {
74
+ return this.#client.query(input);
75
+ }
76
+ delete(input) {
77
+ return this.#client.delete(input);
78
+ }
79
+ };
80
+ //#endregion
81
+ //#region src/modules/vector-store/providers/supabase.ts
82
+ var SupabaseVectorStoreProvider = class {
83
+ #client;
84
+ constructor(auth, options = {}) {
85
+ const { provider: _p, ...vendorAuth } = auth;
86
+ this.#client = new SupabaseVectorClient(vendorAuth, options);
87
+ }
88
+ upsert(input) {
89
+ return this.#client.upsert(input);
90
+ }
91
+ query(input) {
92
+ return this.#client.query(input);
93
+ }
94
+ delete(input) {
95
+ return this.#client.delete(input);
96
+ }
97
+ };
98
+ //#endregion
99
+ //#region src/modules/vector-store/client.ts
100
+ /**
101
+ * Vector-store seam client — picks qdrant / pinecone / supabase / mastra from host auth.
102
+ */
103
+ function transportOptions(ctx) {
104
+ const options = {};
105
+ if (ctx.fetch) options.fetch = ctx.fetch;
106
+ if (ctx.signal) options.signal = ctx.signal;
107
+ return options;
108
+ }
109
+ function providerFor(auth, ctx) {
110
+ const options = transportOptions(ctx);
111
+ switch (auth.provider) {
112
+ case "qdrant": return new QdrantVectorStoreProvider(auth, options);
113
+ case "pinecone": return new PineconeVectorStoreProvider(auth, options);
114
+ case "supabase": return new SupabaseVectorStoreProvider(auth, options);
115
+ case "mastra": return new MastraVectorStoreProvider(auth);
116
+ }
117
+ }
118
+ var VectorStoreClient = class VectorStoreClient {
119
+ #ops;
120
+ constructor(ops) {
121
+ this.#ops = ops;
122
+ }
123
+ static fromContext(ctx) {
124
+ const auth = requireAuth(ctx, vectorStoreAuthSchema);
125
+ return new VectorStoreClient(providerFor(auth, ctx));
126
+ }
127
+ static fromAuth(auth, ctx = {}) {
128
+ return new VectorStoreClient(providerFor(auth, ctx));
129
+ }
130
+ upsert(input) {
131
+ return this.#ops.upsert(input);
132
+ }
133
+ query(input) {
134
+ return this.#ops.query(input);
135
+ }
136
+ delete(input) {
137
+ return this.#ops.delete(input);
138
+ }
139
+ };
140
+ //#endregion
141
+ //#region src/modules/vector-store/module.ts
142
+ const vectorStoreUpsertTool = defineTool({
143
+ id: "vector-store-upsert",
144
+ name: "upsertVectors",
145
+ description: "Upsert embedding vectors into the bound vector store. Provide stable ids, values, and optional flat metadata. Specify collection only when no default collection is configured.",
146
+ inputSchema: upsertVectorsInputSchema,
147
+ outputSchema: upsertVectorsOutputSchema,
148
+ sideEffect: "write",
149
+ runtime: "node",
150
+ execute: async (input, ctx) => VectorStoreClient.fromContext(ctx).upsert(input)
151
+ });
152
+ const vectorStoreQueryTool = defineTool({
153
+ id: "vector-store-query",
154
+ name: "queryVectors",
155
+ description: "Nearest-neighbor query against the bound vector store. Returns matches with scores and optional metadata/values.",
156
+ inputSchema: queryVectorsInputSchema,
157
+ outputSchema: queryVectorsOutputSchema,
158
+ sideEffect: "read",
159
+ runtime: "node",
160
+ execute: async (input, ctx) => VectorStoreClient.fromContext(ctx).query(input)
161
+ });
162
+ const vectorStoreDeleteTool = defineTool({
163
+ id: "vector-store-delete",
164
+ name: "deleteVectors",
165
+ description: "Delete vectors by id from the bound vector store.",
166
+ inputSchema: deleteVectorsInputSchema,
167
+ outputSchema: deleteVectorsOutputSchema,
168
+ sideEffect: "delete",
169
+ runtime: "node",
170
+ execute: async (input, ctx) => VectorStoreClient.fromContext(ctx).delete(input)
171
+ });
172
+ const vectorStoreModule = defineModule({
173
+ id: "vector-store",
174
+ title: "Vector Store",
175
+ description: "Upsert, query, and delete embedding vectors in the configured store. Use for vector operations, not text embedding or document chunking.",
176
+ runtime: "node",
177
+ auth: {
178
+ type: "custom",
179
+ schema: vectorStoreAuthSchema
180
+ },
181
+ categories: ["ai", "vector"],
182
+ classification: "pii",
183
+ tags: ["upsert", "query"],
184
+ tools: [
185
+ vectorStoreUpsertTool,
186
+ vectorStoreQueryTool,
187
+ vectorStoreDeleteTool
188
+ ]
189
+ });
190
+ //#endregion
191
+ export { VectorStoreClient as a, qdrantVectorAuthSchema as c, vectorStoreUpsertTool as i, supabaseVectorSeamAuthSchema as l, vectorStoreModule as n, mastraVectorSeamAuthSchema as o, vectorStoreQueryTool as r, pineconeVectorAuthSchema as s, vectorStoreDeleteTool as t, vectorStoreAuthSchema as u };
192
+
193
+ //# sourceMappingURL=vector-store-C3nEO80e.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vector-store-C3nEO80e.js","names":["#client","#client","#client","#client","#ops"],"sources":["../src/modules/vector-store/contracts.ts","../src/modules/vector-store/providers/mastra.ts","../src/modules/vector-store/providers/pinecone.ts","../src/modules/vector-store/providers/qdrant.ts","../src/modules/vector-store/providers/supabase.ts","../src/modules/vector-store/client.ts","../src/modules/vector-store/module.ts"],"sourcesContent":["/**\n * Vector-store seam contracts — shared I/O from vendors/_vector + provider auth union.\n */\n\nimport { z } from 'zod'\n\nimport {\n\tdeleteVectorsInputSchema,\n\tdeleteVectorsOutputSchema,\n\tqueryVectorsInputSchema,\n\tqueryVectorsOutputSchema,\n\tupsertVectorsInputSchema,\n\tupsertVectorsOutputSchema,\n\tvectorMatchSchema,\n\tvectorMetadataSchema,\n\tvectorPointSchema\n} from '../../vendors/_vector'\nimport type {\n\tDeleteVectorsInput,\n\tDeleteVectorsOutput,\n\tQueryVectorsInput,\n\tQueryVectorsOutput,\n\tUpsertVectorsInput,\n\tUpsertVectorsOutput\n} from '../../vendors/_vector'\nimport { mastraVectorAuthSchema } from '../../vendors/mastra-vector'\nimport { pineconeAuthSchema } from '../../vendors/pinecone'\nimport { qdrantAuthSchema } from '../../vendors/qdrant'\nimport { supabaseVectorAuthSchema } from '../../vendors/supabase-vector'\n\nexport { MAX_TOP_K, MAX_VECTOR_BATCH, MAX_VECTOR_DIMENSIONS } from '../../vendors/_vector'\nexport {\n\tdeleteVectorsInputSchema,\n\tdeleteVectorsOutputSchema,\n\tqueryVectorsInputSchema,\n\tqueryVectorsOutputSchema,\n\tupsertVectorsInputSchema,\n\tupsertVectorsOutputSchema,\n\tvectorMatchSchema,\n\tvectorMetadataSchema,\n\tvectorPointSchema\n}\n\nexport type {\n\tDeleteVectorsInput,\n\tDeleteVectorsOutput,\n\tQueryVectorsInput,\n\tQueryVectorsOutput,\n\tUpsertVectorsInput,\n\tUpsertVectorsOutput,\n\tVectorMatch,\n\tVectorMetadata,\n\tVectorPoint\n} from '../../vendors/_vector'\n\nexport const qdrantVectorAuthSchema = qdrantAuthSchema.extend({\n\tprovider: z.literal('qdrant')\n})\n\nexport const pineconeVectorAuthSchema = pineconeAuthSchema.extend({\n\tprovider: z.literal('pinecone')\n})\n\nexport const supabaseVectorSeamAuthSchema = supabaseVectorAuthSchema.extend({\n\tprovider: z.literal('supabase')\n})\n\nexport const mastraVectorSeamAuthSchema = mastraVectorAuthSchema.extend({\n\tprovider: z.literal('mastra')\n})\n\nexport const vectorStoreAuthSchema = z.discriminatedUnion('provider', [\n\tqdrantVectorAuthSchema,\n\tpineconeVectorAuthSchema,\n\tsupabaseVectorSeamAuthSchema,\n\tmastraVectorSeamAuthSchema\n])\n\nexport type QdrantVectorAuth = z.infer<typeof qdrantVectorAuthSchema>\nexport type PineconeVectorAuth = z.infer<typeof pineconeVectorAuthSchema>\nexport type SupabaseVectorSeamAuth = z.infer<typeof supabaseVectorSeamAuthSchema>\nexport type MastraVectorSeamAuth = z.infer<typeof mastraVectorSeamAuthSchema>\nexport type VectorStoreAuth = z.infer<typeof vectorStoreAuthSchema>\n\n/** Shared seam surface — provider classes implement this. */\nexport type VectorStoreOps = {\n\tupsert: (input: UpsertVectorsInput) => Promise<UpsertVectorsOutput>\n\tquery: (input: QueryVectorsInput) => Promise<QueryVectorsOutput>\n\tdelete: (input: DeleteVectorsInput) => Promise<DeleteVectorsOutput>\n}\n","/**\n * Mastra PgVector provider for the vector-store seam. Wraps `MastraVectorClient`.\n */\n\nimport { MastraVectorClient } from '../../../vendors/mastra-vector'\nimport type { MastraVectorClientOptions } from '../../../vendors/mastra-vector'\nimport type {\n\tDeleteVectorsInput,\n\tMastraVectorSeamAuth,\n\tQueryVectorsInput,\n\tUpsertVectorsInput,\n\tVectorStoreOps\n} from '../contracts'\n\nexport type MastraVectorProviderOptions = MastraVectorClientOptions\n\nexport class MastraVectorStoreProvider implements VectorStoreOps {\n\treadonly #client: MastraVectorClient\n\n\tconstructor(auth: MastraVectorSeamAuth, options: MastraVectorProviderOptions = {}) {\n\t\tconst { provider: _p, ...vendorAuth } = auth\n\t\tthis.#client = new MastraVectorClient(vendorAuth, options)\n\t}\n\n\tupsert(input: UpsertVectorsInput) {\n\t\treturn this.#client.upsert(input)\n\t}\n\tquery(input: QueryVectorsInput) {\n\t\treturn this.#client.query(input)\n\t}\n\tdelete(input: DeleteVectorsInput) {\n\t\treturn this.#client.delete(input)\n\t}\n}\n","/**\n * Pinecone provider for the vector-store seam. Wraps `PineconeClient`.\n */\n\nimport type { HttpServiceOptions } from '../../../transport/http-service'\nimport { PineconeClient } from '../../../vendors/pinecone'\nimport type {\n\tDeleteVectorsInput,\n\tPineconeVectorAuth,\n\tQueryVectorsInput,\n\tUpsertVectorsInput,\n\tVectorStoreOps\n} from '../contracts'\n\nexport type PineconeVectorProviderOptions = {\n\tfetch?: HttpServiceOptions['fetch'] | undefined\n\tsignal?: HttpServiceOptions['signal'] | undefined\n}\n\nexport class PineconeVectorStoreProvider implements VectorStoreOps {\n\treadonly #client: PineconeClient\n\n\tconstructor(auth: PineconeVectorAuth, options: PineconeVectorProviderOptions = {}) {\n\t\tconst { provider: _p, ...vendorAuth } = auth\n\t\tthis.#client = new PineconeClient(vendorAuth, options)\n\t}\n\n\tupsert(input: UpsertVectorsInput) {\n\t\treturn this.#client.upsert(input)\n\t}\n\tquery(input: QueryVectorsInput) {\n\t\treturn this.#client.query(input)\n\t}\n\tdelete(input: DeleteVectorsInput) {\n\t\treturn this.#client.delete(input)\n\t}\n}\n","/**\n * Qdrant provider for the vector-store seam. Wraps `QdrantClient`.\n */\n\nimport type { HttpServiceOptions } from '../../../transport/http-service'\nimport { QdrantClient } from '../../../vendors/qdrant'\nimport type {\n\tDeleteVectorsInput,\n\tQdrantVectorAuth,\n\tQueryVectorsInput,\n\tUpsertVectorsInput,\n\tVectorStoreOps\n} from '../contracts'\n\nexport type QdrantVectorProviderOptions = {\n\tfetch?: HttpServiceOptions['fetch'] | undefined\n\tsignal?: HttpServiceOptions['signal'] | undefined\n}\n\nexport class QdrantVectorStoreProvider implements VectorStoreOps {\n\treadonly #client: QdrantClient\n\n\tconstructor(auth: QdrantVectorAuth, options: QdrantVectorProviderOptions = {}) {\n\t\tconst { provider: _p, ...vendorAuth } = auth\n\t\tthis.#client = new QdrantClient(vendorAuth, options)\n\t}\n\n\tupsert(input: UpsertVectorsInput) {\n\t\treturn this.#client.upsert(input)\n\t}\n\tquery(input: QueryVectorsInput) {\n\t\treturn this.#client.query(input)\n\t}\n\tdelete(input: DeleteVectorsInput) {\n\t\treturn this.#client.delete(input)\n\t}\n}\n","/**\n * Supabase pgvector provider for the vector-store seam. Wraps `SupabaseVectorClient`.\n */\n\nimport type { HttpServiceOptions } from '../../../transport/http-service'\nimport { SupabaseVectorClient } from '../../../vendors/supabase-vector'\nimport type {\n\tDeleteVectorsInput,\n\tQueryVectorsInput,\n\tSupabaseVectorSeamAuth,\n\tUpsertVectorsInput,\n\tVectorStoreOps\n} from '../contracts'\n\nexport type SupabaseVectorProviderOptions = {\n\tfetch?: HttpServiceOptions['fetch'] | undefined\n\tsignal?: HttpServiceOptions['signal'] | undefined\n}\n\nexport class SupabaseVectorStoreProvider implements VectorStoreOps {\n\treadonly #client: SupabaseVectorClient\n\n\tconstructor(auth: SupabaseVectorSeamAuth, options: SupabaseVectorProviderOptions = {}) {\n\t\tconst { provider: _p, ...vendorAuth } = auth\n\t\tthis.#client = new SupabaseVectorClient(vendorAuth, options)\n\t}\n\n\tupsert(input: UpsertVectorsInput) {\n\t\treturn this.#client.upsert(input)\n\t}\n\tquery(input: QueryVectorsInput) {\n\t\treturn this.#client.query(input)\n\t}\n\tdelete(input: DeleteVectorsInput) {\n\t\treturn this.#client.delete(input)\n\t}\n}\n","/**\n * Vector-store seam client — picks qdrant / pinecone / supabase / mastra from host auth.\n */\n\nimport { requireAuth } from '../../core/provider'\nimport type { ToolContext } from '../../core/types'\nimport { vectorStoreAuthSchema } from './contracts'\nimport type {\n\tDeleteVectorsInput,\n\tQueryVectorsInput,\n\tUpsertVectorsInput,\n\tVectorStoreAuth,\n\tVectorStoreOps\n} from './contracts'\nimport { MastraVectorStoreProvider } from './providers/mastra'\nimport { PineconeVectorStoreProvider } from './providers/pinecone'\nimport { QdrantVectorStoreProvider } from './providers/qdrant'\nimport { SupabaseVectorStoreProvider } from './providers/supabase'\n\nfunction transportOptions(ctx: ToolContext): { fetch?: ToolContext['fetch']; signal?: ToolContext['signal'] } {\n\tconst options: { fetch?: ToolContext['fetch']; signal?: ToolContext['signal'] } = {}\n\tif (ctx.fetch) options.fetch = ctx.fetch\n\tif (ctx.signal) options.signal = ctx.signal\n\treturn options\n}\n\nfunction providerFor(auth: VectorStoreAuth, ctx: ToolContext): VectorStoreOps {\n\tconst options = transportOptions(ctx)\n\tswitch (auth.provider) {\n\t\tcase 'qdrant':\n\t\t\treturn new QdrantVectorStoreProvider(auth, options)\n\t\tcase 'pinecone':\n\t\t\treturn new PineconeVectorStoreProvider(auth, options)\n\t\tcase 'supabase':\n\t\t\treturn new SupabaseVectorStoreProvider(auth, options)\n\t\tcase 'mastra':\n\t\t\treturn new MastraVectorStoreProvider(auth)\n\t}\n}\n\nexport class VectorStoreClient implements VectorStoreOps {\n\treadonly #ops: VectorStoreOps\n\n\tconstructor(ops: VectorStoreOps) {\n\t\tthis.#ops = ops\n\t}\n\n\tstatic fromContext(ctx: ToolContext): VectorStoreClient {\n\t\tconst auth = requireAuth(ctx, vectorStoreAuthSchema)\n\t\treturn new VectorStoreClient(providerFor(auth, ctx))\n\t}\n\n\tstatic fromAuth(auth: VectorStoreAuth, ctx: ToolContext = {}): VectorStoreClient {\n\t\treturn new VectorStoreClient(providerFor(auth, ctx))\n\t}\n\n\tupsert(input: UpsertVectorsInput) {\n\t\treturn this.#ops.upsert(input)\n\t}\n\n\tquery(input: QueryVectorsInput) {\n\t\treturn this.#ops.query(input)\n\t}\n\n\tdelete(input: DeleteVectorsInput) {\n\t\treturn this.#ops.delete(input)\n\t}\n}\n","import { defineModule, defineTool } from '../../core/define'\nimport { VectorStoreClient } from './client'\nimport {\n\tdeleteVectorsInputSchema,\n\tdeleteVectorsOutputSchema,\n\tqueryVectorsInputSchema,\n\tqueryVectorsOutputSchema,\n\tupsertVectorsInputSchema,\n\tupsertVectorsOutputSchema,\n\tvectorStoreAuthSchema\n} from './contracts'\n\nexport type { VectorStoreAuth } from './contracts'\nexport { vectorStoreAuthSchema }\n\nexport const vectorStoreUpsertTool = defineTool({\n\tid: 'vector-store-upsert',\n\tname: 'upsertVectors',\n\tdescription:\n\t\t'Upsert embedding vectors into the bound vector store. Provide stable ids, values, and optional flat metadata. Specify collection only when no default collection is configured.',\n\tinputSchema: upsertVectorsInputSchema,\n\toutputSchema: upsertVectorsOutputSchema,\n\tsideEffect: 'write',\n\truntime: 'node',\n\texecute: async (input, ctx) => VectorStoreClient.fromContext(ctx).upsert(input)\n})\n\nexport const vectorStoreQueryTool = defineTool({\n\tid: 'vector-store-query',\n\tname: 'queryVectors',\n\tdescription:\n\t\t'Nearest-neighbor query against the bound vector store. Returns matches with scores and optional metadata/values.',\n\tinputSchema: queryVectorsInputSchema,\n\toutputSchema: queryVectorsOutputSchema,\n\tsideEffect: 'read',\n\truntime: 'node',\n\texecute: async (input, ctx) => VectorStoreClient.fromContext(ctx).query(input)\n})\n\nexport const vectorStoreDeleteTool = defineTool({\n\tid: 'vector-store-delete',\n\tname: 'deleteVectors',\n\tdescription: 'Delete vectors by id from the bound vector store.',\n\tinputSchema: deleteVectorsInputSchema,\n\toutputSchema: deleteVectorsOutputSchema,\n\tsideEffect: 'delete',\n\truntime: 'node',\n\texecute: async (input, ctx) => VectorStoreClient.fromContext(ctx).delete(input)\n})\n\nexport const vectorStoreModule = defineModule({\n\tid: 'vector-store',\n\ttitle: 'Vector Store',\n\tdescription:\n\t\t'Upsert, query, and delete embedding vectors in the configured store. Use for vector operations, not text embedding or document chunking.',\n\truntime: 'node',\n\tauth: { type: 'custom', schema: vectorStoreAuthSchema },\n\tcategories: ['ai', 'vector'],\n\tclassification: 'pii',\n\ttags: ['upsert', 'query'],\n\ttools: [vectorStoreUpsertTool, vectorStoreQueryTool, vectorStoreDeleteTool]\n})\n"],"mappings":"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"}