@hasna/connectors 0.2.3 → 0.2.5
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 +5 -3
- package/bin/index.js +1363 -48
- package/bin/mcp.js +161 -6
- package/bin/serve.js +379 -9
- package/connectors/connect-anthropic/AGENTS.md +1 -1
- package/connectors/connect-anthropic/CLAUDE.md +1 -1
- package/connectors/connect-anthropic/GEMINI.md +1 -1
- package/connectors/connect-anthropic/README.md +2 -2
- package/connectors/connect-anthropic/src/utils/config.ts +2 -2
- package/connectors/connect-aws/AGENTS.md +2 -2
- package/connectors/connect-aws/CLAUDE.md +2 -2
- package/connectors/connect-aws/GEMINI.md +2 -2
- package/connectors/connect-aws/README.md +2 -2
- package/connectors/connect-aws/src/utils/config.ts +2 -2
- package/connectors/connect-brandsight/AGENTS.md +2 -2
- package/connectors/connect-brandsight/CLAUDE.md +2 -2
- package/connectors/connect-brandsight/GEMINI.md +2 -2
- package/connectors/connect-brandsight/README.md +3 -3
- package/connectors/connect-brandsight/src/utils/config.ts +1 -1
- package/connectors/connect-brandsight/src/utils/contacts.ts +1 -1
- package/connectors/connect-cloudflare/AGENTS.md +1 -1
- package/connectors/connect-cloudflare/CLAUDE.md +1 -1
- package/connectors/connect-cloudflare/GEMINI.md +1 -1
- package/connectors/connect-cloudflare/README.md +2 -2
- package/connectors/connect-cloudflare/src/utils/config.ts +2 -2
- package/connectors/connect-discord/AGENTS.md +2 -2
- package/connectors/connect-discord/CLAUDE.md +2 -2
- package/connectors/connect-discord/GEMINI.md +2 -2
- package/connectors/connect-discord/README.md +2 -2
- package/connectors/connect-discord/src/utils/config.ts +2 -2
- package/connectors/connect-docker/AGENTS.md +2 -2
- package/connectors/connect-docker/CLAUDE.md +2 -2
- package/connectors/connect-docker/GEMINI.md +2 -2
- package/connectors/connect-docker/README.md +2 -2
- package/connectors/connect-docker/src/utils/config.ts +2 -2
- package/connectors/connect-e2b/AGENTS.md +1 -1
- package/connectors/connect-e2b/CLAUDE.md +1 -1
- package/connectors/connect-e2b/GEMINI.md +1 -1
- package/connectors/connect-e2b/README.md +2 -2
- package/connectors/connect-e2b/src/utils/config.ts +2 -2
- package/connectors/connect-elevenlabs/AGENTS.md +1 -1
- package/connectors/connect-elevenlabs/CLAUDE.md +1 -1
- package/connectors/connect-elevenlabs/GEMINI.md +1 -1
- package/connectors/connect-elevenlabs/README.md +2 -2
- package/connectors/connect-elevenlabs/src/utils/config.ts +2 -2
- package/connectors/connect-exa/AGENTS.md +1 -1
- package/connectors/connect-exa/CLAUDE.md +1 -1
- package/connectors/connect-exa/GEMINI.md +1 -1
- package/connectors/connect-exa/README.md +2 -2
- package/connectors/connect-exa/src/utils/config.ts +2 -2
- package/connectors/connect-figma/AGENTS.md +2 -2
- package/connectors/connect-figma/CLAUDE.md +2 -2
- package/connectors/connect-figma/GEMINI.md +2 -2
- package/connectors/connect-figma/README.md +2 -2
- package/connectors/connect-figma/src/utils/config.ts +2 -2
- package/connectors/connect-firecrawl/AGENTS.md +1 -1
- package/connectors/connect-firecrawl/CLAUDE.md +1 -1
- package/connectors/connect-firecrawl/GEMINI.md +1 -1
- package/connectors/connect-firecrawl/README.md +2 -2
- package/connectors/connect-firecrawl/src/utils/config.ts +2 -2
- package/connectors/connect-github/AGENTS.md +2 -2
- package/connectors/connect-github/CLAUDE.md +2 -2
- package/connectors/connect-github/GEMINI.md +2 -2
- package/connectors/connect-github/README.md +2 -2
- package/connectors/connect-github/src/utils/config.ts +2 -2
- package/connectors/connect-gmail/AGENTS.md +2 -2
- package/connectors/connect-gmail/CLAUDE.md +2 -2
- package/connectors/connect-gmail/GEMINI.md +2 -2
- package/connectors/connect-gmail/README.md +2 -2
- package/connectors/connect-gmail/src/utils/config.ts +2 -2
- package/connectors/connect-google/AGENTS.md +1 -1
- package/connectors/connect-google/CLAUDE.md +1 -1
- package/connectors/connect-google/GEMINI.md +1 -1
- package/connectors/connect-google/README.md +2 -2
- package/connectors/connect-google/src/utils/config.ts +2 -2
- package/connectors/connect-googlecalendar/AGENTS.md +2 -2
- package/connectors/connect-googlecalendar/CLAUDE.md +2 -2
- package/connectors/connect-googlecalendar/GEMINI.md +2 -2
- package/connectors/connect-googlecalendar/README.md +2 -2
- package/connectors/connect-googlecalendar/src/utils/config.ts +2 -2
- package/connectors/connect-googlecloud/AGENTS.md +2 -2
- package/connectors/connect-googlecloud/CLAUDE.md +2 -2
- package/connectors/connect-googlecloud/GEMINI.md +2 -2
- package/connectors/connect-googlecloud/README.md +2 -2
- package/connectors/connect-googlecloud/src/utils/config.ts +2 -2
- package/connectors/connect-googlecontacts/AGENTS.md +4 -4
- package/connectors/connect-googlecontacts/CLAUDE.md +4 -4
- package/connectors/connect-googlecontacts/GEMINI.md +4 -4
- package/connectors/connect-googlecontacts/README.md +2 -2
- package/connectors/connect-googlecontacts/src/utils/config.ts +2 -2
- package/connectors/connect-googledocs/AGENTS.md +1 -1
- package/connectors/connect-googledocs/CLAUDE.md +1 -1
- package/connectors/connect-googledocs/GEMINI.md +1 -1
- package/connectors/connect-googledocs/README.md +2 -2
- package/connectors/connect-googledocs/src/utils/config.ts +2 -2
- package/connectors/connect-googledrive/AGENTS.md +1 -1
- package/connectors/connect-googledrive/CLAUDE.md +6 -6
- package/connectors/connect-googledrive/GEMINI.md +1 -1
- package/connectors/connect-googledrive/README.md +2 -2
- package/connectors/connect-googledrive/src/utils/config.ts +2 -2
- package/connectors/connect-googlegemini/AGENTS.md +2 -2
- package/connectors/connect-googlegemini/CLAUDE.md +2 -2
- package/connectors/connect-googlegemini/GEMINI.md +2 -2
- package/connectors/connect-googlegemini/README.md +2 -2
- package/connectors/connect-googlegemini/src/utils/config.ts +1 -1
- package/connectors/connect-googlemaps/AGENTS.md +1 -1
- package/connectors/connect-googlemaps/CLAUDE.md +1 -1
- package/connectors/connect-googlemaps/GEMINI.md +1 -1
- package/connectors/connect-googlemaps/README.md +2 -2
- package/connectors/connect-googlemaps/src/utils/config.ts +1 -1
- package/connectors/connect-googlesheets/AGENTS.md +1 -1
- package/connectors/connect-googlesheets/CLAUDE.md +1 -1
- package/connectors/connect-googlesheets/GEMINI.md +1 -1
- package/connectors/connect-googlesheets/README.md +2 -2
- package/connectors/connect-googlesheets/src/utils/config.ts +2 -2
- package/connectors/connect-googletasks/AGENTS.md +1 -1
- package/connectors/connect-googletasks/CLAUDE.md +1 -1
- package/connectors/connect-googletasks/GEMINI.md +1 -1
- package/connectors/connect-googletasks/README.md +2 -2
- package/connectors/connect-googletasks/src/utils/config.ts +1 -1
- package/connectors/connect-hedra/AGENTS.md +2 -2
- package/connectors/connect-hedra/CLAUDE.md +2 -2
- package/connectors/connect-hedra/GEMINI.md +2 -2
- package/connectors/connect-hedra/README.md +2 -2
- package/connectors/connect-hedra/src/utils/config.ts +2 -2
- package/connectors/connect-heygen/AGENTS.md +2 -2
- package/connectors/connect-heygen/CLAUDE.md +2 -2
- package/connectors/connect-heygen/GEMINI.md +2 -2
- package/connectors/connect-heygen/README.md +2 -2
- package/connectors/connect-heygen/src/utils/config.ts +2 -2
- package/connectors/connect-huggingface/AGENTS.md +2 -2
- package/connectors/connect-huggingface/CLAUDE.md +2 -2
- package/connectors/connect-huggingface/GEMINI.md +2 -2
- package/connectors/connect-huggingface/README.md +2 -2
- package/connectors/connect-huggingface/src/utils/config.ts +2 -2
- package/connectors/connect-icons8/AGENTS.md +2 -2
- package/connectors/connect-icons8/CLAUDE.md +2 -2
- package/connectors/connect-icons8/GEMINI.md +2 -2
- package/connectors/connect-icons8/README.md +2 -2
- package/connectors/connect-icons8/src/utils/config.ts +2 -2
- package/connectors/connect-maropost/AGENTS.md +1 -1
- package/connectors/connect-maropost/CLAUDE.md +1 -1
- package/connectors/connect-maropost/GEMINI.md +1 -1
- package/connectors/connect-maropost/README.md +2 -2
- package/connectors/connect-maropost/src/utils/config.ts +2 -2
- package/connectors/connect-mercury/AGENTS.md +1 -1
- package/connectors/connect-mercury/CLAUDE.md +1 -1
- package/connectors/connect-mercury/GEMINI.md +1 -1
- package/connectors/connect-mercury/README.md +2 -2
- package/connectors/connect-mercury/src/utils/config.ts +2 -2
- package/connectors/connect-meta/AGENTS.md +1 -1
- package/connectors/connect-meta/CLAUDE.md +1 -1
- package/connectors/connect-meta/GEMINI.md +1 -1
- package/connectors/connect-meta/README.md +2 -2
- package/connectors/connect-meta/src/utils/config.ts +2 -2
- package/connectors/connect-midjourney/AGENTS.md +2 -2
- package/connectors/connect-midjourney/CLAUDE.md +2 -2
- package/connectors/connect-midjourney/GEMINI.md +2 -2
- package/connectors/connect-midjourney/README.md +2 -2
- package/connectors/connect-midjourney/src/utils/config.ts +2 -2
- package/connectors/connect-mistral/AGENTS.md +1 -1
- package/connectors/connect-mistral/CLAUDE.md +1 -1
- package/connectors/connect-mistral/GEMINI.md +1 -1
- package/connectors/connect-mistral/README.md +2 -2
- package/connectors/connect-mistral/src/utils/config.ts +2 -2
- package/connectors/connect-mixpanel/AGENTS.md +2 -2
- package/connectors/connect-mixpanel/CLAUDE.md +2 -2
- package/connectors/connect-mixpanel/GEMINI.md +2 -2
- package/connectors/connect-mixpanel/README.md +2 -2
- package/connectors/connect-mixpanel/src/utils/config.ts +2 -2
- package/connectors/connect-notion/CLAUDE.md +2 -2
- package/connectors/connect-notion/src/utils/config.ts +2 -2
- package/connectors/connect-openai/AGENTS.md +1 -1
- package/connectors/connect-openai/CLAUDE.md +1 -1
- package/connectors/connect-openai/GEMINI.md +1 -1
- package/connectors/connect-openai/README.md +2 -2
- package/connectors/connect-openai/src/utils/config.ts +2 -2
- package/connectors/connect-openweathermap/AGENTS.md +1 -1
- package/connectors/connect-openweathermap/CLAUDE.md +1 -1
- package/connectors/connect-openweathermap/GEMINI.md +1 -1
- package/connectors/connect-openweathermap/README.md +2 -2
- package/connectors/connect-openweathermap/src/utils/config.ts +1 -1
- package/connectors/connect-pandadoc/AGENTS.md +1 -1
- package/connectors/connect-pandadoc/CLAUDE.md +1 -1
- package/connectors/connect-pandadoc/GEMINI.md +1 -1
- package/connectors/connect-pandadoc/README.md +2 -2
- package/connectors/connect-pandadoc/src/utils/config.ts +2 -2
- package/connectors/connect-quo/AGENTS.md +1 -1
- package/connectors/connect-quo/CLAUDE.md +1 -1
- package/connectors/connect-quo/GEMINI.md +1 -1
- package/connectors/connect-quo/README.md +2 -2
- package/connectors/connect-quo/src/utils/config.ts +2 -2
- package/connectors/connect-reddit/AGENTS.md +2 -2
- package/connectors/connect-reddit/CLAUDE.md +2 -2
- package/connectors/connect-reddit/GEMINI.md +2 -2
- package/connectors/connect-reddit/README.md +2 -2
- package/connectors/connect-reddit/src/utils/config.ts +2 -2
- package/connectors/connect-reducto/AGENTS.md +1 -1
- package/connectors/connect-reducto/CLAUDE.md +1 -1
- package/connectors/connect-reducto/GEMINI.md +1 -1
- package/connectors/connect-reducto/README.md +2 -2
- package/connectors/connect-reducto/src/utils/config.ts +1 -1
- package/connectors/connect-resend/AGENTS.md +1 -1
- package/connectors/connect-resend/CLAUDE.md +1 -1
- package/connectors/connect-resend/GEMINI.md +1 -1
- package/connectors/connect-resend/README.md +2 -2
- package/connectors/connect-resend/src/utils/config.ts +2 -2
- package/connectors/connect-revolut/AGENTS.md +2 -2
- package/connectors/connect-revolut/CLAUDE.md +2 -2
- package/connectors/connect-revolut/GEMINI.md +2 -2
- package/connectors/connect-revolut/README.md +2 -2
- package/connectors/connect-revolut/src/utils/config.ts +2 -2
- package/connectors/connect-sedo/AGENTS.md +1 -1
- package/connectors/connect-sedo/CLAUDE.md +1 -1
- package/connectors/connect-sedo/GEMINI.md +1 -1
- package/connectors/connect-sedo/README.md +2 -2
- package/connectors/connect-sedo/src/utils/config.ts +1 -1
- package/connectors/connect-sentry/AGENTS.md +2 -2
- package/connectors/connect-sentry/CLAUDE.md +2 -2
- package/connectors/connect-sentry/GEMINI.md +2 -2
- package/connectors/connect-sentry/README.md +2 -2
- package/connectors/connect-sentry/src/utils/config.ts +2 -2
- package/connectors/connect-shadcn/AGENTS.md +2 -2
- package/connectors/connect-shadcn/CLAUDE.md +2 -2
- package/connectors/connect-shadcn/GEMINI.md +2 -2
- package/connectors/connect-shadcn/README.md +2 -2
- package/connectors/connect-shadcn/src/utils/config.ts +2 -2
- package/connectors/connect-shopify/AGENTS.md +2 -2
- package/connectors/connect-shopify/CLAUDE.md +2 -2
- package/connectors/connect-shopify/GEMINI.md +2 -2
- package/connectors/connect-shopify/README.md +2 -2
- package/connectors/connect-shopify/src/utils/config.ts +2 -2
- package/connectors/connect-snap/AGENTS.md +1 -1
- package/connectors/connect-snap/CLAUDE.md +1 -1
- package/connectors/connect-snap/GEMINI.md +1 -1
- package/connectors/connect-snap/README.md +2 -2
- package/connectors/connect-snap/src/utils/config.ts +2 -2
- package/connectors/connect-stabilityai/AGENTS.md +1 -1
- package/connectors/connect-stabilityai/CLAUDE.md +1 -1
- package/connectors/connect-stabilityai/GEMINI.md +1 -1
- package/connectors/connect-stabilityai/README.md +2 -2
- package/connectors/connect-stabilityai/src/utils/config.ts +2 -2
- package/connectors/connect-stripe/AGENTS.md +2 -2
- package/connectors/connect-stripe/CLAUDE.md +2 -2
- package/connectors/connect-stripe/GEMINI.md +2 -2
- package/connectors/connect-stripe/README.md +2 -2
- package/connectors/connect-stripe/src/utils/config.ts +2 -2
- package/connectors/connect-stripeatlas/AGENTS.md +2 -2
- package/connectors/connect-stripeatlas/CLAUDE.md +2 -2
- package/connectors/connect-stripeatlas/GEMINI.md +2 -2
- package/connectors/connect-stripeatlas/README.md +2 -2
- package/connectors/connect-stripeatlas/src/utils/config.ts +2 -2
- package/connectors/connect-substack/AGENTS.md +2 -2
- package/connectors/connect-substack/CLAUDE.md +2 -2
- package/connectors/connect-substack/GEMINI.md +2 -2
- package/connectors/connect-substack/README.md +2 -2
- package/connectors/connect-substack/src/utils/config.ts +2 -2
- package/connectors/connect-tiktok/AGENTS.md +1 -1
- package/connectors/connect-tiktok/CLAUDE.md +1 -1
- package/connectors/connect-tiktok/GEMINI.md +1 -1
- package/connectors/connect-tiktok/README.md +2 -2
- package/connectors/connect-tiktok/src/utils/config.ts +2 -2
- package/connectors/connect-tinker/AGENTS.md +2 -2
- package/connectors/connect-tinker/CLAUDE.md +2 -2
- package/connectors/connect-tinker/GEMINI.md +2 -2
- package/connectors/connect-tinker/README.md +2 -2
- package/connectors/connect-tinker/src/utils/config.ts +2 -2
- package/connectors/connect-twilio/AGENTS.md +1 -1
- package/connectors/connect-twilio/CLAUDE.md +1 -1
- package/connectors/connect-twilio/GEMINI.md +1 -1
- package/connectors/connect-twilio/README.md +2 -2
- package/connectors/connect-twilio/src/utils/config.ts +3 -3
- package/connectors/connect-uspto/AGENTS.md +1 -1
- package/connectors/connect-uspto/CLAUDE.md +1 -1
- package/connectors/connect-uspto/GEMINI.md +1 -1
- package/connectors/connect-uspto/README.md +2 -2
- package/connectors/connect-uspto/src/utils/config.ts +2 -2
- package/connectors/connect-webflow/AGENTS.md +2 -2
- package/connectors/connect-webflow/CLAUDE.md +2 -2
- package/connectors/connect-webflow/GEMINI.md +2 -2
- package/connectors/connect-webflow/README.md +2 -2
- package/connectors/connect-webflow/src/utils/config.ts +2 -2
- package/connectors/connect-wix/AGENTS.md +2 -2
- package/connectors/connect-wix/CLAUDE.md +2 -2
- package/connectors/connect-wix/GEMINI.md +2 -2
- package/connectors/connect-wix/README.md +2 -2
- package/connectors/connect-wix/src/utils/config.ts +2 -2
- package/connectors/connect-x/AGENTS.md +1 -1
- package/connectors/connect-x/CLAUDE.md +1 -1
- package/connectors/connect-x/GEMINI.md +1 -1
- package/connectors/connect-x/README.md +2 -2
- package/connectors/connect-x/src/utils/config.ts +2 -2
- package/connectors/connect-xads/AGENTS.md +2 -2
- package/connectors/connect-xads/CLAUDE.md +2 -2
- package/connectors/connect-xads/GEMINI.md +2 -2
- package/connectors/connect-xads/README.md +2 -2
- package/connectors/connect-xads/src/utils/config.ts +1 -1
- package/connectors/connect-xai/AGENTS.md +1 -1
- package/connectors/connect-xai/CLAUDE.md +1 -1
- package/connectors/connect-xai/GEMINI.md +1 -1
- package/connectors/connect-xai/README.md +2 -2
- package/connectors/connect-xai/src/utils/config.ts +2 -2
- package/connectors/connect-youtube/AGENTS.md +1 -1
- package/connectors/connect-youtube/CLAUDE.md +1 -1
- package/connectors/connect-youtube/GEMINI.md +1 -1
- package/connectors/connect-youtube/README.md +2 -2
- package/connectors/connect-youtube/src/utils/config.ts +2 -2
- package/connectors/connect-zoom/AGENTS.md +2 -2
- package/connectors/connect-zoom/CLAUDE.md +2 -2
- package/connectors/connect-zoom/GEMINI.md +2 -2
- package/connectors/connect-zoom/README.md +2 -2
- package/connectors/connect-zoom/src/utils/config.ts +2 -2
- package/dashboard/dist/assets/index-DmR_QNtT.css +1 -0
- package/dashboard/dist/assets/index-Dp-apHbC.js +284 -0
- package/dashboard/dist/index.html +2 -2
- package/dist/server/auth.d.ts +20 -0
- package/dist/server/serve.d.ts +1 -1
- package/package.json +2 -2
- package/dashboard/dist/assets/index-CMPMQfHL.js +0 -234
- package/dashboard/dist/assets/index-D0alGsGP.css +0 -1
package/bin/mcp.js
CHANGED
|
@@ -6286,7 +6286,7 @@ var require_formats = __commonJS((exports) => {
|
|
|
6286
6286
|
}
|
|
6287
6287
|
var TIME = /^(\d\d):(\d\d):(\d\d(?:\.\d+)?)(z|([+-])(\d\d)(?::?(\d\d))?)?$/i;
|
|
6288
6288
|
function getTime(strictTimeZone) {
|
|
6289
|
-
return function
|
|
6289
|
+
return function time(str) {
|
|
6290
6290
|
const matches = TIME.exec(str);
|
|
6291
6291
|
if (!matches)
|
|
6292
6292
|
return false;
|
|
@@ -18120,6 +18120,62 @@ class ExperimentalServerTasks {
|
|
|
18120
18120
|
requestStream(request, resultSchema, options) {
|
|
18121
18121
|
return this._server.requestStream(request, resultSchema, options);
|
|
18122
18122
|
}
|
|
18123
|
+
createMessageStream(params, options) {
|
|
18124
|
+
const clientCapabilities = this._server.getClientCapabilities();
|
|
18125
|
+
if ((params.tools || params.toolChoice) && !clientCapabilities?.sampling?.tools) {
|
|
18126
|
+
throw new Error("Client does not support sampling tools capability.");
|
|
18127
|
+
}
|
|
18128
|
+
if (params.messages.length > 0) {
|
|
18129
|
+
const lastMessage = params.messages[params.messages.length - 1];
|
|
18130
|
+
const lastContent = Array.isArray(lastMessage.content) ? lastMessage.content : [lastMessage.content];
|
|
18131
|
+
const hasToolResults = lastContent.some((c) => c.type === "tool_result");
|
|
18132
|
+
const previousMessage = params.messages.length > 1 ? params.messages[params.messages.length - 2] : undefined;
|
|
18133
|
+
const previousContent = previousMessage ? Array.isArray(previousMessage.content) ? previousMessage.content : [previousMessage.content] : [];
|
|
18134
|
+
const hasPreviousToolUse = previousContent.some((c) => c.type === "tool_use");
|
|
18135
|
+
if (hasToolResults) {
|
|
18136
|
+
if (lastContent.some((c) => c.type !== "tool_result")) {
|
|
18137
|
+
throw new Error("The last message must contain only tool_result content if any is present");
|
|
18138
|
+
}
|
|
18139
|
+
if (!hasPreviousToolUse) {
|
|
18140
|
+
throw new Error("tool_result blocks are not matching any tool_use from the previous message");
|
|
18141
|
+
}
|
|
18142
|
+
}
|
|
18143
|
+
if (hasPreviousToolUse) {
|
|
18144
|
+
const toolUseIds = new Set(previousContent.filter((c) => c.type === "tool_use").map((c) => c.id));
|
|
18145
|
+
const toolResultIds = new Set(lastContent.filter((c) => c.type === "tool_result").map((c) => c.toolUseId));
|
|
18146
|
+
if (toolUseIds.size !== toolResultIds.size || ![...toolUseIds].every((id) => toolResultIds.has(id))) {
|
|
18147
|
+
throw new Error("ids of tool_result blocks and tool_use blocks from previous message do not match");
|
|
18148
|
+
}
|
|
18149
|
+
}
|
|
18150
|
+
}
|
|
18151
|
+
return this.requestStream({
|
|
18152
|
+
method: "sampling/createMessage",
|
|
18153
|
+
params
|
|
18154
|
+
}, CreateMessageResultSchema, options);
|
|
18155
|
+
}
|
|
18156
|
+
elicitInputStream(params, options) {
|
|
18157
|
+
const clientCapabilities = this._server.getClientCapabilities();
|
|
18158
|
+
const mode = params.mode ?? "form";
|
|
18159
|
+
switch (mode) {
|
|
18160
|
+
case "url": {
|
|
18161
|
+
if (!clientCapabilities?.elicitation?.url) {
|
|
18162
|
+
throw new Error("Client does not support url elicitation.");
|
|
18163
|
+
}
|
|
18164
|
+
break;
|
|
18165
|
+
}
|
|
18166
|
+
case "form": {
|
|
18167
|
+
if (!clientCapabilities?.elicitation?.form) {
|
|
18168
|
+
throw new Error("Client does not support form elicitation.");
|
|
18169
|
+
}
|
|
18170
|
+
break;
|
|
18171
|
+
}
|
|
18172
|
+
}
|
|
18173
|
+
const normalizedParams = mode === "form" && params.mode === undefined ? { ...params, mode: "form" } : params;
|
|
18174
|
+
return this.requestStream({
|
|
18175
|
+
method: "elicitation/create",
|
|
18176
|
+
params: normalizedParams
|
|
18177
|
+
}, ElicitResultSchema, options);
|
|
18178
|
+
}
|
|
18123
18179
|
async getTask(taskId, options) {
|
|
18124
18180
|
return this._server.getTask({ taskId }, options);
|
|
18125
18181
|
}
|
|
@@ -20034,7 +20090,7 @@ function removeConnector(name, targetDir = process.cwd()) {
|
|
|
20034
20090
|
}
|
|
20035
20091
|
|
|
20036
20092
|
// src/server/auth.ts
|
|
20037
|
-
import { existsSync as existsSync3, readFileSync as readFileSync3, writeFileSync as writeFileSync2, mkdirSync as mkdirSync2 } from "fs";
|
|
20093
|
+
import { existsSync as existsSync3, readFileSync as readFileSync3, writeFileSync as writeFileSync2, mkdirSync as mkdirSync2, readdirSync as readdirSync2, rmSync as rmSync2, statSync as statSync2 } from "fs";
|
|
20038
20094
|
import { homedir } from "os";
|
|
20039
20095
|
import { join as join3 } from "path";
|
|
20040
20096
|
var oauthStateStore = new Map;
|
|
@@ -20089,7 +20145,7 @@ function getAuthType(name) {
|
|
|
20089
20145
|
}
|
|
20090
20146
|
function getConnectorConfigDir(name) {
|
|
20091
20147
|
const connectorName = name.startsWith("connect-") ? name : `connect-${name}`;
|
|
20092
|
-
return join3(homedir(), ".
|
|
20148
|
+
return join3(homedir(), ".connectors", connectorName);
|
|
20093
20149
|
}
|
|
20094
20150
|
function getCurrentProfile(name) {
|
|
20095
20151
|
const configDir = getConnectorConfigDir(name);
|
|
@@ -20141,6 +20197,8 @@ function getAuthStatus(name) {
|
|
|
20141
20197
|
description: v.description,
|
|
20142
20198
|
set: !!process.env[v.variable]
|
|
20143
20199
|
}));
|
|
20200
|
+
const envVarTotalCount = envVars.length;
|
|
20201
|
+
const envVarSetCount = envVars.filter((v) => v.set).length;
|
|
20144
20202
|
if (authType === "oauth") {
|
|
20145
20203
|
const tokens = loadTokens(name);
|
|
20146
20204
|
const config3 = loadProfileConfig(name);
|
|
@@ -20152,7 +20210,9 @@ function getAuthStatus(name) {
|
|
|
20152
20210
|
configured: hasTokens || hasRefreshToken,
|
|
20153
20211
|
tokenExpiry,
|
|
20154
20212
|
hasRefreshToken,
|
|
20155
|
-
envVars
|
|
20213
|
+
envVars,
|
|
20214
|
+
envVarSetCount,
|
|
20215
|
+
envVarTotalCount
|
|
20156
20216
|
};
|
|
20157
20217
|
}
|
|
20158
20218
|
const config2 = loadProfileConfig(name);
|
|
@@ -20161,15 +20221,61 @@ function getAuthStatus(name) {
|
|
|
20161
20221
|
return {
|
|
20162
20222
|
type: authType,
|
|
20163
20223
|
configured: hasKey || hasEnvVar,
|
|
20164
|
-
envVars
|
|
20224
|
+
envVars,
|
|
20225
|
+
envVarSetCount,
|
|
20226
|
+
envVarTotalCount
|
|
20165
20227
|
};
|
|
20166
20228
|
}
|
|
20229
|
+
function saveApiKey(name, key, field) {
|
|
20230
|
+
const configDir = getConnectorConfigDir(name);
|
|
20231
|
+
const profile = getCurrentProfile(name);
|
|
20232
|
+
const keyField = field || guessKeyField(name);
|
|
20233
|
+
const profileFile = join3(configDir, "profiles", `${profile}.json`);
|
|
20234
|
+
const profileDir = join3(configDir, "profiles", profile);
|
|
20235
|
+
if (existsSync3(profileFile)) {
|
|
20236
|
+
let config2 = {};
|
|
20237
|
+
try {
|
|
20238
|
+
config2 = JSON.parse(readFileSync3(profileFile, "utf-8"));
|
|
20239
|
+
} catch {}
|
|
20240
|
+
config2[keyField] = key;
|
|
20241
|
+
writeFileSync2(profileFile, JSON.stringify(config2, null, 2));
|
|
20242
|
+
return;
|
|
20243
|
+
}
|
|
20244
|
+
if (existsSync3(profileDir)) {
|
|
20245
|
+
const configFile = join3(profileDir, "config.json");
|
|
20246
|
+
let config2 = {};
|
|
20247
|
+
if (existsSync3(configFile)) {
|
|
20248
|
+
try {
|
|
20249
|
+
config2 = JSON.parse(readFileSync3(configFile, "utf-8"));
|
|
20250
|
+
} catch {}
|
|
20251
|
+
}
|
|
20252
|
+
config2[keyField] = key;
|
|
20253
|
+
writeFileSync2(configFile, JSON.stringify(config2, null, 2));
|
|
20254
|
+
return;
|
|
20255
|
+
}
|
|
20256
|
+
mkdirSync2(join3(configDir, "profiles"), { recursive: true });
|
|
20257
|
+
writeFileSync2(profileFile, JSON.stringify({ [keyField]: key }, null, 2));
|
|
20258
|
+
}
|
|
20259
|
+
function guessKeyField(name) {
|
|
20260
|
+
const docs = getConnectorDocs(name);
|
|
20261
|
+
if (!docs?.envVars.length)
|
|
20262
|
+
return "apiKey";
|
|
20263
|
+
const keyVar = docs.envVars.find((v) => v.variable.includes("API_KEY") || v.variable.includes("API_SECRET") || v.variable.includes("TOKEN") || v.variable.includes("SECRET"));
|
|
20264
|
+
if (keyVar) {
|
|
20265
|
+
const parts = keyVar.variable.toLowerCase().split("_");
|
|
20266
|
+
const withoutPrefix = parts.slice(1);
|
|
20267
|
+
if (withoutPrefix.length > 0) {
|
|
20268
|
+
return withoutPrefix.map((p, i) => i === 0 ? p : p.charAt(0).toUpperCase() + p.slice(1)).join("");
|
|
20269
|
+
}
|
|
20270
|
+
}
|
|
20271
|
+
return "apiKey";
|
|
20272
|
+
}
|
|
20167
20273
|
|
|
20168
20274
|
// src/mcp/index.ts
|
|
20169
20275
|
loadConnectorVersions();
|
|
20170
20276
|
var server = new McpServer({
|
|
20171
20277
|
name: "connectors",
|
|
20172
|
-
version: "0.
|
|
20278
|
+
version: "0.2.5"
|
|
20173
20279
|
});
|
|
20174
20280
|
server.registerTool("search_connectors", {
|
|
20175
20281
|
title: "Search Connectors",
|
|
@@ -20382,6 +20488,55 @@ server.registerTool("connector_auth_status", {
|
|
|
20382
20488
|
]
|
|
20383
20489
|
};
|
|
20384
20490
|
});
|
|
20491
|
+
server.registerTool("configure_auth", {
|
|
20492
|
+
title: "Configure Auth",
|
|
20493
|
+
description: "Save an API key or bearer token for a connector. " + "Stores credentials in ~/.connectors/connect-{name}/profiles/. " + "Use connector_docs to find required env vars and field names first.",
|
|
20494
|
+
inputSchema: {
|
|
20495
|
+
name: exports_external.string().describe("Connector name (e.g. 'stripe', 'anthropic', 'openai')"),
|
|
20496
|
+
key: exports_external.string().describe("The API key or bearer token value"),
|
|
20497
|
+
field: exports_external.string().optional().describe("Key field name (defaults to the connector's primary key field, usually 'apiKey')")
|
|
20498
|
+
}
|
|
20499
|
+
}, async ({ name, key, field }) => {
|
|
20500
|
+
try {
|
|
20501
|
+
saveApiKey(name, key, field);
|
|
20502
|
+
return {
|
|
20503
|
+
content: [
|
|
20504
|
+
{
|
|
20505
|
+
type: "text",
|
|
20506
|
+
text: JSON.stringify({ success: true, connector: name, field: field || "apiKey" }, null, 2)
|
|
20507
|
+
}
|
|
20508
|
+
]
|
|
20509
|
+
};
|
|
20510
|
+
} catch (error2) {
|
|
20511
|
+
return {
|
|
20512
|
+
content: [
|
|
20513
|
+
{
|
|
20514
|
+
type: "text",
|
|
20515
|
+
text: `Failed to save key for '${name}': ${error2 instanceof Error ? error2.message : String(error2)}`
|
|
20516
|
+
}
|
|
20517
|
+
],
|
|
20518
|
+
isError: true
|
|
20519
|
+
};
|
|
20520
|
+
}
|
|
20521
|
+
});
|
|
20522
|
+
server.registerTool("list_categories", {
|
|
20523
|
+
title: "List Categories",
|
|
20524
|
+
description: "List all connector categories with the number of connectors in each.",
|
|
20525
|
+
inputSchema: {}
|
|
20526
|
+
}, async () => {
|
|
20527
|
+
const categoryCounts = CATEGORIES.map((category) => ({
|
|
20528
|
+
category,
|
|
20529
|
+
count: getConnectorsByCategory(category).length
|
|
20530
|
+
}));
|
|
20531
|
+
return {
|
|
20532
|
+
content: [
|
|
20533
|
+
{
|
|
20534
|
+
type: "text",
|
|
20535
|
+
text: JSON.stringify({ categories: categoryCounts, total: CONNECTORS.length }, null, 2)
|
|
20536
|
+
}
|
|
20537
|
+
]
|
|
20538
|
+
};
|
|
20539
|
+
});
|
|
20385
20540
|
async function main() {
|
|
20386
20541
|
const transport = new StdioServerTransport;
|
|
20387
20542
|
await server.connect(transport);
|