@oh-hai/cli 0.2.2 → 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.
Files changed (75) hide show
  1. package/CHANGELOG.md +98 -0
  2. package/README.md +59 -29
  3. package/dist/commands/ask.js +71 -10
  4. package/dist/commands/ask.js.map +1 -1
  5. package/dist/commands/bridge.d.ts +2 -0
  6. package/dist/commands/bridge.js +502 -0
  7. package/dist/commands/bridge.js.map +1 -0
  8. package/dist/commands/context.d.ts +22 -0
  9. package/dist/commands/doctor.js +12 -1
  10. package/dist/commands/doctor.js.map +1 -1
  11. package/dist/commands/fleet.d.ts +2 -0
  12. package/dist/commands/fleet.js +164 -0
  13. package/dist/commands/fleet.js.map +1 -0
  14. package/dist/commands/handlers.js +8 -0
  15. package/dist/commands/handlers.js.map +1 -1
  16. package/dist/commands/messages.d.ts +2 -0
  17. package/dist/commands/messages.js +131 -0
  18. package/dist/commands/messages.js.map +1 -0
  19. package/dist/commands/messaging/build.d.ts +10 -1
  20. package/dist/commands/messaging/build.js +22 -4
  21. package/dist/commands/messaging/build.js.map +1 -1
  22. package/dist/commands/messaging/capability.d.ts +42 -0
  23. package/dist/commands/messaging/capability.js +164 -0
  24. package/dist/commands/messaging/capability.js.map +1 -0
  25. package/dist/commands/messaging/http.d.ts +28 -1
  26. package/dist/commands/messaging/http.js +234 -13
  27. package/dist/commands/messaging/http.js.map +1 -1
  28. package/dist/commands/messaging/inbox-entries.d.ts +83 -0
  29. package/dist/commands/messaging/inbox-entries.js +362 -0
  30. package/dist/commands/messaging/inbox-entries.js.map +1 -0
  31. package/dist/commands/messaging/inbox-stream.d.ts +37 -0
  32. package/dist/commands/messaging/inbox-stream.js +224 -0
  33. package/dist/commands/messaging/inbox-stream.js.map +1 -0
  34. package/dist/commands/messaging/session-drain.d.ts +50 -0
  35. package/dist/commands/messaging/session-drain.js +163 -0
  36. package/dist/commands/messaging/session-drain.js.map +1 -0
  37. package/dist/commands/messaging/session-scope.d.ts +93 -0
  38. package/dist/commands/messaging/session-scope.js +0 -0
  39. package/dist/commands/messaging/session-scope.js.map +1 -0
  40. package/dist/commands/messaging/sessions-http.d.ts +20 -0
  41. package/dist/commands/messaging/sessions-http.js +153 -0
  42. package/dist/commands/messaging/sessions-http.js.map +1 -0
  43. package/dist/commands/messaging/shared.d.ts +19 -1
  44. package/dist/commands/messaging/shared.js +69 -2
  45. package/dist/commands/messaging/shared.js.map +1 -1
  46. package/dist/commands/messaging/validate.d.ts +33 -1
  47. package/dist/commands/messaging/validate.js +78 -0
  48. package/dist/commands/messaging/validate.js.map +1 -1
  49. package/dist/commands/messaging/wire.d.ts +180 -3
  50. package/dist/commands/notify.js +47 -5
  51. package/dist/commands/notify.js.map +1 -1
  52. package/dist/commands/registry.js +128 -3
  53. package/dist/commands/registry.js.map +1 -1
  54. package/dist/commands/self-test.d.ts +17 -0
  55. package/dist/commands/self-test.js +472 -0
  56. package/dist/commands/self-test.js.map +1 -0
  57. package/dist/commands/session.d.ts +2 -0
  58. package/dist/commands/session.js +158 -0
  59. package/dist/commands/session.js.map +1 -0
  60. package/dist/commands/setup.js +44 -0
  61. package/dist/commands/setup.js.map +1 -1
  62. package/dist/commands/task.js +61 -11
  63. package/dist/commands/task.js.map +1 -1
  64. package/dist/commands/teach.js +84 -4
  65. package/dist/commands/teach.js.map +1 -1
  66. package/dist/commands/whoami.js +14 -1
  67. package/dist/commands/whoami.js.map +1 -1
  68. package/dist/exit-codes.d.ts +37 -1
  69. package/dist/exit-codes.js +42 -1
  70. package/dist/exit-codes.js.map +1 -1
  71. package/dist/help.js +5 -1
  72. package/dist/help.js.map +1 -1
  73. package/dist/watch-lock.js +7 -0
  74. package/dist/watch-lock.js.map +1 -1
  75. 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
- #105 shipped **package placement + the machine contract + the publish pipeline + docs**;
18
- #106 wired the **auth commands** (token storage + login/logout/whoami); #107 wired the
19
- **messaging commands** (notify/ask/task). The remaining command *bodies* land in downstream
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 | Lands in |
21
+ | Works today | |
23
22
  |---|---|
24
- | `--help`, `--version` (and `--version --json`) | |
25
- | Global-flag parsing, command dispatch | |
26
- | Exit-code table (§7), `--json` envelope (§8), config resolution (§6) | |
27
- | `login --token-stdin` / `logout` / `whoami` (OS keychain + `0600` file fallback) | ✅ #106 |
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
- Every not-yet-implemented command exits **1** with a stable `not_implemented` error and a
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.autonomy.com.ai/install | sh
107
+ curl -fsSL https://ohhai.app/install.sh | sh
109
108
 
110
109
  # Windows (PowerShell)
111
- irm https://ohhai.autonomy.com.ai/install.ps1 | iex
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). Until the
120
- > coordinator provisions the bucket/Worker/secrets (see `dist-worker/README.md`), the
121
- > binary download 404s and an unauthenticated install falls back to npm. Use the npm
122
- > install below until then.
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.0.0
179
+ 0.3.0
152
180
 
153
181
  $ oh-hai --version --json
154
- {"ok":true,"command":"version","data":{"version":"0.0.0","wire_version":"v0.3"},"error":null}
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
- `5` network · `6` server · `7` timeout · `8` conflict · `9` invalid-request. (The scaffold
166
- adds a `not_implemented` error string that maps to exit `1`.)
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 }
@@ -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 { assertNoForeignFlags, dryRunFlag, printDryRunEnvelope, printSubmitAck, requireNonEmpty, resolveRunId, resumeRoutingSuffix, sanitizeForTerminal, stringFlag } from "./messaging/shared.js";
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: resolveRunId() },
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", { id: ack.id, poll_url: ack.poll_url, review_url: ack.review_url })));
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
- ctx.io.log(serializeEnvelope(buildOk("ask.submit", { id: ack.id, poll_url: ack.poll_url, review_url: ack.review_url })));
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
  }
@@ -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":"AAAA,2FAA2F;AAC3F,+FAA+F;AAC/F,oGAAoG;AACpG,mGAAmG;AACnG,kGAAkG;AAClG,uBAAuB;AAEvB,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC5F,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAClG,OAAO,EACL,eAAe,EACf,eAAe,EACf,8BAA8B,EAC9B,mBAAmB,GAEpB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,oBAAoB,EAAE,UAAU,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,cAAc,EAAE,eAAe,EAAE,YAAY,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACvN,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,wBAAwB,EACxB,gBAAgB,EAChB,OAAO,EACP,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,eAAe,EACf,iBAAiB,EACjB,eAAe,GAChB,MAAM,yBAAyB,CAAC;AAGjC,MAAM,WAAW,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAU,CAAC;AAEjD,MAAM,kBAAkB,GAAG;IACzB,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACzB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACxB,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACxB,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;IAC1C,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC1B,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE;IAC5C,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC5B,cAAc,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IAClC,iBAAiB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACrC,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IAChC,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;IAC9B,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC5B,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACzB,GAAG,eAAe;CACV,CAAC;AACX,MAAM,iBAAiB,GAAG;IACxB,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACtB,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC5B,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;CAC3B,CAAC;AACX,6FAA6F;AAC7F,0DAA0D;AAC1D,MAAM,WAAW,GAAG,EAAE,GAAG,kBAAkB,EAAE,GAAG,iBAAiB,EAAE,CAAC;AACpE,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;AACvD,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;AAEpD,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAmB;IAClD,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,mBAAmB,CAAC,GAAG,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;IACvF,MAAM,KAAK,GAAG,MAAiC,CAAC;IAChD,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;QAC5B,oBAAoB,CAAC,KAAK,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;QACtD,MAAM,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC9B,CAAC;SAAM,CAAC;QACN,oBAAoB,CAAC,KAAK,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;QACtD,MAAM,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,GAAmB,EAAE,KAA8B;IAC1E,6FAA6F;IAC7F,iDAAiD;IACjD,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;IAE5C,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC/C,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,MAAM,SAAS,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QACjD,OAAO;IACT,CAAC;IAED,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACtC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC/C,MAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,qDAAqD,CAAC,CAAC;IACrF,CAAC;IACD,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,OAAO,KAAK,SAAS;QAAE,MAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,gCAAgC,CAAC,CAAC;IACzF,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,mBAAmB,OAAO,uBAAuB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7G,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,CAAC;IAErB,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACnE,MAAM,SAAS,GAAG,gBAAgB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAE/C,MAAM,OAAO,GAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAC/C,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;IAClD,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;IAClD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC;IAEhE,MAAM,cAAc,GAAG,eAAe,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;IACjE,MAAM,SAAS,GAAG,eAAe,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IACvD,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACpC,2FAA2F;IAC3F,uFAAuF;IACvF,MAAM,KAAK,GAAG,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAEpD,kGAAkG;IAClG,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACnC,MAAM,WAAW,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAE9E,0FAA0F;IAC1F,oFAAoF;IACpF,MAAM,KAAK,GAAG,YAAY,EAAE,CAAC;IAC7B,IAAI,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,IAAI,gBAAgB,CAAC;IACrD,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,4FAA4F;IAC5F,gGAAgG;IAChG,8FAA8F;IAC9F,6DAA6D;IAC7D,kGAAkG;IAClG,iGAAiG;IACjG,6FAA6F;IAC7F,2EAA2E;IAC3E,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IACxC,IAAI,KAAK,GAA6B,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IACzG,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,6FAA6F;QAC7F,2FAA2F;QAC3F,yFAAyF;QACzF,qBAAqB;QACrB,IAAI,WAAW,KAAK,SAAS;YAAE,MAAM,yBAAyB,CAAC,GAAG,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;QACzF,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,GAAG,CAAC,CAAC;QAClD,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;QAC3B,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QACvB,KAAK,GAAG,MAAM,mBAAmB,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,KAAK,SAAS,EAAE,KAAK,CAAC,CAAC;IAC5F,CAAC;IAED,MAAM,GAAG,GAAG,QAAQ,CAAC;QACnB,KAAK,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;QAC5F,KAAK;QACL,OAAO;QACP,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjE,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvC,GAAG,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5E,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7D,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1C,CAAC,CAAC;IAEH,IAAI,MAAM,EAAE,CAAC;QACX,iGAAiG;QACjG,kFAAkF;QAClF,IAAI,WAAW,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACrD,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,kHAAkH,CAAC,CAAC;QACjI,CAAC;QACD,mBAAmB,CAAC,GAAG,EAAE,YAAY,EAAE,GAAG,CAAC,CAAC;QAC5C,OAAO;IACT,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,8BAA8B,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CACvE,cAAc,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE;QAC9B,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC3E,CAAC,CACH,CAAC;IACF,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;QACb,GAAG,CAAC,EAAE,CAAC,GAAG,CACR,iBAAiB,CACf,OAAO,CAAC,YAAY,EAAE;YACpB,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,EAAE,EAAE,WAAW,EAAE,OAAO;YACxB,OAAO,EAAE,KAAK,EAAE,EAAE;SACnB,CAAC,CACH,CACF,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,cAAc,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,KAAK,SAAS,CAAC,CAAC;QAC3E,kBAAkB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC/B,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,0CAA0C,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACjH,CAAC;AACH,CAAC;AAED;gGACgG;AAChG,KAAK,UAAU,SAAS,CACtB,GAAmB,EACnB,WAAmB,EACnB,KAA8B,EAC9B,MAAe;IAEf,MAAM,SAAS,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,iBAAiB,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC,MAAM,CACrL,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,CAC9B,CAAC;IACF,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,QAAQ,CAChB,OAAO,EACP,kGAAkG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAChJ,CAAC;IACJ,CAAC;IAED,iGAAiG;IACjG,+FAA+F;IAC/F,MAAM,GAAG,GAAG,MAAM,eAAe,CAAC,WAAW,EAAE,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACtE,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,iCAAiC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACzH,CAAC;IACD,MAAM,QAAQ,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC3C,kGAAkG;IAClG,iGAAiG;IACjG,oGAAoG;IACpG,6GAA6G;IAC7G,IAAI,CAAC,wBAAwB,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;QACzD,GAAG,CAAC,EAAE,CAAC,GAAG,CACR,wGAAwG;YACtG,yDAAyD,CAC5D,CAAC;IACJ,CAAC;IAED,kGAAkG;IAClG,+FAA+F;IAC/F,iGAAiG;IACjG,yFAAyF;IACzF,mGAAmG;IACnG,yEAAyE;IACzE,MAAM,UAAU,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAE/C,IAAI,MAAM,EAAE,CAAC;QACX,mBAAmB,CAAC,GAAG,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;QACjD,OAAO;IACT,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC/D,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE;QACrD,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACjE,CAAC,CAAC;IACH,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;QACb,+FAA+F;QAC/F,oFAAoF;QACpF,GAAG,CAAC,EAAE,CAAC,GAAG,CACR,iBAAiB,CACf,OAAO,CAAC,YAAY,EAAE;YACpB,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,EAAE,EAAE,UAAU;SACf,CAAC,CACH,CACF,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,cAAc,CAAC,GAAG,EAAE,mCAAmC,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,KAAK,SAAS,CAAC,CAAC;QAC9F,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,0CAA0C,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACjH,CAAC;AACH,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,GAAmB,EAAE,KAA8B;IACzE,MAAM,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAChC,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,MAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,8BAA8B,CAAC,CAAC;IACtG,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,kBAAkB,CAAC,GAAG,EAAE,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IAClK,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC;IAChH,6FAA6F;IAC7F,MAAM,WAAW,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IAC1C,eAAe,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;AAChD,CAAC;AAED,8BAA8B;AAE9B,SAAS,eAAe,CAAC,KAA8B;IACrD,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC;IACzD,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,uBAAuB,WAAW,kCAAkC,CAAC,CAAC;IACpG,CAAC;IACD,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;IACtD,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;QAC3B,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAC3D,MAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,0CAA0C,CAAC,CAAC;QAC1E,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,gBAAgB,CAAC,WAAW,CAAC,EAAE,CAAC;IAC9D,CAAC;IACD,yFAAyF;IACzF,yFAAyF;IACzF,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,MAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,qEAAqE,WAAW,IAAI,CAAC,CAAC;IACpH,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC1B,CAAC;AAED,SAAS,cAAc,CAAC,KAA8B,EAAE,IAAoC;IAC1F,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9G,IAAI,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACnC,gGAAgG;IAChG,IAAI,IAAI,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/C,OAAO,GAAG;YACR,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;YAC9B,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;SAC7B,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,mEAAmE,CAAC,CAAC;IACnG,CAAC;IACD,IAAI,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,mEAAmE,CAAC,CAAC;IACnG,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,aAAa,CAAC,KAA8B;IACnD,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3C,IAAI,SAAS,KAAK,SAAS;QAAE,MAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,wCAAwC,CAAC,CAAC;IACnG,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,8BAA8B,CAAC,CAAC;IAC9D,CAAC;IACD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3E,MAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,iCAAiC,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,MAAoB,CAAC;AAC9B,CAAC;AAED,SAAS,gBAAgB,CAAC,KAA8B,EAAE,GAAmB;IAC3E,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAClH,MAAM,SAAS,GAAY,EAAE,CAAC;IAC9B,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YAAE,MAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,uBAAuB,CAAC,yCAAyC,CAAC,CAAC;QAChH,8FAA8F;QAC9F,+FAA+F;QAC/F,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,uBAAuB,CAAC,0EAA0E,CAAC,CAAC;QAClI,CAAC;QACD,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IACD,+FAA+F;IAC/F,oGAAoG;IACpG,qGAAqG;IACrG,oGAAoG;IACpG,oGAAoG;IACpG,uEAAuE;IACvE,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC;QACzD,GAAG,CAAC,EAAE,CAAC,GAAG,CACR,mGAAmG;YACjG,oGAAoG,CACvG,CAAC;IACJ,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { CommandContext } from "./context.js";
2
+ export declare function bridgeCommand(ctx: CommandContext): Promise<void>;