@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
@@ -1,5 +1,5 @@
1
1
  import { compactObject, looseArray, optionalRecord, optionalString } from "../../core/cast.js";
2
- import { ProviderRequestError, providerUserAgent } from "../provider-runtime.js";
2
+ import { ProviderRequestError, providerUserAgent, providerInputError } from "../provider-runtime.js";
3
3
  export const valyuApiBaseUrl = "https://api.valyu.ai";
4
4
  export const valyuActionHandlers = {
5
5
  async search(input, context) {
@@ -108,11 +108,11 @@ function createValyuError(response, payload, phase) {
108
108
  if (response.status === 429)
109
109
  return new ProviderRequestError(429, message);
110
110
  if (phase === "validate" && (response.status === 401 || response.status === 403))
111
- return new ProviderRequestError(400, message);
111
+ return providerInputError(message);
112
112
  if (phase === "execute" && response.status === 401)
113
113
  return new ProviderRequestError(401, message);
114
114
  if (response.status === 400 || response.status === 422)
115
- return new ProviderRequestError(400, message);
115
+ return providerInputError(message);
116
116
  if (response.status === 402 || response.status === 403)
117
117
  return new ProviderRequestError(response.status, message);
118
118
  return new ProviderRequestError(response.status || 502, message);
@@ -1,6 +1,6 @@
1
1
  import { base64Bytes, compactObject, optionalBoolean, optionalInteger, optionalNumber, optionalRecord, } from "../../core/cast.js";
2
2
  import { assertPublicHttpUrl } from "../../core/request.js";
3
- import { mapProviderActionSources, ProviderRequestError, providerUserAgent } from "../provider-runtime.js";
3
+ import { mapProviderActionSources, ProviderRequestError, providerUserAgent, providerInputError, } from "../provider-runtime.js";
4
4
  export const vapiApiBaseUrl = "https://api.vapi.ai";
5
5
  const vapiTimestampAliasMap = {
6
6
  created_at_ge: "createdAtGe",
@@ -330,7 +330,7 @@ async function resolveVapiUploadSource(input, context) {
330
330
  if (fileUrl) {
331
331
  const url = assertPublicHttpUrl(fileUrl, {
332
332
  fieldName: "file.url",
333
- createError: (message) => new ProviderRequestError(400, message),
333
+ createError: providerInputError,
334
334
  });
335
335
  const response = await context.fetcher(url, { signal: context.signal });
336
336
  if (!response.ok) {
@@ -343,7 +343,7 @@ async function resolveVapiUploadSource(input, context) {
343
343
  };
344
344
  }
345
345
  try {
346
- const bytes = base64Bytes(contentBase64, "file.contentBase64", (message) => new ProviderRequestError(400, message));
346
+ const bytes = base64Bytes(contentBase64, "file.contentBase64", providerInputError);
347
347
  return {
348
348
  bytes: bytes.buffer,
349
349
  fileName,
@@ -395,7 +395,7 @@ async function normalizeVapiError(response, mode) {
395
395
  return new ProviderRequestError(mode === "validate" ? 400 : 401, message);
396
396
  }
397
397
  if (response.status === 400 || response.status === 404 || response.status === 422) {
398
- return new ProviderRequestError(400, message);
398
+ return providerInputError(message);
399
399
  }
400
400
  if (response.status === 429) {
401
401
  return new ProviderRequestError(429, message);
@@ -1,5 +1,5 @@
1
1
  import { optionalRecord, optionalString } from "../../core/cast.js";
2
- import { ProviderRequestError, providerUserAgent, requiredResponseRecord } from "../provider-runtime.js";
2
+ import { ProviderRequestError, providerUserAgent, requiredResponseRecord, providerInputError, } from "../provider-runtime.js";
3
3
  export const vectorshiftApiBaseUrl = "https://api.vectorshift.ai/v1";
4
4
  const listPipelinesPath = "/pipelines";
5
5
  const fetchPipelinePath = "/pipeline";
@@ -149,11 +149,11 @@ function createVectorshiftError(response, payload, phase) {
149
149
  if (response.status === 429)
150
150
  return new ProviderRequestError(429, message);
151
151
  if (phase === "validate" && (response.status === 401 || response.status === 403))
152
- return new ProviderRequestError(400, message);
152
+ return providerInputError(message);
153
153
  if (phase === "execute" && (response.status === 401 || response.status === 403))
154
154
  return new ProviderRequestError(401, message);
155
155
  if (response.status >= 400 && response.status < 500)
156
- return new ProviderRequestError(400, message);
156
+ return providerInputError(message);
157
157
  return new ProviderRequestError(response.status || 502, message);
158
158
  }
159
159
  function readErrorMessage(payload) {
@@ -1,11 +1,10 @@
1
1
  import { createHash } from "node:crypto";
2
2
  import { optionalInteger, optionalRecord, optionalString, requiredString } from "../../core/cast.js";
3
- import { defineProviderExecutors, providerInputError, ProviderRequestError, providerUserAgent, requireApiKeyCredential, } from "../provider-runtime.js";
3
+ import { defineProviderExecutors, providerInputError, ProviderRequestError, providerUserAgent, requireApiKeyCredential, defaultProviderRequestTimeoutMs, } from "../provider-runtime.js";
4
4
  export const venafiCloudBaseUrls = {
5
5
  us: "https://api.venafi.cloud",
6
6
  eu: "https://api.venafi.eu",
7
7
  };
8
- const requestTimeoutMs = 30_000;
9
8
  export async function validateVenafiCloudCredential(input, fetcher, signal) {
10
9
  const apiKey = requiredString(input.apiKey, "apiKey", providerInputError);
11
10
  const region = readRegion(input.region);
@@ -101,7 +100,7 @@ async function requestVenafiCloud(input) {
101
100
  "tppl-api-key": input.apiKey,
102
101
  "user-agent": providerUserAgent,
103
102
  },
104
- signal: input.signal ?? AbortSignal.timeout(requestTimeoutMs),
103
+ signal: input.signal ?? AbortSignal.timeout(defaultProviderRequestTimeoutMs),
105
104
  });
106
105
  const payload = await readPayload(response);
107
106
  if (!response.ok)
@@ -1,8 +1,7 @@
1
1
  import { createHash } from "node:crypto";
2
2
  import { optionalRecord, optionalString, requiredString } from "../../core/cast.js";
3
3
  import { assertPublicHttpUrl, encodePathSegment, isPrivateNetworkAccessAllowed } from "../../core/request.js";
4
- import { defineProviderExecutors, providerInputError, ProviderRequestError, providerUserAgent, requireCustomCredential, } from "../provider-runtime.js";
5
- const requestTimeoutMs = 30_000;
4
+ import { defineProviderExecutors, providerInputError, ProviderRequestError, providerUserAgent, requireCustomCredential, defaultProviderRequestTimeoutMs, } from "../provider-runtime.js";
6
5
  export async function validateVenafiDatacenterCredential(values, fetcher, signal) {
7
6
  const credentials = readCredentials(values);
8
7
  await getAccessToken(credentials, fetcher, "validate", signal);
@@ -121,7 +120,7 @@ async function guardedRequest(url, fetcher, init, phase, signal) {
121
120
  "user-agent": providerUserAgent,
122
121
  ...init.headers,
123
122
  },
124
- signal: signal ?? AbortSignal.timeout(requestTimeoutMs),
123
+ signal: signal ?? AbortSignal.timeout(defaultProviderRequestTimeoutMs),
125
124
  });
126
125
  const text = await response.text();
127
126
  let payload = {};
@@ -1,5 +1,5 @@
1
1
  import { compactObject, optionalRecord, optionalString, requiredString } 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 vidaApiBaseUrl = "https://api.vida.dev";
4
4
  export const vidaActionHandlers = {
5
5
  get_account(input, fetcher, apiKey) {
@@ -60,7 +60,7 @@ export const vidaActionHandlers = {
60
60
  export async function validateVidaCredential(input, fetcher) {
61
61
  const payload = await requestVidaJson({
62
62
  path: "/api/v2/account",
63
- apiKey: requiredString(input.apiKey, "apiKey", (message) => new ProviderRequestError(400, message)),
63
+ apiKey: requiredString(input.apiKey, "apiKey", providerInputError),
64
64
  params: {},
65
65
  fetcher,
66
66
  phase: "validate",
@@ -81,7 +81,7 @@ export async function executeVidaAction(input, fetcher) {
81
81
  if (!handler) {
82
82
  throw new ProviderRequestError(500, `vida action is not implemented yet: ${input.actionName}`);
83
83
  }
84
- return handler(input.input, fetcher, requiredString(input.apiKey, "apiKey", (message) => new ProviderRequestError(400, message)));
84
+ return handler(input.input, fetcher, requiredString(input.apiKey, "apiKey", providerInputError));
85
85
  }
86
86
  function buildTargetAccountParams(input) {
87
87
  return compactObject({
@@ -136,7 +136,7 @@ function createVidaError(status, payload, phase) {
136
136
  return new ProviderRequestError(429, message);
137
137
  }
138
138
  if (phase === "validate" && status >= 400 && status < 500) {
139
- return new ProviderRequestError(400, message);
139
+ return providerInputError(message);
140
140
  }
141
141
  if (phase === "execute" && (status === 401 || status === 403)) {
142
142
  return new ProviderRequestError(status, message);
@@ -1,6 +1,6 @@
1
1
  import { Buffer } from "node:buffer";
2
2
  import { optionalBoolean, optionalInteger, optionalRecord, optionalString, requiredString } from "../../core/cast.js";
3
- import { providerInputError, ProviderRequestError, providerUserAgent, readProviderJsonBody, runProviderRequest, } from "../provider-runtime.js";
3
+ import { providerInputError, ProviderRequestError, providerUserAgent, readProviderJsonBody, runProviderRequest, providerResponseError, } from "../provider-runtime.js";
4
4
  export const vonageApiBaseUrl = "https://rest.nexmo.com";
5
5
  export const vonageReportsApiBaseUrl = "https://api.nexmo.com";
6
6
  const invalidInputSmsStatuses = new Set(["2", "3", "6", "7", "12", "15", "17", "22", "23", "29", "33"]);
@@ -212,8 +212,8 @@ function mapSmsError(status, message) {
212
212
  if (["4", "8", "11", "14", "32"].includes(status))
213
213
  return new ProviderRequestError(401, text);
214
214
  if (invalidInputSmsStatuses.has(status))
215
- return new ProviderRequestError(400, text);
216
- return new ProviderRequestError(502, text);
215
+ return providerInputError(text);
216
+ return providerResponseError(text);
217
217
  }
218
218
  function requireResponseRecord(value, label) {
219
219
  const record = optionalRecord(value);
@@ -1,6 +1,6 @@
1
1
  import { optionalNumber as asOptionalNumber, optionalString as asOptionalString } from "../../core/cast.js";
2
2
  import { randomUUIDv7 } from "../../core/uuid-v7.js";
3
- import { ProviderRequestError, providerUserAgent as connectorUserAgent } from "../provider-runtime.js";
3
+ import { ProviderRequestError, providerUserAgent as connectorUserAgent, providerInputError, providerResponseError, } from "../provider-runtime.js";
4
4
  export const walmartMarketplaceApiBaseUrl = "https://marketplace.walmartapis.com";
5
5
  const tokenPath = "/v3/token";
6
6
  const serviceName = "Walmart Marketplace";
@@ -179,17 +179,17 @@ function mapWalmartError(status, payload, phase) {
179
179
  structuredError ??
180
180
  `walmart marketplace request failed with HTTP ${status}`;
181
181
  if (status === 401) {
182
- return phase === "validate" ? new ProviderRequestError(400, message) : new ProviderRequestError(401, message);
182
+ return phase === "validate" ? providerInputError(message) : new ProviderRequestError(401, message);
183
183
  }
184
184
  if (status === 403) {
185
- return phase === "validate" ? new ProviderRequestError(400, message) : new ProviderRequestError(403, message);
185
+ return phase === "validate" ? providerInputError(message) : new ProviderRequestError(403, message);
186
186
  }
187
187
  if (status === 429)
188
188
  return new ProviderRequestError(429, message);
189
189
  if (status === 400 || status === 404 || status === 409) {
190
- return new ProviderRequestError(400, message);
190
+ return providerInputError(message);
191
191
  }
192
- return new ProviderRequestError(502, message);
192
+ return providerResponseError(message);
193
193
  }
194
194
  function normalizeItemList(payload) {
195
195
  const record = requireRecord(payload, "item list");
@@ -1,8 +1,7 @@
1
1
  import { compactObject, optionalRecord, optionalString, requiredString } from "../../core/cast.js";
2
- import { createProviderTimeout, defineApiKeyProviderExecutors, defineProviderProxy, isAbortLikeError, ProviderRequestError, } from "../provider-runtime.js";
2
+ import { createProviderTimeout, defineApiKeyProviderExecutors, defineProviderProxy, isAbortLikeError, ProviderRequestError, defaultProviderRequestTimeoutMs, } from "../provider-runtime.js";
3
3
  const service = "weatherapi";
4
4
  const weatherapiApiBaseUrl = "https://api.weatherapi.com/v1/";
5
- const weatherapiDefaultRequestTimeoutMs = 30_000;
6
5
  const weatherapiValidationQuery = "London";
7
6
  const weatherapiActionHandlers = {
8
7
  async search_locations(input, context) {
@@ -151,7 +150,7 @@ export const credentialValidators = {
151
150
  };
152
151
  async function weatherapiRequestJson(path, apiKey, params, context, phase) {
153
152
  const url = weatherapiRequestUrl(path, apiKey, params);
154
- const timeout = createProviderTimeout(context.signal, weatherapiDefaultRequestTimeoutMs);
153
+ const timeout = createProviderTimeout(context.signal);
155
154
  let response;
156
155
  let payload;
157
156
  try {
@@ -163,7 +162,7 @@ async function weatherapiRequestJson(path, apiKey, params, context, phase) {
163
162
  }
164
163
  catch (error) {
165
164
  if (timeout.didTimeout() && isAbortLikeError(error)) {
166
- throw new ProviderRequestError(502, `WeatherAPI ${path} request timed out after ${Math.max(1, Math.ceil(weatherapiDefaultRequestTimeoutMs / 1000))} seconds`);
165
+ throw new ProviderRequestError(502, `WeatherAPI ${path} request timed out after ${Math.max(1, Math.ceil(defaultProviderRequestTimeoutMs / 1000))} seconds`);
167
166
  }
168
167
  throw new ProviderRequestError(502, error instanceof Error ? `WeatherAPI request failed: ${error.message}` : "WeatherAPI request failed");
169
168
  }
@@ -1,5 +1,5 @@
1
1
  import { compactObject, optionalInteger, optionalRecord, optionalString, rawStringOrNull } from "../../core/cast.js";
2
- import { createProviderTimeout, isAbortLikeError, ProviderRequestError, providerUserAgent, readProviderJsonBody, requiredInputString, setSearchParams, } from "../provider-runtime.js";
2
+ import { createProviderTimeout, isAbortLikeError, ProviderRequestError, providerUserAgent, readProviderJsonBody, requiredInputString, setSearchParams, providerInputError, providerResponseError, } from "../provider-runtime.js";
3
3
  const webOfScienceApiBaseUrl = "https://api.clarivate.com/apis/wos-starter/v1";
4
4
  export const webOfScienceActionHandlers = {
5
5
  async search_documents(input, context) {
@@ -121,10 +121,10 @@ function createWebOfScienceError(status, payload, phase) {
121
121
  return new ProviderRequestError(429, message);
122
122
  }
123
123
  if (phase === "validate" && (status === 401 || status === 403)) {
124
- return new ProviderRequestError(400, message);
124
+ return providerInputError(message);
125
125
  }
126
126
  if (phase === "validate" && status >= 400 && status < 500) {
127
- return new ProviderRequestError(502, message);
127
+ return providerResponseError(message);
128
128
  }
129
129
  if (status === 401 || status === 403) {
130
130
  return new ProviderRequestError(status, message);
@@ -217,7 +217,7 @@ function readStringArray(value) {
217
217
  function requireResponseRecord(value, message) {
218
218
  const record = optionalRecord(value);
219
219
  if (!record) {
220
- throw new ProviderRequestError(502, message);
220
+ throw providerResponseError(message);
221
221
  }
222
222
  return record;
223
223
  }
@@ -1,5 +1,5 @@
1
1
  import { compactObject, optionalInteger, optionalRecord, optionalString, optionalStringOrNull, requiredString, } from "../../core/cast.js";
2
- import { createProviderTimeout, isAbortLikeError, ProviderRequestError, providerUserAgent, readProviderJsonBody, setSearchParams, } from "../provider-runtime.js";
2
+ import { createProviderTimeout, isAbortLikeError, ProviderRequestError, providerUserAgent, readProviderJsonBody, setSearchParams, providerInputError, providerResponseError, } from "../provider-runtime.js";
3
3
  const webOfScienceExpandedApiBaseUrl = "https://wos-api.clarivate.com/api/wos";
4
4
  export const webOfScienceExpandedActionHandlers = {
5
5
  async search_documents(input, context) {
@@ -40,7 +40,7 @@ export const webOfScienceExpandedActionHandlers = {
40
40
  query: compactObject({
41
41
  databaseId: optionalString(input.database) ?? "WOS",
42
42
  lang: normalizeLanguage(input.language),
43
- uniqueId: requiredString(input.uid, "uid", (message) => new ProviderRequestError(400, message)),
43
+ uniqueId: requiredString(input.uid, "uid", providerInputError),
44
44
  count: String(limit),
45
45
  firstRecord: String(firstRecord),
46
46
  sortField: optionalString(input.sortField),
@@ -125,7 +125,7 @@ async function executeRelatedDocumentRequest(path, input, context) {
125
125
  query: compactObject({
126
126
  databaseId: database,
127
127
  lang: normalizeLanguage(input.language),
128
- uniqueId: requiredString(input.uid, "uid", (message) => new ProviderRequestError(400, message)),
128
+ uniqueId: requiredString(input.uid, "uid", providerInputError),
129
129
  edition: optionalString(input.edition),
130
130
  publishTimeSpan: optionalString(input.publishTimeSpan),
131
131
  modifiedTimeSpan: optionalString(input.modifiedTimeSpan),
@@ -145,7 +145,7 @@ function buildSearchParams(input, options) {
145
145
  return compactObject({
146
146
  databaseId: database,
147
147
  lang: normalizeLanguage(input.language),
148
- usrQuery: requiredString(input.query, "query", (message) => new ProviderRequestError(400, message)),
148
+ usrQuery: requiredString(input.query, "query", providerInputError),
149
149
  edition: optionalString(input.edition),
150
150
  publishTimeSpan: optionalString(input.publishTimeSpan),
151
151
  loadTimeSpan: optionalString(input.loadTimeSpan),
@@ -218,10 +218,10 @@ function createWebOfScienceExpandedError(status, payload, phase) {
218
218
  return new ProviderRequestError(429, message);
219
219
  }
220
220
  if (phase === "validate" && (status === 401 || status === 403)) {
221
- return new ProviderRequestError(400, message);
221
+ return providerInputError(message);
222
222
  }
223
223
  if (phase === "validate" && status >= 400 && status < 500) {
224
- return new ProviderRequestError(502, message);
224
+ return providerResponseError(message);
225
225
  }
226
226
  if (status === 401 || status === 403) {
227
227
  return new ProviderRequestError(status, message);
@@ -368,7 +368,7 @@ function readRecordArray(value) {
368
368
  }
369
369
  function requireRecordArray(value, message) {
370
370
  if (!Array.isArray(value)) {
371
- throw new ProviderRequestError(502, message);
371
+ throw providerResponseError(message);
372
372
  }
373
373
  return value.map((item) => requireRecord(item, message));
374
374
  }
@@ -401,14 +401,14 @@ function readOptionalStringArray(value) {
401
401
  function requireRecord(value, message) {
402
402
  const record = optionalRecord(value);
403
403
  if (!record) {
404
- throw new ProviderRequestError(502, message);
404
+ throw providerResponseError(message);
405
405
  }
406
406
  return record;
407
407
  }
408
408
  function readRequiredResponseString(value, message) {
409
409
  const normalized = optionalString(value);
410
410
  if (!normalized) {
411
- throw new ProviderRequestError(502, message);
411
+ throw providerResponseError(message);
412
412
  }
413
413
  return normalized;
414
414
  }
@@ -1,5 +1,5 @@
1
1
  import { optionalRecord as asOptionalObject, optionalString as asOptionalString } from "../../core/cast.js";
2
- import { ProviderRequestError, providerUserAgent } from "../provider-runtime.js";
2
+ import { ProviderRequestError, providerUserAgent, providerInputError } from "../provider-runtime.js";
3
3
  export const webexApiBaseUrl = "https://webexapis.com/v1";
4
4
  const requestDescriptors = {
5
5
  list_people: {
@@ -255,12 +255,12 @@ async function mapWebexError(response) {
255
255
  return new ProviderRequestError(403, message);
256
256
  }
257
257
  if (response.status === 404) {
258
- return new ProviderRequestError(400, message);
258
+ return providerInputError(message);
259
259
  }
260
260
  if (response.status === 423 || response.status === 429 || response.status >= 500) {
261
261
  return new ProviderRequestError(response.status === 429 ? 429 : 502, message);
262
262
  }
263
- return new ProviderRequestError(400, message);
263
+ return providerInputError(message);
264
264
  }
265
265
  function readNextPageUrl(link) {
266
266
  if (!link) {
@@ -1,5 +1,5 @@
1
1
  import { compactObject, optionalRecord } from "../../core/cast.js";
2
- import { providerUserAgent, ProviderRequestError } from "../provider-runtime.js";
2
+ import { providerUserAgent, ProviderRequestError, providerInputError } from "../provider-runtime.js";
3
3
  export const webinarjamApiBaseUrl = "https://api.webinarjam.com/webinarjam";
4
4
  export const webinarjamActionHandlers = {
5
5
  async list_webinars(_input, context) {
@@ -183,7 +183,7 @@ function createWebinarjamError(response, payload, phase) {
183
183
  return new ProviderRequestError(429, message);
184
184
  }
185
185
  if (phase === "validate" && (response.status === 401 || response.status === 403)) {
186
- return new ProviderRequestError(400, message);
186
+ return providerInputError(message);
187
187
  }
188
188
  if (phase === "execute" && (response.status === 401 || response.status === 403)) {
189
189
  return new ProviderRequestError(response.status, message);
@@ -203,12 +203,12 @@ function readProviderStatusError(payload) {
203
203
  }
204
204
  function mapWebinarjamProviderStatusError(message, phase) {
205
205
  if (phase === "validate") {
206
- return new ProviderRequestError(400, message);
206
+ return providerInputError(message);
207
207
  }
208
208
  if (message.toLowerCase().includes("api")) {
209
209
  return new ProviderRequestError(401, message);
210
210
  }
211
- return new ProviderRequestError(400, message);
211
+ return providerInputError(message);
212
212
  }
213
213
  function readWebinarjamMessage(payload) {
214
214
  if (typeof payload === "string" && payload.trim()) {
@@ -170,7 +170,7 @@ function readTargetUrl(value) {
170
170
  const rawUrl = requiredInputString(value, "url");
171
171
  const url = assertPublicHttpUrl(rawUrl, {
172
172
  fieldName: "url",
173
- createError: (message) => new ProviderRequestError(400, message),
173
+ createError: providerInputError,
174
174
  });
175
175
  if (url.username || url.password) {
176
176
  throw new ProviderRequestError(400, "url must not include credentials");
@@ -210,13 +210,13 @@ async function createWebscrapingAiError(response, phase) {
210
210
  return new ProviderRequestError(429, message);
211
211
  }
212
212
  if (phase === "validate" && response.status === 403) {
213
- return new ProviderRequestError(400, message);
213
+ return providerInputError(message);
214
214
  }
215
215
  if (phase === "execute" && response.status === 403) {
216
216
  return new ProviderRequestError(403, message);
217
217
  }
218
218
  if (response.status === 400) {
219
- return new ProviderRequestError(400, message);
219
+ return providerInputError(message);
220
220
  }
221
221
  if (response.status === 504) {
222
222
  return new ProviderRequestError(504, message);
@@ -1,8 +1,7 @@
1
1
  import { optionalRecord, optionalString, requiredString } from "../../core/cast.js";
2
- import { createProviderTimeout, isAbortLikeError, providerInputError, ProviderRequestError, providerUserAgent, } from "../provider-runtime.js";
2
+ import { createProviderTimeout, isAbortLikeError, providerInputError, ProviderRequestError, providerUserAgent, defaultProviderRequestTimeoutMs, } from "../provider-runtime.js";
3
3
  export const webvizioApiBaseUrl = "https://app.webvizio.com/api/v1";
4
4
  const webvizioWebhookPath = "/webhook";
5
- const webvizioDefaultRequestTimeoutMs = 30_000;
6
5
  export const webvizioActionHandlers = {
7
6
  async create_rest_hook_subscription(input, context) {
8
7
  const url = requiredString(input.url, "url", providerInputError);
@@ -39,7 +38,7 @@ export async function validateWebvizioCredential(apiKey, _fetcher, _signal) {
39
38
  };
40
39
  }
41
40
  async function requestWebvizioJson(input, context) {
42
- const timeout = createProviderTimeout(context.signal, webvizioDefaultRequestTimeoutMs);
41
+ const timeout = createProviderTimeout(context.signal);
43
42
  try {
44
43
  const response = await context.fetcher(buildWebvizioUrl(input.path), {
45
44
  method: input.method,
@@ -56,7 +55,7 @@ async function requestWebvizioJson(input, context) {
56
55
  if (error instanceof ProviderRequestError)
57
56
  throw error;
58
57
  throw new ProviderRequestError(timeout.didTimeout() || isAbortLikeError(error) ? 504 : 502, timeout.didTimeout() || isAbortLikeError(error)
59
- ? `Webvizio request timed out after ${Math.max(1, Math.ceil(webvizioDefaultRequestTimeoutMs / 1000))} seconds`
58
+ ? `Webvizio request timed out after ${Math.max(1, Math.ceil(defaultProviderRequestTimeoutMs / 1000))} seconds`
60
59
  : error instanceof Error
61
60
  ? `Webvizio request failed: ${error.message}`
62
61
  : "Webvizio request failed");
@@ -3,10 +3,9 @@ import { createHash, randomUUID } from "node:crypto";
3
3
  import { setTimeout as delay } from "node:timers/promises";
4
4
  import { compactObject, optionalInteger, optionalRecord, optionalString } from "../../core/cast.js";
5
5
  import { assertPublicHttpUrl, readBoundedResponseBytes } from "../../core/request.js";
6
- import { createProviderTimeout, providerUserAgent, ProviderRequestError, requiredResponseRecord, } from "../provider-runtime.js";
6
+ import { createProviderTimeout, providerUserAgent, ProviderRequestError, requiredResponseRecord, defaultProviderRequestTimeoutMs, } from "../provider-runtime.js";
7
7
  const wecomMcpConfigUrl = "https://qyapi.weixin.qq.com/cgi-bin/aibot/cli/get_mcp_config";
8
8
  const wecomSmartBotHelpUrl = "https://open.work.weixin.qq.com/help2/pc/cat?doc_id=21677";
9
- const wecomSmartBotRequestTimeoutMs = 30_000;
10
9
  const wecomSmartBotMediaTimeoutMs = 120_000;
11
10
  const wecomMcpConfigCacheTtlMs = 10 * 60_000;
12
11
  const wecomMcpConfigCacheMaxEntries = 128;
@@ -200,7 +199,7 @@ async function fetchWecomMcpConfig(credential, fetcher) {
200
199
  bind_source: 1,
201
200
  cli_version: providerUserAgent,
202
201
  }),
203
- }, fetcher, wecomSmartBotRequestTimeoutMs);
202
+ }, fetcher, defaultProviderRequestTimeoutMs);
204
203
  const payload = requiredResponseRecord(response.payload, "WeCom MCP config response");
205
204
  const errcode = readInteger(payload.errcode) ?? 0;
206
205
  if (!response.ok || errcode !== 0) {
@@ -287,7 +286,7 @@ async function callWecomTool(category, toolName, argumentsValue, runtime) {
287
286
  }
288
287
  }
289
288
  async function callWecomToolAtEndpoint(endpoint, toolName, argumentsValue, fetcher) {
290
- const payload = await sendWecomMcpRequest(endpoint, "tools/call", { name: toolName, arguments: argumentsValue }, fetcher, toolName === "get_msg_media" ? wecomSmartBotMediaTimeoutMs : wecomSmartBotRequestTimeoutMs);
289
+ const payload = await sendWecomMcpRequest(endpoint, "tools/call", { name: toolName, arguments: argumentsValue }, fetcher, toolName === "get_msg_media" ? wecomSmartBotMediaTimeoutMs : defaultProviderRequestTimeoutMs);
291
290
  const result = requiredResponseRecord(payload.result, `WeCom ${toolName} MCP result`);
292
291
  if (result.isError === true) {
293
292
  throw new ProviderRequestError(502, readMcpContentMessage(result.content) ?? `WeCom ${toolName} failed`);
@@ -310,7 +309,7 @@ async function callWecomToolAtEndpoint(endpoint, toolName, argumentsValue, fetch
310
309
  }
311
310
  return normalizeWecomBusinessResult(parsed, toolName);
312
311
  }
313
- async function sendWecomMcpRequest(endpoint, method, params, fetcher, timeoutMs = wecomSmartBotRequestTimeoutMs) {
312
+ async function sendWecomMcpRequest(endpoint, method, params, fetcher, timeoutMs = defaultProviderRequestTimeoutMs) {
314
313
  const response = await fetchWecomJson(endpoint, {
315
314
  method: "POST",
316
315
  headers: { accept: "application/json", "content-type": "application/json" },
@@ -5,9 +5,8 @@ import { createHash } from "node:crypto";
5
5
  import { optionalRecord, requiredString } from "../../core/cast.js";
6
6
  import { assertPublicHttpUrl } from "../../core/request.js";
7
7
  import { withMcpClient } from "../mcp-client.js";
8
- import { providerUserAgent, ProviderRequestError, toProviderExecutionError } from "../provider-runtime.js";
8
+ import { providerUserAgent, ProviderRequestError, toProviderExecutionError, defaultProviderRequestTimeoutMs, } from "../provider-runtime.js";
9
9
  const wecomMcpHost = "qyapi.weixin.qq.com";
10
- const wecomRequestTimeoutMs = 30_000;
11
10
  const wecomToolIntervalMs = 1_000;
12
11
  const maximumTrackedRateLimitKeys = 1_024;
13
12
  class InMemoryWeComMcpRateLimiter {
@@ -137,7 +136,7 @@ export async function callWeComTool(context, input) {
137
136
  name: toolName,
138
137
  arguments: argumentsValue,
139
138
  }, {
140
- timeout: wecomRequestTimeoutMs,
139
+ timeout: defaultProviderRequestTimeoutMs,
141
140
  signal: context.signal,
142
141
  });
143
142
  return normalizeWeComMcpToolResult(toolName, toolResult);
@@ -147,7 +146,7 @@ export async function callWeComTool(context, input) {
147
146
  async function discoverWeComTools(context) {
148
147
  return withWeComMcpClient(context, async (client) => {
149
148
  const result = await client.listTools({}, {
150
- timeout: wecomRequestTimeoutMs,
149
+ timeout: defaultProviderRequestTimeoutMs,
151
150
  signal: context.signal,
152
151
  });
153
152
  return result.tools.map((tool) => {
@@ -1,6 +1,6 @@
1
1
  import { compactObject, objectArray, optionalRecord, optionalString } from "../../core/cast.js";
2
2
  import { queryParams } from "../../core/request.js";
3
- import { createProviderTimeout, isAbortLikeError, providerUserAgent, ProviderRequestError, } from "../provider-runtime.js";
3
+ import { createProviderTimeout, isAbortLikeError, providerUserAgent, ProviderRequestError, providerInputError, providerResponseError, } from "../provider-runtime.js";
4
4
  import { wejamAiExportResourceValues } from "./constants.js";
5
5
  export const wejamAiApiBaseUrl = "https://api.wejam.ai";
6
6
  export const wejamAiDataExportPathPrefix = "/api/v1/data-exports";
@@ -128,7 +128,7 @@ async function readWejamAiPayload(response) {
128
128
  function createWejamAiError(status, payload, phase) {
129
129
  const message = extractWejamAiErrorMessage(payload) ?? `Jam request failed with status ${status}`;
130
130
  if (phase === "validate" && status === 401) {
131
- return new ProviderRequestError(400, message);
131
+ return providerInputError(message);
132
132
  }
133
133
  if (phase === "execute" && status === 401) {
134
134
  return new ProviderRequestError(401, message);
@@ -161,7 +161,7 @@ function normalizeDataExportPayload(resource, payload) {
161
161
  const meta = requireProviderObject(body.meta, "Jam data-export response meta");
162
162
  return {
163
163
  resource,
164
- data: objectArray(body.data, "Jam data-export response data", (message) => new ProviderRequestError(502, message)),
164
+ data: objectArray(body.data, "Jam data-export response data", providerResponseError),
165
165
  meta: {
166
166
  total: readRequiredNumber(meta, "total"),
167
167
  page: readRequiredNumber(meta, "page"),
@@ -1,5 +1,5 @@
1
1
  import { compactObject, optionalRecord, optionalString } from "../../core/cast.js";
2
- import { createProviderTimeout, isAbortLikeError, providerUserAgent, ProviderRequestError, requiredInputString, } from "../provider-runtime.js";
2
+ import { createProviderTimeout, isAbortLikeError, providerUserAgent, ProviderRequestError, requiredInputString, providerInputError, } from "../provider-runtime.js";
3
3
  export const wolframAlphaApiBaseUrl = "https://api.wolframalpha.com";
4
4
  export const wolframAlphaQueryRecognizerUrl = "https://www.wolframalpha.com/queryrecognizer/query.jsp";
5
5
  const wolframAlphaValidationQuery = "integrate x^2";
@@ -133,14 +133,14 @@ function createWolframAlphaError(status, body, phase) {
133
133
  const message = body.trim() || `Wolfram|Alpha request failed with ${status || 500}`;
134
134
  if (phase === "validate") {
135
135
  if (status === 400 || status === 401 || status === 403 || looksLikeCredentialError(message)) {
136
- return new ProviderRequestError(400, message);
136
+ return providerInputError(message);
137
137
  }
138
138
  if (status === 429)
139
139
  return new ProviderRequestError(429, message);
140
140
  return new ProviderRequestError(status || 500, message);
141
141
  }
142
142
  if (status === 400 || status === 501)
143
- return new ProviderRequestError(400, message);
143
+ return providerInputError(message);
144
144
  if (status === 401 || status === 403 || looksLikeCredentialError(message))
145
145
  return new ProviderRequestError(401, message);
146
146
  if (status === 429)
@@ -652,7 +652,7 @@ function mapWooCommerceError(status, data, phase) {
652
652
  const payload = optionalRecord(data) ?? {};
653
653
  const message = optionalString(payload.message) ?? `WooCommerce API request failed with status ${status}`;
654
654
  if (phase === "validate" || status === 400 || status === 401 || status === 403 || status === 404) {
655
- return new ProviderRequestError(400, message);
655
+ return providerInputError(message);
656
656
  }
657
657
  if (status === 429)
658
658
  return new ProviderRequestError(429, message);
@@ -1,8 +1,7 @@
1
1
  import { compactObject, looseArray, optionalBoolean, optionalRecord, optionalString, rawStringOrNull, requiredString, } from "../../core/cast.js";
2
- import { createProviderTimeout, defineApiKeyProviderExecutors, defineProviderProxy, ProviderRequestError, providerUserAgent, } from "../provider-runtime.js";
2
+ import { createProviderTimeout, defineApiKeyProviderExecutors, defineProviderProxy, ProviderRequestError, providerUserAgent, defaultProviderRequestTimeoutMs, } from "../provider-runtime.js";
3
3
  const service = "woodpecker_co";
4
4
  export const woodpeckerCoApiBaseUrl = "https://api.woodpecker.co/rest";
5
- const woodpeckerCoDefaultRequestTimeoutMs = 30_000;
6
5
  export const woodpeckerCoActionHandlers = {
7
6
  async list_users(input, context) {
8
7
  const payload = await requestWoodpeckerCoJson({
@@ -167,7 +166,7 @@ async function requestWoodpeckerCoJson(input) {
167
166
  url.searchParams.set(key, value);
168
167
  }
169
168
  }
170
- const timeout = createProviderTimeout(input.context.signal, woodpeckerCoDefaultRequestTimeoutMs);
169
+ const timeout = createProviderTimeout(input.context.signal);
171
170
  let response;
172
171
  try {
173
172
  response = await input.context.fetcher(url, {
@@ -182,7 +181,7 @@ async function requestWoodpeckerCoJson(input) {
182
181
  }
183
182
  catch (error) {
184
183
  throw new ProviderRequestError(timeout.didTimeout() ? 504 : 502, timeout.didTimeout()
185
- ? `Woodpecker.co request timed out after ${woodpeckerCoDefaultRequestTimeoutMs}ms`
184
+ ? `Woodpecker.co request timed out after ${defaultProviderRequestTimeoutMs}ms`
186
185
  : `Woodpecker.co request failed: ${error instanceof Error ? error.message : "Unknown transport error"}`, error);
187
186
  }
188
187
  finally {