starbridge 0.1.4-rc.3 → 0.1.5-rc.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 +67 -50
- package/dist/starbridge.js +3141 -2915
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# starbridge CLI
|
|
2
2
|
|
|
3
|
-
`starbridge` connects a machine that runs
|
|
3
|
+
`starbridge` connects a machine that runs your harnesses to your phone and browsers. Agents use it to ask
|
|
4
4
|
you questions and report runs, and it uploads what each AI plan has left, read from CodexBar. It
|
|
5
5
|
signs everything with this machine's key and encrypts it for your devices, so the server sees
|
|
6
6
|
ciphertext only. CodexBar is optional: setup asks before installing it, `--no-quota` skips it,
|
|
@@ -44,30 +44,31 @@ starbridge setup
|
|
|
44
44
|
|
|
45
45
|
### What setup does
|
|
46
46
|
|
|
47
|
-
Setup asks only before installing CodexBar, which providers to send, whether the
|
|
48
|
-
after you log out, whether to add the CLI to your PATH, and whether to send a test
|
|
47
|
+
Setup asks only before installing CodexBar, which providers to send, whether the background
|
|
48
|
+
service runs after you log out, whether to add the CLI to your PATH, and whether to send a test
|
|
49
49
|
question; steps 1 and 3 say when it asks more. A rerun repairs only what is missing:
|
|
50
50
|
|
|
51
51
|
1. It pairs the machine with your account (see [Pair](#pair)), with the first server named by
|
|
52
52
|
`--server`, `STARBRIDGE_SERVER`, the install script (each server's own names that server),
|
|
53
53
|
or the machine's pairing, else https://starbridge.run. It asks only when the machine is
|
|
54
54
|
already paired with another server, and Enter keeps that one.
|
|
55
|
-
2. It installs Starbridge in each
|
|
55
|
+
2. It installs Starbridge in each harness it finds and prints one line per harness: the Claude Code
|
|
56
56
|
plugin at user scope, the skill and sandbox rule in Codex's folders, the Starbridge Pi
|
|
57
|
-
package, the skill and plugin in opencode's config folder,
|
|
58
|
-
|
|
57
|
+
package, the skill and plugin in opencode's config folder, the skill and hooks in Cursor's
|
|
58
|
+
folder, and the Starbridge plugin in Antigravity's
|
|
59
|
+
([What setup installs](../docs/tell-your-agents.md#what-setup-installs)). A failed install prints its
|
|
59
60
|
reason and the command that retries it, and setup goes on. A later setup updates the Codex,
|
|
60
|
-
opencode and
|
|
61
|
-
2.1.287 or later; setup says when it is older. Claude Code, Codex, Pi
|
|
62
|
-
`starbridge ask`, `waiting`, `working`, `wait` and `settle` without a permission prompt;
|
|
61
|
+
opencode, Cursor and Antigravity files when the CLI carries newer ones. The Claude Code plugin needs Claude Code
|
|
62
|
+
2.1.287 or later; setup says when it is older. In Claude Code, Codex, Pi, `cursor-agent` and
|
|
63
|
+
`agy`, `starbridge ask`, `waiting`, `working`, `wait` and `settle` then run without a permission prompt;
|
|
63
64
|
`starbridge run` still asks, since the command it wraps can be anything. For Pi, setup adds
|
|
64
65
|
these rules only when pi-permission-system is installed.
|
|
65
66
|
3. When another machine of your account sent quotas in the last day, it says which and asks
|
|
66
67
|
whether to send them from this one too; Enter says no. Otherwise it finds CodexBar, or asks
|
|
67
68
|
to install it (Linux and macOS; CodexBar has no Windows build, so a Windows machine uploads
|
|
68
|
-
no quotas): with Homebrew if you have it, else CodexBar
|
|
69
|
-
GitHub, checked against the
|
|
70
|
-
It installs nothing when the checksum
|
|
69
|
+
no quotas): with Homebrew if you have it, else the CodexBar release this Starbridge release
|
|
70
|
+
pins, from GitHub, checked against the SHA-256 the pin names, into `~/.local/opt/codexbar`.
|
|
71
|
+
It installs nothing when the checksum does not match. Then it asks which
|
|
71
72
|
providers' quotas to upload.
|
|
72
73
|
4. It installs and starts the background service, `starbridge agent`, as a systemd user unit, a
|
|
73
74
|
launchd agent, or on Windows a Scheduled Task that starts at logon without administrator
|
|
@@ -81,31 +82,45 @@ remove the setup.
|
|
|
81
82
|
|
|
82
83
|
`--yes`, or running with no terminal, takes every default and sends no test question.
|
|
83
84
|
`--no-quota` skips step 3, CodexBar included; `--no-service` skips step 4; `--no-agents` skips
|
|
84
|
-
step 2. `starbridge status` prints the same checks, and names
|
|
85
|
+
step 2. `starbridge status` prints the same checks, and names a harness installed since setup,
|
|
85
86
|
which `starbridge setup --refresh` then sets up.
|
|
86
87
|
|
|
87
|
-
`starbridge uninstall --agent <name>` (`claude`, `codex`, `pi`, `opencode
|
|
88
|
-
from one
|
|
88
|
+
`starbridge uninstall --agent <name>` (`claude`, `codex`, `pi`, `opencode`, `cursor` or
|
|
89
|
+
`antigravity`) removes Starbridge from one harness. Setup and `--refresh` then leave that harness alone, until `starbridge setup
|
|
89
90
|
--agent <name>` installs it there again.
|
|
90
91
|
|
|
91
92
|
### Update and uninstall
|
|
92
93
|
|
|
94
|
+
Nothing updates the CLI by itself. Once a day the agent reads the latest release from GitHub,
|
|
95
|
+
and when it is newer, `setup`, `pair`, `config` and `--version` end with one line on stderr:
|
|
96
|
+
`Starbridge 0.2.0 is out (you have 0.1.4): run starbridge update`, or the Homebrew or npm
|
|
97
|
+
command for those installs. `starbridge status` shows both versions, and your devices show
|
|
98
|
+
"Update available" under the machine. `starbridge config update-check off` stops the check
|
|
99
|
+
and the line; `STARBRIDGE_NO_UPDATE_CHECK=1` silences the line.
|
|
100
|
+
|
|
101
|
+
The agents' integrations follow the CLI: `update` runs `setup --refresh`, which brings each
|
|
102
|
+
agent's files to the new version, and the Claude Code plugins update themselves from the
|
|
103
|
+
Starbridge marketplace.
|
|
104
|
+
|
|
93
105
|
`starbridge update` installs the latest release over a script install, then runs `starbridge
|
|
94
106
|
setup --refresh` with it and updates the Claude Code plugins. `--refresh` rewrites the files
|
|
95
|
-
setup put into other tools (the
|
|
96
|
-
plugin, the Cursor files) for the new version and restarts the
|
|
107
|
+
setup put into other tools (the background service's unit, the Codex skill and rule, opencode's
|
|
108
|
+
skill and plugin, the Cursor files, the Antigravity plugin) for the new version and restarts the
|
|
109
|
+
background service. Homebrew and npm installs update through
|
|
97
110
|
their own manager; then run `starbridge setup --refresh`. Each of those files starts with a
|
|
98
111
|
`Written by starbridge <version>` line: setup replaces and uninstall removes only files that have
|
|
99
112
|
it, so remove the line from one to keep it as yours.
|
|
100
113
|
|
|
101
|
-
`starbridge update` then moves a CodexBar that setup installed in `~/.local/opt/codexbar` to
|
|
102
|
-
|
|
103
|
-
app is left to them (`brew upgrade codexbar`). When a
|
|
104
|
-
a quota error on your devices; `starbridge update
|
|
105
|
-
|
|
114
|
+
`starbridge update` then moves a CodexBar that setup installed in `~/.local/opt/codexbar` to the
|
|
115
|
+
release the new Starbridge release pins, with the same checksum check, and keeps one that is
|
|
116
|
+
newer; a CodexBar from Homebrew or the macOS app is left to them (`brew upgrade codexbar`). When a
|
|
117
|
+
CodexBar release breaks, its providers show a quota error on your devices; `starbridge update
|
|
118
|
+
--codexbar 0.71.1` installs that release instead, checked only against the `.sha256` published
|
|
119
|
+
beside it, until a later `starbridge update` moves an older one back to the pinned release.
|
|
106
120
|
|
|
107
|
-
`starbridge uninstall` removes the
|
|
108
|
-
and asks your devices to revoke the machine. It deletes the keys only when you say so, or with
|
|
121
|
+
`starbridge uninstall` removes the background service, Starbridge from every harness and the binary,
|
|
122
|
+
and asks your devices to revoke the machine. It deletes the keys only when you say so, or with
|
|
123
|
+
`--purge`; `--yes` takes every default without asking.
|
|
109
124
|
|
|
110
125
|
### Check a download
|
|
111
126
|
|
|
@@ -129,7 +144,7 @@ sha256sum -c --ignore-missing SHA256SUMS
|
|
|
129
144
|
|
|
130
145
|
## Use
|
|
131
146
|
|
|
132
|
-
Setup covers pairing and the
|
|
147
|
+
Setup covers pairing and the background service. Agents run the other commands themselves; the Starbridge
|
|
133
148
|
skill tells them when. `starbridge --help` lists every flag.
|
|
134
149
|
|
|
135
150
|
### Pair
|
|
@@ -138,13 +153,13 @@ skill tells them when. `starbridge --help` lists every flag.
|
|
|
138
153
|
starbridge pair
|
|
139
154
|
```
|
|
140
155
|
|
|
141
|
-
It prints a code, a link and a QR code. Scan the QR code with the Starbridge Android app
|
|
142
|
-
|
|
156
|
+
It prints a code, a link and a QR code. Scan the QR code with the Starbridge Android app, open
|
|
157
|
+
the link on your phone or in a browser where you are signed in, or type the code in
|
|
143
158
|
Settings → Devices → Add a device, on your phone or in the web app, which works from a machine
|
|
144
159
|
with no browser. The code expires in 10 minutes.
|
|
145
160
|
|
|
146
|
-
The QR code is
|
|
147
|
-
|
|
161
|
+
The QR code is text that only the Android app's scanner reads, and it carries a check key with
|
|
162
|
+
which the app confirms the machine's check code by itself. Approved any other way, the machine prints its check
|
|
148
163
|
code and asks whether the Android app shows the same beside it under Devices: press Enter if so, `n` if not.
|
|
149
164
|
Where setup runs with no terminal, run `starbridge pair --confirm`, or `starbridge pair --reject`
|
|
150
165
|
if the codes differ. A code that differs means a server read your pairing code and paired the
|
|
@@ -166,11 +181,13 @@ starbridge ask --question "Merge #12 now?" \
|
|
|
166
181
|
|
|
167
182
|
`ask` prints the question's id and how the answer will come back:
|
|
168
183
|
|
|
169
|
-
- In
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
184
|
+
- In an interactive session of a harness setup installed in, your answer comes back as the
|
|
185
|
+
session's next prompt.
|
|
186
|
+
- In a headless run, the Cursor IDE or any other harness, the agent waits with
|
|
187
|
+
`starbridge wait <id> --timeout 5m`, which exits with code 2 when the time runs out.
|
|
188
|
+
|
|
189
|
+
[What each harness supports](../docs/tell-your-agents.md#what-each-harness-supports) says which
|
|
190
|
+
runs are headless.
|
|
174
191
|
|
|
175
192
|
To check the path to your devices yourself, ask and wait in one command:
|
|
176
193
|
|
|
@@ -251,28 +268,29 @@ or X11 with `xprintidle`; a machine with no screen sends nothing.
|
|
|
251
268
|
|
|
252
269
|
### Permission prompts
|
|
253
270
|
|
|
254
|
-
Permission prompts
|
|
255
|
-
with:
|
|
271
|
+
Permission prompts stay at the keyboard until you run:
|
|
256
272
|
|
|
257
273
|
```bash
|
|
258
274
|
starbridge config permissions on
|
|
259
275
|
```
|
|
260
276
|
|
|
261
|
-
|
|
262
|
-
the keyboard, and the first answer wins.
|
|
277
|
+
Your devices can then allow a call once or deny it. In Claude Code, opencode and Antigravity, each
|
|
278
|
+
prompt shows at the keyboard and on your devices at once, and the first answer wins. Codex and Pi
|
|
279
|
+
send it to one place at a time, and Cursor's stay at the keyboard;
|
|
280
|
+
[What each harness supports](../docs/tell-your-agents.md#what-each-harness-supports) has each.
|
|
281
|
+
|
|
282
|
+
Only prompts Claude Code still shows reach your devices:
|
|
263
283
|
in auto mode, its default, it settles most calls itself. When the keyboard answers first, the
|
|
264
284
|
device's card closes once the tool has run, since Claude Code reports the call only then.
|
|
265
285
|
|
|
266
|
-
opencode
|
|
267
|
-
every prompt at once, so none reaches your devices.
|
|
286
|
+
`opencode run` rejects every prompt itself, so none reaches your devices.
|
|
268
287
|
|
|
269
288
|
Pi's prompts come from pi-permission-system (`pi install npm:@gotgenes/pi-permission-system`).
|
|
270
289
|
With the Starbridge Pi package installed, the same command offers to add `starbridge` to its
|
|
271
290
|
`authorizerChain`, which it needs as well. It also offers allow rules, so that Pi reads the
|
|
272
291
|
Starbridge skill without a prompt; the link runs the commands above without one when they stand
|
|
273
|
-
alone, never chained to another command.
|
|
274
|
-
|
|
275
|
-
`path` and `external_directory` rules stay at the keyboard, since it lets no link allow those.
|
|
292
|
+
alone, never chained to another command. "Answer here" in Pi brings the prompt back to the
|
|
293
|
+
keyboard. Prompts from its `path` and `external_directory` rules stay at the keyboard.
|
|
276
294
|
|
|
277
295
|
If you use the Claude app, turn off its "Code updates" notifications, which fire at the end of
|
|
278
296
|
every turn. Keep "Code permission requests" on, unless you turned on Starbridge's permission
|
|
@@ -283,8 +301,8 @@ prompts, so that one prompt doesn't notify you twice.
|
|
|
283
301
|
`starbridge agent` runs once per machine, as a user service. It holds the keys and the server
|
|
284
302
|
connection, uploads quota snapshots and hands each session its answers. The other commands go
|
|
285
303
|
through it when it runs, and to the server directly when it doesn't or when
|
|
286
|
-
`STARBRIDGE_NO_AGENT=1` is set. Its flags (`--provider`, `--interval
|
|
287
|
-
the config directory.
|
|
304
|
+
`STARBRIDGE_NO_AGENT=1` is set. Its flags (`--provider`, `--interval`, `--codexbar`, `--no-quota`, `--log`)
|
|
305
|
+
override `agent.json` in the config directory.
|
|
288
306
|
|
|
289
307
|
### Config
|
|
290
308
|
|
|
@@ -293,12 +311,11 @@ Keys and state live in `~/.config/starbridge` (or `$XDG_CONFIG_HOME/starbridge`,
|
|
|
293
311
|
settings.
|
|
294
312
|
|
|
295
313
|
The Claude Code plugin's hooks call `starbridge hook …`. When Claude Code opens its
|
|
296
|
-
`AskUserQuestion` picker, `starbridge hook permission` posts the question to your
|
|
297
|
-
|
|
298
|
-
|
|
314
|
+
`AskUserQuestion` question picker, `starbridge hook permission` posts the question to your
|
|
315
|
+
devices. Each question shows at the keyboard and on your devices at once, and the first answer
|
|
316
|
+
wins. If the machine is not paired or the server can't be reached, only the picker asks. The
|
|
299
317
|
opencode plugin runs `starbridge hook question --agent opencode` on each call of opencode's
|
|
300
|
-
|
|
301
|
-
or nothing if the terminal answers first or the server can't be reached.
|
|
318
|
+
question picker, `question`, the same way.
|
|
302
319
|
|
|
303
320
|
## What agents parse
|
|
304
321
|
|