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 +12 -0
- package/dist/index.js +38 -8
- package/package.json +1 -1
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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 (
|
|
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.
|
|
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.
|
|
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.
|
|
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",
|