replicas-cli 0.2.281 → 0.2.282

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 +41 -42
  2. package/package.json +1 -1
package/dist/index.mjs CHANGED
@@ -7556,9 +7556,15 @@ function createErrorResult(error) {
7556
7556
 
7557
7557
  // ../shared/src/agent.ts
7558
7558
  var VALID_AGENT_PROVIDERS = ["claude", "codex", "cursor", "relay"];
7559
+ var VALID_CODING_AGENT_PROVIDERS = VALID_AGENT_PROVIDERS.filter(
7560
+ (provider) => provider !== "relay"
7561
+ );
7559
7562
  function isValidAgentProvider(value) {
7560
7563
  return VALID_AGENT_PROVIDERS.some((p) => p === value);
7561
7564
  }
7565
+ function isValidCodingAgentProvider(value) {
7566
+ return VALID_CODING_AGENT_PROVIDERS.some((provider) => provider === value);
7567
+ }
7562
7568
  var AGENT_PROVIDER_OPTIONS = [
7563
7569
  {
7564
7570
  value: "claude",
@@ -7578,7 +7584,7 @@ var AGENT_PROVIDER_OPTIONS = [
7578
7584
  {
7579
7585
  value: "relay",
7580
7586
  label: "Relay",
7581
- description: "Orchestrating agent that delegates to Claude Code and Codex subagents"
7587
+ description: "Orchestrating agent that delegates to Claude Code, Codex, and Cursor subagents"
7582
7588
  }
7583
7589
  ];
7584
7590
  var VALID_THINKING_LEVELS = ["low", "medium", "high", "max"];
@@ -7597,6 +7603,9 @@ function getProviderDisplayName(provider, variant = "short") {
7597
7603
  return variant === "long" ? "Claude Code" : "Claude";
7598
7604
  }
7599
7605
  }
7606
+ function getCodingAgentDisplayNames() {
7607
+ return VALID_CODING_AGENT_PROVIDERS.map((provider) => getProviderDisplayName(provider)).join(", ");
7608
+ }
7600
7609
 
7601
7610
  // ../shared/src/event.ts
7602
7611
  var CLAUDE_PARTIAL_MESSAGE_EVENT_TYPE = "claude-partial-message";
@@ -9316,7 +9325,7 @@ var HOOK_EXEC_MAX_BUFFER_BYTES = 10 * 1024 * 1024;
9316
9325
  var REPLICAS_CONFIG_FILENAMES = ["replicas.json", "replicas.yaml", "replicas.yml"];
9317
9326
 
9318
9327
  // ../shared/src/cli-version.ts
9319
- var CLI_VERSION = "0.2.281";
9328
+ var CLI_VERSION = "0.2.282";
9320
9329
 
9321
9330
  // ../shared/src/engine/environment.ts
9322
9331
  var DESKTOP_NOVNC_PORT = 6080;
@@ -12663,14 +12672,14 @@ Update available: ${currentVersion} \u2192 ${latestVersion}`));
12663
12672
  // src/commands/replica.ts
12664
12673
  import chalk15 from "chalk";
12665
12674
  import prompts3 from "prompts";
12666
- var REPLICA_AGENT_PROVIDERS = VALID_AGENT_PROVIDERS.filter((provider) => provider !== "relay");
12675
+ var CLI_CODING_AGENT_LABEL = getCodingAgentDisplayNames();
12667
12676
  function parseReplicaAgent(value) {
12668
12677
  if (!value) return void 0;
12669
12678
  const normalized = value.trim().toLowerCase();
12670
- if (isValidAgentProvider(normalized) && normalized !== "relay") {
12679
+ if (isValidCodingAgentProvider(normalized)) {
12671
12680
  return normalized;
12672
12681
  }
12673
- console.log(chalk15.red(`Invalid coding agent: ${value}. Must be one of: ${REPLICA_AGENT_PROVIDERS.join(", ")}`));
12682
+ console.log(chalk15.red(`Invalid coding agent: ${value}. Must be one of: ${CLI_CODING_AGENT_LABEL}`));
12674
12683
  process.exit(1);
12675
12684
  }
12676
12685
  function formatDate(dateString) {
@@ -16783,6 +16792,17 @@ function WorkspaceInfo({ status, workspaceName, workspaceId, focused, loading, a
16783
16792
  codexAuthMethod: agentAvailability.codex.available ? rawEnv.codexAuthMethod : "none",
16784
16793
  cursorAuthMethod: agentAvailability.cursor.available ? rawEnv.cursorAuthMethod : "none"
16785
16794
  } : rawEnv;
16795
+ const processingIndicators = [
16796
+ { label: "Claude", active: status.isClaudeProcessing },
16797
+ { label: "Codex", active: status.isCodexProcessing },
16798
+ { label: "Cursor", active: status.isCursorProcessing },
16799
+ { label: "Relay", active: status.isRelayProcessing }
16800
+ ].filter((indicator) => indicator.active);
16801
+ const agentAuthRows = env ? [
16802
+ { label: "Claude", authMethod: env.claudeAuthMethod },
16803
+ { label: "Codex", authMethod: env.codexAuthMethod },
16804
+ { label: "Cursor", authMethod: env.cursorAuthMethod }
16805
+ ] : [];
16786
16806
  const dashboardItem = findItem("dashboard");
16787
16807
  const wakeItem = findItem("wake");
16788
16808
  const createPrItem = findItem("createPr");
@@ -16842,38 +16862,19 @@ function WorkspaceInfo({ status, workspaceName, workspaceId, focused, loading, a
16842
16862
  onClick: () => handleAction(wakeItem)
16843
16863
  }
16844
16864
  ),
16845
- (status.isClaudeProcessing || status.isCodexProcessing || status.isCursorProcessing || status.isRelayProcessing) && /* @__PURE__ */ jsxs8("box", { backgroundColor: "#1a1500", paddingX: 1, marginX: 1, marginBottom: 1, children: [
16846
- status.isClaudeProcessing && /* @__PURE__ */ jsx8("text", { children: /* @__PURE__ */ jsxs8("span", { fg: "#ffaa00", children: [
16847
- "\u25C6",
16848
- " Claude thinking..."
16849
- ] }) }),
16850
- status.isCodexProcessing && /* @__PURE__ */ jsx8("text", { children: /* @__PURE__ */ jsxs8("span", { fg: "#ffaa00", children: [
16851
- "\u25C6",
16852
- " Codex thinking..."
16853
- ] }) }),
16854
- status.isCursorProcessing && /* @__PURE__ */ jsx8("text", { children: /* @__PURE__ */ jsxs8("span", { fg: "#ffaa00", children: [
16855
- "\u25C6",
16856
- " Cursor thinking..."
16857
- ] }) }),
16858
- status.isRelayProcessing && /* @__PURE__ */ jsx8("text", { children: /* @__PURE__ */ jsxs8("span", { fg: "#ffaa00", children: [
16859
- "\u25C6",
16860
- " Relay thinking..."
16861
- ] }) })
16862
- ] }),
16863
- env && /* @__PURE__ */ jsxs8(Section, { title: "Agents", children: [
16864
- /* @__PURE__ */ jsxs8("box", { flexDirection: "row", justifyContent: "space-between", paddingX: 1, backgroundColor: "#111111", children: [
16865
- /* @__PURE__ */ jsx8("text", { children: /* @__PURE__ */ jsx8("span", { fg: "#cccccc", children: "Claude" }) }),
16866
- /* @__PURE__ */ jsx8("text", { children: AUTH_METHOD_LABELS[env.claudeAuthMethod] ? /* @__PURE__ */ jsx8("span", { fg: "#3eeba3", children: AUTH_METHOD_LABELS[env.claudeAuthMethod] }) : /* @__PURE__ */ jsx8("span", { fg: "#ff4444", children: "\u2717" }) })
16867
- ] }),
16868
- /* @__PURE__ */ jsxs8("box", { flexDirection: "row", justifyContent: "space-between", paddingX: 1, backgroundColor: "#111111", children: [
16869
- /* @__PURE__ */ jsx8("text", { children: /* @__PURE__ */ jsx8("span", { fg: "#cccccc", children: "Codex" }) }),
16870
- /* @__PURE__ */ jsx8("text", { children: AUTH_METHOD_LABELS[env.codexAuthMethod] ? /* @__PURE__ */ jsx8("span", { fg: "#3eeba3", children: AUTH_METHOD_LABELS[env.codexAuthMethod] }) : /* @__PURE__ */ jsx8("span", { fg: "#ff4444", children: "\u2717" }) })
16871
- ] }),
16872
- /* @__PURE__ */ jsxs8("box", { flexDirection: "row", justifyContent: "space-between", paddingX: 1, backgroundColor: "#111111", children: [
16873
- /* @__PURE__ */ jsx8("text", { children: /* @__PURE__ */ jsx8("span", { fg: "#cccccc", children: "Cursor" }) }),
16874
- /* @__PURE__ */ jsx8("text", { children: AUTH_METHOD_LABELS[env.cursorAuthMethod] ? /* @__PURE__ */ jsx8("span", { fg: "#3eeba3", children: AUTH_METHOD_LABELS[env.cursorAuthMethod] }) : /* @__PURE__ */ jsx8("span", { fg: "#ff4444", children: "\u2717" }) })
16875
- ] })
16876
- ] }),
16865
+ processingIndicators.length > 0 && /* @__PURE__ */ jsx8("box", { backgroundColor: "#1a1500", paddingX: 1, marginX: 1, marginBottom: 1, children: processingIndicators.map(({ label }) => /* @__PURE__ */ jsx8("text", { children: /* @__PURE__ */ jsxs8("span", { fg: "#ffaa00", children: [
16866
+ "\u25C6",
16867
+ " ",
16868
+ label,
16869
+ " thinking..."
16870
+ ] }) }, label)) }),
16871
+ env && /* @__PURE__ */ jsx8(Section, { title: "Agents", children: agentAuthRows.map(({ label, authMethod }) => {
16872
+ const authLabel = AUTH_METHOD_LABELS[authMethod];
16873
+ return /* @__PURE__ */ jsxs8("box", { flexDirection: "row", justifyContent: "space-between", paddingX: 1, backgroundColor: "#111111", children: [
16874
+ /* @__PURE__ */ jsx8("text", { children: /* @__PURE__ */ jsx8("span", { fg: "#cccccc", children: label }) }),
16875
+ /* @__PURE__ */ jsx8("text", { children: authLabel ? /* @__PURE__ */ jsx8("span", { fg: "#3eeba3", children: authLabel }) : /* @__PURE__ */ jsx8("span", { fg: "#ff4444", children: "\u2717" }) })
16876
+ ] }, label);
16877
+ }) }),
16877
16878
  /* @__PURE__ */ jsx8(Section, { title: "View", children: (() => {
16878
16879
  const chatItem = findItem("view-chat");
16879
16880
  const diffItem = findItem("view-diff");
@@ -17160,6 +17161,9 @@ function AppInner() {
17160
17161
  const { data: setsData } = useRepositorySets();
17161
17162
  const { data: envsData } = useEnvironments();
17162
17163
  const workspaces = workspacesData?.workspaces ?? [];
17164
+ if (!selectedWorkspaceId && workspaces.length > 0) {
17165
+ setSelectedWorkspaceId(workspaces[0].id);
17166
+ }
17163
17167
  const selectedWorkspace = workspaces.find((ws) => ws.id === selectedWorkspaceId) ?? null;
17164
17168
  const isMockSelected = selectedWorkspace?.status === "preparing";
17165
17169
  const { data: statusData, isLoading: loadingStatus } = useWorkspaceStatus(
@@ -17212,11 +17216,6 @@ function AppInner() {
17212
17216
  }, [isMockSelected, mockMessages, historyData, selectedChat?.provider]);
17213
17217
  const showInfoPanel = width >= 100;
17214
17218
  const showWorkspacePanel = width >= 60;
17215
- useEffect3(() => {
17216
- if (!selectedWorkspaceId && workspaces.length > 0) {
17217
- setSelectedWorkspaceId(workspaces[0].id);
17218
- }
17219
- }, [workspaces, selectedWorkspaceId]);
17220
17219
  const [prevIsMockSelected, setPrevIsMockSelected] = useState8(isMockSelected);
17221
17220
  if (prevIsMockSelected !== isMockSelected) {
17222
17221
  setPrevIsMockSelected(isMockSelected);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "replicas-cli",
3
- "version": "0.2.281",
3
+ "version": "0.2.282",
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": {