codeam-cli 2.49.0 → 2.49.1

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,25 @@ 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.49.0] — 2026-06-27
8
+
9
+ ### Added
10
+
11
+ - **cli:** Parameterize setupHeadroomForSelfHosted (extras + progress + config backup)
12
+ - **cli:** Headroom_configure handler + configure service + postHeadroomEvent
13
+
14
+ ### Fixed
15
+
16
+ - **cli:** Widen sendResult to unknown (drop unsafe casts) + guard agentId + unref stopProxy
17
+ - **cli:** Persistent-container disable phase + validated casts + exclude test driver
18
+ - **cli:** Headroom stopProxy survives missing pkill + procps in int-test image
19
+ - **cli:** Surface driver errors + bake headroom deps into int-test image
20
+ - **workflow:** Reuse prebuilt headroom image in int test + apt retry (no double build)
21
+
22
+ ### Tests
23
+
24
+ - **cli:** Real Docker integration test for Headroom on-demand enable/disable
25
+
7
26
  ## [2.48.1] — 2026-06-26
8
27
 
9
28
  ### Fixed
package/dist/index.js CHANGED
@@ -5397,7 +5397,7 @@ function readAnonId() {
5397
5397
  }
5398
5398
  function superProperties() {
5399
5399
  return {
5400
- cliVersion: true ? "2.49.0" : "0.0.0-dev",
5400
+ cliVersion: true ? "2.49.1" : "0.0.0-dev",
5401
5401
  nodeVersion: process.version,
5402
5402
  platform: process.platform,
5403
5403
  arch: process.arch,
@@ -5578,7 +5578,7 @@ var os4 = __toESM(require("os"));
5578
5578
  // package.json
5579
5579
  var package_default = {
5580
5580
  name: "codeam-cli",
5581
- version: "2.49.0",
5581
+ version: "2.49.1",
5582
5582
  description: "Workflow-continuity bridge for AI coding agents. Wrap Claude Code or Codex in a PTY and supervise, approve, and redirect the session from any device \u2014 async. The terminal companion for CodeAgent Mobile.",
5583
5583
  type: "commonjs",
5584
5584
  main: "dist/index.js",
@@ -14747,7 +14747,7 @@ async function autoUpgradeBeforeCriticalCommand() {
14747
14747
  if (process.env.NODE_ENV === "test") return;
14748
14748
  if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
14749
14749
  if (process.env.CI) return;
14750
- const current = true ? "2.49.0" : null;
14750
+ const current = true ? "2.49.1" : null;
14751
14751
  if (!current) return;
14752
14752
  const cache = readCache();
14753
14753
  const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
@@ -14764,7 +14764,7 @@ function checkForUpdates() {
14764
14764
  if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
14765
14765
  if (process.env.CI) return;
14766
14766
  if (!process.stdout.isTTY) return;
14767
- const current = true ? "2.49.0" : null;
14767
+ const current = true ? "2.49.1" : null;
14768
14768
  if (!current) return;
14769
14769
  const cache = readCache();
14770
14770
  const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
@@ -15259,7 +15259,7 @@ var defaultSpawner = (env, cwd, args2 = []) => (0, import_node_child_process14.s
15259
15259
  detached: false
15260
15260
  });
15261
15261
  function currentCliVersion() {
15262
- return true ? "2.49.0" : null;
15262
+ return true ? "2.49.1" : null;
15263
15263
  }
15264
15264
  function runCmd(cmd, args2, timeoutMs) {
15265
15265
  return new Promise((resolve7) => {
@@ -18181,7 +18181,7 @@ var headroomConfigureH = async (ctx, cmd, parsed) => {
18181
18181
  return;
18182
18182
  }
18183
18183
  const savingsIngestUrl = parsed.savingsIngestUrl;
18184
- let rawAgentId = typeof parsed.agentId === "string" ? parsed.agentId : "";
18184
+ let rawAgentId = ctx.agentId || (typeof parsed.agentId === "string" ? parsed.agentId : "");
18185
18185
  if (rawAgentId === "claude_code") rawAgentId = "claude";
18186
18186
  let configuredAgent = rawAgentId;
18187
18187
  if (!configuredAgent) {
@@ -19418,6 +19418,9 @@ async function startInfraOnly(agentId) {
19418
19418
  keepAliveCtx,
19419
19419
  pluginId,
19420
19420
  sessionId: session.id,
19421
+ // No-agent mode — there's no running agent to report. Headroom/agent
19422
+ // commands are filtered out by INFRA_ONLY_COMMAND_TYPES before dispatch.
19423
+ agentId: "",
19421
19424
  pluginAuthToken: session.pluginAuthToken ?? void 0
19422
19425
  };
19423
19426
  const relay = new CommandRelayService(
@@ -27573,6 +27576,7 @@ async function start(requestedAgent) {
27573
27576
  keepAliveCtx,
27574
27577
  pluginId,
27575
27578
  sessionId: session.id,
27579
+ agentId: session.agent,
27576
27580
  pluginAuthToken: session.pluginAuthToken ?? void 0
27577
27581
  };
27578
27582
  const relay = new CommandRelayService(pluginId, async (cmd) => {
@@ -30192,7 +30196,7 @@ function checkChokidar() {
30192
30196
  }
30193
30197
  async function doctor(args2 = []) {
30194
30198
  const json = args2.includes("--json");
30195
- const cliVersion = true ? "2.49.0" : "0.0.0-dev";
30199
+ const cliVersion = true ? "2.49.1" : "0.0.0-dev";
30196
30200
  const apiBase2 = resolveApiBaseUrl();
30197
30201
  const diagnosticId = (0, import_node_crypto8.randomUUID)();
30198
30202
  log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
@@ -30391,7 +30395,7 @@ async function completion(args2) {
30391
30395
  // src/commands/version.ts
30392
30396
  var import_picocolors15 = __toESM(require("picocolors"));
30393
30397
  function version2() {
30394
- const v = true ? "2.49.0" : "unknown";
30398
+ const v = true ? "2.49.1" : "unknown";
30395
30399
  console.log(`${import_picocolors15.default.bold("codeam-cli")} ${import_picocolors15.default.cyan(v)}`);
30396
30400
  }
30397
30401
 
@@ -0,0 +1,33 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+
4
+ // src/postinstall.ts
5
+ var c = {
6
+ reset: "\x1B[0m",
7
+ bold: "\x1B[1m",
8
+ dim: "\x1B[2m",
9
+ green: "\x1B[32m",
10
+ cyan: "\x1B[36m",
11
+ violet: "\x1B[35m",
12
+ white: "\x1B[97m"
13
+ };
14
+ var lines = [
15
+ "",
16
+ ` ${c.violet}${c.bold}codeam-cli${c.reset} ${c.dim}\u2014 Claude Code remote control${c.reset}`,
17
+ "",
18
+ ` ${c.dim}1.${c.reset} Pair your phone:`,
19
+ ` ${c.cyan}codeam pair${c.reset}`,
20
+ "",
21
+ ` ${c.dim}2.${c.reset} Launch Claude Code with mobile control:`,
22
+ ` ${c.cyan}codeam${c.reset}`,
23
+ "",
24
+ ` ${c.dim}Other commands:${c.reset}`,
25
+ ` ${c.white}codeam sessions${c.reset} ${c.dim}list paired devices${c.reset}`,
26
+ ` ${c.white}codeam status${c.reset} ${c.dim}show connection info${c.reset}`,
27
+ ` ${c.white}codeam logout${c.reset} ${c.dim}remove all sessions${c.reset}`,
28
+ "",
29
+ ` ${c.dim}Requires Claude Code:${c.reset} ${c.green}npm install -g @anthropic-ai/claude-code${c.reset}`,
30
+ ` ${c.dim}Mobile app:${c.reset} ${c.green}https://www.codeagent-mobile.com${c.reset}`,
31
+ ""
32
+ ];
33
+ process.stdout.write(lines.join("\n") + "\n");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codeam-cli",
3
- "version": "2.49.0",
3
+ "version": "2.49.1",
4
4
  "description": "Workflow-continuity bridge for AI coding agents. Wrap Claude Code or Codex in a PTY and supervise, approve, and redirect the session from any device — async. The terminal companion for CodeAgent Mobile.",
5
5
  "type": "commonjs",
6
6
  "main": "dist/index.js",