@oh-hai/cli 0.2.0 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) 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 +171 -2
  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 +123 -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 +6 -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/messaging/identity.d.ts +9 -0
  26. package/dist/commands/messaging/identity.js +21 -0
  27. package/dist/commands/messaging/identity.js.map +1 -1
  28. package/dist/commands/messaging/validate.d.ts +6 -5
  29. package/dist/commands/messaging/validate.js +6 -5
  30. package/dist/commands/messaging/validate.js.map +1 -1
  31. package/dist/commands/registry.js +71 -8
  32. package/dist/commands/registry.js.map +1 -1
  33. package/dist/commands/setup.d.ts +17 -0
  34. package/dist/commands/setup.js +103 -3
  35. package/dist/commands/setup.js.map +1 -1
  36. package/dist/commands/task.js +21 -24
  37. package/dist/commands/task.js.map +1 -1
  38. package/dist/commands/teach.d.ts +13 -0
  39. package/dist/commands/teach.js +317 -0
  40. package/dist/commands/teach.js.map +1 -0
  41. package/dist/commands/update-check.d.ts +49 -0
  42. package/dist/commands/update-check.js +203 -0
  43. package/dist/commands/update-check.js.map +1 -0
  44. package/dist/commands/upgrade.d.ts +2 -0
  45. package/dist/commands/upgrade.js +178 -0
  46. package/dist/commands/upgrade.js.map +1 -0
  47. package/dist/commands/use.d.ts +2 -0
  48. package/dist/commands/use.js +99 -0
  49. package/dist/commands/use.js.map +1 -0
  50. package/dist/commands/whoami.js +113 -27
  51. package/dist/commands/whoami.js.map +1 -1
  52. package/dist/config-file.js +4 -20
  53. package/dist/config-file.js.map +1 -1
  54. package/dist/config.d.ts +14 -0
  55. package/dist/config.js +39 -3
  56. package/dist/config.js.map +1 -1
  57. package/dist/exit-codes.d.ts +6 -0
  58. package/dist/exit-codes.js +6 -0
  59. package/dist/exit-codes.js.map +1 -1
  60. package/dist/help.js +4 -1
  61. package/dist/help.js.map +1 -1
  62. package/dist/os.d.ts +16 -0
  63. package/dist/os.js +32 -0
  64. package/dist/os.js.map +1 -0
  65. package/dist/url.d.ts +7 -0
  66. package/dist/url.js +14 -0
  67. package/dist/url.js.map +1 -1
  68. package/dist/version.d.ts +11 -3
  69. package/dist/version.js +20 -3
  70. package/dist/version.js.map +1 -1
  71. package/dist/watch-lock.d.ts +85 -0
  72. package/dist/watch-lock.js +358 -0
  73. package/dist/watch-lock.js.map +1 -0
  74. 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,11 +15,14 @@ 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";
16
- import { setupCommand } from "./commands/setup.js";
18
+ import { offerProjectAgent, setupCommand } from "./commands/setup.js";
17
19
  import { notImplemented } from "./commands/stub.js";
20
+ import { nodeTeachFs } from "./commands/teach.js";
18
21
  import { machineStatus } from "./onboarding/status.js";
22
+ import { nodeWatchLockIo } from "./watch-lock.js";
19
23
  import { resolveConfig } from "./config.js";
20
24
  import { loadConfigFiles, nodeConfigFileIo } from "./config-file.js";
25
+ import { loadBindings, nodeBindingsIo } from "./bindings.js";
21
26
  import { openInBrowser } from "./onboarding/open-url.js";
22
27
  import { CliError, buildErr, buildOk, serializeEnvelope } from "./envelope.js";
23
28
  import { ExitCode } from "./exit-codes.js";
@@ -49,6 +54,133 @@ async function readOneStdinLine() {
49
54
  rl.close();
50
55
  }
51
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
+ }
52
184
  /** Production runtime dependencies — the real keychain-or-file store, stdin, and fetch. Tests
53
185
  * pass their own to `run()` so no command touches the real keychain, stdin, or network. */
54
186
  const productionRuntime = {
@@ -57,6 +189,9 @@ const productionRuntime = {
57
189
  readLine: readOneStdinLine,
58
190
  fetchImpl: (url, init) => fetch(url, init),
59
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),
60
195
  sleep: (ms) => new Promise((resolve) => setTimeout(resolve, ms)),
61
196
  // A write-callback barrier: a zero-length write whose callback fires only AFTER every
62
197
  // previously-queued stdout write has been flushed (stream writes complete in order). `inbox watch`
@@ -71,6 +206,25 @@ const productionRuntime = {
71
206
  // Whether a human is at the terminal — gates the `setup` reconnect prompt so a piped/CI run reports
72
207
  // status instead of blocking on a read (`readLine` being wired says nothing about interactivity).
73
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(),
74
228
  };
75
229
  /**
76
230
  * True when `moduleUrl`'s file is the process entrypoint. Compares REAL paths (resolving
@@ -176,11 +330,18 @@ export async function run(argv, io = consoleIo, runtime = productionRuntime) {
176
330
  // credential-safety rejections (a per-project config that tried to set base_url / account) —
177
331
  // surfaced on stderr so they never pollute the --json envelope on stdout.
178
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?.() ?? [];
179
338
  const { config, warnings } = resolveConfig({
180
339
  flags: toRawFlags(values),
181
340
  env: toEnvVars(process.env),
182
341
  userConfig,
183
342
  projectConfig,
343
+ bindings,
344
+ cwd: runtime.bindingsIo?.cwd,
184
345
  });
185
346
  for (const warning of warnings) {
186
347
  io.err(`oh-hai: ${warning}`);
@@ -206,6 +367,14 @@ export async function run(argv, io = consoleIo, runtime = productionRuntime) {
206
367
  await setupCommand({ io, json, config, runtime, argv }, { status });
207
368
  return ExitCode.SUCCESS;
208
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
+ }
209
378
  emitHelp(TOP_LEVEL_HELP);
210
379
  return ExitCode.SUCCESS;
211
380
  }
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,sFAAsF;AACtF,4FAA4F;AAC5F,6FAA6F;AAC7F,+FAA+F;AAC/F,8FAA8F;AAC9F,yEAAyE;AAEzE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAI7D,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,0FAA0F;AAC1F,MAAM,SAAS,GAAO,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;AAE/D,yFAAyF;AACzF,KAAK,UAAU,YAAY;IACzB,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QACxC,MAAM,CAAC,IAAI,CAAC,KAAe,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAChD,CAAC;AAED;;qDAEqD;AACrD,KAAK,UAAU,gBAAgB;IAC7B,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IACrD,IAAI,CAAC;QACH,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;AACH,CAAC;AAED;4FAC4F;AAC5F,MAAM,iBAAiB,GAAgB;IACrC,SAAS;IACT,SAAS,EAAE,YAAY;IACvB,QAAQ,EAAE,gBAAgB;IAC1B,SAAS,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC;IAC1C,eAAe,EAAE,GAAG,EAAE,CAAC,eAAe,CAAC,gBAAgB,EAAE,CAAC;IAC1D,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAChE,sFAAsF;IACtF,mGAAmG;IACnG,oGAAoG;IACpG,oGAAoG;IACpG,mGAAmG;IACnG,4FAA4F;IAC5F,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACvH,oGAAoG;IACpG,+FAA+F;IAC/F,WAAW,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC;IACxC,oGAAoG;IACpG,kGAAkG;IAClG,aAAa,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;CAClD,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,WAA+B,EAAE,SAAiB;IAC7E,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,WAAW,CAAC,KAAK,YAAY,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC;IAC9E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,SAAS,UAAU,CAAC,MAA+B;IACjD,MAAM,GAAG,GAAG,CAAC,CAAU,EAAsB,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACxF,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACvC,MAAM,SAAS,GAAG,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACzF,OAAO;QACL,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAChC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;QACjD,+FAA+F;QAC/F,4FAA4F;QAC5F,IAAI,EAAE,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;QACjE,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACnC,SAAS,EAAE,SAAS,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;KAC3G,CAAC;AACJ,CAAC;AAED;iGACiG;AACjG,SAAS,mBAAmB,CAAC,MAA+B;IAC1D,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC;IAC3B,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO;IACpC,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACxC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,sBAAsB,GAAG,mDAAmD,CAAC,CAAC;IAC5G,CAAC;AACH,CAAC;AAED,gFAAgF;AAChF,SAAS,SAAS,CAAC,GAAsB;IACvC,OAAO;QACL,aAAa,EAAE,GAAG,CAAC,aAAa;QAChC,aAAa,EAAE,GAAG,CAAC,aAAa;QAChC,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;QACtC,eAAe,EAAE,GAAG,CAAC,eAAe;QACpC,QAAQ,EAAE,GAAG,CAAC,QAAQ;KACvB,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,GAAG,CACvB,IAAc,EACd,KAAS,SAAS,EAClB,UAAuB,iBAAiB;IAExC,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,IAAI,YAAY,GAAG,QAAQ,CAAC;IAE5B,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;YACxC,IAAI,EAAE,IAAI;YACV,gBAAgB,EAAE,IAAI;YACtB,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,cAAc;SACxB,CAAC,CAAC;QAEH,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3B,uFAAuF;QACvF,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAQ,EAAE;YACtC,IAAI,IAAI,EAAE,CAAC;gBACT,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACf,CAAC;iBAAM,CAAC;gBACN,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACf,CAAC;QACH,CAAC,CAAC;QAEF,2CAA2C;QAC3C,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,IAAI,IAAI,EAAE,CAAC;gBACT,EAAE,CAAC,GAAG,CACJ,iBAAiB,CACf,OAAO,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,YAAY,EAAE,iBAAiB,EAAE,CAAC,CAC/E,CACF,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,EAAE,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;YACvB,CAAC;YACD,OAAO,QAAQ,CAAC,OAAO,CAAC;QAC1B,CAAC;QAED,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAE/B,gGAAgG;QAChG,iGAAiG;QACjG,iFAAiF;QACjF,IAAI,OAAO,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YACjD,QAAQ,CAAC,cAAc,CAAC,CAAC;YACzB,OAAO,QAAQ,CAAC,OAAO,CAAC;QAC1B,CAAC;QAED,YAAY,GAAG,OAAO,IAAI,QAAQ,CAAC;QAEnC,2FAA2F;QAC3F,kGAAkG;QAClG,4FAA4F;QAC5F,4FAA4F;QAC5F,sFAAsF;QACtF,6FAA6F;QAC7F,0EAA0E;QAC1E,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;QAChE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,aAAa,CAAC;YACzC,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC;YACzB,GAAG,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC;YAC3B,UAAU;YACV,aAAa;SACd,CAAC,CAAC;QACH,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,EAAE,CAAC,GAAG,CAAC,WAAW,OAAO,EAAE,CAAC,CAAC;QAC/B,CAAC;QACD,kGAAkG;QAClG,gGAAgG;QAChG,wFAAwF;QACxF,IAAI,GAAG,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC;QAEhC,kGAAkG;QAClG,oGAAoG;QACpG,qGAAqG;QACrG,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAE5B,6FAA6F;QAC7F,+FAA+F;QAC/F,iGAAiG;QACjG,+FAA+F;QAC/F,gFAAgF;QAChF,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;YAC9D,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBAClB,YAAY,GAAG,OAAO,CAAC,CAAC,sEAAsE;gBAC9F,qEAAqE;gBACrE,MAAM,YAAY,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;gBACpE,OAAO,QAAQ,CAAC,OAAO,CAAC;YAC1B,CAAC;YACD,QAAQ,CAAC,cAAc,CAAC,CAAC;YACzB,OAAO,QAAQ,CAAC,OAAO,CAAC;QAC1B,CAAC;QAED,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;QAClC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,MAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,oBAAoB,OAAO,wBAAwB,CAAC,CAAC;QACnF,CAAC;QAED,8FAA8F;QAC9F,mGAAmG;QACnG,gGAAgG;QAChG,0FAA0F;QAC1F,MAAM,GAAG,GACP,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;YACzB,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACxE,CAAC,CAAC,SAAS,CAAC;QAChB,YAAY,GAAG,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAErE,oBAAoB;QACpB,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpB,OAAO,QAAQ,CAAC,OAAO,CAAC;QAC1B,CAAC;QAED,gGAAgG;QAChG,mGAAmG;QACnG,iGAAiG;QACjG,6FAA6F;QAC7F,kGAAkG;QAClG,oFAAoF;QACpF,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,oGAAoG;YACpG,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YAClE,OAAO,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;QAChE,CAAC;QAED,kDAAkD;QAClD,MAAM,OAAO,GAAG,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QACtE,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,QAAQ,GACZ,KAAK,YAAY,QAAQ;YACvB,CAAC,CAAC,KAAK;YACP,CAAC,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACpF,IAAI,IAAI,EAAE,CAAC;YACT,EAAE,CAAC,GAAG,CAAC,iBAAiB,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACrF,CAAC;aAAM,CAAC;YACN,EAAE,CAAC,GAAG,CAAC,WAAW,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;QACxC,CAAC;QACD,OAAO,QAAQ,CAAC,QAAQ,CAAC;IAC3B,CAAC;IAED,wFAAwF;IACxF,wEAAwE;IACxE,OAAO,QAAQ,CAAC,OAAO,CAAC;AAC1B,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,OAAO,CAAC,QAAQ,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,qEAAqE;AACrE,IAAI,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IACnD,KAAK,IAAI,EAAE,CAAC;AACd,CAAC"}
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>;
@@ -0,0 +1,160 @@
1
+ // In-place binary self-update for `oh-hai upgrade` (docs/specs/cli.md §4, #358 — the binary case of
2
+ // #343, completing #277's distribution story). A `bun --compile` standalone can't `npm i -g` itself;
3
+ // instead it downloads the matching release asset, verifies its SHA-256 against the release's
4
+ // `SHA256SUMS`, and atomically swaps itself. This mirrors `packaging/install.sh`'s
5
+ // stage→verify-run→rename sequence — the SAME asset contract the installer implements
6
+ // (docs/runbooks/cli-release.md "Asset contract for consumers").
7
+ //
8
+ // Security: nothing untrusted is ever executed or installed. The bytes are checksum-verified BEFORE
9
+ // they are made executable, run, or swapped in; a MISMATCH is a loud hard-stop (corruption/tamper),
10
+ // never a silent fallback. `performBinaryUpdate` NEVER throws — it returns a structured result and
11
+ // `upgradeCommand` (upgrade.ts) applies the CLI policy (emit an outcome vs. throw a CliError), the
12
+ // same split `checkForUpdate` (update-check.ts) uses.
13
+ import { createHash } from "node:crypto";
14
+ import { MAX_TIMER_MS } from "./messaging/shared.js";
15
+ /** The public distribution mirror that serves the release binaries (matches
16
+ * `packaging/install.sh`'s default and docs/runbooks/cli-release.md). The repo is private, so
17
+ * its GitHub Release URLs 404 for the public; CI mirrors each `cli-v*` release into an R2
18
+ * bucket served at this base by dist-worker/ (#357). */
19
+ const DIST_BASE_URL = "https://ohhai.app";
20
+ /** Default per-request bound for the asset/checksum downloads; mirrors update-check.ts so a stalled
21
+ * download is an explicit failure, never a silent hang. */
22
+ const DEFAULT_DOWNLOAD_TIMEOUT_MS = 30_000;
23
+ /** The download URL for a release asset on the mirror. The release tag is `cli-vX.Y.Z` (the bare
24
+ * `X.Y.Z` is what `oh-hai --version` prints), so the `cli-v` prefix is prepended here. */
25
+ function releaseAssetUrl(version, asset) {
26
+ return `${DIST_BASE_URL}/dist/cli-v${version}/${asset}`;
27
+ }
28
+ /**
29
+ * Map the running host to its published release asset name, or `undefined` when the host has no
30
+ * prebuilt binary. The published set (docs/runbooks/cli-release.md): `oh-hai-{linux,darwin}-{x64,arm64}`
31
+ * and `oh-hai-windows-x64.exe`. Notably **windows-arm64 is absent** (no `bun-windows-arm64` compile
32
+ * target) and MUST fall back to guidance rather than 404 on a guessed filename. Pure + exported so
33
+ * every host maps deterministically in a unit test.
34
+ */
35
+ export function assetNameFor(platform, arch) {
36
+ const os = platform === "win32" ? "windows" : platform === "darwin" ? "darwin" : platform === "linux" ? "linux" : undefined;
37
+ const cpu = arch === "x64" ? "x64" : arch === "arm64" ? "arm64" : undefined;
38
+ if (os === undefined || cpu === undefined)
39
+ return undefined;
40
+ if (os === "windows" && cpu === "arm64")
41
+ return undefined; // no bun-windows-arm64 target
42
+ const ext = os === "windows" ? ".exe" : "";
43
+ return `oh-hai-${os}-${cpu}${ext}`;
44
+ }
45
+ /**
46
+ * Extract the expected lowercase SHA-256 hex for `asset` from a `SHA256SUMS` file. The contract uses
47
+ * BARE filenames (no path components), one `<hex> <filename>` pair per line (the `sha256sum`/`shasum`
48
+ * format, one or more spaces, an optional `*` binary marker). Returns `undefined` when there is no
49
+ * line for `asset`. Pure + exported.
50
+ */
51
+ export function expectedSha(sumsText, asset) {
52
+ for (const line of sumsText.split(/\r?\n/)) {
53
+ const m = /^([0-9a-fA-F]{64})\s+\*?(.+)$/.exec(line.trim());
54
+ if (m !== null && m[2] === asset)
55
+ return m[1]?.toLowerCase();
56
+ }
57
+ return undefined;
58
+ }
59
+ function errorMessage(error) {
60
+ return error instanceof Error ? error.message : String(error);
61
+ }
62
+ /** GET a URL, returning the `HttpResponse` or a structured failure (never throws — mirrors
63
+ * update-check). On a non-200 `status` is the HTTP code (so the caller can distinguish a 404); on a
64
+ * transport error `status` is undefined and `network` is true. */
65
+ async function get(fetchImpl, url, bound) {
66
+ try {
67
+ const response = await fetchImpl(url, { method: "GET", headers: {}, signal: AbortSignal.timeout(bound) });
68
+ if (response.status !== 200) {
69
+ return { ok: false, error: `HTTP ${response.status}`, network: false, status: response.status };
70
+ }
71
+ return { ok: true, response };
72
+ }
73
+ catch (error) {
74
+ return { ok: false, error: errorMessage(error), network: true };
75
+ }
76
+ }
77
+ /**
78
+ * Download the release binary matching this host, verify its SHA-256 against the release's
79
+ * `SHA256SUMS`, and atomically swap it into place via the injected `io`. Order is the security
80
+ * invariant: fetch → checksum-verify → stage → verify-runs → finalize. Nothing untrusted is made
81
+ * executable, run, or installed before the checksum matches. Never throws.
82
+ */
83
+ export async function performBinaryUpdate(io, fetchImpl, version, timeoutMs) {
84
+ const asset = assetNameFor(io.platform, io.arch);
85
+ if (asset === undefined) {
86
+ return { status: "unsupported", platform: io.platform, arch: io.arch };
87
+ }
88
+ const bound = Math.min(timeoutMs !== undefined && timeoutMs > 0 ? timeoutMs : DEFAULT_DOWNLOAD_TIMEOUT_MS, MAX_TIMER_MS);
89
+ // 1. The binary itself (bytes).
90
+ const binaryGet = await get(fetchImpl, releaseAssetUrl(version, asset), bound);
91
+ if (!binaryGet.ok) {
92
+ // A 404 on the asset means the `cli-v<version>` binaries aren't on the mirror yet — npm's
93
+ // dist-tag can lead them by minutes (all fire on the same tag; the matrix + mirror upload are
94
+ // slower). Surface that as a distinct "try again shortly" state, not a generic download error.
95
+ if (binaryGet.status === 404) {
96
+ return { status: "release-pending" };
97
+ }
98
+ return { status: "download-failed", detail: `${asset}: ${binaryGet.error}`, network: binaryGet.network };
99
+ }
100
+ if (binaryGet.response.arrayBuffer === undefined) {
101
+ return { status: "download-failed", detail: `${asset}: response has no body`, network: true };
102
+ }
103
+ let bytes;
104
+ try {
105
+ bytes = new Uint8Array(await binaryGet.response.arrayBuffer());
106
+ }
107
+ catch (error) {
108
+ return { status: "download-failed", detail: `${asset}: ${errorMessage(error)}`, network: true };
109
+ }
110
+ // 2. The release checksums (text). Note: SHA256SUMS is a plain sha256 manifest on the same channel
111
+ // as the binary — it proves non-corruption, not authenticity (see the supply-chain residual).
112
+ const sumsGet = await get(fetchImpl, releaseAssetUrl(version, "SHA256SUMS"), bound);
113
+ if (!sumsGet.ok) {
114
+ // The mirror uploads binaries BEFORE SHA256SUMS within a version, so a 404 here is the
115
+ // same mid-publish window as a missing binary — "try again shortly", not a hard error.
116
+ if (sumsGet.status === 404) {
117
+ return { status: "release-pending" };
118
+ }
119
+ return { status: "download-failed", detail: `SHA256SUMS: ${sumsGet.error}`, network: sumsGet.network };
120
+ }
121
+ if (sumsGet.response.text === undefined) {
122
+ return { status: "download-failed", detail: `SHA256SUMS: response has no body`, network: true };
123
+ }
124
+ let sumsText;
125
+ try {
126
+ sumsText = await sumsGet.response.text();
127
+ }
128
+ catch (error) {
129
+ return { status: "download-failed", detail: `SHA256SUMS: ${errorMessage(error)}`, network: true };
130
+ }
131
+ const expected = expectedSha(sumsText, asset);
132
+ if (expected === undefined) {
133
+ return { status: "download-failed", detail: `no checksum for ${asset} in SHA256SUMS`, network: false };
134
+ }
135
+ // 3. Verify BEFORE anything is staged, made executable, or run.
136
+ const actual = createHash("sha256").update(bytes).digest("hex");
137
+ if (actual !== expected) {
138
+ return { status: "checksum-mismatch" };
139
+ }
140
+ // 4. Stage → verify-runs → atomic swap. Any fs/exec failure aborts WITHOUT clobbering the current
141
+ // install (the old binary is only replaced by the final atomic rename). The whole block is
142
+ // wrapped so a throwing `io` (stage/verifyRuns/finalize) can't break this function's never-throws
143
+ // contract — a throw becomes `install-failed`, distinct from `verifyRuns` merely returning false.
144
+ let staged;
145
+ try {
146
+ staged = io.stage(bytes);
147
+ if (!io.verifyRuns(staged)) {
148
+ io.cleanup(staged);
149
+ return { status: "unverified-binary" };
150
+ }
151
+ io.finalize(staged);
152
+ return { status: "updated" };
153
+ }
154
+ catch (error) {
155
+ if (staged !== undefined)
156
+ io.cleanup(staged);
157
+ return { status: "install-failed", detail: errorMessage(error) };
158
+ }
159
+ }
160
+ //# sourceMappingURL=binary-update.js.map