replicas-engine 0.1.696 → 0.1.697
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.
|
@@ -3843,7 +3843,6 @@ var HOSTED_COMPOSIO_PLUGIN_DEFINITIONS = [
|
|
|
3843
3843
|
["xero", "xero", "OAUTH2", false, "business", "Xero"],
|
|
3844
3844
|
["brex", "brex", "API_KEY", false, "business", "Brex"],
|
|
3845
3845
|
["buffer", "buffer", "OAUTH2", false, "business", "Buffer"],
|
|
3846
|
-
["docusign", "docusign", "OAUTH2", false, "business", "DocuSign"],
|
|
3847
3846
|
["canva", "canva", "OAUTH2", true, "productivity", "Canva"],
|
|
3848
3847
|
["webflow", "webflow", "API_KEY", false, "business", "Webflow"],
|
|
3849
3848
|
["firecrawl", "firecrawl", "API_KEY", false, "data", "Firecrawl"],
|
|
@@ -6766,7 +6765,7 @@ var DEFAULT_CODEX_ARGS = [
|
|
|
6766
6765
|
var MIN_CODEX_CLI_VERSION = "0.144.6";
|
|
6767
6766
|
var CODEX_UPGRADE_TIMEOUT_MS = 12e4;
|
|
6768
6767
|
var codexCliVersionEnsured = null;
|
|
6769
|
-
var ENGINE_PACKAGE_VERSION = "0.1.
|
|
6768
|
+
var ENGINE_PACKAGE_VERSION = "0.1.697";
|
|
6770
6769
|
var INITIALIZE_METHOD = "initialize";
|
|
6771
6770
|
var INITIALIZED_NOTIFICATION = "initialized";
|
|
6772
6771
|
var ACCOUNT_LOGIN_START_METHOD = "account/login/start";
|
package/dist/src/index.js
CHANGED
|
@@ -192,7 +192,7 @@ import {
|
|
|
192
192
|
serializeCanvasContentResponse,
|
|
193
193
|
shellQuotePosix,
|
|
194
194
|
stripAgentDiagnosticErrors
|
|
195
|
-
} from "./chunk-
|
|
195
|
+
} from "./chunk-2YKP6MBQ.js";
|
|
196
196
|
|
|
197
197
|
// src/index.ts
|
|
198
198
|
import { serve } from "@hono/node-server";
|
|
@@ -9419,17 +9419,21 @@ async function getDefaultOpencodeModel(provider) {
|
|
|
9419
9419
|
function getOpenCodeGoModel(model) {
|
|
9420
9420
|
return model.replace(/^[^/]+\//, "");
|
|
9421
9421
|
}
|
|
9422
|
-
function opencodeConfig(provider, model) {
|
|
9422
|
+
function opencodeConfig(provider, model, providerModels = [model]) {
|
|
9423
9423
|
let config;
|
|
9424
9424
|
if (provider === OPENCODE_GO_PROVIDER) {
|
|
9425
9425
|
config = {
|
|
9426
9426
|
enabled_providers: [OPENCODE_GO_PROVIDER],
|
|
9427
9427
|
model: `${OPENCODE_GO_PROVIDER}/${model}`,
|
|
9428
|
+
provider: {
|
|
9429
|
+
[OPENCODE_GO_PROVIDER]: {
|
|
9430
|
+
models: Object.fromEntries(providerModels.map((candidate) => [candidate, {}]))
|
|
9431
|
+
}
|
|
9432
|
+
},
|
|
9428
9433
|
permission: OPENCODE_WORKSPACE_PERMISSION,
|
|
9429
9434
|
share: "disabled"
|
|
9430
9435
|
};
|
|
9431
9436
|
} else if (provider === ASTER_PROVIDER) {
|
|
9432
|
-
const models = getConfiguredOpencodeModels(model, provider);
|
|
9433
9437
|
config = {
|
|
9434
9438
|
enabled_providers: [ASTER_PROVIDER],
|
|
9435
9439
|
model: `${ASTER_PROVIDER}/${model}`,
|
|
@@ -9438,20 +9442,19 @@ function opencodeConfig(provider, model) {
|
|
|
9438
9442
|
npm: "@ai-sdk/openai-compatible",
|
|
9439
9443
|
name: "Aster",
|
|
9440
9444
|
options: { baseURL: ASTER_BASE_URL },
|
|
9441
|
-
models: Object.fromEntries(
|
|
9445
|
+
models: Object.fromEntries(providerModels.map((candidate) => [candidate, {}]))
|
|
9442
9446
|
}
|
|
9443
9447
|
},
|
|
9444
9448
|
permission: OPENCODE_WORKSPACE_PERMISSION,
|
|
9445
9449
|
share: "disabled"
|
|
9446
9450
|
};
|
|
9447
9451
|
} else {
|
|
9448
|
-
const models = getConfiguredOpencodeModels(model, provider);
|
|
9449
9452
|
config = {
|
|
9450
9453
|
enabled_providers: ["openrouter"],
|
|
9451
9454
|
model: `openrouter/${model}`,
|
|
9452
9455
|
provider: {
|
|
9453
9456
|
openrouter: {
|
|
9454
|
-
models: Object.fromEntries(
|
|
9457
|
+
models: Object.fromEntries(providerModels.map((candidate) => [candidate, {}]))
|
|
9455
9458
|
}
|
|
9456
9459
|
},
|
|
9457
9460
|
permission: OPENCODE_WORKSPACE_PERMISSION,
|
|
@@ -9460,9 +9463,6 @@ function opencodeConfig(provider, model) {
|
|
|
9460
9463
|
}
|
|
9461
9464
|
return config;
|
|
9462
9465
|
}
|
|
9463
|
-
function getConfiguredOpencodeModels(model, provider) {
|
|
9464
|
-
return [.../* @__PURE__ */ new Set([model, ...provider === ASTER_PROVIDER ? ASTER_MODELS : []])];
|
|
9465
|
-
}
|
|
9466
9466
|
function opencodeCommandToSlashCommand(command) {
|
|
9467
9467
|
return createProviderSlashCommand("opencode", command.name, command.description);
|
|
9468
9468
|
}
|
|
@@ -9592,6 +9592,7 @@ var OpencodeManager = class extends CodingAgentManager {
|
|
|
9592
9592
|
historyFile;
|
|
9593
9593
|
activeAbortController = null;
|
|
9594
9594
|
configuredModels = /* @__PURE__ */ new Set();
|
|
9595
|
+
clientUpdate = Promise.resolve();
|
|
9595
9596
|
providerId = "openrouter";
|
|
9596
9597
|
eventAbortController = null;
|
|
9597
9598
|
eventSubscriptionReady = Promise.resolve();
|
|
@@ -9656,7 +9657,7 @@ var OpencodeManager = class extends CodingAgentManager {
|
|
|
9656
9657
|
this.slashCommandsRequest ??= (async () => {
|
|
9657
9658
|
try {
|
|
9658
9659
|
const provider = await getOpencodeProvider();
|
|
9659
|
-
const client2 = await this.ensureClient(await getDefaultOpencodeModel(provider), provider);
|
|
9660
|
+
const client2 = await this.ensureClient(await getDefaultOpencodeModel(provider), provider, true);
|
|
9660
9661
|
const directories = [this.workingDirectory, ...await getAgentAdditionalDirectories()];
|
|
9661
9662
|
const perDirectory = await Promise.all(directories.map(async (directory) => {
|
|
9662
9663
|
try {
|
|
@@ -9686,68 +9687,80 @@ var OpencodeManager = class extends CodingAgentManager {
|
|
|
9686
9687
|
})();
|
|
9687
9688
|
return this.slashCommandsRequest;
|
|
9688
9689
|
}
|
|
9689
|
-
async ensureClient(model, providerId) {
|
|
9690
|
-
|
|
9690
|
+
async ensureClient(model, providerId, reuseExisting = false) {
|
|
9691
|
+
const previousUpdate = this.clientUpdate;
|
|
9692
|
+
let finishUpdate = () => {
|
|
9693
|
+
};
|
|
9694
|
+
this.clientUpdate = new Promise((resolve5) => {
|
|
9695
|
+
finishUpdate = resolve5;
|
|
9696
|
+
});
|
|
9697
|
+
await previousUpdate;
|
|
9698
|
+
try {
|
|
9699
|
+
if (reuseExisting && this.client) return this.client;
|
|
9700
|
+
if (this.client && this.providerId !== providerId) {
|
|
9701
|
+
this.eventAbortController?.abort();
|
|
9702
|
+
this.server?.close();
|
|
9703
|
+
this.client = null;
|
|
9704
|
+
this.server = null;
|
|
9705
|
+
this.configuredModels.clear();
|
|
9706
|
+
}
|
|
9707
|
+
this.providerId = providerId;
|
|
9708
|
+
const configuredModel = providerId === OPENCODE_GO_PROVIDER ? getOpenCodeGoModel(model) : model;
|
|
9709
|
+
const providerModels = providerId === OPENCODE_GO_PROVIDER ? Object.keys((await fetchOpenCodeGoCatalog()).models) : providerId === ASTER_PROVIDER ? ASTER_MODELS : await getAllowedOpenRouterModels();
|
|
9710
|
+
if (!providerModels.includes(configuredModel)) {
|
|
9711
|
+
throw new Error(`Model ${configuredModel} is not available through ${providerId}.`);
|
|
9712
|
+
}
|
|
9713
|
+
if (this.client && this.configuredModels.has(configuredModel)) {
|
|
9714
|
+
return this.client;
|
|
9715
|
+
}
|
|
9716
|
+
if (!await hasOpencodeCredentials(providerId)) {
|
|
9717
|
+
throw new Error("OpenCode Go, Aster, or OpenRouter credentials are not configured for Opencode in this workspace.");
|
|
9718
|
+
}
|
|
9691
9719
|
this.eventAbortController?.abort();
|
|
9692
9720
|
this.server?.close();
|
|
9693
|
-
|
|
9694
|
-
|
|
9695
|
-
|
|
9696
|
-
|
|
9697
|
-
|
|
9698
|
-
|
|
9699
|
-
|
|
9700
|
-
|
|
9701
|
-
|
|
9702
|
-
|
|
9703
|
-
|
|
9704
|
-
|
|
9705
|
-
|
|
9706
|
-
|
|
9707
|
-
|
|
9708
|
-
|
|
9709
|
-
|
|
9710
|
-
|
|
9711
|
-
|
|
9712
|
-
|
|
9713
|
-
|
|
9714
|
-
|
|
9715
|
-
|
|
9716
|
-
|
|
9717
|
-
|
|
9718
|
-
|
|
9719
|
-
|
|
9720
|
-
|
|
9721
|
-
|
|
9722
|
-
|
|
9723
|
-
|
|
9724
|
-
|
|
9725
|
-
|
|
9726
|
-
|
|
9727
|
-
|
|
9728
|
-
|
|
9729
|
-
|
|
9730
|
-
|
|
9731
|
-
|
|
9732
|
-
|
|
9733
|
-
|
|
9734
|
-
|
|
9735
|
-
|
|
9736
|
-
this.eventAbortController = eventController;
|
|
9737
|
-
this.eventSubscriptionReady = new Promise((resolve5) => {
|
|
9738
|
-
this.resolveEventSubscriptionReady = resolve5;
|
|
9739
|
-
});
|
|
9740
|
-
this.subscribeToEvents(client2, eventController).catch((error) => {
|
|
9741
|
-
this.resolveEventSubscriptionReady?.();
|
|
9742
|
-
this.resolveEventSubscriptionReady = null;
|
|
9743
|
-
console.error("[OpencodeManager] Event subscription failed:", error);
|
|
9744
|
-
this.recordHistoryEvent("opencode-error", opencodeErrorPayload(error), this.historyFile);
|
|
9745
|
-
});
|
|
9746
|
-
await Promise.race([
|
|
9747
|
-
this.eventSubscriptionReady,
|
|
9748
|
-
new Promise((resolve5) => setTimeout(resolve5, 2e3))
|
|
9749
|
-
]);
|
|
9750
|
-
return client2;
|
|
9721
|
+
const pathEntries = (process.env.PATH ?? "").split(delimiter).filter(Boolean);
|
|
9722
|
+
if (!pathEntries.includes(OPENCODE_SHIM_DIR)) {
|
|
9723
|
+
process.env.PATH = [OPENCODE_SHIM_DIR, ...pathEntries].join(delimiter);
|
|
9724
|
+
}
|
|
9725
|
+
const password = process.env.OPENCODE_SERVER_PASSWORD || randomBytes2(24).toString("base64url");
|
|
9726
|
+
process.env.OPENCODE_SERVER_PASSWORD = password;
|
|
9727
|
+
const config = opencodeConfig(providerId, configuredModel, providerModels);
|
|
9728
|
+
const mcp = await readProvisionedOpencodeMcpConfig();
|
|
9729
|
+
if (mcp && Object.keys(mcp).length > 0) config.mcp = mcp;
|
|
9730
|
+
const server = await createOpencodeServer({
|
|
9731
|
+
port: 0,
|
|
9732
|
+
timeout: OPENCODE_SERVER_STARTUP_TIMEOUT_MS,
|
|
9733
|
+
config
|
|
9734
|
+
});
|
|
9735
|
+
const client2 = createOpencodeClient({
|
|
9736
|
+
baseUrl: server.url,
|
|
9737
|
+
fetch: opencodeFetch,
|
|
9738
|
+
headers: {
|
|
9739
|
+
Authorization: `Basic ${Buffer.from(`opencode:${password}`).toString("base64")}`
|
|
9740
|
+
}
|
|
9741
|
+
});
|
|
9742
|
+
this.client = client2;
|
|
9743
|
+
this.server = server;
|
|
9744
|
+
this.configuredModels = new Set(providerModels);
|
|
9745
|
+
const eventController = new AbortController();
|
|
9746
|
+
this.eventAbortController = eventController;
|
|
9747
|
+
this.eventSubscriptionReady = new Promise((resolve5) => {
|
|
9748
|
+
this.resolveEventSubscriptionReady = resolve5;
|
|
9749
|
+
});
|
|
9750
|
+
this.subscribeToEvents(client2, eventController).catch((error) => {
|
|
9751
|
+
this.resolveEventSubscriptionReady?.();
|
|
9752
|
+
this.resolveEventSubscriptionReady = null;
|
|
9753
|
+
console.error("[OpencodeManager] Event subscription failed:", error);
|
|
9754
|
+
this.recordHistoryEvent("opencode-error", opencodeErrorPayload(error), this.historyFile);
|
|
9755
|
+
});
|
|
9756
|
+
await Promise.race([
|
|
9757
|
+
this.eventSubscriptionReady,
|
|
9758
|
+
new Promise((resolve5) => setTimeout(resolve5, 2e3))
|
|
9759
|
+
]);
|
|
9760
|
+
return client2;
|
|
9761
|
+
} finally {
|
|
9762
|
+
finishUpdate();
|
|
9763
|
+
}
|
|
9751
9764
|
}
|
|
9752
9765
|
async ensureSession(client2, model, agent, variant) {
|
|
9753
9766
|
if (this.sessionId) {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Generated from shared/src by generate-workspace-sdk-types.mjs; do not edit.
|
|
2
2
|
export declare const HOSTED_PLUGIN_AUTH_SCHEMES: readonly ["API_KEY", "BASIC", "BEARER_TOKEN", "DCR_OAUTH", "OAUTH1", "OAUTH2"];
|
|
3
3
|
export type HostedPluginAuthScheme = (typeof HOSTED_PLUGIN_AUTH_SCHEMES)[number];
|
|
4
|
-
declare const HOSTED_COMPOSIO_PLUGIN_DEFINITIONS: readonly [["notion", "notion", "OAUTH2", true, "productivity", "Notion"], ["jira", "jira", "OAUTH2", true, "productivity", "Jira"], ["confluence", "confluence", "OAUTH2", true, "productivity", "Confluence"], ["googlecalendar", "googlecalendar", "OAUTH2", true, "productivity", "Google Calendar"], ["microsoftteams", "microsoft_teams", "OAUTH2", true, "productivity", "Microsoft Teams"], ["outlook", "outlook", "OAUTH2", true, "productivity", "Outlook"], ["bitbucket", "bitbucket", "OAUTH2", true, "data", "Bitbucket"], ["datadog", "datadog", "API_KEY", false, "data", "Datadog"], ["pagerduty", "pagerduty", "OAUTH2", true, "data", "PagerDuty"], ["intercom", "intercom", "OAUTH2", true, "business", "Intercom"], ["zendesk", "zendesk", "OAUTH2", true, "business", "Zendesk"], ["hubspot", "hubspot", "OAUTH2", true, "business", "HubSpot"], ["supabase", "supabase", "OAUTH2", true, "data", "Supabase"], ["figma", "figma", "OAUTH2", true, "productivity", "Figma"], ["launchdarkly", "launch_darkly", "API_KEY", false, "data", "LaunchDarkly"], ["asana", "asana", "OAUTH2", true, "productivity", "Asana"], ["clickup", "clickup", "OAUTH2", true, "productivity", "ClickUp"], ["trello", "trello", "OAUTH1", true, "productivity", "Trello"], ["todoist", "todoist", "OAUTH2", true, "productivity", "Todoist"], ["airtable", "airtable", "OAUTH2", true, "productivity", "Airtable"], ["coda", "coda", "API_KEY", false, "productivity", "Coda"], ["miro", "miro", "OAUTH2", true, "productivity", "Miro"], ["sharepoint", "share_point", "OAUTH2", true, "productivity", "SharePoint"], ["onedrive", "one_drive", "OAUTH2", true, "productivity", "OneDrive"], ["googleslides", "googleslides", "OAUTH2", true, "productivity", "Google Slides"], ["googlemeet", "googlemeet", "OAUTH2", true, "productivity", "Google Meet"], ["googletasks", "googletasks", "OAUTH2", true, "productivity", "Google Tasks"], ["dropbox", "dropbox", "OAUTH2", true, "productivity", "Dropbox"], ["box", "box", "OAUTH2", true, "productivity", "Box"], ["discord", "discord", "OAUTH2", true, "productivity", "Discord"], ["discordbot", "discordbot", "OAUTH2", true, "productivity", "Discord Bot"], ["zoom", "zoom", "OAUTH2", true, "productivity", "Zoom"], ["googlechat", "google_chat", "OAUTH2", false, "productivity", "Google Chat"], ["newrelic", "new_relic", "API_KEY", false, "data", "New Relic"], ["betterstack", "better_stack", "API_KEY", false, "data", "Better Stack"], ["incidentio", "incident_io", "API_KEY", false, "data", "incident.io"], ["grafana", "grafana", "BEARER_TOKEN", false, "data", "Grafana"], ["honeycomb", "honeycomb_mcp", "DCR_OAUTH", false, "data", "Honeycomb MCP"], ["bugsnag", "bugsnag", "API_KEY", false, "data", "Bugsnag"], ["circleci", "circleci", "API_KEY", false, "data", "CircleCI"], ["buildkite", "buildkite", "API_KEY", false, "data", "Buildkite"], ["dockerhub", "docker_hub", "API_KEY", false, "data", "Docker Hub"], ["digitalocean", "digital_ocean", "OAUTH2", true, "data", "DigitalOcean"], ["railway", "railway", "API_KEY", false, "data", "Railway"], ["render", "render", "API_KEY", false, "data", "Render"], ["firebase", "firebase", "API_KEY", false, "data", "Firebase"], ["cloudinary", "cloudinary", "API_KEY", false, "data", "Cloudinary"], ["configcat", "configcat", "API_KEY", false, "data", "ConfigCat"], ["contextdev", "context_dev", "API_KEY", false, "data", "Context.dev"], ["googleanalytics", "google_analytics", "OAUTH2", true, "data", "Google Analytics"], ["googlebigquery", "googlebigquery", "OAUTH2", true, "data", "Google BigQuery"], ["amplitude", "amplitude", "API_KEY", false, "data", "Amplitude"], ["mixpanel", "mixpanel", "BASIC", false, "data", "Mixpanel"], ["segment", "segment", "API_KEY", false, "data", "Segment"], ["databricks", "databricks", "API_KEY", false, "data", "Databricks"], ["snowflake", "snowflake", "OAUTH2", false, "data", "Snowflake"], ["algolia", "algolia", "API_KEY", false, "data", "Algolia"], ["elasticsearch", "elasticsearch", "API_KEY", false, "data", "Elasticsearch"], ["salesforce", "salesforce", "OAUTH2", true, "business", "Salesforce"], ["pipedrive", "pipedrive", "API_KEY", false, "business", "Pipedrive"], ["close", "close", "API_KEY", false, "business", "Close"], ["apollo", "apollo", "API_KEY", false, "business", "Apollo"], ["gong", "gong", "OAUTH2", true, "business", "Gong"], ["freshdesk", "freshdesk", "API_KEY", false, "business", "Freshdesk"], ["helpscout", "help_scout", "OAUTH2", false, "business", "Help Scout"], ["servicenow", "servicenow", "BASIC", false, "business", "ServiceNow"], ["mailchimp", "mailchimp", "OAUTH2", true, "business", "Mailchimp"], ["customerio", "customerio", "API_KEY", false, "business", "Customer.io"], ["klaviyo", "klaviyo", "API_KEY", false, "business", "Klaviyo"], ["shopify", "shopify", "API_KEY", false, "business", "Shopify"], ["quickbooks", "quickbooks", "OAUTH2", true, "business", "QuickBooks"], ["xero", "xero", "OAUTH2", false, "business", "Xero"], ["brex", "brex", "API_KEY", false, "business", "Brex"], ["buffer", "buffer", "OAUTH2", false, "business", "Buffer"], ["
|
|
4
|
+
declare const HOSTED_COMPOSIO_PLUGIN_DEFINITIONS: readonly [["notion", "notion", "OAUTH2", true, "productivity", "Notion"], ["jira", "jira", "OAUTH2", true, "productivity", "Jira"], ["confluence", "confluence", "OAUTH2", true, "productivity", "Confluence"], ["googlecalendar", "googlecalendar", "OAUTH2", true, "productivity", "Google Calendar"], ["microsoftteams", "microsoft_teams", "OAUTH2", true, "productivity", "Microsoft Teams"], ["outlook", "outlook", "OAUTH2", true, "productivity", "Outlook"], ["bitbucket", "bitbucket", "OAUTH2", true, "data", "Bitbucket"], ["datadog", "datadog", "API_KEY", false, "data", "Datadog"], ["pagerduty", "pagerduty", "OAUTH2", true, "data", "PagerDuty"], ["intercom", "intercom", "OAUTH2", true, "business", "Intercom"], ["zendesk", "zendesk", "OAUTH2", true, "business", "Zendesk"], ["hubspot", "hubspot", "OAUTH2", true, "business", "HubSpot"], ["supabase", "supabase", "OAUTH2", true, "data", "Supabase"], ["figma", "figma", "OAUTH2", true, "productivity", "Figma"], ["launchdarkly", "launch_darkly", "API_KEY", false, "data", "LaunchDarkly"], ["asana", "asana", "OAUTH2", true, "productivity", "Asana"], ["clickup", "clickup", "OAUTH2", true, "productivity", "ClickUp"], ["trello", "trello", "OAUTH1", true, "productivity", "Trello"], ["todoist", "todoist", "OAUTH2", true, "productivity", "Todoist"], ["airtable", "airtable", "OAUTH2", true, "productivity", "Airtable"], ["coda", "coda", "API_KEY", false, "productivity", "Coda"], ["miro", "miro", "OAUTH2", true, "productivity", "Miro"], ["sharepoint", "share_point", "OAUTH2", true, "productivity", "SharePoint"], ["onedrive", "one_drive", "OAUTH2", true, "productivity", "OneDrive"], ["googleslides", "googleslides", "OAUTH2", true, "productivity", "Google Slides"], ["googlemeet", "googlemeet", "OAUTH2", true, "productivity", "Google Meet"], ["googletasks", "googletasks", "OAUTH2", true, "productivity", "Google Tasks"], ["dropbox", "dropbox", "OAUTH2", true, "productivity", "Dropbox"], ["box", "box", "OAUTH2", true, "productivity", "Box"], ["discord", "discord", "OAUTH2", true, "productivity", "Discord"], ["discordbot", "discordbot", "OAUTH2", true, "productivity", "Discord Bot"], ["zoom", "zoom", "OAUTH2", true, "productivity", "Zoom"], ["googlechat", "google_chat", "OAUTH2", false, "productivity", "Google Chat"], ["newrelic", "new_relic", "API_KEY", false, "data", "New Relic"], ["betterstack", "better_stack", "API_KEY", false, "data", "Better Stack"], ["incidentio", "incident_io", "API_KEY", false, "data", "incident.io"], ["grafana", "grafana", "BEARER_TOKEN", false, "data", "Grafana"], ["honeycomb", "honeycomb_mcp", "DCR_OAUTH", false, "data", "Honeycomb MCP"], ["bugsnag", "bugsnag", "API_KEY", false, "data", "Bugsnag"], ["circleci", "circleci", "API_KEY", false, "data", "CircleCI"], ["buildkite", "buildkite", "API_KEY", false, "data", "Buildkite"], ["dockerhub", "docker_hub", "API_KEY", false, "data", "Docker Hub"], ["digitalocean", "digital_ocean", "OAUTH2", true, "data", "DigitalOcean"], ["railway", "railway", "API_KEY", false, "data", "Railway"], ["render", "render", "API_KEY", false, "data", "Render"], ["firebase", "firebase", "API_KEY", false, "data", "Firebase"], ["cloudinary", "cloudinary", "API_KEY", false, "data", "Cloudinary"], ["configcat", "configcat", "API_KEY", false, "data", "ConfigCat"], ["contextdev", "context_dev", "API_KEY", false, "data", "Context.dev"], ["googleanalytics", "google_analytics", "OAUTH2", true, "data", "Google Analytics"], ["googlebigquery", "googlebigquery", "OAUTH2", true, "data", "Google BigQuery"], ["amplitude", "amplitude", "API_KEY", false, "data", "Amplitude"], ["mixpanel", "mixpanel", "BASIC", false, "data", "Mixpanel"], ["segment", "segment", "API_KEY", false, "data", "Segment"], ["databricks", "databricks", "API_KEY", false, "data", "Databricks"], ["snowflake", "snowflake", "OAUTH2", false, "data", "Snowflake"], ["algolia", "algolia", "API_KEY", false, "data", "Algolia"], ["elasticsearch", "elasticsearch", "API_KEY", false, "data", "Elasticsearch"], ["salesforce", "salesforce", "OAUTH2", true, "business", "Salesforce"], ["pipedrive", "pipedrive", "API_KEY", false, "business", "Pipedrive"], ["close", "close", "API_KEY", false, "business", "Close"], ["apollo", "apollo", "API_KEY", false, "business", "Apollo"], ["gong", "gong", "OAUTH2", true, "business", "Gong"], ["freshdesk", "freshdesk", "API_KEY", false, "business", "Freshdesk"], ["helpscout", "help_scout", "OAUTH2", false, "business", "Help Scout"], ["servicenow", "servicenow", "BASIC", false, "business", "ServiceNow"], ["mailchimp", "mailchimp", "OAUTH2", true, "business", "Mailchimp"], ["customerio", "customerio", "API_KEY", false, "business", "Customer.io"], ["klaviyo", "klaviyo", "API_KEY", false, "business", "Klaviyo"], ["shopify", "shopify", "API_KEY", false, "business", "Shopify"], ["quickbooks", "quickbooks", "OAUTH2", true, "business", "QuickBooks"], ["xero", "xero", "OAUTH2", false, "business", "Xero"], ["brex", "brex", "API_KEY", false, "business", "Brex"], ["buffer", "buffer", "OAUTH2", false, "business", "Buffer"], ["canva", "canva", "OAUTH2", true, "productivity", "Canva"], ["webflow", "webflow", "API_KEY", false, "business", "Webflow"], ["firecrawl", "firecrawl", "API_KEY", false, "data", "Firecrawl"], ["browserbase", "browserbase_tool", "API_KEY", false, "data", "Browserbase"], ["exa", "exa", "API_KEY", false, "data", "Exa"], ["youtube", "youtube", "OAUTH2", true, "business", "YouTube"], ["twitter", "twitter", "OAUTH2", false, "business", "Twitter/X"], ["instagram", "instagram", "OAUTH2", true, "business", "Instagram"], ["facebook", "facebook", "OAUTH2", true, "business", "Facebook"]];
|
|
5
5
|
type HostedComposioPlugin = {
|
|
6
6
|
id: (typeof HOSTED_COMPOSIO_PLUGIN_DEFINITIONS)[number][0];
|
|
7
7
|
backend: 'composio';
|