codeam-cli 2.46.1 → 2.46.3

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.46.2] — 2026-06-26
8
+
9
+ ### Added
10
+
11
+ - **cli:** Cursor generateOneShot → enables Preview detection + AI summaries
12
+
13
+ ## [2.46.1] — 2026-06-26
14
+
15
+ ### Fixed
16
+
17
+ - **cli:** Write cursor OAuth credential to login state, not CURSOR_API_KEY
18
+
7
19
  ## [2.46.0] — 2026-06-26
8
20
 
9
21
  ### Fixed
package/dist/index.js CHANGED
@@ -5397,7 +5397,7 @@ function readAnonId() {
5397
5397
  }
5398
5398
  function superProperties() {
5399
5399
  return {
5400
- cliVersion: true ? "2.46.1" : "0.0.0-dev",
5400
+ cliVersion: true ? "2.46.3" : "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.46.1",
5581
+ version: "2.46.3",
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",
@@ -12936,6 +12936,24 @@ var CursorRuntimeStrategy = class {
12936
12936
  async listModels() {
12937
12937
  return CURSOR_MODELS;
12938
12938
  }
12939
+ /**
12940
+ * One-shot headless generation — powers preview detection + AI summaries.
12941
+ * `--print` = non-interactive; `--trust` bypasses the workspace-trust gate
12942
+ * (no human at the box to approve, only works with --print); `--force`
12943
+ * auto-allows tool calls. Auth comes from the login state the provisioner
12944
+ * writes (~/.config/cursor/auth.json), NOT CURSOR_API_KEY. Returns null on
12945
+ * spawn failure / timeout / empty output so callers silently skip — same
12946
+ * semantics as Claude / Codex / Gemini.
12947
+ */
12948
+ async generateOneShot(prompt, opts) {
12949
+ const binary = this.os.findInPath("cursor-agent");
12950
+ if (!binary) return null;
12951
+ const launch = this.os.buildLaunch(binary, ["--print", "--force", "--trust", prompt]);
12952
+ return spawnAndCapture(launch.cmd, launch.args, {
12953
+ cwd: opts?.cwd,
12954
+ timeoutMs: opts?.timeoutMs
12955
+ });
12956
+ }
12939
12957
  changeModelInstruction(modelId) {
12940
12958
  return { type: "pty", ptyInput: `/model ${modelId}\r` };
12941
12959
  }
@@ -17925,7 +17943,7 @@ async function autoUpgradeBeforeCriticalCommand() {
17925
17943
  if (process.env.NODE_ENV === "test") return;
17926
17944
  if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
17927
17945
  if (process.env.CI) return;
17928
- const current = true ? "2.46.1" : null;
17946
+ const current = true ? "2.46.3" : null;
17929
17947
  if (!current) return;
17930
17948
  const cache = readCache();
17931
17949
  const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
@@ -17942,7 +17960,7 @@ function checkForUpdates() {
17942
17960
  if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
17943
17961
  if (process.env.CI) return;
17944
17962
  if (!process.stdout.isTTY) return;
17945
- const current = true ? "2.46.1" : null;
17963
+ const current = true ? "2.46.3" : null;
17946
17964
  if (!current) return;
17947
17965
  const cache = readCache();
17948
17966
  const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
@@ -18384,7 +18402,7 @@ var defaultSpawner = (env, cwd, args2 = []) => (0, import_node_child_process14.s
18384
18402
  detached: false
18385
18403
  });
18386
18404
  function currentCliVersion() {
18387
- return true ? "2.46.1" : null;
18405
+ return true ? "2.46.3" : null;
18388
18406
  }
18389
18407
  function runCmd(cmd, args2, timeoutMs) {
18390
18408
  return new Promise((resolve7) => {
@@ -24996,6 +25014,12 @@ function replyIsAuthFailure(finalText) {
24996
25014
  return t2.length > 0 && t2.length <= 200 && looksLikeAuthFailure(t2);
24997
25015
  }
24998
25016
  var AUTH_FAILURE_MESSAGE = "\u{1F512} **Authentication failed \u2014 your agent credentials are invalid or expired (API 401).**\n\nTap [Re-authenticate this agent](codeam://reauth) to renew your credentials in Profile \u203A Agents, then send your message again.";
25017
+ function replyIsCursorUpgradeRequired(finalText) {
25018
+ const t2 = finalText.trim().toLowerCase();
25019
+ if (t2.length === 0 || t2.length > 200) return false;
25020
+ return t2.includes("upgrade your plan to continue") || t2.includes("upgrade your plan") && t2.includes("continue");
25021
+ }
25022
+ var CURSOR_UPGRADE_MESSAGE = "\u26A1 **Cursor needs a paid plan to run the agent.**\n\nThe headless Cursor Agent requires Cursor **Pro** \u2014 your Free plan\u2019s included usage does NOT cover Agent runs, even with quota left. This is your Cursor account (not CodeAgent). Upgrade, then send your message again:\n\n[Upgrade to Cursor Pro \u2192](https://cursor.com/dashboard)";
24999
25023
  var TURN_FAILURE_MESSAGE = "\u26A0\uFE0F **The agent hit an error and couldn\u2019t finish this turn.** Please send your message again.";
25000
25024
  var PROVIDER_OUTAGE_RE = /overloaded_error|\boverloaded\b|service[ _]unavailable|temporarily[ _]unavailable|(?:api error|http|status)[:\s]+(?:529|503|502|504)\b|\b(?:529|503|502|504)\b[^\n]{0,40}(?:overload|unavailable|gateway|upstream|server error)|bad gateway|gateway time-?out|upstream (?:error|connect|timeout)/i;
25001
25025
  function looksLikeProviderOutage(text) {
@@ -25452,7 +25476,13 @@ async function handleCommand(cmd, client2, relay, acpSessionId, models, streamin
25452
25476
  try {
25453
25477
  const reply = await client2.prompt(blocks);
25454
25478
  const finalText = streaming.getCurrentText();
25455
- if (replyIsAuthFailure(finalText)) {
25479
+ if (opts.agent === "cursor" && replyIsCursorUpgradeRequired(finalText)) {
25480
+ await streaming.closeWithBubble(CURSOR_UPGRADE_MESSAGE);
25481
+ history.appendAgentReply(CURSOR_UPGRADE_MESSAGE);
25482
+ void history.flush();
25483
+ log.info("acpRunner", `start_task \u2190 cursor-plan-upgrade-required id=${cmd.id.slice(0, 8)}`);
25484
+ await relay.sendResult(cmd.id, "failed", { error: "cursor plan upgrade required" });
25485
+ } else if (replyIsAuthFailure(finalText)) {
25456
25486
  await streaming.closeWithBubble(AUTH_FAILURE_MESSAGE);
25457
25487
  history.appendAgentReply(AUTH_FAILURE_MESSAGE);
25458
25488
  void history.flush();
@@ -29709,7 +29739,7 @@ function checkChokidar() {
29709
29739
  }
29710
29740
  async function doctor(args2 = []) {
29711
29741
  const json = args2.includes("--json");
29712
- const cliVersion = true ? "2.46.1" : "0.0.0-dev";
29742
+ const cliVersion = true ? "2.46.3" : "0.0.0-dev";
29713
29743
  const apiBase2 = resolveApiBaseUrl();
29714
29744
  const diagnosticId = (0, import_node_crypto8.randomUUID)();
29715
29745
  log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
@@ -29908,7 +29938,7 @@ async function completion(args2) {
29908
29938
  // src/commands/version.ts
29909
29939
  var import_picocolors15 = __toESM(require("picocolors"));
29910
29940
  function version2() {
29911
- const v = true ? "2.46.1" : "unknown";
29941
+ const v = true ? "2.46.3" : "unknown";
29912
29942
  console.log(`${import_picocolors15.default.bold("codeam-cli")} ${import_picocolors15.default.cyan(v)}`);
29913
29943
  }
29914
29944
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codeam-cli",
3
- "version": "2.46.1",
3
+ "version": "2.46.3",
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",