@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,8 +1,7 @@
|
|
|
1
1
|
import { isIP } from "node:net";
|
|
2
2
|
import { optionalRecord, optionalString } from "../../core/cast.js";
|
|
3
|
-
import { createProviderTimeout, providerUserAgent, ProviderRequestError } from "../provider-runtime.js";
|
|
3
|
+
import { createProviderTimeout, providerUserAgent, ProviderRequestError, providerInputError, defaultProviderRequestTimeoutMs, } from "../provider-runtime.js";
|
|
4
4
|
export const iplocateApiBaseUrl = "https://iplocate.io/api";
|
|
5
|
-
const requestTimeoutMs = 30_000;
|
|
6
5
|
export const iplocateActionHandlers = {
|
|
7
6
|
async lookup_ip(input, context) {
|
|
8
7
|
const ip = readIpAddress(input.ip, "ip");
|
|
@@ -73,7 +72,7 @@ async function requestIplocateJson(input, context, phase) {
|
|
|
73
72
|
url.searchParams.set(key, value);
|
|
74
73
|
}
|
|
75
74
|
}
|
|
76
|
-
const timeout = createProviderTimeout(context.signal
|
|
75
|
+
const timeout = createProviderTimeout(context.signal);
|
|
77
76
|
let response;
|
|
78
77
|
let payload;
|
|
79
78
|
try {
|
|
@@ -87,7 +86,7 @@ async function requestIplocateJson(input, context, phase) {
|
|
|
87
86
|
}
|
|
88
87
|
catch (error) {
|
|
89
88
|
if (timeout.didTimeout()) {
|
|
90
|
-
throw new ProviderRequestError(504, `IPLocate request timed out after ${
|
|
89
|
+
throw new ProviderRequestError(504, `IPLocate request timed out after ${defaultProviderRequestTimeoutMs / 1000} seconds`);
|
|
91
90
|
}
|
|
92
91
|
throw new ProviderRequestError(502, error instanceof Error ? `IPLocate request failed: ${error.message}` : "IPLocate request failed");
|
|
93
92
|
}
|
|
@@ -131,7 +130,7 @@ function createIplocateError(response, payload, phase) {
|
|
|
131
130
|
return new ProviderRequestError(phase === "validate" ? 400 : response.status, message);
|
|
132
131
|
}
|
|
133
132
|
if (response.status === 400 || response.status === 404) {
|
|
134
|
-
return
|
|
133
|
+
return providerInputError(message);
|
|
135
134
|
}
|
|
136
135
|
return new ProviderRequestError(response.status >= 500 ? 502 : response.status, message);
|
|
137
136
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { optionalRecord, optionalString } from "../../core/cast.js";
|
|
2
|
-
import { defineApiKeyProviderExecutors, defineProviderProxy, isAbortLikeError, providerUserAgent, ProviderRequestError, } from "../provider-runtime.js";
|
|
2
|
+
import { defineApiKeyProviderExecutors, defineProviderProxy, isAbortLikeError, providerUserAgent, ProviderRequestError, providerInputError, } from "../provider-runtime.js";
|
|
3
3
|
const service = "ipregistry";
|
|
4
4
|
const ipregistryBaseUrl = "https://api.ipregistry.co";
|
|
5
5
|
const validationIp = "8.8.8.8";
|
|
@@ -193,7 +193,7 @@ function mapIpregistryError(status, message, phase) {
|
|
|
193
193
|
return new ProviderRequestError(phase === "validate" ? 400 : 401, normalizedMessage);
|
|
194
194
|
}
|
|
195
195
|
if (status === 400 || status === 404) {
|
|
196
|
-
return
|
|
196
|
+
return providerInputError(normalizedMessage);
|
|
197
197
|
}
|
|
198
198
|
if (status === 402 || status === 429) {
|
|
199
199
|
return new ProviderRequestError(429, normalizedMessage);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { compactObject, optionalRecord, optionalString } from "../../core/cast.js";
|
|
2
|
-
import { ProviderRequestError, providerUserAgent } from "../provider-runtime.js";
|
|
2
|
+
import { ProviderRequestError, providerUserAgent, providerInputError, providerResponseError, } from "../provider-runtime.js";
|
|
3
3
|
const jiminnyUsApiBaseUrl = "https://app.jiminny.com/customer/api/v1";
|
|
4
4
|
const jiminnyEuApiBaseUrl = "https://app.jiminny.eu/customer/api/v1";
|
|
5
5
|
const jiminnyValidationPath = "/me";
|
|
@@ -281,9 +281,9 @@ function mapJiminnyError(status, message, phase) {
|
|
|
281
281
|
return new ProviderRequestError(429, message);
|
|
282
282
|
}
|
|
283
283
|
if (status === 400 || status === 404 || status === 422) {
|
|
284
|
-
return
|
|
284
|
+
return providerInputError(message);
|
|
285
285
|
}
|
|
286
|
-
return
|
|
286
|
+
return providerResponseError(message);
|
|
287
287
|
}
|
|
288
288
|
function isJiminnyGeneratingMessage(message) {
|
|
289
289
|
return message.toLowerCase().includes("being generated");
|
|
@@ -329,7 +329,7 @@ function pickQuery(input, keys) {
|
|
|
329
329
|
function readObjectPayload(payload, message) {
|
|
330
330
|
const record = optionalRecord(payload);
|
|
331
331
|
if (!record) {
|
|
332
|
-
throw
|
|
332
|
+
throw providerResponseError(message);
|
|
333
333
|
}
|
|
334
334
|
return record;
|
|
335
335
|
}
|
|
@@ -3,12 +3,11 @@ import { SdkHttpError } from "@modelcontextprotocol/client";
|
|
|
3
3
|
import { ProtocolError } from "@modelcontextprotocol/client";
|
|
4
4
|
import { createHash } from "node:crypto";
|
|
5
5
|
import { withMcpClient } from "../mcp-client.js";
|
|
6
|
-
import { defineApiKeyProviderExecutors, defineProviderProxy, providerUserAgent, ProviderRequestError, } from "../provider-runtime.js";
|
|
6
|
+
import { defineApiKeyProviderExecutors, defineProviderProxy, providerUserAgent, ProviderRequestError, defaultProviderRequestTimeoutMs, } from "../provider-runtime.js";
|
|
7
7
|
const service = "jin10";
|
|
8
8
|
const jin10McpOrigin = "https://mcp.jin10.com";
|
|
9
9
|
const jin10McpEndpoint = "https://mcp.jin10.com/mcp";
|
|
10
10
|
const jin10QuoteCodesResourceUri = "quote://codes";
|
|
11
|
-
const jin10RequestTimeoutMs = 30_000;
|
|
12
11
|
export const jin10ActionHandlers = {
|
|
13
12
|
list_quote_codes(_input, context) {
|
|
14
13
|
return readJin10QuoteCodes(context);
|
|
@@ -72,7 +71,7 @@ export const credentialValidators = {
|
|
|
72
71
|
async function listJin10McpTools(input) {
|
|
73
72
|
return withJin10McpClient(input, async (client) => {
|
|
74
73
|
const result = await client.listTools({}, {
|
|
75
|
-
timeout:
|
|
74
|
+
timeout: defaultProviderRequestTimeoutMs,
|
|
76
75
|
});
|
|
77
76
|
return result.tools.map((tool) => ({
|
|
78
77
|
name: tool.name,
|
|
@@ -86,7 +85,7 @@ async function callJin10McpTool(context, toolName, argumentsInput) {
|
|
|
86
85
|
name: toolName,
|
|
87
86
|
arguments: argumentsInput,
|
|
88
87
|
}, {
|
|
89
|
-
timeout:
|
|
88
|
+
timeout: defaultProviderRequestTimeoutMs,
|
|
90
89
|
});
|
|
91
90
|
return normalizeJin10McpToolResult(toolName, result);
|
|
92
91
|
});
|
|
@@ -96,7 +95,7 @@ async function readJin10QuoteCodes(context) {
|
|
|
96
95
|
const result = await client.readResource({
|
|
97
96
|
uri: jin10QuoteCodesResourceUri,
|
|
98
97
|
}, {
|
|
99
|
-
timeout:
|
|
98
|
+
timeout: defaultProviderRequestTimeoutMs,
|
|
100
99
|
});
|
|
101
100
|
const content = result.contents[0];
|
|
102
101
|
if (!content || !("text" in content)) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { compactObject, optionalBoolean, optionalInteger as asOptionalInteger, optionalRecord as asOptionalObject, optionalString as asOptionalString, optionalStringArray, } from "../../core/cast.js";
|
|
2
2
|
import { assertPublicHttpUrl, isPrivateNetworkAccessAllowed } from "../../core/request.js";
|
|
3
|
-
import { createProviderFetch, ProviderRequestError, defineProviderExecutors, defineProviderProxy, providerUserAgent, } from "../provider-runtime.js";
|
|
3
|
+
import { createProviderFetch, ProviderRequestError, defineProviderExecutors, defineProviderProxy, providerUserAgent, providerInputError, } from "../provider-runtime.js";
|
|
4
4
|
import { jiraIssueEvents } from "./trigger-on-issue-event.js";
|
|
5
5
|
const jiraApiOrigin = "https://api.atlassian.com";
|
|
6
6
|
const jiraAccessibleResourcesUrl = "https://api.atlassian.com/oauth/token/accessible-resources";
|
|
@@ -482,7 +482,7 @@ export function normalizeJiraServerApiBaseUrl(value, allowPrivateNetwork = isPri
|
|
|
482
482
|
}
|
|
483
483
|
const url = assertPublicHttpUrl(instanceUrl, {
|
|
484
484
|
fieldName: "baseUrl",
|
|
485
|
-
createError:
|
|
485
|
+
createError: providerInputError,
|
|
486
486
|
allowPrivateNetwork,
|
|
487
487
|
});
|
|
488
488
|
if (url.username || url.password) {
|
|
@@ -831,7 +831,7 @@ async function readJsonValue(response) {
|
|
|
831
831
|
function mapJiraResponseError(status, payload, phase, notFoundAsInvalidInput) {
|
|
832
832
|
const message = readJiraErrorMessage(payload);
|
|
833
833
|
if (status === 400) {
|
|
834
|
-
return
|
|
834
|
+
return providerInputError(message);
|
|
835
835
|
}
|
|
836
836
|
if (status === 401) {
|
|
837
837
|
return new ProviderRequestError(phase === "auth" ? 400 : 401, message);
|
|
@@ -843,7 +843,7 @@ function mapJiraResponseError(status, payload, phase, notFoundAsInvalidInput) {
|
|
|
843
843
|
return new ProviderRequestError(502, message, 403);
|
|
844
844
|
}
|
|
845
845
|
if (status === 404 && notFoundAsInvalidInput) {
|
|
846
|
-
return
|
|
846
|
+
return providerInputError(message);
|
|
847
847
|
}
|
|
848
848
|
if (status === 429) {
|
|
849
849
|
return new ProviderRequestError(429, message);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
2
|
import { compactObject, optionalRecord, optionalString } from "../../core/cast.js";
|
|
3
|
-
import { isAbortLikeError, providerUserAgent, ProviderRequestError } from "../provider-runtime.js";
|
|
3
|
+
import { isAbortLikeError, providerUserAgent, ProviderRequestError, providerInputError } from "../provider-runtime.js";
|
|
4
4
|
import { kaleidoDefaultBaseUrl } from "./constants.js";
|
|
5
5
|
const membershipsValidationPath = "/memberships";
|
|
6
6
|
export const kaleidoActionHandlers = {
|
|
@@ -156,7 +156,7 @@ async function normalizeKaleidoError(response) {
|
|
|
156
156
|
return new ProviderRequestError(401, message);
|
|
157
157
|
}
|
|
158
158
|
if (response.status >= 400 && response.status < 500) {
|
|
159
|
-
return
|
|
159
|
+
return providerInputError(message);
|
|
160
160
|
}
|
|
161
161
|
return new ProviderRequestError(response.status || 500, message);
|
|
162
162
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
2
|
import { compactObject, optionalBoolean, optionalInteger, optionalRecord, optionalString } from "../../core/cast.js";
|
|
3
|
-
import { ProviderRequestError, providerUserAgent, runProviderRequest } from "../provider-runtime.js";
|
|
3
|
+
import { ProviderRequestError, providerUserAgent, runProviderRequest, providerInputError, } from "../provider-runtime.js";
|
|
4
4
|
export const kandjiActionHandlers = {
|
|
5
5
|
async list_blueprints(input, context) {
|
|
6
6
|
const payload = await requestKandjiJson({
|
|
@@ -186,7 +186,7 @@ function createKandjiError(status, payload, phase, notFoundAsInvalidInput) {
|
|
|
186
186
|
return new ProviderRequestError(429, message);
|
|
187
187
|
}
|
|
188
188
|
if (phase === "validate" && status >= 400 && status < 500) {
|
|
189
|
-
return
|
|
189
|
+
return providerInputError(message);
|
|
190
190
|
}
|
|
191
191
|
if (phase === "execute" && status === 401) {
|
|
192
192
|
return new ProviderRequestError(401, message);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { compactObject, optionalRecord, optionalString } from "../../core/cast.js";
|
|
2
|
-
import { defineProviderExecutors, defineProviderProxy, providerUserAgent, ProviderRequestError, requireApiKeyCredential, } from "../provider-runtime.js";
|
|
2
|
+
import { defineProviderExecutors, defineProviderProxy, providerUserAgent, ProviderRequestError, requireApiKeyCredential, providerInputError, } from "../provider-runtime.js";
|
|
3
3
|
const keygenApiBaseUrl = "https://api.keygen.sh/v1/accounts";
|
|
4
4
|
const keygenValidationPath = "/me";
|
|
5
5
|
const service = "keygen";
|
|
@@ -529,16 +529,16 @@ function createKeygenError(response, payload, phase, usedAuth) {
|
|
|
529
529
|
return new ProviderRequestError(429, message);
|
|
530
530
|
}
|
|
531
531
|
if (phase === "validate" && (response.status === 401 || response.status === 403)) {
|
|
532
|
-
return
|
|
532
|
+
return providerInputError(message);
|
|
533
533
|
}
|
|
534
534
|
if (phase === "execute" && usedAuth && (response.status === 401 || response.status === 403)) {
|
|
535
535
|
return new ProviderRequestError(401, message);
|
|
536
536
|
}
|
|
537
537
|
if (phase === "execute" && !usedAuth && (response.status === 401 || response.status === 403)) {
|
|
538
|
-
return
|
|
538
|
+
return providerInputError(message);
|
|
539
539
|
}
|
|
540
540
|
if ([400, 404, 422].includes(response.status)) {
|
|
541
|
-
return
|
|
541
|
+
return providerInputError(message);
|
|
542
542
|
}
|
|
543
543
|
return new ProviderRequestError(response.status || 500, message);
|
|
544
544
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { compactObject, optionalInteger, optionalRecord, optionalString } from "../../core/cast.js";
|
|
2
|
-
import { providerUserAgent, ProviderRequestError, runProviderRequest } from "../provider-runtime.js";
|
|
2
|
+
import { providerUserAgent, ProviderRequestError, runProviderRequest, providerInputError, } from "../provider-runtime.js";
|
|
3
3
|
export const keywordApiBaseUrl = "https://app.keyword.com";
|
|
4
4
|
const keywordApiPathPrefix = "/api/v2";
|
|
5
5
|
export const keywordActionHandlers = {
|
|
@@ -105,7 +105,7 @@ function createKeywordError(response, payload, phase) {
|
|
|
105
105
|
return new ProviderRequestError(429, message);
|
|
106
106
|
}
|
|
107
107
|
if (phase === "validate" && response.status >= 400 && response.status < 500) {
|
|
108
|
-
return
|
|
108
|
+
return providerInputError(message);
|
|
109
109
|
}
|
|
110
110
|
return new ProviderRequestError(response.status || 502, message);
|
|
111
111
|
}
|
|
@@ -103,7 +103,7 @@ function mapKieAiError(code, message, status) {
|
|
|
103
103
|
case 403:
|
|
104
104
|
return new ProviderRequestError(401, message);
|
|
105
105
|
case 422:
|
|
106
|
-
return
|
|
106
|
+
return providerInputError(message);
|
|
107
107
|
case 429:
|
|
108
108
|
return new ProviderRequestError(429, message);
|
|
109
109
|
default:
|
|
@@ -184,7 +184,7 @@ function createKintoneError(status, payload, phase) {
|
|
|
184
184
|
return new ProviderRequestError(429, message);
|
|
185
185
|
}
|
|
186
186
|
if (phase === "validate" && status >= 400 && status < 500) {
|
|
187
|
-
return
|
|
187
|
+
return providerInputError(message);
|
|
188
188
|
}
|
|
189
189
|
if (phase === "execute" && status === 401) {
|
|
190
190
|
return new ProviderRequestError(401, message);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { compactObject, looseArray, optionalBoolean, optionalNumber, optionalRecord, optionalString, } from "../../core/cast.js";
|
|
2
|
-
import { providerUserAgent, ProviderRequestError, runProviderRequest } from "../provider-runtime.js";
|
|
2
|
+
import { providerUserAgent, ProviderRequestError, runProviderRequest, providerInputError, } from "../provider-runtime.js";
|
|
3
3
|
const kitApiBaseUrl = "https://api.kit.com/v4";
|
|
4
4
|
export const kitActionHandlers = {
|
|
5
5
|
async get_current_account(_input, context) {
|
|
@@ -229,7 +229,7 @@ function createKitError(status, payload, phase) {
|
|
|
229
229
|
return new ProviderRequestError(429, message);
|
|
230
230
|
}
|
|
231
231
|
if (phase === "validate" && status >= 400 && status < 500) {
|
|
232
|
-
return
|
|
232
|
+
return providerInputError(message);
|
|
233
233
|
}
|
|
234
234
|
if (phase === "execute" && status === 401) {
|
|
235
235
|
return new ProviderRequestError(401, message);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { optionalRecord, optionalString } from "../../core/cast.js";
|
|
2
2
|
import { assertPublicHttpUrl, readBoundedResponseBytes, storeResponseInTransit } from "../../core/request.js";
|
|
3
|
-
import { providerFetch, providerUserAgent, ProviderRequestError } from "../provider-runtime.js";
|
|
3
|
+
import { providerFetch, providerUserAgent, ProviderRequestError, providerInputError } from "../provider-runtime.js";
|
|
4
4
|
export const klangioApiBaseUrl = "https://api.klang.io";
|
|
5
5
|
const klangioValidationJobId = "00000000-0000-0000-0000-000000000000";
|
|
6
6
|
const maxKlangioUploadSourceBytes = 100 * 1024 * 1024;
|
|
@@ -208,7 +208,7 @@ async function resolveKlangioUploadSource(value, context) {
|
|
|
208
208
|
if (fileUrl) {
|
|
209
209
|
const url = assertPublicHttpUrl(fileUrl, {
|
|
210
210
|
fieldName: "file.url",
|
|
211
|
-
createError:
|
|
211
|
+
createError: providerInputError,
|
|
212
212
|
});
|
|
213
213
|
const response = await providerFetch(url, {
|
|
214
214
|
method: "GET",
|
|
@@ -255,7 +255,7 @@ async function readKlangioUploadSourceBytes(response) {
|
|
|
255
255
|
return readBoundedResponseBytes(response, {
|
|
256
256
|
maxBytes: maxKlangioUploadSourceBytes,
|
|
257
257
|
fieldName: "klangio upload source",
|
|
258
|
-
createError:
|
|
258
|
+
createError: providerInputError,
|
|
259
259
|
});
|
|
260
260
|
}
|
|
261
261
|
function assertUploadSourceSize(byteLength) {
|
|
@@ -321,7 +321,7 @@ function createKlangioError(response, payload) {
|
|
|
321
321
|
return new ProviderRequestError(429, message);
|
|
322
322
|
}
|
|
323
323
|
if (response.status >= 400 && response.status < 500) {
|
|
324
|
-
return
|
|
324
|
+
return providerInputError(message);
|
|
325
325
|
}
|
|
326
326
|
return new ProviderRequestError(response.status || 500, message);
|
|
327
327
|
}
|
|
@@ -272,7 +272,7 @@ function mapKlaviyoHttpError(status, payload, rawBody, phase) {
|
|
|
272
272
|
return new ProviderRequestError(phase === "validate" ? 400 : 401, message);
|
|
273
273
|
}
|
|
274
274
|
if (status === 400 || status === 404 || status === 422) {
|
|
275
|
-
return
|
|
275
|
+
return providerInputError(message);
|
|
276
276
|
}
|
|
277
277
|
if (status === 429) {
|
|
278
278
|
return new ProviderRequestError(429, message);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { compactObject, optionalBoolean, optionalInteger, optionalNumber, optionalRecord, optionalString, } from "../../core/cast.js";
|
|
2
|
-
import { defineApiKeyProviderExecutors, defineProviderProxy, providerUserAgent, ProviderRequestError, runProviderRequest, } from "../provider-runtime.js";
|
|
2
|
+
import { defineApiKeyProviderExecutors, defineProviderProxy, providerUserAgent, ProviderRequestError, runProviderRequest, providerInputError, } from "../provider-runtime.js";
|
|
3
3
|
const service = "klazify";
|
|
4
4
|
const klazifyApiBaseUrl = "https://www.klazify.com/api";
|
|
5
5
|
export const klazifyActionHandlers = {
|
|
@@ -260,11 +260,11 @@ function createKlazifyError(status, payload, phase) {
|
|
|
260
260
|
return new ProviderRequestError(401, message);
|
|
261
261
|
}
|
|
262
262
|
if (normalizedMessage.includes("/unreachable") || normalizedMessage.includes("/no indexable content")) {
|
|
263
|
-
return
|
|
263
|
+
return providerInputError(message);
|
|
264
264
|
}
|
|
265
265
|
}
|
|
266
266
|
if (phase === "validate" && status < 400) {
|
|
267
|
-
return
|
|
267
|
+
return providerInputError(message);
|
|
268
268
|
}
|
|
269
269
|
return new ProviderRequestError(status || 500, message);
|
|
270
270
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { compactObject, optionalInteger, optionalRecord, optionalString } from "../../core/cast.js";
|
|
2
|
-
import { ProviderRequestError, providerUserAgent, runProviderRequest } from "../provider-runtime.js";
|
|
2
|
+
import { ProviderRequestError, providerUserAgent, runProviderRequest, providerResponseError, } from "../provider-runtime.js";
|
|
3
3
|
export const klipfolioApiBaseUrl = "https://api.klipfolio.com/api/1.0";
|
|
4
4
|
export const klipfolioActionHandlers = {
|
|
5
5
|
list_clients(input, context) {
|
|
@@ -135,7 +135,7 @@ function createKlipfolioError(status, payload, phase) {
|
|
|
135
135
|
if (status >= 400 && status < 500) {
|
|
136
136
|
return new ProviderRequestError(status, message);
|
|
137
137
|
}
|
|
138
|
-
return
|
|
138
|
+
return providerResponseError(message);
|
|
139
139
|
}
|
|
140
140
|
function extractKlipfolioErrorMessage(payload) {
|
|
141
141
|
const record = optionalRecord(payload);
|
|
@@ -187,7 +187,7 @@ function normalizeAsset(value) {
|
|
|
187
187
|
function requireRecord(value, message) {
|
|
188
188
|
const record = optionalRecord(value);
|
|
189
189
|
if (!record) {
|
|
190
|
-
throw
|
|
190
|
+
throw providerResponseError(message);
|
|
191
191
|
}
|
|
192
192
|
return record;
|
|
193
193
|
}
|
|
@@ -192,7 +192,7 @@ async function readKnackPayload(response) {
|
|
|
192
192
|
function normalizeKnackError(status, payload, phase) {
|
|
193
193
|
const message = readKnackErrorMessage(payload) ?? `Knack request failed with status ${status}`;
|
|
194
194
|
if (phase === "validate" || status === 400 || status === 401 || status === 403 || status === 404) {
|
|
195
|
-
return
|
|
195
|
+
return providerInputError(message);
|
|
196
196
|
}
|
|
197
197
|
if (status === 429) {
|
|
198
198
|
return new ProviderRequestError(429, message);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { compactObject, nullableInteger, nullableString, optionalBoolean, optionalInteger, optionalRecord, optionalString, } from "../../core/cast.js";
|
|
2
|
-
import { ProviderRequestError, providerUserAgent, requiredResponseRecord, runProviderRequest, } from "../provider-runtime.js";
|
|
2
|
+
import { ProviderRequestError, providerUserAgent, requiredResponseRecord, runProviderRequest, providerInputError, } from "../provider-runtime.js";
|
|
3
3
|
const kommoCredentialHelpUrl = "https://developers.kommo.com/docs/long-lived-token";
|
|
4
4
|
const kommoPrivateIntegrationHelpUrl = "https://developers.kommo.com/docs/private-integration";
|
|
5
5
|
const kommoHostSuffix = ".kommo.com";
|
|
@@ -277,7 +277,7 @@ function createKommoError(status, payload, phase) {
|
|
|
277
277
|
return new ProviderRequestError(429, message);
|
|
278
278
|
}
|
|
279
279
|
if (phase === "validate" && status >= 400 && status < 500) {
|
|
280
|
-
return
|
|
280
|
+
return providerInputError(message);
|
|
281
281
|
}
|
|
282
282
|
if (phase === "execute" && (status === 401 || status === 403)) {
|
|
283
283
|
return new ProviderRequestError(status, message);
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { optionalBoolean, optionalRecord, optionalString, requiredString } from "../../core/cast.js";
|
|
2
|
-
import { createProviderTimeout, defineProviderExecutors, defineProviderProxy, isAbortLikeError, providerInputError, providerUserAgent, ProviderRequestError, requireApiKeyCredential, } from "../provider-runtime.js";
|
|
2
|
+
import { createProviderTimeout, defineProviderExecutors, defineProviderProxy, isAbortLikeError, providerInputError, providerUserAgent, ProviderRequestError, requireApiKeyCredential, defaultProviderRequestTimeoutMs, } from "../provider-runtime.js";
|
|
3
3
|
const service = "kontent_ai";
|
|
4
4
|
const kontentAiApiBaseUrl = "https://manage.kontent.ai/v2";
|
|
5
|
-
const kontentAiDefaultRequestTimeoutMs = 30_000;
|
|
6
5
|
export const kontentAiActionHandlers = {
|
|
7
6
|
list_content_items(input, context) {
|
|
8
7
|
return listKontentAiContentItems(input, context);
|
|
@@ -189,7 +188,7 @@ async function getKontentAiLanguage(input, context) {
|
|
|
189
188
|
};
|
|
190
189
|
}
|
|
191
190
|
async function requestKontentAiJson(input) {
|
|
192
|
-
const timeout = createProviderTimeout(input.signal
|
|
191
|
+
const timeout = createProviderTimeout(input.signal);
|
|
193
192
|
let response;
|
|
194
193
|
let payload;
|
|
195
194
|
try {
|
|
@@ -214,7 +213,7 @@ async function requestKontentAiJson(input) {
|
|
|
214
213
|
throw error;
|
|
215
214
|
}
|
|
216
215
|
if (timeout.didTimeout() || isAbortLikeError(error)) {
|
|
217
|
-
throw new ProviderRequestError(504, `Kontent.ai ${input.path} request timed out after ${Math.ceil(
|
|
216
|
+
throw new ProviderRequestError(504, `Kontent.ai ${input.path} request timed out after ${Math.ceil(defaultProviderRequestTimeoutMs / 1000)} seconds`);
|
|
218
217
|
}
|
|
219
218
|
throw new ProviderRequestError(502, error instanceof Error
|
|
220
219
|
? `Kontent.ai ${input.path} request failed: ${error.message}`
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { compactObject, optionalRecord, optionalString, requiredString } from "../../core/cast.js";
|
|
2
|
-
import { createProviderTimeout, defineApiKeyProviderExecutors, defineProviderProxy, isAbortLikeError, providerInputError, providerUserAgent, ProviderRequestError, } from "../provider-runtime.js";
|
|
2
|
+
import { createProviderTimeout, defineApiKeyProviderExecutors, defineProviderProxy, isAbortLikeError, providerInputError, providerUserAgent, ProviderRequestError, defaultProviderRequestTimeoutMs, } from "../provider-runtime.js";
|
|
3
3
|
const service = "l2s";
|
|
4
4
|
const l2sApiBaseUrl = "https://api.l2s.is";
|
|
5
5
|
const l2sValidationPath = "/user/setting";
|
|
6
|
-
const l2sDefaultRequestTimeoutMs = 30_000;
|
|
7
6
|
export const l2sActionHandlers = {
|
|
8
7
|
shorten_url(input, context) {
|
|
9
8
|
return l2sRequest(context, {
|
|
@@ -74,7 +73,7 @@ async function validateL2sCredential(context) {
|
|
|
74
73
|
};
|
|
75
74
|
}
|
|
76
75
|
async function l2sRequest(context, input) {
|
|
77
|
-
const timeout = createProviderTimeout(context.signal
|
|
76
|
+
const timeout = createProviderTimeout(context.signal);
|
|
78
77
|
try {
|
|
79
78
|
const response = await context.fetcher(new URL(input.path, l2sApiBaseUrl), {
|
|
80
79
|
method: input.method,
|
|
@@ -98,7 +97,7 @@ async function l2sRequest(context, input) {
|
|
|
98
97
|
throw error;
|
|
99
98
|
}
|
|
100
99
|
if (timeout.didTimeout() || isAbortLikeError(error)) {
|
|
101
|
-
throw new ProviderRequestError(504, `L2S ${input.path} request timed out after ${Math.max(1, Math.ceil(
|
|
100
|
+
throw new ProviderRequestError(504, `L2S ${input.path} request timed out after ${Math.max(1, Math.ceil(defaultProviderRequestTimeoutMs / 1000))} seconds`);
|
|
102
101
|
}
|
|
103
102
|
throw new ProviderRequestError(502, error instanceof Error ? `L2S request failed: ${error.message}` : "L2S request failed");
|
|
104
103
|
}
|
|
@@ -147,7 +147,7 @@ async function createLatchshotError(response, phase) {
|
|
|
147
147
|
const text = await readProviderTextBody(response, "Latchshot error response", latchshotJsonMaxBytes);
|
|
148
148
|
const message = extractLatchshotErrorMessage(text) ?? `Latchshot request failed with HTTP ${response.status}.`;
|
|
149
149
|
if (phase === "validate" && (response.status === 401 || response.status === 403)) {
|
|
150
|
-
return
|
|
150
|
+
return providerInputError(message);
|
|
151
151
|
}
|
|
152
152
|
if ([400, 401, 403, 413, 429].includes(response.status)) {
|
|
153
153
|
return new ProviderRequestError(response.status, message);
|
|
@@ -240,7 +240,7 @@ function requireObject(value, message) {
|
|
|
240
240
|
if (record) {
|
|
241
241
|
return record;
|
|
242
242
|
}
|
|
243
|
-
throw
|
|
243
|
+
throw providerResponseError(message);
|
|
244
244
|
}
|
|
245
245
|
function requireNonNegativeInteger(value, fieldName, positive = false) {
|
|
246
246
|
const resolved = optionalInteger(value);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { isIP } from "node:net";
|
|
2
2
|
import { domainToASCII } from "node:url";
|
|
3
3
|
import { optionalRecord, requiredString } from "../../core/cast.js";
|
|
4
|
-
import { createProviderTimeout, getProviderActionHandler, ProviderRequestError, providerUserAgent, requiredResponseRecord, } from "../provider-runtime.js";
|
|
4
|
+
import { createProviderTimeout, getProviderActionHandler, ProviderRequestError, providerUserAgent, requiredResponseRecord, providerInputError, } from "../provider-runtime.js";
|
|
5
5
|
export const leadboxerApiBaseUrl = "https://api.leadboxer.com";
|
|
6
6
|
const leadboxerValidationEndpoint = "/v1/management/credits";
|
|
7
7
|
const leadboxerActionHandlers = {
|
|
@@ -14,7 +14,7 @@ const leadboxerActionHandlers = {
|
|
|
14
14
|
};
|
|
15
15
|
export async function validateLeadboxerCredential(input, fetcher) {
|
|
16
16
|
const payload = await requestLeadboxerJson({
|
|
17
|
-
apiKey: requiredString(input.apiKey, "apiKey",
|
|
17
|
+
apiKey: requiredString(input.apiKey, "apiKey", providerInputError),
|
|
18
18
|
path: leadboxerValidationEndpoint,
|
|
19
19
|
fetcher,
|
|
20
20
|
phase: "validate",
|
|
@@ -153,7 +153,7 @@ function createLeadboxerError(response, payload, phase) {
|
|
|
153
153
|
return new ProviderRequestError(429, message);
|
|
154
154
|
}
|
|
155
155
|
if (phase === "validate" && response.status >= 400 && response.status < 500) {
|
|
156
|
-
return
|
|
156
|
+
return providerInputError(message);
|
|
157
157
|
}
|
|
158
158
|
if (phase === "execute" && response.status === 401) {
|
|
159
159
|
return new ProviderRequestError(401, message);
|
|
@@ -162,7 +162,7 @@ function createLeadboxerError(response, payload, phase) {
|
|
|
162
162
|
return new ProviderRequestError(403, message);
|
|
163
163
|
}
|
|
164
164
|
if (phase === "execute" && (response.status === 400 || response.status === 404 || response.status === 409)) {
|
|
165
|
-
return
|
|
165
|
+
return providerInputError(message);
|
|
166
166
|
}
|
|
167
167
|
return new ProviderRequestError(response.status || 500, message);
|
|
168
168
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { optionalRecord, optionalString, requiredRecord } from "../../core/cast.js";
|
|
2
|
-
import { ProviderRequestError, providerUserAgent } from "../provider-runtime.js";
|
|
2
|
+
import { ProviderRequestError, providerUserAgent, providerInputError, providerResponseError, } from "../provider-runtime.js";
|
|
3
3
|
export const leadiqApiBaseUrl = "https://api.leadiq.com";
|
|
4
4
|
export const leadiqGraphqlPath = "/graphql";
|
|
5
5
|
const accountQuery = `
|
|
@@ -108,7 +108,7 @@ function requireAdvancedSearchFilter(input) {
|
|
|
108
108
|
}
|
|
109
109
|
function requireAnyStringField(input, fields, message) {
|
|
110
110
|
if (!fields.some((field) => typeof input[field] === "string" && input[field].trim().length > 0)) {
|
|
111
|
-
throw
|
|
111
|
+
throw providerInputError(message);
|
|
112
112
|
}
|
|
113
113
|
}
|
|
114
114
|
export async function validateLeadiqCredential(input, fetcher) {
|
|
@@ -197,9 +197,9 @@ function mapLeadiqError(status, message, phase) {
|
|
|
197
197
|
return new ProviderRequestError(429, message);
|
|
198
198
|
}
|
|
199
199
|
if (status >= 400 && status < 500) {
|
|
200
|
-
return
|
|
200
|
+
return providerInputError(message);
|
|
201
201
|
}
|
|
202
|
-
return
|
|
202
|
+
return providerResponseError(message);
|
|
203
203
|
}
|
|
204
204
|
function requireGraphqlObject(data, field) {
|
|
205
205
|
const value = optionalRecord(data[field]);
|
|
@@ -153,7 +153,7 @@ function mapLinguapopError(status, message, phase) {
|
|
|
153
153
|
return new ProviderRequestError(401, message);
|
|
154
154
|
}
|
|
155
155
|
if (status >= 400 && status < 500) {
|
|
156
|
-
return
|
|
156
|
+
return providerInputError(message);
|
|
157
157
|
}
|
|
158
158
|
return new ProviderRequestError(status || 502, message);
|
|
159
159
|
}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { optionalRawString, optionalRecord, optionalString } 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 lingvanexTranslationApiBaseUrl = "https://api-gl.lingvanex.com";
|
|
4
4
|
const translationPath = "/language/translate/v2";
|
|
5
|
-
const requestTimeoutMs = 30_000;
|
|
6
5
|
export const lingvanexTranslationApiActionHandlers = {
|
|
7
6
|
translate_text(input, context) {
|
|
8
7
|
return translateText(input, context);
|
|
@@ -122,7 +121,7 @@ async function requestLingvanexJson(input, context, phase) {
|
|
|
122
121
|
}
|
|
123
122
|
}
|
|
124
123
|
url.searchParams.set("key", context.apiKey);
|
|
125
|
-
const timeout = createProviderTimeout(context.signal
|
|
124
|
+
const timeout = createProviderTimeout(context.signal);
|
|
126
125
|
let response;
|
|
127
126
|
let payload;
|
|
128
127
|
try {
|
|
@@ -138,7 +137,7 @@ async function requestLingvanexJson(input, context, phase) {
|
|
|
138
137
|
}
|
|
139
138
|
catch (error) {
|
|
140
139
|
if (timeout.didTimeout()) {
|
|
141
|
-
throw new ProviderRequestError(504, `Lingvanex request timed out after ${
|
|
140
|
+
throw new ProviderRequestError(504, `Lingvanex request timed out after ${defaultProviderRequestTimeoutMs / 1000} seconds`);
|
|
142
141
|
}
|
|
143
142
|
throw new ProviderRequestError(502, error instanceof Error ? `Lingvanex request failed: ${error.message}` : "Lingvanex request failed");
|
|
144
143
|
}
|
|
@@ -168,13 +167,13 @@ function createLingvanexError(status, payload, phase) {
|
|
|
168
167
|
return new ProviderRequestError(429, message);
|
|
169
168
|
}
|
|
170
169
|
if (phase === "validate" && (status === 400 || status === 401 || status === 403)) {
|
|
171
|
-
return
|
|
170
|
+
return providerInputError(message);
|
|
172
171
|
}
|
|
173
172
|
if (status === 401 || status === 403) {
|
|
174
173
|
return new ProviderRequestError(status, message);
|
|
175
174
|
}
|
|
176
175
|
if (status === 400) {
|
|
177
|
-
return
|
|
176
|
+
return providerInputError(message);
|
|
178
177
|
}
|
|
179
178
|
return new ProviderRequestError(status >= 500 ? 502 : status, message);
|
|
180
179
|
}
|
|
@@ -5,9 +5,8 @@ import { createHash } from "node:crypto";
|
|
|
5
5
|
import { optionalNumber, optionalRecord, optionalString, requiredString } from "../../core/cast.js";
|
|
6
6
|
import { assertPublicHttpUrl } from "../../core/request.js";
|
|
7
7
|
import { withMcpClient } from "../mcp-client.js";
|
|
8
|
-
import { providerUserAgent, ProviderRequestError, toProviderExecutionError } from "../provider-runtime.js";
|
|
8
|
+
import { providerUserAgent, ProviderRequestError, toProviderExecutionError, defaultProviderRequestTimeoutMs, } from "../provider-runtime.js";
|
|
9
9
|
const lingxingMcpHost = "openmcp.lingxing.com";
|
|
10
|
-
const lingxingRequestTimeoutMs = 30_000;
|
|
11
10
|
const lingxingToolIntervalMs = 1_000;
|
|
12
11
|
const maximumTrackedRateLimitKeys = 1_024;
|
|
13
12
|
class InMemoryLingxingMcpRateLimiter {
|
|
@@ -137,7 +136,7 @@ export async function callLingxingTool(context, input) {
|
|
|
137
136
|
name: toolName,
|
|
138
137
|
arguments: argumentsValue,
|
|
139
138
|
}, {
|
|
140
|
-
timeout:
|
|
139
|
+
timeout: defaultProviderRequestTimeoutMs,
|
|
141
140
|
signal: context.signal,
|
|
142
141
|
});
|
|
143
142
|
return normalizeLingxingMcpToolResult(toolName, toolResult);
|
|
@@ -147,7 +146,7 @@ export async function callLingxingTool(context, input) {
|
|
|
147
146
|
async function discoverLingxingTools(context) {
|
|
148
147
|
return withLingxingMcpClient(context, async (client) => {
|
|
149
148
|
const result = await client.listTools({}, {
|
|
150
|
-
timeout:
|
|
149
|
+
timeout: defaultProviderRequestTimeoutMs,
|
|
151
150
|
signal: context.signal,
|
|
152
151
|
});
|
|
153
152
|
return result.tools.map((tool) => {
|