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