codeam-cli 2.70.0 → 2.71.1
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 +59 -10
- 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.71.0] — 2026-08-29
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- **cli:** Decir que base de datos falta, y con que variable se arregla (#668)
|
|
12
|
+
|
|
13
|
+
## [2.70.0] — 2026-08-29
|
|
14
|
+
|
|
15
|
+
### Fixed
|
|
16
|
+
|
|
17
|
+
- **cli:** Distinguir una navegacion de un fetch, no solo mirar el Accept (#667)
|
|
18
|
+
|
|
7
19
|
## [2.69.0] — 2026-08-29
|
|
8
20
|
|
|
9
21
|
### Added
|
package/dist/index.js
CHANGED
|
@@ -8081,7 +8081,7 @@ function readAnonId() {
|
|
|
8081
8081
|
}
|
|
8082
8082
|
function superProperties() {
|
|
8083
8083
|
return {
|
|
8084
|
-
cliVersion: true ? "2.
|
|
8084
|
+
cliVersion: true ? "2.71.1" : "0.0.0-dev",
|
|
8085
8085
|
nodeVersion: process.version,
|
|
8086
8086
|
platform: process.platform,
|
|
8087
8087
|
arch: process.arch,
|
|
@@ -8323,7 +8323,7 @@ var http = __toESM(require("http"));
|
|
|
8323
8323
|
// package.json
|
|
8324
8324
|
var package_default = {
|
|
8325
8325
|
name: "codeam-cli",
|
|
8326
|
-
version: "2.
|
|
8326
|
+
version: "2.71.1",
|
|
8327
8327
|
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.",
|
|
8328
8328
|
type: "commonjs",
|
|
8329
8329
|
main: "dist/index.js",
|
|
@@ -8689,6 +8689,22 @@ async function postBatonEvent(input) {
|
|
|
8689
8689
|
};
|
|
8690
8690
|
}
|
|
8691
8691
|
}
|
|
8692
|
+
async function postTurnEvent(input) {
|
|
8693
|
+
try {
|
|
8694
|
+
await _transport.postJsonAuthed(
|
|
8695
|
+
`${API_BASE}/api/commands/turn-events`,
|
|
8696
|
+
{
|
|
8697
|
+
pluginId: input.pluginId,
|
|
8698
|
+
commandId: input.commandId,
|
|
8699
|
+
phase: input.phase,
|
|
8700
|
+
agentId: input.agentId,
|
|
8701
|
+
errorCode: input.errorCode
|
|
8702
|
+
},
|
|
8703
|
+
input.pluginAuthToken
|
|
8704
|
+
);
|
|
8705
|
+
} catch {
|
|
8706
|
+
}
|
|
8707
|
+
}
|
|
8692
8708
|
async function postHeadroomEvent(input) {
|
|
8693
8709
|
try {
|
|
8694
8710
|
await _transport.postJsonAuthed(
|
|
@@ -9859,7 +9875,7 @@ var CommandRelayService = class _CommandRelayService {
|
|
|
9859
9875
|
// fresh + clear the "CLI update available" banner after a self-update
|
|
9860
9876
|
// (a codespace that reinstalls @latest reconnects via heartbeat, not
|
|
9861
9877
|
// pair/reconnect). Older backends ignore the extra field.
|
|
9862
|
-
..."2.
|
|
9878
|
+
..."2.71.1" ? { ideVersion: "2.71.1" } : {}
|
|
9863
9879
|
}).then(() => log.trace("relay", `heartbeat ok online=${online}`)).catch((err) => log.trace("relay", `heartbeat failed online=${online}`, err));
|
|
9864
9880
|
}
|
|
9865
9881
|
/**
|
|
@@ -22118,7 +22134,7 @@ async function autoUpgradeBeforeCriticalCommand() {
|
|
|
22118
22134
|
if (process.env.NODE_ENV === "test") return;
|
|
22119
22135
|
if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
|
|
22120
22136
|
if (process.env.CI) return;
|
|
22121
|
-
const current2 = true ? "2.
|
|
22137
|
+
const current2 = true ? "2.71.1" : null;
|
|
22122
22138
|
if (!current2) return;
|
|
22123
22139
|
const cache = readCache();
|
|
22124
22140
|
const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
|
|
@@ -22135,7 +22151,7 @@ function checkForUpdates() {
|
|
|
22135
22151
|
if (process.env.CODEAM_DISABLE_UPDATE_CHECK === "1") return;
|
|
22136
22152
|
if (process.env.CI) return;
|
|
22137
22153
|
if (!process.stdout.isTTY) return;
|
|
22138
|
-
const current2 = true ? "2.
|
|
22154
|
+
const current2 = true ? "2.71.1" : null;
|
|
22139
22155
|
if (!current2) return;
|
|
22140
22156
|
const cache = readCache();
|
|
22141
22157
|
const fresh = cache && Date.now() - cache.fetchedAt < TTL_MS;
|
|
@@ -22158,7 +22174,7 @@ var SELF_UPDATE_INSTALL_TIMEOUT_MS = 18e4;
|
|
|
22158
22174
|
var SELF_UPDATE_LS_TIMEOUT_MS = 15e3;
|
|
22159
22175
|
var SUDO_PREFLIGHT_TIMEOUT_MS = 5e3;
|
|
22160
22176
|
function currentCliVersion() {
|
|
22161
|
-
return true ? "2.
|
|
22177
|
+
return true ? "2.71.1" : null;
|
|
22162
22178
|
}
|
|
22163
22179
|
async function installedVersion(deps) {
|
|
22164
22180
|
const ls = await deps.run(
|
|
@@ -25106,6 +25122,13 @@ function registerEmbeddedPostgres(pg) {
|
|
|
25106
25122
|
embeddedPg?.stop();
|
|
25107
25123
|
embeddedPg = pg;
|
|
25108
25124
|
}
|
|
25125
|
+
var lastOutcome = null;
|
|
25126
|
+
function noteProvisionOutcome(outcome) {
|
|
25127
|
+
lastOutcome = outcome;
|
|
25128
|
+
}
|
|
25129
|
+
function getLastProvisionOutcome() {
|
|
25130
|
+
return lastOutcome;
|
|
25131
|
+
}
|
|
25109
25132
|
function envVarFor(service) {
|
|
25110
25133
|
const first = service.envLines[0] ?? "";
|
|
25111
25134
|
return first.split("=")[0] || "DATABASE_URL";
|
|
@@ -27863,7 +27886,9 @@ function dispatchPrompt(ctx, prompt) {
|
|
|
27863
27886
|
}
|
|
27864
27887
|
var startTask = async (ctx, cmd, parsed) => {
|
|
27865
27888
|
const { prompt, files } = parsed;
|
|
27889
|
+
reportTurn(ctx, cmd.id, "received");
|
|
27866
27890
|
if (parsed.agentId && parsed.agentId !== ctx.agentId) {
|
|
27891
|
+
reportTurn(ctx, cmd.id, "failed", "AGENT_SWITCH_UNSUPPORTED");
|
|
27867
27892
|
await ctx.relay.sendResult(cmd.id, "failed", {
|
|
27868
27893
|
error: "Switching agents isn't supported on this session."
|
|
27869
27894
|
});
|
|
@@ -27883,8 +27908,23 @@ var startTask = async (ctx, cmd, parsed) => {
|
|
|
27883
27908
|
}, 12e4);
|
|
27884
27909
|
} else if (effectivePrompt) {
|
|
27885
27910
|
dispatchPrompt(ctx, effectivePrompt);
|
|
27911
|
+
} else {
|
|
27912
|
+
reportTurn(ctx, cmd.id, "failed", "EMPTY_PROMPT");
|
|
27913
|
+
return;
|
|
27886
27914
|
}
|
|
27915
|
+
reportTurn(ctx, cmd.id, "started");
|
|
27887
27916
|
};
|
|
27917
|
+
function reportTurn(ctx, commandId, phase, errorCode) {
|
|
27918
|
+
if (!ctx.pluginId || !ctx.pluginAuthToken) return;
|
|
27919
|
+
void postTurnEvent({
|
|
27920
|
+
pluginId: ctx.pluginId,
|
|
27921
|
+
pluginAuthToken: ctx.pluginAuthToken,
|
|
27922
|
+
commandId,
|
|
27923
|
+
phase,
|
|
27924
|
+
agentId: ctx.agentId,
|
|
27925
|
+
errorCode
|
|
27926
|
+
});
|
|
27927
|
+
}
|
|
27888
27928
|
var provideInput = (ctx, _cmd, parsed) => {
|
|
27889
27929
|
if (parsed.input) dispatchPrompt(ctx, parsed.input);
|
|
27890
27930
|
};
|
|
@@ -29039,9 +29079,18 @@ function parseInsightText(text) {
|
|
|
29039
29079
|
securityNote: securityMatch?.[1]?.trim() || void 0
|
|
29040
29080
|
};
|
|
29041
29081
|
}
|
|
29042
|
-
var
|
|
29082
|
+
var emitPreviewEventRaw = makeSerializedEmitter(
|
|
29043
29083
|
(args2) => postPreviewEvent(args2)
|
|
29044
29084
|
);
|
|
29085
|
+
var emitPreviewEvent = (args2) => {
|
|
29086
|
+
if (args2.type !== USER_EVENTS.PREVIEW_ERROR) return emitPreviewEventRaw(args2);
|
|
29087
|
+
const missing = getLastProvisionOutcome()?.missing ?? [];
|
|
29088
|
+
if (missing.length === 0) return emitPreviewEventRaw(args2);
|
|
29089
|
+
return emitPreviewEventRaw({
|
|
29090
|
+
...args2,
|
|
29091
|
+
payload: { ...args2.payload ?? {}, missingServices: missing }
|
|
29092
|
+
});
|
|
29093
|
+
};
|
|
29045
29094
|
var requestPreviewDetectH = (ctx) => {
|
|
29046
29095
|
if (!ctx.pluginAuthToken) {
|
|
29047
29096
|
log.info("preview", "no pluginAuthToken \u2014 skipping detect");
|
|
@@ -43872,7 +43921,7 @@ async function start(requestedAgent, presetSession) {
|
|
|
43872
43921
|
);
|
|
43873
43922
|
provisionSkillsForStart();
|
|
43874
43923
|
const managedBox = !isLocalSession();
|
|
43875
|
-
const depsReady = managedBox ? provisionProjectDependencies(cwd).catch(() => void 0) : Promise.resolve();
|
|
43924
|
+
const depsReady = managedBox ? provisionProjectDependencies(cwd).then((outcome) => noteProvisionOutcome(outcome)).catch(() => void 0) : Promise.resolve();
|
|
43876
43925
|
if (managedBox) {
|
|
43877
43926
|
const GATE_TIMEOUT_MS = 24e4;
|
|
43878
43927
|
const acpAdapterForGate = requiresAcp(session.agent) ? await resolveAcpAdapterWithRetry(session.agent) : null;
|
|
@@ -46710,7 +46759,7 @@ function checkChokidar() {
|
|
|
46710
46759
|
}
|
|
46711
46760
|
async function doctor(args2 = []) {
|
|
46712
46761
|
const json = args2.includes("--json");
|
|
46713
|
-
const cliVersion = true ? "2.
|
|
46762
|
+
const cliVersion = true ? "2.71.1" : "0.0.0-dev";
|
|
46714
46763
|
const apiBase2 = resolveApiBaseUrl();
|
|
46715
46764
|
const diagnosticId = (0, import_node_crypto13.randomUUID)();
|
|
46716
46765
|
log.info("doctor", `run id=${diagnosticId} cli=${cliVersion}`);
|
|
@@ -47101,7 +47150,7 @@ async function mcpRun(args2) {
|
|
|
47101
47150
|
// src/commands/version.ts
|
|
47102
47151
|
var import_picocolors15 = __toESM(require("picocolors"));
|
|
47103
47152
|
function version2() {
|
|
47104
|
-
const v = true ? "2.
|
|
47153
|
+
const v = true ? "2.71.1" : "unknown";
|
|
47105
47154
|
console.log(`${import_picocolors15.default.bold("codeam-cli")} ${import_picocolors15.default.cyan(v)}`);
|
|
47106
47155
|
}
|
|
47107
47156
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codeam-cli",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.71.1",
|
|
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",
|