@oh-hai/cli 0.2.3 → 0.3.0
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/CHANGELOG.md +98 -0
- package/README.md +59 -29
- package/dist/commands/ask.js +71 -10
- package/dist/commands/ask.js.map +1 -1
- package/dist/commands/bridge.d.ts +2 -0
- package/dist/commands/bridge.js +502 -0
- package/dist/commands/bridge.js.map +1 -0
- package/dist/commands/context.d.ts +22 -0
- package/dist/commands/doctor.js +12 -1
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/fleet.d.ts +2 -0
- package/dist/commands/fleet.js +164 -0
- package/dist/commands/fleet.js.map +1 -0
- package/dist/commands/handlers.js +8 -0
- package/dist/commands/handlers.js.map +1 -1
- package/dist/commands/messages.d.ts +2 -0
- package/dist/commands/messages.js +131 -0
- package/dist/commands/messages.js.map +1 -0
- package/dist/commands/messaging/build.d.ts +10 -1
- package/dist/commands/messaging/build.js +22 -4
- package/dist/commands/messaging/build.js.map +1 -1
- package/dist/commands/messaging/capability.d.ts +42 -0
- package/dist/commands/messaging/capability.js +164 -0
- package/dist/commands/messaging/capability.js.map +1 -0
- package/dist/commands/messaging/http.d.ts +28 -1
- package/dist/commands/messaging/http.js +234 -13
- package/dist/commands/messaging/http.js.map +1 -1
- package/dist/commands/messaging/inbox-entries.d.ts +83 -0
- package/dist/commands/messaging/inbox-entries.js +362 -0
- package/dist/commands/messaging/inbox-entries.js.map +1 -0
- package/dist/commands/messaging/inbox-stream.d.ts +37 -0
- package/dist/commands/messaging/inbox-stream.js +224 -0
- package/dist/commands/messaging/inbox-stream.js.map +1 -0
- package/dist/commands/messaging/session-drain.d.ts +50 -0
- package/dist/commands/messaging/session-drain.js +163 -0
- package/dist/commands/messaging/session-drain.js.map +1 -0
- package/dist/commands/messaging/session-scope.d.ts +93 -0
- package/dist/commands/messaging/session-scope.js +0 -0
- package/dist/commands/messaging/session-scope.js.map +1 -0
- package/dist/commands/messaging/sessions-http.d.ts +20 -0
- package/dist/commands/messaging/sessions-http.js +153 -0
- package/dist/commands/messaging/sessions-http.js.map +1 -0
- package/dist/commands/messaging/shared.d.ts +19 -1
- package/dist/commands/messaging/shared.js +69 -2
- package/dist/commands/messaging/shared.js.map +1 -1
- package/dist/commands/messaging/validate.d.ts +33 -1
- package/dist/commands/messaging/validate.js +78 -0
- package/dist/commands/messaging/validate.js.map +1 -1
- package/dist/commands/messaging/wire.d.ts +180 -3
- package/dist/commands/notify.js +47 -5
- package/dist/commands/notify.js.map +1 -1
- package/dist/commands/registry.js +128 -3
- package/dist/commands/registry.js.map +1 -1
- package/dist/commands/self-test.d.ts +17 -0
- package/dist/commands/self-test.js +472 -0
- package/dist/commands/self-test.js.map +1 -0
- package/dist/commands/session.d.ts +2 -0
- package/dist/commands/session.js +158 -0
- package/dist/commands/session.js.map +1 -0
- package/dist/commands/setup.js +44 -0
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/task.js +61 -11
- package/dist/commands/task.js.map +1 -1
- package/dist/commands/teach.js +84 -4
- package/dist/commands/teach.js.map +1 -1
- package/dist/commands/whoami.js +14 -1
- package/dist/commands/whoami.js.map +1 -1
- package/dist/exit-codes.d.ts +37 -1
- package/dist/exit-codes.js +42 -1
- package/dist/exit-codes.js.map +1 -1
- package/dist/help.js +5 -1
- package/dist/help.js.map +1 -1
- package/dist/watch-lock.js +7 -0
- package/dist/watch-lock.js.map +1 -1
- package/package.json +4 -3
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
# Changelog — `@oh-hai/cli`
|
|
2
|
+
|
|
3
|
+
Notable changes to the `oh-hai` CLI. Versions follow [semver](https://semver.org); each is cut by
|
|
4
|
+
pushing a `cli-vX.Y.Z` tag (runbook: `docs/runbooks/cli-release.md` in the repo), which publishes the
|
|
5
|
+
npm package and attaches the standalone binaries to the GitHub Release.
|
|
6
|
+
|
|
7
|
+
## 0.3.0 — 2026-08-13
|
|
8
|
+
|
|
9
|
+
The **MA2H v0.5 inter-agent leg**. Until now `oh-hai` could only reach a *human*; an agent could be
|
|
10
|
+
addressed by nothing finer than its `agent.id`, which names a machine principal that many concurrent
|
|
11
|
+
runs share. v0.5 adds a **session** — a Hub-minted, lease-bound addressing scope for one live run —
|
|
12
|
+
and with it agent→agent `notify` / `ask` / `task`. Nothing here changes the human leg: existing
|
|
13
|
+
scripts that never pass `--to` behave exactly as they did on 0.2.3.
|
|
14
|
+
|
|
15
|
+
### Added
|
|
16
|
+
|
|
17
|
+
- **`oh-hai session start | status | close`** — open, read, and close this run's addressing scope
|
|
18
|
+
(spec §16). `start` prints the session id plus the `export MA2H_SESSION_ID=…` line that attaches
|
|
19
|
+
later invocations; attaching also renews the lease, so an agent that keeps working stays live with
|
|
20
|
+
no keep-alive of its own. `status` / `close` default to the attached session when `--id` is
|
|
21
|
+
omitted, and `close` is idempotent. A session id is **not** a credential — it is non-secret and
|
|
22
|
+
confers nothing; every call still presents your token.
|
|
23
|
+
- **`--to agent:<id>[#sess_…]` on `notify`, `ask submit`, and `task submit`** — address another
|
|
24
|
+
agent instead of the human inbox (spec §4). An addressed `ask` / `task` routes the answer back to
|
|
25
|
+
*your* session, so one is registered if you have not attached one, and deliberately left open
|
|
26
|
+
afterwards (closing it is what would make the reply undeliverable).
|
|
27
|
+
- **`--session <sess_…>` / `MA2H_SESSION_ID` / `--no-session`** on the messaging commands and
|
|
28
|
+
`whoami`, to present, override, or explicitly suppress the attached session.
|
|
29
|
+
- **`oh-hai bridge`** — a supervised, loud-failure consumer of your session's mailbox (spec §4.15).
|
|
30
|
+
Drains the v0.5 session-scoped mailbox (directives *plus* the inter-agent entry kinds) over SSE
|
|
31
|
+
where the Hub offers it, else long-poll. `--until-event` (the default) holds until the first entry,
|
|
32
|
+
hands it over, acks, and exits 0 — the primitive a harness re-invokes; `--stream` never exits on
|
|
33
|
+
entries. Under `--json` each entry is one NDJSON envelope, forwarded byte-verbatim with its
|
|
34
|
+
signature. **`oh-hai bridge status`** reports the current bridge/session state.
|
|
35
|
+
- **`--allow-from agent:<id>[#sess_…] | any-in-account`** — the explicit policy `bridge` requires
|
|
36
|
+
before *acting* on an addressed `ask` / `task`. There is no permissive default, by spec: with no
|
|
37
|
+
policy declared, every addressed ask/task is refused.
|
|
38
|
+
- **`oh-hai fleet ls`** — list the agent sessions this credential can address, one row per session
|
|
39
|
+
with the exact address to copy into `--to`, plus state, age, label, kind, and project. Live
|
|
40
|
+
sessions only by default; `--all` includes closed/expired ones. Same-account listing of *other*
|
|
41
|
+
agents' sessions is Hub-gated (§16.4) and off by default, and the command says which scope it
|
|
42
|
+
printed rather than letting a narrowed list read as "nobody else is running".
|
|
43
|
+
- **`oh-hai doctor --self-test`** — proves the whole loop rather than a precondition: registers a
|
|
44
|
+
session, sends this agent a message addressed to it, drains it back through the same §13.4 checks
|
|
45
|
+
`bridge` applies, acks it, reports the reachability a human would see, and closes the session.
|
|
46
|
+
Opt-in, because it sends real traffic.
|
|
47
|
+
- **`oh-hai messages list`** — read the messages *this* agent has submitted (bearer-scoped, never the
|
|
48
|
+
human inbox), for history review or to dedupe before resubmitting. Paginated via `--limit` /
|
|
49
|
+
`--offset`, filterable by `--status` / `--type`.
|
|
50
|
+
- **`oh-hai teach`** now writes the bridge-aware snippet, including an auto-bridge skill, so a taught
|
|
51
|
+
agent knows how to keep its own mailbox drained.
|
|
52
|
+
|
|
53
|
+
### Changed
|
|
54
|
+
|
|
55
|
+
- **New fatal exit codes for `oh-hai bridge`**, deliberately distinct so a supervisor can branch
|
|
56
|
+
instead of blanket-restarting:
|
|
57
|
+
|
|
58
|
+
| exit | meaning | supervisor action |
|
|
59
|
+
|---|---|---|
|
|
60
|
+
| `3` | not authenticated / auth failed | **stop** — a human fixes it |
|
|
61
|
+
| `11` | the presented session is terminal (lease lapsed, or the agent closed it) | **restart** — a fresh session is registered |
|
|
62
|
+
| `12` | §13.4 verification failure on an entry in your own mailbox (bad/absent signature, stale `t`, replayed `jti`, unsigned cross-type fields) | **stop** — tampering or a broken Hub; surface to a human |
|
|
63
|
+
| `13` | reconnect budget exhausted (repeated transport failures / 5xx) | **restart** — an outage, not a blip |
|
|
64
|
+
| `14` | an account **human** closed this session with the §16.4 operator kill-switch | **STOP — do not restart, and do not open a replacement session.** Restarting is what silently undoes the human's decision |
|
|
65
|
+
|
|
66
|
+
Do **not** use a blanket restart-on-any-nonzero policy: it defeats all five. Put the stop classes
|
|
67
|
+
in `RestartPreventExitStatus` (`2 3 12 14`). See `docs/guides/bridge-supervision.md`.
|
|
68
|
+
- **Exit `4` (not found) now also covers Hub `410 Gone`** — an addressed submit whose destination
|
|
69
|
+
session died (`destination_gone`), or a drain/submit presenting one of your own terminal sessions.
|
|
70
|
+
These previously fell through to the generic exit `1`, which tells a script nothing.
|
|
71
|
+
- **Widened message status values.** Alongside `open` / `delivered`, the lifecycle now reports
|
|
72
|
+
`queued` (accepted into a mailbox), `acknowledged` (the addressee consumed the entry), and
|
|
73
|
+
`bounced` (the destination went terminal before it was consumed). An addressed `notify` acks
|
|
74
|
+
`queued`, **never** `delivered` — it is sitting in a mailbox that may never be drained — and the
|
|
75
|
+
ack's destination reachability is printed exactly as the Hub reported it, including `unknown`,
|
|
76
|
+
which means the Hub has no visibility and never that the addressee is down.
|
|
77
|
+
|
|
78
|
+
## 0.2.3 — 2026-07-07
|
|
79
|
+
|
|
80
|
+
Windows non-baseline build fix (#417), validating all five binary targets, plus the automatic
|
|
81
|
+
release mirror to the public ohhai.app R2 bucket.
|
|
82
|
+
|
|
83
|
+
## 0.2.2 — 2026-07-07
|
|
84
|
+
|
|
85
|
+
Windows binary build fix (#417) and the first CI auto-mirror to R2 (#448 / #357).
|
|
86
|
+
|
|
87
|
+
## 0.2.1 — 2026-07-07
|
|
88
|
+
|
|
89
|
+
First standalone-binary release mirrored to `ohhai.app/dist` (#357).
|
|
90
|
+
|
|
91
|
+
## 0.2.0 — 2026-07-03
|
|
92
|
+
|
|
93
|
+
First stable release: `setup` / `login` / `logout` / `whoami` / `use`, the `notify` / `ask` / `task`
|
|
94
|
+
messaging commands, `inbox watch`, `agents`, `doctor`, `teach`, and `upgrade`.
|
|
95
|
+
|
|
96
|
+
## 0.1.0-beta.0 — 2026-07-03
|
|
97
|
+
|
|
98
|
+
Initial prerelease.
|
package/README.md
CHANGED
|
@@ -14,23 +14,22 @@ implements that contract.
|
|
|
14
14
|
|
|
15
15
|
## Status
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
issues:
|
|
17
|
+
The command surface is **implemented** — auth, messaging, the v0.4 principal inbox, and the
|
|
18
|
+
v0.5 inter-agent leg (sessions, addressed sends, `bridge`, `fleet`). See
|
|
19
|
+
[`CHANGELOG.md`](./CHANGELOG.md) for what landed when.
|
|
21
20
|
|
|
22
|
-
| Works today |
|
|
21
|
+
| Works today | |
|
|
23
22
|
|---|---|
|
|
24
|
-
| `--help`, `--version` (and `--version --json`) |
|
|
25
|
-
|
|
|
26
|
-
|
|
|
27
|
-
| `
|
|
23
|
+
| `--help`, `--version` (and `--version --json`); global-flag parsing + dispatch | ✅ |
|
|
24
|
+
| Exit-code table (§7), `--json` envelope (§8), config resolution (§6) | ✅ |
|
|
25
|
+
| `setup` · `login --token-stdin` / `logout` / `whoami` / `use` (OS keychain + `0600` file fallback) | ✅ |
|
|
26
|
+
| `notify` / `ask submit\|await` / `task submit\|await` (account-aware; `--json`; pull-await) | ✅ |
|
|
27
|
+
| `inbox watch` — the v0.4 human→agent principal mailbox | ✅ |
|
|
28
|
+
| `session start\|close\|status` · `--to` addressed sends · `fleet ls` · `bridge` — the **v0.5 inter-agent leg** | ✅ |
|
|
29
|
+
| `messages list` · `agents list\|create\|revoke` · `doctor` (`--self-test`) · `teach` · `upgrade` | ✅ |
|
|
28
30
|
| `oh-hai login` **device-code** acquisition (server device-authz + web approval) | **#166** |
|
|
29
|
-
| `notify` / `ask submit\|await` / `task submit\|await` (account-aware; `--json`; pull-await) | ✅ #107 |
|
|
30
|
-
| `agents list\|create\|revoke` | later |
|
|
31
|
-
| `doctor` | **#108** |
|
|
32
31
|
|
|
33
|
-
|
|
32
|
+
Any command that is not yet wired exits **1** with a stable `not_implemented` error and a
|
|
34
33
|
pointer to its owning issue — it never silently no-ops or fakes success.
|
|
35
34
|
|
|
36
35
|
### Auth (`login` / `logout` / `whoami`)
|
|
@@ -105,21 +104,18 @@ its SHA-256 checksum, and puts `oh-hai` on your `PATH`:
|
|
|
105
104
|
|
|
106
105
|
```sh
|
|
107
106
|
# macOS / Linux
|
|
108
|
-
curl -fsSL https://ohhai.
|
|
107
|
+
curl -fsSL https://ohhai.app/install.sh | sh
|
|
109
108
|
|
|
110
109
|
# Windows (PowerShell)
|
|
111
|
-
irm https://ohhai.
|
|
110
|
+
irm https://ohhai.app/install.ps1 | iex
|
|
112
111
|
```
|
|
113
112
|
|
|
114
|
-
> `ohhai.autonomy.com.ai` is the live Pages domain today; the same scripts are served at
|
|
115
|
-
> `https://ohhai.app/install.sh` and `https://ohhai.app/install.ps1` once the dist Worker
|
|
116
|
-
> is live.
|
|
117
|
-
>
|
|
118
113
|
> The repo is private, so binaries are served from the public **ohhai.app mirror**
|
|
119
|
-
> (`dist-worker/` + an R2 bucket CI fills on each release — issue #357)
|
|
120
|
-
>
|
|
121
|
-
>
|
|
122
|
-
>
|
|
114
|
+
> (`dist-worker/` + an R2 bucket CI fills on each release — issue #357), which is **live**:
|
|
115
|
+
> the installer resolves the latest stable tag from `https://ohhai.app/dist/latest` and
|
|
116
|
+
> downloads the matching `oh-hai-<os>-<arch>` plus `SHA256SUMS` from
|
|
117
|
+
> `https://ohhai.app/dist/<tag>/`, verifying the checksum **before** installing. The same
|
|
118
|
+
> scripts are also served from the Pages domain at `https://ohhai.autonomy.com.ai/install`.
|
|
123
119
|
|
|
124
120
|
npm is the secondary channel for node devs (and the automatic fallback when a host has no
|
|
125
121
|
prebuilt binary, e.g. windows-arm64):
|
|
@@ -136,22 +132,54 @@ standalone binaries — epic #277.)
|
|
|
136
132
|
```
|
|
137
133
|
oh-hai [global flags] <command> [subcommand] [flags]
|
|
138
134
|
|
|
135
|
+
Setup setup (bare `oh-hai` on a new machine onboards)
|
|
139
136
|
Auth login | logout | whoami | use
|
|
140
|
-
Messaging notify | ask | task
|
|
137
|
+
Messaging notify | ask | task (add --to to address another agent)
|
|
138
|
+
Inbox inbox watch (v0.4 principal mailbox)
|
|
139
|
+
Bridge bridge | bridge status (v0.5 session mailbox — supervised, loud failure)
|
|
140
|
+
Sessions session start | close | status
|
|
141
|
+
Fleet fleet ls (the agent sessions you can address with --to)
|
|
142
|
+
Messages messages list
|
|
141
143
|
Agents agents list | create | revoke
|
|
142
144
|
Health doctor
|
|
145
|
+
Teach teach
|
|
146
|
+
Update upgrade
|
|
143
147
|
|
|
144
148
|
Global flags: --base-url --account --json --quiet --verbose --no-color --timeout
|
|
145
149
|
```
|
|
146
150
|
|
|
151
|
+
### The v0.5 inter-agent leg (sessions, `--to`, `bridge`, `fleet`)
|
|
152
|
+
|
|
153
|
+
`agent.id` names a machine principal that many concurrent runs share, so on its own it cannot
|
|
154
|
+
say *which* run you are talking to. A **session** can: it is Hub-minted, lease-bound, and is
|
|
155
|
+
what `--to agent:<id>#<sess_…>` addresses.
|
|
156
|
+
|
|
157
|
+
```bash
|
|
158
|
+
oh-hai session start --label "build-worker" # prints the id + an `export MA2H_SESSION_ID=…` line
|
|
159
|
+
oh-hai fleet ls # the sessions you can address, with copyable --to values
|
|
160
|
+
oh-hai notify --to agent:agnt_… --title "Handing off" # acks `queued`, never `delivered`
|
|
161
|
+
oh-hai ask submit --to agent:agnt_…#sess_… --mode confirm --title "Proceed?"
|
|
162
|
+
oh-hai bridge --until-event --allow-from any-in-account # drain your session's mailbox
|
|
163
|
+
oh-hai session close
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
`bridge` requires an **explicit** `--allow-from` policy before acting on an addressed
|
|
167
|
+
`ask`/`task` — there is no permissive default, by spec. Its fatal exits are distinct so a
|
|
168
|
+
supervisor can branch rather than blanket-restart: **3** auth (stop) · **11** session terminal
|
|
169
|
+
(restart) · **12** verification failure (stop) · **13** retries exhausted (restart) · **14** a
|
|
170
|
+
human closed your session with the §16.4 operator kill-switch (**STOP — do not restart**;
|
|
171
|
+
restarting is what silently undoes the human's decision). Put the stop classes in
|
|
172
|
+
`RestartPreventExitStatus` (`2 3 12 14`); see
|
|
173
|
+
[`docs/guides/bridge-supervision.md`](../docs/guides/bridge-supervision.md).
|
|
174
|
+
|
|
147
175
|
### Usage examples
|
|
148
176
|
|
|
149
177
|
```bash
|
|
150
178
|
$ oh-hai --version
|
|
151
|
-
0.
|
|
179
|
+
0.3.0
|
|
152
180
|
|
|
153
181
|
$ oh-hai --version --json
|
|
154
|
-
{"ok":true,"command":"version","data":{"version":"0.
|
|
182
|
+
{"ok":true,"command":"version","data":{"version":"0.3.0","wire_version":"v0.3"},"error":null}
|
|
155
183
|
|
|
156
184
|
$ oh-hai notify --title "Build finished" --body "All green" --priority normal
|
|
157
185
|
$ oh-hai ask submit --mode select --option ship:Ship --option hold:Hold \
|
|
@@ -161,9 +189,11 @@ $ oh-hai ask await --id msg_02A… --json
|
|
|
161
189
|
|
|
162
190
|
## Machine contract
|
|
163
191
|
|
|
164
|
-
- **Exit codes (§7):** `0` success · `1` generic · `2` usage · `3` auth · `4` not-found
|
|
165
|
-
`
|
|
166
|
-
|
|
192
|
+
- **Exit codes (§7):** `0` success · `1` generic · `2` usage · `3` auth · `4` not-found (and
|
|
193
|
+
Hub `410 Gone` — a destination session that died) · `5` network · `6` server · `7` timeout ·
|
|
194
|
+
`8` conflict · `9` invalid-request · `10` already-running (a second local `inbox watch`) ·
|
|
195
|
+
and the `bridge` fatal classes `11` session-terminal · `12` verification-failure ·
|
|
196
|
+
`13` retries-exhausted · `14` operator kill-switch. (`not_implemented` maps to exit `1`.)
|
|
167
197
|
- **`--json` envelope (§8):** every command emits one uniform shape:
|
|
168
198
|
```json
|
|
169
199
|
{ "ok": true, "command": "ask.submit", "data": { "id": "…" }, "error": null }
|
package/dist/commands/ask.js
CHANGED
|
@@ -8,11 +8,13 @@ import { CliError, buildOk, serializeEnvelope } from "../envelope.js";
|
|
|
8
8
|
import { parseSubcommandArgs } from "./flags.js";
|
|
9
9
|
import { awaitResolution, printResolution, resolveAwaitTiming } from "./messaging/await.js";
|
|
10
10
|
import { buildAsk } from "./messaging/build.js";
|
|
11
|
+
import { assertHubSpeaksAddressing } from "./messaging/capability.js";
|
|
11
12
|
import { submitEnvelope } from "./messaging/http.js";
|
|
12
13
|
import { requireReplayToken, requireToken, resolveSubmitIdentity } from "./messaging/identity.js";
|
|
13
|
-
import {
|
|
14
|
+
import { SESSION_OPTIONS, explicitSession, releasingOwnedSessionOnFailure, resolveSessionScope, } from "./messaging/session-scope.js";
|
|
15
|
+
import { assertNoForeignFlags, dryRunFlag, printCallerSession, printDryRunEnvelope, printSubmitAck, requireNonEmpty, resolveRunId, resumeRoutingSuffix, sanitizeForTerminal, stringFlag } from "./messaging/shared.js";
|
|
14
16
|
import { openResumeState, resolveState } from "./messaging/state.js";
|
|
15
|
-
import { REQUEST_MODES, assertAskEnvelope, hasConcreteHumanResolver, hasHumanResolver, isActor, isCallbackMode, isRequestMode, normalizePushUrl, parseOption, readEnvelopeArg, replayResolvers, } from "./messaging/validate.js";
|
|
17
|
+
import { REQUEST_MODES, assertAskEnvelope, hasConcreteHumanResolver, hasHumanResolver, isActor, isCallbackMode, isRequestMode, normalizePushUrl, parseDestination, parseOption, readEnvelopeArg, replayDestination, replayResolvers, } from "./messaging/validate.js";
|
|
16
18
|
const SUBCOMMANDS = ["submit", "await"];
|
|
17
19
|
const ASK_SUBMIT_OPTIONS = {
|
|
18
20
|
title: { type: "string" },
|
|
@@ -28,6 +30,7 @@ const ASK_SUBMIT_OPTIONS = {
|
|
|
28
30
|
"dry-run": { type: "boolean" },
|
|
29
31
|
envelope: { type: "string" },
|
|
30
32
|
state: { type: "string" },
|
|
33
|
+
...SESSION_OPTIONS,
|
|
31
34
|
};
|
|
32
35
|
const ASK_AWAIT_OPTIONS = {
|
|
33
36
|
id: { type: "string" },
|
|
@@ -88,39 +91,79 @@ async function askSubmit(ctx, flags) {
|
|
|
88
91
|
// Seal an optional `--state` resume blob (requires MA2H_STATE_SEAL_KEY) before the dry-run
|
|
89
92
|
// branch so the preview shows the sealed envelope; `ask await` opens it on resolution.
|
|
90
93
|
const state = resolveState(stringFlag(flags.state));
|
|
94
|
+
// Parse `--to` before any credential work so a malformed address is a local usage error (exit 2).
|
|
95
|
+
const toRaw = stringFlag(flags.to);
|
|
96
|
+
const destination = toRaw !== undefined ? parseDestination(toRaw) : undefined;
|
|
97
|
+
// ONE run id per invocation: the session registration and the envelope must agree, or the
|
|
98
|
+
// `fleet ls` correlation between a session and the message it sent silently breaks.
|
|
99
|
+
const runId = resolveRunId();
|
|
91
100
|
let agentId = ctx.config.account ?? "oh-hai/ask-bot";
|
|
92
101
|
let token = "";
|
|
102
|
+
// An ADDRESSED ask mints a session when none is attached: §S1 routes the ANSWER back to the
|
|
103
|
+
// Caller session, so this is the return address, not bookkeeping. On SUCCESS it is deliberately
|
|
104
|
+
// NOT closed — closing it would guarantee the reply lands nowhere; on FAILURE it is released,
|
|
105
|
+
// since a submit that never landed has no reply to wait for.
|
|
106
|
+
// Resolve an EXPLICIT session (`--session` / `MA2H_SESSION_ID`) on BOTH paths — it is local, so a
|
|
107
|
+
// preview that dropped it would misrepresent the live send twice over: no `agent.session`, and a
|
|
108
|
+
// `ma2h_version` of 0.3 where the real submit says 0.5. Only the network-backed AUTO-MINT is
|
|
109
|
+
// suppressed under --dry-run (a preview must create no durable Hub state).
|
|
110
|
+
const attached = explicitSession(flags);
|
|
111
|
+
let scope = attached !== undefined ? { ...attached, owned: false } : undefined;
|
|
93
112
|
if (!dryRun) {
|
|
113
|
+
// Gate BEFORE minting: a refused address must not leave a registered session behind. This is
|
|
114
|
+
// the same cached check `submitEnvelope` enforces as the un-forgettable backstop (one HTTP
|
|
115
|
+
// probe per process either way), run early so nothing durable is created for a send that
|
|
116
|
+
// cannot legally go.
|
|
117
|
+
if (destination !== undefined)
|
|
118
|
+
await assertHubSpeaksAddressing(ctx, destination.address);
|
|
94
119
|
const identity = await resolveSubmitIdentity(ctx);
|
|
95
120
|
agentId = identity.agentId;
|
|
96
121
|
token = identity.token;
|
|
122
|
+
scope = await resolveSessionScope(ctx, flags, identity, destination !== undefined, runId);
|
|
97
123
|
}
|
|
98
124
|
const ask = buildAsk({
|
|
99
|
-
agent: { id: agentId, run_id:
|
|
125
|
+
agent: { id: agentId, run_id: runId, ...(scope !== undefined ? { session: scope.id } : {}) },
|
|
100
126
|
title,
|
|
101
127
|
request,
|
|
128
|
+
...(destination !== undefined ? { to: destination.address } : {}),
|
|
102
129
|
...(body !== undefined ? { body } : {}),
|
|
103
130
|
...(idempotencyKey !== undefined ? { idempotency_key: idempotencyKey } : {}),
|
|
104
131
|
...(createdAt !== undefined ? { created_at: createdAt } : {}),
|
|
105
132
|
...(state !== undefined ? { state } : {}),
|
|
106
133
|
});
|
|
107
134
|
if (dryRun) {
|
|
135
|
+
// Say what the preview cannot show: a live addressed send with nothing attached would register a
|
|
136
|
+
// session and stamp it, so an envelope captured here is short exactly that field.
|
|
137
|
+
if (destination !== undefined && scope === undefined) {
|
|
138
|
+
ctx.io.err("note: a live --to send registers a session and adds `agent.session`; this preview cannot (it makes no Hub call).");
|
|
139
|
+
}
|
|
108
140
|
printDryRunEnvelope(ctx, "ask.submit", ask);
|
|
109
141
|
return;
|
|
110
142
|
}
|
|
111
|
-
const ack = await submitEnvelope(ctx, token, ask
|
|
143
|
+
const ack = await releasingOwnedSessionOnFailure(ctx, token, scope, () => submitEnvelope(ctx, token, ask, {
|
|
144
|
+
...(destination !== undefined ? { addressedTo: destination.address } : {}),
|
|
145
|
+
}));
|
|
112
146
|
if (ctx.json) {
|
|
113
|
-
ctx.io.log(serializeEnvelope(buildOk("ask.submit", {
|
|
147
|
+
ctx.io.log(serializeEnvelope(buildOk("ask.submit", {
|
|
148
|
+
id: ack.id,
|
|
149
|
+
poll_url: ack.poll_url,
|
|
150
|
+
review_url: ack.review_url,
|
|
151
|
+
status: ack.status,
|
|
152
|
+
destination: ack.destination,
|
|
153
|
+
to: destination?.address,
|
|
154
|
+
session: scope?.id,
|
|
155
|
+
})));
|
|
114
156
|
}
|
|
115
157
|
else {
|
|
116
|
-
printSubmitAck(ctx, "ask submitted", ack, true);
|
|
158
|
+
printSubmitAck(ctx, "ask submitted", ack, true, destination !== undefined);
|
|
159
|
+
printCallerSession(ctx, scope);
|
|
117
160
|
ctx.io.log(`\nResume (pull): oh-hai ask await --id ${sanitizeForTerminal(ack.id)}${resumeRoutingSuffix(ctx)}`);
|
|
118
161
|
}
|
|
119
162
|
}
|
|
120
163
|
/** Replay a captured ask envelope verbatim (§4.8) — the supported idempotent retry for a lost
|
|
121
164
|
* 202. Extends the human-resolver guard the task replay already enforces to ask replay too. */
|
|
122
165
|
async function askReplay(ctx, envelopeRaw, flags, dryRun) {
|
|
123
|
-
const conflicts = ["title", "body", "mode", "option", "schema", "resolver", "callback", "callback-url", "idempotency-key", "created-at", "state"].filter((k) => flags[k] !== undefined);
|
|
166
|
+
const conflicts = ["title", "body", "mode", "option", "schema", "resolver", "callback", "callback-url", "idempotency-key", "created-at", "state", "to", "session", "no-session"].filter((k) => flags[k] !== undefined);
|
|
124
167
|
if (conflicts.length > 0) {
|
|
125
168
|
throw new CliError("usage", `--envelope replays a captured envelope verbatim and cannot be combined with composition flags (${conflicts.map((k) => `--${k}`).join(", ")}).`);
|
|
126
169
|
}
|
|
@@ -143,17 +186,35 @@ async function askReplay(ctx, envelopeRaw, flags, dryRun) {
|
|
|
143
186
|
ctx.io.err("note: --envelope ask lists no concrete human:<id> in request.allowed_resolvers; it will be resolvable " +
|
|
144
187
|
"by the account owner (the resolve route is human-only).");
|
|
145
188
|
}
|
|
189
|
+
// A captured envelope can itself carry `to`. Deriving it HERE — before the dry-run return — keeps
|
|
190
|
+
// preview and live replay under the same guards: a captured `to: human:…` must be the promised
|
|
191
|
+
// usage error either way, or `--dry-run` would bless an envelope the live path refuses, which is
|
|
192
|
+
// the opposite of what a preview is for. Passing it to the submit is what keeps the §8.1
|
|
193
|
+
// destination-proof gate (and the §8.5 hints) alive on the replay path, where a Hub that omits the
|
|
194
|
+
// snapshot would otherwise exit 0 on a message filed in the human inbox.
|
|
195
|
+
const replayedTo = replayDestination(envelope);
|
|
146
196
|
if (dryRun) {
|
|
147
197
|
printDryRunEnvelope(ctx, "ask.submit", envelope);
|
|
148
198
|
return;
|
|
149
199
|
}
|
|
150
200
|
const token = await requireReplayToken(ctx, envelope.agent.id);
|
|
151
|
-
const ack = await submitEnvelope(ctx, token, envelope
|
|
201
|
+
const ack = await submitEnvelope(ctx, token, envelope, {
|
|
202
|
+
...(replayedTo !== undefined ? { addressedTo: replayedTo } : {}),
|
|
203
|
+
});
|
|
152
204
|
if (ctx.json) {
|
|
153
|
-
|
|
205
|
+
// Same shape as a composed addressed send: having just VALIDATED the snapshot, hiding it would
|
|
206
|
+
// leave a replay caller unable to see the reachability its own submit was gated on.
|
|
207
|
+
ctx.io.log(serializeEnvelope(buildOk("ask.submit", {
|
|
208
|
+
id: ack.id,
|
|
209
|
+
poll_url: ack.poll_url,
|
|
210
|
+
review_url: ack.review_url,
|
|
211
|
+
status: ack.status,
|
|
212
|
+
destination: ack.destination,
|
|
213
|
+
to: replayedTo,
|
|
214
|
+
})));
|
|
154
215
|
}
|
|
155
216
|
else {
|
|
156
|
-
printSubmitAck(ctx, "ask submitted (replayed envelope)", ack, true);
|
|
217
|
+
printSubmitAck(ctx, "ask submitted (replayed envelope)", ack, true, replayedTo !== undefined);
|
|
157
218
|
ctx.io.log(`\nResume (pull): oh-hai ask await --id ${sanitizeForTerminal(ack.id)}${resumeRoutingSuffix(ctx)}`);
|
|
158
219
|
}
|
|
159
220
|
}
|
package/dist/commands/ask.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ask.js","sourceRoot":"","sources":["../../src/commands/ask.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ask.js","sourceRoot":"","sources":["../../src/commands/ask.ts"],"names":[],"mappings":"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"}
|