replicas-engine 0.1.373 → 0.1.374

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 +75 -26
  2. package/package.json +1 -1
package/dist/src/index.js CHANGED
@@ -295,7 +295,7 @@ var WORKSPACE_SIZES = ["small", "large"];
295
295
  var INVALID_WORKSPACE_SIZE_ERROR = `Invalid size: must be one of ${WORKSPACE_SIZES.join(", ")}`;
296
296
 
297
297
  // ../shared/src/e2b.ts
298
- var E2B_TEMPLATE_NAME = "replicas-sandbox-2026-06-30-v2";
298
+ var E2B_TEMPLATE_NAME = "replicas-sandbox-2026-06-30-v3";
299
299
 
300
300
  // ../shared/src/runtime-env.ts
301
301
  function parsePosixEnvFile(content) {
@@ -2254,26 +2254,39 @@ var DEFAULT_CHAT_TITLES = {
2254
2254
  };
2255
2255
  var CLAUDE_OPUS_1M_MODEL = "opus[1m]";
2256
2256
  var LEGACY_CLAUDE_OPUS_1M_MODEL = "opus-1m";
2257
+ var CLAUDE_OPUS_4_8_MODEL = "claude-opus-4-8";
2258
+ var CLAUDE_SONNET_5_MODEL = "claude-sonnet-5";
2259
+ var CLAUDE_HAIKU_4_5_MODEL = "claude-haiku-4-5";
2260
+ var CLAUDE_OPUS_4_8_BEDROCK_MODEL = "us.anthropic.claude-opus-4-8";
2261
+ var CLAUDE_SONNET_5_BEDROCK_MODEL = "anthropic.claude-sonnet-5";
2262
+ var CLAUDE_HAIKU_4_5_BEDROCK_MODEL = "us.anthropic.claude-haiku-4-5-20251001-v1:0";
2263
+ var DEFAULT_CLAUDE_MODEL = CLAUDE_OPUS_4_8_MODEL;
2257
2264
  var DEFAULT_CODEX_MODEL = "gpt-5.5";
2258
2265
  var DEFAULT_CURSOR_MODEL = "composer-2.5";
2259
2266
  var DEFAULT_OPENCODE_MODEL = "z-ai/glm-5.2";
2260
2267
  function normalizeClaudeModel(model) {
2261
- if (model === LEGACY_CLAUDE_OPUS_1M_MODEL) {
2262
- return CLAUDE_OPUS_1M_MODEL;
2268
+ if (model === "opus" || model === CLAUDE_OPUS_1M_MODEL || model === LEGACY_CLAUDE_OPUS_1M_MODEL) {
2269
+ return DEFAULT_CLAUDE_MODEL;
2263
2270
  }
2264
2271
  if (model === "sonnet") {
2265
- return "claude-sonnet-5";
2272
+ return CLAUDE_SONNET_5_MODEL;
2273
+ }
2274
+ if (model === "haiku") {
2275
+ return CLAUDE_HAIKU_4_5_MODEL;
2266
2276
  }
2267
2277
  return model;
2268
2278
  }
2279
+ function canUseClaudeFastMode(model) {
2280
+ return normalizeClaudeModel(model) === CLAUDE_OPUS_4_8_MODEL || model === "claude-opus-4-7";
2281
+ }
2269
2282
  var AGENT_MODELS = {
2270
- claude: [CLAUDE_OPUS_1M_MODEL, "sonnet", "haiku"],
2283
+ claude: [DEFAULT_CLAUDE_MODEL, CLAUDE_SONNET_5_MODEL, CLAUDE_HAIKU_4_5_MODEL],
2271
2284
  codex: [DEFAULT_CODEX_MODEL, "gpt-5.4", "gpt-5.4-mini", "gpt-5.3-codex", "gpt-5.2"],
2272
2285
  cursor: [
2273
- "claude-opus-4-8",
2286
+ CLAUDE_OPUS_4_8_MODEL,
2274
2287
  "gpt-5.5",
2275
2288
  "composer-2.5",
2276
- "claude-sonnet-5",
2289
+ CLAUDE_SONNET_5_MODEL,
2277
2290
  "claude-opus-4-7",
2278
2291
  "gpt-5.4",
2279
2292
  "gpt-5.4-mini",
@@ -2288,11 +2301,11 @@ var AGENT_MODELS = {
2288
2301
  "gemini-3.1-pro",
2289
2302
  "gemini-3-flash",
2290
2303
  "grok-4.3",
2291
- "claude-haiku-4-5",
2304
+ CLAUDE_HAIKU_4_5_MODEL,
2292
2305
  "kimi-k2.5"
2293
2306
  ],
2294
2307
  opencode: [DEFAULT_OPENCODE_MODEL, "minimax/minimax-m3", "xiaomi/mimo-v2.5-pro", "moonshotai/kimi-k2.6"],
2295
- relay: [CLAUDE_OPUS_1M_MODEL, "sonnet"]
2308
+ relay: [DEFAULT_CLAUDE_MODEL, CLAUDE_SONNET_5_MODEL]
2296
2309
  };
2297
2310
  var MODEL_LABELS = {
2298
2311
  sonnet: "Sonnet 5",
@@ -2317,9 +2330,9 @@ var MODEL_LABELS = {
2317
2330
  "gpt-5.1-codex-mini": "GPT-5.1 Codex Mini",
2318
2331
  "gpt-5-mini": "GPT-5 Mini",
2319
2332
  "composer-2.5": "Composer 2.5",
2320
- "claude-opus-4-8": "Opus 4.8",
2333
+ [CLAUDE_OPUS_4_8_MODEL]: "Opus 4.8",
2321
2334
  "claude-opus-4-7": "Opus 4.7",
2322
- "claude-haiku-4-5": "Haiku 4.5",
2335
+ [CLAUDE_HAIKU_4_5_MODEL]: "Haiku 4.5",
2323
2336
  "gemini-3.1-pro": "Gemini 3.1 Pro",
2324
2337
  "gemini-3-flash": "Gemini 3 Flash",
2325
2338
  "grok-4.3": "Grok 4.3",
@@ -2510,6 +2523,7 @@ var CLAUDE_AUTH_ENV_KEYS = [
2510
2523
  "AWS_ACCESS_KEY_ID",
2511
2524
  "AWS_SECRET_ACCESS_KEY",
2512
2525
  "AWS_REGION",
2526
+ "ANTHROPIC_SMALL_FAST_MODEL_AWS_REGION",
2513
2527
  "REPLICAS_CLAUDE_AUTH_METHOD"
2514
2528
  ];
2515
2529
  function claudeAuthEnvFromResponse(response) {
@@ -2524,6 +2538,7 @@ function claudeAuthEnvFromResponse(response) {
2524
2538
  AWS_ACCESS_KEY_ID: response.awsAccessKeyId,
2525
2539
  AWS_SECRET_ACCESS_KEY: response.awsSecretAccessKey,
2526
2540
  AWS_REGION: response.awsRegion,
2541
+ ...response.smallFastModelRegion ? { ANTHROPIC_SMALL_FAST_MODEL_AWS_REGION: response.smallFastModelRegion } : {},
2527
2542
  REPLICAS_CLAUDE_AUTH_METHOD: "bedrock"
2528
2543
  };
2529
2544
  }
@@ -2537,6 +2552,7 @@ var CLAUDE_AUTH_ENV_KEYS_BY_METHOD = {
2537
2552
  "AWS_ACCESS_KEY_ID",
2538
2553
  "AWS_SECRET_ACCESS_KEY",
2539
2554
  "AWS_REGION",
2555
+ "ANTHROPIC_SMALL_FAST_MODEL_AWS_REGION",
2540
2556
  "REPLICAS_CLAUDE_AUTH_METHOD"
2541
2557
  ]
2542
2558
  };
@@ -3001,6 +3017,7 @@ function loadEngineEnv() {
3001
3017
  AWS_ACCESS_KEY_ID: readEnv("AWS_ACCESS_KEY_ID"),
3002
3018
  AWS_SECRET_ACCESS_KEY: readEnv("AWS_SECRET_ACCESS_KEY"),
3003
3019
  AWS_REGION: readEnv("AWS_REGION"),
3020
+ ANTHROPIC_SMALL_FAST_MODEL_AWS_REGION: readEnv("ANTHROPIC_SMALL_FAST_MODEL_AWS_REGION"),
3004
3021
  REPLICAS_CLAUDE_AUTH_METHOD: parseClaudeAuthMethod(readEnv("REPLICAS_CLAUDE_AUTH_METHOD")),
3005
3022
  REPLICAS_CODEX_AUTH_METHOD: parseCodexAuthMethod(readEnv("REPLICAS_CODEX_AUTH_METHOD")),
3006
3023
  REPLICAS_DISABLE_GH_PR_MERGE: readEnv("REPLICAS_DISABLE_GH_PR_MERGE")?.toLowerCase() === "true",
@@ -6060,9 +6077,17 @@ function buildClaudeAgentEnv(overrides) {
6060
6077
  if (overrides) {
6061
6078
  Object.assign(env, overrides);
6062
6079
  }
6063
- if (shouldStripAnthropicApiKey()) {
6080
+ const isBedrock = isClaudeBedrockEnv(env);
6081
+ if (shouldStripAnthropicApiKey(isBedrock)) {
6064
6082
  env.ANTHROPIC_API_KEY = void 0;
6065
6083
  }
6084
+ if (isBedrock) {
6085
+ env.CLAUDE_CODE_USE_BEDROCK = "1";
6086
+ env.CLAUDE_CODE_USE_MANTLE = "1";
6087
+ env.ANTHROPIC_DEFAULT_OPUS_MODEL = CLAUDE_OPUS_4_8_BEDROCK_MODEL;
6088
+ env.ANTHROPIC_DEFAULT_SONNET_MODEL = CLAUDE_SONNET_5_BEDROCK_MODEL;
6089
+ env.ANTHROPIC_DEFAULT_HAIKU_MODEL = CLAUDE_HAIKU_4_5_BEDROCK_MODEL;
6090
+ }
6066
6091
  env.GH_TOKEN = void 0;
6067
6092
  env.GITHUB_TOKEN = void 0;
6068
6093
  env.GH_CONFIG_DIR = void 0;
@@ -6084,9 +6109,12 @@ function buildCodexAgentEnv() {
6084
6109
  delete env.GH_CONFIG_DIR;
6085
6110
  return env;
6086
6111
  }
6087
- function shouldStripAnthropicApiKey() {
6112
+ function shouldStripAnthropicApiKey(isBedrock) {
6088
6113
  const method = ENGINE_ENV.REPLICAS_CLAUDE_AUTH_METHOD;
6089
- return method === "oauth" || method === "bedrock";
6114
+ return method === "oauth" || method === "bedrock" || isBedrock;
6115
+ }
6116
+ function isClaudeBedrockEnv(env) {
6117
+ return ENGINE_ENV.REPLICAS_CLAUDE_AUTH_METHOD === "bedrock" || env.REPLICAS_CLAUDE_AUTH_METHOD === "bedrock" || env.CLAUDE_CODE_USE_BEDROCK === "1";
6090
6118
  }
6091
6119
  function shouldStripOpenAIApiKey() {
6092
6120
  return ENGINE_ENV.REPLICAS_CODEX_AUTH_METHOD === "oauth";
@@ -6571,8 +6599,23 @@ var COMMAND_PROTECTION_SAFE_TOOLS = /* @__PURE__ */ new Set([
6571
6599
  ]);
6572
6600
  var CLAUDE_PARTIAL_MESSAGE_FLUSH_MS = 500;
6573
6601
  function supportsClaudeThinkingDisplay(model) {
6574
- const normalized = model.toLowerCase();
6575
- return AGENT_MODELS.claude.includes(normalized) || normalized === "opus" || /^claude-(?:opus|sonnet|haiku)-[4-9]/.test(normalized);
6602
+ const normalized = (normalizeClaudeModel(model) ?? model).toLowerCase();
6603
+ return AGENT_MODELS.claude.includes(normalized) || /^claude-(?:opus|sonnet|haiku)-[4-9]/.test(normalized);
6604
+ }
6605
+ function toClaudeCodeModel(model) {
6606
+ if (ENGINE_ENV.REPLICAS_CLAUDE_AUTH_METHOD !== "bedrock" && ENGINE_ENV.CLAUDE_CODE_USE_BEDROCK !== "1") {
6607
+ return model;
6608
+ }
6609
+ switch (normalizeClaudeModel(model)) {
6610
+ case CLAUDE_OPUS_4_8_MODEL:
6611
+ return "opus";
6612
+ case CLAUDE_SONNET_5_MODEL:
6613
+ return "sonnet";
6614
+ case CLAUDE_HAIKU_4_5_MODEL:
6615
+ return "haiku";
6616
+ default:
6617
+ return model;
6618
+ }
6576
6619
  }
6577
6620
  var TOOL_INPUT_HANDLERS = {
6578
6621
  ExitPlanMode: {
@@ -7022,8 +7065,10 @@ var ClaudeManager = class _ClaudeManager extends CodingAgentManager {
7022
7065
  await this.recordEvent(userMessage);
7023
7066
  }
7024
7067
  const combinedInstructions = this.buildCombinedInstructions(customInstructions);
7025
- const resolvedModel = normalizeClaudeModel(model) || CLAUDE_OPUS_1M_MODEL;
7068
+ const resolvedModel = normalizeClaudeModel(model) || DEFAULT_CLAUDE_MODEL;
7069
+ const claudeCodeModel = toClaudeCodeModel(resolvedModel);
7026
7070
  const resolvedPermissionMode = planMode ? "plan" : "bypassPermissions";
7071
+ const resolvedFastMode = Boolean(fastMode && canUseClaudeFastMode(resolvedModel));
7027
7072
  const signature = {
7028
7073
  combinedInstructions,
7029
7074
  thinkingLevel,
@@ -7031,12 +7076,13 @@ var ClaudeManager = class _ClaudeManager extends CodingAgentManager {
7031
7076
  // tracks the effective flag so a mode change can hot-swap via setPermissionMode
7032
7077
  // without restarting.
7033
7078
  enableInteractiveTools: Boolean(enableInteractiveTools),
7034
- fastMode: Boolean(fastMode)
7079
+ fastMode: resolvedFastMode
7035
7080
  };
7036
7081
  await this.ensureSession({
7037
7082
  signature,
7038
7083
  combinedInstructions,
7039
7084
  resolvedModel,
7085
+ claudeCodeModel,
7040
7086
  resolvedPermissionMode,
7041
7087
  enableInteractiveTools: signature.enableInteractiveTools,
7042
7088
  thinkingLevel
@@ -7060,15 +7106,16 @@ var ClaudeManager = class _ClaudeManager extends CodingAgentManager {
7060
7106
  signature,
7061
7107
  combinedInstructions,
7062
7108
  resolvedModel,
7109
+ claudeCodeModel,
7063
7110
  resolvedPermissionMode,
7064
7111
  enableInteractiveTools,
7065
7112
  thinkingLevel
7066
7113
  } = args;
7067
7114
  if (this.activeQuery && this.activeSessionSignature && this.sessionSignaturesMatch(this.activeSessionSignature, signature)) {
7068
- if (this.activeSessionModel !== resolvedModel) {
7115
+ if (this.activeSessionModel !== claudeCodeModel) {
7069
7116
  try {
7070
- await this.activeQuery.setModel(resolvedModel);
7071
- this.activeSessionModel = resolvedModel;
7117
+ await this.activeQuery.setModel(claudeCodeModel);
7118
+ this.activeSessionModel = claudeCodeModel;
7072
7119
  } catch (err) {
7073
7120
  console.warn("[ClaudeManager] setModel failed; recreating session:", err);
7074
7121
  await this.tearDownSession();
@@ -7090,6 +7137,7 @@ var ClaudeManager = class _ClaudeManager extends CodingAgentManager {
7090
7137
  await this.startSession({
7091
7138
  combinedInstructions,
7092
7139
  resolvedModel,
7140
+ claudeCodeModel,
7093
7141
  resolvedPermissionMode,
7094
7142
  enableInteractiveTools,
7095
7143
  thinkingLevel,
@@ -7103,6 +7151,7 @@ var ClaudeManager = class _ClaudeManager extends CodingAgentManager {
7103
7151
  const {
7104
7152
  combinedInstructions,
7105
7153
  resolvedModel,
7154
+ claudeCodeModel,
7106
7155
  resolvedPermissionMode,
7107
7156
  enableInteractiveTools,
7108
7157
  thinkingLevel,
@@ -7153,7 +7202,7 @@ var ClaudeManager = class _ClaudeManager extends CodingAgentManager {
7153
7202
  ...registryPlugins.length > 0 ? { plugins: registryPlugins } : {},
7154
7203
  ...enableRegistrySkills ? { skills: "all" } : {},
7155
7204
  env: queryEnv,
7156
- model: resolvedModel,
7205
+ model: claudeCodeModel,
7157
7206
  settings: { fastMode: signature.fastMode },
7158
7207
  includePartialMessages: true,
7159
7208
  ...supportsClaudeThinkingDisplay(resolvedModel) ? { thinking: { type: "adaptive", display: "summarized" } } : {},
@@ -7173,7 +7222,7 @@ var ClaudeManager = class _ClaudeManager extends CodingAgentManager {
7173
7222
  this.activeQuery = response;
7174
7223
  this.activePromptStream = promptStream;
7175
7224
  this.activeSessionSignature = signature;
7176
- this.activeSessionModel = resolvedModel;
7225
+ this.activeSessionModel = claudeCodeModel;
7177
7226
  this.activeSessionPermissionMode = resolvedPermissionMode;
7178
7227
  this.sessionLinearForwarder = new LinearEventForwarder(ENGINE_ENV.LINEAR_SESSION_ID);
7179
7228
  this.activeBackgroundTasks.clear();
@@ -7734,7 +7783,7 @@ var AspClient = class {
7734
7783
  // src/managers/codex-asp/app-server-process.ts
7735
7784
  var DEFAULT_CODEX_BINARY = "codex";
7736
7785
  var DEFAULT_CODEX_ARGS = ["app-server", "--listen", "stdio://"];
7737
- var ENGINE_PACKAGE_VERSION = "0.1.373";
7786
+ var ENGINE_PACKAGE_VERSION = "0.1.374";
7738
7787
  var INITIALIZE_METHOD = "initialize";
7739
7788
  var INITIALIZED_NOTIFICATION = "initialized";
7740
7789
  var ACCOUNT_LOGIN_START_METHOD = "account/login/start";
@@ -10436,7 +10485,7 @@ You will also receive the chatId so you can send follow-up messages or clean up
10436
10485
  provider: providerEnum.describe(providerDesc),
10437
10486
  prompt: z.string().describe("The full prompt/instructions for the subagent. Be detailed - it has no context from your conversation."),
10438
10487
  model: z.string().optional().describe([
10439
- `Model override. Claude: ${AGENT_MODELS.claude.join(", ")} (opus[1m] is the default, 1M context, use for very large codebases or huge context tasks).`,
10488
+ `Model override. Claude: ${AGENT_MODELS.claude.join(", ")} (opus is the default; sonnet is faster).`,
10440
10489
  codexAvailable ? "Codex: gpt-5.5, gpt-5.4, gpt-5.3-codex, etc." : null,
10441
10490
  cursorAvailable ? `Cursor: ${AGENT_MODELS.cursor.join(", ")}.` : null,
10442
10491
  opencodeAvailable ? `Opencode: ${AGENT_MODELS.opencode.join(", ")}.` : null
@@ -10685,7 +10734,7 @@ function getDelegationSection(codexAvailable, cursorAvailable, opencodeAvailable
10685
10734
  ].filter(Boolean);
10686
10735
  const agentSelectionLines = extraAgentLines.length > 0 ? `${extraAgentLines.join("\n\n")}
10687
10736
 
10688
- Use provider 'claude' for codebase exploration, code review, planning, complex debugging, and tasks requiring nuanced architectural understanding. Suggested models: ${claudeModelList} (opus[1m] is the default, 1M context window, use for very large codebases; sonnet is faster).` : `Use provider 'claude' for all tasks including code writing, codebase exploration, code review, planning, complex debugging, and tasks requiring nuanced architectural understanding. Suggested models: ${claudeModelList} (opus[1m] is the default, 1M context window, use for very large codebases; sonnet is faster).`;
10737
+ Use provider 'claude' for codebase exploration, code review, planning, complex debugging, and tasks requiring nuanced architectural understanding. Suggested models: ${claudeModelList} (opus is the default; sonnet is faster).` : `Use provider 'claude' for all tasks including code writing, codebase exploration, code review, planning, complex debugging, and tasks requiring nuanced architectural understanding. Suggested models: ${claudeModelList} (opus is the default; sonnet is faster).`;
10689
10738
  return `# Delegation
10690
10739
 
10691
10740
  You have three subagent tools for spawning and managing agents that run in separate context windows:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "replicas-engine",
3
- "version": "0.1.373",
3
+ "version": "0.1.374",
4
4
  "description": "Lightweight API server for Replicas workspaces",
5
5
  "type": "module",
6
6
  "main": "dist/src/index.js",