replicas-engine 0.1.695 → 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.
@@ -668,6 +668,7 @@ var AGENT_CREDENTIAL_METHODS_IN_ORDER = {
668
668
  { method: CREDENTIAL_METHOD.OPENROUTER, credentialType: CREDENTIAL_TYPE.OPENROUTER_API_KEY }
669
669
  ],
670
670
  [AGENT.PI]: [
671
+ { method: CREDENTIAL_METHOD.OPENCODE_GO, credentialType: CREDENTIAL_TYPE.OPENCODE_GO_API_KEY },
671
672
  { method: CREDENTIAL_METHOD.ASTER, credentialType: CREDENTIAL_TYPE.ASTER_API_KEY },
672
673
  { method: CREDENTIAL_METHOD.OPENROUTER, credentialType: CREDENTIAL_TYPE.OPENROUTER_API_KEY }
673
674
  ]
@@ -3842,7 +3843,6 @@ var HOSTED_COMPOSIO_PLUGIN_DEFINITIONS = [
3842
3843
  ["xero", "xero", "OAUTH2", false, "business", "Xero"],
3843
3844
  ["brex", "brex", "API_KEY", false, "business", "Brex"],
3844
3845
  ["buffer", "buffer", "OAUTH2", false, "business", "Buffer"],
3845
- ["docusign", "docusign", "OAUTH2", false, "business", "DocuSign"],
3846
3846
  ["canva", "canva", "OAUTH2", true, "productivity", "Canva"],
3847
3847
  ["webflow", "webflow", "API_KEY", false, "business", "Webflow"],
3848
3848
  ["firecrawl", "firecrawl", "API_KEY", false, "data", "Firecrawl"],
@@ -6765,7 +6765,7 @@ var DEFAULT_CODEX_ARGS = [
6765
6765
  var MIN_CODEX_CLI_VERSION = "0.144.6";
6766
6766
  var CODEX_UPGRADE_TIMEOUT_MS = 12e4;
6767
6767
  var codexCliVersionEnsured = null;
6768
- var ENGINE_PACKAGE_VERSION = "0.1.695";
6768
+ var ENGINE_PACKAGE_VERSION = "0.1.697";
6769
6769
  var INITIALIZE_METHOD = "initialize";
6770
6770
  var INITIALIZED_NOTIFICATION = "initialized";
6771
6771
  var ACCOUNT_LOGIN_START_METHOD = "account/login/start";
@@ -7,7 +7,7 @@ import {
7
7
  headlessAgentRequestSchema,
8
8
  putPresignedFile,
9
9
  recoverCompletedTurn
10
- } from "./chunk-V3DKSYHM.js";
10
+ } from "./chunk-2YKP6MBQ.js";
11
11
 
12
12
  // src/headless-agent.ts
13
13
  import { createHash } from "crypto";
package/dist/src/index.js CHANGED
@@ -192,7 +192,7 @@ import {
192
192
  serializeCanvasContentResponse,
193
193
  shellQuotePosix,
194
194
  stripAgentDiagnosticErrors
195
- } from "./chunk-V3DKSYHM.js";
195
+ } from "./chunk-2YKP6MBQ.js";
196
196
 
197
197
  // src/index.ts
198
198
  import { serve } from "@hono/node-server";
@@ -9278,6 +9278,8 @@ import { z as z4 } from "zod";
9278
9278
  // ../shared/src/credentials/opencode-go.ts
9279
9279
  import { z as z3 } from "zod";
9280
9280
  var OPENCODE_GO_PROVIDER = "opencode-go";
9281
+ var OPENCODE_GO_BASE_URL = "https://opencode.ai/zen/go/v1";
9282
+ var OPENCODE_MODELS_DEV_URL = "https://models.dev/api.json";
9281
9283
  var DEFAULT_OPENCODE_GO_MODEL = "glm-5.2";
9282
9284
  var opencodeGoModelsDevSchema = z3.object({
9283
9285
  "opencode-go": z3.object({
@@ -9289,7 +9291,52 @@ var opencodeGoModelsDevSchema = z3.object({
9289
9291
  }))
9290
9292
  }).optional()
9291
9293
  });
9294
+ function parseOpenCodeGoCatalog(value) {
9295
+ const parsed = opencodeGoModelsDevSchema.safeParse(value);
9296
+ const provider = parsed.success ? parsed.data["opencode-go"] : void 0;
9297
+ if (!provider) return null;
9298
+ const models = Object.fromEntries(
9299
+ Object.entries(provider.models).filter(([, definition]) => definition.status !== "deprecated" && definition.status !== "alpha").map(([id, definition]) => [id, {
9300
+ id: definition.id ?? id,
9301
+ name: definition.name,
9302
+ ...definition.description ? { description: definition.description } : {},
9303
+ ...definition.status ? { status: definition.status } : {}
9304
+ }])
9305
+ );
9306
+ if (Object.keys(models).length === 0) return null;
9307
+ return { models, authoritative: true };
9308
+ }
9292
9309
  var OPENCODE_GO_CATALOG_CACHE_MS = 5 * 6e4;
9310
+ var openCodeGoCatalogCache;
9311
+ var openCodeGoCatalogRequest;
9312
+ async function fetchOpenCodeGoCatalog(fallbackModelIds = [DEFAULT_OPENCODE_GO_MODEL]) {
9313
+ if (openCodeGoCatalogCache && openCodeGoCatalogCache.expiresAt > Date.now()) {
9314
+ return openCodeGoCatalogCache.catalog;
9315
+ }
9316
+ openCodeGoCatalogRequest ??= (async () => {
9317
+ const response = await fetch(OPENCODE_MODELS_DEV_URL, { signal: AbortSignal.timeout(5e3) });
9318
+ if (!response.ok) throw new Error(`Failed to load OpenCode Go models (${response.status})`);
9319
+ const catalog = parseOpenCodeGoCatalog(await response.json());
9320
+ if (!catalog) throw new Error("OpenCode Go model catalog is unavailable");
9321
+ return catalog;
9322
+ })();
9323
+ try {
9324
+ const catalog = await openCodeGoCatalogRequest;
9325
+ openCodeGoCatalogCache = { catalog, expiresAt: Date.now() + OPENCODE_GO_CATALOG_CACHE_MS };
9326
+ return catalog;
9327
+ } catch {
9328
+ if (openCodeGoCatalogCache) return openCodeGoCatalogCache.catalog;
9329
+ return {
9330
+ authoritative: false,
9331
+ models: Object.fromEntries(fallbackModelIds.map((id) => [id, {
9332
+ id,
9333
+ name: id === DEFAULT_OPENCODE_GO_MODEL ? "GLM 5.2" : id
9334
+ }]))
9335
+ };
9336
+ } finally {
9337
+ openCodeGoCatalogRequest = void 0;
9338
+ }
9339
+ }
9293
9340
 
9294
9341
  // src/managers/opencode-manager.ts
9295
9342
  import {
@@ -9372,17 +9419,21 @@ async function getDefaultOpencodeModel(provider) {
9372
9419
  function getOpenCodeGoModel(model) {
9373
9420
  return model.replace(/^[^/]+\//, "");
9374
9421
  }
9375
- function opencodeConfig(provider, model) {
9422
+ function opencodeConfig(provider, model, providerModels = [model]) {
9376
9423
  let config;
9377
9424
  if (provider === OPENCODE_GO_PROVIDER) {
9378
9425
  config = {
9379
9426
  enabled_providers: [OPENCODE_GO_PROVIDER],
9380
9427
  model: `${OPENCODE_GO_PROVIDER}/${model}`,
9428
+ provider: {
9429
+ [OPENCODE_GO_PROVIDER]: {
9430
+ models: Object.fromEntries(providerModels.map((candidate) => [candidate, {}]))
9431
+ }
9432
+ },
9381
9433
  permission: OPENCODE_WORKSPACE_PERMISSION,
9382
9434
  share: "disabled"
9383
9435
  };
9384
9436
  } else if (provider === ASTER_PROVIDER) {
9385
- const models = getConfiguredOpencodeModels(model, provider);
9386
9437
  config = {
9387
9438
  enabled_providers: [ASTER_PROVIDER],
9388
9439
  model: `${ASTER_PROVIDER}/${model}`,
@@ -9391,20 +9442,19 @@ function opencodeConfig(provider, model) {
9391
9442
  npm: "@ai-sdk/openai-compatible",
9392
9443
  name: "Aster",
9393
9444
  options: { baseURL: ASTER_BASE_URL },
9394
- models: Object.fromEntries(models.map((candidate) => [candidate, {}]))
9445
+ models: Object.fromEntries(providerModels.map((candidate) => [candidate, {}]))
9395
9446
  }
9396
9447
  },
9397
9448
  permission: OPENCODE_WORKSPACE_PERMISSION,
9398
9449
  share: "disabled"
9399
9450
  };
9400
9451
  } else {
9401
- const models = getConfiguredOpencodeModels(model, provider);
9402
9452
  config = {
9403
9453
  enabled_providers: ["openrouter"],
9404
9454
  model: `openrouter/${model}`,
9405
9455
  provider: {
9406
9456
  openrouter: {
9407
- models: Object.fromEntries(models.map((candidate) => [candidate, {}]))
9457
+ models: Object.fromEntries(providerModels.map((candidate) => [candidate, {}]))
9408
9458
  }
9409
9459
  },
9410
9460
  permission: OPENCODE_WORKSPACE_PERMISSION,
@@ -9413,9 +9463,6 @@ function opencodeConfig(provider, model) {
9413
9463
  }
9414
9464
  return config;
9415
9465
  }
9416
- function getConfiguredOpencodeModels(model, provider) {
9417
- return [.../* @__PURE__ */ new Set([model, ...provider === ASTER_PROVIDER ? ASTER_MODELS : []])];
9418
- }
9419
9466
  function opencodeCommandToSlashCommand(command) {
9420
9467
  return createProviderSlashCommand("opencode", command.name, command.description);
9421
9468
  }
@@ -9545,6 +9592,7 @@ var OpencodeManager = class extends CodingAgentManager {
9545
9592
  historyFile;
9546
9593
  activeAbortController = null;
9547
9594
  configuredModels = /* @__PURE__ */ new Set();
9595
+ clientUpdate = Promise.resolve();
9548
9596
  providerId = "openrouter";
9549
9597
  eventAbortController = null;
9550
9598
  eventSubscriptionReady = Promise.resolve();
@@ -9609,7 +9657,7 @@ var OpencodeManager = class extends CodingAgentManager {
9609
9657
  this.slashCommandsRequest ??= (async () => {
9610
9658
  try {
9611
9659
  const provider = await getOpencodeProvider();
9612
- const client2 = await this.ensureClient(await getDefaultOpencodeModel(provider), provider);
9660
+ const client2 = await this.ensureClient(await getDefaultOpencodeModel(provider), provider, true);
9613
9661
  const directories = [this.workingDirectory, ...await getAgentAdditionalDirectories()];
9614
9662
  const perDirectory = await Promise.all(directories.map(async (directory) => {
9615
9663
  try {
@@ -9639,68 +9687,80 @@ var OpencodeManager = class extends CodingAgentManager {
9639
9687
  })();
9640
9688
  return this.slashCommandsRequest;
9641
9689
  }
9642
- async ensureClient(model, providerId) {
9643
- if (this.client && this.providerId !== providerId) {
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
+ }
9644
9719
  this.eventAbortController?.abort();
9645
9720
  this.server?.close();
9646
- this.client = null;
9647
- this.server = null;
9648
- this.configuredModels.clear();
9649
- }
9650
- this.providerId = providerId;
9651
- const configuredModel = providerId === OPENCODE_GO_PROVIDER ? getOpenCodeGoModel(model) : model;
9652
- const providerModels = providerId === ASTER_PROVIDER ? ASTER_MODELS : providerId === "openrouter" ? await getAllowedOpenRouterModels() : null;
9653
- if (providerModels && !providerModels.includes(configuredModel)) {
9654
- throw new Error(`Model ${configuredModel} is not available through ${providerId}.`);
9655
- }
9656
- if (this.client && (providerId === OPENCODE_GO_PROVIDER || this.configuredModels.has(configuredModel))) {
9657
- return this.client;
9658
- }
9659
- if (!await hasOpencodeCredentials(providerId)) {
9660
- throw new Error("OpenCode Go, Aster, or OpenRouter credentials are not configured for Opencode in this workspace.");
9661
- }
9662
- this.eventAbortController?.abort();
9663
- this.server?.close();
9664
- const pathEntries = (process.env.PATH ?? "").split(delimiter).filter(Boolean);
9665
- if (!pathEntries.includes(OPENCODE_SHIM_DIR)) {
9666
- process.env.PATH = [OPENCODE_SHIM_DIR, ...pathEntries].join(delimiter);
9667
- }
9668
- const password = process.env.OPENCODE_SERVER_PASSWORD || randomBytes2(24).toString("base64url");
9669
- process.env.OPENCODE_SERVER_PASSWORD = password;
9670
- const config = opencodeConfig(providerId, configuredModel);
9671
- const mcp = await readProvisionedOpencodeMcpConfig();
9672
- if (mcp && Object.keys(mcp).length > 0) config.mcp = mcp;
9673
- const server = await createOpencodeServer({
9674
- port: 0,
9675
- timeout: OPENCODE_SERVER_STARTUP_TIMEOUT_MS,
9676
- config
9677
- });
9678
- const client2 = createOpencodeClient({
9679
- baseUrl: server.url,
9680
- fetch: opencodeFetch,
9681
- headers: {
9682
- Authorization: `Basic ${Buffer.from(`opencode:${password}`).toString("base64")}`
9683
- }
9684
- });
9685
- this.client = client2;
9686
- this.server = server;
9687
- this.configuredModels = this.providerId === OPENCODE_GO_PROVIDER ? /* @__PURE__ */ new Set() : new Set(getConfiguredOpencodeModels(model, providerId));
9688
- const eventController = new AbortController();
9689
- this.eventAbortController = eventController;
9690
- this.eventSubscriptionReady = new Promise((resolve5) => {
9691
- this.resolveEventSubscriptionReady = resolve5;
9692
- });
9693
- this.subscribeToEvents(client2, eventController).catch((error) => {
9694
- this.resolveEventSubscriptionReady?.();
9695
- this.resolveEventSubscriptionReady = null;
9696
- console.error("[OpencodeManager] Event subscription failed:", error);
9697
- this.recordHistoryEvent("opencode-error", opencodeErrorPayload(error), this.historyFile);
9698
- });
9699
- await Promise.race([
9700
- this.eventSubscriptionReady,
9701
- new Promise((resolve5) => setTimeout(resolve5, 2e3))
9702
- ]);
9703
- 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
+ }
9704
9764
  }
9705
9765
  async ensureSession(client2, model, agent, variant) {
9706
9766
  if (this.sessionId) {
@@ -10108,6 +10168,31 @@ function registerOpenRouterModels(modelRegistry, apiKey, modelIds) {
10108
10168
  ]
10109
10169
  });
10110
10170
  }
10171
+ function registerOpenAiCompatibleProvider(modelRegistry, {
10172
+ providerId,
10173
+ name,
10174
+ apiKey,
10175
+ baseUrl,
10176
+ models
10177
+ }) {
10178
+ modelRegistry.registerProvider(providerId, {
10179
+ name,
10180
+ api: "openai-completions",
10181
+ apiKey,
10182
+ baseUrl,
10183
+ authHeader: true,
10184
+ models: models.map((model) => ({
10185
+ id: model.id,
10186
+ name: model.name,
10187
+ api: "openai-completions",
10188
+ reasoning: true,
10189
+ input: ["text"],
10190
+ cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
10191
+ contextWindow: model.contextWindow ?? 131072,
10192
+ maxTokens: 65536
10193
+ }))
10194
+ });
10195
+ }
10111
10196
  function eventPayload(event) {
10112
10197
  return isRecord2(event) ? { ...event } : { value: event };
10113
10198
  }
@@ -10191,7 +10276,7 @@ var PiManager = class extends CodingAgentManager {
10191
10276
  async enqueueMessage(request, onAccepted) {
10192
10277
  await this.initialized;
10193
10278
  if (!this.session && !this.getProviderCredentials()) {
10194
- throw new Error("Aster or OpenRouter authentication is missing for Pi. Add an API key in Settings \u2192 Coding agents.");
10279
+ throw new Error("OpenCode Go, Aster, or OpenRouter authentication is missing for Pi. Add an API key in Settings \u2192 Coding agents.");
10195
10280
  }
10196
10281
  return this.messageQueue.enqueue(request, onAccepted);
10197
10282
  }
@@ -10223,32 +10308,37 @@ var PiManager = class extends CodingAgentManager {
10223
10308
  }
10224
10309
  const authStorage = AuthStorage.create(PI_AUTH_PATH);
10225
10310
  const credentials = this.getProviderCredentials(authStorage);
10226
- if (!credentials) throw new Error("Aster or OpenRouter API key is not configured for Pi.");
10311
+ if (!credentials) throw new Error("OpenCode Go, Aster, or OpenRouter API key is not configured for Pi.");
10227
10312
  this.providerId = credentials.provider;
10228
10313
  this.providerApiKey = credentials.apiKey;
10229
10314
  const modelRegistry = ModelRegistry.create(authStorage);
10230
- if (this.providerId === ASTER_PROVIDER) {
10231
- modelRegistry.registerProvider(ASTER_PROVIDER, {
10315
+ let defaultModel = DEFAULT_ASTER_MODEL;
10316
+ if (this.providerId === OPENCODE_GO_PROVIDER) {
10317
+ const catalog = await fetchOpenCodeGoCatalog([request.model ?? DEFAULT_OPENCODE_GO_MODEL]);
10318
+ const models = Object.entries(catalog.models);
10319
+ defaultModel = catalog.models[DEFAULT_OPENCODE_GO_MODEL] ? DEFAULT_OPENCODE_GO_MODEL : models[0]?.[0] ?? DEFAULT_OPENCODE_GO_MODEL;
10320
+ registerOpenAiCompatibleProvider(modelRegistry, {
10321
+ providerId: OPENCODE_GO_PROVIDER,
10322
+ name: "OpenCode Go",
10323
+ apiKey: credentials.apiKey,
10324
+ baseUrl: OPENCODE_GO_BASE_URL,
10325
+ models: models.map(([id, model2]) => ({ id, name: model2.name }))
10326
+ });
10327
+ } else if (this.providerId === ASTER_PROVIDER) {
10328
+ registerOpenAiCompatibleProvider(modelRegistry, {
10329
+ providerId: ASTER_PROVIDER,
10232
10330
  name: "Aster",
10233
- api: "openai-completions",
10234
10331
  apiKey: credentials.apiKey,
10235
10332
  baseUrl: ASTER_BASE_URL,
10236
- authHeader: true,
10237
10333
  models: ASTER_MODELS.map((id) => ({
10238
10334
  id,
10239
10335
  name: ASTER_MODEL_LABELS[id] ?? id,
10240
- api: "openai-completions",
10241
- reasoning: true,
10242
- input: ["text"],
10243
- cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
10244
- contextWindow: id === "kimi-k3" ? 1e6 : 131072,
10245
- maxTokens: 65536
10336
+ contextWindow: id === "kimi-k3" ? 1e6 : 131072
10246
10337
  }))
10247
10338
  });
10248
10339
  }
10249
- let defaultModel = DEFAULT_ASTER_MODEL;
10250
10340
  let allowedModels = null;
10251
- if (this.providerId !== ASTER_PROVIDER) {
10341
+ if (this.providerId === "openrouter") {
10252
10342
  allowedModels = await getAllowedOpenRouterModels();
10253
10343
  registerOpenRouterModels(modelRegistry, credentials.apiKey, allowedModels);
10254
10344
  defaultModel = allowedModels[0] ?? DEFAULT_PI_MODEL;
@@ -10286,7 +10376,7 @@ var PiManager = class extends CodingAgentManager {
10286
10376
  return this.session;
10287
10377
  }
10288
10378
  getProviderCredentials(authStorage = AuthStorage.create(PI_AUTH_PATH)) {
10289
- for (const provider of [ASTER_PROVIDER, "openrouter"]) {
10379
+ for (const provider of [OPENCODE_GO_PROVIDER, ASTER_PROVIDER, "openrouter"]) {
10290
10380
  const credential = authStorage.get(provider);
10291
10381
  if (credential?.type === "api_key") return { provider, apiKey: credential.key };
10292
10382
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "replicas-engine",
3
- "version": "0.1.695",
3
+ "version": "0.1.697",
4
4
  "description": "Lightweight API server for Replicas workspaces",
5
5
  "type": "module",
6
6
  "main": "dist/src/index.js",
@@ -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"], ["docusign", "docusign", "OAUTH2", false, "business", "DocuSign"], ["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"]];
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';