codeam-cli 2.12.2 → 2.12.4

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/CHANGELOG.md CHANGED
@@ -4,6 +4,19 @@ All notable changes to `codeam-cli` are documented here.
4
4
 
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
+ ## [2.12.3] — 2026-05-14
8
+
9
+ ### Fixed
10
+
11
+ - **cli:** Drop the Codex bottom status footer + accept · as agent-reply prefix
12
+
13
+ ## [2.12.2] — 2026-05-14
14
+
15
+ ### Changed
16
+
17
+ - **cli:** Per-agent TUI parsers — Codex uses • for replies (same glyph as Claude tool calls)
18
+ - **cli,shared,vsc-plugin:** Move Claude TUI parsers out of shared into the Claude strategy
19
+
7
20
  ## [2.12.1] — 2026-05-14
8
21
 
9
22
  ### Fixed
package/dist/index.js CHANGED
@@ -1682,7 +1682,7 @@ var import_qrcode_terminal = __toESM(require("qrcode-terminal"));
1682
1682
  // package.json
1683
1683
  var package_default = {
1684
1684
  name: "codeam-cli",
1685
- version: "2.12.2",
1685
+ version: "2.12.4",
1686
1686
  description: "Remote control Claude Code (and other AI coding agents) from your mobile phone. Pair your device, send prompts, stream responses in real-time, and approve commands \u2014 from anywhere.",
1687
1687
  type: "commonjs",
1688
1688
  main: "dist/index.js",
@@ -2037,12 +2037,14 @@ var log = {
2037
2037
  // src/services/command-relay.service.ts
2038
2038
  var API_BASE2 = process.env.CODEAM_API_URL ?? "https://codeagent-mobile-api.vercel.app";
2039
2039
  var CommandRelayService = class {
2040
- constructor(pluginId, onCommand) {
2040
+ constructor(pluginId, onCommand, agentMeta) {
2041
2041
  this.pluginId = pluginId;
2042
2042
  this.onCommand = onCommand;
2043
+ this.agentMeta = agentMeta;
2043
2044
  }
2044
2045
  pluginId;
2045
2046
  onCommand;
2047
+ agentMeta;
2046
2048
  _running = false;
2047
2049
  heartbeatTimer = null;
2048
2050
  agentsTimer = null;
@@ -2229,9 +2231,11 @@ var CommandRelayService = class {
2229
2231
  }).then(() => log.trace("relay", `heartbeat ok online=${online}`)).catch((err) => log.trace("relay", `heartbeat failed online=${online}`, err));
2230
2232
  }
2231
2233
  reportAgents() {
2234
+ const id = this.agentMeta?.id ?? "claude";
2235
+ const name = this.agentMeta?.displayName ?? "Claude Code";
2232
2236
  _postJson(`${API_BASE2}/api/plugin/agents`, {
2233
2237
  pluginId: this.pluginId,
2234
- agents: [{ id: "claude-code", name: "Claude Code", icon: "\u{1F916}", installed: true }]
2238
+ agents: [{ id, name, icon: id, installed: true }]
2235
2239
  }).then(() => {
2236
2240
  this.agentsRegistered = true;
2237
2241
  }).catch(() => {
@@ -5798,9 +5802,10 @@ function getCurrentUsage2(historyDir) {
5798
5802
  // src/agents/codex/parsing.ts
5799
5803
  var BOX_DRAW_RE = /^[╭─╮│╰╯]/u;
5800
5804
  var CODEX_USER_ECHO_RE = /^[›>]\s+\S/u;
5801
- var CODEX_AGENT_REPLY_RE = /^•\s/u;
5805
+ var CODEX_AGENT_REPLY_RE = /^[•·]\s/u;
5802
5806
  var TIP_RE = /^\s*Tip:\s/i;
5803
5807
  var LEARN_MORE_RE = /^\s*Learn more:\s/i;
5808
+ var CODEX_STATUS_FOOTER_RE = /\bdefault\s+[·•]\s+\S+/i;
5804
5809
  function filterCodexChrome(lines) {
5805
5810
  const out = [];
5806
5811
  let skipEchoContinuation = false;
@@ -5814,9 +5819,13 @@ function filterCodexChrome(lines) {
5814
5819
  if (BOX_DRAW_RE.test(trimmed)) continue;
5815
5820
  if (/^OpenAI Codex\b/i.test(trimmed) || /^>_\s+OpenAI Codex\b/i.test(trimmed) || /^model:\s/i.test(trimmed) || /^directory:\s/i.test(trimmed)) continue;
5816
5821
  if (TIP_RE.test(t2) || LEARN_MORE_RE.test(t2)) continue;
5822
+ if (CODEX_STATUS_FOOTER_RE.test(trimmed)) {
5823
+ skipEchoContinuation = false;
5824
+ continue;
5825
+ }
5817
5826
  if (CODEX_AGENT_REPLY_RE.test(trimmed)) {
5818
5827
  skipEchoContinuation = false;
5819
- out.push(t2.replace(/^(\s*)•\s/, "$1"));
5828
+ out.push(t2.replace(/^(\s*)[•·]\s/, "$1"));
5820
5829
  continue;
5821
5830
  }
5822
5831
  if (CODEX_USER_ECHO_RE.test(trimmed)) {
@@ -7847,7 +7856,7 @@ async function start() {
7847
7856
  };
7848
7857
  const relay = new CommandRelayService(pluginId, async (cmd) => {
7849
7858
  await dispatchCommand(ctx, cmd);
7850
- });
7859
+ }, runtime.meta);
7851
7860
  ctx.relay = relay;
7852
7861
  function sigintHandler() {
7853
7862
  claude.kill();
@@ -10118,7 +10127,7 @@ async function stopWorkspaceFromLocal(target) {
10118
10127
  // src/commands/version.ts
10119
10128
  var import_picocolors11 = __toESM(require("picocolors"));
10120
10129
  function version() {
10121
- const v = true ? "2.12.2" : "unknown";
10130
+ const v = true ? "2.12.4" : "unknown";
10122
10131
  console.log(`${import_picocolors11.default.bold("codeam-cli")} ${import_picocolors11.default.cyan(v)}`);
10123
10132
  }
10124
10133
 
@@ -10253,7 +10262,7 @@ function checkForUpdates() {
10253
10262
  if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
10254
10263
  if (process.env.CI) return;
10255
10264
  if (!process.stdout.isTTY) return;
10256
- const current = true ? "2.12.2" : null;
10265
+ const current = true ? "2.12.4" : null;
10257
10266
  if (!current) return;
10258
10267
  const cache = readCache();
10259
10268
  const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codeam-cli",
3
- "version": "2.12.2",
3
+ "version": "2.12.4",
4
4
  "description": "Remote control Claude Code (and other AI coding agents) from your mobile phone. Pair your device, send prompts, stream responses in real-time, and approve commands — from anywhere.",
5
5
  "type": "commonjs",
6
6
  "main": "dist/index.js",