codeam-cli 2.23.29 → 2.23.30

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,24 @@ 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.23.29] — 2026-05-30
8
+
9
+ ### Fixed
10
+
11
+ - **cli:** DetectInputSuggestion skips Claude TUI box borders
12
+
13
+ ## [2.23.28] — 2026-05-30
14
+
15
+ ### Changed
16
+
17
+ - **cli:** Gate idle-suggestion seed on per-agent opt-in
18
+
19
+ ## [2.23.27] — 2026-05-30
20
+
21
+ ### Fixed
22
+
23
+ - **cli:** Seed idle-suggestion detector with the established screen
24
+
7
25
  ## [2.23.26] — 2026-05-30
8
26
 
9
27
  ### Chore
package/dist/index.js CHANGED
@@ -441,7 +441,7 @@ var import_qrcode_terminal = __toESM(require("qrcode-terminal"));
441
441
  // package.json
442
442
  var package_default = {
443
443
  name: "codeam-cli",
444
- version: "2.23.29",
444
+ version: "2.23.30",
445
445
  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.",
446
446
  type: "commonjs",
447
447
  main: "dist/index.js",
@@ -5774,7 +5774,7 @@ function readAnonId() {
5774
5774
  }
5775
5775
  function superProperties() {
5776
5776
  return {
5777
- cliVersion: true ? "2.23.29" : "0.0.0-dev",
5777
+ cliVersion: true ? "2.23.30" : "0.0.0-dev",
5778
5778
  nodeVersion: process.version,
5779
5779
  platform: process.platform,
5780
5780
  arch: process.arch,
@@ -15893,10 +15893,19 @@ var requestLinkCredentialsH = (ctx, _cmd, parsed) => {
15893
15893
  })();
15894
15894
  };
15895
15895
  var requestAiSummaryH = (ctx, _cmd, parsed) => {
15896
- if (!ctx.pluginAuthToken) return;
15897
- if (typeof ctx.runtime.generateOneShot !== "function") return;
15896
+ if (!ctx.pluginAuthToken) {
15897
+ log.info("ai-summary", "no pluginAuthToken \u2014 skipping");
15898
+ return;
15899
+ }
15900
+ if (typeof ctx.runtime.generateOneShot !== "function") {
15901
+ log.info("ai-summary", `runtime ${ctx.runtime.id} has no generateOneShot \u2014 skipping`);
15902
+ return;
15903
+ }
15898
15904
  if (!parsed.prompt || !parsed.turnId || !parsed.stats) {
15899
- log.trace("ai-summary", "missing prompt/turnId/stats \u2014 skipping");
15905
+ log.info(
15906
+ "ai-summary",
15907
+ `missing fields \u2014 prompt=${!!parsed.prompt} turnId=${!!parsed.turnId} stats=${!!parsed.stats}`
15908
+ );
15900
15909
  return;
15901
15910
  }
15902
15911
  const prompt = parsed.prompt;
@@ -15904,12 +15913,19 @@ var requestAiSummaryH = (ctx, _cmd, parsed) => {
15904
15913
  const stats = parsed.stats;
15905
15914
  const pluginAuthToken = ctx.pluginAuthToken;
15906
15915
  void (async () => {
15916
+ log.info("ai-summary", `generateOneShot start turnId=${turnId} promptLen=${prompt.length}`);
15917
+ const startedAt = Date.now();
15907
15918
  const text = await ctx.runtime.generateOneShot(prompt).catch((err) => {
15908
- log.trace("ai-summary", "generateOneShot threw", err);
15919
+ log.info("ai-summary", `generateOneShot threw: ${String(err)}`);
15909
15920
  return null;
15910
15921
  });
15911
- if (!text) return;
15912
- await postAiResult({
15922
+ const tookMs = Date.now() - startedAt;
15923
+ if (!text) {
15924
+ log.info("ai-summary", `generateOneShot returned null after ${tookMs}ms \u2014 skipping POST`);
15925
+ return;
15926
+ }
15927
+ log.info("ai-summary", `generateOneShot ok turnId=${turnId} took=${tookMs}ms textLen=${text.length}`);
15928
+ const result = await postAiResult({
15913
15929
  sessionId: ctx.sessionId,
15914
15930
  pluginId: ctx.pluginId,
15915
15931
  pluginAuthToken,
@@ -15918,26 +15934,47 @@ var requestAiSummaryH = (ctx, _cmd, parsed) => {
15918
15934
  summary: text,
15919
15935
  stats
15920
15936
  });
15937
+ if (result.ok) {
15938
+ log.info("ai-summary", `postAiResult ok turnId=${turnId}`);
15939
+ } else {
15940
+ log.info("ai-summary", `postAiResult failed status=${result.status} msg=${result.message}`);
15941
+ }
15921
15942
  })();
15922
15943
  };
15923
15944
  var requestAiInsightH = (ctx, _cmd, parsed) => {
15924
- if (!ctx.pluginAuthToken) return;
15925
- if (typeof ctx.runtime.generateOneShot !== "function") return;
15945
+ if (!ctx.pluginAuthToken) {
15946
+ log.info("ai-insight", "no pluginAuthToken \u2014 skipping");
15947
+ return;
15948
+ }
15949
+ if (typeof ctx.runtime.generateOneShot !== "function") {
15950
+ log.info("ai-insight", `runtime ${ctx.runtime.id} has no generateOneShot \u2014 skipping`);
15951
+ return;
15952
+ }
15926
15953
  if (!parsed.prompt || !parsed.fileChangeId) {
15927
- log.trace("ai-insight", "missing prompt/fileChangeId \u2014 skipping");
15954
+ log.info(
15955
+ "ai-insight",
15956
+ `missing fields \u2014 prompt=${!!parsed.prompt} fileChangeId=${!!parsed.fileChangeId}`
15957
+ );
15928
15958
  return;
15929
15959
  }
15930
15960
  const prompt = parsed.prompt;
15931
15961
  const fileChangeId = parsed.fileChangeId;
15932
15962
  const pluginAuthToken = ctx.pluginAuthToken;
15933
15963
  void (async () => {
15964
+ log.info("ai-insight", `generateOneShot start fileChangeId=${fileChangeId} promptLen=${prompt.length}`);
15965
+ const startedAt = Date.now();
15934
15966
  const text = await ctx.runtime.generateOneShot(prompt).catch((err) => {
15935
- log.trace("ai-insight", "generateOneShot threw", err);
15967
+ log.info("ai-insight", `generateOneShot threw: ${String(err)}`);
15936
15968
  return null;
15937
15969
  });
15938
- if (!text) return;
15970
+ const tookMs = Date.now() - startedAt;
15971
+ if (!text) {
15972
+ log.info("ai-insight", `generateOneShot returned null after ${tookMs}ms \u2014 skipping POST`);
15973
+ return;
15974
+ }
15975
+ log.info("ai-insight", `generateOneShot ok fileChangeId=${fileChangeId} took=${tookMs}ms textLen=${text.length}`);
15939
15976
  const { summary, reasoning, securityNote } = parseInsightText(text);
15940
- await postAiResult({
15977
+ const result = await postAiResult({
15941
15978
  sessionId: ctx.sessionId,
15942
15979
  pluginId: ctx.pluginId,
15943
15980
  pluginAuthToken,
@@ -15947,6 +15984,11 @@ var requestAiInsightH = (ctx, _cmd, parsed) => {
15947
15984
  reasoning,
15948
15985
  securityNote
15949
15986
  });
15987
+ if (result.ok) {
15988
+ log.info("ai-insight", `postAiResult ok fileChangeId=${fileChangeId}`);
15989
+ } else {
15990
+ log.info("ai-insight", `postAiResult failed status=${result.status} msg=${result.message}`);
15991
+ }
15950
15992
  })();
15951
15993
  };
15952
15994
  function parseInsightText(text) {
@@ -18917,7 +18959,7 @@ function checkChokidar() {
18917
18959
  }
18918
18960
  async function doctor(args2 = []) {
18919
18961
  const json = args2.includes("--json");
18920
- const cliVersion = true ? "2.23.29" : "0.0.0-dev";
18962
+ const cliVersion = true ? "2.23.30" : "0.0.0-dev";
18921
18963
  const apiBase = resolveApiBaseUrl();
18922
18964
  const diagnosticId = (0, import_node_crypto6.randomUUID)();
18923
18965
  log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
@@ -19116,7 +19158,7 @@ async function completion(args2) {
19116
19158
  // src/commands/version.ts
19117
19159
  var import_picocolors13 = __toESM(require("picocolors"));
19118
19160
  function version2() {
19119
- const v = true ? "2.23.29" : "unknown";
19161
+ const v = true ? "2.23.30" : "unknown";
19120
19162
  console.log(`${import_picocolors13.default.bold("codeam-cli")} ${import_picocolors13.default.cyan(v)}`);
19121
19163
  }
19122
19164
 
@@ -19344,7 +19386,7 @@ function checkForUpdates() {
19344
19386
  if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
19345
19387
  if (process.env.CI) return;
19346
19388
  if (!process.stdout.isTTY) return;
19347
- const current = true ? "2.23.29" : null;
19389
+ const current = true ? "2.23.30" : null;
19348
19390
  if (!current) return;
19349
19391
  const cache = readCache();
19350
19392
  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.23.29",
3
+ "version": "2.23.30",
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",