codeam-cli 2.39.6 → 2.39.8
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 +23 -41
- 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.39.7] — 2026-06-13
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
|
|
11
|
+
- **cli:** Hardcode the onboarding welcome (no agent round-trip) + keep beads gate
|
|
12
|
+
|
|
13
|
+
## [2.39.6] — 2026-06-13
|
|
14
|
+
|
|
15
|
+
### Fixed
|
|
16
|
+
|
|
17
|
+
- **cli:** Gate agent spawn on beads in codespaces so the SessionStart hook lands
|
|
18
|
+
|
|
7
19
|
## [2.39.5] — 2026-06-13
|
|
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.39.
|
|
501
|
+
version: "2.39.8",
|
|
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.8" : "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);
|
|
@@ -18390,7 +18375,7 @@ var BeadsWatcher = class {
|
|
|
18390
18375
|
constructor(opts) {
|
|
18391
18376
|
this.opts = opts;
|
|
18392
18377
|
this.bd = opts.adapter ?? new BdAdapter({ cwd: opts.cwd, beadsDir: opts.beadsDir });
|
|
18393
|
-
this.feedPath = opts.feedPath ?? path40.join(opts.cwd ?? process.cwd(), ".beads", "
|
|
18378
|
+
this.feedPath = opts.feedPath ?? path40.join(opts.cwd ?? process.cwd(), ".beads", "last-touched");
|
|
18394
18379
|
this.apiBase = opts.apiBaseUrl ?? API_BASE4;
|
|
18395
18380
|
}
|
|
18396
18381
|
opts;
|
|
@@ -18423,6 +18408,7 @@ var BeadsWatcher = class {
|
|
|
18423
18408
|
);
|
|
18424
18409
|
this.watcher = watcher;
|
|
18425
18410
|
log.info("beads", `watching ${this.feedPath} for session=${this.opts.sessionId.slice(0, 8)}`);
|
|
18411
|
+
void this.syncNow();
|
|
18426
18412
|
}
|
|
18427
18413
|
async stop() {
|
|
18428
18414
|
if (this.stopped) return;
|
|
@@ -21510,7 +21496,6 @@ async function runAcpSession(opts) {
|
|
|
21510
21496
|
const models = await runtime.listModels();
|
|
21511
21497
|
const history = new AcpHistory(publisher, { agent: opts.agent, acpSessionId });
|
|
21512
21498
|
maybeSendOnboardingWelcome({
|
|
21513
|
-
client: client2,
|
|
21514
21499
|
streaming,
|
|
21515
21500
|
history,
|
|
21516
21501
|
sessionId: opts.sessionId,
|
|
@@ -23735,10 +23720,7 @@ async function start(requestedAgent) {
|
|
|
23735
23720
|
})
|
|
23736
23721
|
]);
|
|
23737
23722
|
if (gateTimer) clearTimeout(gateTimer);
|
|
23738
|
-
log.info(
|
|
23739
|
-
"beads",
|
|
23740
|
-
`agent-spawn gate released \u2014 beads ${beads ? "ready" : "not ready (timed out / failed; agent runs without it)"}`
|
|
23741
|
-
);
|
|
23723
|
+
log.info("beads", `agent-spawn gate released \u2014 beads ${beads ? "ready" : "not ready (timed out)"}`);
|
|
23742
23724
|
}
|
|
23743
23725
|
const acpDisabled = process.env.CODEAM_ACP_DISABLED === "1";
|
|
23744
23726
|
if (!acpDisabled && session.pluginAuthToken) {
|
|
@@ -26750,7 +26732,7 @@ function checkChokidar() {
|
|
|
26750
26732
|
}
|
|
26751
26733
|
async function doctor(args2 = []) {
|
|
26752
26734
|
const json = args2.includes("--json");
|
|
26753
|
-
const cliVersion = true ? "2.39.
|
|
26735
|
+
const cliVersion = true ? "2.39.8" : "0.0.0-dev";
|
|
26754
26736
|
const apiBase = resolveApiBaseUrl();
|
|
26755
26737
|
const diagnosticId = (0, import_node_crypto8.randomUUID)();
|
|
26756
26738
|
log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
|
|
@@ -26949,7 +26931,7 @@ async function completion(args2) {
|
|
|
26949
26931
|
// src/commands/version.ts
|
|
26950
26932
|
var import_picocolors13 = __toESM(require("picocolors"));
|
|
26951
26933
|
function version2() {
|
|
26952
|
-
const v = true ? "2.39.
|
|
26934
|
+
const v = true ? "2.39.8" : "unknown";
|
|
26953
26935
|
console.log(`${import_picocolors13.default.bold("codeam-cli")} ${import_picocolors13.default.cyan(v)}`);
|
|
26954
26936
|
}
|
|
26955
26937
|
|
|
@@ -27235,7 +27217,7 @@ function checkForUpdates() {
|
|
|
27235
27217
|
if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
|
|
27236
27218
|
if (process.env.CI) return;
|
|
27237
27219
|
if (!process.stdout.isTTY) return;
|
|
27238
|
-
const current = true ? "2.39.
|
|
27220
|
+
const current = true ? "2.39.8" : null;
|
|
27239
27221
|
if (!current) return;
|
|
27240
27222
|
const cache = readCache();
|
|
27241
27223
|
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.8",
|
|
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",
|