codeam-cli 2.41.0 → 2.41.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.
Files changed (2) hide show
  1. package/dist/index.js +48 -12
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -5390,7 +5390,7 @@ function readAnonId() {
5390
5390
  }
5391
5391
  function superProperties() {
5392
5392
  return {
5393
- cliVersion: true ? "2.41.0" : "0.0.0-dev",
5393
+ cliVersion: true ? "2.41.1" : "0.0.0-dev",
5394
5394
  nodeVersion: process.version,
5395
5395
  platform: process.platform,
5396
5396
  arch: process.arch,
@@ -5549,7 +5549,7 @@ var os4 = __toESM(require("os"));
5549
5549
  // package.json
5550
5550
  var package_default = {
5551
5551
  name: "codeam-cli",
5552
- version: "2.41.0",
5552
+ version: "2.41.1",
5553
5553
  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.",
5554
5554
  type: "commonjs",
5555
5555
  main: "dist/index.js",
@@ -17753,7 +17753,7 @@ async function autoUpgradeBeforeCriticalCommand() {
17753
17753
  if (process.env.NODE_ENV === "test") return;
17754
17754
  if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
17755
17755
  if (process.env.CI) return;
17756
- const current = true ? "2.41.0" : null;
17756
+ const current = true ? "2.41.1" : null;
17757
17757
  if (!current) return;
17758
17758
  const cache = readCache();
17759
17759
  const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
@@ -17770,7 +17770,7 @@ function checkForUpdates() {
17770
17770
  if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
17771
17771
  if (process.env.CI) return;
17772
17772
  if (!process.stdout.isTTY) return;
17773
- const current = true ? "2.41.0" : null;
17773
+ const current = true ? "2.41.1" : null;
17774
17774
  if (!current) return;
17775
17775
  const cache = readCache();
17776
17776
  const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
@@ -18208,7 +18208,7 @@ var defaultSpawner = (env, cwd, args2 = []) => (0, import_node_child_process14.s
18208
18208
  detached: false
18209
18209
  });
18210
18210
  function currentCliVersion() {
18211
- return true ? "2.41.0" : null;
18211
+ return true ? "2.41.1" : null;
18212
18212
  }
18213
18213
  function runCmd(cmd, args2, timeoutMs) {
18214
18214
  return new Promise((resolve7) => {
@@ -24626,15 +24626,46 @@ function looksLikeProviderOutage(text) {
24626
24626
  function agentStatusPage(agent) {
24627
24627
  const a = (agent ?? "").toLowerCase();
24628
24628
  if (a.includes("claude") || a.includes("anthropic"))
24629
- return { vendor: "Anthropic", url: "https://status.anthropic.com" };
24629
+ return {
24630
+ vendor: "Anthropic",
24631
+ url: "https://status.anthropic.com",
24632
+ statusApi: "https://status.anthropic.com/api/v2/status.json"
24633
+ };
24630
24634
  if (a.includes("codex") || a.includes("openai"))
24631
- return { vendor: "OpenAI", url: "https://status.openai.com" };
24635
+ return {
24636
+ vendor: "OpenAI",
24637
+ url: "https://status.openai.com",
24638
+ statusApi: "https://status.openai.com/api/v2/status.json"
24639
+ };
24632
24640
  if (a.includes("gemini") || a.includes("google"))
24633
24641
  return { vendor: "Google", url: "https://status.cloud.google.com" };
24634
- if (a.includes("copilot")) return { vendor: "GitHub", url: "https://www.githubstatus.com" };
24635
- if (a.includes("cursor")) return { vendor: "Cursor", url: "https://status.cursor.com" };
24642
+ if (a.includes("copilot"))
24643
+ return {
24644
+ vendor: "GitHub",
24645
+ url: "https://www.githubstatus.com",
24646
+ statusApi: "https://www.githubstatus.com/api/v2/status.json"
24647
+ };
24648
+ if (a.includes("cursor"))
24649
+ return {
24650
+ vendor: "Cursor",
24651
+ url: "https://status.cursor.com",
24652
+ statusApi: "https://status.cursor.com/api/v2/status.json"
24653
+ };
24636
24654
  return null;
24637
24655
  }
24656
+ async function checkProviderStatus(agent, fetchImpl = fetch) {
24657
+ const info = agentStatusPage(agent);
24658
+ if (!info?.statusApi) return false;
24659
+ try {
24660
+ const res = await withTimeout(fetchImpl(info.statusApi), 4e3);
24661
+ if (!res || !res.ok) return false;
24662
+ const body = await res.json();
24663
+ const indicator = body?.status?.indicator;
24664
+ return typeof indicator === "string" && indicator.toLowerCase() !== "none";
24665
+ } catch {
24666
+ return false;
24667
+ }
24668
+ }
24638
24669
  function providerOutageMessage(agent) {
24639
24670
  const info = agentStatusPage(agent);
24640
24671
  const who = info ? info.vendor : "The agent provider";
@@ -24963,12 +24994,17 @@ async function handleCommand(cmd, client2, relay, acpSessionId, models, streamin
24963
24994
  await recoverFromFailedTurn(client2, streaming);
24964
24995
  const detail = describeError(err);
24965
24996
  log.warn("acpRunner", `prompt failed: ${detail}`);
24966
- const bubble = failureBubble({
24997
+ let bubble = failureBubble({
24967
24998
  detail,
24968
24999
  recentStderr: recentStderr.join("\n"),
24969
25000
  hadText,
24970
25001
  agent: opts.agent
24971
25002
  });
25003
+ if (bubble !== AUTH_FAILURE_MESSAGE && bubble !== providerOutageMessage(opts.agent)) {
25004
+ if (await checkProviderStatus(opts.agent)) {
25005
+ bubble = providerOutageMessage(opts.agent);
25006
+ }
25007
+ }
24972
25008
  if (bubble) {
24973
25009
  await publisher.publishOutput({ type: "text", content: bubble, done: true });
24974
25010
  history.appendAgentReply(bubble);
@@ -29126,7 +29162,7 @@ function checkChokidar() {
29126
29162
  }
29127
29163
  async function doctor(args2 = []) {
29128
29164
  const json = args2.includes("--json");
29129
- const cliVersion = true ? "2.41.0" : "0.0.0-dev";
29165
+ const cliVersion = true ? "2.41.1" : "0.0.0-dev";
29130
29166
  const apiBase2 = resolveApiBaseUrl();
29131
29167
  const diagnosticId = (0, import_node_crypto8.randomUUID)();
29132
29168
  log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
@@ -29325,7 +29361,7 @@ async function completion(args2) {
29325
29361
  // src/commands/version.ts
29326
29362
  var import_picocolors14 = __toESM(require("picocolors"));
29327
29363
  function version2() {
29328
- const v = true ? "2.41.0" : "unknown";
29364
+ const v = true ? "2.41.1" : "unknown";
29329
29365
  console.log(`${import_picocolors14.default.bold("codeam-cli")} ${import_picocolors14.default.cyan(v)}`);
29330
29366
  }
29331
29367
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codeam-cli",
3
- "version": "2.41.0",
3
+ "version": "2.41.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",