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