@oomol-lab/open-connector 1.9.2 → 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 (486) hide show
  1. package/README.md +4 -2
  2. package/assets/open-connector/catalog/apps/allratestoday.json +174 -0
  3. package/assets/open-connector/catalog/apps/slackbot.json +20 -1
  4. package/assets/open-connector/catalog/apps-index.json +1 -1
  5. package/package.json +1 -1
  6. package/src/connection-error.d.ts +7 -0
  7. package/src/connection-error.js +10 -0
  8. package/src/connection-service.d.ts +2 -50
  9. package/src/connection-service.js +6 -130
  10. package/src/connection-store.d.ts +41 -0
  11. package/src/connection-store.js +1 -0
  12. package/src/core/guarded-fetch.d.ts +3 -0
  13. package/src/core/guarded-fetch.js +8 -1
  14. package/src/core/provider-network-policy.d.ts +15 -0
  15. package/src/core/provider-network-policy.js +11 -0
  16. package/src/core/request.d.ts +18 -14
  17. package/src/core/request.js +11 -35
  18. package/src/credential-resolver.d.ts +24 -0
  19. package/src/credential-resolver.js +131 -0
  20. package/src/mcp.js +1 -1
  21. package/src/oauth/oauth-client-config-service.d.ts +1 -1
  22. package/src/oauth/oauth-client-config-service.js +14 -2
  23. package/src/oauth/oauth-credential-refresh-service.js +1 -1
  24. package/src/oauth/oauth-flow-service.d.ts +9 -1
  25. package/src/oauth/oauth-flow-service.js +11 -1
  26. package/src/providers/abuseipdb/executors.js +3 -4
  27. package/src/providers/action-contracts.generated.d.ts +1 -0
  28. package/src/providers/addressfinder/executors.js +2 -3
  29. package/src/providers/aeroleads/executors.js +3 -3
  30. package/src/providers/affinity/runtime.js +6 -7
  31. package/src/providers/aftership/executors.js +2 -2
  32. package/src/providers/agent_mail/runtime.js +2 -2
  33. package/src/providers/agentql/runtime.js +2 -2
  34. package/src/providers/agenty/runtime.js +5 -6
  35. package/src/providers/agiled/runtime.d.ts +0 -1
  36. package/src/providers/agiled/runtime.js +2 -3
  37. package/src/providers/agility/runtime.js +2 -3
  38. package/src/providers/ahrefs/runtime.js +3 -3
  39. package/src/providers/aifinmarket/runtime.js +6 -7
  40. package/src/providers/airtable/executors.js +3 -3
  41. package/src/providers/alchemy/runtime.js +2 -2
  42. package/src/providers/algolia/runtime.js +3 -3
  43. package/src/providers/aliyun_oss/executors.js +7 -7
  44. package/src/providers/allratestoday/executors.d.ts +3 -0
  45. package/src/providers/allratestoday/executors.js +18 -0
  46. package/src/providers/allratestoday/runtime.d.ts +17 -0
  47. package/src/providers/allratestoday/runtime.js +104 -0
  48. package/src/providers/alpaca/runtime.js +2 -3
  49. package/src/providers/alpha_vantage/runtime.js +2 -2
  50. package/src/providers/alt_text_ai/runtime.js +2 -2
  51. package/src/providers/altiria/executors.js +3 -3
  52. package/src/providers/amap/runtime.js +3 -3
  53. package/src/providers/ambee/runtime.js +2 -2
  54. package/src/providers/ambivo/executors.js +3 -3
  55. package/src/providers/amilia/runtime.js +1 -1
  56. package/src/providers/amplemarket/runtime.js +2 -2
  57. package/src/providers/amplitude/runtime.js +3 -3
  58. package/src/providers/anysearch/runtime.js +4 -4
  59. package/src/providers/apaleo/runtime.js +2 -2
  60. package/src/providers/api_sports/executors.js +3 -4
  61. package/src/providers/apiverve/executors.js +2 -3
  62. package/src/providers/apollo/executors.js +2 -3
  63. package/src/providers/appcircle/runtime.js +5 -5
  64. package/src/providers/appdrag/executors.js +2 -3
  65. package/src/providers/arcgis_online/executors.js +2 -2
  66. package/src/providers/auth0_management/runtime.js +2 -3
  67. package/src/providers/autoblogger/executors.js +3 -3
  68. package/src/providers/baidu_maps/runtime.js +3 -3
  69. package/src/providers/baidu_netdisk/runtime-mcp.js +3 -4
  70. package/src/providers/bark/executors.js +5 -5
  71. package/src/providers/bitrise/runtime.js +3 -3
  72. package/src/providers/bouncer/executors.js +3 -4
  73. package/src/providers/browse_ai/runtime.js +3 -4
  74. package/src/providers/browserstack/executors.js +6 -7
  75. package/src/providers/buildkite/runtime.js +3 -3
  76. package/src/providers/bunnycdn/runtime.js +3 -3
  77. package/src/providers/businessmap/runtime.js +6 -7
  78. package/src/providers/buttondown/runtime.js +2 -2
  79. package/src/providers/byteforms/runtime.js +2 -2
  80. package/src/providers/calendly/runtime.js +2 -2
  81. package/src/providers/captainbi/runtime.js +6 -6
  82. package/src/providers/castingwords/runtime.js +1 -1
  83. package/src/providers/chatpdf/runtime.js +4 -4
  84. package/src/providers/check/executors.js +3 -4
  85. package/src/providers/checkly/executors.js +3 -4
  86. package/src/providers/chengxin/runtime.js +3 -3
  87. package/src/providers/cincopa/executors.js +3 -4
  88. package/src/providers/circle/executors.js +3 -4
  89. package/src/providers/clearout/executors.js +1 -2
  90. package/src/providers/clickhelp/runtime.js +5 -5
  91. package/src/providers/clickhouse/runtime.js +4 -4
  92. package/src/providers/clinicalkey/runtime.js +3 -3
  93. package/src/providers/clinicaltrials_gov/runtime.js +4 -5
  94. package/src/providers/clockify/runtime.js +4 -4
  95. package/src/providers/close/runtime.js +3 -3
  96. package/src/providers/cloudconvert/runtime.js +8 -9
  97. package/src/providers/cloudflare_dns/runtime.js +2 -2
  98. package/src/providers/cloudflare_email_routing/runtime.js +2 -2
  99. package/src/providers/cloudflare_r2/runtime.js +5 -5
  100. package/src/providers/cloudflare_worker/runtime.js +10 -10
  101. package/src/providers/cloudinary/runtime.js +4 -4
  102. package/src/providers/cloudlayer/runtime.js +5 -5
  103. package/src/providers/codacy/runtime.js +2 -2
  104. package/src/providers/codemagic/runtime.js +2 -2
  105. package/src/providers/confluence/executors.js +4 -4
  106. package/src/providers/confluence/runtime.d.ts +0 -1
  107. package/src/providers/confluence/runtime.js +6 -7
  108. package/src/providers/contactout/runtime.js +5 -5
  109. package/src/providers/contentful/runtime.js +2 -2
  110. package/src/providers/contentstack_content_delivery/runtime.js +1 -1
  111. package/src/providers/cronly/runtime.js +2 -2
  112. package/src/providers/crossref/runtime.js +3 -3
  113. package/src/providers/cutt_ly/runtime.js +3 -3
  114. package/src/providers/cyberimpact/runtime.js +3 -3
  115. package/src/providers/dachser/executors.js +2 -2
  116. package/src/providers/dailybot/runtime.js +1 -1
  117. package/src/providers/databox/runtime.js +2 -2
  118. package/src/providers/databricks/runtime.js +2 -2
  119. package/src/providers/datacite/runtime.js +1 -1
  120. package/src/providers/datadog/executors.js +3 -4
  121. package/src/providers/datascope/runtime.js +2 -2
  122. package/src/providers/daytona/executors.js +3 -3
  123. package/src/providers/deepgram/runtime.js +2 -2
  124. package/src/providers/deepl/runtime.js +4 -4
  125. package/src/providers/detrack/executors.js +5 -5
  126. package/src/providers/deutschlandgpt/runtime.js +2 -2
  127. package/src/providers/dialmycalls/runtime.js +4 -4
  128. package/src/providers/diffbot/executors.js +4 -4
  129. package/src/providers/digistore24/executors.js +3 -3
  130. package/src/providers/dingtalk_bot/executors.js +1 -1
  131. package/src/providers/discourse/executors.d.ts +0 -1
  132. package/src/providers/discourse/executors.js +6 -7
  133. package/src/providers/docugenerate/runtime.js +3 -3
  134. package/src/providers/doppler/runtime.shared.js +3 -3
  135. package/src/providers/doppler_marketing_automation/runtime.js +4 -4
  136. package/src/providers/dovetail/runtime.js +2 -2
  137. package/src/providers/dropcontact/runtime.js +3 -3
  138. package/src/providers/dub/executors.js +6 -6
  139. package/src/providers/dumplingai/runtime.js +2 -2
  140. package/src/providers/elevenlabs/executors.js +4 -4
  141. package/src/providers/elevenreader/runtime.js +1 -1
  142. package/src/providers/emailoctopus/runtime.js +4 -4
  143. package/src/providers/embase/runtime.js +3 -3
  144. package/src/providers/emelia/executors.js +2 -2
  145. package/src/providers/enigma/executors.js +3 -3
  146. package/src/providers/eodhd_apis/executors.js +2 -2
  147. package/src/providers/eventzilla/runtime.js +3 -4
  148. package/src/providers/evervault/runtime.js +1 -1
  149. package/src/providers/excalidraw_mcp/runtime.js +3 -4
  150. package/src/providers/excel/runtime.js +6 -6
  151. package/src/providers/expofp/runtime.js +2 -2
  152. package/src/providers/faktoora/runtime.js +5 -5
  153. package/src/providers/fast_note_sync/runtime.js +2 -2
  154. package/src/providers/feathery/executors.js +2 -3
  155. package/src/providers/feishu_app_bot/executors.js +2 -3
  156. package/src/providers/feishu_custom_bot/executors.js +2 -3
  157. package/src/providers/ffhub/executors.js +2 -3
  158. package/src/providers/fidel_api/executors.js +2 -3
  159. package/src/providers/files_com/executors.js +2 -3
  160. package/src/providers/fireberry/runtime.d.ts +0 -1
  161. package/src/providers/fireberry/runtime.js +3 -4
  162. package/src/providers/firehydrant/executors.js +2 -3
  163. package/src/providers/float/executors.js +2 -3
  164. package/src/providers/flomo/executors.js +5 -6
  165. package/src/providers/flowiseai/executors.js +2 -3
  166. package/src/providers/fluxguard/executors.js +2 -3
  167. package/src/providers/folk/executors.js +2 -3
  168. package/src/providers/football_data/executors.js +2 -3
  169. package/src/providers/forem/executors.js +2 -3
  170. package/src/providers/formbricks/executors.js +2 -3
  171. package/src/providers/formsite/executors.js +3 -4
  172. package/src/providers/formspree/executors.js +2 -2
  173. package/src/providers/freshdesk/executors.js +3 -4
  174. package/src/providers/freshservice/executors.js +3 -4
  175. package/src/providers/freshteam/runtime.js +3 -4
  176. package/src/providers/full_contact/executors.js +3 -3
  177. package/src/providers/fusion-api/runtime.js +2 -3
  178. package/src/providers/gagelist/executors.js +3 -3
  179. package/src/providers/gainsight_nxt/executors.js +2 -2
  180. package/src/providers/gamma/executors.js +4 -3
  181. package/src/providers/gangtise/runtime.js +3 -4
  182. package/src/providers/gatherup/runtime.js +1 -1
  183. package/src/providers/geckoboard/executors.js +2 -3
  184. package/src/providers/gemini/runtime.d.ts +0 -1
  185. package/src/providers/gemini/runtime.js +5 -6
  186. package/src/providers/genpage/runtime.js +2 -2
  187. package/src/providers/geokeo/executors.js +4 -4
  188. package/src/providers/getnote/runtime.js +2 -3
  189. package/src/providers/github/runtime-shared.js +2 -2
  190. package/src/providers/glyphic/runtime.js +3 -4
  191. package/src/providers/gmail/executors.js +125 -27
  192. package/src/providers/gong/runtime.js +6 -7
  193. package/src/providers/googlecalendar/runtime-shared.js +3 -4
  194. package/src/providers/googledrive/runtime-request.js +2 -3
  195. package/src/providers/googlesheets/runtime-shared.js +3 -4
  196. package/src/providers/gorgias/runtime.js +4 -4
  197. package/src/providers/gotify/executors.js +7 -8
  198. package/src/providers/greenhouse/executors.js +3 -3
  199. package/src/providers/gumloop/executors.js +2 -3
  200. package/src/providers/gumroad/executors.js +2 -3
  201. package/src/providers/habitica/executors.js +2 -3
  202. package/src/providers/hackerrank_work/executors.js +2 -3
  203. package/src/providers/harvest/executors.js +3 -4
  204. package/src/providers/haveibeenpwned/executors.js +2 -3
  205. package/src/providers/headout/executors.js +3 -4
  206. package/src/providers/healthchecks_io/executors.js +2 -3
  207. package/src/providers/helium10/runtime.js +4 -5
  208. package/src/providers/helpdesk/runtime.js +4 -4
  209. package/src/providers/home_assistant/runtime-ws.js +9 -10
  210. package/src/providers/hotjar/executors.js +4 -4
  211. package/src/providers/httpsms/runtime.js +3 -4
  212. package/src/providers/hub_planner/executors.js +3 -3
  213. package/src/providers/hubspot/runtime.js +3 -4
  214. package/src/providers/humaans/runtime.js +3 -3
  215. package/src/providers/hunter/runtime.js +3 -3
  216. package/src/providers/icypeas/executors.js +3 -4
  217. package/src/providers/ima/runtime.js +7 -7
  218. package/src/providers/infolobby/runtime.js +6 -6
  219. package/src/providers/instabot/runtime.js +6 -6
  220. package/src/providers/instatus/runtime.js +4 -4
  221. package/src/providers/intuiface/executors.js +3 -3
  222. package/src/providers/iplocate/runtime.js +4 -5
  223. package/src/providers/ipregistry/executors.js +2 -2
  224. package/src/providers/jiminny/runtime.js +4 -4
  225. package/src/providers/jin10/executors.js +4 -5
  226. package/src/providers/jira/executors.js +4 -4
  227. package/src/providers/kaleido/runtime.js +2 -2
  228. package/src/providers/kandji/runtime.js +2 -2
  229. package/src/providers/keygen/executors.js +4 -4
  230. package/src/providers/keyword/runtime.js +2 -2
  231. package/src/providers/kie_ai/executors.js +1 -1
  232. package/src/providers/kintone/runtime.js +1 -1
  233. package/src/providers/kit/runtime.js +2 -2
  234. package/src/providers/klangio/runtime.js +4 -4
  235. package/src/providers/klaviyo/executors.js +1 -1
  236. package/src/providers/klazify/executors.js +3 -3
  237. package/src/providers/klipfolio/runtime.js +3 -3
  238. package/src/providers/knack/executors.js +1 -1
  239. package/src/providers/kommo/runtime.js +2 -2
  240. package/src/providers/kontent_ai/executors.js +3 -4
  241. package/src/providers/l2s/executors.js +3 -4
  242. package/src/providers/latchshot/executors.js +2 -2
  243. package/src/providers/leadboxer/runtime.js +4 -4
  244. package/src/providers/leadiq/runtime.js +4 -4
  245. package/src/providers/linguapop/runtime.js +1 -1
  246. package/src/providers/lingvanex_translation_api/runtime.js +5 -6
  247. package/src/providers/lingxing_mcp/runtime.js +3 -4
  248. package/src/providers/linkup/runtime.js +5 -6
  249. package/src/providers/liveagent/executors.js +6 -6
  250. package/src/providers/loops/executors.js +2 -2
  251. package/src/providers/loyjoy/runtime.js +2 -2
  252. package/src/providers/loyverse/executors.js +4 -4
  253. package/src/providers/lusha/runtime.js +3 -3
  254. package/src/providers/mailbluster/runtime.js +3 -4
  255. package/src/providers/mailcoach/runtime.js +4 -4
  256. package/src/providers/mailgenius/executors.js +3 -4
  257. package/src/providers/mailjet/runtime.js +3 -3
  258. package/src/providers/mails_so/runtime.js +1 -1
  259. package/src/providers/mailsoftly/runtime.js +5 -5
  260. package/src/providers/mailtrap/runtime.js +4 -5
  261. package/src/providers/manus/runtime.js +3 -3
  262. package/src/providers/mautic/runtime.js +3 -3
  263. package/src/providers/megaventory/runtime.js +3 -3
  264. package/src/providers/memberstack/runtime.js +2 -2
  265. package/src/providers/mendeley/executors.js +2 -3
  266. package/src/providers/mindbody/runtime.js +3 -3
  267. package/src/providers/minerstat/executors.js +3 -3
  268. package/src/providers/mintlify/runtime.js +3 -3
  269. package/src/providers/missive/executors.js +3 -5
  270. package/src/providers/mixpanel/executors.js +3 -3
  271. package/src/providers/mobile_text_alerts/runtime.js +3 -3
  272. package/src/providers/mocean/executors.js +3 -3
  273. package/src/providers/moco/executors.js +5 -5
  274. package/src/providers/moesif/runtime.js +4 -4
  275. package/src/providers/monday/runtime-common.js +3 -3
  276. package/src/providers/monica_crm/runtime.js +4 -4
  277. package/src/providers/moorcheh/runtime.js +3 -3
  278. package/src/providers/more_trees/runtime.d.ts +0 -1
  279. package/src/providers/more_trees/runtime.js +7 -8
  280. package/src/providers/moxie/runtime.js +2 -2
  281. package/src/providers/msg91/runtime.js +4 -4
  282. package/src/providers/mx/runtime.js +1 -1
  283. package/src/providers/needle/runtime.js +3 -4
  284. package/src/providers/netlify/runtime.js +2 -3
  285. package/src/providers/niftyimages/executors.js +2 -2
  286. package/src/providers/northbeam/runtime.js +1 -1
  287. package/src/providers/nozbe_teams/executors.js +4 -4
  288. package/src/providers/npm/runtime.js +4 -4
  289. package/src/providers/nusii_proposals/runtime.js +2 -2
  290. package/src/providers/ocr_web_service/executors.js +4 -4
  291. package/src/providers/octopus_deploy/executors.js +3 -3
  292. package/src/providers/oksign/runtime.js +3 -4
  293. package/src/providers/one_drive/executors.js +6 -6
  294. package/src/providers/one_password_events/runtime.js +1 -1
  295. package/src/providers/onfleet/runtime.js +3 -3
  296. package/src/providers/onlyoffice_docspace/runtime.js +4 -4
  297. package/src/providers/oomnitza/runtime.js +3 -4
  298. package/src/providers/otter_ai/executors.js +2 -2
  299. package/src/providers/oura/runtime.js +1 -1
  300. package/src/providers/paddle/executors.js +3 -3
  301. package/src/providers/pagerduty/runtime.js +2 -2
  302. package/src/providers/paradym/runtime.js +4 -4
  303. package/src/providers/parallel/runtime.js +3 -3
  304. package/src/providers/partner_stack_partner/runtime.js +1 -1
  305. package/src/providers/payrexx/runtime.js +5 -6
  306. package/src/providers/permit_io/runtime.js +2 -2
  307. package/src/providers/pinboard/executors.js +5 -6
  308. package/src/providers/pinpoint/runtime.js +2 -2
  309. package/src/providers/placid/runtime.js +3 -3
  310. package/src/providers/plain/runtime.js +5 -5
  311. package/src/providers/planetscale/runtime.js +2 -2
  312. package/src/providers/planhat/executors.js +6 -6
  313. package/src/providers/plausible_analytics/runtime.js +3 -3
  314. package/src/providers/posthog/runtime.js +3 -3
  315. package/src/providers/predis_ai/executors.js +3 -3
  316. package/src/providers/printavo/runtime.js +2 -2
  317. package/src/providers/prospeo/runtime.js +2 -3
  318. package/src/providers/provider-runtime.d.ts +13 -1
  319. package/src/providers/provider-runtime.js +25 -10
  320. package/src/providers/push_by_techulus/executors.js +3 -4
  321. package/src/providers/pushover/runtime.js +4 -5
  322. package/src/providers/pushsafer/runtime.js +4 -5
  323. package/src/providers/pylon/runtime.js +2 -2
  324. package/src/providers/qase/runtime.js +3 -3
  325. package/src/providers/qdrant/runtime.js +1 -1
  326. package/src/providers/qichacha/runtime.js +2 -2
  327. package/src/providers/qingflow/runtime.js +2 -2
  328. package/src/providers/quickchart/runtime.js +2 -2
  329. package/src/providers/quintadb/runtime.js +2 -2
  330. package/src/providers/quo/runtime.js +2 -2
  331. package/src/providers/rawg/runtime.js +4 -4
  332. package/src/providers/razorpay/runtime.js +4 -5
  333. package/src/providers/readme/runtime.js +6 -6
  334. package/src/providers/referralhero/runtime.js +3 -3
  335. package/src/providers/registry.generated.js +1 -0
  336. package/src/providers/render/executors.js +3 -3
  337. package/src/providers/respond_io/executors.js +3 -3
  338. package/src/providers/reversecontact/runtime.js +3 -3
  339. package/src/providers/ritekit/executors.js +2 -2
  340. package/src/providers/riveter/executors.js +2 -3
  341. package/src/providers/rocket_chat/executors.js +3 -4
  342. package/src/providers/rocket_reach/executors.js +3 -4
  343. package/src/providers/saucelabs/runtime.js +4 -4
  344. package/src/providers/scopus/runtime.js +3 -3
  345. package/src/providers/scrape_do/executors.js +2 -2
  346. package/src/providers/scraperapi/runtime.js +4 -4
  347. package/src/providers/scrapfly/executors.js +2 -2
  348. package/src/providers/scrapingant/executors.js +6 -7
  349. package/src/providers/scrapingbee/executors.js +3 -3
  350. package/src/providers/scrapingdog/executors.js +1 -1
  351. package/src/providers/screenshot_fyi/executors.js +3 -4
  352. package/src/providers/screenshotbase/runtime.js +3 -3
  353. package/src/providers/search_api/runtime.js +2 -2
  354. package/src/providers/securitytrails/executors.js +2 -2
  355. package/src/providers/semantic_scholar/executors.js +2 -2
  356. package/src/providers/sendbird/executors.js +2 -2
  357. package/src/providers/sendfox/executors.js +3 -3
  358. package/src/providers/sendgrid/executors.js +5 -5
  359. package/src/providers/sendmator/runtime.js +3 -4
  360. package/src/providers/seqera/runtime.js +3 -4
  361. package/src/providers/serveravatar/executors.js +3 -3
  362. package/src/providers/sheetdb/runtime.js +2 -2
  363. package/src/providers/short_menu/runtime.js +3 -3
  364. package/src/providers/shortcut/runtime.js +3 -3
  365. package/src/providers/shortpixel/runtime.js +2 -2
  366. package/src/providers/shotstack/runtime.js +4 -4
  367. package/src/providers/signpath/runtime.js +2 -2
  368. package/src/providers/signwell/runtime.js +5 -6
  369. package/src/providers/similarweb_digitalrank_api/runtime.js +3 -3
  370. package/src/providers/simla/runtime.js +5 -5
  371. package/src/providers/simplybook_me/executors.js +6 -6
  372. package/src/providers/sitespeakai/runtime.js +3 -3
  373. package/src/providers/slickdeals/runtime.js +2 -3
  374. package/src/providers/smartsuite/runtime.js +3 -3
  375. package/src/providers/sonarcloud/runtime.js +5 -5
  376. package/src/providers/sorftime/runtime.js +8 -8
  377. package/src/providers/spider/runtime.js +2 -2
  378. package/src/providers/splunk_http_event_collector/runtime.js +7 -8
  379. package/src/providers/sportsdata/runtime.js +4 -4
  380. package/src/providers/spyfu/runtime.js +4 -5
  381. package/src/providers/square/runtime.js +4 -4
  382. package/src/providers/stannp/runtime.js +2 -2
  383. package/src/providers/stripe/executors.js +2 -2
  384. package/src/providers/supermemory/runtime.js +3 -3
  385. package/src/providers/survey_monkey/runtime.js +3 -3
  386. package/src/providers/taiga/runtime.js +4 -4
  387. package/src/providers/talenox/executors.js +4 -4
  388. package/src/providers/tally/runtime.js +3 -3
  389. package/src/providers/tavily/runtime.js +3 -4
  390. package/src/providers/teamcamp/executors.js +2 -2
  391. package/src/providers/teamtailor/executors.js +2 -2
  392. package/src/providers/telegram/executors.js +6 -7
  393. package/src/providers/teltel/executors.js +2 -2
  394. package/src/providers/templated/executors.js +3 -3
  395. package/src/providers/tencent_docs/runtime.js +4 -4
  396. package/src/providers/tencent_maps/runtime.js +3 -3
  397. package/src/providers/textcortex/runtime.js +3 -3
  398. package/src/providers/the_cat_api/runtime.js +3 -3
  399. package/src/providers/the_colony/runtime.js +3 -3
  400. package/src/providers/the_odds_api/runtime.js +3 -4
  401. package/src/providers/the_official_board/runtime.js +4 -4
  402. package/src/providers/thehive/runtime.js +1 -1
  403. package/src/providers/tikhub/endpoint-catalog.js +2 -3
  404. package/src/providers/tiktok_business/runtime.js +2 -2
  405. package/src/providers/timecamp/runtime.js +2 -2
  406. package/src/providers/timelink/runtime.js +2 -2
  407. package/src/providers/totp/runtime.js +4 -5
  408. package/src/providers/trawlingweb/runtime.js +2 -2
  409. package/src/providers/trilium/runtime.js +2 -2
  410. package/src/providers/triple_whale/runtime.js +3 -3
  411. package/src/providers/truvera/runtime.js +2 -2
  412. package/src/providers/tuskr/runtime.js +2 -2
  413. package/src/providers/typebot/runtime.js +2 -2
  414. package/src/providers/typeform/runtime.js +2 -2
  415. package/src/providers/uptimerobot/executors.js +3 -4
  416. package/src/providers/v2ex/runtime.js +8 -9
  417. package/src/providers/valyu/runtime.js +3 -3
  418. package/src/providers/vapi/runtime.js +4 -4
  419. package/src/providers/vectorshift/runtime.js +3 -3
  420. package/src/providers/venafitlsprotectcloud/runtime.js +2 -3
  421. package/src/providers/venafitlsprotectdatacenter/runtime.js +2 -3
  422. package/src/providers/vida/runtime.js +4 -4
  423. package/src/providers/vonage/runtime.js +3 -3
  424. package/src/providers/walmart_marketplace/runtime.js +5 -5
  425. package/src/providers/weatherapi/executors.js +3 -4
  426. package/src/providers/web_of_science/runtime.js +4 -4
  427. package/src/providers/web_of_science_expanded/runtime.js +9 -9
  428. package/src/providers/webex/runtime.js +3 -3
  429. package/src/providers/webinarjam/runtime.js +4 -4
  430. package/src/providers/webscraping_ai/runtime.js +3 -3
  431. package/src/providers/webvizio/runtime.js +3 -4
  432. package/src/providers/wecom_bot/smart-runtime.js +4 -5
  433. package/src/providers/wecom_mcp/runtime.js +3 -4
  434. package/src/providers/wejam_ai/runtime.js +3 -3
  435. package/src/providers/wolfram_alpha_api/runtime.js +3 -3
  436. package/src/providers/woocommerce/runtime.js +1 -1
  437. package/src/providers/woodpecker_co/executors.js +3 -4
  438. package/src/providers/woot/runtime.js +6 -6
  439. package/src/providers/workable/runtime.js +3 -3
  440. package/src/providers/workday/runtime.js +4 -4
  441. package/src/providers/workiom/runtime.js +2 -2
  442. package/src/providers/workiz/runtime.js +2 -2
  443. package/src/providers/workpath/executors.js +3 -4
  444. package/src/providers/worksnaps/executors.js +2 -2
  445. package/src/providers/y_gy/runtime.js +2 -2
  446. package/src/providers/zenscrape/runtime.js +3 -3
  447. package/src/providers/zep/runtime.js +4 -4
  448. package/src/providers/zeplin/runtime.js +2 -2
  449. package/src/providers/zhihu/executors.js +6 -6
  450. package/src/providers/zylvie/runtime.js +4 -4
  451. package/src/saas/saas-cleanup-service.d.ts +2 -0
  452. package/src/saas/saas-cleanup-service.js +2 -1
  453. package/src/saas/saas-execution-service.d.ts +1 -1
  454. package/src/server/actions/action-runner.js +1 -1
  455. package/src/server/api/auth.js +3 -0
  456. package/src/server/api/connection-routes.js +1 -1
  457. package/src/server/api/console-catalog-routes.js +1 -1
  458. package/src/server/api/console-oauth-routes.d.ts +3 -1
  459. package/src/server/api/console-oauth-routes.js +22 -9
  460. package/src/server/api/oauth-completion-page.d.ts +57 -0
  461. package/src/server/api/oauth-completion-page.js +135 -10
  462. package/src/server/api/openapi.d.ts +5 -0
  463. package/src/server/api/openapi.js +62 -2
  464. package/src/server/api/runtime-api.d.ts +2 -1
  465. package/src/server/api/runtime-app-routes.js +1 -1
  466. package/src/server/api/runtime-execution-routes.js +2 -1
  467. package/src/server/connect-app.d.ts +4 -0
  468. package/src/server/connect-app.js +14 -1
  469. package/src/server/connect-server.d.ts +6 -0
  470. package/src/server/connect-server.js +114 -4
  471. package/src/server/connector-runtime.d.ts +6 -8
  472. package/src/server/connector-runtime.js +8 -28
  473. package/src/server/proxy/proxy-runner.js +1 -1
  474. package/src/server/slack-event-verification.d.ts +37 -0
  475. package/src/server/slack-event-verification.js +91 -0
  476. package/src/server/storage/connection-request-store.d.ts +1 -1
  477. package/src/server/storage/connection-store.d.ts +1 -1
  478. package/src/server/storage/postgres/runtime-store.d.ts +1 -1
  479. package/src/server/storage/runtime-database.d.ts +1 -1
  480. package/src/server/storage/saas-project-store.d.ts +1 -1
  481. package/src/triggers/maintenance.d.ts +2 -0
  482. package/src/triggers/maintenance.js +2 -1
  483. package/src/triggers/sources/slack-signature.d.ts +10 -0
  484. package/src/triggers/sources/slack-signature.js +13 -0
  485. package/src/triggers/sources/slack.js +9 -11
  486. package/src/triggers/trigger-runner.js +1 -1
@@ -11,6 +11,7 @@ import { readBoundedResponseBytes } from "../core/request.js";
11
11
  */
12
12
  export function createProviderFetch(options = {}) {
13
13
  return createGuardedFetch({
14
+ network: options.network,
14
15
  dispatchAttempt: async (attempt, signal, transport, revalidate) => {
15
16
  try {
16
17
  return await dispatchProviderHttpAttempt(attempt, signal, transport, revalidate);
@@ -155,7 +156,8 @@ const blockedProxyRequestHeaders = new Set([
155
156
  const defaultProviderProxyMaxResponseBytes = 20 * 1024 * 1024;
156
157
  export const defaultProviderJsonMaxResponseBytes = 20 * 1024 * 1024;
157
158
  const defaultProviderErrorMaxResponseBytes = 64 * 1024;
158
- const defaultProviderRequestTimeoutMs = 30_000;
159
+ /** Shared request budget for native AbortSignal and SDK timeout APIs. */
160
+ export const defaultProviderRequestTimeoutMs = 30_000;
159
161
  export function createProviderProxyUrl(baseUrl, endpointInput, queryInput, allowedOrigins) {
160
162
  const endpoint = normalizeProviderProxyEndpoint(endpointInput, allowedOrigins);
161
163
  const base = new URL(baseUrl.endsWith("/") ? baseUrl : `${baseUrl}/`);
@@ -932,6 +934,27 @@ export async function readTransitFileInput(input, context) {
932
934
  sizeBytes: stored.sizeBytes,
933
935
  };
934
936
  }
937
+ /**
938
+ * The action error code a provider request failure reports: the provider's own
939
+ * code when it chose one, else one inferred from the upstream status. A
940
+ * provider that needs to react to the classification, such as retrying a rate
941
+ * limit, reads it here instead of re-deriving it from the status.
942
+ */
943
+ export function providerRequestErrorCode(error) {
944
+ // `provider_error` is the generic fallback; a 429 is unambiguous, so refine it.
945
+ // A specific provider code (including one chosen for a 429) still wins.
946
+ return error.code === "provider_error" && error.status === 429
947
+ ? "rate_limited"
948
+ : (error.code ??
949
+ (error.status === 401 || error.status === 403
950
+ ? "authorization_failed"
951
+ : error.status === 429
952
+ ? "rate_limited"
953
+ : // A 3xx is an upstream redirect that `redirect: "manual"` surfaced unfollowed, not bad input.
954
+ error.status < 500 && (error.status < 300 || error.status >= 400)
955
+ ? "invalid_input"
956
+ : "provider_error"));
957
+ }
935
958
  /**
936
959
  * Map provider runtime failures to the standard action execution result.
937
960
  */
@@ -940,15 +963,7 @@ export function toProviderExecutionError(error, fallbackMessage) {
940
963
  return {
941
964
  ok: false,
942
965
  error: {
943
- code: error.code ??
944
- (error.status === 401 || error.status === 403
945
- ? "authorization_failed"
946
- : error.status === 429
947
- ? "rate_limited"
948
- : // A 3xx is an upstream redirect that `redirect: "manual"` surfaced unfollowed, not bad input.
949
- error.status < 500 && (error.status < 300 || error.status >= 400)
950
- ? "invalid_input"
951
- : "provider_error"),
966
+ code: providerRequestErrorCode(error),
952
967
  message: error.message,
953
968
  details: {
954
969
  status: error.status,
@@ -1,8 +1,7 @@
1
1
  import { compactObject, optionalBoolean, optionalRecord, optionalString, requiredString } from "../../core/cast.js";
2
- import { createProviderTimeout, defineProviderExecutors, defineProviderProxy, isAbortLikeError, providerUserAgent, ProviderRequestError, requireApiKeyCredential, } from "../provider-runtime.js";
2
+ import { createProviderTimeout, defineProviderExecutors, defineProviderProxy, isAbortLikeError, providerUserAgent, ProviderRequestError, requireApiKeyCredential, defaultProviderRequestTimeoutMs, } from "../provider-runtime.js";
3
3
  const service = "push_by_techulus";
4
4
  const pushByTechulusApiBaseUrl = "https://push.techulus.com/api/v1";
5
- const pushByTechulusDefaultRequestTimeoutMs = 30_000;
6
5
  export const pushByTechulusActionHandlers = {
7
6
  send_notification(input, context) {
8
7
  return sendPushByTechulusNotification("notify", input, context);
@@ -72,7 +71,7 @@ function buildPushByTechulusNotificationPayload(input) {
72
71
  });
73
72
  }
74
73
  async function requestPushByTechulusJson(input) {
75
- const timeout = createProviderTimeout(input.context.signal, pushByTechulusDefaultRequestTimeoutMs);
74
+ const timeout = createProviderTimeout(input.context.signal);
76
75
  let response;
77
76
  try {
78
77
  response = await input.context.fetcher(new URL(input.path, `${pushByTechulusApiBaseUrl}/`), {
@@ -89,7 +88,7 @@ async function requestPushByTechulusJson(input) {
89
88
  }
90
89
  catch (error) {
91
90
  if (timeout.didTimeout()) {
92
- throw new ProviderRequestError(504, `push_by_techulus request timed out after ${pushByTechulusDefaultRequestTimeoutMs}ms`);
91
+ throw new ProviderRequestError(504, `push_by_techulus request timed out after ${defaultProviderRequestTimeoutMs}ms`);
93
92
  }
94
93
  if (isAbortLikeError(error)) {
95
94
  throw new ProviderRequestError(502, "push_by_techulus request aborted");
@@ -1,13 +1,12 @@
1
1
  import { Buffer } from "node:buffer";
2
2
  import { createHash } from "node:crypto";
3
3
  import { compactObject, optionalString, requiredString } from "../../core/cast.js";
4
- import { defineApiKeyProviderExecutors, mapProviderActionSources, ProviderRequestError, providerUserAgent, readTransitFileInput, providerInputError, providerResponseError, } from "../provider-runtime.js";
4
+ import { defineApiKeyProviderExecutors, mapProviderActionSources, ProviderRequestError, providerUserAgent, readTransitFileInput, providerInputError, providerResponseError, defaultProviderRequestTimeoutMs, } from "../provider-runtime.js";
5
5
  const pushoverApiBaseUrl = "https://api.pushover.net";
6
6
  export const pushoverVersionedApiBaseUrl = `${pushoverApiBaseUrl}/1`;
7
7
  const pushoverIconBaseUrl = `${pushoverApiBaseUrl}/icons`;
8
8
  const pushoverRealtimeUrl = "wss://client.pushover.net/push";
9
9
  const pushoverUserAgent = providerUserAgent;
10
- const pushoverDefaultTimeoutMs = 30_000;
11
10
  const pushoverDefaultRealtimeTimeoutSeconds = 60;
12
11
  const pushoverMaxRealtimeTimeoutSeconds = 300;
13
12
  const pushoverMaxAttachmentBytes = 5 * 1024 * 1024;
@@ -288,7 +287,7 @@ async function validateAndStoreTeamToken(input, fetcher) {
288
287
  async function getPushoverAppIconImage(input, fetcher) {
289
288
  const parsed = input.input;
290
289
  const iconUrl = `${pushoverIconBaseUrl}/${encodeURIComponent(parsed.icon)}.png`;
291
- const timeout = createTimeoutSignal({ timeoutMs: pushoverDefaultTimeoutMs });
290
+ const timeout = createTimeoutSignal({ timeoutMs: defaultProviderRequestTimeoutMs });
292
291
  try {
293
292
  const response = await fetcher(iconUrl, {
294
293
  method: "GET",
@@ -792,7 +791,7 @@ async function requestPushoverJson(input) {
792
791
  }
793
792
  url.searchParams.set(key, value);
794
793
  }
795
- const timeout = createTimeoutSignal({ timeoutMs: input.timeoutMs ?? pushoverDefaultTimeoutMs });
794
+ const timeout = createTimeoutSignal({ timeoutMs: input.timeoutMs ?? defaultProviderRequestTimeoutMs });
796
795
  try {
797
796
  const response = await input.fetcher(url.toString(), {
798
797
  method: input.method ?? "GET",
@@ -823,7 +822,7 @@ async function requestPushoverJson(input) {
823
822
  throw error;
824
823
  }
825
824
  if (timeout.didTimeout) {
826
- throw new ProviderRequestError(504, `pushover request timed out after ${(input.timeoutMs ?? pushoverDefaultTimeoutMs) / 1000} seconds`);
825
+ throw new ProviderRequestError(504, `pushover request timed out after ${(input.timeoutMs ?? defaultProviderRequestTimeoutMs) / 1000} seconds`);
827
826
  }
828
827
  throw providerResponseError(error instanceof Error ? error.message : "pushover request failed");
829
828
  }
@@ -1,7 +1,6 @@
1
1
  import { optionalInteger, optionalRecord, optionalString, requiredString } from "../../core/cast.js";
2
- import { defineProviderExecutors, providerInputError, ProviderRequestError, providerUserAgent, requireApiKeyCredential, } from "../provider-runtime.js";
2
+ import { defineProviderExecutors, providerInputError, ProviderRequestError, providerUserAgent, requireApiKeyCredential, providerResponseError, defaultProviderRequestTimeoutMs, } from "../provider-runtime.js";
3
3
  export const pushsaferApiBaseUrl = "https://www.pushsafer.com";
4
- const pushsaferDefaultRequestTimeoutMs = 30_000;
5
4
  export async function validatePushsaferCredential(input, fetcher, signal) {
6
5
  const apiKey = requiredString(input.apiKey, "apiKey", providerInputError);
7
6
  const username = requireNonEmptyString(input.username, "username");
@@ -139,7 +138,7 @@ async function requestPushsaferJson(input) {
139
138
  "user-agent": providerUserAgent,
140
139
  },
141
140
  body: params,
142
- signal: input.signal ?? AbortSignal.timeout(pushsaferDefaultRequestTimeoutMs),
141
+ signal: input.signal ?? AbortSignal.timeout(defaultProviderRequestTimeoutMs),
143
142
  });
144
143
  const payload = await readPayload(response);
145
144
  if (response.status !== 200) {
@@ -173,7 +172,7 @@ function requireSuccessPayload(payload) {
173
172
  }
174
173
  if (record.status !== 1) {
175
174
  const message = extractErrorMessage(record) ?? "Pushsafer rejected the request";
176
- throw new ProviderRequestError(502, message);
175
+ throw providerResponseError(message);
177
176
  }
178
177
  return record;
179
178
  }
@@ -185,7 +184,7 @@ function createPushsaferError(status, payload, phase) {
185
184
  if (status === 250 || status === 255 || status === 401 || status === 403) {
186
185
  return new ProviderRequestError(phase === "validate" ? 400 : 401, message);
187
186
  }
188
- return new ProviderRequestError(502, message);
187
+ return providerResponseError(message);
189
188
  }
190
189
  function extractErrorMessage(payload) {
191
190
  const record = optionalRecord(payload);
@@ -1,5 +1,5 @@
1
1
  import { compactObject, optionalRecord, optionalString, requiredString } from "../../core/cast.js";
2
- import { defineApiKeyProviderExecutors, providerUserAgent, ProviderRequestError } from "../provider-runtime.js";
2
+ import { defineApiKeyProviderExecutors, providerUserAgent, ProviderRequestError, providerInputError, } from "../provider-runtime.js";
3
3
  export const pylonApiBaseUrl = "https://api.usepylon.com";
4
4
  const listIssuesMaxRangeMs = 30 * 24 * 60 * 60 * 1000;
5
5
  export const pylonActionHandlers = {
@@ -334,7 +334,7 @@ async function readPylonPayload(response) {
334
334
  function createPylonError(status, payload, phase) {
335
335
  const message = readPylonErrorMessage(payload) ?? `Pylon request failed with status ${status}`;
336
336
  if (phase === "validate" && (status === 401 || status === 403)) {
337
- return new ProviderRequestError(400, message);
337
+ return providerInputError(message);
338
338
  }
339
339
  if (status === 401 || status === 403) {
340
340
  return new ProviderRequestError(401, message);
@@ -1,5 +1,5 @@
1
1
  import { compactObject, optionalBoolean, optionalInteger as asOptionalInteger, optionalRecord as asOptionalObject, optionalString as asOptionalString, } from "../../core/cast.js";
2
- import { providerUserAgent, ProviderRequestError } from "../provider-runtime.js";
2
+ import { providerUserAgent, ProviderRequestError, providerInputError, providerResponseError, } from "../provider-runtime.js";
3
3
  export const qaseApiBaseUrl = "https://api.qase.io/v1";
4
4
  export const qaseActionHandlers = {
5
5
  list_projects: handler("list_projects"),
@@ -188,9 +188,9 @@ function createQaseError(response, payload, phase) {
188
188
  return new ProviderRequestError(phase === "validate" ? 400 : 401, message);
189
189
  }
190
190
  if (400 <= response.status && response.status < 500) {
191
- return new ProviderRequestError(400, message);
191
+ return providerInputError(message);
192
192
  }
193
- return new ProviderRequestError(502, message);
193
+ return providerResponseError(message);
194
194
  }
195
195
  function readPage(payload, entity) {
196
196
  const result = readResultObject(payload, entity);
@@ -193,7 +193,7 @@ function createQdrantError(status, payload, phase) {
193
193
  optionalString(record?.message) ??
194
194
  `Qdrant request failed with status ${status}`;
195
195
  if ((status === 401 || status === 403) && phase === "validate") {
196
- return new ProviderRequestError(400, message);
196
+ return providerInputError(message);
197
197
  }
198
198
  return new ProviderRequestError(status >= 500 ? 502 : status || 502, message);
199
199
  }
@@ -1,6 +1,6 @@
1
1
  import { createHash } from "node:crypto";
2
2
  import { optionalInteger, optionalRecord, optionalString } from "../../core/cast.js";
3
- import { createProviderTimeout, providerUserAgent, ProviderRequestError } from "../provider-runtime.js";
3
+ import { createProviderTimeout, providerUserAgent, ProviderRequestError, providerResponseError, } from "../provider-runtime.js";
4
4
  export const qichachaApiBaseUrl = "https://api.qichacha.com";
5
5
  const actionPathByName = {
6
6
  list_company_shareholders: "/ECIPartner/GetList",
@@ -112,7 +112,7 @@ function createQichachaError(httpStatus, payload) {
112
112
  if (httpStatus == 429 || ["频率", "限流", "too many"].some((value) => normalized.includes(value))) {
113
113
  return new ProviderRequestError(429, message);
114
114
  }
115
- return new ProviderRequestError(502, message);
115
+ return providerResponseError(message);
116
116
  }
117
117
  function readResultRecords(payload) {
118
118
  if (Array.isArray(payload.Result))
@@ -1,5 +1,5 @@
1
1
  import { compactObject, optionalBoolean, optionalInteger, optionalRecord, optionalString } from "../../core/cast.js";
2
- import { createProviderTimeout, ProviderRequestError, providerUserAgent } from "../provider-runtime.js";
2
+ import { createProviderTimeout, ProviderRequestError, providerUserAgent, providerInputError, } from "../provider-runtime.js";
3
3
  export const qingflowApiBaseUrl = "https://api.qingflow.com";
4
4
  const qingflowValidationPath = "/app";
5
5
  export const qingflowActionHandlers = {
@@ -500,7 +500,7 @@ function mapQingflowApiError(errorCode, envelope, phase) {
500
500
  if (qingflowPermissionErrorCodes.has(errorCode)) {
501
501
  return new ProviderRequestError(403, message);
502
502
  }
503
- return new ProviderRequestError(400, message);
503
+ return providerInputError(message);
504
504
  }
505
505
  const qingflowPermissionErrorCodes = new Set([40002, 40064, 40065, 40066, 40069, 40095]);
506
506
  const qingflowAuditResultByDecision = {
@@ -1,5 +1,5 @@
1
1
  import { compactObject } from "../../core/cast.js";
2
- import { defineProviderExecutors, providerUserAgent, ProviderRequestError } from "../provider-runtime.js";
2
+ import { defineProviderExecutors, providerUserAgent, ProviderRequestError, providerInputError, } from "../provider-runtime.js";
3
3
  export const quickchartBaseUrl = "https://quickchart.io";
4
4
  export const quickchartActionHandlers = {
5
5
  async build_chart_url(input) {
@@ -118,7 +118,7 @@ function createQuickchartError(response, payload) {
118
118
  return new ProviderRequestError(429, message);
119
119
  }
120
120
  if ([400, 404, 422].includes(response.status)) {
121
- return new ProviderRequestError(400, message);
121
+ return providerInputError(message);
122
122
  }
123
123
  return new ProviderRequestError(response.status >= 500 ? 502 : response.status || 502, message);
124
124
  }
@@ -211,12 +211,12 @@ function createQuintaDbError(status, payload, phase) {
211
211
  }
212
212
  if (status === 401 || status === 403) {
213
213
  if (phase === "validate") {
214
- return new ProviderRequestError(400, message);
214
+ return providerInputError(message);
215
215
  }
216
216
  return new ProviderRequestError(status, message);
217
217
  }
218
218
  if (status === 400 || status === 404 || status === 422) {
219
- return new ProviderRequestError(400, message);
219
+ return providerInputError(message);
220
220
  }
221
221
  return new ProviderRequestError(status || 500, message);
222
222
  }
@@ -1,6 +1,6 @@
1
1
  import { createHash } from "node:crypto";
2
2
  import { compactObject, requiredString } from "../../core/cast.js";
3
- import { defineApiKeyProviderExecutors, providerUserAgent, ProviderRequestError } from "../provider-runtime.js";
3
+ import { defineApiKeyProviderExecutors, providerUserAgent, ProviderRequestError, providerInputError, } from "../provider-runtime.js";
4
4
  export const quoApiBaseUrl = "https://api.openphone.com";
5
5
  export const quoActionHandlers = {
6
6
  list_phone_numbers(input, context) {
@@ -166,7 +166,7 @@ function normalizeQuoPayload(payload) {
166
166
  function createQuoError(status, payload) {
167
167
  const message = extractErrorMessage(payload) ?? `Quo request failed with ${status || 500}`;
168
168
  if (status === 400 || status === 401 || status === 404) {
169
- return new ProviderRequestError(400, message);
169
+ return providerInputError(message);
170
170
  }
171
171
  if (status === 402 || status === 403) {
172
172
  return new ProviderRequestError(status, message);
@@ -1,5 +1,5 @@
1
1
  import { compactObject, optionalRawString } from "../../core/cast.js";
2
- import { ProviderRequestError, providerUserAgent } from "../provider-runtime.js";
2
+ import { ProviderRequestError, providerUserAgent, providerInputError, providerResponseError, } from "../provider-runtime.js";
3
3
  export const rawgApiBaseUrl = "https://api.rawg.io/api";
4
4
  export function rawgRequestUrl(path, apiKey, params) {
5
5
  const normalizedPath = path.startsWith("/") ? path.slice(1) : path;
@@ -204,7 +204,7 @@ function buildRawgError(status, payload, phase) {
204
204
  const message = optionalRawString(payloadObject?.error) ?? defaultErrorMessage(status);
205
205
  if (status === 401 || status === 403) {
206
206
  if (phase === "validate") {
207
- return new ProviderRequestError(400, message);
207
+ return providerInputError(message);
208
208
  }
209
209
  return new ProviderRequestError(401, message);
210
210
  }
@@ -212,9 +212,9 @@ function buildRawgError(status, payload, phase) {
212
212
  return new ProviderRequestError(429, message);
213
213
  }
214
214
  if (status >= 400 && status < 500) {
215
- return new ProviderRequestError(400, message);
215
+ return providerInputError(message);
216
216
  }
217
- return new ProviderRequestError(502, message);
217
+ return providerResponseError(message);
218
218
  }
219
219
  function defaultErrorMessage(status) {
220
220
  if (status === 429) {
@@ -1,9 +1,8 @@
1
1
  import { Buffer } from "node:buffer";
2
2
  import { compactObject, optionalBooleanOrNull, optionalInteger, optionalRecord, optionalString, } from "../../core/cast.js";
3
- import { providerFetch, ProviderRequestError, providerUserAgent } from "../provider-runtime.js";
3
+ import { providerFetch, ProviderRequestError, providerUserAgent, providerInputError, defaultProviderRequestTimeoutMs, } from "../provider-runtime.js";
4
4
  export const razorpayApiBaseUrl = "https://api.razorpay.com/v1";
5
5
  const razorpayValidationPath = "/payments";
6
- const razorpayDefaultRequestTimeoutMs = 30_000;
7
6
  const asOptionalInteger = optionalInteger;
8
7
  const asOptionalString = optionalString;
9
8
  const asOptionalObject = optionalRecord;
@@ -201,7 +200,7 @@ async function requestRazorpayJson(input) {
201
200
  }
202
201
  }
203
202
  const timeout = createTimeoutSignal({
204
- timeoutMs: razorpayDefaultRequestTimeoutMs,
203
+ timeoutMs: defaultProviderRequestTimeoutMs,
205
204
  });
206
205
  try {
207
206
  const response = await input.fetcher(url.toString(), {
@@ -249,13 +248,13 @@ function createRazorpayError(status, payload, phase) {
249
248
  return new ProviderRequestError(429, message);
250
249
  }
251
250
  if (phase === "validate" && [400, 401, 403].includes(status)) {
252
- return new ProviderRequestError(400, message);
251
+ return providerInputError(message);
253
252
  }
254
253
  if (phase === "execute" && [401, 403].includes(status)) {
255
254
  return new ProviderRequestError(401, message);
256
255
  }
257
256
  if (phase === "execute" && [400, 404, 409, 422].includes(status)) {
258
- return new ProviderRequestError(400, message);
257
+ return providerInputError(message);
259
258
  }
260
259
  return new ProviderRequestError(500, message, status || 500);
261
260
  }
@@ -1,9 +1,9 @@
1
1
  import { compactObject, optionalRecord, requiredRecord } from "../../core/cast.js";
2
- import { ProviderRequestError, providerUserAgent } from "../provider-runtime.js";
2
+ import { ProviderRequestError, providerUserAgent, providerInputError, providerResponseError, } from "../provider-runtime.js";
3
3
  export const readmeApiBaseUrl = "https://dash.readme.com/api/v1";
4
4
  const validationPath = "/";
5
5
  function asObject(value) {
6
- return requiredRecord(value, "ReadMe payload", (message) => new ProviderRequestError(502, message));
6
+ return requiredRecord(value, "ReadMe payload", providerResponseError);
7
7
  }
8
8
  const asOptionalObject = optionalRecord;
9
9
  export const readmeActionHandlers = {
@@ -476,7 +476,7 @@ async function buildReadMeError(response, mode) {
476
476
  const message = await readReadMeErrorMessage(response, status);
477
477
  if (status === 401 || status === 403) {
478
478
  if (mode === "validate") {
479
- return new ProviderRequestError(400, message);
479
+ return providerInputError(message);
480
480
  }
481
481
  return new ProviderRequestError(401, message);
482
482
  }
@@ -484,9 +484,9 @@ async function buildReadMeError(response, mode) {
484
484
  return new ProviderRequestError(404, message);
485
485
  }
486
486
  if (status === 400 || status === 422) {
487
- return new ProviderRequestError(400, message);
487
+ return providerInputError(message);
488
488
  }
489
- return new ProviderRequestError(502, message);
489
+ return providerResponseError(message);
490
490
  }
491
491
  async function readReadMeErrorMessage(response, status) {
492
492
  const contentType = response.headers.get("content-type") ?? "";
@@ -511,5 +511,5 @@ function buildReadMeTransportError(error) {
511
511
  return error;
512
512
  }
513
513
  const message = error instanceof Error ? error.message : "ReadMe request failed";
514
- return new ProviderRequestError(502, message);
514
+ return providerResponseError(message);
515
515
  }
@@ -1,5 +1,5 @@
1
1
  import { optionalRecord, optionalString } from "../../core/cast.js";
2
- import { createProviderTimeout, providerUserAgent, ProviderRequestError } from "../provider-runtime.js";
2
+ import { createProviderTimeout, providerUserAgent, ProviderRequestError, providerInputError, providerResponseError, } from "../provider-runtime.js";
3
3
  export const referralheroApiBaseUrl = "https://app.referralhero.com/api/v2";
4
4
  const keys = {
5
5
  page: "page",
@@ -170,8 +170,8 @@ function mapError(status, payload, phase) {
170
170
  if (["no_token", "invalid_token", "inactive_account"].includes(code ?? "") || status === 401 || status === 403)
171
171
  return new ProviderRequestError(phase === "validate" ? 400 : status, message);
172
172
  if (status < 500 || payload.status === "error")
173
- return new ProviderRequestError(400, message);
174
- return new ProviderRequestError(502, message);
173
+ return providerInputError(message);
174
+ return providerResponseError(message);
175
175
  }
176
176
  function requiredObject(value, name) {
177
177
  const result = optionalRecord(value);
@@ -52,6 +52,7 @@ export const executorModules = {
52
52
  aliyun_oss: () => import("./aliyun_oss/executors.js"),
53
53
  aliyun_sls: () => import("./aliyun_sls/executors.js"),
54
54
  aliyun_sts: () => import("./aliyun_sts/executors.js"),
55
+ allratestoday: () => import("./allratestoday/executors.js"),
55
56
  alpaca: () => import("./alpaca/executors.js"),
56
57
  alpha_vantage: () => import("./alpha_vantage/executors.js"),
57
58
  alt_text_ai: () => import("./alt_text_ai/executors.js"),
@@ -1,5 +1,5 @@
1
1
  import { compactObject, optionalBoolean, optionalInteger, optionalRecord, optionalString } from "../../core/cast.js";
2
- import { defineApiKeyProviderExecutors, defineProviderProxy, providerUserAgent, ProviderRequestError, } from "../provider-runtime.js";
2
+ import { defineApiKeyProviderExecutors, defineProviderProxy, providerUserAgent, ProviderRequestError, providerInputError, } from "../provider-runtime.js";
3
3
  const service = "render";
4
4
  const renderApiBaseUrl = "https://api.render.com/v1";
5
5
  export const renderActionHandlers = {
@@ -272,10 +272,10 @@ async function toRenderError(response, phase, notFoundAsInvalidInput = false) {
272
272
  return new ProviderRequestError(401, message);
273
273
  }
274
274
  if (response.status === 404 && notFoundAsInvalidInput) {
275
- return new ProviderRequestError(400, message);
275
+ return providerInputError(message);
276
276
  }
277
277
  if (response.status === 400) {
278
- return new ProviderRequestError(400, message);
278
+ return providerInputError(message);
279
279
  }
280
280
  if (response.status === 429) {
281
281
  return new ProviderRequestError(429, message);
@@ -1,6 +1,6 @@
1
1
  import { createHash } from "node:crypto";
2
2
  import { compactObject, optionalRecord, optionalString, requiredString } from "../../core/cast.js";
3
- import { createProviderTimeout, defineApiKeyProviderExecutors, defineProviderProxy, providerUserAgent, ProviderRequestError, readProviderTextBody, } from "../provider-runtime.js";
3
+ import { createProviderTimeout, defineApiKeyProviderExecutors, defineProviderProxy, providerUserAgent, ProviderRequestError, readProviderTextBody, providerInputError, } from "../provider-runtime.js";
4
4
  const service = "respond_io";
5
5
  const apiBaseUrl = "https://api.respond.io/v2";
6
6
  const maxResponseBytes = 10 * 1024 * 1024;
@@ -272,7 +272,7 @@ function readTags(value) {
272
272
  function trimInputString(value, fieldName) {
273
273
  return requiredString(value, fieldName, (message) => {
274
274
  const normalized = message.endsWith(".") ? message.slice(0, -1) : message;
275
- return new ProviderRequestError(400, normalized);
275
+ return providerInputError(normalized);
276
276
  });
277
277
  }
278
278
  function optionalTrimmedString(value) {
@@ -308,7 +308,7 @@ function mapHttpError(status, message, phase) {
308
308
  return new ProviderRequestError(429, message);
309
309
  }
310
310
  if (status === 400 || status === 404 || status === 422) {
311
- return new ProviderRequestError(400, message);
311
+ return providerInputError(message);
312
312
  }
313
313
  return new ProviderRequestError(status >= 500 ? 502 : status, message);
314
314
  }
@@ -1,5 +1,5 @@
1
1
  import { requiredString } from "../../core/cast.js";
2
- import { ProviderRequestError, providerUserAgent } from "../provider-runtime.js";
2
+ import { ProviderRequestError, providerUserAgent, providerInputError, providerResponseError, } from "../provider-runtime.js";
3
3
  export const reversecontactApiBaseUrl = "https://api.reversecontact.com";
4
4
  const usagePath = "/v2/usage";
5
5
  const personEnrichmentPath = "/v2/enrich/persons";
@@ -101,7 +101,7 @@ function mapReversecontactError(status, message) {
101
101
  return new ProviderRequestError(429, message);
102
102
  }
103
103
  if (status >= 400 && status < 500) {
104
- return new ProviderRequestError(400, message);
104
+ return providerInputError(message);
105
105
  }
106
- return new ProviderRequestError(502, message);
106
+ return providerResponseError(message);
107
107
  }
@@ -1,5 +1,5 @@
1
1
  import { optionalBoolean, optionalInteger, optionalNumber, optionalRecord, optionalString } from "../../core/cast.js";
2
- import { createProviderTimeout, defineApiKeyProviderExecutors, defineProviderProxy, providerUserAgent, ProviderRequestError, readProviderTextBody, requiredInputString, } from "../provider-runtime.js";
2
+ import { createProviderTimeout, defineApiKeyProviderExecutors, defineProviderProxy, providerUserAgent, ProviderRequestError, readProviderTextBody, requiredInputString, providerInputError, } from "../provider-runtime.js";
3
3
  const service = "ritekit";
4
4
  const apiBaseUrl = "https://api.ritekit.com";
5
5
  const maxResponseBytes = 10 * 1024 * 1024;
@@ -145,7 +145,7 @@ function createError(status, payload, phase) {
145
145
  if (effectiveStatus === 429)
146
146
  return new ProviderRequestError(429, message);
147
147
  if (phase === "validate" && effectiveStatus >= 400 && effectiveStatus < 500)
148
- return new ProviderRequestError(400, message);
148
+ return providerInputError(message);
149
149
  if (effectiveStatus === 401 || effectiveStatus === 403)
150
150
  return new ProviderRequestError(effectiveStatus, message);
151
151
  if (effectiveStatus >= 400 && effectiveStatus < 500)
@@ -1,9 +1,8 @@
1
1
  import { compactObject, nullableString, optionalNumber, optionalRecord, optionalString, requiredRecord, requiredString, } from "../../core/cast.js";
2
- import { defineApiKeyProviderExecutors, defineProviderProxy, ProviderRequestError, providerUserAgent, } from "../provider-runtime.js";
2
+ import { defineApiKeyProviderExecutors, defineProviderProxy, ProviderRequestError, providerUserAgent, defaultProviderRequestTimeoutMs, } from "../provider-runtime.js";
3
3
  const service = "riveter";
4
4
  const riveterApiBaseUrl = "https://api.riveterhq.com/v1";
5
5
  const validationPath = "/account";
6
- const requestTimeoutMs = 30_000;
7
6
  export const proxy = defineProviderProxy({
8
7
  service,
9
8
  baseUrl: riveterApiBaseUrl,
@@ -73,7 +72,7 @@ export const credentialValidators = {
73
72
  };
74
73
  async function requestRiveterObject(input) {
75
74
  const controller = new AbortController();
76
- const timeout = setTimeout(() => controller.abort(), requestTimeoutMs);
75
+ const timeout = setTimeout(() => controller.abort(), defaultProviderRequestTimeoutMs);
77
76
  const signal = input.context.signal ?? controller.signal;
78
77
  try {
79
78
  const response = await input.context.fetcher(buildRiveterUrl(input.path), {
@@ -1,8 +1,7 @@
1
1
  import { compactObject, optionalRecord, optionalString } from "../../core/cast.js";
2
2
  import { assertPublicHttpUrl, isPrivateNetworkAccessAllowed } from "../../core/request.js";
3
- import { createProviderFetch, defineProviderExecutors, defineProviderProxy, ProviderRequestError, providerUserAgent, requireCustomCredential, } from "../provider-runtime.js";
3
+ import { createProviderFetch, defineProviderExecutors, defineProviderProxy, ProviderRequestError, providerUserAgent, requireCustomCredential, defaultProviderRequestTimeoutMs, } from "../provider-runtime.js";
4
4
  const service = "rocket_chat";
5
- const requestTimeoutMs = 30_000;
6
5
  const validationPath = "/me";
7
6
  export const rocketChatActionHandlers = {
8
7
  async get_me(_input, context) {
@@ -195,8 +194,8 @@ async function requestRocketChatObject(options) {
195
194
  }
196
195
  async function requestRocketChat(options) {
197
196
  const signal = options.signal
198
- ? AbortSignal.any([options.signal, AbortSignal.timeout(requestTimeoutMs)])
199
- : AbortSignal.timeout(requestTimeoutMs);
197
+ ? AbortSignal.any([options.signal, AbortSignal.timeout(defaultProviderRequestTimeoutMs)])
198
+ : AbortSignal.timeout(defaultProviderRequestTimeoutMs);
200
199
  const headers = new Headers({
201
200
  accept: "application/json",
202
201
  "user-agent": providerUserAgent,
@@ -1,8 +1,7 @@
1
1
  import { compactObject, nullableString, optionalNumber, optionalRecord, optionalString, requiredRecord, requiredString, } from "../../core/cast.js";
2
- import { defineApiKeyProviderExecutors, defineProviderProxy, ProviderRequestError, providerUserAgent, } from "../provider-runtime.js";
2
+ import { defineApiKeyProviderExecutors, defineProviderProxy, ProviderRequestError, providerUserAgent, defaultProviderRequestTimeoutMs, } from "../provider-runtime.js";
3
3
  const service = "rocket_reach";
4
4
  const rocketReachApiBaseUrl = "https://api.rocketreach.co/api/v2";
5
- const requestTimeoutMs = 30_000;
6
5
  export const rocketReachActionHandlers = {
7
6
  get_account(_input, context) {
8
7
  return getAccount(context);
@@ -272,7 +271,7 @@ async function requestRocketReachJson(input) {
272
271
  const timeout = setTimeout(() => {
273
272
  timedOut = true;
274
273
  controller.abort();
275
- }, requestTimeoutMs);
274
+ }, defaultProviderRequestTimeoutMs);
276
275
  const signal = input.signal ?? controller.signal;
277
276
  try {
278
277
  const response = await input.fetcher(buildRocketReachUrl(input.path, input.query ?? {}), {
@@ -293,7 +292,7 @@ async function requestRocketReachJson(input) {
293
292
  }
294
293
  catch (error) {
295
294
  if (timedOut && error instanceof Error && (error.name === "AbortError" || error.name === "TimeoutError")) {
296
- throw new ProviderRequestError(502, `rocket_reach ${input.path} request timed out after ${Math.ceil(requestTimeoutMs / 1000)} seconds`);
295
+ throw new ProviderRequestError(502, `rocket_reach ${input.path} request timed out after ${Math.ceil(defaultProviderRequestTimeoutMs / 1000)} seconds`);
297
296
  }
298
297
  if (error instanceof ProviderRequestError) {
299
298
  throw error;
@@ -1,9 +1,9 @@
1
1
  import { Buffer } from "node:buffer";
2
2
  import { compactObject, optionalBoolean, optionalInteger, optionalRecord, optionalString, requiredString, } from "../../core/cast.js";
3
- import { createProviderTimeout, providerUserAgent, ProviderRequestError } from "../provider-runtime.js";
3
+ import { createProviderTimeout, providerUserAgent, ProviderRequestError, providerInputError, providerResponseError, } from "../provider-runtime.js";
4
4
  const saucelabsDataCenters = ["us-west-1", "us-east-4", "eu-central-1"];
5
5
  export function resolveSaucelabsCredential(input) {
6
- const apiKey = requiredString(input.apiKey, "apiKey", (message) => new ProviderRequestError(400, message));
6
+ const apiKey = requiredString(input.apiKey, "apiKey", providerInputError);
7
7
  const username = requireString(input.username, "username");
8
8
  const dataCenter = requireString(input.dataCenter, "dataCenter");
9
9
  if (!saucelabsDataCenters.includes(dataCenter)) {
@@ -224,8 +224,8 @@ function createSaucelabsError(response, payload, phase) {
224
224
  if (response.status === 429)
225
225
  return new ProviderRequestError(429, message);
226
226
  if (response.status >= 400 && response.status < 500)
227
- return new ProviderRequestError(400, message);
228
- return new ProviderRequestError(502, message);
227
+ return providerInputError(message);
228
+ return providerResponseError(message);
229
229
  }
230
230
  function stringifyInteger(value) {
231
231
  const integer = optionalInteger(value);