@devrouter/cli 0.0.32 → 0.0.33

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/dist/devrouter.js CHANGED
@@ -1794,7 +1794,7 @@ function loadRepoConfig(repoPath) {
1794
1794
  const config = parseConfig(parsed ?? {}, configPath);
1795
1795
  const requiredVersion = config.devrouter?.version;
1796
1796
  if (requiredVersion && !hasWarnedVersionMismatch) {
1797
- const cliVersion = true ? "0.0.32" : "0.0.0-dev";
1797
+ const cliVersion = true ? "0.0.33" : "0.0.0-dev";
1798
1798
  if (cliVersion !== "0.0.0-dev" && compareSemver(requiredVersion, cliVersion) > 0) {
1799
1799
  hasWarnedVersionMismatch = true;
1800
1800
  process.stderr.write(
@@ -5087,7 +5087,7 @@ async function buildDoctorReport(options = {}) {
5087
5087
  const config = runtimeConfig.config;
5088
5088
  loadedConfig = config;
5089
5089
  loadedWorkspace = runtimeConfig.workspace;
5090
- const cliVersion = true ? "0.0.32" : "0.0.0-dev";
5090
+ const cliVersion = true ? "0.0.33" : "0.0.0-dev";
5091
5091
  const configVersion = config.devrouter?.version;
5092
5092
  if (configVersion && cliVersion !== "0.0.0-dev" && compareSemver(configVersion, cliVersion) > 0) {
5093
5093
  addCheck(checks, {
@@ -6751,6 +6751,14 @@ var init_stop = __esm({
6751
6751
  });
6752
6752
 
6753
6753
  // src/core/devpod-exec.ts
6754
+ function stripDevpodCompletionDiagnostic(value) {
6755
+ const index = value.indexOf(DEVPOD_MISSING_EXIT_STATUS_DIAGNOSTIC);
6756
+ if (index < 0) return value;
6757
+ return Buffer.concat([
6758
+ value.subarray(0, index),
6759
+ value.subarray(index + DEVPOD_MISSING_EXIT_STATUS_DIAGNOSTIC.length)
6760
+ ]);
6761
+ }
6754
6762
  function quotePosixArg(value) {
6755
6763
  return `'${value.replaceAll("'", `'"'"'`)}'`;
6756
6764
  }
@@ -6825,6 +6833,7 @@ async function devpodExec(repoPath, command) {
6825
6833
  child.stderr.on("data", (chunk) => {
6826
6834
  pending = Buffer.concat([pending, Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk)]);
6827
6835
  for (; ; ) {
6836
+ if (remoteStatus !== void 0) break;
6828
6837
  if (readingStatus) {
6829
6838
  const newline = pending.indexOf(10);
6830
6839
  if (newline < 0) {
@@ -6858,7 +6867,9 @@ async function devpodExec(repoPath, command) {
6858
6867
  reject(new Error(`devpod ssh terminated by signal ${signal ?? "unknown"}.`));
6859
6868
  return;
6860
6869
  }
6861
- if (!readingStatus) forward(pending);
6870
+ if (!readingStatus) {
6871
+ forward(remoteStatus === void 0 ? pending : stripDevpodCompletionDiagnostic(pending));
6872
+ }
6862
6873
  if (remoteStatus === void 0) {
6863
6874
  reject(
6864
6875
  new Error(`DevPod command did not report its exit status (devpod exited ${code}).`)
@@ -6870,7 +6881,7 @@ async function devpodExec(repoPath, command) {
6870
6881
  });
6871
6882
  });
6872
6883
  }
6873
- var import_node_child_process13, import_node_crypto4;
6884
+ var import_node_child_process13, import_node_crypto4, DEVPOD_MISSING_EXIT_STATUS_DIAGNOSTIC;
6874
6885
  var init_devpod_exec = __esm({
6875
6886
  "src/core/devpod-exec.ts"() {
6876
6887
  "use strict";
@@ -6879,6 +6890,9 @@ var init_devpod_exec = __esm({
6879
6890
  init_devpod_environment();
6880
6891
  init_devpod_workspaces();
6881
6892
  init_workspace();
6893
+ DEVPOD_MISSING_EXIT_STATUS_DIAGNOSTIC = Buffer.from(
6894
+ "Error tunneling to container: wait: remote command exited without exit status or exit signal\n"
6895
+ );
6882
6896
  }
6883
6897
  });
6884
6898
 
@@ -9878,7 +9892,7 @@ var init_version = __esm({
9878
9892
 
9879
9893
  // src/cli.ts
9880
9894
  var import_commander = require("commander");
9881
- var CLI_VERSION = true ? "0.0.32" : "0.0.0-dev";
9895
+ var CLI_VERSION = true ? "0.0.33" : "0.0.0-dev";
9882
9896
  var VERSION_FLAGS = /* @__PURE__ */ new Set(["-V", "--version"]);
9883
9897
  function withErrorHandling(action2) {
9884
9898
  return async (...args) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@devrouter/cli",
3
- "version": "0.0.32",
3
+ "version": "0.0.33",
4
4
  "description": "Local dev routing CLI with shared Traefik reverse proxy",
5
5
  "author": "Roland Schlaefli",
6
6
  "homepage": "https://github.com/rschlaefli/devrouter#readme",
@@ -0,0 +1,21 @@
1
+ # Upgrade to devrouter 0.0.33
2
+
3
+ Devrouter now hides a known DevPod transport diagnostic emitted after a one-shot command has completed and devrouter has already recovered its real exit status. Real command stderr and exact non-zero statuses remain unchanged.
4
+
5
+ 1. Install `@devrouter/cli@0.0.33` on the host and bump `.devrouter.yml` to `devrouter.version: 0.0.33`.
6
+ 2. Keep the `0.0.32` lifecycle adoption unchanged: use `ensure` for startup, `stop` for a non-destructive pause, and `exec` for one-shot commands.
7
+ 3. Run `devrouter repo agents --repo <checkout>` only if the repository has not already adopted the `0.0.32` lifecycle guidance.
8
+
9
+ Verification:
10
+
11
+ - Run `devrouter exec <checkout> -- true` and confirm it exits `0` without a transport diagnostic.
12
+ - Run a command that exits `7` and confirm devrouter returns `7` without a transport diagnostic.
13
+ - Write a line to command stderr and confirm that line remains visible.
14
+
15
+ Report template:
16
+
17
+ - CLI/config version: `0.0.33`
18
+ - Successful exec: `<exit status and stderr>`
19
+ - Non-zero exec: `<exit status and stderr>`
20
+ - Real command stderr: `<preserved or failure details>`
21
+ - Remaining blockers: `<none or details>`