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 +38 -17
- package/dist/cli/commands/gateway.js +16 -4
- package/dist/cli/commands/gateway.js.map +1 -1
- package/dist/cli/commands/start.js +3 -7
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/commands/upgrade.js +288 -0
- package/dist/cli/commands/upgrade.js.map +1 -0
- package/dist/cli/commands/worker.js +44 -2
- package/dist/cli/commands/worker.js.map +1 -1
- package/dist/cli/index.js +5 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/server/app.js +129 -65
- package/dist/server/app.js.map +1 -1
- package/dist/server/db/client.js +23 -1
- package/dist/server/db/client.js.map +1 -1
- package/dist/server/github/gh.js +72 -0
- package/dist/server/github/gh.js.map +1 -1
- package/dist/server/worker/agent.js +45 -0
- package/dist/server/worker/agent.js.map +1 -1
- package/dist/server/workers/registry.js +9 -1
- package/dist/server/workers/registry.js.map +1 -1
- package/dist/server/ws/pty.js +11 -6
- package/dist/server/ws/pty.js.map +1 -1
- package/dist/server/ws/workers.js +35 -0
- package/dist/server/ws/workers.js.map +1 -1
- package/dist/shared/worker-protocol.js.map +1 -1
- package/dist/web/assets/index-0idS-FGA.js +129 -0
- package/dist/web/assets/index-BZZmYvK2.css +1 -0
- package/dist/web/index.html +2 -2
- package/package.json +1 -1
- package/dist/web/assets/index-CZHd5NaX.css +0 -1
- package/dist/web/assets/index-DPB0x7SX.js +0 -129
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** — `
|
|
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
|
|
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
|
|
89
|
-
which tono
|
|
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
|
-
|
|
96
|
-
|
|
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
|
|
103
|
-
|
|
104
|
-
rm -rf ~/.tono
|
|
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
|
|
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
|
-
|
|
176
|
-
|
|
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 {
|
|
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":"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"}
|
|
@@ -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
|
-
//
|
|
150
|
-
//
|
|
151
|
-
//
|
|
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":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,
|
|
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":"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"}
|
|
@@ -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();
|