replicas-engine 0.1.661 → 0.1.663
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.
|
@@ -6,6 +6,7 @@ var AGENT = {
|
|
|
6
6
|
CODEX: "codex",
|
|
7
7
|
CURSOR: "cursor",
|
|
8
8
|
DEEPSEEK: "deepseek",
|
|
9
|
+
FX: "fx",
|
|
9
10
|
OPENCODE: "opencode",
|
|
10
11
|
PI: "pi",
|
|
11
12
|
RELAY: "relay"
|
|
@@ -28,6 +29,7 @@ var THINKING_LEVELS_BY_AGENT = {
|
|
|
28
29
|
codex: [...STANDARD_THINKING_LEVELS, "ultra"],
|
|
29
30
|
cursor: STANDARD_THINKING_LEVELS,
|
|
30
31
|
deepseek: STANDARD_THINKING_LEVELS,
|
|
32
|
+
fx: STANDARD_THINKING_LEVELS,
|
|
31
33
|
opencode: STANDARD_THINKING_LEVELS,
|
|
32
34
|
pi: STANDARD_THINKING_LEVELS,
|
|
33
35
|
relay: [...STANDARD_THINKING_LEVELS, "ultracode"]
|
|
@@ -299,6 +301,7 @@ var DEFAULT_CHAT_TITLES = {
|
|
|
299
301
|
codex: "Codex",
|
|
300
302
|
cursor: "Cursor",
|
|
301
303
|
deepseek: "DeepSeek Harness",
|
|
304
|
+
fx: "fx",
|
|
302
305
|
opencode: "Opencode",
|
|
303
306
|
pi: "Pi",
|
|
304
307
|
relay: "Relay"
|
|
@@ -325,21 +328,31 @@ var GPT_5_6_LUNA_MODEL = "gpt-5.6-luna";
|
|
|
325
328
|
var DEFAULT_CODEX_MODEL = GPT_5_6_SOL_MODEL;
|
|
326
329
|
var DEFAULT_CURSOR_MODEL = "composer-2.5";
|
|
327
330
|
var DEFAULT_OPENCODE_MODEL = "z-ai/glm-5.2";
|
|
328
|
-
var
|
|
331
|
+
var DEEPSEEK_V4_PRO_MODEL = "deepseek/deepseek-v4-pro-0813";
|
|
332
|
+
var DEEPSEEK_V4_FLASH_MODEL = "deepseek/deepseek-v4-flash-0731";
|
|
333
|
+
var DEFAULT_DEEPSEEK_MODEL = DEEPSEEK_V4_PRO_MODEL;
|
|
334
|
+
var DEFAULT_FX_MODEL = "zai/glm-5.2";
|
|
329
335
|
var DEFAULT_PI_MODEL = DEFAULT_OPENCODE_MODEL;
|
|
330
336
|
var OPENROUTER_MODELS = [
|
|
331
337
|
DEFAULT_OPENCODE_MODEL,
|
|
332
|
-
|
|
333
|
-
|
|
338
|
+
DEEPSEEK_V4_PRO_MODEL,
|
|
339
|
+
DEEPSEEK_V4_FLASH_MODEL,
|
|
334
340
|
"minimax/minimax-m3",
|
|
335
341
|
"xiaomi/mimo-v2.5-pro",
|
|
336
342
|
"moonshotai/kimi-k2.6"
|
|
337
343
|
];
|
|
344
|
+
function prioritizeDeepseekModels(models) {
|
|
345
|
+
return [
|
|
346
|
+
...models.filter((model) => model.startsWith("deepseek/")),
|
|
347
|
+
...models.filter((model) => !model.startsWith("deepseek/"))
|
|
348
|
+
];
|
|
349
|
+
}
|
|
338
350
|
var FALLBACK_AGENT_MODEL = {
|
|
339
351
|
claude: DEFAULT_CLAUDE_MODEL,
|
|
340
352
|
codex: DEFAULT_CODEX_MODEL,
|
|
341
353
|
cursor: DEFAULT_CURSOR_MODEL,
|
|
342
354
|
deepseek: DEFAULT_DEEPSEEK_MODEL,
|
|
355
|
+
fx: DEFAULT_FX_MODEL,
|
|
343
356
|
opencode: DEFAULT_OPENCODE_MODEL,
|
|
344
357
|
pi: DEFAULT_PI_MODEL,
|
|
345
358
|
relay: DEFAULT_CLAUDE_MODEL
|
|
@@ -426,7 +439,8 @@ var AGENT_MODELS = {
|
|
|
426
439
|
CLAUDE_HAIKU_4_5_MODEL,
|
|
427
440
|
"kimi-k2.5"
|
|
428
441
|
],
|
|
429
|
-
deepseek:
|
|
442
|
+
deepseek: prioritizeDeepseekModels(OPENROUTER_MODELS),
|
|
443
|
+
fx: [DEFAULT_FX_MODEL],
|
|
430
444
|
opencode: [...OPENROUTER_MODELS, ...ASTER_MODELS],
|
|
431
445
|
pi: [...OPENROUTER_MODELS, ...ASTER_MODELS],
|
|
432
446
|
relay: [CLAUDE_FABLE_5_MODEL, CLAUDE_OPUS_5_MODEL, CLAUDE_OPUS_4_8_MODEL, CLAUDE_SONNET_5_MODEL]
|
|
@@ -446,8 +460,8 @@ var MODEL_LABELS = {
|
|
|
446
460
|
[GPT_5_6_LUNA_MODEL]: "GPT-5.6 Luna",
|
|
447
461
|
"gpt-5.5": "GPT-5.5",
|
|
448
462
|
[DEFAULT_OPENCODE_MODEL]: "GLM 5.2 via OpenRouter",
|
|
449
|
-
|
|
450
|
-
|
|
463
|
+
[DEEPSEEK_V4_PRO_MODEL]: "DeepSeek V4 Pro via OpenRouter",
|
|
464
|
+
[DEEPSEEK_V4_FLASH_MODEL]: "DeepSeek V4 Flash via OpenRouter",
|
|
451
465
|
"minimax/minimax-m3": "MiniMax M3 via OpenRouter",
|
|
452
466
|
"xiaomi/mimo-v2.5-pro": "MiMo V2.5 Pro via OpenRouter",
|
|
453
467
|
"moonshotai/kimi-k2.6": "Kimi K2.6 via OpenRouter",
|
|
@@ -588,7 +602,8 @@ var CREDENTIAL_METHOD = {
|
|
|
588
602
|
BEDROCK: "bedrock",
|
|
589
603
|
OPENCODE_GO: "opencode-go",
|
|
590
604
|
ASTER: "aster",
|
|
591
|
-
OPENROUTER: "openrouter"
|
|
605
|
+
OPENROUTER: "openrouter",
|
|
606
|
+
AI_GATEWAY: "ai-gateway"
|
|
592
607
|
};
|
|
593
608
|
var CREDENTIAL_TYPE = {
|
|
594
609
|
CLAUDE_OAUTH: "claude",
|
|
@@ -601,7 +616,8 @@ var CREDENTIAL_TYPE = {
|
|
|
601
616
|
CURSOR_API_KEY: "cursor_api_key",
|
|
602
617
|
OPENCODE_GO_API_KEY: "opencode_go_api_key",
|
|
603
618
|
ASTER_API_KEY: "aster_api_key",
|
|
604
|
-
OPENROUTER_API_KEY: "openrouter_api_key"
|
|
619
|
+
OPENROUTER_API_KEY: "openrouter_api_key",
|
|
620
|
+
AI_GATEWAY_API_KEY: "ai_gateway_api_key"
|
|
605
621
|
};
|
|
606
622
|
var AGENT_CREDENTIAL_METHODS_IN_ORDER = {
|
|
607
623
|
[AGENT.CLAUDE]: [
|
|
@@ -621,6 +637,9 @@ var AGENT_CREDENTIAL_METHODS_IN_ORDER = {
|
|
|
621
637
|
[AGENT.DEEPSEEK]: [
|
|
622
638
|
{ method: CREDENTIAL_METHOD.OPENROUTER, credentialType: CREDENTIAL_TYPE.OPENROUTER_API_KEY }
|
|
623
639
|
],
|
|
640
|
+
[AGENT.FX]: [
|
|
641
|
+
{ method: CREDENTIAL_METHOD.AI_GATEWAY, credentialType: CREDENTIAL_TYPE.AI_GATEWAY_API_KEY }
|
|
642
|
+
],
|
|
624
643
|
[AGENT.OPENCODE]: [
|
|
625
644
|
{ method: CREDENTIAL_METHOD.OPENCODE_GO, credentialType: CREDENTIAL_TYPE.OPENCODE_GO_API_KEY },
|
|
626
645
|
{ method: CREDENTIAL_METHOD.ASTER, credentialType: CREDENTIAL_TYPE.ASTER_API_KEY },
|
|
@@ -1511,7 +1530,7 @@ var SLASH_COMMANDS = [
|
|
|
1511
1530
|
command: "/plan",
|
|
1512
1531
|
description: "Switch to plan mode and optionally send a prompt.",
|
|
1513
1532
|
argumentHint: "[prompt]",
|
|
1514
|
-
providers: ["claude", "codex", "cursor", "deepseek", "opencode", "pi", "relay"]
|
|
1533
|
+
providers: ["claude", "codex", "cursor", "deepseek", "fx", "opencode", "pi", "relay"]
|
|
1515
1534
|
},
|
|
1516
1535
|
{
|
|
1517
1536
|
command: "/fast",
|
|
@@ -4481,6 +4500,71 @@ function parseDeepseekEvents(events) {
|
|
|
4481
4500
|
return messages;
|
|
4482
4501
|
}
|
|
4483
4502
|
|
|
4503
|
+
// ../shared/src/display-message/parsers/fx-parser.ts
|
|
4504
|
+
function getFxTextChunk(update, kind) {
|
|
4505
|
+
if (!isRecord(update) || update.sessionUpdate !== kind || !isRecord(update.content) || update.content.type !== "text") return null;
|
|
4506
|
+
return typeof update.content.text === "string" && update.content.text ? update.content.text : null;
|
|
4507
|
+
}
|
|
4508
|
+
function parseFxEvents(events) {
|
|
4509
|
+
const messages = [];
|
|
4510
|
+
for (const event of events) {
|
|
4511
|
+
const content = getUserMessage(event);
|
|
4512
|
+
if (content !== null) {
|
|
4513
|
+
if (content.trim()) {
|
|
4514
|
+
messages.push({
|
|
4515
|
+
id: getUserMessageId(event) ?? `fx-user-${event.timestamp}`,
|
|
4516
|
+
type: "user",
|
|
4517
|
+
content,
|
|
4518
|
+
timestamp: event.timestamp
|
|
4519
|
+
});
|
|
4520
|
+
}
|
|
4521
|
+
continue;
|
|
4522
|
+
}
|
|
4523
|
+
if (event.type === "fx-error") {
|
|
4524
|
+
messages.push({
|
|
4525
|
+
id: `fx-error-${event.timestamp}`,
|
|
4526
|
+
type: "error",
|
|
4527
|
+
message: typeof event.payload.message === "string" ? event.payload.message : "fx failed",
|
|
4528
|
+
timestamp: event.timestamp
|
|
4529
|
+
});
|
|
4530
|
+
continue;
|
|
4531
|
+
}
|
|
4532
|
+
if (event.type === "fx-turn-complete") {
|
|
4533
|
+
for (const message of messages) {
|
|
4534
|
+
if (message.type === "reasoning" && message.status === "in_progress") message.status = "completed";
|
|
4535
|
+
}
|
|
4536
|
+
continue;
|
|
4537
|
+
}
|
|
4538
|
+
if (event.type !== "fx-session-update" || !isRecord(event.payload.update)) continue;
|
|
4539
|
+
const update = event.payload.update;
|
|
4540
|
+
const kind = update.sessionUpdate;
|
|
4541
|
+
if (kind === "agent_message_chunk" || kind === "agent_thought_chunk") {
|
|
4542
|
+
const content2 = getFxTextChunk(update, kind);
|
|
4543
|
+
if (!content2) continue;
|
|
4544
|
+
const id = typeof update.messageId === "string" ? `fx-${update.messageId}` : `fx-${kind}-${event.timestamp}`;
|
|
4545
|
+
const existing = messages.find((message) => message.id === id);
|
|
4546
|
+
const text = `${existing && "content" in existing && typeof existing.content === "string" ? existing.content : ""}${content2}`;
|
|
4547
|
+
upsertDisplayMessage(messages, kind === "agent_thought_chunk" ? { id, type: "reasoning", content: text, status: "in_progress", timestamp: existing?.timestamp ?? event.timestamp } : { id, type: "agent", content: text, timestamp: existing?.timestamp ?? event.timestamp });
|
|
4548
|
+
continue;
|
|
4549
|
+
}
|
|
4550
|
+
if ((kind === "tool_call" || kind === "tool_call_update") && typeof update.toolCallId === "string") {
|
|
4551
|
+
const id = `fx-tool-${update.toolCallId}`;
|
|
4552
|
+
const existing = messages.find((message) => message.id === id && message.type === "tool_call");
|
|
4553
|
+
const status = update.status === "completed" || update.status === "failed" ? update.status === "failed" ? "failed" : "completed" : "in_progress";
|
|
4554
|
+
upsertDisplayMessage(messages, createCallDisplayMessage({
|
|
4555
|
+
id,
|
|
4556
|
+
server: "fx",
|
|
4557
|
+
tool: typeof update.name === "string" ? update.name : typeof update.title === "string" ? update.title : existing?.tool ?? "tool",
|
|
4558
|
+
input: update.rawInput === void 0 ? existing?.input : isRecord(update.rawInput) ? update.rawInput : stringifyDisplayValue(update.rawInput),
|
|
4559
|
+
output: update.rawOutput === void 0 ? existing?.output : stringifyDisplayValue(update.rawOutput),
|
|
4560
|
+
status,
|
|
4561
|
+
timestamp: event.timestamp
|
|
4562
|
+
}));
|
|
4563
|
+
}
|
|
4564
|
+
}
|
|
4565
|
+
return messages;
|
|
4566
|
+
}
|
|
4567
|
+
|
|
4484
4568
|
// ../shared/src/display-message/parsers/opencode-parser.ts
|
|
4485
4569
|
function timestampFromMs(value, fallback) {
|
|
4486
4570
|
return typeof value === "number" && Number.isFinite(value) ? new Date(value).toISOString() : fallback;
|
|
@@ -5647,6 +5731,9 @@ function parseAgentEvents(events, agentType) {
|
|
|
5647
5731
|
if (agentType === "deepseek") {
|
|
5648
5732
|
return parseDeepseekEvents(events);
|
|
5649
5733
|
}
|
|
5734
|
+
if (agentType === "fx") {
|
|
5735
|
+
return parseFxEvents(events);
|
|
5736
|
+
}
|
|
5650
5737
|
if (agentType === "opencode") {
|
|
5651
5738
|
return parseOpencodeEvents(events);
|
|
5652
5739
|
}
|
|
@@ -6245,7 +6332,7 @@ var DEFAULT_CODEX_ARGS = [
|
|
|
6245
6332
|
var MIN_CODEX_CLI_VERSION = "0.144.6";
|
|
6246
6333
|
var CODEX_UPGRADE_TIMEOUT_MS = 12e4;
|
|
6247
6334
|
var codexCliVersionEnsured = null;
|
|
6248
|
-
var ENGINE_PACKAGE_VERSION = "0.1.
|
|
6335
|
+
var ENGINE_PACKAGE_VERSION = "0.1.663";
|
|
6249
6336
|
var INITIALIZE_METHOD = "initialize";
|
|
6250
6337
|
var INITIALIZED_NOTIFICATION = "initialized";
|
|
6251
6338
|
var ACCOUNT_LOGIN_START_METHOD = "account/login/start";
|
|
@@ -6510,6 +6597,7 @@ export {
|
|
|
6510
6597
|
DEFAULT_CURSOR_MODEL,
|
|
6511
6598
|
DEFAULT_OPENCODE_MODEL,
|
|
6512
6599
|
DEFAULT_DEEPSEEK_MODEL,
|
|
6600
|
+
DEFAULT_FX_MODEL,
|
|
6513
6601
|
DEFAULT_PI_MODEL,
|
|
6514
6602
|
getDefaultAgentModel,
|
|
6515
6603
|
normalizeClaudeModel,
|
|
@@ -6603,6 +6691,7 @@ export {
|
|
|
6603
6691
|
areSameUserMessageEvents,
|
|
6604
6692
|
parseAgentEventJsonlWithCodexAspTranscript,
|
|
6605
6693
|
getDeepseekAssistantMessageText,
|
|
6694
|
+
getFxTextChunk,
|
|
6606
6695
|
extractToolResultText,
|
|
6607
6696
|
normalizeContentBlocks,
|
|
6608
6697
|
TaskAccumulator,
|