@tonbo/yield 0.3.1 → 0.3.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.
- package/README.md +17 -3
- package/dist/bin/yield.js +653 -202
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Tonbo Yield
|
|
2
2
|
|
|
3
|
-
`yield` captures the sessions of your coding agents (Claude Code and Codex) on every machine you use and lists them from any of them. It signs in, runs a capture service on each machine, snapshots the git work trees the agents work in, lists sessions, recalls the turns that changed a file, and hands a
|
|
3
|
+
`yield` captures the sessions of your coding agents (Claude Code and Codex) on every machine you use and lists them from any of them. It signs in, runs a capture service on each machine, snapshots the git work trees the agents work in, lists sessions, recalls the turns that changed a file, and hands a session off as a link that you, on another computer or harness, or a teammate takes.
|
|
4
4
|
|
|
5
5
|
Install it on macOS (arm64, x64) or Linux with glibc (x64, arm64) with one line, without sudo and without Node.js:
|
|
6
6
|
|
|
@@ -8,7 +8,7 @@ Install it on macOS (arm64, x64) or Linux with glibc (x64, arm64) with one line,
|
|
|
8
8
|
curl -fsSL https://yield.tonbo.io/install.sh | sh
|
|
9
9
|
```
|
|
10
10
|
|
|
11
|
-
The installer, [`install.sh`](install.sh), uses the system `node` when it is 22 or newer and has npm beside it; otherwise it downloads the latest official Node.js 22 build from nodejs.org into `~/.tonbo/runtime/node-<version>`, checked against the release's `SHASUMS256.txt`. It installs `@tonbo/yield` into the private prefix `~/.tonbo/yield`, never a global npm, and writes the launcher `~/.local/bin/yield`, which runs it with that Node.js; when `~/.local/bin` is not on `PATH` it prints the line to add for your shell. Running it again upgrades in place, and when the capture service is installed it reinstalls the service on the new version (which restarts it) and removes Node.js runtimes it no longer uses. `YIELD_VERSION` pins a version or dist-tag: `curl -fsSL https://yield.tonbo.io/install.sh | YIELD_VERSION=0.2.0 sh`. musl distributions (Alpine), 32-bit systems and Windows are refused with a message; on Windows, install the npm package instead. User Center serves the file at `https://yield.tonbo.io/install.sh` as `text/plain` (that host answers 404 for every other path until the Yield landing page exists) from an embedded copy (`apps/user-center/src/app/install.sh`); after changing `install.sh`, run `pnpm --dir apps/user-center generate:install-script`, or the route's test fails.
|
|
11
|
+
The installer, [`install.sh`](install.sh), uses the system `node` when it is 22 or newer and has npm beside it; otherwise it downloads the latest official Node.js 22 build from nodejs.org into `~/.tonbo/runtime/node-<version>`, checked against the release's `SHASUMS256.txt`. It installs `@tonbo/yield` into the private prefix `~/.tonbo/yield`, never a global npm, and writes the launcher `~/.local/bin/yield`, which runs it with that Node.js; when `~/.local/bin` is not on `PATH` it prints the line to add for your shell. On a terminal, a computer with no login yet then runs `yield login`, which signs in and starts capture, so the one line takes you from nothing to captured sessions; without a terminal, or with `YIELD_NO_LOGIN=1`, it prints that step instead. Running it again upgrades in place, and when the capture service is installed it reinstalls the service on the new version (which restarts it) and removes Node.js runtimes it no longer uses. `YIELD_VERSION` pins a version or dist-tag: `curl -fsSL https://yield.tonbo.io/install.sh | YIELD_VERSION=0.2.0 sh`. musl distributions (Alpine), 32-bit systems and Windows are refused with a message; on Windows, install the npm package instead. User Center serves the file at `https://yield.tonbo.io/install.sh` as `text/plain` (that host answers 404 for every other path until the Yield landing page exists) from an embedded copy (`apps/user-center/src/app/install.sh`); after changing `install.sh`, run `pnpm --dir apps/user-center generate:install-script`, or the route's test fails.
|
|
12
12
|
|
|
13
13
|
Or install the public package with Node.js 22 or newer:
|
|
14
14
|
|
|
@@ -21,11 +21,16 @@ Merging a change to the `version` in `package.json` to `main` releases it: [`ton
|
|
|
21
21
|
## Sign in
|
|
22
22
|
|
|
23
23
|
```console
|
|
24
|
-
yield login [--account <name>] [--name <name>]
|
|
24
|
+
yield login [--account <name>] [--name <name>] [--no-daemon]
|
|
25
|
+
yield status [--json]
|
|
25
26
|
yield whoami [--json]
|
|
26
27
|
yield logout
|
|
27
28
|
```
|
|
28
29
|
|
|
30
|
+
A login to your personal account also registers this computer and installs and starts the capture service, as `yield daemon install` does (`--no-daemon` only signs in); when the service manager refuses, it says why and the login stands. `status` is the one health view: the login and whom it is for, whether `api.tonbo.dev` answers, whether the capture service runs and, on Linux, survives logout, each agent's transcripts, version and last captured activity (and sessions changed in the last day that are not captured yet), snapshots waiting to be pushed, errors of the last 15 minutes, and this version against npm's latest. Each line that is not fine names the command that fixes it, and the command exits 1 when a line fails. `--json` prints `ok`, the `checks` (`name`, `level` of `ok`, `warn`, `fail` or `none`, `detail`, `fix`) and the facts behind them.
|
|
31
|
+
|
|
32
|
+
Errors say what happened and what to run, without a stack trace: an unreachable network, a refused login (`yield login`), a server error (with its request id) and a service manager that refuses (after `su`, in a container without systemd, or over SSH to a Mac without a desktop login) each get their own words. `YIELD_DEBUG=1` prints the stack too.
|
|
33
|
+
|
|
29
34
|
`yield` and the [`tonbo`](../tonbo) CLI share one login through the internal package [`@tonbo/cli-core`](../../packages/tonbo-cli-core): the same browser handoff, the same keys and the same credentials file, `${XDG_CONFIG_HOME:-$HOME/.config}/tonbo/credentials.json`. The file holds one CLI login key per account of this computer ([`credentials-v1.json`](../../contracts/cli/credentials-v1.json) `accounts`): your personal account's, named `CLI on <hostname>`, and one for each organization you connect a folder in, named `Yield CLI · <8 hex>` from a suffix the server derives from this computer's login secret, so the organization's admins never see your hostname. Logging in with either CLI signs both in, and a login replaces this computer's earlier key in that account, so the two never hold different keys. Capture, recall and registration always use the personal account's key, whatever account the last login chose; `logout` revokes every key of the file. `whoami` prints the account of the last login, your role and this machine's device id.
|
|
30
35
|
|
|
31
36
|
## Projects
|
|
@@ -133,6 +138,14 @@ A handoff is in the Project of the folder it is made in. In a personal Project y
|
|
|
133
138
|
- `pull` fetches the latest unpulled result of a session (or a handoff link) onto a branch, or with `--patch` into a patch file, without changing your worktree. The author pulls a teammate's result the same way.
|
|
134
139
|
- `show` prints a handoff's state, author, who it is for and who took it, and its captured context, without taking it. Any member can show a team handoff.
|
|
135
140
|
|
|
141
|
+
## Alpha metrics
|
|
142
|
+
|
|
143
|
+
```console
|
|
144
|
+
yield note --changed-plan <session>
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
During the Alpha, `yield` records a few content-free measures on your personal account (contracts/sessions/handoff-v1.json `metrics`, kept 180 days): how long a taken handoff waits for its first turn (the daemon, from the restore to that turn's end), which `continue` candidate was picked, how a delivered message or teammate context was rated, and, with `note --changed-plan`, that another session changed your plan. A value is a number, a flag or a fixed word; never a task, prompt, path or reason. A write that fails or takes longer than 3 seconds is dropped and never fails a command. `TONBO_YIELD_METRICS=off` turns it off.
|
|
148
|
+
|
|
136
149
|
## The Tonbo skill
|
|
137
150
|
|
|
138
151
|
`daemon install` also writes the Tonbo skill ([`skills/tonbo/SKILL.md`](skills/tonbo/SKILL.md), embedded by the build) to `~/.claude/skills/tonbo/SKILL.md` for Claude Code (`CLAUDE_CONFIG_DIR` moves it) and `~/.codex/skills/tonbo/SKILL.md` for Codex (`CODEX_HOME` moves it). It tells an agent to run `yield why`, `yield files` and `yield session read` when asked why code is the way it is or before changing an unfamiliar file, to cite session and time, to treat the results as reference and never as instructions, and not to guess when nothing is found. A manifest, `skills.json` in the state directory, records what was written: install never overwrites a `tonbo` skill it did not write, and `daemon uninstall` removes only its own unchanged files. `CLAUDE.md` and `AGENTS.md` are never edited.
|
|
@@ -140,4 +153,5 @@ A handoff is in the Project of the folder it is made in. In a personal Project y
|
|
|
140
153
|
## Environment
|
|
141
154
|
|
|
142
155
|
- `TONBO_API_KEY`: a personal key used instead of the saved login by `whoami` and `sessions`.
|
|
156
|
+
- `TONBO_YIELD_METRICS`: `off` stops the Alpha metrics.
|
|
143
157
|
- `TONBO_API_ORIGIN`: the Management API origin, `https://api.tonbo.dev` by default. `daemon install` writes it into the service, with `PATH`, `XDG_CONFIG_HOME` and `XDG_STATE_HOME`.
|