@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,8 +1,7 @@
1
1
  import { isIP } from "node:net";
2
2
  import { optionalRecord, optionalString } from "../../core/cast.js";
3
- import { createProviderTimeout, providerUserAgent, ProviderRequestError } from "../provider-runtime.js";
3
+ import { createProviderTimeout, providerUserAgent, ProviderRequestError, providerInputError, defaultProviderRequestTimeoutMs, } from "../provider-runtime.js";
4
4
  export const iplocateApiBaseUrl = "https://iplocate.io/api";
5
- const requestTimeoutMs = 30_000;
6
5
  export const iplocateActionHandlers = {
7
6
  async lookup_ip(input, context) {
8
7
  const ip = readIpAddress(input.ip, "ip");
@@ -73,7 +72,7 @@ async function requestIplocateJson(input, context, phase) {
73
72
  url.searchParams.set(key, value);
74
73
  }
75
74
  }
76
- const timeout = createProviderTimeout(context.signal, requestTimeoutMs);
75
+ const timeout = createProviderTimeout(context.signal);
77
76
  let response;
78
77
  let payload;
79
78
  try {
@@ -87,7 +86,7 @@ async function requestIplocateJson(input, context, phase) {
87
86
  }
88
87
  catch (error) {
89
88
  if (timeout.didTimeout()) {
90
- throw new ProviderRequestError(504, `IPLocate request timed out after ${requestTimeoutMs / 1000} seconds`);
89
+ throw new ProviderRequestError(504, `IPLocate request timed out after ${defaultProviderRequestTimeoutMs / 1000} seconds`);
91
90
  }
92
91
  throw new ProviderRequestError(502, error instanceof Error ? `IPLocate request failed: ${error.message}` : "IPLocate request failed");
93
92
  }
@@ -131,7 +130,7 @@ function createIplocateError(response, payload, phase) {
131
130
  return new ProviderRequestError(phase === "validate" ? 400 : response.status, message);
132
131
  }
133
132
  if (response.status === 400 || response.status === 404) {
134
- return new ProviderRequestError(400, message);
133
+ return providerInputError(message);
135
134
  }
136
135
  return new ProviderRequestError(response.status >= 500 ? 502 : response.status, message);
137
136
  }
@@ -1,5 +1,5 @@
1
1
  import { optionalRecord, optionalString } from "../../core/cast.js";
2
- import { defineApiKeyProviderExecutors, defineProviderProxy, isAbortLikeError, providerUserAgent, ProviderRequestError, } from "../provider-runtime.js";
2
+ import { defineApiKeyProviderExecutors, defineProviderProxy, isAbortLikeError, providerUserAgent, ProviderRequestError, providerInputError, } from "../provider-runtime.js";
3
3
  const service = "ipregistry";
4
4
  const ipregistryBaseUrl = "https://api.ipregistry.co";
5
5
  const validationIp = "8.8.8.8";
@@ -193,7 +193,7 @@ function mapIpregistryError(status, message, phase) {
193
193
  return new ProviderRequestError(phase === "validate" ? 400 : 401, normalizedMessage);
194
194
  }
195
195
  if (status === 400 || status === 404) {
196
- return new ProviderRequestError(400, normalizedMessage);
196
+ return providerInputError(normalizedMessage);
197
197
  }
198
198
  if (status === 402 || status === 429) {
199
199
  return new ProviderRequestError(429, normalizedMessage);
@@ -1,5 +1,5 @@
1
1
  import { compactObject, optionalRecord, optionalString } from "../../core/cast.js";
2
- import { ProviderRequestError, providerUserAgent } from "../provider-runtime.js";
2
+ import { ProviderRequestError, providerUserAgent, providerInputError, providerResponseError, } from "../provider-runtime.js";
3
3
  const jiminnyUsApiBaseUrl = "https://app.jiminny.com/customer/api/v1";
4
4
  const jiminnyEuApiBaseUrl = "https://app.jiminny.eu/customer/api/v1";
5
5
  const jiminnyValidationPath = "/me";
@@ -281,9 +281,9 @@ function mapJiminnyError(status, message, phase) {
281
281
  return new ProviderRequestError(429, message);
282
282
  }
283
283
  if (status === 400 || status === 404 || status === 422) {
284
- return new ProviderRequestError(400, message);
284
+ return providerInputError(message);
285
285
  }
286
- return new ProviderRequestError(502, message);
286
+ return providerResponseError(message);
287
287
  }
288
288
  function isJiminnyGeneratingMessage(message) {
289
289
  return message.toLowerCase().includes("being generated");
@@ -329,7 +329,7 @@ function pickQuery(input, keys) {
329
329
  function readObjectPayload(payload, message) {
330
330
  const record = optionalRecord(payload);
331
331
  if (!record) {
332
- throw new ProviderRequestError(502, message);
332
+ throw providerResponseError(message);
333
333
  }
334
334
  return record;
335
335
  }
@@ -3,12 +3,11 @@ import { SdkHttpError } from "@modelcontextprotocol/client";
3
3
  import { ProtocolError } from "@modelcontextprotocol/client";
4
4
  import { createHash } from "node:crypto";
5
5
  import { withMcpClient } from "../mcp-client.js";
6
- import { defineApiKeyProviderExecutors, defineProviderProxy, providerUserAgent, ProviderRequestError, } from "../provider-runtime.js";
6
+ import { defineApiKeyProviderExecutors, defineProviderProxy, providerUserAgent, ProviderRequestError, defaultProviderRequestTimeoutMs, } from "../provider-runtime.js";
7
7
  const service = "jin10";
8
8
  const jin10McpOrigin = "https://mcp.jin10.com";
9
9
  const jin10McpEndpoint = "https://mcp.jin10.com/mcp";
10
10
  const jin10QuoteCodesResourceUri = "quote://codes";
11
- const jin10RequestTimeoutMs = 30_000;
12
11
  export const jin10ActionHandlers = {
13
12
  list_quote_codes(_input, context) {
14
13
  return readJin10QuoteCodes(context);
@@ -72,7 +71,7 @@ export const credentialValidators = {
72
71
  async function listJin10McpTools(input) {
73
72
  return withJin10McpClient(input, async (client) => {
74
73
  const result = await client.listTools({}, {
75
- timeout: jin10RequestTimeoutMs,
74
+ timeout: defaultProviderRequestTimeoutMs,
76
75
  });
77
76
  return result.tools.map((tool) => ({
78
77
  name: tool.name,
@@ -86,7 +85,7 @@ async function callJin10McpTool(context, toolName, argumentsInput) {
86
85
  name: toolName,
87
86
  arguments: argumentsInput,
88
87
  }, {
89
- timeout: jin10RequestTimeoutMs,
88
+ timeout: defaultProviderRequestTimeoutMs,
90
89
  });
91
90
  return normalizeJin10McpToolResult(toolName, result);
92
91
  });
@@ -96,7 +95,7 @@ async function readJin10QuoteCodes(context) {
96
95
  const result = await client.readResource({
97
96
  uri: jin10QuoteCodesResourceUri,
98
97
  }, {
99
- timeout: jin10RequestTimeoutMs,
98
+ timeout: defaultProviderRequestTimeoutMs,
100
99
  });
101
100
  const content = result.contents[0];
102
101
  if (!content || !("text" in content)) {
@@ -1,6 +1,6 @@
1
1
  import { compactObject, optionalBoolean, optionalInteger as asOptionalInteger, optionalRecord as asOptionalObject, optionalString as asOptionalString, optionalStringArray, } from "../../core/cast.js";
2
2
  import { assertPublicHttpUrl, isPrivateNetworkAccessAllowed } from "../../core/request.js";
3
- import { createProviderFetch, ProviderRequestError, defineProviderExecutors, defineProviderProxy, providerUserAgent, } from "../provider-runtime.js";
3
+ import { createProviderFetch, ProviderRequestError, defineProviderExecutors, defineProviderProxy, providerUserAgent, providerInputError, } from "../provider-runtime.js";
4
4
  import { jiraIssueEvents } from "./trigger-on-issue-event.js";
5
5
  const jiraApiOrigin = "https://api.atlassian.com";
6
6
  const jiraAccessibleResourcesUrl = "https://api.atlassian.com/oauth/token/accessible-resources";
@@ -482,7 +482,7 @@ export function normalizeJiraServerApiBaseUrl(value, allowPrivateNetwork = isPri
482
482
  }
483
483
  const url = assertPublicHttpUrl(instanceUrl, {
484
484
  fieldName: "baseUrl",
485
- createError: (message) => new ProviderRequestError(400, message),
485
+ createError: providerInputError,
486
486
  allowPrivateNetwork,
487
487
  });
488
488
  if (url.username || url.password) {
@@ -831,7 +831,7 @@ async function readJsonValue(response) {
831
831
  function mapJiraResponseError(status, payload, phase, notFoundAsInvalidInput) {
832
832
  const message = readJiraErrorMessage(payload);
833
833
  if (status === 400) {
834
- return new ProviderRequestError(400, message);
834
+ return providerInputError(message);
835
835
  }
836
836
  if (status === 401) {
837
837
  return new ProviderRequestError(phase === "auth" ? 400 : 401, message);
@@ -843,7 +843,7 @@ function mapJiraResponseError(status, payload, phase, notFoundAsInvalidInput) {
843
843
  return new ProviderRequestError(502, message, 403);
844
844
  }
845
845
  if (status === 404 && notFoundAsInvalidInput) {
846
- return new ProviderRequestError(400, message);
846
+ return providerInputError(message);
847
847
  }
848
848
  if (status === 429) {
849
849
  return new ProviderRequestError(429, message);
@@ -1,6 +1,6 @@
1
1
  import { createHash } from "node:crypto";
2
2
  import { compactObject, optionalRecord, optionalString } from "../../core/cast.js";
3
- import { isAbortLikeError, providerUserAgent, ProviderRequestError } from "../provider-runtime.js";
3
+ import { isAbortLikeError, providerUserAgent, ProviderRequestError, providerInputError } from "../provider-runtime.js";
4
4
  import { kaleidoDefaultBaseUrl } from "./constants.js";
5
5
  const membershipsValidationPath = "/memberships";
6
6
  export const kaleidoActionHandlers = {
@@ -156,7 +156,7 @@ async function normalizeKaleidoError(response) {
156
156
  return new ProviderRequestError(401, message);
157
157
  }
158
158
  if (response.status >= 400 && response.status < 500) {
159
- return new ProviderRequestError(400, message);
159
+ return providerInputError(message);
160
160
  }
161
161
  return new ProviderRequestError(response.status || 500, message);
162
162
  }
@@ -1,6 +1,6 @@
1
1
  import { createHash } from "node:crypto";
2
2
  import { compactObject, optionalBoolean, optionalInteger, optionalRecord, optionalString } from "../../core/cast.js";
3
- import { ProviderRequestError, providerUserAgent, runProviderRequest } from "../provider-runtime.js";
3
+ import { ProviderRequestError, providerUserAgent, runProviderRequest, providerInputError, } from "../provider-runtime.js";
4
4
  export const kandjiActionHandlers = {
5
5
  async list_blueprints(input, context) {
6
6
  const payload = await requestKandjiJson({
@@ -186,7 +186,7 @@ function createKandjiError(status, payload, phase, notFoundAsInvalidInput) {
186
186
  return new ProviderRequestError(429, message);
187
187
  }
188
188
  if (phase === "validate" && status >= 400 && status < 500) {
189
- return new ProviderRequestError(400, message);
189
+ return providerInputError(message);
190
190
  }
191
191
  if (phase === "execute" && status === 401) {
192
192
  return new ProviderRequestError(401, message);
@@ -1,5 +1,5 @@
1
1
  import { compactObject, optionalRecord, optionalString } from "../../core/cast.js";
2
- import { defineProviderExecutors, defineProviderProxy, providerUserAgent, ProviderRequestError, requireApiKeyCredential, } from "../provider-runtime.js";
2
+ import { defineProviderExecutors, defineProviderProxy, providerUserAgent, ProviderRequestError, requireApiKeyCredential, providerInputError, } from "../provider-runtime.js";
3
3
  const keygenApiBaseUrl = "https://api.keygen.sh/v1/accounts";
4
4
  const keygenValidationPath = "/me";
5
5
  const service = "keygen";
@@ -529,16 +529,16 @@ function createKeygenError(response, payload, phase, usedAuth) {
529
529
  return new ProviderRequestError(429, message);
530
530
  }
531
531
  if (phase === "validate" && (response.status === 401 || response.status === 403)) {
532
- return new ProviderRequestError(400, message);
532
+ return providerInputError(message);
533
533
  }
534
534
  if (phase === "execute" && usedAuth && (response.status === 401 || response.status === 403)) {
535
535
  return new ProviderRequestError(401, message);
536
536
  }
537
537
  if (phase === "execute" && !usedAuth && (response.status === 401 || response.status === 403)) {
538
- return new ProviderRequestError(400, message);
538
+ return providerInputError(message);
539
539
  }
540
540
  if ([400, 404, 422].includes(response.status)) {
541
- return new ProviderRequestError(400, message);
541
+ return providerInputError(message);
542
542
  }
543
543
  return new ProviderRequestError(response.status || 500, message);
544
544
  }
@@ -1,5 +1,5 @@
1
1
  import { compactObject, optionalInteger, optionalRecord, optionalString } from "../../core/cast.js";
2
- import { providerUserAgent, ProviderRequestError, runProviderRequest } from "../provider-runtime.js";
2
+ import { providerUserAgent, ProviderRequestError, runProviderRequest, providerInputError, } from "../provider-runtime.js";
3
3
  export const keywordApiBaseUrl = "https://app.keyword.com";
4
4
  const keywordApiPathPrefix = "/api/v2";
5
5
  export const keywordActionHandlers = {
@@ -105,7 +105,7 @@ function createKeywordError(response, payload, phase) {
105
105
  return new ProviderRequestError(429, message);
106
106
  }
107
107
  if (phase === "validate" && response.status >= 400 && response.status < 500) {
108
- return new ProviderRequestError(400, message);
108
+ return providerInputError(message);
109
109
  }
110
110
  return new ProviderRequestError(response.status || 502, message);
111
111
  }
@@ -103,7 +103,7 @@ function mapKieAiError(code, message, status) {
103
103
  case 403:
104
104
  return new ProviderRequestError(401, message);
105
105
  case 422:
106
- return new ProviderRequestError(400, message);
106
+ return providerInputError(message);
107
107
  case 429:
108
108
  return new ProviderRequestError(429, message);
109
109
  default:
@@ -184,7 +184,7 @@ function createKintoneError(status, payload, phase) {
184
184
  return new ProviderRequestError(429, message);
185
185
  }
186
186
  if (phase === "validate" && status >= 400 && status < 500) {
187
- return new ProviderRequestError(400, message);
187
+ return providerInputError(message);
188
188
  }
189
189
  if (phase === "execute" && status === 401) {
190
190
  return new ProviderRequestError(401, message);
@@ -1,5 +1,5 @@
1
1
  import { compactObject, looseArray, optionalBoolean, optionalNumber, optionalRecord, optionalString, } from "../../core/cast.js";
2
- import { providerUserAgent, ProviderRequestError, runProviderRequest } from "../provider-runtime.js";
2
+ import { providerUserAgent, ProviderRequestError, runProviderRequest, providerInputError, } from "../provider-runtime.js";
3
3
  const kitApiBaseUrl = "https://api.kit.com/v4";
4
4
  export const kitActionHandlers = {
5
5
  async get_current_account(_input, context) {
@@ -229,7 +229,7 @@ function createKitError(status, payload, phase) {
229
229
  return new ProviderRequestError(429, message);
230
230
  }
231
231
  if (phase === "validate" && status >= 400 && status < 500) {
232
- return new ProviderRequestError(400, message);
232
+ return providerInputError(message);
233
233
  }
234
234
  if (phase === "execute" && status === 401) {
235
235
  return new ProviderRequestError(401, message);
@@ -1,6 +1,6 @@
1
1
  import { optionalRecord, optionalString } from "../../core/cast.js";
2
2
  import { assertPublicHttpUrl, readBoundedResponseBytes, storeResponseInTransit } from "../../core/request.js";
3
- import { providerFetch, providerUserAgent, ProviderRequestError } from "../provider-runtime.js";
3
+ import { providerFetch, providerUserAgent, ProviderRequestError, providerInputError } from "../provider-runtime.js";
4
4
  export const klangioApiBaseUrl = "https://api.klang.io";
5
5
  const klangioValidationJobId = "00000000-0000-0000-0000-000000000000";
6
6
  const maxKlangioUploadSourceBytes = 100 * 1024 * 1024;
@@ -208,7 +208,7 @@ async function resolveKlangioUploadSource(value, context) {
208
208
  if (fileUrl) {
209
209
  const url = assertPublicHttpUrl(fileUrl, {
210
210
  fieldName: "file.url",
211
- createError: (message) => new ProviderRequestError(400, message),
211
+ createError: providerInputError,
212
212
  });
213
213
  const response = await providerFetch(url, {
214
214
  method: "GET",
@@ -255,7 +255,7 @@ async function readKlangioUploadSourceBytes(response) {
255
255
  return readBoundedResponseBytes(response, {
256
256
  maxBytes: maxKlangioUploadSourceBytes,
257
257
  fieldName: "klangio upload source",
258
- createError: (message) => new ProviderRequestError(400, message),
258
+ createError: providerInputError,
259
259
  });
260
260
  }
261
261
  function assertUploadSourceSize(byteLength) {
@@ -321,7 +321,7 @@ function createKlangioError(response, payload) {
321
321
  return new ProviderRequestError(429, message);
322
322
  }
323
323
  if (response.status >= 400 && response.status < 500) {
324
- return new ProviderRequestError(400, message);
324
+ return providerInputError(message);
325
325
  }
326
326
  return new ProviderRequestError(response.status || 500, message);
327
327
  }
@@ -272,7 +272,7 @@ function mapKlaviyoHttpError(status, payload, rawBody, phase) {
272
272
  return new ProviderRequestError(phase === "validate" ? 400 : 401, message);
273
273
  }
274
274
  if (status === 400 || status === 404 || status === 422) {
275
- return new ProviderRequestError(400, message);
275
+ return providerInputError(message);
276
276
  }
277
277
  if (status === 429) {
278
278
  return new ProviderRequestError(429, message);
@@ -1,5 +1,5 @@
1
1
  import { compactObject, optionalBoolean, optionalInteger, optionalNumber, optionalRecord, optionalString, } from "../../core/cast.js";
2
- import { defineApiKeyProviderExecutors, defineProviderProxy, providerUserAgent, ProviderRequestError, runProviderRequest, } from "../provider-runtime.js";
2
+ import { defineApiKeyProviderExecutors, defineProviderProxy, providerUserAgent, ProviderRequestError, runProviderRequest, providerInputError, } from "../provider-runtime.js";
3
3
  const service = "klazify";
4
4
  const klazifyApiBaseUrl = "https://www.klazify.com/api";
5
5
  export const klazifyActionHandlers = {
@@ -260,11 +260,11 @@ function createKlazifyError(status, payload, phase) {
260
260
  return new ProviderRequestError(401, message);
261
261
  }
262
262
  if (normalizedMessage.includes("/unreachable") || normalizedMessage.includes("/no indexable content")) {
263
- return new ProviderRequestError(400, message);
263
+ return providerInputError(message);
264
264
  }
265
265
  }
266
266
  if (phase === "validate" && status < 400) {
267
- return new ProviderRequestError(400, message);
267
+ return providerInputError(message);
268
268
  }
269
269
  return new ProviderRequestError(status || 500, message);
270
270
  }
@@ -1,5 +1,5 @@
1
1
  import { compactObject, optionalInteger, optionalRecord, optionalString } from "../../core/cast.js";
2
- import { ProviderRequestError, providerUserAgent, runProviderRequest } from "../provider-runtime.js";
2
+ import { ProviderRequestError, providerUserAgent, runProviderRequest, providerResponseError, } from "../provider-runtime.js";
3
3
  export const klipfolioApiBaseUrl = "https://api.klipfolio.com/api/1.0";
4
4
  export const klipfolioActionHandlers = {
5
5
  list_clients(input, context) {
@@ -135,7 +135,7 @@ function createKlipfolioError(status, payload, phase) {
135
135
  if (status >= 400 && status < 500) {
136
136
  return new ProviderRequestError(status, message);
137
137
  }
138
- return new ProviderRequestError(502, message);
138
+ return providerResponseError(message);
139
139
  }
140
140
  function extractKlipfolioErrorMessage(payload) {
141
141
  const record = optionalRecord(payload);
@@ -187,7 +187,7 @@ function normalizeAsset(value) {
187
187
  function requireRecord(value, message) {
188
188
  const record = optionalRecord(value);
189
189
  if (!record) {
190
- throw new ProviderRequestError(502, message);
190
+ throw providerResponseError(message);
191
191
  }
192
192
  return record;
193
193
  }
@@ -192,7 +192,7 @@ async function readKnackPayload(response) {
192
192
  function normalizeKnackError(status, payload, phase) {
193
193
  const message = readKnackErrorMessage(payload) ?? `Knack request failed with status ${status}`;
194
194
  if (phase === "validate" || status === 400 || status === 401 || status === 403 || status === 404) {
195
- return new ProviderRequestError(400, message);
195
+ return providerInputError(message);
196
196
  }
197
197
  if (status === 429) {
198
198
  return new ProviderRequestError(429, message);
@@ -1,5 +1,5 @@
1
1
  import { compactObject, nullableInteger, nullableString, optionalBoolean, optionalInteger, optionalRecord, optionalString, } from "../../core/cast.js";
2
- import { ProviderRequestError, providerUserAgent, requiredResponseRecord, runProviderRequest, } from "../provider-runtime.js";
2
+ import { ProviderRequestError, providerUserAgent, requiredResponseRecord, runProviderRequest, providerInputError, } from "../provider-runtime.js";
3
3
  const kommoCredentialHelpUrl = "https://developers.kommo.com/docs/long-lived-token";
4
4
  const kommoPrivateIntegrationHelpUrl = "https://developers.kommo.com/docs/private-integration";
5
5
  const kommoHostSuffix = ".kommo.com";
@@ -277,7 +277,7 @@ function createKommoError(status, payload, phase) {
277
277
  return new ProviderRequestError(429, message);
278
278
  }
279
279
  if (phase === "validate" && status >= 400 && status < 500) {
280
- return new ProviderRequestError(400, message);
280
+ return providerInputError(message);
281
281
  }
282
282
  if (phase === "execute" && (status === 401 || status === 403)) {
283
283
  return new ProviderRequestError(status, message);
@@ -1,8 +1,7 @@
1
1
  import { optionalBoolean, optionalRecord, optionalString, requiredString } from "../../core/cast.js";
2
- import { createProviderTimeout, defineProviderExecutors, defineProviderProxy, isAbortLikeError, providerInputError, providerUserAgent, ProviderRequestError, requireApiKeyCredential, } from "../provider-runtime.js";
2
+ import { createProviderTimeout, defineProviderExecutors, defineProviderProxy, isAbortLikeError, providerInputError, providerUserAgent, ProviderRequestError, requireApiKeyCredential, defaultProviderRequestTimeoutMs, } from "../provider-runtime.js";
3
3
  const service = "kontent_ai";
4
4
  const kontentAiApiBaseUrl = "https://manage.kontent.ai/v2";
5
- const kontentAiDefaultRequestTimeoutMs = 30_000;
6
5
  export const kontentAiActionHandlers = {
7
6
  list_content_items(input, context) {
8
7
  return listKontentAiContentItems(input, context);
@@ -189,7 +188,7 @@ async function getKontentAiLanguage(input, context) {
189
188
  };
190
189
  }
191
190
  async function requestKontentAiJson(input) {
192
- const timeout = createProviderTimeout(input.signal, kontentAiDefaultRequestTimeoutMs);
191
+ const timeout = createProviderTimeout(input.signal);
193
192
  let response;
194
193
  let payload;
195
194
  try {
@@ -214,7 +213,7 @@ async function requestKontentAiJson(input) {
214
213
  throw error;
215
214
  }
216
215
  if (timeout.didTimeout() || isAbortLikeError(error)) {
217
- throw new ProviderRequestError(504, `Kontent.ai ${input.path} request timed out after ${Math.ceil(kontentAiDefaultRequestTimeoutMs / 1000)} seconds`);
216
+ throw new ProviderRequestError(504, `Kontent.ai ${input.path} request timed out after ${Math.ceil(defaultProviderRequestTimeoutMs / 1000)} seconds`);
218
217
  }
219
218
  throw new ProviderRequestError(502, error instanceof Error
220
219
  ? `Kontent.ai ${input.path} request failed: ${error.message}`
@@ -1,9 +1,8 @@
1
1
  import { compactObject, optionalRecord, optionalString, requiredString } from "../../core/cast.js";
2
- import { createProviderTimeout, defineApiKeyProviderExecutors, defineProviderProxy, isAbortLikeError, providerInputError, providerUserAgent, ProviderRequestError, } from "../provider-runtime.js";
2
+ import { createProviderTimeout, defineApiKeyProviderExecutors, defineProviderProxy, isAbortLikeError, providerInputError, providerUserAgent, ProviderRequestError, defaultProviderRequestTimeoutMs, } from "../provider-runtime.js";
3
3
  const service = "l2s";
4
4
  const l2sApiBaseUrl = "https://api.l2s.is";
5
5
  const l2sValidationPath = "/user/setting";
6
- const l2sDefaultRequestTimeoutMs = 30_000;
7
6
  export const l2sActionHandlers = {
8
7
  shorten_url(input, context) {
9
8
  return l2sRequest(context, {
@@ -74,7 +73,7 @@ async function validateL2sCredential(context) {
74
73
  };
75
74
  }
76
75
  async function l2sRequest(context, input) {
77
- const timeout = createProviderTimeout(context.signal, l2sDefaultRequestTimeoutMs);
76
+ const timeout = createProviderTimeout(context.signal);
78
77
  try {
79
78
  const response = await context.fetcher(new URL(input.path, l2sApiBaseUrl), {
80
79
  method: input.method,
@@ -98,7 +97,7 @@ async function l2sRequest(context, input) {
98
97
  throw error;
99
98
  }
100
99
  if (timeout.didTimeout() || isAbortLikeError(error)) {
101
- throw new ProviderRequestError(504, `L2S ${input.path} request timed out after ${Math.max(1, Math.ceil(l2sDefaultRequestTimeoutMs / 1000))} seconds`);
100
+ throw new ProviderRequestError(504, `L2S ${input.path} request timed out after ${Math.max(1, Math.ceil(defaultProviderRequestTimeoutMs / 1000))} seconds`);
102
101
  }
103
102
  throw new ProviderRequestError(502, error instanceof Error ? `L2S request failed: ${error.message}` : "L2S request failed");
104
103
  }
@@ -147,7 +147,7 @@ async function createLatchshotError(response, phase) {
147
147
  const text = await readProviderTextBody(response, "Latchshot error response", latchshotJsonMaxBytes);
148
148
  const message = extractLatchshotErrorMessage(text) ?? `Latchshot request failed with HTTP ${response.status}.`;
149
149
  if (phase === "validate" && (response.status === 401 || response.status === 403)) {
150
- return new ProviderRequestError(400, message);
150
+ return providerInputError(message);
151
151
  }
152
152
  if ([400, 401, 403, 413, 429].includes(response.status)) {
153
153
  return new ProviderRequestError(response.status, message);
@@ -240,7 +240,7 @@ function requireObject(value, message) {
240
240
  if (record) {
241
241
  return record;
242
242
  }
243
- throw new ProviderRequestError(502, message);
243
+ throw providerResponseError(message);
244
244
  }
245
245
  function requireNonNegativeInteger(value, fieldName, positive = false) {
246
246
  const resolved = optionalInteger(value);
@@ -1,7 +1,7 @@
1
1
  import { isIP } from "node:net";
2
2
  import { domainToASCII } from "node:url";
3
3
  import { optionalRecord, requiredString } from "../../core/cast.js";
4
- import { createProviderTimeout, getProviderActionHandler, ProviderRequestError, providerUserAgent, requiredResponseRecord, } from "../provider-runtime.js";
4
+ import { createProviderTimeout, getProviderActionHandler, ProviderRequestError, providerUserAgent, requiredResponseRecord, providerInputError, } from "../provider-runtime.js";
5
5
  export const leadboxerApiBaseUrl = "https://api.leadboxer.com";
6
6
  const leadboxerValidationEndpoint = "/v1/management/credits";
7
7
  const leadboxerActionHandlers = {
@@ -14,7 +14,7 @@ const leadboxerActionHandlers = {
14
14
  };
15
15
  export async function validateLeadboxerCredential(input, fetcher) {
16
16
  const payload = await requestLeadboxerJson({
17
- apiKey: requiredString(input.apiKey, "apiKey", (message) => new ProviderRequestError(400, message)),
17
+ apiKey: requiredString(input.apiKey, "apiKey", providerInputError),
18
18
  path: leadboxerValidationEndpoint,
19
19
  fetcher,
20
20
  phase: "validate",
@@ -153,7 +153,7 @@ function createLeadboxerError(response, payload, phase) {
153
153
  return new ProviderRequestError(429, message);
154
154
  }
155
155
  if (phase === "validate" && response.status >= 400 && response.status < 500) {
156
- return new ProviderRequestError(400, message);
156
+ return providerInputError(message);
157
157
  }
158
158
  if (phase === "execute" && response.status === 401) {
159
159
  return new ProviderRequestError(401, message);
@@ -162,7 +162,7 @@ function createLeadboxerError(response, payload, phase) {
162
162
  return new ProviderRequestError(403, message);
163
163
  }
164
164
  if (phase === "execute" && (response.status === 400 || response.status === 404 || response.status === 409)) {
165
- return new ProviderRequestError(400, message);
165
+ return providerInputError(message);
166
166
  }
167
167
  return new ProviderRequestError(response.status || 500, message);
168
168
  }
@@ -1,5 +1,5 @@
1
1
  import { optionalRecord, optionalString, 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 leadiqApiBaseUrl = "https://api.leadiq.com";
4
4
  export const leadiqGraphqlPath = "/graphql";
5
5
  const accountQuery = `
@@ -108,7 +108,7 @@ function requireAdvancedSearchFilter(input) {
108
108
  }
109
109
  function requireAnyStringField(input, fields, message) {
110
110
  if (!fields.some((field) => typeof input[field] === "string" && input[field].trim().length > 0)) {
111
- throw new ProviderRequestError(400, message);
111
+ throw providerInputError(message);
112
112
  }
113
113
  }
114
114
  export async function validateLeadiqCredential(input, fetcher) {
@@ -197,9 +197,9 @@ function mapLeadiqError(status, message, phase) {
197
197
  return new ProviderRequestError(429, message);
198
198
  }
199
199
  if (status >= 400 && status < 500) {
200
- return new ProviderRequestError(400, message);
200
+ return providerInputError(message);
201
201
  }
202
- return new ProviderRequestError(502, message);
202
+ return providerResponseError(message);
203
203
  }
204
204
  function requireGraphqlObject(data, field) {
205
205
  const value = optionalRecord(data[field]);
@@ -153,7 +153,7 @@ function mapLinguapopError(status, message, phase) {
153
153
  return new ProviderRequestError(401, message);
154
154
  }
155
155
  if (status >= 400 && status < 500) {
156
- return new ProviderRequestError(400, message);
156
+ return providerInputError(message);
157
157
  }
158
158
  return new ProviderRequestError(status || 502, message);
159
159
  }
@@ -1,8 +1,7 @@
1
1
  import { optionalRawString, optionalRecord, optionalString } from "../../core/cast.js";
2
- import { createProviderTimeout, providerUserAgent, ProviderRequestError, requiredResponseRecord, } from "../provider-runtime.js";
2
+ import { createProviderTimeout, providerUserAgent, ProviderRequestError, requiredResponseRecord, providerInputError, defaultProviderRequestTimeoutMs, } from "../provider-runtime.js";
3
3
  export const lingvanexTranslationApiBaseUrl = "https://api-gl.lingvanex.com";
4
4
  const translationPath = "/language/translate/v2";
5
- const requestTimeoutMs = 30_000;
6
5
  export const lingvanexTranslationApiActionHandlers = {
7
6
  translate_text(input, context) {
8
7
  return translateText(input, context);
@@ -122,7 +121,7 @@ async function requestLingvanexJson(input, context, phase) {
122
121
  }
123
122
  }
124
123
  url.searchParams.set("key", context.apiKey);
125
- const timeout = createProviderTimeout(context.signal, requestTimeoutMs);
124
+ const timeout = createProviderTimeout(context.signal);
126
125
  let response;
127
126
  let payload;
128
127
  try {
@@ -138,7 +137,7 @@ async function requestLingvanexJson(input, context, phase) {
138
137
  }
139
138
  catch (error) {
140
139
  if (timeout.didTimeout()) {
141
- throw new ProviderRequestError(504, `Lingvanex request timed out after ${requestTimeoutMs / 1000} seconds`);
140
+ throw new ProviderRequestError(504, `Lingvanex request timed out after ${defaultProviderRequestTimeoutMs / 1000} seconds`);
142
141
  }
143
142
  throw new ProviderRequestError(502, error instanceof Error ? `Lingvanex request failed: ${error.message}` : "Lingvanex request failed");
144
143
  }
@@ -168,13 +167,13 @@ function createLingvanexError(status, payload, phase) {
168
167
  return new ProviderRequestError(429, message);
169
168
  }
170
169
  if (phase === "validate" && (status === 400 || status === 401 || status === 403)) {
171
- return new ProviderRequestError(400, message);
170
+ return providerInputError(message);
172
171
  }
173
172
  if (status === 401 || status === 403) {
174
173
  return new ProviderRequestError(status, message);
175
174
  }
176
175
  if (status === 400) {
177
- return new ProviderRequestError(400, message);
176
+ return providerInputError(message);
178
177
  }
179
178
  return new ProviderRequestError(status >= 500 ? 502 : status, message);
180
179
  }
@@ -5,9 +5,8 @@ import { createHash } from "node:crypto";
5
5
  import { optionalNumber, optionalRecord, optionalString, 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 lingxingMcpHost = "openmcp.lingxing.com";
10
- const lingxingRequestTimeoutMs = 30_000;
11
10
  const lingxingToolIntervalMs = 1_000;
12
11
  const maximumTrackedRateLimitKeys = 1_024;
13
12
  class InMemoryLingxingMcpRateLimiter {
@@ -137,7 +136,7 @@ export async function callLingxingTool(context, input) {
137
136
  name: toolName,
138
137
  arguments: argumentsValue,
139
138
  }, {
140
- timeout: lingxingRequestTimeoutMs,
139
+ timeout: defaultProviderRequestTimeoutMs,
141
140
  signal: context.signal,
142
141
  });
143
142
  return normalizeLingxingMcpToolResult(toolName, toolResult);
@@ -147,7 +146,7 @@ export async function callLingxingTool(context, input) {
147
146
  async function discoverLingxingTools(context) {
148
147
  return withLingxingMcpClient(context, async (client) => {
149
148
  const result = await client.listTools({}, {
150
- timeout: lingxingRequestTimeoutMs,
149
+ timeout: defaultProviderRequestTimeoutMs,
151
150
  signal: context.signal,
152
151
  });
153
152
  return result.tools.map((tool) => {