replicas-engine 0.1.373 → 0.1.375
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.
- package/dist/src/index.js +75 -26
- package/package.json +1 -1
- package/scripts/engine-watchdog.sh +5 -0
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-
|
|
298
|
+
var E2B_TEMPLATE_NAME = "replicas-sandbox-2026-07-01-v1";
|
|
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
|
|
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
|
|
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: [
|
|
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
|
-
|
|
2286
|
+
CLAUDE_OPUS_4_8_MODEL,
|
|
2274
2287
|
"gpt-5.5",
|
|
2275
2288
|
"composer-2.5",
|
|
2276
|
-
|
|
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
|
-
|
|
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: [
|
|
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
|
-
|
|
2333
|
+
[CLAUDE_OPUS_4_8_MODEL]: "Opus 4.8",
|
|
2321
2334
|
"claude-opus-4-7": "Opus 4.7",
|
|
2322
|
-
|
|
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
|
-
|
|
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) ||
|
|
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) ||
|
|
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:
|
|
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 !==
|
|
7115
|
+
if (this.activeSessionModel !== claudeCodeModel) {
|
|
7069
7116
|
try {
|
|
7070
|
-
await this.activeQuery.setModel(
|
|
7071
|
-
this.activeSessionModel =
|
|
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:
|
|
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 =
|
|
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.
|
|
7786
|
+
var ENGINE_PACKAGE_VERSION = "0.1.375";
|
|
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
|
|
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
|
|
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
|
@@ -11,6 +11,11 @@ BACKOFF=1
|
|
|
11
11
|
RESTART_COUNT=0
|
|
12
12
|
MAX_RESTARTS=20
|
|
13
13
|
STABLE_THRESHOLD=300
|
|
14
|
+
BUN_INSTALL="${BUN_INSTALL:-/usr/local/bun}"
|
|
15
|
+
if [ -d "$BUN_INSTALL/bin" ]; then
|
|
16
|
+
export BUN_INSTALL
|
|
17
|
+
export PATH="$BUN_INSTALL/bin:$PATH"
|
|
18
|
+
fi
|
|
14
19
|
|
|
15
20
|
log() {
|
|
16
21
|
echo "[$(date -Iseconds)] [engine-watchdog] $*"
|