@botiverse/oar-cli 0.13.1 → 0.13.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 +46 -41
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -13,45 +13,48 @@ oar run claude "What does this repo do?"
|
|
|
13
13
|
|
|
14
14
|
## Commands
|
|
15
15
|
|
|
16
|
+
Commands that take an optional `[runtime]` cover every registered runtime when
|
|
17
|
+
it is omitted.
|
|
18
|
+
|
|
16
19
|
- `oar list`: registered runtimes and their capabilities.
|
|
17
20
|
- `oar installation [runtime]` (alias `detect`): probe local installation
|
|
18
21
|
and version, no account or usage I/O.
|
|
19
22
|
- `oar usage [runtime]`: account usage for each available installation.
|
|
20
23
|
- `oar models [runtime]`: models each available installation can run right
|
|
21
|
-
now (login state, plan, and configured providers included)
|
|
22
|
-
the `
|
|
23
|
-
|
|
24
|
+
now (login state, plan, and configured providers included). The first
|
|
25
|
+
column after the runtime is the `id` to pass to `oar run --model`; `--json`
|
|
26
|
+
prints the `ListModelsResult` per runtime, `--timeout <ms>` bounds each
|
|
27
|
+
query.
|
|
24
28
|
- `oar run <runtime> <prompt>`: run one turn in a fresh (or `--resume`d)
|
|
25
|
-
session and show its progress; the
|
|
26
|
-
completed.
|
|
29
|
+
session and show its progress; [below](#oar-run-the-run-and-verify-entrypoint).
|
|
27
30
|
- `oar upgrade [runtime]`: upgrade each available installation with the
|
|
28
31
|
runtime's own updater, one at a time; `--check` only reports the version
|
|
29
|
-
the updater would install, `--json` prints the reports
|
|
30
|
-
when an upgrade failed or left the
|
|
31
|
-
[runtime updates](
|
|
32
|
+
the updater would install, `--json` prints the reports, `--timeout <ms>`
|
|
33
|
+
bounds each runtime. The exit code is 1 when an upgrade failed or left the
|
|
34
|
+
version unchanged, or when a runtime could not be probed. See [runtime updates](https://github.com/botiverse/oar/blob/main/docs/spec/update.md).
|
|
32
35
|
- `oar mcp`: serve subagents over MCP on stdio, so an agent (claude, codex,
|
|
33
36
|
any MCP client) can delegate tasks to other runtimes: `run` waits for a
|
|
34
|
-
subagent's turn, `spawn` / `send` / `wait` work in parallel
|
|
37
|
+
subagent's turn, `spawn` / `send` / `wait` work in parallel, and
|
|
38
|
+
`runtimes`, `list`, `interrupt` and `close` complete the tool set. Flags
|
|
35
39
|
`--runtimes`, `--max-running`, `--max-depth`, `--cwd`, `--log-dir`.
|
|
36
40
|
Subagents run with full permissions. A codex agent starts MCP servers with
|
|
37
41
|
a reduced environment, so give its `oar` entry
|
|
38
42
|
`env_vars = ["OAR_SUBAGENT_DEPTH"]` for the nesting limit to hold. See
|
|
39
|
-
[subagents](
|
|
43
|
+
[subagents](https://github.com/botiverse/oar/blob/main/docs/spec/subagents.md).
|
|
40
44
|
- `oar skills|mcps|tools [runtime]`: native inventories, see
|
|
41
45
|
[below](#native-inventories).
|
|
42
46
|
|
|
43
47
|
## `oar run`: the run-and-verify entrypoint
|
|
44
48
|
|
|
45
|
-
By default `run` prints
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
`[
|
|
53
|
-
|
|
54
|
-
app requests print nothing):
|
|
49
|
+
By default `run` prints one opening line naming the session (the id
|
|
50
|
+
`--resume` takes; `[resumed <id> …]` on a resumed run) and the model and
|
|
51
|
+
effort the runtime reported while opening, when it did (the `model()` /
|
|
52
|
+
`effort()` folds, never the flags echoed). Then it prints readable progress
|
|
53
|
+
from the session's `events()`: assistant text verbatim (coalesced into blocks
|
|
54
|
+
via `coalesceText`), and everything else as a bracketed meta line
|
|
55
|
+
(`[compacting: threshold]`, `[compacted]` or `[compaction failed] reason`,
|
|
56
|
+
`[retry 2/3] reason`, `[waiting for app: type]`; tool progress deltas and
|
|
57
|
+
oar's own answers to app requests print nothing):
|
|
55
58
|
|
|
56
59
|
```
|
|
57
60
|
[session 01a0e982-… · model gpt-6-luna · effort low]
|
|
@@ -62,6 +65,9 @@ The repo is a pnpm workspace...
|
|
|
62
65
|
[turn completed]
|
|
63
66
|
```
|
|
64
67
|
|
|
68
|
+
The exit code is 0 only when the turn completed. The first Ctrl-C interrupts
|
|
69
|
+
the turn and exits 130; a second one disposes the session at once.
|
|
70
|
+
|
|
65
71
|
Flags:
|
|
66
72
|
|
|
67
73
|
- `--model <model>`: runtime-native model identifier.
|
|
@@ -80,40 +86,40 @@ Flags:
|
|
|
80
86
|
of progress (frames with their verbatim `native` payload and oar's
|
|
81
87
|
`events`, plus the request/response records of the run), and a final
|
|
82
88
|
`{"outcome": ...}` line.
|
|
83
|
-
- `--record <file>`:
|
|
84
|
-
|
|
89
|
+
- `--record <file>`: also write the run as an `oar-voyage/3` JSONL log (in
|
|
90
|
+
both output modes; the log always carries every record).
|
|
85
91
|
|
|
86
92
|
A run without a record is an anecdote. When a run is meant to be evidence
|
|
87
93
|
(verifying a doc claim, reproducing a bug, checking a runtime's live
|
|
88
94
|
behavior), pass `--record` so the claim points at a log anyone can read:
|
|
89
95
|
|
|
90
96
|
1. **Run live, don't infer.** A claim about runtime behavior is verified by
|
|
91
|
-
|
|
92
|
-
2. **Record the evidence.** Keep the voyage log and
|
|
97
|
+
running it, not by reading code or remembering last time.
|
|
98
|
+
2. **Record the evidence.** Keep the voyage log and cite it in the
|
|
93
99
|
conclusion, so "it works" is checkable later.
|
|
94
100
|
3. **Triage what you see.** If reality differs from the docs, decide which
|
|
95
|
-
moved: the runtime changed
|
|
96
|
-
and pin it with a test (`docs/development.md` has the test
|
|
101
|
+
moved: the runtime changed, so fix the doc; or oar regressed, so file the
|
|
102
|
+
bug and pin it with a test (`docs/development.md` has the test layers).
|
|
97
103
|
4. **Report honest outcomes.** A turn that failed or aborted is a finding,
|
|
98
104
|
not something to retry until it looks clean: the exit code and the
|
|
99
|
-
runtime's own `turn_ended` event in the log say what
|
|
105
|
+
runtime's own `turn_ended` event in the log say what happened.
|
|
100
106
|
|
|
101
107
|
## The `oar-voyage/3` format
|
|
102
108
|
|
|
103
109
|
`--record` writes one JSON object per line, discriminated by `kind`. The
|
|
104
110
|
format is defined and owned by `@botiverse/oar`, which exports the line
|
|
105
|
-
builders and `openVoyage` recorder; other tools (such as the
|
|
111
|
+
builders and the `openVoyage` recorder; other tools (such as the
|
|
106
112
|
[oar-coxswain](https://github.com/botiverse/oar-coxswain) cockpit) may write
|
|
107
|
-
or read
|
|
113
|
+
or read it as consumers.
|
|
108
114
|
|
|
109
115
|
- Line 1 is always the header:
|
|
110
116
|
`{"kind":"header","format":"oar-voyage/3","runtime","model?","effort?","cwd","sessionId","startedAt","recorder"}`
|
|
111
117
|
(`model` and `effort` are omitted when none was requested; `recorder`
|
|
112
118
|
names the writer, e.g. `oar-cli/<version>`).
|
|
113
119
|
- `{"kind":"record","record":{...}}`: one `RawEvent` verbatim, no
|
|
114
|
-
filtering or re-timestamping. Human inputs are in the stream
|
|
115
|
-
`request` records, so
|
|
116
|
-
|
|
120
|
+
filtering or re-timestamping. Human inputs are already in the stream as
|
|
121
|
+
`request` records, so there is no separate submission line; the `seq` on
|
|
122
|
+
each record is the order.
|
|
117
123
|
- `{"kind":"end","at","reason"}`: always the last line; a log without it
|
|
118
124
|
is a truncated capture.
|
|
119
125
|
|
|
@@ -121,7 +127,6 @@ All timestamps are Unix epoch milliseconds on the same clock as each
|
|
|
121
127
|
record's `receivedAt`. Lines are written synchronously in arrival order, so
|
|
122
128
|
a crashed run still leaves a readable prefix.
|
|
123
129
|
|
|
124
|
-
|
|
125
130
|
## Native inventories
|
|
126
131
|
|
|
127
132
|
```sh
|
|
@@ -130,11 +135,11 @@ oar mcps claude --cwd /path/to/project --timeout 15000
|
|
|
130
135
|
oar tools pi
|
|
131
136
|
```
|
|
132
137
|
|
|
133
|
-
Each command prints JSON.
|
|
134
|
-
|
|
135
|
-
queries
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
138
|
+
Each command prints JSON. `--cwd` defaults to the current working directory;
|
|
139
|
+
`--timeout <ms>` bounds each runtime. These are independent discovery
|
|
140
|
+
queries: no existing agent is inspected and no model prompt is sent, though
|
|
141
|
+
native startup can load extensions and connect configured MCP servers. Check
|
|
142
|
+
`kind`, `view` and `partial` before displaying results: `mcp-only` excludes
|
|
143
|
+
built-in tools, unsupported queries are not empty lists, and a pending or
|
|
144
|
+
failed MCP connection can produce a partial catalog. See the
|
|
145
|
+
[inventory contract](https://github.com/botiverse/oar/blob/main/docs/spec/inventory.md).
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@botiverse/oar-cli",
|
|
3
|
-
"version": "0.13.
|
|
3
|
+
"version": "0.13.3",
|
|
4
4
|
"description": "Command-line interface for controlling and observing agent runtimes with OAR",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
],
|
|
13
13
|
"dependencies": {
|
|
14
14
|
"commander": "^12.1.0",
|
|
15
|
-
"@botiverse/oar": "0.13.
|
|
15
|
+
"@botiverse/oar": "0.13.3"
|
|
16
16
|
},
|
|
17
17
|
"publishConfig": {
|
|
18
18
|
"access": "public"
|