codeam-cli 2.23.26 → 2.23.27

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,16 @@ 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.26] — 2026-05-30
8
+
9
+ ### Chore
10
+
11
+ - **meta:** No-polling rule + PreToolUse hook to enforce it
12
+
13
+ ### Fixed
14
+
15
+ - **cli:** Event-driven input_suggestion via PTY data event
16
+
7
17
  ## [2.23.25] — 2026-05-30
8
18
 
9
19
  ### 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.26",
444
+ version: "2.23.27",
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.26" : "0.0.0-dev",
5777
+ cliVersion: true ? "2.23.27" : "0.0.0-dev",
5778
5778
  nodeVersion: process.version,
5779
5779
  platform: process.platform,
5780
5780
  arch: process.arch,
@@ -11926,20 +11926,26 @@ var OutputService = class _OutputService {
11926
11926
  this.tryDetectRateLimit(raw);
11927
11927
  }
11928
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()`.
11929
+ * Idle-window accumulator. Seeded at finalize() with the current
11930
+ * established screen (`pty.content` BEFORE deactivate wipes it),
11931
+ * then appended-to by every post-finalize push. The seed is
11932
+ * mandatory: Claude paints the ghost-text completion via cursor
11933
+ * positioning ANSI on top of the existing frame, so the virtual
11934
+ * terminal needs the baseline to resolve the target cells.
11935
+ *
11936
+ * Capped at the same size as PtyBuffer's own MAX — head-truncated
11937
+ * on overflow so the most-recent visible state survives.
11935
11938
  */
11936
11939
  idleBuffer = "";
11937
- static IDLE_BUFFER_MAX = 32 * 1024;
11940
+ static IDLE_BUFFER_MAX = 2 * 1024 * 1024;
11941
+ static IDLE_BUFFER_KEEP = 1.5 * 1024 * 1024;
11938
11942
  detectIdleSuggestion(raw) {
11939
11943
  if (!this.runtime.detectInputSuggestion) return;
11940
11944
  this.idleBuffer += raw;
11941
11945
  if (this.idleBuffer.length > _OutputService.IDLE_BUFFER_MAX) {
11942
- this.idleBuffer = this.idleBuffer.slice(-_OutputService.IDLE_BUFFER_MAX);
11946
+ this.idleBuffer = this.idleBuffer.slice(
11947
+ this.idleBuffer.length - _OutputService.IDLE_BUFFER_KEEP
11948
+ );
11943
11949
  }
11944
11950
  const rendered = this.runtime.renderToLines?.(this.idleBuffer) ?? renderLines(this.idleBuffer);
11945
11951
  const suggestion = this.runtime.detectInputSuggestion(rendered);
@@ -12147,6 +12153,7 @@ var OutputService = class _OutputService {
12147
12153
  }
12148
12154
  const selector = this.runtime.detectInteractivePrompt(lines);
12149
12155
  this.stopPoll();
12156
+ this.idleBuffer = this.pty.content;
12150
12157
  this.pty.deactivate();
12151
12158
  if (selector) {
12152
12159
  this.send(
@@ -18907,7 +18914,7 @@ function checkChokidar() {
18907
18914
  }
18908
18915
  async function doctor(args2 = []) {
18909
18916
  const json = args2.includes("--json");
18910
- const cliVersion = true ? "2.23.26" : "0.0.0-dev";
18917
+ const cliVersion = true ? "2.23.27" : "0.0.0-dev";
18911
18918
  const apiBase = resolveApiBaseUrl();
18912
18919
  const diagnosticId = (0, import_node_crypto6.randomUUID)();
18913
18920
  log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
@@ -19106,7 +19113,7 @@ async function completion(args2) {
19106
19113
  // src/commands/version.ts
19107
19114
  var import_picocolors13 = __toESM(require("picocolors"));
19108
19115
  function version2() {
19109
- const v = true ? "2.23.26" : "unknown";
19116
+ const v = true ? "2.23.27" : "unknown";
19110
19117
  console.log(`${import_picocolors13.default.bold("codeam-cli")} ${import_picocolors13.default.cyan(v)}`);
19111
19118
  }
19112
19119
 
@@ -19334,7 +19341,7 @@ function checkForUpdates() {
19334
19341
  if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
19335
19342
  if (process.env.CI) return;
19336
19343
  if (!process.stdout.isTTY) return;
19337
- const current = true ? "2.23.26" : null;
19344
+ const current = true ? "2.23.27" : null;
19338
19345
  if (!current) return;
19339
19346
  const cache = readCache();
19340
19347
  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.26",
3
+ "version": "2.23.27",
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",