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