@cabane/companion 0.6.45 → 0.6.46

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/cli.js CHANGED
@@ -9004,6 +9004,7 @@ var CompanionSupervisor = class {
9004
9004
  // NOT the cached beat signal — someone connecting right after installing Claude
9005
9005
  // Code shouldn't be refused by a snapshot up to a heartbeat old.
9006
9006
  probeClaudePresence;
9007
+ probeCodexPresence;
9007
9008
  exitFn;
9008
9009
  reexecFn;
9009
9010
  dispatcherFactory;
@@ -9036,6 +9037,7 @@ var CompanionSupervisor = class {
9036
9037
  this.hub = opts.hub;
9037
9038
  this.claudeCode = opts.claudeCode ?? true;
9038
9039
  this.probeClaudePresence = opts.probeClaudePresence ?? claudeOnPath;
9040
+ this.probeCodexPresence = opts.probeCodexPresence ?? codexOnPath;
9039
9041
  this.harnessVersions = opts.harnessVersions ?? emptyHarnessVersions();
9040
9042
  this.exitFn = opts.exit ?? ((code) => process.exit(code));
9041
9043
  this.reexecFn = opts.reexec ?? defaultReexec;
@@ -9783,7 +9785,8 @@ var CompanionSupervisor = class {
9783
9785
  // - claude-code (CT1082): set `claudeCode.enabled`, after checking `claude` is
9784
9786
  // on PATH. This is the callable the terminal offer ("We found Claude Code.
9785
9787
  // Connect it? [Y/n]") and the web pairing flow both wire to.
9786
- // - codex: set `codex.enabled` (the CLI + `codex login` remain the user's).
9788
+ // - codex: set `codex.enabled` after checking `codex` is on PATH (the CLI +
9789
+ // `codex login` remain the user's).
9787
9790
  // - opencode: set `opencode.serverUrl` — but ONLY after health-probing the URL,
9788
9791
  // so we never advertise a serve that isn't there. An unreachable URL is a
9789
9792
  // typed failure the UI shows in place, not a silent bad write.
@@ -9801,6 +9804,9 @@ var CompanionSupervisor = class {
9801
9804
  }
9802
9805
  next = { ...this.config, claudeCode: { enabled: true } };
9803
9806
  } else if (input.runtime === "codex") {
9807
+ if (!await this.probeCodexPresence()) {
9808
+ return { ok: false, error: absentLine("codex") };
9809
+ }
9804
9810
  next = { ...this.config, codex: { enabled: true } };
9805
9811
  } else {
9806
9812
  const serverUrl = input.serverUrl.trim();
package/dist/runtime.js CHANGED
@@ -8513,6 +8513,7 @@ var CompanionSupervisor = class {
8513
8513
  // NOT the cached beat signal — someone connecting right after installing Claude
8514
8514
  // Code shouldn't be refused by a snapshot up to a heartbeat old.
8515
8515
  probeClaudePresence;
8516
+ probeCodexPresence;
8516
8517
  exitFn;
8517
8518
  reexecFn;
8518
8519
  dispatcherFactory;
@@ -8545,6 +8546,7 @@ var CompanionSupervisor = class {
8545
8546
  this.hub = opts.hub;
8546
8547
  this.claudeCode = opts.claudeCode ?? true;
8547
8548
  this.probeClaudePresence = opts.probeClaudePresence ?? claudeOnPath;
8549
+ this.probeCodexPresence = opts.probeCodexPresence ?? codexOnPath;
8548
8550
  this.harnessVersions = opts.harnessVersions ?? emptyHarnessVersions();
8549
8551
  this.exitFn = opts.exit ?? ((code) => process.exit(code));
8550
8552
  this.reexecFn = opts.reexec ?? defaultReexec;
@@ -9292,7 +9294,8 @@ var CompanionSupervisor = class {
9292
9294
  // - claude-code (CT1082): set `claudeCode.enabled`, after checking `claude` is
9293
9295
  // on PATH. This is the callable the terminal offer ("We found Claude Code.
9294
9296
  // Connect it? [Y/n]") and the web pairing flow both wire to.
9295
- // - codex: set `codex.enabled` (the CLI + `codex login` remain the user's).
9297
+ // - codex: set `codex.enabled` after checking `codex` is on PATH (the CLI +
9298
+ // `codex login` remain the user's).
9296
9299
  // - opencode: set `opencode.serverUrl` — but ONLY after health-probing the URL,
9297
9300
  // so we never advertise a serve that isn't there. An unreachable URL is a
9298
9301
  // typed failure the UI shows in place, not a silent bad write.
@@ -9310,6 +9313,9 @@ var CompanionSupervisor = class {
9310
9313
  }
9311
9314
  next = { ...this.config, claudeCode: { enabled: true } };
9312
9315
  } else if (input.runtime === "codex") {
9316
+ if (!await this.probeCodexPresence()) {
9317
+ return { ok: false, error: absentLine("codex") };
9318
+ }
9313
9319
  next = { ...this.config, codex: { enabled: true } };
9314
9320
  } else {
9315
9321
  const serverUrl = input.serverUrl.trim();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cabane/companion",
3
- "version": "0.6.45",
3
+ "version": "0.6.46",
4
4
  "type": "module",
5
5
  "description": "The Cabane Companion (headless): connect a coding agent on your machine to your Cabane workspace as a responder — drive work against your own codebase, files, and MCP servers without putting any of it in Cabane.",
6
6
  "license": "UNLICENSED",