@oomol-lab/open-connector 1.9.1 → 1.9.3

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 (936) hide show
  1. package/README.md +4 -2
  2. package/assets/open-connector/catalog/apps/aisa.json +1946 -56
  3. package/assets/open-connector/catalog/apps/akta.json +1181 -0
  4. package/assets/open-connector/catalog/apps/allratestoday.json +174 -0
  5. package/assets/open-connector/catalog/apps/asana.json +110 -0
  6. package/assets/open-connector/catalog/apps/calendly.json +103 -0
  7. package/assets/open-connector/catalog/apps/clickup.json +104 -0
  8. package/assets/open-connector/catalog/apps/cloro.json +9289 -0
  9. package/assets/open-connector/catalog/apps/contextdev.json +20670 -0
  10. package/assets/open-connector/catalog/apps/deepseek.json +177 -0
  11. package/assets/open-connector/catalog/apps/defillama.json +23747 -0
  12. package/assets/open-connector/catalog/apps/fireflies.json +103 -0
  13. package/assets/open-connector/catalog/apps/fundable.json +7926 -0
  14. package/assets/open-connector/catalog/apps/intercom.json +110 -0
  15. package/assets/open-connector/catalog/apps/jira.json +110 -0
  16. package/assets/open-connector/catalog/apps/keenable.json +235 -0
  17. package/assets/open-connector/catalog/apps/kolsprite_mcp.json +1227 -0
  18. package/assets/open-connector/catalog/apps/litescrape.json +52514 -0
  19. package/assets/open-connector/catalog/apps/magichour.json +5926 -0
  20. package/assets/open-connector/catalog/apps/minimax.json +24 -14
  21. package/assets/open-connector/catalog/apps/notion.json +731 -76
  22. package/assets/open-connector/catalog/apps/octen.json +5248 -0
  23. package/assets/open-connector/catalog/apps/openrouter.json +10 -0
  24. package/assets/open-connector/catalog/apps/orbit.json +3574 -0
  25. package/assets/open-connector/catalog/apps/pandadoc.json +68 -0
  26. package/assets/open-connector/catalog/apps/pipedrive.json +86 -0
  27. package/assets/open-connector/catalog/apps/ploid.json +9802 -0
  28. package/assets/open-connector/catalog/apps/resend.json +100 -0
  29. package/assets/open-connector/catalog/apps/salesforce.json +2487 -119
  30. package/assets/open-connector/catalog/apps/saperly.json +7056 -0
  31. package/assets/open-connector/catalog/apps/search1api.json +2382 -0
  32. package/assets/open-connector/catalog/apps/sentry.json +129 -0
  33. package/assets/open-connector/catalog/apps/slackbot.json +250 -2
  34. package/assets/open-connector/catalog/apps/surf.json +11378 -0
  35. package/assets/open-connector/catalog/apps/tally.json +113 -0
  36. package/assets/open-connector/catalog/apps/tinyfish.json +6154 -0
  37. package/assets/open-connector/catalog/apps/typeform.json +90 -1
  38. package/assets/open-connector/catalog/apps/vaquill.json +5944 -0
  39. package/assets/open-connector/catalog/apps/vercel.json +110 -0
  40. package/assets/open-connector/catalog/apps/weixin_store.json +1256 -7
  41. package/assets/open-connector/catalog/apps/zoom.json +112 -0
  42. package/assets/open-connector/catalog/apps-index.json +1 -1
  43. package/package.json +1 -1
  44. package/src/connection-error.d.ts +7 -0
  45. package/src/connection-error.js +10 -0
  46. package/src/connection-service.d.ts +2 -50
  47. package/src/connection-service.js +6 -130
  48. package/src/connection-store.d.ts +41 -0
  49. package/src/connection-store.js +1 -0
  50. package/src/core/guarded-fetch.d.ts +3 -0
  51. package/src/core/guarded-fetch.js +8 -1
  52. package/src/core/json-schema.d.ts +11 -3
  53. package/src/core/json-schema.js +13 -3
  54. package/src/core/provider-network-policy.d.ts +15 -0
  55. package/src/core/provider-network-policy.js +11 -0
  56. package/src/core/request.d.ts +18 -14
  57. package/src/core/request.js +11 -35
  58. package/src/credential-resolver.d.ts +24 -0
  59. package/src/credential-resolver.js +131 -0
  60. package/src/mcp.js +1 -1
  61. package/src/oauth/oauth-client-config-service.d.ts +1 -1
  62. package/src/oauth/oauth-client-config-service.js +14 -2
  63. package/src/oauth/oauth-credential-refresh-service.js +1 -1
  64. package/src/oauth/oauth-flow-service.d.ts +9 -1
  65. package/src/oauth/oauth-flow-service.js +11 -1
  66. package/src/providers/abuseipdb/executors.js +3 -4
  67. package/src/providers/action-contracts.generated.d.ts +24 -6
  68. package/src/providers/addressfinder/executors.js +2 -3
  69. package/src/providers/aeroleads/executors.js +3 -3
  70. package/src/providers/affinity/runtime.js +6 -7
  71. package/src/providers/aftership/executors.js +2 -2
  72. package/src/providers/agent_mail/runtime.js +2 -2
  73. package/src/providers/agentql/runtime.js +2 -2
  74. package/src/providers/agenty/runtime.js +5 -6
  75. package/src/providers/agiled/runtime.d.ts +0 -1
  76. package/src/providers/agiled/runtime.js +2 -3
  77. package/src/providers/agility/runtime.js +2 -3
  78. package/src/providers/ahrefs/runtime.js +3 -3
  79. package/src/providers/aifinmarket/runtime.js +6 -7
  80. package/src/providers/airtable/executors.js +3 -3
  81. package/src/providers/aisa/executors.js +238 -6
  82. package/src/providers/aisa/firecrawl-actions.d.ts +9 -0
  83. package/src/providers/aisa/firecrawl-actions.js +115 -0
  84. package/src/providers/akta/actions.d.ts +9 -0
  85. package/src/providers/akta/actions.js +420 -0
  86. package/src/providers/akta/executors.d.ts +4 -0
  87. package/src/providers/akta/executors.js +103 -0
  88. package/src/providers/alchemy/runtime.js +2 -2
  89. package/src/providers/algolia/runtime.js +3 -3
  90. package/src/providers/aliyun_oss/executors.js +7 -7
  91. package/src/providers/allratestoday/executors.d.ts +3 -0
  92. package/src/providers/allratestoday/executors.js +18 -0
  93. package/src/providers/allratestoday/runtime.d.ts +17 -0
  94. package/src/providers/allratestoday/runtime.js +104 -0
  95. package/src/providers/alpaca/runtime.js +2 -3
  96. package/src/providers/alpha_vantage/runtime.js +2 -2
  97. package/src/providers/alt_text_ai/runtime.js +2 -2
  98. package/src/providers/altiria/executors.js +3 -3
  99. package/src/providers/amap/runtime.js +3 -3
  100. package/src/providers/ambee/runtime.js +2 -2
  101. package/src/providers/ambivo/executors.js +3 -3
  102. package/src/providers/amilia/runtime.js +1 -1
  103. package/src/providers/amplemarket/runtime.js +2 -2
  104. package/src/providers/amplitude/runtime.js +3 -3
  105. package/src/providers/anysearch/runtime.js +4 -4
  106. package/src/providers/apaleo/runtime.js +2 -2
  107. package/src/providers/api_sports/executors.js +3 -4
  108. package/src/providers/apiverve/executors.js +2 -3
  109. package/src/providers/apollo/executors.js +2 -3
  110. package/src/providers/appcircle/runtime.js +5 -5
  111. package/src/providers/appdrag/executors.js +2 -3
  112. package/src/providers/arcgis_online/executors.js +2 -2
  113. package/src/providers/asana/executors.d.ts +2 -0
  114. package/src/providers/asana/executors.js +2 -0
  115. package/src/providers/asana/trigger-on-task-event.d.ts +2 -0
  116. package/src/providers/asana/trigger-on-task-event.definition.d.ts +4 -0
  117. package/src/providers/asana/trigger-on-task-event.definition.js +42 -0
  118. package/src/providers/asana/trigger-on-task-event.js +160 -0
  119. package/src/providers/auth0_management/runtime.js +2 -3
  120. package/src/providers/autoblogger/executors.js +3 -3
  121. package/src/providers/baidu_maps/runtime.js +3 -3
  122. package/src/providers/baidu_netdisk/runtime-mcp.js +3 -4
  123. package/src/providers/bark/executors.js +5 -5
  124. package/src/providers/bitrise/runtime.js +3 -3
  125. package/src/providers/bouncer/executors.js +3 -4
  126. package/src/providers/browse_ai/runtime.js +3 -4
  127. package/src/providers/browserstack/executors.js +6 -7
  128. package/src/providers/buildkite/runtime.js +3 -3
  129. package/src/providers/bunnycdn/runtime.js +3 -3
  130. package/src/providers/businessmap/runtime.js +6 -7
  131. package/src/providers/buttondown/runtime.js +2 -2
  132. package/src/providers/byteforms/runtime.js +2 -2
  133. package/src/providers/calendly/executors.d.ts +2 -0
  134. package/src/providers/calendly/executors.js +2 -0
  135. package/src/providers/calendly/runtime.js +2 -2
  136. package/src/providers/calendly/trigger-on-booking-event.d.ts +2 -0
  137. package/src/providers/calendly/trigger-on-booking-event.definition.d.ts +5 -0
  138. package/src/providers/calendly/trigger-on-booking-event.definition.js +42 -0
  139. package/src/providers/calendly/trigger-on-booking-event.js +144 -0
  140. package/src/providers/captainbi/runtime.js +6 -6
  141. package/src/providers/castingwords/runtime.js +1 -1
  142. package/src/providers/chatpdf/runtime.js +4 -4
  143. package/src/providers/check/executors.js +3 -4
  144. package/src/providers/checkly/executors.js +3 -4
  145. package/src/providers/chengxin/runtime.js +3 -3
  146. package/src/providers/cincopa/executors.js +3 -4
  147. package/src/providers/circle/executors.js +3 -4
  148. package/src/providers/clearout/executors.js +1 -2
  149. package/src/providers/clickhelp/runtime.js +5 -5
  150. package/src/providers/clickhouse/runtime.js +4 -4
  151. package/src/providers/clickup/executors.d.ts +2 -0
  152. package/src/providers/clickup/executors.js +2 -0
  153. package/src/providers/clickup/trigger-on-task-event.d.ts +2 -0
  154. package/src/providers/clickup/trigger-on-task-event.definition.d.ts +4 -0
  155. package/src/providers/clickup/trigger-on-task-event.definition.js +41 -0
  156. package/src/providers/clickup/trigger-on-task-event.js +94 -0
  157. package/src/providers/clinicalkey/runtime.js +3 -3
  158. package/src/providers/clinicaltrials_gov/runtime.js +4 -5
  159. package/src/providers/clockify/runtime.js +4 -4
  160. package/src/providers/cloro/actions.d.ts +12 -0
  161. package/src/providers/cloro/actions.js +155 -0
  162. package/src/providers/cloro/executors.d.ts +4 -0
  163. package/src/providers/cloro/executors.js +67 -0
  164. package/src/providers/cloro/inputs.d.ts +10 -0
  165. package/src/providers/cloro/inputs.js +680 -0
  166. package/src/providers/close/runtime.js +3 -3
  167. package/src/providers/cloudconvert/runtime.js +8 -9
  168. package/src/providers/cloudflare_dns/runtime.js +2 -2
  169. package/src/providers/cloudflare_email_routing/runtime.js +2 -2
  170. package/src/providers/cloudflare_r2/runtime.js +5 -5
  171. package/src/providers/cloudflare_worker/runtime.js +10 -10
  172. package/src/providers/cloudinary/runtime.js +4 -4
  173. package/src/providers/cloudlayer/runtime.js +5 -5
  174. package/src/providers/codacy/runtime.js +2 -2
  175. package/src/providers/codemagic/runtime.js +2 -2
  176. package/src/providers/confluence/executors.js +4 -4
  177. package/src/providers/confluence/runtime.d.ts +0 -1
  178. package/src/providers/confluence/runtime.js +6 -7
  179. package/src/providers/contactout/runtime.js +5 -5
  180. package/src/providers/contentful/runtime.js +2 -2
  181. package/src/providers/contentstack_content_delivery/runtime.js +1 -1
  182. package/src/providers/contextdev/actions.d.ts +14 -0
  183. package/src/providers/contextdev/actions.js +647 -0
  184. package/src/providers/contextdev/executors.d.ts +4 -0
  185. package/src/providers/contextdev/executors.js +109 -0
  186. package/src/providers/contextdev/files.d.ts +3 -0
  187. package/src/providers/contextdev/files.js +49 -0
  188. package/src/providers/contextdev/input-schemas.d.ts +49 -0
  189. package/src/providers/contextdev/input-schemas.js +3082 -0
  190. package/src/providers/contextdev/output-schemas.d.ts +49 -0
  191. package/src/providers/contextdev/output-schemas.js +1599 -0
  192. package/src/providers/cronly/runtime.js +2 -2
  193. package/src/providers/crossref/runtime.js +3 -3
  194. package/src/providers/cutt_ly/runtime.js +3 -3
  195. package/src/providers/cyberimpact/runtime.js +3 -3
  196. package/src/providers/dachser/executors.js +2 -2
  197. package/src/providers/dailybot/runtime.js +1 -1
  198. package/src/providers/databox/runtime.js +2 -2
  199. package/src/providers/databricks/runtime.js +2 -2
  200. package/src/providers/datacite/runtime.js +1 -1
  201. package/src/providers/datadog/executors.js +3 -4
  202. package/src/providers/datascope/runtime.js +2 -2
  203. package/src/providers/daytona/executors.js +3 -3
  204. package/src/providers/deepgram/runtime.js +2 -2
  205. package/src/providers/deepl/runtime.js +4 -4
  206. package/src/providers/deepseek/executors.d.ts +0 -5
  207. package/src/providers/deepseek/executors.js +38 -25
  208. package/src/providers/defillama/actions.d.ts +24 -0
  209. package/src/providers/defillama/actions.js +24 -0
  210. package/src/providers/defillama/dimensions-definitions.d.ts +2 -0
  211. package/src/providers/defillama/dimensions-definitions.js +1387 -0
  212. package/src/providers/defillama/ecosystem-definitions.d.ts +2 -0
  213. package/src/providers/defillama/ecosystem-definitions.js +758 -0
  214. package/src/providers/defillama/equities-definitions.d.ts +2 -0
  215. package/src/providers/defillama/equities-definitions.js +733 -0
  216. package/src/providers/defillama/executors.d.ts +4 -0
  217. package/src/providers/defillama/executors.js +196 -0
  218. package/src/providers/defillama/markets-definitions.d.ts +2 -0
  219. package/src/providers/defillama/markets-definitions.js +624 -0
  220. package/src/providers/defillama/shared-schemas.d.ts +71 -0
  221. package/src/providers/defillama/shared-schemas.js +157 -0
  222. package/src/providers/defillama/tvl-definitions.d.ts +2 -0
  223. package/src/providers/defillama/tvl-definitions.js +546 -0
  224. package/src/providers/defillama/yields-definitions.d.ts +2 -0
  225. package/src/providers/defillama/yields-definitions.js +766 -0
  226. package/src/providers/detrack/executors.js +5 -5
  227. package/src/providers/deutschlandgpt/runtime.js +2 -2
  228. package/src/providers/dialmycalls/runtime.js +4 -4
  229. package/src/providers/diffbot/executors.js +4 -4
  230. package/src/providers/digistore24/executors.js +3 -3
  231. package/src/providers/dingtalk_bot/executors.js +1 -1
  232. package/src/providers/discourse/executors.d.ts +0 -1
  233. package/src/providers/discourse/executors.js +6 -7
  234. package/src/providers/docugenerate/runtime.js +3 -3
  235. package/src/providers/doppler/runtime.shared.js +3 -3
  236. package/src/providers/doppler_marketing_automation/runtime.js +4 -4
  237. package/src/providers/dovetail/runtime.js +2 -2
  238. package/src/providers/dropcontact/runtime.js +3 -3
  239. package/src/providers/dub/executors.js +6 -6
  240. package/src/providers/dumplingai/runtime.js +2 -2
  241. package/src/providers/elevenlabs/executors.js +4 -4
  242. package/src/providers/elevenreader/runtime.js +1 -1
  243. package/src/providers/emailoctopus/runtime.js +4 -4
  244. package/src/providers/embase/runtime.js +3 -3
  245. package/src/providers/emelia/executors.js +2 -2
  246. package/src/providers/enigma/executors.js +3 -3
  247. package/src/providers/eodhd_apis/executors.js +2 -2
  248. package/src/providers/eventzilla/runtime.js +3 -4
  249. package/src/providers/evervault/runtime.js +1 -1
  250. package/src/providers/excalidraw_mcp/runtime.js +3 -4
  251. package/src/providers/excel/runtime.js +6 -6
  252. package/src/providers/expofp/runtime.js +2 -2
  253. package/src/providers/faktoora/runtime.js +5 -5
  254. package/src/providers/fast_note_sync/runtime.js +2 -2
  255. package/src/providers/feathery/executors.js +2 -3
  256. package/src/providers/feishu_app_bot/executors.js +2 -3
  257. package/src/providers/feishu_app_bot/trigger-on-event.js +2 -0
  258. package/src/providers/feishu_custom_bot/executors.js +2 -3
  259. package/src/providers/ffhub/executors.js +2 -3
  260. package/src/providers/fidel_api/executors.js +2 -3
  261. package/src/providers/files_com/executors.js +2 -3
  262. package/src/providers/fireberry/runtime.d.ts +0 -1
  263. package/src/providers/fireberry/runtime.js +3 -4
  264. package/src/providers/fireflies/executors.d.ts +2 -0
  265. package/src/providers/fireflies/executors.js +2 -0
  266. package/src/providers/fireflies/trigger-on-meeting-ready.d.ts +2 -0
  267. package/src/providers/fireflies/trigger-on-meeting-ready.definition.d.ts +4 -0
  268. package/src/providers/fireflies/trigger-on-meeting-ready.definition.js +44 -0
  269. package/src/providers/fireflies/trigger-on-meeting-ready.js +60 -0
  270. package/src/providers/firehydrant/executors.js +2 -3
  271. package/src/providers/float/executors.js +2 -3
  272. package/src/providers/flomo/executors.js +5 -6
  273. package/src/providers/flowiseai/executors.js +2 -3
  274. package/src/providers/fluxguard/executors.js +2 -3
  275. package/src/providers/folk/executors.js +2 -3
  276. package/src/providers/football_data/executors.js +2 -3
  277. package/src/providers/forem/executors.js +2 -3
  278. package/src/providers/formbricks/executors.js +2 -3
  279. package/src/providers/formsite/executors.js +3 -4
  280. package/src/providers/formspree/executors.js +2 -2
  281. package/src/providers/freshdesk/executors.js +3 -4
  282. package/src/providers/freshservice/executors.js +3 -4
  283. package/src/providers/freshteam/runtime.js +3 -4
  284. package/src/providers/full_contact/executors.js +3 -3
  285. package/src/providers/fundable/actions.d.ts +8 -0
  286. package/src/providers/fundable/actions.js +1515 -0
  287. package/src/providers/fundable/executors.d.ts +4 -0
  288. package/src/providers/fundable/executors.js +74 -0
  289. package/src/providers/fusion-api/runtime.js +2 -3
  290. package/src/providers/gagelist/executors.js +3 -3
  291. package/src/providers/gainsight_nxt/executors.js +2 -2
  292. package/src/providers/gamma/executors.js +4 -3
  293. package/src/providers/gangtise/runtime.js +3 -4
  294. package/src/providers/gatherup/runtime.js +1 -1
  295. package/src/providers/geckoboard/executors.js +2 -3
  296. package/src/providers/gemini/runtime.d.ts +0 -1
  297. package/src/providers/gemini/runtime.js +5 -6
  298. package/src/providers/genpage/runtime.js +2 -2
  299. package/src/providers/geokeo/executors.js +4 -4
  300. package/src/providers/getnote/runtime.js +2 -3
  301. package/src/providers/github/runtime-shared.js +2 -2
  302. package/src/providers/glyphic/runtime.js +3 -4
  303. package/src/providers/gmail/executors.js +125 -27
  304. package/src/providers/gmail/message.d.ts +1 -6
  305. package/src/providers/gmail/message.js +1 -1
  306. package/src/providers/gong/runtime.js +6 -7
  307. package/src/providers/googlecalendar/runtime-shared.js +3 -4
  308. package/src/providers/googledrive/runtime-request.js +2 -3
  309. package/src/providers/googlesheets/runtime-shared.js +3 -4
  310. package/src/providers/gorgias/runtime.js +4 -4
  311. package/src/providers/gotify/executors.js +7 -8
  312. package/src/providers/greenhouse/executors.js +3 -3
  313. package/src/providers/gumloop/executors.js +2 -3
  314. package/src/providers/gumroad/executors.js +2 -3
  315. package/src/providers/habitica/executors.js +2 -3
  316. package/src/providers/hackerrank_work/executors.js +2 -3
  317. package/src/providers/harvest/executors.js +3 -4
  318. package/src/providers/haveibeenpwned/executors.js +2 -3
  319. package/src/providers/headout/executors.js +3 -4
  320. package/src/providers/healthchecks_io/executors.js +2 -3
  321. package/src/providers/helium10/runtime.js +4 -5
  322. package/src/providers/helpdesk/runtime.js +4 -4
  323. package/src/providers/home_assistant/runtime-ws.js +9 -10
  324. package/src/providers/hotjar/executors.js +4 -4
  325. package/src/providers/httpsms/runtime.js +3 -4
  326. package/src/providers/hub_planner/executors.js +3 -3
  327. package/src/providers/hubspot/runtime.js +3 -4
  328. package/src/providers/humaans/runtime.js +3 -3
  329. package/src/providers/hunter/runtime.js +3 -3
  330. package/src/providers/icypeas/executors.js +3 -4
  331. package/src/providers/ima/runtime.js +7 -7
  332. package/src/providers/infolobby/runtime.js +6 -6
  333. package/src/providers/instabot/runtime.js +6 -6
  334. package/src/providers/instatus/runtime.js +4 -4
  335. package/src/providers/intercom/executors.d.ts +2 -0
  336. package/src/providers/intercom/executors.js +2 -0
  337. package/src/providers/intercom/trigger-on-conversation-event.d.ts +2 -0
  338. package/src/providers/intercom/trigger-on-conversation-event.definition.d.ts +4 -0
  339. package/src/providers/intercom/trigger-on-conversation-event.definition.js +42 -0
  340. package/src/providers/intercom/trigger-on-conversation-event.js +23 -0
  341. package/src/providers/intuiface/executors.js +3 -3
  342. package/src/providers/iplocate/runtime.js +4 -5
  343. package/src/providers/ipregistry/executors.js +2 -2
  344. package/src/providers/jiminny/runtime.js +4 -4
  345. package/src/providers/jin10/executors.js +4 -5
  346. package/src/providers/jira/executors.d.ts +2 -0
  347. package/src/providers/jira/executors.js +6 -4
  348. package/src/providers/jira/trigger-on-issue-event.d.ts +2 -0
  349. package/src/providers/jira/trigger-on-issue-event.definition.d.ts +4 -0
  350. package/src/providers/jira/trigger-on-issue-event.definition.js +44 -0
  351. package/src/providers/jira/trigger-on-issue-event.js +116 -0
  352. package/src/providers/jira/trigger-resource.d.ts +4 -0
  353. package/src/providers/jira/trigger-resource.js +141 -0
  354. package/src/providers/kaleido/runtime.js +2 -2
  355. package/src/providers/kandji/runtime.js +2 -2
  356. package/src/providers/keenable/executors.d.ts +4 -0
  357. package/src/providers/keenable/executors.js +20 -0
  358. package/src/providers/keenable/runtime.d.ts +26 -0
  359. package/src/providers/keenable/runtime.js +89 -0
  360. package/src/providers/keygen/executors.js +4 -4
  361. package/src/providers/keyword/runtime.js +2 -2
  362. package/src/providers/kie_ai/executors.js +1 -1
  363. package/src/providers/kintone/runtime.js +1 -1
  364. package/src/providers/kit/runtime.js +2 -2
  365. package/src/providers/klangio/runtime.js +4 -4
  366. package/src/providers/klaviyo/executors.js +1 -1
  367. package/src/providers/klazify/executors.js +3 -3
  368. package/src/providers/klipfolio/runtime.js +3 -3
  369. package/src/providers/knack/executors.js +1 -1
  370. package/src/providers/kolsprite_mcp/actions.d.ts +2 -0
  371. package/src/providers/kolsprite_mcp/actions.js +519 -0
  372. package/src/providers/kolsprite_mcp/executors.d.ts +4 -0
  373. package/src/providers/kolsprite_mcp/executors.js +89 -0
  374. package/src/providers/kommo/runtime.js +2 -2
  375. package/src/providers/kontent_ai/executors.js +3 -4
  376. package/src/providers/l2s/executors.js +3 -4
  377. package/src/providers/latchshot/executors.js +2 -2
  378. package/src/providers/leadboxer/runtime.js +4 -4
  379. package/src/providers/leadiq/runtime.js +4 -4
  380. package/src/providers/linguapop/runtime.js +1 -1
  381. package/src/providers/lingvanex_translation_api/runtime.js +5 -6
  382. package/src/providers/lingxing_mcp/runtime.js +3 -4
  383. package/src/providers/linkup/runtime.js +5 -6
  384. package/src/providers/litescrape/actions.d.ts +12 -0
  385. package/src/providers/litescrape/actions.js +124 -0
  386. package/src/providers/litescrape/airbnb-schemas.d.ts +2 -0
  387. package/src/providers/litescrape/airbnb-schemas.js +72 -0
  388. package/src/providers/litescrape/aliexpress-schemas.d.ts +2 -0
  389. package/src/providers/litescrape/aliexpress-schemas.js +52 -0
  390. package/src/providers/litescrape/amazon-schemas.d.ts +2 -0
  391. package/src/providers/litescrape/amazon-schemas.js +358 -0
  392. package/src/providers/litescrape/apartments-schemas.d.ts +2 -0
  393. package/src/providers/litescrape/apartments-schemas.js +45 -0
  394. package/src/providers/litescrape/apple-schemas.d.ts +2 -0
  395. package/src/providers/litescrape/apple-schemas.js +215 -0
  396. package/src/providers/litescrape/ashby-schemas.d.ts +2 -0
  397. package/src/providers/litescrape/ashby-schemas.js +82 -0
  398. package/src/providers/litescrape/baidu-schemas.d.ts +2 -0
  399. package/src/providers/litescrape/baidu-schemas.js +31 -0
  400. package/src/providers/litescrape/bestbuy-schemas.d.ts +2 -0
  401. package/src/providers/litescrape/bestbuy-schemas.js +56 -0
  402. package/src/providers/litescrape/bing-schemas.d.ts +2 -0
  403. package/src/providers/litescrape/bing-schemas.js +315 -0
  404. package/src/providers/litescrape/brave-schemas.d.ts +2 -0
  405. package/src/providers/litescrape/brave-schemas.js +101 -0
  406. package/src/providers/litescrape/copilot-schemas.d.ts +2 -0
  407. package/src/providers/litescrape/copilot-schemas.js +590 -0
  408. package/src/providers/litescrape/duckduckgo-schemas.d.ts +2 -0
  409. package/src/providers/litescrape/duckduckgo-schemas.js +64 -0
  410. package/src/providers/litescrape/ebay-schemas.d.ts +2 -0
  411. package/src/providers/litescrape/ebay-schemas.js +300 -0
  412. package/src/providers/litescrape/etsy-schemas.d.ts +2 -0
  413. package/src/providers/litescrape/etsy-schemas.js +52 -0
  414. package/src/providers/litescrape/eventbrite-schemas.d.ts +2 -0
  415. package/src/providers/litescrape/eventbrite-schemas.js +43 -0
  416. package/src/providers/litescrape/executors.d.ts +4 -0
  417. package/src/providers/litescrape/executors.js +138 -0
  418. package/src/providers/litescrape/facebook-schemas.d.ts +2 -0
  419. package/src/providers/litescrape/facebook-schemas.js +283 -0
  420. package/src/providers/litescrape/glassdoor-schemas.d.ts +2 -0
  421. package/src/providers/litescrape/glassdoor-schemas.js +147 -0
  422. package/src/providers/litescrape/google-schemas.d.ts +2 -0
  423. package/src/providers/litescrape/google-schemas.js +1686 -0
  424. package/src/providers/litescrape/homedepot-schemas.d.ts +2 -0
  425. package/src/providers/litescrape/homedepot-schemas.js +58 -0
  426. package/src/providers/litescrape/homes-schemas.d.ts +2 -0
  427. package/src/providers/litescrape/homes-schemas.js +45 -0
  428. package/src/providers/litescrape/ikea-schemas.d.ts +2 -0
  429. package/src/providers/litescrape/ikea-schemas.js +56 -0
  430. package/src/providers/litescrape/indeed-schemas.d.ts +2 -0
  431. package/src/providers/litescrape/indeed-schemas.js +141 -0
  432. package/src/providers/litescrape/instagram-schemas.d.ts +2 -0
  433. package/src/providers/litescrape/instagram-schemas.js +234 -0
  434. package/src/providers/litescrape/kroger-schemas.d.ts +2 -0
  435. package/src/providers/litescrape/kroger-schemas.js +62 -0
  436. package/src/providers/litescrape/levels-schemas.d.ts +2 -0
  437. package/src/providers/litescrape/levels-schemas.js +153 -0
  438. package/src/providers/litescrape/naver-schemas.d.ts +2 -0
  439. package/src/providers/litescrape/naver-schemas.js +107 -0
  440. package/src/providers/litescrape/realtor-schemas.d.ts +2 -0
  441. package/src/providers/litescrape/realtor-schemas.js +47 -0
  442. package/src/providers/litescrape/redfin-schemas.d.ts +2 -0
  443. package/src/providers/litescrape/redfin-schemas.js +112 -0
  444. package/src/providers/litescrape/shared.d.ts +9 -0
  445. package/src/providers/litescrape/shared.js +1 -0
  446. package/src/providers/litescrape/sprouts-schemas.d.ts +2 -0
  447. package/src/providers/litescrape/sprouts-schemas.js +72 -0
  448. package/src/providers/litescrape/target-schemas.d.ts +2 -0
  449. package/src/providers/litescrape/target-schemas.js +56 -0
  450. package/src/providers/litescrape/tiktok-schemas.d.ts +2 -0
  451. package/src/providers/litescrape/tiktok-schemas.js +625 -0
  452. package/src/providers/litescrape/tools.d.ts +2 -0
  453. package/src/providers/litescrape/tools.js +88 -0
  454. package/src/providers/litescrape/tripadvisor-schemas.d.ts +2 -0
  455. package/src/providers/litescrape/tripadvisor-schemas.js +119 -0
  456. package/src/providers/litescrape/walmart-schemas.d.ts +2 -0
  457. package/src/providers/litescrape/walmart-schemas.js +52 -0
  458. package/src/providers/litescrape/wayfair-schemas.d.ts +2 -0
  459. package/src/providers/litescrape/wayfair-schemas.js +52 -0
  460. package/src/providers/litescrape/web-schemas.d.ts +2 -0
  461. package/src/providers/litescrape/web-schemas.js +463 -0
  462. package/src/providers/litescrape/wholefoods-schemas.d.ts +2 -0
  463. package/src/providers/litescrape/wholefoods-schemas.js +56 -0
  464. package/src/providers/litescrape/x-schemas.d.ts +2 -0
  465. package/src/providers/litescrape/x-schemas.js +128 -0
  466. package/src/providers/litescrape/yahoo-schemas.d.ts +2 -0
  467. package/src/providers/litescrape/yahoo-schemas.js +234 -0
  468. package/src/providers/litescrape/yandex-schemas.d.ts +2 -0
  469. package/src/providers/litescrape/yandex-schemas.js +179 -0
  470. package/src/providers/litescrape/yelp-schemas.d.ts +2 -0
  471. package/src/providers/litescrape/yelp-schemas.js +130 -0
  472. package/src/providers/litescrape/youtube-schemas.d.ts +2 -0
  473. package/src/providers/litescrape/youtube-schemas.js +128 -0
  474. package/src/providers/litescrape/zillow-schemas.d.ts +2 -0
  475. package/src/providers/litescrape/zillow-schemas.js +128 -0
  476. package/src/providers/litescrape/ziprecruiter-schemas.d.ts +2 -0
  477. package/src/providers/litescrape/ziprecruiter-schemas.js +96 -0
  478. package/src/providers/liveagent/executors.js +6 -6
  479. package/src/providers/loops/executors.js +2 -2
  480. package/src/providers/loyjoy/runtime.js +2 -2
  481. package/src/providers/loyverse/executors.js +4 -4
  482. package/src/providers/lusha/runtime.js +3 -3
  483. package/src/providers/magichour/actions.d.ts +22 -0
  484. package/src/providers/magichour/actions.js +308 -0
  485. package/src/providers/magichour/audio-schemas.d.ts +2 -0
  486. package/src/providers/magichour/audio-schemas.js +54 -0
  487. package/src/providers/magichour/executors.d.ts +4 -0
  488. package/src/providers/magichour/executors.js +115 -0
  489. package/src/providers/magichour/image-schemas.d.ts +2 -0
  490. package/src/providers/magichour/image-schemas.js +443 -0
  491. package/src/providers/magichour/project-schemas.d.ts +8 -0
  492. package/src/providers/magichour/project-schemas.js +65 -0
  493. package/src/providers/magichour/shared-schemas.d.ts +8 -0
  494. package/src/providers/magichour/shared-schemas.js +18 -0
  495. package/src/providers/magichour/utility-schemas.d.ts +11 -0
  496. package/src/providers/magichour/utility-schemas.js +150 -0
  497. package/src/providers/magichour/video-schemas.d.ts +2 -0
  498. package/src/providers/magichour/video-schemas.js +629 -0
  499. package/src/providers/magichour/voices.d.ts +1 -0
  500. package/src/providers/magichour/voices.js +1268 -0
  501. package/src/providers/mailbluster/runtime.js +3 -4
  502. package/src/providers/mailcoach/runtime.js +4 -4
  503. package/src/providers/mailgenius/executors.js +3 -4
  504. package/src/providers/mailjet/runtime.js +3 -3
  505. package/src/providers/mails_so/runtime.js +1 -1
  506. package/src/providers/mailsoftly/runtime.js +5 -5
  507. package/src/providers/mailtrap/runtime.js +4 -5
  508. package/src/providers/manus/runtime.js +3 -3
  509. package/src/providers/mautic/runtime.js +3 -3
  510. package/src/providers/megaventory/runtime.js +3 -3
  511. package/src/providers/memberstack/runtime.js +2 -2
  512. package/src/providers/mendeley/executors.js +2 -3
  513. package/src/providers/mindbody/runtime.js +3 -3
  514. package/src/providers/minerstat/executors.js +3 -3
  515. package/src/providers/minimax/executors.js +19 -4
  516. package/src/providers/minimax/text-models.d.ts +2 -0
  517. package/src/providers/minimax/text-models.js +34 -0
  518. package/src/providers/mintlify/runtime.js +3 -3
  519. package/src/providers/missive/executors.js +3 -5
  520. package/src/providers/mixpanel/executors.js +3 -3
  521. package/src/providers/mobile_text_alerts/runtime.js +3 -3
  522. package/src/providers/mocean/executors.js +3 -3
  523. package/src/providers/moco/executors.js +5 -5
  524. package/src/providers/moesif/runtime.js +4 -4
  525. package/src/providers/monday/runtime-common.js +3 -3
  526. package/src/providers/moneyforward_mcp/manifest.d.ts +0 -2
  527. package/src/providers/moneyforward_mcp/manifest.js +1 -1
  528. package/src/providers/monica_crm/runtime.js +4 -4
  529. package/src/providers/moorcheh/runtime.js +3 -3
  530. package/src/providers/more_trees/runtime.d.ts +0 -1
  531. package/src/providers/more_trees/runtime.js +7 -8
  532. package/src/providers/moxie/runtime.js +2 -2
  533. package/src/providers/msg91/runtime.js +4 -4
  534. package/src/providers/mx/runtime.js +1 -1
  535. package/src/providers/needle/runtime.js +3 -4
  536. package/src/providers/netlify/runtime.js +2 -3
  537. package/src/providers/niftyimages/executors.js +2 -2
  538. package/src/providers/northbeam/runtime.js +1 -1
  539. package/src/providers/notion/executors.js +36 -3
  540. package/src/providers/nozbe_teams/executors.js +4 -4
  541. package/src/providers/npm/runtime.js +4 -4
  542. package/src/providers/nusii_proposals/runtime.js +2 -2
  543. package/src/providers/ocr_web_service/executors.js +4 -4
  544. package/src/providers/octen/actions.d.ts +6 -0
  545. package/src/providers/octen/actions.js +919 -0
  546. package/src/providers/octen/executors.d.ts +4 -0
  547. package/src/providers/octen/executors.js +125 -0
  548. package/src/providers/octen/inputs.d.ts +2 -0
  549. package/src/providers/octen/inputs.js +2434 -0
  550. package/src/providers/octen/research.d.ts +1 -0
  551. package/src/providers/octen/research.js +86 -0
  552. package/src/providers/octopus_deploy/executors.js +3 -3
  553. package/src/providers/oksign/runtime.js +3 -4
  554. package/src/providers/one_drive/executors.js +6 -6
  555. package/src/providers/one_password_events/runtime.js +1 -1
  556. package/src/providers/onfleet/runtime.js +3 -3
  557. package/src/providers/onlyoffice_docspace/runtime.js +4 -4
  558. package/src/providers/oomnitza/runtime.js +3 -4
  559. package/src/providers/openrouter/executors.js +7 -4
  560. package/src/providers/orbit/actions.d.ts +2 -0
  561. package/src/providers/orbit/actions.js +3030 -0
  562. package/src/providers/orbit/executors.d.ts +4 -0
  563. package/src/providers/orbit/executors.js +106 -0
  564. package/src/providers/orbit/routes.d.ts +9 -0
  565. package/src/providers/orbit/routes.js +170 -0
  566. package/src/providers/otter_ai/executors.js +2 -2
  567. package/src/providers/oura/runtime.js +1 -1
  568. package/src/providers/paddle/executors.js +3 -3
  569. package/src/providers/pagerduty/runtime.js +2 -2
  570. package/src/providers/pandadoc/executors.d.ts +2 -0
  571. package/src/providers/pandadoc/executors.js +2 -0
  572. package/src/providers/pandadoc/trigger-on-document-event.d.ts +2 -0
  573. package/src/providers/pandadoc/trigger-on-document-event.definition.d.ts +4 -0
  574. package/src/providers/pandadoc/trigger-on-document-event.definition.js +33 -0
  575. package/src/providers/pandadoc/trigger-on-document-event.js +96 -0
  576. package/src/providers/paradym/runtime.js +4 -4
  577. package/src/providers/parallel/runtime.js +3 -3
  578. package/src/providers/partner_stack_partner/runtime.js +1 -1
  579. package/src/providers/payrexx/runtime.js +5 -6
  580. package/src/providers/permit_io/runtime.js +2 -2
  581. package/src/providers/pinboard/executors.js +5 -6
  582. package/src/providers/pinpoint/runtime.js +2 -2
  583. package/src/providers/pipedrive/executors.d.ts +2 -0
  584. package/src/providers/pipedrive/executors.js +2 -0
  585. package/src/providers/pipedrive/trigger-on-crm-event.d.ts +2 -0
  586. package/src/providers/pipedrive/trigger-on-crm-event.definition.d.ts +4 -0
  587. package/src/providers/pipedrive/trigger-on-crm-event.definition.js +30 -0
  588. package/src/providers/pipedrive/trigger-on-crm-event.js +101 -0
  589. package/src/providers/placid/runtime.js +3 -3
  590. package/src/providers/plain/runtime.js +5 -5
  591. package/src/providers/planetscale/runtime.js +2 -2
  592. package/src/providers/planhat/executors.js +6 -6
  593. package/src/providers/plausible_analytics/runtime.js +3 -3
  594. package/src/providers/ploid/actions.d.ts +16 -0
  595. package/src/providers/ploid/actions.js +23 -0
  596. package/src/providers/ploid/endpoints.json +8440 -0
  597. package/src/providers/ploid/executors.d.ts +4 -0
  598. package/src/providers/ploid/executors.js +119 -0
  599. package/src/providers/posthog/runtime.js +3 -3
  600. package/src/providers/predis_ai/executors.js +3 -3
  601. package/src/providers/printavo/runtime.js +2 -2
  602. package/src/providers/prospeo/runtime.js +2 -3
  603. package/src/providers/provider-runtime.d.ts +26 -1
  604. package/src/providers/provider-runtime.js +62 -14
  605. package/src/providers/push_by_techulus/executors.js +3 -4
  606. package/src/providers/pushover/runtime.js +4 -5
  607. package/src/providers/pushsafer/runtime.js +4 -5
  608. package/src/providers/pylon/runtime.js +2 -2
  609. package/src/providers/qase/runtime.js +3 -3
  610. package/src/providers/qdrant/runtime.js +1 -1
  611. package/src/providers/qichacha/runtime.js +2 -2
  612. package/src/providers/qingflow/runtime.js +2 -2
  613. package/src/providers/quickchart/runtime.js +2 -2
  614. package/src/providers/quintadb/runtime.js +2 -2
  615. package/src/providers/quo/runtime.js +2 -2
  616. package/src/providers/rawg/runtime.js +4 -4
  617. package/src/providers/razorpay/runtime.js +4 -5
  618. package/src/providers/readme/runtime.js +6 -6
  619. package/src/providers/referralhero/runtime.js +3 -3
  620. package/src/providers/registry.generated.js +18 -0
  621. package/src/providers/render/executors.js +3 -3
  622. package/src/providers/resend/executors.d.ts +2 -0
  623. package/src/providers/resend/executors.js +2 -0
  624. package/src/providers/resend/trigger-on-email-event.d.ts +2 -0
  625. package/src/providers/resend/trigger-on-email-event.definition.d.ts +4 -0
  626. package/src/providers/resend/trigger-on-email-event.definition.js +37 -0
  627. package/src/providers/resend/trigger-on-email-event.js +125 -0
  628. package/src/providers/respond_io/executors.js +3 -3
  629. package/src/providers/reversecontact/runtime.js +3 -3
  630. package/src/providers/ritekit/executors.js +2 -2
  631. package/src/providers/riveter/executors.js +2 -3
  632. package/src/providers/rocket_chat/executors.js +3 -4
  633. package/src/providers/rocket_reach/executors.js +3 -4
  634. package/src/providers/salesforce/chatter-routes.d.ts +107 -0
  635. package/src/providers/salesforce/chatter-routes.js +140 -0
  636. package/src/providers/salesforce/context.d.ts +2 -2
  637. package/src/providers/salesforce/context.js +7 -4
  638. package/src/providers/salesforce/executors.js +10 -0
  639. package/src/providers/salesforce/runtime-approvals.d.ts +2 -0
  640. package/src/providers/salesforce/runtime-approvals.js +52 -0
  641. package/src/providers/salesforce/runtime-base.js +14 -3
  642. package/src/providers/salesforce/runtime-chatter.d.ts +2 -0
  643. package/src/providers/salesforce/runtime-chatter.js +78 -0
  644. package/src/providers/salesforce/runtime-knowledge.d.ts +2 -0
  645. package/src/providers/salesforce/runtime-knowledge.js +34 -0
  646. package/src/providers/salesforce/runtime-leads.d.ts +2 -0
  647. package/src/providers/salesforce/runtime-leads.js +117 -0
  648. package/src/providers/salesforce/runtime-platform.d.ts +2 -0
  649. package/src/providers/salesforce/runtime-platform.js +67 -0
  650. package/src/providers/saperly/actions.d.ts +17 -0
  651. package/src/providers/saperly/actions.js +869 -0
  652. package/src/providers/saperly/executors.d.ts +4 -0
  653. package/src/providers/saperly/executors.js +113 -0
  654. package/src/providers/saperly/schemas.d.ts +33 -0
  655. package/src/providers/saperly/schemas.js +601 -0
  656. package/src/providers/saucelabs/runtime.js +4 -4
  657. package/src/providers/scopus/runtime.js +3 -3
  658. package/src/providers/scrape_do/executors.js +2 -2
  659. package/src/providers/scraperapi/runtime.js +4 -4
  660. package/src/providers/scrapfly/executors.js +2 -2
  661. package/src/providers/scrapingant/executors.js +6 -7
  662. package/src/providers/scrapingbee/executors.js +3 -3
  663. package/src/providers/scrapingdog/executors.js +1 -1
  664. package/src/providers/screenshot_fyi/executors.js +3 -4
  665. package/src/providers/screenshotbase/runtime.js +3 -3
  666. package/src/providers/search1api/actions.d.ts +2 -0
  667. package/src/providers/search1api/actions.js +39 -0
  668. package/src/providers/search1api/executors.d.ts +4 -0
  669. package/src/providers/search1api/executors.js +72 -0
  670. package/src/providers/search1api/runtime.d.ts +3 -0
  671. package/src/providers/search1api/runtime.js +44 -0
  672. package/src/providers/search1api/schemas.d.ts +3 -0
  673. package/src/providers/search1api/schemas.js +1834 -0
  674. package/src/providers/search_api/runtime.js +2 -2
  675. package/src/providers/securitytrails/executors.js +2 -2
  676. package/src/providers/semantic_scholar/executors.js +2 -2
  677. package/src/providers/sendbird/executors.js +2 -2
  678. package/src/providers/sendfox/executors.js +3 -3
  679. package/src/providers/sendgrid/executors.js +5 -5
  680. package/src/providers/sendmator/runtime.js +3 -4
  681. package/src/providers/sentry/executors.d.ts +2 -0
  682. package/src/providers/sentry/executors.js +2 -0
  683. package/src/providers/sentry/trigger-on-issue-alert.d.ts +2 -0
  684. package/src/providers/sentry/trigger-on-issue-alert.definition.d.ts +4 -0
  685. package/src/providers/sentry/trigger-on-issue-alert.definition.js +64 -0
  686. package/src/providers/sentry/trigger-on-issue-alert.js +80 -0
  687. package/src/providers/seqera/runtime.js +3 -4
  688. package/src/providers/serveravatar/executors.js +3 -3
  689. package/src/providers/sf_express/runtime.d.ts +0 -16
  690. package/src/providers/sf_express/runtime.js +2 -2
  691. package/src/providers/sheetdb/runtime.js +2 -2
  692. package/src/providers/short_menu/runtime.js +3 -3
  693. package/src/providers/shortcut/runtime.js +3 -3
  694. package/src/providers/shortpixel/runtime.js +2 -2
  695. package/src/providers/shotstack/runtime.js +4 -4
  696. package/src/providers/signpath/runtime.js +2 -2
  697. package/src/providers/signwell/runtime.js +5 -6
  698. package/src/providers/similarweb_digitalrank_api/runtime.js +3 -3
  699. package/src/providers/simla/runtime.js +5 -5
  700. package/src/providers/simplybook_me/executors.js +6 -6
  701. package/src/providers/sitespeakai/runtime.js +3 -3
  702. package/src/providers/slack/runtime.d.ts +6 -1
  703. package/src/providers/slack/runtime.js +21 -0
  704. package/src/providers/slackbot/actions.js +17 -1
  705. package/src/providers/slackbot/executors.d.ts +2 -0
  706. package/src/providers/slackbot/executors.js +5 -1
  707. package/src/providers/slackbot/trigger-on-event.d.ts +2 -0
  708. package/src/providers/slackbot/trigger-on-event.definition.d.ts +4 -0
  709. package/src/providers/slackbot/trigger-on-event.definition.js +57 -0
  710. package/src/providers/slackbot/trigger-on-event.js +23 -0
  711. package/src/providers/slickdeals/runtime.js +2 -3
  712. package/src/providers/smartsuite/runtime.js +3 -3
  713. package/src/providers/sonarcloud/runtime.js +5 -5
  714. package/src/providers/sorftime/runtime.js +8 -8
  715. package/src/providers/spider/runtime.js +2 -2
  716. package/src/providers/splunk_http_event_collector/runtime.js +7 -8
  717. package/src/providers/sportsdata/runtime.js +4 -4
  718. package/src/providers/spyfu/runtime.js +4 -5
  719. package/src/providers/square/runtime.js +4 -4
  720. package/src/providers/stannp/runtime.js +2 -2
  721. package/src/providers/stripe/executors.js +2 -2
  722. package/src/providers/supermemory/runtime.js +3 -3
  723. package/src/providers/surf/actions.d.ts +21 -0
  724. package/src/providers/surf/actions.js +26 -0
  725. package/src/providers/surf/discovery-definitions.d.ts +2 -0
  726. package/src/providers/surf/discovery-definitions.js +871 -0
  727. package/src/providers/surf/equity-definitions.d.ts +2 -0
  728. package/src/providers/surf/equity-definitions.js +322 -0
  729. package/src/providers/surf/executors.d.ts +4 -0
  730. package/src/providers/surf/executors.js +131 -0
  731. package/src/providers/surf/market-definitions.d.ts +2 -0
  732. package/src/providers/surf/market-definitions.js +885 -0
  733. package/src/providers/surf/onchain-definitions.d.ts +2 -0
  734. package/src/providers/surf/onchain-definitions.js +901 -0
  735. package/src/providers/surf/prediction-definitions.d.ts +2 -0
  736. package/src/providers/surf/prediction-definitions.js +683 -0
  737. package/src/providers/surf/shared-schemas.d.ts +18 -0
  738. package/src/providers/surf/shared-schemas.js +37 -0
  739. package/src/providers/survey_monkey/runtime.js +3 -3
  740. package/src/providers/taiga/runtime.js +4 -4
  741. package/src/providers/talenox/executors.js +4 -4
  742. package/src/providers/tally/executors.d.ts +2 -0
  743. package/src/providers/tally/executors.js +2 -0
  744. package/src/providers/tally/runtime.js +3 -3
  745. package/src/providers/tally/trigger-on-form-response.d.ts +2 -0
  746. package/src/providers/tally/trigger-on-form-response.definition.d.ts +4 -0
  747. package/src/providers/tally/trigger-on-form-response.definition.js +54 -0
  748. package/src/providers/tally/trigger-on-form-response.js +166 -0
  749. package/src/providers/tavily/runtime.js +3 -4
  750. package/src/providers/teamcamp/executors.js +2 -2
  751. package/src/providers/teamtailor/executors.js +2 -2
  752. package/src/providers/telegram/executors.js +6 -7
  753. package/src/providers/teltel/executors.js +2 -2
  754. package/src/providers/templated/executors.js +3 -3
  755. package/src/providers/tencent_docs/runtime.js +4 -4
  756. package/src/providers/tencent_maps/runtime.js +3 -3
  757. package/src/providers/textcortex/runtime.js +3 -3
  758. package/src/providers/the_cat_api/runtime.js +3 -3
  759. package/src/providers/the_colony/runtime.js +3 -3
  760. package/src/providers/the_odds_api/runtime.js +3 -4
  761. package/src/providers/the_official_board/runtime.js +4 -4
  762. package/src/providers/thehive/runtime.js +1 -1
  763. package/src/providers/tikhub/endpoint-catalog.js +2 -3
  764. package/src/providers/tiktok_business/runtime.js +2 -2
  765. package/src/providers/timecamp/runtime.js +2 -2
  766. package/src/providers/timelink/runtime.js +2 -2
  767. package/src/providers/tinyfish/actions.d.ts +6 -0
  768. package/src/providers/tinyfish/actions.js +19 -0
  769. package/src/providers/tinyfish/agent-actions.d.ts +2 -0
  770. package/src/providers/tinyfish/agent-actions.js +268 -0
  771. package/src/providers/tinyfish/data-actions.d.ts +2 -0
  772. package/src/providers/tinyfish/data-actions.js +186 -0
  773. package/src/providers/tinyfish/data-schemas.d.ts +7 -0
  774. package/src/providers/tinyfish/data-schemas.js +103 -0
  775. package/src/providers/tinyfish/endpoints.d.ts +14 -0
  776. package/src/providers/tinyfish/endpoints.js +1 -0
  777. package/src/providers/tinyfish/executors.d.ts +4 -0
  778. package/src/providers/tinyfish/executors.js +133 -0
  779. package/src/providers/tinyfish/management-actions.d.ts +2 -0
  780. package/src/providers/tinyfish/management-actions.js +524 -0
  781. package/src/providers/tinyfish/monitor-schemas.d.ts +5 -0
  782. package/src/providers/tinyfish/monitor-schemas.js +65 -0
  783. package/src/providers/tinyfish/research-schemas.d.ts +6 -0
  784. package/src/providers/tinyfish/research-schemas.js +71 -0
  785. package/src/providers/totp/runtime.js +4 -5
  786. package/src/providers/trawlingweb/runtime.js +2 -2
  787. package/src/providers/trello/executors.js +5 -2
  788. package/src/providers/trilium/runtime.js +2 -2
  789. package/src/providers/triple_whale/runtime.js +3 -3
  790. package/src/providers/truvera/runtime.js +2 -2
  791. package/src/providers/tuskr/runtime.js +2 -2
  792. package/src/providers/typebot/runtime.js +2 -2
  793. package/src/providers/typeform/executors.d.ts +2 -0
  794. package/src/providers/typeform/executors.js +2 -0
  795. package/src/providers/typeform/runtime.js +2 -2
  796. package/src/providers/typeform/trigger-on-form-response.d.ts +2 -0
  797. package/src/providers/typeform/trigger-on-form-response.definition.d.ts +4 -0
  798. package/src/providers/typeform/trigger-on-form-response.definition.js +40 -0
  799. package/src/providers/typeform/trigger-on-form-response.js +68 -0
  800. package/src/providers/uptimerobot/executors.js +3 -4
  801. package/src/providers/v2ex/runtime.js +8 -9
  802. package/src/providers/valyu/runtime.js +3 -3
  803. package/src/providers/vapi/runtime.js +4 -4
  804. package/src/providers/vaquill/actions.d.ts +13 -0
  805. package/src/providers/vaquill/actions.js +529 -0
  806. package/src/providers/vaquill/executors.d.ts +4 -0
  807. package/src/providers/vaquill/executors.js +141 -0
  808. package/src/providers/vaquill/schemas.d.ts +67 -0
  809. package/src/providers/vaquill/schemas.js +4953 -0
  810. package/src/providers/vectorshift/runtime.js +3 -3
  811. package/src/providers/venafitlsprotectcloud/runtime.js +2 -3
  812. package/src/providers/venafitlsprotectdatacenter/runtime.js +2 -3
  813. package/src/providers/vercel/executors.d.ts +2 -0
  814. package/src/providers/vercel/executors.js +2 -0
  815. package/src/providers/vercel/trigger-on-deployment-event.d.ts +2 -0
  816. package/src/providers/vercel/trigger-on-deployment-event.definition.d.ts +5 -0
  817. package/src/providers/vercel/trigger-on-deployment-event.definition.js +41 -0
  818. package/src/providers/vercel/trigger-on-deployment-event.js +102 -0
  819. package/src/providers/vida/runtime.js +4 -4
  820. package/src/providers/vonage/runtime.js +3 -3
  821. package/src/providers/walmart_marketplace/runtime.js +5 -5
  822. package/src/providers/weatherapi/executors.js +3 -4
  823. package/src/providers/web_of_science/runtime.js +4 -4
  824. package/src/providers/web_of_science_expanded/runtime.js +9 -9
  825. package/src/providers/webex/runtime.js +3 -3
  826. package/src/providers/webinarjam/runtime.js +4 -4
  827. package/src/providers/webscraping_ai/runtime.js +3 -3
  828. package/src/providers/webvizio/runtime.js +3 -4
  829. package/src/providers/wecom_bot/smart-runtime.js +4 -5
  830. package/src/providers/wecom_mcp/runtime.js +3 -4
  831. package/src/providers/weixin_bot/runtime.d.ts +0 -1
  832. package/src/providers/weixin_bot/runtime.js +1 -1
  833. package/src/providers/weixin_store/access-token.d.ts +3 -3
  834. package/src/providers/weixin_store/access-token.js +15 -7
  835. package/src/providers/weixin_store/executors.js +214 -1
  836. package/src/providers/wejam_ai/runtime.js +3 -3
  837. package/src/providers/wolfram_alpha_api/runtime.js +3 -3
  838. package/src/providers/woocommerce/runtime.js +1 -1
  839. package/src/providers/woodpecker_co/executors.js +3 -4
  840. package/src/providers/woot/runtime.js +6 -6
  841. package/src/providers/workable/runtime.js +3 -3
  842. package/src/providers/workday/runtime.js +4 -4
  843. package/src/providers/workiom/runtime.js +2 -2
  844. package/src/providers/workiz/runtime.js +2 -2
  845. package/src/providers/workpath/executors.js +3 -4
  846. package/src/providers/worksnaps/executors.js +2 -2
  847. package/src/providers/y_gy/runtime.js +2 -2
  848. package/src/providers/zenscrape/runtime.js +3 -3
  849. package/src/providers/zep/runtime.js +4 -4
  850. package/src/providers/zeplin/runtime.js +2 -2
  851. package/src/providers/zhihu/executors.js +6 -6
  852. package/src/providers/zoom/executors.d.ts +2 -0
  853. package/src/providers/zoom/executors.js +2 -0
  854. package/src/providers/zoom/trigger-on-recording-ready.d.ts +2 -0
  855. package/src/providers/zoom/trigger-on-recording-ready.definition.d.ts +4 -0
  856. package/src/providers/zoom/trigger-on-recording-ready.definition.js +44 -0
  857. package/src/providers/zoom/trigger-on-recording-ready.js +39 -0
  858. package/src/providers/zylvie/runtime.js +4 -4
  859. package/src/saas/saas-cleanup-service.d.ts +2 -0
  860. package/src/saas/saas-cleanup-service.js +2 -1
  861. package/src/saas/saas-execution-service.d.ts +1 -1
  862. package/src/server/actions/action-runner.js +1 -1
  863. package/src/server/api/action-example.js +12 -1
  864. package/src/server/api/auth.js +3 -0
  865. package/src/server/api/connection-routes.js +1 -1
  866. package/src/server/api/console-catalog-routes.js +1 -1
  867. package/src/server/api/console-oauth-routes.d.ts +3 -1
  868. package/src/server/api/console-oauth-routes.js +22 -9
  869. package/src/server/api/oauth-completion-page.d.ts +57 -0
  870. package/src/server/api/oauth-completion-page.js +135 -10
  871. package/src/server/api/openapi.d.ts +5 -0
  872. package/src/server/api/openapi.js +62 -2
  873. package/src/server/api/pattern-example.js +35 -1
  874. package/src/server/api/runtime-api.d.ts +2 -1
  875. package/src/server/api/runtime-app-routes.js +1 -1
  876. package/src/server/api/runtime-execution-routes.js +2 -1
  877. package/src/server/api/trigger-routes.js +1 -1
  878. package/src/server/connect-app.d.ts +4 -0
  879. package/src/server/connect-app.js +15 -1
  880. package/src/server/connect-server.d.ts +6 -0
  881. package/src/server/connect-server.js +114 -4
  882. package/src/server/connector-runtime.d.ts +6 -8
  883. package/src/server/connector-runtime.js +8 -28
  884. package/src/server/proxy/proxy-runner.js +1 -1
  885. package/src/server/slack-event-verification.d.ts +37 -0
  886. package/src/server/slack-event-verification.js +91 -0
  887. package/src/server/storage/connection-request-store.d.ts +1 -1
  888. package/src/server/storage/connection-store.d.ts +1 -1
  889. package/src/server/storage/postgres/runtime-store.d.ts +1 -1
  890. package/src/server/storage/runtime-database.d.ts +1 -1
  891. package/src/server/storage/saas-project-store.d.ts +1 -1
  892. package/src/triggers/common/integration.d.ts +15 -3
  893. package/src/triggers/common/integration.js +5 -0
  894. package/src/triggers/common/proxy.d.ts +7 -0
  895. package/src/triggers/maintenance.d.ts +2 -0
  896. package/src/triggers/maintenance.js +2 -1
  897. package/src/triggers/managed-webhook.d.ts +13 -0
  898. package/src/triggers/managed-webhook.js +48 -0
  899. package/src/triggers/request.d.ts +5 -1
  900. package/src/triggers/request.js +2 -0
  901. package/src/triggers/resources.d.ts +8 -2
  902. package/src/triggers/resources.js +31 -0
  903. package/src/triggers/signature.d.ts +3 -3
  904. package/src/triggers/signature.js +4 -6
  905. package/src/triggers/sources/configuration-schema.d.ts +5 -0
  906. package/src/triggers/sources/configuration-schema.js +118 -0
  907. package/src/triggers/sources/configuration.d.ts +115 -0
  908. package/src/triggers/sources/configuration.js +1 -0
  909. package/src/triggers/sources/definition.d.ts +61 -0
  910. package/src/triggers/sources/definition.js +3 -0
  911. package/src/triggers/sources/feishu-demands.d.ts +6 -0
  912. package/src/triggers/sources/feishu-demands.js +24 -0
  913. package/src/triggers/sources/feishu-events.d.ts +19 -0
  914. package/src/triggers/sources/feishu-events.js +108 -0
  915. package/src/triggers/sources/feishu.d.ts +3 -0
  916. package/src/triggers/sources/feishu.js +85 -0
  917. package/src/triggers/sources/fireflies.d.ts +3 -0
  918. package/src/triggers/sources/fireflies.js +100 -0
  919. package/src/triggers/sources/intercom.d.ts +3 -0
  920. package/src/triggers/sources/intercom.js +86 -0
  921. package/src/triggers/sources/jira.d.ts +3 -0
  922. package/src/triggers/sources/jira.js +120 -0
  923. package/src/triggers/sources/operation.d.ts +42 -0
  924. package/src/triggers/sources/operation.js +146 -0
  925. package/src/triggers/sources/sentry.d.ts +3 -0
  926. package/src/triggers/sources/sentry.js +125 -0
  927. package/src/triggers/sources/signature.d.ts +1 -0
  928. package/src/triggers/sources/signature.js +10 -0
  929. package/src/triggers/sources/slack-signature.d.ts +10 -0
  930. package/src/triggers/sources/slack-signature.js +13 -0
  931. package/src/triggers/sources/slack.d.ts +3 -0
  932. package/src/triggers/sources/slack.js +125 -0
  933. package/src/triggers/sources/zoom.d.ts +3 -0
  934. package/src/triggers/sources/zoom.js +113 -0
  935. package/src/triggers/trigger-runner.d.ts +2 -0
  936. package/src/triggers/trigger-runner.js +53 -17
@@ -0,0 +1,4 @@
1
+ import type { CredentialValidators, ProviderExecutors, ProviderProxyExecutor } from "../../core/types.ts";
2
+ export declare const credentialValidators: CredentialValidators;
3
+ export declare const executors: ProviderExecutors;
4
+ export declare const proxy: ProviderProxyExecutor;
@@ -0,0 +1,74 @@
1
+ import { optionalRecord, optionalString } from "../../core/cast.js";
2
+ import { requiredResponseRecord, runProviderRequest, ProviderRequestError, providerInputError, defineApiKeyProviderExecutors, defineProviderProxy, } from "../provider-runtime.js";
3
+ import { fundableActions } from "./actions.js";
4
+ import { fundableRoutes } from "./actions.js";
5
+ const fundableApiBaseUrl = "https://www.tryfundable.ai/api/v1";
6
+ async function requestFundable(path, method, parameters, apiKey, fetcher, validating = false, parentSignal) {
7
+ const url = new URL(`${fundableApiBaseUrl}${path}`);
8
+ if (method === "GET") {
9
+ for (const [key, value] of Object.entries(parameters)) {
10
+ if (value !== undefined)
11
+ url.searchParams.set(key, String(value));
12
+ }
13
+ }
14
+ return runProviderRequest({ label: "fundable", signal: parentSignal }, async (signal) => {
15
+ const headers = new Headers({ accept: "application/json", authorization: `Bearer ${apiKey}` });
16
+ if (method === "POST")
17
+ headers.set("content-type", "application/json");
18
+ const response = await fetcher(url.toString(), {
19
+ method,
20
+ headers,
21
+ body: method === "POST" ? JSON.stringify(parameters) : undefined,
22
+ signal,
23
+ });
24
+ const text = await response.text();
25
+ let payload;
26
+ try {
27
+ payload = JSON.parse(text);
28
+ }
29
+ catch {
30
+ throw new ProviderRequestError(response.ok ? 502 : response.status, response.ok ? "fundable returned malformed JSON" : `fundable request failed (${response.status})`, undefined, "provider_error");
31
+ }
32
+ const object = optionalRecord(payload);
33
+ if (!response.ok || object?.success === false || object?.error != null) {
34
+ const error = optionalRecord(object?.error);
35
+ const code = optionalString(error?.code);
36
+ const message = optionalString(error?.message) ??
37
+ optionalString(object?.error) ??
38
+ optionalString(object?.message) ??
39
+ `fundable request failed (${response.status})`;
40
+ const detail = code ? `${code}: ${message}` : message;
41
+ if (code === "INVALID_API_KEY" || code === "INACTIVE_API_KEY") {
42
+ throw new ProviderRequestError(validating ? 400 : 409, detail, undefined, validating ? "invalid_input" : "authorization_failed");
43
+ }
44
+ throw new ProviderRequestError(response.ok ? 502 : response.status, detail, undefined, "provider_error");
45
+ }
46
+ return requiredResponseRecord(payload, "Fundable response");
47
+ });
48
+ }
49
+ async function execute(actionName, values, context) {
50
+ const { apiKey, fetcher } = context;
51
+ const route = fundableRoutes[actionName];
52
+ if (!route)
53
+ throw providerInputError("Unknown action route");
54
+ const path = route.path.replace("{id}", encodeURIComponent(String(values.id)));
55
+ const parameters = { ...values };
56
+ if (route.path.includes("{id}"))
57
+ delete parameters.id;
58
+ return requestFundable(path, route.method, parameters, apiKey, fetcher, undefined, context.signal);
59
+ }
60
+ export const credentialValidators = {
61
+ async apiKey(input, { fetcher, signal }) {
62
+ await requestFundable("/industry/search", "GET", { name: "software" }, input.apiKey, fetcher, true, signal);
63
+ return { profile: { displayName: "Fundable API Key" }, grantedScopes: [], metadata: {} };
64
+ },
65
+ };
66
+ export const executors = defineApiKeyProviderExecutors("fundable", Object.fromEntries(fundableActions.map((action) => [action.name, (values, context) => execute(action.name, values, context)])));
67
+ export const proxy = defineProviderProxy({
68
+ service: "fundable",
69
+ baseUrl: fundableApiBaseUrl,
70
+ auth: { type: "api_key_authorization", prefix: "Bearer " },
71
+ customizeRequest({ headers }) {
72
+ headers.set("accept", "application/json");
73
+ },
74
+ });
@@ -1,9 +1,8 @@
1
1
  import { optionalRecord, optionalString } from "../../core/cast.js";
2
2
  import { compactJson, encodePathSegment } from "../../core/request.js";
3
- import { createProviderTimeout, isAbortLikeError, mapProviderActionHandlers, ProviderRequestError, providerUserAgent, } from "../provider-runtime.js";
3
+ import { createProviderTimeout, isAbortLikeError, mapProviderActionHandlers, ProviderRequestError, providerUserAgent, defaultProviderRequestTimeoutMs, } from "../provider-runtime.js";
4
4
  import { fusionApiOperations } from "./operations.js";
5
5
  export const fusionApiDefaultBaseUrl = "https://fusion-api.oomol.com";
6
- const fusionApiDefaultRequestTimeoutMs = 30_000;
7
6
  const fusionApiLongRunningRequestTimeoutMs = 300_000;
8
7
  const fusionApiLongRunningPaths = new Set(["/v1/deepseek-ocr/action/recognize", "/v1/jina-reader/action/read"]);
9
8
  const fusionApiValidationPath = "/openapi/qwen-image?hideTaskStateAPI=true";
@@ -52,7 +51,7 @@ async function fusionApiRequest(context, request) {
52
51
  }
53
52
  const requestTimeoutMs = fusionApiLongRunningPaths.has(request.path)
54
53
  ? fusionApiLongRunningRequestTimeoutMs
55
- : fusionApiDefaultRequestTimeoutMs;
54
+ : defaultProviderRequestTimeoutMs;
56
55
  const timeout = createProviderTimeout(context.signal, requestTimeoutMs);
57
56
  let response;
58
57
  try {
@@ -1,5 +1,5 @@
1
1
  import { optionalInteger, optionalRawString, optionalRecord, optionalString } from "../../core/cast.js";
2
- import { createProviderFetch, createProviderProxyUrl, providerUserAgent, createProviderTimeout, defineProviderExecutors, normalizeProviderProxyHeaders, ProviderRequestError, readProviderProxyErrorMessage, readProviderProxyResponse, readProviderTextBody, requireCustomCredential, toProviderProxyError, } from "../provider-runtime.js";
2
+ import { createProviderFetch, createProviderProxyUrl, providerUserAgent, createProviderTimeout, defineProviderExecutors, normalizeProviderProxyHeaders, ProviderRequestError, readProviderProxyErrorMessage, readProviderProxyResponse, readProviderTextBody, requireCustomCredential, toProviderProxyError, providerInputError, providerResponseError, } from "../provider-runtime.js";
3
3
  const service = "gagelist";
4
4
  const gagelistApiBaseUrl = "https://gagelist.net/GageList/api";
5
5
  const gagelistTokenUrl = "https://gagelist.net/api/token";
@@ -452,7 +452,7 @@ function listQuery(input) {
452
452
  function requireObject(value, message) {
453
453
  const object = optionalRecord(value);
454
454
  if (!object) {
455
- throw new ProviderRequestError(502, message);
455
+ throw providerResponseError(message);
456
456
  }
457
457
  return object;
458
458
  }
@@ -480,7 +480,7 @@ function createGagelistError(status, payload, phase, operation) {
480
480
  optionalRawString(body?.message) ??
481
481
  `GageList ${operation} failed with HTTP ${status}`;
482
482
  if (phase == "validate" && (status == 400 || status == 401 || status == 403)) {
483
- return new ProviderRequestError(400, message);
483
+ return providerInputError(message);
484
484
  }
485
485
  if (status == 401 || status == 403) {
486
486
  return new ProviderRequestError(status, message);
@@ -1,6 +1,6 @@
1
1
  import { compactObject, optionalInteger, optionalRecord, optionalString, rawStringOrNull } from "../../core/cast.js";
2
2
  import { assertPublicHttpUrl } from "../../core/request.js";
3
- import { createProviderTimeout, defineProviderExecutors, defineProviderProxy, isAbortLikeError, providerInputError, providerUserAgent, ProviderRequestError, readProviderTextBody, requireApiKeyCredential, } from "../provider-runtime.js";
3
+ import { createProviderTimeout, defineProviderExecutors, defineProviderProxy, isAbortLikeError, providerInputError, providerUserAgent, ProviderRequestError, readProviderTextBody, requireApiKeyCredential, providerResponseError, } from "../provider-runtime.js";
4
4
  const gainsightNxtMaxResponseBytes = 10 * 1024 * 1024;
5
5
  const companyPath = "/v1/data/objects/Company";
6
6
  const companyQueryPath = "/v1/data/objects/query/Company";
@@ -171,7 +171,7 @@ function createGainsightError(status, payload, phase) {
171
171
  if (status >= 400 && status < 500) {
172
172
  return new ProviderRequestError(status || 400, message);
173
173
  }
174
- return new ProviderRequestError(502, message);
174
+ return providerResponseError(message);
175
175
  }
176
176
  function readGainsightErrorMessage(payload) {
177
177
  if (typeof payload === "string" && payload.trim()) {
@@ -1,10 +1,9 @@
1
1
  import { compactObject, optionalInteger, optionalNumber, optionalRecord, optionalString } from "../../core/cast.js";
2
2
  import { compactJson } from "../../core/request.js";
3
- import { defineApiKeyProviderExecutors, defineProviderProxy, isAbortLikeError, ProviderRequestError, providerUserAgent, requiredInputString, } from "../provider-runtime.js";
3
+ import { defineApiKeyProviderExecutors, defineProviderProxy, isAbortLikeError, ProviderRequestError, providerUserAgent, requiredInputString, defaultProviderRequestTimeoutMs, } from "../provider-runtime.js";
4
4
  const service = "gamma";
5
5
  const gammaApiBaseUrl = "https://public-api.gamma.app";
6
6
  const gammaApiVersionPath = "/v1.0";
7
- const gammaDefaultRequestTimeoutMs = 30_000;
8
7
  export const gammaActionHandlers = {
9
8
  create_generation(input, context) {
10
9
  return createGeneration(input, context);
@@ -215,7 +214,9 @@ function isTerminalGenerationStatus(status) {
215
214
  return status === "completed" || status === "failed";
216
215
  }
217
216
  async function gammaRequest(input) {
218
- const requestTimeoutMs = input.timeoutMs == null ? gammaDefaultRequestTimeoutMs : Math.min(gammaDefaultRequestTimeoutMs, input.timeoutMs);
217
+ const requestTimeoutMs = input.timeoutMs == null
218
+ ? defaultProviderRequestTimeoutMs
219
+ : Math.min(defaultProviderRequestTimeoutMs, input.timeoutMs);
219
220
  const timeoutSignal = AbortSignal.timeout(requestTimeoutMs);
220
221
  const signal = input.context.signal ? AbortSignal.any([input.context.signal, timeoutSignal]) : timeoutSignal;
221
222
  const url = new URL(`${gammaApiVersionPath}${input.path}`, gammaApiBaseUrl);
@@ -1,8 +1,7 @@
1
1
  import { compactObject, optionalInteger, optionalRecord, optionalString } from "../../core/cast.js";
2
- import { ProviderRequestError, providerUserAgent } from "../provider-runtime.js";
2
+ import { ProviderRequestError, providerUserAgent, providerInputError, defaultProviderRequestTimeoutMs, } from "../provider-runtime.js";
3
3
  export const gangtiseApiBaseUrl = "https://openapi.gangtise.com";
4
4
  const gangtiseCredentialUrl = "https://open-platform.gangtise.com/";
5
- const gangtiseRequestTimeoutMs = 30_000;
6
5
  const loginPath = "/application/auth/oauth/open/loginV2";
7
6
  const securitiesSearchPath = "/application/open-reference/securities/search";
8
7
  const realtimeQuotePath = "/application/open-quote/quote/realtime";
@@ -846,7 +845,7 @@ function normalizeMatrix(value, outputFields) {
846
845
  });
847
846
  }
848
847
  async function postGangtiseJson(input) {
849
- const timeout = createTimeoutSignal({ timeoutMs: gangtiseRequestTimeoutMs });
848
+ const timeout = createTimeoutSignal({ timeoutMs: defaultProviderRequestTimeoutMs });
850
849
  let response;
851
850
  let payload;
852
851
  try {
@@ -908,7 +907,7 @@ function createGangtiseError(response, payload, phase) {
908
907
  return new ProviderRequestError(phase === "validate" ? 400 : 401, message);
909
908
  }
910
909
  if (response.status === 400 || response.status === 422) {
911
- return new ProviderRequestError(400, message);
910
+ return providerInputError(message);
912
911
  }
913
912
  return new ProviderRequestError(response.status >= 500 ? 502 : response.status || 502, message);
914
913
  }
@@ -115,7 +115,7 @@ async function readGatherupPayload(response) {
115
115
  function createGatherupError(status, payload, phase) {
116
116
  const message = extractGatherupErrorMessage(payload) ?? `GatherUp request failed with status ${status}`;
117
117
  if (phase === "validate" && (status === 401 || status === 403)) {
118
- return new ProviderRequestError(400, message);
118
+ return providerInputError(message);
119
119
  }
120
120
  if (phase === "execute" && (status === 401 || status === 403)) {
121
121
  return new ProviderRequestError(status, message);
@@ -1,9 +1,8 @@
1
1
  import { optionalRecord, optionalString } from "../../core/cast.js";
2
2
  import { compactJson, jsonObject } from "../../core/request.js";
3
- import { defineApiKeyProviderExecutors, defineProviderProxy, isAbortLikeError, providerUserAgent, ProviderRequestError, } from "../provider-runtime.js";
3
+ import { defineApiKeyProviderExecutors, defineProviderProxy, isAbortLikeError, providerUserAgent, ProviderRequestError, defaultProviderRequestTimeoutMs, } from "../provider-runtime.js";
4
4
  const service = "geckoboard";
5
5
  const geckoboardApiBaseUrl = "https://api.geckoboard.com";
6
- const geckoboardDefaultRequestTimeoutMs = 30_000;
7
6
  export const geckoboardActionHandlers = {
8
7
  async find_or_create_dataset(input, context) {
9
8
  const datasetId = readInputString(input.datasetId, "datasetId");
@@ -97,7 +96,7 @@ export const credentialValidators = {
97
96
  },
98
97
  };
99
98
  async function requestGeckoboardJson(input) {
100
- const timeoutSignal = AbortSignal.timeout(geckoboardDefaultRequestTimeoutMs);
99
+ const timeoutSignal = AbortSignal.timeout(defaultProviderRequestTimeoutMs);
101
100
  const signal = input.context.signal ? AbortSignal.any([input.context.signal, timeoutSignal]) : timeoutSignal;
102
101
  let response;
103
102
  let payload;
@@ -8,7 +8,6 @@ export declare const geminiDefaultVideoModel = "veo-3.0-generate-001";
8
8
  export declare const geminiDefaultVideoPollIntervalMs = 10000;
9
9
  export declare const geminiDefaultVideoMaxWaitMs: number;
10
10
  export declare const geminiDefaultRequestTimeoutMs = 10000;
11
- export declare const geminiDefaultLongRunningRequestTimeoutMs = 30000;
12
11
  type GeminiErrorMode = "validate" | "execute";
13
12
  interface GeminiModelSummary {
14
13
  name: string;
@@ -1,6 +1,6 @@
1
1
  import { compactObject, optionalInteger, optionalNumber, optionalRecord, optionalString } from "../../core/cast.js";
2
2
  import { jsonObject, readBoundedResponseBytes } from "../../core/request.js";
3
- import { isAbortLikeError, providerUserAgent, ProviderRequestError } from "../provider-runtime.js";
3
+ import { isAbortLikeError, providerUserAgent, ProviderRequestError, defaultProviderRequestTimeoutMs, } from "../provider-runtime.js";
4
4
  export const geminiApiBaseUrl = "https://generativelanguage.googleapis.com/v1beta";
5
5
  export const geminiDefaultTextModel = "gemini-2.5-flash";
6
6
  export const geminiDefaultEmbeddingModel = "text-embedding-004";
@@ -10,7 +10,6 @@ export const geminiDefaultVideoModel = "veo-3.0-generate-001";
10
10
  export const geminiDefaultVideoPollIntervalMs = 10_000;
11
11
  export const geminiDefaultVideoMaxWaitMs = 12 * 60_000;
12
12
  export const geminiDefaultRequestTimeoutMs = 10_000;
13
- export const geminiDefaultLongRunningRequestTimeoutMs = 30_000;
14
13
  export function geminiHeaders(apiKey) {
15
14
  return {
16
15
  "content-type": "application/json",
@@ -176,7 +175,7 @@ export async function generateGeminiImage(input, context) {
176
175
  safetySettings: asSafetySettings(input.safety_settings),
177
176
  systemInstruction: buildGeminiSystemInstruction(input.system_instruction),
178
177
  })),
179
- }, context, "generate_image", resolveGeminiTimeoutMs(input.timeout, geminiDefaultLongRunningRequestTimeoutMs));
178
+ }, context, "generate_image", resolveGeminiTimeoutMs(input.timeout, defaultProviderRequestTimeoutMs));
180
179
  await assertGeminiResponse(response, "execute", "generate_image");
181
180
  const payload = await readGeminiJson(response, "generate_image");
182
181
  const inlineImage = extractInlineDataPart(payload, "image/");
@@ -215,7 +214,7 @@ export async function generateGeminiVideos(input, context) {
215
214
  seed: optionalInteger(input.seed),
216
215
  }),
217
216
  })),
218
- }, context, "generate_videos", geminiDefaultLongRunningRequestTimeoutMs);
217
+ }, context, "generate_videos", defaultProviderRequestTimeoutMs);
219
218
  await assertGeminiResponse(response, "execute", "generate_videos");
220
219
  const payload = await readGeminiJson(response, "generate_videos");
221
220
  const operationName = optionalString(payload.name);
@@ -282,7 +281,7 @@ async function fetchGeminiVideoOperation(input, context) {
282
281
  const operationName = buildOperationResource(optionalString(input.operation_name) ?? "", resolveGeminiModel(input.model, geminiDefaultVideoModel));
283
282
  const response = await fetchGemini(`${geminiApiBaseUrl}/${operationName}`, {
284
283
  headers: geminiHeaders(context.apiKey),
285
- }, context, "get_videos_operation", geminiDefaultLongRunningRequestTimeoutMs);
284
+ }, context, "get_videos_operation", defaultProviderRequestTimeoutMs);
286
285
  await assertGeminiResponse(response, "execute", "get_videos_operation");
287
286
  return readGeminiJson(response, "get_videos_operation");
288
287
  }
@@ -432,7 +431,7 @@ async function downloadMediaBytes(url, context) {
432
431
  }
433
432
  const response = await fetchGemini(url, {
434
433
  headers,
435
- }, context, "media download", geminiDefaultLongRunningRequestTimeoutMs);
434
+ }, context, "media download", defaultProviderRequestTimeoutMs);
436
435
  if (!response.ok) {
437
436
  const message = (await response.text().catch(() => "")) || `gemini media download failed with ${response.status}`;
438
437
  throw new ProviderRequestError(502, message, { status: response.status });
@@ -1,5 +1,5 @@
1
1
  import { optionalRecord, optionalString } from "../../core/cast.js";
2
- import { ProviderRequestError, providerUserAgent, runProviderRequest } from "../provider-runtime.js";
2
+ import { ProviderRequestError, providerUserAgent, runProviderRequest, providerInputError, } from "../provider-runtime.js";
3
3
  export const genpageApiBaseUrl = "https://backend.genpage.ai";
4
4
  function listHandler(path, outputKey) {
5
5
  return async (input, context) => ({
@@ -87,7 +87,7 @@ function createError(status, payload, phase) {
87
87
  if (status === 429)
88
88
  return new ProviderRequestError(429, message);
89
89
  if (phase === "validate" && 400 <= status && status < 500)
90
- return new ProviderRequestError(400, message);
90
+ return providerInputError(message);
91
91
  return new ProviderRequestError(status || 500, message);
92
92
  }
93
93
  function requireArray(value) {
@@ -1,5 +1,5 @@
1
1
  import { compactObject, optionalRecord, optionalString } from "../../core/cast.js";
2
- import { defineApiKeyProviderExecutors, defineProviderProxy, ProviderRequestError } from "../provider-runtime.js";
2
+ import { defineApiKeyProviderExecutors, defineProviderProxy, ProviderRequestError, providerInputError, providerResponseError, } from "../provider-runtime.js";
3
3
  const service = "geokeo";
4
4
  const geokeoApiBaseUrl = "https://geokeo.com";
5
5
  const geokeoValidationQuery = "ZZQXV NO MATCH PLACE 19700101";
@@ -104,12 +104,12 @@ function createGeokeoStatusError(status) {
104
104
  return new ProviderRequestError(429, status);
105
105
  }
106
106
  if (status === "INVALID_REQUEST") {
107
- return new ProviderRequestError(400, status);
107
+ return providerInputError(status);
108
108
  }
109
109
  if (status === "ACCESS_DENIED") {
110
- return new ProviderRequestError(400, status);
110
+ return providerInputError(status);
111
111
  }
112
- return new ProviderRequestError(502, status);
112
+ return providerResponseError(status);
113
113
  }
114
114
  function readGeokeoStatus(payload) {
115
115
  return optionalString(payload?.status);
@@ -1,7 +1,6 @@
1
1
  import { nullableString, optionalNumber, optionalBoolean, optionalRecord, optionalString, requiredRecord, } from "../../core/cast.js";
2
- import { isAbortLikeError, providerFetch, ProviderRequestError, providerUserAgent } from "../provider-runtime.js";
2
+ import { isAbortLikeError, providerFetch, ProviderRequestError, providerUserAgent, defaultProviderRequestTimeoutMs, } from "../provider-runtime.js";
3
3
  export const getnoteBaseUrl = "https://openapi.biji.com";
4
- const getnoteRequestTimeoutMs = 30_000;
5
4
  export async function validateGetnoteCredential(input, fetcher = providerFetch, signal) {
6
5
  const apiKey = readGetnoteApiKey(input.apiKey);
7
6
  const clientId = readGetnoteClientId(input);
@@ -396,7 +395,7 @@ async function getnoteRequest(context, request) {
396
395
  url.searchParams.set(key, String(value));
397
396
  }
398
397
  }
399
- const timeoutSignal = AbortSignal.timeout(getnoteRequestTimeoutMs);
398
+ const timeoutSignal = AbortSignal.timeout(defaultProviderRequestTimeoutMs);
400
399
  const signal = context.signal ? AbortSignal.any([context.signal, timeoutSignal]) : timeoutSignal;
401
400
  let response;
402
401
  try {
@@ -1,5 +1,5 @@
1
1
  import { compactObject, optionalInteger, optionalString, optionalRawString } from "../../core/cast.js";
2
- import { ProviderRequestError } from "../provider-runtime.js";
2
+ import { ProviderRequestError, providerInputError } from "../provider-runtime.js";
3
3
  export { compactObject };
4
4
  export const githubApiBaseUrl = "https://api.github.com";
5
5
  export const githubApiVersion = "2022-11-28";
@@ -135,7 +135,7 @@ export function normalizeGitHubError(response, payload, fallbackMessage) {
135
135
  return new ProviderRequestError(404, message);
136
136
  }
137
137
  if (response.status === 400 || response.status === 422) {
138
- return new ProviderRequestError(400, message);
138
+ return providerInputError(message);
139
139
  }
140
140
  return new ProviderRequestError(500, message, response.status);
141
141
  }
@@ -1,7 +1,6 @@
1
1
  import { compactObject, optionalString } from "../../core/cast.js";
2
- import { createProviderTimeout, isAbortLikeError, providerUserAgent, ProviderRequestError, } from "../provider-runtime.js";
2
+ import { createProviderTimeout, isAbortLikeError, providerUserAgent, ProviderRequestError, defaultProviderRequestTimeoutMs, } from "../provider-runtime.js";
3
3
  export const glyphicApiBaseUrl = "https://api.glyphic.ai";
4
- const glyphicRequestTimeoutMs = 30_000;
5
4
  export const glyphicActionHandlers = {
6
5
  async list_calls(input, context) {
7
6
  const payload = await requestGlyphicJson({
@@ -99,7 +98,7 @@ async function requestGlyphicArray(path, context, label) {
99
98
  return readResponseArray(payload, label);
100
99
  }
101
100
  async function requestGlyphicJson(input, context, mode) {
102
- const timeout = createProviderTimeout(context.signal, glyphicRequestTimeoutMs);
101
+ const timeout = createProviderTimeout(context.signal);
103
102
  try {
104
103
  const response = await context.fetcher(buildGlyphicUrl(input.path, input.query), {
105
104
  method: input.method,
@@ -121,7 +120,7 @@ async function requestGlyphicJson(input, context, mode) {
121
120
  throw error;
122
121
  }
123
122
  if (timeout.didTimeout() || isAbortLikeError(error)) {
124
- throw new ProviderRequestError(504, `Glyphic request timed out after ${glyphicRequestTimeoutMs / 1000} seconds`);
123
+ throw new ProviderRequestError(504, `Glyphic request timed out after ${defaultProviderRequestTimeoutMs / 1000} seconds`);
125
124
  }
126
125
  const message = error instanceof Error && error.message.trim() ? error.message : "request failed";
127
126
  throw new ProviderRequestError(502, `Glyphic request failed: ${message}`);
@@ -2,7 +2,7 @@ import { format as schemaFormat } from "@cfworker/json-schema";
2
2
  import { looseArray, optionalBoolean, optionalNumberLike, optionalRawString, optionalRecord, optionalString, } from "../../core/cast.js";
3
3
  import { encodePathSegment } from "../../core/request.js";
4
4
  import { googleBearerProxyAuth, googleServiceAccountValidator, resolveGoogleAccessToken, } from "../googledrive/runtime-auth.js";
5
- import { defineProviderExecutors, defineProviderProxy, providerInputError, ProviderRequestError, providerResponseError, readProviderErrorTextBody, readProviderJsonBody, requiredInputString, requiredResponseRecord, runProviderRequest, withRetryAfterSeconds, } from "../provider-runtime.js";
5
+ import { defineProviderExecutors, defineProviderProxy, providerInputError, ProviderRequestError, providerResponseError, readProviderErrorTextBody, readProviderJsonBody, readRetryAfterSeconds, requiredInputString, requiredResponseRecord, runProviderRequest, providerRequestErrorCode, withRetryAfterSeconds, } from "../provider-runtime.js";
6
6
  import { decodeGmailAttachment } from "./attachment-stream.js";
7
7
  import { gmailMaxMimeBytes } from "./limits.js";
8
8
  import { assertMatchingReplySubject, buildRecipients, normalizeGmailMessage, normalizeMessageId, normalizeThreadId, readHeader, resolveReplyHeaders, summarizeGmailMessage, } from "./message.js";
@@ -13,6 +13,16 @@ import { gmailMessageReceived } from "./trigger-on-message-received.js";
13
13
  const service = "gmail";
14
14
  const gmailApiBaseUrl = "https://gmail.googleapis.com/gmail/v1";
15
15
  const detailHydrationBatchSize = 10;
16
+ // Hydration fans out one detail request per listed id, which can exceed Gmail's per-user quota.
17
+ // The retry below keeps hydrated rows and paces the rest instead of discarding the page.
18
+ // Six attempts let the backoff climb 1, 2, 4, 8, 16 s (about 31 s of waiting per message at most),
19
+ // long enough for the moving average to drain, without retrying one message forever.
20
+ const hydrationMaxAttempts = 6;
21
+ const hydrationBaseBackoffMs = 1_000;
22
+ // Total time one action may spend waiting out rate limits. It stays well below the few minutes a
23
+ // caller typically allows one action call, so a persistent limit still comes back as rate_limited
24
+ // (which the caller can pace) rather than as a client-side timeout.
25
+ const hydrationRetryBudgetMs = 120_000;
16
26
  // Attachments may reach Gmail's 25 MB cap, and the base64 JSON envelope is a third larger again;
17
27
  // the default 30 s request budget covers fetch, decode, and disk write, so give this transfer longer.
18
28
  const attachmentDownloadTimeoutMs = 120_000;
@@ -49,11 +59,11 @@ export const gmailActionHandlers = {
49
59
  })),
50
60
  };
51
61
  },
52
- list_threads(input, { userId, accessToken, fetcher }) {
53
- return listThreads(input, userId, accessToken, fetcher);
62
+ list_threads(input, { userId, accessToken, fetcher, signal }) {
63
+ return listThreads(input, userId, accessToken, fetcher, signal);
54
64
  },
55
- fetch_emails(input, { userId, accessToken, fetcher }) {
56
- return fetchEmails(input, userId, accessToken, fetcher);
65
+ fetch_emails(input, { userId, accessToken, fetcher, signal }) {
66
+ return fetchEmails(input, userId, accessToken, fetcher, signal);
57
67
  },
58
68
  async get_message(input, { userId, accessToken, fetcher }) {
59
69
  const message = await getMessageResource(userId, normalizeMessageId(input.messageId), accessToken, fetcher, "full");
@@ -92,8 +102,8 @@ export const gmailActionHandlers = {
92
102
  create_email_draft(input, context) {
93
103
  return createEmailDraft(input, context);
94
104
  },
95
- list_drafts(input, { userId, accessToken, fetcher }) {
96
- return listDrafts(input, userId, accessToken, fetcher);
105
+ list_drafts(input, { userId, accessToken, fetcher, signal }) {
106
+ return listDrafts(input, userId, accessToken, fetcher, signal);
97
107
  },
98
108
  get_draft(input, { userId, accessToken, fetcher }) {
99
109
  return getDraft(input, userId, accessToken, fetcher);
@@ -233,7 +243,7 @@ export const credentialValidators = {
233
243
  },
234
244
  customCredential: googleServiceAccountValidator(service, gmailOAuthScopes),
235
245
  };
236
- async function fetchEmails(input, userId, accessToken, fetcher) {
246
+ async function fetchEmails(input, userId, accessToken, fetcher, signal) {
237
247
  const detail = trimmedString(input.detail) || "summary";
238
248
  const url = new URL(gmailUserUrl(userId, "messages"));
239
249
  const query = trimmedString(input.query);
@@ -265,7 +275,7 @@ async function fetchEmails(input, userId, accessToken, fetcher) {
265
275
  }
266
276
  const includeFullMessage = detail === "full";
267
277
  const format = includeFullMessage ? "full" : "metadata";
268
- const hydrated = await hydrateInBatches(messages, (message) => getMessageResource(userId, message.id, accessToken, fetcher, format));
278
+ const hydrated = await hydrateInBatches(messages, (message) => getMessageResource(userId, message.id, accessToken, fetcher, format), signal);
269
279
  return {
270
280
  messages: hydrated.map((message) => includeFullMessage ? normalizeGmailMessage(message) : summarizeGmailMessage(message)),
271
281
  nextPageToken: payload.nextPageToken ?? null,
@@ -285,7 +295,7 @@ async function fetchMessagesByThreadId(input, userId, accessToken, fetcher) {
285
295
  messages: (thread.messages ?? []).map((message) => normalizeGmailMessage(message)),
286
296
  };
287
297
  }
288
- async function listThreads(input, userId, accessToken, fetcher) {
298
+ async function listThreads(input, userId, accessToken, fetcher, signal) {
289
299
  const url = new URL(gmailUserUrl(userId, "threads"));
290
300
  const query = trimmedString(input.query);
291
301
  if (query) {
@@ -300,7 +310,7 @@ async function listThreads(input, userId, accessToken, fetcher) {
300
310
  const payload = await fetchJson(url.toString(), accessToken, fetcher);
301
311
  const threads = payload.threads ?? [];
302
312
  if (input.verbose === true) {
303
- const hydrated = await hydrateInBatches(threads, (thread) => getThreadResource(userId, thread.id, accessToken, fetcher, "full"));
313
+ const hydrated = await hydrateInBatches(threads, (thread) => getThreadResource(userId, thread.id, accessToken, fetcher, "full"), signal);
304
314
  return {
305
315
  threads: hydrated.map((thread) => ({
306
316
  threadId: thread.id,
@@ -465,7 +475,7 @@ function latestReplyMessage(thread) {
465
475
  throw providerInputError("thread has no non-draft messages to reply to");
466
476
  return latest;
467
477
  }
468
- async function listDrafts(input, userId, accessToken, fetcher) {
478
+ async function listDrafts(input, userId, accessToken, fetcher, signal) {
469
479
  const url = new URL(gmailUserUrl(userId, "drafts"));
470
480
  if (input.pageToken != null) {
471
481
  url.searchParams.set("pageToken", String(input.pageToken));
@@ -476,7 +486,7 @@ async function listDrafts(input, userId, accessToken, fetcher) {
476
486
  const payload = await fetchJson(url.toString(), accessToken, fetcher);
477
487
  const drafts = payload.drafts ?? [];
478
488
  if (input.verbose === true) {
479
- const hydrated = await hydrateInBatches(drafts, (draft) => getDraftResource(userId, draft.id, accessToken, fetcher, "full"));
489
+ const hydrated = await hydrateInBatches(drafts, (draft) => getDraftResource(userId, draft.id, accessToken, fetcher, "full"), signal);
480
490
  return {
481
491
  drafts: hydrated.map((draft) => ({
482
492
  id: draft.id,
@@ -780,14 +790,94 @@ function normalizeThread(thread) {
780
790
  messages: (thread.messages ?? []).map((message) => normalizeGmailMessage(message)),
781
791
  };
782
792
  }
783
- async function hydrateInBatches(items, hydrate, batchSize = detailHydrationBatchSize) {
784
- const hydrated = [];
785
- for (let index = 0; index < items.length; index += batchSize) {
786
- const batch = items.slice(index, index + batchSize);
787
- hydrated.push(...(await Promise.all(batch.map((item) => hydrate(item)))));
793
+ /**
794
+ * Hydrate every item, in order, or fail the whole call: a caller advances its page cursor on
795
+ * success, so a partial page must never look complete.
796
+ *
797
+ * Items run in batches of up to `detailHydrationBatchSize`. A per-user rate limit on one item
798
+ * keeps every row already hydrated and requeues only the limited items; the batch width halves
799
+ * (down to 1) and the next batch waits out `Retry-After` or an exponential, jittered backoff.
800
+ * Each clean batch widens the next one by a single item again. When an item runs out of
801
+ * attempts, or the next wait would overrun the action's retry budget, the rate-limit error
802
+ * with the longest `Retry-After` is thrown unchanged, so the action still reports `rate_limited`.
803
+ * Any other error rejects immediately, exactly like the plain batch it replaces.
804
+ */
805
+ async function hydrateInBatches(items, hydrate, signal) {
806
+ const hydrated = new Array(items.length);
807
+ const attempts = new Array(items.length).fill(0);
808
+ const deadline = Date.now() + hydrationRetryBudgetMs;
809
+ let pending = items.map((_item, index) => index);
810
+ let width = detailHydrationBatchSize;
811
+ while (pending.length > 0) {
812
+ const batch = pending.slice(0, width);
813
+ const outcomes = await Promise.all(batch.map(async (index) => {
814
+ attempts[index] += 1;
815
+ try {
816
+ hydrated[index] = await hydrate(items[index]);
817
+ return undefined;
818
+ }
819
+ catch (error) {
820
+ if (isRetryableGmailRateLimit(error))
821
+ return error;
822
+ throw error;
823
+ }
824
+ }));
825
+ const limited = batch.filter((_index, position) => outcomes[position] !== undefined);
826
+ pending = [...limited, ...pending.slice(batch.length)];
827
+ if (limited.length === 0) {
828
+ width = Math.min(detailHydrationBatchSize, width + 1);
829
+ continue;
830
+ }
831
+ // Surface the error carrying the longest Retry-After so the caller can pace the connection.
832
+ const pacingError = outcomes
833
+ .filter((error) => error !== undefined)
834
+ .reduce((longest, error) => (gmailRetryAfterMs(error) > gmailRetryAfterMs(longest) ? error : longest));
835
+ const attempt = Math.max(...limited.map((index) => attempts[index]));
836
+ if (attempt >= hydrationMaxAttempts)
837
+ throw pacingError;
838
+ const delayMs = hydrationRetryDelayMs(attempt, gmailRetryAfterMs(pacingError));
839
+ if (Date.now() + delayMs > deadline)
840
+ throw pacingError;
841
+ width = Math.max(1, Math.floor(width / 2));
842
+ await sleepFor(delayMs, signal);
788
843
  }
789
844
  return hydrated;
790
845
  }
846
+ /**
847
+ * A rate limit worth waiting out inside this action: whatever the runtime reports as `rate_limited`
848
+ * (any 429, and the 403 rate-limit reasons `readGmailError` labels), except an exhausted daily or
849
+ * project quota, which stays `rate_limited` but does not recover within one action.
850
+ */
851
+ function isRetryableGmailRateLimit(error) {
852
+ return (error instanceof GmailRequestError && !error.quotaExhausted && providerRequestErrorCode(error) === "rate_limited");
853
+ }
854
+ function gmailRetryAfterMs(error) {
855
+ return (optionalNumberLike(optionalRecord(error.details)?.retryAfterSeconds) ?? 0) * 1_000;
856
+ }
857
+ /** Honour the upstream `Retry-After` when present, else equal-jitter exponential backoff. */
858
+ function hydrationRetryDelayMs(attempt, retryAfterMs) {
859
+ if (retryAfterMs > 0)
860
+ return retryAfterMs;
861
+ const backoffMs = hydrationBaseBackoffMs * 2 ** (attempt - 1);
862
+ return backoffMs / 2 + Math.random() * (backoffMs / 2);
863
+ }
864
+ function sleepFor(delayMs, signal) {
865
+ return new Promise((resolve, reject) => {
866
+ if (signal?.aborted) {
867
+ reject(signal.reason);
868
+ return;
869
+ }
870
+ const onAbort = () => {
871
+ clearTimeout(timer);
872
+ reject(signal.reason);
873
+ };
874
+ const timer = setTimeout(() => {
875
+ signal?.removeEventListener("abort", onAbort);
876
+ resolve();
877
+ }, delayMs);
878
+ signal?.addEventListener("abort", onAbort, { once: true });
879
+ });
880
+ }
791
881
  function buildLabelPayload(input) {
792
882
  return Object.fromEntries(Object.entries(input).filter(([key, value]) => key !== "userId" && key !== "labelId" && value !== undefined));
793
883
  }
@@ -864,12 +954,18 @@ async function assertGmailResponse(response) {
864
954
  }
865
955
  throw await readGmailError(response);
866
956
  }
867
- const gmailQuotaReasons = new Set([
868
- "rateLimitExceeded",
869
- "userRateLimitExceeded",
870
- "dailyLimitExceeded",
871
- "quotaExceeded",
872
- ]);
957
+ // Gmail answers both of these with a 403, which would otherwise read as an authorization failure.
958
+ // Per-user rate limits clear within seconds; exhausted daily or project quotas do not.
959
+ const gmailRateLimitReasons = new Set(["rateLimitExceeded", "userRateLimitExceeded"]);
960
+ const gmailExhaustedQuotaReasons = new Set(["dailyLimitExceeded", "quotaExceeded"]);
961
+ /** A Gmail API failure that also records whether the upstream reason was an exhausted quota. */
962
+ class GmailRequestError extends ProviderRequestError {
963
+ quotaExhausted;
964
+ constructor(status, message, details, code, quotaExhausted) {
965
+ super(status, message, details, code);
966
+ this.quotaExhausted = quotaExhausted;
967
+ }
968
+ }
873
969
  async function readGmailError(response) {
874
970
  const text = await readProviderErrorTextBody(response, "gmail error response");
875
971
  let error;
@@ -879,8 +975,10 @@ async function readGmailError(response) {
879
975
  catch {
880
976
  // A malformed response must not expose its raw body or change status classification.
881
977
  }
882
- const rateLimited = response.status === 403 &&
883
- looseArray(error?.errors).some((entry) => gmailQuotaReasons.has(optionalString(optionalRecord(entry)?.reason) ?? ""));
884
- return new ProviderRequestError(response.status, optionalString(error?.message) ?? `gmail request failed with ${response.status}`, withRetryAfterSeconds(response), rateLimited ? "rate_limited" : undefined);
978
+ const reasons = looseArray(error?.errors).flatMap((entry) => optionalString(optionalRecord(entry)?.reason) ?? []);
979
+ const quotaExhausted = reasons.some((reason) => gmailExhaustedQuotaReasons.has(reason));
980
+ const rateLimited = response.status === 403 && (quotaExhausted || reasons.some((reason) => gmailRateLimitReasons.has(reason)));
981
+ const retryAfterSeconds = rateLimited ? readRetryAfterSeconds(response.headers) : undefined;
982
+ return new GmailRequestError(response.status, optionalString(error?.message) ?? `gmail request failed with ${response.status}`, retryAfterSeconds === undefined ? withRetryAfterSeconds(response) : { retryAfterSeconds }, rateLimited ? "rate_limited" : undefined, quotaExhausted);
885
983
  }
886
984
  export const triggers = [gmailMessageReceived];