codeam-cli 2.36.2 → 2.36.4
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 +35 -7
- 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.36.3] — 2026-06-11
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
|
|
11
|
+
- **cli:** AUTO mode in codespaces — auto-approve ACP permission requests
|
|
12
|
+
|
|
13
|
+
## [2.36.2] — 2026-06-11
|
|
14
|
+
|
|
15
|
+
### Fixed
|
|
16
|
+
|
|
17
|
+
- **cli:** Drop BEADS_DIR so shared-server resolves the workspace from cwd
|
|
18
|
+
|
|
7
19
|
## [2.36.1] — 2026-06-11
|
|
8
20
|
|
|
9
21
|
### Fixed
|
package/dist/index.js
CHANGED
|
@@ -498,7 +498,7 @@ var import_qrcode_terminal = __toESM(require("qrcode-terminal"));
|
|
|
498
498
|
// package.json
|
|
499
499
|
var package_default = {
|
|
500
500
|
name: "codeam-cli",
|
|
501
|
-
version: "2.36.
|
|
501
|
+
version: "2.36.4",
|
|
502
502
|
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.",
|
|
503
503
|
type: "commonjs",
|
|
504
504
|
main: "dist/index.js",
|
|
@@ -5900,7 +5900,7 @@ function readAnonId() {
|
|
|
5900
5900
|
}
|
|
5901
5901
|
function superProperties() {
|
|
5902
5902
|
return {
|
|
5903
|
-
cliVersion: true ? "2.36.
|
|
5903
|
+
cliVersion: true ? "2.36.4" : "0.0.0-dev",
|
|
5904
5904
|
nodeVersion: process.version,
|
|
5905
5905
|
platform: process.platform,
|
|
5906
5906
|
arch: process.arch,
|
|
@@ -17993,6 +17993,8 @@ var _provisionSeam = {
|
|
|
17993
17993
|
installDolt,
|
|
17994
17994
|
/** No-sudo fallback: extract the dolt tarball/zip into a user-writable dir. */
|
|
17995
17995
|
installDoltToDir,
|
|
17996
|
+
/** Async sleep — behind the seam so the spawn-retry backoff is instant in tests. */
|
|
17997
|
+
sleep: (ms) => new Promise((r) => setTimeout(r, ms)),
|
|
17996
17998
|
// Probe dolt on PATH AND auto-prepend a known install dir if found off-PATH
|
|
17997
17999
|
// (codespace: official install.sh drops dolt in /usr/local/bin, which the
|
|
17998
18000
|
// bundled-node CLI's PATH can omit — mirrors the bd-on-PATH symlink fix).
|
|
@@ -18192,7 +18194,15 @@ async function setupAgents(bd, agents) {
|
|
|
18192
18194
|
continue;
|
|
18193
18195
|
}
|
|
18194
18196
|
log.info("beads", `wiring agent natively: bd setup ${recipe} --global`);
|
|
18195
|
-
|
|
18197
|
+
let setup = await bd.run(["setup", recipe, "--global"]);
|
|
18198
|
+
for (let attempt = 1; setup.code === -1 && attempt <= 2; attempt++) {
|
|
18199
|
+
log.info(
|
|
18200
|
+
"beads",
|
|
18201
|
+
`bd setup ${recipe} --global spawn failed (transient: ${setup.stderr.slice(0, 80)}) \u2014 retry ${attempt}/2`
|
|
18202
|
+
);
|
|
18203
|
+
await _provisionSeam.sleep(1500);
|
|
18204
|
+
setup = await bd.run(["setup", recipe, "--global"]);
|
|
18205
|
+
}
|
|
18196
18206
|
if (setup.code === 0) {
|
|
18197
18207
|
wired.push(recipe);
|
|
18198
18208
|
} else {
|
|
@@ -21143,6 +21153,9 @@ var StreamingState = class {
|
|
|
21143
21153
|
}
|
|
21144
21154
|
};
|
|
21145
21155
|
var PERMISSION_TIMEOUT_MS = 5 * 60 * 1e3;
|
|
21156
|
+
function pickAllowOption(options) {
|
|
21157
|
+
return options.find((o) => o.kind === "allow_always") ?? options.find((o) => o.kind === "allow_once") ?? null;
|
|
21158
|
+
}
|
|
21146
21159
|
var AcpHistory = class {
|
|
21147
21160
|
constructor(publisher, opts) {
|
|
21148
21161
|
this.publisher = publisher;
|
|
@@ -21252,6 +21265,17 @@ async function runAcpSession(opts) {
|
|
|
21252
21265
|
}
|
|
21253
21266
|
},
|
|
21254
21267
|
onRequestPermission: async (request) => {
|
|
21268
|
+
if (opts.autoApprovePermissions) {
|
|
21269
|
+
const allow = pickAllowOption(request.options);
|
|
21270
|
+
if (allow) {
|
|
21271
|
+
log.info(
|
|
21272
|
+
"acpRunner",
|
|
21273
|
+
`AUTO mode \u2014 auto-approving permission (${allow.kind}) optionId=${allow.optionId}`
|
|
21274
|
+
);
|
|
21275
|
+
return { outcome: { outcome: "selected", optionId: allow.optionId } };
|
|
21276
|
+
}
|
|
21277
|
+
log.warn("acpRunner", "AUTO mode \u2014 no allow option offered; falling back to interactive");
|
|
21278
|
+
}
|
|
21255
21279
|
const { event, optionIdByLabel } = mapPermissionRequest(request);
|
|
21256
21280
|
await publisher.publishAwaitingAnswer(event);
|
|
21257
21281
|
return streaming.registerPermission({
|
|
@@ -23525,7 +23549,11 @@ async function start(requestedAgent) {
|
|
|
23525
23549
|
pluginAuthToken: session.pluginAuthToken,
|
|
23526
23550
|
adapter,
|
|
23527
23551
|
cwd,
|
|
23528
|
-
getBeads
|
|
23552
|
+
getBeads,
|
|
23553
|
+
// AUTO mode in a headless GitHub Codespace: no human at the phone to
|
|
23554
|
+
// answer permission prompts, so auto-approve them rather than stall the
|
|
23555
|
+
// turn (the agent-agnostic equivalent of --dangerously-skip-permissions).
|
|
23556
|
+
autoApprovePermissions: process.env.CODESPACES === "true"
|
|
23529
23557
|
});
|
|
23530
23558
|
return;
|
|
23531
23559
|
}
|
|
@@ -26473,7 +26501,7 @@ function checkChokidar() {
|
|
|
26473
26501
|
}
|
|
26474
26502
|
async function doctor(args2 = []) {
|
|
26475
26503
|
const json = args2.includes("--json");
|
|
26476
|
-
const cliVersion = true ? "2.36.
|
|
26504
|
+
const cliVersion = true ? "2.36.4" : "0.0.0-dev";
|
|
26477
26505
|
const apiBase = resolveApiBaseUrl();
|
|
26478
26506
|
const diagnosticId = (0, import_node_crypto8.randomUUID)();
|
|
26479
26507
|
log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
|
|
@@ -26672,7 +26700,7 @@ async function completion(args2) {
|
|
|
26672
26700
|
// src/commands/version.ts
|
|
26673
26701
|
var import_picocolors13 = __toESM(require("picocolors"));
|
|
26674
26702
|
function version2() {
|
|
26675
|
-
const v = true ? "2.36.
|
|
26703
|
+
const v = true ? "2.36.4" : "unknown";
|
|
26676
26704
|
console.log(`${import_picocolors13.default.bold("codeam-cli")} ${import_picocolors13.default.cyan(v)}`);
|
|
26677
26705
|
}
|
|
26678
26706
|
|
|
@@ -26958,7 +26986,7 @@ function checkForUpdates() {
|
|
|
26958
26986
|
if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
|
|
26959
26987
|
if (process.env.CI) return;
|
|
26960
26988
|
if (!process.stdout.isTTY) return;
|
|
26961
|
-
const current = true ? "2.36.
|
|
26989
|
+
const current = true ? "2.36.4" : null;
|
|
26962
26990
|
if (!current) return;
|
|
26963
26991
|
const cache = readCache();
|
|
26964
26992
|
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.36.
|
|
3
|
+
"version": "2.36.4",
|
|
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",
|