codeam-cli 2.23.24 → 2.23.26

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,18 @@ 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.25] — 2026-05-30
8
+
9
+ ### Fixed
10
+
11
+ - **cli:** Poll for input_suggestion after turn finalises
12
+
13
+ ## [2.23.24] — 2026-05-30
14
+
15
+ ### Added
16
+
17
+ - **cli:** Pre-assign Claude session id via --session-id, drop birthtime guesswork
18
+
7
19
  ## [2.23.23] — 2026-05-30
8
20
 
9
21
  ### Fixed
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.24",
444
+ version: "2.23.26",
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.24" : "0.0.0-dev",
5777
+ cliVersion: true ? "2.23.26" : "0.0.0-dev",
5778
5778
  nodeVersion: process.version,
5779
5779
  platform: process.platform,
5780
5780
  arch: process.arch,
@@ -11915,7 +11915,7 @@ var OutputService = class _OutputService {
11915
11915
  this.terminalTurnPending = true;
11916
11916
  this.onTerminalTurnDetected?.();
11917
11917
  }
11918
- log.trace("outputSvc", `push dropped (inactive, ${raw.length}B)`);
11918
+ this.detectIdleSuggestion(raw);
11919
11919
  return;
11920
11920
  }
11921
11921
  log.trace(
@@ -11925,6 +11925,36 @@ var OutputService = class _OutputService {
11925
11925
  this.tryExtractSessionId(raw);
11926
11926
  this.tryDetectRateLimit(raw);
11927
11927
  }
11928
+ /**
11929
+ * Idle-window accumulator. PtyBuffer wipes its `raw` on
11930
+ * `deactivate()` to keep next-turn renders clean, so the
11931
+ * post-finalize PTY redraw frames don't live in `this.pty.content`.
11932
+ * We mirror them here only for the suggestion detector — a tiny
11933
+ * window of trailing bytes is enough for renderToLines to surface
11934
+ * the last frame. Cleared on every `beginTurn()`.
11935
+ */
11936
+ idleBuffer = "";
11937
+ static IDLE_BUFFER_MAX = 32 * 1024;
11938
+ detectIdleSuggestion(raw) {
11939
+ if (!this.runtime.detectInputSuggestion) return;
11940
+ this.idleBuffer += raw;
11941
+ if (this.idleBuffer.length > _OutputService.IDLE_BUFFER_MAX) {
11942
+ this.idleBuffer = this.idleBuffer.slice(-_OutputService.IDLE_BUFFER_MAX);
11943
+ }
11944
+ const rendered = this.runtime.renderToLines?.(this.idleBuffer) ?? renderLines(this.idleBuffer);
11945
+ const suggestion = this.runtime.detectInputSuggestion(rendered);
11946
+ if (suggestion === this.lastSentSuggestion) return;
11947
+ this.lastSentSuggestion = suggestion;
11948
+ this.send(
11949
+ {
11950
+ type: "input_suggestion",
11951
+ content: suggestion ?? "",
11952
+ done: true
11953
+ },
11954
+ { critical: false }
11955
+ ).catch(() => {
11956
+ });
11957
+ }
11928
11958
  dispose() {
11929
11959
  this.stopPoll();
11930
11960
  this.pty.deactivate();
@@ -11936,6 +11966,7 @@ var OutputService = class _OutputService {
11936
11966
  this.steps.reset();
11937
11967
  this.lastSentContent = "";
11938
11968
  this.lastContentChangeAt = 0;
11969
+ this.idleBuffer = "";
11939
11970
  this.startTime = Date.now();
11940
11971
  this.pollTimer = setInterval(() => this.tick(), _OutputService.POLL_MS);
11941
11972
  }
@@ -18876,7 +18907,7 @@ function checkChokidar() {
18876
18907
  }
18877
18908
  async function doctor(args2 = []) {
18878
18909
  const json = args2.includes("--json");
18879
- const cliVersion = true ? "2.23.24" : "0.0.0-dev";
18910
+ const cliVersion = true ? "2.23.26" : "0.0.0-dev";
18880
18911
  const apiBase = resolveApiBaseUrl();
18881
18912
  const diagnosticId = (0, import_node_crypto6.randomUUID)();
18882
18913
  log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
@@ -19075,7 +19106,7 @@ async function completion(args2) {
19075
19106
  // src/commands/version.ts
19076
19107
  var import_picocolors13 = __toESM(require("picocolors"));
19077
19108
  function version2() {
19078
- const v = true ? "2.23.24" : "unknown";
19109
+ const v = true ? "2.23.26" : "unknown";
19079
19110
  console.log(`${import_picocolors13.default.bold("codeam-cli")} ${import_picocolors13.default.cyan(v)}`);
19080
19111
  }
19081
19112
 
@@ -19303,7 +19334,7 @@ function checkForUpdates() {
19303
19334
  if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
19304
19335
  if (process.env.CI) return;
19305
19336
  if (!process.stdout.isTTY) return;
19306
- const current = true ? "2.23.24" : null;
19337
+ const current = true ? "2.23.26" : null;
19307
19338
  if (!current) return;
19308
19339
  const cache = readCache();
19309
19340
  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.24",
3
+ "version": "2.23.26",
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",