replicas-cli 0.2.314 → 0.2.316

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/index.mjs +30 -19
  2. package/package.json +1 -1
package/dist/index.mjs CHANGED
@@ -7658,9 +7658,11 @@ function getInitialChatId(chats, preferredProvider = "claude") {
7658
7658
  }
7659
7659
  var CLAUDE_OPUS_1M_MODEL = "opus[1m]";
7660
7660
  var LEGACY_CLAUDE_OPUS_1M_MODEL = "opus-1m";
7661
+ var CLAUDE_FABLE_5_MODEL = "claude-fable-5";
7661
7662
  var CLAUDE_OPUS_4_8_MODEL = "claude-opus-4-8";
7662
7663
  var CLAUDE_SONNET_5_MODEL = "claude-sonnet-5";
7663
7664
  var CLAUDE_HAIKU_4_5_MODEL = "claude-haiku-4-5";
7665
+ var CLAUDE_FABLE_5_BEDROCK_MODEL = "anthropic.claude-fable-5";
7664
7666
  var CLAUDE_OPUS_4_8_BEDROCK_MODEL = "us.anthropic.claude-opus-4-8";
7665
7667
  var CLAUDE_SONNET_5_BEDROCK_MODEL = "anthropic.claude-sonnet-5";
7666
7668
  var CLAUDE_HAIKU_4_5_BEDROCK_MODEL = "us.anthropic.claude-haiku-4-5-20251001-v1:0";
@@ -7671,6 +7673,9 @@ function normalizeClaudeModel(model) {
7671
7673
  if (model === "opus" || model === CLAUDE_OPUS_1M_MODEL || model === LEGACY_CLAUDE_OPUS_1M_MODEL) {
7672
7674
  return DEFAULT_CLAUDE_MODEL;
7673
7675
  }
7676
+ if (model === "fable") {
7677
+ return CLAUDE_FABLE_5_MODEL;
7678
+ }
7674
7679
  if (model === "sonnet") {
7675
7680
  return CLAUDE_SONNET_5_MODEL;
7676
7681
  }
@@ -7680,9 +7685,11 @@ function normalizeClaudeModel(model) {
7680
7685
  return model;
7681
7686
  }
7682
7687
  var CLAUDE_MODEL_CONTEXT_WINDOWS = {
7688
+ [CLAUDE_FABLE_5_MODEL]: 1e6,
7683
7689
  [CLAUDE_OPUS_4_8_MODEL]: 1e6,
7684
7690
  [CLAUDE_SONNET_5_MODEL]: 1e6,
7685
7691
  [CLAUDE_HAIKU_4_5_MODEL]: 2e5,
7692
+ [CLAUDE_FABLE_5_BEDROCK_MODEL]: 1e6,
7686
7693
  [CLAUDE_OPUS_4_8_BEDROCK_MODEL]: 1e6,
7687
7694
  [CLAUDE_SONNET_5_BEDROCK_MODEL]: 1e6,
7688
7695
  [CLAUDE_HAIKU_4_5_BEDROCK_MODEL]: 2e5,
@@ -7693,9 +7700,10 @@ var CLAUDE_MODEL_CONTEXT_WINDOWS = {
7693
7700
  "claude-haiku-4-5@20251001": 2e5
7694
7701
  };
7695
7702
  var AGENT_MODELS = {
7696
- claude: [DEFAULT_CLAUDE_MODEL, CLAUDE_SONNET_5_MODEL, CLAUDE_HAIKU_4_5_MODEL],
7703
+ claude: [CLAUDE_FABLE_5_MODEL, DEFAULT_CLAUDE_MODEL, CLAUDE_SONNET_5_MODEL, CLAUDE_HAIKU_4_5_MODEL],
7697
7704
  codex: [DEFAULT_CODEX_MODEL, "gpt-5.4", "gpt-5.4-mini", "gpt-5.3-codex", "gpt-5.2"],
7698
7705
  cursor: [
7706
+ CLAUDE_FABLE_5_MODEL,
7699
7707
  CLAUDE_OPUS_4_8_MODEL,
7700
7708
  "gpt-5.5",
7701
7709
  "composer-2.5",
@@ -7718,9 +7726,11 @@ var AGENT_MODELS = {
7718
7726
  "kimi-k2.5"
7719
7727
  ],
7720
7728
  opencode: [DEFAULT_OPENCODE_MODEL, "minimax/minimax-m3", "xiaomi/mimo-v2.5-pro", "moonshotai/kimi-k2.6"],
7721
- relay: [DEFAULT_CLAUDE_MODEL, CLAUDE_SONNET_5_MODEL]
7729
+ relay: [CLAUDE_FABLE_5_MODEL, DEFAULT_CLAUDE_MODEL, CLAUDE_SONNET_5_MODEL]
7722
7730
  };
7723
7731
  var MODEL_LABELS = {
7732
+ fable: "Fable 5",
7733
+ [CLAUDE_FABLE_5_MODEL]: "Fable 5",
7724
7734
  sonnet: "Sonnet 5",
7725
7735
  "claude-sonnet-5": "Sonnet 5",
7726
7736
  opus: "Opus 4.8",
@@ -9497,7 +9507,7 @@ var HOOK_EXEC_MAX_BUFFER_BYTES = 10 * 1024 * 1024;
9497
9507
  var REPLICAS_CONFIG_FILENAMES = ["replicas.json", "replicas.yaml", "replicas.yml"];
9498
9508
 
9499
9509
  // ../shared/src/cli-version.ts
9500
- var CLI_VERSION = "0.2.314";
9510
+ var CLI_VERSION = "0.2.316";
9501
9511
 
9502
9512
  // ../shared/src/engine/environment.ts
9503
9513
  var DESKTOP_NOVNC_PORT = 6080;
@@ -10428,6 +10438,14 @@ function parseMcpToolName(name) {
10428
10438
  }
10429
10439
 
10430
10440
  // ../shared/src/display-message/parsers/claude-parser.ts
10441
+ function upsertDisplayMessage(messages, message) {
10442
+ const index = messages.findIndex((existing) => existing.id === message.id);
10443
+ if (index === -1) {
10444
+ messages.push(message);
10445
+ } else {
10446
+ messages[index] = message;
10447
+ }
10448
+ }
10431
10449
  var LOCAL_COMMAND_ECHO_REGEX = /^<(?:command-name|command-message|local-command-stdout|local-command-stderr)>/;
10432
10450
  function parseClaudeEvents(events, parentToolUseId) {
10433
10451
  const messages = [];
@@ -10439,7 +10457,6 @@ function parseClaudeEvents(events, parentToolUseId) {
10439
10457
  const toolCallMap = /* @__PURE__ */ new Map();
10440
10458
  const taskMessageMap = /* @__PURE__ */ new Map();
10441
10459
  const partialIndexes = /* @__PURE__ */ new Map();
10442
- const completedPartialStreamIds = /* @__PURE__ */ new Set();
10443
10460
  const taskAccumulator = new TaskAccumulator();
10444
10461
  const taskSnapshot = () => taskAccumulator.getTasks().map((task) => ({
10445
10462
  text: task.subject,
@@ -10453,7 +10470,7 @@ function parseClaudeEvents(events, parentToolUseId) {
10453
10470
  const existing = partialIndexes.get(payload.streamId) ?? {};
10454
10471
  if (payload.thinking) {
10455
10472
  const reasoningMessage = {
10456
- id: `reasoning-partial:${payload.streamId}`,
10473
+ id: `reasoning-${payload.streamId}-thinking`,
10457
10474
  type: "reasoning",
10458
10475
  content: payload.thinking,
10459
10476
  status: payload.status,
@@ -10464,7 +10481,7 @@ function parseClaudeEvents(events, parentToolUseId) {
10464
10481
  }
10465
10482
  if (payload.text) {
10466
10483
  const agentMessage = {
10467
- id: `agent-partial:${payload.streamId}`,
10484
+ id: `agent-${payload.streamId}-0`,
10468
10485
  type: "agent",
10469
10486
  content: payload.text,
10470
10487
  timestamp: event.timestamp
@@ -10511,22 +10528,19 @@ function parseClaudeEvents(events, parentToolUseId) {
10511
10528
  }
10512
10529
  if (event.type === "claude-assistant") {
10513
10530
  const messageId = event.payload.message?.id;
10514
- if (typeof messageId === "string" && messageId) {
10515
- completedPartialStreamIds.add(messageId);
10516
- }
10517
10531
  const contentBlocks = normalizeContentBlocks(event.payload.message?.content);
10518
- contentBlocks.forEach((block) => {
10532
+ contentBlocks.forEach((block, blockIndex) => {
10519
10533
  if (block.type === "text" && block.text) {
10520
- messages.push({
10521
- id: `agent-${event.timestamp}-${messages.length}`,
10534
+ upsertDisplayMessage(messages, {
10535
+ id: `agent-${messageId || event.timestamp}-${blockIndex}`,
10522
10536
  type: "agent",
10523
10537
  content: block.text,
10524
10538
  timestamp: event.timestamp
10525
10539
  });
10526
10540
  }
10527
10541
  if (block.type === "thinking" && block.thinking) {
10528
- messages.push({
10529
- id: `reasoning-${event.timestamp}-${messages.length}`,
10542
+ upsertDisplayMessage(messages, {
10543
+ id: `reasoning-${messageId || event.timestamp}-thinking`,
10530
10544
  type: "reasoning",
10531
10545
  content: block.thinking,
10532
10546
  status: "completed",
@@ -10803,11 +10817,7 @@ function parseClaudeEvents(events, parentToolUseId) {
10803
10817
  }
10804
10818
  }
10805
10819
  });
10806
- if (partialIndexes.size === 0 || completedPartialStreamIds.size === 0) return messages;
10807
- return messages.filter((message) => {
10808
- const prefix = ["reasoning-partial:", "agent-partial:"].find((p) => message.id.startsWith(p));
10809
- return !prefix || !completedPartialStreamIds.has(message.id.slice(prefix.length));
10810
- });
10820
+ return messages;
10811
10821
  }
10812
10822
 
10813
10823
  // ../shared/src/agent-event-utils.ts
@@ -10866,6 +10876,7 @@ function messageForItem(item) {
10866
10876
  id: `command-${item.id}`,
10867
10877
  type: "command",
10868
10878
  command: item.command,
10879
+ commandActions: item.commandActions,
10869
10880
  output: item.output,
10870
10881
  exitCode: item.exitCode ?? void 0,
10871
10882
  status: normalizeCodexAspTranscriptStatus(item.status),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "replicas-cli",
3
- "version": "0.2.314",
3
+ "version": "0.2.316",
4
4
  "description": "CLI for managing Replicas workspaces - SSH into cloud dev environments with automatic port forwarding",
5
5
  "main": "dist/index.mjs",
6
6
  "bin": {