@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 { optionalRecord, optionalString } from "../../core/cast.js";
2
- import { createProviderTimeout, isAbortLikeError, ProviderRequestError, providerUserAgent, } from "../provider-runtime.js";
2
+ import { createProviderTimeout, isAbortLikeError, ProviderRequestError, providerUserAgent, providerInputError, providerResponseError, } from "../provider-runtime.js";
3
3
  export const onfleetApiBaseUrl = "https://onfleet.com/api/v2";
4
4
  export const onfleetActionHandlers = {
5
5
  async create_task(input, context) {
@@ -127,7 +127,7 @@ function createOnfleetError(response, payload, phase) {
127
127
  response.statusText ||
128
128
  `Onfleet request failed with status ${response.status}`;
129
129
  if (phase === "validate" && (response.status === 401 || response.status === 403)) {
130
- return new ProviderRequestError(400, message);
130
+ return providerInputError(message);
131
131
  }
132
132
  if (response.status === 400 || response.status === 404 || response.status === 422) {
133
133
  return new ProviderRequestError(response.status, message);
@@ -165,6 +165,6 @@ function requireObject(value, label) {
165
165
  }
166
166
  function requireArray(value, message) {
167
167
  if (!Array.isArray(value))
168
- throw new ProviderRequestError(502, message);
168
+ throw providerResponseError(message);
169
169
  return value.map((item) => requireObject(item, "Onfleet task"));
170
170
  }
@@ -1,13 +1,13 @@
1
1
  import { createHash } from "node:crypto";
2
2
  import { objectArray, optionalInteger, optionalRecord, optionalString } from "../../core/cast.js";
3
3
  import { assertPublicHttpUrl, isPrivateNetworkAccessAllowed } from "../../core/request.js";
4
- import { createProviderTimeout, providerUserAgent, ProviderRequestError } from "../provider-runtime.js";
4
+ import { createProviderTimeout, providerUserAgent, ProviderRequestError, providerInputError, } from "../provider-runtime.js";
5
5
  export function normalizePortalUrl(value, allowPrivateNetwork = isPrivateNetworkAccessAllowed()) {
6
6
  if (typeof value !== "string" || !value.trim())
7
7
  throw new ProviderRequestError(400, "portalUrl is required");
8
8
  const url = assertPublicHttpUrl(value.trim(), {
9
9
  fieldName: "portalUrl",
10
- createError: (message) => new ProviderRequestError(400, message),
10
+ createError: providerInputError,
11
11
  allowPrivateNetwork,
12
12
  });
13
13
  if (url.protocol !== "https:")
@@ -172,11 +172,11 @@ function mapError(status, payload, phase) {
172
172
  optionalString(root?.message) ??
173
173
  `ONLYOFFICE DocSpace request failed with ${status}`;
174
174
  if (phase === "validate" && (status === 401 || status === 403))
175
- return new ProviderRequestError(400, message);
175
+ return providerInputError(message);
176
176
  if (status === 401)
177
177
  return new ProviderRequestError(401, message);
178
178
  if ([400, 403, 404, 409, 422].includes(status))
179
- return new ProviderRequestError(400, message);
179
+ return providerInputError(message);
180
180
  if (status === 429)
181
181
  return new ProviderRequestError(429, message);
182
182
  return new ProviderRequestError(status >= 500 ? 502 : status, message);
@@ -1,8 +1,7 @@
1
1
  import { optionalInteger, optionalRecord, optionalString, requiredString } from "../../core/cast.js";
2
2
  import { assertPublicHttpUrl } from "../../core/request.js";
3
- import { createProviderTimeout, isAbortLikeError, providerInputError, providerUserAgent, ProviderRequestError, } from "../provider-runtime.js";
3
+ import { createProviderTimeout, isAbortLikeError, providerInputError, providerUserAgent, ProviderRequestError, defaultProviderRequestTimeoutMs, } from "../provider-runtime.js";
4
4
  export const oomnitzaValidationPath = "/api/v3/assets";
5
- const oomnitzaRequestTimeoutMs = 30_000;
6
5
  export const oomnitzaActionHandlers = {
7
6
  async identify(_input, context) {
8
7
  return {
@@ -92,7 +91,7 @@ export function resolveOomnitzaCredential(apiKey, baseUrlInput) {
92
91
  };
93
92
  }
94
93
  async function requestOomnitzaJson(input) {
95
- const timeout = createProviderTimeout(input.signal, oomnitzaRequestTimeoutMs);
94
+ const timeout = createProviderTimeout(input.signal);
96
95
  try {
97
96
  const response = await input.fetcher(buildOomnitzaUrl(input.baseUrl, input.path, input.query), {
98
97
  method: "GET",
@@ -114,7 +113,7 @@ async function requestOomnitzaJson(input) {
114
113
  throw error;
115
114
  }
116
115
  if (timeout.didTimeout() || isAbortLikeError(error)) {
117
- throw new ProviderRequestError(504, `Oomnitza request timed out after ${Math.ceil(oomnitzaRequestTimeoutMs / 1000)} seconds`);
116
+ throw new ProviderRequestError(504, `Oomnitza request timed out after ${Math.ceil(defaultProviderRequestTimeoutMs / 1000)} seconds`);
118
117
  }
119
118
  const message = error instanceof Error && error.message.trim() ? error.message : "request failed";
120
119
  throw new ProviderRequestError(502, `Oomnitza request failed: ${message}`);
@@ -1,5 +1,5 @@
1
1
  import { compactObject, optionalBoolean, optionalInteger, optionalRecord, optionalString, requiredString, } from "../../core/cast.js";
2
- import { defineApiKeyProviderExecutors, defineProviderProxy, providerUserAgent, ProviderRequestError, } from "../provider-runtime.js";
2
+ import { defineApiKeyProviderExecutors, defineProviderProxy, providerUserAgent, ProviderRequestError, providerInputError, } from "../provider-runtime.js";
3
3
  const service = "otter_ai";
4
4
  const otterAiApiBaseUrl = "https://api.otter.ai";
5
5
  const otterAiValidationPath = "/v1/workspace";
@@ -171,7 +171,7 @@ function otterAiError(status, message, phase) {
171
171
  return new ProviderRequestError(429, message);
172
172
  }
173
173
  if (phase === "validate" && (status === 401 || status === 403)) {
174
- return new ProviderRequestError(400, message);
174
+ return providerInputError(message);
175
175
  }
176
176
  if (status === 400 || status === 404 || status === 422) {
177
177
  return new ProviderRequestError(status, message);
@@ -180,7 +180,7 @@ function mapOuraError(input) {
180
180
  return new ProviderRequestError(input.phase === "validate" ? 400 : 401, message);
181
181
  }
182
182
  if (input.status === 400 || input.status === 422 || (input.status === 404 && input.notFoundAsInvalidInput)) {
183
- return new ProviderRequestError(400, message);
183
+ return providerInputError(message);
184
184
  }
185
185
  return new ProviderRequestError(input.status, message);
186
186
  }
@@ -1,5 +1,5 @@
1
1
  import { compactObject, optionalRecord, optionalString } from "../../core/cast.js";
2
- import { defineApiKeyProviderExecutors, defineProviderProxy, ProviderRequestError, providerUserAgent, } from "../provider-runtime.js";
2
+ import { defineApiKeyProviderExecutors, defineProviderProxy, ProviderRequestError, providerUserAgent, providerInputError, } from "../provider-runtime.js";
3
3
  const service = "paddle";
4
4
  const paddleApiBaseUrl = "https://api.paddle.com";
5
5
  const paddleValidationPath = "/products";
@@ -203,13 +203,13 @@ function createPaddleError(response, payload, phase) {
203
203
  return new ProviderRequestError(429, message);
204
204
  }
205
205
  if (phase === "validate" && (response.status === 401 || response.status === 403)) {
206
- return new ProviderRequestError(400, message);
206
+ return providerInputError(message);
207
207
  }
208
208
  if (phase === "execute" && (response.status === 401 || response.status === 403)) {
209
209
  return new ProviderRequestError(401, message);
210
210
  }
211
211
  if (phase === "execute" && [400, 404, 422].includes(response.status)) {
212
- return new ProviderRequestError(400, message);
212
+ return providerInputError(message);
213
213
  }
214
214
  return new ProviderRequestError(response.status || 500, message);
215
215
  }
@@ -1,5 +1,5 @@
1
1
  import { compactObject, optionalBoolean, optionalIntegerLike, optionalString, requiredString, } 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 pagerDutyApiBaseUrl = "https://api.pagerduty.com";
4
4
  const pagerDutyAcceptHeader = "application/vnd.pagerduty+json;version=2";
5
5
  export const pagerDutyActionHandlers = {
@@ -241,7 +241,7 @@ function mapPagerDutyError(response, payload, phase, notFoundAsInvalidInput) {
241
241
  return new ProviderRequestError(response.status, message);
242
242
  }
243
243
  if (response.status === 404 && notFoundAsInvalidInput) {
244
- return new ProviderRequestError(400, message);
244
+ return providerInputError(message);
245
245
  }
246
246
  if (response.status === 429) {
247
247
  return new ProviderRequestError(429, message);
@@ -1,5 +1,5 @@
1
1
  import { compactObject, looseArray, optionalRecord, optionalString, requiredString } from "../../core/cast.js";
2
- import { defineApiKeyProviderExecutors, ProviderRequestError, providerUserAgent } from "../provider-runtime.js";
2
+ import { defineApiKeyProviderExecutors, ProviderRequestError, providerUserAgent, providerInputError, providerResponseError, } from "../provider-runtime.js";
3
3
  export const paradymApiBaseUrl = "https://api.paradym.id";
4
4
  export const paradymActionHandlers = {
5
5
  list_projects(input, context) {
@@ -277,15 +277,15 @@ function unwrapParadymData(payload) {
277
277
  function mapParadymError(status, payload, mode) {
278
278
  const message = readErrorMessage(payload) ?? `Paradym API request failed with status ${status}`;
279
279
  if (status === 401 || status === 403) {
280
- return mode === "validate" ? new ProviderRequestError(400, message) : new ProviderRequestError(401, message);
280
+ return mode === "validate" ? providerInputError(message) : new ProviderRequestError(401, message);
281
281
  }
282
282
  if (status === 400 || status === 404 || status === 422) {
283
- return new ProviderRequestError(400, message);
283
+ return providerInputError(message);
284
284
  }
285
285
  if (status === 429) {
286
286
  return new ProviderRequestError(429, message);
287
287
  }
288
- return new ProviderRequestError(502, message);
288
+ return providerResponseError(message);
289
289
  }
290
290
  function readErrorMessage(payload) {
291
291
  const body = optionalRecord(payload);
@@ -1,5 +1,5 @@
1
1
  import { compactObject, optionalString, requiredString } from "../../core/cast.js";
2
- import { defineApiKeyProviderExecutors, ProviderRequestError, providerUserAgent } from "../provider-runtime.js";
2
+ import { defineApiKeyProviderExecutors, ProviderRequestError, providerUserAgent, providerInputError, providerResponseError, } from "../provider-runtime.js";
3
3
  export const parallelApiBaseUrl = "https://api.parallel.ai";
4
4
  export const parallelActionHandlers = {
5
5
  async search(input, context) {
@@ -174,7 +174,7 @@ function mapParallelHttpError(status, payload, phase) {
174
174
  return new ProviderRequestError(429, message);
175
175
  }
176
176
  if (phase === "validate" && status >= 400 && status < 500) {
177
- return new ProviderRequestError(400, message);
177
+ return providerInputError(message);
178
178
  }
179
179
  if (status === 408) {
180
180
  return new ProviderRequestError(504, message);
@@ -182,7 +182,7 @@ function mapParallelHttpError(status, payload, phase) {
182
182
  if (status === 401 || status === 403 || status === 404 || status === 422) {
183
183
  return new ProviderRequestError(status === 404 ? 404 : 400, message);
184
184
  }
185
- return new ProviderRequestError(502, message);
185
+ return providerResponseError(message);
186
186
  }
187
187
  function readParallelErrorMessage(payload) {
188
188
  const record = asRecord(payload);
@@ -193,7 +193,7 @@ function createPartnerStackTransportError(error) {
193
193
  const message = error instanceof Error && error.message.trim()
194
194
  ? `PartnerStack Partner request failed: ${error.message}`
195
195
  : "PartnerStack Partner request failed";
196
- return new ProviderRequestError(502, message);
196
+ return providerResponseError(message);
197
197
  }
198
198
  function extractErrorMessage(payload) {
199
199
  if (typeof payload === "string") {
@@ -1,7 +1,6 @@
1
1
  import { compactObject, optionalBoolean, optionalInteger, optionalNumber, optionalString, requiredString, } from "../../core/cast.js";
2
- import { createProviderTimeout, ProviderRequestError, providerUserAgent } from "../provider-runtime.js";
2
+ import { createProviderTimeout, ProviderRequestError, providerUserAgent, providerInputError, defaultProviderRequestTimeoutMs, } from "../provider-runtime.js";
3
3
  export const payrexxApiBaseUrl = "https://api.payrexx.com/v1.16";
4
- const requestTimeoutMs = 30_000;
5
4
  export const payrexxActionHandlers = {
6
5
  async list_payment_providers(input, fetcher) {
7
6
  const payload = await requestPayrexxJson({
@@ -88,7 +87,7 @@ export const payrexxActionHandlers = {
88
87
  },
89
88
  };
90
89
  export async function validatePayrexxCredential(input, fetcher) {
91
- const apiKey = requiredString(input.apiKey, "apiKey", (message) => new ProviderRequestError(400, message));
90
+ const apiKey = requiredString(input.apiKey, "apiKey", providerInputError);
92
91
  const instance = requireInputString(input.instance, "instance");
93
92
  const payload = await requestPayrexxJson({
94
93
  path: "/PaymentProvider/",
@@ -134,7 +133,7 @@ async function requestPayrexxJson(input) {
134
133
  }
135
134
  headers.set("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
136
135
  }
137
- const timeout = createProviderTimeout(undefined, requestTimeoutMs);
136
+ const timeout = createProviderTimeout(undefined);
138
137
  try {
139
138
  const response = await input.fetcher(url, {
140
139
  method: input.method,
@@ -152,7 +151,7 @@ async function requestPayrexxJson(input) {
152
151
  if (error instanceof ProviderRequestError)
153
152
  throw error;
154
153
  if (timeout.didTimeout() && isAbortError(error)) {
155
- throw new ProviderRequestError(502, `payrexx request timed out after ${Math.ceil(requestTimeoutMs / 1000)} seconds`);
154
+ throw new ProviderRequestError(502, `payrexx request timed out after ${Math.ceil(defaultProviderRequestTimeoutMs / 1000)} seconds`);
156
155
  }
157
156
  throw new ProviderRequestError(502, readErrorMessage(error));
158
157
  }
@@ -180,7 +179,7 @@ function normalizePayrexxError(response, payload, phase) {
180
179
  return new ProviderRequestError(429, message);
181
180
  }
182
181
  if (phase === "validate" && response.status < 500) {
183
- return new ProviderRequestError(400, message);
182
+ return providerInputError(message);
184
183
  }
185
184
  if (response.status === 401 ||
186
185
  response.status === 403 ||
@@ -1,5 +1,5 @@
1
1
  import { optionalInteger, optionalString, recordOrEmpty } from "../../core/cast.js";
2
- import { createProviderTimeout, providerUserAgent, ProviderRequestError } from "../provider-runtime.js";
2
+ import { createProviderTimeout, providerUserAgent, ProviderRequestError, providerInputError, } from "../provider-runtime.js";
3
3
  export const permitIoApiBaseUrl = "https://api.permit.io";
4
4
  export const permitIoActionHandlers = {
5
5
  list_users(input, context) {
@@ -160,7 +160,7 @@ function permitIoError(response, payload, phase) {
160
160
  return new ProviderRequestError(phase === "validate" ? 400 : response.status, message);
161
161
  }
162
162
  if (response.status === 404 || response.status === 422) {
163
- return new ProviderRequestError(400, message);
163
+ return providerInputError(message);
164
164
  }
165
165
  if (response.status === 429) {
166
166
  return new ProviderRequestError(429, message);
@@ -1,8 +1,7 @@
1
1
  import { compactObject, optionalRawString, optionalRecord, optionalString } from "../../core/cast.js";
2
- import { createProviderTimeout, defineApiKeyProviderExecutors, defineProviderProxy, isAbortLikeError, providerUserAgent, ProviderRequestError, requiredInputString, } from "../provider-runtime.js";
2
+ import { createProviderTimeout, defineApiKeyProviderExecutors, defineProviderProxy, isAbortLikeError, providerUserAgent, ProviderRequestError, requiredInputString, providerInputError, defaultProviderRequestTimeoutMs, } from "../provider-runtime.js";
3
3
  const service = "pinboard";
4
4
  const pinboardApiBaseUrl = "https://api.pinboard.in/v1";
5
- const requestTimeoutMs = 30_000;
6
5
  const pinboardActionHandlers = {
7
6
  async get_last_update(_input, context) {
8
7
  const payload = await requestPinboardJson({ path: "/posts/update" }, context, "execute");
@@ -101,7 +100,7 @@ async function requestPinboardJson(input, context, phase) {
101
100
  url.searchParams.set(key, value);
102
101
  }
103
102
  }
104
- const timeout = createProviderTimeout(context.signal, requestTimeoutMs);
103
+ const timeout = createProviderTimeout(context.signal);
105
104
  try {
106
105
  const response = await context.fetcher(url, {
107
106
  method: "GET",
@@ -122,7 +121,7 @@ async function requestPinboardJson(input, context, phase) {
122
121
  throw error;
123
122
  }
124
123
  if (timeout.didTimeout() || isAbortLikeError(error)) {
125
- throw new ProviderRequestError(504, `Pinboard request timed out after ${requestTimeoutMs / 1000} seconds`);
124
+ throw new ProviderRequestError(504, `Pinboard request timed out after ${defaultProviderRequestTimeoutMs / 1000} seconds`);
126
125
  }
127
126
  throw new ProviderRequestError(502, error instanceof Error ? `Pinboard request failed: ${error.message}` : "Pinboard request failed", error);
128
127
  }
@@ -148,7 +147,7 @@ function createPinboardError(status, statusText, payload, phase) {
148
147
  return new ProviderRequestError(phase === "validate" ? 400 : status, message);
149
148
  }
150
149
  if (status === 400 || status === 404) {
151
- return new ProviderRequestError(400, message);
150
+ return providerInputError(message);
152
151
  }
153
152
  return new ProviderRequestError(status || 502, message);
154
153
  }
@@ -212,7 +211,7 @@ function readResultOutput(payload) {
212
211
  throw new ProviderRequestError(502, "Pinboard result response is missing result code");
213
212
  }
214
213
  if (resultCode !== "done") {
215
- throw new ProviderRequestError(400, resultCode);
214
+ throw providerInputError(resultCode);
216
215
  }
217
216
  return { resultCode };
218
217
  }
@@ -1,5 +1,5 @@
1
1
  import { optionalInteger, optionalRecord, optionalString } from "../../core/cast.js";
2
- import { createProviderTimeout, ProviderRequestError, providerUserAgent } from "../provider-runtime.js";
2
+ import { createProviderTimeout, ProviderRequestError, providerUserAgent, providerInputError, } from "../provider-runtime.js";
3
3
  export async function validatePinpointCredential(input, fetcher) {
4
4
  const apiKey = requireString(input.apiKey, "apiKey");
5
5
  const apiBaseUrl = normalizePinpointApiBaseUrl(input.subdomain);
@@ -152,7 +152,7 @@ function createPinpointError(status, payload, phase) {
152
152
  if (status === 429)
153
153
  return new ProviderRequestError(429, message);
154
154
  if (400 <= status && status < 500)
155
- return new ProviderRequestError(400, message);
155
+ return providerInputError(message);
156
156
  return new ProviderRequestError(status || 502, message);
157
157
  }
158
158
  function extractPinpointError(payload) {
@@ -1,6 +1,6 @@
1
1
  import { optionalInteger, optionalRecord, optionalString, requiredString } from "../../core/cast.js";
2
2
  import { compactObject } from "../../core/cast.js";
3
- import { providerUserAgent, ProviderRequestError } from "../provider-runtime.js";
3
+ import { providerUserAgent, ProviderRequestError, providerInputError } from "../provider-runtime.js";
4
4
  export const placidApiBaseUrl = "https://api.placid.app";
5
5
  const templatesPath = "/api/rest/templates";
6
6
  const imagesPath = "/api/rest/images";
@@ -147,13 +147,13 @@ function createPlacidError(status, payload, phase) {
147
147
  optionalString(record?.detail) ??
148
148
  `placid request failed with status ${status}`;
149
149
  if (status === 401 && phase === "validate") {
150
- return new ProviderRequestError(400, message);
150
+ return providerInputError(message);
151
151
  }
152
152
  if (status === 401 && phase === "execute") {
153
153
  return new ProviderRequestError(401, message);
154
154
  }
155
155
  if (status === 400 || status === 404 || status === 422) {
156
- return new ProviderRequestError(400, message);
156
+ return providerInputError(message);
157
157
  }
158
158
  return new ProviderRequestError(status === 429 ? 429 : status >= 500 ? 502 : status, message);
159
159
  }
@@ -1,5 +1,5 @@
1
1
  import { compactObject, optionalRecord, optionalString, requiredRecord, requiredString } from "../../core/cast.js";
2
- import { providerUserAgent, ProviderRequestError } from "../provider-runtime.js";
2
+ import { providerUserAgent, ProviderRequestError, providerInputError, providerResponseError, } from "../provider-runtime.js";
3
3
  export const plainApiUrl = "https://core-api.uk.plain.com/graphql/v1";
4
4
  const customerSelection = `
5
5
  id
@@ -246,9 +246,9 @@ function createPlainGraphqlError(errors, phase) {
246
246
  code === "BAD_USER_INPUT" ||
247
247
  code === "GRAPHQL_VALIDATION_FAILED" ||
248
248
  code === "GRAPHQL_PARSE_FAILED") {
249
- return new ProviderRequestError(400, message);
249
+ return providerInputError(message);
250
250
  }
251
- return new ProviderRequestError(502, message);
251
+ return providerResponseError(message);
252
252
  }
253
253
  function mapPlainMutationError(error) {
254
254
  const message = readString(error.message, "plain mutation error message");
@@ -258,9 +258,9 @@ function mapPlainMutationError(error) {
258
258
  return new ProviderRequestError(401, message);
259
259
  }
260
260
  if (type === "INTERNAL" || code === "internal") {
261
- return new ProviderRequestError(502, message);
261
+ return providerResponseError(message);
262
262
  }
263
- return new ProviderRequestError(400, message);
263
+ return providerInputError(message);
264
264
  }
265
265
  function buildUpsertCustomerInput(input) {
266
266
  const identifier = requiredRecord(input.identifier, "identifier");
@@ -1,5 +1,5 @@
1
1
  import { optionalRecord, optionalString, compactObject } 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 planetScaleApiBaseUrl = "https://api.planetscale.com/v1/";
4
4
  function requireApiKey(input) {
5
5
  const value = optionalString(input.apiKey);
@@ -193,7 +193,7 @@ function createPlanetScaleError(status, payload) {
193
193
  return new ProviderRequestError(status, message);
194
194
  }
195
195
  if (status == 400 || status == 404 || status == 409 || status == 422) {
196
- return new ProviderRequestError(400, message);
196
+ return providerInputError(message);
197
197
  }
198
198
  return new ProviderRequestError(status >= 500 ? status : 502, message);
199
199
  }
@@ -1,5 +1,5 @@
1
1
  import { compactObject, objectArray, optionalRawString, optionalRecord, optionalString, requiredString, } from "../../core/cast.js";
2
- import { createProviderTimeout, defineApiKeyProviderExecutors, defineProviderProxy, providerUserAgent, ProviderRequestError, readProviderTextBody, } from "../provider-runtime.js";
2
+ import { createProviderTimeout, defineApiKeyProviderExecutors, defineProviderProxy, providerUserAgent, ProviderRequestError, readProviderTextBody, providerInputError, providerResponseError, } from "../provider-runtime.js";
3
3
  const service = "planhat";
4
4
  const apiBaseUrl = "https://api.planhat.com";
5
5
  const maxResponseBytes = 10 * 1024 * 1024;
@@ -241,17 +241,17 @@ function pickQuery(input, keys) {
241
241
  function readObject(value, message) {
242
242
  const record = optionalRecord(value);
243
243
  if (!record) {
244
- throw new ProviderRequestError(502, message);
244
+ throw providerResponseError(message);
245
245
  }
246
246
  return record;
247
247
  }
248
248
  function readArray(value, message) {
249
- return objectArray(value, message, () => new ProviderRequestError(502, message));
249
+ return objectArray(value, message, () => providerResponseError(message));
250
250
  }
251
251
  function requiredProviderString(value, message) {
252
252
  const text = optionalRawString(value);
253
253
  if (!text?.trim()) {
254
- throw new ProviderRequestError(502, message);
254
+ throw providerResponseError(message);
255
255
  }
256
256
  return text;
257
257
  }
@@ -276,13 +276,13 @@ function createPlanhatError(status, statusText, payload, phase) {
276
276
  return new ProviderRequestError(429, message);
277
277
  }
278
278
  if (phase === "validate" && (status === 401 || status === 403)) {
279
- return new ProviderRequestError(400, message);
279
+ return providerInputError(message);
280
280
  }
281
281
  if (phase === "execute" && (status === 401 || status === 403)) {
282
282
  return new ProviderRequestError(401, message);
283
283
  }
284
284
  if (status === 400 || status === 404 || status === 422) {
285
- return new ProviderRequestError(400, message);
285
+ return providerInputError(message);
286
286
  }
287
287
  return new ProviderRequestError(status >= 500 || status < 400 ? 502 : status, message);
288
288
  }
@@ -1,6 +1,6 @@
1
1
  import { compactObject, optionalRecord, optionalString, requiredString } from "../../core/cast.js";
2
2
  import { assertPublicHttpUrl } from "../../core/request.js";
3
- import { providerUserAgent, ProviderRequestError } from "../provider-runtime.js";
3
+ import { providerUserAgent, ProviderRequestError, providerInputError } from "../provider-runtime.js";
4
4
  export const plausibleDefaultBaseUrl = "https://plausible.io";
5
5
  const statsPath = "/api/v2/query";
6
6
  const eventsPath = "/api/event";
@@ -127,7 +127,7 @@ function createPlausibleError(status, payload, phase, notFoundAsInvalidInput = f
127
127
  return new ProviderRequestError(429, message);
128
128
  }
129
129
  if ((status === 404 && notFoundAsInvalidInput) || status === 400 || status === 422) {
130
- return new ProviderRequestError(400, message);
130
+ return providerInputError(message);
131
131
  }
132
132
  return new ProviderRequestError(status >= 500 ? 502 : status, message);
133
133
  }
@@ -159,7 +159,7 @@ export function normalizePlausibleBaseUrl(value) {
159
159
  }
160
160
  const url = assertPublicHttpUrl(value, {
161
161
  fieldName: "baseUrl",
162
- createError: (message) => new ProviderRequestError(400, message),
162
+ createError: providerInputError,
163
163
  });
164
164
  if (url.protocol !== "https:") {
165
165
  throw new ProviderRequestError(400, "Base URL must use https");
@@ -1,6 +1,6 @@
1
1
  import { compactObject, looseArray, optionalBoolean, optionalRawString, optionalString } from "../../core/cast.js";
2
2
  import { assertPublicHttpUrl } from "../../core/request.js";
3
- import { ProviderRequestError, providerUserAgent } from "../provider-runtime.js";
3
+ import { ProviderRequestError, providerUserAgent, providerInputError } from "../provider-runtime.js";
4
4
  const posthogUserAgent = providerUserAgent;
5
5
  const posthogValidationPath = "/api/users/@me/";
6
6
  export const posthogActionHandlers = {
@@ -1313,7 +1313,7 @@ function mapPosthogError(input) {
1313
1313
  return new ProviderRequestError(429, message);
1314
1314
  }
1315
1315
  if (input.status === 404 && input.notFoundAsInvalidInput) {
1316
- return new ProviderRequestError(400, message);
1316
+ return providerInputError(message);
1317
1317
  }
1318
1318
  if ([400, 409, 422].includes(input.status))
1319
1319
  return new ProviderRequestError(400, message, undefined, "invalid_input");
@@ -1326,7 +1326,7 @@ function normalizePosthogBaseUrl(value) {
1326
1326
  }
1327
1327
  const parsed = assertPublicHttpUrl(baseUrl, {
1328
1328
  fieldName: "Base URL",
1329
- createError: (message) => new ProviderRequestError(400, message),
1329
+ createError: providerInputError,
1330
1330
  });
1331
1331
  if (parsed.protocol !== "https:") {
1332
1332
  throw new ProviderRequestError(400, "Base URL must use https");
@@ -1,5 +1,5 @@
1
1
  import { optionalInteger, optionalRawString, optionalRecord, optionalString } from "../../core/cast.js";
2
- import { createProviderTimeout, defineApiKeyProviderExecutors, defineProviderProxy, providerUserAgent, ProviderRequestError, readProviderTextBody, } from "../provider-runtime.js";
2
+ import { createProviderTimeout, defineApiKeyProviderExecutors, defineProviderProxy, providerUserAgent, ProviderRequestError, readProviderTextBody, providerInputError, providerResponseError, } from "../provider-runtime.js";
3
3
  const service = "predis_ai";
4
4
  const apiBaseUrl = "https://brain.predis.ai/predis_api/v1";
5
5
  const createContentPath = "/create_content/";
@@ -218,9 +218,9 @@ function createPredisAiError(status, payload, phase) {
218
218
  return new ProviderRequestError(429, message);
219
219
  }
220
220
  if (status >= 400 && status < 500) {
221
- return new ProviderRequestError(400, message);
221
+ return providerInputError(message);
222
222
  }
223
- return new ProviderRequestError(502, message);
223
+ return providerResponseError(message);
224
224
  }
225
225
  function readErrorMessage(payload) {
226
226
  const record = optionalRecord(payload);
@@ -1,5 +1,5 @@
1
1
  import { compactObject, optionalBoolean, optionalNumber, optionalRawString, optionalRecord, optionalString, } from "../../core/cast.js";
2
- import { createProviderTimeout, isAbortLikeError, providerUserAgent, ProviderRequestError, } from "../provider-runtime.js";
2
+ import { createProviderTimeout, isAbortLikeError, providerUserAgent, ProviderRequestError, providerInputError, } from "../provider-runtime.js";
3
3
  export const printavoApiBaseUrl = "https://www.printavo.com/api/v2";
4
4
  const identifyQuery = `
5
5
  query PrintavoIdentify {
@@ -369,7 +369,7 @@ async function readPrintavoPayload(response) {
369
369
  function createPrintavoError(status, payload, phase) {
370
370
  const message = extractPrintavoErrorMessage(payload) ?? `Printavo request failed with status ${status}`;
371
371
  if (phase === "validate" && status >= 400 && status < 500) {
372
- return new ProviderRequestError(400, message);
372
+ return providerInputError(message);
373
373
  }
374
374
  return new ProviderRequestError(status || 500, message);
375
375
  }
@@ -1,7 +1,6 @@
1
1
  import { compactObject, optionalRecord, optionalString, requiredString } from "../../core/cast.js";
2
- import { defineApiKeyProviderExecutors, isAbortLikeError, ProviderRequestError, providerUserAgent, } from "../provider-runtime.js";
2
+ import { defineApiKeyProviderExecutors, isAbortLikeError, ProviderRequestError, providerUserAgent, defaultProviderRequestTimeoutMs, } from "../provider-runtime.js";
3
3
  export const prospeoApiBaseUrl = "https://api.prospeo.io";
4
- const defaultRequestTimeoutMs = 30_000;
5
4
  export const prospeoActionHandlers = {
6
5
  async get_account_information(_input, context) {
7
6
  const payload = await requestProspeoJson({
@@ -104,7 +103,7 @@ export async function validateProspeoCredential(input, fetcher) {
104
103
  export const executors = defineApiKeyProviderExecutors("prospeo", prospeoActionHandlers);
105
104
  async function requestProspeoJson(input, context) {
106
105
  const controller = new AbortController();
107
- const timeout = setTimeout(() => controller.abort(), defaultRequestTimeoutMs);
106
+ const timeout = setTimeout(() => controller.abort(), defaultProviderRequestTimeoutMs);
108
107
  try {
109
108
  const response = await context.fetcher(buildProspeoUrl(input.path), {
110
109
  method: input.method,
@@ -1,5 +1,6 @@
1
1
  import type { ProviderErrorCode } from "../core/provider-error-codes.ts";
2
2
  import type { ProviderDispatchContext, ProviderHttpDispatchOptions } from "../core/provider-http-dispatch.ts";
3
+ import type { ProviderNetworkPolicy } from "../core/provider-network-policy.ts";
3
4
  import type { ActionExecutor, ExecutionContext, ExecutionResult, ProviderExecutors, ProviderProxyExecutor, ProxyExecutionResult, ProxyResponse, ResolvedCredential, TransitFileWriter } from "../core/types.ts";
4
5
  import type { ProviderActionNames } from "./action-contracts.generated.ts";
5
6
  /**
@@ -7,9 +8,11 @@ import type { ProviderActionNames } from "./action-contracts.generated.ts";
7
8
  */
8
9
  export type ProviderFetch = typeof fetch;
9
10
  export interface ProviderFetchOptions {
11
+ /** Bind runtime policy; private targets still require the transport's allowPrivateNetwork opt-in. */
12
+ network?: ProviderNetworkPolicy;
10
13
  /** Base transport; defaults to the global fetch. A guarded fetch is unwrapped so guards never stack. */
11
14
  fetch?: ProviderFetch;
12
- /** Allow private-network targets for this provider's egress (see `assertPublicHttpUrl`); default public-only. */
15
+ /** Opt into runtime private-network permission with isPrivateNetworkAccessAllowed; omitted keeps targets public-only. */
13
16
  allowPrivateNetwork?: () => boolean;
14
17
  /**
15
18
  * Skip the DNS resolved-address check (URL and redirect guards still apply).
@@ -310,6 +313,8 @@ export interface ProviderProxyDefinition {
310
313
  maxResponseBytes?: number;
311
314
  }
312
315
  export declare const defaultProviderJsonMaxResponseBytes: number;
316
+ /** Shared request budget for native AbortSignal and SDK timeout APIs. */
317
+ export declare const defaultProviderRequestTimeoutMs = 30000;
313
318
  export declare function createProviderProxyUrl(baseUrl: string, endpointInput: unknown, queryInput?: unknown, allowedOrigins?: readonly string[]): URL;
314
319
  export declare function normalizeProviderProxyEndpoint(endpointInput: unknown, allowedOrigins?: readonly string[]): string;
315
320
  export declare function normalizeProviderProxyQuery(queryInput: unknown): Record<string, string>;
@@ -444,6 +449,13 @@ export declare function uploadProviderUrlToTransitFile(input: {
444
449
  * Read a user-uploaded transit file reference from action input.
445
450
  */
446
451
  export declare function readTransitFileInput(input: unknown, context: Pick<ApiKeyProviderContext, "transitFiles">): Promise<ProviderInputFile>;
452
+ /**
453
+ * The action error code a provider request failure reports: the provider's own
454
+ * code when it chose one, else one inferred from the upstream status. A
455
+ * provider that needs to react to the classification, such as retrying a rate
456
+ * limit, reads it here instead of re-deriving it from the status.
457
+ */
458
+ export declare function providerRequestErrorCode(error: ProviderRequestError): ProviderErrorCode;
447
459
  /**
448
460
  * Map provider runtime failures to the standard action execution result.
449
461
  */