@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
package/dist/index.js
CHANGED
|
@@ -15,8 +15,8 @@ var __export = (target, all) => {
|
|
|
15
15
|
};
|
|
16
16
|
|
|
17
17
|
// src/lib/registry.ts
|
|
18
|
-
import { existsSync as
|
|
19
|
-
import { join as
|
|
18
|
+
import { existsSync as existsSync9, readFileSync as readFileSync4 } from "fs";
|
|
19
|
+
import { join as join9, dirname as dirname4 } from "path";
|
|
20
20
|
import { fileURLToPath as fileURLToPath3 } from "url";
|
|
21
21
|
|
|
22
22
|
// src/core/errors.ts
|
|
@@ -4968,9 +4968,108 @@ var githubConnector = defineConnector({
|
|
|
4968
4968
|
});
|
|
4969
4969
|
|
|
4970
4970
|
// src/core/connectors/gmail.ts
|
|
4971
|
-
import { existsSync as
|
|
4971
|
+
import { existsSync as existsSync3, mkdirSync, readFileSync, readdirSync, writeFileSync } from "fs";
|
|
4972
|
+
import { basename, join as join3 } from "path";
|
|
4973
|
+
|
|
4974
|
+
// src/lib/paths.ts
|
|
4975
|
+
import { existsSync as existsSync2 } from "fs";
|
|
4972
4976
|
import { homedir } from "os";
|
|
4973
|
-
import {
|
|
4977
|
+
import { join as join2, resolve } from "path";
|
|
4978
|
+
import { homedir as pathsResolverHomedir } from "os";
|
|
4979
|
+
import { join as pathsResolverJoin } from "path";
|
|
4980
|
+
var PATHS_RESOLVER_KIND_ENV = {
|
|
4981
|
+
config: "HASNA_CONFIG_HOME",
|
|
4982
|
+
data: "HASNA_DATA_HOME",
|
|
4983
|
+
state: "HASNA_STATE_HOME",
|
|
4984
|
+
cache: "HASNA_CACHE_HOME"
|
|
4985
|
+
};
|
|
4986
|
+
var PATHS_RESOLVER_APP_SLUG_RE = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
|
|
4987
|
+
function pathsResolverAssertApp(app) {
|
|
4988
|
+
if (typeof app !== "string" || app.length === 0) {
|
|
4989
|
+
throw new TypeError("paths: app must be a non-empty string");
|
|
4990
|
+
}
|
|
4991
|
+
if (!PATHS_RESOLVER_APP_SLUG_RE.test(app)) {
|
|
4992
|
+
throw new TypeError(`paths: invalid app slug "${app}" \u2014 expected lowercase kebab-case ([a-z0-9]+(-[a-z0-9]+)*)`);
|
|
4993
|
+
}
|
|
4994
|
+
}
|
|
4995
|
+
function pathsResolverAssertKind(kind) {
|
|
4996
|
+
if (!Object.keys(PATHS_RESOLVER_KIND_ENV).includes(kind)) {
|
|
4997
|
+
throw new TypeError(`paths: invalid path kind "${kind}" \u2014 expected one of ${Object.keys(PATHS_RESOLVER_KIND_ENV).join(", ")}`);
|
|
4998
|
+
}
|
|
4999
|
+
}
|
|
5000
|
+
function pathsResolverBaseDir(kind, options) {
|
|
5001
|
+
pathsResolverAssertKind(kind);
|
|
5002
|
+
const env = options.env ?? process.env;
|
|
5003
|
+
const override = env[PATHS_RESOLVER_KIND_ENV[kind]];
|
|
5004
|
+
if (typeof override === "string" && override.length > 0)
|
|
5005
|
+
return override;
|
|
5006
|
+
const home = options.home ?? pathsResolverHomedir();
|
|
5007
|
+
const platform = options.platform ?? process.platform;
|
|
5008
|
+
if (platform === "darwin") {
|
|
5009
|
+
switch (kind) {
|
|
5010
|
+
case "config":
|
|
5011
|
+
case "data":
|
|
5012
|
+
return pathsResolverJoin(home, "Library", "Application Support", "Hasna");
|
|
5013
|
+
case "cache":
|
|
5014
|
+
return pathsResolverJoin(home, "Library", "Caches", "Hasna");
|
|
5015
|
+
case "state":
|
|
5016
|
+
return pathsResolverJoin(home, "Library", "Logs", "Hasna");
|
|
5017
|
+
}
|
|
5018
|
+
}
|
|
5019
|
+
switch (kind) {
|
|
5020
|
+
case "config":
|
|
5021
|
+
return pathsResolverJoin(home, ".config", "hasna");
|
|
5022
|
+
case "data":
|
|
5023
|
+
return pathsResolverJoin(home, ".local", "share", "hasna");
|
|
5024
|
+
case "state":
|
|
5025
|
+
return pathsResolverJoin(home, ".local", "state", "hasna");
|
|
5026
|
+
case "cache":
|
|
5027
|
+
return pathsResolverJoin(home, ".cache", "hasna");
|
|
5028
|
+
}
|
|
5029
|
+
}
|
|
5030
|
+
function pathsResolverResolve(kind, options) {
|
|
5031
|
+
pathsResolverAssertApp(options.app);
|
|
5032
|
+
const appSegment = options.internal === true ? pathsResolverJoin("internal", options.app) : options.app;
|
|
5033
|
+
return pathsResolverJoin(pathsResolverBaseDir(kind, options), appSegment);
|
|
5034
|
+
}
|
|
5035
|
+
function dataDir(options) {
|
|
5036
|
+
return pathsResolverResolve("data", options);
|
|
5037
|
+
}
|
|
5038
|
+
function envOr(name, fallback) {
|
|
5039
|
+
const value = process.env[name]?.trim();
|
|
5040
|
+
return value ? value : fallback;
|
|
5041
|
+
}
|
|
5042
|
+
function effectiveHome() {
|
|
5043
|
+
return process.env["HOME"] || process.env["USERPROFILE"] || homedir();
|
|
5044
|
+
}
|
|
5045
|
+
function legacyHomeDir() {
|
|
5046
|
+
return join2(effectiveHome(), ".hasna", "connectors");
|
|
5047
|
+
}
|
|
5048
|
+
function resolverHome() {
|
|
5049
|
+
return dataDir({
|
|
5050
|
+
app: "connectors",
|
|
5051
|
+
home: process.env["HOME"] || process.env["USERPROFILE"] || undefined
|
|
5052
|
+
});
|
|
5053
|
+
}
|
|
5054
|
+
function adoptResolverHome(resolved, env = process.env) {
|
|
5055
|
+
const dataOverride = env.HASNA_DATA_HOME;
|
|
5056
|
+
if (typeof dataOverride === "string" && dataOverride.trim().length > 0)
|
|
5057
|
+
return true;
|
|
5058
|
+
return existsSync2(join2(resolved, "connectors.db"));
|
|
5059
|
+
}
|
|
5060
|
+
function exactConnectorsHome() {
|
|
5061
|
+
const home = envOr("HASNA_CONNECTORS_DIR", "");
|
|
5062
|
+
return home ? home : undefined;
|
|
5063
|
+
}
|
|
5064
|
+
function connectorsHome() {
|
|
5065
|
+
const exact = exactConnectorsHome();
|
|
5066
|
+
if (exact)
|
|
5067
|
+
return resolve(exact);
|
|
5068
|
+
const resolved = resolverHome();
|
|
5069
|
+
return adoptResolverHome(resolved) ? resolve(resolved) : resolve(legacyHomeDir());
|
|
5070
|
+
}
|
|
5071
|
+
|
|
5072
|
+
// src/core/connectors/gmail.ts
|
|
4974
5073
|
var GMAIL_API_BASE = "https://gmail.googleapis.com/gmail/v1";
|
|
4975
5074
|
var TOKEN_URL = "https://oauth2.googleapis.com/token";
|
|
4976
5075
|
var REFRESH_BUFFER_MS = 5 * 60 * 1000;
|
|
@@ -5174,7 +5273,7 @@ async function replyToMessage(profile, messageId, input) {
|
|
|
5174
5273
|
}
|
|
5175
5274
|
async function downloadAttachments(profile, input) {
|
|
5176
5275
|
const messageId = getMessageId(input);
|
|
5177
|
-
const outputDir = input.dir ?? input.outputDir ??
|
|
5276
|
+
const outputDir = input.dir ?? input.outputDir ?? join3(configDirs()[0], "attachments", messageId);
|
|
5178
5277
|
mkdirSync(outputDir, { recursive: true });
|
|
5179
5278
|
const attachments = input.attachmentId && input.filename ? [{
|
|
5180
5279
|
attachmentId: input.attachmentId,
|
|
@@ -5186,7 +5285,7 @@ async function downloadAttachments(profile, input) {
|
|
|
5186
5285
|
for (const attachment of attachments) {
|
|
5187
5286
|
const data = await requestJson(profile, `/users/me/messages/${encodeURIComponent(messageId)}/attachments/${encodeURIComponent(attachment.attachmentId)}`, {});
|
|
5188
5287
|
const filename = safeFilename(attachment.filename);
|
|
5189
|
-
const path =
|
|
5288
|
+
const path = join3(outputDir, filename);
|
|
5190
5289
|
const buffer = Buffer.from(data.data, "base64url");
|
|
5191
5290
|
writeFileSync(path, buffer);
|
|
5192
5291
|
downloaded.push({
|
|
@@ -5256,7 +5355,7 @@ function gmailBackoffDelayMs(attempt, retryAfter = null) {
|
|
|
5256
5355
|
return Math.min(2 ** attempt * baseMs + jitterMs, 64000);
|
|
5257
5356
|
}
|
|
5258
5357
|
function sleep(ms) {
|
|
5259
|
-
return new Promise((
|
|
5358
|
+
return new Promise((resolve2) => setTimeout(resolve2, ms));
|
|
5260
5359
|
}
|
|
5261
5360
|
async function getValidAccessToken(profile) {
|
|
5262
5361
|
if (process.env.GMAIL_ACCESS_TOKEN)
|
|
@@ -5303,8 +5402,8 @@ async function refreshAccessToken(profile, currentTokens) {
|
|
|
5303
5402
|
function listProfiles() {
|
|
5304
5403
|
const profiles = new Set;
|
|
5305
5404
|
for (const baseDir of configDirs()) {
|
|
5306
|
-
const profilesDir =
|
|
5307
|
-
if (!
|
|
5405
|
+
const profilesDir = join3(baseDir, "profiles");
|
|
5406
|
+
if (!existsSync3(profilesDir))
|
|
5308
5407
|
continue;
|
|
5309
5408
|
for (const entry of readdirSync(profilesDir, { withFileTypes: true })) {
|
|
5310
5409
|
if (entry.isDirectory())
|
|
@@ -5322,8 +5421,8 @@ function loadCredentials(profile) {
|
|
|
5322
5421
|
return { clientId: envClientId, clientSecret: envClientSecret };
|
|
5323
5422
|
for (const baseDir of configDirs()) {
|
|
5324
5423
|
const credentials = {
|
|
5325
|
-
...readJson(
|
|
5326
|
-
...readJson(
|
|
5424
|
+
...readJson(join3(baseDir, "credentials.json")),
|
|
5425
|
+
...readJson(join3(baseDir, "profiles", profile, "config.json"))
|
|
5327
5426
|
};
|
|
5328
5427
|
if (credentials.clientId || credentials.clientSecret)
|
|
5329
5428
|
return credentials;
|
|
@@ -5332,30 +5431,30 @@ function loadCredentials(profile) {
|
|
|
5332
5431
|
}
|
|
5333
5432
|
function loadTokens(profile) {
|
|
5334
5433
|
for (const baseDir of configDirs()) {
|
|
5335
|
-
const fromProfile = readJson(
|
|
5434
|
+
const fromProfile = readJson(join3(baseDir, "profiles", profile, "tokens.json"));
|
|
5336
5435
|
if (fromProfile)
|
|
5337
5436
|
return fromProfile;
|
|
5338
|
-
const flat = readJson(
|
|
5437
|
+
const flat = readJson(join3(baseDir, "profiles", `${profile}.json`));
|
|
5339
5438
|
if (flat)
|
|
5340
5439
|
return flat.tokens ?? (flat.accessToken || flat.refreshToken ? flat : null);
|
|
5341
5440
|
}
|
|
5342
5441
|
return null;
|
|
5343
5442
|
}
|
|
5344
5443
|
function saveTokens(profile, tokens) {
|
|
5345
|
-
const baseDir = configDirs().find((dir) =>
|
|
5346
|
-
const profileDir =
|
|
5444
|
+
const baseDir = configDirs().find((dir) => existsSync3(dir)) ?? configDirs()[0];
|
|
5445
|
+
const profileDir = join3(baseDir, "profiles", profile);
|
|
5347
5446
|
mkdirSync(profileDir, { recursive: true });
|
|
5348
|
-
writeFileSync(
|
|
5447
|
+
writeFileSync(join3(profileDir, "tokens.json"), JSON.stringify(tokens, null, 2), { mode: 384 });
|
|
5349
5448
|
}
|
|
5350
5449
|
function configDirs() {
|
|
5351
5450
|
const explicit = process.env.HASNA_GMAIL_CONNECTOR_DIR ?? process.env.GMAIL_CONNECTOR_DIR;
|
|
5352
5451
|
if (explicit)
|
|
5353
5452
|
return [explicit];
|
|
5354
|
-
const baseDir =
|
|
5355
|
-
return [
|
|
5453
|
+
const baseDir = connectorsHome();
|
|
5454
|
+
return [join3(baseDir, "gmail"), join3(baseDir, "connect-gmail")];
|
|
5356
5455
|
}
|
|
5357
5456
|
function readJson(path) {
|
|
5358
|
-
if (!
|
|
5457
|
+
if (!existsSync3(path))
|
|
5359
5458
|
return null;
|
|
5360
5459
|
try {
|
|
5361
5460
|
return JSON.parse(readFileSync(path, "utf8"));
|
|
@@ -5436,9 +5535,8 @@ function safeFilename(filename) {
|
|
|
5436
5535
|
}
|
|
5437
5536
|
|
|
5438
5537
|
// src/core/connectors/googledrive.ts
|
|
5439
|
-
import { existsSync as
|
|
5440
|
-
import {
|
|
5441
|
-
import { basename as basename2, join as join3 } from "path";
|
|
5538
|
+
import { existsSync as existsSync4, mkdirSync as mkdirSync2, readFileSync as readFileSync2, readdirSync as readdirSync2, writeFileSync as writeFileSync2 } from "fs";
|
|
5539
|
+
import { basename as basename2, join as join4 } from "path";
|
|
5442
5540
|
var DRIVE_API_BASE = "https://www.googleapis.com/drive/v3";
|
|
5443
5541
|
var TOKEN_URL2 = "https://oauth2.googleapis.com/token";
|
|
5444
5542
|
var REFRESH_BUFFER_MS2 = 5 * 60 * 1000;
|
|
@@ -5648,8 +5746,8 @@ async function refreshAccessToken2(profile, currentTokens) {
|
|
|
5648
5746
|
function listProfiles2() {
|
|
5649
5747
|
const profiles = new Set;
|
|
5650
5748
|
for (const baseDir of configDirs2()) {
|
|
5651
|
-
const profilesDir =
|
|
5652
|
-
if (!
|
|
5749
|
+
const profilesDir = join4(baseDir, "profiles");
|
|
5750
|
+
if (!existsSync4(profilesDir))
|
|
5653
5751
|
continue;
|
|
5654
5752
|
for (const entry of readdirSync2(profilesDir, { withFileTypes: true })) {
|
|
5655
5753
|
if (entry.isDirectory())
|
|
@@ -5696,8 +5794,8 @@ function loadCredentials2(profile) {
|
|
|
5696
5794
|
return { clientId: envClientId, clientSecret: envClientSecret };
|
|
5697
5795
|
for (const baseDir of configDirs2()) {
|
|
5698
5796
|
const credentials = {
|
|
5699
|
-
...readJson2(
|
|
5700
|
-
...readJson2(
|
|
5797
|
+
...readJson2(join4(baseDir, "credentials.json")),
|
|
5798
|
+
...readJson2(join4(baseDir, "profiles", profile, "config.json"))
|
|
5701
5799
|
};
|
|
5702
5800
|
if (credentials.clientId || credentials.clientSecret)
|
|
5703
5801
|
return credentials;
|
|
@@ -5706,30 +5804,30 @@ function loadCredentials2(profile) {
|
|
|
5706
5804
|
}
|
|
5707
5805
|
function loadTokens2(profile) {
|
|
5708
5806
|
for (const baseDir of configDirs2()) {
|
|
5709
|
-
const fromProfile = readJson2(
|
|
5807
|
+
const fromProfile = readJson2(join4(baseDir, "profiles", profile, "tokens.json"));
|
|
5710
5808
|
if (fromProfile)
|
|
5711
5809
|
return fromProfile;
|
|
5712
|
-
const flat = readJson2(
|
|
5810
|
+
const flat = readJson2(join4(baseDir, "profiles", `${profile}.json`));
|
|
5713
5811
|
if (flat)
|
|
5714
5812
|
return flat.tokens ?? (flat.accessToken || flat.refreshToken ? flat : null);
|
|
5715
5813
|
}
|
|
5716
5814
|
return null;
|
|
5717
5815
|
}
|
|
5718
5816
|
function saveTokens2(profile, tokens) {
|
|
5719
|
-
const baseDir = configDirs2().find((dir) =>
|
|
5720
|
-
const profileDir =
|
|
5817
|
+
const baseDir = configDirs2().find((dir) => existsSync4(dir)) ?? configDirs2()[0];
|
|
5818
|
+
const profileDir = join4(baseDir, "profiles", profile);
|
|
5721
5819
|
mkdirSync2(profileDir, { recursive: true });
|
|
5722
|
-
writeFileSync2(
|
|
5820
|
+
writeFileSync2(join4(profileDir, "tokens.json"), JSON.stringify(tokens, null, 2), { mode: 384 });
|
|
5723
5821
|
}
|
|
5724
5822
|
function configDirs2() {
|
|
5725
5823
|
const explicit = process.env.HASNA_GOOGLE_DRIVE_CONNECTOR_DIR ?? process.env.GOOGLE_DRIVE_CONNECTOR_DIR;
|
|
5726
5824
|
if (explicit)
|
|
5727
5825
|
return [explicit];
|
|
5728
|
-
const baseDir =
|
|
5729
|
-
return [
|
|
5826
|
+
const baseDir = connectorsHome();
|
|
5827
|
+
return [join4(baseDir, "googledrive"), join4(baseDir, "connect-googledrive")];
|
|
5730
5828
|
}
|
|
5731
5829
|
function readJson2(path) {
|
|
5732
|
-
if (!
|
|
5830
|
+
if (!existsSync4(path))
|
|
5733
5831
|
return null;
|
|
5734
5832
|
try {
|
|
5735
5833
|
return JSON.parse(readFileSync2(path, "utf8"));
|
|
@@ -5764,7 +5862,7 @@ function extractGoogleError(body) {
|
|
|
5764
5862
|
// package.json
|
|
5765
5863
|
var package_default = {
|
|
5766
5864
|
name: "@hasna/connectors",
|
|
5767
|
-
version: "1.4.
|
|
5865
|
+
version: "1.4.6",
|
|
5768
5866
|
description: "Open source connector library - Install API connectors with a single command",
|
|
5769
5867
|
type: "module",
|
|
5770
5868
|
bin: {
|
|
@@ -5775,7 +5873,6 @@ var package_default = {
|
|
|
5775
5873
|
files: [
|
|
5776
5874
|
"bin/",
|
|
5777
5875
|
"dist/",
|
|
5778
|
-
"dashboard/dist/",
|
|
5779
5876
|
"connectors/",
|
|
5780
5877
|
"README.md",
|
|
5781
5878
|
"!connectors/**/.test-home/**",
|
|
@@ -5795,20 +5892,23 @@ var package_default = {
|
|
|
5795
5892
|
"./social": {
|
|
5796
5893
|
import: "./dist/social/index.js",
|
|
5797
5894
|
types: "./dist/.types/src/social/index.d.ts"
|
|
5895
|
+
},
|
|
5896
|
+
"./sdk": {
|
|
5897
|
+
types: "./dist/sdk/index.d.ts",
|
|
5898
|
+
import: "./dist/sdk/index.js",
|
|
5899
|
+
default: "./dist/sdk/index.js"
|
|
5798
5900
|
}
|
|
5799
5901
|
},
|
|
5800
5902
|
main: "./dist/index.js",
|
|
5801
5903
|
types: "./dist/index.d.ts",
|
|
5802
5904
|
scripts: {
|
|
5803
|
-
build: "
|
|
5804
|
-
|
|
5805
|
-
postinstall: 'mkdir -p $HOME/.hasna/connectors 2>/dev/null || true; [ "$SKIP_DASHBOARD" = "1" ] || [ ! -f dashboard/package.json ] || [ -d dashboard/node_modules ] || (cd dashboard && bun install)',
|
|
5905
|
+
build: "bun build ./src/cli/index.tsx --outdir ./bin --target bun --external ink --external react --external chalk --external conf --external @hasna/events && bun build ./src/mcp/index.ts --outfile ./bin/mcp.js --target bun && bun build ./src/server/index.ts --outfile ./bin/serve.js --target bun && bun build ./src/index.ts --outdir ./dist --target bun && bun build ./src/social/index.ts --outfile ./dist/social/index.js --target bun && bun build ./src/sdk/index.ts --outfile ./dist/sdk/index.js --target bun && tsc --emitDeclarationOnly --outDir ./dist && tsc -p tsconfig.social.json",
|
|
5906
|
+
postinstall: "mkdir -p $HOME/.hasna/connectors 2>/dev/null || true",
|
|
5806
5907
|
dev: "bun run ./src/cli/index.tsx",
|
|
5807
5908
|
"check:package-secrets": "bun run scripts/check-package-secrets.ts",
|
|
5808
5909
|
typecheck: "tsc --noEmit && tsc -p tsconfig.social.json --noEmit",
|
|
5809
5910
|
test: "bun run build && bun test",
|
|
5810
5911
|
"secrets:scan:npmrc": "bun run scripts/scan-npmrc-auth.mjs",
|
|
5811
|
-
"sdk:build": "cd sdk && bun run build",
|
|
5812
5912
|
prepublishOnly: "bun run secrets:scan:npmrc && bun run build && bun run check:package-secrets && bun test",
|
|
5813
5913
|
prepack: "bun run build && bun run check:package-secrets"
|
|
5814
5914
|
},
|
|
@@ -5828,7 +5928,7 @@ var package_default = {
|
|
|
5828
5928
|
author: "Hasna",
|
|
5829
5929
|
license: "Apache-2.0",
|
|
5830
5930
|
devDependencies: {
|
|
5831
|
-
"@types/bun": "
|
|
5931
|
+
"@types/bun": "1.3.14",
|
|
5832
5932
|
"@types/react": "^18.2.0",
|
|
5833
5933
|
"ink-testing-library": "^4.0.0",
|
|
5834
5934
|
typescript: "^5",
|
|
@@ -5858,17 +5958,18 @@ var package_default = {
|
|
|
5858
5958
|
},
|
|
5859
5959
|
repository: {
|
|
5860
5960
|
type: "git",
|
|
5861
|
-
url: "
|
|
5961
|
+
url: "https://github.com/hasna/apps.git",
|
|
5962
|
+
directory: "apps/connectors"
|
|
5862
5963
|
},
|
|
5863
|
-
homepage: "https://github.com/hasna/connectors#readme",
|
|
5964
|
+
homepage: "https://github.com/hasna/apps/tree/main/apps/connectors#readme",
|
|
5864
5965
|
bugs: {
|
|
5865
|
-
url: "https://github.com/hasna/
|
|
5966
|
+
url: "https://github.com/hasna/apps/issues"
|
|
5866
5967
|
}
|
|
5867
5968
|
};
|
|
5868
5969
|
|
|
5869
5970
|
// src/core/connectors/imessage.ts
|
|
5870
5971
|
import {
|
|
5871
|
-
existsSync as
|
|
5972
|
+
existsSync as existsSync7,
|
|
5872
5973
|
mkdirSync as mkdirSync4,
|
|
5873
5974
|
readFileSync as readFileSync3,
|
|
5874
5975
|
readdirSync as readdirSync5,
|
|
@@ -5876,40 +5977,39 @@ import {
|
|
|
5876
5977
|
statSync as statSync3,
|
|
5877
5978
|
writeFileSync as writeFileSync3
|
|
5878
5979
|
} from "fs";
|
|
5879
|
-
import { join as
|
|
5980
|
+
import { join as join7 } from "path";
|
|
5880
5981
|
|
|
5881
5982
|
// src/lib/connector-resolver.ts
|
|
5882
|
-
import { existsSync as
|
|
5883
|
-
import { join as
|
|
5983
|
+
import { existsSync as existsSync6, readdirSync as readdirSync4, statSync as statSync2 } from "fs";
|
|
5984
|
+
import { join as join6 } from "path";
|
|
5884
5985
|
|
|
5885
5986
|
// src/db/database.ts
|
|
5886
|
-
import { dirname as dirname2, join as
|
|
5887
|
-
import {
|
|
5888
|
-
import { mkdirSync as mkdirSync3, existsSync as existsSync4, readdirSync as readdirSync3, copyFileSync, statSync } from "fs";
|
|
5987
|
+
import { dirname as dirname2, join as join5 } from "path";
|
|
5988
|
+
import { mkdirSync as mkdirSync3, existsSync as existsSync5, readdirSync as readdirSync3, copyFileSync, statSync } from "fs";
|
|
5889
5989
|
function mergeDirectoryContents(sourceDir, targetDir) {
|
|
5890
|
-
if (!
|
|
5990
|
+
if (!existsSync5(sourceDir)) {
|
|
5891
5991
|
return;
|
|
5892
5992
|
}
|
|
5893
5993
|
mkdirSync3(targetDir, { recursive: true });
|
|
5894
5994
|
for (const entry of readdirSync3(sourceDir)) {
|
|
5895
|
-
const sourcePath =
|
|
5896
|
-
const targetPath =
|
|
5995
|
+
const sourcePath = join5(sourceDir, entry);
|
|
5996
|
+
const targetPath = join5(targetDir, entry);
|
|
5897
5997
|
try {
|
|
5898
5998
|
const sourceStat = statSync(sourcePath);
|
|
5899
5999
|
if (sourceStat.isDirectory()) {
|
|
5900
6000
|
mergeDirectoryContents(sourcePath, targetPath);
|
|
5901
6001
|
continue;
|
|
5902
6002
|
}
|
|
5903
|
-
if (!
|
|
6003
|
+
if (!existsSync5(targetPath)) {
|
|
5904
6004
|
copyFileSync(sourcePath, targetPath);
|
|
5905
6005
|
}
|
|
5906
6006
|
} catch {}
|
|
5907
6007
|
}
|
|
5908
6008
|
}
|
|
5909
6009
|
function getConnectorsHome() {
|
|
5910
|
-
const
|
|
5911
|
-
const
|
|
5912
|
-
const legacyDirs = [
|
|
6010
|
+
const newDir = connectorsHome();
|
|
6011
|
+
const home = effectiveHome();
|
|
6012
|
+
const legacyDirs = [join5(home, ".connectors"), join5(home, ".connect")];
|
|
5913
6013
|
mkdirSync3(newDir, { recursive: true });
|
|
5914
6014
|
for (const legacyDir of legacyDirs) {
|
|
5915
6015
|
try {
|
|
@@ -5919,7 +6019,7 @@ function getConnectorsHome() {
|
|
|
5919
6019
|
return newDir;
|
|
5920
6020
|
}
|
|
5921
6021
|
var DB_DIR = getConnectorsHome();
|
|
5922
|
-
var DB_PATH =
|
|
6022
|
+
var DB_PATH = join5(DB_DIR, "connectors.db");
|
|
5923
6023
|
|
|
5924
6024
|
// src/lib/connector-resolver.ts
|
|
5925
6025
|
var LEGACY_CONNECTOR_PREFIX = "connect-";
|
|
@@ -5970,8 +6070,8 @@ function connectorPackageDirNames(name) {
|
|
|
5970
6070
|
function resolveConnectorPackagePath(connectorsDir, name) {
|
|
5971
6071
|
const resolution = resolveConnectorName(name);
|
|
5972
6072
|
const dirNames = connectorPackageDirNames(name);
|
|
5973
|
-
const checkedPaths = dirNames.map((dirName) =>
|
|
5974
|
-
const existingPath = checkedPaths.find((path) =>
|
|
6073
|
+
const checkedPaths = dirNames.map((dirName) => join6(connectorsDir, dirName));
|
|
6074
|
+
const existingPath = checkedPaths.find((path) => existsSync6(path)) ?? null;
|
|
5975
6075
|
const existingDirName = existingPath ? dirNames[checkedPaths.indexOf(existingPath)] : null;
|
|
5976
6076
|
return {
|
|
5977
6077
|
...resolution,
|
|
@@ -5987,16 +6087,16 @@ function getConnectorPackagePath(connectorsDir, name) {
|
|
|
5987
6087
|
const resolved = resolveConnectorPackagePath(connectorsDir, name);
|
|
5988
6088
|
return resolved.existingPath ?? resolved.preferredPath;
|
|
5989
6089
|
}
|
|
5990
|
-
function resolveConnectorConfigPaths(name,
|
|
6090
|
+
function resolveConnectorConfigPaths(name, connectorsHome2 = getConnectorsHome()) {
|
|
5991
6091
|
const resolution = resolveConnectorName(name);
|
|
5992
6092
|
const preferredDirName = resolution.canonicalName || resolution.legacyName;
|
|
5993
|
-
const preferredPath =
|
|
5994
|
-
const legacyPath =
|
|
6093
|
+
const preferredPath = join6(connectorsHome2, preferredDirName);
|
|
6094
|
+
const legacyPath = join6(connectorsHome2, resolution.legacyName);
|
|
5995
6095
|
const paths = preferredPath === legacyPath ? [preferredPath] : [preferredPath, legacyPath];
|
|
5996
|
-
const existingPaths = paths.filter((path) =>
|
|
6096
|
+
const existingPaths = paths.filter((path) => existsSync6(path));
|
|
5997
6097
|
return {
|
|
5998
6098
|
...resolution,
|
|
5999
|
-
connectorsHome,
|
|
6099
|
+
connectorsHome: connectorsHome2,
|
|
6000
6100
|
preferredDirName,
|
|
6001
6101
|
preferredPath,
|
|
6002
6102
|
legacyPath,
|
|
@@ -6004,11 +6104,11 @@ function resolveConnectorConfigPaths(name, connectorsHome = getConnectorsHome())
|
|
|
6004
6104
|
readPaths: paths
|
|
6005
6105
|
};
|
|
6006
6106
|
}
|
|
6007
|
-
function getConnectorConfigDir(name,
|
|
6008
|
-
return resolveConnectorConfigPaths(name,
|
|
6107
|
+
function getConnectorConfigDir(name, connectorsHome2 = getConnectorsHome()) {
|
|
6108
|
+
return resolveConnectorConfigPaths(name, connectorsHome2).preferredPath;
|
|
6009
6109
|
}
|
|
6010
|
-
function getConnectorConfigReadDirs(name,
|
|
6011
|
-
return resolveConnectorConfigPaths(name,
|
|
6110
|
+
function getConnectorConfigReadDirs(name, connectorsHome2 = getConnectorsHome()) {
|
|
6111
|
+
return resolveConnectorConfigPaths(name, connectorsHome2).readPaths;
|
|
6012
6112
|
}
|
|
6013
6113
|
|
|
6014
6114
|
// src/core/connectors/imessage.ts
|
|
@@ -6136,7 +6236,7 @@ API Key authentication is optional and depends on the bridge deployment. A bridg
|
|
|
6136
6236
|
|
|
6137
6237
|
## Data Storage
|
|
6138
6238
|
|
|
6139
|
-
Connector state is stored under \`~/.hasna/connectors/imessage/\`. Profiles are read from both \`profiles/<name>.json\` and \`profiles/<name>/config.json\` so the connector stays compatible with the shared
|
|
6239
|
+
Connector state is stored under \`~/.hasna/connectors/imessage/\`. Profiles are read from both \`profiles/<name>.json\` and \`profiles/<name>/config.json\` so the connector stays compatible with the shared auth helpers while remaining fully internal to the one-product repo.
|
|
6140
6240
|
`;
|
|
6141
6241
|
var commandInputSchema = exports_external.object({
|
|
6142
6242
|
args: exports_external.array(exports_external.string()).default([]),
|
|
@@ -6178,12 +6278,12 @@ function getConfigReadDirs() {
|
|
|
6178
6278
|
return getConnectorConfigReadDirs(CONNECTOR_NAME);
|
|
6179
6279
|
}
|
|
6180
6280
|
function getProfilesDir() {
|
|
6181
|
-
return
|
|
6281
|
+
return join7(getConfigDir(), "profiles");
|
|
6182
6282
|
}
|
|
6183
6283
|
function getCurrentProfile() {
|
|
6184
6284
|
for (const configDir of getConfigReadDirs()) {
|
|
6185
|
-
const currentProfileFile =
|
|
6186
|
-
if (!
|
|
6285
|
+
const currentProfileFile = join7(configDir, "current_profile");
|
|
6286
|
+
if (!existsSync7(currentProfileFile))
|
|
6187
6287
|
continue;
|
|
6188
6288
|
try {
|
|
6189
6289
|
return readFileSync3(currentProfileFile, "utf-8").trim() || "default";
|
|
@@ -6196,16 +6296,16 @@ function getCurrentProfile() {
|
|
|
6196
6296
|
function setCurrentProfile(profile) {
|
|
6197
6297
|
const configDir = getConfigDir();
|
|
6198
6298
|
mkdirSync4(configDir, { recursive: true });
|
|
6199
|
-
writeFileSync3(
|
|
6299
|
+
writeFileSync3(join7(configDir, "current_profile"), profile);
|
|
6200
6300
|
}
|
|
6201
6301
|
function getFlatProfilePath(profile) {
|
|
6202
|
-
return
|
|
6302
|
+
return join7(getProfilesDir(), `${profile}.json`);
|
|
6203
6303
|
}
|
|
6204
6304
|
function getFlatProfileReadPaths(profile) {
|
|
6205
|
-
return getConfigReadDirs().map((dir) =>
|
|
6305
|
+
return getConfigReadDirs().map((dir) => join7(dir, "profiles", `${profile}.json`));
|
|
6206
6306
|
}
|
|
6207
6307
|
function getDirectoryProfileReadPaths(profile) {
|
|
6208
|
-
return getConfigReadDirs().map((dir) =>
|
|
6308
|
+
return getConfigReadDirs().map((dir) => join7(dir, "profiles", profile, "config.json"));
|
|
6209
6309
|
}
|
|
6210
6310
|
function loadJsonFile(path) {
|
|
6211
6311
|
try {
|
|
@@ -6225,8 +6325,8 @@ function sanitizeProfileConfig(config) {
|
|
|
6225
6325
|
};
|
|
6226
6326
|
}
|
|
6227
6327
|
function loadProfile(profile = getCurrentProfile()) {
|
|
6228
|
-
const flatConfig = getFlatProfileReadPaths(profile).reverse().reduce((config, path) => ({ ...config, ...
|
|
6229
|
-
const directoryConfig = getDirectoryProfileReadPaths(profile).reverse().reduce((config, path) => ({ ...config, ...
|
|
6328
|
+
const flatConfig = getFlatProfileReadPaths(profile).reverse().reduce((config, path) => ({ ...config, ...existsSync7(path) ? loadJsonFile(path) : {} }), {});
|
|
6329
|
+
const directoryConfig = getDirectoryProfileReadPaths(profile).reverse().reduce((config, path) => ({ ...config, ...existsSync7(path) ? loadJsonFile(path) : {} }), {});
|
|
6230
6330
|
return sanitizeProfileConfig({
|
|
6231
6331
|
...flatConfig,
|
|
6232
6332
|
...directoryConfig
|
|
@@ -6242,17 +6342,17 @@ function profileExists(profile) {
|
|
|
6242
6342
|
if (profile === "default") {
|
|
6243
6343
|
return true;
|
|
6244
6344
|
}
|
|
6245
|
-
return getFlatProfileReadPaths(profile).some((path) =>
|
|
6345
|
+
return getFlatProfileReadPaths(profile).some((path) => existsSync7(path)) || getConfigReadDirs().some((dir) => existsSync7(join7(dir, "profiles", profile)));
|
|
6246
6346
|
}
|
|
6247
6347
|
function listProfiles3() {
|
|
6248
6348
|
const seen = new Set(["default"]);
|
|
6249
6349
|
for (const configDir of getConfigReadDirs()) {
|
|
6250
|
-
const profilesDir =
|
|
6251
|
-
if (!
|
|
6350
|
+
const profilesDir = join7(configDir, "profiles");
|
|
6351
|
+
if (!existsSync7(profilesDir))
|
|
6252
6352
|
continue;
|
|
6253
6353
|
try {
|
|
6254
6354
|
for (const entry of readdirSync5(profilesDir)) {
|
|
6255
|
-
const fullPath =
|
|
6355
|
+
const fullPath = join7(profilesDir, entry);
|
|
6256
6356
|
const stat = statSync3(fullPath);
|
|
6257
6357
|
if (stat.isDirectory()) {
|
|
6258
6358
|
seen.add(entry);
|
|
@@ -6274,11 +6374,11 @@ function createProfile(profile, config = {}) {
|
|
|
6274
6374
|
}
|
|
6275
6375
|
function clearProfile(profile = getCurrentProfile()) {
|
|
6276
6376
|
const flatPath = getFlatProfilePath(profile);
|
|
6277
|
-
const directoryPath =
|
|
6278
|
-
if (
|
|
6377
|
+
const directoryPath = join7(getProfilesDir(), profile);
|
|
6378
|
+
if (existsSync7(flatPath)) {
|
|
6279
6379
|
rmSync(flatPath);
|
|
6280
6380
|
}
|
|
6281
|
-
if (
|
|
6381
|
+
if (existsSync7(directoryPath)) {
|
|
6282
6382
|
rmSync(directoryPath, { recursive: true, force: true });
|
|
6283
6383
|
}
|
|
6284
6384
|
}
|
|
@@ -7083,19 +7183,19 @@ var imessageConnector = defineConnector({
|
|
|
7083
7183
|
});
|
|
7084
7184
|
|
|
7085
7185
|
// src/core/connectors/stripe.ts
|
|
7086
|
-
import { existsSync as
|
|
7087
|
-
import { dirname as dirname3, join as
|
|
7186
|
+
import { existsSync as existsSync8 } from "fs";
|
|
7187
|
+
import { dirname as dirname3, join as join8 } from "path";
|
|
7088
7188
|
import { fileURLToPath as fileURLToPath2, pathToFileURL as pathToFileURL2 } from "url";
|
|
7089
7189
|
var __dirname3 = dirname3(fileURLToPath2(import.meta.url));
|
|
7090
7190
|
function resolveStripeConnectorDir() {
|
|
7091
7191
|
const candidates = [
|
|
7092
|
-
|
|
7093
|
-
|
|
7094
|
-
|
|
7095
|
-
|
|
7192
|
+
join8(__dirname3, "..", "..", "..", "connectors", "stripe"),
|
|
7193
|
+
join8(__dirname3, "..", "..", "connectors", "stripe"),
|
|
7194
|
+
join8(__dirname3, "..", "connectors", "stripe"),
|
|
7195
|
+
join8(process.cwd(), "connectors", "stripe")
|
|
7096
7196
|
];
|
|
7097
7197
|
for (const candidate of candidates) {
|
|
7098
|
-
if (
|
|
7198
|
+
if (existsSync8(candidate)) {
|
|
7099
7199
|
return candidate;
|
|
7100
7200
|
}
|
|
7101
7201
|
}
|
|
@@ -7334,10 +7434,10 @@ function buildCommandHelp2(spec) {
|
|
|
7334
7434
|
var ROOT_HELP3 = buildRootHelp2(COMMAND_SPECS2);
|
|
7335
7435
|
var COMMAND_HELP3 = Object.fromEntries(COMMAND_SPECS2.map((spec) => [spec.name, buildCommandHelp2(spec)]));
|
|
7336
7436
|
async function loadStripeApiModule() {
|
|
7337
|
-
return await import(pathToFileURL2(
|
|
7437
|
+
return await import(pathToFileURL2(join8(CONNECTOR_DIR2, "src", "api", "index.ts")).href);
|
|
7338
7438
|
}
|
|
7339
7439
|
async function loadStripeConfigModule() {
|
|
7340
|
-
return await import(pathToFileURL2(
|
|
7440
|
+
return await import(pathToFileURL2(join8(CONNECTOR_DIR2, "src", "utils", "config.ts")).href);
|
|
7341
7441
|
}
|
|
7342
7442
|
function extractGlobalArgs3(args) {
|
|
7343
7443
|
const remaining = [];
|
|
@@ -16393,16 +16493,16 @@ function loadConnectorVersions() {
|
|
|
16393
16493
|
versionsLoaded = true;
|
|
16394
16494
|
const thisDir = dirname4(fileURLToPath3(import.meta.url));
|
|
16395
16495
|
const candidates = [
|
|
16396
|
-
|
|
16397
|
-
|
|
16496
|
+
join9(thisDir, "..", "connectors"),
|
|
16497
|
+
join9(thisDir, "..", "..", "connectors")
|
|
16398
16498
|
];
|
|
16399
|
-
const connectorsDir = candidates.find((d) =>
|
|
16499
|
+
const connectorsDir = candidates.find((d) => existsSync9(d));
|
|
16400
16500
|
if (!connectorsDir)
|
|
16401
16501
|
return;
|
|
16402
16502
|
for (const connector of CONNECTORS) {
|
|
16403
16503
|
try {
|
|
16404
|
-
const pkgPath =
|
|
16405
|
-
if (
|
|
16504
|
+
const pkgPath = join9(getConnectorPackagePath(connectorsDir, connector.name), "package.json");
|
|
16505
|
+
if (existsSync9(pkgPath)) {
|
|
16406
16506
|
const pkg = JSON.parse(readFileSync4(pkgPath, "utf-8"));
|
|
16407
16507
|
connector.version = pkg.version || "0.0.0";
|
|
16408
16508
|
continue;
|
|
@@ -16415,16 +16515,16 @@ function loadConnectorVersions() {
|
|
|
16415
16515
|
}
|
|
16416
16516
|
}
|
|
16417
16517
|
// src/lib/installer.ts
|
|
16418
|
-
import { existsSync as
|
|
16419
|
-
import { join as
|
|
16518
|
+
import { existsSync as existsSync10, mkdirSync as mkdirSync5, readFileSync as readFileSync5, writeFileSync as writeFileSync4, readdirSync as readdirSync6, statSync as statSync4, rmSync as rmSync2 } from "fs";
|
|
16519
|
+
import { join as join10, dirname as dirname5 } from "path";
|
|
16420
16520
|
import { fileURLToPath as fileURLToPath4 } from "url";
|
|
16421
16521
|
var __dirname4 = dirname5(fileURLToPath4(import.meta.url));
|
|
16422
16522
|
function resolveConnectorsDir() {
|
|
16423
|
-
const fromBin =
|
|
16424
|
-
if (
|
|
16523
|
+
const fromBin = join10(__dirname4, "..", "connectors");
|
|
16524
|
+
if (existsSync10(fromBin))
|
|
16425
16525
|
return fromBin;
|
|
16426
|
-
const fromSrc =
|
|
16427
|
-
if (
|
|
16526
|
+
const fromSrc = join10(__dirname4, "..", "..", "connectors");
|
|
16527
|
+
if (existsSync10(fromSrc))
|
|
16428
16528
|
return fromSrc;
|
|
16429
16529
|
return fromBin;
|
|
16430
16530
|
}
|
|
@@ -16433,17 +16533,17 @@ var PROJECT_CONNECTORS_DIRNAME = ".connectors";
|
|
|
16433
16533
|
var ENABLEMENT_MANIFEST_FILENAME = "manifest.json";
|
|
16434
16534
|
var ENABLEMENT_INDEX_FILENAME = "index.ts";
|
|
16435
16535
|
function getProjectConnectorsDir(targetDir) {
|
|
16436
|
-
return
|
|
16536
|
+
return join10(targetDir, PROJECT_CONNECTORS_DIRNAME);
|
|
16437
16537
|
}
|
|
16438
16538
|
function getEnablementManifestPath(targetDir) {
|
|
16439
|
-
return
|
|
16539
|
+
return join10(getProjectConnectorsDir(targetDir), ENABLEMENT_MANIFEST_FILENAME);
|
|
16440
16540
|
}
|
|
16441
16541
|
function getLegacyInstallPath(targetDir, name) {
|
|
16442
|
-
return
|
|
16542
|
+
return join10(getProjectConnectorsDir(targetDir), legacyConnectorName(name));
|
|
16443
16543
|
}
|
|
16444
16544
|
function loadEnablementManifest(targetDir) {
|
|
16445
16545
|
const manifestPath = getEnablementManifestPath(targetDir);
|
|
16446
|
-
if (!
|
|
16546
|
+
if (!existsSync10(manifestPath)) {
|
|
16447
16547
|
return null;
|
|
16448
16548
|
}
|
|
16449
16549
|
try {
|
|
@@ -16463,11 +16563,11 @@ function loadEnablementManifest(targetDir) {
|
|
|
16463
16563
|
}
|
|
16464
16564
|
function getLegacyInstalledConnectors(targetDir) {
|
|
16465
16565
|
const connectorsDir = getProjectConnectorsDir(targetDir);
|
|
16466
|
-
if (!
|
|
16566
|
+
if (!existsSync10(connectorsDir)) {
|
|
16467
16567
|
return [];
|
|
16468
16568
|
}
|
|
16469
16569
|
return readdirSync6(connectorsDir).filter((entry) => {
|
|
16470
|
-
const fullPath =
|
|
16570
|
+
const fullPath = join10(connectorsDir, entry);
|
|
16471
16571
|
return entry.startsWith("connect-") && statSync4(fullPath).isDirectory();
|
|
16472
16572
|
}).map((entry) => entry.replace("connect-", "")).sort();
|
|
16473
16573
|
}
|
|
@@ -16476,7 +16576,7 @@ function getEnabledConnectors(targetDir) {
|
|
|
16476
16576
|
return [...new Set([...manifestConnectors, ...getLegacyInstalledConnectors(targetDir)])].sort();
|
|
16477
16577
|
}
|
|
16478
16578
|
function updateConnectorsIndex(connectorsDir, connectors18) {
|
|
16479
|
-
const indexPath =
|
|
16579
|
+
const indexPath = join10(connectorsDir, ENABLEMENT_INDEX_FILENAME);
|
|
16480
16580
|
const connectorList = connectors18.map((connector) => ` "${connector}",`).join(`
|
|
16481
16581
|
`);
|
|
16482
16582
|
const content = `/**
|
|
@@ -16512,7 +16612,7 @@ function getConnectorPath(name) {
|
|
|
16512
16612
|
}
|
|
16513
16613
|
function connectorExists(name) {
|
|
16514
16614
|
const normalizedName = normalizeConnectorName(name);
|
|
16515
|
-
return hasInternalConnectorDefinition(normalizedName) ||
|
|
16615
|
+
return hasInternalConnectorDefinition(normalizedName) || existsSync10(getConnectorPath(normalizedName));
|
|
16516
16616
|
}
|
|
16517
16617
|
function installConnector(name, options = {}) {
|
|
16518
16618
|
const { targetDir = process.cwd(), overwrite = false } = options;
|
|
@@ -16545,7 +16645,7 @@ function installConnector(name, options = {}) {
|
|
|
16545
16645
|
try {
|
|
16546
16646
|
const nextEnabled = [...new Set([...installed, normalizedName])].sort();
|
|
16547
16647
|
writeEnablementManifest(targetDir, nextEnabled);
|
|
16548
|
-
if (overwrite &&
|
|
16648
|
+
if (overwrite && existsSync10(legacyInstallPath)) {
|
|
16549
16649
|
rmSync2(legacyInstallPath, { recursive: true });
|
|
16550
16650
|
}
|
|
16551
16651
|
return {
|
|
@@ -16580,8 +16680,8 @@ function parseConnectorDocs(raw) {
|
|
|
16580
16680
|
function getConnectorDocs(name) {
|
|
16581
16681
|
const normalizedName = normalizeConnectorName(name);
|
|
16582
16682
|
const connectorPath = getConnectorPath(normalizedName);
|
|
16583
|
-
const claudeMdPath =
|
|
16584
|
-
if (
|
|
16683
|
+
const claudeMdPath = join10(connectorPath, "CLAUDE.md");
|
|
16684
|
+
if (existsSync10(claudeMdPath)) {
|
|
16585
16685
|
return parseConnectorDocs(readFileSync5(claudeMdPath, "utf-8"));
|
|
16586
16686
|
}
|
|
16587
16687
|
const internalDocs = getInternalConnectorDefinition(normalizedName)?.docsMarkdown;
|
|
@@ -16626,20 +16726,20 @@ function removeConnector(name, targetDir = process.cwd()) {
|
|
|
16626
16726
|
const nextEnabled = installed.filter((connector) => connector !== normalizedName);
|
|
16627
16727
|
writeEnablementManifest(targetDir, nextEnabled);
|
|
16628
16728
|
const legacyInstallPath = getLegacyInstallPath(targetDir, normalizedName);
|
|
16629
|
-
if (
|
|
16729
|
+
if (existsSync10(legacyInstallPath)) {
|
|
16630
16730
|
rmSync2(legacyInstallPath, { recursive: true });
|
|
16631
16731
|
}
|
|
16632
16732
|
return true;
|
|
16633
16733
|
}
|
|
16634
16734
|
// src/lib/runner.ts
|
|
16635
|
-
import { existsSync as
|
|
16636
|
-
import { join as
|
|
16735
|
+
import { existsSync as existsSync12, readdirSync as readdirSync8 } from "fs";
|
|
16736
|
+
import { join as join12, dirname as dirname6 } from "path";
|
|
16637
16737
|
import { fileURLToPath as fileURLToPath5 } from "url";
|
|
16638
16738
|
import { spawn } from "child_process";
|
|
16639
16739
|
|
|
16640
16740
|
// src/server/auth.ts
|
|
16641
|
-
import { chmodSync, existsSync as
|
|
16642
|
-
import { join as
|
|
16741
|
+
import { chmodSync, existsSync as existsSync11, readFileSync as readFileSync6, writeFileSync as writeFileSync5, mkdirSync as mkdirSync6, readdirSync as readdirSync7, rmSync as rmSync3, statSync as statSync5 } from "fs";
|
|
16742
|
+
import { join as join11 } from "path";
|
|
16643
16743
|
var oauthStateStore = new Map;
|
|
16644
16744
|
var GOOGLE_SCOPES = {
|
|
16645
16745
|
gmail: [
|
|
@@ -16703,8 +16803,8 @@ function getConnectorConfigReadDirs2(name) {
|
|
|
16703
16803
|
function getCurrentProfile2(name) {
|
|
16704
16804
|
name = normalizeConnectorName(name);
|
|
16705
16805
|
for (const configDir of getConnectorConfigReadDirs2(name)) {
|
|
16706
|
-
const currentProfileFile =
|
|
16707
|
-
if (
|
|
16806
|
+
const currentProfileFile = join11(configDir, "current_profile");
|
|
16807
|
+
if (existsSync11(currentProfileFile)) {
|
|
16708
16808
|
try {
|
|
16709
16809
|
return readFileSync6(currentProfileFile, "utf-8").trim() || "default";
|
|
16710
16810
|
} catch {
|
|
@@ -16717,14 +16817,14 @@ function getCurrentProfile2(name) {
|
|
|
16717
16817
|
function loadProfileConfigFromDir(configDir, profile) {
|
|
16718
16818
|
let flatConfig = {};
|
|
16719
16819
|
let dirConfig = {};
|
|
16720
|
-
const profileFile =
|
|
16721
|
-
if (
|
|
16820
|
+
const profileFile = join11(configDir, "profiles", `${profile}.json`);
|
|
16821
|
+
if (existsSync11(profileFile)) {
|
|
16722
16822
|
try {
|
|
16723
16823
|
flatConfig = JSON.parse(readFileSync6(profileFile, "utf-8"));
|
|
16724
16824
|
} catch {}
|
|
16725
16825
|
}
|
|
16726
|
-
const profileDirConfig =
|
|
16727
|
-
if (
|
|
16826
|
+
const profileDirConfig = join11(configDir, "profiles", profile, "config.json");
|
|
16827
|
+
if (existsSync11(profileDirConfig)) {
|
|
16728
16828
|
try {
|
|
16729
16829
|
dirConfig = JSON.parse(readFileSync6(profileDirConfig, "utf-8"));
|
|
16730
16830
|
} catch {}
|
|
@@ -16744,8 +16844,8 @@ function loadTokens3(name) {
|
|
|
16744
16844
|
name = normalizeConnectorName(name);
|
|
16745
16845
|
const profile = getCurrentProfile2(name);
|
|
16746
16846
|
for (const configDir of getConnectorConfigReadDirs2(name)) {
|
|
16747
|
-
const tokensFile =
|
|
16748
|
-
if (
|
|
16847
|
+
const tokensFile = join11(configDir, "profiles", profile, "tokens.json");
|
|
16848
|
+
if (existsSync11(tokensFile)) {
|
|
16749
16849
|
try {
|
|
16750
16850
|
return JSON.parse(readFileSync6(tokensFile, "utf-8"));
|
|
16751
16851
|
} catch {
|
|
@@ -16773,8 +16873,8 @@ function getEnvVars(name) {
|
|
|
16773
16873
|
function getOAuthConfig(name) {
|
|
16774
16874
|
name = normalizeConnectorName(name);
|
|
16775
16875
|
for (const configDir of getConnectorConfigReadDirs2(name)) {
|
|
16776
|
-
const credentialsFile =
|
|
16777
|
-
if (
|
|
16876
|
+
const credentialsFile = join11(configDir, "credentials.json");
|
|
16877
|
+
if (existsSync11(credentialsFile)) {
|
|
16778
16878
|
try {
|
|
16779
16879
|
const creds = JSON.parse(readFileSync6(credentialsFile, "utf-8"));
|
|
16780
16880
|
return { clientId: creds.clientId, clientSecret: creds.clientSecret };
|
|
@@ -16791,11 +16891,11 @@ function getOAuthConfig(name) {
|
|
|
16791
16891
|
// src/lib/runner.ts
|
|
16792
16892
|
var __dirname5 = dirname6(fileURLToPath5(import.meta.url));
|
|
16793
16893
|
function resolveConnectorsDir2() {
|
|
16794
|
-
const fromBin =
|
|
16795
|
-
if (
|
|
16894
|
+
const fromBin = join12(__dirname5, "..", "connectors");
|
|
16895
|
+
if (existsSync12(fromBin))
|
|
16796
16896
|
return fromBin;
|
|
16797
|
-
const fromSrc =
|
|
16798
|
-
if (
|
|
16897
|
+
const fromSrc = join12(__dirname5, "..", "..", "connectors");
|
|
16898
|
+
if (existsSync12(fromSrc))
|
|
16799
16899
|
return fromSrc;
|
|
16800
16900
|
return fromBin;
|
|
16801
16901
|
}
|
|
@@ -16871,8 +16971,8 @@ function buildEnvWithCredentials(connectorName, baseEnv) {
|
|
|
16871
16971
|
function getConnectorCliPath(name) {
|
|
16872
16972
|
const safeName = normalizeConnectorName(name).replace(/[^a-z0-9-]/g, "");
|
|
16873
16973
|
const connectorDir = getConnectorPackagePath(CONNECTORS_DIR2, safeName);
|
|
16874
|
-
const cliPath =
|
|
16875
|
-
if (
|
|
16974
|
+
const cliPath = join12(connectorDir, "src", "cli", "index.ts");
|
|
16975
|
+
if (existsSync12(cliPath))
|
|
16876
16976
|
return cliPath;
|
|
16877
16977
|
return null;
|
|
16878
16978
|
}
|
|
@@ -17066,7 +17166,7 @@ function runLegacyConnectorCommand(name, args, timeoutMs = 30000) {
|
|
|
17066
17166
|
success: false
|
|
17067
17167
|
});
|
|
17068
17168
|
}
|
|
17069
|
-
return new Promise((
|
|
17169
|
+
return new Promise((resolve2) => {
|
|
17070
17170
|
const proc = spawn("bun", ["run", cliPath, ...args], {
|
|
17071
17171
|
timeout: timeoutMs,
|
|
17072
17172
|
env: buildEnvWithCredentials(connectorName, process.env),
|
|
@@ -17081,7 +17181,7 @@ function runLegacyConnectorCommand(name, args, timeoutMs = 30000) {
|
|
|
17081
17181
|
stderr += data.toString();
|
|
17082
17182
|
});
|
|
17083
17183
|
proc.on("close", (code) => {
|
|
17084
|
-
|
|
17184
|
+
resolve2({
|
|
17085
17185
|
stdout: stdout.trim(),
|
|
17086
17186
|
stderr: stderr.trim(),
|
|
17087
17187
|
exitCode: code ?? 1,
|
|
@@ -17089,7 +17189,7 @@ function runLegacyConnectorCommand(name, args, timeoutMs = 30000) {
|
|
|
17089
17189
|
});
|
|
17090
17190
|
});
|
|
17091
17191
|
proc.on("error", (err) => {
|
|
17092
|
-
|
|
17192
|
+
resolve2({
|
|
17093
17193
|
stdout: "",
|
|
17094
17194
|
stderr: err.message,
|
|
17095
17195
|
exitCode: 1,
|