tono 0.3.0 → 0.3.3

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
@@ -63,21 +63,14 @@ Run `tono config labels` to print the table for your current config.
63
63
  - **[`gh`](https://cli.github.com)** installed and authenticated (`gh auth login`). Tono shells out to `gh` for issue polling, PR polling, and PR-merge tracking.
64
64
  - **The agent CLI(s) you want to use, on `$PATH`.** At least one of:
65
65
  - **Claude Code** — [install instructions](https://docs.claude.com/en/docs/claude-code/quickstart). Verify `claude --version`.
66
- - **Codex CLI** — `npm install -g @openai/codex` or follow the [Codex CLI repo](https://github.com/openai/codex). Verify `codex --version`.
66
+ - **Codex CLI** — `pnpm add -g @openai/codex` or follow the [Codex CLI repo](https://github.com/openai/codex). Verify `codex --version`.
67
67
  - **OpenCode** — see [opencode.ai](https://opencode.ai). Verify `opencode --version`.
68
68
 
69
69
  ## Install
70
70
 
71
- Tono is on npm install it globally with whichever package manager you use:
71
+ Tono is on npm. Install it globally with [pnpm](https://pnpm.io):
72
72
 
73
73
  ```bash
74
- # npm (recommended — runs install scripts by default, so native modules just work)
75
- npm install -g tono
76
-
77
- # yarn
78
- yarn global add tono
79
-
80
- # pnpm
81
74
  pnpm add -g tono
82
75
  pnpm approve-builds -g # one-time: allow better-sqlite3 and node-pty to fetch prebuilds
83
76
  ```
@@ -85,26 +78,54 @@ pnpm approve-builds -g # one-time: allow better-sqlite3 and node-pty to fetch
85
78
  Verify it landed on your `$PATH`:
86
79
 
87
80
  ```bash
88
- tono --version # → 0.2.0
89
- which tono # → /usr/local/bin/tono (or your manager's bin path)
81
+ tono --version
82
+ which tono # → ~/.local/share/pnpm/tono (or your pnpm bin path)
90
83
  ```
91
84
 
92
85
  To upgrade later:
93
86
 
94
87
  ```bash
95
- npm install -g tono@latest
96
- tono gateway restart # picks up the new binary in the background daemon
88
+ tono upgrade # one-shot: install the latest version + restart any loaded daemons
89
+ ```
90
+
91
+ `tono upgrade` auto-detects the package manager that installed the binary
92
+ (pnpm / npm / yarn / bun by inspecting the install path), runs the
93
+ equivalent of `<pm> add -g tono@latest`, and restarts whichever LaunchAgents
94
+ are currently loaded (`com.tono.gateway`, `com.tono.worker`). Pass
95
+ `--check` to see current vs latest without installing, `--no-restart` to
96
+ skip the daemon restart, or `--pm <name>` to force a specific package
97
+ manager.
98
+
99
+ You can still upgrade by hand if you prefer:
100
+
101
+ ```bash
102
+ pnpm add -g tono@latest
103
+ tono gateway restart # pick up the new binary in the background daemon
97
104
  ```
98
105
 
106
+ If you have remote workers, run `tono upgrade` on each worker machine too
107
+ (or upgrade by hand and `tono worker restart`).
108
+
109
+ DB migrations (gateway-side) run automatically on the next `tono start` /
110
+ `tono gateway restart`. Tono backs up `~/.tono/tono.db` to
111
+ `~/.tono/tono.db.bak.v<N>` before any version-stepped migration runs, so an
112
+ upgrade is safe to roll back: stop the gateway, copy the backup over the
113
+ live db, downgrade `tono`, and start.
114
+
115
+ Workers and gateways must run the **same minor** version of tono (e.g. all
116
+ on `0.3.x`). Patch upgrades within a minor are guaranteed to interop. If a
117
+ worker's minor differs from the gateway's, the gateway logs a warning on
118
+ connect and may fail to dispatch tasks if the protocol shape has drifted.
119
+
99
120
  To uninstall:
100
121
 
101
122
  ```bash
102
- tono gateway uninstall # remove the LaunchAgent first
103
- npm uninstall -g tono
104
- rm -rf ~/.tono # optional — drops config, db, worktrees
123
+ tono gateway uninstall # remove the LaunchAgent first
124
+ pnpm remove -g tono
125
+ rm -rf ~/.tono # optional — drops config, db, worktrees
105
126
  ```
106
127
 
107
- > **About native modules:** tono pulls in `better-sqlite3` and `node-pty`, which need to compile or fetch a prebuilt binary. Both ship prebuilds for macOS arm64/x64; npm and yarn run their install scripts automatically. **pnpm v10 disables install scripts by default** for safety, hence the extra `pnpm approve-builds -g` step.
128
+ > **About native modules:** tono pulls in `better-sqlite3` and `node-pty`, which need to compile or fetch a prebuilt binary. Both ship prebuilds for macOS arm64/x64. **pnpm disables install scripts by default** for safety, hence the extra `pnpm approve-builds -g` step. If you prefer npm or yarn, the install commands work too — those run install scripts by default and skip the approve-builds step.
108
129
 
109
130
  ## Get started
110
131
 
@@ -171,10 +171,15 @@ function status() {
171
171
  console.log(`launchctl: not loaded`);
172
172
  }
173
173
  pingHealth().then((res) => {
174
- if (res.ok)
175
- console.log(`http: ${res.url} (agents=${res.agents}, repos=${res.repos})`);
176
- else
174
+ if (res.ok) {
175
+ const workers = res.workersTotal === res.workersConnected
176
+ ? `${res.workersConnected}`
177
+ : `${res.workersConnected}/${res.workersTotal}`;
178
+ console.log(`http: ${res.url} (agents=${res.agents}, repos=${res.repos}, workers=${workers})`);
179
+ }
180
+ else {
177
181
  console.log(`http: ${res.url ?? ""} ${res.error}`);
182
+ }
178
183
  });
179
184
  }
180
185
  function logs(args) {
@@ -198,7 +203,14 @@ async function pingHealth() {
198
203
  if (!res.ok)
199
204
  return { ok: false, url, error: `HTTP ${res.status}` };
200
205
  const j = (await res.json());
201
- return { ok: true, url, agents: Object.keys(j.agents ?? {}).length, repos: j.reposWatched };
206
+ return {
207
+ ok: true,
208
+ url,
209
+ agents: Object.keys(j.agents ?? {}).length,
210
+ repos: j.reposWatched,
211
+ workersConnected: j.workers?.connected ?? 0,
212
+ workersTotal: j.workers?.total ?? 0,
213
+ };
202
214
  }
203
215
  catch (err) {
204
216
  return { ok: false, error: err.message };
@@ -1 +1 @@
1
- {"version":3,"file":"gateway.js","sourceRoot":"","sources":["../../../src/cli/commands/gateway.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gateway.js","sourceRoot":"","sources":["../../../src/cli/commands/gateway.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACzF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAc,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC5F,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAErE,SAAS,SAAS;IAChB,6CAA6C;IAC7C,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACrD,OAAO,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,WAAW;IAClB,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACrD,OAAO,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,IAAI,CAAC,GAAW,EAAE,IAAc;IACvC,MAAM,CAAC,GAAG,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IACrD,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;AAClF,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAc;IACvC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,OAAO;YACV,KAAK,EAAE,CAAC;YACR,OAAO;QACT,KAAK,MAAM;YACT,IAAI,EAAE,CAAC;YACP,OAAO;QACT,KAAK,SAAS;YACZ,OAAO,EAAE,CAAC;YACV,OAAO;QACT,KAAK,QAAQ;YACX,MAAM,EAAE,CAAC;YACT,OAAO;QACT,KAAK,WAAW;YACd,SAAS,EAAE,CAAC;YACZ,OAAO;QACT,KAAK,MAAM;YACT,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACpB,OAAO;QACT,KAAK,SAAS,CAAC;QACf,KAAK,QAAQ,CAAC;QACd,KAAK,IAAI;YACP,OAAO,CAAC,GAAG,CACT,6BAA6B;gBAC3B,IAAI;gBACJ,wEAAwE;gBACxE,qEAAqE;gBACrE,8EAA8E;gBAC9E,IAAI;gBACJ,4FAA4F;gBAC5F,qDAAqD;gBACrD,mEAAmE;gBACnE,+CAA+C;gBAC/C,kDAAkD;gBAClD,qDAAqD,CACxD,CAAC;YACF,OAAO;QACT;YACE,OAAO,CAAC,KAAK,CAAC,+BAA+B,GAAG,EAAE,CAAC,CAAC;YACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACH,CAAC;AAED,SAAS,WAAW;IAClB,4DAA4D;IAC5D,IAAI,CAAC;QACH,UAAU,EAAE,CAAC;IACf,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,WAAW,EAAE,CAAC;YAC/B,OAAO,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;YACvE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;IACD,MAAM,SAAS,GAAG,SAAS,CAAC,aAAa,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;IACxB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACnC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAExC,2EAA2E;IAC3E,gFAAgF;IAChF,0CAA0C;IAC1C,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;IACxC,MAAM,YAAY,GAAG,gEAAgE,CAAC;IACtF,MAAM,UAAU,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEtE,MAAM,GAAG,GAAG,UAAU,CAAC;QACrB,KAAK,EAAE,aAAa;QACpB,WAAW,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAE,OAAO,CAAC;QACrD,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC;QACvC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC;QACvC,UAAU,EAAE,WAAW,EAAE;QACzB,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI;KACvB,CAAC,CAAC;IAEH,qFAAqF;IACrF,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC;QACtE,aAAa,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,SAAS,SAAS,EAAE,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;AAChC,CAAC;AAED,SAAS,KAAK;IACZ,wEAAwE;IACxE,sEAAsE;IACtE,mCAAmC;IACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;IAC5D,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CACT,4BAA4B,aAAa,GAAG,GAAG,CAAC,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CACzE,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,yEAAyE,CAAC,CAAC;QACvF,OAAO;IACT,CAAC;IACD,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,WAAW,EAAE,CAAC;IAC7C,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;IACvD,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACjB,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC9E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,oBAAoB,aAAa,GAAG,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,SAAS,OAAO,uBAAuB,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,IAAI;IACX,MAAM,SAAS,GAAG,SAAS,CAAC,aAAa,CAAC,CAAC;IAC3C,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,sCAAsC,SAAS,GAAG,CAAC,CAAC;QAChE,OAAO;IACT,CAAC;IACD,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;IACnD,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,mCAAmC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;QACxE,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC5F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,oBAAoB,aAAa,GAAG,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,OAAO;IACd,MAAM,SAAS,GAAG,SAAS,CAAC,aAAa,CAAC,CAAC;IAC3C,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;QACvE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,WAAW,EAAE,CAAC;IACd,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;IACzC,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;IACvD,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACjB,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC9E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,sBAAsB,aAAa,GAAG,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,SAAS;IAChB,MAAM,SAAS,GAAG,SAAS,CAAC,aAAa,CAAC,CAAC;IAC3C,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,GAAG,SAAS,gCAAgC,CAAC,CAAC;QAC1D,OAAO;IACT,CAAC;IACD,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;IACzC,UAAU,CAAC,SAAS,CAAC,CAAC;IACtB,OAAO,CAAC,GAAG,CAAC,WAAW,SAAS,EAAE,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,MAAM;IACb,MAAM,SAAS,GAAG,SAAS,CAAC,aAAa,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,cAAc,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACnF,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;IACrD,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACjB,MAAM,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACrD,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACvE,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,CAAC,CAAC,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,IAAI,QAAQ,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACvI,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IACvC,CAAC;IACD,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;QACxB,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;YACX,MAAM,OAAO,GACX,GAAG,CAAC,YAAY,KAAK,GAAG,CAAC,gBAAgB;gBACvC,CAAC,CAAC,GAAG,GAAG,CAAC,gBAAgB,EAAE;gBAC3B,CAAC,CAAC,GAAG,GAAG,CAAC,gBAAgB,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;YACpD,OAAO,CAAC,GAAG,CACT,cAAc,GAAG,CAAC,GAAG,YAAY,GAAG,CAAC,MAAM,WAAW,GAAG,CAAC,KAAK,aAAa,OAAO,GAAG,CACvF,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,CAAC,GAAG,IAAI,EAAE,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,IAAI,CAAC,IAAc;IAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;IAC/B,MAAM,IAAI,GAAG,KAAK,KAAK,KAAK;QAC1B,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,gBAAgB,CAAC;QAC5C,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC/C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,KAAK,CAAC,kBAAkB,IAAI,4BAA4B,CAAC,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,kCAAkC;IAClC,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IACjF,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;AAClC,CAAC;AAED,KAAK,UAAU,UAAU;IAIvB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,UAAU,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,aAAa,CAAC;QACpH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpE,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC;QACpE,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAI1B,CAAC;QACF,OAAO;YACL,EAAE,EAAE,IAAI;YACR,GAAG;YACH,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,MAAM;YAC1C,KAAK,EAAE,CAAC,CAAC,YAAY;YACrB,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE,SAAS,IAAI,CAAC;YAC3C,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC;SACpC,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC;IACtD,CAAC;AACH,CAAC"}
@@ -11,7 +11,6 @@ import { PrWatcher } from "../../server/workers/pr-watcher.js";
11
11
  import { Scheduler } from "../../server/workers/scheduler.js";
12
12
  import { Reaper } from "../../server/workers/reaper.js";
13
13
  import { WorkerRegistry } from "../../server/workers/registry.js";
14
- import { PtyManager } from "../../server/pty/manager.js";
15
14
  import { startServer } from "../../server/server.js";
16
15
  import * as gh from "../../server/github/gh.js";
17
16
  import { WorkerAgent } from "../../server/worker/agent.js";
@@ -83,7 +82,6 @@ export async function runStart() {
83
82
  const db = openDb();
84
83
  const q = new Queries(db);
85
84
  const bus = createBus();
86
- const shellPty = new PtyManager();
87
85
  const registry = new WorkerRegistry();
88
86
  // Single source of truth for live config; mutated by API + propagates to workers.
89
87
  const configManager = new ConfigManager(cfg, (newCfg) => {
@@ -104,7 +102,6 @@ export async function runStart() {
104
102
  const server = await startServer({
105
103
  configManager,
106
104
  q,
107
- shellPty,
108
105
  poller,
109
106
  bus,
110
107
  registry,
@@ -146,10 +143,9 @@ export async function runStart() {
146
143
  prWatcher.stop();
147
144
  reaper.stop();
148
145
  await embeddedWorker.stop();
149
- // Free-form shells live in shellPty kill them. Tasks running on remote
150
- // workers continue on those workers; the gateway-side rows will be marked
151
- // failed by the reaper if those workers don't reattach.
152
- shellPty.killAll("SIGTERM");
146
+ // Tasks (and shells) running on remote workers continue on those workers
147
+ // when the gateway shuts down; rows are marked failed by the reaper if
148
+ // the workers don't reattach in time.
153
149
  try {
154
150
  await server.close();
155
151
  }
@@ -1 +1 @@
1
- {"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/cli/commands/start.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../../../src/cli/commands/start.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,288 @@
1
+ import { spawnSync } from "node:child_process";
2
+ import { existsSync, mkdirSync, readFileSync, realpathSync, writeFileSync } from "node:fs";
3
+ import { homedir } from "node:os";
4
+ import { dirname, join, sep } from "node:path";
5
+ import { fileURLToPath } from "node:url";
6
+ import { VERSION } from "../../shared/version.js";
7
+ import { GATEWAY_LABEL, WORKER_LABEL } from "../launchd.js";
8
+ function tonoHomeDir() {
9
+ return process.env.TONO_HOME ?? join(homedir(), ".tono");
10
+ }
11
+ function installRecordPath() {
12
+ return join(tonoHomeDir(), "install.json");
13
+ }
14
+ function readInstallRecord() {
15
+ try {
16
+ return JSON.parse(readFileSync(installRecordPath(), "utf8"));
17
+ }
18
+ catch {
19
+ return {};
20
+ }
21
+ }
22
+ function writeInstallRecord(rec) {
23
+ try {
24
+ mkdirSync(tonoHomeDir(), { recursive: true });
25
+ writeFileSync(installRecordPath(), JSON.stringify(rec, null, 2) + "\n");
26
+ }
27
+ catch {
28
+ // Best-effort. If the home dir isn't writable we still want the upgrade
29
+ // itself to proceed.
30
+ }
31
+ }
32
+ const HELP = `tono upgrade
33
+
34
+ Self-upgrade tono to the latest version on npm. Detects the package manager
35
+ that installed this binary (pnpm / npm / yarn / bun) and runs the equivalent
36
+ of \`<pm> add -g tono@latest\`. After the new version is installed, restarts
37
+ the gateway and worker LaunchAgents (if loaded) so the daemons pick up the
38
+ new code.
39
+
40
+ The chosen package manager is persisted to ~/.tono/install.json after a
41
+ successful upgrade, so subsequent runs don't need to re-detect (and don't
42
+ get fooled if your PATH changes). Override with --pm to update the record.
43
+
44
+ Usage:
45
+ tono upgrade [--check] [--no-restart] [--pm <pnpm|npm|yarn|bun>]
46
+
47
+ Options:
48
+ --check Print current vs latest, don't install anything.
49
+ --no-restart Skip restarting com.tono.gateway / com.tono.worker after upgrade.
50
+ --pm <name> Force a specific package manager. Updates ~/.tono/install.json.
51
+ `;
52
+ function parseArgs(argv) {
53
+ const out = { check: false, restart: true, help: false };
54
+ for (let i = 0; i < argv.length; i++) {
55
+ const a = argv[i];
56
+ if (a === "--help" || a === "-h") {
57
+ out.help = true;
58
+ continue;
59
+ }
60
+ if (a === "--check") {
61
+ out.check = true;
62
+ continue;
63
+ }
64
+ if (a === "--no-restart") {
65
+ out.restart = false;
66
+ continue;
67
+ }
68
+ if (a === "--pm") {
69
+ const v = argv[++i];
70
+ if (!v || !["pnpm", "npm", "yarn", "bun"].includes(v)) {
71
+ throw new Error(`bad --pm value: ${v ?? "(missing)"}`);
72
+ }
73
+ out.forcePm = v;
74
+ continue;
75
+ }
76
+ throw new Error(`unknown argument: ${a}`);
77
+ }
78
+ return out;
79
+ }
80
+ function exec(cmd, args, opts = {}) {
81
+ const r = spawnSync(cmd, args, { encoding: "utf8", stdio: opts.stdio === "inherit" ? "inherit" : "pipe" });
82
+ return { code: r.status ?? -1, stdout: r.stdout ?? "", stderr: r.stderr ?? "" };
83
+ }
84
+ function commandOnPath(cmd) {
85
+ const r = spawnSync("command", ["-v", cmd], { encoding: "utf8", shell: "/bin/sh" });
86
+ return r.status === 0 && (r.stdout ?? "").trim().length > 0;
87
+ }
88
+ /**
89
+ * Detect the package manager that installed this `tono` by walking up the
90
+ * realpath of the entry script and looking for hints in the directory chain.
91
+ *
92
+ * Heuristics (in order):
93
+ * - `/Library/pnpm/`, `/.pnpm/`, `pnpm-store/` → pnpm
94
+ * - `/.bun/` → bun
95
+ * - `/yarn/global/`, `/.yarn/` → yarn
96
+ * - any `/node_modules/` ancestor → npm (default fallback)
97
+ */
98
+ function detectInstaller() {
99
+ const here = dirname(fileURLToPath(import.meta.url));
100
+ let p;
101
+ try {
102
+ p = realpathSync(here);
103
+ }
104
+ catch {
105
+ return { pm: null, reason: `couldn't resolve realpath of ${here}` };
106
+ }
107
+ // Bail if running from a source checkout (./src/cli/...). Detect by absence
108
+ // of a `node_modules/tono` ancestor or the presence of a top-level src dir.
109
+ if (p.includes(`${sep}src${sep}cli${sep}`)) {
110
+ return { pm: null, reason: "running from source checkout — install globally first, or use --pm to force a package manager" };
111
+ }
112
+ while (p.length > 1) {
113
+ const lower = p.toLowerCase();
114
+ if (lower.includes(`${sep}.pnpm${sep}`) || lower.includes(`${sep}pnpm${sep}`) || lower.includes(`${sep}library${sep}pnpm${sep}`)) {
115
+ return { pm: "pnpm", reason: `path contains pnpm: ${p}` };
116
+ }
117
+ if (lower.includes(`${sep}.bun${sep}`)) {
118
+ return { pm: "bun", reason: `path contains .bun: ${p}` };
119
+ }
120
+ if (lower.includes(`${sep}.yarn${sep}`) || lower.includes(`${sep}yarn${sep}global${sep}`)) {
121
+ return { pm: "yarn", reason: `path contains yarn: ${p}` };
122
+ }
123
+ const next = dirname(p);
124
+ if (next === p)
125
+ break;
126
+ p = next;
127
+ }
128
+ return { pm: "npm", reason: "no pm hints in path; defaulting to npm" };
129
+ }
130
+ function pmAddCmd(pm) {
131
+ switch (pm) {
132
+ case "pnpm":
133
+ return ["pnpm", "add", "-g", "tono@latest"];
134
+ case "yarn":
135
+ return ["yarn", "global", "add", "tono@latest"];
136
+ case "bun":
137
+ return ["bun", "add", "-g", "tono@latest"];
138
+ case "npm":
139
+ default:
140
+ return ["npm", "install", "-g", "tono@latest"];
141
+ }
142
+ }
143
+ async function fetchLatest() {
144
+ try {
145
+ const res = await fetch("https://registry.npmjs.org/tono/latest", {
146
+ signal: AbortSignal.timeout(8000),
147
+ headers: { accept: "application/json" },
148
+ });
149
+ if (!res.ok)
150
+ return null;
151
+ const j = (await res.json());
152
+ return j.version ?? null;
153
+ }
154
+ catch {
155
+ return null;
156
+ }
157
+ }
158
+ function entryPath() {
159
+ // dist/cli/commands/upgrade.js → ../index.js
160
+ const here = dirname(fileURLToPath(import.meta.url));
161
+ return `${dirname(here)}/index.js`;
162
+ }
163
+ function isLoaded(label) {
164
+ const r = spawnSync("launchctl", ["list", label], { encoding: "utf8" });
165
+ return r.status === 0;
166
+ }
167
+ function restartLaunchAgent(label, subcommand) {
168
+ // We invoke the freshly-installed `tono` binary via process.execPath +
169
+ // entry, NOT the live one we're running from — `pnpm add -g` may have
170
+ // replaced the global symlink. process.execPath is node; entryPath() is the
171
+ // dist/cli/index.js path, which on most package managers is replaced
172
+ // atomically (npm/pnpm/yarn) so the new code is now at the same path.
173
+ const entry = entryPath();
174
+ if (!existsSync(entry)) {
175
+ return { ok: false, output: `entry path missing: ${entry}` };
176
+ }
177
+ const r = spawnSync(process.execPath, [entry, subcommand, "restart"], {
178
+ encoding: "utf8",
179
+ });
180
+ void label;
181
+ return {
182
+ ok: r.status === 0,
183
+ output: ((r.stdout ?? "") + (r.stderr ?? "")).trim() || `${subcommand} restart`,
184
+ };
185
+ }
186
+ export async function runUpgrade(argv) {
187
+ let parsed;
188
+ try {
189
+ parsed = parseArgs(argv);
190
+ }
191
+ catch (err) {
192
+ console.error(err.message);
193
+ console.error("");
194
+ console.error(HELP);
195
+ process.exit(2);
196
+ }
197
+ if (parsed.help) {
198
+ console.log(HELP);
199
+ return;
200
+ }
201
+ process.stdout.write(`tono ${VERSION} (current)\n`);
202
+ const latest = await fetchLatest();
203
+ if (latest) {
204
+ process.stdout.write(`tono ${latest} (latest on npm)\n`);
205
+ }
206
+ else {
207
+ process.stdout.write(`tono ?.?.? (couldn't reach https://registry.npmjs.org)\n`);
208
+ }
209
+ if (parsed.check)
210
+ return;
211
+ if (latest && latest === VERSION) {
212
+ process.stdout.write(`already at the latest version; nothing to do\n`);
213
+ process.stdout.write(`(re-run with \`tono upgrade --no-restart\` to skip the daemon restart, or use the package manager directly to force-reinstall)\n`);
214
+ return;
215
+ }
216
+ // Resolution order for the package manager:
217
+ // 1. --pm flag (always wins; persisted as the new sticky choice)
218
+ // 2. ~/.tono/install.json packageManager (sticky after first upgrade)
219
+ // 3. realpath-based detection (works for properly-installed globals)
220
+ // 4. npm fallback
221
+ const record = readInstallRecord();
222
+ let pm;
223
+ let pmSource;
224
+ if (parsed.forcePm) {
225
+ pm = parsed.forcePm;
226
+ pmSource = "forced via --pm";
227
+ }
228
+ else if (record.packageManager) {
229
+ pm = record.packageManager;
230
+ pmSource = `from ${installRecordPath()}`;
231
+ }
232
+ else {
233
+ const det = detectInstaller();
234
+ if (!det.pm) {
235
+ console.error(`error: ${det.reason}`);
236
+ console.error(`run with --pm <pnpm|npm|yarn|bun> to force a choice`);
237
+ process.exit(1);
238
+ }
239
+ pm = det.pm;
240
+ pmSource = "auto-detected";
241
+ }
242
+ process.stdout.write(`installer: ${pm} (${pmSource})\n`);
243
+ if (!commandOnPath(pm)) {
244
+ console.error(`error: \`${pm}\` is not on PATH. Install ${pm} first, or pass --pm <other>.`);
245
+ process.exit(1);
246
+ }
247
+ const cmd = pmAddCmd(pm);
248
+ process.stdout.write(`running: ${cmd.join(" ")}\n`);
249
+ const r = exec(cmd[0], cmd.slice(1), { stdio: "inherit" });
250
+ if (r.code !== 0) {
251
+ console.error(`upgrade failed (${pm} exited ${r.code})`);
252
+ process.exit(r.code === -1 ? 1 : r.code);
253
+ }
254
+ // Persist the chosen pm so future `tono upgrade` runs use the same one
255
+ // without re-detecting (and without being fooled by PATH changes). Always
256
+ // overwrite — the most recent successful upgrade wins.
257
+ writeInstallRecord({
258
+ packageManager: pm,
259
+ lastSeenVersion: latest ?? VERSION,
260
+ recordedAt: record.recordedAt ?? new Date().toISOString(),
261
+ });
262
+ if (!parsed.restart) {
263
+ process.stdout.write(`upgrade complete. Skipping daemon restart (--no-restart). Restart manually:\n`);
264
+ process.stdout.write(` tono gateway restart\n`);
265
+ process.stdout.write(` tono worker restart\n`);
266
+ return;
267
+ }
268
+ // Restart whichever daemons are currently loaded. Either, both, or neither
269
+ // can apply on a given machine.
270
+ const gatewayLoaded = isLoaded(GATEWAY_LABEL);
271
+ const workerLoaded = isLoaded(WORKER_LABEL);
272
+ if (!gatewayLoaded && !workerLoaded) {
273
+ process.stdout.write(`upgrade complete. No tono daemon currently loaded; nothing to restart.\n`);
274
+ return;
275
+ }
276
+ if (gatewayLoaded) {
277
+ process.stdout.write(`restarting gateway…\n`);
278
+ const res = restartLaunchAgent(GATEWAY_LABEL, "gateway");
279
+ process.stdout.write(` ${res.output}\n`);
280
+ }
281
+ if (workerLoaded) {
282
+ process.stdout.write(`restarting worker…\n`);
283
+ const res = restartLaunchAgent(WORKER_LABEL, "worker");
284
+ process.stdout.write(` ${res.output}\n`);
285
+ }
286
+ process.stdout.write(`done.\n`);
287
+ }
288
+ //# sourceMappingURL=upgrade.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upgrade.js","sourceRoot":"","sources":["../../../src/cli/commands/upgrade.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC3F,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE5D,SAAS,WAAW;IAClB,OAAO,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,iBAAiB;IACxB,OAAO,IAAI,CAAC,WAAW,EAAE,EAAE,cAAc,CAAC,CAAC;AAC7C,CAAC;AAWD,SAAS,iBAAiB;IACxB,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,iBAAiB,EAAE,EAAE,MAAM,CAAC,CAAkB,CAAC;IAChF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAkB;IAC5C,IAAI,CAAC;QACH,SAAS,CAAC,WAAW,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9C,aAAa,CAAC,iBAAiB,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAC1E,CAAC;IAAC,MAAM,CAAC;QACP,wEAAwE;QACxE,qBAAqB;IACvB,CAAC;AACH,CAAC;AAED,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;;;CAmBZ,CAAC;AAWF,SAAS,SAAS,CAAC,IAAc;IAC/B,MAAM,GAAG,GAAS,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAC/D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;QACnB,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;YAAC,SAAS;QAAC,CAAC;QAChE,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;YAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC;YAAC,SAAS;QAAC,CAAC;QACpD,IAAI,CAAC,KAAK,cAAc,EAAE,CAAC;YAAC,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC;YAAC,SAAS;QAAC,CAAC;QAC5D,IAAI,CAAC,KAAK,MAAM,EAAE,CAAC;YACjB,MAAM,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACpB,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtD,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC;YACzD,CAAC;YACD,GAAG,CAAC,OAAO,GAAG,CAAO,CAAC;YACtB,SAAS;QACX,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,IAAI,CAAC,GAAW,EAAE,IAAc,EAAE,OAAuC,EAAE;IAClF,MAAM,CAAC,GAAG,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IAC3G,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;AAClF,CAAC;AAED,SAAS,aAAa,CAAC,GAAW;IAChC,MAAM,CAAC,GAAG,SAAS,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IACpF,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AAC9D,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,eAAe;IACtB,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACrD,IAAI,CAAS,CAAC;IACd,IAAI,CAAC;QACH,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,gCAAgC,IAAI,EAAE,EAAE,CAAC;IACtE,CAAC;IAED,4EAA4E;IAC5E,4EAA4E;IAC5E,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,GAAG,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,EAAE,CAAC;QAC3C,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,+FAA+F,EAAE,CAAC;IAC/H,CAAC;IAED,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,MAAM,KAAK,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;QAC9B,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,GAAG,QAAQ,GAAG,EAAE,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,GAAG,OAAO,GAAG,EAAE,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,GAAG,UAAU,GAAG,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC;YACjI,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,uBAAuB,CAAC,EAAE,EAAE,CAAC;QAC5D,CAAC;QACD,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,GAAG,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC;YACvC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,uBAAuB,CAAC,EAAE,EAAE,CAAC;QAC3D,CAAC;QACD,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,GAAG,QAAQ,GAAG,EAAE,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,GAAG,OAAO,GAAG,SAAS,GAAG,EAAE,CAAC,EAAE,CAAC;YAC1F,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,uBAAuB,CAAC,EAAE,EAAE,CAAC;QAC5D,CAAC;QACD,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,IAAI,KAAK,CAAC;YAAE,MAAM;QACtB,CAAC,GAAG,IAAI,CAAC;IACX,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,wCAAwC,EAAE,CAAC;AACzE,CAAC;AAED,SAAS,QAAQ,CAAC,EAAM;IACtB,QAAQ,EAAE,EAAE,CAAC;QACX,KAAK,MAAM;YACT,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;QAC9C,KAAK,MAAM;YACT,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;QAClD,KAAK,KAAK;YACR,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;QAC7C,KAAK,KAAK,CAAC;QACX;YACE,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;IACnD,CAAC;AACH,CAAC;AAED,KAAK,UAAU,WAAW;IACxB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,wCAAwC,EAAE;YAChE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;YACjC,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE;SACxC,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC;QACzB,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAyB,CAAC;QACrD,OAAO,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,SAAS;IAChB,6CAA6C;IAC7C,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACrD,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;AACrC,CAAC;AAED,SAAS,QAAQ,CAAC,KAAa;IAC7B,MAAM,CAAC,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IACxE,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;AACxB,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAa,EAAE,UAAkB;IAC3D,uEAAuE;IACvE,sEAAsE;IACtE,4EAA4E;IAC5E,qEAAqE;IACrE,sEAAsE;IACtE,MAAM,KAAK,GAAG,SAAS,EAAE,CAAC;IAC1B,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,uBAAuB,KAAK,EAAE,EAAE,CAAC;IAC/D,CAAC;IACD,MAAM,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE;QACpE,QAAQ,EAAE,MAAM;KACjB,CAAC,CAAC;IACH,KAAK,KAAK,CAAC;IACX,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC;QAClB,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,GAAG,UAAU,UAAU;KAChF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAc;IAC7C,IAAI,MAAY,CAAC;IACjB,IAAI,CAAC;QACH,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAE,GAAa,CAAC,OAAO,CAAC,CAAC;QACtC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,OAAO;IACT,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,OAAO,cAAc,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,MAAM,WAAW,EAAE,CAAC;IACnC,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,MAAM,oBAAoB,CAAC,CAAC;IAC3D,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC;IACnF,CAAC;IAED,IAAI,MAAM,CAAC,KAAK;QAAE,OAAO;IAEzB,IAAI,MAAM,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;QACjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACvE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kIAAkI,CAAC,CAAC;QACzJ,OAAO;IACT,CAAC;IAED,4CAA4C;IAC5C,mEAAmE;IACnE,wEAAwE;IACxE,uEAAuE;IACvE,oBAAoB;IACpB,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAC;IACnC,IAAI,EAAM,CAAC;IACX,IAAI,QAAgB,CAAC;IACrB,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC;QACpB,QAAQ,GAAG,iBAAiB,CAAC;IAC/B,CAAC;SAAM,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;QACjC,EAAE,GAAG,MAAM,CAAC,cAAc,CAAC;QAC3B,QAAQ,GAAG,QAAQ,iBAAiB,EAAE,EAAE,CAAC;IAC3C,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,GAAG,eAAe,EAAE,CAAC;QAC9B,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;YACtC,OAAO,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;YACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC;QACZ,QAAQ,GAAG,eAAe,CAAC;IAC7B,CAAC;IACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,QAAQ,KAAK,CAAC,CAAC;IAEzD,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,8BAA8B,EAAE,+BAA+B,CAAC,CAAC;QAC7F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACzB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpD,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAE,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAC5D,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACjB,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;QACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED,uEAAuE;IACvE,0EAA0E;IAC1E,uDAAuD;IACvD,kBAAkB,CAAC;QACjB,cAAc,EAAE,EAAE;QAClB,eAAe,EAAE,MAAM,IAAI,OAAO;QAClC,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KAC1D,CAAC,CAAC;IAEH,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,+EAA+E,CAAC,CAAC;QACtG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;QACjD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAChD,OAAO;IACT,CAAC;IAED,2EAA2E;IAC3E,gCAAgC;IAChC,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,CAAC;IAC9C,MAAM,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC5C,IAAI,CAAC,aAAa,IAAI,CAAC,YAAY,EAAE,CAAC;QACpC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,0EAA0E,CAAC,CAAC;QACjG,OAAO;IACT,CAAC;IAED,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC9C,MAAM,GAAG,GAAG,kBAAkB,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;QACzD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;IAC5C,CAAC;IACD,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC7C,MAAM,GAAG,GAAG,kBAAkB,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QACvD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC"}
@@ -370,7 +370,7 @@ function uninstall() {
370
370
  unlinkSync(plistFile);
371
371
  console.log(`removed ${plistFile}`);
372
372
  }
373
- function status() {
373
+ async function status() {
374
374
  const plistFile = plistPath(WORKER_LABEL);
375
375
  console.log(`plist: ${existsSync(plistFile) ? plistFile : "(not installed)"}`);
376
376
  const state = existsSync(workerStatePath()) ? loadOrCreateState() : null;
@@ -390,6 +390,48 @@ function status() {
390
390
  else {
391
391
  console.log(`launchctl: not loaded`);
392
392
  }
393
+ // Connection probe: ask the gateway whether THIS worker (by id) shows up
394
+ // as connected. This is the bit that tells you "the WS handshake worked"
395
+ // — launchctl loaded just means the process is alive.
396
+ if (!state?.gatewayUrl || !state?.workerId) {
397
+ console.log(`gateway: (no probe — gateway URL not configured)`);
398
+ return;
399
+ }
400
+ const httpUrl = wsUrlToHttp(state.gatewayUrl).replace(/\/api\/workers\/connect$/, "/api/workers");
401
+ try {
402
+ const res = await fetch(httpUrl, { signal: AbortSignal.timeout(3000) });
403
+ if (!res.ok) {
404
+ console.log(`gateway: reachable but /api/workers returned ${res.status}`);
405
+ return;
406
+ }
407
+ const body = (await res.json());
408
+ const me = body.workers.find((w) => w.id === state.workerId);
409
+ if (!me) {
410
+ console.log(`gateway: reachable; this worker has never registered (run 'tono worker run' or 'start' first)`);
411
+ return;
412
+ }
413
+ if (me.connected) {
414
+ const ago = ageMs(me.lastSeenAt);
415
+ const v = me.tonoVersion ? ` v${me.tonoVersion}` : "";
416
+ console.log(`gateway: CONNECTED${v} — last heartbeat ${ago}ms ago`);
417
+ }
418
+ else {
419
+ console.log(`gateway: reachable; this worker is currently OFFLINE (last seen ${me.lastSeenAt})`);
420
+ }
421
+ }
422
+ catch (err) {
423
+ console.log(`gateway: unreachable (${err.message})`);
424
+ }
425
+ }
426
+ function wsUrlToHttp(ws) {
427
+ if (ws.startsWith("wss://"))
428
+ return "https://" + ws.slice(6);
429
+ if (ws.startsWith("ws://"))
430
+ return "http://" + ws.slice(5);
431
+ return ws;
432
+ }
433
+ function ageMs(iso) {
434
+ return Math.max(0, Date.now() - Date.parse(iso));
393
435
  }
394
436
  function logs(args) {
395
437
  const which = args[0] ?? "out";
@@ -440,7 +482,7 @@ export async function runWorker(argv) {
440
482
  restart(parsed);
441
483
  return;
442
484
  case "status":
443
- status();
485
+ await status();
444
486
  return;
445
487
  case "uninstall":
446
488
  uninstall();