codeam-cli 2.43.6 → 2.43.7

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.43.6] — 2026-06-25
8
+
9
+ ### Fixed
10
+
11
+ - **cli:** ACP newSession no longer hangs forever on a fatal startup error
12
+
7
13
  ## [2.43.5] — 2026-06-25
8
14
 
9
15
  ### Added
package/dist/index.js CHANGED
@@ -5397,7 +5397,7 @@ function readAnonId() {
5397
5397
  }
5398
5398
  function superProperties() {
5399
5399
  return {
5400
- cliVersion: true ? "2.43.6" : "0.0.0-dev",
5400
+ cliVersion: true ? "2.43.7" : "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.43.6",
5581
+ version: "2.43.7",
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",
@@ -17899,7 +17899,7 @@ async function autoUpgradeBeforeCriticalCommand() {
17899
17899
  if (process.env.NODE_ENV === "test") return;
17900
17900
  if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
17901
17901
  if (process.env.CI) return;
17902
- const current = true ? "2.43.6" : null;
17902
+ const current = true ? "2.43.7" : null;
17903
17903
  if (!current) return;
17904
17904
  const cache = readCache();
17905
17905
  const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
@@ -17916,7 +17916,7 @@ function checkForUpdates() {
17916
17916
  if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
17917
17917
  if (process.env.CI) return;
17918
17918
  if (!process.stdout.isTTY) return;
17919
- const current = true ? "2.43.6" : null;
17919
+ const current = true ? "2.43.7" : null;
17920
17920
  if (!current) return;
17921
17921
  const cache = readCache();
17922
17922
  const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
@@ -18354,7 +18354,7 @@ var defaultSpawner = (env, cwd, args2 = []) => (0, import_node_child_process14.s
18354
18354
  detached: false
18355
18355
  });
18356
18356
  function currentCliVersion() {
18357
- return true ? "2.43.6" : null;
18357
+ return true ? "2.43.7" : null;
18358
18358
  }
18359
18359
  function runCmd(cmd, args2, timeoutMs) {
18360
18360
  return new Promise((resolve7) => {
@@ -24994,6 +24994,61 @@ The agent provider returned an overload/outage error, so this turn couldn\u2019t
24994
24994
 
24995
24995
  Follow the status here: [${info.url}](${info.url})` : "");
24996
24996
  }
24997
+ function isGeminiIneligibleTier(haystack) {
24998
+ return /IneligibleTierError|UNSUPPORTED_CLIENT|no longer supported for Gemini Code Assist|not eligible for Gemini Code Assist/i.test(
24999
+ haystack
25000
+ );
25001
+ }
25002
+ function startupFailureMessage(agent, detail, recentStderr) {
25003
+ const haystack = `${detail}
25004
+ ${recentStderr}`;
25005
+ if (agent === "gemini" && isGeminiIneligibleTier(haystack)) {
25006
+ return [
25007
+ "\u26A0\uFE0F **Gemini couldn't start \u2014 your Google account isn't eligible.**",
25008
+ "",
25009
+ "Google discontinued free **\u201CLogin with Google\u201D** access to the Gemini CLI on 2026-06-18. The free / individual tier (and Google AI Pro/Ultra) can no longer authenticate here.",
25010
+ "",
25011
+ "To use Gemini from CodeAgent, re-link it in **Profile \u203A Agents** with either:",
25012
+ "\u2022 a **Gemini API key** (AI Studio \u2014 free quota available), or",
25013
+ "\u2022 a paid **Gemini Code Assist (Standard/Enterprise)** subscription."
25014
+ ].join("\n");
25015
+ }
25016
+ if (looksLikeAuthFailure(haystack)) return AUTH_FAILURE_MESSAGE;
25017
+ if (looksLikeProviderOutage(haystack)) return providerOutageMessage(agent);
25018
+ const tail = recentStderr.split("\n").filter(Boolean).slice(-3).join("\n");
25019
+ return [
25020
+ `\u26A0\uFE0F The ${agent} agent failed to start.`,
25021
+ "",
25022
+ tail ? `Details:
25023
+ ${tail}` : detail
25024
+ ].join("\n");
25025
+ }
25026
+ async function surfaceStartupFailure(opts) {
25027
+ const msg = startupFailureMessage(opts.agent, opts.detail, opts.recentStderr);
25028
+ const publish = async () => {
25029
+ try {
25030
+ await opts.publisher.publishOutput({ type: "new_turn", done: false });
25031
+ await opts.publisher.publishOutput({ type: "text", content: msg, done: true });
25032
+ } catch {
25033
+ }
25034
+ };
25035
+ await publish();
25036
+ const errRelay = new CommandRelayService(
25037
+ opts.pluginId,
25038
+ async (cmd) => {
25039
+ if (cmd.type === "get_conversation") {
25040
+ await errRelay.sendResult(cmd.id, "completed", {}).catch(() => void 0);
25041
+ return;
25042
+ }
25043
+ await publish();
25044
+ await errRelay.sendResult(cmd.id, "failed", {
25045
+ error: `${opts.agent} is unavailable \u2014 see the message in chat.`
25046
+ }).catch(() => void 0);
25047
+ },
25048
+ { id: opts.agent, name: opts.agent, displayName: opts.agent }
25049
+ );
25050
+ errRelay.start();
25051
+ }
24997
25052
  function failureBubble(opts) {
24998
25053
  if (looksLikeAuthFailure(opts.detail) || looksLikeAuthFailure(opts.recentStderr)) {
24999
25054
  return AUTH_FAILURE_MESSAGE;
@@ -25194,12 +25249,27 @@ async function runAcpSession(opts) {
25194
25249
  log: (msg) => log.info("acpRunner", msg)
25195
25250
  });
25196
25251
  showInfo(`Starting ${opts.agent} via ACP adapter (${opts.adapter.requiresAgentBinary})\u2026`);
25252
+ let handshake;
25253
+ try {
25254
+ handshake = await client2.start();
25255
+ } catch (startErr) {
25256
+ const detail = describeError(startErr);
25257
+ log.warn("acpRunner", `ACP start failed for ${opts.agent}: ${detail}`);
25258
+ await surfaceStartupFailure({
25259
+ agent: opts.agent,
25260
+ pluginId: opts.pluginId,
25261
+ detail,
25262
+ recentStderr: recentStderr.join("\n"),
25263
+ publisher
25264
+ });
25265
+ return;
25266
+ }
25197
25267
  const {
25198
25268
  sessionId: acpSessionId,
25199
25269
  initialize,
25200
25270
  model: handshakeModel,
25201
25271
  tier: handshakeTier
25202
- } = await client2.start();
25272
+ } = handshake;
25203
25273
  log.trace(
25204
25274
  "acpRunner",
25205
25275
  `adapter handshake ok protocolVersion=${initialize.protocolVersion} sessionId=${acpSessionId.slice(0, 8)}`
@@ -29551,7 +29621,7 @@ function checkChokidar() {
29551
29621
  }
29552
29622
  async function doctor(args2 = []) {
29553
29623
  const json = args2.includes("--json");
29554
- const cliVersion = true ? "2.43.6" : "0.0.0-dev";
29624
+ const cliVersion = true ? "2.43.7" : "0.0.0-dev";
29555
29625
  const apiBase2 = resolveApiBaseUrl();
29556
29626
  const diagnosticId = (0, import_node_crypto8.randomUUID)();
29557
29627
  log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
@@ -29750,7 +29820,7 @@ async function completion(args2) {
29750
29820
  // src/commands/version.ts
29751
29821
  var import_picocolors14 = __toESM(require("picocolors"));
29752
29822
  function version2() {
29753
- const v = true ? "2.43.6" : "unknown";
29823
+ const v = true ? "2.43.7" : "unknown";
29754
29824
  console.log(`${import_picocolors14.default.bold("codeam-cli")} ${import_picocolors14.default.cyan(v)}`);
29755
29825
  }
29756
29826
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codeam-cli",
3
- "version": "2.43.6",
3
+ "version": "2.43.7",
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",