@cabane/companion 0.6.158 → 0.6.160

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/README.md CHANGED
@@ -52,7 +52,7 @@ cabane start
52
52
 
53
53
  Either puts `cabane` on your PATH, with `cabane-companion` kept as an alias. If `cabane` isn't found right after an npm install, npm's global bin isn't on your PATH: run `"$(npm prefix -g)/bin/cabane" start`, and the Companion prints full paths from then on. If npm reports `EEXIST … cabane`, an older self-host CLI owns the name: `npm i -g @cabane/cli@latest` (its command is `cabane-server` now), then install again.
54
54
 
55
- To **update**, stop first, because a stop ends any turn in progress: `cabane stop`, then re-run the install script (it starts the new version), or `npm i -g @cabane/companion@latest` and `cabane start`. The install script changes nothing while a Companion is running.
55
+ To **update**, run `cabane update`, whichever way you installed: it installs the version Cabane names. Under the service (below) the Companion restarts into it once its turns finish; without the service, the next `cabane start` runs it, and `cabane stop` before that ends any turn in progress. Re-running the install script changes nothing while a Companion is running.
56
56
 
57
57
  ## First run
58
58
 
@@ -106,7 +106,7 @@ A freshly paired device runs nothing yet: pairing doesn't put any agent on it. I
106
106
  | `pair [--server <url>]` | Pair this device with a short code entered in Cabane, without starting the Companion. Refuses, like `start`, until an agent is signed in. `start` pairs by itself, so `pair` is rarely needed. |
107
107
  | `start [--foreground] [--daemon]` | Offer the signed-in agents, pair if needed, and run in the background; refuse, pairing nothing, when none is usable. `--daemon` is an accepted compatibility alias for the default. `--foreground` stays attached for a terminal or supervisor and never refuses. A non-interactive `start` on a paired device also stays attached. |
108
108
  | `connect <claude-code\|codex\|opencode>` | Connect a signed-in agent; with the Companion running, it checks and connects over its control socket, no restart. Refuses a signed-out agent and changes nothing. |
109
- | `update [--auto on\|off]` | Update to the version Cabane names now, between turns; with `--auto`, set whether the Companion keeps itself up to date. |
109
+ | `update [--auto on\|off]` | Update to the version Cabane names now; with `--auto`, set whether the Companion keeps itself up to date. |
110
110
  | `service install\|uninstall\|status` | Run the Companion as a systemd user service or a LaunchAgent that starts at boot and restarts if it stops; remove it; show its state and how updates are going. |
111
111
  | `stop` | Stop a foreground or detached Companion cleanly. Idempotent — "nothing running" is a success. |
112
112
  | `status` | Print the version and install, the paired device, whether it's running, each agent's sign-in, log and transcript paths, declared secret names, and local overrides. Works unpaired. |
@@ -134,7 +134,7 @@ In an interactive terminal, `cabane start` backgrounds itself, returns the promp
134
134
 
135
135
  Yes, or `cabane service install` later, runs it as a service: a systemd user unit (`~/.config/systemd/user/cabane-companion.service`) on Linux, a LaunchAgent (`~/Library/LaunchAgents/ai.cabane.companion.plist`) on macOS, with auto-update on. It runs `<node> ~/.cabane/boot-guard.mjs start --foreground` on its own copy of this install under `~/.cabane/versions`, restarts it whatever it exits with, and reads `~/.cabane/service.env`, which holds your login shell's PATH and any headless sign-in (`CLAUDE_CODE_OAUTH_TOKEN=…`). `<node>` is the install script's `~/.cabane/node/bin/node` when it's there, otherwise the Node that ran `service install`; `cabane service status` says if it's gone. On Linux it tells you when lingering is off and a logout would stop it. With a service installed, `cabane start` and `cabane stop` start and stop the service; `cabane service uninstall` removes it.
136
136
 
137
- Updates need the service: it's what restarts the Companion into a new version. The Companion follows the version Cabane names on each heartbeat: it installs it under `~/.cabane/versions/<version>`, checks it starts and still has the bundled agents this device uses, points `~/.cabane/current` at it between turns, and exits for the service to restart it. A version that stops three times before connecting, or can't connect within ten minutes of Cabane answering, is rolled back by the boot guard. `cabane update --auto off|on` stops or resumes updates under the service. Without the service, `cabane update` installs the latest version and the next `cabane start` runs it.
137
+ Updates need the service: it's what restarts the Companion into a new version. The Companion follows the version Cabane names on each heartbeat: it installs it under `~/.cabane/versions/<version>`, checks it starts and still has the bundled agents this device uses, points `~/.cabane/current` at it, and exits for the service to restart it. That happens between turns, or after ten minutes if the Companion never stops working, in which case the turns it cuts carry on after the restart. A version below the minimum Cabane accepts swaps at once. A version that stops three times before connecting, or can't connect within ten minutes of Cabane answering, is rolled back by the boot guard. `cabane update --auto off|on` stops or resumes updates under the service. Without the service, `cabane update` installs the latest version and the next `cabane start` runs it.
138
138
 
139
139
  ### Other supervisors
140
140
 
@@ -310,7 +310,7 @@ What "exposed" means differs per harness, because each is discoverable in a diff
310
310
  | **Codex** | A `codex` block in `~/.cabane/config.json`, **and** the Codex SDK's vendored binary installed. |
311
311
  | **opencode** | An `opencode.serverUrl` in `~/.cabane/config.json` pointing at a reachable `opencode serve`. |
312
312
 
313
- Claude Code and Codex each run a native binary their SDK ships, installed alongside the Companion as an optional npm dependency. Those are what a turn launches — not the `claude` / `codex` CLIs on your PATH, which are for setup and login. If one didn't install, the Companion says so on startup and on the device's page in Cabane, with the command that repairs it: `npm i -g @cabane/companion --include=optional`.
313
+ Claude Code and Codex each run a native binary their SDK ships, installed alongside the Companion as an optional npm dependency. Those are what a turn launches — not the `claude` / `codex` CLIs on your PATH, which are for setup and login. If one didn't install, the Companion says so on startup and on the device's page in Cabane, with the commands that repair it: `npm i -g @cabane/companion --include=optional` for an npm install, `cabane stop` then the install script for a script install, and `cabane stop` then `cabane update` for a copy Cabane installed itself when it updated or became a service. Stopping ends any turn in progress.
314
314
 
315
315
  **You usually don't hand-edit the config.** Interactive `cabane start` offers each signed-in agent, and `cabane connect codex` (or `claude-code` / `opencode`) can connect one later. Editing `~/.cabane/config.json` yourself is the fallback and what a headless device wants:
316
316