replicas-engine 0.1.465 → 0.1.466

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.
Files changed (2) hide show
  1. package/dist/src/index.js +38 -7
  2. package/package.json +1 -1
package/dist/src/index.js CHANGED
@@ -44,6 +44,7 @@ function createErrorResult(error) {
44
44
 
45
45
  // ../shared/src/agent.ts
46
46
  var VALID_AGENT_PROVIDERS = ["claude", "codex", "cursor", "opencode", "pi", "relay"];
47
+ var VALID_RELAY_SUBAGENT_PROVIDERS = VALID_AGENT_PROVIDERS;
47
48
  var VALID_CODING_AGENT_PROVIDERS = VALID_AGENT_PROVIDERS.filter(
48
49
  (provider) => provider !== "relay"
49
50
  );
@@ -572,7 +573,7 @@ var WORKSPACE_SIZES = ["small", "large"];
572
573
  var INVALID_WORKSPACE_SIZE_ERROR = `Invalid size: must be one of ${WORKSPACE_SIZES.join(", ")}`;
573
574
 
574
575
  // ../shared/src/e2b.ts
575
- var E2B_TEMPLATE_NAME = "replicas-sandbox-2026-07-19-v17";
576
+ var E2B_TEMPLATE_NAME = "replicas-sandbox-2026-07-19-v18";
576
577
 
577
578
  // ../shared/src/runtime-env.ts
578
579
  function shellQuotePosix(value) {
@@ -2517,6 +2518,7 @@ var EMPTY_AGENT_DEFAULT_SETTINGS = {
2517
2518
  goal_mode: null,
2518
2519
  fast_mode: null
2519
2520
  };
2521
+ var DEFAULT_RELAY_SUBAGENT_PROVIDERS = [...VALID_RELAY_SUBAGENT_PROVIDERS];
2520
2522
  var DEFAULT_USER_PREFERENCES = {
2521
2523
  default_agent: "codex",
2522
2524
  default_model: null,
@@ -4773,6 +4775,18 @@ async function monolithRequest(path6, init = {}) {
4773
4775
  });
4774
4776
  }
4775
4777
  var MonolithService = class {
4778
+ async getRelaySubagentProviders() {
4779
+ try {
4780
+ const response = await monolithRequest("/v1/engine/relay-subagent-providers", { method: "GET" });
4781
+ if (!response.ok) {
4782
+ return null;
4783
+ }
4784
+ const body = await response.json();
4785
+ return isRecord(body) && Array.isArray(body.providers) && body.providers.every((provider) => typeof provider === "string" && isValidAgentProvider(provider)) ? body.providers : null;
4786
+ } catch {
4787
+ return null;
4788
+ }
4789
+ }
4776
4790
  async sendEvent(event) {
4777
4791
  if (!ENGINE_ENV.WORKSPACE_ID) {
4778
4792
  return;
@@ -9761,7 +9775,7 @@ var DEFAULT_CODEX_ARGS = ["app-server", "--listen", "stdio://"];
9761
9775
  var MIN_CODEX_CLI_VERSION = "0.144.6";
9762
9776
  var CODEX_UPGRADE_TIMEOUT_MS = 12e4;
9763
9777
  var codexCliVersionEnsured = null;
9764
- var ENGINE_PACKAGE_VERSION = "0.1.465";
9778
+ var ENGINE_PACKAGE_VERSION = "0.1.466";
9765
9779
  var INITIALIZE_METHOD = "initialize";
9766
9780
  var INITIALIZED_NOTIFICATION = "initialized";
9767
9781
  var ACCOUNT_LOGIN_START_METHOD = "account/login/start";
@@ -13173,6 +13187,9 @@ import { createSdkMcpServer, tool } from "@anthropic-ai/claude-agent-sdk";
13173
13187
  import { z as z3 } from "zod";
13174
13188
 
13175
13189
  // src/managers/relay-providers.ts
13190
+ function isRelaySubagentProviderAllowed(provider, allowedProviders) {
13191
+ return allowedProviders.includes(provider);
13192
+ }
13176
13193
  function getAvailableRelayProviders(availability) {
13177
13194
  const codexAvailable = availability.codexAvailable ?? false;
13178
13195
  const cursorAvailable = availability.cursorAvailable ?? false;
@@ -13277,7 +13294,7 @@ async function getChatFinalResponse(chatId) {
13277
13294
  }
13278
13295
  return "[No response from subagent]";
13279
13296
  }
13280
- function buildSpawnAgentTool(parentChatId, availability = {}) {
13297
+ function buildSpawnAgentTool(parentChatId, availability = {}, getAllowedProviders = () => monolithService.getRelaySubagentProviders()) {
13281
13298
  const codexAvailable = availability.codexAvailable ?? false;
13282
13299
  const cursorAvailable = availability.cursorAvailable ?? false;
13283
13300
  const opencodeAvailable = availability.opencodeAvailable ?? false;
@@ -13316,9 +13333,23 @@ You will also receive the chatId so you can send follow-up messages or clean up
13316
13333
  },
13317
13334
  async (args) => {
13318
13335
  try {
13336
+ const provider = args.provider;
13337
+ const allowedProviders = await getAllowedProviders();
13338
+ if (!allowedProviders) {
13339
+ return {
13340
+ content: [{ type: "text", text: "Unable to verify Relay subagent settings. Please try again." }],
13341
+ isError: true
13342
+ };
13343
+ }
13344
+ if (!isRelaySubagentProviderAllowed(provider, allowedProviders)) {
13345
+ return {
13346
+ content: [{ type: "text", text: `Relay is not allowed to use ${provider} as a subagent.` }],
13347
+ isError: true
13348
+ };
13349
+ }
13319
13350
  const createBody = {
13320
- provider: args.provider,
13321
- title: args.title || `Subagent (${args.provider})`
13351
+ provider,
13352
+ title: args.title || `Subagent (${provider})`
13322
13353
  };
13323
13354
  if (parentChatId) {
13324
13355
  createBody.parentChatId = parentChatId;
@@ -13435,11 +13466,11 @@ var deleteAgentTool = tool(
13435
13466
  }
13436
13467
  }
13437
13468
  );
13438
- function createRelayMcpServer(parentChatId, availability = {}) {
13469
+ function createRelayMcpServer(parentChatId, availability = {}, getAllowedProviders) {
13439
13470
  return createSdkMcpServer({
13440
13471
  name: "relay-subagent-tools",
13441
13472
  version: "1.0.0",
13442
- tools: [buildSpawnAgentTool(parentChatId, availability), messageAgentTool, deleteAgentTool]
13473
+ tools: [buildSpawnAgentTool(parentChatId, availability, getAllowedProviders), messageAgentTool, deleteAgentTool]
13443
13474
  });
13444
13475
  }
13445
13476
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "replicas-engine",
3
- "version": "0.1.465",
3
+ "version": "0.1.466",
4
4
  "description": "Lightweight API server for Replicas workspaces",
5
5
  "type": "module",
6
6
  "main": "dist/src/index.js",