@hasna/connectors 1.4.1 → 1.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/index.js +1271 -317
- package/bin/mcp.js +524 -211
- package/bin/serve.js +1208 -256
- package/connectors/adobe/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/amadeus/src/api/client.ts +6 -6
- package/connectors/amadeus/src/cli/index.ts +6 -6
- package/connectors/amadeus/src/utils/output.ts +5 -5
- package/connectors/amazon/package.json +1 -1
- package/connectors/amilia/package.json +1 -1
- package/connectors/amqpsender/package.json +1 -1
- package/connectors/announcekit/package.json +1 -1
- package/connectors/anthropic/.env.example +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/assemblyai/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/awscognito/package.json +1 -1
- package/connectors/bamboohr/package.json +1 -1
- package/connectors/bannerbear/package.json +1 -1
- package/connectors/baseten/package.json +1 -1
- package/connectors/box/package.json +1 -1
- package/connectors/brevo/package.json +1 -1
- package/connectors/calendly/package.json +1 -1
- package/connectors/cerebras/package.json +1 -1
- package/connectors/chargebee/package.json +1 -1
- package/connectors/clearbit/package.json +1 -1
- package/connectors/clickbank/README.md +2 -2
- package/connectors/cloudflare-workers/package.json +1 -1
- package/connectors/coda/package.json +1 -1
- package/connectors/coingecko/package.json +1 -1
- package/connectors/convertkit/package.json +1 -1
- package/connectors/customerio/package.json +1 -1
- package/connectors/databricks/package.json +1 -1
- package/connectors/datadog/package.json +1 -1
- package/connectors/datasoap/README.md +2 -2
- package/connectors/datasoap/package.json +1 -1
- package/connectors/datumbox/README.md +2 -2
- package/connectors/datumbox/package.json +1 -1
- package/connectors/dayschedule/README.md +2 -2
- package/connectors/dayschedule/package.json +1 -1
- package/connectors/deepgram/package.json +1 -1
- package/connectors/deepinfra/README.md +2 -2
- package/connectors/deepinfra/package.json +1 -1
- package/connectors/deepl/README.md +2 -2
- package/connectors/deepl/package.json +1 -1
- package/connectors/deepseek/package.json +1 -1
- package/connectors/demio/README.md +2 -2
- package/connectors/demio/package.json +1 -1
- package/connectors/descript/README.md +2 -2
- package/connectors/descript/package.json +1 -1
- package/connectors/detrack/README.md +2 -2
- package/connectors/detrack/package.json +1 -1
- package/connectors/devcycle/README.md +2 -2
- package/connectors/devcycle/package.json +1 -1
- package/connectors/dhl/README.md +2 -2
- package/connectors/dhl/package.json +1 -1
- package/connectors/docusign/package.json +1 -1
- package/connectors/dropbox/package.json +1 -1
- package/connectors/fal/package.json +1 -1
- package/connectors/fathom/package.json +1 -1
- package/connectors/fireworks/package.json +1 -1
- package/connectors/gitlab/package.json +1 -1
- package/connectors/googlechat/README.md +1 -2
- package/connectors/googledrive/src/api/client.ts +5 -5
- package/connectors/googledrive/src/api/files.ts +11 -11
- package/connectors/googledrive/src/api/folders.ts +2 -2
- package/connectors/googledrive/src/cli/index.ts +4 -4
- package/connectors/googledrive/src/utils/output.ts +3 -3
- package/connectors/googleforms/README.md +1 -2
- package/connectors/googleperspective/README.md +1 -2
- package/connectors/grafana/package.json +1 -1
- package/connectors/growbots/README.md +2 -2
- package/connectors/growbots/package.json +1 -1
- package/connectors/gumroad/package.json +1 -1
- package/connectors/gupshup/README.md +2 -2
- package/connectors/gupshup/package.json +1 -1
- package/connectors/guru/README.md +2 -2
- package/connectors/guru/package.json +1 -1
- package/connectors/hackernews/README.md +2 -2
- package/connectors/hackernews/package.json +1 -1
- package/connectors/halopsa/README.md +2 -2
- package/connectors/halopsa/package.json +1 -1
- package/connectors/handwrytten/README.md +2 -2
- package/connectors/handwrytten/package.json +1 -1
- package/connectors/hansei/README.md +2 -2
- package/connectors/hansei/package.json +1 -1
- package/connectors/harrypotterapi/README.md +2 -2
- package/connectors/harrypotterapi/package.json +1 -1
- package/connectors/harvest/README.md +2 -2
- package/connectors/harvest/package.json +1 -1
- package/connectors/headlesstesting/README.md +2 -2
- package/connectors/headlesstesting/package.json +1 -1
- package/connectors/homeassistant/package.json +1 -1
- package/connectors/klaviyo/package.json +1 -1
- package/connectors/lemonsqueezy/package.json +1 -1
- package/connectors/lighthouse/src/api/index.ts +1 -1
- package/connectors/linkedin/package.json +1 -1
- package/connectors/linkish/README.md +2 -2
- package/connectors/linkish/package.json +1 -1
- package/connectors/liveagent/README.md +2 -2
- package/connectors/liveagent/package.json +1 -1
- package/connectors/localazy/README.md +2 -2
- package/connectors/localazy/package.json +1 -1
- package/connectors/loginradius/README.md +2 -2
- package/connectors/loginradius/package.json +1 -1
- package/connectors/lokalise/README.md +2 -2
- package/connectors/lokalise/package.json +1 -1
- package/connectors/lonescale/README.md +2 -2
- package/connectors/lonescale/package.json +1 -1
- package/connectors/lucidchart/README.md +2 -2
- package/connectors/lucidchart/package.json +1 -1
- package/connectors/luma/package.json +1 -1
- package/connectors/magento2/README.md +2 -2
- package/connectors/magento2/package.json +1 -1
- package/connectors/mailcheck/README.md +2 -2
- package/connectors/mailcheck/package.json +1 -1
- package/connectors/mailchimp/package.json +1 -1
- package/connectors/mailerlite/README.md +2 -2
- package/connectors/mailerlite/package.json +1 -1
- package/connectors/mailersend/README.md +2 -2
- package/connectors/mailersend/package.json +1 -1
- package/connectors/mailify/README.md +2 -2
- package/connectors/mailify/package.json +1 -1
- package/connectors/mailjet/README.md +2 -2
- package/connectors/mailjet/package.json +1 -1
- package/connectors/mailmodo/README.md +2 -2
- package/connectors/mailmodo/package.json +1 -1
- package/connectors/malcore/README.md +2 -2
- package/connectors/malcore/package.json +1 -1
- package/connectors/mandrill/README.md +2 -2
- package/connectors/mandrill/package.json +1 -1
- package/connectors/marcomrobot/README.md +2 -2
- package/connectors/marcomrobot/package.json +1 -1
- package/connectors/marketingmasterio/README.md +2 -2
- package/connectors/marketingmasterio/package.json +1 -1
- package/connectors/marketplacer/README.md +2 -2
- package/connectors/marketplacer/package.json +1 -1
- package/connectors/marketstack/README.md +2 -2
- package/connectors/marketstack/package.json +1 -1
- package/connectors/matrix/README.md +1 -1
- package/connectors/matrix/package.json +1 -1
- package/connectors/mattermost/README.md +1 -1
- package/connectors/mattermost/package.json +1 -1
- package/connectors/mautic/README.md +1 -1
- package/connectors/mautic/package.json +1 -1
- package/connectors/mav/README.md +1 -1
- package/connectors/mav/package.json +1 -1
- package/connectors/maverick/README.md +1 -1
- package/connectors/maverick/package.json +1 -1
- package/connectors/mem/README.md +1 -1
- package/connectors/mem/package.json +1 -1
- package/connectors/messagebird/package.json +1 -1
- package/connectors/metabase/README.md +1 -1
- package/connectors/metabase/package.json +1 -1
- package/connectors/miro/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/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/netlify/package.json +1 -1
- package/connectors/okta/package.json +1 -1
- package/connectors/paddle/package.json +1 -1
- package/connectors/perplexity/package.json +1 -1
- package/connectors/pinterest/package.json +1 -1
- package/connectors/pipedrive/package.json +1 -1
- package/connectors/plaid/package.json +1 -1
- package/connectors/quickchart/README.md +2 -2
- package/connectors/quintadb/README.md +2 -2
- package/connectors/rabbitmq/README.md +2 -2
- package/connectors/radar/README.md +2 -2
- package/connectors/raindrop/README.md +2 -2
- package/connectors/rapid7insightvm/README.md +2 -2
- package/connectors/raventools/README.md +2 -2
- package/connectors/rawgvideogamesdatabase/README.md +2 -2
- package/connectors/rdstationcrm/README.md +2 -2
- package/connectors/readai/README.md +2 -2
- package/connectors/roboflow/package.json +1 -1
- package/connectors/runway/package.json +1 -1
- package/connectors/sendgrid/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/smartrecruiters/package.json +1 -1
- package/connectors/smtp2go/package.json +1 -1
- package/connectors/snowflake/package.json +1 -1
- package/connectors/sparkpost/package.json +1 -1
- package/connectors/split-in-batches/CLAUDE.md +1 -1
- package/connectors/split-in-batches/README.md +1 -1
- package/connectors/split-in-batches/src/api/client.test.ts +16 -17
- package/connectors/split-in-batches/src/api/client.ts +4 -3
- package/connectors/split-in-batches/src/cli/index.ts +1 -1
- package/connectors/split-io/package.json +1 -1
- package/connectors/split-io/src/api/client.test.ts +20 -0
- package/connectors/split-io/src/cli/index.ts +9 -9
- package/connectors/spreadsheet-file/.env.example +1 -1
- package/connectors/spreadsheet-file/CLAUDE.md +2 -2
- package/connectors/spreadsheet-file/README.md +3 -3
- package/connectors/spreadsheet-file/src/api/client.test.ts +8 -9
- package/connectors/spreadsheet-file/src/api/client.ts +4 -3
- package/connectors/spreadsheet-file/src/cli/index.ts +1 -1
- package/connectors/sprinklr/package.json +1 -1
- package/connectors/sprout-social/package.json +1 -1
- package/connectors/square/package.json +1 -1
- package/connectors/sse-trigger/.env.example +1 -1
- package/connectors/sse-trigger/CLAUDE.md +2 -2
- package/connectors/sse-trigger/README.md +1 -1
- package/connectors/sse-trigger/package.json +1 -1
- package/connectors/sse-trigger/src/api/client.test.ts +12 -8
- package/connectors/sse-trigger/src/api/client.ts +4 -3
- package/connectors/sse-trigger/src/api/index.ts +1 -1
- package/connectors/sse-trigger/src/cli/index.ts +1 -1
- package/connectors/sse-trigger/src/index.ts +1 -1
- package/connectors/stability-api-platform/AGENTS.md +2 -2
- package/connectors/stability-api-platform/CLAUDE.md +1 -1
- package/connectors/stability-api-platform/README.md +2 -2
- package/connectors/stability-api-platform/src/api/client.test.ts +17 -12
- package/connectors/stability-api-platform/src/api/client.ts +4 -3
- package/connectors/stability-api-platform/src/api/index.ts +0 -1
- package/connectors/stability-api-platform/src/cli/index.ts +1 -1
- package/connectors/stability-api-platform/src/index.ts +0 -1
- package/connectors/standout/package.json +1 -1
- package/connectors/statuspage/package.json +1 -1
- package/connectors/stop-and-error/.env.example +1 -1
- package/connectors/stop-and-error/CLAUDE.md +1 -1
- package/connectors/stop-and-error/README.md +1 -1
- package/connectors/stop-and-error/src/api/client.test.ts +12 -8
- package/connectors/stop-and-error/src/api/client.ts +4 -3
- package/connectors/stop-and-error/src/cli/index.ts +2 -2
- package/connectors/stoplight/package.json +1 -1
- package/connectors/stoplight-api-platform/package.json +1 -1
- package/connectors/strand-ai/CLAUDE.md +1 -1
- package/connectors/stripe-financial-connections/.env.example +1 -1
- package/connectors/stripe-financial-connections/CLAUDE.md +2 -2
- package/connectors/stripe-financial-connections/package.json +1 -1
- package/connectors/stripe-financial-connections/src/api/client.test.ts +34 -0
- package/connectors/stripe-financial-connections/src/api/client.ts +4 -3
- package/connectors/stripe-financial-connections/src/cli/index.ts +1 -1
- package/connectors/stripe-terminal/package.json +1 -1
- package/connectors/stytch/package.json +1 -1
- package/connectors/sucuri-api-platform/.env.example +1 -1
- package/connectors/sucuri-api-platform/CLAUDE.md +1 -1
- package/connectors/sucuri-api-platform/README.md +2 -2
- package/connectors/sucuri-api-platform/src/api/client.test.ts +9 -7
- package/connectors/sucuri-api-platform/src/api/client.ts +4 -3
- package/connectors/sucuri-api-platform/src/api/index.ts +1 -1
- package/connectors/sucuri-api-platform/src/cli/index.ts +1 -1
- package/connectors/sucuri-api-platform/src/index.ts +1 -1
- package/connectors/sumo-logic/package.json +1 -1
- package/connectors/supabase/package.json +1 -1
- package/connectors/supabase-api-platform/package.json +1 -1
- package/connectors/sysdig/package.json +1 -1
- package/connectors/tableau/package.json +1 -1
- package/connectors/takecareos/README.md +2 -2
- package/connectors/takecareos/package.json +1 -1
- package/connectors/telegram/src/api/bot.ts +20 -0
- package/connectors/telegram/src/api/client.ts +32 -0
- package/connectors/telegram/src/api/files.test.ts +103 -0
- package/connectors/telegram/src/api/index.ts +1 -0
- package/connectors/telegram/src/api/messages.test.ts +8 -2
- package/connectors/telegram/src/cli/files.test.ts +40 -0
- package/connectors/telegram/src/cli/files.ts +38 -0
- package/connectors/telegram/src/cli/index.ts +27 -30
- package/connectors/telegram/src/cli/updates.test.ts +176 -0
- package/connectors/telegram/src/cli/updates.ts +95 -0
- package/connectors/telegram/src/index.ts +1 -0
- package/connectors/telegram/src/types/index.ts +13 -0
- package/connectors/terraform-cloud/package.json +1 -1
- package/connectors/tettra-api-platform/CLAUDE.md +1 -1
- package/connectors/tettra-api-platform/README.md +2 -2
- package/connectors/tettra-api-platform/src/api/client.test.ts +7 -8
- package/connectors/tettra-api-platform/src/api/client.ts +4 -3
- package/connectors/tettra-api-platform/src/api/index.ts +1 -1
- package/connectors/tettra-api-platform/src/cli/index.ts +1 -1
- package/connectors/tettra-api-platform/src/index.ts +1 -1
- package/connectors/textit/package.json +1 -1
- package/connectors/thousandeyes/package.json +1 -1
- package/connectors/ticket-tailor/package.json +1 -1
- package/connectors/ticketsource/package.json +1 -1
- package/connectors/tiktokads/README.md +1 -1
- package/connectors/time-saved/package.json +1 -1
- package/connectors/tipalti/package.json +1 -1
- package/connectors/together-api-platform/.env.example +1 -1
- package/connectors/together-api-platform/CLAUDE.md +1 -1
- package/connectors/together-api-platform/README.md +1 -1
- package/connectors/together-api-platform/src/api/client.test.ts +11 -7
- package/connectors/together-api-platform/src/api/client.ts +4 -4
- package/connectors/together-api-platform/src/api/index.ts +1 -1
- package/connectors/together-api-platform/src/cli/index.ts +1 -1
- package/connectors/together-api-platform/src/index.ts +1 -1
- package/connectors/tomtom/AGENTS.md +1 -1
- package/connectors/totp/package.json +1 -1
- package/connectors/traverse/package.json +1 -1
- package/connectors/travo-ai/package.json +1 -1
- package/connectors/travo-real-estate/CLAUDE.md +1 -1
- package/connectors/travo-real-estate/README.md +1 -1
- package/connectors/travo-real-estate/src/api/client.test.ts +20 -16
- package/connectors/travo-real-estate/src/api/client.ts +4 -3
- package/connectors/travo-real-estate/src/utils/config.ts +2 -4
- package/connectors/tray-api-platform/CLAUDE.md +1 -1
- package/connectors/tray-api-platform/src/api/client.test.ts +17 -13
- package/connectors/tray-api-platform/src/api/client.ts +4 -3
- package/connectors/tray-api-platform/src/api/index.ts +1 -1
- package/connectors/tray-api-platform/src/cli/index.ts +1 -1
- package/connectors/tray-api-platform/src/index.ts +0 -1
- package/connectors/trigger-dev/package.json +1 -1
- package/connectors/trigger-dev-api-platform/package.json +1 -1
- package/connectors/turbot-pipes/package.json +1 -1
- package/connectors/turso/package.json +1 -1
- package/connectors/turso-api-platform/CLAUDE.md +1 -1
- package/connectors/turso-api-platform/README.md +2 -2
- package/connectors/turso-api-platform/package.json +1 -1
- package/connectors/turso-api-platform/src/api/client.test.ts +17 -13
- package/connectors/turso-api-platform/src/api/client.ts +4 -3
- package/connectors/turso-api-platform/src/cli/index.ts +2 -2
- package/connectors/twilio-api-platform/CLAUDE.md +1 -1
- package/connectors/twilio-api-platform/src/api/client.test.ts +11 -11
- package/connectors/twilio-api-platform/src/api/client.ts +4 -3
- package/connectors/twilio-api-platform/src/api/index.ts +1 -1
- package/connectors/twilio-api-platform/src/cli/index.ts +1 -1
- package/connectors/twilio-api-platform/src/index.ts +1 -1
- package/connectors/tyk-api-platform/.env.example +1 -1
- package/connectors/tyk-api-platform/CLAUDE.md +2 -2
- package/connectors/tyk-api-platform/README.md +1 -1
- package/connectors/tyk-api-platform/package.json +1 -1
- package/connectors/tyk-api-platform/src/api/client.test.ts +14 -15
- package/connectors/tyk-api-platform/src/api/client.ts +4 -3
- package/connectors/tyk-api-platform/src/api/index.ts +1 -1
- package/connectors/tyk-api-platform/src/cli/index.ts +1 -1
- package/connectors/tyk-api-platform/src/index.ts +1 -1
- package/connectors/umami/package.json +1 -1
- package/connectors/unifold/package.json +1 -1
- package/connectors/unione/package.json +1 -1
- package/connectors/uniprot/README.md +1 -1
- package/connectors/uniswap-api/package.json +1 -1
- package/connectors/ups/package.json +1 -1
- package/connectors/usereframe/package.json +1 -1
- package/connectors/vanta/package.json +1 -1
- package/connectors/vector-legal/.env.example +1 -1
- package/connectors/vector-legal/AGENTS.md +1 -1
- package/connectors/vector-legal/CLAUDE.md +1 -1
- package/connectors/vector-legal/README.md +1 -1
- package/connectors/vector-legal/src/api/client.test.ts +9 -5
- package/connectors/vector-legal/src/api/client.ts +4 -3
- package/connectors/vector-legal/src/api/index.ts +1 -1
- package/connectors/vector-legal/src/cli/index.ts +2 -2
- package/connectors/vector-legal/src/index.ts +0 -1
- package/connectors/vector-legal-api/CLAUDE.md +1 -1
- package/connectors/vector-legal-api/README.md +2 -2
- package/connectors/vector-legal-api/src/api/client.test.ts +12 -7
- package/connectors/vector-legal-api/src/api/client.ts +4 -3
- package/connectors/vector-legal-api/src/api/index.ts +1 -1
- package/connectors/vector-legal-api/src/cli/index.ts +1 -1
- package/connectors/vector-legal-api/src/index.ts +1 -2
- package/connectors/vela/package.json +1 -1
- package/connectors/velum-data-quality/.env.example +1 -1
- package/connectors/velum-data-quality/CLAUDE.md +1 -1
- package/connectors/velum-data-quality/src/api/client.test.ts +15 -16
- package/connectors/velum-data-quality/src/api/client.ts +4 -3
- package/connectors/velum-data-quality/src/api/index.ts +1 -1
- package/connectors/velum-data-quality/src/cli/index.ts +1 -1
- package/connectors/velum-data-quality/src/index.ts +0 -1
- package/connectors/velum-labs/package.json +1 -1
- package/connectors/vercel/package.json +1 -1
- package/connectors/vercel-api-platform/.env.example +1 -1
- package/connectors/vercel-api-platform/CLAUDE.md +2 -2
- package/connectors/vercel-api-platform/README.md +2 -2
- package/connectors/vercel-api-platform/src/api/client.test.ts +27 -6
- package/connectors/vercel-api-platform/src/api/client.ts +4 -3
- package/connectors/vercel-api-platform/src/api/index.ts +1 -1
- package/connectors/vercel-api-platform/src/cli/index.ts +2 -2
- package/connectors/vercel-api-platform/src/index.ts +0 -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/veriphone/README.md +2 -2
- package/connectors/vertex-ai/package.json +1 -1
- package/connectors/vidyard/package.json +1 -1
- package/connectors/vonage/package.json +1 -1
- package/connectors/voygr/package.json +1 -1
- package/connectors/wait/package.json +1 -1
- package/connectors/walmart-marketplace/package.json +1 -1
- package/connectors/wato/package.json +1 -1
- package/connectors/wave-accounting/CLAUDE.md +1 -1
- package/connectors/wave-accounting/package.json +1 -1
- package/connectors/wave-accounting/src/utils/auth.ts +1 -1
- package/connectors/wayco/package.json +1 -1
- package/connectors/weaviate-api-platform/CLAUDE.md +1 -1
- package/connectors/weaviate-api-platform/src/api/client.test.ts +32 -7
- package/connectors/weaviate-api-platform/src/api/client.ts +4 -3
- package/connectors/weaviate-api-platform/src/api/index.ts +1 -1
- package/connectors/weaviate-api-platform/src/cli/index.ts +1 -1
- package/connectors/weaviate-api-platform/src/index.ts +1 -1
- package/connectors/webpagetest/package.json +1 -1
- package/connectors/weezevent/package.json +1 -1
- package/connectors/wikipedia/src/api/client.ts +1 -1
- package/connectors/wildcard/package.json +1 -1
- package/connectors/windmill/package.json +1 -1
- package/connectors/wise/package.json +1 -1
- package/connectors/withai/package.json +1 -1
- package/connectors/wiz/CLAUDE.md +1 -1
- package/connectors/wiz/package.json +1 -1
- package/connectors/wordfence/package.json +1 -1
- package/connectors/wordfence-api-platform/package.json +1 -1
- package/connectors/workflow-trigger/.env.example +1 -1
- package/connectors/workflow-trigger/CLAUDE.md +1 -1
- package/connectors/workflow-trigger/README.md +1 -1
- package/connectors/workflow-trigger/src/api/client.test.ts +10 -6
- package/connectors/workflow-trigger/src/api/client.ts +4 -3
- package/connectors/workflow-trigger/src/cli/index.ts +1 -1
- package/connectors/workos/package.json +1 -1
- package/connectors/write-binary-file/CLAUDE.md +1 -1
- package/connectors/write-binary-file/README.md +1 -1
- package/connectors/write-binary-file/package.json +1 -1
- package/connectors/write-binary-file/src/api/client.test.ts +16 -12
- package/connectors/write-binary-file/src/api/client.ts +4 -3
- package/connectors/write-binary-file/src/api/index.ts +1 -1
- package/connectors/write-binary-file/src/index.ts +1 -1
- package/connectors/wubookratechecker/src/api/client.test.ts +34 -0
- package/connectors/wubookratechecker/src/api/client.ts +3 -1
- package/connectors/wubookratechecker/src/api/index.ts +1 -1
- package/connectors/wubookratechecker/src/types/index.ts +1 -1
- package/connectors/xai/.env.example +1 -1
- package/connectors/xai-api-platform/.env.example +1 -1
- package/connectors/xai-api-platform/CLAUDE.md +1 -1
- package/connectors/xai-api-platform/README.md +1 -1
- package/connectors/xai-api-platform/src/api/client.test.ts +34 -9
- package/connectors/xai-api-platform/src/api/client.ts +4 -3
- package/connectors/xai-api-platform/src/api/index.ts +1 -1
- package/connectors/xai-api-platform/src/cli/index.ts +1 -1
- package/connectors/xai-api-platform/src/index.ts +1 -1
- package/connectors/xai-api-platform/src/utils/config.ts +3 -4
- package/connectors/xai-grok/.env.example +1 -1
- package/connectors/xai-grok/src/api/client.test.ts +3 -3
- package/connectors/xai-grok/src/cli/index.ts +1 -1
- package/connectors/xai-grok/src/utils/config.ts +1 -1
- package/connectors/ynab/package.json +1 -1
- package/connectors/you-com/README.md +2 -2
- package/connectors/you-com/package.json +1 -1
- package/connectors/yousign/package.json +1 -1
- package/connectors/zapier-api-platform/CLAUDE.md +1 -1
- package/connectors/zapier-api-platform/README.md +1 -1
- package/connectors/zapier-api-platform/src/api/client.test.ts +19 -14
- package/connectors/zapier-api-platform/src/api/client.ts +4 -3
- package/connectors/zapier-api-platform/src/api/index.ts +1 -1
- package/connectors/zapier-api-platform/src/cli/index.ts +1 -1
- package/connectors/zapier-api-platform/src/index.ts +1 -1
- package/connectors/zendesk/.env.example +4 -4
- package/connectors/zendesk/CLAUDE.md +1 -3
- package/connectors/zendesk/Makefile +18 -5
- package/connectors/zendesk/README.md +3 -8
- package/connectors/zendesk/SCAFFOLD.md +6 -5
- package/connectors/zerosettle/package.json +1 -1
- package/connectors/zoho-bigin/CLAUDE.md +1 -1
- package/connectors/zoho-campaigns/package.json +1 -1
- package/connectors/zoho-sign/package.json +1 -1
- package/connectors/zoho-subscriptions/CLAUDE.md +1 -1
- package/connectors/zohoprojects/CLAUDE.md +1 -1
- package/connectors/zolvo/package.json +1 -1
- package/connectors/zoom-api/package.json +1 -1
- package/connectors/zymbly/README.md +2 -2
- package/connectors/zymbly/package.json +1 -1
- package/dashboard/dist/assets/index-8uoGZF7B.js +280 -0
- package/dashboard/dist/index.html +1 -1
- package/dist/db/locks.d.ts +1 -1
- package/dist/index.js +17 -15
- package/dist/lib/connector-resolver.d.ts +1 -1
- package/dist/lib/llm.d.ts +1 -1
- package/dist/lib/open-browser.d.ts +18 -0
- package/dist/lib/open-browser.test.d.ts +1 -0
- package/package.json +6 -4
- package/dashboard/dist/assets/index-DlEljRrW.js +0 -285
|
@@ -501,14 +501,14 @@ segmentsCmd
|
|
|
501
501
|
});
|
|
502
502
|
|
|
503
503
|
segmentsCmd
|
|
504
|
-
.command('keys <segmentName> <
|
|
504
|
+
.command('keys <segmentName> <environmentId>')
|
|
505
505
|
.description('List keys in a segment')
|
|
506
506
|
.option('--limit <limit>', 'Limit', parseInt)
|
|
507
507
|
.option('--offset <offset>', 'Offset', parseInt)
|
|
508
|
-
.action(async function(this: Command, segmentName: string,
|
|
508
|
+
.action(async function(this: Command, segmentName: string, environmentId: string, opts) {
|
|
509
509
|
try {
|
|
510
510
|
const client = getClient();
|
|
511
|
-
const result = await client.getSegmentKeys(segmentName,
|
|
511
|
+
const result = await client.getSegmentKeys(segmentName, environmentId, {
|
|
512
512
|
limit: opts.limit,
|
|
513
513
|
offset: opts.offset,
|
|
514
514
|
});
|
|
@@ -520,14 +520,14 @@ segmentsCmd
|
|
|
520
520
|
});
|
|
521
521
|
|
|
522
522
|
segmentsCmd
|
|
523
|
-
.command('add-keys <segmentName> <
|
|
523
|
+
.command('add-keys <segmentName> <environmentId>')
|
|
524
524
|
.description('Add keys to a segment')
|
|
525
525
|
.requiredOption('--keys <keys...>', 'Keys to add')
|
|
526
526
|
.option('--comment <comment>', 'Change comment')
|
|
527
|
-
.action(async function(this: Command, segmentName: string,
|
|
527
|
+
.action(async function(this: Command, segmentName: string, environmentId: string, opts) {
|
|
528
528
|
try {
|
|
529
529
|
const client = getClient();
|
|
530
|
-
const result = await client.addKeysToSegment(segmentName,
|
|
530
|
+
const result = await client.addKeysToSegment(segmentName, environmentId, opts.keys, opts.comment);
|
|
531
531
|
print(result, getFormat(this));
|
|
532
532
|
success(`Added ${opts.keys.length} key(s) to ${segmentName}`);
|
|
533
533
|
} catch (err) {
|
|
@@ -537,13 +537,13 @@ segmentsCmd
|
|
|
537
537
|
});
|
|
538
538
|
|
|
539
539
|
segmentsCmd
|
|
540
|
-
.command('remove-keys <segmentName> <
|
|
540
|
+
.command('remove-keys <segmentName> <environmentId>')
|
|
541
541
|
.description('Remove keys from a segment')
|
|
542
542
|
.requiredOption('--keys <keys...>', 'Keys to remove')
|
|
543
|
-
.action(async function(this: Command, segmentName: string,
|
|
543
|
+
.action(async function(this: Command, segmentName: string, environmentId: string, opts) {
|
|
544
544
|
try {
|
|
545
545
|
const client = getClient();
|
|
546
|
-
await client.removeKeysFromSegment(segmentName,
|
|
546
|
+
await client.removeKeysFromSegment(segmentName, environmentId, opts.keys);
|
|
547
547
|
success(`Removed ${opts.keys.length} key(s) from ${segmentName}`);
|
|
548
548
|
} catch (err) {
|
|
549
549
|
error(String(err));
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# SpreadsheetFile API credentials (Bearer token)
|
|
2
2
|
SPREADSHEET_FILE_API_KEY=your-api-key-here
|
|
3
3
|
|
|
4
|
-
# Optional: override API base URL (default
|
|
4
|
+
# Optional: override API base URL (no default - must be configured)
|
|
5
5
|
# SPREADSHEET_FILE_BASE_URL=https://api.spreadsheet-file.com/v1
|
|
@@ -33,7 +33,7 @@ Environment variables:
|
|
|
33
33
|
|
|
34
34
|
## API Details
|
|
35
35
|
|
|
36
|
-
- **Base URL**:
|
|
36
|
+
- **Base URL**: no default (must be configured)
|
|
37
37
|
- **Auth**: `Authorization: Bearer <api_key>`
|
|
38
38
|
- **Endpoints**:
|
|
39
39
|
- `GET /files` - List files
|
|
@@ -75,7 +75,7 @@ Profile JSON structure:
|
|
|
75
75
|
```json
|
|
76
76
|
{
|
|
77
77
|
"apiKey": "your-api-key",
|
|
78
|
-
"baseUrl": "
|
|
78
|
+
"baseUrl": "configured.example.com/v1"
|
|
79
79
|
}
|
|
80
80
|
```
|
|
81
81
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# connect-spreadsheet-file
|
|
2
2
|
|
|
3
|
-
TypeScript connector for the [SpreadsheetFile API](
|
|
3
|
+
TypeScript connector for the [SpreadsheetFile API](configured.example.com/v1) — spreadsheet workflow node operations.
|
|
4
4
|
|
|
5
5
|
## Features
|
|
6
6
|
|
|
@@ -26,7 +26,7 @@ Set credentials via environment variables or CLI profile:
|
|
|
26
26
|
```bash
|
|
27
27
|
export SPREADSHEET_FILE_API_KEY=your-api-key
|
|
28
28
|
# optional
|
|
29
|
-
export SPREADSHEET_FILE_BASE_URL=https://
|
|
29
|
+
export SPREADSHEET_FILE_BASE_URL=https://configured.example.com/v1
|
|
30
30
|
```
|
|
31
31
|
|
|
32
32
|
Or use the CLI:
|
|
@@ -71,7 +71,7 @@ const file = await client.files.get('file-id');
|
|
|
71
71
|
|
|
72
72
|
## API
|
|
73
73
|
|
|
74
|
-
- Base URL: `
|
|
74
|
+
- Base URL: `configured.example.com/v1`
|
|
75
75
|
- Auth: `Authorization: Bearer <api_key>`
|
|
76
76
|
|
|
77
77
|
## License
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { describe, test, expect, mock, beforeEach, afterEach } from 'bun:test';
|
|
2
|
-
import { ConnectorClient
|
|
2
|
+
import { ConnectorClient } from './client';
|
|
3
3
|
import { ConnectorApiError } from '../types';
|
|
4
4
|
|
|
5
5
|
describe('ConnectorClient', () => {
|
|
6
6
|
const mockConfig = {
|
|
7
7
|
apiKey: 'test-api-key-12345',
|
|
8
|
-
baseUrl: 'https://
|
|
8
|
+
baseUrl: 'https://configured.example.com/v1',
|
|
9
9
|
};
|
|
10
10
|
|
|
11
11
|
describe('constructor', () => {
|
|
@@ -18,10 +18,9 @@ describe('ConnectorClient', () => {
|
|
|
18
18
|
expect(client).toBeInstanceOf(ConnectorClient);
|
|
19
19
|
});
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
});
|
|
21
|
+
test('refuses to send without a configured base URL (no default endpoint)', () => {
|
|
22
|
+
expect(() => new ConnectorClient({ apiKey: 'test-key' })).toThrow(/baseUrl/);
|
|
23
|
+
});
|
|
25
24
|
});
|
|
26
25
|
|
|
27
26
|
describe('getApiKeyPreview', () => {
|
|
@@ -31,7 +30,7 @@ describe('ConnectorClient', () => {
|
|
|
31
30
|
});
|
|
32
31
|
|
|
33
32
|
test('returns *** for short keys', () => {
|
|
34
|
-
const client = new ConnectorClient({ apiKey: 'short' });
|
|
33
|
+
const client = new ConnectorClient({ apiKey: 'short', baseUrl: 'https://configured.example.com/v1' });
|
|
35
34
|
expect(client.getApiKeyPreview()).toBe('***');
|
|
36
35
|
});
|
|
37
36
|
});
|
|
@@ -64,7 +63,7 @@ describe('ConnectorClient', () => {
|
|
|
64
63
|
|
|
65
64
|
expect(global.fetch).toHaveBeenCalledTimes(1);
|
|
66
65
|
const [url, options] = (global.fetch as ReturnType<typeof mock>).mock.calls[0];
|
|
67
|
-
expect(url).toBe('https://
|
|
66
|
+
expect(url).toBe('https://configured.example.com/v1/files');
|
|
68
67
|
expect(options.method).toBe('GET');
|
|
69
68
|
expect(options.headers.Authorization).toBe('Bearer test-api-key-12345');
|
|
70
69
|
expect(options.headers.Accept).toBe('application/json');
|
|
@@ -101,7 +100,7 @@ describe('ConnectorClient', () => {
|
|
|
101
100
|
await client.get('/files/file%2Fwith%2Fslash');
|
|
102
101
|
|
|
103
102
|
const [url] = (global.fetch as ReturnType<typeof mock>).mock.calls[0];
|
|
104
|
-
expect(url).toBe('https://
|
|
103
|
+
expect(url).toBe('https://configured.example.com/v1/files/file%2Fwith%2Fslash');
|
|
105
104
|
});
|
|
106
105
|
|
|
107
106
|
test('post() makes POST request with JSON body', async () => {
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import type { ConnectorConfig, OutputFormat } from '../types';
|
|
2
2
|
import { ConnectorApiError, parseApiError } from '../types';
|
|
3
3
|
|
|
4
|
-
export const DEFAULT_BASE_URL = 'https://api.spreadsheet-file.com/v1';
|
|
5
|
-
|
|
6
4
|
export interface RequestOptions {
|
|
7
5
|
method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';
|
|
8
6
|
params?: Record<string, string | number | boolean | undefined>;
|
|
@@ -23,7 +21,10 @@ export class ConnectorClient {
|
|
|
23
21
|
throw new Error('SpreadsheetFile API key is required');
|
|
24
22
|
}
|
|
25
23
|
this.apiKey = key;
|
|
26
|
-
|
|
24
|
+
if (!config.baseUrl) {
|
|
25
|
+
throw new Error('baseUrl is required: no default endpoint is configured; set baseUrl (profile, config, or the connector BASE_URL environment variable)');
|
|
26
|
+
}
|
|
27
|
+
this.baseUrl = config.baseUrl;
|
|
27
28
|
}
|
|
28
29
|
|
|
29
30
|
private buildUrl(path: string, params?: Record<string, string | number | boolean | undefined>): string {
|
|
@@ -199,7 +199,7 @@ configCmd
|
|
|
199
199
|
console.log(chalk.bold(`Active Profile: ${profileName}`));
|
|
200
200
|
info(`Config directory: ${getConfigDir()}`);
|
|
201
201
|
info(`API Key: ${apiKey ? `${apiKey.substring(0, 8)}...` : chalk.gray('not set')}`);
|
|
202
|
-
info(`Base URL: ${baseUrl || chalk.gray('
|
|
202
|
+
info(`Base URL: ${baseUrl || chalk.gray('none configured')}`);
|
|
203
203
|
});
|
|
204
204
|
|
|
205
205
|
configCmd
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# SseTrigger API credentials
|
|
2
2
|
SSE_TRIGGER_API_KEY=your-api-key-here
|
|
3
3
|
|
|
4
|
-
# Optional: override API base URL (default
|
|
4
|
+
# Optional: override API base URL (no default - must be configured)
|
|
5
5
|
# SSE_TRIGGER_BASE_URL=https://api.sse-trigger.com/v1
|
|
@@ -24,7 +24,7 @@ bun run dev raw request --path /streams
|
|
|
24
24
|
|
|
25
25
|
## API Details
|
|
26
26
|
|
|
27
|
-
- **Base URL**:
|
|
27
|
+
- **Base URL**: no default (must be configured)
|
|
28
28
|
- **Auth**: Bearer token (`Authorization: Bearer <api_key>`)
|
|
29
29
|
- **Endpoints**:
|
|
30
30
|
- `GET /streams` — list streams
|
|
@@ -54,7 +54,7 @@ Profile JSON:
|
|
|
54
54
|
```json
|
|
55
55
|
{
|
|
56
56
|
"apiKey": "your-key",
|
|
57
|
-
"baseUrl": "
|
|
57
|
+
"baseUrl": "configured.example.com/v1"
|
|
58
58
|
}
|
|
59
59
|
```
|
|
60
60
|
|
|
@@ -24,7 +24,7 @@ bun run dev streams list
|
|
|
24
24
|
| Variable | Description |
|
|
25
25
|
|----------|-------------|
|
|
26
26
|
| `SSE_TRIGGER_API_KEY` | API key (overrides profile) |
|
|
27
|
-
| `SSE_TRIGGER_BASE_URL` | Override base URL (default
|
|
27
|
+
| `SSE_TRIGGER_BASE_URL` | Override base URL (no default - must be configured) |
|
|
28
28
|
|
|
29
29
|
## CLI Commands
|
|
30
30
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { afterEach, describe, expect, test } from 'bun:test';
|
|
2
|
+
import { SseTriggerClient } from './client';
|
|
2
3
|
import { SseTrigger } from './index';
|
|
3
|
-
import { DEFAULT_BASE_URL } from './client';
|
|
4
4
|
|
|
5
5
|
const realFetch = globalThis.fetch;
|
|
6
6
|
|
|
@@ -42,26 +42,26 @@ afterEach(() => {
|
|
|
42
42
|
describe('SseTriggerClient', () => {
|
|
43
43
|
test('listStreams sends Bearer auth to /streams', async () => {
|
|
44
44
|
const recorded = installFetch(() => ({ streams: [] }));
|
|
45
|
-
const client = new SseTrigger({ apiKey: 'sse-trigger-key' });
|
|
45
|
+
const client = new SseTrigger({ apiKey: 'sse-trigger-key', baseUrl: 'https://configured.example.com/v1' });
|
|
46
46
|
await client.listStreams();
|
|
47
|
-
expect(recorded[0].url).toBe(
|
|
47
|
+
expect(recorded[0].url).toBe(`https://configured.example.com/v1/streams`);
|
|
48
48
|
expect(recorded[0].method).toBe('GET');
|
|
49
49
|
expect(new Headers(recorded[0].headers).get('Authorization')).toBe('Bearer sse-trigger-key');
|
|
50
50
|
});
|
|
51
51
|
|
|
52
52
|
test('getStream encodes stream id in URL path', async () => {
|
|
53
53
|
const recorded = installFetch(() => ({ id: 'item-1' }));
|
|
54
|
-
const client = new SseTrigger({ apiKey: 'sse-trigger-key' });
|
|
54
|
+
const client = new SseTrigger({ apiKey: 'sse-trigger-key', baseUrl: 'https://configured.example.com/v1' });
|
|
55
55
|
await client.getStream('item-1');
|
|
56
|
-
expect(recorded[0].url).toBe(
|
|
56
|
+
expect(recorded[0].url).toBe(`https://configured.example.com/v1/streams/item-1`);
|
|
57
57
|
expect(new Headers(recorded[0].headers).get('Authorization')).toBe('Bearer sse-trigger-key');
|
|
58
58
|
});
|
|
59
59
|
|
|
60
60
|
test('createStream POSTs JSON body to /streams', async () => {
|
|
61
61
|
const recorded = installFetch(() => ({ id: 'new-stream' }));
|
|
62
|
-
const client = new SseTrigger({ apiKey: 'sse-trigger-key' });
|
|
62
|
+
const client = new SseTrigger({ apiKey: 'sse-trigger-key', baseUrl: 'https://configured.example.com/v1' });
|
|
63
63
|
await client.createStream({ name: 'workflow' });
|
|
64
|
-
expect(recorded[0].url).toBe(
|
|
64
|
+
expect(recorded[0].url).toBe(`https://configured.example.com/v1/streams`);
|
|
65
65
|
expect(recorded[0].method).toBe('POST');
|
|
66
66
|
expect(JSON.parse(recorded[0].body ?? '{}')).toEqual({ name: 'workflow' });
|
|
67
67
|
});
|
|
@@ -74,6 +74,10 @@ describe('SseTriggerClient', () => {
|
|
|
74
74
|
});
|
|
75
75
|
|
|
76
76
|
test('requires API key', () => {
|
|
77
|
-
expect(() => new SseTrigger({ apiKey: '' })).toThrow('API key is required');
|
|
77
|
+
expect(() => new SseTrigger({ apiKey: '', baseUrl: 'https://configured.example.com/v1' })).toThrow('API key is required');
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
test('refuses to send without a configured base URL (no default endpoint)', () => {
|
|
81
|
+
expect(() => new SseTriggerClient({ apiKey: 'test-key' })).toThrow(/baseUrl/);
|
|
78
82
|
});
|
|
79
83
|
});
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import type { SseTriggerConfig } from '../types';
|
|
2
2
|
import { SseTriggerApiError, parseApiError } from '../types';
|
|
3
3
|
|
|
4
|
-
export const DEFAULT_BASE_URL = 'https://api.sse-trigger.com/v1';
|
|
5
|
-
|
|
6
4
|
export interface RequestOptions {
|
|
7
5
|
method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';
|
|
8
6
|
params?: Record<string, string | number | boolean | undefined>;
|
|
@@ -21,7 +19,10 @@ export class SseTriggerClient {
|
|
|
21
19
|
throw new Error('API key is required');
|
|
22
20
|
}
|
|
23
21
|
this.apiKey = config.apiKey;
|
|
24
|
-
|
|
22
|
+
if (!config.baseUrl) {
|
|
23
|
+
throw new Error('baseUrl is required: no default endpoint is configured; set baseUrl (profile, config, or the connector BASE_URL environment variable)');
|
|
24
|
+
}
|
|
25
|
+
this.baseUrl = config.baseUrl.replace(/\/$/, '');
|
|
25
26
|
}
|
|
26
27
|
|
|
27
28
|
private buildUrl(path: string, params?: Record<string, string | number | boolean | undefined>): string {
|
|
@@ -63,7 +63,7 @@ export class SseTrigger {
|
|
|
63
63
|
}
|
|
64
64
|
}
|
|
65
65
|
|
|
66
|
-
export { SseTriggerClient
|
|
66
|
+
export { SseTriggerClient } from './client';
|
|
67
67
|
export { StreamsApi } from './streams';
|
|
68
68
|
export { EventsApi } from './events';
|
|
69
69
|
export { SearchApi } from './search';
|
|
@@ -173,7 +173,7 @@ configCmd.command('show').description('Show current configuration').action(() =>
|
|
|
173
173
|
console.log(chalk.bold(`Active Profile: ${profileName}`));
|
|
174
174
|
info(`Config directory: ${getConfigDir()}`);
|
|
175
175
|
info(`API Key: ${apiKey ? `${apiKey.substring(0, 8)}...` : chalk.gray('not set')}`);
|
|
176
|
-
info(`Base URL: ${baseUrl || chalk.gray('
|
|
176
|
+
info(`Base URL: ${baseUrl || chalk.gray('none configured')}`);
|
|
177
177
|
});
|
|
178
178
|
|
|
179
179
|
configCmd.command('clear').description('Clear configuration for active profile').action(() => {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# AGENTS.md
|
|
2
2
|
|
|
3
|
-
Stability Api Platform connector for
|
|
3
|
+
Stability Api Platform connector for the connectors monorepo.
|
|
4
4
|
|
|
5
5
|
## Auth
|
|
6
6
|
|
|
@@ -8,7 +8,7 @@ Bearer API key (`STABILITY_API_PLATFORM_API_KEY`). Dashboard auth type: apikey/b
|
|
|
8
8
|
|
|
9
9
|
## Endpoints
|
|
10
10
|
|
|
11
|
-
Base URL:
|
|
11
|
+
Base URL: no default (must be configured)
|
|
12
12
|
|
|
13
13
|
Operations: list/create/get items, list events, search, raw request.
|
|
14
14
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# connect-stability-api-platform
|
|
2
2
|
|
|
3
|
-
TypeScript connector for the [Stability Api Platform](
|
|
3
|
+
TypeScript connector for the [Stability Api Platform](configured.example.com/v1) REST API — items, events, search, and raw API access.
|
|
4
4
|
|
|
5
5
|
## Install
|
|
6
6
|
|
|
@@ -32,7 +32,7 @@ const items = await client.listItems();
|
|
|
32
32
|
| Variable | Description |
|
|
33
33
|
|----------|-------------|
|
|
34
34
|
| `STABILITY_API_PLATFORM_API_KEY` | Bearer API key |
|
|
35
|
-
| `STABILITY_API_PLATFORM_BASE_URL` | Optional base URL override (default
|
|
35
|
+
| `STABILITY_API_PLATFORM_BASE_URL` | Optional base URL override (no default - must be configured) |
|
|
36
36
|
|
|
37
37
|
## Configuration
|
|
38
38
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { afterEach, describe, expect, test } from 'bun:test';
|
|
2
|
-
import {
|
|
2
|
+
import { ConnectorClient } from './client';
|
|
3
|
+
import { StabilityApiPlatform } from './index';
|
|
3
4
|
|
|
4
5
|
const realFetch = globalThis.fetch;
|
|
5
6
|
|
|
@@ -45,60 +46,60 @@ afterEach(() => {
|
|
|
45
46
|
|
|
46
47
|
describe('StabilityApiPlatform client', () => {
|
|
47
48
|
test('requires api key', () => {
|
|
48
|
-
expect(() => new StabilityApiPlatform({ apiKey: '' })).toThrow('API key is required');
|
|
49
|
+
expect(() => new StabilityApiPlatform({ apiKey: '', baseUrl: 'https://configured.example.com/v1' })).toThrow('API key is required');
|
|
49
50
|
});
|
|
50
51
|
|
|
51
52
|
test('listItems sends bearer auth to /v1/items', async () => {
|
|
52
53
|
const recorded = installFetch();
|
|
53
|
-
const client = new StabilityApiPlatform({ apiKey: 'stability-api-platform-key' });
|
|
54
|
+
const client = new StabilityApiPlatform({ apiKey: 'stability-api-platform-key', baseUrl: 'https://configured.example.com/v1' });
|
|
54
55
|
|
|
55
56
|
await client.listItems();
|
|
56
57
|
|
|
57
58
|
expect(recorded).toHaveLength(1);
|
|
58
|
-
expect(recorded[0].url).toBe(
|
|
59
|
+
expect(recorded[0].url).toBe(`https://configured.example.com/v1/items`);
|
|
59
60
|
expect(recorded[0].method).toBe('GET');
|
|
60
61
|
expect(recorded[0].headers.get('Authorization')).toBe('Bearer stability-api-platform-key');
|
|
61
62
|
});
|
|
62
63
|
|
|
63
64
|
test('getItem encodes item id in URL path', async () => {
|
|
64
65
|
const recorded = installFetch();
|
|
65
|
-
const client = new StabilityApiPlatform({ apiKey: 'stability-api-platform-key' });
|
|
66
|
+
const client = new StabilityApiPlatform({ apiKey: 'stability-api-platform-key', baseUrl: 'https://configured.example.com/v1' });
|
|
66
67
|
|
|
67
68
|
await client.getItem('item-1');
|
|
68
69
|
|
|
69
70
|
expect(recorded).toHaveLength(1);
|
|
70
|
-
expect(recorded[0].url).toBe(
|
|
71
|
+
expect(recorded[0].url).toBe(`https://configured.example.com/v1/items/item-1`);
|
|
71
72
|
expect(recorded[0].headers.get('Authorization')).toBe('Bearer stability-api-platform-key');
|
|
72
73
|
});
|
|
73
74
|
|
|
74
75
|
test('createItem POSTs JSON body to /items', async () => {
|
|
75
76
|
const recorded = installFetch();
|
|
76
|
-
const client = new StabilityApiPlatform({ apiKey: 'test-key' });
|
|
77
|
+
const client = new StabilityApiPlatform({ apiKey: 'test-key', baseUrl: 'https://configured.example.com/v1' });
|
|
77
78
|
|
|
78
79
|
await client.createItem({ name: 'widget' });
|
|
79
80
|
|
|
80
|
-
expect(recorded[0].url).toBe(
|
|
81
|
+
expect(recorded[0].url).toBe(`https://configured.example.com/v1/items`);
|
|
81
82
|
expect(recorded[0].method).toBe('POST');
|
|
82
83
|
expect(JSON.parse(recorded[0].body!)).toEqual({ name: 'widget' });
|
|
83
84
|
});
|
|
84
85
|
|
|
85
86
|
test('listEvents GETs /events', async () => {
|
|
86
87
|
const recorded = installFetch();
|
|
87
|
-
const client = new StabilityApiPlatform({ apiKey: 'test-key' });
|
|
88
|
+
const client = new StabilityApiPlatform({ apiKey: 'test-key', baseUrl: 'https://configured.example.com/v1' });
|
|
88
89
|
|
|
89
90
|
await client.listEvents({ limit: 5 });
|
|
90
91
|
|
|
91
|
-
expect(recorded[0].url).toBe(
|
|
92
|
+
expect(recorded[0].url).toBe(`https://configured.example.com/v1/events?limit=5`);
|
|
92
93
|
expect(recorded[0].method).toBe('GET');
|
|
93
94
|
});
|
|
94
95
|
|
|
95
96
|
test('search POSTs to /search', async () => {
|
|
96
97
|
const recorded = installFetch();
|
|
97
|
-
const client = new StabilityApiPlatform({ apiKey: 'test-key' });
|
|
98
|
+
const client = new StabilityApiPlatform({ apiKey: 'test-key', baseUrl: 'https://configured.example.com/v1' });
|
|
98
99
|
|
|
99
100
|
await client.search({ q: 'hello' });
|
|
100
101
|
|
|
101
|
-
expect(recorded[0].url).toBe(
|
|
102
|
+
expect(recorded[0].url).toBe(`https://configured.example.com/v1/search`);
|
|
102
103
|
expect(recorded[0].method).toBe('POST');
|
|
103
104
|
expect(JSON.parse(recorded[0].body!)).toEqual({ q: 'hello' });
|
|
104
105
|
});
|
|
@@ -121,4 +122,8 @@ describe('StabilityApiPlatform client', () => {
|
|
|
121
122
|
|
|
122
123
|
if (original) process.env.STABILITY_API_PLATFORM_API_KEY = original;
|
|
123
124
|
});
|
|
125
|
+
|
|
126
|
+
test('refuses to send without a configured base URL (no default endpoint)', () => {
|
|
127
|
+
expect(() => new ConnectorClient({ apiKey: 'test-key' })).toThrow(/baseUrl/);
|
|
128
|
+
});
|
|
124
129
|
});
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import type { ConnectorConfig, ListQueryParams, RawRequestOptions } from '../types';
|
|
2
2
|
import { ConnectorApiError } from '../types';
|
|
3
3
|
|
|
4
|
-
export const DEFAULT_BASE_URL = 'https://api.stabilityapiplatform.com/v1';
|
|
5
|
-
|
|
6
4
|
export interface RequestOptions {
|
|
7
5
|
method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';
|
|
8
6
|
params?: ListQueryParams;
|
|
@@ -23,7 +21,10 @@ export class ConnectorClient {
|
|
|
23
21
|
throw new Error('API key is required');
|
|
24
22
|
}
|
|
25
23
|
this.apiKey = config.apiKey;
|
|
26
|
-
|
|
24
|
+
if (!config.baseUrl) {
|
|
25
|
+
throw new Error('baseUrl is required: no default endpoint is configured; set baseUrl (profile, config, or the connector BASE_URL environment variable)');
|
|
26
|
+
}
|
|
27
|
+
this.baseUrl = config.baseUrl.replace(/\/+$/, '');
|
|
27
28
|
}
|
|
28
29
|
|
|
29
30
|
private buildUrl(path: string, params?: ListQueryParams): string {
|
|
@@ -191,7 +191,7 @@ configCmd
|
|
|
191
191
|
console.log(chalk.bold(`Active Profile: ${profileName}`));
|
|
192
192
|
info(`Config directory: ${getConfigDir()}`);
|
|
193
193
|
info(`API Key: ${apiKey ? `${apiKey.substring(0, 8)}...` : chalk.gray('not set')}`);
|
|
194
|
-
info(`Base URL: ${baseUrl || chalk.gray('
|
|
194
|
+
info(`Base URL: ${baseUrl || chalk.gray('none configured')}`);
|
|
195
195
|
});
|
|
196
196
|
|
|
197
197
|
configCmd
|
|
@@ -31,7 +31,7 @@ Credentials can be set via:
|
|
|
31
31
|
- Profile configuration: `stop-and-error config set-key <key>`
|
|
32
32
|
|
|
33
33
|
Optional base URL override:
|
|
34
|
-
- `STOP_AND_ERROR_BASE_URL` (default
|
|
34
|
+
- `STOP_AND_ERROR_BASE_URL` (no default - must be configured)
|
|
35
35
|
|
|
36
36
|
## API Endpoints
|
|
37
37
|
|
|
@@ -15,7 +15,7 @@ Set credentials via environment variables or CLI profile:
|
|
|
15
15
|
```bash
|
|
16
16
|
export STOP_AND_ERROR_API_KEY=your-api-key
|
|
17
17
|
# optional
|
|
18
|
-
export STOP_AND_ERROR_BASE_URL=https://
|
|
18
|
+
export STOP_AND_ERROR_BASE_URL=https://configured.example.com/v1
|
|
19
19
|
```
|
|
20
20
|
|
|
21
21
|
Or use the CLI:
|