wolfpack-bridge 1.6.1 → 1.6.2

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.
Files changed (3) hide show
  1. package/README.md +74 -87
  2. package/bin/install.cjs +36 -16
  3. package/package.json +5 -5
package/README.md CHANGED
@@ -35,7 +35,7 @@
35
35
  :+**++++++*++*+=-:: .. ...... .. .:..::
36
36
  ```
37
37
 
38
- Mobile & desktop command center for AI coding agents. Control agent sessions (Claude, Codex, Gemini, or any custom command) across multiple machines from your phone or browser. Two session backends: **pty** (lightweight, no dependencies) or **tmux** (persistent, survives restarts). Secured by [Tailscale](https://tailscale.com/) — zero-config encrypted access, no ports to open.
38
+ Mobile & desktop command center for AI coding agents. Control agent sessions (Claude, Codex, Gemini, or any custom command) across multiple machines from your phone or browser. Sessions live in a dedicated Rust PTY broker daemon, so they survive wolfpack server restarts and redeploys. Secured by [Tailscale](https://tailscale.com/) — zero-config encrypted access, no ports to open.
39
39
 
40
40
  Install on your phone's home screen for a native app experience — scan the QR code after setup and tap **"Add to Home Screen"**.
41
41
 
@@ -53,32 +53,30 @@ Install on your phone's home screen for a native app experience — scan the QR
53
53
  <img src="docs/mobile-sessions.png" width="250" alt="Mobile — session list with multi-machine support" />
54
54
  </p>
55
55
  <p align="center">
56
- <kbd>Classic</kbd>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<kbd>Ghostty (WASM)</kbd>
57
- </p>
58
- <p align="center">
59
- <img src="docs/mobile-terminal.png" width="300" alt="Mobile — classic terminal mode" />
60
- <img src="docs/mobile-ghostty.png" width="300" alt="Mobile — ghostty WASM terminal mode" />
56
+ <img src="docs/mobile-ghostty.png" width="300" alt="Mobile — ghostty-web terminal" />
61
57
  </p>
62
58
 
63
59
  ## Architecture
64
60
 
65
61
  ```
66
- ┌─────────────┐ ┌───────────┐ ┌──────────────────────────────────┐
67
- │ Phone / │ │ Tailscale │ Your Machine
68
- │ Browser │◄────►│ (HTTPS) │◄────►│
69
- │ (PWA) │ │ mesh VPN │ │ ┌──────────┐ ┌──────┐ ┌─────┐
70
- └─────────────┘ └───────────┘ │ │ wolfpack │ │pty or │Agent│
71
- │ │ server │◄│ tmux │◄│(any)│ │
72
- │ │ HTTP/WS
73
- └──────────┘ └──────┘ └─────┘
74
- └──────────────────────────────────┘
62
+ ┌─────────────┐ ┌───────────┐ ┌──────────────────────────────────────────┐
63
+ │ Phone / │ │ Tailscale │ Your Machine
64
+ │ Browser │◄──►│ (HTTPS) │◄──►│
65
+ │ (PWA) │ │ mesh VPN │ │ ┌──────────┐ unix ┌──────────────┐
66
+ └─────────────┘ └───────────┘ │ │ wolfpack │ socket wolfpack- │ │
67
+ │ │ server │◄───────►│ broker │ │
68
+ │ │ (Bun) (Rust, PTY) │ │
69
+ HTTP/WS │ │ owns agents │
70
+ │ └──────────┘ └──────────────┘ │
71
+ └──────────────────────────────────────────┘
75
72
  ```
76
73
 
77
74
  **Components:**
78
- - **PWA** — single-file vanilla JS app (~90KB), no framework. Mobile-optimized touch UI + desktop ANSI terminal
79
- - **Server** — Bun HTTP + WebSocket. Serves embedded assets, manages sessions via pty (default) or tmux backend
80
- - **Ralph** — detached subprocess that iterates through a markdown plan file, invoking agents per-task
81
- - **Agents** — Claude, Codex, Gemini, or any shell command. Agent-agnostic by design
75
+ - **PWA** — vanilla JS, no framework. ghostty-web (WASM) renders the terminal on both mobile and desktop. Settings + multi-machine list persist in localStorage.
76
+ - **Server** — Bun HTTP + WebSocket. Serves embedded assets, exposes `/api/*` and the `/ws/pty` binary stream. Pure broker client — owns no PTYs.
77
+ - **Broker** — `wolfpack-broker`, a Rust daemon. Owns every PTY, keeps per-session output rings, and survives wolfpack server restarts. One Unix-domain socket per host (`$XDG_RUNTIME_DIR/wolfpack-broker.sock`, fallback `~/.wolfpack/broker.sock`). Wire format documented in [docs/broker-protocol.md](docs/broker-protocol.md).
78
+ - **Ralph** — detached subprocess that iterates through a markdown plan file, invoking agents per-task. See [docs/ralph-macchio.md](docs/ralph-macchio.md).
79
+ - **Agents** — Claude, Codex, Gemini, or any shell command. Agent-agnostic by design.
82
80
 
83
81
  ## Quick Install
84
82
 
@@ -100,94 +98,76 @@ curl -fsSL https://raw.githubusercontent.com/almogdepaz/wolfpack/main/install.sh
100
98
 
101
99
  This will download the pre-built binary for your platform, run the setup wizard, and optionally install as a login service.
102
100
 
103
- Supported platforms: macOS (Apple Silicon, Intel), Linux (x64, arm64).
101
+ Supported platforms: macOS (Apple Silicon, Intel), Linux (x64, arm64). Each platform package ships both `wolfpack` (the Bun binary) and `wolfpack-broker` (the Rust daemon).
104
102
 
105
103
  ### Prerequisites
106
104
 
107
105
  - **Tailscale** *(optional)* — install from [tailscale.com/download](https://tailscale.com/download), sign in, and make sure both your computer and phone are on the same tailnet. Required for remote access.
108
- - **tmux** *(optional)* — only needed if you choose the tmux backend. The default **pty** backend has no external dependencies.
109
-
110
- ### Session Backends
111
-
112
- Wolfpack supports two backends for managing terminal sessions. You choose during setup and can switch at runtime from Settings.
113
-
114
- | | **PTY** (default) | **tmux** |
115
- |---|---|---|
116
- | **Dependencies** | None | Requires tmux installed |
117
- | **Session persistence** | In-memory — sessions lost on server crash/restart | tmux server is a separate process — sessions survive wolfpack restarts, deploys, and crashes |
118
- | **Terminal streaming** | Direct binary WebSocket (`/ws/pty`) — low latency | Capture-pane polling (`/ws/terminal`) |
119
- | **Desktop terminal** | ghostty-web with full scrollback | ghostty-web with full scrollback |
120
- | **Best for** | Quick setup, no-dependency environments | Long-running agent sessions where persistence matters |
121
-
122
- **Why tmux is more robust:** tmux runs as an independent server process. Your agent sessions live inside tmux, not inside wolfpack. If wolfpack crashes, gets redeployed, or restarts (e.g. `launchctl kickstart`), tmux sessions keep running untouched. When wolfpack comes back up, it reconnects to the existing tmux sessions automatically. With the PTY backend, a wolfpack restart kills all running sessions — any in-progress agent work is lost.
123
106
 
124
- **Why PTY is the default:** zero dependencies, simpler setup, and lower latency terminal streaming. For most users running short agent tasks, the convenience outweighs the persistence tradeoff.
107
+ No other runtime dependencies. The broker is bundled.
125
108
 
126
- Both backends can run simultaneously — the backend router tracks which backend owns each session. You can have tmux sessions and PTY sessions active at the same time.
109
+ ### Session Persistence
127
110
 
128
- ### tmux History
111
+ The `wolfpack-broker` daemon owns every PTY and runs independently of the wolfpack server. If the server crashes, gets redeployed, or restarts (e.g. `launchctl kickstart`), agent sessions keep running. When the server comes back up, it reconnects to the existing broker over the Unix socket and re-attaches to live sessions automatically.
129
112
 
130
- Wolfpack can only hydrate history that tmux still retains. Desktop terminal sessions prefill the latest 5,000 lines on connect, so if you want deeper scrollback, raise tmux's history limit:
131
-
132
- ```tmux
133
- set -g history-limit 50000
134
- ```
135
-
136
- Reload tmux or restart your sessions after changing it.
113
+ The broker is started by `wolfpack service install` (alongside the server) and is checked by `wolfpack doctor`.
137
114
 
138
115
  ## Usage
139
116
 
140
117
  ```bash
141
118
  wolfpack # Start the server (runs setup on first launch)
142
119
  wolfpack setup # Re-run the setup wizard
143
- wolfpack service install # Auto-start on login (launchd / systemd)
120
+ wolfpack ls # List active broker sessions
121
+ wolfpack kill <session> # Kill a session by name
122
+ wolfpack doctor # Diagnose broker socket, binaries, JWT, Tailscale
123
+ wolfpack migrate-plan FILE # Convert old-format plan headers to ## N. Title
124
+ wolfpack service install # Auto-start on login (launchd / systemd) — installs broker too
144
125
  wolfpack service stop # Stop the background service
145
126
  wolfpack service start # Start the background service
146
127
  wolfpack service status # Check if running
147
128
  wolfpack service uninstall # Remove the launch agent
148
- wolfpack uninstall # Remove everything (service, config, global command)
129
+ wolfpack uninstall --yes # Remove everything (service, config, ~/.wolfpack, global command)
149
130
  ```
150
131
 
151
132
  ### Setup Wizard
152
133
 
153
134
  On first run, `wolfpack` walks you through:
154
135
 
155
- 1. Checking prerequisites (tmux, Tailscale — both optional)
156
- 2. Choosing a session backend (pty or tmux, default: pty)
157
- 3. Setting your projects directory (default: `~/Dev`)
158
- 4. Choosing a port (default: `18790`)
159
- 5. Enabling Tailscale HTTPS access
160
- 6. Optionally installing as a login service
161
- 7. Displaying a QR code to scan with your phone
136
+ 1. Checking prerequisites (Tailscale — optional)
137
+ 2. Setting your projects directory (default: `~/Dev`)
138
+ 3. Choosing a port (default: `18790`)
139
+ 4. Detecting/configuring Tailscale HTTPS access
140
+ 5. Optionally installing as a login service (which also installs the broker)
141
+ 6. Displaying a QR code to scan with your phone
142
+ 7. Printing JWT setup instructions
162
143
 
163
144
  ## Features
164
145
 
165
146
  ### Session Management
166
- - Create, view, and kill agent sessions (pty or tmux backend)
167
- - Agent picker — Claude, Codex, Gemini, or custom commands per session
147
+ - Create, view, and kill agent sessions all owned by the broker daemon
148
+ - Agent picker — Claude, Codex, Gemini, or custom commands per session (configurable in Settings → Agents)
168
149
  - Session triage — running, idle, and needs-input states with color-coded indicators
169
150
  - Live terminal output preview on session cards
170
151
 
171
152
  ### Desktop
172
- - **Multi-terminal grid** — view 2-6 sessions side-by-side in a CSS grid layout. Click `+` on any sidebar card to add it to the grid, `×` to remove. Focused cell highlighted with green glow.
153
+ - **Multi-terminal grid** — view multiple sessions side-by-side in a CSS grid layout. Click `+` on any sidebar card to add it to the grid, `×` to remove. Focused cell highlighted.
173
154
  - **Collapsible sidebar** — pin or auto-hide. Shows all sessions across machines with status badges, output preview, and grid/kill buttons.
174
- - **xterm.js PTY** — full terminal emulator with direct PTY connection (not capture-pane polling)
155
+ - **ghostty-web terminal** — full WASM terminal emulator with direct binary `/ws/pty` connection. Per-instance isolation lets each grid cell run its own emulator.
175
156
  - **Keyboard shortcuts:**
176
157
  - `Cmd/Ctrl + ArrowUp/Down` — cycle between sessions
177
158
  - `Cmd/Ctrl + ArrowLeft/Right` — navigate grid cells
178
159
  - `Cmd/Ctrl + T` — new session (project picker)
179
- - `Cmd/Ctrl + K` — clear terminal
160
+ - `Cmd/Ctrl + K` — clear focused terminal
180
161
 
181
162
  ### Mobile
182
- - **Two terminal modes** — choose in Settings:
183
- - **Classic** (default) lightweight capture-pane polling. No WASM, works on all devices. Best for quick monitoring and input.
184
- - **Ghostty (WASM)** — full terminal emulator via [ghostty-web](https://github.com/ghostty-org/ghostty). Richer output (colors, cursor, scrollback) but heavier on battery. Keyboard is suppressed by default — tap the keyboard button to open it.
185
- - **Keyboard accessory** — quick-action bar with Enter, Esc, arrow keys, Ctrl combos, and git status
186
- - **Touch scrolling** — momentum physics, long-press to select text and copy
187
- - **Haptic feedback** — vibration on key actions (toggleable)
188
- - **PWA** — install as a standalone app on your phone's home screen
163
+ - **ghostty-web terminal** — same WASM emulator as desktop, with the on-screen keyboard suppressed until you tap the keyboard button (prevents accidental focus steals).
164
+ - **Keyboard accessory** — quick-action bar with Enter, Esc, arrow keys, a `git` shortcut, and copy/keyboard buttons.
165
+ - **Quick commands** — user-defined command chips, configurable in Settings.
166
+ - **Touch scrolling** — momentum physics, long-press to select text and copy.
167
+ - **Haptic feedback** — vibration on key actions (toggleable).
168
+ - **PWA** — install as a standalone app on your phone's home screen.
189
169
 
190
- All settings (terminal mode, font size, haptics, etc.) persist in localStorage across sessions.
170
+ All settings (font size, haptics, enter-sends, snapshot TTL, etc.) persist in localStorage across sessions.
191
171
 
192
172
  ### Multi-Machine
193
173
  - One phone connects to multiple Wolfpack servers
@@ -197,7 +177,6 @@ All settings (terminal mode, font size, haptics, etc.) persist in localStorage a
197
177
 
198
178
  ### Other
199
179
  - **Notifications** — browser notifications + vibration when sessions need attention
200
- - **Search** — find text in terminal output with match navigation
201
180
  - **Reconnect handling** — auto-recovers on connection drop with status indicator
202
181
  - **Auto-resize** — terminal resizes to match your screen/grid cell
203
182
 
@@ -205,7 +184,7 @@ All settings (terminal mode, font size, haptics, etc.) persist in localStorage a
205
184
 
206
185
  1. Install [Tailscale](https://tailscale.com/download) on both your computer and phone
207
186
  2. Sign in to the same Tailscale account on both devices
208
- 3. Run `wolfpack setup` and say **y** to "Enable Tailscale HTTPS access?"
187
+ 3. Run `wolfpack setup` — it auto-detects your Tailscale hostname and runs `tailscale serve` to expose the port over HTTPS
209
188
  4. Scan the QR code with your phone
210
189
  5. Tap **"Add to Home Screen"** for the native app experience
211
190
 
@@ -215,7 +194,7 @@ Tailscale's encrypted mesh network handles auth and routing — no ports to open
215
194
 
216
195
  **Always use the Tailscale hostname** (e.g. `https://mybox.tail1234.ts.net`) — not raw IPs. The QR code from setup already points to the correct URL. Raw IP access (LAN or Tailscale `100.x.x.x`) bypasses Tailscale's DNS-based routing and may not be protected by CORS.
217
196
 
218
- **JWT authentication** adds a second layer of protection. Without it, anyone who can reach the server port has full access to your tmux sessions. To enable:
197
+ **JWT authentication** adds a second layer of protection. Without it, anyone who can reach the server port has full access to your sessions. To enable:
219
198
 
220
199
  1. Generate a secret (minimum 32 characters):
221
200
  ```bash
@@ -242,61 +221,69 @@ Autonomous task runner. Write a markdown plan file, pick an agent, set iteration
242
221
 
243
222
  ## Config
244
223
 
245
- Stored in `~/.wolfpack/config.json`:
224
+ Stored in `~/.wolfpack/config.json` (mode 0600):
246
225
 
247
226
  ```json
248
227
  {
249
228
  "devDir": "/Users/you/Dev",
250
229
  "port": 18790,
251
- "backend": "pty",
252
230
  "tailscaleHostname": "your-machine.tailnet-name.ts.net"
253
231
  }
254
232
  ```
255
233
 
256
- Agent command and settings stored in `~/.wolfpack/bridge-settings.json`.
234
+ Agent list and per-server settings stored in `~/.wolfpack/bridge-settings.json`.
235
+
236
+ The broker socket lives at `$XDG_RUNTIME_DIR/wolfpack-broker.sock` (or `~/.wolfpack/broker.sock`) and is owned by the user (filesystem permissions are the auth boundary).
257
237
 
258
238
  ## Contributing
259
239
 
260
240
  ### Dev Setup
261
241
 
262
- Requires [Bun](https://bun.sh/) (v1.2+).
242
+ Requires [Bun](https://bun.sh/) (v1.2+) and a [Rust toolchain](https://rustup.rs/) (for building the broker).
263
243
 
264
244
  ```bash
265
245
  git clone https://github.com/almogdepaz/wolfpack.git
266
246
  cd wolfpack
267
247
  bun install
268
- bun run scripts/gen-assets.ts # generate embedded assets (required once)
269
- bun run cli.ts # start the server locally
248
+ bun run scripts/gen-assets.ts # generate embedded assets (required once)
249
+ cargo build --release --manifest-path broker/Cargo.toml # build the broker
250
+ bun run src/cli/index.ts # start the server locally
270
251
  ```
271
252
 
253
+ For an end-to-end local install (build + service install + restart), use `scripts/deploy-local.sh`.
254
+
272
255
  ### Testing
273
256
 
274
257
  ```bash
275
- bun test # all tests
276
- bun test tests/unit/ # unit tests only
277
- bun test tests/unit/plan-parsing.test.ts # single file
258
+ bun test # all bun tests
259
+ bun test tests/unit/ # unit tests only
260
+ bun test tests/unit/plan-parsing.test.ts # single file
261
+ bunx playwright test # e2e (uses test-server harness)
278
262
  ```
279
263
 
280
- Tests use Bun's built-in runner. Three categories:
281
- - `tests/unit/` — plan parsing, ralph log parsing, escaping, validation, grid logic
264
+ Test layout:
265
+ - `tests/unit/` — pure-logic tests (plan parsing, ralph log parsing, escaping, validation, grid logic, broker codec, etc.)
266
+ - `tests/integration/` — API routes, broker backend, ralph loop endpoints, WS dispatch
282
267
  - `tests/snapshot/` — launchd plist and systemd unit generation
283
- - `tests/integration/` — API routes, ralph loop endpoints
268
+ - `tests/e2e/` — Playwright end-to-end (`test:e2e` / `test:e2e:headed` scripts)
269
+
270
+ The Rust broker has its own tests under `broker/tests/` (`cargo test` from `broker/`).
284
271
 
285
272
  ### Asset Pipeline
286
273
 
287
274
  Frontend files live in `public/`. The server doesn't serve from disk — everything is embedded:
288
275
 
289
- 1. Edit files in `public/` (HTML, PNG, manifest, etc.)
290
- 2. Run `bun run scripts/gen-assets.ts` — embeds them into `public-assets.ts` (binary→base64, text→string)
291
- 3. **Do NOT edit `public-assets.ts` manually** — it's auto-generated
276
+ 1. Edit files in `public/` (HTML, TS, CSS, manifest, etc.)
277
+ 2. Run `bun run scripts/gen-assets.ts` — bundles `public/app.ts` and ghostty-web, then embeds every file from `public/` into `src/public-assets.ts` (binary→base64, text→string)
278
+ 3. **Do NOT edit `src/public-assets.ts` manually** — it's auto-generated
292
279
 
293
280
  ### Building Binaries
294
281
 
295
282
  ```bash
296
- bun run scripts/build.ts # assets + 4 platform binaries in dist/
283
+ bun run scripts/build.ts # assets + broker + 4 platform binaries + npm pkg dirs in dist/
297
284
  ```
298
285
 
299
- Compiles for: linux-x64, linux-arm64, darwin-x64, darwin-arm64.
286
+ Compiles `wolfpack` for: linux-x64, linux-arm64, darwin-x64, darwin-arm64. The script also stages `wolfpack-broker` per platform — in CI it expects pre-built broker binaries under `dist/broker/<target>/`; locally it falls back to a host-arch-only `cargo build --release`.
300
287
 
301
288
  ### PR Conventions
302
289
 
package/bin/install.cjs CHANGED
@@ -1,10 +1,21 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * postinstall — copies platform binary from the optional dependency to bin/wolfpack.
3
+ * postinstall — copies platform binaries from the optional dependency to bin/.
4
4
  *
5
- * This is an optimization so run.cjs can use the fast path. If the platform
6
- * package isn't installed (e.g. bunx skips optionalDependencies), this exits
7
- * cleanly run.cjs handles resolution at runtime.
5
+ * Two binaries ship per platform package:
6
+ * - wolfpack (the bun-compiled server + CLI)
7
+ * - wolfpack-broker (the rust PTY broker daemon)
8
+ *
9
+ * Both are placed next to bin/run.cjs so:
10
+ * 1. run.cjs uses the fast local path for `wolfpack`
11
+ * 2. service.ts:brokerProgramPath() finds wolfpack-broker via its
12
+ * "co-located with the running wolfpack binary" search rule
13
+ *
14
+ * If the platform package isn't installed (e.g. bunx skips
15
+ * optionalDependencies), this exits cleanly and run.cjs handles resolution
16
+ * at runtime; the broker won't be locatable in that case until the user
17
+ * reinstalls properly, but `wolfpack service install` will print a clear
18
+ * "could not locate wolfpack-broker" error rather than failing silently.
8
19
  */
9
20
  const { platform, arch } = require("node:os");
10
21
  const { copyFileSync, chmodSync, existsSync } = require("node:fs");
@@ -12,24 +23,33 @@ const { join, dirname } = require("node:path");
12
23
 
13
24
  const key = `${platform()}-${arch()}`;
14
25
  const pkg = `wolfpack-bridge-${key}`;
15
- const dest = join(__dirname, "wolfpack");
16
26
 
17
- // resolve binary from platform-specific optional package
18
- let src;
27
+ // resolve platform-specific optional package
28
+ let pkgRoot;
19
29
  try {
20
- const pkgJson = require.resolve(`${pkg}/package.json`);
21
- src = join(dirname(pkgJson), "wolfpack");
30
+ pkgRoot = dirname(require.resolve(`${pkg}/package.json`));
22
31
  } catch {
23
32
  console.log(`wolfpack: platform package ${pkg} not found, skipping postinstall`);
24
- console.log("wolfpack: binary will be resolved at runtime");
33
+ console.log("wolfpack: binaries will be resolved at runtime");
25
34
  process.exit(0);
26
35
  }
27
36
 
28
- if (!existsSync(src)) {
29
- console.log(`wolfpack: binary not found in ${pkg}, skipping postinstall`);
30
- process.exit(0);
37
+ function copyBinary(name) {
38
+ const src = join(pkgRoot, name);
39
+ const dest = join(__dirname, name);
40
+ if (!existsSync(src)) {
41
+ console.log(`wolfpack: ${name} not found in ${pkg}, skipping`);
42
+ return false;
43
+ }
44
+ copyFileSync(src, dest);
45
+ chmodSync(dest, 0o755);
46
+ return true;
31
47
  }
32
48
 
33
- copyFileSync(src, dest);
34
- chmodSync(dest, 0o755);
35
- console.log(`wolfpack: installed ${key} binary`);
49
+ const gotMain = copyBinary("wolfpack");
50
+ const gotBroker = copyBinary("wolfpack-broker");
51
+ if (gotMain && gotBroker) {
52
+ console.log(`wolfpack: installed ${key} binaries (wolfpack + wolfpack-broker)`);
53
+ } else if (gotMain) {
54
+ console.log(`wolfpack: installed ${key} wolfpack binary; broker missing (rebuild platform package)`);
55
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wolfpack-bridge",
3
- "version": "1.6.1",
3
+ "version": "1.6.2",
4
4
  "type": "module",
5
5
  "description": "Mobile command center for tmux-based AI agent sessions",
6
6
  "bin": {
@@ -17,10 +17,10 @@
17
17
  "postinstall": "node bin/install.cjs"
18
18
  },
19
19
  "optionalDependencies": {
20
- "wolfpack-bridge-darwin-arm64": "1.6.1",
21
- "wolfpack-bridge-darwin-x64": "1.6.1",
22
- "wolfpack-bridge-linux-arm64": "1.6.1",
23
- "wolfpack-bridge-linux-x64": "1.6.1"
20
+ "wolfpack-bridge-darwin-arm64": "1.6.2",
21
+ "wolfpack-bridge-darwin-x64": "1.6.2",
22
+ "wolfpack-bridge-linux-arm64": "1.6.2",
23
+ "wolfpack-bridge-linux-x64": "1.6.2"
24
24
  },
25
25
  "keywords": [
26
26
  "tmux",