codeam-cli 2.61.93 → 2.61.94

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,12 @@ 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.61.93] — 2026-08-08
8
+
9
+ ### Fixed
10
+
11
+ - **cli:** Post pack events to /api/agent-packs/events (#602)
12
+
7
13
  ## [2.61.92] — 2026-08-08
8
14
 
9
15
  ### Added
package/dist/index.js CHANGED
@@ -8017,7 +8017,7 @@ function readAnonId() {
8017
8017
  }
8018
8018
  function superProperties() {
8019
8019
  return {
8020
- cliVersion: true ? "2.61.93" : "0.0.0-dev",
8020
+ cliVersion: true ? "2.61.94" : "0.0.0-dev",
8021
8021
  nodeVersion: process.version,
8022
8022
  platform: process.platform,
8023
8023
  arch: process.arch,
@@ -8198,7 +8198,7 @@ var os4 = __toESM(require("os"));
8198
8198
  // package.json
8199
8199
  var package_default = {
8200
8200
  name: "codeam-cli",
8201
- version: "2.61.93",
8201
+ version: "2.61.94",
8202
8202
  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.",
8203
8203
  type: "commonjs",
8204
8204
  main: "dist/index.js",
@@ -8909,9 +8909,18 @@ function isPidAlive(pid) {
8909
8909
  return false;
8910
8910
  }
8911
8911
  }
8912
+ function pidLooksLikeProxy(pid) {
8913
+ try {
8914
+ const cmd = fs5.readFileSync(`/proc/${pid}/cmdline`, "utf8").replace(/\0/g, " ").toLowerCase();
8915
+ if (cmd.trim() === "") return false;
8916
+ return cmd.includes("headroom") && cmd.includes("proxy");
8917
+ } catch {
8918
+ return isPidAlive(pid);
8919
+ }
8920
+ }
8912
8921
  function isHeadroomProxyProcessAlive() {
8913
8922
  const pid = readHeadroomProxyPidfile();
8914
- return pid !== null && isPidAlive(pid);
8923
+ return pid !== null && isPidAlive(pid) && pidLooksLikeProxy(pid);
8915
8924
  }
8916
8925
  function headroomProxyPidfileAgeMs(nowMs) {
8917
8926
  try {
@@ -9033,7 +9042,7 @@ async function ensureHeadroomProxy(deps) {
9033
9042
  const ageMs = deps.proxyStartupAgeMs();
9034
9043
  if (ageMs !== null && ageMs < PROXY_STARTUP_GRACE_MS) return "starting";
9035
9044
  log.warn("headroom-supervisor", "proxy :8787 is confirmed down \u2014 respawning");
9036
- deps.spawnProxy();
9045
+ (deps.spawnProxyForce ?? deps.spawnProxy)();
9037
9046
  return "respawned";
9038
9047
  }
9039
9048
  async function ensureHeadroomProxyReady(deps, opts = {}) {
@@ -9100,14 +9109,17 @@ function makeRealProxySupervisorDeps() {
9100
9109
  proxyProcessAlive: () => isHeadroomProxyProcessAlive(),
9101
9110
  proxyStartupAgeMs: () => headroomProxyPidfileAgeMs(Date.now()),
9102
9111
  spawnProxy: spawnProxyReal,
9103
- spawnProxyForce: () => spawnHeadroomProxy(
9104
- {
9105
- tag: "headroom-supervisor",
9106
- spawnErrorMsg: (detail) => `force-respawn error (best-effort): ${detail}`,
9107
- failureMsg: (detail) => `force-respawn failed (best-effort): ${detail}`
9108
- },
9109
- { force: true }
9110
- )
9112
+ spawnProxyForce: () => {
9113
+ killHeadroomProxy();
9114
+ spawnHeadroomProxy(
9115
+ {
9116
+ tag: "headroom-supervisor",
9117
+ spawnErrorMsg: (detail) => `force-respawn error (best-effort): ${detail}`,
9118
+ failureMsg: (detail) => `force-respawn failed (best-effort): ${detail}`
9119
+ },
9120
+ { force: true }
9121
+ );
9122
+ }
9111
9123
  };
9112
9124
  }
9113
9125
 
@@ -9503,7 +9515,7 @@ var CommandRelayService = class _CommandRelayService {
9503
9515
  // fresh + clear the "CLI update available" banner after a self-update
9504
9516
  // (a codespace that reinstalls @latest reconnects via heartbeat, not
9505
9517
  // pair/reconnect). Older backends ignore the extra field.
9506
- ..."2.61.93" ? { ideVersion: "2.61.93" } : {}
9518
+ ..."2.61.94" ? { ideVersion: "2.61.94" } : {}
9507
9519
  }).then(() => log.trace("relay", `heartbeat ok online=${online}`)).catch((err) => log.trace("relay", `heartbeat failed online=${online}`, err));
9508
9520
  }
9509
9521
  /**
@@ -20676,7 +20688,7 @@ async function autoUpgradeBeforeCriticalCommand() {
20676
20688
  if (process.env.NODE_ENV === "test") return;
20677
20689
  if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
20678
20690
  if (process.env.CI) return;
20679
- const current2 = true ? "2.61.93" : null;
20691
+ const current2 = true ? "2.61.94" : null;
20680
20692
  if (!current2) return;
20681
20693
  const cache = readCache();
20682
20694
  const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
@@ -20693,7 +20705,7 @@ function checkForUpdates() {
20693
20705
  if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
20694
20706
  if (process.env.CI) return;
20695
20707
  if (!process.stdout.isTTY) return;
20696
- const current2 = true ? "2.61.93" : null;
20708
+ const current2 = true ? "2.61.94" : null;
20697
20709
  if (!current2) return;
20698
20710
  const cache = readCache();
20699
20711
  const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
@@ -20713,7 +20725,7 @@ var SELF_UPDATE_INTERVAL_MS = 60 * 60 * 1e3;
20713
20725
  var SELF_UPDATE_VIEW_TIMEOUT_MS = 3e4;
20714
20726
  var SELF_UPDATE_INSTALL_TIMEOUT_MS = 18e4;
20715
20727
  function currentCliVersion() {
20716
- return true ? "2.61.93" : null;
20728
+ return true ? "2.61.94" : null;
20717
20729
  }
20718
20730
  function runCmd(cmd, args2, timeoutMs) {
20719
20731
  return new Promise((resolve9) => {
@@ -21209,6 +21221,7 @@ var HostAgentSupervisor = class {
21209
21221
  this.heartbeatTimer = setInterval(() => void this.beat(), HEARTBEAT_INTERVAL_MS);
21210
21222
  this.heartbeatTimer.unref?.();
21211
21223
  this.resumePersistedSession();
21224
+ void ensureHeadroomProxyReady(makeRealProxySupervisorDeps()).catch(() => void 0);
21212
21225
  void reportSessionEvent(
21213
21226
  { hostId: this.identity.hostId, hostToken: this.identity.hostToken },
21214
21227
  { event: "reconcile", activeDeployIds: this.activeSessions().map((s) => s.id) }
@@ -42470,7 +42483,7 @@ function checkChokidar() {
42470
42483
  }
42471
42484
  async function doctor(args2 = []) {
42472
42485
  const json = args2.includes("--json");
42473
- const cliVersion = true ? "2.61.93" : "0.0.0-dev";
42486
+ const cliVersion = true ? "2.61.94" : "0.0.0-dev";
42474
42487
  const apiBase2 = resolveApiBaseUrl();
42475
42488
  const diagnosticId = (0, import_node_crypto13.randomUUID)();
42476
42489
  log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
@@ -42861,7 +42874,7 @@ async function mcpRun(args2) {
42861
42874
  // src/commands/version.ts
42862
42875
  var import_picocolors15 = __toESM(require("picocolors"));
42863
42876
  function version2() {
42864
- const v = true ? "2.61.93" : "unknown";
42877
+ const v = true ? "2.61.94" : "unknown";
42865
42878
  console.log(`${import_picocolors15.default.bold("codeam-cli")} ${import_picocolors15.default.cyan(v)}`);
42866
42879
  }
42867
42880
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codeam-cli",
3
- "version": "2.61.93",
3
+ "version": "2.61.94",
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",