replicas-engine 0.1.1033 → 0.1.1035

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.
@@ -5,12 +5,12 @@ import {
5
5
  getCodexAspHost,
6
6
  restartCodexAspHost,
7
7
  restartCodexAspHostIfRunning
8
- } from "./chunk-TOINZMHY.js";
9
- import "./chunk-EWPMMKGJ.js";
10
- import "./chunk-GEAXVMEU.js";
11
- import "./chunk-JOX732WB.js";
8
+ } from "./chunk-ST4ODIF2.js";
9
+ import "./chunk-WRAVQEOB.js";
10
+ import "./chunk-F52XMCMW.js";
11
+ import "./chunk-SEYXPQY7.js";
12
12
  import "./chunk-UZSNFLDQ.js";
13
- import "./chunk-AXT547FH.js";
13
+ import "./chunk-MD2DJUY2.js";
14
14
  import "./chunk-VEQXQN22.js";
15
15
  export {
16
16
  getCodexAspHost,
@@ -3,10 +3,10 @@ import { createRequire as __createRequire } from 'node:module';
3
3
  const require = __createRequire(import.meta.url);
4
4
  import {
5
5
  execFileAsync
6
- } from "./chunk-JOX732WB.js";
6
+ } from "./chunk-SEYXPQY7.js";
7
7
  import {
8
8
  isVersionBelow
9
- } from "./chunk-AXT547FH.js";
9
+ } from "./chunk-MD2DJUY2.js";
10
10
 
11
11
  // src/utils/codex-agent-env.ts
12
12
  function buildCodexAgentEnv(source = process.env) {
@@ -240,7 +240,7 @@ function getCodexModelProvider(method) {
240
240
  if (method === "foundry") return "azure";
241
241
  return method === "ollama" || method === "openai-compatible" ? "replicas_openai_compatible" : "openai";
242
242
  }
243
- var ENGINE_PACKAGE_VERSION = "0.1.1033";
243
+ var ENGINE_PACKAGE_VERSION = "0.1.1035";
244
244
  var INITIALIZE_METHOD = "initialize";
245
245
  var INITIALIZED_NOTIFICATION = "initialized";
246
246
  var ACCOUNT_LOGIN_START_METHOD = "account/login/start";
@@ -9216,6 +9216,7 @@ var HOSTED_COMPOSIO_PLUGIN_DEFINITIONS = [
9216
9216
  ["onedrive", "one_drive", "OAUTH2", true, "productivity", "OneDrive"],
9217
9217
  ["googleslides", "googleslides", "OAUTH2", true, "productivity", "Google Slides"],
9218
9218
  ["googlemeet", "googlemeet", "OAUTH2", true, "productivity", "Google Meet"],
9219
+ ["circleback", "circleback_mcp", "DCR_OAUTH", false, "productivity", "Circleback"],
9219
9220
  ["granola", "granola_mcp", "DCR_OAUTH", false, "productivity", "Granola"],
9220
9221
  ["mercury", "mercury_mcp", "DCR_OAUTH", false, "business", "Mercury"],
9221
9222
  ["googletasks", "googletasks", "OAUTH2", true, "productivity", "Google Tasks"],
@@ -3,7 +3,7 @@ import { createRequire as __createRequire } from 'node:module';
3
3
  const require = __createRequire(import.meta.url);
4
4
  import {
5
5
  HOOK_EXEC_MAX_BUFFER_BYTES
6
- } from "./chunk-AXT547FH.js";
6
+ } from "./chunk-MD2DJUY2.js";
7
7
 
8
8
  // src/utils/exec.ts
9
9
  import { exec, execFile } from "child_process";
@@ -5,15 +5,15 @@ import {
5
5
  ENGINE_ENV,
6
6
  monolithRequest,
7
7
  setAgentCredentialSnapshot
8
- } from "./chunk-EWPMMKGJ.js";
8
+ } from "./chunk-WRAVQEOB.js";
9
9
  import {
10
10
  AppServerProcess,
11
11
  buildCodexAgentEnv
12
- } from "./chunk-GEAXVMEU.js";
12
+ } from "./chunk-F52XMCMW.js";
13
13
  import {
14
14
  SUBPROCESS_MAX_BUFFER,
15
15
  execFileAsync
16
- } from "./chunk-JOX732WB.js";
16
+ } from "./chunk-SEYXPQY7.js";
17
17
  import {
18
18
  isRecord
19
19
  } from "./chunk-UZSNFLDQ.js";
@@ -28,7 +28,7 @@ import {
28
28
  listOpenAICompatibleModels,
29
29
  readOllamaAuthEnv,
30
30
  resolveOpenAICompatibleModelsUrl
31
- } from "./chunk-AXT547FH.js";
31
+ } from "./chunk-MD2DJUY2.js";
32
32
 
33
33
  // src/managers/codex-token-manager.ts
34
34
  import { promises as fs } from "fs";
@@ -264,7 +264,7 @@ var CodexTokenManager = class extends BaseRefreshManager {
264
264
  await this.applyCredentialUpdate(++this.credentialGeneration, async () => {
265
265
  await this.applyCredentialsResponse(data);
266
266
  setAgentCredentialSnapshot("codex", data);
267
- const { restartCodexAspHostIfRunning: restartCodexAspHostIfRunning2 } = await import("./asp-host-LOJZMJBA.js");
267
+ const { restartCodexAspHostIfRunning: restartCodexAspHostIfRunning2 } = await import("./asp-host-CRMYVVBY.js");
268
268
  await restartCodexAspHostIfRunning2();
269
269
  });
270
270
  await this.start(true);
@@ -285,7 +285,7 @@ var CodexTokenManager = class extends BaseRefreshManager {
285
285
  const accountChanged = ENGINE_ENV.REPLICAS_AGENT_CREDENTIALS.codex?.credentialId !== data.credentialId;
286
286
  await this.applyCredentialsResponse(data);
287
287
  if (restartOnChange && (accountChanged || CODEX_AUTH_ENV_KEYS.some((key, index) => process.env[key] !== previousEnv[index]))) {
288
- const { restartCodexAspHostIfRunning: restartCodexAspHostIfRunning2 } = await import("./asp-host-LOJZMJBA.js");
288
+ const { restartCodexAspHostIfRunning: restartCodexAspHostIfRunning2 } = await import("./asp-host-CRMYVVBY.js");
289
289
  await restartCodexAspHostIfRunning2();
290
290
  }
291
291
  setAgentCredentialSnapshot("codex", data);
@@ -3,18 +3,18 @@ import { createRequire as __createRequire } from 'node:module';
3
3
  const require = __createRequire(import.meta.url);
4
4
  import {
5
5
  monolithRequest
6
- } from "./chunk-EWPMMKGJ.js";
6
+ } from "./chunk-WRAVQEOB.js";
7
7
  import {
8
8
  SUBPROCESS_MAX_BUFFER,
9
9
  execFileAsync
10
- } from "./chunk-JOX732WB.js";
10
+ } from "./chunk-SEYXPQY7.js";
11
11
  import {
12
12
  extractCommandProtectionCommandText,
13
13
  findCommandProtectionGitLookups,
14
14
  findGitCommitSignals,
15
15
  findPrMergeSignals,
16
16
  parseCommandProtectionRequest
17
- } from "./chunk-AXT547FH.js";
17
+ } from "./chunk-MD2DJUY2.js";
18
18
 
19
19
  // src/services/command-protection-service.ts
20
20
  import { readFile, stat } from "fs/promises";
@@ -14,7 +14,7 @@ import {
14
14
  isValidAgentProvider,
15
15
  parsePosixEnvFile,
16
16
  readReplicasRuntimeEnv
17
- } from "./chunk-AXT547FH.js";
17
+ } from "./chunk-MD2DJUY2.js";
18
18
 
19
19
  // src/runtime-env-loader.ts
20
20
  import { readFileSync } from "fs";
@@ -5,7 +5,7 @@ import {
5
5
  extractCommandProtectionCommandText,
6
6
  isRecord,
7
7
  parseCodeHostPrUrl
8
- } from "./chunk-AXT547FH.js";
8
+ } from "./chunk-MD2DJUY2.js";
9
9
 
10
10
  // src/services/published-pull-request-urls.ts
11
11
  function publishedPullRequestUrls(result) {
@@ -3,13 +3,13 @@ import { createRequire as __createRequire } from 'node:module';
3
3
  const require = __createRequire(import.meta.url);
4
4
  import {
5
5
  evaluateCommandProtection
6
- } from "./chunk-FMLTSHIC.js";
7
- import "./chunk-EWPMMKGJ.js";
8
- import "./chunk-JOX732WB.js";
6
+ } from "./chunk-SXWQC3OB.js";
7
+ import "./chunk-WRAVQEOB.js";
8
+ import "./chunk-SEYXPQY7.js";
9
9
  import {
10
10
  isRecord
11
11
  } from "./chunk-UZSNFLDQ.js";
12
- import "./chunk-AXT547FH.js";
12
+ import "./chunk-MD2DJUY2.js";
13
13
  import "./chunk-VEQXQN22.js";
14
14
 
15
15
  // src/command-protection-hook.ts
@@ -7,12 +7,12 @@ import {
7
7
  import {
8
8
  AppServerProcess,
9
9
  buildCodexAgentEnv
10
- } from "./chunk-GEAXVMEU.js";
11
- import "./chunk-JOX732WB.js";
10
+ } from "./chunk-F52XMCMW.js";
11
+ import "./chunk-SEYXPQY7.js";
12
12
  import {
13
13
  AGENT,
14
14
  headlessAgentRequestSchema
15
- } from "./chunk-AXT547FH.js";
15
+ } from "./chunk-MD2DJUY2.js";
16
16
  import "./chunk-VEQXQN22.js";
17
17
 
18
18
  // src/headless-agent.ts
package/dist/src/index.js CHANGED
@@ -32,7 +32,7 @@ import {
32
32
  reportCommandProtectionBlock,
33
33
  resolveDiffBase,
34
34
  runGitCommand
35
- } from "./chunk-FMLTSHIC.js";
35
+ } from "./chunk-SXWQC3OB.js";
36
36
  import {
37
37
  ACCOUNT_RATE_LIMITS_UPDATED_METHOD,
38
38
  AGENT_MESSAGE_DELTA_METHOD,
@@ -57,7 +57,7 @@ import {
57
57
  } from "./chunk-P73LGPQO.js";
58
58
  import {
59
59
  publishedPullRequestUrls
60
- } from "./chunk-ERFW4IL4.js";
60
+ } from "./chunk-X6SC3YRN.js";
61
61
  import {
62
62
  BaseRefreshManager,
63
63
  CodexAspAuthMethodChangedError,
@@ -71,7 +71,7 @@ import {
71
71
  refreshDelayMs,
72
72
  restartCodexAspHost,
73
73
  routineRefreshRequest
74
- } from "./chunk-TOINZMHY.js";
74
+ } from "./chunk-ST4ODIF2.js";
75
75
  import {
76
76
  ENGINE_ENV,
77
77
  monolithRequest,
@@ -79,16 +79,16 @@ import {
79
79
  readRuntimeEnvFile,
80
80
  reloadEngineEnv,
81
81
  setAgentCredentialSnapshot
82
- } from "./chunk-EWPMMKGJ.js";
82
+ } from "./chunk-WRAVQEOB.js";
83
83
  import {
84
84
  AspClient,
85
85
  getCodexModelProvider
86
- } from "./chunk-GEAXVMEU.js";
86
+ } from "./chunk-F52XMCMW.js";
87
87
  import {
88
88
  SUBPROCESS_MAX_BUFFER,
89
89
  execAsync,
90
90
  execFileAsync
91
- } from "./chunk-JOX732WB.js";
91
+ } from "./chunk-SEYXPQY7.js";
92
92
  import {
93
93
  isRecord as isRecord2
94
94
  } from "./chunk-UZSNFLDQ.js";
@@ -322,7 +322,7 @@ import {
322
322
  workspaceTokenRequestSchema,
323
323
  workspaceTokenResponseSchema,
324
324
  wrapInTag
325
- } from "./chunk-AXT547FH.js";
325
+ } from "./chunk-MD2DJUY2.js";
326
326
  import {
327
327
  cloneMcpConfig,
328
328
  ensureCompatibilityImports,
@@ -11074,7 +11074,7 @@ async function registerDesktopPreview(signal) {
11074
11074
  }
11075
11075
 
11076
11076
  // src/services/chat/chat-service.ts
11077
- import { appendFile as appendFile5, copyFile as copyFile2, mkdir as mkdir20, readFile as readFile19, rename as rename4, rm as rm4 } from "fs/promises";
11077
+ import { appendFile as appendFile5, copyFile as copyFile2, mkdir as mkdir20, readFile as readFile19, rename as rename4, rm as rm4, stat as stat7 } from "fs/promises";
11078
11078
  import { join as join35 } from "path";
11079
11079
  import { randomUUID as randomUUID11 } from "crypto";
11080
11080
 
@@ -60325,7 +60325,7 @@ function shouldFlushChatTranscript(historyDir, chat, chatsById, sessionHistoryCa
60325
60325
  if (!chat) return false;
60326
60326
  return chat.parentChatId ? chatsById.has(chat.parentChatId) : sessionHistoryCapture;
60327
60327
  }
60328
- async function flushAllChatTranscripts(chatsById = /* @__PURE__ */ new Map(), capture) {
60328
+ async function flushAllChatTranscripts(chatsById = /* @__PURE__ */ new Map(), capture, onUploaded) {
60329
60329
  let flushed = 0;
60330
60330
  let failed = 0;
60331
60331
  const revisions = [];
@@ -60343,9 +60343,12 @@ async function flushAllChatTranscripts(chatsById = /* @__PURE__ */ new Map(), ca
60343
60343
  const chat = chatsById.get(chatId);
60344
60344
  if (!shouldFlushChatTranscript(dir, chat, chatsById, Boolean(capture))) continue;
60345
60345
  tasks.push(
60346
- uploadChatTranscript(chatId, join32(dir, entry), chat, capture).then((artifact) => {
60346
+ uploadChatTranscript(chatId, join32(dir, entry), chat, capture).then(async (artifact) => {
60347
60347
  flushed++;
60348
60348
  if (artifact && capture) revisions.push(artifact);
60349
+ await onUploaded?.(chatId, artifact).catch((err) => {
60350
+ console.error("[ChatTranscriptUploader] recording the uploaded history version failed:", { chatId, err });
60351
+ });
60349
60352
  }).catch((err) => {
60350
60353
  failed++;
60351
60354
  console.error("[ChatTranscriptUploader] upload failed:", { chatId, err });
@@ -60368,8 +60371,10 @@ function uploadChatTranscript(chatId, filePath, chat, capture) {
60368
60371
  return upload;
60369
60372
  }
60370
60373
  async function uploadChatTranscriptNow(chatId, filePath, chat, capture) {
60374
+ const versionBeforeStat = chat?.currentHistoryVersion?.();
60371
60375
  const { size } = await stat5(filePath);
60372
60376
  if (size === 0) return null;
60377
+ const historyVersion = versionBeforeStat === chat?.currentHistoryVersion?.() ? versionBeforeStat : void 0;
60373
60378
  const metadata = chat ? {
60374
60379
  provider: chat.provider,
60375
60380
  // Chats with no turn since this engine version fall back to the auth live at upload.
@@ -60381,7 +60386,8 @@ async function uploadChatTranscriptNow(chatId, filePath, chat, capture) {
60381
60386
  updatedAt: chat.updatedAt,
60382
60387
  parentChatId: chat.parentChatId,
60383
60388
  deletedAt: chat.deletedAt ?? null,
60384
- fork: chat.fork ?? null
60389
+ fork: chat.fork ?? null,
60390
+ ...historyVersion ? { historyVersion } : {}
60385
60391
  } : {};
60386
60392
  if (capture) {
60387
60393
  const hash = createHash7("sha256");
@@ -60855,6 +60861,7 @@ function normalizePersistedChat(chat) {
60855
60861
  ...chat.chatCredential === "workspace" || agentCredentialSnapshotSchema.safeParse(chat.chatCredential).success ? { chatCredential: chat.chatCredential } : {},
60856
60862
  transcriptAuth: normalizeTranscriptAuth(chat.transcriptAuth),
60857
60863
  ...typeof chat.lastSenderKey === "string" ? { lastSenderKey: chat.lastSenderKey } : {},
60864
+ ...isRecord2(chat.uploadedHistory) && typeof chat.uploadedHistory.version === "string" && typeof chat.uploadedHistory.size === "number" ? { uploadedHistory: { version: chat.uploadedHistory.version, size: chat.uploadedHistory.size } } : {},
60858
60865
  removedMessageIds: Array.isArray(chat.removedMessageIds) ? chat.removedMessageIds.filter((id) => typeof id === "string").slice(-MAX_REMOVED_MESSAGE_IDS) : [],
60859
60866
  acceptedSendResponses: isRecord2(chat.acceptedSendResponses) ? Object.fromEntries(Object.entries(chat.acceptedSendResponses).filter((entry) => {
60860
60867
  const response = entry[1];
@@ -60898,6 +60905,10 @@ var ChatService = class {
60898
60905
  const persisted = await this.loadChats();
60899
60906
  for (const chat of persisted) {
60900
60907
  const runtime = this.createRuntimeChat(chat);
60908
+ if (chat.uploadedHistory) {
60909
+ const size = await stat7(this.historyPath(chat)).then(({ size: size2 }) => size2, () => null);
60910
+ if (size === chat.uploadedHistory.size) runtime.historyVersion = chat.uploadedHistory.version;
60911
+ }
60901
60912
  this.chats.set(chat.id, runtime);
60902
60913
  }
60903
60914
  }
@@ -61515,7 +61526,7 @@ var ChatService = class {
61515
61526
  return descendants;
61516
61527
  }
61517
61528
  async deleteHistoryFile(persisted) {
61518
- const historyPath = join35(HISTORY_DIR_BY_PROVIDER[persisted.provider], `${persisted.id}.jsonl`);
61529
+ const historyPath = this.historyPath(persisted);
61519
61530
  await Promise.all([
61520
61531
  historyPath,
61521
61532
  `${historyPath}.pages.jsonl`,
@@ -61712,15 +61723,30 @@ var ChatService = class {
61712
61723
  return count;
61713
61724
  }
61714
61725
  toTranscriptSource(chat) {
61715
- return { ...this.toSummary(chat), removedMessageIds: chat.persisted.removedMessageIds, transcriptAuth: chat.persisted.transcriptAuth };
61726
+ return {
61727
+ ...this.toSummary(chat),
61728
+ removedMessageIds: chat.persisted.removedMessageIds,
61729
+ transcriptAuth: chat.persisted.transcriptAuth,
61730
+ currentHistoryVersion: () => this.toSummary(chat).historyVersion
61731
+ };
61732
+ }
61733
+ historyPath(persisted) {
61734
+ return join35(HISTORY_DIR_BY_PROVIDER[persisted.provider], `${persisted.id}.jsonl`);
61735
+ }
61736
+ async recordUploadedHistory(chatId, artifact) {
61737
+ const chat = this.getRuntimeChat(chatId);
61738
+ const version = artifact?.metadata.historyVersion;
61739
+ if (!chat || !artifact || !version || version !== this.toSummary(chat).historyVersion) return;
61740
+ chat.persisted.uploadedHistory = { version, size: artifact.size };
61741
+ await this.persistAllChats();
61716
61742
  }
61717
61743
  uploadChatTranscript(chat) {
61718
61744
  const chatId = chat.persisted.id;
61719
61745
  uploadChatTranscript(
61720
61746
  chatId,
61721
- join35(HISTORY_DIR_BY_PROVIDER[chat.persisted.provider], `${chatId}.jsonl`),
61747
+ this.historyPath(chat.persisted),
61722
61748
  this.toTranscriptSource(chat)
61723
- ).catch((err) => {
61749
+ ).then((artifact) => this.recordUploadedHistory(chatId, artifact)).catch((err) => {
61724
61750
  console.error("[ChatService] Failed to upload chat transcript:", { chatId, err });
61725
61751
  });
61726
61752
  }
@@ -61735,14 +61761,14 @@ var ChatService = class {
61735
61761
  async flushAllChatTranscripts() {
61736
61762
  return flushAllChatTranscripts(new Map(
61737
61763
  [...this.chats.entries()].map(([chatId, chat]) => [chatId, this.toTranscriptSource(chat)])
61738
- ));
61764
+ ), void 0, (chatId, artifact) => this.recordUploadedHistory(chatId, artifact));
61739
61765
  }
61740
61766
  async flushAllWorkspaceArtifacts(capture) {
61741
61767
  const chatsById = new Map(
61742
61768
  [...this.chats.entries()].map(([chatId, chat]) => [chatId, this.toTranscriptSource(chat)])
61743
61769
  );
61744
61770
  const [chatTranscripts, canvas, repoState, engineLogs, [chatActivity]] = await Promise.all([
61745
- flushAllChatTranscripts(chatsById, capture),
61771
+ flushAllChatTranscripts(chatsById, capture, (chatId, artifact) => this.recordUploadedHistory(chatId, artifact)),
61746
61772
  flushAllCanvasItems(),
61747
61773
  flushRepoState(),
61748
61774
  flushAllEngineLogs(),
@@ -62761,7 +62787,7 @@ var RepoFileService = class {
62761
62787
  // src/v1-routes.ts
62762
62788
  import { Hono } from "hono";
62763
62789
  import { z as z5 } from "zod";
62764
- import { readdir as readdir11, stat as stat7, readFile as readFile23 } from "fs/promises";
62790
+ import { readdir as readdir11, stat as stat8, readFile as readFile23 } from "fs/promises";
62765
62791
  import { join as join40, resolve as resolve5 } from "path";
62766
62792
 
62767
62793
  // src/services/warm-hooks-service.ts
@@ -64271,7 +64297,7 @@ data: ${JSON.stringify("Terminal session not found")}
64271
64297
  const sessions = await Promise.all(
64272
64298
  logFiles.map(async (filename) => {
64273
64299
  const filePath = join40(LOG_DIR, filename);
64274
- const fileStat = await stat7(filePath);
64300
+ const fileStat = await stat8(filePath);
64275
64301
  const sessionId = filename.replace(/\.log$/, "");
64276
64302
  return {
64277
64303
  sessionId,
@@ -3,13 +3,13 @@ import { createRequire as __createRequire } from 'node:module';
3
3
  const require = __createRequire(import.meta.url);
4
4
  import {
5
5
  publishedPullRequestUrls
6
- } from "./chunk-ERFW4IL4.js";
6
+ } from "./chunk-X6SC3YRN.js";
7
7
  import {
8
8
  isRecord
9
9
  } from "./chunk-UZSNFLDQ.js";
10
10
  import {
11
11
  shouldRefreshPullRequests
12
- } from "./chunk-AXT547FH.js";
12
+ } from "./chunk-MD2DJUY2.js";
13
13
  import "./chunk-VEQXQN22.js";
14
14
 
15
15
  // src/services/post-tool-pr-notifier.ts
@@ -9,7 +9,7 @@ import {
9
9
  spawnSubagentRequestSchema,
10
10
  subagentResponseSchema,
11
11
  waitSubagentRequestSchema
12
- } from "./chunk-AXT547FH.js";
12
+ } from "./chunk-MD2DJUY2.js";
13
13
  import "./chunk-VEQXQN22.js";
14
14
 
15
15
  // src/subagent-mcp.ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "replicas-engine",
3
- "version": "0.1.1033",
3
+ "version": "0.1.1035",
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"], ["granola", "granola_mcp", "DCR_OAUTH", false, "productivity", "Granola"], ["mercury", "mercury_mcp", "DCR_OAUTH", false, "business", "Mercury"], ["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"], ["supermemory", "supermemory", "API_KEY", false, "data", "Supermemory"], ["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"]];
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"], ["circleback", "circleback_mcp", "DCR_OAUTH", false, "productivity", "Circleback"], ["granola", "granola_mcp", "DCR_OAUTH", false, "productivity", "Granola"], ["mercury", "mercury_mcp", "DCR_OAUTH", false, "business", "Mercury"], ["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"], ["supermemory", "supermemory", "API_KEY", false, "data", "Supermemory"], ["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';