codeam-cli 2.39.5 → 2.39.7
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 +13 -0
- package/dist/index.js +32 -36
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,19 @@ 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.39.6] — 2026-06-13
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
|
|
11
|
+
- **cli:** Gate agent spawn on beads in codespaces so the SessionStart hook lands
|
|
12
|
+
|
|
13
|
+
## [2.39.5] — 2026-06-13
|
|
14
|
+
|
|
15
|
+
### Fixed
|
|
16
|
+
|
|
17
|
+
- **cli:** Retry transient bd spawn ETXTBSY (not just ENOENT) so beads provisions
|
|
18
|
+
- **cli:** Link bd into ~/.local/bin, not the transient /tmp node prefix
|
|
19
|
+
|
|
7
20
|
## [2.39.4] — 2026-06-12
|
|
8
21
|
|
|
9
22
|
### 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.39.
|
|
501
|
+
version: "2.39.7",
|
|
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.39.
|
|
5903
|
+
cliVersion: true ? "2.39.7" : "0.0.0-dev",
|
|
5904
5904
|
nodeVersion: process.version,
|
|
5905
5905
|
platform: process.platform,
|
|
5906
5906
|
arch: process.arch,
|
|
@@ -15372,36 +15372,21 @@ var _onboardingSeam = {
|
|
|
15372
15372
|
return !!v && v !== "0" && v.toLowerCase() !== "false";
|
|
15373
15373
|
}
|
|
15374
15374
|
};
|
|
15375
|
-
function
|
|
15375
|
+
function buildOnboardingWelcome(cwd) {
|
|
15376
15376
|
const repo = path27.basename(cwd || "") || "this project";
|
|
15377
15377
|
return [
|
|
15378
|
-
|
|
15379
|
-
"connected this session through CodeAgent Mobile and has only seen a welcome",
|
|
15380
|
-
"card. Take the initiative and write THEIR first message: a short, warm",
|
|
15381
|
-
"onboarding welcome that you (the agent) send proactively to invite them to start.",
|
|
15378
|
+
`Welcome to CodeAgent Mobile! \u{1F44B} You're now driving this agent from your phone \u2014 and it comes fully wired, zero setup:`,
|
|
15382
15379
|
"",
|
|
15383
|
-
"
|
|
15384
|
-
"
|
|
15385
|
-
"-
|
|
15386
|
-
"-
|
|
15387
|
-
" memory, and an issue tracker \u2014 powered by Beads on Dolt \u2014 out of the box, zero setup.",
|
|
15388
|
-
"- They can drive you from their phone, with real core features:",
|
|
15389
|
-
" \u2022 a full integrated IDE powered by Monaco \u2014 edit code, live preview, rich visual output (NOT just a file viewer);",
|
|
15390
|
-
" \u2022 Smart Composer \u2014 helps them craft and structure prompts;",
|
|
15391
|
-
" \u2022 Team Spaces \u2014 share this session with their team to collaborate, or hand a session to someone else.",
|
|
15392
|
-
"- Invite them to share feedback or report any issue via GitHub or the Discord",
|
|
15393
|
-
" bugs channel. Include BOTH of these URLs in full, EXACTLY as written here",
|
|
15394
|
-
" (keep the https:// scheme on each so the app renders them as tappable links):",
|
|
15395
|
-
" https://github.com/edgar-durand/codeagent-mobile-clients/issues",
|
|
15396
|
-
" https://discord.gg/ADMKwGAB",
|
|
15397
|
-
`- End with a SHORT, concrete invitation tied to THIS project (working dir: ${cwd},`,
|
|
15398
|
-
` repo: "${repo}") \u2014 suggest 1\u20132 specific things you could help with here.`,
|
|
15380
|
+
"- **Native repo context, persistent memory, and an issue tracker** \u2014 powered by Beads, out of the box.",
|
|
15381
|
+
"- **A full IDE** (Monaco) \u2014 edit code, live preview, and rich visual output, not just a file viewer.",
|
|
15382
|
+
"- **Smart Composer** \u2014 help crafting and structuring your prompts.",
|
|
15383
|
+
"- **Team Spaces** \u2014 share this session with your team, or hand it off to someone else.",
|
|
15399
15384
|
"",
|
|
15400
|
-
"
|
|
15401
|
-
|
|
15402
|
-
|
|
15403
|
-
"
|
|
15404
|
-
|
|
15385
|
+
"Found a bug or have feedback? Reach us at:",
|
|
15386
|
+
"- GitHub: https://github.com/edgar-durand/codeagent-mobile-clients/issues",
|
|
15387
|
+
"- Discord: https://discord.gg/ADMKwGAB",
|
|
15388
|
+
"",
|
|
15389
|
+
`Ready when you are \u2014 try **"explain ${repo}"** or **"what should I work on first?"**`
|
|
15405
15390
|
].join("\n");
|
|
15406
15391
|
}
|
|
15407
15392
|
function maybeSendOnboardingWelcome(opts) {
|
|
@@ -15423,13 +15408,13 @@ function maybeSendOnboardingWelcome(opts) {
|
|
|
15423
15408
|
});
|
|
15424
15409
|
}
|
|
15425
15410
|
async function runOnboardingTurn(opts) {
|
|
15426
|
-
const {
|
|
15411
|
+
const { streaming, history, cwd } = opts;
|
|
15412
|
+
const welcome = buildOnboardingWelcome(cwd);
|
|
15427
15413
|
await streaming.beginTurn();
|
|
15428
15414
|
try {
|
|
15429
|
-
|
|
15430
|
-
const reply = streaming.getCurrentText();
|
|
15415
|
+
streaming.append({ chunkId: "onboarding-welcome", kind: "text", delta: welcome });
|
|
15431
15416
|
await streaming.closeAll();
|
|
15432
|
-
history.appendAgentInitiatedReply(
|
|
15417
|
+
history.appendAgentInitiatedReply(welcome);
|
|
15433
15418
|
await history.flush();
|
|
15434
15419
|
} catch (err) {
|
|
15435
15420
|
await streaming.closeAll().catch(() => void 0);
|
|
@@ -21510,7 +21495,6 @@ async function runAcpSession(opts) {
|
|
|
21510
21495
|
const models = await runtime.listModels();
|
|
21511
21496
|
const history = new AcpHistory(publisher, { agent: opts.agent, acpSessionId });
|
|
21512
21497
|
maybeSendOnboardingWelcome({
|
|
21513
|
-
client: client2,
|
|
21514
21498
|
streaming,
|
|
21515
21499
|
history,
|
|
21516
21500
|
sessionId: opts.sessionId,
|
|
@@ -23725,6 +23709,18 @@ async function start(requestedAgent) {
|
|
|
23725
23709
|
beads = started;
|
|
23726
23710
|
return started;
|
|
23727
23711
|
});
|
|
23712
|
+
if (process.env.CODESPACES === "true") {
|
|
23713
|
+
const BEADS_GATE_TIMEOUT_MS = 6e4;
|
|
23714
|
+
let gateTimer;
|
|
23715
|
+
await Promise.race([
|
|
23716
|
+
beadsReady.catch(() => null),
|
|
23717
|
+
new Promise((resolve7) => {
|
|
23718
|
+
gateTimer = setTimeout(resolve7, BEADS_GATE_TIMEOUT_MS);
|
|
23719
|
+
})
|
|
23720
|
+
]);
|
|
23721
|
+
if (gateTimer) clearTimeout(gateTimer);
|
|
23722
|
+
log.info("beads", `agent-spawn gate released \u2014 beads ${beads ? "ready" : "not ready (timed out)"}`);
|
|
23723
|
+
}
|
|
23728
23724
|
const acpDisabled = process.env.CODEAM_ACP_DISABLED === "1";
|
|
23729
23725
|
if (!acpDisabled && session.pluginAuthToken) {
|
|
23730
23726
|
const adapter = getAcpAdapter(session.agent);
|
|
@@ -26735,7 +26731,7 @@ function checkChokidar() {
|
|
|
26735
26731
|
}
|
|
26736
26732
|
async function doctor(args2 = []) {
|
|
26737
26733
|
const json = args2.includes("--json");
|
|
26738
|
-
const cliVersion = true ? "2.39.
|
|
26734
|
+
const cliVersion = true ? "2.39.7" : "0.0.0-dev";
|
|
26739
26735
|
const apiBase = resolveApiBaseUrl();
|
|
26740
26736
|
const diagnosticId = (0, import_node_crypto8.randomUUID)();
|
|
26741
26737
|
log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
|
|
@@ -26934,7 +26930,7 @@ async function completion(args2) {
|
|
|
26934
26930
|
// src/commands/version.ts
|
|
26935
26931
|
var import_picocolors13 = __toESM(require("picocolors"));
|
|
26936
26932
|
function version2() {
|
|
26937
|
-
const v = true ? "2.39.
|
|
26933
|
+
const v = true ? "2.39.7" : "unknown";
|
|
26938
26934
|
console.log(`${import_picocolors13.default.bold("codeam-cli")} ${import_picocolors13.default.cyan(v)}`);
|
|
26939
26935
|
}
|
|
26940
26936
|
|
|
@@ -27220,7 +27216,7 @@ function checkForUpdates() {
|
|
|
27220
27216
|
if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
|
|
27221
27217
|
if (process.env.CI) return;
|
|
27222
27218
|
if (!process.stdout.isTTY) return;
|
|
27223
|
-
const current = true ? "2.39.
|
|
27219
|
+
const current = true ? "2.39.7" : null;
|
|
27224
27220
|
if (!current) return;
|
|
27225
27221
|
const cache = readCache();
|
|
27226
27222
|
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.39.
|
|
3
|
+
"version": "2.39.7",
|
|
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",
|