@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, optionalRecord, optionalString, requiredString } from "../../core/cast.js";
|
|
2
|
-
import { basicAuthorizationHeader, createProviderTimeout, ProviderRequestError, providerUserAgent, } from "../provider-runtime.js";
|
|
2
|
+
import { basicAuthorizationHeader, createProviderTimeout, ProviderRequestError, providerUserAgent, providerInputError, } from "../provider-runtime.js";
|
|
3
3
|
import { createHash } from "node:crypto";
|
|
4
4
|
const clickhelpRequestTimeoutMs = 60_000;
|
|
5
5
|
export const clickhelpActionHandlers = {
|
|
@@ -186,10 +186,10 @@ export function normalizeClickhelpApiBaseUrl(value) {
|
|
|
186
186
|
}
|
|
187
187
|
}
|
|
188
188
|
function resolveActionCredential(input) {
|
|
189
|
-
return resolveClickhelpCredential(requiredString(input.apiKey, "apiKey",
|
|
189
|
+
return resolveClickhelpCredential(requiredString(input.apiKey, "apiKey", providerInputError), input.providerMetadata?.login ?? input.values?.login, input.providerMetadata?.apiBaseUrl ?? input.values?.portalUrl);
|
|
190
190
|
}
|
|
191
191
|
function resolveClickhelpCredential(apiKeyInput, loginInput, portalUrlInput) {
|
|
192
|
-
const apiKey = requiredString(apiKeyInput, "apiKey",
|
|
192
|
+
const apiKey = requiredString(apiKeyInput, "apiKey", providerInputError).trim();
|
|
193
193
|
if (!apiKey) {
|
|
194
194
|
throw new ProviderRequestError(400, "apiKey is required");
|
|
195
195
|
}
|
|
@@ -203,13 +203,13 @@ function resolveClickhelpCredential(apiKeyInput, loginInput, portalUrlInput) {
|
|
|
203
203
|
}
|
|
204
204
|
function mapClickhelpError(status, message, phase) {
|
|
205
205
|
if (phase === "validate" && (status === 401 || status === 403 || status === 404)) {
|
|
206
|
-
return
|
|
206
|
+
return providerInputError(message);
|
|
207
207
|
}
|
|
208
208
|
if (phase === "execute" && status === 401) {
|
|
209
209
|
return new ProviderRequestError(401, message);
|
|
210
210
|
}
|
|
211
211
|
if ([400, 403, 404, 409, 422].includes(status)) {
|
|
212
|
-
return
|
|
212
|
+
return providerInputError(message);
|
|
213
213
|
}
|
|
214
214
|
if (status === 429) {
|
|
215
215
|
return new ProviderRequestError(429, message);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Buffer } from "node:buffer";
|
|
2
2
|
import { compactObject, optionalInteger, optionalNumber, optionalRecord, optionalString } from "../../core/cast.js";
|
|
3
3
|
import { assertPublicHttpUrl, isPrivateNetworkAccessAllowed } from "../../core/request.js";
|
|
4
|
-
import { createProviderTimeout, isAbortLikeError, providerUserAgent, ProviderRequestError, } from "../provider-runtime.js";
|
|
4
|
+
import { createProviderTimeout, isAbortLikeError, providerUserAgent, ProviderRequestError, providerInputError, } from "../provider-runtime.js";
|
|
5
5
|
const clickhouseDefaultDatabase = "default";
|
|
6
6
|
const clickhouseValidationQuery = "SELECT currentDatabase() AS database, version() AS version";
|
|
7
7
|
export const clickhouseActionHandlers = {
|
|
@@ -363,10 +363,10 @@ function parseClickhouseJson(text) {
|
|
|
363
363
|
function createClickhouseError(status, responseText, phase) {
|
|
364
364
|
const message = responseText.trim() || `ClickHouse request failed with ${status}`;
|
|
365
365
|
if (phase === "validate" && [400, 401, 403].includes(status)) {
|
|
366
|
-
return
|
|
366
|
+
return providerInputError(message);
|
|
367
367
|
}
|
|
368
368
|
if ([400, 404, 422].includes(status)) {
|
|
369
|
-
return
|
|
369
|
+
return providerInputError(message);
|
|
370
370
|
}
|
|
371
371
|
if (status === 429) {
|
|
372
372
|
return new ProviderRequestError(429, message);
|
|
@@ -377,7 +377,7 @@ export function normalizeClickhouseBaseUrl(value, allowPrivateNetwork = isPrivat
|
|
|
377
377
|
const raw = requireCredentialString(value, "baseUrl");
|
|
378
378
|
const url = assertPublicHttpUrl(raw, {
|
|
379
379
|
fieldName: "baseUrl",
|
|
380
|
-
createError:
|
|
380
|
+
createError: providerInputError,
|
|
381
381
|
allowPrivateNetwork,
|
|
382
382
|
});
|
|
383
383
|
url.hash = "";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { optionalRecord, optionalString, requiredString } from "../../core/cast.js";
|
|
2
|
-
import { providerInputError, providerUserAgent, ProviderRequestError, runProviderRequest, } from "../provider-runtime.js";
|
|
2
|
+
import { providerInputError, providerUserAgent, ProviderRequestError, runProviderRequest, providerResponseError, } from "../provider-runtime.js";
|
|
3
3
|
export const clinicalKeyApiBaseUrl = "https://api.elsevier.com/sushi/r51";
|
|
4
4
|
export const clinicalKeyPlatformCode = "ck";
|
|
5
5
|
export const clinicalKeyActionHandlers = {
|
|
@@ -135,7 +135,7 @@ function createClinicalKeyError(status, payload, phase) {
|
|
|
135
135
|
return new ProviderRequestError(429, message);
|
|
136
136
|
}
|
|
137
137
|
if (phase === "validate" && status >= 400 && status < 500) {
|
|
138
|
-
return
|
|
138
|
+
return providerInputError(message);
|
|
139
139
|
}
|
|
140
140
|
if (status === 401 || status === 403) {
|
|
141
141
|
return new ProviderRequestError(401, message);
|
|
@@ -143,7 +143,7 @@ function createClinicalKeyError(status, payload, phase) {
|
|
|
143
143
|
if (status >= 400 && status < 500) {
|
|
144
144
|
return new ProviderRequestError(502, message, status);
|
|
145
145
|
}
|
|
146
|
-
return
|
|
146
|
+
return providerResponseError(message);
|
|
147
147
|
}
|
|
148
148
|
function extractClinicalKeyErrorMessage(payload) {
|
|
149
149
|
if (typeof payload === "string") {
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { optionalBoolean, optionalNumber } from "../../core/cast.js";
|
|
2
|
-
import { createProviderTimeout, providerUserAgent, ProviderRequestError, requiredResponseRecord, } from "../provider-runtime.js";
|
|
2
|
+
import { createProviderTimeout, providerUserAgent, ProviderRequestError, requiredResponseRecord, providerInputError, defaultProviderRequestTimeoutMs, } from "../provider-runtime.js";
|
|
3
3
|
export const clinicalTrialsGovApiBaseUrl = "https://clinicaltrials.gov/api/v2";
|
|
4
|
-
const requestTimeoutMs = 30_000;
|
|
5
4
|
export const maxResponseBytes = 16 * 1024 * 1024;
|
|
6
5
|
const maxBatchIdsPerRequest = 100;
|
|
7
6
|
const maxRequestUrlBytes = 7_000;
|
|
@@ -357,7 +356,7 @@ async function requestStudyView(nctId, fields, markupFormat, fetcher) {
|
|
|
357
356
|
async function requestStudyBatches(nctIds, fields, markupFormat, fetcher) {
|
|
358
357
|
const studies = [];
|
|
359
358
|
const responseBudget = { consumedBytes: 0, maxBytes: maxResponseBytes };
|
|
360
|
-
const deadlineAt = Date.now() +
|
|
359
|
+
const deadlineAt = Date.now() + defaultProviderRequestTimeoutMs;
|
|
361
360
|
for (let start = 0; start < nctIds.length; start += maxBatchIdsPerRequest) {
|
|
362
361
|
const remainingTimeMs = deadlineAt - Date.now();
|
|
363
362
|
if (remainingTimeMs <= 0) {
|
|
@@ -378,7 +377,7 @@ async function requestStudyBatch(nctIds, fields, markupFormat, fetcher, response
|
|
|
378
377
|
const payload = requiredResponseRecord(await requestJson("/studies", query, fetcher, false, responseBudget, timeoutMs), "ClinicalTrials.gov batch studies response");
|
|
379
378
|
return requireRecordArray(payload.studies, "ClinicalTrials.gov batch studies response studies");
|
|
380
379
|
}
|
|
381
|
-
async function requestJson(path, query, fetcher, allowNotFound = false, responseBudget, timeoutMs =
|
|
380
|
+
async function requestJson(path, query, fetcher, allowNotFound = false, responseBudget, timeoutMs = defaultProviderRequestTimeoutMs) {
|
|
382
381
|
const url = new URL(`${clinicalTrialsGovApiBaseUrl}${path}`);
|
|
383
382
|
url.search = query.toString();
|
|
384
383
|
assertRequestUrlWithinLimit(url);
|
|
@@ -512,7 +511,7 @@ function requestTimeoutError() {
|
|
|
512
511
|
function mapResponseError(status, body) {
|
|
513
512
|
const message = body.trim().slice(0, 4_096) || `ClinicalTrials.gov request failed with status ${status}`;
|
|
514
513
|
if (status === 400 || status === 404) {
|
|
515
|
-
return
|
|
514
|
+
return providerInputError(message);
|
|
516
515
|
}
|
|
517
516
|
if (status === 429) {
|
|
518
517
|
return new ProviderRequestError(429, message);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { compactObject, optionalBoolean, optionalInteger, optionalRecord, optionalString } from "../../core/cast.js";
|
|
2
|
-
import { providerUserAgent, ProviderRequestError } from "../provider-runtime.js";
|
|
2
|
+
import { providerUserAgent, ProviderRequestError, providerInputError, providerResponseError, } from "../provider-runtime.js";
|
|
3
3
|
const clockifyApiBaseUrl = "https://api.clockify.me/api/v1";
|
|
4
4
|
export const clockifyActionHandlers = {
|
|
5
5
|
get_current_user(input, context) {
|
|
@@ -335,16 +335,16 @@ async function readClockifyPayload(response) {
|
|
|
335
335
|
function createClockifyError(response, payload, phase) {
|
|
336
336
|
const message = readClockifyErrorMessage(payload) ?? `Clockify request failed with status ${response.status}`;
|
|
337
337
|
if (phase === "validate" && (response.status === 401 || response.status === 403)) {
|
|
338
|
-
return
|
|
338
|
+
return providerInputError(message);
|
|
339
339
|
}
|
|
340
340
|
if (response.status === 404) {
|
|
341
|
-
return
|
|
341
|
+
return providerInputError(message);
|
|
342
342
|
}
|
|
343
343
|
if (response.status === 429) {
|
|
344
344
|
return new ProviderRequestError(429, message);
|
|
345
345
|
}
|
|
346
346
|
if (response.status >= 500) {
|
|
347
|
-
return
|
|
347
|
+
return providerResponseError(message);
|
|
348
348
|
}
|
|
349
349
|
return new ProviderRequestError(response.status, message);
|
|
350
350
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Buffer } from "node:buffer";
|
|
2
2
|
import { compactObject, optionalBoolean, optionalInteger, optionalRecord, optionalString } from "../../core/cast.js";
|
|
3
|
-
import { createProviderTimeout, isAbortLikeError, providerUserAgent, ProviderRequestError, requiredResponseRecord, } from "../provider-runtime.js";
|
|
3
|
+
import { createProviderTimeout, isAbortLikeError, providerUserAgent, ProviderRequestError, requiredResponseRecord, providerInputError, } from "../provider-runtime.js";
|
|
4
4
|
export const closeApiBaseUrl = "https://api.close.com/api/v1";
|
|
5
5
|
export const closeActionHandlers = {
|
|
6
6
|
list_leads(input, context) {
|
|
@@ -241,10 +241,10 @@ function buildCloseError(status, payload, mode) {
|
|
|
241
241
|
optionalString(payload.message) ??
|
|
242
242
|
`Close request failed with status ${status || 502}`;
|
|
243
243
|
if (mode === "validation" && (status === 401 || status === 403)) {
|
|
244
|
-
return
|
|
244
|
+
return providerInputError(message);
|
|
245
245
|
}
|
|
246
246
|
if (status === 400 || status === 404) {
|
|
247
|
-
return
|
|
247
|
+
return providerInputError(message);
|
|
248
248
|
}
|
|
249
249
|
if (status === 429) {
|
|
250
250
|
return new ProviderRequestError(429, message);
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { Buffer } from "node:buffer";
|
|
2
2
|
import { compactObject, optionalIntegerLike, optionalNumber, optionalRecord, optionalString } from "../../core/cast.js";
|
|
3
3
|
import { assertPublicHttpUrl } from "../../core/request.js";
|
|
4
|
-
import { createProviderTimeout, isAbortLikeError, providerUserAgent, ProviderRequestError, } from "../provider-runtime.js";
|
|
4
|
+
import { createProviderTimeout, isAbortLikeError, providerUserAgent, ProviderRequestError, providerInputError, defaultProviderRequestTimeoutMs, } from "../provider-runtime.js";
|
|
5
5
|
const cloudconvertApiBaseUrl = "https://api.cloudconvert.com/v2";
|
|
6
6
|
const cloudconvertSyncApiBaseUrl = "https://sync.api.cloudconvert.com/v2";
|
|
7
|
-
const cloudconvertDefaultRequestTimeoutMs = 30_000;
|
|
8
7
|
const cloudconvertWaitRequestTimeoutMs = 300_000;
|
|
9
8
|
const cloudconvertJobTasksInclude = ["tasks"];
|
|
10
9
|
const reservedConvertTaskOptionKeys = new Set([
|
|
@@ -307,7 +306,7 @@ function buildConversionTypeQuery(input) {
|
|
|
307
306
|
function buildUrlConversionJobPayload(input) {
|
|
308
307
|
const sourceUrl = assertPublicHttpUrl(requireInputString(input.sourceUrl, "sourceUrl"), {
|
|
309
308
|
fieldName: "sourceUrl",
|
|
310
|
-
createError:
|
|
309
|
+
createError: providerInputError,
|
|
311
310
|
}).toString();
|
|
312
311
|
const outputFormat = requireInputString(input.outputFormat, "outputFormat");
|
|
313
312
|
const conversionOptions = optionalRecord(input.conversionOptions) ?? {};
|
|
@@ -449,7 +448,7 @@ async function cloudconvertFetch(input) {
|
|
|
449
448
|
headers.set("content-type", "application/json");
|
|
450
449
|
body = JSON.stringify(input.body);
|
|
451
450
|
}
|
|
452
|
-
const timeout = createProviderTimeout(input.signal, input.timeoutMs
|
|
451
|
+
const timeout = createProviderTimeout(input.signal, input.timeoutMs);
|
|
453
452
|
try {
|
|
454
453
|
return await input.fetcher(url, {
|
|
455
454
|
method: input.method ?? "GET",
|
|
@@ -460,7 +459,7 @@ async function cloudconvertFetch(input) {
|
|
|
460
459
|
}
|
|
461
460
|
catch (error) {
|
|
462
461
|
if (isAbortLikeError(error) && timeout.didTimeout()) {
|
|
463
|
-
throw new ProviderRequestError(504, `CloudConvert ${input.path} request timed out after ${Math.max(1, Math.ceil((input.timeoutMs ??
|
|
462
|
+
throw new ProviderRequestError(504, `CloudConvert ${input.path} request timed out after ${Math.max(1, Math.ceil((input.timeoutMs ?? defaultProviderRequestTimeoutMs) / 1000))} seconds`);
|
|
464
463
|
}
|
|
465
464
|
throw new ProviderRequestError(502, `CloudConvert ${input.path} request failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
466
465
|
}
|
|
@@ -472,13 +471,13 @@ async function toCloudconvertError(response, phase, notFoundAsInvalidInput) {
|
|
|
472
471
|
const payload = await readCloudconvertPayload(response);
|
|
473
472
|
const message = extractCloudconvertErrorMessage(payload, response.status);
|
|
474
473
|
if (phase === "validate" && (response.status === 401 || response.status === 403)) {
|
|
475
|
-
return
|
|
474
|
+
return providerInputError(message);
|
|
476
475
|
}
|
|
477
476
|
if (response.status === 400 || response.status === 422) {
|
|
478
|
-
return
|
|
477
|
+
return providerInputError(message);
|
|
479
478
|
}
|
|
480
479
|
if (response.status === 404 && notFoundAsInvalidInput) {
|
|
481
|
-
return
|
|
480
|
+
return providerInputError(message);
|
|
482
481
|
}
|
|
483
482
|
if (response.status === 429) {
|
|
484
483
|
return new ProviderRequestError(429, message);
|
|
@@ -550,7 +549,7 @@ function readOptionalPositiveInteger(value, fieldName) {
|
|
|
550
549
|
if (value == null) {
|
|
551
550
|
return undefined;
|
|
552
551
|
}
|
|
553
|
-
const parsed = optionalIntegerLike(value, fieldName,
|
|
552
|
+
const parsed = optionalIntegerLike(value, fieldName, providerInputError);
|
|
554
553
|
if (parsed === undefined || parsed <= 0) {
|
|
555
554
|
throw new ProviderRequestError(400, `${fieldName} must be a positive integer`);
|
|
556
555
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { compactObject, optionalBoolean, optionalInteger, optionalRecord, optionalString } from "../../core/cast.js";
|
|
2
2
|
import { queryParams } from "../../core/request.js";
|
|
3
|
-
import { ProviderRequestError, providerUserAgent } from "../provider-runtime.js";
|
|
3
|
+
import { ProviderRequestError, providerUserAgent, providerInputError } from "../provider-runtime.js";
|
|
4
4
|
import { readCloudflareCurrentUser } from "./runtime-user.js";
|
|
5
5
|
const cloudflareApiBaseUrl = "https://api.cloudflare.com/client/v4";
|
|
6
6
|
export const cloudflareDnsActionHandlers = {
|
|
@@ -277,7 +277,7 @@ function normalizeCloudflareError(response, envelope, phase) {
|
|
|
277
277
|
return new ProviderRequestError(429, message);
|
|
278
278
|
}
|
|
279
279
|
if (phase === "validate" && [400, 401, 403, 404].includes(response.status)) {
|
|
280
|
-
return
|
|
280
|
+
return providerInputError(message);
|
|
281
281
|
}
|
|
282
282
|
if (phase === "execute" && (response.status === 400 || response.status === 404)) {
|
|
283
283
|
return new ProviderRequestError(response.status, message);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { compactObject, optionalBoolean, optionalInteger, optionalNumber, optionalRecord, optionalString, } from "../../core/cast.js";
|
|
2
2
|
import { queryParams } from "../../core/request.js";
|
|
3
|
-
import { ProviderRequestError, providerUserAgent } from "../provider-runtime.js";
|
|
3
|
+
import { ProviderRequestError, providerUserAgent, providerInputError } from "../provider-runtime.js";
|
|
4
4
|
export const cloudflareEmailRoutingApiBaseUrl = "https://api.cloudflare.com/client/v4";
|
|
5
5
|
export const cloudflareEmailRoutingActionHandlers = {
|
|
6
6
|
list_routing_rules(input, context) {
|
|
@@ -182,7 +182,7 @@ function normalizeError(response, envelope, phase) {
|
|
|
182
182
|
if (response.status === 429)
|
|
183
183
|
return new ProviderRequestError(429, message);
|
|
184
184
|
if (phase === "validate" && [400, 401, 403, 404].includes(response.status))
|
|
185
|
-
return
|
|
185
|
+
return providerInputError(message);
|
|
186
186
|
return new ProviderRequestError(response.status >= 500 ? 502 : response.status, message);
|
|
187
187
|
}
|
|
188
188
|
function readErrorMessage(envelope) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { base64Bytes, compactObject, integer, optionalInteger, optionalRecord, optionalString, requiredRawString, requiredString, } from "../../core/cast.js";
|
|
2
2
|
import { assertPublicHttpUrl, queryParams, readBoundedResponseBytes, storeResponseInTransit, } from "../../core/request.js";
|
|
3
3
|
import { readCloudflareCurrentUser } from "../cloudflare_dns/runtime-user.js";
|
|
4
|
-
import { combineProviderActionHandlers, providerFetch, providerInputError, ProviderRequestError, providerUserAgent, runProviderRequest, } from "../provider-runtime.js";
|
|
4
|
+
import { combineProviderActionHandlers, providerFetch, providerInputError, ProviderRequestError, providerUserAgent, runProviderRequest, providerResponseError, } from "../provider-runtime.js";
|
|
5
5
|
import { cloudflareR2AccountActionHandlers } from "./runtime-account.js";
|
|
6
6
|
import { cloudflareR2BucketSettingsActionHandlers } from "./runtime-bucket-settings.js";
|
|
7
7
|
import { cloudflareR2DomainActionHandlers } from "./runtime-domains.js";
|
|
@@ -48,8 +48,8 @@ export const cloudflareR2ActionHandlers = combineProviderActionHandlers("cloudfl
|
|
|
48
48
|
},
|
|
49
49
|
});
|
|
50
50
|
export async function validateCloudflareR2Credential(values, fetcher, signal) {
|
|
51
|
-
const apiToken = requiredString(values.apiKey, "apiKey",
|
|
52
|
-
const accountId = requiredString(values.accountId, "accountId",
|
|
51
|
+
const apiToken = requiredString(values.apiKey, "apiKey", providerInputError);
|
|
52
|
+
const accountId = requiredString(values.accountId, "accountId", providerInputError);
|
|
53
53
|
const envelope = await cloudflareR2RequestEnvelope(apiToken, {
|
|
54
54
|
path: `/accounts/${encodeURIComponent(accountId)}/r2/buckets`,
|
|
55
55
|
query: { per_page: 1 },
|
|
@@ -327,7 +327,7 @@ async function downloadSourceFile(sourceUrl, signal) {
|
|
|
327
327
|
// An upstream 401/403 is not our authorization failure, so it must not
|
|
328
328
|
// pass through as this action's own status.
|
|
329
329
|
const message = `failed to download sourceUrl: ${response.status} ${response.statusText}`.trim();
|
|
330
|
-
throw response.status >= 500 ?
|
|
330
|
+
throw response.status >= 500 ? providerResponseError(message) : providerInputError(message);
|
|
331
331
|
}
|
|
332
332
|
const bytes = await readBoundedResponseBytes(response, {
|
|
333
333
|
maxBytes: maxSourceBytes,
|
|
@@ -558,7 +558,7 @@ function normalizeCloudflareR2Error(response, envelope, phase) {
|
|
|
558
558
|
return new ProviderRequestError(429, message);
|
|
559
559
|
}
|
|
560
560
|
if (phase === "validate" && [400, 401, 403, 404].includes(response.status)) {
|
|
561
|
-
return
|
|
561
|
+
return providerInputError(message);
|
|
562
562
|
}
|
|
563
563
|
if (phase === "execute" && (response.status === 400 || response.status === 404)) {
|
|
564
564
|
return new ProviderRequestError(response.status, message);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { compactObject, optionalBoolean, optionalInteger, optionalRecord, optionalString, requiredString, } from "../../core/cast.js";
|
|
2
2
|
import { queryParams } from "../../core/request.js";
|
|
3
3
|
import { readCloudflareCurrentUser } from "../cloudflare_dns/runtime-user.js";
|
|
4
|
-
import { ProviderRequestError, providerUserAgent } from "../provider-runtime.js";
|
|
4
|
+
import { ProviderRequestError, providerUserAgent, providerInputError } from "../provider-runtime.js";
|
|
5
5
|
const cloudflareApiBaseUrl = "https://api.cloudflare.com/client/v4";
|
|
6
6
|
const defaultModuleName = "main.js";
|
|
7
7
|
const defaultModuleContentType = "application/javascript+module";
|
|
@@ -83,8 +83,8 @@ export const cloudflareWorkerActionHandlers = {
|
|
|
83
83
|
},
|
|
84
84
|
};
|
|
85
85
|
export async function validateCloudflareWorkerCredential(values, fetcher, signal) {
|
|
86
|
-
const apiToken = requiredString(values.apiKey, "apiKey",
|
|
87
|
-
const accountId = requiredString(values.accountId, "accountId",
|
|
86
|
+
const apiToken = requiredString(values.apiKey, "apiKey", providerInputError);
|
|
87
|
+
const accountId = requiredString(values.accountId, "accountId", providerInputError);
|
|
88
88
|
let verificationResult;
|
|
89
89
|
try {
|
|
90
90
|
verificationResult = await verifyCloudflareWorkerToken(apiToken, "/user/tokens/verify", { fetcher, signal });
|
|
@@ -266,7 +266,7 @@ async function searchWorkerScripts(input, context) {
|
|
|
266
266
|
}
|
|
267
267
|
async function listBuildTriggers(input, context) {
|
|
268
268
|
const accountId = resolveAccountId(input, context);
|
|
269
|
-
const scriptTag = requiredString(input.scriptTag, "scriptTag",
|
|
269
|
+
const scriptTag = requiredString(input.scriptTag, "scriptTag", providerInputError);
|
|
270
270
|
const envelope = await requestEnvelope(context, {
|
|
271
271
|
path: `/accounts/${encodeURIComponent(accountId)}/builds/workers/${encodeURIComponent(scriptTag)}/triggers`,
|
|
272
272
|
}, "execute");
|
|
@@ -274,7 +274,7 @@ async function listBuildTriggers(input, context) {
|
|
|
274
274
|
}
|
|
275
275
|
async function createManualBuild(input, context) {
|
|
276
276
|
const accountId = resolveAccountId(input, context);
|
|
277
|
-
const triggerUuid = requiredString(input.triggerUuid, "triggerUuid",
|
|
277
|
+
const triggerUuid = requiredString(input.triggerUuid, "triggerUuid", providerInputError);
|
|
278
278
|
const branch = optionalString(input.branch);
|
|
279
279
|
const commitHash = optionalString(input.commitHash);
|
|
280
280
|
if (!branch && !commitHash) {
|
|
@@ -293,7 +293,7 @@ async function createManualBuild(input, context) {
|
|
|
293
293
|
}
|
|
294
294
|
async function listBuilds(input, context) {
|
|
295
295
|
const accountId = resolveAccountId(input, context);
|
|
296
|
-
const scriptTag = requiredString(input.scriptTag, "scriptTag",
|
|
296
|
+
const scriptTag = requiredString(input.scriptTag, "scriptTag", providerInputError);
|
|
297
297
|
const envelope = await requestEnvelope(context, {
|
|
298
298
|
path: `/accounts/${encodeURIComponent(accountId)}/builds/workers/${encodeURIComponent(scriptTag)}/builds`,
|
|
299
299
|
query: {
|
|
@@ -308,13 +308,13 @@ async function listBuilds(input, context) {
|
|
|
308
308
|
}
|
|
309
309
|
async function getBuild(input, context) {
|
|
310
310
|
const accountId = resolveAccountId(input, context);
|
|
311
|
-
const buildUuid = requiredString(input.buildUuid, "buildUuid",
|
|
311
|
+
const buildUuid = requiredString(input.buildUuid, "buildUuid", providerInputError);
|
|
312
312
|
const envelope = await requestEnvelope(context, { path: `/accounts/${encodeURIComponent(accountId)}/builds/builds/${encodeURIComponent(buildUuid)}` }, "execute");
|
|
313
313
|
return { build: normalizeBuild(envelope.result) };
|
|
314
314
|
}
|
|
315
315
|
async function getBuildLogs(input, context) {
|
|
316
316
|
const accountId = resolveAccountId(input, context);
|
|
317
|
-
const buildUuid = requiredString(input.buildUuid, "buildUuid",
|
|
317
|
+
const buildUuid = requiredString(input.buildUuid, "buildUuid", providerInputError);
|
|
318
318
|
const envelope = await requestEnvelope(context, {
|
|
319
319
|
path: `/accounts/${encodeURIComponent(accountId)}/builds/builds/${encodeURIComponent(buildUuid)}/logs`,
|
|
320
320
|
query: { cursor: optionalString(input.cursor) },
|
|
@@ -328,7 +328,7 @@ async function getBuildLogs(input, context) {
|
|
|
328
328
|
}
|
|
329
329
|
async function cancelBuild(input, context) {
|
|
330
330
|
const accountId = resolveAccountId(input, context);
|
|
331
|
-
const buildUuid = requiredString(input.buildUuid, "buildUuid",
|
|
331
|
+
const buildUuid = requiredString(input.buildUuid, "buildUuid", providerInputError);
|
|
332
332
|
const envelope = await requestEnvelope(context, {
|
|
333
333
|
method: "PUT",
|
|
334
334
|
path: `/accounts/${encodeURIComponent(accountId)}/builds/builds/${encodeURIComponent(buildUuid)}/cancel`,
|
|
@@ -713,7 +713,7 @@ function normalizeCloudflareError(response, envelope, phase) {
|
|
|
713
713
|
return new ProviderRequestError(429, message);
|
|
714
714
|
}
|
|
715
715
|
if (phase === "validate" && [400, 401, 403, 404].includes(response.status)) {
|
|
716
|
-
return
|
|
716
|
+
return providerInputError(message);
|
|
717
717
|
}
|
|
718
718
|
if (phase === "execute" && (response.status === 400 || response.status === 404)) {
|
|
719
719
|
return new ProviderRequestError(response.status, message);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { optionalInteger, optionalRecord, optionalString, requiredRecord, requiredString } from "../../core/cast.js";
|
|
2
2
|
import { assertPublicHttpUrl } from "../../core/request.js";
|
|
3
|
-
import { providerInputError, ProviderRequestError, providerUserAgent } from "../provider-runtime.js";
|
|
3
|
+
import { providerInputError, ProviderRequestError, providerUserAgent, providerResponseError, } from "../provider-runtime.js";
|
|
4
4
|
const cloudinaryApiBaseUrl = "https://api.cloudinary.com/v1_1";
|
|
5
5
|
export const cloudinaryActionHandlers = {
|
|
6
6
|
upload_asset(input, context) {
|
|
@@ -179,7 +179,7 @@ function createCloudinaryError(status, payload, phase, fallbackMessage) {
|
|
|
179
179
|
return new ProviderRequestError(429, message);
|
|
180
180
|
}
|
|
181
181
|
if (phase === "validate" && (status === 400 || status === 401 || status === 403)) {
|
|
182
|
-
return
|
|
182
|
+
return providerInputError(message);
|
|
183
183
|
}
|
|
184
184
|
if (phase === "execute" && (status === 400 || status === 404 || status === 409)) {
|
|
185
185
|
return new ProviderRequestError(status === 409 ? 409 : 400, message);
|
|
@@ -229,7 +229,7 @@ function normalizeCloudinaryAsset(payload) {
|
|
|
229
229
|
}
|
|
230
230
|
function readCloudinaryRecord(payload, label) {
|
|
231
231
|
try {
|
|
232
|
-
return requiredRecord(payload, label,
|
|
232
|
+
return requiredRecord(payload, label, providerResponseError);
|
|
233
233
|
}
|
|
234
234
|
catch {
|
|
235
235
|
throw new ProviderRequestError(502, `${label} is not an object`);
|
|
@@ -255,7 +255,7 @@ function readCloudinaryUploadSource(input) {
|
|
|
255
255
|
if (fileUrl) {
|
|
256
256
|
return assertPublicHttpUrl(fileUrl, {
|
|
257
257
|
fieldName: "fileUrl",
|
|
258
|
-
createError:
|
|
258
|
+
createError: providerInputError,
|
|
259
259
|
}).toString();
|
|
260
260
|
}
|
|
261
261
|
return fileDataUri;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { compactObject, optionalBoolean, optionalInteger, optionalNumber, optionalRecord, optionalString, requiredRecord, } from "../../core/cast.js";
|
|
2
2
|
import { assertPublicHttpUrl } from "../../core/request.js";
|
|
3
|
-
import { ProviderRequestError, providerUserAgent } from "../provider-runtime.js";
|
|
3
|
+
import { ProviderRequestError, providerUserAgent, providerInputError, providerResponseError, } from "../provider-runtime.js";
|
|
4
4
|
const cloudlayerApiBaseUrl = "https://api.cloudlayer.io";
|
|
5
5
|
const cloudlayerAccountPath = "/v2/account";
|
|
6
6
|
const cloudlayerJobsPath = "/v2/jobs";
|
|
@@ -149,13 +149,13 @@ function createCloudlayerError(response, payload, phase) {
|
|
|
149
149
|
return new ProviderRequestError(429, message);
|
|
150
150
|
}
|
|
151
151
|
if ((response.status === 401 || response.status === 403) && phase === "validate") {
|
|
152
|
-
return
|
|
152
|
+
return providerInputError(message);
|
|
153
153
|
}
|
|
154
154
|
if (response.status === 401 || response.status === 403) {
|
|
155
155
|
return new ProviderRequestError(401, message);
|
|
156
156
|
}
|
|
157
157
|
if ([400, 404, 422].includes(response.status)) {
|
|
158
|
-
return
|
|
158
|
+
return providerInputError(message);
|
|
159
159
|
}
|
|
160
160
|
return new ProviderRequestError(response.status || 500, message);
|
|
161
161
|
}
|
|
@@ -254,7 +254,7 @@ function buildCreatePdfJobBody(input) {
|
|
|
254
254
|
url: url
|
|
255
255
|
? assertPublicHttpUrl(url, {
|
|
256
256
|
fieldName: "url",
|
|
257
|
-
createError:
|
|
257
|
+
createError: providerInputError,
|
|
258
258
|
}).toString()
|
|
259
259
|
: undefined,
|
|
260
260
|
template: optionalString(input.template),
|
|
@@ -280,7 +280,7 @@ function buildListPath(path, input) {
|
|
|
280
280
|
return `${url.pathname}${url.search}`;
|
|
281
281
|
}
|
|
282
282
|
function readRecord(value) {
|
|
283
|
-
return requiredRecord(value, "cloudlayer response",
|
|
283
|
+
return requiredRecord(value, "cloudlayer response", providerResponseError);
|
|
284
284
|
}
|
|
285
285
|
function readRequiredString(value, fieldName) {
|
|
286
286
|
const parsed = optionalString(value);
|
|
@@ -177,10 +177,10 @@ async function toCodacyError(response, phase, notFoundAsInvalidInput) {
|
|
|
177
177
|
return new ProviderRequestError(429, message);
|
|
178
178
|
}
|
|
179
179
|
if (response.status === 400 || response.status === 422) {
|
|
180
|
-
return
|
|
180
|
+
return providerInputError(message);
|
|
181
181
|
}
|
|
182
182
|
if (response.status === 404 && notFoundAsInvalidInput) {
|
|
183
|
-
return
|
|
183
|
+
return providerInputError(message);
|
|
184
184
|
}
|
|
185
185
|
return new ProviderRequestError(response.status || 500, message);
|
|
186
186
|
}
|
|
@@ -244,10 +244,10 @@ async function toCodemagicError(response, phase, notFoundAsInvalidInput, isV3) {
|
|
|
244
244
|
return new ProviderRequestError(429, message);
|
|
245
245
|
}
|
|
246
246
|
if (response.status === 400) {
|
|
247
|
-
return
|
|
247
|
+
return providerInputError(message);
|
|
248
248
|
}
|
|
249
249
|
if (response.status === 404 && notFoundAsInvalidInput) {
|
|
250
|
-
return
|
|
250
|
+
return providerInputError(message);
|
|
251
251
|
}
|
|
252
252
|
return new ProviderRequestError(response.status || 502, message);
|
|
253
253
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Buffer } from "node:buffer";
|
|
2
2
|
import { compactObject, optionalRecord, optionalString, optionalStringArray, requiredString } from "../../core/cast.js";
|
|
3
|
-
import { createProviderTimeout, defineProviderExecutors, defineProviderProxy, isAbortLikeError, ProviderRequestError, readProviderJsonBody, providerUserAgent, } from "../provider-runtime.js";
|
|
4
|
-
import { buildConfluenceOAuthApiBaseUrls, confluenceActionHandlers,
|
|
3
|
+
import { createProviderTimeout, defineProviderExecutors, defineProviderProxy, isAbortLikeError, ProviderRequestError, readProviderJsonBody, providerUserAgent, defaultProviderRequestTimeoutMs, } from "../provider-runtime.js";
|
|
4
|
+
import { buildConfluenceOAuthApiBaseUrls, confluenceActionHandlers, validateConfluenceCredential } from "./runtime.js";
|
|
5
5
|
import { confluencePageReadScope, confluencePageWriteScope, confluenceSearchScope, confluenceSpaceReadScope, } from "./scopes.js";
|
|
6
6
|
const service = "confluence";
|
|
7
7
|
const confluenceAccessibleResourcesUrl = "https://api.atlassian.com/oauth/token/accessible-resources";
|
|
@@ -49,7 +49,7 @@ export const credentialValidators = {
|
|
|
49
49
|
},
|
|
50
50
|
};
|
|
51
51
|
async function validateConfluenceOAuthCredential(credential, fetcher, signal) {
|
|
52
|
-
const timeout = createProviderTimeout(signal
|
|
52
|
+
const timeout = createProviderTimeout(signal);
|
|
53
53
|
let resourcesResponse;
|
|
54
54
|
let resourcesPayload;
|
|
55
55
|
try {
|
|
@@ -69,7 +69,7 @@ async function validateConfluenceOAuthCredential(credential, fetcher, signal) {
|
|
|
69
69
|
}
|
|
70
70
|
catch (error) {
|
|
71
71
|
if (timeout.didTimeout() || isAbortLikeError(error)) {
|
|
72
|
-
throw new ProviderRequestError(504, `Confluence request timed out after ${Math.ceil(
|
|
72
|
+
throw new ProviderRequestError(504, `Confluence request timed out after ${Math.ceil(defaultProviderRequestTimeoutMs / 1000)} seconds`);
|
|
73
73
|
}
|
|
74
74
|
if (error instanceof ProviderRequestError) {
|
|
75
75
|
throw error;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type { CredentialValidationResult } from "../../core/types.ts";
|
|
2
2
|
import type { ProviderActionHandlers } from "../provider-runtime.ts";
|
|
3
3
|
export declare const confluenceValidationPath = "/spaces";
|
|
4
|
-
export declare const confluenceDefaultTimeoutMs = 30000;
|
|
5
4
|
export type ConfluencePhase = "validate" | "execute";
|
|
6
5
|
export interface ConfluenceBasicAuth {
|
|
7
6
|
type: "basic";
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { Buffer } from "node:buffer";
|
|
2
2
|
import { compactObject, optionalBoolean, optionalInteger, optionalRecord, optionalString, requiredString, } from "../../core/cast.js";
|
|
3
|
-
import { createProviderTimeout, isAbortLikeError, providerInputError, ProviderRequestError, providerUserAgent, requiredInputString, } from "../provider-runtime.js";
|
|
3
|
+
import { createProviderTimeout, isAbortLikeError, providerInputError, ProviderRequestError, providerUserAgent, requiredInputString, providerResponseError, defaultProviderRequestTimeoutMs, } from "../provider-runtime.js";
|
|
4
4
|
export const confluenceValidationPath = "/spaces";
|
|
5
|
-
export const confluenceDefaultTimeoutMs = 30_000;
|
|
6
5
|
const defaultLimit = 25;
|
|
7
6
|
const atlassianApiOrigin = "https://api.atlassian.com";
|
|
8
7
|
export const confluenceActionHandlers = {
|
|
@@ -194,7 +193,7 @@ export async function requestConfluenceJson(input) {
|
|
|
194
193
|
url.searchParams.set(key, String(value));
|
|
195
194
|
}
|
|
196
195
|
}
|
|
197
|
-
const timeout = createProviderTimeout(input.signal
|
|
196
|
+
const timeout = createProviderTimeout(input.signal);
|
|
198
197
|
let response;
|
|
199
198
|
let payload;
|
|
200
199
|
try {
|
|
@@ -208,7 +207,7 @@ export async function requestConfluenceJson(input) {
|
|
|
208
207
|
}
|
|
209
208
|
catch (error) {
|
|
210
209
|
if (timeout.didTimeout() || isAbortLikeError(error)) {
|
|
211
|
-
throw new ProviderRequestError(504, `Confluence request timed out after ${Math.ceil(
|
|
210
|
+
throw new ProviderRequestError(504, `Confluence request timed out after ${Math.ceil(defaultProviderRequestTimeoutMs / 1000)} seconds`);
|
|
212
211
|
}
|
|
213
212
|
if (error instanceof ProviderRequestError) {
|
|
214
213
|
throw error;
|
|
@@ -252,13 +251,13 @@ async function readConfluencePayload(response) {
|
|
|
252
251
|
function createConfluenceError(response, payload, phase, notFoundAsInvalidInput) {
|
|
253
252
|
const message = extractConfluenceErrorMessage(payload) ?? response.statusText ?? "Confluence request failed";
|
|
254
253
|
if (phase === "validate" && (response.status === 401 || response.status === 403)) {
|
|
255
|
-
return
|
|
254
|
+
return providerInputError(message);
|
|
256
255
|
}
|
|
257
256
|
if (notFoundAsInvalidInput && response.status === 404) {
|
|
258
257
|
return new ProviderRequestError(404, message);
|
|
259
258
|
}
|
|
260
259
|
if (response.status === 400) {
|
|
261
|
-
return
|
|
260
|
+
return providerInputError(message);
|
|
262
261
|
}
|
|
263
262
|
return new ProviderRequestError(response.status || 502, message, payload);
|
|
264
263
|
}
|
|
@@ -384,7 +383,7 @@ function buildOptionalPageBody(input) {
|
|
|
384
383
|
function requireObject(value, message) {
|
|
385
384
|
const object = optionalRecord(value);
|
|
386
385
|
if (!object) {
|
|
387
|
-
throw
|
|
386
|
+
throw providerResponseError(message);
|
|
388
387
|
}
|
|
389
388
|
return object;
|
|
390
389
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { compactObject, optionalInteger, optionalRecord, optionalString, requiredRecord } 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 contactoutApiBaseUrl = "https://api.contactout.com";
|
|
4
4
|
export const contactoutActionHandlers = {
|
|
5
5
|
enrich_linkedin_profile(input, context) {
|
|
@@ -158,13 +158,13 @@ async function readContactoutPayload(response) {
|
|
|
158
158
|
function mapContactoutError(status, payload, phase) {
|
|
159
159
|
const message = readContactoutErrorMessage(payload, status);
|
|
160
160
|
if (phase === "validate" && (status === 400 || status === 401)) {
|
|
161
|
-
return
|
|
161
|
+
return providerInputError(message);
|
|
162
162
|
}
|
|
163
163
|
if (phase === "execute" && (status === 401 || status === 403)) {
|
|
164
164
|
return new ProviderRequestError(status, message);
|
|
165
165
|
}
|
|
166
166
|
if (status === 400 || status === 401 || status === 403 || status === 404 || status === 422) {
|
|
167
|
-
return
|
|
167
|
+
return providerInputError(message);
|
|
168
168
|
}
|
|
169
169
|
return new ProviderRequestError(status || 500, message, payload);
|
|
170
170
|
}
|
|
@@ -191,7 +191,7 @@ function flattenFiltersInput(input, passthroughKeys) {
|
|
|
191
191
|
return body;
|
|
192
192
|
}
|
|
193
193
|
function requireFilters(value) {
|
|
194
|
-
const filters = requiredRecord(value, "filters",
|
|
194
|
+
const filters = requiredRecord(value, "filters", providerInputError);
|
|
195
195
|
if (Object.keys(filters).length === 0) {
|
|
196
196
|
throw new ProviderRequestError(400, "filters must contain at least one search filter.");
|
|
197
197
|
}
|
|
@@ -214,5 +214,5 @@ function assertAnyString(input, keys, message) {
|
|
|
214
214
|
if (keys.some((key) => optionalString(input[key]))) {
|
|
215
215
|
return;
|
|
216
216
|
}
|
|
217
|
-
throw
|
|
217
|
+
throw providerInputError(message);
|
|
218
218
|
}
|