@oh-hai/cli 0.1.0-beta.0 → 0.2.1

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 (83) hide show
  1. package/README.md +51 -8
  2. package/dist/auth/resolve-token.d.ts +2 -4
  3. package/dist/auth/resolve-token.js +4 -11
  4. package/dist/auth/resolve-token.js.map +1 -1
  5. package/dist/bindings.d.ts +65 -0
  6. package/dist/bindings.js +242 -0
  7. package/dist/bindings.js.map +1 -0
  8. package/dist/cli.js +211 -12
  9. package/dist/cli.js.map +1 -1
  10. package/dist/commands/ask.js +21 -17
  11. package/dist/commands/ask.js.map +1 -1
  12. package/dist/commands/binary-update.d.ts +61 -0
  13. package/dist/commands/binary-update.js +160 -0
  14. package/dist/commands/binary-update.js.map +1 -0
  15. package/dist/commands/context.d.ts +135 -0
  16. package/dist/commands/doctor.js +30 -3
  17. package/dist/commands/doctor.js.map +1 -1
  18. package/dist/commands/flags.d.ts +14 -2
  19. package/dist/commands/flags.js +34 -6
  20. package/dist/commands/flags.js.map +1 -1
  21. package/dist/commands/handlers.js +8 -0
  22. package/dist/commands/handlers.js.map +1 -1
  23. package/dist/commands/inbox.js +129 -33
  24. package/dist/commands/inbox.js.map +1 -1
  25. package/dist/commands/login.d.ts +13 -0
  26. package/dist/commands/login.js +35 -27
  27. package/dist/commands/login.js.map +1 -1
  28. package/dist/commands/messaging/identity.d.ts +9 -0
  29. package/dist/commands/messaging/identity.js +21 -0
  30. package/dist/commands/messaging/identity.js.map +1 -1
  31. package/dist/commands/messaging/validate.d.ts +6 -5
  32. package/dist/commands/messaging/validate.js +7 -16
  33. package/dist/commands/messaging/validate.js.map +1 -1
  34. package/dist/commands/registry.js +88 -8
  35. package/dist/commands/registry.js.map +1 -1
  36. package/dist/commands/setup.d.ts +26 -0
  37. package/dist/commands/setup.js +221 -0
  38. package/dist/commands/setup.js.map +1 -0
  39. package/dist/commands/task.js +21 -24
  40. package/dist/commands/task.js.map +1 -1
  41. package/dist/commands/teach.d.ts +13 -0
  42. package/dist/commands/teach.js +317 -0
  43. package/dist/commands/teach.js.map +1 -0
  44. package/dist/commands/update-check.d.ts +49 -0
  45. package/dist/commands/update-check.js +203 -0
  46. package/dist/commands/update-check.js.map +1 -0
  47. package/dist/commands/upgrade.d.ts +2 -0
  48. package/dist/commands/upgrade.js +178 -0
  49. package/dist/commands/upgrade.js.map +1 -0
  50. package/dist/commands/use.d.ts +2 -0
  51. package/dist/commands/use.js +99 -0
  52. package/dist/commands/use.js.map +1 -0
  53. package/dist/commands/whoami.js +113 -27
  54. package/dist/commands/whoami.js.map +1 -1
  55. package/dist/config-file.js +4 -20
  56. package/dist/config-file.js.map +1 -1
  57. package/dist/config.d.ts +15 -1
  58. package/dist/config.js +43 -4
  59. package/dist/config.js.map +1 -1
  60. package/dist/exit-codes.d.ts +6 -0
  61. package/dist/exit-codes.js +6 -0
  62. package/dist/exit-codes.js.map +1 -1
  63. package/dist/help.js +5 -1
  64. package/dist/help.js.map +1 -1
  65. package/dist/onboarding/open-url.d.ts +26 -0
  66. package/dist/onboarding/open-url.js +69 -0
  67. package/dist/onboarding/open-url.js.map +1 -0
  68. package/dist/onboarding/status.d.ts +24 -0
  69. package/dist/onboarding/status.js +53 -0
  70. package/dist/onboarding/status.js.map +1 -0
  71. package/dist/os.d.ts +16 -0
  72. package/dist/os.js +32 -0
  73. package/dist/os.js.map +1 -0
  74. package/dist/url.d.ts +8 -0
  75. package/dist/url.js +29 -0
  76. package/dist/url.js.map +1 -0
  77. package/dist/version.d.ts +11 -3
  78. package/dist/version.js +20 -3
  79. package/dist/version.js.map +1 -1
  80. package/dist/watch-lock.d.ts +85 -0
  81. package/dist/watch-lock.js +358 -0
  82. package/dist/watch-lock.js.map +1 -0
  83. package/package.json +2 -2
package/dist/cli.js CHANGED
@@ -5,7 +5,9 @@
5
5
  // not-implemented stub (§7 exit 1, §8 `not_implemented` envelope) remains a defensive fallback
6
6
  // for any future registry entry added without a handler. A thrown CliError is translated once
7
7
  // here into the §7 exit code and, under --json, the §8 failure envelope.
8
- import { realpathSync } from "node:fs";
8
+ import { spawn, spawnSync } from "node:child_process";
9
+ import { chmodSync, readdirSync, realpathSync, renameSync, rmSync, writeFileSync } from "node:fs";
10
+ import { basename, dirname, join } from "node:path";
9
11
  import { createInterface } from "node:readline";
10
12
  import { fileURLToPath } from "node:url";
11
13
  import { parseArgs } from "node:util";
@@ -13,9 +15,15 @@ import { openStore } from "./auth/token-store.js";
13
15
  import { GLOBAL_OPTIONS, flagOn } from "./commands/flags.js";
14
16
  import { COMMAND_HANDLERS } from "./commands/handlers.js";
15
17
  import { findCommand } from "./commands/registry.js";
18
+ import { offerProjectAgent, setupCommand } from "./commands/setup.js";
16
19
  import { notImplemented } from "./commands/stub.js";
20
+ import { nodeTeachFs } from "./commands/teach.js";
21
+ import { machineStatus } from "./onboarding/status.js";
22
+ import { nodeWatchLockIo } from "./watch-lock.js";
17
23
  import { resolveConfig } from "./config.js";
18
24
  import { loadConfigFiles, nodeConfigFileIo } from "./config-file.js";
25
+ import { loadBindings, nodeBindingsIo } from "./bindings.js";
26
+ import { openInBrowser } from "./onboarding/open-url.js";
19
27
  import { CliError, buildErr, buildOk, serializeEnvelope } from "./envelope.js";
20
28
  import { ExitCode } from "./exit-codes.js";
21
29
  import { TOP_LEVEL_HELP } from "./help.js";
@@ -46,6 +54,133 @@ async function readOneStdinLine() {
46
54
  rl.close();
47
55
  }
48
56
  }
57
+ // User-side directory→agent bindings IO (§6, #321) — a SINGLE instance so the read (resolution) and
58
+ // write (`use`) paths share the same cwd snapshot, and it's not reconstructed per `loadBindings` call.
59
+ const productionBindingsIo = nodeBindingsIo();
60
+ /** Spawn a subprocess (no shell) for `oh-hai upgrade`'s `npm i -g` run, INHERITING the parent's
61
+ * stdout/stderr so npm's own progress and errors stream live to the user's terminal — the right UX
62
+ * for a foreground command the user explicitly invoked, and it keeps a slow/stalled npm visible and
63
+ * Ctrl-C-interruptible instead of frozen behind a silent prompt. Never rejects — a spawn failure
64
+ * (e.g. npm missing → ENOENT) resolves with `spawnError` so the command surfaces a clean error.
65
+ *
66
+ * Deliberately NO abort/timeout that SIGKILLs the child (unlike the keychain's ProcRunner in
67
+ * auth/keychain.ts): a keychain probe is a background prerequisite that must not outlive the CLI,
68
+ * but killing an in-flight `npm i -g` mid-install risks a half-written global package — a stalled
69
+ * upgrade is better interrupted (then re-run) by the user than force-killed at a random point.
70
+ * Because stdio is inherited, stdout/stderr are not captured; on failure the command reports the
71
+ * exit code (npm already printed the details to the inherited terminal).
72
+ *
73
+ * On Windows, `npm` is the `npm.cmd` shim, and Node can't `spawn` a `.cmd` without a shell (Node's
74
+ * child_process docs; recent Node also blocks it outright), so a shell-free spawn would fail to
75
+ * launch npm entirely. Use a shell only there — the args are hardcoded literals, so there's no
76
+ * injection surface (#349 review). POSIX stays shell-free. */
77
+ function runProc(file, args) {
78
+ return new Promise((resolve) => {
79
+ const child = spawn(file, args, { stdio: ["ignore", "inherit", "inherit"], shell: process.platform === "win32" });
80
+ child.on("error", (err) => resolve({ code: null, stdout: "", stderr: "", spawnError: err.code ?? err.message }));
81
+ child.on("close", (code) => resolve({ code, stdout: "", stderr: "" }));
82
+ });
83
+ }
84
+ /** This module's real (symlink-resolved) on-disk path — the install-method signal for `oh-hai
85
+ * upgrade`. npm installs the bin as a symlink, so resolving it mirrors `isMainModule`'s handling. */
86
+ function selfModulePath() {
87
+ const path = fileURLToPath(import.meta.url);
88
+ try {
89
+ return realpathSync(path);
90
+ }
91
+ catch {
92
+ return path;
93
+ }
94
+ }
95
+ /** Bound for the staged-binary `--version` smoke probe (#358) — a downloaded binary that hangs on
96
+ * `--version` must not freeze `upgrade`, mirroring the AbortSignal timeout on every network call. */
97
+ const VERIFY_RUN_TIMEOUT_MS = 10_000;
98
+ /** Production `BinaryUpdateIo` (#358) — the real download-and-replace for a binary (`bun --compile`)
99
+ * install, over `node:fs` / `node:child_process`. `selfPath` is the running standalone
100
+ * (`realpath(process.execPath)`, so a symlinked install replaces the real target); staging + finalize
101
+ * happen in its directory so the swap is a same-filesystem atomic rename. The bytes handed here are
102
+ * already SHA-256-verified by binary-update.ts before `stage`/`verifyRuns`/`finalize` run, so
103
+ * `verifyRuns` only ever executes trusted bytes. The public github.com asset download only resolves
104
+ * once the release assets are publicly reachable (#357); until then binary-update.ts fails closed to
105
+ * a clear error, never a crash. */
106
+ function nodeBinaryUpdateIo() {
107
+ let selfPath;
108
+ try {
109
+ selfPath = realpathSync(process.execPath);
110
+ }
111
+ catch {
112
+ selfPath = process.execPath;
113
+ }
114
+ const dir = dirname(selfPath);
115
+ const selfName = basename(selfPath);
116
+ return {
117
+ platform: process.platform,
118
+ arch: process.arch,
119
+ stage(bytes) {
120
+ // Stage beside the running binary (same filesystem → the finalize rename is atomic). The pid
121
+ // suffix avoids colliding with a concurrent upgrade; on Windows the staged file MUST keep a
122
+ // launchable `.exe` extension so `verifyRuns` can spawn it. `mode` on create is masked by umask,
123
+ // so force 0o755 explicitly afterward.
124
+ const winExe = process.platform === "win32" ? ".exe" : "";
125
+ const staged = join(dir, `.${selfName}.new.${process.pid}${winExe}`);
126
+ writeFileSync(staged, bytes, { mode: 0o755 });
127
+ chmodSync(staged, 0o755);
128
+ return staged;
129
+ },
130
+ verifyRuns(stagedPath) {
131
+ // A timeout kills the child, leaving status !== 0 → treated as "did not run" (unverified-binary),
132
+ // so a hung binary keeps the current install rather than freezing the command.
133
+ const proc = spawnSync(stagedPath, ["--version"], { stdio: "ignore", timeout: VERIFY_RUN_TIMEOUT_MS });
134
+ return proc.error === undefined && proc.status === 0;
135
+ },
136
+ finalize(stagedPath) {
137
+ if (process.platform === "win32") {
138
+ // The running .exe is locked: renaming it aside is allowed, overwriting it is not. Sweep any
139
+ // stale `.old-*` from a prior upgrade first (the currently-running one can't be removed while
140
+ // running — the next run clears it), move the current binary aside, then move the staged one in.
141
+ for (const name of readdirSync(dir)) {
142
+ if (name.startsWith(`${selfName}.old-`)) {
143
+ try {
144
+ rmSync(join(dir, name), { force: true });
145
+ }
146
+ catch {
147
+ /* still-running / locked — leave it for a later run */
148
+ }
149
+ }
150
+ }
151
+ const aside = `${selfPath}.old-${process.pid}`;
152
+ renameSync(selfPath, aside);
153
+ try {
154
+ renameSync(stagedPath, selfPath);
155
+ }
156
+ catch (error) {
157
+ // The second move failed — the install path is now empty. Roll the aside binary back so the
158
+ // user is never left without a working `oh-hai`, then surface the original failure.
159
+ try {
160
+ renameSync(aside, selfPath);
161
+ }
162
+ catch {
163
+ /* rollback also failed; the original still sits at `aside` — the thrown error guides the user */
164
+ }
165
+ throw error;
166
+ }
167
+ }
168
+ else {
169
+ // POSIX: an atomic overwrite. The running process keeps its handle to the old inode; the next
170
+ // invocation execs the new binary.
171
+ renameSync(stagedPath, selfPath);
172
+ }
173
+ },
174
+ cleanup(stagedPath) {
175
+ try {
176
+ rmSync(stagedPath, { force: true });
177
+ }
178
+ catch {
179
+ /* best effort */
180
+ }
181
+ },
182
+ };
183
+ }
49
184
  /** Production runtime dependencies — the real keychain-or-file store, stdin, and fetch. Tests
50
185
  * pass their own to `run()` so no command touches the real keychain, stdin, or network. */
51
186
  const productionRuntime = {
@@ -54,6 +189,9 @@ const productionRuntime = {
54
189
  readLine: readOneStdinLine,
55
190
  fetchImpl: (url, init) => fetch(url, init),
56
191
  loadConfigFiles: () => loadConfigFiles(nodeConfigFileIo()),
192
+ // `loadBindings` feeds account resolution; `bindingsIo` is the read/write/cwd seam `oh-hai use` needs.
193
+ bindingsIo: productionBindingsIo,
194
+ loadBindings: () => loadBindings(productionBindingsIo),
57
195
  sleep: (ms) => new Promise((resolve) => setTimeout(resolve, ms)),
58
196
  // A write-callback barrier: a zero-length write whose callback fires only AFTER every
59
197
  // previously-queued stdout write has been flushed (stream writes complete in order). `inbox watch`
@@ -62,6 +200,31 @@ const productionRuntime = {
62
200
  // for a queued-but-below-high-water-mark write. On a write error (e.g. EPIPE — the consumer closed
63
201
  // the pipe) the barrier rejects, so the loop exits WITHOUT acking an undelivered directive.
64
202
  flushOutput: () => new Promise((resolve, reject) => process.stdout.write("", (err) => (err ? reject(err) : resolve()))),
203
+ // Onboarding device-approval: open the verification URL in the user's browser (#271). Best-effort —
204
+ // resolves false when it can't, so the device-code flow prints the URL + code as the fallback.
205
+ openBrowser: (url) => openInBrowser(url),
206
+ // Whether a human is at the terminal — gates the `setup` reconnect prompt so a piped/CI run reports
207
+ // status instead of blocking on a read (`readLine` being wired says nothing about interactivity).
208
+ isInteractive: () => Boolean(process.stdin.isTTY),
209
+ // Filesystem seam for `oh-hai teach` (§4.9) — reads/writes the agent-instruction files it manages.
210
+ teachFs: nodeTeachFs(),
211
+ // Lock seam for the `inbox watch` concurrent-drain guard (#323) — a per-identity lockfile so two
212
+ // watchers sharing one bearer can't race to consume the same directive.
213
+ watchLockIo: nodeWatchLockIo(),
214
+ // How this CLI was installed, for `oh-hai upgrade` (#343) — process/module facts reduced to an
215
+ // install method by classifyInstall (update-check.ts).
216
+ installFacts: {
217
+ execPath: process.execPath,
218
+ modulePath: selfModulePath(),
219
+ },
220
+ // Subprocess runner for `oh-hai upgrade` → `npm i -g @oh-hai/cli@latest` (#343).
221
+ runCommand: (file, args) => runProc(file, args),
222
+ // Whether stdout is a TTY — with isInteractive (stdin TTY), gates upgrade's npm auto-run so a piped
223
+ // stdout prints the command instead of mutating a global install (#349).
224
+ isStdoutTty: () => Boolean(process.stdout.isTTY),
225
+ // In-place binary self-update for `oh-hai upgrade` on a compiled standalone (#358) — download the
226
+ // matching release asset, verify its SHA-256, and atomically swap the running binary.
227
+ binaryUpdateIo: nodeBinaryUpdateIo(),
65
228
  };
66
229
  /**
67
230
  * True when `moduleUrl`'s file is the process entrypoint. Compares REAL paths (resolving
@@ -151,26 +314,34 @@ export async function run(argv, io = consoleIo, runtime = productionRuntime) {
151
314
  return ExitCode.SUCCESS;
152
315
  }
153
316
  const command = positionals[0];
154
- // No command (bare invocation or top-level --help) top-level help. Under
155
- // noUncheckedIndexedAccess, `command === undefined` is exactly "no positionals".
156
- if (command === undefined) {
317
+ // Explicit top-level `--help` (no command) stays config-free help text only, no config I/O or
318
+ // credential warnings. Truly-bare `oh-hai` (no command, no --help) is the onboarding entrypoint,
319
+ // handled after config resolution below (it needs the resolved Hub + the store).
320
+ if (command === undefined && flagOn(values.help)) {
157
321
  emitHelp(TOP_LEVEL_HELP);
158
322
  return ExitCode.SUCCESS;
159
323
  }
160
- commandLabel = command;
161
- // Resolve config (§6) as soon as a command is NAMED valid or not — so a config-selected output
162
- // format applies uniformly to every command path: the unknown-command error, per-command --help,
163
- // the not-implemented decline, and real handlers (matching --json, which already reaches them all).
164
- // Pure meta flags (--version, bare / top-level --help) returned above, so they stay config-free —
165
- // no config I/O or credential warnings on a bare `oh-hai` or `oh-hai --version`. `warnings` carries
166
- // the credential-safety rejections (a per-project config that tried to set base_url / account) —
324
+ commandLabel = command ?? "oh-hai";
325
+ // Resolve config (§6) for every non-meta path a NAMED command AND bare onboarding — so a
326
+ // config-selected output format applies uniformly: the unknown-command error, per-command --help,
327
+ // the not-implemented decline, real handlers, and the first-run onboarding. Pure meta flags
328
+ // (--version, top-level --help) returned above, so they stay config-free — no config I/O or
329
+ // credential warnings on `oh-hai --version` / `oh-hai --help`. `warnings` carries the
330
+ // credential-safety rejections (a per-project config that tried to set base_url / account) —
167
331
  // surfaced on stderr so they never pollute the --json envelope on stdout.
168
332
  const { userConfig, projectConfig } = runtime.loadConfigFiles();
333
+ // User-side directory→agent bindings (§6, #321) feed the account precedence. Cheap + offline, so
334
+ // load on the same non-meta paths as config. `bindingsIo.cwd` is the process cwd used for the
335
+ // walk-up resolution (and the same one `oh-hai use` binds); an absent loader (a hermetic runtime
336
+ // that doesn't set it) resolves as if there were no bindings.
337
+ const bindings = runtime.loadBindings?.() ?? [];
169
338
  const { config, warnings } = resolveConfig({
170
339
  flags: toRawFlags(values),
171
340
  env: toEnvVars(process.env),
172
341
  userConfig,
173
342
  projectConfig,
343
+ bindings,
344
+ cwd: runtime.bindingsIo?.cwd,
174
345
  });
175
346
  for (const warning of warnings) {
176
347
  io.err(`oh-hai: ${warning}`);
@@ -179,6 +350,34 @@ export async function run(argv, io = consoleIo, runtime = productionRuntime) {
179
350
  // throw so the catch-block error envelope (an unknown command, a bad --timeout, a stub decline)
180
351
  // respects the configured format too. `config.output` already folds in the --json flag.
181
352
  json = config.output === "json";
353
+ // Validate `--timeout` for EVERY dispatched path — including bare onboarding below and the stub —
354
+ // not just implemented handlers. Otherwise `oh-hai --timeout=-1` on a fresh machine would treat the
355
+ // malformed value as absent and start browser authorization instead of returning the §7 usage error.
356
+ validateTimeoutFlag(values);
357
+ // Bare `oh-hai` (no command) is the platinum first-run onboarding entrypoint (#271): with no
358
+ // stored auth for this Hub it drops straight into `setup`; once set up it behaves as it always
359
+ // has and prints the top-level help. `--help` was handled config-free above; every named command
360
+ // falls through to dispatch below. `machineStatus` opens the store lazily via the thunk, so an
361
+ // env-token bare run takes the env short-circuit with no keychain probe at all.
362
+ if (command === undefined) {
363
+ const status = await machineStatus(config, runtime.openStore);
364
+ if (!status.setUp) {
365
+ commandLabel = "setup"; // so a device-flow error reports under the `setup` command label (§8)
366
+ // Reuse the status we just resolved so `setup` doesn't recompute it.
367
+ await setupCommand({ io, json, config, runtime, argv }, { status });
368
+ return ExitCode.SUCCESS;
369
+ }
370
+ // Set up. On an UNBOUND project with MULTIPLE connected agents, the no-flag workflow is ambiguous —
371
+ // offer to mint + bind a project-scoped agent (#322). Every other set-up bare path (single agent,
372
+ // env token, already-bound, --json, non-interactive) falls through to the top-level help as before.
373
+ // `commandLabel = "setup"` so a device-flow error inside the offer reports under the setup §8 label.
374
+ commandLabel = "setup";
375
+ if (await offerProjectAgent({ io, json, config, runtime, argv }, status)) {
376
+ return ExitCode.SUCCESS;
377
+ }
378
+ emitHelp(TOP_LEVEL_HELP);
379
+ return ExitCode.SUCCESS;
380
+ }
182
381
  const spec = findCommand(command);
183
382
  if (spec === undefined) {
184
383
  throw new CliError("usage", `unknown command: ${command}. Run 'oh-hai --help'.`);
@@ -204,7 +403,7 @@ export async function run(argv, io = consoleIo, runtime = productionRuntime) {
204
403
  // check (a throw would replace the `--json` checks envelope with a `buildErr` one).
205
404
  const handler = COMMAND_HANDLERS[spec.name];
206
405
  if (handler !== undefined) {
207
- validateTimeoutFlag(values);
406
+ // `--timeout` was already validated above (before the bare branch), covering every dispatched path.
208
407
  const result = await handler({ io, json, config, runtime, argv });
209
408
  return typeof result === "number" ? result : ExitCode.SUCCESS;
210
409
  }
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,9 @@
1
1
  // `oh-hai ask` (docs/specs/cli.md §4.4) — request a human decision. Subcommands `submit` +
2
2
  // `await`. Productized from `scripts/ask.ts`: account-aware bearer, `--json` envelope, §7 exit
3
- // codes, injectable fetch. `submit` composes + POSTs an ask (REQUIRED idempotency key, ≥1
4
- // `human:` resolver for a real submit) or replays a captured envelope (§4.8); `await` pull-polls
5
- // to the terminal resolution.
3
+ // codes, injectable fetch. `submit` composes + POSTs an ask (REQUIRED idempotency key; `--resolver`
4
+ // is OPTIONAL issue #366: with none, the Hub lets the account owner answer, so the agent needn't
5
+ // hand-type an id it can't know) or replays a captured envelope (§4.8); `await` pull-polls to the
6
+ // terminal resolution.
6
7
  import { CliError, buildOk, serializeEnvelope } from "../envelope.js";
7
8
  import { parseSubcommandArgs } from "./flags.js";
8
9
  import { awaitResolution, printResolution, resolveAwaitTiming } from "./messaging/await.js";
@@ -73,7 +74,7 @@ async function askSubmit(ctx, flags) {
73
74
  const callback = resolveCallback(flags);
74
75
  const options = resolveOptions(flags, mode);
75
76
  const schema = mode === "input" ? resolveSchema(flags) : undefined;
76
- const resolvers = resolveResolvers(flags, dryRun, ctx);
77
+ const resolvers = resolveResolvers(flags, ctx);
77
78
  const request = { mode, callback };
78
79
  if (options.length > 0)
79
80
  request.options = options;
@@ -134,13 +135,13 @@ async function askReplay(ctx, envelopeRaw, flags, dryRun) {
134
135
  throw new CliError("usage", `--envelope is not valid JSON: ${error instanceof Error ? error.message : String(error)}`);
135
136
  }
136
137
  const envelope = assertAskEnvelope(parsed);
138
+ // A captured envelope with no concrete human:<id> in allowed_resolvers is still answerable by the
139
+ // account owner (issue #366) — the Hub always authorizes the account owner (a non-owner human is
140
+ // fail-closed: it may resolve only if explicitly listed, so an omitted list is owner-only), so this
141
+ // is no longer a submit-blocking dead-end. Note it (an all-wildcard/agent narrowing is unusual) but proceed.
137
142
  if (!hasConcreteHumanResolver(replayResolvers(envelope))) {
138
- if (!dryRun) {
139
- throw new CliError("usage", "--envelope ask has no concrete human:<id> resolver in request.allowed_resolvers (a wildcard can " +
140
- "never match): the resolve route is human-only, so it could never be answered and would sit open " +
141
- "until expiry. Capture the envelope with a concrete human resolver. (Use --dry-run to preview anyway.)");
142
- }
143
- ctx.io.err("⚠ --envelope ask has no concrete human:<id> resolver: this previewed replay would be UNANSWERABLE.");
143
+ ctx.io.err("note: --envelope ask lists no concrete human:<id> in request.allowed_resolvers; it will be resolvable " +
144
+ "by the account owner (the resolve route is human-only).");
144
145
  }
145
146
  if (dryRun) {
146
147
  printDryRunEnvelope(ctx, "ask.submit", envelope);
@@ -221,7 +222,7 @@ function resolveSchema(flags) {
221
222
  }
222
223
  return parsed;
223
224
  }
224
- function resolveResolvers(flags, dryRun, ctx) {
225
+ function resolveResolvers(flags, ctx) {
225
226
  const raw = Array.isArray(flags.resolver) ? flags.resolver.filter((r) => typeof r === "string") : [];
226
227
  const resolvers = [];
227
228
  for (const r of raw) {
@@ -234,12 +235,15 @@ function resolveResolvers(flags, dryRun, ctx) {
234
235
  }
235
236
  resolvers.push(r);
236
237
  }
237
- if (!hasHumanResolver(resolvers)) {
238
- if (!dryRun) {
239
- throw new CliError("usage", "an ask needs at least one --resolver human:<id> the resolve route is human-only and fails closed, " +
240
- "so an ask with no human resolver can never be answered. (Use --dry-run to preview without one.)");
241
- }
242
- ctx.io.err("⚠ no --resolver human:<id> given: this previewed ask would be UNANSWERABLE (resolve is human-only).");
238
+ // No --resolver is fine (issue #366): with no allowed_resolvers the Hub lets the account OWNER
239
+ // resolve — the agent needn't (and can't reliably) hand-type the account's canonical human id. When
240
+ // you DO pass --resolver, it is a fully fail-closed narrowing: a non-owner human may resolve only if
241
+ // explicitly listed, an omitted/empty list is owner-only (not "any account human"), and the account
242
+ // owner always may regardless of the list. Only an ask whose ONLY resolvers are non-human is a real
243
+ // dead-end (the resolve route is human-only), so keep just that nudge.
244
+ if (resolvers.length > 0 && !hasHumanResolver(resolvers)) {
245
+ ctx.io.err("⚠ every --resolver given is non-human (agent:/system:); the resolve route is human-only, so this " +
246
+ "ask can only be answered by the account owner. Omit --resolver or add a human:<id> to be explicit.");
243
247
  }
244
248
  return resolvers;
245
249
  }
@@ -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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"}
@@ -0,0 +1,61 @@
1
+ import type { BinaryUpdateIo, FetchLike } from "./context.js";
2
+ /**
3
+ * Map the running host to its published release asset name, or `undefined` when the host has no
4
+ * prebuilt binary. The published set (docs/runbooks/cli-release.md): `oh-hai-{linux,darwin}-{x64,arm64}`
5
+ * and `oh-hai-windows-x64.exe`. Notably **windows-arm64 is absent** (no `bun-windows-arm64` compile
6
+ * target) and MUST fall back to guidance rather than 404 on a guessed filename. Pure + exported so
7
+ * every host maps deterministically in a unit test.
8
+ */
9
+ export declare function assetNameFor(platform: NodeJS.Platform, arch: string): string | undefined;
10
+ /**
11
+ * Extract the expected lowercase SHA-256 hex for `asset` from a `SHA256SUMS` file. The contract uses
12
+ * BARE filenames (no path components), one `<hex> <filename>` pair per line (the `sha256sum`/`shasum`
13
+ * format, one or more spaces, an optional `*` binary marker). Returns `undefined` when there is no
14
+ * line for `asset`. Pure + exported.
15
+ */
16
+ export declare function expectedSha(sumsText: string, asset: string): string | undefined;
17
+ /** The outcome of an in-place binary self-update, mapped by `upgradeCommand` to an emitted outcome
18
+ * (`updated`/`unsupported`) or a thrown CliError (every failure). Every failure state names WHY so
19
+ * the command can render an actionable message. */
20
+ export type BinaryUpdateResult = {
21
+ status: "updated";
22
+ }
23
+ /** No published asset for this host (e.g. windows-arm64) — the caller degrades to guidance. */
24
+ | {
25
+ status: "unsupported";
26
+ platform: NodeJS.Platform;
27
+ arch: string;
28
+ }
29
+ /** The asset or `SHA256SUMS` couldn't be fetched (transport error, non-200, or missing checksum). */
30
+ | {
31
+ status: "download-failed";
32
+ detail: string;
33
+ network: boolean;
34
+ }
35
+ /** The binary asset or SHA256SUMS 404'd: npm's `dist-tags.latest` advanced (the npm publish and
36
+ * the binary matrix + R2 mirror upload all fire on the same `cli-v*` tag, but the matrix/mirror
37
+ * are slower — and within a version the binaries land before SHA256SUMS), so the release exists
38
+ * on npm but isn't fully mirrored yet. A distinct "try again shortly" state, not a hard error. */
39
+ | {
40
+ status: "release-pending";
41
+ }
42
+ /** The bytes downloaded but don't match the release `SHA256SUMS` — a corruption/tamper signal. */
43
+ | {
44
+ status: "checksum-mismatch";
45
+ }
46
+ /** Checksum-valid but the binary didn't run here (unsupported libc/format) — install left untouched. */
47
+ | {
48
+ status: "unverified-binary";
49
+ }
50
+ /** Staging or the atomic swap failed (permissions, disk) — install left untouched. */
51
+ | {
52
+ status: "install-failed";
53
+ detail: string;
54
+ };
55
+ /**
56
+ * Download the release binary matching this host, verify its SHA-256 against the release's
57
+ * `SHA256SUMS`, and atomically swap it into place via the injected `io`. Order is the security
58
+ * invariant: fetch → checksum-verify → stage → verify-runs → finalize. Nothing untrusted is made
59
+ * executable, run, or installed before the checksum matches. Never throws.
60
+ */
61
+ export declare function performBinaryUpdate(io: BinaryUpdateIo, fetchImpl: FetchLike, version: string, timeoutMs?: number): Promise<BinaryUpdateResult>;