@hasna/connectors 1.4.4 → 1.4.6
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 +57 -15
- package/bin/index.js +2076 -1601
- package/bin/mcp.js +757 -344
- package/bin/serve.js +960 -1206
- package/connectors/3scribe/package.json +1 -1
- package/connectors/7todos/package.json +1 -1
- package/connectors/ably/package.json +1 -1
- package/connectors/abstract/package.json +1 -1
- package/connectors/abuselpdb/package.json +1 -1
- package/connectors/accelo/package.json +1 -1
- package/connectors/accredible/package.json +1 -1
- package/connectors/accurai/package.json +1 -1
- package/connectors/accuranker/package.json +1 -1
- package/connectors/acquire/package.json +1 -1
- package/connectors/actionnetwork/package.json +1 -1
- package/connectors/activecampaign/package.json +1 -1
- package/connectors/activetrail/package.json +1 -1
- package/connectors/adalo/package.json +1 -1
- package/connectors/adobe/package.json +1 -1
- package/connectors/adroll/package.json +1 -1
- package/connectors/affinity/package.json +1 -1
- package/connectors/agent/package.json +1 -1
- package/connectors/agilecrm/package.json +1 -1
- package/connectors/aiagenttool/package.json +1 -1
- package/connectors/airbrake/package.json +1 -1
- package/connectors/airnow/package.json +1 -1
- package/connectors/airtable/package.json +1 -1
- package/connectors/airtop/package.json +1 -1
- package/connectors/aitableai/package.json +1 -1
- package/connectors/alchemy/package.json +1 -1
- package/connectors/alerty/package.json +1 -1
- package/connectors/alienvault/package.json +1 -1
- package/connectors/alphamoon/package.json +1 -1
- package/connectors/alttextai/package.json +1 -1
- package/connectors/amadeus/package.json +1 -1
- package/connectors/amazon/package.json +1 -1
- package/connectors/amilia/package.json +1 -1
- package/connectors/amplitude/package.json +1 -1
- package/connectors/amqpsender/package.json +1 -1
- package/connectors/announcekit/package.json +1 -1
- package/connectors/anthropic/package.json +1 -1
- package/connectors/anyscale/package.json +1 -1
- package/connectors/apiary/package.json +1 -1
- package/connectors/apiflash/package.json +1 -1
- package/connectors/apitemplateio/package.json +1 -1
- package/connectors/apptivegrid/package.json +1 -1
- package/connectors/arxiv/package.json +1 -1
- package/connectors/asana/package.json +1 -1
- package/connectors/assemblyai/package.json +1 -1
- package/connectors/auth0/package.json +1 -1
- package/connectors/autom/package.json +1 -1
- package/connectors/automizy/package.json +1 -1
- package/connectors/autopilot/package.json +1 -1
- package/connectors/aws/package.json +2 -2
- package/connectors/awscognito/package.json +1 -1
- package/connectors/azureaisearchvectorstore/package.json +1 -1
- package/connectors/azurecosmosdb/package.json +1 -1
- package/connectors/azureopenaichatmodel/package.json +1 -1
- package/connectors/azurestorage/package.json +1 -1
- package/connectors/badgermaps/package.json +1 -1
- package/connectors/bamboohr/package.json +1 -1
- package/connectors/bandwidth/package.json +1 -1
- package/connectors/bannerbear/package.json +1 -1
- package/connectors/baserow/package.json +1 -1
- package/connectors/baseten/package.json +1 -1
- package/connectors/beeminder/package.json +1 -1
- package/connectors/benchmarkemail/package.json +1 -1
- package/connectors/betterproposals/package.json +1 -1
- package/connectors/bigcartel/package.json +1 -1
- package/connectors/bigdatacloud/package.json +1 -1
- package/connectors/bigml/package.json +1 -1
- package/connectors/bitly/package.json +1 -1
- package/connectors/bitrix24/package.json +1 -1
- package/connectors/bitwarden/package.json +1 -1
- package/connectors/blaze/package.json +1 -1
- package/connectors/blockchainexchange/package.json +1 -1
- package/connectors/bloock/package.json +1 -1
- package/connectors/bluesky/package.json +1 -1
- package/connectors/bot9/package.json +1 -1
- package/connectors/botbaba/package.json +1 -1
- package/connectors/botifier/package.json +1 -1
- package/connectors/botiumbox/package.json +1 -1
- package/connectors/botsonic/package.json +1 -1
- package/connectors/botstar/package.json +1 -1
- package/connectors/box/package.json +1 -1
- package/connectors/brainpodai/package.json +1 -1
- package/connectors/brandblast/package.json +1 -1
- package/connectors/brandfetch/package.json +1 -1
- package/connectors/brandmentions/package.json +1 -1
- package/connectors/brandsight/package.json +1 -1
- package/connectors/breezyhr/package.json +1 -1
- package/connectors/brevo/package.json +1 -1
- package/connectors/brex/package.json +1 -1
- package/connectors/browseai/package.json +1 -1
- package/connectors/browserless/package.json +1 -1
- package/connectors/browserstack/package.json +1 -1
- package/connectors/browseruse/package.json +1 -1
- package/connectors/bubble/package.json +1 -1
- package/connectors/bugbug/package.json +1 -1
- package/connectors/bugfender/package.json +1 -1
- package/connectors/bugherd/package.json +1 -1
- package/connectors/bugpilot/package.json +1 -1
- package/connectors/bugreplay/package.json +1 -1
- package/connectors/bugshot/package.json +1 -1
- package/connectors/buildkite/package.json +1 -1
- package/connectors/bunnycdn/package.json +1 -1
- package/connectors/calendarhero/package.json +1 -1
- package/connectors/calendly/package.json +1 -1
- package/connectors/canvas/package.json +1 -1
- package/connectors/capsule/package.json +1 -1
- package/connectors/carbonblack/package.json +1 -1
- package/connectors/cerebras/package.json +1 -1
- package/connectors/chaindesk/package.json +1 -1
- package/connectors/chargebee/package.json +1 -1
- package/connectors/chargeover/package.json +1 -1
- package/connectors/chargify/package.json +1 -1
- package/connectors/chatbase/package.json +1 -1
- package/connectors/chatling/package.json +1 -1
- package/connectors/chatmasters/package.json +1 -1
- package/connectors/chatrace/package.json +1 -1
- package/connectors/chatsonic/package.json +1 -1
- package/connectors/chekhub/package.json +1 -1
- package/connectors/chromavectorstore/package.json +1 -1
- package/connectors/circleci/package.json +1 -1
- package/connectors/ciscomeraki/package.json +1 -1
- package/connectors/ciscosecureendpoint/package.json +1 -1
- package/connectors/ciscoumbrella/package.json +1 -1
- package/connectors/ciscowebex/package.json +1 -1
- package/connectors/citrixadc/package.json +1 -1
- package/connectors/clappia/package.json +1 -1
- package/connectors/clarifai/package.json +1 -1
- package/connectors/clearbit/package.json +1 -1
- package/connectors/cleverreach/package.json +1 -1
- package/connectors/clickbank/package.json +2 -2
- package/connectors/clicksendsms/package.json +1 -1
- package/connectors/clickup/package.json +1 -1
- package/connectors/clockify/package.json +1 -1
- package/connectors/cloozo/package.json +1 -1
- package/connectors/cloud66/package.json +1 -1
- package/connectors/cloudboost/package.json +1 -1
- package/connectors/cloudconvert/package.json +1 -1
- package/connectors/cloudflare/package.json +1 -1
- package/connectors/cloudflare-workers/package.json +1 -1
- package/connectors/cloudlayer/package.json +1 -1
- package/connectors/cloudshare/package.json +1 -1
- package/connectors/cloze/package.json +1 -1
- package/connectors/cockpit/package.json +1 -1
- package/connectors/coda/package.json +1 -1
- package/connectors/codeclimate/package.json +1 -1
- package/connectors/codefresh/package.json +1 -1
- package/connectors/cody/package.json +1 -1
- package/connectors/cohere/package.json +1 -1
- package/connectors/coinbase/package.json +1 -1
- package/connectors/coingecko/package.json +1 -1
- package/connectors/collegefootballdata/package.json +1 -1
- package/connectors/configcat/package.json +1 -1
- package/connectors/confluence/package.json +1 -1
- package/connectors/confluent/package.json +1 -1
- package/connectors/connect-twocaptcha/package.json +1 -1
- package/connectors/connect-voxel-energy/package.json +1 -1
- package/connectors/contactout/package.json +1 -1
- package/connectors/contentful/package.json +1 -1
- package/connectors/convertapi/package.json +1 -1
- package/connectors/convertkit/package.json +1 -1
- package/connectors/convi/package.json +1 -1
- package/connectors/copper/package.json +1 -1
- package/connectors/copyai/package.json +1 -1
- package/connectors/corsizio/package.json +1 -1
- package/connectors/cortex/package.json +1 -1
- package/connectors/cradlai/package.json +1 -1
- package/connectors/craftdraft/package.json +1 -1
- package/connectors/cratedb/package.json +1 -1
- package/connectors/crisp/package.json +1 -1
- package/connectors/cronly/package.json +1 -1
- package/connectors/crossmint/package.json +1 -1
- package/connectors/crowddev/package.json +1 -1
- package/connectors/crowdin/package.json +1 -1
- package/connectors/crowdpower/package.json +1 -1
- package/connectors/crowdstrike/package.json +1 -1
- package/connectors/cryptolens/package.json +1 -1
- package/connectors/currents/package.json +1 -1
- package/connectors/customerio/package.json +1 -1
- package/connectors/customeriq/package.json +1 -1
- package/connectors/daffy/package.json +1 -1
- package/connectors/danteai/package.json +1 -1
- package/connectors/darkskyapi/package.json +1 -1
- package/connectors/dasha/package.json +1 -1
- package/connectors/databox/package.json +1 -1
- package/connectors/databricks/package.json +1 -1
- package/connectors/datadog/package.json +1 -1
- package/connectors/datarobot/package.json +1 -1
- package/connectors/datasoap/package.json +1 -1
- package/connectors/datumbox/package.json +1 -1
- package/connectors/dayschedule/package.json +1 -1
- package/connectors/deepgram/package.json +1 -1
- package/connectors/deepinfra/package.json +1 -1
- package/connectors/deepl/package.json +1 -1
- package/connectors/deepseek/package.json +1 -1
- package/connectors/demio/package.json +1 -1
- package/connectors/descript/package.json +1 -1
- package/connectors/detrack/package.json +1 -1
- package/connectors/devcycle/package.json +1 -1
- package/connectors/dhl/package.json +1 -1
- package/connectors/dialzara/package.json +1 -1
- package/connectors/diddoai/package.json +1 -1
- package/connectors/diffy/package.json +1 -1
- package/connectors/digicert/package.json +1 -1
- package/connectors/digitalocean/package.json +1 -1
- package/connectors/discord/package.json +1 -1
- package/connectors/discourse/package.json +1 -1
- package/connectors/disqus/package.json +1 -1
- package/connectors/dockcerts/package.json +1 -1
- package/connectors/docker/package.json +1 -1
- package/connectors/docparser/package.json +1 -1
- package/connectors/docsbotai/package.json +1 -1
- package/connectors/docupilot/package.json +1 -1
- package/connectors/docusign/package.json +1 -1
- package/connectors/docuwriter/package.json +1 -1
- package/connectors/dokan/package.json +1 -1
- package/connectors/domo/package.json +1 -1
- package/connectors/draftable/package.json +1 -1
- package/connectors/drift/package.json +1 -1
- package/connectors/dropbox/package.json +1 -1
- package/connectors/dropcontact/package.json +1 -1
- package/connectors/droxy/package.json +1 -1
- package/connectors/dynatrace/package.json +1 -1
- package/connectors/e2b/package.json +1 -1
- package/connectors/eartho/package.json +1 -1
- package/connectors/easyship/package.json +1 -1
- package/connectors/echowin/package.json +1 -1
- package/connectors/ecwid/package.json +1 -1
- package/connectors/edenai/package.json +1 -1
- package/connectors/egoi/package.json +1 -1
- package/connectors/elasticsearch/package.json +1 -1
- package/connectors/elasticsecurity/package.json +1 -1
- package/connectors/elevenlabs/package.json +1 -1
- package/connectors/elmah/package.json +1 -1
- package/connectors/embedai/package.json +1 -1
- package/connectors/emelia/package.json +1 -1
- package/connectors/empsing/package.json +1 -1
- package/connectors/engati/package.json +1 -1
- package/connectors/enormail/package.json +1 -1
- package/connectors/enterpret/package.json +1 -1
- package/connectors/envoy/package.json +1 -1
- package/connectors/epo/package.json +1 -1
- package/connectors/erpnext/package.json +1 -1
- package/connectors/esendex/package.json +1 -1
- package/connectors/evervault/package.json +1 -1
- package/connectors/evolphinzoom/package.json +1 -1
- package/connectors/exa/package.json +1 -1
- package/connectors/f5bigip/package.json +1 -1
- package/connectors/fal/package.json +1 -1
- package/connectors/faraday/package.json +1 -1
- package/connectors/faros/package.json +1 -1
- package/connectors/fastbots/package.json +1 -1
- package/connectors/fathom/package.json +1 -1
- package/connectors/figma/package.json +1 -1
- package/connectors/filemaker/package.json +1 -1
- package/connectors/filescan/package.json +1 -1
- package/connectors/firecrawl/README.md +10 -0
- package/connectors/firecrawl/package.json +1 -1
- package/connectors/firecrawl/src/cli/extraction.test.ts +46 -0
- package/connectors/firecrawl/src/cli/extraction.ts +36 -0
- package/connectors/firecrawl/src/cli/index.ts +5 -0
- package/connectors/fireworks/package.json +1 -1
- package/connectors/firmao/package.json +1 -1
- package/connectors/fitbit/package.json +1 -1
- package/connectors/flagship/package.json +1 -1
- package/connectors/float/package.json +1 -1
- package/connectors/flotiq/package.json +1 -1
- package/connectors/flow/package.json +1 -1
- package/connectors/fluentsupport/package.json +1 -1
- package/connectors/focuster/package.json +1 -1
- package/connectors/formcarry/package.json +1 -1
- package/connectors/formdesk/package.json +1 -1
- package/connectors/formsite/package.json +1 -1
- package/connectors/formsonfire/package.json +1 -1
- package/connectors/formstackdocuments/package.json +1 -1
- package/connectors/fortinetfortigate/package.json +1 -1
- package/connectors/foursquare/package.json +1 -1
- package/connectors/freedictionary/package.json +1 -1
- package/connectors/freshdesk/package.json +1 -1
- package/connectors/freshping/package.json +1 -1
- package/connectors/freshservice/package.json +1 -1
- package/connectors/freshworkscrm/package.json +1 -1
- package/connectors/fullcontact/package.json +1 -1
- package/connectors/fusioo/package.json +1 -1
- package/connectors/gali/package.json +1 -1
- package/connectors/gatekeeper/package.json +1 -1
- package/connectors/genderapi/package.json +1 -1
- package/connectors/getresponse/package.json +1 -1
- package/connectors/getscreenshot/package.json +1 -1
- package/connectors/ghost/package.json +1 -1
- package/connectors/giphy/package.json +1 -1
- package/connectors/gitea/package.json +1 -1
- package/connectors/github/package.json +1 -1
- package/connectors/gitlab/package.json +1 -1
- package/connectors/gleap/package.json +1 -1
- package/connectors/gmail/package.json +1 -1
- package/connectors/gocanvas/package.json +1 -1
- package/connectors/godaddy/package.json +1 -1
- package/connectors/gong/package.json +1 -1
- package/connectors/google/package.json +1 -1
- package/connectors/googleads/package.json +1 -1
- package/connectors/googleanalytics/package.json +1 -1
- package/connectors/googlebigquery/package.json +1 -1
- package/connectors/googlebooks/package.json +1 -1
- package/connectors/googlebusinessprofile/package.json +1 -1
- package/connectors/googlecalendar/package.json +1 -1
- package/connectors/googlechat/package.json +1 -1
- package/connectors/googlecloud/package.json +1 -1
- package/connectors/googlecontacts/package.json +1 -1
- package/connectors/googledocs/package.json +1 -1
- package/connectors/googledrive/package.json +1 -1
- package/connectors/googleforms/package.json +1 -1
- package/connectors/googlegemini/package.json +1 -1
- package/connectors/googlemaps/package.json +1 -1
- package/connectors/googleperspective/package.json +1 -1
- package/connectors/googlephotos/package.json +1 -1
- package/connectors/googlesheets/package.json +1 -1
- package/connectors/googleslides/package.json +1 -1
- package/connectors/googletables/package.json +1 -1
- package/connectors/googletasks/package.json +1 -1
- package/connectors/googletranslate/package.json +1 -1
- package/connectors/googlevertexai/package.json +1 -1
- package/connectors/gotify/package.json +1 -1
- package/connectors/gotowebinar/package.json +1 -1
- package/connectors/gptea/package.json +1 -1
- package/connectors/grafana/package.json +1 -1
- package/connectors/grain/package.json +1 -1
- package/connectors/gravityforms/package.json +1 -1
- package/connectors/grist/package.json +1 -1
- package/connectors/groq/package.json +1 -1
- package/connectors/growbots/package.json +1 -1
- package/connectors/gumroad/package.json +1 -1
- package/connectors/gupshup/package.json +1 -1
- package/connectors/guru/package.json +1 -1
- package/connectors/hackernews/package.json +1 -1
- package/connectors/halopsa/package.json +1 -1
- package/connectors/handwrytten/package.json +1 -1
- package/connectors/hansei/package.json +1 -1
- package/connectors/harrypotterapi/package.json +1 -1
- package/connectors/harvest/package.json +1 -1
- package/connectors/headlesstesting/package.json +1 -1
- package/connectors/hedra/package.json +1 -1
- package/connectors/helcim/package.json +1 -1
- package/connectors/hellosign/package.json +1 -1
- package/connectors/helpscout/package.json +1 -1
- package/connectors/heygen/package.json +1 -1
- package/connectors/heysummit/package.json +1 -1
- package/connectors/highlevel/package.json +1 -1
- package/connectors/homeassistant/package.json +1 -1
- package/connectors/hubplanner/package.json +1 -1
- package/connectors/hubspot/package.json +1 -1
- package/connectors/huggingface/package.json +1 -1
- package/connectors/humanticai/package.json +1 -1
- package/connectors/hunter/package.json +1 -1
- package/connectors/hybridanalysis/package.json +1 -1
- package/connectors/iauditorbysafetyculture/package.json +1 -1
- package/connectors/icons8/package.json +1 -1
- package/connectors/idealpostcodes/package.json +1 -1
- package/connectors/idealspot/package.json +1 -1
- package/connectors/ideogram/package.json +1 -1
- package/connectors/ideta/package.json +1 -1
- package/connectors/imessage/package.json +1 -1
- package/connectors/imgbb/package.json +1 -1
- package/connectors/imgur/package.json +1 -1
- package/connectors/impervawaf/package.json +1 -1
- package/connectors/impira/package.json +1 -1
- package/connectors/industryselect/package.json +1 -1
- package/connectors/influxdbcloud/package.json +1 -1
- package/connectors/infolobby/package.json +1 -1
- package/connectors/instabot/package.json +1 -1
- package/connectors/instabug/package.json +1 -1
- package/connectors/intakeq/package.json +1 -1
- package/connectors/intercom/package.json +1 -1
- package/connectors/invoiced/package.json +1 -1
- package/connectors/invoiceninja/package.json +1 -1
- package/connectors/ip2location/package.json +1 -1
- package/connectors/ipinfo/package.json +1 -1
- package/connectors/ipregistry/package.json +1 -1
- package/connectors/irisdfir/package.json +1 -1
- package/connectors/isn/package.json +1 -1
- package/connectors/iterable/package.json +1 -1
- package/connectors/jama/package.json +1 -1
- package/connectors/jasper/package.json +1 -1
- package/connectors/jenkins/package.json +1 -1
- package/connectors/jinaai/package.json +1 -1
- package/connectors/jira/package.json +1 -1
- package/connectors/kadoa/package.json +1 -1
- package/connectors/kafka/package.json +1 -1
- package/connectors/kaggle/package.json +1 -1
- package/connectors/kanbantool/package.json +1 -1
- package/connectors/karbon/package.json +1 -1
- package/connectors/keap/package.json +1 -1
- package/connectors/keygen/package.json +1 -1
- package/connectors/keyzy/package.json +1 -1
- package/connectors/kibana/package.json +1 -1
- package/connectors/kitemaker/package.json +1 -1
- package/connectors/klaviyo/package.json +1 -1
- package/connectors/klazify/package.json +1 -1
- package/connectors/kling/package.json +1 -1
- package/connectors/knack/package.json +1 -1
- package/connectors/knowbe4/package.json +1 -1
- package/connectors/kobotoolbox/package.json +1 -1
- package/connectors/kraftful/package.json +1 -1
- package/connectors/lagrowthmachine/package.json +1 -1
- package/connectors/lambdatest/package.json +1 -1
- package/connectors/landbot/package.json +1 -1
- package/connectors/laposta/package.json +1 -1
- package/connectors/launch27/package.json +1 -1
- package/connectors/launchdarkly/package.json +1 -1
- package/connectors/ldap/package.json +1 -1
- package/connectors/leadboxer/package.json +1 -1
- package/connectors/leadpops/package.json +1 -1
- package/connectors/lemlist/package.json +1 -1
- package/connectors/lemonsqueezy/package.json +1 -1
- package/connectors/leonardo/package.json +1 -1
- package/connectors/lepton/package.json +1 -1
- package/connectors/letsenhance/package.json +1 -1
- package/connectors/libraria/package.json +1 -1
- package/connectors/lighthouse/package.json +1 -1
- package/connectors/limego/package.json +1 -1
- package/connectors/line/package.json +1 -1
- package/connectors/linear/package.json +1 -1
- package/connectors/lingvanex/package.json +1 -1
- package/connectors/linkedin/package.json +1 -1
- package/connectors/linkish/package.json +1 -1
- package/connectors/linode/package.json +1 -1
- package/connectors/liveagent/package.json +1 -1
- package/connectors/localazy/package.json +1 -1
- package/connectors/loginradius/package.json +1 -1
- package/connectors/lokalise/package.json +1 -1
- package/connectors/lonescale/package.json +1 -1
- package/connectors/lucidchart/package.json +1 -1
- package/connectors/luma/package.json +1 -1
- package/connectors/magento2/package.json +1 -1
- package/connectors/mailcheck/package.json +1 -1
- package/connectors/mailchimp/package.json +1 -1
- package/connectors/mailerlite/package.json +1 -1
- package/connectors/mailersend/package.json +1 -1
- package/connectors/mailgun/package.json +1 -1
- package/connectors/mailify/package.json +1 -1
- package/connectors/mailjet/package.json +1 -1
- package/connectors/mailmodo/package.json +1 -1
- package/connectors/malcore/package.json +1 -1
- package/connectors/mandrill/package.json +1 -1
- package/connectors/marcomrobot/package.json +1 -1
- package/connectors/marketingmasterio/package.json +1 -1
- package/connectors/marketplacer/package.json +1 -1
- package/connectors/marketstack/package.json +1 -1
- package/connectors/maropost/package.json +1 -1
- package/connectors/mastodon/package.json +1 -1
- package/connectors/matrix/package.json +1 -1
- package/connectors/mattermost/package.json +1 -1
- package/connectors/mautic/package.json +1 -1
- package/connectors/mav/package.json +1 -1
- package/connectors/maverick/package.json +1 -1
- package/connectors/medium/package.json +1 -1
- package/connectors/mem/package.json +1 -1
- package/connectors/mercury/package.json +1 -1
- package/connectors/messagebird/package.json +1 -1
- package/connectors/meta/package.json +1 -1
- package/connectors/metabase/package.json +1 -1
- package/connectors/mews/package.json +1 -1
- package/connectors/microsoftazuremonitor/package.json +1 -1
- package/connectors/microsoftdynamics365businesscentralapi/package.json +1 -1
- package/connectors/microsoftdynamicscrm/package.json +1 -1
- package/connectors/microsoftentraid/package.json +1 -1
- package/connectors/microsoftentraidazureactivedirectory/package.json +1 -1
- package/connectors/microsoftexcel/package.json +1 -1
- package/connectors/microsoftgraphsecurity/package.json +1 -1
- package/connectors/microsoftonedrive/package.json +1 -1
- package/connectors/microsoftoutlook/package.json +1 -1
- package/connectors/microsoftsharepoint/package.json +1 -1
- package/connectors/microsoftsql/package.json +1 -1
- package/connectors/microsoftteams/package.json +1 -1
- package/connectors/microsoftteamsadmin/package.json +1 -1
- package/connectors/microsofttodo/package.json +1 -1
- package/connectors/midjourney/package.json +1 -1
- package/connectors/miestro/package.json +1 -1
- package/connectors/mindee/package.json +1 -1
- package/connectors/minimax/package.json +1 -1
- package/connectors/miro/package.json +1 -1
- package/connectors/misp/package.json +1 -1
- package/connectors/missive/package.json +1 -1
- package/connectors/mist/package.json +1 -1
- package/connectors/mistral/package.json +1 -1
- package/connectors/mixpanel/package.json +1 -1
- package/connectors/mocean/package.json +1 -1
- package/connectors/modal/package.json +1 -1
- package/connectors/monday/package.json +1 -1
- package/connectors/mongodb/package.json +1 -1
- package/connectors/monicacrm/package.json +1 -1
- package/connectors/moonclerk/package.json +1 -1
- package/connectors/moonmail/package.json +1 -1
- package/connectors/morph/package.json +1 -1
- package/connectors/mqtt/package.json +1 -1
- package/connectors/msg91/package.json +1 -1
- package/connectors/mubert/package.json +1 -1
- package/connectors/murf/package.json +1 -1
- package/connectors/mux/package.json +1 -1
- package/connectors/mxtoolbox/package.json +1 -1
- package/connectors/myaskai/package.json +1 -1
- package/connectors/myphoner/package.json +1 -1
- package/connectors/mysql/package.json +1 -1
- package/connectors/namecheap/package.json +1 -1
- package/connectors/nanonetsocr/package.json +1 -1
- package/connectors/nasa/package.json +1 -1
- package/connectors/ncscale/package.json +1 -1
- package/connectors/netlify/package.json +1 -1
- package/connectors/nextcloud/package.json +1 -1
- package/connectors/nightfallai/package.json +1 -1
- package/connectors/ninox/package.json +1 -1
- package/connectors/nmkr/package.json +1 -1
- package/connectors/nocodb/package.json +1 -1
- package/connectors/notion/package.json +1 -1
- package/connectors/npm/package.json +1 -1
- package/connectors/nuclia/package.json +1 -1
- package/connectors/nusiiproposals/package.json +1 -1
- package/connectors/nyckel/package.json +1 -1
- package/connectors/nyota/package.json +1 -1
- package/connectors/occasion/package.json +1 -1
- package/connectors/ocrspace/package.json +1 -1
- package/connectors/octoai/package.json +1 -1
- package/connectors/odoo/package.json +1 -1
- package/connectors/offalerts/package.json +1 -1
- package/connectors/okta/package.json +1 -1
- package/connectors/ollama/package.json +1 -1
- package/connectors/omeda/package.json +1 -1
- package/connectors/omniconvert/package.json +1 -1
- package/connectors/omnimind/package.json +1 -1
- package/connectors/on2air/package.json +1 -1
- package/connectors/oneai/package.json +1 -1
- package/connectors/onesimpleapi/package.json +1 -1
- package/connectors/onfleet/package.json +1 -1
- package/connectors/openai/AGENTS.md +0 -1
- package/connectors/openai/README.md +3 -3
- package/connectors/openai/package.json +3 -2
- package/connectors/opencti/package.json +1 -1
- package/connectors/openthesaurus/package.json +1 -1
- package/connectors/openweathermap/package.json +1 -1
- package/connectors/opnformerlyomise/package.json +1 -1
- package/connectors/oracledatabase/package.json +1 -1
- package/connectors/orbit/package.json +1 -1
- package/connectors/orderdesk/package.json +1 -1
- package/connectors/ortto/package.json +1 -1
- package/connectors/oura/package.json +1 -1
- package/connectors/paddle/package.json +1 -1
- package/connectors/pagerduty/package.json +1 -1
- package/connectors/pandadoc/package.json +1 -1
- package/connectors/paperform/package.json +1 -1
- package/connectors/papyrs/package.json +1 -1
- package/connectors/parsehub/package.json +1 -1
- package/connectors/parseprompt/package.json +1 -1
- package/connectors/passcreator/package.json +1 -1
- package/connectors/passslot/package.json +1 -1
- package/connectors/patentsview/package.json +1 -1
- package/connectors/patreon/package.json +1 -1
- package/connectors/paymo/package.json +1 -1
- package/connectors/paypal/package.json +1 -1
- package/connectors/peekalink/package.json +1 -1
- package/connectors/perplexity/package.json +1 -1
- package/connectors/persio/package.json +1 -1
- package/connectors/personalai/package.json +1 -1
- package/connectors/phantombuster/package.json +1 -1
- package/connectors/philipshue/package.json +1 -1
- package/connectors/phrase/package.json +1 -1
- package/connectors/pika/package.json +1 -1
- package/connectors/pinata/package.json +1 -1
- package/connectors/pinboard/package.json +1 -1
- package/connectors/pinterest/package.json +1 -1
- package/connectors/pipedrive/package.json +1 -1
- package/connectors/pipefy/package.json +1 -1
- package/connectors/pirateweather/package.json +1 -1
- package/connectors/pitchly/package.json +1 -1
- package/connectors/pivotaltracker/package.json +1 -1
- package/connectors/plaid/package.json +1 -1
- package/connectors/planviewleankit/package.json +1 -1
- package/connectors/planyoonlinebooking/package.json +1 -1
- package/connectors/platformly/package.json +1 -1
- package/connectors/playht/package.json +1 -1
- package/connectors/plecto/package.json +1 -1
- package/connectors/plivo/package.json +1 -1
- package/connectors/postgres/package.json +1 -1
- package/connectors/posthog/package.json +1 -1
- package/connectors/practitest/package.json +1 -1
- package/connectors/predisai/package.json +1 -1
- package/connectors/prodia/package.json +1 -1
- package/connectors/producthunt/package.json +1 -1
- package/connectors/profitwell/package.json +1 -1
- package/connectors/projectbubbleproprofsproject/package.json +1 -1
- package/connectors/prompthub/package.json +1 -1
- package/connectors/prospeai/package.json +1 -1
- package/connectors/pulsetic/package.json +1 -1
- package/connectors/pushbullet/package.json +1 -1
- package/connectors/pushcut/package.json +1 -1
- package/connectors/pusher/package.json +1 -1
- package/connectors/pushover/package.json +1 -1
- package/connectors/qradar/package.json +1 -1
- package/connectors/qualaroo/package.json +1 -1
- package/connectors/qualys/package.json +1 -1
- package/connectors/quentn/package.json +1 -1
- package/connectors/questdb/package.json +1 -1
- package/connectors/quickbase/package.json +1 -1
- package/connectors/quickbooksonline/package.json +1 -1
- package/connectors/quickchart/package.json +1 -1
- package/connectors/quintadb/package.json +1 -1
- package/connectors/quo/package.json +1 -1
- package/connectors/rabbitmq/package.json +1 -1
- package/connectors/radar/package.json +1 -1
- package/connectors/raindrop/package.json +1 -1
- package/connectors/rapid7insightvm/package.json +1 -1
- package/connectors/raventools/package.json +1 -1
- package/connectors/rawgvideogamesdatabase/package.json +1 -1
- package/connectors/rdstationcrm/package.json +1 -1
- package/connectors/readai/package.json +1 -1
- package/connectors/realphonevalidation/package.json +1 -1
- package/connectors/recharge/package.json +1 -1
- package/connectors/recordedfuture/package.json +1 -1
- package/connectors/redash/package.json +1 -1
- package/connectors/reddit/package.json +1 -1
- package/connectors/redis/package.json +1 -1
- package/connectors/reducto/package.json +1 -1
- package/connectors/relevanceai/package.json +1 -1
- package/connectors/relinkurlshortener/package.json +1 -1
- package/connectors/relysia/package.json +1 -1
- package/connectors/replicate/package.json +1 -1
- package/connectors/reply/package.json +1 -1
- package/connectors/replyio/package.json +1 -1
- package/connectors/resemble/package.json +1 -1
- package/connectors/resend/package.json +1 -1
- package/connectors/retable/package.json +1 -1
- package/connectors/reversecontact/package.json +1 -1
- package/connectors/revolut/package.json +1 -1
- package/connectors/rewardful/package.json +1 -1
- package/connectors/ritekit/package.json +1 -1
- package/connectors/roboflow/package.json +1 -1
- package/connectors/robolytix/package.json +1 -1
- package/connectors/roboresponseai/package.json +1 -1
- package/connectors/rocketchat/package.json +1 -1
- package/connectors/rollbar/package.json +1 -1
- package/connectors/rootly/package.json +1 -1
- package/connectors/route4me/package.json +1 -1
- package/connectors/rundeck/package.json +1 -1
- package/connectors/runpod/package.json +1 -1
- package/connectors/runway/package.json +1 -1
- package/connectors/s3/package.json +1 -1
- package/connectors/salesforce/package.json +1 -1
- package/connectors/salesmaa/package.json +1 -1
- package/connectors/salesmate/package.json +1 -1
- package/connectors/salesmsg/package.json +1 -1
- package/connectors/salesrocks/package.json +1 -1
- package/connectors/salessimplify/package.json +1 -1
- package/connectors/samsungsmartthings/package.json +1 -1
- package/connectors/scrapeitcloud/package.json +1 -1
- package/connectors/scrapeninja/package.json +1 -1
- package/connectors/screenshotone/package.json +1 -1
- package/connectors/seamlessai/package.json +1 -1
- package/connectors/searchandsave/package.json +1 -1
- package/connectors/searxng/package.json +1 -1
- package/connectors/seatable/package.json +1 -1
- package/connectors/securityscorecard/package.json +1 -1
- package/connectors/sedo/package.json +1 -1
- package/connectors/segment/package.json +1 -1
- package/connectors/sekoia/package.json +1 -1
- package/connectors/sellix/package.json +1 -1
- package/connectors/semblyai/package.json +1 -1
- package/connectors/sendgrid/package.json +1 -1
- package/connectors/sendy/package.json +1 -1
- package/connectors/sentry/package.json +1 -1
- package/connectors/servicenow/package.json +1 -1
- package/connectors/shadcn/package.json +1 -1
- package/connectors/sharlyai/package.json +1 -1
- package/connectors/shiphero/package.json +1 -1
- package/connectors/shipstation/package.json +1 -1
- package/connectors/shopify/package.json +1 -1
- package/connectors/shortio/package.json +1 -1
- package/connectors/shuffler/package.json +1 -1
- package/connectors/sierrainteractive/package.json +1 -1
- package/connectors/sifter/package.json +1 -1
- package/connectors/signaturit/package.json +1 -1
- package/connectors/signl4/package.json +1 -1
- package/connectors/simpleem/package.json +1 -1
- package/connectors/simplehash/package.json +1 -1
- package/connectors/simplekpi/package.json +1 -1
- package/connectors/simplelocalize/package.json +1 -1
- package/connectors/simplero/package.json +1 -1
- package/connectors/simpletexting/package.json +1 -1
- package/connectors/sitecreatorio/package.json +1 -1
- package/connectors/sitespeakai/package.json +1 -1
- package/connectors/slack/package.json +1 -1
- package/connectors/smaily/package.json +1 -1
- package/connectors/smartreach/package.json +1 -1
- package/connectors/smartrecruiters/package.json +1 -1
- package/connectors/smartsheet/package.json +1 -1
- package/connectors/smartsuite/package.json +1 -1
- package/connectors/smile-io/package.json +1 -1
- package/connectors/smol-machines/package.json +1 -1
- package/connectors/sms77/package.json +1 -1
- package/connectors/smsit/package.json +1 -1
- package/connectors/smsmagic/package.json +1 -1
- package/connectors/smtp2go/package.json +1 -1
- package/connectors/snap/package.json +1 -1
- package/connectors/snapdocs/package.json +1 -1
- package/connectors/snatchbot/package.json +1 -1
- package/connectors/snipcart/package.json +1 -1
- package/connectors/snov-io/package.json +1 -1
- package/connectors/snowflake/package.json +1 -1
- package/connectors/solcast/package.json +1 -1
- package/connectors/solvedata/package.json +1 -1
- package/connectors/sonarqube/package.json +1 -1
- package/connectors/sparkpost/package.json +1 -1
- package/connectors/speakeasy-api/package.json +1 -1
- package/connectors/specific/package.json +1 -1
- package/connectors/specter/package.json +1 -1
- package/connectors/speechify/package.json +1 -1
- package/connectors/spike/package.json +1 -1
- package/connectors/split-in-batches/package.json +1 -1
- package/connectors/split-io/package.json +1 -1
- package/connectors/splunk/package.json +1 -1
- package/connectors/splunk-cloud/package.json +1 -1
- package/connectors/spondyr/package.json +1 -1
- package/connectors/sponge/package.json +1 -1
- package/connectors/spontit/package.json +1 -1
- package/connectors/sportsdata/package.json +1 -1
- package/connectors/spotify/package.json +1 -1
- package/connectors/spotify-ads/package.json +1 -1
- package/connectors/spotpay/package.json +1 -1
- package/connectors/spreadsheet-file/package.json +1 -1
- package/connectors/sprig/package.json +1 -1
- package/connectors/sprinklr/package.json +1 -1
- package/connectors/sprout-social/package.json +1 -1
- package/connectors/spydra/package.json +1 -1
- package/connectors/square/package.json +1 -1
- package/connectors/squarespace/package.json +1 -1
- package/connectors/squid/package.json +1 -1
- package/connectors/sse-trigger/package.json +1 -1
- package/connectors/ssh/package.json +1 -1
- package/connectors/sslmatecertspotterapi/package.json +1 -1
- package/connectors/stability-api-platform/package.json +1 -1
- package/connectors/stabilityai/package.json +1 -1
- package/connectors/stablebrowse/package.json +1 -1
- package/connectors/stackadapt/package.json +1 -1
- package/connectors/stackby/package.json +1 -1
- package/connectors/stackexchange/package.json +1 -1
- package/connectors/stage/package.json +1 -1
- package/connectors/stagehand/package.json +1 -1
- package/connectors/stainlessapi/package.json +1 -1
- package/connectors/stammerai/package.json +1 -1
- package/connectors/stampedio/package.json +1 -1
- package/connectors/standard-signal/package.json +1 -1
- package/connectors/standout/package.json +1 -1
- package/connectors/starton/package.json +1 -1
- package/connectors/statsig/package.json +1 -1
- package/connectors/statuscake/package.json +1 -1
- package/connectors/statuspage/package.json +1 -1
- package/connectors/steel-dev/package.json +1 -1
- package/connectors/sticky-note/package.json +1 -1
- package/connectors/stilta/package.json +1 -1
- package/connectors/stitch-data/package.json +1 -1
- package/connectors/stop-and-error/package.json +1 -1
- package/connectors/stoplight/package.json +1 -1
- package/connectors/stoplight-api-platform/package.json +1 -1
- package/connectors/storyblok/package.json +1 -1
- package/connectors/strand-ai/package.json +1 -1
- package/connectors/strapi/package.json +1 -1
- package/connectors/strava/package.json +1 -1
- package/connectors/streak/package.json +1 -1
- package/connectors/streamable/package.json +1 -1
- package/connectors/stripe/package.json +1 -1
- package/connectors/stripe-billing-advanced/package.json +1 -1
- package/connectors/stripe-connect-platform/package.json +1 -1
- package/connectors/stripe-financial-connections/package.json +1 -1
- package/connectors/stripe-issuing/package.json +1 -1
- package/connectors/stripe-reporting-advanced/package.json +1 -1
- package/connectors/stripe-sigma/package.json +1 -1
- package/connectors/stripe-tax-advanced/package.json +1 -1
- package/connectors/stripe-terminal/package.json +1 -1
- package/connectors/stripe-webhooks-advanced/package.json +1 -1
- package/connectors/stripeapps/package.json +1 -1
- package/connectors/stripeatlas/package.json +1 -1
- package/connectors/stripecapital/package.json +1 -1
- package/connectors/stripeclimate/package.json +1 -1
- package/connectors/stripeidentity/package.json +1 -1
- package/connectors/stripetreasury/package.json +1 -1
- package/connectors/studiobyai21labs/package.json +1 -1
- package/connectors/stytch/package.json +1 -1
- package/connectors/substack/package.json +1 -1
- package/connectors/sucuri/package.json +1 -1
- package/connectors/sucuri-api-platform/package.json +1 -1
- package/connectors/sugarcrm/package.json +1 -1
- package/connectors/suitedash/package.json +1 -1
- package/connectors/sumo-logic/package.json +1 -1
- package/connectors/suno/package.json +1 -1
- package/connectors/supabase/package.json +1 -1
- package/connectors/supabase-api-platform/package.json +1 -1
- package/connectors/supadata/package.json +1 -1
- package/connectors/supernormal/package.json +1 -1
- package/connectors/superpowered/package.json +1 -1
- package/connectors/superset/package.json +1 -1
- package/connectors/supportbee/package.json +1 -1
- package/connectors/supportivekoala/package.json +1 -1
- package/connectors/surtrdefensesystems/package.json +1 -1
- package/connectors/surveysparrow/package.json +1 -1
- package/connectors/survicate/package.json +1 -1
- package/connectors/swagup/package.json +1 -1
- package/connectors/switchboard/package.json +1 -1
- package/connectors/syncly/package.json +1 -1
- package/connectors/syncromsp/package.json +1 -1
- package/connectors/synphony/package.json +1 -1
- package/connectors/synthesia/package.json +1 -1
- package/connectors/syntheticsciences/package.json +1 -1
- package/connectors/syntropy/package.json +1 -1
- package/connectors/sysdig/package.json +1 -1
- package/connectors/tableau/package.json +1 -1
- package/connectors/taboola/package.json +1 -1
- package/connectors/taiga/package.json +1 -1
- package/connectors/takecareos/package.json +1 -1
- package/connectors/talend-api-platform/package.json +1 -1
- package/connectors/talentlms/package.json +1 -1
- package/connectors/talkdesk/package.json +1 -1
- package/connectors/talknotes/package.json +1 -1
- package/connectors/tapfiliate/package.json +1 -1
- package/connectors/tave/package.json +1 -1
- package/connectors/tdameritrade/package.json +1 -1
- package/connectors/teachable/package.json +1 -1
- package/connectors/teamdeck/package.json +1 -1
- package/connectors/teamgate/package.json +1 -1
- package/connectors/teamtailor/package.json +1 -1
- package/connectors/teamup/package.json +1 -1
- package/connectors/teamwork/package.json +1 -1
- package/connectors/teknoir/package.json +1 -1
- package/connectors/telegram/package.json +1 -1
- package/connectors/teleport/package.json +1 -1
- package/connectors/telnyx/package.json +1 -1
- package/connectors/telnyx/src/utils/config.ts +1 -1
- package/connectors/tenable/package.json +1 -1
- package/connectors/tenor/package.json +1 -1
- package/connectors/tensorboard/package.json +1 -1
- package/connectors/tepali/package.json +1 -1
- package/connectors/terminal-use/package.json +1 -1
- package/connectors/terminus/package.json +1 -1
- package/connectors/terraform-cloud/package.json +1 -1
- package/connectors/testerarmy/package.json +1 -1
- package/connectors/testim/package.json +1 -1
- package/connectors/testmo/package.json +1 -1
- package/connectors/testmonitor/package.json +1 -1
- package/connectors/testrail/package.json +1 -1
- package/connectors/testrigor/package.json +1 -1
- package/connectors/tettra/package.json +1 -1
- package/connectors/tettra-api-platform/package.json +1 -1
- package/connectors/textcortex/package.json +1 -1
- package/connectors/textcortexai/package.json +1 -1
- package/connectors/textgain/package.json +1 -1
- package/connectors/textit/package.json +1 -1
- package/connectors/textkit/package.json +1 -1
- package/connectors/textmagic/package.json +1 -1
- package/connectors/textrazor/package.json +1 -1
- package/connectors/textsidekick/package.json +1 -1
- package/connectors/thankster/package.json +1 -1
- package/connectors/the-company-company/package.json +1 -1
- package/connectors/the-hive-project/package.json +1 -1
- package/connectors/the-token-company/package.json +1 -1
- package/connectors/the-trade-desk/package.json +1 -1
- package/connectors/thecustomerfactor/package.json +1 -1
- package/connectors/thehive/package.json +1 -1
- package/connectors/thehive5/package.json +1 -1
- package/connectors/theleap/package.json +1 -1
- package/connectors/thoughtfulgpt/package.json +1 -1
- package/connectors/thoughtspot/package.json +1 -1
- package/connectors/thousandeyes/package.json +1 -1
- package/connectors/thrivecart/package.json +1 -1
- package/connectors/ticket-tailor/package.json +1 -1
- package/connectors/ticketbud/package.json +1 -1
- package/connectors/ticketmaster/package.json +1 -1
- package/connectors/ticketsource/package.json +1 -1
- package/connectors/ticktick/package.json +1 -1
- package/connectors/tidbcloud/package.json +1 -1
- package/connectors/tidio/package.json +1 -1
- package/connectors/tierion/package.json +1 -1
- package/connectors/tiktok/package.json +1 -1
- package/connectors/tiktok-events-api/package.json +1 -1
- package/connectors/tiktokads/package.json +1 -1
- package/connectors/tilda/package.json +1 -1
- package/connectors/time-saved/package.json +1 -1
- package/connectors/timelinesai/package.json +1 -1
- package/connectors/timescaledb/package.json +1 -1
- package/connectors/timetonic/package.json +1 -1
- package/connectors/tines/package.json +1 -1
- package/connectors/tinker/package.json +1 -1
- package/connectors/tinybird/package.json +1 -1
- package/connectors/tinypng/package.json +1 -1
- package/connectors/tinyurl/package.json +1 -1
- package/connectors/tipalti/package.json +1 -1
- package/connectors/tisane/package.json +1 -1
- package/connectors/tisanelabs/package.json +1 -1
- package/connectors/tito/package.json +1 -1
- package/connectors/toast-pos/package.json +1 -1
- package/connectors/todoist/package.json +1 -1
- package/connectors/together/package.json +1 -1
- package/connectors/together-api-platform/package.json +1 -1
- package/connectors/toggl/package.json +1 -1
- package/connectors/toggl-track/package.json +1 -1
- package/connectors/tokenmetrics/package.json +1 -1
- package/connectors/toket/package.json +1 -1
- package/connectors/tomtom/package.json +1 -1
- package/connectors/topaz-labs/package.json +1 -1
- package/connectors/totalis/package.json +1 -1
- package/connectors/totango/package.json +1 -1
- package/connectors/totp/package.json +1 -1
- package/connectors/trackjs/package.json +1 -1
- package/connectors/trackvia/package.json +1 -1
- package/connectors/transform/package.json +1 -1
- package/connectors/transifex/package.json +1 -1
- package/connectors/transload/package.json +1 -1
- package/connectors/traverse/package.json +1 -1
- package/connectors/travisci/package.json +1 -1
- package/connectors/travo/package.json +1 -1
- package/connectors/travo-ai/package.json +1 -1
- package/connectors/travo-real-estate/package.json +1 -1
- package/connectors/tray-api-platform/package.json +1 -1
- package/connectors/trellistech/package.json +1 -1
- package/connectors/trellixepo/package.json +1 -1
- package/connectors/trello/package.json +1 -1
- package/connectors/trengo/package.json +1 -1
- package/connectors/trevorio/package.json +1 -1
- package/connectors/tricentis/package.json +1 -1
- package/connectors/trigger-dev/package.json +1 -1
- package/connectors/trigger-dev-api-platform/package.json +1 -1
- package/connectors/triggercmd/package.json +1 -1
- package/connectors/triple-whale/package.json +1 -1
- package/connectors/truelayer/package.json +1 -1
- package/connectors/trustpilot/package.json +1 -1
- package/connectors/trustpilot-business/package.json +1 -1
- package/connectors/trybloom/package.json +1 -1
- package/connectors/trycardinal-ai/package.json +1 -1
- package/connectors/tryprism/package.json +1 -1
- package/connectors/tumblr/package.json +1 -1
- package/connectors/turbohire/package.json +1 -1
- package/connectors/turbot-pipes/package.json +1 -1
- package/connectors/turso/package.json +1 -1
- package/connectors/turso-api-platform/package.json +1 -1
- package/connectors/tuskr/package.json +1 -1
- package/connectors/tuulio/package.json +1 -1
- package/connectors/twake/package.json +1 -1
- package/connectors/twelve-data/package.json +1 -1
- package/connectors/twilio/package.json +1 -1
- package/connectors/twilio/src/utils/config.ts +1 -1
- package/connectors/twilio-api-platform/package.json +1 -1
- package/connectors/twist/package.json +1 -1
- package/connectors/twitch/package.json +1 -1
- package/connectors/tyk/package.json +1 -1
- package/connectors/tyk-api-platform/package.json +1 -1
- package/connectors/typeform/package.json +1 -1
- package/connectors/typesense/package.json +1 -1
- package/connectors/typless/package.json +1 -1
- package/connectors/udio/package.json +1 -1
- package/connectors/ultimate-ai/package.json +1 -1
- package/connectors/umami/package.json +1 -1
- package/connectors/unbounce/package.json +1 -1
- package/connectors/unifold/package.json +1 -1
- package/connectors/unione/package.json +1 -1
- package/connectors/uniprot/package.json +1 -1
- package/connectors/unisender/package.json +1 -1
- package/connectors/unisson/package.json +1 -1
- package/connectors/uniswap-api/package.json +1 -1
- package/connectors/unit/package.json +1 -1
- package/connectors/unleash/package.json +1 -1
- package/connectors/unleashedsoftware/package.json +1 -1
- package/connectors/unpaywall/package.json +1 -1
- package/connectors/upcloud/package.json +1 -1
- package/connectors/updown-io/package.json +1 -1
- package/connectors/upkeep/package.json +1 -1
- package/connectors/uplead/package.json +1 -1
- package/connectors/uploadcare/package.json +1 -1
- package/connectors/uproc/package.json +1 -1
- package/connectors/ups/package.json +1 -1
- package/connectors/upstash/package.json +1 -1
- package/connectors/upstash-api-platform/package.json +1 -1
- package/connectors/uptimerobot/package.json +1 -1
- package/connectors/uptimetoolbox/package.json +1 -1
- package/connectors/urlscanio/package.json +1 -1
- package/connectors/usebidflow/package.json +1 -1
- package/connectors/usecrow/package.json +1 -1
- package/connectors/usereframe/package.json +1 -1
- package/connectors/userflow/package.json +1 -1
- package/connectors/userlens/package.json +1 -1
- package/connectors/userlist/package.json +1 -1
- package/connectors/userpilot/package.json +1 -1
- package/connectors/uservoice/package.json +1 -1
- package/connectors/usps/package.json +1 -1
- package/connectors/uspto/package.json +1 -1
- package/connectors/v0/package.json +1 -1
- package/connectors/valence/package.json +1 -1
- package/connectors/valgo/package.json +1 -1
- package/connectors/vanta/package.json +1 -1
- package/connectors/vapi/package.json +1 -1
- package/connectors/vault/package.json +1 -1
- package/connectors/vector-legal/package.json +1 -1
- package/connectors/vector-legal-api/package.json +1 -1
- package/connectors/vectorshift/package.json +1 -1
- package/connectors/vela/package.json +1 -1
- package/connectors/velum-data-quality/package.json +1 -1
- package/connectors/velum-labs/package.json +1 -1
- package/connectors/venafi/package.json +1 -1
- package/connectors/veo/package.json +1 -1
- package/connectors/veracode/package.json +1 -1
- package/connectors/vercel/package.json +1 -1
- package/connectors/vercel-ai-gateway/package.json +1 -1
- package/connectors/vercel-api-platform/package.json +1 -1
- package/connectors/vercel-blob/package.json +1 -1
- package/connectors/vercel-blob-platform/package.json +1 -1
- package/connectors/vercel-edge-config/package.json +1 -1
- package/connectors/vercel-edge-config-platform/package.json +1 -1
- package/connectors/verdex/package.json +1 -1
- package/connectors/verifalia/package.json +1 -1
- package/connectors/veriphone/package.json +1 -1
- package/connectors/vero/package.json +1 -1
- package/connectors/vertex-ai/package.json +1 -1
- package/connectors/vidyard/package.json +1 -1
- package/connectors/vimeo/package.json +1 -1
- package/connectors/virustotal/package.json +1 -1
- package/connectors/visibl-semiconductors/package.json +1 -1
- package/connectors/vitally/package.json +1 -1
- package/connectors/vivenu/package.json +1 -1
- package/connectors/vivifyscrum/package.json +1 -1
- package/connectors/voiceflow/package.json +1 -1
- package/connectors/voicit/package.json +1 -1
- package/connectors/voltair/package.json +1 -1
- package/connectors/vonage/package.json +1 -1
- package/connectors/voquill/package.json +1 -1
- package/connectors/vowel/package.json +1 -1
- package/connectors/voygr/package.json +1 -1
- package/connectors/vultr/package.json +1 -1
- package/connectors/vwo/package.json +1 -1
- package/connectors/waboxapp/package.json +1 -1
- package/connectors/wait/package.json +1 -1
- package/connectors/wakatime/package.json +1 -1
- package/connectors/walmart-marketplace/package.json +1 -1
- package/connectors/wandb/package.json +1 -1
- package/connectors/wappalyzer/package.json +1 -1
- package/connectors/watchsignals/package.json +1 -1
- package/connectors/wati/package.json +1 -1
- package/connectors/wato/package.json +1 -1
- package/connectors/wave-accounting/package.json +1 -1
- package/connectors/wavelineextract/package.json +1 -1
- package/connectors/wayco/package.json +1 -1
- package/connectors/weaviate/package.json +1 -1
- package/connectors/weaviate-api-platform/package.json +1 -1
- package/connectors/webengage/package.json +1 -1
- package/connectors/webex/package.json +1 -1
- package/connectors/webexbycisco/package.json +1 -1
- package/connectors/webflow/package.json +1 -1
- package/connectors/webhook/package.json +1 -1
- package/connectors/webhooks/package.json +1 -1
- package/connectors/webinarjam/package.json +1 -1
- package/connectors/webpagetest/package.json +1 -1
- package/connectors/webscraperio/package.json +1 -1
- package/connectors/weezevent/package.json +1 -1
- package/connectors/weights-biases/package.json +1 -1
- package/connectors/wekan/package.json +1 -1
- package/connectors/whal3s/package.json +1 -1
- package/connectors/whatconverts/package.json +1 -1
- package/connectors/whatsapp/package.json +1 -1
- package/connectors/whatsapp-cloud-api/package.json +1 -1
- package/connectors/wideframe/package.json +1 -1
- package/connectors/wikipedia/package.json +1 -1
- package/connectors/wildcard/package.json +1 -1
- package/connectors/windmill/package.json +1 -1
- package/connectors/windmill-api-platform/package.json +1 -1
- package/connectors/wipo/package.json +1 -1
- package/connectors/wise/package.json +1 -1
- package/connectors/wistia/package.json +1 -1
- package/connectors/withai/package.json +1 -1
- package/connectors/wix/package.json +1 -1
- package/connectors/wiz/package.json +1 -1
- package/connectors/wizychat/package.json +1 -1
- package/connectors/wolframoralpha/package.json +1 -1
- package/connectors/wonderchat/package.json +1 -1
- package/connectors/wondercraft/package.json +1 -1
- package/connectors/woocommerce/package.json +1 -1
- package/connectors/woodpecker/package.json +1 -1
- package/connectors/woodpeckerco/package.json +1 -1
- package/connectors/wordfence/package.json +1 -1
- package/connectors/wordfence-api-platform/package.json +1 -1
- package/connectors/wordpress/package.json +1 -1
- package/connectors/workable/package.json +1 -1
- package/connectors/workast/package.json +1 -1
- package/connectors/workato/package.json +1 -1
- package/connectors/workato-api-platform/package.json +1 -1
- package/connectors/workboard/package.json +1 -1
- package/connectors/workflow-trigger/package.json +1 -1
- package/connectors/workos/package.json +1 -1
- package/connectors/woxo/package.json +1 -1
- package/connectors/wrike/package.json +1 -1
- package/connectors/write-binary-file/package.json +1 -1
- package/connectors/writesonic/package.json +1 -1
- package/connectors/wubookratechecker/package.json +1 -1
- package/connectors/wufoo/package.json +1 -1
- package/connectors/x/package.json +1 -1
- package/connectors/xads/package.json +1 -1
- package/connectors/xai/package.json +1 -1
- package/connectors/xai-api-platform/package.json +1 -1
- package/connectors/xai-grok/package.json +1 -1
- package/connectors/xata/package.json +1 -1
- package/connectors/xero/package.json +1 -1
- package/connectors/xml/package.json +1 -1
- package/connectors/xray/package.json +1 -1
- package/connectors/xtractly/package.json +1 -1
- package/connectors/ybug/package.json +1 -1
- package/connectors/ycode/package.json +1 -1
- package/connectors/yesware/package.json +1 -1
- package/connectors/ynab/package.json +1 -1
- package/connectors/yodiz/package.json +1 -1
- package/connectors/yotpo/package.json +1 -1
- package/connectors/you-com/package.json +1 -1
- package/connectors/youart/package.json +1 -1
- package/connectors/yourls/package.json +1 -1
- package/connectors/yousearch/package.json +1 -1
- package/connectors/yousign/package.json +1 -1
- package/connectors/youtube/package.json +2 -1
- package/connectors/youtube/src/cli/index.test.ts +65 -0
- package/connectors/youtube/src/cli/index.ts +6 -3
- package/connectors/zabbix/package.json +1 -1
- package/connectors/zammad/package.json +1 -1
- package/connectors/zapier-api-platform/package.json +1 -1
- package/connectors/zatanna/package.json +1 -1
- package/connectors/zendesk/package.json +1 -1
- package/connectors/zendesk/server/index.js +1 -1
- package/connectors/zendesk/src/server/index.ts +1 -1
- package/connectors/zenodo/package.json +1 -1
- package/connectors/zenrows/package.json +1 -1
- package/connectors/zenserp/package.json +1 -1
- package/connectors/zerobounce/package.json +1 -1
- package/connectors/zerosettle/package.json +1 -1
- package/connectors/zerotier/package.json +1 -1
- package/connectors/zhipu-ai/package.json +1 -1
- package/connectors/zibra-labs/package.json +1 -1
- package/connectors/zipkin/package.json +1 -1
- package/connectors/zoho/package.json +1 -1
- package/connectors/zoho-analytics/package.json +1 -1
- package/connectors/zoho-bigin/package.json +1 -1
- package/connectors/zoho-campaigns/package.json +1 -1
- package/connectors/zoho-cliq/package.json +1 -1
- package/connectors/zoho-creator/package.json +1 -1
- package/connectors/zoho-inventory/package.json +1 -1
- package/connectors/zoho-meeting/package.json +1 -1
- package/connectors/zoho-people/package.json +1 -1
- package/connectors/zoho-sign/package.json +1 -1
- package/connectors/zoho-subscriptions/package.json +1 -1
- package/connectors/zoho-survey/package.json +1 -1
- package/connectors/zohobookings/package.json +1 -1
- package/connectors/zohobooks/package.json +1 -1
- package/connectors/zohocrm/package.json +1 -1
- package/connectors/zohodesk/package.json +1 -1
- package/connectors/zohoforms/package.json +1 -1
- package/connectors/zohoprojects/package.json +1 -1
- package/connectors/zohorecruit/package.json +1 -1
- package/connectors/zohovault/package.json +1 -1
- package/connectors/zohoworkdrive/package.json +1 -1
- package/connectors/zolvo/package.json +1 -1
- package/connectors/zonkafeedback/package.json +1 -1
- package/connectors/zoom/package.json +1 -1
- package/connectors/zoom-api/package.json +1 -1
- package/connectors/zoominfo/package.json +1 -1
- package/connectors/zotero/package.json +1 -1
- package/connectors/zscalerzia/package.json +1 -1
- package/connectors/zulip/package.json +1 -1
- package/connectors/zymbly/package.json +1 -1
- package/dist/db/database.d.ts +5 -2
- package/dist/index.js +242 -142
- package/dist/lib/paths.d.ts +37 -0
- package/dist/lib/strip.d.ts +1 -0
- package/dist/sdk/bundle-boundary.test.d.ts +1 -0
- package/dist/sdk/fixtures/platform-connectors.d.ts +20 -0
- package/dist/sdk/index.d.ts +696 -0
- package/dist/sdk/index.js +508 -0
- package/dist/sdk/index.test.d.ts +1 -0
- package/dist/sdk/platform-contract.test.d.ts +1 -0
- package/dist/server/auth.d.ts +1 -1
- package/dist/server/index.d.ts +1 -1
- package/dist/server/serve-auth.d.ts +54 -0
- package/dist/server/serve-auth.test.d.ts +1 -0
- package/dist/server/serve.d.ts +18 -6
- package/dist/server/server-auth-gate.test.d.ts +1 -0
- package/package.json +13 -10
- package/dashboard/dist/assets/index-8uoGZF7B.js +0 -280
- package/dashboard/dist/assets/index-D7ZVhmHr.css +0 -1
- package/dashboard/dist/index.html +0 -13
- package/dashboard/dist/logo.jpg +0 -0
- package/dist/server/dashboard.d.ts +0 -5
- /package/dist/{server/dashboard.test.d.ts → lib/paths.test.d.ts} +0 -0
|
@@ -0,0 +1,508 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
var __require = import.meta.require;
|
|
3
|
+
|
|
4
|
+
// src/sdk/index.ts
|
|
5
|
+
import { readFileSync } from "fs";
|
|
6
|
+
import { homedir } from "os";
|
|
7
|
+
import { join } from "path";
|
|
8
|
+
var LOCAL_SERVE_TOKEN_ENV = "HASNA_CONNECTORS_SERVE_TOKEN";
|
|
9
|
+
var LOCAL_SERVE_TOKEN_HEADER = "X-Connectors-Token";
|
|
10
|
+
function resolveLocalServeToken(env = typeof process !== "undefined" ? process.env : {}) {
|
|
11
|
+
const fromEnv = env[LOCAL_SERVE_TOKEN_ENV]?.trim();
|
|
12
|
+
if (fromEnv)
|
|
13
|
+
return fromEnv;
|
|
14
|
+
const exact = env["HASNA_CONNECTORS_DIR"]?.trim();
|
|
15
|
+
const home = env["HOME"] || env["USERPROFILE"] || (typeof process !== "undefined" ? homedir() : "");
|
|
16
|
+
const connectorsHome = exact ? exact : join(home, ".hasna", "connectors");
|
|
17
|
+
try {
|
|
18
|
+
const value = readFileSync(join(connectorsHome, "serve-token"), "utf-8").trim();
|
|
19
|
+
return value.length > 0 ? value : null;
|
|
20
|
+
} catch {
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
class HostedConnectorsError extends Error {
|
|
26
|
+
status;
|
|
27
|
+
code;
|
|
28
|
+
payload;
|
|
29
|
+
requestId;
|
|
30
|
+
constructor(message, options) {
|
|
31
|
+
super(message);
|
|
32
|
+
this.name = "HostedConnectorsError";
|
|
33
|
+
this.status = options.status;
|
|
34
|
+
this.code = options.code;
|
|
35
|
+
this.payload = options.payload;
|
|
36
|
+
this.requestId = options.requestId;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
function normalizeConnectorSlug(slug) {
|
|
40
|
+
let normalized = slug.trim().toLowerCase();
|
|
41
|
+
if (normalized.startsWith("@hasna/"))
|
|
42
|
+
normalized = normalized.slice("@hasna/".length);
|
|
43
|
+
if (normalized.startsWith("connect-"))
|
|
44
|
+
normalized = normalized.slice("connect-".length);
|
|
45
|
+
if (!normalized)
|
|
46
|
+
throw new Error("connector slug is required");
|
|
47
|
+
if (!/^[a-z0-9][a-z0-9-]*$/.test(normalized)) {
|
|
48
|
+
throw new Error(`invalid connector slug: ${slug}`);
|
|
49
|
+
}
|
|
50
|
+
return normalized;
|
|
51
|
+
}
|
|
52
|
+
function normalizeOperationKey(value) {
|
|
53
|
+
const [connectorSlug, ...rest] = value.split(":");
|
|
54
|
+
return rest.length === 0 ? normalizeConnectorSlug(connectorSlug) : `${normalizeConnectorSlug(connectorSlug)}:${rest.join(":")}`;
|
|
55
|
+
}
|
|
56
|
+
function normalizePolicyConnectorLists(input) {
|
|
57
|
+
const copy = { ...input };
|
|
58
|
+
for (const key of ["connectorAllowlist", "connectorBlocklist"]) {
|
|
59
|
+
if (Array.isArray(copy[key])) {
|
|
60
|
+
copy[key] = copy[key].map((value) => typeof value === "string" ? normalizeConnectorSlug(value) : value);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
for (const key of ["operationAllowlist", "operationDenylist", "approvalRequiredOperations"]) {
|
|
64
|
+
if (Array.isArray(copy[key])) {
|
|
65
|
+
copy[key] = copy[key].map((value) => typeof value === "string" ? normalizeOperationKey(value) : value);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return copy;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
class LocalConnectorsClient {
|
|
72
|
+
baseUrl;
|
|
73
|
+
connectorsDir;
|
|
74
|
+
token;
|
|
75
|
+
constructor(options = {}) {
|
|
76
|
+
this.baseUrl = (options.serverUrl ?? "http://localhost:9876").replace(/\/$/, "");
|
|
77
|
+
this.connectorsDir = options.connectorsDir ?? ".connectors";
|
|
78
|
+
this.token = options.token?.trim() || resolveLocalServeToken(options.env);
|
|
79
|
+
}
|
|
80
|
+
get hasToken() {
|
|
81
|
+
return this.token !== null;
|
|
82
|
+
}
|
|
83
|
+
async request(path, options) {
|
|
84
|
+
const url = `${this.baseUrl}${path}`;
|
|
85
|
+
const headers = new Headers({ "Content-Type": "application/json" });
|
|
86
|
+
if (this.token) {
|
|
87
|
+
headers.set("Authorization", `Bearer ${this.token}`);
|
|
88
|
+
headers.set(LOCAL_SERVE_TOKEN_HEADER, this.token);
|
|
89
|
+
}
|
|
90
|
+
if (options?.headers) {
|
|
91
|
+
new Headers(options.headers).forEach((value, key) => headers.set(key, value));
|
|
92
|
+
}
|
|
93
|
+
const res = await fetch(url, {
|
|
94
|
+
...options,
|
|
95
|
+
headers
|
|
96
|
+
});
|
|
97
|
+
const data = await res.json();
|
|
98
|
+
if (!res.ok) {
|
|
99
|
+
const err = data;
|
|
100
|
+
throw new Error(err.error ?? `Request failed with status ${res.status}`);
|
|
101
|
+
}
|
|
102
|
+
return data;
|
|
103
|
+
}
|
|
104
|
+
async list(opts = {}) {
|
|
105
|
+
const params = new URLSearchParams;
|
|
106
|
+
if (opts.compact)
|
|
107
|
+
params.set("compact", "true");
|
|
108
|
+
if (opts.fields)
|
|
109
|
+
params.set("fields", opts.fields);
|
|
110
|
+
const qs = params.toString() ? `?${params.toString()}` : "";
|
|
111
|
+
return this.request(`/api/connectors${qs}`);
|
|
112
|
+
}
|
|
113
|
+
async get(name) {
|
|
114
|
+
return this.request(`/api/connectors/${encodeURIComponent(normalizeConnectorSlug(name))}`);
|
|
115
|
+
}
|
|
116
|
+
async listOperations(name) {
|
|
117
|
+
name = normalizeConnectorSlug(name);
|
|
118
|
+
return this.request(`/api/connectors/${encodeURIComponent(name)}/operations`);
|
|
119
|
+
}
|
|
120
|
+
async getOperationHelp(name, command) {
|
|
121
|
+
name = normalizeConnectorSlug(name);
|
|
122
|
+
return this.request(`/api/connectors/${encodeURIComponent(name)}/operations/${encodeURIComponent(command)}`);
|
|
123
|
+
}
|
|
124
|
+
async getManifest(options = {}) {
|
|
125
|
+
const params = new URLSearchParams;
|
|
126
|
+
if (options.includeOperations)
|
|
127
|
+
params.set("includeOperations", "true");
|
|
128
|
+
if (options.connectorNames?.length)
|
|
129
|
+
params.set("connectors", options.connectorNames.map(normalizeConnectorSlug).join(","));
|
|
130
|
+
const qs = params.toString() ? `?${params.toString()}` : "";
|
|
131
|
+
return this.request(`/api/connectors/manifest${qs}`);
|
|
132
|
+
}
|
|
133
|
+
async runOperation(name, args, options = {}) {
|
|
134
|
+
name = normalizeConnectorSlug(name);
|
|
135
|
+
return this.request(`/api/connectors/${encodeURIComponent(name)}/operations/run`, {
|
|
136
|
+
method: "POST",
|
|
137
|
+
body: JSON.stringify({
|
|
138
|
+
args,
|
|
139
|
+
...options.format ? { format: options.format } : {},
|
|
140
|
+
...options.timeout !== undefined ? { timeout: options.timeout } : {}
|
|
141
|
+
})
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
async runStructuredOperation(name, options) {
|
|
145
|
+
name = normalizeConnectorSlug(name);
|
|
146
|
+
return this.request(`/api/connectors/${encodeURIComponent(name)}/operations/run`, {
|
|
147
|
+
method: "POST",
|
|
148
|
+
body: JSON.stringify({
|
|
149
|
+
operation: options.operation,
|
|
150
|
+
...options.input ? { input: options.input } : {},
|
|
151
|
+
...options.profile ? { profile: options.profile } : {},
|
|
152
|
+
...options.timeout !== undefined ? { timeout: options.timeout } : {},
|
|
153
|
+
...options.parseJson !== undefined ? { parseJson: options.parseJson } : {}
|
|
154
|
+
})
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
async install(name) {
|
|
158
|
+
name = normalizeConnectorSlug(name);
|
|
159
|
+
return this.request(`/api/connectors/${encodeURIComponent(name)}/install`, {
|
|
160
|
+
method: "POST"
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
async uninstall(name) {
|
|
164
|
+
name = normalizeConnectorSlug(name);
|
|
165
|
+
return this.request(`/api/connectors/${encodeURIComponent(name)}/uninstall`, {
|
|
166
|
+
method: "POST"
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
async setKey(name, key, field) {
|
|
170
|
+
name = normalizeConnectorSlug(name);
|
|
171
|
+
return this.request(`/api/connectors/${encodeURIComponent(name)}/key`, {
|
|
172
|
+
method: "POST",
|
|
173
|
+
body: JSON.stringify({ key, ...field ? { field } : {} })
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
async refresh(name) {
|
|
177
|
+
name = normalizeConnectorSlug(name);
|
|
178
|
+
return this.request(`/api/connectors/${encodeURIComponent(name)}/refresh`, {
|
|
179
|
+
method: "POST"
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
async getProfiles(name) {
|
|
183
|
+
name = normalizeConnectorSlug(name);
|
|
184
|
+
return this.request(`/api/connectors/${encodeURIComponent(name)}/profiles`);
|
|
185
|
+
}
|
|
186
|
+
async switchProfile(name, profileId) {
|
|
187
|
+
name = normalizeConnectorSlug(name);
|
|
188
|
+
return this.request(`/api/connectors/${encodeURIComponent(name)}/profiles/switch`, {
|
|
189
|
+
method: "POST",
|
|
190
|
+
body: JSON.stringify({ profile: profileId })
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
async deleteProfile(name, profileId) {
|
|
194
|
+
name = normalizeConnectorSlug(name);
|
|
195
|
+
return this.request(`/api/connectors/${encodeURIComponent(name)}/profiles/${encodeURIComponent(profileId)}`, { method: "DELETE" });
|
|
196
|
+
}
|
|
197
|
+
async getActivity(limit) {
|
|
198
|
+
const entries = await this.request("/api/activity");
|
|
199
|
+
return limit !== undefined ? entries.slice(0, limit) : entries;
|
|
200
|
+
}
|
|
201
|
+
async update() {
|
|
202
|
+
return this.request("/api/update", { method: "POST" });
|
|
203
|
+
}
|
|
204
|
+
async export() {
|
|
205
|
+
return this.request("/api/export");
|
|
206
|
+
}
|
|
207
|
+
async import(data) {
|
|
208
|
+
return this.request("/api/import", {
|
|
209
|
+
method: "POST",
|
|
210
|
+
body: JSON.stringify(data)
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
async run(name, args = [], options = {}) {
|
|
214
|
+
const { timeout = 30000, format, cwd } = options;
|
|
215
|
+
const bin = `${this.connectorsDir}/connect-${name}`;
|
|
216
|
+
const fullArgs = format ? [...args, "--format", format] : [...args];
|
|
217
|
+
const { execFile } = await import("child_process");
|
|
218
|
+
const { promisify } = await import("util");
|
|
219
|
+
const execFileAsync = promisify(execFile);
|
|
220
|
+
try {
|
|
221
|
+
const { stdout, stderr } = await execFileAsync(bin, fullArgs, {
|
|
222
|
+
timeout,
|
|
223
|
+
cwd,
|
|
224
|
+
maxBuffer: 10485760,
|
|
225
|
+
env: { ...process.env }
|
|
226
|
+
});
|
|
227
|
+
const output = stdout || stderr;
|
|
228
|
+
return { success: true, output: output.trimEnd(), exitCode: 0 };
|
|
229
|
+
} catch (err) {
|
|
230
|
+
const exitCode = typeof err.code === "number" ? err.code : err.status ?? 1;
|
|
231
|
+
const output = (err.stdout || err.stderr || err.message || "").trimEnd();
|
|
232
|
+
return { success: false, output, exitCode };
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
async runJson(name, args = [], options = {}) {
|
|
236
|
+
const result = await this.run(name, args, { ...options, format: "json" });
|
|
237
|
+
if (!result.success) {
|
|
238
|
+
throw new Error(`Connector "${name}" exited with code ${result.exitCode}: ${result.output}`);
|
|
239
|
+
}
|
|
240
|
+
try {
|
|
241
|
+
return JSON.parse(result.output);
|
|
242
|
+
} catch {
|
|
243
|
+
throw new Error(`Failed to parse JSON output from connector "${name}": ${result.output}`);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
async search(query, opts) {
|
|
247
|
+
const args = ["search", "query", query];
|
|
248
|
+
if (opts?.numResults !== undefined) {
|
|
249
|
+
args.push("--num-results", String(opts.numResults));
|
|
250
|
+
}
|
|
251
|
+
if (opts?.type) {
|
|
252
|
+
args.push("--type", opts.type);
|
|
253
|
+
}
|
|
254
|
+
return this.runJson("exa", args);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
class ConnectorsClient extends LocalConnectorsClient {
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
class HostedConnectorsClient {
|
|
262
|
+
apiUrl;
|
|
263
|
+
apiKey;
|
|
264
|
+
fetchImpl;
|
|
265
|
+
headers;
|
|
266
|
+
constructor(options) {
|
|
267
|
+
if (!options.apiUrl.trim())
|
|
268
|
+
throw new Error("apiUrl is required");
|
|
269
|
+
this.apiUrl = options.apiUrl.replace(/\/+$/, "");
|
|
270
|
+
this.apiKey = options.apiKey;
|
|
271
|
+
this.fetchImpl = options.fetchImpl ?? fetch;
|
|
272
|
+
this.headers = options.headers ?? {};
|
|
273
|
+
}
|
|
274
|
+
async whoami() {
|
|
275
|
+
return this.request("/auth/whoami");
|
|
276
|
+
}
|
|
277
|
+
async getContract() {
|
|
278
|
+
return this.request("/contract");
|
|
279
|
+
}
|
|
280
|
+
async listConnectors(options = {}) {
|
|
281
|
+
const query = new URLSearchParams;
|
|
282
|
+
if (options.search)
|
|
283
|
+
query.set("search", options.search);
|
|
284
|
+
return this.request(`/connectors${query.size ? `?${query.toString()}` : ""}`);
|
|
285
|
+
}
|
|
286
|
+
async getConnector(connectorSlug) {
|
|
287
|
+
connectorSlug = normalizeConnectorSlug(connectorSlug);
|
|
288
|
+
return this.request(`/connectors/${encodeURIComponent(connectorSlug)}`);
|
|
289
|
+
}
|
|
290
|
+
async getConnectorDocs(connectorSlug) {
|
|
291
|
+
connectorSlug = normalizeConnectorSlug(connectorSlug);
|
|
292
|
+
return this.request(`/connectors/${encodeURIComponent(connectorSlug)}/docs`);
|
|
293
|
+
}
|
|
294
|
+
async getConnectorOperations(connectorSlug) {
|
|
295
|
+
connectorSlug = normalizeConnectorSlug(connectorSlug);
|
|
296
|
+
return this.request(`/connectors/${encodeURIComponent(connectorSlug)}/operations`);
|
|
297
|
+
}
|
|
298
|
+
async getConnectorAuthUrl(connectorSlug, options = {}) {
|
|
299
|
+
connectorSlug = normalizeConnectorSlug(connectorSlug);
|
|
300
|
+
const query = new URLSearchParams;
|
|
301
|
+
if (options.redirectUrl)
|
|
302
|
+
query.set("redirectUrl", options.redirectUrl);
|
|
303
|
+
if (options.returnUrl)
|
|
304
|
+
query.set("returnUrl", options.returnUrl);
|
|
305
|
+
if (options.profileName)
|
|
306
|
+
query.set("profileName", options.profileName);
|
|
307
|
+
if (options.scopes?.length)
|
|
308
|
+
query.set("scopes", options.scopes.join(","));
|
|
309
|
+
return this.request(`/connectors/${encodeURIComponent(connectorSlug)}/auth-url${query.size ? `?${query.toString()}` : ""}`);
|
|
310
|
+
}
|
|
311
|
+
async listAccounts() {
|
|
312
|
+
return this.request("/accounts");
|
|
313
|
+
}
|
|
314
|
+
async getAccountConnectionStatus() {
|
|
315
|
+
return this.request("/accounts/status");
|
|
316
|
+
}
|
|
317
|
+
async connectAccount(input) {
|
|
318
|
+
return this.request("/accounts", {
|
|
319
|
+
method: "POST",
|
|
320
|
+
body: JSON.stringify({
|
|
321
|
+
...input,
|
|
322
|
+
connectorSlug: normalizeConnectorSlug(input.connectorSlug)
|
|
323
|
+
})
|
|
324
|
+
});
|
|
325
|
+
}
|
|
326
|
+
async listAccountProfiles(accountId) {
|
|
327
|
+
return this.request(`/accounts/${encodeURIComponent(accountId)}/profiles`);
|
|
328
|
+
}
|
|
329
|
+
async revokeAccount(accountId) {
|
|
330
|
+
return this.request(`/accounts/${encodeURIComponent(accountId)}`, { method: "DELETE" });
|
|
331
|
+
}
|
|
332
|
+
async revokeAccountProfile(accountId, profileName) {
|
|
333
|
+
return this.request(`/accounts/${encodeURIComponent(accountId)}/profiles/${encodeURIComponent(profileName)}`, { method: "DELETE" });
|
|
334
|
+
}
|
|
335
|
+
async checkAccountCredentials(accountId, profileName) {
|
|
336
|
+
return this.request(`/accounts/${encodeURIComponent(accountId)}/profiles/${encodeURIComponent(profileName)}/credential-check`);
|
|
337
|
+
}
|
|
338
|
+
async listRuns() {
|
|
339
|
+
return this.request("/runs");
|
|
340
|
+
}
|
|
341
|
+
async submitRun(input) {
|
|
342
|
+
return this.request("/runs", {
|
|
343
|
+
method: "POST",
|
|
344
|
+
body: JSON.stringify({
|
|
345
|
+
...input,
|
|
346
|
+
connectorSlug: normalizeConnectorSlug(input.connectorSlug)
|
|
347
|
+
})
|
|
348
|
+
});
|
|
349
|
+
}
|
|
350
|
+
async getRun(runId) {
|
|
351
|
+
return this.request(`/runs/${encodeURIComponent(runId)}`);
|
|
352
|
+
}
|
|
353
|
+
async getRunStatus(runId) {
|
|
354
|
+
return this.request(`/runs/${encodeURIComponent(runId)}/status`);
|
|
355
|
+
}
|
|
356
|
+
async listRunLogs(runId) {
|
|
357
|
+
return this.request(`/runs/${encodeURIComponent(runId)}/logs`);
|
|
358
|
+
}
|
|
359
|
+
async listRunArtifacts(runId) {
|
|
360
|
+
return this.request(`/runs/${encodeURIComponent(runId)}/artifacts`);
|
|
361
|
+
}
|
|
362
|
+
async listApprovals() {
|
|
363
|
+
return this.request("/approvals");
|
|
364
|
+
}
|
|
365
|
+
async requestApproval(input) {
|
|
366
|
+
return this.request("/approvals", {
|
|
367
|
+
method: "POST",
|
|
368
|
+
body: JSON.stringify(normalizeHostedApprovalInput(input))
|
|
369
|
+
});
|
|
370
|
+
}
|
|
371
|
+
async decideApproval(id, decision) {
|
|
372
|
+
return this.request(`/approvals/${encodeURIComponent(id)}/${decision}`, {
|
|
373
|
+
method: "POST"
|
|
374
|
+
});
|
|
375
|
+
}
|
|
376
|
+
async getBillingStatus() {
|
|
377
|
+
return this.request("/billing/status");
|
|
378
|
+
}
|
|
379
|
+
async createBillingCustomer(input) {
|
|
380
|
+
return this.request("/billing/customers", {
|
|
381
|
+
method: "POST",
|
|
382
|
+
body: JSON.stringify(input)
|
|
383
|
+
});
|
|
384
|
+
}
|
|
385
|
+
async createCheckoutSession(input) {
|
|
386
|
+
return this.request("/billing/checkout", {
|
|
387
|
+
method: "POST",
|
|
388
|
+
body: JSON.stringify(input)
|
|
389
|
+
});
|
|
390
|
+
}
|
|
391
|
+
async createBillingPortalSession(input) {
|
|
392
|
+
return this.request("/billing/portal", {
|
|
393
|
+
method: "POST",
|
|
394
|
+
body: JSON.stringify(input)
|
|
395
|
+
});
|
|
396
|
+
}
|
|
397
|
+
async addBillingCredits(input) {
|
|
398
|
+
return this.request("/billing/credits", {
|
|
399
|
+
method: "POST",
|
|
400
|
+
body: JSON.stringify(input)
|
|
401
|
+
});
|
|
402
|
+
}
|
|
403
|
+
async listBillingTransactions() {
|
|
404
|
+
return this.request("/billing/transactions");
|
|
405
|
+
}
|
|
406
|
+
async listBillingInvoices() {
|
|
407
|
+
return this.request("/billing/invoices");
|
|
408
|
+
}
|
|
409
|
+
async getUsage() {
|
|
410
|
+
return this.request("/usage");
|
|
411
|
+
}
|
|
412
|
+
async getQuotas() {
|
|
413
|
+
return this.request("/quotas");
|
|
414
|
+
}
|
|
415
|
+
async getPolicy() {
|
|
416
|
+
return this.request("/policy");
|
|
417
|
+
}
|
|
418
|
+
async updatePolicy(input) {
|
|
419
|
+
return this.request("/policy", {
|
|
420
|
+
method: "PUT",
|
|
421
|
+
body: JSON.stringify(normalizePolicyConnectorLists(input))
|
|
422
|
+
});
|
|
423
|
+
}
|
|
424
|
+
async emergencyRevokePolicy(input = {}) {
|
|
425
|
+
return this.request("/policy/emergency-revoke", {
|
|
426
|
+
method: "POST",
|
|
427
|
+
body: JSON.stringify(input)
|
|
428
|
+
});
|
|
429
|
+
}
|
|
430
|
+
async emergencyRestorePolicy() {
|
|
431
|
+
return this.request("/policy/emergency-restore", {
|
|
432
|
+
method: "POST",
|
|
433
|
+
body: JSON.stringify({})
|
|
434
|
+
});
|
|
435
|
+
}
|
|
436
|
+
async listAuditTimeline() {
|
|
437
|
+
return this.request("/audit-timeline");
|
|
438
|
+
}
|
|
439
|
+
async listTenantMappings() {
|
|
440
|
+
return this.request("/tenant-mappings");
|
|
441
|
+
}
|
|
442
|
+
async upsertTenantMapping(serviceSlug, externalOrganizationId, input = {}) {
|
|
443
|
+
return this.request(`/tenant-mappings/${encodeURIComponent(serviceSlug)}/${encodeURIComponent(externalOrganizationId)}`, {
|
|
444
|
+
method: "PUT",
|
|
445
|
+
body: JSON.stringify(input)
|
|
446
|
+
});
|
|
447
|
+
}
|
|
448
|
+
async request(path, init = {}) {
|
|
449
|
+
const headers = {
|
|
450
|
+
"Content-Type": "application/json",
|
|
451
|
+
...this.headers,
|
|
452
|
+
...init.headers
|
|
453
|
+
};
|
|
454
|
+
if (this.apiKey)
|
|
455
|
+
headers.Authorization = `Bearer ${this.apiKey}`;
|
|
456
|
+
const response = await this.fetchImpl(`${this.apiUrl}/api/v1${path}`, {
|
|
457
|
+
...init,
|
|
458
|
+
headers
|
|
459
|
+
});
|
|
460
|
+
const payload = await readResponsePayload(response);
|
|
461
|
+
if (!response.ok) {
|
|
462
|
+
const errorPayload = isRecord(payload) ? payload : {};
|
|
463
|
+
throw new HostedConnectorsError(typeof errorPayload.error === "string" ? errorPayload.error : `request failed with status ${response.status}`, {
|
|
464
|
+
status: response.status,
|
|
465
|
+
code: typeof errorPayload.code === "string" ? errorPayload.code : undefined,
|
|
466
|
+
payload,
|
|
467
|
+
requestId: response.headers.get("x-request-id") ?? undefined
|
|
468
|
+
});
|
|
469
|
+
}
|
|
470
|
+
return payload;
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
function normalizeHostedApprovalInput(input) {
|
|
474
|
+
const requestPayload = input.requestPayload && typeof input.requestPayload.connectorSlug === "string" ? {
|
|
475
|
+
...input.requestPayload,
|
|
476
|
+
connectorSlug: normalizeConnectorSlug(input.requestPayload.connectorSlug)
|
|
477
|
+
} : input.requestPayload;
|
|
478
|
+
return {
|
|
479
|
+
...input,
|
|
480
|
+
resourceId: input.resourceId ? normalizeOperationKey(input.resourceId) : undefined,
|
|
481
|
+
requestPayload
|
|
482
|
+
};
|
|
483
|
+
}
|
|
484
|
+
async function readResponsePayload(response) {
|
|
485
|
+
const text = await response.text();
|
|
486
|
+
if (!text)
|
|
487
|
+
return;
|
|
488
|
+
try {
|
|
489
|
+
return JSON.parse(text);
|
|
490
|
+
} catch {
|
|
491
|
+
return text;
|
|
492
|
+
}
|
|
493
|
+
}
|
|
494
|
+
function isRecord(value) {
|
|
495
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
496
|
+
}
|
|
497
|
+
var sdk_default = ConnectorsClient;
|
|
498
|
+
export {
|
|
499
|
+
resolveLocalServeToken,
|
|
500
|
+
normalizeConnectorSlug,
|
|
501
|
+
sdk_default as default,
|
|
502
|
+
LocalConnectorsClient,
|
|
503
|
+
LOCAL_SERVE_TOKEN_HEADER,
|
|
504
|
+
LOCAL_SERVE_TOKEN_ENV,
|
|
505
|
+
HostedConnectorsError,
|
|
506
|
+
HostedConnectorsClient,
|
|
507
|
+
ConnectorsClient
|
|
508
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/server/auth.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Auth status detection and token management for the
|
|
2
|
+
* Auth status detection and token management for the local auth server.
|
|
3
3
|
* Reads connector CLAUDE.md files to determine auth type, checks profile
|
|
4
4
|
* directories for stored credentials, and handles token operations.
|
|
5
5
|
*/
|
package/dist/server/index.d.ts
CHANGED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/** Environment variable that supplies the serve token (wins over the file). */
|
|
2
|
+
export declare const SERVE_TOKEN_ENV = "HASNA_CONNECTORS_SERVE_TOKEN";
|
|
3
|
+
/** File name of the generated token under the connectors home. */
|
|
4
|
+
export declare const SERVE_TOKEN_FILE = "serve-token";
|
|
5
|
+
/** Stable refusal code, first token of every 401 body. */
|
|
6
|
+
export declare const SERVE_UNAUTHORIZED_CODE = "CONNECTORS_SERVE_UNAUTHORIZED";
|
|
7
|
+
/** The address the server binds by default: loopback only. */
|
|
8
|
+
export declare const SERVE_DEFAULT_HOSTNAME = "127.0.0.1";
|
|
9
|
+
export type ServeTokenSource = "env" | "file" | "generated" | "explicit";
|
|
10
|
+
export interface ResolvedServeToken {
|
|
11
|
+
token: string;
|
|
12
|
+
source: ServeTokenSource;
|
|
13
|
+
/** Absolute path of the token file when the file tier was used or written. */
|
|
14
|
+
path: string | null;
|
|
15
|
+
}
|
|
16
|
+
/** Absolute path of the token file for the given (or effective) connectors home. */
|
|
17
|
+
export declare function serveTokenPath(home?: string): string;
|
|
18
|
+
/**
|
|
19
|
+
* Read the token a CLIENT should present, without ever creating one:
|
|
20
|
+
* the environment first, then the token file. `null` when neither exists.
|
|
21
|
+
*/
|
|
22
|
+
export declare function readServeToken(env?: Record<string, string | undefined>, home?: string): ResolvedServeToken | null;
|
|
23
|
+
/**
|
|
24
|
+
* Resolve the token the SERVER enforces. An explicit token wins, then the
|
|
25
|
+
* environment, then the token file; when none exists a fresh 256-bit token
|
|
26
|
+
* is generated and written owner-only so same-user clients can find it.
|
|
27
|
+
*/
|
|
28
|
+
export declare function resolveServeToken(options?: {
|
|
29
|
+
token?: string;
|
|
30
|
+
env?: Record<string, string | undefined>;
|
|
31
|
+
home?: string;
|
|
32
|
+
}): ResolvedServeToken;
|
|
33
|
+
/** Extract the presented token from a request, or `null`. */
|
|
34
|
+
export declare function presentedToken(req: Request): string | null;
|
|
35
|
+
/** Constant-time comparison of a presented token with the enforced one. */
|
|
36
|
+
export declare function tokenMatches(presented: string | null, expected: string): boolean;
|
|
37
|
+
/**
|
|
38
|
+
* Does this route require the bearer token?
|
|
39
|
+
*
|
|
40
|
+
* Public: `/health` (liveness), the OAuth browser routes (vendor redirects
|
|
41
|
+
* cannot carry our header; they return no credential) and CORS preflights.
|
|
42
|
+
* Everything else the server answers — every `/api/*` route and `/mcp` — is
|
|
43
|
+
* gated.
|
|
44
|
+
*/
|
|
45
|
+
export declare function requiresServeAuth(pathname: string, method: string): boolean;
|
|
46
|
+
/** True when the request may proceed. */
|
|
47
|
+
export declare function isServeAuthorized(req: Request, token: string): boolean;
|
|
48
|
+
/** The 401 body every gated route returns. Names the sources, never a value. */
|
|
49
|
+
export declare function unauthorizedPayload(): {
|
|
50
|
+
error: string;
|
|
51
|
+
hint: string;
|
|
52
|
+
};
|
|
53
|
+
/** Human line for startup output. Never includes the token. */
|
|
54
|
+
export declare function describeServeTokenSource(resolved: ResolvedServeToken): string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/server/serve.d.ts
CHANGED
|
@@ -1,13 +1,25 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Reusable server
|
|
2
|
+
* Reusable local API + OAuth server for connector auth.
|
|
3
3
|
* Used by both the CLI `serve` command and the standalone `connectors-serve` binary.
|
|
4
|
-
* Serves the Vite-built React/shadcn dashboard from dashboard/dist/.
|
|
5
4
|
*/
|
|
6
5
|
export interface ServeOptions {
|
|
7
6
|
port: number;
|
|
8
|
-
open?: boolean;
|
|
9
7
|
}
|
|
10
|
-
export
|
|
11
|
-
|
|
8
|
+
export interface StartServerOptions {
|
|
9
|
+
/** Refuse to start when `requestedPort` is taken (OAuth needs a fixed port). */
|
|
12
10
|
strict?: boolean;
|
|
13
|
-
|
|
11
|
+
/**
|
|
12
|
+
* Interface to bind. Defaults to loopback (`127.0.0.1`): this server hands
|
|
13
|
+
* out vendor credentials on `/api/export` and must never listen on every
|
|
14
|
+
* interface by accident. An operator who really needs another address must
|
|
15
|
+
* name it.
|
|
16
|
+
*/
|
|
17
|
+
hostname?: string;
|
|
18
|
+
/**
|
|
19
|
+
* The bearer token every `/api/*` and `/mcp` request must present. When
|
|
20
|
+
* omitted the token is `HASNA_CONNECTORS_SERVE_TOKEN`, then the owner-only
|
|
21
|
+
* `<connectors home>/serve-token` file, generated on first start.
|
|
22
|
+
*/
|
|
23
|
+
token?: string;
|
|
24
|
+
}
|
|
25
|
+
export declare function startServer(requestedPort: number, options?: StartServerOptions): Promise<number>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|