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 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.70.0" : "0.0.0-dev",
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.70.0",
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.70.0" ? { ideVersion: "2.70.0" } : {}
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.70.0" : null;
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.70.0" : null;
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.70.0" : null;
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 emitPreviewEvent = makeSerializedEmitter(
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.70.0" : "0.0.0-dev";
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.70.0" : "unknown";
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.70.0",
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",