codeam-cli 2.39.46 → 2.39.47

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,14 @@ 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.39.46] — 2026-06-19
8
+
9
+ ### Added
10
+
11
+ - **cli:** Wrap codespace agent launch with headroom (never-break fallback)
12
+ - **cli:** Headroom /stats poll reporter (local, scoped) -> backend savings
13
+ - **cli:** Start/stop headroom savings reporter with the codespace agent
14
+
7
15
  ## [2.39.45] — 2026-06-19
8
16
 
9
17
  ### Fixed
package/dist/index.js CHANGED
@@ -498,7 +498,7 @@ var import_qrcode_terminal = __toESM(require("qrcode-terminal"));
498
498
  // package.json
499
499
  var package_default = {
500
500
  name: "codeam-cli",
501
- version: "2.39.46",
501
+ version: "2.39.47",
502
502
  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.",
503
503
  type: "commonjs",
504
504
  main: "dist/index.js",
@@ -5908,7 +5908,7 @@ function readAnonId() {
5908
5908
  }
5909
5909
  function superProperties() {
5910
5910
  return {
5911
- cliVersion: true ? "2.39.46" : "0.0.0-dev",
5911
+ cliVersion: true ? "2.39.47" : "0.0.0-dev",
5912
5912
  nodeVersion: process.version,
5913
5913
  platform: process.platform,
5914
5914
  arch: process.arch,
@@ -24525,10 +24525,10 @@ var ZERO = { rawTokensEst: 0, sentTokensEst: 0, cachedTokens: 0, retrieveHops: 0
24525
24525
  function read(stats) {
24526
24526
  const p2 = stats.persistent_savings ?? {};
24527
24527
  return {
24528
- rawTokensEst: p2.tokens_before ?? 0,
24529
- sentTokensEst: p2.tokens_after ?? 0,
24530
- cachedTokens: p2.cached_tokens ?? 0,
24531
- retrieveHops: p2.retrieve_hops ?? 0
24528
+ rawTokensEst: p2.tokens_before ?? p2.input_tokens ?? p2.tokensBefore ?? 0,
24529
+ sentTokensEst: p2.tokens_after ?? p2.output_tokens ?? p2.tokensAfter ?? 0,
24530
+ cachedTokens: p2.cached_tokens ?? p2.cache_read_input_tokens ?? p2.cachedTokens ?? 0,
24531
+ retrieveHops: p2.retrieve_hops ?? p2.retrieveHops ?? 0
24532
24532
  };
24533
24533
  }
24534
24534
  function mapStatsToSavings(stats, prev) {
@@ -25196,12 +25196,12 @@ async function pairAuto(args2) {
25196
25196
  return;
25197
25197
  }
25198
25198
  console.log(" Starting agent loop\u2026");
25199
- const headroomReporter = maybeStartHeadroomReporter({
25199
+ const headroomReporter = claimed.pluginAuthToken ? maybeStartHeadroomReporter({
25200
25200
  sessionId: claimed.sessionId,
25201
25201
  pluginId,
25202
- pluginAuthToken: claimed.pluginAuthToken ?? "",
25202
+ pluginAuthToken: claimed.pluginAuthToken,
25203
25203
  codespaceId: process.env["CODESPACE_NAME"] ?? claimed.sessionId
25204
- });
25204
+ }) : null;
25205
25205
  process.once("exit", () => {
25206
25206
  headroomReporter?.stop();
25207
25207
  });
@@ -27495,7 +27495,7 @@ function checkChokidar() {
27495
27495
  }
27496
27496
  async function doctor(args2 = []) {
27497
27497
  const json = args2.includes("--json");
27498
- const cliVersion = true ? "2.39.46" : "0.0.0-dev";
27498
+ const cliVersion = true ? "2.39.47" : "0.0.0-dev";
27499
27499
  const apiBase2 = resolveApiBaseUrl();
27500
27500
  const diagnosticId = (0, import_node_crypto8.randomUUID)();
27501
27501
  log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
@@ -27694,7 +27694,7 @@ async function completion(args2) {
27694
27694
  // src/commands/version.ts
27695
27695
  var import_picocolors13 = __toESM(require("picocolors"));
27696
27696
  function version2() {
27697
- const v = true ? "2.39.46" : "unknown";
27697
+ const v = true ? "2.39.47" : "unknown";
27698
27698
  console.log(`${import_picocolors13.default.bold("codeam-cli")} ${import_picocolors13.default.cyan(v)}`);
27699
27699
  }
27700
27700
 
@@ -27980,7 +27980,7 @@ function checkForUpdates() {
27980
27980
  if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
27981
27981
  if (process.env.CI) return;
27982
27982
  if (!process.stdout.isTTY) return;
27983
- const current = true ? "2.39.46" : null;
27983
+ const current = true ? "2.39.47" : null;
27984
27984
  if (!current) return;
27985
27985
  const cache = readCache();
27986
27986
  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.39.46",
3
+ "version": "2.39.47",
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",